@shapeshiftoss/caip 8.16.1 → 8.16.2

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 (207) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/accountId/accountId.js +44 -0
  3. package/dist/cjs/accountId/accountId.test.js +109 -0
  4. package/dist/{adapters → cjs/adapters}/banxa/index.d.ts +1 -0
  5. package/dist/cjs/adapters/banxa/index.js +153 -0
  6. package/dist/cjs/adapters/coinbase/generate.js +9 -0
  7. package/dist/cjs/adapters/coinbase/generated/index.js +8 -0
  8. package/dist/cjs/adapters/coinbase/index.js +16 -0
  9. package/dist/cjs/adapters/coinbase/utils.js +55 -0
  10. package/dist/cjs/adapters/coincap/generate.js +10 -0
  11. package/dist/cjs/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  12. package/dist/cjs/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  13. package/dist/cjs/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  14. package/dist/cjs/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  15. package/dist/cjs/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  16. package/dist/cjs/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  17. package/dist/cjs/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  18. package/dist/{adapters → cjs/adapters}/coincap/generated/index.d.ts +11 -4
  19. package/dist/cjs/adapters/coincap/generated/index.js +34 -0
  20. package/dist/cjs/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  21. package/dist/{adapters → cjs/adapters}/coincap/index.d.ts +1 -1
  22. package/dist/cjs/adapters/coincap/index.js +44 -0
  23. package/dist/cjs/adapters/coincap/index.test.js +90 -0
  24. package/dist/{adapters → cjs/adapters}/coincap/utils.d.ts +3 -1
  25. package/dist/cjs/adapters/coincap/utils.js +146 -0
  26. package/dist/cjs/adapters/coincap/utils.test.js +173 -0
  27. package/dist/cjs/adapters/coingecko/generate.js +10 -0
  28. package/dist/cjs/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  29. package/dist/cjs/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  30. package/dist/cjs/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  31. package/dist/cjs/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  32. package/dist/cjs/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  33. package/dist/cjs/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  34. package/dist/cjs/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  35. package/dist/cjs/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  36. package/dist/cjs/adapters/coingecko/generated/index.js +40 -0
  37. package/dist/cjs/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  38. package/dist/cjs/adapters/coingecko/index.js +163 -0
  39. package/dist/cjs/adapters/coingecko/index.test.js +276 -0
  40. package/dist/cjs/adapters/coingecko/utils.js +190 -0
  41. package/dist/cjs/adapters/coingecko/utils.test.js +193 -0
  42. package/dist/cjs/adapters/index.js +22 -0
  43. package/dist/cjs/adapters/mtpelerin/index.js +127 -0
  44. package/dist/{adapters → cjs/adapters}/onramper/index.d.ts +1 -2
  45. package/dist/cjs/adapters/onramper/index.js +39 -0
  46. package/dist/cjs/assetId/assetId.js +126 -0
  47. package/dist/cjs/assetId/assetId.test.js +324 -0
  48. package/dist/cjs/chainId/chainId.js +25 -0
  49. package/dist/cjs/chainId/chainId.test.js +90 -0
  50. package/dist/{constants.d.ts → cjs/constants.d.ts} +1 -1
  51. package/dist/cjs/constants.js +173 -0
  52. package/dist/cjs/index.js +36 -0
  53. package/dist/cjs/package.json +1 -0
  54. package/dist/cjs/typeGuards.js +56 -0
  55. package/dist/{utils.d.ts → cjs/utils.d.ts} +1 -1
  56. package/dist/cjs/utils.js +56 -0
  57. package/dist/cjs/utils.test.js +160 -0
  58. package/dist/esm/.tsbuildinfo +1 -0
  59. package/dist/esm/accountId/accountId.d.ts +29 -0
  60. package/dist/{accountId → esm/accountId}/accountId.js +3 -3
  61. package/dist/esm/accountId/accountId.test.d.ts +1 -0
  62. package/dist/{accountId → esm/accountId}/accountId.test.js +3 -3
  63. package/dist/esm/adapters/banxa/index.d.ts +15 -0
  64. package/dist/{adapters → esm/adapters}/banxa/index.js +36 -2
  65. package/dist/esm/adapters/coinbase/generate.d.ts +1 -0
  66. package/dist/{adapters → esm/adapters}/coinbase/generate.js +1 -1
  67. package/dist/esm/adapters/coinbase/generated/adapter.json +153 -0
  68. package/dist/esm/adapters/coinbase/generated/index.js +2 -0
  69. package/dist/esm/adapters/coinbase/index.d.ts +3 -0
  70. package/dist/{adapters → esm/adapters}/coinbase/index.js +1 -1
  71. package/dist/esm/adapters/coinbase/utils.d.ts +12 -0
  72. package/dist/esm/adapters/coincap/generate.d.ts +1 -0
  73. package/dist/{adapters → esm/adapters}/coincap/generate.js +2 -2
  74. package/dist/esm/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  75. package/dist/esm/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  76. package/dist/esm/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  77. package/dist/esm/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  78. package/dist/esm/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  79. package/dist/esm/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +1 -0
  80. package/dist/esm/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  81. package/dist/esm/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  82. package/dist/esm/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  83. package/dist/esm/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  84. package/dist/esm/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  85. package/dist/esm/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  86. package/dist/esm/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  87. package/dist/esm/adapters/coincap/generated/index.d.ts +15 -0
  88. package/dist/{adapters → esm/adapters}/coincap/generated/index.js +11 -4
  89. package/dist/esm/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  90. package/dist/esm/adapters/coincap/index.d.ts +4 -0
  91. package/dist/{adapters → esm/adapters}/coincap/index.js +4 -4
  92. package/dist/esm/adapters/coincap/index.test.d.ts +1 -0
  93. package/dist/{adapters → esm/adapters}/coincap/index.test.js +9 -13
  94. package/dist/esm/adapters/coincap/utils.d.ts +24 -0
  95. package/dist/esm/adapters/coincap/utils.js +135 -0
  96. package/dist/esm/adapters/coincap/utils.test.d.ts +4 -0
  97. package/dist/{adapters → esm/adapters}/coincap/utils.test.js +7 -2
  98. package/dist/esm/adapters/coingecko/generate.d.ts +1 -0
  99. package/dist/{adapters → esm/adapters}/coingecko/generate.js +2 -2
  100. package/dist/esm/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  101. package/dist/esm/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  102. package/dist/esm/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  103. package/dist/esm/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  104. package/dist/esm/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  105. package/dist/esm/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +1 -0
  106. package/dist/esm/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +1 -0
  107. package/dist/esm/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  108. package/dist/esm/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  109. package/dist/esm/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  110. package/dist/esm/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  111. package/dist/esm/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  112. package/dist/esm/adapters/coingecko/generated/eip155_42170/adapter.json +1 -0
  113. package/dist/esm/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  114. package/dist/esm/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  115. package/dist/esm/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  116. package/dist/esm/adapters/coingecko/generated/index.js +18 -0
  117. package/dist/esm/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  118. package/dist/esm/adapters/coingecko/index.d.ts +26 -0
  119. package/dist/{adapters → esm/adapters}/coingecko/index.js +5 -5
  120. package/dist/esm/adapters/coingecko/index.test.d.ts +1 -0
  121. package/dist/{adapters → esm/adapters}/coingecko/index.test.js +3 -3
  122. package/dist/esm/adapters/coingecko/utils.d.ts +11 -0
  123. package/dist/{adapters → esm/adapters}/coingecko/utils.js +4 -4
  124. package/dist/esm/adapters/coingecko/utils.test.d.ts +1 -0
  125. package/dist/{adapters → esm/adapters}/coingecko/utils.test.js +2 -2
  126. package/dist/esm/adapters/index.d.ts +6 -0
  127. package/dist/esm/adapters/index.js +6 -0
  128. package/dist/esm/adapters/mtpelerin/index.d.ts +10 -0
  129. package/dist/{adapters → esm/adapters}/mtpelerin/index.js +24 -39
  130. package/dist/esm/adapters/onramper/index.d.ts +6 -0
  131. package/dist/esm/adapters/onramper/index.js +31 -0
  132. package/dist/esm/assetId/assetId.d.ts +36 -0
  133. package/dist/{assetId → esm/assetId}/assetId.js +3 -3
  134. package/dist/esm/assetId/assetId.test.d.ts +1 -0
  135. package/dist/{assetId → esm/assetId}/assetId.test.js +3 -17
  136. package/dist/esm/chainId/chainId.d.ts +20 -0
  137. package/dist/{chainId → esm/chainId}/chainId.js +1 -1
  138. package/dist/esm/chainId/chainId.test.d.ts +1 -0
  139. package/dist/{chainId → esm/chainId}/chainId.test.js +3 -3
  140. package/dist/esm/constants.d.ts +121 -0
  141. package/dist/{constants.js → esm/constants.js} +2 -2
  142. package/dist/esm/index.d.ts +7 -0
  143. package/dist/esm/index.js +7 -0
  144. package/dist/esm/typeGuards.d.ts +16 -0
  145. package/dist/{typeGuards.js → esm/typeGuards.js} +3 -3
  146. package/dist/esm/utils.d.ts +33 -0
  147. package/dist/{utils.js → esm/utils.js} +13 -16
  148. package/dist/esm/utils.test.d.ts +1 -0
  149. package/dist/{utils.test.js → esm/utils.test.js} +17 -21
  150. package/package.json +19 -7
  151. package/CHANGELOG.md +0 -726
  152. package/dist/adapters/coincap/generated/eip155_1/adapter.json +0 -1
  153. package/dist/adapters/coincap/utils.js +0 -40
  154. package/dist/adapters/coingecko/generated/eip155_1/adapter.json +0 -1
  155. package/dist/adapters/coingecko/generated/eip155_10/adapter.json +0 -1
  156. package/dist/adapters/coingecko/generated/eip155_100/adapter.json +0 -1
  157. package/dist/adapters/coingecko/generated/eip155_137/adapter.json +0 -1
  158. package/dist/adapters/coingecko/generated/eip155_42161/adapter.json +0 -1
  159. package/dist/adapters/coingecko/generated/eip155_43114/adapter.json +0 -1
  160. package/dist/adapters/coingecko/generated/eip155_56/adapter.json +0 -1
  161. package/dist/adapters/coingecko/generated/eip155_8453/adapter.json +0 -1
  162. package/dist/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +0 -1
  163. package/dist/adapters/index.js +0 -6
  164. package/dist/adapters/onramper/index.js +0 -1496
  165. package/dist/index.js +0 -7
  166. /package/dist/{accountId → cjs/accountId}/accountId.d.ts +0 -0
  167. /package/dist/{accountId → cjs/accountId}/accountId.test.d.ts +0 -0
  168. /package/dist/{adapters → cjs/adapters}/coinbase/generate.d.ts +0 -0
  169. /package/dist/{adapters → cjs/adapters}/coinbase/generated/adapter.json +0 -0
  170. /package/dist/{adapters → cjs/adapters}/coinbase/generated/index.d.ts +0 -0
  171. /package/dist/{adapters → cjs/adapters}/coinbase/index.d.ts +0 -0
  172. /package/dist/{adapters → cjs/adapters}/coinbase/utils.d.ts +0 -0
  173. /package/dist/{adapters → cjs/adapters}/coincap/generate.d.ts +0 -0
  174. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -0
  175. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -0
  176. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -0
  177. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -0
  178. /package/dist/{adapters → cjs/adapters}/coincap/generated/cosmos_cosmoshub-4/adapter.json +0 -0
  179. /package/dist/{adapters → cjs/adapters}/coincap/generated/cosmos_thorchain-1/adapter.json +0 -0
  180. /package/dist/{adapters → cjs/adapters}/coincap/index.test.d.ts +0 -0
  181. /package/dist/{adapters → cjs/adapters}/coincap/utils.test.d.ts +0 -0
  182. /package/dist/{adapters → cjs/adapters}/coingecko/generate.d.ts +0 -0
  183. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -0
  184. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -0
  185. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -0
  186. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -0
  187. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_cosmoshub-4/adapter.json +0 -0
  188. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +0 -0
  189. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_thorchain-1/adapter.json +0 -0
  190. /package/dist/{adapters → cjs/adapters}/coingecko/generated/eip155_42170/adapter.json +0 -0
  191. /package/dist/{adapters → cjs/adapters}/coingecko/generated/index.d.ts +0 -0
  192. /package/dist/{adapters → cjs/adapters}/coingecko/index.d.ts +0 -0
  193. /package/dist/{adapters → cjs/adapters}/coingecko/index.test.d.ts +0 -0
  194. /package/dist/{adapters → cjs/adapters}/coingecko/utils.d.ts +0 -0
  195. /package/dist/{adapters → cjs/adapters}/coingecko/utils.test.d.ts +0 -0
  196. /package/dist/{adapters → cjs/adapters}/index.d.ts +0 -0
  197. /package/dist/{adapters → cjs/adapters}/mtpelerin/index.d.ts +0 -0
  198. /package/dist/{assetId → cjs/assetId}/assetId.d.ts +0 -0
  199. /package/dist/{assetId → cjs/assetId}/assetId.test.d.ts +0 -0
  200. /package/dist/{chainId → cjs/chainId}/chainId.d.ts +0 -0
  201. /package/dist/{chainId → cjs/chainId}/chainId.test.d.ts +0 -0
  202. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  203. /package/dist/{typeGuards.d.ts → cjs/typeGuards.d.ts} +0 -0
  204. /package/dist/{utils.test.d.ts → cjs/utils.test.d.ts} +0 -0
  205. /package/dist/{adapters/coinbase/generated/index.js → esm/adapters/coinbase/generated/index.d.ts} +0 -0
  206. /package/dist/{adapters → esm/adapters}/coinbase/utils.js +0 -0
  207. /package/dist/{adapters/coingecko/generated/index.js → esm/adapters/coingecko/generated/index.d.ts} +0 -0
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseData = exports.parseMultiChainTokens = exports.parseEthData = exports.fetchData = exports.writeFiles = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const assetId_1 = require("../../assetId/assetId");
10
+ const constants_1 = require("../../constants");
11
+ const utils_1 = require("../../utils");
12
+ const COINCAP_CHAIN_REFERENCE = { ...constants_1.CHAIN_REFERENCE, SolanaMainnet: '101' };
13
+ // Chain ID to CoinCap network ID mapping
14
+ const COINCAP_CHAIN_MAP = {
15
+ [COINCAP_CHAIN_REFERENCE.EthereumMainnet]: {
16
+ chainId: constants_1.ethChainId,
17
+ assetNamespace: 'erc20',
18
+ },
19
+ [COINCAP_CHAIN_REFERENCE.OptimismMainnet]: {
20
+ chainId: constants_1.optimismChainId,
21
+ assetNamespace: 'erc20',
22
+ },
23
+ [COINCAP_CHAIN_REFERENCE.BnbSmartChainMainnet]: {
24
+ chainId: constants_1.bscChainId,
25
+ assetNamespace: 'bep20',
26
+ },
27
+ [COINCAP_CHAIN_REFERENCE.SolanaMainnet]: {
28
+ chainId: constants_1.solanaChainId,
29
+ assetNamespace: 'token',
30
+ },
31
+ [COINCAP_CHAIN_REFERENCE.PolygonMainnet]: {
32
+ chainId: constants_1.polygonChainId,
33
+ assetNamespace: 'erc20',
34
+ },
35
+ [COINCAP_CHAIN_REFERENCE.BaseMainnet]: {
36
+ chainId: constants_1.baseChainId,
37
+ assetNamespace: 'erc20',
38
+ },
39
+ [COINCAP_CHAIN_REFERENCE.ArbitrumMainnet]: {
40
+ chainId: constants_1.arbitrumChainId,
41
+ assetNamespace: 'erc20',
42
+ },
43
+ [COINCAP_CHAIN_REFERENCE.AvalancheCChain]: {
44
+ chainId: constants_1.avalancheChainId,
45
+ assetNamespace: 'erc20',
46
+ },
47
+ };
48
+ const writeFiles = async (data) => {
49
+ const path = './src/adapters/coincap/generated/';
50
+ const file = '/adapter.json';
51
+ const writeFile = async ([k, v]) => await fs_1.default.promises.writeFile(`${path}${k}${file}`.replace(':', '_'), JSON.stringify(v));
52
+ await Promise.all(Object.entries(data).map(writeFile));
53
+ console.info('Generated CoinCap AssetId adapter data.');
54
+ };
55
+ exports.writeFiles = writeFiles;
56
+ const fetchData = async (URL) => (await axios_1.default.get(URL)).data.data;
57
+ exports.fetchData = fetchData;
58
+ const parseEthData = (data) => {
59
+ const ethCoins = data.filter(({ id, explorer }) => (explorer && explorer.startsWith('https://etherscan.io/token/0x')) || id === 'ethereum');
60
+ const ethAssetMap = ethCoins.reduce((acc, { id, explorer }) => {
61
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
62
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
63
+ let assetReference = constants_1.ASSET_REFERENCE.Ethereum;
64
+ const assetNamespace = id === 'ethereum' ? 'slip44' : 'erc20';
65
+ if (id !== 'ethereum' && explorer) {
66
+ assetReference = explorer
67
+ .replace('https://etherscan.io/token/', '')
68
+ .split('#')[0]
69
+ .split('?')[0];
70
+ }
71
+ const assetId = (0, assetId_1.toAssetId)({ chainNamespace, chainReference, assetNamespace, assetReference });
72
+ acc[assetId] = id;
73
+ return acc;
74
+ }, {});
75
+ data.forEach(({ id, tokens }) => {
76
+ if (tokens[COINCAP_CHAIN_REFERENCE.EthereumMainnet] &&
77
+ tokens[COINCAP_CHAIN_REFERENCE.EthereumMainnet].length > 0) {
78
+ // Use first address for Ethereum chain
79
+ const address = tokens[COINCAP_CHAIN_REFERENCE.EthereumMainnet][0];
80
+ try {
81
+ const assetId = (0, assetId_1.toAssetId)({
82
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
83
+ chainReference: constants_1.CHAIN_REFERENCE.EthereumMainnet,
84
+ assetNamespace: 'erc20',
85
+ assetReference: address,
86
+ });
87
+ ethAssetMap[assetId] = id;
88
+ }
89
+ catch {
90
+ // Skip invalid addresses
91
+ }
92
+ }
93
+ });
94
+ // This isn't in there for some reason, add it manually
95
+ ethAssetMap[constants_1.ethAssetId] = 'ethereum';
96
+ return ethAssetMap;
97
+ };
98
+ exports.parseEthData = parseEthData;
99
+ const parseMultiChainTokens = (data) => {
100
+ const chainMaps = {};
101
+ // Initialize chain maps
102
+ Object.values(COINCAP_CHAIN_MAP).forEach(({ chainId }) => {
103
+ chainMaps[chainId] = {};
104
+ });
105
+ data.forEach(({ id, tokens }) => {
106
+ Object.entries(tokens).forEach(([chainNumber, addresses]) => {
107
+ const chainInfo = COINCAP_CHAIN_MAP[chainNumber];
108
+ if (!chainInfo || !addresses.length)
109
+ return;
110
+ const { chainId, assetNamespace } = chainInfo;
111
+ const address = addresses[0];
112
+ try {
113
+ const assetId = (0, assetId_1.toAssetId)({
114
+ chainId,
115
+ assetNamespace,
116
+ assetReference: address,
117
+ });
118
+ chainMaps[chainId][assetId] = id;
119
+ }
120
+ catch {
121
+ // Skip invalid addresses
122
+ }
123
+ });
124
+ });
125
+ return chainMaps;
126
+ };
127
+ exports.parseMultiChainTokens = parseMultiChainTokens;
128
+ const parseData = (d) => {
129
+ const result = {
130
+ [constants_1.ethChainId]: (0, exports.parseEthData)(d),
131
+ [constants_1.btcChainId]: utils_1.bitcoinAssetMap,
132
+ [constants_1.bchChainId]: utils_1.bitcoinCashAssetMap,
133
+ [constants_1.dogeChainId]: utils_1.dogecoinAssetMap,
134
+ [constants_1.ltcChainId]: utils_1.litecoinAssetMap,
135
+ [constants_1.cosmosChainId]: utils_1.cosmosAssetMap,
136
+ [constants_1.thorchainChainId]: utils_1.thorchainAssetMap,
137
+ };
138
+ const multiChainTokens = (0, exports.parseMultiChainTokens)(d);
139
+ Object.entries(multiChainTokens).forEach(([chainId, tokens]) => {
140
+ if (Object.keys(tokens).length > 0) {
141
+ result[chainId] = { ...result[chainId], ...tokens };
142
+ }
143
+ });
144
+ return result;
145
+ };
146
+ exports.parseData = parseData;
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ /**
3
+ * @vitest-environment node
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const vitest_1 = require("vitest");
11
+ const utils_1 = require("../../utils");
12
+ const utils_2 = require("./utils");
13
+ const makeEthMockCoincapResponse = () => ({
14
+ id: 'ethereum',
15
+ rank: '2',
16
+ symbol: 'ETH',
17
+ name: 'Ethereum',
18
+ supply: '118739782.1240000000000000',
19
+ maxSupply: null,
20
+ marketCapUsd: '461557096820.5397856216327206',
21
+ volumeUsd24Hr: '13216473429.9114945699035335',
22
+ priceUsd: '3887.1310740534754598',
23
+ changePercent24Hr: '1.7301970732523704',
24
+ vwap24Hr: '3796.0013297212388563',
25
+ explorer: 'https://etherscan.io/',
26
+ tokens: {},
27
+ });
28
+ const makeFoxMockCoincapResponse = () => ({
29
+ id: 'fox-token',
30
+ rank: '396',
31
+ symbol: 'FOX',
32
+ name: 'FOX Token',
33
+ supply: '117022448.6044180000000000',
34
+ maxSupply: '1000001337.0000000000000000',
35
+ marketCapUsd: '76108238.1995641297877127',
36
+ volumeUsd24Hr: '1574012.7599955363585018',
37
+ priceUsd: '0.6503729763580659',
38
+ changePercent24Hr: '-3.1066427856364231',
39
+ vwap24Hr: '0.6546275575306273',
40
+ explorer: 'https://etherscan.io/token/0xc770eefad204b5180df6a14ee197d99d808ee52d',
41
+ tokens: {},
42
+ });
43
+ const makeBtcMockCoincapResponse = () => ({
44
+ id: 'bitcoin',
45
+ rank: '1',
46
+ symbol: 'BTC',
47
+ name: 'Bitcoin',
48
+ supply: '18901193.0000000000000000',
49
+ maxSupply: '21000000.0000000000000000',
50
+ marketCapUsd: '908356345541.2269154394485668',
51
+ volumeUsd24Hr: '19001957914.4173604708767279',
52
+ priceUsd: '48058.1487920485715076',
53
+ changePercent24Hr: '2.0370678507913180',
54
+ vwap24Hr: '47473.8260811456834087',
55
+ explorer: 'https://blockchain.info/',
56
+ tokens: {},
57
+ });
58
+ const makeThorchainMockCoincapResponse = () => ({
59
+ id: 'thorchain',
60
+ rank: '65',
61
+ symbol: 'RUNE',
62
+ name: 'THORChain',
63
+ supply: '330688061.3344559700000000',
64
+ maxSupply: '500000000.0000000000000000',
65
+ marketCapUsd: '657476102.4209547026470565',
66
+ volumeUsd24Hr: '62707742.6988409953177376',
67
+ priceUsd: '1.9882063469959601',
68
+ changePercent24Hr: '-3.0298851309669810',
69
+ vwap24Hr: '2.0280215210735477',
70
+ explorer: 'https://explorer.binance.org/asset/RUNE-B1A',
71
+ tokens: {},
72
+ });
73
+ const makeCosmosMockCoincapResponse = () => ({
74
+ id: 'cosmos',
75
+ rank: '24',
76
+ symbol: 'ATOM',
77
+ name: 'Cosmos',
78
+ supply: '248453201.0000000000000000',
79
+ maxSupply: null,
80
+ marketCapUsd: '6802617738.3591834303735576',
81
+ volumeUsd24Hr: '294469112.0045679597220454',
82
+ priceUsd: '27.3798756102932376',
83
+ changePercent24Hr: '-2.0945235735481851',
84
+ vwap24Hr: '27.4571410501515669',
85
+ explorer: 'https://www.mintscan.io/cosmos',
86
+ tokens: {},
87
+ });
88
+ vitest_1.vi.mock('fs', () => ({
89
+ default: {
90
+ promises: {
91
+ writeFile: vitest_1.vi.fn(() => undefined),
92
+ },
93
+ },
94
+ }));
95
+ (0, vitest_1.describe)('adapters:coincap:utils', () => {
96
+ (0, vitest_1.describe)('parseEthData', () => {
97
+ (0, vitest_1.it)('can parse eth data', () => {
98
+ const result = (0, utils_2.parseEthData)([makeEthMockCoincapResponse(), makeFoxMockCoincapResponse()]);
99
+ const expected = {
100
+ 'eip155:1/slip44:60': 'ethereum',
101
+ 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d': 'fox-token',
102
+ };
103
+ (0, vitest_1.expect)(result).toEqual(expected);
104
+ });
105
+ (0, vitest_1.it)('can parse btc data', () => {
106
+ const result = utils_1.bitcoinAssetMap;
107
+ const expected = { 'bip122:000000000019d6689c085ae165831e93/slip44:0': 'bitcoin' };
108
+ (0, vitest_1.expect)(result).toEqual(expected);
109
+ });
110
+ (0, vitest_1.it)('can parse cosmos data', () => {
111
+ const result = utils_1.cosmosAssetMap;
112
+ const expected = { 'cosmos:cosmoshub-4/slip44:118': 'cosmos' };
113
+ (0, vitest_1.expect)(result).toEqual(expected);
114
+ });
115
+ });
116
+ (0, vitest_1.describe)('parseData', () => {
117
+ (0, vitest_1.it)('can parse all data', () => {
118
+ const result = (0, utils_2.parseData)([
119
+ makeEthMockCoincapResponse(),
120
+ makeFoxMockCoincapResponse(),
121
+ makeBtcMockCoincapResponse(),
122
+ makeCosmosMockCoincapResponse(),
123
+ makeThorchainMockCoincapResponse(),
124
+ ]);
125
+ const expected = {
126
+ 'bip122:000000000019d6689c085ae165831e93': {
127
+ 'bip122:000000000019d6689c085ae165831e93/slip44:0': 'bitcoin',
128
+ },
129
+ 'bip122:000000000000000000651ef99cb9fcbe': {
130
+ 'bip122:000000000000000000651ef99cb9fcbe/slip44:145': 'bitcoin-cash',
131
+ },
132
+ 'bip122:00000000001a91e3dace36e2be3bf030': {
133
+ 'bip122:00000000001a91e3dace36e2be3bf030/slip44:3': 'dogecoin',
134
+ },
135
+ 'bip122:12a765e31ffd4059bada1e25190f6e98': {
136
+ 'bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2': 'litecoin',
137
+ },
138
+ 'cosmos:cosmoshub-4': {
139
+ 'cosmos:cosmoshub-4/slip44:118': 'cosmos',
140
+ },
141
+ 'cosmos:thorchain-1': {
142
+ 'cosmos:thorchain-1/slip44:931': 'thorchain',
143
+ },
144
+ 'eip155:1': {
145
+ 'eip155:1/slip44:60': 'ethereum',
146
+ 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d': 'fox-token',
147
+ },
148
+ };
149
+ (0, vitest_1.expect)(result).toEqual(expected);
150
+ });
151
+ });
152
+ (0, vitest_1.describe)('writeFiles', () => {
153
+ (0, vitest_1.it)('can writeFiles', async () => {
154
+ const data = {
155
+ foo: {
156
+ assetIdAbc: 'bitcorn',
157
+ assetIdDef: 'efferium',
158
+ },
159
+ bar: {
160
+ assetIdGhi: 'fox',
161
+ assetIdJkl: 'shib',
162
+ },
163
+ };
164
+ const fooAssetIds = JSON.stringify(data.foo);
165
+ const barAssetIds = JSON.stringify(data.bar);
166
+ console.info = vitest_1.vi.fn();
167
+ await (0, utils_2.writeFiles)(data);
168
+ (0, vitest_1.expect)(fs_1.default.promises.writeFile).toBeCalledWith('./src/adapters/coincap/generated/foo/adapter.json', fooAssetIds);
169
+ (0, vitest_1.expect)(fs_1.default.promises.writeFile).toBeCalledWith('./src/adapters/coincap/generated/bar/adapter.json', barAssetIds);
170
+ (0, vitest_1.expect)(console.info).toBeCalledWith('Generated CoinCap AssetId adapter data.');
171
+ });
172
+ });
173
+ });
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("./index");
4
+ const utils_1 = require("./utils");
5
+ const main = async () => {
6
+ const data = await (0, utils_1.fetchData)(index_1.coingeckoUrl);
7
+ const output = (0, utils_1.parseData)(data);
8
+ await (0, utils_1.writeFiles)(output);
9
+ };
10
+ main();