Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@xylabs/arraybuffer

Package Overview
Dependencies
Maintainers
5
Versions
442
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@xylabs/arraybuffer - npm Package Compare versions

Comparing version
5.0.80
to
5.0.81
+6
-9
package.json
{
"name": "@xylabs/arraybuffer",
"version": "5.0.80",
"version": "5.0.81",
"description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",

@@ -31,3 +31,2 @@ "keywords": [

"types": "./dist/neutral/index.d.ts",
"source": "./src/index.ts",
"default": "./dist/neutral/index.mjs"

@@ -38,7 +37,5 @@ },

"module": "./dist/neutral/index.mjs",
"source": "./src/index.ts",
"types": "./dist/neutral/index.d.ts",
"files": [
"dist",
"src",
"!**/*.bench.*",

@@ -49,9 +46,9 @@ "!**/*.spec.*",

"dependencies": {
"@xylabs/assert": "~5.0.80",
"@xylabs/hex": "~5.0.80",
"@xylabs/typeof": "~5.0.80"
"@xylabs/assert": "~5.0.81",
"@xylabs/hex": "~5.0.81",
"@xylabs/typeof": "~5.0.81"
},
"devDependencies": {
"@xylabs/ts-scripts-yarn3": "~7.3.2",
"@xylabs/tsconfig": "~7.3.2",
"@xylabs/ts-scripts-yarn3": "~7.4.11",
"@xylabs/tsconfig": "~7.4.11",
"typescript": "~5.9.3",

@@ -58,0 +55,0 @@ "vitest": "~4.0.18"

+58
-10

@@ -64,2 +64,4 @@ # @xylabs/arraybuffer

## Call Signature
```ts

@@ -69,3 +71,3 @@ function isArrayBuffer(value): value is ArrayBuffer;

## Parameters
### Parameters

@@ -76,6 +78,28 @@ ### value

## Returns
### Returns
`value is ArrayBuffer`
## Call Signature
```ts
function isArrayBuffer<T>(value): value is Extract<T, ArrayBuffer>;
```
### Type Parameters
### T
`T` *extends* `ArrayBuffer`
### Parameters
### value
`T`
### Returns
`value is Extract<T, ArrayBuffer>`
### <a id="isArrayBufferLike"></a>isArrayBufferLike

@@ -87,2 +111,4 @@

## Call Signature
```ts

@@ -92,3 +118,3 @@ function isArrayBufferLike(value): value is ArrayBufferLike;

## Parameters
### Parameters

@@ -99,6 +125,28 @@ ### value

## Returns
### Returns
`value is ArrayBufferLike`
## Call Signature
```ts
function isArrayBufferLike<T>(value): value is Extract<T, ArrayBufferLike>;
```
### Type Parameters
### T
`T` *extends* `ArrayBufferLike`
### Parameters
### value
`T`
### Returns
`value is Extract<T, ArrayBufferLike>`
### <a id="toArrayBuffer"></a>toArrayBuffer

@@ -170,3 +218,3 @@

padLength?,
base?): undefined | ArrayBufferLike;
base?): ArrayBufferLike | undefined;
```

@@ -178,3 +226,3 @@

`undefined` | `string` | `bigint` | `ArrayBufferLike`
`string` | `bigint` | `ArrayBufferLike` | `undefined`

@@ -191,3 +239,3 @@ ### padLength?

`undefined` \| `ArrayBufferLike`
`ArrayBufferLike` \| `undefined`

@@ -260,3 +308,3 @@ ### <a id="toUint8Array"></a>toUint8Array

padLength?,
base?): undefined | Uint8Array<ArrayBufferLike>;
base?): Uint8Array<ArrayBufferLike> | undefined;
```

@@ -268,3 +316,3 @@

`undefined` | `string` | `bigint` | `ArrayBufferLike`
`string` | `bigint` | `ArrayBufferLike` | `undefined`

@@ -281,3 +329,3 @@ ### padLength?

`undefined` \| `Uint8Array`\<`ArrayBufferLike`\>
`Uint8Array`\<`ArrayBufferLike`\> \| `undefined`

@@ -284,0 +332,0 @@

export const equalArrayBuffers = (a1: ArrayBufferLike, a2: ArrayBufferLike) => {
const u1 = new Uint8Array(a1)
const u2 = new Uint8Array(a2)
if (u1.byteLength !== u2.byteLength) return false
for (let i = 0; i < u1.byteLength; i++) {
if (u1[i] !== u2[i]) return false
}
return true
}
export * from './equalArrayBuffers.ts'
export * from './isArrayBuffer.ts'
export * from './toArrayBuffer.ts'
export * from './toUint8Array.ts'
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 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 (
value !== null
&& typeof value === 'object'
&& 'byteLength' in value
&& typeof (value as ArrayBufferLike).byteLength === 'number'
&& 'slice' in value
&& typeof (value as ArrayBufferLike).slice === 'function'
)
}
import { assertEx } from '@xylabs/assert'
import type { Hex } from '@xylabs/hex'
import { toHex } from '@xylabs/hex'
import { isUndefined } from '@xylabs/typeof'
function hexToArrayBuffer(value: Hex): Uint8Array {
if (value.length % 2 !== 0) {
throw new Error('Invalid hex value')
}
const length = value.length / 2
const result = new Uint8Array(new ArrayBuffer(length))
for (let i = 0; i < length; i++) {
const byte = value.slice(i * 2, i * 2 + 2)
result[i] = Number.parseInt(byte, 16)
}
return result
}
function stringToArrayBuffer(value: string, base = 16): Uint8Array {
switch (base) {
case 16: {
return hexToArrayBuffer(toHex((value.startsWith('0x') ? value.slice(2) : value).toUpperCase()))
}
default: {
throw new Error(`Unsupported base [${base}]`)
}
}
}
export function toArrayBuffer(value: undefined, padLength?: number, base?: number): undefined
export function toArrayBuffer(value: ArrayBufferLike | bigint | string, padLength?: number, base?: number): ArrayBufferLike
export function toArrayBuffer(value: ArrayBufferLike | bigint | string | undefined, padLength?: number, base?: number): ArrayBufferLike | undefined
export function toArrayBuffer(value?: ArrayBufferLike | bigint | string, padLength = 0, base?: number): ArrayBufferLike | undefined {
if (isUndefined(value)) return undefined
if (typeof value === 'bigint' && value < 0) {
throw new Error(`negative bigint values are not supported: ${typeof value}`)
}
let result: Uint8Array | undefined
= typeof value === 'string'
? stringToArrayBuffer(value, base)
: typeof value === 'bigint' ? stringToArrayBuffer(value.toString(16)) : (new Uint8Array(value))
if (result === undefined) {
throw new Error(`toArrayBuffer - Unknown type: ${typeof value}`)
}
if (result.length < padLength) {
result = new Uint8Array([...new Uint8Array(padLength - result.length), ...result])
assertEx(result?.length <= padLength, () => 'Resulting length is greater than padLength')
}
return result.buffer
}
import { toArrayBuffer } from './toArrayBuffer.ts'
export function toUint8Array(value: undefined, padLength?: number, base?: number): undefined
export function toUint8Array(value: ArrayBufferLike | bigint | string, padLength?: number, base?: number): Uint8Array
export function toUint8Array(value: ArrayBufferLike | bigint | string | undefined, padLength?: number, base?: number): Uint8Array | undefined
export function toUint8Array(value?: ArrayBufferLike | bigint | string, padLength?: number, base?: number): Uint8Array | undefined {
const arrayBuffer = toArrayBuffer(value, padLength, base)
return arrayBuffer ? new Uint8Array(arrayBuffer) : undefined
}