Spaces:
Sleeping
Sleeping
| 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') | |
| } | |