| 1234567891011121314151617181920212223242526272829303132333435 |
- import { assertTypedArray } from './assert.js'
- const Buffer = globalThis.Buffer // Buffer is optional
- export function typedView(arr, format) {
- assertTypedArray(arr)
- switch (format) {
- case 'uint8':
- if (arr.constructor === Uint8Array) return arr // fast path
- return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength)
- case 'buffer':
- if (arr.constructor === Buffer && Buffer.isBuffer(arr)) return arr
- return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength)
- }
- throw new TypeError('Unexpected format')
- }
- export function typedCopyBytes(arr, format) {
- assertTypedArray(arr)
- if (!(arr instanceof Uint8Array)) {
- arr = new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength)
- }
- switch (format) {
- case 'uint8':
- return Uint8Array.from(arr) // never pooled
- case 'buffer':
- return Buffer.from(arr)
- case 'arraybuffer':
- return Uint8Array.from(arr).buffer
- }
- throw new TypeError('Unexpected format')
- }
|