Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 13 additions & 26 deletions src/parser/utils.ts
Original file line number Diff line number Diff line change
@@ -1,37 +1,24 @@
export function isAnyArrayBuffer(value: unknown): value is ArrayBuffer {
return (
typeof value === 'object' &&
value != null &&
Symbol.toStringTag in value &&
(value[Symbol.toStringTag] === 'ArrayBuffer' ||
value[Symbol.toStringTag] === 'SharedArrayBuffer')
);
}
const TypedArrayPrototypeGetSymbolToStringTag = (() => {
// eslint-disable-next-line @typescript-eslint/unbound-method -- the intention is to call this method with a bound value
const g = Object.getOwnPropertyDescriptor(
Object.getPrototypeOf(Uint8Array.prototype),
Symbol.toStringTag
)!.get!;

export function isUint8Array(value: unknown): value is Uint8Array {
return (
typeof value === 'object' &&
value != null &&
Symbol.toStringTag in value &&
value[Symbol.toStringTag] === 'Uint8Array'
);
}
return (value: unknown) => g.call(value);
})();

export function isBigInt64Array(value: unknown): value is BigInt64Array {
return (
typeof value === 'object' &&
value != null &&
Symbol.toStringTag in value &&
value[Symbol.toStringTag] === 'BigInt64Array'
);
export function isUint8Array(value: unknown): value is Uint8Array {
return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Uint8Array';
}

export function isBigUInt64Array(value: unknown): value is BigUint64Array {
export function isAnyArrayBuffer(value: unknown): value is ArrayBuffer {
return (
typeof value === 'object' &&
value != null &&
Symbol.toStringTag in value &&
value[Symbol.toStringTag] === 'BigUint64Array'
(value[Symbol.toStringTag] === 'ArrayBuffer' ||
value[Symbol.toStringTag] === 'SharedArrayBuffer')
);
}

Expand Down