@thru/helpers 0.1.29 → 0.1.33
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/index.d.ts +2 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +0 -1
- package/src/utils.ts +1 -4
package/dist/index.d.ts
CHANGED
|
@@ -8,10 +8,8 @@ declare function isHexString(value: string): boolean;
|
|
|
8
8
|
declare function encodeSignature(bytes: Uint8Array): string;
|
|
9
9
|
declare function decodeSignature(value: string): Uint8Array;
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
type Pubkey = BytesLike;
|
|
13
|
-
declare function ensureBytes(value: BytesLike | undefined, field: string): Uint8Array;
|
|
11
|
+
declare function ensureBytes(value: Uint8Array | string | undefined, field: string): Uint8Array;
|
|
14
12
|
|
|
15
13
|
declare function getWebCrypto(): Crypto;
|
|
16
14
|
|
|
17
|
-
export {
|
|
15
|
+
export { decodeAddress, decodeBase64, decodeSignature, encodeAddress, encodeSignature, ensureBytes, getWebCrypto, hexToBytes, isHexString };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/address.ts","../src/encoding.ts","../src/utils.ts","../src/signature.ts","../src/webcrypto.ts"],"sourcesContent":["export const BASE64_URL_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\n\nconst tempMap = new Int16Array(256).fill(-1);\nfor (let i = 0; i < BASE64_URL_ALPHABET.length; i++) {\n tempMap[BASE64_URL_ALPHABET.charCodeAt(i)] = i;\n}\nexport const BASE64_URL_MAP = tempMap\n\n","import { BASE64_URL_ALPHABET, BASE64_URL_MAP } from \"./constants\";\n\nexport function encodeAddress(bytes: Uint8Array): string {\n if (bytes.length !== 32) {\n throw new Error('Expected 32-byte address');\n }\n\n let checksum = 0;\n let accumulator = 0;\n let bitsCollected = 0;\n const output: string[] = ['t', 'a'];\n\n for (let i = 0; i < 30; i++) {\n const byte = bytes[i];\n checksum += byte;\n accumulator = ((accumulator << 8) | byte) >>> 0;\n bitsCollected += 8;\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output.push(BASE64_URL_ALPHABET[index]);\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n }\n\n const secondLast = bytes[30];\n checksum += secondLast;\n accumulator = ((accumulator << 8) | secondLast) >>> 0;\n bitsCollected += 8;\n\n const last = bytes[31];\n checksum += last;\n accumulator = ((accumulator << 8) | last) >>> 0;\n bitsCollected += 8;\n\n accumulator = ((accumulator << 8) | (checksum & 0xff)) >>> 0;\n bitsCollected += 8;\n\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output.push(BASE64_URL_ALPHABET[index]);\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n\n return output.join('');\n}\n\nexport function decodeAddress(value: string): Uint8Array {\n if (value.length !== 46) {\n throw new Error('Invalid address length');\n }\n if (!value.startsWith('ta')) {\n throw new Error('Address must start with \"ta\"');\n }\n\n const output = new Uint8Array(32);\n let checksum = 0;\n let inIdx = 2;\n let remaining = 40;\n let outIdx = 0;\n\n while (remaining >= 4) {\n const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error('Invalid address encoding');\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const byte1 = (triple >> 16) & 0xff;\n const byte2 = (triple >> 8) & 0xff;\n const byte3 = triple & 0xff;\n checksum += byte1;\n checksum += byte2;\n checksum += byte3;\n output[outIdx++] = byte1;\n output[outIdx++] = byte2;\n output[outIdx++] = byte3;\n inIdx += 4;\n remaining -= 4;\n }\n\n const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error('Invalid address encoding');\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const byte1 = (triple >> 16) & 0xff;\n const byte2 = (triple >> 8) & 0xff;\n const incomingChecksum = triple & 0xff;\n\n checksum += byte1;\n checksum += byte2;\n output[outIdx++] = byte1;\n output[outIdx++] = byte2;\n\n checksum &= 0xff;\n if (checksum !== incomingChecksum) {\n throw new Error('Address checksum mismatch');\n }\n\n return output;\n}\n\nfunction maskForBits(bits: number): number {\n return bits === 0 ? 0 : (1 << bits) - 1;\n}\n","export function decodeBase64(value: string): Uint8Array {\n if (value.length === 0) {\n return new Uint8Array();\n }\n const atobFn = globalThis.atob;\n if (!atobFn) {\n throw new Error('Base64 decoding requires globalThis.atob support');\n }\n const binary = atobFn(value);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\nexport function hexToBytes(value: string): Uint8Array {\n const normalized = value.startsWith('0x') ? value.slice(2) : value;\n if (normalized.length % 2 !== 0) {\n throw new Error('Hex string must contain an even number of characters');\n }\n const bytes = new Uint8Array(normalized.length / 2);\n for (let i = 0; i < normalized.length; i += 2) {\n const byte = parseInt(normalized.slice(i, i + 2), 16);\n if (Number.isNaN(byte)) {\n throw new Error('Hex string contains invalid characters');\n }\n bytes[i / 2] = byte;\n }\n return bytes;\n}\n\nexport function isHexString(value: string): boolean {\n const normalized = value.startsWith('0x') ? value.slice(2) : value;\n return normalized.length % 2 === 0 && normalized.length > 0 && /^[0-9a-fA-F]+$/.test(normalized);\n}\n","import { decodeBase64 } from \"./encoding\";\n\nexport type BytesLike = Uint8Array | string;\nexport type Pubkey = BytesLike;\n\nexport function ensureBytes(value: BytesLike | undefined, field: string): Uint8Array {\n if (value instanceof Uint8Array) {\n if (value.length === 0) {\n throw new Error(`${field} cannot be empty`);\n }\n return value;\n }\n if (typeof value === \"string\") {\n if (value.length === 0) {\n throw new Error(`${field} cannot be empty`);\n }\n return decodeBase64(value);\n }\n throw new Error(`${field} is required`);\n}\n\nexport function maskForBits(bits: number): number {\n return bits === 0 ? 0 : (1 << bits) - 1;\n}","import { BASE64_URL_ALPHABET, BASE64_URL_MAP } from \"./constants\";\nimport { maskForBits } from \"./utils\";\n\nexport function encodeSignature(bytes: Uint8Array): string {\n if (bytes.length !== 64) {\n throw new Error(\"Expected 64-byte signature\");\n }\n let checksum = 0;\n let accumulator = 0;\n let bitsCollected = 0;\n const output: string[] = [\"t\", \"s\"];\n\n for (let i = 0; i < 63; i++) {\n const byte = bytes[i];\n checksum += byte;\n accumulator = ((accumulator << 8) | byte) >>> 0;\n bitsCollected += 8;\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output.push(BASE64_URL_ALPHABET[index]);\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n }\n\n const lastByte = bytes[63];\n checksum += lastByte;\n accumulator = ((accumulator << 8) | lastByte) >>> 0;\n bitsCollected += 8;\n accumulator = ((accumulator << 16) | (checksum & 0xffff)) >>> 0;\n bitsCollected += 16;\n\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output.push(BASE64_URL_ALPHABET[index]);\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n\n return output.join(\"\");\n}\n\nexport function decodeSignature(value: string): Uint8Array {\n if (value.length !== 90) {\n throw new Error(\"Invalid signature length\");\n }\n if (!value.startsWith(\"ts\")) {\n throw new Error('Signature must start with \"ts\"');\n }\n\n const output = new Uint8Array(64);\n let checksum = 0;\n let inIdx = 2;\n let remaining = 84;\n let outIdx = 0;\n\n while (remaining > 0) {\n const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error(\"Invalid signature encoding\");\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const byte1 = (triple >> 16) & 0xff;\n const byte2 = (triple >> 8) & 0xff;\n const byte3 = triple & 0xff;\n checksum += byte1;\n checksum += byte2;\n checksum += byte3;\n output[outIdx++] = byte1;\n output[outIdx++] = byte2;\n output[outIdx++] = byte3;\n inIdx += 4;\n remaining -= 4;\n }\n\n const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error(\"Invalid signature encoding\");\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const finalByte = (triple >> 16) & 0xff;\n checksum += finalByte;\n output[outIdx] = finalByte;\n\n const incomingChecksum = triple & 0xffff;\n checksum &= 0xffff;\n if (checksum !== incomingChecksum) {\n throw new Error(\"Signature checksum mismatch\");\n }\n\n return output;\n}","export function getWebCrypto(): Crypto {\n const cryptoObj = typeof globalThis !== 'undefined' ? (globalThis as { crypto?: Crypto }).crypto : undefined;\n\n if (cryptoObj && typeof cryptoObj.getRandomValues === 'function') {\n return cryptoObj;\n }\n\n throw new Error('Web Crypto API is unavailable. Provide a polyfill exposing globalThis.crypto.');\n}\n"],"mappings":"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","names":["a","b","c","d","triple","byte1","byte2","maskForBits","maskForBits","a","b","c","d","triple"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/address.ts","../src/encoding.ts","../src/utils.ts","../src/signature.ts","../src/webcrypto.ts"],"sourcesContent":["export const BASE64_URL_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\n\nconst tempMap = new Int16Array(256).fill(-1);\nfor (let i = 0; i < BASE64_URL_ALPHABET.length; i++) {\n tempMap[BASE64_URL_ALPHABET.charCodeAt(i)] = i;\n}\nexport const BASE64_URL_MAP = tempMap\n\n","import { BASE64_URL_ALPHABET, BASE64_URL_MAP } from \"./constants\";\n\nexport function encodeAddress(bytes: Uint8Array): string {\n if (bytes.length !== 32) {\n throw new Error('Expected 32-byte address');\n }\n\n let checksum = 0;\n let accumulator = 0;\n let bitsCollected = 0;\n const output: string[] = ['t', 'a'];\n\n for (let i = 0; i < 30; i++) {\n const byte = bytes[i];\n checksum += byte;\n accumulator = ((accumulator << 8) | byte) >>> 0;\n bitsCollected += 8;\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output.push(BASE64_URL_ALPHABET[index]);\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n }\n\n const secondLast = bytes[30];\n checksum += secondLast;\n accumulator = ((accumulator << 8) | secondLast) >>> 0;\n bitsCollected += 8;\n\n const last = bytes[31];\n checksum += last;\n accumulator = ((accumulator << 8) | last) >>> 0;\n bitsCollected += 8;\n\n accumulator = ((accumulator << 8) | (checksum & 0xff)) >>> 0;\n bitsCollected += 8;\n\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output.push(BASE64_URL_ALPHABET[index]);\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n\n return output.join('');\n}\n\nexport function decodeAddress(value: string): Uint8Array {\n if (value.length !== 46) {\n throw new Error('Invalid address length');\n }\n if (!value.startsWith('ta')) {\n throw new Error('Address must start with \"ta\"');\n }\n\n const output = new Uint8Array(32);\n let checksum = 0;\n let inIdx = 2;\n let remaining = 40;\n let outIdx = 0;\n\n while (remaining >= 4) {\n const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error('Invalid address encoding');\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const byte1 = (triple >> 16) & 0xff;\n const byte2 = (triple >> 8) & 0xff;\n const byte3 = triple & 0xff;\n checksum += byte1;\n checksum += byte2;\n checksum += byte3;\n output[outIdx++] = byte1;\n output[outIdx++] = byte2;\n output[outIdx++] = byte3;\n inIdx += 4;\n remaining -= 4;\n }\n\n const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error('Invalid address encoding');\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const byte1 = (triple >> 16) & 0xff;\n const byte2 = (triple >> 8) & 0xff;\n const incomingChecksum = triple & 0xff;\n\n checksum += byte1;\n checksum += byte2;\n output[outIdx++] = byte1;\n output[outIdx++] = byte2;\n\n checksum &= 0xff;\n if (checksum !== incomingChecksum) {\n throw new Error('Address checksum mismatch');\n }\n\n return output;\n}\n\nfunction maskForBits(bits: number): number {\n return bits === 0 ? 0 : (1 << bits) - 1;\n}\n","export function decodeBase64(value: string): Uint8Array {\n if (value.length === 0) {\n return new Uint8Array();\n }\n const atobFn = globalThis.atob;\n if (!atobFn) {\n throw new Error('Base64 decoding requires globalThis.atob support');\n }\n const binary = atobFn(value);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\nexport function hexToBytes(value: string): Uint8Array {\n const normalized = value.startsWith('0x') ? value.slice(2) : value;\n if (normalized.length % 2 !== 0) {\n throw new Error('Hex string must contain an even number of characters');\n }\n const bytes = new Uint8Array(normalized.length / 2);\n for (let i = 0; i < normalized.length; i += 2) {\n const byte = parseInt(normalized.slice(i, i + 2), 16);\n if (Number.isNaN(byte)) {\n throw new Error('Hex string contains invalid characters');\n }\n bytes[i / 2] = byte;\n }\n return bytes;\n}\n\nexport function isHexString(value: string): boolean {\n const normalized = value.startsWith('0x') ? value.slice(2) : value;\n return normalized.length % 2 === 0 && normalized.length > 0 && /^[0-9a-fA-F]+$/.test(normalized);\n}\n","import { decodeBase64 } from \"./encoding\";\n\nexport function ensureBytes(value: Uint8Array | string | undefined, field: string): Uint8Array {\n if (value instanceof Uint8Array) {\n if (value.length === 0) {\n throw new Error(`${field} cannot be empty`);\n }\n return value;\n }\n if (typeof value === \"string\") {\n if (value.length === 0) {\n throw new Error(`${field} cannot be empty`);\n }\n return decodeBase64(value);\n }\n throw new Error(`${field} is required`);\n}\n\nexport function maskForBits(bits: number): number {\n return bits === 0 ? 0 : (1 << bits) - 1;\n}","import { BASE64_URL_ALPHABET, BASE64_URL_MAP } from \"./constants\";\nimport { maskForBits } from \"./utils\";\n\nexport function encodeSignature(bytes: Uint8Array): string {\n if (bytes.length !== 64) {\n throw new Error(\"Expected 64-byte signature\");\n }\n let checksum = 0;\n let accumulator = 0;\n let bitsCollected = 0;\n const output: string[] = [\"t\", \"s\"];\n\n for (let i = 0; i < 63; i++) {\n const byte = bytes[i];\n checksum += byte;\n accumulator = ((accumulator << 8) | byte) >>> 0;\n bitsCollected += 8;\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output.push(BASE64_URL_ALPHABET[index]);\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n }\n\n const lastByte = bytes[63];\n checksum += lastByte;\n accumulator = ((accumulator << 8) | lastByte) >>> 0;\n bitsCollected += 8;\n accumulator = ((accumulator << 16) | (checksum & 0xffff)) >>> 0;\n bitsCollected += 16;\n\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output.push(BASE64_URL_ALPHABET[index]);\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n\n return output.join(\"\");\n}\n\nexport function decodeSignature(value: string): Uint8Array {\n if (value.length !== 90) {\n throw new Error(\"Invalid signature length\");\n }\n if (!value.startsWith(\"ts\")) {\n throw new Error('Signature must start with \"ts\"');\n }\n\n const output = new Uint8Array(64);\n let checksum = 0;\n let inIdx = 2;\n let remaining = 84;\n let outIdx = 0;\n\n while (remaining > 0) {\n const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error(\"Invalid signature encoding\");\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const byte1 = (triple >> 16) & 0xff;\n const byte2 = (triple >> 8) & 0xff;\n const byte3 = triple & 0xff;\n checksum += byte1;\n checksum += byte2;\n checksum += byte3;\n output[outIdx++] = byte1;\n output[outIdx++] = byte2;\n output[outIdx++] = byte3;\n inIdx += 4;\n remaining -= 4;\n }\n\n const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error(\"Invalid signature encoding\");\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const finalByte = (triple >> 16) & 0xff;\n checksum += finalByte;\n output[outIdx] = finalByte;\n\n const incomingChecksum = triple & 0xffff;\n checksum &= 0xffff;\n if (checksum !== incomingChecksum) {\n throw new Error(\"Signature checksum mismatch\");\n }\n\n return output;\n}","export function getWebCrypto(): Crypto {\n const cryptoObj = typeof globalThis !== 'undefined' ? (globalThis as { crypto?: Crypto }).crypto : undefined;\n\n if (cryptoObj && typeof cryptoObj.getRandomValues === 'function') {\n return cryptoObj;\n }\n\n throw new Error('Web Crypto API is unavailable. Provide a polyfill exposing globalThis.crypto.');\n}\n"],"mappings":"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","names":["a","b","c","d","triple","byte1","byte2","maskForBits","maskForBits","a","b","c","d","triple"]}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -2,6 +2,5 @@ export { decodeAddress, encodeAddress } from './address';
|
|
|
2
2
|
export { decodeBase64, hexToBytes, isHexString } from './encoding';
|
|
3
3
|
export { decodeSignature, encodeSignature } from './signature';
|
|
4
4
|
export { ensureBytes } from './utils';
|
|
5
|
-
export type { BytesLike, Pubkey } from './utils';
|
|
6
5
|
export { getWebCrypto } from './webcrypto';
|
|
7
6
|
|
package/src/utils.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { decodeBase64 } from "./encoding";
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
export type Pubkey = BytesLike;
|
|
5
|
-
|
|
6
|
-
export function ensureBytes(value: BytesLike | undefined, field: string): Uint8Array {
|
|
3
|
+
export function ensureBytes(value: Uint8Array | string | undefined, field: string): Uint8Array {
|
|
7
4
|
if (value instanceof Uint8Array) {
|
|
8
5
|
if (value.length === 0) {
|
|
9
6
|
throw new Error(`${field} cannot be empty`);
|