@layerzerolabs/common-encoding-utils 0.2.116 → 0.2.118

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 CHANGED
@@ -9,6 +9,11 @@ export declare function trim0x(str: string): string;
9
9
  export declare function ensure0xPrefixed(str: string): HexString;
10
10
  export declare function trimLeadingZeros(hexString: string): HexString;
11
11
  export declare function hexToAscii(hex: string): string;
12
+ /** Encode a UTF-8 string to its hex representation (no `0x` prefix). */
13
+ export declare function utf8ToHex(value: string): string;
14
+ /** Decode hex (with or without `0x`) back into a UTF-8 string. */
15
+ export declare function hexToUtf8(hex: string): string;
16
+ export declare function stringToUint8Array(str: string): Uint8Array;
12
17
  /**
13
18
  * Bytes from a `0x`-prefixed (or bare) hex string. The single canonical hex decoder.
14
19
  * Throws on non-hex and on odd-length input: a dangling half-byte is always a caller bug,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AAQvB,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjD;AAKD,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAoBnE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAS7D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAYlD;AAOD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAElE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAE7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAGrE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAMzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAMzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAErE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAOxD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAMvD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAErE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAqBD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,OAAO,SAAM,UAGnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AAQvB,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjD;AAKD,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAoBnE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAS7D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAI1D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAYlD;AAOD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAElE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAE7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAGrE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAMzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAMzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAErE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAOxD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAMvD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAErE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAqBD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,OAAO,SAAM,UAGnE"}
package/dist/index.js CHANGED
@@ -56,6 +56,20 @@ function hexToAscii(hex) {
56
56
  return Array.from(hexToBytes(hex), (b) => String.fromCharCode(b)).join("");
57
57
  }
58
58
  __name(hexToAscii, "hexToAscii");
59
+ function utf8ToHex(value) {
60
+ return Buffer.from(value, "utf-8").toString("hex");
61
+ }
62
+ __name(utf8ToHex, "utf8ToHex");
63
+ function hexToUtf8(hex) {
64
+ return Buffer.from(trim0x(hex), "hex").toString("utf-8");
65
+ }
66
+ __name(hexToUtf8, "hexToUtf8");
67
+ function stringToUint8Array(str) {
68
+ const value = str.replace(/^0x/i, "");
69
+ const len = value.length + 1 - (value.length + 1) % 2;
70
+ return Uint8Array.from(Buffer.from(value.padStart(len, "0"), "hex"));
71
+ }
72
+ __name(stringToUint8Array, "stringToUint8Array");
59
73
  function hexToBytes(hex) {
60
74
  if (!isHexString(hex)) {
61
75
  throw new Error(`invalid hex string (length ${hex.length})`);
@@ -183,6 +197,6 @@ function padAlignHex(str, byteSize = 8, padding = "0") {
183
197
  }
184
198
  __name(padAlignHex, "padAlignHex");
185
199
 
186
- export { base58ToBytes, base58ToHex, base64ToBytes, base64ToHex, bigIntToBytes, bigIntToHex, bytesToBase58, bytesToBase64, bytesToBigInt, bytesToHex, bytesToHexPrefixed, ensure0xPrefixed, hexToAscii, hexToBase58, hexToBase64, hexToBigInt, hexToBytes, hexToNumber, hexZeroPad, isBase58, isBase64, isHexString, numberToHex, padAlignHex, trim0x, trimLeadingZeros };
200
+ export { base58ToBytes, base58ToHex, base64ToBytes, base64ToHex, bigIntToBytes, bigIntToHex, bytesToBase58, bytesToBase64, bytesToBigInt, bytesToHex, bytesToHexPrefixed, ensure0xPrefixed, hexToAscii, hexToBase58, hexToBase64, hexToBigInt, hexToBytes, hexToNumber, hexToUtf8, hexZeroPad, isBase58, isBase64, isHexString, numberToHex, padAlignHex, stringToUint8Array, trim0x, trimLeadingZeros, utf8ToHex };
187
201
  //# sourceMappingURL=index.js.map
188
202
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["base58regex","base64regex","hexStringRegex","isBase58","address","test","isBase64","isHexString","value","length","match","trim0x","hexZeroPad","Number","isSafeInteger","Error","ensure0xPrefixed","padStart","str","replace","trimLeadingZeros","hexString","withoutPrefix","hexToAscii","hex","Array","from","hexToBytes","b","String","fromCharCode","join","body","Uint8Array","Buffer","asUint8Array","bytes","ArrayBuffer","bytesToHex","toString","bytesToHexPrefixed","hexToBigInt","BigInt","bytesToBigInt","bigIntToBytes","byteLength","bigIntToHex","undefined","numberToHex","hexToNumber","MAX_SAFE_INTEGER","bytesToBase64","base64ToBytes","base64","hexToBase64","base64ToHex","base64String","base58ToBytes","bs58","decode","bytesToBase58","encode","base58ToHex","hexToBase58","padString","left","padding","diff","result","pad","repeat","padLeft","calcByteLength","byteSize","remainder","padAlignHex","trimmed"],"mappings":"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","file":"index.js","sourcesContent":["import bs58 from 'bs58';\n\nimport type { HexString } from '@layerzerolabs/typescript-utils';\n\nexport * from './byte-codec';\nexport * from './uuid';\n\nconst base58regex = /^[A-HJ-NP-Za-km-z1-9]*$/;\nconst base64regex = /^[A-Za-z0-9+/]*={0,2}$/;\n// Lowercase `0x` prefix only: an uppercase `0X` is a manual-input error, not something any encoder\n// emits, so it's rejected rather than silently accepted. (The body charset matches either case.)\nconst hexStringRegex = /^(0x)?[0-9A-Fa-f]*$/;\n\nexport function isBase58(address: string): boolean {\n return base58regex.test(address);\n}\n\nexport function isBase64(address: string): boolean {\n return base64regex.test(address);\n}\n\n// Returns a plain boolean, not a `value is HexString` guard: the regex accepts unprefixed input\n// (e.g. 'deadbeef'), so a true result does not prove the `0x` prefix HexString requires. Callers\n// that need a HexString must run the value through ensure0xPrefixed.\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(hexStringRegex)) {\n return false;\n }\n // Measure the body, not the raw string: isHexString accepts unprefixed input, so a raw-length\n // check would assume a 2-char `0x` and reject e.g. isHexString('deadbeef', 4).\n if (length && trim0x(value).length !== 2 * length) {\n return false;\n }\n return true;\n}\n\nexport function hexZeroPad(value: string, length: number): HexString {\n if (!Number.isSafeInteger(length) || length < 0) {\n // A fractional width (e.g. 1.5) produces odd-length output that hexToBytes would reject,\n // so reject it here where bigIntToHex / bigIntToBytes / numberToHex all funnel through.\n throw new Error('byteLength must be a non-negative safe integer');\n }\n if (!isHexString(value)) {\n // Length only, never the value (can be sensitive).\n throw new Error(`invalid hex string (length ${value.length})`);\n }\n\n // Normalize first: isHexString accepts unprefixed input, for which the `2 * length + 2`\n // check below (which assumes a 2-char `0x`) would under-count by a byte and pass overflow.\n value = ensure0xPrefixed(value);\n\n if (value.length > 2 * length + 2) {\n throw new Error('value out of range');\n }\n\n return `0x${trim0x(value).padStart(2 * length, '0')}`;\n}\n\nexport function trim0x(str: string): string {\n return str.replace(/^0x/, '');\n}\n\nexport function ensure0xPrefixed(str: string): HexString {\n return `0x${trim0x(str)}`;\n}\n\nexport function trimLeadingZeros(hexString: string): HexString {\n // Remove the '0x' prefix\n let withoutPrefix = trim0x(hexString);\n\n // Trim leading zeros\n withoutPrefix = withoutPrefix.replace(/^0+/, '');\n\n // Add back the '0x' prefix\n return ensure0xPrefixed(withoutPrefix);\n}\n\nexport function hexToAscii(hex: string): string {\n return Array.from(hexToBytes(hex), (b) => String.fromCharCode(b)).join('');\n}\n\n/**\n * Bytes from a `0x`-prefixed (or bare) hex string. The single canonical hex decoder.\n * Throws on non-hex and on odd-length input: a dangling half-byte is always a caller bug,\n * never silently padded or truncated.\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (!isHexString(hex)) {\n // Length only, never the value (sometimes a private key).\n throw new Error(`invalid hex string (length ${hex.length})`);\n }\n const body = trim0x(hex);\n if (body.length % 2 !== 0) {\n throw new Error(`hex string has an odd length (${body.length})`);\n }\n // The isHexString guard above is load-bearing: Buffer.from(_, 'hex') silently drops non-hex\n // characters, so the pure-hex check is what makes this call safe.\n return Uint8Array.from(Buffer.from(body, 'hex'));\n}\n\n// Buffer.from copies a Uint8Array but reinterprets an ArrayBuffer's bytes; normalize to bytes first.\nfunction asUint8Array(bytes: Uint8Array | ArrayBuffer): Uint8Array {\n return bytes instanceof ArrayBuffer ? new Uint8Array(bytes) : bytes;\n}\n\nexport function bytesToHex(bytes: Uint8Array | ArrayBuffer): string {\n return Buffer.from(asUint8Array(bytes)).toString('hex');\n}\n\n/**\n * 0x prefixed hex string from Uint8Array\n * @param bytes\n */\nexport function bytesToHexPrefixed(bytes: Uint8Array | ArrayBuffer): HexString {\n return ensure0xPrefixed(bytesToHex(bytes));\n}\n\n/**\n * Big-endian `bigint` from a hex string. Empty hex (`''` / `'0x'`) is `0n`.\n */\nexport function hexToBigInt(hex: string): bigint {\n if (!isHexString(hex)) {\n throw new Error(`invalid hex string (length ${hex.length})`);\n }\n const body = trim0x(hex);\n return body === '' ? 0n : BigInt(`0x${body}`);\n}\n\n/**\n * Big-endian `bigint` from bytes. Empty input is `0n`.\n */\nexport function bytesToBigInt(bytes: Uint8Array | ArrayBuffer): bigint {\n const hex = bytesToHex(bytes);\n return hex === '' ? 0n : BigInt(`0x${hex}`);\n}\n\n/**\n * Big-endian bytes from a non-negative `bigint`, left-padded to `byteLength`. The inverse of\n * `bytesToBigInt`. Throws on a negative value or one too wide for `byteLength`.\n */\nexport function bigIntToBytes(value: bigint, byteLength: number): Uint8Array {\n return hexToBytes(bigIntToHex(value, byteLength));\n}\n\n/**\n * `0x`-hex from a non-negative `bigint`, optionally left-padded to `byteLength` bytes.\n * Without `byteLength` the output is minimal and may be odd-length (e.g. `0xabc`), which\n * `hexToBytes` rejects — use `bigIntToBytes(value, byteLength)` when you need bytes.\n */\nexport function bigIntToHex(value: bigint, byteLength?: number): HexString {\n if (value < 0n) {\n throw new Error('cannot hex-encode a negative value');\n }\n const hex = ensure0xPrefixed(value.toString(16));\n return byteLength === undefined ? hex : hexZeroPad(hex, byteLength);\n}\n\n/**\n * `0x`-hex from a non-negative integer, optionally left-padded to `byteLength` bytes.\n */\nexport function numberToHex(value: number, byteLength?: number): HexString {\n // isSafeInteger (not isInteger): reject unsafe ints rather than encode a rounded value.\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error('cannot hex-encode value: expected a non-negative safe integer');\n }\n return bigIntToHex(BigInt(value), byteLength);\n}\n\n/**\n * `number` from a hex string. Throws if the value exceeds `Number.MAX_SAFE_INTEGER`.\n */\nexport function hexToNumber(hex: string): number {\n const value = hexToBigInt(hex);\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error(`hex value exceeds Number.MAX_SAFE_INTEGER (length ${hex.length})`);\n }\n return Number(value);\n}\n\nexport function bytesToBase64(bytes: Uint8Array | ArrayBuffer): string {\n return Buffer.from(asUint8Array(bytes)).toString('base64');\n}\n\nexport function base64ToBytes(base64: string): Uint8Array {\n // isBase64 checks the alphabet/padding; the length must also be a multiple of 4, or Buffer.from\n // silently drops the trailing partial group. Length only, never the value.\n if (!isBase64(base64) || base64.length % 4 !== 0) {\n throw new Error(`invalid base64 string (length ${base64.length})`);\n }\n return Uint8Array.from(Buffer.from(base64, 'base64'));\n}\n\nexport function hexToBase64(hexString: string): string {\n // hexToBytes validates the input, so no separate hex check here.\n return bytesToBase64(hexToBytes(hexString));\n}\n\nexport function base64ToHex(base64String: string): HexString {\n return bytesToHexPrefixed(base64ToBytes(base64String));\n}\n\nexport function base58ToBytes(value: string): Uint8Array {\n if (!isBase58(value)) {\n // Length only, never the value (consistent with the hex decoders).\n throw new Error(`invalid base58 string (length ${value.length})`);\n }\n return bs58.decode(value);\n}\n\nexport function bytesToBase58(bytes: Uint8Array | ArrayBuffer): string {\n return bs58.encode(asUint8Array(bytes));\n}\n\nexport function base58ToHex(value: string): HexString {\n return bytesToHexPrefixed(base58ToBytes(value));\n}\n\nexport function hexToBase58(hex: string): string {\n return bytesToBase58(hexToBytes(hex));\n}\n\nfunction padString(str: string, length: number, left: boolean, padding = '0') {\n const diff = length - str.length;\n let result = str;\n if (diff > 0) {\n const pad = padding.repeat(diff);\n result = left ? pad + str : str + pad;\n }\n return result;\n}\n\nfunction padLeft(str: string, length: number, padding = '0') {\n return padString(str, length, true, padding);\n}\nfunction calcByteLength(str: string, byteSize = 8) {\n const { length } = str;\n const remainder = length % byteSize;\n return remainder ? ((length - remainder) / byteSize) * byteSize + byteSize : length;\n}\n\n/**\n * Pads a hex string on the left so its length is a multiple of `byteSize`.\n * Used to align hex strings.\n * @param str Hex string.\n * @param byteSize Group size to align to, in hex chars (default: 8).\n * @param padding Left-pad character (default: '0').\n * @returns Hex string left-padded to a multiple of `byteSize`.\n */\nexport function padAlignHex(str: string, byteSize = 8, padding = '0') {\n const trimmed = trim0x(str);\n return padLeft(trimmed, calcByteLength(trimmed, byteSize), padding);\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["base58regex","base64regex","hexStringRegex","isBase58","address","test","isBase64","isHexString","value","length","match","trim0x","hexZeroPad","Number","isSafeInteger","Error","ensure0xPrefixed","padStart","str","replace","trimLeadingZeros","hexString","withoutPrefix","hexToAscii","hex","Array","from","hexToBytes","b","String","fromCharCode","join","utf8ToHex","Buffer","toString","hexToUtf8","stringToUint8Array","len","Uint8Array","body","asUint8Array","bytes","ArrayBuffer","bytesToHex","bytesToHexPrefixed","hexToBigInt","BigInt","bytesToBigInt","bigIntToBytes","byteLength","bigIntToHex","undefined","numberToHex","hexToNumber","MAX_SAFE_INTEGER","bytesToBase64","base64ToBytes","base64","hexToBase64","base64ToHex","base64String","base58ToBytes","bs58","decode","bytesToBase58","encode","base58ToHex","hexToBase58","padString","left","padding","diff","result","pad","repeat","padLeft","calcByteLength","byteSize","remainder","padAlignHex","trimmed"],"mappings":"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","file":"index.js","sourcesContent":["import bs58 from 'bs58';\n\nimport type { HexString } from '@layerzerolabs/typescript-utils';\n\nexport * from './byte-codec';\nexport * from './uuid';\n\nconst base58regex = /^[A-HJ-NP-Za-km-z1-9]*$/;\nconst base64regex = /^[A-Za-z0-9+/]*={0,2}$/;\n// Lowercase `0x` prefix only: an uppercase `0X` is a manual-input error, not something any encoder\n// emits, so it's rejected rather than silently accepted. (The body charset matches either case.)\nconst hexStringRegex = /^(0x)?[0-9A-Fa-f]*$/;\n\nexport function isBase58(address: string): boolean {\n return base58regex.test(address);\n}\n\nexport function isBase64(address: string): boolean {\n return base64regex.test(address);\n}\n\n// Returns a plain boolean, not a `value is HexString` guard: the regex accepts unprefixed input\n// (e.g. 'deadbeef'), so a true result does not prove the `0x` prefix HexString requires. Callers\n// that need a HexString must run the value through ensure0xPrefixed.\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(hexStringRegex)) {\n return false;\n }\n // Measure the body, not the raw string: isHexString accepts unprefixed input, so a raw-length\n // check would assume a 2-char `0x` and reject e.g. isHexString('deadbeef', 4).\n if (length && trim0x(value).length !== 2 * length) {\n return false;\n }\n return true;\n}\n\nexport function hexZeroPad(value: string, length: number): HexString {\n if (!Number.isSafeInteger(length) || length < 0) {\n // A fractional width (e.g. 1.5) produces odd-length output that hexToBytes would reject,\n // so reject it here where bigIntToHex / bigIntToBytes / numberToHex all funnel through.\n throw new Error('byteLength must be a non-negative safe integer');\n }\n if (!isHexString(value)) {\n // Length only, never the value (can be sensitive).\n throw new Error(`invalid hex string (length ${value.length})`);\n }\n\n // Normalize first: isHexString accepts unprefixed input, for which the `2 * length + 2`\n // check below (which assumes a 2-char `0x`) would under-count by a byte and pass overflow.\n value = ensure0xPrefixed(value);\n\n if (value.length > 2 * length + 2) {\n throw new Error('value out of range');\n }\n\n return `0x${trim0x(value).padStart(2 * length, '0')}`;\n}\n\nexport function trim0x(str: string): string {\n return str.replace(/^0x/, '');\n}\n\nexport function ensure0xPrefixed(str: string): HexString {\n return `0x${trim0x(str)}`;\n}\n\nexport function trimLeadingZeros(hexString: string): HexString {\n // Remove the '0x' prefix\n let withoutPrefix = trim0x(hexString);\n\n // Trim leading zeros\n withoutPrefix = withoutPrefix.replace(/^0+/, '');\n\n // Add back the '0x' prefix\n return ensure0xPrefixed(withoutPrefix);\n}\n\nexport function hexToAscii(hex: string): string {\n return Array.from(hexToBytes(hex), (b) => String.fromCharCode(b)).join('');\n}\n\n/** Encode a UTF-8 string to its hex representation (no `0x` prefix). */\nexport function utf8ToHex(value: string): string {\n return Buffer.from(value, 'utf-8').toString('hex');\n}\n\n/** Decode hex (with or without `0x`) back into a UTF-8 string. */\nexport function hexToUtf8(hex: string): string {\n return Buffer.from(trim0x(hex), 'hex').toString('utf-8');\n}\n\nexport function stringToUint8Array(str: string): Uint8Array {\n const value = str.replace(/^0x/i, '');\n const len = value.length + 1 - ((value.length + 1) % 2);\n return Uint8Array.from(Buffer.from(value.padStart(len, '0'), 'hex'));\n}\n\n/**\n * Bytes from a `0x`-prefixed (or bare) hex string. The single canonical hex decoder.\n * Throws on non-hex and on odd-length input: a dangling half-byte is always a caller bug,\n * never silently padded or truncated.\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (!isHexString(hex)) {\n // Length only, never the value (sometimes a private key).\n throw new Error(`invalid hex string (length ${hex.length})`);\n }\n const body = trim0x(hex);\n if (body.length % 2 !== 0) {\n throw new Error(`hex string has an odd length (${body.length})`);\n }\n // The isHexString guard above is load-bearing: Buffer.from(_, 'hex') silently drops non-hex\n // characters, so the pure-hex check is what makes this call safe.\n return Uint8Array.from(Buffer.from(body, 'hex'));\n}\n\n// Buffer.from copies a Uint8Array but reinterprets an ArrayBuffer's bytes; normalize to bytes first.\nfunction asUint8Array(bytes: Uint8Array | ArrayBuffer): Uint8Array {\n return bytes instanceof ArrayBuffer ? new Uint8Array(bytes) : bytes;\n}\n\nexport function bytesToHex(bytes: Uint8Array | ArrayBuffer): string {\n return Buffer.from(asUint8Array(bytes)).toString('hex');\n}\n\n/**\n * 0x prefixed hex string from Uint8Array\n * @param bytes\n */\nexport function bytesToHexPrefixed(bytes: Uint8Array | ArrayBuffer): HexString {\n return ensure0xPrefixed(bytesToHex(bytes));\n}\n\n/**\n * Big-endian `bigint` from a hex string. Empty hex (`''` / `'0x'`) is `0n`.\n */\nexport function hexToBigInt(hex: string): bigint {\n if (!isHexString(hex)) {\n throw new Error(`invalid hex string (length ${hex.length})`);\n }\n const body = trim0x(hex);\n return body === '' ? 0n : BigInt(`0x${body}`);\n}\n\n/**\n * Big-endian `bigint` from bytes. Empty input is `0n`.\n */\nexport function bytesToBigInt(bytes: Uint8Array | ArrayBuffer): bigint {\n const hex = bytesToHex(bytes);\n return hex === '' ? 0n : BigInt(`0x${hex}`);\n}\n\n/**\n * Big-endian bytes from a non-negative `bigint`, left-padded to `byteLength`. The inverse of\n * `bytesToBigInt`. Throws on a negative value or one too wide for `byteLength`.\n */\nexport function bigIntToBytes(value: bigint, byteLength: number): Uint8Array {\n return hexToBytes(bigIntToHex(value, byteLength));\n}\n\n/**\n * `0x`-hex from a non-negative `bigint`, optionally left-padded to `byteLength` bytes.\n * Without `byteLength` the output is minimal and may be odd-length (e.g. `0xabc`), which\n * `hexToBytes` rejects — use `bigIntToBytes(value, byteLength)` when you need bytes.\n */\nexport function bigIntToHex(value: bigint, byteLength?: number): HexString {\n if (value < 0n) {\n throw new Error('cannot hex-encode a negative value');\n }\n const hex = ensure0xPrefixed(value.toString(16));\n return byteLength === undefined ? hex : hexZeroPad(hex, byteLength);\n}\n\n/**\n * `0x`-hex from a non-negative integer, optionally left-padded to `byteLength` bytes.\n */\nexport function numberToHex(value: number, byteLength?: number): HexString {\n // isSafeInteger (not isInteger): reject unsafe ints rather than encode a rounded value.\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error('cannot hex-encode value: expected a non-negative safe integer');\n }\n return bigIntToHex(BigInt(value), byteLength);\n}\n\n/**\n * `number` from a hex string. Throws if the value exceeds `Number.MAX_SAFE_INTEGER`.\n */\nexport function hexToNumber(hex: string): number {\n const value = hexToBigInt(hex);\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error(`hex value exceeds Number.MAX_SAFE_INTEGER (length ${hex.length})`);\n }\n return Number(value);\n}\n\nexport function bytesToBase64(bytes: Uint8Array | ArrayBuffer): string {\n return Buffer.from(asUint8Array(bytes)).toString('base64');\n}\n\nexport function base64ToBytes(base64: string): Uint8Array {\n // isBase64 checks the alphabet/padding; the length must also be a multiple of 4, or Buffer.from\n // silently drops the trailing partial group. Length only, never the value.\n if (!isBase64(base64) || base64.length % 4 !== 0) {\n throw new Error(`invalid base64 string (length ${base64.length})`);\n }\n return Uint8Array.from(Buffer.from(base64, 'base64'));\n}\n\nexport function hexToBase64(hexString: string): string {\n // hexToBytes validates the input, so no separate hex check here.\n return bytesToBase64(hexToBytes(hexString));\n}\n\nexport function base64ToHex(base64String: string): HexString {\n return bytesToHexPrefixed(base64ToBytes(base64String));\n}\n\nexport function base58ToBytes(value: string): Uint8Array {\n if (!isBase58(value)) {\n // Length only, never the value (consistent with the hex decoders).\n throw new Error(`invalid base58 string (length ${value.length})`);\n }\n return bs58.decode(value);\n}\n\nexport function bytesToBase58(bytes: Uint8Array | ArrayBuffer): string {\n return bs58.encode(asUint8Array(bytes));\n}\n\nexport function base58ToHex(value: string): HexString {\n return bytesToHexPrefixed(base58ToBytes(value));\n}\n\nexport function hexToBase58(hex: string): string {\n return bytesToBase58(hexToBytes(hex));\n}\n\nfunction padString(str: string, length: number, left: boolean, padding = '0') {\n const diff = length - str.length;\n let result = str;\n if (diff > 0) {\n const pad = padding.repeat(diff);\n result = left ? pad + str : str + pad;\n }\n return result;\n}\n\nfunction padLeft(str: string, length: number, padding = '0') {\n return padString(str, length, true, padding);\n}\nfunction calcByteLength(str: string, byteSize = 8) {\n const { length } = str;\n const remainder = length % byteSize;\n return remainder ? ((length - remainder) / byteSize) * byteSize + byteSize : length;\n}\n\n/**\n * Pads a hex string on the left so its length is a multiple of `byteSize`.\n * Used to align hex strings.\n * @param str Hex string.\n * @param byteSize Group size to align to, in hex chars (default: 8).\n * @param padding Left-pad character (default: '0').\n * @returns Hex string left-padded to a multiple of `byteSize`.\n */\nexport function padAlignHex(str: string, byteSize = 8, padding = '0') {\n const trimmed = trim0x(str);\n return padLeft(trimmed, calcByteLength(trimmed, byteSize), padding);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/common-encoding-utils",
3
- "version": "0.2.116",
3
+ "version": "0.2.118",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -17,13 +17,13 @@
17
17
  ],
18
18
  "dependencies": {
19
19
  "bs58": "^5.0.0",
20
- "@layerzerolabs/typescript-utils": "0.2.116"
20
+ "@layerzerolabs/typescript-utils": "0.2.118"
21
21
  },
22
22
  "devDependencies": {
23
23
  "tsup": "^8.4.0",
24
24
  "vitest": "^3.2.6",
25
- "@layerzerolabs/tsup-configuration": "0.2.116",
26
- "@layerzerolabs/typescript-configuration": "0.2.116"
25
+ "@layerzerolabs/typescript-configuration": "0.2.118",
26
+ "@layerzerolabs/tsup-configuration": "0.2.118"
27
27
  },
28
28
  "publishConfig": {
29
29
  "access": "public",