{"version":3,"sources":["../../src/equalArrayBuffers.ts","../../src/isArrayBuffer.ts","../../src/toArrayBuffer.ts","../../src/toUint8Array.ts"],"sourcesContent":["/**\n * Compares two ArrayBuffers for byte-level equality.\n * @param a1 - First buffer\n * @param a2 - Second buffer\n * @returns True if the buffers have the same length and identical bytes\n */\nexport 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","/** Type guard that checks if a value is an ArrayBuffer instance. */\nexport 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\n/** Type guard that checks if a value conforms to the ArrayBufferLike interface (has byteLength and slice). */\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\n/**\n * Converts a string, bigint, or ArrayBufferLike to an ArrayBufferLike, with optional zero-padding.\n * @param value - The value to convert (hex string, bigint, or existing buffer)\n * @param padLength - Minimum byte length, left-padded with zeros if needed\n * @param base - Numeric base for string parsing (default 16)\n * @returns The resulting ArrayBufferLike, or undefined if value is undefined\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\n/**\n * Converts a string, bigint, or ArrayBufferLike to a Uint8Array, with optional zero-padding.\n * @param value - The value to convert\n * @param padLength - Minimum byte length, left-padded with zeros if needed\n * @param base - Numeric base for string parsing (default 16)\n * @returns The resulting Uint8Array, or undefined if value is undefined\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":";AAMO,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;;;ACXO,SAAS,cAAc,OAAsC;AAClE,SAAO,iBAAiB;AAC1B;AAKO,SAAS,kBAAkB,OAA0C;AAC1E,SACE,UAAU,QACP,OAAO,UAAU,YACjB,gBAAgB,SAChB,OAAQ,MAA0B,eAAe,YACjD,WAAW,SACX,OAAQ,MAA0B,UAAU;AAEnD;;;ACnBA,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;AAYO,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":[]}