@chain-registry/client 1.24.0 → 1.25.0

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/chain-info.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChainInfo = void 0;
4
+ const utils_1 = require("@chain-registry/utils");
5
+ class ChainInfo {
6
+ chainName;
7
+ fetcher;
8
+ _chain;
9
+ _assetList;
10
+ _assetLists;
11
+ _ibcData = [];
12
+ constructor(options) {
13
+ this.chainName = options.chainName;
14
+ this.fetcher = options.fetcher;
15
+ this.refresh();
16
+ }
17
+ refresh() {
18
+ this._assetList = this.fetcher.getChainAssetList(this.chainName);
19
+ this._ibcData = this.fetcher.getChainIbcData(this.chainName);
20
+ this._chain = this.fetcher.getChain(this.chainName);
21
+ const supportedChains = this._ibcData.reduce((m, v) => {
22
+ if (!m.includes(v.chain_1.chain_name))
23
+ m.push(v.chain_1.chain_name);
24
+ if (!m.includes(v.chain_2.chain_name))
25
+ m.push(v.chain_2.chain_name);
26
+ return m;
27
+ }, []);
28
+ this._assetLists = this.fetcher.assetLists.filter((list) => supportedChains.includes(list.chain_name));
29
+ }
30
+ get chain() {
31
+ return this._chain;
32
+ }
33
+ get nativeAssetList() {
34
+ return this._assetList;
35
+ }
36
+ get assetLists() {
37
+ return (0, utils_1.getAssetLists)(this.chainName, this._ibcData, this._assetLists);
38
+ }
39
+ }
40
+ exports.ChainInfo = ChainInfo;
41
+ //# sourceMappingURL=chain-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-info.js","sourceRoot":"","sources":["../src/chain-info.ts"],"names":[],"mappings":";;;AACA,iDAAsD;AAStD,MAAa,SAAS;IACpB,SAAS,CAAS;IAClB,OAAO,CAAuB;IAEpB,MAAM,CAAQ;IACd,UAAU,CAAY;IACtB,WAAW,CAAc;IACzB,QAAQ,GAAc,EAAE,CAAC;IAEnC,YAAY,OAAyB;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpE,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACzD,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAA,qBAAa,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;CACF;AAzCD,8BAyCC"}
package/chain-util.js ADDED
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChainRegistryChainUtil = void 0;
4
+ const utils_1 = require("@chain-registry/utils");
5
+ class ChainRegistryChainUtil {
6
+ _assets = [];
7
+ _chainName;
8
+ constructor(options) {
9
+ const { chainName, chainInfo } = options;
10
+ this._chainName = options.chainName;
11
+ this._assets = [
12
+ {
13
+ assets: [
14
+ ...chainInfo.nativeAssetList.assets,
15
+ ...chainInfo.assetLists.flatMap(({ assets }) => assets)
16
+ ],
17
+ chain_name: chainName
18
+ }
19
+ ];
20
+ }
21
+ getAssetByDenom(denom) {
22
+ return (0, utils_1.getAssetByDenom)(this._assets, denom, this._chainName);
23
+ }
24
+ getAssetBySymbol(symbol) {
25
+ return (0, utils_1.getAssetBySymbol)(this._assets, symbol, this._chainName);
26
+ }
27
+ getDenomByCoinGeckoId(coinGeckoId) {
28
+ return (0, utils_1.getDenomByCoinGeckoId)(this._assets, coinGeckoId, this._chainName);
29
+ }
30
+ getCoinGeckoIdByDenom(coinGeckoId) {
31
+ return (0, utils_1.getCoinGeckoIdByDenom)(this._assets, coinGeckoId, {
32
+ chainName: this._chainName
33
+ });
34
+ }
35
+ getSymbolByDenom(denom) {
36
+ return (0, utils_1.getSymbolByDenom)(this._assets, denom, this._chainName);
37
+ }
38
+ getDenomBySymbol(symbol) {
39
+ return (0, utils_1.getDenomBySymbol)(this._assets, symbol, this._chainName);
40
+ }
41
+ getExponentByDenom(denom) {
42
+ return (0, utils_1.getExponentByDenom)(this._assets, denom, this._chainName);
43
+ }
44
+ getExponentBySymbol(symbol) {
45
+ return (0, utils_1.getExponentBySymbol)(this._assets, symbol, this._chainName);
46
+ }
47
+ getTokenLogoByDenom(denom) {
48
+ return (0, utils_1.getTokenLogoByDenom)(this._assets, denom, this._chainName);
49
+ }
50
+ getTokenNameByDenom(denom) {
51
+ return (0, utils_1.getTokenNameByDenom)(this._assets, denom, this._chainName);
52
+ }
53
+ getChainNameByDenom(denom) {
54
+ return (0, utils_1.getChainNameByDenom)(this._assets, denom);
55
+ }
56
+ mapCoinGeckoPricesToDenoms(prices) {
57
+ return (0, utils_1.mapCoinGeckoPricesToDenoms)(this._assets, prices);
58
+ }
59
+ convertBaseUnitToDollarValue(prices, symbol, amount) {
60
+ return (0, utils_1.convertBaseUnitToDollarValue)(this._assets, prices, symbol, amount, this._chainName);
61
+ }
62
+ convertDollarValueToBaseUnit(prices, symbol, value) {
63
+ return (0, utils_1.convertDollarValueToBaseUnit)(this._assets, prices, symbol, value, this._chainName);
64
+ }
65
+ convertBaseUnitToDisplayUnit(symbol, amount) {
66
+ return (0, utils_1.convertBaseUnitToDisplayUnit)(this._assets, symbol, amount, this._chainName);
67
+ }
68
+ convertDisplayUnitToBaseUnit(symbol, amount) {
69
+ return (0, utils_1.convertDisplayUnitToBaseUnit)(this._assets, symbol, amount, this._chainName);
70
+ }
71
+ }
72
+ exports.ChainRegistryChainUtil = ChainRegistryChainUtil;
73
+ //# sourceMappingURL=chain-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-util.js","sourceRoot":"","sources":["../src/chain-util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { getAssetLists } from '@chain-registry/utils';
2
+ export class ChainInfo {
3
+ chainName;
4
+ fetcher;
5
+ _chain;
6
+ _assetList;
7
+ _assetLists;
8
+ _ibcData = [];
9
+ constructor(options) {
10
+ this.chainName = options.chainName;
11
+ this.fetcher = options.fetcher;
12
+ this.refresh();
13
+ }
14
+ refresh() {
15
+ this._assetList = this.fetcher.getChainAssetList(this.chainName);
16
+ this._ibcData = this.fetcher.getChainIbcData(this.chainName);
17
+ this._chain = this.fetcher.getChain(this.chainName);
18
+ const supportedChains = this._ibcData.reduce((m, v) => {
19
+ if (!m.includes(v.chain_1.chain_name))
20
+ m.push(v.chain_1.chain_name);
21
+ if (!m.includes(v.chain_2.chain_name))
22
+ m.push(v.chain_2.chain_name);
23
+ return m;
24
+ }, []);
25
+ this._assetLists = this.fetcher.assetLists.filter((list) => supportedChains.includes(list.chain_name));
26
+ }
27
+ get chain() {
28
+ return this._chain;
29
+ }
30
+ get nativeAssetList() {
31
+ return this._assetList;
32
+ }
33
+ get assetLists() {
34
+ return getAssetLists(this.chainName, this._ibcData, this._assetLists);
35
+ }
36
+ }
37
+ //# sourceMappingURL=chain-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-info.js","sourceRoot":"","sources":["../../src/chain-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAStD,MAAM,OAAO,SAAS;IACpB,SAAS,CAAS;IAClB,OAAO,CAAuB;IAEpB,MAAM,CAAQ;IACd,UAAU,CAAY;IACtB,WAAW,CAAc;IACzB,QAAQ,GAAc,EAAE,CAAC;IAEnC,YAAY,OAAyB;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpE,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACzD,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;CACF"}
@@ -0,0 +1,69 @@
1
+ import { getAssetByDenom, getAssetBySymbol, getDenomByCoinGeckoId, getCoinGeckoIdByDenom, getSymbolByDenom, getDenomBySymbol, getExponentByDenom, getExponentBySymbol, getTokenLogoByDenom, getTokenNameByDenom, getChainNameByDenom, mapCoinGeckoPricesToDenoms, convertBaseUnitToDollarValue, convertDollarValueToBaseUnit, convertBaseUnitToDisplayUnit, convertDisplayUnitToBaseUnit } from '@chain-registry/utils';
2
+ export class ChainRegistryChainUtil {
3
+ _assets = [];
4
+ _chainName;
5
+ constructor(options) {
6
+ const { chainName, chainInfo } = options;
7
+ this._chainName = options.chainName;
8
+ this._assets = [
9
+ {
10
+ assets: [
11
+ ...chainInfo.nativeAssetList.assets,
12
+ ...chainInfo.assetLists.flatMap(({ assets }) => assets)
13
+ ],
14
+ chain_name: chainName
15
+ }
16
+ ];
17
+ }
18
+ getAssetByDenom(denom) {
19
+ return getAssetByDenom(this._assets, denom, this._chainName);
20
+ }
21
+ getAssetBySymbol(symbol) {
22
+ return getAssetBySymbol(this._assets, symbol, this._chainName);
23
+ }
24
+ getDenomByCoinGeckoId(coinGeckoId) {
25
+ return getDenomByCoinGeckoId(this._assets, coinGeckoId, this._chainName);
26
+ }
27
+ getCoinGeckoIdByDenom(coinGeckoId) {
28
+ return getCoinGeckoIdByDenom(this._assets, coinGeckoId, {
29
+ chainName: this._chainName
30
+ });
31
+ }
32
+ getSymbolByDenom(denom) {
33
+ return getSymbolByDenom(this._assets, denom, this._chainName);
34
+ }
35
+ getDenomBySymbol(symbol) {
36
+ return getDenomBySymbol(this._assets, symbol, this._chainName);
37
+ }
38
+ getExponentByDenom(denom) {
39
+ return getExponentByDenom(this._assets, denom, this._chainName);
40
+ }
41
+ getExponentBySymbol(symbol) {
42
+ return getExponentBySymbol(this._assets, symbol, this._chainName);
43
+ }
44
+ getTokenLogoByDenom(denom) {
45
+ return getTokenLogoByDenom(this._assets, denom, this._chainName);
46
+ }
47
+ getTokenNameByDenom(denom) {
48
+ return getTokenNameByDenom(this._assets, denom, this._chainName);
49
+ }
50
+ getChainNameByDenom(denom) {
51
+ return getChainNameByDenom(this._assets, denom);
52
+ }
53
+ mapCoinGeckoPricesToDenoms(prices) {
54
+ return mapCoinGeckoPricesToDenoms(this._assets, prices);
55
+ }
56
+ convertBaseUnitToDollarValue(prices, symbol, amount) {
57
+ return convertBaseUnitToDollarValue(this._assets, prices, symbol, amount, this._chainName);
58
+ }
59
+ convertDollarValueToBaseUnit(prices, symbol, value) {
60
+ return convertDollarValueToBaseUnit(this._assets, prices, symbol, value, this._chainName);
61
+ }
62
+ convertBaseUnitToDisplayUnit(symbol, amount) {
63
+ return convertBaseUnitToDisplayUnit(this._assets, symbol, amount, this._chainName);
64
+ }
65
+ convertDisplayUnitToBaseUnit(symbol, amount) {
66
+ return convertDisplayUnitToBaseUnit(this._assets, symbol, amount, this._chainName);
67
+ }
68
+ }
69
+ //# sourceMappingURL=chain-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-util.js","sourceRoot":"","sources":["../../src/chain-util.ts"],"names":[],"mappings":"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"}
package/esm/fetcher.js ADDED
@@ -0,0 +1,152 @@
1
+ import { getAssetLists } from '@chain-registry/utils';
2
+ import { basename } from 'bfs-path';
3
+ import fetch from 'cross-fetch';
4
+ import { ChainInfo } from './chain-info';
5
+ const fetchUrl = (url) => {
6
+ return fetch(url).then((res) => {
7
+ if (res.status >= 400) {
8
+ throw new Error('Bad response');
9
+ }
10
+ return res.json();
11
+ });
12
+ };
13
+ // QUESTION: should ChainRegistryFetcher just be ChainRegistry?
14
+ export class ChainRegistryFetcher {
15
+ urls = [];
16
+ _assetLists = [];
17
+ _chains = [];
18
+ _ibcData = [];
19
+ chainInfoList = [];
20
+ constructor(options = {}) {
21
+ //
22
+ if (options.chains) {
23
+ this._chains = options.chains;
24
+ }
25
+ if (options.assetLists) {
26
+ this._assetLists = options.assetLists;
27
+ }
28
+ if (options.ibcData) {
29
+ this._ibcData = options.ibcData;
30
+ }
31
+ if (options.urls) {
32
+ this.urls = options.urls;
33
+ }
34
+ }
35
+ get chains() {
36
+ return this._chains;
37
+ }
38
+ get assetLists() {
39
+ return this._assetLists;
40
+ }
41
+ get ibcData() {
42
+ return this._ibcData;
43
+ }
44
+ getChain(chainName) {
45
+ return this._chains.find((chain) => chain.chain_name === chainName);
46
+ }
47
+ getChainAssetList(chainName) {
48
+ return this._assetLists.find((list) => list.chain_name === chainName);
49
+ }
50
+ getGeneratedAssetLists(chainName) {
51
+ return getAssetLists(chainName, this._ibcData, this._assetLists);
52
+ }
53
+ getChainIbcData(chainName) {
54
+ return this._ibcData.filter((info) => info.chain_1.chain_name === chainName ||
55
+ info.chain_2.chain_name === chainName);
56
+ }
57
+ getChainInfo(chainName) {
58
+ let chainInfo = this.chainInfoList.find((it) => it.chainName === chainName);
59
+ if (!chainInfo) {
60
+ chainInfo = new ChainInfo({
61
+ chainName: chainName,
62
+ fetcher: this
63
+ });
64
+ this.chainInfoList.push(chainInfo);
65
+ }
66
+ return chainInfo;
67
+ }
68
+ upsertChain(data) {
69
+ const found = this._chains.find((chain) => {
70
+ return (chain.chain_name === data.chain_name &&
71
+ chain.network_type === data.network_type);
72
+ });
73
+ if (!found) {
74
+ this._chains.push(data);
75
+ return;
76
+ }
77
+ this._chains = this._chains.map((chain) => {
78
+ if (chain.chain_name === data.chain_name &&
79
+ chain.network_type === data.network_type) {
80
+ return data;
81
+ }
82
+ else {
83
+ return chain;
84
+ }
85
+ });
86
+ }
87
+ updateAssetList(data) {
88
+ const found = this._assetLists.find((list) => {
89
+ return list.chain_name === data.chain_name;
90
+ });
91
+ if (!found) {
92
+ this._assetLists.push(data);
93
+ return;
94
+ }
95
+ this._assetLists = this._assetLists.map((list) => {
96
+ if (list.chain_name === data.chain_name) {
97
+ return data;
98
+ }
99
+ else {
100
+ return list;
101
+ }
102
+ });
103
+ }
104
+ upsertIbcData(data) {
105
+ const found = this._ibcData.find((info) => {
106
+ return (info.chain_1.chain_name === data.chain_1.chain_name &&
107
+ info.chain_2.chain_name === data.chain_2.chain_name);
108
+ });
109
+ if (!found) {
110
+ this._ibcData.push(data);
111
+ return;
112
+ }
113
+ this._ibcData = this._ibcData.map((info) => {
114
+ if (info.chain_1.chain_name === data.chain_1.chain_name &&
115
+ info.chain_2.chain_name === data.chain_2.chain_name) {
116
+ return data;
117
+ }
118
+ else {
119
+ return info;
120
+ }
121
+ });
122
+ }
123
+ update(data) {
124
+ if (!data.$schema)
125
+ throw new Error('not a registered JSON schema type');
126
+ const type = basename(data.$schema, '.schema.json');
127
+ switch (type) {
128
+ case 'chain':
129
+ this.upsertChain(data);
130
+ break;
131
+ case 'assetlist':
132
+ this.updateAssetList(data);
133
+ break;
134
+ case 'ibc_data':
135
+ this.upsertIbcData(data);
136
+ break;
137
+ default:
138
+ throw new Error('unknown schema type');
139
+ }
140
+ this.chainInfoList.forEach((chainInfo) => {
141
+ chainInfo.refresh();
142
+ });
143
+ }
144
+ async fetch(url) {
145
+ const data = await fetchUrl(url);
146
+ this.update(data);
147
+ }
148
+ async fetchUrls() {
149
+ return Promise.all(this.urls.map((url) => this.fetch(url)));
150
+ }
151
+ }
152
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/fetcher.ts"],"names":[],"mappings":"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"}
package/esm/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from './chain-info';
2
+ export * from './chain-util';
3
+ export * from './fetcher';
4
+ export * from './registry';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { ChainRegistryChainUtil } from './chain-util';
2
+ import { ChainRegistryFetcher } from './fetcher';
3
+ export class ChainRegistryClient extends ChainRegistryFetcher {
4
+ _options = {
5
+ chainNames: [],
6
+ baseUrl: 'https://raw.githubusercontent.com/cosmos/chain-registry/master'
7
+ };
8
+ constructor(options) {
9
+ const { chainNames, assetListNames, ibcNamePairs, baseUrl, ...restOptions } = options;
10
+ super(restOptions);
11
+ this._options = {
12
+ ...this._options,
13
+ chainNames: chainNames || this._options.chainNames,
14
+ assetListNames: assetListNames || this._options.assetListNames,
15
+ ibcNamePairs: ibcNamePairs || this._options.ibcNamePairs,
16
+ baseUrl: baseUrl || this._options.baseUrl
17
+ };
18
+ this.generateUrls();
19
+ }
20
+ generateUrls() {
21
+ const { chainNames, assetListNames, ibcNamePairs, baseUrl } = this._options;
22
+ const chainUrls = chainNames.map((chain) => {
23
+ return `${baseUrl}/${chain}/chain.json`;
24
+ });
25
+ const assetlistUrls = (assetListNames || chainNames).map((chain) => {
26
+ return `${baseUrl}/${chain}/assetlist.json`;
27
+ });
28
+ let namePairs = ibcNamePairs;
29
+ if (!namePairs) {
30
+ namePairs = [];
31
+ for (let i = 0; i < chainNames.length; i++) {
32
+ for (let j = i + 1; j < chainNames.length; j++) {
33
+ namePairs.push([chainNames[i], chainNames[j]]);
34
+ }
35
+ }
36
+ }
37
+ const ibcUrls = namePairs.map((namePair) => {
38
+ const fileName = namePair[0].localeCompare(namePair[1]) <= 0
39
+ ? `${namePair[0]}-${namePair[1]}.json`
40
+ : `${namePair[1]}-${namePair[0]}.json`;
41
+ return `${baseUrl}/_IBC/${fileName}`;
42
+ });
43
+ this.urls = [
44
+ ...new Set([
45
+ ...chainUrls,
46
+ ...assetlistUrls,
47
+ ...ibcUrls,
48
+ ...(this.urls || [])
49
+ ])
50
+ ];
51
+ }
52
+ getChainUtil(chainName) {
53
+ const chainInfo = this.getChainInfo(chainName);
54
+ return new ChainRegistryChainUtil({
55
+ chainName: chainName,
56
+ chainInfo: chainInfo
57
+ });
58
+ }
59
+ }
60
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,6 @@ export declare class ChainRegistryFetcher implements ChainRegistry {
25
25
  updateAssetList(data: AssetList): void;
26
26
  upsertIbcData(data: IBCInfo): void;
27
27
  update(data: Chain | AssetList | IBCInfo): void;
28
- fetch(url: any): Promise<void>;
28
+ fetch(url: string): Promise<void>;
29
29
  fetchUrls(): Promise<void[]>;
30
30
  }
