From d19031bc746d1b2552d740b894995de1bdfb71b3 Mon Sep 17 00:00:00 2001 From: Paul Miller Date: Sun, 10 Dec 2023 22:23:26 +0000 Subject: [PATCH] utils: fix-up isBytes --- src/_assert.ts | 10 +++++++++- src/utils.ts | 10 +++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/_assert.ts b/src/_assert.ts index cd802fd..d9340f8 100644 --- a/src/_assert.ts +++ b/src/_assert.ts @@ -6,8 +6,16 @@ function bool(b: boolean) { if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`); } +function isBytes(a: unknown): a is Uint8Array { + return ( + a != null && + typeof a === 'object' && + (a instanceof Uint8Array || a.constructor.name === 'Uint8Array') + ); +} + function bytes(b: Uint8Array | undefined, ...lengths: number[]) { - if (!(b instanceof Uint8Array)) throw new Error('Expected Uint8Array'); + if (!isBytes(b)) throw new Error('Expected Uint8Array'); if (lengths.length > 0 && !lengths.includes(b.length)) throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`); } diff --git a/src/utils.ts b/src/utils.ts index 82f5b5e..692a24e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -11,8 +11,12 @@ export const u16 = (arr: TypedArray) => export const u32 = (arr: TypedArray) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4)); -function isBytes(a: any): a is Uint8Array { - return a instanceof Uint8Array || a.constructor.name === 'Uint8Array'; +function isBytes(a: unknown): a is Uint8Array { + return ( + a != null && + typeof a === 'object' && + (a instanceof Uint8Array || a.constructor.name === 'Uint8Array') + ); } // Cast array to view @@ -169,7 +173,7 @@ export function checkOpts( } export function ensureBytes(b: any, len?: number) { - if (!(b instanceof Uint8Array)) throw new Error('Uint8Array expected'); + if (!isBytes(b)) throw new Error('Uint8Array expected'); if (typeof len === 'number') if (b.length !== len) throw new Error(`Uint8Array length ${len} expected`); }