@shapeshiftoss/caip 6.7.1 → 6.9.1

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/README.md CHANGED
@@ -134,9 +134,9 @@ and commit the generated `adapter.json` files.
134
134
  ### Usage
135
135
 
136
136
  ```ts
137
- console.log(coingeckoToAssetId('shapeshift-fox-token'))
137
+ console.log(coingeckoToAssetIds('shapeshift-fox-token'))
138
138
 
139
- eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d
139
+ [eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d]
140
140
 
141
141
  console.log(assetIdToCoingecko('bip122:000000000019d6689c085ae165831e93/slip44:0'))
142
142
 
@@ -1,3 +1,4 @@
1
+ import { AssetId } from '../../assetId/assetId';
1
2
  import { ChainId } from '../../chainId/chainId';
2
3
  export declare enum CoingeckoAssetPlatform {
3
4
  Ethereum = "ethereum",
@@ -5,14 +6,16 @@ export declare enum CoingeckoAssetPlatform {
5
6
  Osmosis = "osmosis",
6
7
  Avalanche = "avalanche"
7
8
  }
9
+ declare type CoinGeckoId = string;
8
10
  export declare const coingeckoBaseUrl = "https://api.coingecko.com/api/v3";
9
11
  export declare const coingeckoProBaseUrl = "https://pro-api.coingecko.com/api/v3";
10
12
  export declare const coingeckoUrl = "https://api.coingecko.com/api/v3/coins/list?include_platform=true";
11
- export declare const coingeckoToAssetId: (id: string) => string | undefined;
12
- export declare const assetIdToCoingecko: (assetId: string) => string | undefined;
13
+ export declare const coingeckoToAssetIds: (id: CoinGeckoId) => AssetId[];
14
+ export declare const assetIdToCoingecko: (assetId: AssetId) => CoinGeckoId | undefined;
13
15
  export declare const chainIdToCoingeckoAssetPlatform: (chainId: ChainId) => string;
14
16
  export declare const makeCoingeckoUrlParts: (apiKey?: string | undefined) => {
15
17
  baseUrl: string;
16
18
  maybeApiKeyQueryParam: string;
17
19
  };
18
- export declare const makeCoingeckoAssetUrl: (assetId: string, apiKey?: string | undefined) => string | undefined;
20
+ export declare const makeCoingeckoAssetUrl: (assetId: AssetId, apiKey?: string | undefined) => string | undefined;
21
+ export {};
@@ -26,7 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.makeCoingeckoAssetUrl = exports.makeCoingeckoUrlParts = exports.chainIdToCoingeckoAssetPlatform = exports.assetIdToCoingecko = exports.coingeckoToAssetId = exports.coingeckoUrl = exports.coingeckoProBaseUrl = exports.coingeckoBaseUrl = exports.CoingeckoAssetPlatform = void 0;
29
+ exports.makeCoingeckoAssetUrl = exports.makeCoingeckoUrlParts = exports.chainIdToCoingeckoAssetPlatform = exports.assetIdToCoingecko = exports.coingeckoToAssetIds = exports.coingeckoUrl = exports.coingeckoProBaseUrl = exports.coingeckoBaseUrl = exports.CoingeckoAssetPlatform = void 0;
30
+ const invertBy_1 = __importDefault(require("lodash/invertBy"));
30
31
  const toLower_1 = __importDefault(require("lodash/toLower"));
31
32
  const assetId_1 = require("../../assetId/assetId");
32
33
  const chainId_1 = require("../../chainId/chainId");
@@ -43,14 +44,14 @@ var CoingeckoAssetPlatform;
43
44
  exports.coingeckoBaseUrl = 'https://api.coingecko.com/api/v3';
44
45
  exports.coingeckoProBaseUrl = 'https://pro-api.coingecko.com/api/v3';
45
46
  exports.coingeckoUrl = 'https://api.coingecko.com/api/v3/coins/list?include_platform=true';
46
- const generatedAssetIdToCoingeckoMap = Object.values(adapters).reduce((acc, cur) => ({
47
+ const assetIdToCoinGeckoIdMapByChain = Object.values(adapters);
48
+ const generatedAssetIdToCoingeckoMap = assetIdToCoinGeckoIdMapByChain.reduce((acc, cur) => ({
47
49
  ...acc,
48
50
  ...cur
49
51
  }));
50
- const invert = (data) => Object.entries(data).reduce((acc, [k, v]) => ((acc[v] = k), acc), {});
51
- const generatedCoingeckoToAssetIdMap = invert(generatedAssetIdToCoingeckoMap);
52
- const coingeckoToAssetId = (id) => generatedCoingeckoToAssetIdMap[id];
53
- exports.coingeckoToAssetId = coingeckoToAssetId;
52
+ const generatedCoingeckoToAssetIdsMap = (0, invertBy_1.default)(generatedAssetIdToCoingeckoMap);
53
+ const coingeckoToAssetIds = (id) => generatedCoingeckoToAssetIdsMap[id];
54
+ exports.coingeckoToAssetIds = coingeckoToAssetIds;
54
55
  const assetIdToCoingecko = (assetId) => generatedAssetIdToCoingeckoMap[(0, toLower_1.default)(assetId)];
55
56
  exports.assetIdToCoingecko = assetIdToCoingecko;
56
57
  // https://www.coingecko.com/en/api/documentation - See asset_platforms
@@ -7,7 +7,7 @@ export declare type CoingeckoCoin = {
7
7
  platforms: Record<string, string>;
8
8
  };
9
9
  declare type AssetMap = Record<ChainId, Record<AssetId, string>>;
10
- export declare const writeFiles: (data: AssetMap) => Promise<void>;
11
10
  export declare const fetchData: (URL: string) => Promise<CoingeckoCoin[]>;
12
11
  export declare const parseData: (coins: CoingeckoCoin[]) => AssetMap;
12
+ export declare const writeFiles: (data: AssetMap) => Promise<void>;
13
13
  export {};
@@ -3,20 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseData = exports.fetchData = exports.writeFiles = void 0;
6
+ exports.writeFiles = exports.parseData = exports.fetchData = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const assetId_1 = require("../../assetId/assetId");
10
10
  const constants_1 = require("../../constants");
11
11
  const utils_1 = require("../../utils");
12
- const writeFiles = async (data) => {
13
- await Promise.all(Object.entries(data).map(async ([chainId, assets]) => {
14
- const path = `./src/adapters/coingecko/generated/${chainId}/adapter.json`.replace(':', '_');
15
- await fs_1.default.promises.writeFile(path, JSON.stringify(assets));
16
- }));
17
- console.info('Generated CoinGecko AssetId adapter data.');
18
- };
19
- exports.writeFiles = writeFiles;
20
12
  const fetchData = async (URL) => (await axios_1.default.get(URL)).data;
21
13
  exports.fetchData = fetchData;
22
14
  const parseData = (coins) => {
@@ -64,3 +56,11 @@ const parseData = (coins) => {
64
56
  };
65
57
  };
66
58
  exports.parseData = parseData;
59
+ const writeFiles = async (data) => {
60
+ await Promise.all(Object.entries(data).map(async ([chainId, assets]) => {
61
+ const path = `./src/adapters/coingecko/generated/${chainId}/adapter.json`.replace(':', '_');
62
+ await fs_1.default.promises.writeFile(path, JSON.stringify(assets));
63
+ }));
64
+ console.info('Generated CoinGecko AssetId adapter data.');
65
+ };
66
+ exports.writeFiles = writeFiles;
package/dist/utils.d.ts CHANGED
@@ -1,11 +1,8 @@
1
1
  import { AccountId } from './accountId/accountId';
2
- import { AssetId } from './assetId/assetId';
3
2
  import { ChainId, ChainNamespace, ChainReference } from './chainId/chainId';
4
3
  export declare const parseAssetIdRegExp: RegExp;
5
- export declare const chainIdToAssetId: Record<ChainId, AssetId>;
6
4
  export declare const accountIdToChainId: (accountId: AccountId) => ChainId;
7
5
  export declare const accountIdToSpecifier: (accountId: AccountId) => string;
8
- export declare const getFeeAssetIdFromAssetId: (assetId: AssetId) => AssetId | undefined;
9
6
  export declare const isValidChainPartsPair: (chainNamespace: ChainNamespace, chainReference: ChainReference) => boolean;
10
7
  export declare const bitcoinAssetMap: {
11
8
  [x: string]: string;
package/dist/utils.js CHANGED
@@ -23,33 +23,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.osmosisAssetMap = exports.cosmosAssetMap = exports.litecoinAssetMap = exports.dogecoinAssetMap = exports.bitcoinAssetMap = exports.isValidChainPartsPair = exports.getFeeAssetIdFromAssetId = exports.accountIdToSpecifier = exports.accountIdToChainId = exports.chainIdToAssetId = exports.parseAssetIdRegExp = void 0;
26
+ exports.osmosisAssetMap = exports.cosmosAssetMap = exports.litecoinAssetMap = exports.dogecoinAssetMap = exports.bitcoinAssetMap = exports.isValidChainPartsPair = exports.accountIdToSpecifier = exports.accountIdToChainId = exports.parseAssetIdRegExp = void 0;
27
27
  const accountId_1 = require("./accountId/accountId");
28
- const assetId_1 = require("./assetId/assetId");
29
28
  const constants = __importStar(require("./constants"));
30
29
  // https://regex101.com/r/f0xGqP/2
31
30
  exports.parseAssetIdRegExp = /(?<chainNamespace>[-a-z\d]{3,8}):(?<chainReference>[-a-zA-Z\d]{1,32})\/(?<assetNamespace>[-a-z\d]{3,8}):(?<assetReference>[-a-zA-Z\d]+)/;
32
- // TODO(ryankk): this will be removed and replaced with something like `toAssetId(fromChainId(chainId))`
33
- // when `fromChainId` supports returning ChainNamespace and ChainReference.
34
- exports.chainIdToAssetId = {
35
- [constants.ethChainId]: constants.ethAssetId,
36
- [constants.btcChainId]: constants.btcAssetId,
37
- [constants.dogeChainId]: constants.dogeAssetId,
38
- [constants.cosmosChainId]: constants.cosmosAssetId,
39
- [constants.osmosisChainId]: constants.osmosisAssetId,
40
- [constants.avalancheChainId]: constants.avalancheAssetId
41
- };
42
31
  const accountIdToChainId = (accountId) => (0, accountId_1.fromAccountId)(accountId).chainId;
43
32
  exports.accountIdToChainId = accountIdToChainId;
44
33
  const accountIdToSpecifier = (accountId) => (0, accountId_1.fromAccountId)(accountId).account;
45
34
  exports.accountIdToSpecifier = accountIdToSpecifier;
46
- // We make the assumption here that the fee assetIds are in `chainIdToAssetId` for each
47
- // chain we support.
48
- const getFeeAssetIdFromAssetId = (assetId) => {
49
- const { chainId } = (0, assetId_1.fromAssetId)(assetId);
50
- return exports.chainIdToAssetId[chainId];
51
- };
52
- exports.getFeeAssetIdFromAssetId = getFeeAssetIdFromAssetId;
53
35
  const isValidChainPartsPair = (chainNamespace, chainReference) => { var _a; return ((_a = constants.VALID_CHAIN_IDS[chainNamespace]) === null || _a === void 0 ? void 0 : _a.includes(chainReference)) || false; };
54
36
  exports.isValidChainPartsPair = isValidChainPartsPair;
55
37
  exports.bitcoinAssetMap = { [constants.btcAssetId]: 'bitcoin' };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapeshiftoss/caip",
3
- "version": "6.7.1",
3
+ "version": "6.9.1",
4
4
  "description": "CAIP Implementation",
5
5
  "homepage": "",
6
6
  "license": "MIT",