package/fetcher.js ADDED
@@ -0,0 +1,159 @@
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.ChainRegistryFetcher = void 0;
7
+ const utils_1 = require("@chain-registry/utils");
8
+ const bfs_path_1 = require("bfs-path");
9
+ const cross_fetch_1 = __importDefault(require("cross-fetch"));
10
+ const chain_info_1 = require("./chain-info");
11
+ const fetchUrl = (url) => {
12
+ return (0, cross_fetch_1.default)(url).then((res) => {
13
+ if (res.status >= 400) {
14
+ throw new Error('Bad response');
15
+ }
16
+ return res.json();
17
+ });
18
+ };
19
+ // QUESTION: should ChainRegistryFetcher just be ChainRegistry?
20
+ class ChainRegistryFetcher {
21
+ urls = [];
22
+ _assetLists = [];
23
+ _chains = [];
24
+ _ibcData = [];
25
+ chainInfoList = [];
26
+ constructor(options = {}) {
27
+ //
28
+ if (options.chains) {
29
+ this._chains = options.chains;
30
+ }
31
+ if (options.assetLists) {
32
+ this._assetLists = options.assetLists;
33
+ }
34
+ if (options.ibcData) {
35
+ this._ibcData = options.ibcData;
36
+ }
37
+ if (options.urls) {
38
+ this.urls = options.urls;
39
+ }
40
+ }
41
+ get chains() {
42
+ return this._chains;
43
+ }
44
+ get assetLists() {
45
+ return this._assetLists;
46
+ }
47
+ get ibcData() {
48
+ return this._ibcData;
49
+ }
50
+ getChain(chainName) {
51
+ return this._chains.find((chain) => chain.chain_name === chainName);
52
+ }
53
+ getChainAssetList(chainName) {
54
+ return this._assetLists.find((list) => list.chain_name === chainName);
55
+ }
56
+ getGeneratedAssetLists(chainName) {
57
+ return (0, utils_1.getAssetLists)(chainName, this._ibcData, this._assetLists);
58
+ }
59
+ getChainIbcData(chainName) {
60
+ return this._ibcData.filter((info) => info.chain_1.chain_name === chainName ||
61
+ info.chain_2.chain_name === chainName);
62
+ }
63
+ getChainInfo(chainName) {
64
+ let chainInfo = this.chainInfoList.find((it) => it.chainName === chainName);
65
+ if (!chainInfo) {
66
+ chainInfo = new chain_info_1.ChainInfo({
67
+ chainName: chainName,
68
+ fetcher: this
69
+ });
70
+ this.chainInfoList.push(chainInfo);
71
+ }
72
+ return chainInfo;
73
+ }
74
+ upsertChain(data) {
75
+ const found = this._chains.find((chain) => {
76
+ return (chain.chain_name === data.chain_name &&
77
+ chain.network_type === data.network_type);
78
+ });
79
+ if (!found) {
80
+ this._chains.push(data);
81
+ return;
82
+ }
83
+ this._chains = this._chains.map((chain) => {
84
+ if (chain.chain_name === data.chain_name &&
85
+ chain.network_type === data.network_type) {
86
+ return data;
87
+ }
88
+ else {
89
+ return chain;
90
+ }
91
+ });
92
+ }
93
+ updateAssetList(data) {
94
+ const found = this._assetLists.find((list) => {
95
+ return list.chain_name === data.chain_name;
96
+ });
97
+ if (!found) {
98
+ this._assetLists.push(data);
99
+ return;
100
+ }
101
+ this._assetLists = this._assetLists.map((list) => {
102
+ if (list.chain_name === data.chain_name) {
103
+ return data;
104
+ }
105
+ else {
106
+ return list;
107
+ }
108
+ });
109
+ }
110
+ upsertIbcData(data) {
111
+ const found = this._ibcData.find((info) => {
112
+ return (info.chain_1.chain_name === data.chain_1.chain_name &&
113
+ info.chain_2.chain_name === data.chain_2.chain_name);
114
+ });
115
+ if (!found) {
116
+ this._ibcData.push(data);
117
+ return;
118
+ }
119
+ this._ibcData = this._ibcData.map((info) => {
120
+ if (info.chain_1.chain_name === data.chain_1.chain_name &&
121
+ info.chain_2.chain_name === data.chain_2.chain_name) {
122
+ return data;
123
+ }
124
+ else {
125
+ return info;
126
+ }
127
+ });
128
+ }
129
+ update(data) {
130
+ if (!data.$schema)
131
+ throw new Error('not a registered JSON schema type');
132
+ const type = (0, bfs_path_1.basename)(data.$schema, '.schema.json');
133
+ switch (type) {
134
+ case 'chain':
135
+ this.upsertChain(data);
136
+ break;
137
+ case 'assetlist':
138
+ this.updateAssetList(data);
139
+ break;
140
+ case 'ibc_data':
141
+ this.upsertIbcData(data);
142
+ break;
143
+ default:
144
+ throw new Error('unknown schema type');
145
+ }
146
+ this.chainInfoList.forEach((chainInfo) => {
147
+ chainInfo.refresh();
148
+ });
149
+ }
150
+ async fetch(url) {
151
+ const data = await fetchUrl(url);
152
+ this.update(data);
153
+ }
154
+ async fetchUrls() {
155
+ return Promise.all(this.urls.map((url) => this.fetch(url)));
156
+ }
157
+ }
158
+ exports.ChainRegistryFetcher = ChainRegistryFetcher;
159
+ //# sourceMappingURL=fetcher.js.map
package/fetcher.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"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"}