You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

17 lines
553 B

import { assertTypedArray } from './assert.js'
const { Buffer } = globalThis // 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')
}