@metamask-previews/bridge-controller 10.0.0-preview-e7013a54 → 10.0.0-preview-e56c504a

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.
Files changed (96) hide show
  1. package/CHANGELOG.md +0 -18
  2. package/dist/bridge-controller.cjs +25 -96
  3. package/dist/bridge-controller.cjs.map +1 -1
  4. package/dist/bridge-controller.d.cts +5 -5
  5. package/dist/bridge-controller.d.cts.map +1 -1
  6. package/dist/bridge-controller.d.mts +5 -5
  7. package/dist/bridge-controller.d.mts.map +1 -1
  8. package/dist/bridge-controller.mjs +26 -97
  9. package/dist/bridge-controller.mjs.map +1 -1
  10. package/dist/constants/bridge.cjs +1 -2
  11. package/dist/constants/bridge.cjs.map +1 -1
  12. package/dist/constants/bridge.d.cts +1 -2
  13. package/dist/constants/bridge.d.cts.map +1 -1
  14. package/dist/constants/bridge.d.mts +1 -2
  15. package/dist/constants/bridge.d.mts.map +1 -1
  16. package/dist/constants/bridge.mjs +1 -2
  17. package/dist/constants/bridge.mjs.map +1 -1
  18. package/dist/constants/chains.cjs +12 -1
  19. package/dist/constants/chains.cjs.map +1 -1
  20. package/dist/constants/chains.d.cts +2 -0
  21. package/dist/constants/chains.d.cts.map +1 -1
  22. package/dist/constants/chains.d.mts +2 -0
  23. package/dist/constants/chains.d.mts.map +1 -1
  24. package/dist/constants/chains.mjs +11 -0
  25. package/dist/constants/chains.mjs.map +1 -1
  26. package/dist/constants/tokens.cjs +38 -61
  27. package/dist/constants/tokens.cjs.map +1 -1
  28. package/dist/constants/tokens.d.cts +48 -100
  29. package/dist/constants/tokens.d.cts.map +1 -1
  30. package/dist/constants/tokens.d.mts +48 -100
  31. package/dist/constants/tokens.d.mts.map +1 -1
  32. package/dist/constants/tokens.mjs +14 -37
  33. package/dist/constants/tokens.mjs.map +1 -1
  34. package/dist/index.cjs +1 -21
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.cts +4 -16
  37. package/dist/index.d.cts.map +1 -1
  38. package/dist/index.d.mts +4 -16
  39. package/dist/index.d.mts.map +1 -1
  40. package/dist/index.mjs +2 -11
  41. package/dist/index.mjs.map +1 -1
  42. package/dist/types.cjs +3 -4
  43. package/dist/types.cjs.map +1 -1
  44. package/dist/types.d.cts +54 -108
  45. package/dist/types.d.cts.map +1 -1
  46. package/dist/types.d.mts +54 -108
  47. package/dist/types.d.mts.map +1 -1
  48. package/dist/types.mjs +3 -4
  49. package/dist/types.mjs.map +1 -1
  50. package/dist/utils/balance.cjs +2 -2
  51. package/dist/utils/balance.cjs.map +1 -1
  52. package/dist/utils/balance.d.cts.map +1 -1
  53. package/dist/utils/balance.d.mts.map +1 -1
  54. package/dist/utils/balance.mjs +2 -2
  55. package/dist/utils/balance.mjs.map +1 -1
  56. package/dist/utils/bridge.cjs +5 -65
  57. package/dist/utils/bridge.cjs.map +1 -1
  58. package/dist/utils/bridge.d.cts +4 -27
  59. package/dist/utils/bridge.d.cts.map +1 -1
  60. package/dist/utils/bridge.d.mts +4 -27
  61. package/dist/utils/bridge.d.mts.map +1 -1
  62. package/dist/utils/bridge.mjs +5 -62
  63. package/dist/utils/bridge.mjs.map +1 -1
  64. package/dist/utils/fetch.cjs +26 -34
  65. package/dist/utils/fetch.cjs.map +1 -1
  66. package/dist/utils/fetch.d.cts +5 -6
  67. package/dist/utils/fetch.d.cts.map +1 -1
  68. package/dist/utils/fetch.d.mts +5 -6
  69. package/dist/utils/fetch.d.mts.map +1 -1
  70. package/dist/utils/fetch.mjs +24 -32
  71. package/dist/utils/fetch.mjs.map +1 -1
  72. package/dist/utils/quote.cjs +2 -12
  73. package/dist/utils/quote.cjs.map +1 -1
  74. package/dist/utils/quote.d.cts +2 -2
  75. package/dist/utils/quote.d.cts.map +1 -1
  76. package/dist/utils/quote.d.mts +2 -2
  77. package/dist/utils/quote.d.mts.map +1 -1
  78. package/dist/utils/quote.mjs +2 -12
  79. package/dist/utils/quote.mjs.map +1 -1
  80. package/dist/utils/validators.cjs +16 -15
  81. package/dist/utils/validators.cjs.map +1 -1
  82. package/dist/utils/validators.d.cts +3 -2
  83. package/dist/utils/validators.d.cts.map +1 -1
  84. package/dist/utils/validators.d.mts +3 -2
  85. package/dist/utils/validators.d.mts.map +1 -1
  86. package/dist/utils/validators.mjs +17 -16
  87. package/dist/utils/validators.mjs.map +1 -1
  88. package/package.json +2 -7
  89. package/dist/utils/caip-formatters.cjs +0 -102
  90. package/dist/utils/caip-formatters.cjs.map +0 -1
  91. package/dist/utils/caip-formatters.d.cts +0 -31
  92. package/dist/utils/caip-formatters.d.cts.map +0 -1
  93. package/dist/utils/caip-formatters.d.mts +0 -31
  94. package/dist/utils/caip-formatters.d.mts.map +0 -1
  95. package/dist/utils/caip-formatters.mjs +0 -95
  96. package/dist/utils/caip-formatters.mjs.map +0 -1
