@layerzerolabs/chain-utils 0.0.49 → 0.0.50
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/.turbo/turbo-build.log +23 -23
- package/.turbo/turbo-test.log +7 -4
- package/dist/{IVFVZYWG.cjs → 3DUSMLGX.cjs} +14 -2
- package/dist/3DUSMLGX.cjs.map +1 -0
- package/dist/{IUWKW475.js → WE3VE6AV.js} +14 -2
- package/dist/WE3VE6AV.js.map +1 -0
- package/dist/addressParser.cjs +6 -6
- package/dist/addressParser.d.ts +11 -3
- package/dist/addressParser.d.ts.map +1 -1
- package/dist/addressParser.js +1 -1
- package/dist/addressParser.test.cjs +16 -16
- package/dist/addressParser.test.cjs.map +1 -1
- package/dist/addressParser.test.js +8 -8
- package/dist/addressParser.test.js.map +1 -1
- package/dist/index.cjs +6 -6
- package/dist/index.js +1 -1
- package/package.json +11 -11
- package/src/addressParser.ts +28 -2
- package/dist/IUWKW475.js.map +0 -1
- package/dist/IVFVZYWG.cjs.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -11,37 +11,37 @@
|
|
|
11
11
|
[34mCJS[39m Build start
|
|
12
12
|
[34mESM[39m Build start
|
|
13
13
|
Entry module "dist/7BDQVICT.cjs" is using named and default exports together. Consumers of your bundle will have to use `chunk.default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
|
|
14
|
-
[
|
|
14
|
+
[32mESM[39m [1mdist/addressParser.js [22m[32m228.00 B[39m
|
|
15
|
+
[32mESM[39m [1mdist/index.js [22m[32m319.00 B[39m
|
|
16
|
+
[32mESM[39m [1mdist/FJIAQ3QL.js [22m[32m419.00 B[39m
|
|
17
|
+
[32mESM[39m [1mdist/utils.js [22m[32m139.00 B[39m
|
|
18
|
+
[32mESM[39m [1mdist/WE3VE6AV.js [22m[32m8.76 KB[39m
|
|
19
|
+
[32mESM[39m [1mdist/YXE7PREU.js [22m[32m2.36 KB[39m
|
|
20
|
+
[32mESM[39m [1mdist/PBOTNOCJ.js [22m[32m41.68 KB[39m
|
|
21
|
+
[32mESM[39m [1mdist/addressParser.test.js [22m[32m641.45 KB[39m
|
|
22
|
+
[32mESM[39m [1mdist/addressParser.js.map [22m[32m77.00 B[39m
|
|
23
|
+
[32mESM[39m [1mdist/index.js.map [22m[32m187.00 B[39m
|
|
24
|
+
[32mESM[39m [1mdist/FJIAQ3QL.js.map [22m[32m625.00 B[39m
|
|
25
|
+
[32mESM[39m [1mdist/utils.js.map [22m[32m69.00 B[39m
|
|
26
|
+
[32mESM[39m [1mdist/WE3VE6AV.js.map [22m[32m19.42 KB[39m
|
|
27
|
+
[32mESM[39m [1mdist/YXE7PREU.js.map [22m[32m653.00 B[39m
|
|
28
|
+
[32mESM[39m [1mdist/PBOTNOCJ.js.map [22m[32m99.19 KB[39m
|
|
29
|
+
[32mESM[39m [1mdist/addressParser.test.js.map [22m[32m1.59 MB[39m
|
|
30
|
+
[32mESM[39m ⚡️ Build success in 3891ms
|
|
31
|
+
[32mCJS[39m [1mdist/addressParser.cjs [22m[32m870.00 B[39m
|
|
15
32
|
[32mCJS[39m [1mdist/index.cjs [22m[32m1.07 KB[39m
|
|
16
|
-
[32mCJS[39m [1mdist/IVFVZYWG.cjs [22m[32m9.20 KB[39m
|
|
17
33
|
[32mCJS[39m [1mdist/utils.cjs [22m[32m294.00 B[39m
|
|
18
34
|
[32mCJS[39m [1mdist/NOJYY7DN.cjs [22m[32m466.00 B[39m
|
|
19
|
-
[32mCJS[39m [1mdist/
|
|
35
|
+
[32mCJS[39m [1mdist/3DUSMLGX.cjs [22m[32m9.83 KB[39m
|
|
20
36
|
[32mCJS[39m [1mdist/J6P5K7DC.cjs [22m[32m2.47 KB[39m
|
|
37
|
+
[32mCJS[39m [1mdist/7BDQVICT.cjs [22m[32m42.04 KB[39m
|
|
21
38
|
[32mCJS[39m [1mdist/addressParser.test.cjs [22m[32m655.13 KB[39m
|
|
22
39
|
[32mCJS[39m [1mdist/addressParser.cjs.map [22m[32m78.00 B[39m
|
|
23
40
|
[32mCJS[39m [1mdist/index.cjs.map [22m[32m208.00 B[39m
|
|
24
|
-
[32mCJS[39m [1mdist/IVFVZYWG.cjs.map [22m[32m17.94 KB[39m
|
|
25
|
-
[32mCJS[39m [1mdist/utils.cjs.map [22m[32m70.00 B[39m
|
|
26
41
|
[32mCJS[39m [1mdist/NOJYY7DN.cjs.map [22m[32m658.00 B[39m
|
|
42
|
+
[32mCJS[39m [1mdist/utils.cjs.map [22m[32m70.00 B[39m
|
|
43
|
+
[32mCJS[39m [1mdist/3DUSMLGX.cjs.map [22m[32m19.48 KB[39m
|
|
27
44
|
[32mCJS[39m [1mdist/J6P5K7DC.cjs.map [22m[32m845.00 B[39m
|
|
28
45
|
[32mCJS[39m [1mdist/7BDQVICT.cjs.map [22m[32m99.22 KB[39m
|
|
29
46
|
[32mCJS[39m [1mdist/addressParser.test.cjs.map [22m[32m1.59 MB[39m
|
|
30
|
-
[32mCJS[39m ⚡️ Build success in
|
|
31
|
-
[32mESM[39m [1mdist/addressParser.js [22m[32m228.00 B[39m
|
|
32
|
-
[32mESM[39m [1mdist/index.js [22m[32m319.00 B[39m
|
|
33
|
-
[32mESM[39m [1mdist/utils.js [22m[32m139.00 B[39m
|
|
34
|
-
[32mESM[39m [1mdist/FJIAQ3QL.js [22m[32m419.00 B[39m
|
|
35
|
-
[32mESM[39m [1mdist/IUWKW475.js [22m[32m8.19 KB[39m
|
|
36
|
-
[32mESM[39m [1mdist/YXE7PREU.js [22m[32m2.36 KB[39m
|
|
37
|
-
[32mESM[39m [1mdist/PBOTNOCJ.js [22m[32m41.68 KB[39m
|
|
38
|
-
[32mESM[39m [1mdist/addressParser.test.js [22m[32m641.46 KB[39m
|
|
39
|
-
[32mESM[39m [1mdist/index.js.map [22m[32m187.00 B[39m
|
|
40
|
-
[32mESM[39m [1mdist/utils.js.map [22m[32m69.00 B[39m
|
|
41
|
-
[32mESM[39m [1mdist/addressParser.js.map [22m[32m77.00 B[39m
|
|
42
|
-
[32mESM[39m [1mdist/FJIAQ3QL.js.map [22m[32m625.00 B[39m
|
|
43
|
-
[32mESM[39m [1mdist/YXE7PREU.js.map [22m[32m653.00 B[39m
|
|
44
|
-
[32mESM[39m [1mdist/IUWKW475.js.map [22m[32m17.87 KB[39m
|
|
45
|
-
[32mESM[39m [1mdist/PBOTNOCJ.js.map [22m[32m99.19 KB[39m
|
|
46
|
-
[32mESM[39m [1mdist/addressParser.test.js.map [22m[32m1.59 MB[39m
|
|
47
|
-
[32mESM[39m ⚡️ Build success in 3407ms
|
|
47
|
+
[32mCJS[39m ⚡️ Build success in 3900ms
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
> @layerzerolabs/chain-utils@0.0.0 test /home/runner/work/monorepo-internal/monorepo-internal/packages/chain-abstractions/chain-utils
|
|
3
|
-
> vitest --run --pass-with-no-tests
|
|
3
|
+
> vitest --run --pass-with-no-tests --typecheck
|
|
4
4
|
|
|
5
|
+
[33mTesting types with tsc and vue-tsc is an experimental feature.
|
|
6
|
+
Breaking changes might not follow SemVer, please pin Vitest's version when using it.[39m
|
|
5
7
|
|
|
6
8
|
[1m[46m RUN [49m[22m [36mv3.2.3 [39m[90m/home/runner/work/monorepo-internal/monorepo-internal/packages/chain-abstractions/chain-utils[39m
|
|
7
9
|
|
|
@@ -11,10 +13,11 @@
|
|
|
11
13
|
error: [32m'The address invalid-ton-address cannot be decoded as TON, hex, or base58'[39m
|
|
12
14
|
}
|
|
13
15
|
|
|
14
|
-
[32m✓[39m src/addressParser.test.ts [2m([22m[2m26 tests[22m[2m)[22m[
|
|
16
|
+
[32m✓[39m src/addressParser.test.ts [2m([22m[2m26 tests[22m[2m)[22m[32m 149[2mms[22m[39m
|
|
15
17
|
|
|
16
18
|
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
17
19
|
[2m Tests [22m [1m[32m26 passed[39m[22m[90m (26)[39m
|
|
18
|
-
[
|
|
19
|
-
[2m
|
|
20
|
+
[2mType Errors [22m [2mno errors[22m
|
|
21
|
+
[2m Start at [22m 19:05:14
|
|
22
|
+
[2m Duration [22m 1.52s[2m (transform 391ms, setup 0ms, collect 1.02s, tests 149ms, environment 0ms, prepare 80ms)[22m
|
|
20
23
|
|
|
@@ -69,6 +69,9 @@ var tonAddressParser = /* @__PURE__ */ J6P5K7DC_cjs.__name((chainName) => {
|
|
|
69
69
|
normalizedToNativeString: /* @__PURE__ */ J6P5K7DC_cjs.__name((address) => {
|
|
70
70
|
return addressParser(chainName).normalizedToNative(address).nativeAddress;
|
|
71
71
|
}, "normalizedToNativeString"),
|
|
72
|
+
normalizedToUnpaddedString: /* @__PURE__ */ J6P5K7DC_cjs.__name((address) => {
|
|
73
|
+
return String(address);
|
|
74
|
+
}, "normalizedToUnpaddedString"),
|
|
72
75
|
nativeToNormalized: /* @__PURE__ */ J6P5K7DC_cjs.__name((nativeAddress) => {
|
|
73
76
|
const address = getAddress(nativeAddress);
|
|
74
77
|
validateNative(address, chainName);
|
|
@@ -92,6 +95,9 @@ var tonAddressParser = /* @__PURE__ */ J6P5K7DC_cjs.__name((chainName) => {
|
|
|
92
95
|
parseNativeToHex: /* @__PURE__ */ J6P5K7DC_cjs.__name((nativeAddress) => {
|
|
93
96
|
return addressParser(chainName).parseNative(nativeAddress);
|
|
94
97
|
}, "parseNativeToHex"),
|
|
98
|
+
tonToNormalized: /* @__PURE__ */ J6P5K7DC_cjs.__name((tonAddress) => {
|
|
99
|
+
return addressParser(chainName).parseNative(commonTon.addressToHex(tonAddress));
|
|
100
|
+
}, "tonToNormalized"),
|
|
95
101
|
encoding: "ton"
|
|
96
102
|
};
|
|
97
103
|
}, "tonAddressParser");
|
|
@@ -109,6 +115,9 @@ var base58AddressParser = /* @__PURE__ */ J6P5K7DC_cjs.__name((chainName) => {
|
|
|
109
115
|
normalizedToNativeString: /* @__PURE__ */ J6P5K7DC_cjs.__name((address) => {
|
|
110
116
|
return addressParser(chainName).normalizedToNative(address).nativeAddress;
|
|
111
117
|
}, "normalizedToNativeString"),
|
|
118
|
+
normalizedToUnpaddedString: /* @__PURE__ */ J6P5K7DC_cjs.__name((address) => {
|
|
119
|
+
return String(address);
|
|
120
|
+
}, "normalizedToUnpaddedString"),
|
|
112
121
|
nativeToNormalized: /* @__PURE__ */ J6P5K7DC_cjs.__name((nativeAddress) => {
|
|
113
122
|
const address = getAddress(nativeAddress);
|
|
114
123
|
validateNative(address, chainName);
|
|
@@ -154,6 +163,9 @@ var hexAddressParser = /* @__PURE__ */ J6P5K7DC_cjs.__name((chainName) => {
|
|
|
154
163
|
normalizedToNativeString: /* @__PURE__ */ J6P5K7DC_cjs.__name((address) => {
|
|
155
164
|
return commonUtils.hexZeroPad(address, nativeByteLength);
|
|
156
165
|
}, "normalizedToNativeString"),
|
|
166
|
+
normalizedToUnpaddedString: /* @__PURE__ */ J6P5K7DC_cjs.__name((address) => {
|
|
167
|
+
return String(address);
|
|
168
|
+
}, "normalizedToUnpaddedString"),
|
|
157
169
|
nativeToNormalized: /* @__PURE__ */ J6P5K7DC_cjs.__name((nativeAddress) => {
|
|
158
170
|
const address = getAddress(nativeAddress);
|
|
159
171
|
validateNative(address, chainName);
|
|
@@ -193,5 +205,5 @@ exports.addressParser = addressParser;
|
|
|
193
205
|
exports.base58AddressParser = base58AddressParser;
|
|
194
206
|
exports.hexAddressParser = hexAddressParser;
|
|
195
207
|
exports.tonAddressParser = tonAddressParser;
|
|
196
|
-
//# sourceMappingURL=
|
|
197
|
-
//# sourceMappingURL=
|
|
208
|
+
//# sourceMappingURL=3DUSMLGX.cjs.map
|
|
209
|
+
//# sourceMappingURL=3DUSMLGX.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/addressParser.ts"],"names":["init_cjs_shims","AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","hexAddressParser","normalizedToBytes32Hex","address","hexZeroPad","normalizedToBytes32","hexToBytes","normalizedToBigInt","BigInt","parseNative","nativeAddress","validateNative","__name","expectedChainName","Error","getAddress","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","toString","normalizedToNativeString","normalizedToUnpaddedString","String","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","nativeToBytes","nativeToBytes32","parseNativeToHex","tonToNormalized","tonAddress","encoding","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","isHexString","TRON","startsWith","slice"],"mappings":"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","file":"3DUSMLGX.cjs","sourcesContent":["import type { Address } from '@ton/ton';\nimport bs58 from 'bs58';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/common-ton';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-utils';\nimport type {\n Base58String,\n ChainsByEncoding,\n InferChainTypeForChainName,\n NativeAddress,\n ResolvedEncodingForChainName,\n TonString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\ntype NativeOrString<T extends ChainName | `${ChainName}`> =\n | ChainNativeAddress<T>\n | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\n };\n};\n\nexport type InferExtensionByChainName<T extends ChainName | `${ChainName}`> =\n InferChainTypeForChainName<T> extends keyof ExtensionByChainType\n ? ExtensionByChainType[InferChainTypeForChainName<T>]\n : {};\n\nexport type AddressParser<T extends ChainName | `${ChainName}`> = {\n normalizedToNative: (address: NormalizedHexString) => ChainNativeAddress<T>;\n normalizedToNativeString: (address: NormalizedHexString) => ResolvedEncodingForChainName<T>;\n normalizedToUnpaddedString: (address: NormalizedHexString) => HexString;\n nativeToNormalized: (nativeAddress: NativeOrString<T>) => NormalizedHexString;\n nativeToBytes: (nativeAddress: NativeOrString<T>) => Uint8Array;\n nativeToBytes32Hex: (nativeAddress: NativeOrString<T>) => HexString;\n nativeToBytes32: (nativeAddress: NativeOrString<T>) => Uint8Array;\n validateNative: (nativeAddress: string) => nativeAddress is ResolvedEncodingForChainName<T>;\n /**\n * Parse a native address to a string if it is valid.\n * Throws an error if the native address is invalid.\n * @param nativeAddress - The native address to parse.\n * @returns The parsed native address.\n */\n parseNative: (nativeAddress: string) => NormalizedHexString;\n parseNativeToHex: (nativeAddress: string) => HexString;\n encoding: AddressEncoding;\n} & InferExtensionByChainName<T>;\n\nexport function addressParser<T extends ChainName | `${ChainName}`>(\n chainName: T,\n): AddressParser<T> {\n // FIXME: figure out a way to not have to cast here\n if (chainName === ChainName.TON)\n return tonAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.SOLANA)\n return base58AddressParser(chainName) as unknown as AddressParser<T>;\n return hexAddressParser(chainName) as unknown as AddressParser<T>;\n}\n\nexport namespace addressParser {\n export const normalizedToBytes32Hex = (address: NormalizedHexString) => {\n return hexZeroPad(address as unknown as HexString, 32);\n };\n export const normalizedToBytes32 = (address: NormalizedHexString) => {\n return hexToBytes(normalizedToBytes32Hex(address));\n };\n export const normalizedToBigInt = (address: NormalizedHexString) => {\n return BigInt(address as unknown as HexString);\n };\n export const parseNative = (nativeAddress: NativeAddress) => {\n return addressParser(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);\n };\n}\n\nconst validateNative = <T extends ChainName | `${ChainName}`>(\n nativeAddress: string,\n expectedChainName: T,\n): nativeAddress is ResolvedEncodingForChainName<T> => {\n if (!addressParser(expectedChainName).validateNative(nativeAddress)) {\n throw new Error(\n 'Cannot convert: ' +\n nativeAddress +\n ' - The native address does not match the expected format for the chain: ' +\n expectedChainName,\n );\n }\n return true;\n};\n\nconst getAddress = <T extends ChainName | `${ChainName}`>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\n\nexport const tonAddressParser: (\n chainName: ChainsByEncoding[TonString],\n) => AddressParser<ChainsByEncoding[TonString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is TonString => {\n try {\n parseTonAddress(nativeAddress);\n return true;\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n const numericalValue = addressParser.normalizedToBigInt(address);\n return {\n nativeAddress: bigintToAddress(numericalValue).toString() as TonString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n normalizedToUnpaddedString: (address) => {\n return String(address) as HexString;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return normalizeHex(addressToHex(address));\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n tonToNormalized: (tonAddress) => {\n return addressParser(chainName).parseNative(addressToHex(tonAddress));\n },\n encoding: AddressEncoding.TON,\n };\n};\n\nexport const base58AddressParser = (\n chainName: ChainsByEncoding[Base58String],\n): AddressParser<ChainsByEncoding[Base58String]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is Base58String => {\n return isBase58(nativeAddress);\n },\n normalizedToNative: (address) => {\n return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n normalizedToUnpaddedString: (address) => {\n return String(address) as HexString;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\nexport const hexAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName as ChainName);\n\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n return isHexString(nativeAddress);\n },\n normalizedToNative: (address) => {\n return {\n // we could have EIP-55 here, but omitted for now\n nativeAddress: hexZeroPad(address as unknown as HexString, nativeByteLength),\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return hexZeroPad(address as unknown as HexString, nativeByteLength);\n },\n normalizedToUnpaddedString: (address) => {\n return String(address) as HexString;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return normalizeHex(address);\n },\n nativeToBytes: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return hexToBytes(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return hexZeroPad(address, 32);\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n // Specific case to make tron a little less flaky, handle the 41 prefix\n if (chainName === ChainName.TRON) {\n nativeAddress = nativeAddress.startsWith('41')\n ? `0x${nativeAddress.slice(2)}`\n : nativeAddress;\n }\n\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.HEX,\n };\n};\n"]}
|
|
@@ -63,6 +63,9 @@ var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
63
63
|
normalizedToNativeString: /* @__PURE__ */ __name((address) => {
|
|
64
64
|
return addressParser(chainName).normalizedToNative(address).nativeAddress;
|
|
65
65
|
}, "normalizedToNativeString"),
|
|
66
|
+
normalizedToUnpaddedString: /* @__PURE__ */ __name((address) => {
|
|
67
|
+
return String(address);
|
|
68
|
+
}, "normalizedToUnpaddedString"),
|
|
66
69
|
nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
|
|
67
70
|
const address = getAddress(nativeAddress);
|
|
68
71
|
validateNative(address, chainName);
|
|
@@ -86,6 +89,9 @@ var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
86
89
|
parseNativeToHex: /* @__PURE__ */ __name((nativeAddress) => {
|
|
87
90
|
return addressParser(chainName).parseNative(nativeAddress);
|
|
88
91
|
}, "parseNativeToHex"),
|
|
92
|
+
tonToNormalized: /* @__PURE__ */ __name((tonAddress) => {
|
|
93
|
+
return addressParser(chainName).parseNative(addressToHex(tonAddress));
|
|
94
|
+
}, "tonToNormalized"),
|
|
89
95
|
encoding: "ton"
|
|
90
96
|
};
|
|
91
97
|
}, "tonAddressParser");
|
|
@@ -103,6 +109,9 @@ var base58AddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
103
109
|
normalizedToNativeString: /* @__PURE__ */ __name((address) => {
|
|
104
110
|
return addressParser(chainName).normalizedToNative(address).nativeAddress;
|
|
105
111
|
}, "normalizedToNativeString"),
|
|
112
|
+
normalizedToUnpaddedString: /* @__PURE__ */ __name((address) => {
|
|
113
|
+
return String(address);
|
|
114
|
+
}, "normalizedToUnpaddedString"),
|
|
106
115
|
nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
|
|
107
116
|
const address = getAddress(nativeAddress);
|
|
108
117
|
validateNative(address, chainName);
|
|
@@ -148,6 +157,9 @@ var hexAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
148
157
|
normalizedToNativeString: /* @__PURE__ */ __name((address) => {
|
|
149
158
|
return hexZeroPad(address, nativeByteLength);
|
|
150
159
|
}, "normalizedToNativeString"),
|
|
160
|
+
normalizedToUnpaddedString: /* @__PURE__ */ __name((address) => {
|
|
161
|
+
return String(address);
|
|
162
|
+
}, "normalizedToUnpaddedString"),
|
|
151
163
|
nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
|
|
152
164
|
const address = getAddress(nativeAddress);
|
|
153
165
|
validateNative(address, chainName);
|
|
@@ -183,5 +195,5 @@ var hexAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
183
195
|
}, "hexAddressParser");
|
|
184
196
|
|
|
185
197
|
export { AddressEncoding, addressParser, base58AddressParser, hexAddressParser, tonAddressParser };
|
|
186
|
-
//# sourceMappingURL=
|
|
187
|
-
//# sourceMappingURL=
|
|
198
|
+
//# sourceMappingURL=WE3VE6AV.js.map
|
|
199
|
+
//# sourceMappingURL=WE3VE6AV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/addressParser.ts"],"names":["AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","hexAddressParser","normalizedToBytes32Hex","address","hexZeroPad","normalizedToBytes32","hexToBytes","normalizedToBigInt","BigInt","parseNative","nativeAddress","validateNative","expectedChainName","Error","getAddress","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","toString","normalizedToNativeString","normalizedToUnpaddedString","String","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","nativeToBytes","nativeToBytes32","parseNativeToHex","tonToNormalized","tonAddress","encoding","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","isHexString","TRON","startsWith","slice"],"mappings":"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","file":"WE3VE6AV.js","sourcesContent":["import type { Address } from '@ton/ton';\nimport bs58 from 'bs58';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/common-ton';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-utils';\nimport type {\n Base58String,\n ChainsByEncoding,\n InferChainTypeForChainName,\n NativeAddress,\n ResolvedEncodingForChainName,\n TonString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\ntype NativeOrString<T extends ChainName | `${ChainName}`> =\n | ChainNativeAddress<T>\n | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\n };\n};\n\nexport type InferExtensionByChainName<T extends ChainName | `${ChainName}`> =\n InferChainTypeForChainName<T> extends keyof ExtensionByChainType\n ? ExtensionByChainType[InferChainTypeForChainName<T>]\n : {};\n\nexport type AddressParser<T extends ChainName | `${ChainName}`> = {\n normalizedToNative: (address: NormalizedHexString) => ChainNativeAddress<T>;\n normalizedToNativeString: (address: NormalizedHexString) => ResolvedEncodingForChainName<T>;\n normalizedToUnpaddedString: (address: NormalizedHexString) => HexString;\n nativeToNormalized: (nativeAddress: NativeOrString<T>) => NormalizedHexString;\n nativeToBytes: (nativeAddress: NativeOrString<T>) => Uint8Array;\n nativeToBytes32Hex: (nativeAddress: NativeOrString<T>) => HexString;\n nativeToBytes32: (nativeAddress: NativeOrString<T>) => Uint8Array;\n validateNative: (nativeAddress: string) => nativeAddress is ResolvedEncodingForChainName<T>;\n /**\n * Parse a native address to a string if it is valid.\n * Throws an error if the native address is invalid.\n * @param nativeAddress - The native address to parse.\n * @returns The parsed native address.\n */\n parseNative: (nativeAddress: string) => NormalizedHexString;\n parseNativeToHex: (nativeAddress: string) => HexString;\n encoding: AddressEncoding;\n} & InferExtensionByChainName<T>;\n\nexport function addressParser<T extends ChainName | `${ChainName}`>(\n chainName: T,\n): AddressParser<T> {\n // FIXME: figure out a way to not have to cast here\n if (chainName === ChainName.TON)\n return tonAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.SOLANA)\n return base58AddressParser(chainName) as unknown as AddressParser<T>;\n return hexAddressParser(chainName) as unknown as AddressParser<T>;\n}\n\nexport namespace addressParser {\n export const normalizedToBytes32Hex = (address: NormalizedHexString) => {\n return hexZeroPad(address as unknown as HexString, 32);\n };\n export const normalizedToBytes32 = (address: NormalizedHexString) => {\n return hexToBytes(normalizedToBytes32Hex(address));\n };\n export const normalizedToBigInt = (address: NormalizedHexString) => {\n return BigInt(address as unknown as HexString);\n };\n export const parseNative = (nativeAddress: NativeAddress) => {\n return addressParser(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);\n };\n}\n\nconst validateNative = <T extends ChainName | `${ChainName}`>(\n nativeAddress: string,\n expectedChainName: T,\n): nativeAddress is ResolvedEncodingForChainName<T> => {\n if (!addressParser(expectedChainName).validateNative(nativeAddress)) {\n throw new Error(\n 'Cannot convert: ' +\n nativeAddress +\n ' - The native address does not match the expected format for the chain: ' +\n expectedChainName,\n );\n }\n return true;\n};\n\nconst getAddress = <T extends ChainName | `${ChainName}`>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\n\nexport const tonAddressParser: (\n chainName: ChainsByEncoding[TonString],\n) => AddressParser<ChainsByEncoding[TonString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is TonString => {\n try {\n parseTonAddress(nativeAddress);\n return true;\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n const numericalValue = addressParser.normalizedToBigInt(address);\n return {\n nativeAddress: bigintToAddress(numericalValue).toString() as TonString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n normalizedToUnpaddedString: (address) => {\n return String(address) as HexString;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return normalizeHex(addressToHex(address));\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n tonToNormalized: (tonAddress) => {\n return addressParser(chainName).parseNative(addressToHex(tonAddress));\n },\n encoding: AddressEncoding.TON,\n };\n};\n\nexport const base58AddressParser = (\n chainName: ChainsByEncoding[Base58String],\n): AddressParser<ChainsByEncoding[Base58String]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is Base58String => {\n return isBase58(nativeAddress);\n },\n normalizedToNative: (address) => {\n return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n normalizedToUnpaddedString: (address) => {\n return String(address) as HexString;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\nexport const hexAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName as ChainName);\n\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n return isHexString(nativeAddress);\n },\n normalizedToNative: (address) => {\n return {\n // we could have EIP-55 here, but omitted for now\n nativeAddress: hexZeroPad(address as unknown as HexString, nativeByteLength),\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return hexZeroPad(address as unknown as HexString, nativeByteLength);\n },\n normalizedToUnpaddedString: (address) => {\n return String(address) as HexString;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return normalizeHex(address);\n },\n nativeToBytes: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return hexToBytes(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return hexZeroPad(address, 32);\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n // Specific case to make tron a little less flaky, handle the 41 prefix\n if (chainName === ChainName.TRON) {\n nativeAddress = nativeAddress.startsWith('41')\n ? `0x${nativeAddress.slice(2)}`\n : nativeAddress;\n }\n\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.HEX,\n };\n};\n"]}
|
package/dist/addressParser.cjs
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _3DUSMLGX_cjs = require('./3DUSMLGX.cjs');
|
|
4
4
|
require('./J6P5K7DC.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "AddressEncoding", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return _3DUSMLGX_cjs.AddressEncoding; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "addressParser", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return _3DUSMLGX_cjs.addressParser; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "base58AddressParser", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return _3DUSMLGX_cjs.base58AddressParser; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "hexAddressParser", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return _3DUSMLGX_cjs.hexAddressParser; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "tonAddressParser", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return _3DUSMLGX_cjs.tonAddressParser; }
|
|
27
27
|
});
|
|
28
28
|
//# sourceMappingURL=addressParser.cjs.map
|
|
29
29
|
//# sourceMappingURL=addressParser.cjs.map
|
package/dist/addressParser.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { Address } from '@ton/ton';
|
|
1
2
|
import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';
|
|
2
|
-
import type { Base58String, ChainsByEncoding, NativeAddress, ResolvedEncodingForChainName, TonString } from '@layerzerolabs/layerzero-definitions';
|
|
3
|
+
import type { Base58String, ChainsByEncoding, InferChainTypeForChainName, NativeAddress, ResolvedEncodingForChainName, TonString } from '@layerzerolabs/layerzero-definitions';
|
|
3
4
|
import type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';
|
|
4
5
|
import { ChainName } from '@layerzerolabs/layerzero-definitions';
|
|
5
6
|
type NativeOrString<T extends ChainName | `${ChainName}`> = ChainNativeAddress<T> | ResolvedEncodingForChainName<T>;
|
|
@@ -8,9 +9,16 @@ export declare enum AddressEncoding {
|
|
|
8
9
|
BASE58 = "base58",
|
|
9
10
|
TON = "ton"
|
|
10
11
|
}
|
|
11
|
-
export
|
|
12
|
+
export type ExtensionByChainType = {
|
|
13
|
+
ton: {
|
|
14
|
+
tonToNormalized: (tonAddress: Address) => NormalizedHexString;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export type InferExtensionByChainName<T extends ChainName | `${ChainName}`> = InferChainTypeForChainName<T> extends keyof ExtensionByChainType ? ExtensionByChainType[InferChainTypeForChainName<T>] : {};
|
|
18
|
+
export type AddressParser<T extends ChainName | `${ChainName}`> = {
|
|
12
19
|
normalizedToNative: (address: NormalizedHexString) => ChainNativeAddress<T>;
|
|
13
20
|
normalizedToNativeString: (address: NormalizedHexString) => ResolvedEncodingForChainName<T>;
|
|
21
|
+
normalizedToUnpaddedString: (address: NormalizedHexString) => HexString;
|
|
14
22
|
nativeToNormalized: (nativeAddress: NativeOrString<T>) => NormalizedHexString;
|
|
15
23
|
nativeToBytes: (nativeAddress: NativeOrString<T>) => Uint8Array;
|
|
16
24
|
nativeToBytes32Hex: (nativeAddress: NativeOrString<T>) => HexString;
|
|
@@ -25,7 +33,7 @@ export interface AddressParser<T extends ChainName | `${ChainName}`> {
|
|
|
25
33
|
parseNative: (nativeAddress: string) => NormalizedHexString;
|
|
26
34
|
parseNativeToHex: (nativeAddress: string) => HexString;
|
|
27
35
|
encoding: AddressEncoding;
|
|
28
|
-
}
|
|
36
|
+
} & InferExtensionByChainName<T>;
|
|
29
37
|
export declare function addressParser<T extends ChainName | `${ChainName}`>(chainName: T): AddressParser<T>;
|
|
30
38
|
export declare namespace addressParser {
|
|
31
39
|
const normalizedToBytes32Hex: (address: NormalizedHexString) => `0x${string}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addressParser.d.ts","sourceRoot":"","sources":["../src/addressParser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addressParser.d.ts","sourceRoot":"","sources":["../src/addressParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAUxF,OAAO,KAAK,EACR,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,aAAa,EACb,4BAA4B,EAC5B,SAAS,EACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAGjE,KAAK,cAAc,CAAC,CAAC,SAAS,SAAS,GAAG,GAAG,SAAS,EAAE,IAClD,kBAAkB,CAAC,CAAC,CAAC,GACrB,4BAA4B,CAAC,CAAC,CAAC,CAAC;AAEtC,oBAAY,eAAe;IACvB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,GAAG,QAAQ;CACd;AAED,MAAM,MAAM,oBAAoB,GAAG;IAC/B,GAAG,EAAE;QACD,eAAe,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,mBAAmB,CAAC;KACjE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,SAAS,GAAG,GAAG,SAAS,EAAE,IACtE,0BAA0B,CAAC,CAAC,CAAC,SAAS,MAAM,oBAAoB,GAC1D,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,GACnD,EAAE,CAAC;AAEb,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,GAAG,SAAS,EAAE,IAAI;IAC9D,kBAAkB,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC5E,wBAAwB,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,4BAA4B,CAAC,CAAC,CAAC,CAAC;IAC5F,0BAA0B,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,SAAS,CAAC;IACxE,kBAAkB,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC;IAC9E,aAAa,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC;IAChE,kBAAkB,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IACpE,eAAe,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC;IAClE,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,aAAa,IAAI,4BAA4B,CAAC,CAAC,CAAC,CAAC;IAC5F;;;;;OAKG;IACH,WAAW,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,mBAAmB,CAAC;IAC5D,gBAAgB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,SAAS,CAAC;IACvD,QAAQ,EAAE,eAAe,CAAC;CAC7B,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAEjC,wBAAgB,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,GAAG,SAAS,EAAE,EAC9D,SAAS,EAAE,CAAC,GACb,aAAa,CAAC,CAAC,CAAC,CAOlB;AAED,yBAAiB,aAAa,CAAC;IACpB,MAAM,sBAAsB,GAAI,SAAS,mBAAmB,kBAElE,CAAC;IACK,MAAM,mBAAmB,GAAI,SAAS,mBAAmB,gCAE/D,CAAC;IACK,MAAM,kBAAkB,GAAI,SAAS,mBAAmB,WAE9D,CAAC;IACK,MAAM,WAAW,GAAI,eAAe,aAAa,wBAEvD,CAAC;CACL;AAqBD,eAAO,MAAM,gBAAgB,EAAE,CAC3B,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC,KACrC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAuD7C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC5B,WAAW,gBAAgB,CAAC,YAAY,CAAC,KAC1C,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAmD9C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GACzB,WAAW,gBAAgB,CAAC,SAAS,CAAC,KACvC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAwD3C,CAAC"}
|
package/dist/addressParser.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AddressEncoding, addressParser, base58AddressParser, hexAddressParser, tonAddressParser } from './
|
|
1
|
+
export { AddressEncoding, addressParser, base58AddressParser, hexAddressParser, tonAddressParser } from './WE3VE6AV.js';
|
|
2
2
|
import './YXE7PREU.js';
|
|
3
3
|
//# sourceMappingURL=addressParser.js.map
|
|
4
4
|
//# sourceMappingURL=addressParser.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _3DUSMLGX_cjs = require('./3DUSMLGX.cjs');
|
|
4
4
|
var J6P5K7DC_cjs = require('./J6P5K7DC.cjs');
|
|
5
5
|
var bs58 = require('bs58');
|
|
6
6
|
var tty = require('tty');
|
|
@@ -590,10 +590,10 @@ var require_dist = J6P5K7DC_cjs.__commonJS({
|
|
|
590
590
|
// src/addressParser.test.ts
|
|
591
591
|
J6P5K7DC_cjs.init_cjs_shims();
|
|
592
592
|
|
|
593
|
-
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.
|
|
593
|
+
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.18.8_terser@5.43.1_tsx@4.20.4_yaml@2.8.0/node_modules/vitest/dist/index.js
|
|
594
594
|
J6P5K7DC_cjs.init_cjs_shims();
|
|
595
595
|
|
|
596
|
-
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.
|
|
596
|
+
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.18.8_terser@5.43.1_tsx@4.20.4_yaml@2.8.0/node_modules/vitest/dist/chunks/vi.bdSIJ99Y.js
|
|
597
597
|
J6P5K7DC_cjs.init_cjs_shims();
|
|
598
598
|
|
|
599
599
|
// ../../../node_modules/.pnpm/@vitest+expect@3.2.3/node_modules/@vitest/expect/dist/index.js
|
|
@@ -12848,7 +12848,7 @@ J6P5K7DC_cjs.__name(createTestHook, "createTestHook");
|
|
|
12848
12848
|
// ../../../node_modules/.pnpm/@vitest+runner@3.2.3/node_modules/@vitest/runner/dist/utils.js
|
|
12849
12849
|
J6P5K7DC_cjs.init_cjs_shims();
|
|
12850
12850
|
|
|
12851
|
-
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.
|
|
12851
|
+
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.18.8_terser@5.43.1_tsx@4.20.4_yaml@2.8.0/node_modules/vitest/dist/chunks/utils.XdZDrNZV.js
|
|
12852
12852
|
J6P5K7DC_cjs.init_cjs_shims();
|
|
12853
12853
|
var NAME_WORKER_STATE = "__vitest_worker__";
|
|
12854
12854
|
function getWorkerState() {
|
|
@@ -12905,7 +12905,7 @@ async function waitForImportsToResolve() {
|
|
|
12905
12905
|
}
|
|
12906
12906
|
J6P5K7DC_cjs.__name(waitForImportsToResolve, "waitForImportsToResolve");
|
|
12907
12907
|
|
|
12908
|
-
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.
|
|
12908
|
+
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.18.8_terser@5.43.1_tsx@4.20.4_yaml@2.8.0/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js
|
|
12909
12909
|
J6P5K7DC_cjs.init_cjs_shims();
|
|
12910
12910
|
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
|
12911
12911
|
function getDefaultExportFromCjs3(x) {
|
|
@@ -15202,7 +15202,7 @@ var SnapshotClient = class SnapshotClient2 {
|
|
|
15202
15202
|
}
|
|
15203
15203
|
};
|
|
15204
15204
|
|
|
15205
|
-
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.
|
|
15205
|
+
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.18.8_terser@5.43.1_tsx@4.20.4_yaml@2.8.0/node_modules/vitest/dist/chunks/date.Bq6ZW5rf.js
|
|
15206
15206
|
J6P5K7DC_cjs.init_cjs_shims();
|
|
15207
15207
|
var RealDate = Date;
|
|
15208
15208
|
var now2 = null;
|
|
@@ -15256,7 +15256,7 @@ function resetDate() {
|
|
|
15256
15256
|
}
|
|
15257
15257
|
J6P5K7DC_cjs.__name(resetDate, "resetDate");
|
|
15258
15258
|
|
|
15259
|
-
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.
|
|
15259
|
+
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.18.8_terser@5.43.1_tsx@4.20.4_yaml@2.8.0/node_modules/vitest/dist/chunks/vi.bdSIJ99Y.js
|
|
15260
15260
|
var unsupported = [
|
|
15261
15261
|
"matchSnapshot",
|
|
15262
15262
|
"toMatchSnapshot",
|
|
@@ -17999,7 +17999,7 @@ function getImporter(name) {
|
|
|
17999
17999
|
}
|
|
18000
18000
|
J6P5K7DC_cjs.__name(getImporter, "getImporter");
|
|
18001
18001
|
|
|
18002
|
-
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.
|
|
18002
|
+
// ../../../node_modules/.pnpm/vitest@3.2.3_@types+node@22.18.8_terser@5.43.1_tsx@4.20.4_yaml@2.8.0/node_modules/vitest/dist/index.js
|
|
18003
18003
|
J6P5K7DC_cjs.__toESM(require_dist(), 1);
|
|
18004
18004
|
var randomBytes = /* @__PURE__ */ J6P5K7DC_cjs.__name((length) => {
|
|
18005
18005
|
const bytes = new Uint8Array(length);
|
|
@@ -18025,7 +18025,7 @@ describe("addressParser - hex/EVM chains", () => {
|
|
|
18025
18025
|
];
|
|
18026
18026
|
evmChains.forEach((chain) => {
|
|
18027
18027
|
describe(chain, () => {
|
|
18028
|
-
const parser =
|
|
18028
|
+
const parser = _3DUSMLGX_cjs.addressParser(chain);
|
|
18029
18029
|
it("maintains roundtrip invariant: hex -> native -> hex", () => {
|
|
18030
18030
|
runPropertyTest(() => {
|
|
18031
18031
|
const input = randomHex(20);
|
|
@@ -18058,13 +18058,13 @@ describe("addressParser - hex/EVM chains", () => {
|
|
|
18058
18058
|
runPropertyTest(() => {
|
|
18059
18059
|
const byteLength = Math.floor(Math.random() * 32) + 1;
|
|
18060
18060
|
const input = randomHex(byteLength);
|
|
18061
|
-
const padded =
|
|
18061
|
+
const padded = _3DUSMLGX_cjs.addressParser.normalizedToBytes32Hex(input);
|
|
18062
18062
|
globalExpect(padded.length).toBe(66);
|
|
18063
18063
|
globalExpect(padded).toBe(commonUtils.hexZeroPad(input, 32));
|
|
18064
18064
|
});
|
|
18065
18065
|
});
|
|
18066
18066
|
it("handles edge cases", () => {
|
|
18067
|
-
const parser =
|
|
18067
|
+
const parser = _3DUSMLGX_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18068
18068
|
const empty = commonChainModel.normalizeHex("0x");
|
|
18069
18069
|
globalExpect(parser.normalizedToNative(empty).nativeAddress.length).toBe(42);
|
|
18070
18070
|
const max = commonChainModel.normalizeHex("0x" + "ff".repeat(20));
|
|
@@ -18074,7 +18074,7 @@ describe("addressParser - hex/EVM chains", () => {
|
|
|
18074
18074
|
});
|
|
18075
18075
|
});
|
|
18076
18076
|
describe("addressParser - base58 chains (Solana)", () => {
|
|
18077
|
-
const parser =
|
|
18077
|
+
const parser = _3DUSMLGX_cjs.addressParser(layerzeroDefinitions.ChainName.SOLANA);
|
|
18078
18078
|
it("maintains roundtrip invariant: hex -> base58 -> hex", () => {
|
|
18079
18079
|
runPropertyTest(() => {
|
|
18080
18080
|
const byteLength = Math.floor(Math.random() * 32) + 1;
|
|
@@ -18117,15 +18117,15 @@ describe("addressParser - base58 chains (Solana)", () => {
|
|
|
18117
18117
|
});
|
|
18118
18118
|
describe("addressParser - chain validation", () => {
|
|
18119
18119
|
it("validates chain names for nativeToBytes32Hex", () => {
|
|
18120
|
-
const evmParser =
|
|
18121
|
-
const solanaParser =
|
|
18120
|
+
const evmParser = _3DUSMLGX_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18121
|
+
const solanaParser = _3DUSMLGX_cjs.addressParser(layerzeroDefinitions.ChainName.SOLANA);
|
|
18122
18122
|
const evmAddress = evmParser.normalizedToNative(randomHex(20));
|
|
18123
18123
|
const solanaAddress = solanaParser.normalizedToNative(randomHex(32));
|
|
18124
18124
|
globalExpect(() => solanaParser.nativeToBytes32Hex(evmAddress)).toThrow(/Cannot convert/);
|
|
18125
18125
|
globalExpect(() => evmParser.nativeToBytes32Hex(solanaAddress)).toThrow(/Cannot convert/);
|
|
18126
18126
|
});
|
|
18127
18127
|
it("accepts string addresses without validation", () => {
|
|
18128
|
-
const parser =
|
|
18128
|
+
const parser = _3DUSMLGX_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18129
18129
|
const randomAddress = "0x" + "ab".repeat(20);
|
|
18130
18130
|
const result = parser.nativeToNormalized(randomAddress);
|
|
18131
18131
|
globalExpect(result).toBe(commonChainModel.normalizeHex(randomAddress));
|
|
@@ -18136,7 +18136,7 @@ describe("addressParser - chain validation", () => {
|
|
|
18136
18136
|
});
|
|
18137
18137
|
});
|
|
18138
18138
|
describe("addressParser - TON", () => {
|
|
18139
|
-
const parser =
|
|
18139
|
+
const parser = _3DUSMLGX_cjs.addressParser(layerzeroDefinitions.ChainName.TON);
|
|
18140
18140
|
it("maintains roundtrip invariant: hex -> ton address -> hex", () => {
|
|
18141
18141
|
runPropertyTest(() => {
|
|
18142
18142
|
const byteLength = Math.floor(Math.random() * 32) + 1;
|