array.js 556 B

1234567891011121314151617
  1. import { assertTypedArray } from './assert.js'
  2. const Buffer = globalThis.Buffer // Buffer is optional
  3. export function typedView(arr, format) {
  4. assertTypedArray(arr)
  5. switch (format) {
  6. case 'uint8':
  7. if (arr.constructor === Uint8Array) return arr // fast path
  8. return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength)
  9. case 'buffer':
  10. if (arr.constructor === Buffer && Buffer.isBuffer(arr)) return arr
  11. return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength)
  12. }
  13. throw new TypeError('Unexpected format')
  14. }