@@ -1,28 +1,20 @@
1
1
  import { isValidHexAddress } from "@metamask/controller-utils";
2
- import { string, boolean, number, type, is, record, array, nullable, optional, enums, define, union } from "@metamask/superstruct";
2
+ import { string, boolean, number, type, is, record, array, nullable, optional, enums, define, intersection, size } from "@metamask/superstruct";
3
3
  import { isStrictHexString } from "@metamask/utils";
4
4
  import { ActionTypes, BridgeFlag, FeeType } from "../types.mjs";
5
5
  const HexAddressSchema = define('HexAddress', (v) => isValidHexAddress(v, { allowNonPrefixed: false }));
6
6
  const HexStringSchema = define('HexString', (v) => isStrictHexString(v));
7
7
  export const truthyString = (s) => Boolean(s?.length);
8
8
  const TruthyDigitStringSchema = define('TruthyDigitString', (v) => truthyString(v) && Boolean(v.match(/^\d+$/u)));
9
- const ChainIdSchema = number();
10
- const BridgeAssetSchema = type({
11
- chainId: ChainIdSchema,
12
- address: string(),
13
- assetId: string(),
14
- symbol: string(),
15
- name: string(),
9
+ const SwapsTokenObjectSchema = type({
16
10
  decimals: number(),
17
- icon: optional(string()),
18
- iconUrl: optional(string()),
11
+ address: intersection([string(), HexAddressSchema]),
12
+ symbol: size(string(), 1, 12),
19
13
  });
20
14
  export const validateFeatureFlagsResponse = (data) => {
21
15
  const ChainConfigurationSchema = type({
22
16
  isActiveSrc: boolean(),
23
17
  isActiveDest: boolean(),
24
- refreshRate: optional(number()),
25
- topAssets: optional(array(string())),
26
18
  });
27
19
  const ConfigSchema = type({
28
20
  refreshRate: number(),
@@ -38,9 +30,18 @@ export const validateFeatureFlagsResponse = (data) => {
38
30
  return is(data, FeatureFlagResponseSchema);
39
31
  };
40
32
  export const validateSwapsTokenObject = (data) => {
41
- return is(data, BridgeAssetSchema);
33
+ return is(data, SwapsTokenObjectSchema);
42
34
  };
43
35
  export const validateQuoteResponse = (data) => {
36
+ const ChainIdSchema = number();
37
+ const BridgeAssetSchema = type({
38
+ chainId: ChainIdSchema,
39
+ address: string(),
40
+ symbol: string(),
41
+ name: string(),
42
+ decimals: number(),
43
+ icon: optional(string()),
44
+ });
44
45
  const FeeDataSchema = type({
45
46
  amount: TruthyDigitStringSchema,
46
47
  asset: BridgeAssetSchema,
@@ -64,10 +65,10 @@ export const validateQuoteResponse = (data) => {
64
65
  const QuoteSchema = type({
65
66
  requestId: string(),
66
67
  srcChainId: ChainIdSchema,
67
- srcAsset: BridgeAssetSchema,
68
+ srcAsset: SwapsTokenObjectSchema,
68
69
  srcTokenAmount: string(),
69
70
  destChainId: ChainIdSchema,
70
- destAsset: BridgeAssetSchema,
71
+ destAsset: SwapsTokenObjectSchema,
71
72
  destTokenAmount: string(),
72
73
  feeData: record(enums(Object.values(FeeType)), FeeDataSchema),
73
74
  bridgeId: string(),
@@ -86,7 +87,7 @@ export const validateQuoteResponse = (data) => {
86
87
  const QuoteResponseSchema = type({
87
88
  quote: QuoteSchema,
88
89
  approval: optional(TxDataSchema),
89
- trade: union([TxDataSchema, string()]),
90
+ trade: TxDataSchema,
90
91
  estimatedProcessingTimeInSeconds: number(),
91
92
  });
92
93
  return is(data, QuoteResponseSchema);
@@ -1 +1 @@
1
- {"version":3,"file":"validators.mjs","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { isValidHexAddress } from '@metamask/controller-utils';\nimport {\n string,\n boolean,\n number,\n type,\n is,\n record,\n array,\n nullable,\n optional,\n enums,\n define,\n union,\n} from '@metamask/superstruct';\nimport { isStrictHexString } from '@metamask/utils';\n\nimport type { BridgeAsset, FeatureFlagResponse, QuoteResponse } from '../types';\nimport { ActionTypes, BridgeFlag, FeeType } from '../types';\n\nconst HexAddressSchema = define('HexAddress', (v: unknown) =>\n isValidHexAddress(v as string, { allowNonPrefixed: false }),\n);\n\nconst HexStringSchema = define('HexString', (v: unknown) =>\n isStrictHexString(v as string),\n);\n\nexport const truthyString = (s: string) => Boolean(s?.length);\nconst TruthyDigitStringSchema = define(\n 'TruthyDigitString',\n (v: unknown) =>\n truthyString(v as string) && Boolean((v as string).match(/^\\d+$/u)),\n);\n\nconst ChainIdSchema = number();\n\nconst BridgeAssetSchema = type({\n chainId: ChainIdSchema,\n address: string(),\n assetId: string(),\n symbol: string(),\n name: string(),\n decimals: number(),\n icon: optional(string()),\n iconUrl: optional(string()),\n});\n\nexport const validateFeatureFlagsResponse = (\n data: unknown,\n): data is FeatureFlagResponse => {\n const ChainConfigurationSchema = type({\n isActiveSrc: boolean(),\n isActiveDest: boolean(),\n refreshRate: optional(number()),\n topAssets: optional(array(string())),\n });\n\n const ConfigSchema = type({\n refreshRate: number(),\n maxRefreshCount: number(),\n support: boolean(),\n chains: record(string(), ChainConfigurationSchema),\n });\n\n // Create schema for FeatureFlagResponse\n const FeatureFlagResponseSchema = type({\n [BridgeFlag.EXTENSION_CONFIG]: ConfigSchema,\n [BridgeFlag.MOBILE_CONFIG]: ConfigSchema,\n });\n\n return is(data, FeatureFlagResponseSchema);\n};\n\nexport const validateSwapsTokenObject = (\n data: unknown,\n): data is BridgeAsset => {\n return is(data, BridgeAssetSchema);\n};\n\nexport const validateQuoteResponse = (data: unknown): data is QuoteResponse => {\n const FeeDataSchema = type({\n amount: TruthyDigitStringSchema,\n asset: BridgeAssetSchema,\n });\n\n const ProtocolSchema = type({\n name: string(),\n displayName: optional(string()),\n icon: optional(string()),\n });\n\n const StepSchema = type({\n action: enums(Object.values(ActionTypes)),\n srcChainId: ChainIdSchema,\n destChainId: optional(ChainIdSchema),\n srcAsset: BridgeAssetSchema,\n destAsset: BridgeAssetSchema,\n srcAmount: string(),\n destAmount: string(),\n protocol: ProtocolSchema,\n });\n\n const RefuelDataSchema = StepSchema;\n\n const QuoteSchema = type({\n requestId: string(),\n srcChainId: ChainIdSchema,\n srcAsset: BridgeAssetSchema,\n srcTokenAmount: string(),\n destChainId: ChainIdSchema,\n destAsset: BridgeAssetSchema,\n destTokenAmount: string(),\n feeData: record(enums(Object.values(FeeType)), FeeDataSchema),\n bridgeId: string(),\n bridges: array(string()),\n steps: array(StepSchema),\n refuel: optional(RefuelDataSchema),\n });\n\n const TxDataSchema = type({\n chainId: number(),\n to: HexAddressSchema,\n from: HexAddressSchema,\n value: HexStringSchema,\n data: HexStringSchema,\n gasLimit: nullable(number()),\n });\n\n const QuoteResponseSchema = type({\n quote: QuoteSchema,\n approval: optional(TxDataSchema),\n trade: union([TxDataSchema, string()]),\n estimatedProcessingTimeInSeconds: number(),\n });\n\n return is(data, QuoteResponseSchema);\n};\n"]}
1
+ {"version":3,"file":"validators.mjs","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { isValidHexAddress } from '@metamask/controller-utils';\nimport {\n string,\n boolean,\n number,\n type,\n is,\n record,\n array,\n nullable,\n optional,\n enums,\n define,\n intersection,\n size,\n} from '@metamask/superstruct';\nimport { isStrictHexString } from '@metamask/utils';\n\nimport type { SwapsTokenObject } from '../constants/tokens';\nimport type { FeatureFlagResponse, QuoteResponse } from '../types';\nimport { ActionTypes, BridgeFlag, FeeType } from '../types';\n\nconst HexAddressSchema = define('HexAddress', (v: unknown) =>\n isValidHexAddress(v as string, { allowNonPrefixed: false }),\n);\n\nconst HexStringSchema = define('HexString', (v: unknown) =>\n isStrictHexString(v as string),\n);\n\nexport const truthyString = (s: string) => Boolean(s?.length);\nconst TruthyDigitStringSchema = define(\n 'TruthyDigitString',\n (v: unknown) =>\n truthyString(v as string) && Boolean((v as string).match(/^\\d+$/u)),\n);\n\nconst SwapsTokenObjectSchema = type({\n decimals: number(),\n address: intersection([string(), HexAddressSchema]),\n symbol: size(string(), 1, 12),\n});\n\nexport const validateFeatureFlagsResponse = (\n data: unknown,\n): data is FeatureFlagResponse => {\n const ChainConfigurationSchema = type({\n isActiveSrc: boolean(),\n isActiveDest: boolean(),\n });\n\n const ConfigSchema = type({\n refreshRate: number(),\n maxRefreshCount: number(),\n support: boolean(),\n chains: record(string(), ChainConfigurationSchema),\n });\n\n // Create schema for FeatureFlagResponse\n const FeatureFlagResponseSchema = type({\n [BridgeFlag.EXTENSION_CONFIG]: ConfigSchema,\n [BridgeFlag.MOBILE_CONFIG]: ConfigSchema,\n });\n\n return is(data, FeatureFlagResponseSchema);\n};\n\nexport const validateSwapsTokenObject = (\n data: unknown,\n): data is SwapsTokenObject => {\n return is(data, SwapsTokenObjectSchema);\n};\n\nexport const validateQuoteResponse = (data: unknown): data is QuoteResponse => {\n const ChainIdSchema = number();\n\n const BridgeAssetSchema = type({\n chainId: ChainIdSchema,\n address: string(),\n symbol: string(),\n name: string(),\n decimals: number(),\n icon: optional(string()),\n });\n\n const FeeDataSchema = type({\n amount: TruthyDigitStringSchema,\n asset: BridgeAssetSchema,\n });\n\n const ProtocolSchema = type({\n name: string(),\n displayName: optional(string()),\n icon: optional(string()),\n });\n\n const StepSchema = type({\n action: enums(Object.values(ActionTypes)),\n srcChainId: ChainIdSchema,\n destChainId: optional(ChainIdSchema),\n srcAsset: BridgeAssetSchema,\n destAsset: BridgeAssetSchema,\n srcAmount: string(),\n destAmount: string(),\n protocol: ProtocolSchema,\n });\n\n const RefuelDataSchema = StepSchema;\n\n const QuoteSchema = type({\n requestId: string(),\n srcChainId: ChainIdSchema,\n srcAsset: SwapsTokenObjectSchema,\n srcTokenAmount: string(),\n destChainId: ChainIdSchema,\n destAsset: SwapsTokenObjectSchema,\n destTokenAmount: string(),\n feeData: record(enums(Object.values(FeeType)), FeeDataSchema),\n bridgeId: string(),\n bridges: array(string()),\n steps: array(StepSchema),\n refuel: optional(RefuelDataSchema),\n });\n\n const TxDataSchema = type({\n chainId: number(),\n to: HexAddressSchema,\n from: HexAddressSchema,\n value: HexStringSchema,\n data: HexStringSchema,\n gasLimit: nullable(number()),\n });\n\n const QuoteResponseSchema = type({\n quote: QuoteSchema,\n approval: optional(TxDataSchema),\n trade: TxDataSchema,\n estimatedProcessingTimeInSeconds: number(),\n });\n\n return is(data, QuoteResponseSchema);\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/bridge-controller",
3
- "version": "10.0.0-preview-e7013a54",
3
+ "version": "10.0.0-preview-e56c504a",
4
4
  "description": "Manages bridge-related quote fetching functionality for MetaMask",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -54,19 +54,15 @@
54
54
  "@ethersproject/providers": "^5.7.0",
55
55
  "@metamask/base-controller": "^8.0.0",
56
56
  "@metamask/controller-utils": "^11.6.0",
57
- "@metamask/keyring-api": "^17.2.0",
58
57
  "@metamask/metamask-eth-abis": "^3.1.1",
59
- "@metamask/multichain-network-controller": "^0.3.0",
60
58
  "@metamask/polling-controller": "^13.0.0",
61
- "@metamask/snaps-utils": "^8.10.0",
62
59
  "@metamask/utils": "^11.2.0"
63
60
  },
64
61
  "devDependencies": {
65
62
  "@metamask/accounts-controller": "^27.0.0",
66
63
  "@metamask/auto-changelog": "^3.4.4",
67
64
  "@metamask/eth-json-rpc-provider": "^4.1.8",
68
- "@metamask/network-controller": "^23.1.0",
69
- "@metamask/snaps-controllers": "^9.19.0",
65
+ "@metamask/network-controller": "^23.0.0",
70
66
  "@metamask/superstruct": "^3.1.0",
71
67
  "@metamask/transaction-controller": "^52.0.0",
72
68
  "@types/jest": "^27.4.1",
@@ -83,7 +79,6 @@
83
79
  "peerDependencies": {
84
80
  "@metamask/accounts-controller": "^27.0.0",
85
81
  "@metamask/network-controller": "^23.0.0",
86
- "@metamask/snaps-controllers": "^9.19.0",
87
82
  "@metamask/transaction-controller": "^52.0.0"
88
83
  },
89
84
  "engines": {
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatAddressToCaipReference = exports.formatChainIdToHex = exports.formatChainIdToDec = exports.formatChainIdToCaip = void 0;
4
- const address_1 = require("@ethersproject/address");
5
- const constants_1 = require("@ethersproject/constants");
6
- const controller_utils_1 = require("@metamask/controller-utils");
7
- const keyring_api_1 = require("@metamask/keyring-api");
8
- const multichain_network_controller_1 = require("@metamask/multichain-network-controller");
9
- const utils_1 = require("@metamask/utils");
10
- const bridge_1 = require("./bridge.cjs");
11
- const types_1 = require("../types.cjs");
12
- /**
13
- * Converts a chainId to a CaipChainId
14
- *
15
- * @param chainId - The chainId to convert
16
- * @returns The CaipChainId
17
- */
18
- const formatChainIdToCaip = (chainId) => {
19
- if ((0, utils_1.isCaipChainId)(chainId)) {
20
- return chainId;
21
- }
22
- if ((0, utils_1.isStrictHexString)(chainId)) {
23
- return (0, multichain_network_controller_1.toEvmCaipChainId)(chainId);
24
- }
25
- if ((0, bridge_1.isSolanaChainId)(chainId)) {
26
- return keyring_api_1.SolScope.Mainnet;
27
- }
28
- return (0, multichain_network_controller_1.toEvmCaipChainId)((0, utils_1.numberToHex)(Number(chainId)));
29
- };
30
- exports.formatChainIdToCaip = formatChainIdToCaip;
31
- /**
32
- * Converts a chainId to a decimal number that can be used for bridge-api requests
33
- *
34
- * @param chainId - The chainId to convert
35
- * @returns The decimal number
36
- */
37
- const formatChainIdToDec = (chainId) => {
38
- if ((0, utils_1.isStrictHexString)(chainId)) {
39
- return (0, controller_utils_1.convertHexToDecimal)(chainId);
40
- }
41
- if (chainId === keyring_api_1.SolScope.Mainnet) {
42
- return types_1.ChainId.SOLANA;
43
- }
44
- if ((0, utils_1.isCaipChainId)(chainId)) {
45
- return Number(chainId.split(':').at(-1));
46
- }
47
- if (typeof chainId === 'string') {
48
- return parseInt(chainId, 10);
49
- }
50
- return chainId;
51
- };
52
- exports.formatChainIdToDec = formatChainIdToDec;
53
- /**
54
- * Converts a chainId to a hex string used to read controller data within the app
55
- * Hex chainIds are also used for fetching exchange rates
56
- *
57
- * @param chainId - The chainId to convert
58
- * @returns The hex string
59
- */
60
- const formatChainIdToHex = (chainId) => {
61
- if ((0, utils_1.isStrictHexString)(chainId)) {
62
- return chainId;
63
- }
64
- if (typeof chainId === 'number' || parseInt(chainId, 10)) {
65
- return (0, utils_1.numberToHex)(Number(chainId));
66
- }
67
- if ((0, utils_1.isCaipChainId)(chainId)) {
68
- const { reference } = (0, utils_1.parseCaipChainId)(chainId);
69
- if ((0, utils_1.isCaipReference)(reference) && !isNaN(Number(reference))) {
70
- return (0, utils_1.numberToHex)(Number(reference));
71
- }
72
- }
73
- // Throw an error if a non-evm chainId is passed to this function
74
- // This should never happen, but it's a sanity check
75
- throw new Error(`Invalid cross-chain swaps chainId: ${chainId}`);
76
- };
77
- exports.formatChainIdToHex = formatChainIdToHex;
78
- /**
79
- * Converts an asset or account address to a string that can be used for bridge-api requests
80
- *
81
- * @param address - The address to convert
82
- * @returns The converted address
83
- */
84
- const formatAddressToCaipReference = (address) => {
85
- if ((0, utils_1.isStrictHexString)(address)) {
86
- return (0, address_1.getAddress)(address);
87
- }
88
- // If the address looks like a native token, return the zero address because it's
89
- // what bridge-api uses to represent a native asset
90
- if ((0, bridge_1.isNativeAddress)(address)) {
91
- return constants_1.AddressZero;
92
- }
93
- const addressWithoutPrefix = address.split(':').at(-1);
94
- // If the address is not a valid hex string or CAIP address, throw an error
95
- // This should never happen, but it's a sanity check
96
- if (!addressWithoutPrefix) {
97
- throw new Error('Invalid address');
98
- }
99
- return addressWithoutPrefix;
100
- };
101
- exports.formatAddressToCaipReference = formatAddressToCaipReference;
102
- //# sourceMappingURL=caip-formatters.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caip-formatters.cjs","sourceRoot":"","sources":["../../src/utils/caip-formatters.ts"],"names":[],"mappings":"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","sourcesContent":["import { getAddress } from '@ethersproject/address';\nimport { AddressZero } from '@ethersproject/constants';\nimport { convertHexToDecimal } from '@metamask/controller-utils';\nimport { SolScope } from '@metamask/keyring-api';\nimport { toEvmCaipChainId } from '@metamask/multichain-network-controller';\nimport {\n type Hex,\n type CaipChainId,\n isCaipChainId,\n isStrictHexString,\n parseCaipChainId,\n isCaipReference,\n numberToHex,\n} from '@metamask/utils';\n\nimport { isNativeAddress, isSolanaChainId } from './bridge';\nimport { ChainId } from '../types';\n\n/**\n * Converts a chainId to a CaipChainId\n *\n * @param chainId - The chainId to convert\n * @returns The CaipChainId\n */\nexport const formatChainIdToCaip = (\n chainId: Hex | number | CaipChainId | string,\n): CaipChainId => {\n if (isCaipChainId(chainId)) {\n return chainId;\n }\n if (isStrictHexString(chainId)) {\n return toEvmCaipChainId(chainId);\n }\n if (isSolanaChainId(chainId)) {\n return SolScope.Mainnet;\n }\n return toEvmCaipChainId(numberToHex(Number(chainId)));\n};\n\n/**\n * Converts a chainId to a decimal number that can be used for bridge-api requests\n *\n * @param chainId - The chainId to convert\n * @returns The decimal number\n */\nexport const formatChainIdToDec = (\n chainId: number | Hex | CaipChainId | string,\n) => {\n if (isStrictHexString(chainId)) {\n return convertHexToDecimal(chainId);\n }\n if (chainId === SolScope.Mainnet) {\n return ChainId.SOLANA;\n }\n if (isCaipChainId(chainId)) {\n return Number(chainId.split(':').at(-1));\n }\n if (typeof chainId === 'string') {\n return parseInt(chainId, 10);\n }\n return chainId;\n};\n\n/**\n * Converts a chainId to a hex string used to read controller data within the app\n * Hex chainIds are also used for fetching exchange rates\n *\n * @param chainId - The chainId to convert\n * @returns The hex string\n */\nexport const formatChainIdToHex = (\n chainId: Hex | CaipChainId | string | number,\n): Hex => {\n if (isStrictHexString(chainId)) {\n return chainId;\n }\n if (typeof chainId === 'number' || parseInt(chainId, 10)) {\n return numberToHex(Number(chainId));\n }\n if (isCaipChainId(chainId)) {\n const { reference } = parseCaipChainId(chainId);\n if (isCaipReference(reference) && !isNaN(Number(reference))) {\n return numberToHex(Number(reference));\n }\n }\n // Throw an error if a non-evm chainId is passed to this function\n // This should never happen, but it's a sanity check\n throw new Error(`Invalid cross-chain swaps chainId: ${chainId}`);\n};\n\n/**\n * Converts an asset or account address to a string that can be used for bridge-api requests\n *\n * @param address - The address to convert\n * @returns The converted address\n */\nexport const formatAddressToCaipReference = (address: string) => {\n if (isStrictHexString(address)) {\n return getAddress(address);\n }\n // If the address looks like a native token, return the zero address because it's\n // what bridge-api uses to represent a native asset\n if (isNativeAddress(address)) {\n return AddressZero;\n }\n const addressWithoutPrefix = address.split(':').at(-1);\n // If the address is not a valid hex string or CAIP address, throw an error\n // This should never happen, but it's a sanity check\n if (!addressWithoutPrefix) {\n throw new Error('Invalid address');\n }\n return addressWithoutPrefix;\n};\n"]}
@@ -1,31 +0,0 @@
1
- import { type Hex, type CaipChainId } from "@metamask/utils";
2
- /**
3
- * Converts a chainId to a CaipChainId
4
- *
5
- * @param chainId - The chainId to convert
6
- * @returns The CaipChainId
7
- */
8
- export declare const formatChainIdToCaip: (chainId: Hex | number | CaipChainId | string) => CaipChainId;
9
- /**
10
- * Converts a chainId to a decimal number that can be used for bridge-api requests
11
- *
12
- * @param chainId - The chainId to convert
13
- * @returns The decimal number
14
- */
15
- export declare const formatChainIdToDec: (chainId: number | Hex | CaipChainId | string) => number;
16
- /**
17
- * Converts a chainId to a hex string used to read controller data within the app
18
- * Hex chainIds are also used for fetching exchange rates
19
- *
20
- * @param chainId - The chainId to convert
21
- * @returns The hex string
22
- */
23
- export declare const formatChainIdToHex: (chainId: Hex | CaipChainId | string | number) => Hex;
24
- /**
25
- * Converts an asset or account address to a string that can be used for bridge-api requests
26
- *
27
- * @param address - The address to convert
28
- * @returns The converted address
29
- */
30
- export declare const formatAddressToCaipReference: (address: string) => string;
31
- //# sourceMappingURL=caip-formatters.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caip-formatters.d.cts","sourceRoot":"","sources":["../../src/utils/caip-formatters.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,WAAW,EAMjB,wBAAwB;AAKzB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,YACrB,GAAG,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,KAC3C,WAWF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,GAAG,GAAG,GAAG,WAAW,GAAG,MAAM,WAe7C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,YACpB,GAAG,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,KAC3C,GAgBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,YAAa,MAAM,WAgB3D,CAAC"}
@@ -1,31 +0,0 @@
1
- import { type Hex, type CaipChainId } from "@metamask/utils";
2
- /**
3
- * Converts a chainId to a CaipChainId
4
- *
5
- * @param chainId - The chainId to convert
6
- * @returns The CaipChainId
7
- */
8
- export declare const formatChainIdToCaip: (chainId: Hex | number | CaipChainId | string) => CaipChainId;
9
- /**
10
- * Converts a chainId to a decimal number that can be used for bridge-api requests
11
- *
12
- * @param chainId - The chainId to convert
13
- * @returns The decimal number
14
- */
15
- export declare const formatChainIdToDec: (chainId: number | Hex | CaipChainId | string) => number;
16
- /**
17
- * Converts a chainId to a hex string used to read controller data within the app
18
- * Hex chainIds are also used for fetching exchange rates
19
- *
20
- * @param chainId - The chainId to convert
21
- * @returns The hex string
22
- */
23
- export declare const formatChainIdToHex: (chainId: Hex | CaipChainId | string | number) => Hex;
24
- /**
25
- * Converts an asset or account address to a string that can be used for bridge-api requests
26
- *
27
- * @param address - The address to convert
28
- * @returns The converted address
29
- */
30
- export declare const formatAddressToCaipReference: (address: string) => string;
31
- //# sourceMappingURL=caip-formatters.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caip-formatters.d.mts","sourceRoot":"","sources":["../../src/utils/caip-formatters.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,WAAW,EAMjB,wBAAwB;AAKzB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,YACrB,GAAG,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,KAC3C,WAWF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,GAAG,GAAG,GAAG,WAAW,GAAG,MAAM,WAe7C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,YACpB,GAAG,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,KAC3C,GAgBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,YAAa,MAAM,WAgB3D,CAAC"}
@@ -1,95 +0,0 @@
1
- import { getAddress } from "@ethersproject/address";
2
- import { AddressZero } from "@ethersproject/constants";
3
- import { convertHexToDecimal } from "@metamask/controller-utils";
4
- import { SolScope } from "@metamask/keyring-api";
5
- import { toEvmCaipChainId } from "@metamask/multichain-network-controller";
6
- import { isCaipChainId, isStrictHexString, parseCaipChainId, isCaipReference, numberToHex } from "@metamask/utils";
7
- import { isNativeAddress, isSolanaChainId } from "./bridge.mjs";
8
- import { ChainId } from "../types.mjs";
9
- /**
10
- * Converts a chainId to a CaipChainId
11
- *
12
- * @param chainId - The chainId to convert
13
- * @returns The CaipChainId
14
- */
15
- export const formatChainIdToCaip = (chainId) => {
16
- if (isCaipChainId(chainId)) {
17
- return chainId;
18
- }
19
- if (isStrictHexString(chainId)) {
20
- return toEvmCaipChainId(chainId);
21
- }
22
- if (isSolanaChainId(chainId)) {
23
- return SolScope.Mainnet;
24
- }
25
- return toEvmCaipChainId(numberToHex(Number(chainId)));
26
- };
27
- /**
28
- * Converts a chainId to a decimal number that can be used for bridge-api requests
29
- *
30
- * @param chainId - The chainId to convert
31
- * @returns The decimal number
32
- */
33
- export const formatChainIdToDec = (chainId) => {
34
- if (isStrictHexString(chainId)) {
35
- return convertHexToDecimal(chainId);
36
- }
37
- if (chainId === SolScope.Mainnet) {
38
- return ChainId.SOLANA;
39
- }
40
- if (isCaipChainId(chainId)) {
41
- return Number(chainId.split(':').at(-1));
42
- }
43
- if (typeof chainId === 'string') {
44
- return parseInt(chainId, 10);
45
- }
46
- return chainId;
47
- };
48
- /**
49
- * Converts a chainId to a hex string used to read controller data within the app
50
- * Hex chainIds are also used for fetching exchange rates
51
- *
52
- * @param chainId - The chainId to convert
53
- * @returns The hex string
54
- */
55
- export const formatChainIdToHex = (chainId) => {
56
- if (isStrictHexString(chainId)) {
57
- return chainId;
58
- }
59
- if (typeof chainId === 'number' || parseInt(chainId, 10)) {
60
- return numberToHex(Number(chainId));
61
- }
62
- if (isCaipChainId(chainId)) {
63
- const { reference } = parseCaipChainId(chainId);
64
- if (isCaipReference(reference) && !isNaN(Number(reference))) {
65
- return numberToHex(Number(reference));
66
- }
67
- }
68
- // Throw an error if a non-evm chainId is passed to this function
69
- // This should never happen, but it's a sanity check
70
- throw new Error(`Invalid cross-chain swaps chainId: ${chainId}`);
71
- };
72
- /**
73
- * Converts an asset or account address to a string that can be used for bridge-api requests
74
- *
75
- * @param address - The address to convert
76
- * @returns The converted address
77
- */
78
- export const formatAddressToCaipReference = (address) => {
79
- if (isStrictHexString(address)) {
80
- return getAddress(address);
81
- }
82
- // If the address looks like a native token, return the zero address because it's
83
- // what bridge-api uses to represent a native asset
84
- if (isNativeAddress(address)) {
85
- return AddressZero;
86
- }
87
- const addressWithoutPrefix = address.split(':').at(-1);
88
- // If the address is not a valid hex string or CAIP address, throw an error
89
- // This should never happen, but it's a sanity check
90
- if (!addressWithoutPrefix) {
91
- throw new Error('Invalid address');
92
- }
93
- return addressWithoutPrefix;
94
- };
95
- //# sourceMappingURL=caip-formatters.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caip-formatters.mjs","sourceRoot":"","sources":["../../src/utils/caip-formatters.ts"],"names":[],"mappings":"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","sourcesContent":["import { getAddress } from '@ethersproject/address';\nimport { AddressZero } from '@ethersproject/constants';\nimport { convertHexToDecimal } from '@metamask/controller-utils';\nimport { SolScope } from '@metamask/keyring-api';\nimport { toEvmCaipChainId } from '@metamask/multichain-network-controller';\nimport {\n type Hex,\n type CaipChainId,\n isCaipChainId,\n isStrictHexString,\n parseCaipChainId,\n isCaipReference,\n numberToHex,\n} from '@metamask/utils';\n\nimport { isNativeAddress, isSolanaChainId } from './bridge';\nimport { ChainId } from '../types';\n\n/**\n * Converts a chainId to a CaipChainId\n *\n * @param chainId - The chainId to convert\n * @returns The CaipChainId\n */\nexport const formatChainIdToCaip = (\n chainId: Hex | number | CaipChainId | string,\n): CaipChainId => {\n if (isCaipChainId(chainId)) {\n return chainId;\n }\n if (isStrictHexString(chainId)) {\n return toEvmCaipChainId(chainId);\n }\n if (isSolanaChainId(chainId)) {\n return SolScope.Mainnet;\n }\n return toEvmCaipChainId(numberToHex(Number(chainId)));\n};\n\n/**\n * Converts a chainId to a decimal number that can be used for bridge-api requests\n *\n * @param chainId - The chainId to convert\n * @returns The decimal number\n */\nexport const formatChainIdToDec = (\n chainId: number | Hex | CaipChainId | string,\n) => {\n if (isStrictHexString(chainId)) {\n return convertHexToDecimal(chainId);\n }\n if (chainId === SolScope.Mainnet) {\n return ChainId.SOLANA;\n }\n if (isCaipChainId(chainId)) {\n return Number(chainId.split(':').at(-1));\n }\n if (typeof chainId === 'string') {\n return parseInt(chainId, 10);\n }\n return chainId;\n};\n\n/**\n * Converts a chainId to a hex string used to read controller data within the app\n * Hex chainIds are also used for fetching exchange rates\n *\n * @param chainId - The chainId to convert\n * @returns The hex string\n */\nexport const formatChainIdToHex = (\n chainId: Hex | CaipChainId | string | number,\n): Hex => {\n if (isStrictHexString(chainId)) {\n return chainId;\n }\n if (typeof chainId === 'number' || parseInt(chainId, 10)) {\n return numberToHex(Number(chainId));\n }\n if (isCaipChainId(chainId)) {\n const { reference } = parseCaipChainId(chainId);\n if (isCaipReference(reference) && !isNaN(Number(reference))) {\n return numberToHex(Number(reference));\n }\n }\n // Throw an error if a non-evm chainId is passed to this function\n // This should never happen, but it's a sanity check\n throw new Error(`Invalid cross-chain swaps chainId: ${chainId}`);\n};\n\n/**\n * Converts an asset or account address to a string that can be used for bridge-api requests\n *\n * @param address - The address to convert\n * @returns The converted address\n */\nexport const formatAddressToCaipReference = (address: string) => {\n if (isStrictHexString(address)) {\n return getAddress(address);\n }\n // If the address looks like a native token, return the zero address because it's\n // what bridge-api uses to represent a native asset\n if (isNativeAddress(address)) {\n return AddressZero;\n }\n const addressWithoutPrefix = address.split(':').at(-1);\n // If the address is not a valid hex string or CAIP address, throw an error\n // This should never happen, but it's a sanity check\n if (!addressWithoutPrefix) {\n throw new Error('Invalid address');\n }\n return addressWithoutPrefix;\n};\n"]}