sushi 6.6.5 → 6.6.7

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.
@@ -2,15 +2,28 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeAddress = normalizeAddress;
4
4
  const chains_js_1 = require("../../evm/chain/chains.js");
5
+ const token_js_1 = require("../../evm/currency/token.js");
5
6
  const normalize_address_js_1 = require("../../evm/utils/normalize-address.js");
6
7
  const chains_js_2 = require("../../mvm/chain/chains.js");
8
+ const token_js_2 = require("../../mvm/currency/token.js");
7
9
  const normalize_address_js_2 = require("../../mvm/utils/normalize-address.js");
10
+ const address_js_1 = require("../../stellar/address.js");
8
11
  const chains_js_3 = require("../../stellar/chain/chains.js");
9
12
  const normalize_address_js_3 = require("../../stellar/utils/normalize-address.js");
10
13
  const chains_js_4 = require("../../svm/chain/chains.js");
14
+ const token_js_3 = require("../../svm/currency/token.js");
11
15
  const normalize_address_js_4 = require("../../svm/utils/normalize-address.js");
12
16
  const assert_never_js_1 = require("./assert-never.js");
13
- function normalizeAddress(chainId, address) {
17
+ function normalizeAddress(chainIdOrAddress, address) {
18
+ if (address === undefined) {
19
+ if (typeof chainIdOrAddress !== 'string') {
20
+ throw new Error(`normalizeAddress, unsupported address: ${chainIdOrAddress}`);
21
+ }
22
+ return normalizeAddressByFormat(chainIdOrAddress);
23
+ }
24
+ return normalizeAddressByChainId(chainIdOrAddress, address);
25
+ }
26
+ function normalizeAddressByChainId(chainId, address) {
14
27
  if ((0, chains_js_1.isEvmChainId)(chainId)) {
15
28
  return (0, normalize_address_js_1.normalizeEvmAddress)(address);
16
29
  }
@@ -25,4 +38,19 @@ function normalizeAddress(chainId, address) {
25
38
  }
26
39
  (0, assert_never_js_1.assertNever)(chainId, `normalizeAddress, unsupported chainId: ${chainId}`);
27
40
  }
41
+ function normalizeAddressByFormat(address) {
42
+ if ((0, token_js_2.isMvmAddress)(address)) {
43
+ return (0, normalize_address_js_2.normalizeMvmAddress)(address);
44
+ }
45
+ if ((0, token_js_1.isEvmAddress)(address)) {
46
+ return (0, normalize_address_js_1.normalizeEvmAddress)(address);
47
+ }
48
+ if ((0, token_js_3.isSvmAddress)(address)) {
49
+ return (0, normalize_address_js_4.normalizeSvmAddress)(address);
50
+ }
51
+ if ((0, address_js_1.isStellarAddress)(address.toUpperCase())) {
52
+ return (0, normalize_address_js_3.normalizeStellarAddress)(address);
53
+ }
54
+ throw new Error(`normalizeAddress, unsupported address: ${address}`);
55
+ }
28
56
  //# sourceMappingURL=normalize-address.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-address.js","sourceRoot":"","sources":["../../../generic/utils/normalize-address.ts"],"names":[],"mappings":";;AAgBA,4CA6BC;AA5CD,yDAAwD;AACxD,+EAA0E;AAE1E,yDAAwD;AACxD,+EAA0E;AAE1E,6DAAgE;AAChE,mFAAkF;AAElF,yDAAwD;AACxD,+EAA0E;AAG1E,uDAA+C;AAE/C,SAAgB,gBAAgB,CAC9B,OAAiB,EACjB,OAA6B;IAE7B,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,0CAAmB,EACxB,OAAiC,CACV,CAAA;IAC3B,CAAC;IAED,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,0CAAmB,EACxB,OAAiC,CACV,CAAA;IAC3B,CAAC;IAED,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,0CAAmB,EACxB,OAAiC,CACV,CAAA;IAC3B,CAAC;IAED,IAAI,IAAA,4BAAgB,EAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAA,8CAAuB,EAC5B,OAAqC,CACd,CAAA;IAC3B,CAAC;IAED,IAAA,6BAAW,EAAC,OAAO,EAAE,0CAA0C,OAAO,EAAE,CAAC,CAAA;AAC3E,CAAC"}
1
+ {"version":3,"file":"normalize-address.js","sourceRoot":"","sources":["../../../generic/utils/normalize-address.ts"],"names":[],"mappings":";;AA2BA,4CAeC;AAzCD,yDAAwD;AACxD,0DAA2E;AAC3E,+EAA0E;AAE1E,yDAAwD;AACxD,0DAA0D;AAC1D,+EAA0E;AAC1E,yDAAgF;AAEhF,6DAAgE;AAChE,mFAAkF;AAElF,yDAAwD;AACxD,0DAA2E;AAC3E,+EAA0E;AAG1E,uDAA+C;AAS/C,SAAgB,gBAAgB,CAC9B,gBAA+C,EAC/C,OAA6B;IAE7B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,0CAA0C,gBAAgB,EAAE,CAC7D,CAAA;QACH,CAAC;QAED,OAAO,wBAAwB,CAAC,gBAAgB,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,yBAAyB,CAAC,gBAA2B,EAAE,OAAO,CAAC,CAAA;AACxE,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAgB,EAChB,OAA4B;IAE5B,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,0CAAmB,EAAC,OAAiC,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,0CAAmB,EAAC,OAAiC,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,0CAAmB,EAAC,OAAiC,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,IAAA,4BAAgB,EAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAA,8CAAuB,EAAC,OAAqC,CAAC,CAAA;IACvE,CAAC;IAED,IAAA,6BAAW,EAAC,OAAO,EAAE,0CAA0C,OAAO,EAAE,CAAC,CAAA;AAC3E,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAA4B;IAE5B,IAAI,IAAA,uBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,0CAAmB,EAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,IAAA,uBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,0CAAmB,EAAC,OAAqB,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,IAAA,uBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,0CAAmB,EAAC,OAAqB,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,IAAA,6BAAgB,EAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAA,8CAAuB,EAAC,OAAyB,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAA;AACtE,CAAC"}
@@ -4,14 +4,15 @@ exports.isStellarAccountAddress = isStellarAccountAddress;
4
4
  exports.isStellarContractAddress = isStellarContractAddress;
5
5
  exports.isStellarAddress = isStellarAddress;
6
6
  const stellarAccountAddressRegex = /^G[A-Z2-7]{55}$/;
7
+ const stellarContractAddressRegex = /^C[A-Z2-7]{55}$/;
8
+ const stellarAddressRegex = /^[GC][A-Z2-7]{55}$/;
7
9
  function isStellarAccountAddress(address) {
8
10
  return stellarAccountAddressRegex.test(address);
9
11
  }
10
- const stellarContractAddressRegex = /^C[A-Z2-7]{55}$/;
11
12
  function isStellarContractAddress(address) {
12
13
  return stellarContractAddressRegex.test(address);
13
14
  }
14
15
  function isStellarAddress(address) {
15
- return isStellarAccountAddress(address) || isStellarContractAddress(address);
16
+ return stellarAddressRegex.test(address);
16
17
  }
17
18
  //# sourceMappingURL=address.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"address.js","sourceRoot":"","sources":["../../stellar/address.ts"],"names":[],"mappings":";;AAOA,0DAIC;AAID,4DAIC;AAED,4CAEC;AAlBD,MAAM,0BAA0B,GAAG,iBAAiB,CAAA;AAEpD,SAAgB,uBAAuB,CACrC,OAAe;IAEf,OAAO,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,2BAA2B,GAAG,iBAAiB,CAAA;AAErD,SAAgB,wBAAwB,CACtC,OAAe;IAEf,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,OAAO,uBAAuB,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAA;AAC9E,CAAC"}
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../stellar/address.ts"],"names":[],"mappings":";;AASA,0DAIC;AAED,4DAIC;AAED,4CAEC;AAlBD,MAAM,0BAA0B,GAAG,iBAAiB,CAAA;AACpD,MAAM,2BAA2B,GAAG,iBAAiB,CAAA;AACrD,MAAM,mBAAmB,GAAG,oBAAoB,CAAA;AAEhD,SAAgB,uBAAuB,CACrC,OAAe;IAEf,OAAO,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC;AAED,SAAgB,wBAAwB,CACtC,OAAe;IAEf,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC1C,CAAC"}
@@ -1,13 +1,26 @@
1
1
  import { isEvmChainId } from '../../evm/chain/chains.js';
2
+ import { isEvmAddress } from '../../evm/currency/token.js';
2
3
  import { normalizeEvmAddress } from '../../evm/utils/normalize-address.js';
3
4
  import { isMvmChainId } from '../../mvm/chain/chains.js';
5
+ import { isMvmAddress } from '../../mvm/currency/token.js';
4
6
  import { normalizeMvmAddress } from '../../mvm/utils/normalize-address.js';
7
+ import { isStellarAddress } from '../../stellar/address.js';
5
8
  import { isStellarChainId } from '../../stellar/chain/chains.js';
6
9
  import { normalizeStellarAddress } from '../../stellar/utils/normalize-address.js';
7
10
  import { isSvmChainId } from '../../svm/chain/chains.js';
11
+ import { isSvmAddress } from '../../svm/currency/token.js';
8
12
  import { normalizeSvmAddress } from '../../svm/utils/normalize-address.js';
9
13
  import { assertNever } from './assert-never.js';
10
- export function normalizeAddress(chainId, address) {
14
+ export function normalizeAddress(chainIdOrAddress, address) {
15
+ if (address === undefined) {
16
+ if (typeof chainIdOrAddress !== 'string') {
17
+ throw new Error(`normalizeAddress, unsupported address: ${chainIdOrAddress}`);
18
+ }
19
+ return normalizeAddressByFormat(chainIdOrAddress);
20
+ }
21
+ return normalizeAddressByChainId(chainIdOrAddress, address);
22
+ }
23
+ function normalizeAddressByChainId(chainId, address) {
11
24
  if (isEvmChainId(chainId)) {
12
25
  return normalizeEvmAddress(address);
13
26
  }
@@ -22,4 +35,19 @@ export function normalizeAddress(chainId, address) {
22
35
  }
23
36
  assertNever(chainId, `normalizeAddress, unsupported chainId: ${chainId}`);
24
37
  }
38
+ function normalizeAddressByFormat(address) {
39
+ if (isMvmAddress(address)) {
40
+ return normalizeMvmAddress(address);
41
+ }
42
+ if (isEvmAddress(address)) {
43
+ return normalizeEvmAddress(address);
44
+ }
45
+ if (isSvmAddress(address)) {
46
+ return normalizeSvmAddress(address);
47
+ }
48
+ if (isStellarAddress(address.toUpperCase())) {
49
+ return normalizeStellarAddress(address);
50
+ }
51
+ throw new Error(`normalizeAddress, unsupported address: ${address}`);
52
+ }
25
53
  //# sourceMappingURL=normalize-address.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-address.js","sourceRoot":"","sources":["../../../generic/utils/normalize-address.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAG1E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,MAAM,UAAU,gBAAgB,CAC9B,OAAiB,EACjB,OAA6B;IAE7B,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CACxB,OAAiC,CACV,CAAA;IAC3B,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CACxB,OAAiC,CACV,CAAA;IAC3B,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CACxB,OAAiC,CACV,CAAA;IAC3B,CAAC;IAED,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,uBAAuB,CAC5B,OAAqC,CACd,CAAA;IAC3B,CAAC;IAED,WAAW,CAAC,OAAO,EAAE,0CAA0C,OAAO,EAAE,CAAC,CAAA;AAC3E,CAAC"}
1
+ {"version":3,"file":"normalize-address.js","sourceRoot":"","sources":["../../../generic/utils/normalize-address.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAmB,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,EAAE,gBAAgB,EAAuB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAmB,MAAM,6BAA6B,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAG1E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAS/C,MAAM,UAAU,gBAAgB,CAC9B,gBAA+C,EAC/C,OAA6B;IAE7B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,0CAA0C,gBAAgB,EAAE,CAC7D,CAAA;QACH,CAAC;QAED,OAAO,wBAAwB,CAAC,gBAAgB,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,yBAAyB,CAAC,gBAA2B,EAAE,OAAO,CAAC,CAAA;AACxE,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAgB,EAChB,OAA4B;IAE5B,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC,OAAiC,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC,OAAiC,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC,OAAiC,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,uBAAuB,CAAC,OAAqC,CAAC,CAAA;IACvE,CAAC;IAED,WAAW,CAAC,OAAO,EAAE,0CAA0C,OAAO,EAAE,CAAC,CAAA;AAC3E,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAA4B;IAE5B,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC,OAAqB,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC,OAAqB,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC5C,OAAO,uBAAuB,CAAC,OAAyB,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAA;AACtE,CAAC"}
@@ -1,12 +1,13 @@
1
1
  const stellarAccountAddressRegex = /^G[A-Z2-7]{55}$/;
2
+ const stellarContractAddressRegex = /^C[A-Z2-7]{55}$/;
3
+ const stellarAddressRegex = /^[GC][A-Z2-7]{55}$/;
2
4
  export function isStellarAccountAddress(address) {
3
5
  return stellarAccountAddressRegex.test(address);
4
6
  }
5
- const stellarContractAddressRegex = /^C[A-Z2-7]{55}$/;
6
7
  export function isStellarContractAddress(address) {
7
8
  return stellarContractAddressRegex.test(address);
8
9
  }
9
10
  export function isStellarAddress(address) {
10
- return isStellarAccountAddress(address) || isStellarContractAddress(address);
11
+ return stellarAddressRegex.test(address);
11
12
  }
12
13
  //# sourceMappingURL=address.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"address.js","sourceRoot":"","sources":["../../stellar/address.ts"],"names":[],"mappings":"AAKA,MAAM,0BAA0B,GAAG,iBAAiB,CAAA;AAEpD,MAAM,UAAU,uBAAuB,CACrC,OAAe;IAEf,OAAO,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,2BAA2B,GAAG,iBAAiB,CAAA;AAErD,MAAM,UAAU,wBAAwB,CACtC,OAAe;IAEf,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,uBAAuB,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAA;AAC9E,CAAC"}
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../stellar/address.ts"],"names":[],"mappings":"AAKA,MAAM,0BAA0B,GAAG,iBAAiB,CAAA;AACpD,MAAM,2BAA2B,GAAG,iBAAiB,CAAA;AACrD,MAAM,mBAAmB,GAAG,oBAAoB,CAAA;AAEhD,MAAM,UAAU,uBAAuB,CACrC,OAAe;IAEf,OAAO,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAe;IAEf,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC1C,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ChainId } from '../chain/chains.js';
2
2
  import type { AddressFor } from '../types/for-chain.js';
3
- export declare function normalizeAddress<TChainId extends ChainId>(chainId: TChainId, address: AddressFor<TChainId>): AddressFor<TChainId>;
3
+ export declare function normalizeAddress<TAddress extends AddressFor<ChainId>>(address: TAddress): TAddress;
4
+ export declare function normalizeAddress<TChainId extends ChainId, TAddress extends AddressFor<TChainId>>(chainId: TChainId, address: TAddress): TAddress;
4
5
  //# sourceMappingURL=normalize-address.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-address.d.ts","sourceRoot":"","sources":["../../../generic/utils/normalize-address.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,OAAO,EACvD,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,GAC5B,UAAU,CAAC,QAAQ,CAAC,CA0BtB"}
1
+ {"version":3,"file":"normalize-address.d.ts","sourceRoot":"","sources":["../../../generic/utils/normalize-address.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,UAAU,CAAC,OAAO,CAAC,EACnE,OAAO,EAAE,QAAQ,GAChB,QAAQ,CAAA;AACX,wBAAgB,gBAAgB,CAC9B,QAAQ,SAAS,OAAO,EACxB,QAAQ,SAAS,UAAU,CAAC,QAAQ,CAAC,EACrC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../stellar/address.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,IAAI,MAAM,EAAE,CAAA;AAChD,MAAM,MAAM,sBAAsB,GAAG,IAAI,MAAM,EAAE,CAAA;AACjD,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,sBAAsB,CAAA;AAC3E,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAIlC,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,GACd,OAAO,IAAI,qBAAqB,CAElC;AAID,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,IAAI,sBAAsB,CAEnC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,cAAc,CAE3E"}
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../stellar/address.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,IAAI,MAAM,EAAE,CAAA;AAChD,MAAM,MAAM,sBAAsB,GAAG,IAAI,MAAM,EAAE,CAAA;AACjD,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,sBAAsB,CAAA;AAC3E,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAMlC,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,GACd,OAAO,IAAI,qBAAqB,CAElC;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,IAAI,sBAAsB,CAEnC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,cAAc,CAE3E"}
@@ -0,0 +1,110 @@
1
+ import { describe, expectTypeOf, it } from 'vitest'
2
+ import { EvmChainId } from '../../evm/chain/chains.js'
3
+ import type { EvmAddress } from '../../evm/currency/token.js'
4
+ import type { MvmAddress } from '../../mvm/currency/token.js'
5
+ import type {
6
+ StellarAccountAddress,
7
+ StellarContractAddress,
8
+ } from '../../stellar/address.js'
9
+ import { StellarChainId } from '../../stellar/chain/chains.js'
10
+ import { SvmChainId } from '../../svm/chain/chains.js'
11
+ import type { SvmAddress } from '../../svm/currency/token.js'
12
+ import { normalizeAddress } from './normalize-address.js'
13
+
14
+ describe('normalizeAddress types', () => {
15
+ it('preserves EVM address types', () => {
16
+ const address = '0x0000000000000000000000000000000000000000' as EvmAddress
17
+
18
+ expectTypeOf(
19
+ normalizeAddress(EvmChainId.ETHEREUM, address),
20
+ ).toEqualTypeOf<EvmAddress>()
21
+ })
22
+
23
+ it('preserves SVM address types', () => {
24
+ const address = 'So11111111111111111111111111111111111111112' as SvmAddress
25
+
26
+ expectTypeOf(
27
+ normalizeAddress(SvmChainId.SOLANA, address),
28
+ ).toEqualTypeOf<SvmAddress>()
29
+ })
30
+
31
+ it('preserves Stellar account and contract address types', () => {
32
+ const accountAddress =
33
+ 'GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN7' as StellarAccountAddress
34
+ const contractAddress =
35
+ 'CCRSMJDITH3VK5QOGYCVZDAKIY5GL3RCG4TCVLIAVB662IW2V5KJGZGF' as StellarContractAddress
36
+
37
+ expectTypeOf(
38
+ normalizeAddress(StellarChainId.STELLAR, accountAddress),
39
+ ).toEqualTypeOf<StellarAccountAddress>()
40
+ expectTypeOf(
41
+ normalizeAddress(StellarChainId.STELLAR, contractAddress),
42
+ ).toEqualTypeOf<StellarContractAddress>()
43
+ })
44
+
45
+ it('preserves same-chain address unions', () => {
46
+ function normalizeStellarUnion(
47
+ address: StellarAccountAddress | StellarContractAddress,
48
+ ) {
49
+ expectTypeOf(
50
+ normalizeAddress(StellarChainId.STELLAR, address),
51
+ ).toEqualTypeOf<StellarAccountAddress | StellarContractAddress>()
52
+ }
53
+
54
+ expectTypeOf(normalizeStellarUnion).returns.toEqualTypeOf<void>()
55
+ })
56
+
57
+ it('preserves cross-chain address unions', () => {
58
+ function normalizeEvmOrSvmUnion(
59
+ chainId: typeof EvmChainId.ETHEREUM | typeof SvmChainId.SOLANA,
60
+ address: EvmAddress | SvmAddress,
61
+ ) {
62
+ expectTypeOf(normalizeAddress(chainId, address)).toEqualTypeOf<
63
+ EvmAddress | SvmAddress
64
+ >()
65
+ }
66
+
67
+ expectTypeOf(normalizeEvmOrSvmUnion).returns.toEqualTypeOf<void>()
68
+ })
69
+
70
+ it('preserves address types without chain ids', () => {
71
+ const evmAddress =
72
+ '0x0000000000000000000000000000000000000000' as EvmAddress
73
+ const mvmAddress = '0x1::coin::T' as MvmAddress
74
+ const svmAddress =
75
+ 'So11111111111111111111111111111111111111112' as SvmAddress
76
+ const stellarAccountAddress =
77
+ 'GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN7' as StellarAccountAddress
78
+ const stellarContractAddress =
79
+ 'CCRSMJDITH3VK5QOGYCVZDAKIY5GL3RCG4TCVLIAVB662IW2V5KJGZGF' as StellarContractAddress
80
+
81
+ expectTypeOf(normalizeAddress(evmAddress)).toEqualTypeOf<EvmAddress>()
82
+ expectTypeOf(normalizeAddress(mvmAddress)).toEqualTypeOf<MvmAddress>()
83
+ expectTypeOf(normalizeAddress(svmAddress)).toEqualTypeOf<SvmAddress>()
84
+ expectTypeOf(
85
+ normalizeAddress(stellarAccountAddress),
86
+ ).toEqualTypeOf<StellarAccountAddress>()
87
+ expectTypeOf(
88
+ normalizeAddress(stellarContractAddress),
89
+ ).toEqualTypeOf<StellarContractAddress>()
90
+ })
91
+
92
+ it('preserves address unions without chain ids', () => {
93
+ function normalizeStellarUnion(
94
+ address: StellarAccountAddress | StellarContractAddress,
95
+ ) {
96
+ expectTypeOf(normalizeAddress(address)).toEqualTypeOf<
97
+ StellarAccountAddress | StellarContractAddress
98
+ >()
99
+ }
100
+
101
+ function normalizeEvmOrSvmUnion(address: EvmAddress | SvmAddress) {
102
+ expectTypeOf(normalizeAddress(address)).toEqualTypeOf<
103
+ EvmAddress | SvmAddress
104
+ >()
105
+ }
106
+
107
+ expectTypeOf(normalizeStellarUnion).returns.toEqualTypeOf<void>()
108
+ expectTypeOf(normalizeEvmOrSvmUnion).returns.toEqualTypeOf<void>()
109
+ })
110
+ })
@@ -0,0 +1,29 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import type { EvmAddress } from '../../evm/currency/token.js'
3
+ import type { MvmAddress } from '../../mvm/currency/token.js'
4
+ import type { StellarContractAddress } from '../../stellar/address.js'
5
+ import type { SvmAddress } from '../../svm/currency/token.js'
6
+ import { normalizeAddress } from './normalize-address.js'
7
+
8
+ describe('normalizeAddress', () => {
9
+ it('normalizes addresses without chain ids by address format', () => {
10
+ expect(
11
+ normalizeAddress(
12
+ '0x000000000000000000000000000000000000dEaD' as EvmAddress,
13
+ ),
14
+ ).toBe('0x000000000000000000000000000000000000dead')
15
+
16
+ const mvmAddress = '0xABC::Coin::T' as MvmAddress
17
+ expect(normalizeAddress(mvmAddress)).toBe(mvmAddress)
18
+
19
+ const svmAddress =
20
+ 'So11111111111111111111111111111111111111112' as SvmAddress
21
+ expect(normalizeAddress(svmAddress)).toBe(svmAddress)
22
+
23
+ expect(
24
+ normalizeAddress(
25
+ 'ccrsmjdith3vk5qogycvzdakiy5gl3rcg4tcvliavb662iw2v5kjgzgf' as StellarContractAddress,
26
+ ),
27
+ ).toBe('CCRSMJDITH3VK5QOGYCVZDAKIY5GL3RCG4TCVLIAVB662IW2V5KJGZGF')
28
+ })
29
+ })
@@ -1,46 +1,88 @@
1
1
  import type { EvmChainId } from '../../evm/chain/chains.js'
2
2
  import { isEvmChainId } from '../../evm/chain/chains.js'
3
+ import { type EvmAddress, isEvmAddress } from '../../evm/currency/token.js'
3
4
  import { normalizeEvmAddress } from '../../evm/utils/normalize-address.js'
4
5
  import type { MvmChainId } from '../../mvm/chain/chains.js'
5
6
  import { isMvmChainId } from '../../mvm/chain/chains.js'
7
+ import { isMvmAddress } from '../../mvm/currency/token.js'
6
8
  import { normalizeMvmAddress } from '../../mvm/utils/normalize-address.js'
9
+ import { isStellarAddress, type StellarAddress } from '../../stellar/address.js'
7
10
  import type { StellarChainId } from '../../stellar/chain/chains.js'
8
11
  import { isStellarChainId } from '../../stellar/chain/chains.js'
9
12
  import { normalizeStellarAddress } from '../../stellar/utils/normalize-address.js'
10
13
  import type { SvmChainId } from '../../svm/chain/chains.js'
11
14
  import { isSvmChainId } from '../../svm/chain/chains.js'
15
+ import { isSvmAddress, type SvmAddress } from '../../svm/currency/token.js'
12
16
  import { normalizeSvmAddress } from '../../svm/utils/normalize-address.js'
13
17
  import type { ChainId } from '../chain/chains.js'
14
18
  import type { AddressFor } from '../types/for-chain.js'
15
19
  import { assertNever } from './assert-never.js'
16
20
 
17
- export function normalizeAddress<TChainId extends ChainId>(
18
- chainId: TChainId,
19
- address: AddressFor<TChainId>,
20
- ): AddressFor<TChainId> {
21
+ export function normalizeAddress<TAddress extends AddressFor<ChainId>>(
22
+ address: TAddress,
23
+ ): TAddress
24
+ export function normalizeAddress<
25
+ TChainId extends ChainId,
26
+ TAddress extends AddressFor<TChainId>,
27
+ >(chainId: TChainId, address: TAddress): TAddress
28
+ export function normalizeAddress(
29
+ chainIdOrAddress: ChainId | AddressFor<ChainId>,
30
+ address?: AddressFor<ChainId>,
31
+ ): AddressFor<ChainId> {
32
+ if (address === undefined) {
33
+ if (typeof chainIdOrAddress !== 'string') {
34
+ throw new Error(
35
+ `normalizeAddress, unsupported address: ${chainIdOrAddress}`,
36
+ )
37
+ }
38
+
39
+ return normalizeAddressByFormat(chainIdOrAddress)
40
+ }
41
+
42
+ return normalizeAddressByChainId(chainIdOrAddress as ChainId, address)
43
+ }
44
+
45
+ function normalizeAddressByChainId(
46
+ chainId: ChainId,
47
+ address: AddressFor<ChainId>,
48
+ ) {
21
49
  if (isEvmChainId(chainId)) {
22
- return normalizeEvmAddress(
23
- address as AddressFor<EvmChainId>,
24
- ) as AddressFor<TChainId>
50
+ return normalizeEvmAddress(address as AddressFor<EvmChainId>)
25
51
  }
26
52
 
27
53
  if (isMvmChainId(chainId)) {
28
- return normalizeMvmAddress(
29
- address as AddressFor<MvmChainId>,
30
- ) as AddressFor<TChainId>
54
+ return normalizeMvmAddress(address as AddressFor<MvmChainId>)
31
55
  }
32
56
 
33
57
  if (isSvmChainId(chainId)) {
34
- return normalizeSvmAddress(
35
- address as AddressFor<SvmChainId>,
36
- ) as AddressFor<TChainId>
58
+ return normalizeSvmAddress(address as AddressFor<SvmChainId>)
37
59
  }
38
60
 
39
61
  if (isStellarChainId(chainId)) {
40
- return normalizeStellarAddress(
41
- address as AddressFor<StellarChainId>,
42
- ) as AddressFor<TChainId>
62
+ return normalizeStellarAddress(address as AddressFor<StellarChainId>)
43
63
  }
44
64
 
45
65
  assertNever(chainId, `normalizeAddress, unsupported chainId: ${chainId}`)
46
66
  }
67
+
68
+ function normalizeAddressByFormat(
69
+ address: AddressFor<ChainId>,
70
+ ): AddressFor<ChainId> {
71
+ if (isMvmAddress(address)) {
72
+ return normalizeMvmAddress(address)
73
+ }
74
+
75
+ if (isEvmAddress(address)) {
76
+ return normalizeEvmAddress(address as EvmAddress)
77
+ }
78
+
79
+ if (isSvmAddress(address)) {
80
+ return normalizeSvmAddress(address as SvmAddress)
81
+ }
82
+
83
+ if (isStellarAddress(address.toUpperCase())) {
84
+ return normalizeStellarAddress(address as StellarAddress)
85
+ }
86
+
87
+ throw new Error(`normalizeAddress, unsupported address: ${address}`)
88
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sushi",
3
3
  "description": "Sushi",
4
- "version": "6.6.5",
4
+ "version": "6.6.7",
5
5
  "type": "module",
6
6
  "main": "./_cjs/generic/index.js",
7
7
  "module": "./_esm/generic/index.js",
@@ -21,10 +21,11 @@ describe('stellar addresses', () => {
21
21
  expect(isStellarContractAddress(contractAddress)).toBe(true)
22
22
  })
23
23
 
24
- it('accepts both account and contract addresses as Stellar addresses', () => {
24
+ it('accepts account and contract addresses as Stellar addresses', () => {
25
25
  expect(isStellarAddress(accountAddress)).toBe(true)
26
26
  expect(isStellarAddress(contractAddress)).toBe(true)
27
27
  expect(isStellarAddress('0x1234')).toBe(false)
28
+ expect(isStellarAddress(`M${'A'.repeat(68)}`)).toBe(false)
28
29
  })
29
30
 
30
31
  it('normalizes account, contract, and chain addresses', () => {
@@ -4,6 +4,8 @@ export type StellarAddress = StellarAccountAddress | StellarContractAddress
4
4
  export type StellarTxHash = string
5
5
 
6
6
  const stellarAccountAddressRegex = /^G[A-Z2-7]{55}$/
7
+ const stellarContractAddressRegex = /^C[A-Z2-7]{55}$/
8
+ const stellarAddressRegex = /^[GC][A-Z2-7]{55}$/
7
9
 
8
10
  export function isStellarAccountAddress(
9
11
  address: string,
@@ -11,8 +13,6 @@ export function isStellarAccountAddress(
11
13
  return stellarAccountAddressRegex.test(address)
12
14
  }
13
15
 
14
- const stellarContractAddressRegex = /^C[A-Z2-7]{55}$/
15
-
16
16
  export function isStellarContractAddress(
17
17
  address: string,
18
18
  ): address is StellarContractAddress {
@@ -20,5 +20,5 @@ export function isStellarContractAddress(
20
20
  }
21
21
 
22
22
  export function isStellarAddress(address: string): address is StellarAddress {
23
- return isStellarAccountAddress(address) || isStellarContractAddress(address)
23
+ return stellarAddressRegex.test(address)
24
24
  }