@xylabs/arraybuffer
Advanced tools
| export {}; | ||
| //# sourceMappingURL=is.spec.d.ts.map |
| {"version":3,"file":"is.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/is.spec.ts"],"names":[],"mappings":""} |
| import { | ||
| describe, expect, it, | ||
| } from 'vitest' | ||
| import { isArrayBuffer } from '../isArrayBuffer.ts' | ||
| const Undefined = undefined | ||
| describe('isArrayBuffer', () => { | ||
| it('correctly identifies ArrayBuffer objects', () => { | ||
| expect(isArrayBuffer(new ArrayBuffer(10))).toBe(true) | ||
| expect(isArrayBuffer(new Uint8Array())).toBe(false) | ||
| expect(isArrayBuffer({})).toBe(false) | ||
| expect(isArrayBuffer(null)).toBe(false) | ||
| expect(isArrayBuffer(Undefined)).toBe(false) | ||
| }) | ||
| }) |
@@ -13,8 +13,8 @@ // src/equalArrayBuffers.ts | ||
| // src/isArrayBuffer.ts | ||
| var isArrayBuffer = (value) => { | ||
| function isArrayBuffer(value) { | ||
| return value instanceof ArrayBuffer; | ||
| }; | ||
| var isArrayBufferLike = (value) => { | ||
| } | ||
| function isArrayBufferLike(value) { | ||
| return value !== null && typeof value === "object" && "byteLength" in value && typeof value.byteLength === "number" && "slice" in value && typeof value.slice === "function"; | ||
| }; | ||
| } | ||
@@ -21,0 +21,0 @@ // src/toArrayBuffer.ts |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../src/equalArrayBuffers.ts","../../src/isArrayBuffer.ts","../../src/toArrayBuffer.ts","../../src/toUint8Array.ts"],"sourcesContent":["export const equalArrayBuffers = (a1: ArrayBufferLike, a2: ArrayBufferLike) => {\n const u1 = new Uint8Array(a1)\n const u2 = new Uint8Array(a2)\n if (u1.byteLength !== u2.byteLength) return false\n for (let i = 0; i < u1.byteLength; i++) {\n if (u1[i] !== u2[i]) return false\n }\n return true\n}\n","export const isArrayBuffer = (value: unknown): value is ArrayBuffer => {\n return value instanceof ArrayBuffer\n}\n\nexport const isArrayBufferLike = (value: unknown): value is ArrayBufferLike => {\n return (\n value !== null\n && typeof value === 'object'\n && 'byteLength' in value\n && typeof (value as ArrayBufferLike).byteLength === 'number'\n && 'slice' in value\n && typeof (value as ArrayBufferLike).slice === 'function'\n )\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hex } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport { isUndefined } from '@xylabs/typeof'\n\nfunction hexToArrayBuffer(value: Hex): Uint8Array {\n if (value.length % 2 !== 0) {\n throw new Error('Invalid hex value')\n }\n\n const length = value.length / 2\n const result = new Uint8Array(new ArrayBuffer(length))\n\n for (let i = 0; i < length; i++) {\n const byte = value.slice(i * 2, i * 2 + 2)\n result[i] = Number.parseInt(byte, 16)\n }\n\n return result\n}\n\nfunction stringToArrayBuffer(value: string, base = 16): Uint8Array {\n switch (base) {\n case 16: {\n return hexToArrayBuffer(toHex((value.startsWith('0x') ? value.slice(2) : value).toUpperCase()))\n }\n default: {\n throw new Error(`Unsupported base [${base}]`)\n }\n }\n}\n\nexport function toArrayBuffer(value: undefined, padLength?: number, base?: number): undefined\nexport function toArrayBuffer(value: ArrayBufferLike | bigint | string, padLength?: number, base?: number): ArrayBufferLike\nexport function toArrayBuffer(value: ArrayBufferLike | bigint | string | undefined, padLength?: number, base?: number): ArrayBufferLike | undefined\nexport function toArrayBuffer(value?: ArrayBufferLike | bigint | string, padLength = 0, base?: number): ArrayBufferLike | undefined {\n if (isUndefined(value)) return undefined\n\n if (typeof value === 'bigint' && value < 0) {\n throw new Error(`negative bigint values are not supported: ${typeof value}`)\n }\n\n let result: Uint8Array | undefined\n = typeof value === 'string'\n ? stringToArrayBuffer(value, base)\n : typeof value === 'bigint' ? stringToArrayBuffer(value.toString(16)) : (new Uint8Array(value))\n\n if (result === undefined) {\n throw new Error(`toArrayBuffer - Unknown type: ${typeof value}`)\n }\n\n if (result.length < padLength) {\n result = new Uint8Array([...new Uint8Array(padLength - result.length), ...result])\n assertEx(result?.length <= padLength, () => 'Resulting length is greater than padLength')\n }\n\n return result.buffer\n}\n","import { toArrayBuffer } from './toArrayBuffer.ts'\n\nexport function toUint8Array(value: undefined, padLength?: number, base?: number): undefined\nexport function toUint8Array(value: ArrayBufferLike | bigint | string, padLength?: number, base?: number): Uint8Array\nexport function toUint8Array(value: ArrayBufferLike | bigint | string | undefined, padLength?: number, base?: number): Uint8Array | undefined\nexport function toUint8Array(value?: ArrayBufferLike | bigint | string, padLength?: number, base?: number): Uint8Array | undefined {\n const arrayBuffer = toArrayBuffer(value, padLength, base)\n return arrayBuffer ? new Uint8Array(arrayBuffer) : undefined\n}\n"],"mappings":";AAAO,IAAM,oBAAoB,CAAC,IAAqB,OAAwB;AAC7E,QAAM,KAAK,IAAI,WAAW,EAAE;AAC5B,QAAM,KAAK,IAAI,WAAW,EAAE;AAC5B,MAAI,GAAG,eAAe,GAAG,WAAY,QAAO;AAC5C,WAAS,IAAI,GAAG,IAAI,GAAG,YAAY,KAAK;AACtC,QAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAG,QAAO;AAAA,EAC9B;AACA,SAAO;AACT;;;ACRO,IAAM,gBAAgB,CAAC,UAAyC;AACrE,SAAO,iBAAiB;AAC1B;AAEO,IAAM,oBAAoB,CAAC,UAA6C;AAC7E,SACE,UAAU,QACP,OAAO,UAAU,YACjB,gBAAgB,SAChB,OAAQ,MAA0B,eAAe,YACjD,WAAW,SACX,OAAQ,MAA0B,UAAU;AAEnD;;;ACbA,SAAS,gBAAgB;AAEzB,SAAS,aAAa;AACtB,SAAS,mBAAmB;AAE5B,SAAS,iBAAiB,OAAwB;AAChD,MAAI,MAAM,SAAS,MAAM,GAAG;AAC1B,UAAM,IAAI,MAAM,mBAAmB;AAAA,EACrC;AAEA,QAAM,SAAS,MAAM,SAAS;AAC9B,QAAM,SAAS,IAAI,WAAW,IAAI,YAAY,MAAM,CAAC;AAErD,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,UAAM,OAAO,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;AACzC,WAAO,CAAC,IAAI,OAAO,SAAS,MAAM,EAAE;AAAA,EACtC;AAEA,SAAO;AACT;AAEA,SAAS,oBAAoB,OAAe,OAAO,IAAgB;AACjE,UAAQ,MAAM;AAAA,IACZ,KAAK,IAAI;AACP,aAAO,iBAAiB,OAAO,MAAM,WAAW,IAAI,IAAI,MAAM,MAAM,CAAC,IAAI,OAAO,YAAY,CAAC,CAAC;AAAA,IAChG;AAAA,IACA,SAAS;AACP,YAAM,IAAI,MAAM,qBAAqB,IAAI,GAAG;AAAA,IAC9C;AAAA,EACF;AACF;AAKO,SAAS,cAAc,OAA2C,YAAY,GAAG,MAA4C;AAClI,MAAI,YAAY,KAAK,EAAG,QAAO;AAE/B,MAAI,OAAO,UAAU,YAAY,QAAQ,GAAG;AAC1C,UAAM,IAAI,MAAM,6CAA6C,OAAO,KAAK,EAAE;AAAA,EAC7E;AAEA,MAAI,SACA,OAAO,UAAU,WACf,oBAAoB,OAAO,IAAI,IAC/B,OAAO,UAAU,WAAW,oBAAoB,MAAM,SAAS,EAAE,CAAC,IAAK,IAAI,WAAW,KAAK;AAEjG,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI,MAAM,iCAAiC,OAAO,KAAK,EAAE;AAAA,EACjE;AAEA,MAAI,OAAO,SAAS,WAAW;AAC7B,aAAS,IAAI,WAAW,CAAC,GAAG,IAAI,WAAW,YAAY,OAAO,MAAM,GAAG,GAAG,MAAM,CAAC;AACjF,aAAS,QAAQ,UAAU,WAAW,MAAM,4CAA4C;AAAA,EAC1F;AAEA,SAAO,OAAO;AAChB;;;ACpDO,SAAS,aAAa,OAA2C,WAAoB,MAAuC;AACjI,QAAM,cAAc,cAAc,OAAO,WAAW,IAAI;AACxD,SAAO,cAAc,IAAI,WAAW,WAAW,IAAI;AACrD;","names":[]} | ||
| {"version":3,"sources":["../../src/equalArrayBuffers.ts","../../src/isArrayBuffer.ts","../../src/toArrayBuffer.ts","../../src/toUint8Array.ts"],"sourcesContent":["export const equalArrayBuffers = (a1: ArrayBufferLike, a2: ArrayBufferLike) => {\n const u1 = new Uint8Array(a1)\n const u2 = new Uint8Array(a2)\n if (u1.byteLength !== u2.byteLength) return false\n for (let i = 0; i < u1.byteLength; i++) {\n if (u1[i] !== u2[i]) return false\n }\n return true\n}\n","export function isArrayBuffer(value: unknown): value is ArrayBuffer\nexport function isArrayBuffer<T extends ArrayBuffer>(value: T): value is Extract<T, ArrayBuffer>\nexport function isArrayBuffer(value: unknown): value is ArrayBuffer {\n return value instanceof ArrayBuffer\n}\n\nexport function isArrayBufferLike(value: unknown): value is ArrayBufferLike\nexport function isArrayBufferLike<T extends ArrayBufferLike>(value: T): value is Extract<T, ArrayBufferLike>\nexport function isArrayBufferLike(value: unknown): value is ArrayBufferLike {\n return (\n value !== null\n && typeof value === 'object'\n && 'byteLength' in value\n && typeof (value as ArrayBufferLike).byteLength === 'number'\n && 'slice' in value\n && typeof (value as ArrayBufferLike).slice === 'function'\n )\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hex } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport { isUndefined } from '@xylabs/typeof'\n\nfunction hexToArrayBuffer(value: Hex): Uint8Array {\n if (value.length % 2 !== 0) {\n throw new Error('Invalid hex value')\n }\n\n const length = value.length / 2\n const result = new Uint8Array(new ArrayBuffer(length))\n\n for (let i = 0; i < length; i++) {\n const byte = value.slice(i * 2, i * 2 + 2)\n result[i] = Number.parseInt(byte, 16)\n }\n\n return result\n}\n\nfunction stringToArrayBuffer(value: string, base = 16): Uint8Array {\n switch (base) {\n case 16: {\n return hexToArrayBuffer(toHex((value.startsWith('0x') ? value.slice(2) : value).toUpperCase()))\n }\n default: {\n throw new Error(`Unsupported base [${base}]`)\n }\n }\n}\n\nexport function toArrayBuffer(value: undefined, padLength?: number, base?: number): undefined\nexport function toArrayBuffer(value: ArrayBufferLike | bigint | string, padLength?: number, base?: number): ArrayBufferLike\nexport function toArrayBuffer(value: ArrayBufferLike | bigint | string | undefined, padLength?: number, base?: number): ArrayBufferLike | undefined\nexport function toArrayBuffer(value?: ArrayBufferLike | bigint | string, padLength = 0, base?: number): ArrayBufferLike | undefined {\n if (isUndefined(value)) return undefined\n\n if (typeof value === 'bigint' && value < 0) {\n throw new Error(`negative bigint values are not supported: ${typeof value}`)\n }\n\n let result: Uint8Array | undefined\n = typeof value === 'string'\n ? stringToArrayBuffer(value, base)\n : typeof value === 'bigint' ? stringToArrayBuffer(value.toString(16)) : (new Uint8Array(value))\n\n if (result === undefined) {\n throw new Error(`toArrayBuffer - Unknown type: ${typeof value}`)\n }\n\n if (result.length < padLength) {\n result = new Uint8Array([...new Uint8Array(padLength - result.length), ...result])\n assertEx(result?.length <= padLength, () => 'Resulting length is greater than padLength')\n }\n\n return result.buffer\n}\n","import { toArrayBuffer } from './toArrayBuffer.ts'\n\nexport function toUint8Array(value: undefined, padLength?: number, base?: number): undefined\nexport function toUint8Array(value: ArrayBufferLike | bigint | string, padLength?: number, base?: number): Uint8Array\nexport function toUint8Array(value: ArrayBufferLike | bigint | string | undefined, padLength?: number, base?: number): Uint8Array | undefined\nexport function toUint8Array(value?: ArrayBufferLike | bigint | string, padLength?: number, base?: number): Uint8Array | undefined {\n const arrayBuffer = toArrayBuffer(value, padLength, base)\n return arrayBuffer ? new Uint8Array(arrayBuffer) : undefined\n}\n"],"mappings":";AAAO,IAAM,oBAAoB,CAAC,IAAqB,OAAwB;AAC7E,QAAM,KAAK,IAAI,WAAW,EAAE;AAC5B,QAAM,KAAK,IAAI,WAAW,EAAE;AAC5B,MAAI,GAAG,eAAe,GAAG,WAAY,QAAO;AAC5C,WAAS,IAAI,GAAG,IAAI,GAAG,YAAY,KAAK;AACtC,QAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAG,QAAO;AAAA,EAC9B;AACA,SAAO;AACT;;;ACNO,SAAS,cAAc,OAAsC;AAClE,SAAO,iBAAiB;AAC1B;AAIO,SAAS,kBAAkB,OAA0C;AAC1E,SACE,UAAU,QACP,OAAO,UAAU,YACjB,gBAAgB,SAChB,OAAQ,MAA0B,eAAe,YACjD,WAAW,SACX,OAAQ,MAA0B,UAAU;AAEnD;;;ACjBA,SAAS,gBAAgB;AAEzB,SAAS,aAAa;AACtB,SAAS,mBAAmB;AAE5B,SAAS,iBAAiB,OAAwB;AAChD,MAAI,MAAM,SAAS,MAAM,GAAG;AAC1B,UAAM,IAAI,MAAM,mBAAmB;AAAA,EACrC;AAEA,QAAM,SAAS,MAAM,SAAS;AAC9B,QAAM,SAAS,IAAI,WAAW,IAAI,YAAY,MAAM,CAAC;AAErD,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,UAAM,OAAO,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;AACzC,WAAO,CAAC,IAAI,OAAO,SAAS,MAAM,EAAE;AAAA,EACtC;AAEA,SAAO;AACT;AAEA,SAAS,oBAAoB,OAAe,OAAO,IAAgB;AACjE,UAAQ,MAAM;AAAA,IACZ,KAAK,IAAI;AACP,aAAO,iBAAiB,OAAO,MAAM,WAAW,IAAI,IAAI,MAAM,MAAM,CAAC,IAAI,OAAO,YAAY,CAAC,CAAC;AAAA,IAChG;AAAA,IACA,SAAS;AACP,YAAM,IAAI,MAAM,qBAAqB,IAAI,GAAG;AAAA,IAC9C;AAAA,EACF;AACF;AAKO,SAAS,cAAc,OAA2C,YAAY,GAAG,MAA4C;AAClI,MAAI,YAAY,KAAK,EAAG,QAAO;AAE/B,MAAI,OAAO,UAAU,YAAY,QAAQ,GAAG;AAC1C,UAAM,IAAI,MAAM,6CAA6C,OAAO,KAAK,EAAE;AAAA,EAC7E;AAEA,MAAI,SACA,OAAO,UAAU,WACf,oBAAoB,OAAO,IAAI,IAC/B,OAAO,UAAU,WAAW,oBAAoB,MAAM,SAAS,EAAE,CAAC,IAAK,IAAI,WAAW,KAAK;AAEjG,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI,MAAM,iCAAiC,OAAO,KAAK,EAAE;AAAA,EACjE;AAEA,MAAI,OAAO,SAAS,WAAW;AAC7B,aAAS,IAAI,WAAW,CAAC,GAAG,IAAI,WAAW,YAAY,OAAO,MAAM,GAAG,GAAG,MAAM,CAAC;AACjF,aAAS,QAAQ,UAAU,WAAW,MAAM,4CAA4C;AAAA,EAC1F;AAEA,SAAO,OAAO;AAChB;;;ACpDO,SAAS,aAAa,OAA2C,WAAoB,MAAuC;AACjI,QAAM,cAAc,cAAc,OAAO,WAAW,IAAI;AACxD,SAAO,cAAc,IAAI,WAAW,WAAW,IAAI;AACrD;","names":[]} |
@@ -1,3 +0,5 @@ | ||
| export declare const isArrayBuffer: (value: unknown) => value is ArrayBuffer; | ||
| export declare const isArrayBufferLike: (value: unknown) => value is ArrayBufferLike; | ||
| export declare function isArrayBuffer(value: unknown): value is ArrayBuffer; | ||
| export declare function isArrayBuffer<T extends ArrayBuffer>(value: T): value is Extract<T, ArrayBuffer>; | ||
| export declare function isArrayBufferLike(value: unknown): value is ArrayBufferLike; | ||
| export declare function isArrayBufferLike<T extends ArrayBufferLike>(value: T): value is Extract<T, ArrayBufferLike>; | ||
| //# sourceMappingURL=isArrayBuffer.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"isArrayBuffer.d.ts","sourceRoot":"","sources":["../../src/isArrayBuffer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,WAEvD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,eAS3D,CAAA"} | ||
| {"version":3,"file":"isArrayBuffer.d.ts","sourceRoot":"","sources":["../../src/isArrayBuffer.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAA;AACnE,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;AAKhG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAAA;AAC3E,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,CAAA"} |
+6
-6
| { | ||
| "name": "@xylabs/arraybuffer", | ||
| "version": "5.0.10", | ||
| "version": "5.0.11", | ||
| "description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries", | ||
@@ -44,9 +44,9 @@ "keywords": [ | ||
| "dependencies": { | ||
| "@xylabs/assert": "~5.0.10", | ||
| "@xylabs/hex": "~5.0.10", | ||
| "@xylabs/typeof": "~5.0.10" | ||
| "@xylabs/assert": "~5.0.11", | ||
| "@xylabs/hex": "~5.0.11", | ||
| "@xylabs/typeof": "~5.0.11" | ||
| }, | ||
| "devDependencies": { | ||
| "@xylabs/ts-scripts-yarn3": "~7.1.1", | ||
| "@xylabs/tsconfig": "~7.1.1", | ||
| "@xylabs/ts-scripts-yarn3": "~7.1.7", | ||
| "@xylabs/tsconfig": "~7.1.7", | ||
| "typescript": "~5.9.2", | ||
@@ -53,0 +53,0 @@ "vitest": "~3.2.4" |
@@ -1,6 +0,10 @@ | ||
| export const isArrayBuffer = (value: unknown): value is ArrayBuffer => { | ||
| export function isArrayBuffer(value: unknown): value is ArrayBuffer | ||
| export function isArrayBuffer<T extends ArrayBuffer>(value: T): value is Extract<T, ArrayBuffer> | ||
| export function isArrayBuffer(value: unknown): value is ArrayBuffer { | ||
| return value instanceof ArrayBuffer | ||
| } | ||
| export const isArrayBufferLike = (value: unknown): value is ArrayBufferLike => { | ||
| export function isArrayBufferLike(value: unknown): value is ArrayBufferLike | ||
| export function isArrayBufferLike<T extends ArrayBufferLike>(value: T): value is Extract<T, ArrayBufferLike> | ||
| export function isArrayBufferLike(value: unknown): value is ArrayBufferLike { | ||
| return ( | ||
@@ -7,0 +11,0 @@ value !== null |
30947
6.06%26
13.04%198
11.86%Updated
Updated
Updated