@xylabs/arraybuffer 5.0.10 → 5.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/index.mjs +4 -4
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/isArrayBuffer.d.ts +4 -2
- package/dist/neutral/isArrayBuffer.d.ts.map +1 -1
- package/dist/neutral/spec/is.spec.d.ts +2 -0
- package/dist/neutral/spec/is.spec.d.ts.map +1 -0
- package/package.json +6 -6
- package/src/isArrayBuffer.ts +6 -2
- package/src/spec/is.spec.ts +18 -0
package/dist/neutral/index.mjs
CHANGED
|
@@ -10,12 +10,12 @@ var equalArrayBuffers = (a1, a2) => {
|
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
// src/isArrayBuffer.ts
|
|
13
|
-
|
|
13
|
+
function isArrayBuffer(value) {
|
|
14
14
|
return value instanceof ArrayBuffer;
|
|
15
|
-
}
|
|
16
|
-
|
|
15
|
+
}
|
|
16
|
+
function isArrayBufferLike(value) {
|
|
17
17
|
return value !== null && typeof value === "object" && "byteLength" in value && typeof value.byteLength === "number" && "slice" in value && typeof value.slice === "function";
|
|
18
|
-
}
|
|
18
|
+
}
|
|
19
19
|
|
|
20
20
|
// src/toArrayBuffer.ts
|
|
21
21
|
import { assertEx } from "@xylabs/assert";
|
|
@@ -1 +1 @@
|
|
|
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
|
|
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 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 +1,5 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
export declare
|
|
1
|
+
export declare function isArrayBuffer(value: unknown): value is ArrayBuffer;
|
|
2
|
+
export declare function isArrayBuffer<T extends ArrayBuffer>(value: T): value is Extract<T, ArrayBuffer>;
|
|
3
|
+
export declare function isArrayBufferLike(value: unknown): value is ArrayBufferLike;
|
|
4
|
+
export declare function isArrayBufferLike<T extends ArrayBufferLike>(value: T): value is Extract<T, ArrayBufferLike>;
|
|
3
5
|
//# sourceMappingURL=isArrayBuffer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isArrayBuffer.d.ts","sourceRoot":"","sources":["../../src/isArrayBuffer.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/is.spec.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xylabs/arraybuffer",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.11",
|
|
4
4
|
"description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xylabs",
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
"src"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@xylabs/assert": "~5.0.
|
|
45
|
-
"@xylabs/hex": "~5.0.
|
|
46
|
-
"@xylabs/typeof": "~5.0.
|
|
44
|
+
"@xylabs/assert": "~5.0.11",
|
|
45
|
+
"@xylabs/hex": "~5.0.11",
|
|
46
|
+
"@xylabs/typeof": "~5.0.11"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@xylabs/ts-scripts-yarn3": "~7.1.
|
|
50
|
-
"@xylabs/tsconfig": "~7.1.
|
|
49
|
+
"@xylabs/ts-scripts-yarn3": "~7.1.7",
|
|
50
|
+
"@xylabs/tsconfig": "~7.1.7",
|
|
51
51
|
"typescript": "~5.9.2",
|
|
52
52
|
"vitest": "~3.2.4"
|
|
53
53
|
},
|
package/src/isArrayBuffer.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
export
|
|
1
|
+
export function isArrayBuffer(value: unknown): value is ArrayBuffer
|
|
2
|
+
export function isArrayBuffer<T extends ArrayBuffer>(value: T): value is Extract<T, ArrayBuffer>
|
|
3
|
+
export function isArrayBuffer(value: unknown): value is ArrayBuffer {
|
|
2
4
|
return value instanceof ArrayBuffer
|
|
3
5
|
}
|
|
4
6
|
|
|
5
|
-
export
|
|
7
|
+
export function isArrayBufferLike(value: unknown): value is ArrayBufferLike
|
|
8
|
+
export function isArrayBufferLike<T extends ArrayBufferLike>(value: T): value is Extract<T, ArrayBufferLike>
|
|
9
|
+
export function isArrayBufferLike(value: unknown): value is ArrayBufferLike {
|
|
6
10
|
return (
|
|
7
11
|
value !== null
|
|
8
12
|
&& typeof value === 'object'
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
describe, expect, it,
|
|
3
|
+
} from 'vitest'
|
|
4
|
+
|
|
5
|
+
import { isArrayBuffer } from '../isArrayBuffer.ts'
|
|
6
|
+
|
|
7
|
+
const Undefined = undefined
|
|
8
|
+
|
|
9
|
+
describe('isArrayBuffer', () => {
|
|
10
|
+
it('correctly identifies ArrayBuffer objects', () => {
|
|
11
|
+
expect(isArrayBuffer(new ArrayBuffer(10))).toBe(true)
|
|
12
|
+
|
|
13
|
+
expect(isArrayBuffer(new Uint8Array())).toBe(false)
|
|
14
|
+
expect(isArrayBuffer({})).toBe(false)
|
|
15
|
+
expect(isArrayBuffer(null)).toBe(false)
|
|
16
|
+
expect(isArrayBuffer(Undefined)).toBe(false)
|
|
17
|
+
})
|
|
18
|
+
})
|