@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.
- package/CHANGELOG.md +0 -18
- package/dist/bridge-controller.cjs +25 -96
- package/dist/bridge-controller.cjs.map +1 -1
- package/dist/bridge-controller.d.cts +5 -5
- package/dist/bridge-controller.d.cts.map +1 -1
- package/dist/bridge-controller.d.mts +5 -5
- package/dist/bridge-controller.d.mts.map +1 -1
- package/dist/bridge-controller.mjs +26 -97
- package/dist/bridge-controller.mjs.map +1 -1
- package/dist/constants/bridge.cjs +1 -2
- package/dist/constants/bridge.cjs.map +1 -1
- package/dist/constants/bridge.d.cts +1 -2
- package/dist/constants/bridge.d.cts.map +1 -1
- package/dist/constants/bridge.d.mts +1 -2
- package/dist/constants/bridge.d.mts.map +1 -1
- package/dist/constants/bridge.mjs +1 -2
- package/dist/constants/bridge.mjs.map +1 -1
- package/dist/constants/chains.cjs +12 -1
- package/dist/constants/chains.cjs.map +1 -1
- package/dist/constants/chains.d.cts +2 -0
- package/dist/constants/chains.d.cts.map +1 -1
- package/dist/constants/chains.d.mts +2 -0
- package/dist/constants/chains.d.mts.map +1 -1
- package/dist/constants/chains.mjs +11 -0
- package/dist/constants/chains.mjs.map +1 -1
- package/dist/constants/tokens.cjs +38 -61
- package/dist/constants/tokens.cjs.map +1 -1
- package/dist/constants/tokens.d.cts +48 -100
- package/dist/constants/tokens.d.cts.map +1 -1
- package/dist/constants/tokens.d.mts +48 -100
- package/dist/constants/tokens.d.mts.map +1 -1
- package/dist/constants/tokens.mjs +14 -37
- package/dist/constants/tokens.mjs.map +1 -1
- package/dist/index.cjs +1 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -16
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +4 -16
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -11
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs +3 -4
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +54 -108
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +54 -108
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +3 -4
- package/dist/types.mjs.map +1 -1
- package/dist/utils/balance.cjs +2 -2
- package/dist/utils/balance.cjs.map +1 -1
- package/dist/utils/balance.d.cts.map +1 -1
- package/dist/utils/balance.d.mts.map +1 -1
- package/dist/utils/balance.mjs +2 -2
- package/dist/utils/balance.mjs.map +1 -1
- package/dist/utils/bridge.cjs +5 -65
- package/dist/utils/bridge.cjs.map +1 -1
- package/dist/utils/bridge.d.cts +4 -27
- package/dist/utils/bridge.d.cts.map +1 -1
- package/dist/utils/bridge.d.mts +4 -27
- package/dist/utils/bridge.d.mts.map +1 -1
- package/dist/utils/bridge.mjs +5 -62
- package/dist/utils/bridge.mjs.map +1 -1
- package/dist/utils/fetch.cjs +26 -34
- package/dist/utils/fetch.cjs.map +1 -1
- package/dist/utils/fetch.d.cts +5 -6
- package/dist/utils/fetch.d.cts.map +1 -1
- package/dist/utils/fetch.d.mts +5 -6
- package/dist/utils/fetch.d.mts.map +1 -1
- package/dist/utils/fetch.mjs +24 -32
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/quote.cjs +2 -12
- package/dist/utils/quote.cjs.map +1 -1
- package/dist/utils/quote.d.cts +2 -2
- package/dist/utils/quote.d.cts.map +1 -1
- package/dist/utils/quote.d.mts +2 -2
- package/dist/utils/quote.d.mts.map +1 -1
- package/dist/utils/quote.mjs +2 -12
- package/dist/utils/quote.mjs.map +1 -1
- package/dist/utils/validators.cjs +16 -15
- package/dist/utils/validators.cjs.map +1 -1
- package/dist/utils/validators.d.cts +3 -2
- package/dist/utils/validators.d.cts.map +1 -1
- package/dist/utils/validators.d.mts +3 -2
- package/dist/utils/validators.d.mts.map +1 -1
- package/dist/utils/validators.mjs +17 -16
- package/dist/utils/validators.mjs.map +1 -1
- package/package.json +2 -7
- package/dist/utils/caip-formatters.cjs +0 -102
- package/dist/utils/caip-formatters.cjs.map +0 -1
- package/dist/utils/caip-formatters.d.cts +0 -31
- package/dist/utils/caip-formatters.d.cts.map +0 -1
- package/dist/utils/caip-formatters.d.mts +0 -31
- package/dist/utils/caip-formatters.d.mts.map +0 -1
- package/dist/utils/caip-formatters.mjs +0 -95
- 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,
|
|
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
|
|
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
|
-
|
|
18
|
-
|
|
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,
|
|
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:
|
|
68
|
+
srcAsset: SwapsTokenObjectSchema,
|
|
68
69
|
srcTokenAmount: string(),
|
|
69
70
|
destChainId: ChainIdSchema,
|
|
70
|
-
destAsset:
|
|
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:
|
|
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":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mCAAmC;AAC/D,OAAO,EACL,MAAM,EACN,OAAO,EACP,MAAM,EACN,IAAI,EACJ,EAAE,EACF,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,EACN,
|
|
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-
|
|
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.
|
|
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"]}
|