@layerzerolabs/address-utils-ton 0.2.83 → 0.2.85
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.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var core = require('@ton/core');
|
|
4
4
|
var base58 = require('bs58');
|
|
5
5
|
var commonEncodingUtils = require('@layerzerolabs/common-encoding-utils');
|
|
6
6
|
var tonSdkTools = require('@layerzerolabs/ton-sdk-tools');
|
|
@@ -30,10 +30,10 @@ var to32ByteBuffer = /* @__PURE__ */ __name((value, maxIntermediateBufferSize =
|
|
|
30
30
|
}, "to32ByteBuffer");
|
|
31
31
|
var bigintToAddress = /* @__PURE__ */ __name((value) => {
|
|
32
32
|
const buf = to32ByteBuffer(value);
|
|
33
|
-
return
|
|
33
|
+
return core.Address.parse(`0:${buf.toString("hex")}`);
|
|
34
34
|
}, "bigintToAddress");
|
|
35
35
|
var parseTonAddress = /* @__PURE__ */ __name((address) => {
|
|
36
|
-
if (address instanceof
|
|
36
|
+
if (address instanceof core.Address) {
|
|
37
37
|
return address;
|
|
38
38
|
}
|
|
39
39
|
try {
|
|
@@ -44,7 +44,7 @@ var parseTonAddress = /* @__PURE__ */ __name((address) => {
|
|
|
44
44
|
return bigintToAddress(BigInt(address));
|
|
45
45
|
}
|
|
46
46
|
try {
|
|
47
|
-
return
|
|
47
|
+
return core.Address.parse(address);
|
|
48
48
|
} catch {
|
|
49
49
|
const _isBase58 = commonEncodingUtils.isBase58(address);
|
|
50
50
|
const _isHex = commonEncodingUtils.isHexString(address);
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["to32ByteBuffer","value","maxIntermediateBufferSize","isHexString","Error","hex","trim0x","length","bufferToBigInt","Buffer","from","Uint8Array","bf","bigintToSizedBuffer","BigInt","subarray","bigintToAddress","buf","Address","parse","toString","parseTonAddress","address","startsWith","_isBase58","isBase58","_isHex","base58","decode","err","console","error","message","_addressToNotPaddedHex","hash","addressToHex","toLowerCase","addressToBigInt","compareAddresses","addressA","addressB","equals","numberOfLeadingZeroBitsInAddress"],"mappings":";;;;;;;;;;;;;AASA,IAAMA,cAAAA,mBAAiB,MAAA,CAAA,CACnBC,KAAAA,EACAC,yBAAAA,GAA4B,EAAA,KAAE;AAE9B,EAAA,IAAI,OAAOD,UAAU,QAAA,EAAU;AAC3B,IAAA,IAAI,CAACE,+BAAAA,CAAYF,KAAAA,CAAAA,EAAQ;AACrB,MAAA,MAAM,IAAIG,MAAM,8BAAA,CAAA;AACpB,IAAA;AACA,IAAA,IAAIC,GAAAA,GAAMC,2BAAOL,KAAAA,CAAAA;AACjB,IAAA,IAAII,GAAAA,CAAIE,MAAAA,GAAS,CAAA,KAAM,CAAA,EAAG;AACtBF,MAAAA,GAAAA,GAAM,GAAA,GAAMA,GAAAA;AAChB,IAAA;AACAJ,IAAAA,KAAAA,GAAQO,0BAAAA,CAAeC,MAAAA,CAAOC,IAAAA,CAAKL,GAAAA,EAAK,KAAA,CAAA,CAAA;AAC5C,EAAA;AACA,EAAA,IAAIJ,iBAAiBU,UAAAA,EAAY;AAC7BV,IAAAA,KAAAA,GAAQO,0BAAAA,CAAeC,MAAAA,CAAOC,IAAAA,CAAKT,KAAAA,CAAAA,CAAAA;AACvC,EAAA;AACA,EAAA,MAAMW,EAAAA,GAAKC,+BAAAA,CAAoBC,MAAAA,CAAOb,KAAAA,GAAQC,yBAAAA,CAAAA;AAE9C,EAAA,OAAOU,EAAAA,CAAGG,SAAS,GAAC,CAAA;AACxB,CAAA,EApBuB,gBAAA,CAAA;AAsBhB,IAAMC,eAAAA,2BAAmBf,KAAAA,KAAAA;AAC5B,EAAA,MAAMgB,GAAAA,GAAMjB,eAAeC,KAAAA,CAAAA;AAC3B,EAAA,OAAOiB,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["to32ByteBuffer","value","maxIntermediateBufferSize","isHexString","Error","hex","trim0x","length","bufferToBigInt","Buffer","from","Uint8Array","bf","bigintToSizedBuffer","BigInt","subarray","bigintToAddress","buf","Address","parse","toString","parseTonAddress","address","startsWith","_isBase58","isBase58","_isHex","base58","decode","err","console","error","message","_addressToNotPaddedHex","hash","addressToHex","toLowerCase","addressToBigInt","compareAddresses","addressA","addressB","equals","numberOfLeadingZeroBitsInAddress"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Address } from '@ton/core';\nimport base58 from 'bs58';\n\nimport type { HexString } from '@layerzerolabs/common-chain-model';\nimport { isBase58, isHexString, trim0x } from '@layerzerolabs/common-encoding-utils';\nimport { bigintToSizedBuffer, bufferToBigInt } from '@layerzerolabs/ton-sdk-tools';\n\nexport type AddressTypeLike = Address | string | bigint;\n\nconst to32ByteBuffer = (\n value: bigint | number | string | Uint8Array,\n maxIntermediateBufferSize = 66,\n): Buffer => {\n if (typeof value === 'string') {\n if (!isHexString(value)) {\n throw new Error('only hex string is supported');\n }\n let hex = trim0x(value);\n if (hex.length % 2 !== 0) {\n hex = '0' + hex;\n }\n value = bufferToBigInt(Buffer.from(hex, 'hex'));\n }\n if (value instanceof Uint8Array) {\n value = bufferToBigInt(Buffer.from(value));\n }\n const bf = bigintToSizedBuffer(BigInt(value), maxIntermediateBufferSize);\n // trim from the left, keep the right 32 bytes\n return bf.subarray(-32);\n};\n\nexport const bigintToAddress = (value: bigint): Address => {\n const buf = to32ByteBuffer(value);\n return Address.parse(`0:${buf.toString('hex')}`);\n};\n\nexport const parseTonAddress = (address: AddressTypeLike): Address => {\n if (address instanceof Address) {\n return address;\n }\n\n try {\n if (typeof address === 'bigint' || typeof address === 'number') {\n return bigintToAddress(BigInt(address));\n }\n\n if (address.startsWith('0x')) {\n // If it's a hex address format it to ton format\n return bigintToAddress(BigInt(address));\n }\n\n try {\n return Address.parse(address);\n } catch {\n //at this point, our address is either hex without a '0x', or base58\n const _isBase58 = isBase58(address);\n const _isHex = isHexString(address);\n\n //this includes the case where the address is both base58 and hex\n //but nearly every address generated this way is hex (only 1/(~5.5e12) are b58)\n if (_isHex) {\n return bigintToAddress(BigInt(`0x${address}`));\n }\n\n if (_isBase58) {\n return bigintToAddress(\n BigInt(`0x${Buffer.from(base58.decode(address)).toString('hex')}`),\n );\n }\n\n //this is the case where the address is invalid in any encoding\n throw new Error(`The address ${address} cannot be decoded as TON, hex, or base58`);\n }\n } catch (err: any) {\n console.error('Error parsing address', {\n address,\n error: err?.message ?? err,\n });\n throw err;\n }\n};\n\nconst _addressToNotPaddedHex = (address: AddressTypeLike) => {\n return `0x${parseTonAddress(address).hash.toString('hex')}`;\n};\n\nexport const addressToHex = (address: AddressTypeLike): HexString => {\n return `0x${to32ByteBuffer(_addressToNotPaddedHex(address)).toString('hex').toLowerCase()}`;\n};\n\nexport const addressToBigInt = (address: AddressTypeLike) => {\n return BigInt(_addressToNotPaddedHex(address));\n};\n\nexport const compareAddresses = (addressA: AddressTypeLike, addressB: AddressTypeLike) => {\n return parseTonAddress(addressA).equals(parseTonAddress(addressB));\n};\n\n/**\n * Since toString(2) does not include leading zeros, we can calculate the leading zeros by subtracting\n * the total length of address in binary from the total length of addresses in TON in bits (32 bytes * 8)\n */\nexport const numberOfLeadingZeroBitsInAddress = (address: AddressTypeLike) => {\n return 32 * 8 - addressToBigInt(address).toString(2).length;\n};\n"]}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAInE,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAwBxD,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,OAG/C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,eAAe,KAAG,OA4C1D,CAAC;AAMF,eAAO,MAAM,YAAY,GAAI,SAAS,eAAe,KAAG,SAEvD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,eAAe,WAEvD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,eAAe,EAAE,UAAU,eAAe,YAEpF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gCAAgC,GAAI,SAAS,eAAe,WAExE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Address } from '@ton/
|
|
1
|
+
import { Address } from '@ton/core';
|
|
2
2
|
import base58 from 'bs58';
|
|
3
3
|
import { isBase58, isHexString, trim0x } from '@layerzerolabs/common-encoding-utils';
|
|
4
4
|
import { bufferToBigInt, bigintToSizedBuffer } from '@layerzerolabs/ton-sdk-tools';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["to32ByteBuffer","value","maxIntermediateBufferSize","isHexString","Error","hex","trim0x","length","bufferToBigInt","Buffer","from","Uint8Array","bf","bigintToSizedBuffer","BigInt","subarray","bigintToAddress","buf","Address","parse","toString","parseTonAddress","address","startsWith","_isBase58","isBase58","_isHex","base58","decode","err","console","error","message","_addressToNotPaddedHex","hash","addressToHex","toLowerCase","addressToBigInt","compareAddresses","addressA","addressB","equals","numberOfLeadingZeroBitsInAddress"],"mappings":"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","file":"index.js","sourcesContent":["import { Address } from '@ton/
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["to32ByteBuffer","value","maxIntermediateBufferSize","isHexString","Error","hex","trim0x","length","bufferToBigInt","Buffer","from","Uint8Array","bf","bigintToSizedBuffer","BigInt","subarray","bigintToAddress","buf","Address","parse","toString","parseTonAddress","address","startsWith","_isBase58","isBase58","_isHex","base58","decode","err","console","error","message","_addressToNotPaddedHex","hash","addressToHex","toLowerCase","addressToBigInt","compareAddresses","addressA","addressB","equals","numberOfLeadingZeroBitsInAddress"],"mappings":"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","file":"index.js","sourcesContent":["import { Address } from '@ton/core';\nimport base58 from 'bs58';\n\nimport type { HexString } from '@layerzerolabs/common-chain-model';\nimport { isBase58, isHexString, trim0x } from '@layerzerolabs/common-encoding-utils';\nimport { bigintToSizedBuffer, bufferToBigInt } from '@layerzerolabs/ton-sdk-tools';\n\nexport type AddressTypeLike = Address | string | bigint;\n\nconst to32ByteBuffer = (\n value: bigint | number | string | Uint8Array,\n maxIntermediateBufferSize = 66,\n): Buffer => {\n if (typeof value === 'string') {\n if (!isHexString(value)) {\n throw new Error('only hex string is supported');\n }\n let hex = trim0x(value);\n if (hex.length % 2 !== 0) {\n hex = '0' + hex;\n }\n value = bufferToBigInt(Buffer.from(hex, 'hex'));\n }\n if (value instanceof Uint8Array) {\n value = bufferToBigInt(Buffer.from(value));\n }\n const bf = bigintToSizedBuffer(BigInt(value), maxIntermediateBufferSize);\n // trim from the left, keep the right 32 bytes\n return bf.subarray(-32);\n};\n\nexport const bigintToAddress = (value: bigint): Address => {\n const buf = to32ByteBuffer(value);\n return Address.parse(`0:${buf.toString('hex')}`);\n};\n\nexport const parseTonAddress = (address: AddressTypeLike): Address => {\n if (address instanceof Address) {\n return address;\n }\n\n try {\n if (typeof address === 'bigint' || typeof address === 'number') {\n return bigintToAddress(BigInt(address));\n }\n\n if (address.startsWith('0x')) {\n // If it's a hex address format it to ton format\n return bigintToAddress(BigInt(address));\n }\n\n try {\n return Address.parse(address);\n } catch {\n //at this point, our address is either hex without a '0x', or base58\n const _isBase58 = isBase58(address);\n const _isHex = isHexString(address);\n\n //this includes the case where the address is both base58 and hex\n //but nearly every address generated this way is hex (only 1/(~5.5e12) are b58)\n if (_isHex) {\n return bigintToAddress(BigInt(`0x${address}`));\n }\n\n if (_isBase58) {\n return bigintToAddress(\n BigInt(`0x${Buffer.from(base58.decode(address)).toString('hex')}`),\n );\n }\n\n //this is the case where the address is invalid in any encoding\n throw new Error(`The address ${address} cannot be decoded as TON, hex, or base58`);\n }\n } catch (err: any) {\n console.error('Error parsing address', {\n address,\n error: err?.message ?? err,\n });\n throw err;\n }\n};\n\nconst _addressToNotPaddedHex = (address: AddressTypeLike) => {\n return `0x${parseTonAddress(address).hash.toString('hex')}`;\n};\n\nexport const addressToHex = (address: AddressTypeLike): HexString => {\n return `0x${to32ByteBuffer(_addressToNotPaddedHex(address)).toString('hex').toLowerCase()}`;\n};\n\nexport const addressToBigInt = (address: AddressTypeLike) => {\n return BigInt(_addressToNotPaddedHex(address));\n};\n\nexport const compareAddresses = (addressA: AddressTypeLike, addressB: AddressTypeLike) => {\n return parseTonAddress(addressA).equals(parseTonAddress(addressB));\n};\n\n/**\n * Since toString(2) does not include leading zeros, we can calculate the leading zeros by subtracting\n * the total length of address in binary from the total length of addresses in TON in bits (32 bytes * 8)\n */\nexport const numberOfLeadingZeroBitsInAddress = (address: AddressTypeLike) => {\n return 32 * 8 - addressToBigInt(address).toString(2).length;\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/address-utils-ton",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.85",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -18,16 +18,16 @@
|
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@layerzerolabs/ton-sdk-tools": "3.0.167",
|
|
21
|
-
"@ton/
|
|
21
|
+
"@ton/core": "^0.59.0",
|
|
22
22
|
"bs58": "^5.0.0",
|
|
23
|
-
"@layerzerolabs/common-chain-model": "0.2.
|
|
24
|
-
"@layerzerolabs/common-encoding-utils": "0.2.
|
|
23
|
+
"@layerzerolabs/common-chain-model": "0.2.85",
|
|
24
|
+
"@layerzerolabs/common-encoding-utils": "0.2.85"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"tsup": "^8.4.0",
|
|
28
28
|
"vitest": "^3.2.3",
|
|
29
|
-
"@layerzerolabs/tsup-configuration": "0.2.
|
|
30
|
-
"@layerzerolabs/typescript-configuration": "0.2.
|
|
29
|
+
"@layerzerolabs/tsup-configuration": "0.2.85",
|
|
30
|
+
"@layerzerolabs/typescript-configuration": "0.2.85"
|
|
31
31
|
},
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public",
|