@chain-registry/utils 0.5.0 → 0.6.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/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.6.1](https://github.com/cosmology-tech/chain-registry/compare/@chain-registry/utils@0.6.0...@chain-registry/utils@0.6.1) (2022-08-31)
7
+
8
+ **Note:** Version bump only for package @chain-registry/utils
9
+
10
+
11
+
12
+
13
+
14
+ # [0.6.0](https://github.com/cosmology-tech/chain-registry/compare/@chain-registry/utils@0.5.1...@chain-registry/utils@0.6.0) (2022-08-31)
15
+
16
+ **Note:** Version bump only for package @chain-registry/utils
17
+
18
+
19
+
20
+
21
+
22
+ ## [0.5.1](https://github.com/cosmology-tech/chain-registry/compare/@chain-registry/utils@0.5.0...@chain-registry/utils@0.5.1) (2022-08-23)
23
+
24
+ **Note:** Version bump only for package @chain-registry/utils
25
+
26
+
27
+
28
+
29
+
6
30
  # [0.5.0](https://github.com/cosmology-tech/chain-registry/compare/@chain-registry/utils@0.4.0...@chain-registry/utils@0.5.0) (2022-08-23)
7
31
 
8
32
  **Note:** Version bump only for package @chain-registry/utils
package/README.md CHANGED
@@ -12,4 +12,82 @@
12
12
  <a href="https://www.npmjs.com/package/@chain-registry/utils"><img height="20" src="https://img.shields.io/github/package-json/v/cosmology-tech/chain-registry?filename=packages%2Futils%2Fpackage.json"></a>
13
13
  </p>
14
14
 
15
- Utility functions for the chain-registry
15
+ Utility functions for the chain-registry
16
+
17
+
18
+ ## Usage
19
+
20
+ ```js
21
+ import { ChainRegistry, ChainRegistryOptions } from '@chain-registry/utils';
22
+
23
+ const options: ChainRegistryOptions = {
24
+ urls: [
25
+ 'https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/chain.json',
26
+ 'https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/assetlist.json',
27
+ 'https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/assetlist.json',
28
+ 'https://raw.githubusercontent.com/cosmos/chain-registry/master/secretnetwork/assetlist.json',
29
+ 'https://raw.githubusercontent.com/cosmos/chain-registry/master/_IBC/juno-osmosis.json',
30
+ 'https://raw.githubusercontent.com/cosmos/chain-registry/master/_IBC/osmosis-secretnetwork.json'
31
+ ]
32
+ };
33
+ const registry = new ChainRegistry(options);
34
+ await registry.fetchUrls();
35
+ ```
36
+
37
+ ## Fetching Schemata
38
+
39
+ We currently only support fetching JSON schemas as defined in https://github.com/cosmos/chain-registry. Supported are `assetlist.schema.json`, `chain.schema.json` and `ibc_data.schema.json`.
40
+
41
+ ### fetchUrls
42
+
43
+ You can set the `ChainRegistry.urls` property and call `ChainRegistry.fetchUrls()`
44
+
45
+ ```js
46
+ registry.urls = [
47
+ // urls to fetch
48
+ ];
49
+ await registry.fetchUrls();
50
+ ```
51
+
52
+ ### fetch
53
+
54
+ Or, you can simply call `ChainRegistry.fetch()`
55
+
56
+ ```js
57
+ await registry.fetch('https://some-json-schema.com/some-schema.json');
58
+ ```
59
+
60
+ ## Asset lists
61
+
62
+ ```js
63
+ // generated asset lists
64
+ const generated: AssetList[] = registry.getGeneratedAssetLists('osmosis');
65
+
66
+ // you can also get generated assets from ChainInfo object
67
+ const chainInfo: Chain = registry.getChainInfo('osmosis');
68
+ const generatedAssets: AssetList[] = chainInfo.assetLists();
69
+ ```
70
+ ## Chain info
71
+
72
+ You can get `Chain` object directly from the regsitry via `getChain`
73
+
74
+ ```js
75
+ // get Chain from registry
76
+ const chain: Chain = registry.getChain('osmosis');
77
+ ```
78
+
79
+ or get the `ChainInfo` object:
80
+
81
+ ```js
82
+ const chainInfo: ChainInfo = registry.getChainInfo('osmosis');
83
+
84
+ // AssetList[] of the generated assets
85
+ const assetes: AssetList[] = chainInfo.assetLists();
86
+
87
+ // Chain
88
+ const chain: Chain = chainInfo.chain();
89
+
90
+ // AssetList[] of the native assets
91
+ const assetes: AssetList[] = chainInfo.nativeAssetLists();
92
+ ```
93
+
package/main/index.js CHANGED
@@ -1,412 +1,31 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
- exports.ibcDenom = exports.getWasmChannel = exports.getTransferChannel = exports.getNonTransferChannel = exports.getIbcInfo = exports.getIbcDenomByBaseForCw20 = exports.getIbcDenomByBase = exports.getIbcAssets = exports.getCw20Assets = exports.getAssetLists = void 0;
9
-
10
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- var _crypto = require("@keplr-wallet/crypto");
15
-
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
-
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
-
20
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
21
-
22
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
-
24
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
25
-
26
- var ibcDenom = function ibcDenom(paths, coinMinimalDenom) {
27
- var prefixes = [];
28
-
29
- var _iterator = _createForOfIteratorHelper(paths),
30
- _step;
31
-
32
- try {
33
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
34
- var path = _step.value;
35
- prefixes.push("".concat(path.portId, "/").concat(path.channelId));
36
- }
37
- } catch (err) {
38
- _iterator.e(err);
39
- } finally {
40
- _iterator.f();
41
- }
42
-
43
- var prefix = prefixes.join('/');
44
- var denom = "".concat(prefix, "/").concat(coinMinimalDenom);
45
- return 'ibc/' + Buffer.from(_crypto.Hash.sha256(Buffer.from(denom))).toString('hex').toUpperCase();
46
- };
47
-
48
- exports.ibcDenom = ibcDenom;
49
-
50
- var findInfo = function findInfo(ibc, to, from) {
51
- return ibc.find(function (i) {
52
- return i['chain-1']['chain-name'] === from && i['chain-2']['chain-name'] === to;
53
- });
54
- };
55
-
56
- var getIbcInfo = function getIbcInfo(ibc, chain, counterparty) {
57
- return findInfo(ibc, chain, counterparty) || findInfo(ibc, counterparty, chain);
58
- };
59
-
60
- exports.getIbcInfo = getIbcInfo;
61
-
62
- var getTransferChannel = function getTransferChannel(info) {
63
- return info.channels.find(function (channel) {
64
- return channel['chain-1']['port-id'] === 'transfer' && channel['chain-2']['port-id'] === 'transfer';
65
- });
66
- };
67
-
68
- exports.getTransferChannel = getTransferChannel;
69
-
70
- var getNonTransferChannel = function getNonTransferChannel(info) {
71
- return info.channels.find(function (channel) {
72
- return channel['chain-1']['port-id'] !== 'transfer' && channel['chain-2']['port-id'] === 'transfer' || channel['chain-1']['port-id'] === 'transfer' && channel['chain-2']['port-id'] !== 'transfer';
73
- });
74
- };
75
-
76
- exports.getNonTransferChannel = getNonTransferChannel;
77
-
78
- var getWasmChannel = function getWasmChannel(info) {
79
- return info.channels.find(function (channel) {
80
- return channel['chain-1']['port-id'].startsWith('wasm.') && channel['chain-2']['port-id'] === 'transfer' || channel['chain-1']['port-id'] === 'transfer' && channel['chain-2']['port-id'].startsWith('wasm');
81
- });
82
- };
83
-
84
- exports.getWasmChannel = getWasmChannel;
85
-
86
- var getIbcDenomByBase = function getIbcDenomByBase(ibc, chain, counterparty, assets, base) {
87
- var ibcInfo = getIbcInfo(ibc, chain, counterparty);
88
-
89
- if (ibcInfo) {
90
- var channel = getTransferChannel(ibcInfo);
91
-
92
- if (!channel) {
93
- return;
94
- }
95
-
96
- var channelInfo;
97
-
98
- if (ibcInfo['chain-1']['chain-name'] === chain) {
99
- channelInfo = channel['chain-1'];
100
- } else {
101
- channelInfo = channel['chain-2'];
102
- }
103
-
104
- var assetList = assets.find(function (_ref) {
105
- var chain_name = _ref.chain_name;
106
- return chain_name === counterparty;
107
- });
108
-
109
- if (!assetList) {
110
- return;
111
- }
112
-
113
- var assetInfo = assetList.assets.find(function (asset) {
114
- return asset.base === base;
115
- });
116
-
117
- if (!assetInfo) {
118
- console.warn('missing referrenced asset');
119
- } // TODO transition later!
120
-
121
-
122
- var traces = [];
123
-
124
- if (assetInfo.ibc) {
125
- traces.push({
126
- type: 'ibc',
127
- counterparty: {
128
- denom: assetInfo.ibc.source_denom,
129
- channel: assetInfo.ibc.source_channel
130
- },
131
- chain: {
132
- channel: assetInfo.ibc.dst_channel
133
- }
134
- });
135
- }
136
-
137
- if (assetInfo.traces && assetInfo.traces.length) {
138
- [].push.apply(traces, assetInfo.traces);
139
- } // console.log(transition);
140
- // if (transition.length) {
141
- // return ibcDenom(
142
- // [
143
- // {
144
- // portId: 'transfer',
145
- // channelId: assetInfo.ibc.source_channel
146
- // },
147
- // {
148
- // portId: channelInfo['port-id'],
149
- // channelId: channelInfo['channel-id']
150
- // }
151
- // ],
152
- // base
153
- // );
154
- // }
155
6
 
7
+ var _registry = require("./registry");
156
8
 
157
- return ibcDenom([{
158
- portId: channelInfo['port-id'],
159
- channelId: channelInfo['channel-id']
160
- }], base);
161
- }
162
- };
163
-
164
- exports.getIbcDenomByBase = getIbcDenomByBase;
165
-
166
- var getIbcDenomByBaseForCw20 = function getIbcDenomByBaseForCw20(ibc, chain, counterparty, assets, base) {
167
- var ibcInfo = getIbcInfo(ibc, chain, counterparty);
168
-
169
- if (ibcInfo) {
170
- var channel = getWasmChannel(ibcInfo);
171
-
172
- if (!channel) {
173
- return;
174
- }
175
-
176
- var channelInfo;
177
-
178
- if (ibcInfo['chain-1']['chain-name'] === chain) {
179
- channelInfo = channel['chain-1'];
180
- } else {
181
- channelInfo = channel['chain-2'];
182
- }
183
-
184
- var assetInfo = assets.find(function (_ref2) {
185
- var chain_name = _ref2.chain_name;
186
- return chain_name === counterparty;
187
- });
188
-
189
- if (!assetInfo) {
190
- return;
9
+ Object.keys(_registry).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (key in exports && exports[key] === _registry[key]) return;
12
+ Object.defineProperty(exports, key, {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _registry[key];
191
16
  }
192
-
193
- return ibcDenom([{
194
- portId: channelInfo['port-id'],
195
- channelId: channelInfo['channel-id']
196
- }], base);
197
- }
198
- };
199
-
200
- exports.getIbcDenomByBaseForCw20 = getIbcDenomByBaseForCw20;
201
-
202
- var getIbcAssets = function getIbcAssets(chainName, ibc, assets) {
203
- var chainIbcInfo = ibc.filter(function (i) {
204
- return i['chain-1']['chain-name'] === chainName || i['chain-2']['chain-name'] === chainName;
205
17
  });
206
- var ibcAssetLists = chainIbcInfo.map(function (ibcInfo) {
207
- var counterpartyIs = ibcInfo['chain-1']['chain-name'] === chainName ? 'chain-2' : 'chain-1';
208
- var chainIs = ibcInfo['chain-1']['chain-name'] === chainName ? 'chain-1' : 'chain-2';
209
- var counterparty = ibcInfo[counterpartyIs]['chain-name'];
210
- var counterpartyIbc = ibcInfo[counterpartyIs];
211
- var chainIbc = ibcInfo[chainIs];
212
- var counterpartyAssets = assets.find(function (a) {
213
- return a.chain_name === counterparty;
214
- });
215
-
216
- if (!counterpartyAssets) {
217
- console.warn('asset not found: ' + counterparty);
218
- return;
219
- }
220
-
221
- var ibcAssets = counterpartyAssets.assets.filter(function (a) {
222
- return !a.base.startsWith('cw20:');
223
- }).map(function (asset) {
224
- var denom = getIbcDenomByBase(ibc, chainName, counterparty, //
225
- assets, asset.base);
226
-
227
- var newAsset = _objectSpread({}, asset);
228
-
229
- newAsset.base = denom;
230
- newAsset.denom_units = newAsset.denom_units.map(function (unit) {
231
- if (unit.denom === asset.base) {
232
- var newUnit = _objectSpread({}, unit);
233
-
234
- newUnit.denom = denom;
235
- newUnit.aliases = [unit.denom];
236
- return newUnit;
237
- }
238
-
239
- return unit;
240
- });
241
- return newAsset;
242
- });
243
- var channel = getTransferChannel(ibcInfo);
244
- return {
245
- chain: _objectSpread(_objectSpread({}, chainIbc), channel[chainIs]),
246
- counterparty: _objectSpread(_objectSpread({}, counterpartyIbc), channel[counterpartyIs]),
247
- assets: ibcAssets
248
- };
249
- }).filter(Boolean);
250
- var hash = ibcAssetLists.reduce(function (m, v) {
251
- m[v.chain['chain-name']] = m[v.chain['chain-name']] || [];
252
- var assets = v.assets.map(function (asset) {
253
- return _objectSpread(_objectSpread({}, asset), {}, {
254
- traces: [{
255
- type: 'ibc',
256
- counterparty: {
257
- // source_channel
258
- channel: v.counterparty['channel-id'],
259
- // source_denom
260
- denom: asset.denom_units[0].aliases[0],
261
- chain_name: v.counterparty['chain-name'] // port: v.counterparty['port-id']
262
-
263
- },
264
- chain: {
265
- // dst_denom
266
- channel: v.chain['channel-id'] // chain_name: v.chain['chain-name'],
267
- // port: v.chain['port-id']
268
-
269
- }
270
- }]
271
- });
272
- });
273
-
274
- var obj = _objectSpread(_objectSpread({}, v), {}, {
275
- assets: assets
276
- });
277
-
278
- m[v.chain['chain-name']].push(obj);
279
- return m;
280
- }, {});
281
- return Object.keys(hash).map(function (chain) {
282
- return {
283
- chain_name: chain,
284
- assets: hash[chain].reduce(function (m, v) {
285
- return [].concat((0, _toConsumableArray2["default"])(m), (0, _toConsumableArray2["default"])(v.assets));
286
- }, [])
287
- };
288
- });
289
- };
290
-
291
- exports.getIbcAssets = getIbcAssets;
292
-
293
- var getCw20Assets = function getCw20Assets(chainName, ibc, assets) {
294
- var chainIbcInfo = ibc.filter(function (i) {
295
- return i['chain-1']['chain-name'] === chainName || i['chain-2']['chain-name'] === chainName;
296
- });
297
- var cw20AssetLists = chainIbcInfo.map(function (ibcInfo) {
298
- var counterpartyIs = ibcInfo['chain-1']['chain-name'] === chainName ? 'chain-2' : 'chain-1';
299
- var chainIs = ibcInfo['chain-1']['chain-name'] === chainName ? 'chain-1' : 'chain-2';
300
- var counterparty = ibcInfo[counterpartyIs]['chain-name'];
301
- var counterpartyIbc = ibcInfo[counterpartyIs];
302
- var chainIbc = ibcInfo[chainIs];
303
- var counterpartyAssets = assets.find(function (a) {
304
- return a.chain_name === counterparty;
305
- });
306
-
307
- if (!counterpartyAssets) {
308
- console.warn('asset not found: ' + counterparty);
309
- return;
310
- }
311
-
312
- var cw20Assets = counterpartyAssets.assets.filter(function (a) {
313
- return a.base.startsWith('cw20:');
314
- }).map(function (asset) {
315
- var denom = getIbcDenomByBaseForCw20(ibc, chainName, counterparty, //
316
- assets, asset.base);
317
-
318
- var newAsset = _objectSpread({}, asset);
319
-
320
- newAsset.base = denom;
321
- newAsset.denom_units = newAsset.denom_units.map(function (unit) {
322
- if (unit.denom === asset.base) {
323
- var newUnit = _objectSpread({}, unit);
324
-
325
- newUnit.denom = denom;
326
- newUnit.aliases = [unit.denom];
327
- return newUnit;
328
- }
18
+ });
329
19
 
330
- return unit;
331
- });
332
- return newAsset;
333
- });
334
- if (!cw20Assets.length) return;
335
- var channel = getWasmChannel(ibcInfo);
20
+ var _utils = require("./utils");
336
21
 
337
- if (!channel) {
338
- console.warn(chainIbc['chain-name'], '<>', counterpartyIbc['chain-name'], 'MISSING cw20 IBC info');
339
- return;
22
+ Object.keys(_utils).forEach(function (key) {
23
+ if (key === "default" || key === "__esModule") return;
24
+ if (key in exports && exports[key] === _utils[key]) return;
25
+ Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _utils[key];
340
29
  }
341
-
342
- return {
343
- chain: _objectSpread(_objectSpread({}, chainIbc), channel[chainIs]),
344
- counterparty: _objectSpread(_objectSpread({}, counterpartyIbc), channel[counterpartyIs]),
345
- assets: cw20Assets
346
- };
347
- }).filter(Boolean);
348
- var hash = cw20AssetLists.reduce(function (m, v) {
349
- m[v.chain['chain-name']] = m[v.chain['chain-name']] || [];
350
- var assets = v.assets.map(function (asset) {
351
- return _objectSpread(_objectSpread({}, asset), {}, {
352
- traces: [{
353
- type: 'ibc',
354
- counterparty: {
355
- port: v.counterparty['port-id'],
356
- // source_channel
357
- channel: v.counterparty['channel-id'],
358
- // source_denom
359
- denom: asset.denom_units[0].aliases[0],
360
- chain_name: v.counterparty['chain-name']
361
- },
362
- chain: {
363
- // dst_denom
364
- port: v.chain['port-id'],
365
- channel: v.chain['channel-id'] // chain_name: v.chain['chain-name'],
366
-
367
- }
368
- }]
369
- });
370
- });
371
-
372
- var obj = _objectSpread(_objectSpread({}, v), {}, {
373
- assets: assets
374
- });
375
-
376
- m[v.chain['chain-name']].push(obj);
377
- return m;
378
- }, {});
379
- return Object.keys(hash).map(function (chain) {
380
- return {
381
- chain_name: chain,
382
- assets: hash[chain].reduce(function (m, v) {
383
- return [].concat((0, _toConsumableArray2["default"])(m), (0, _toConsumableArray2["default"])(v.assets));
384
- }, [])
385
- };
386
30
  });
387
- };
388
-
389
- exports.getCw20Assets = getCw20Assets;
390
-
391
- var getAssetLists = function getAssetLists(chainName, ibc, assets) {
392
- var ibcAssetLists = getIbcAssets(chainName, ibc, assets);
393
- var cw20Assets = getCw20Assets(chainName, ibc, assets);
394
- return ibcAssetLists.reduce(function (m, v) {
395
- var chain = v.chain_name;
396
- var assets = (0, _toConsumableArray2["default"])(v.assets);
397
- var cw20 = cw20Assets.find(function (a) {
398
- return a.chain_name === chain;
399
- });
400
-
401
- if (cw20) {
402
- [].push.apply(assets, cw20.assets);
403
- }
404
-
405
- return [{
406
- chain_name: chain,
407
- assets: assets
408
- }].concat((0, _toConsumableArray2["default"])(m));
409
- }, []);
410
- };
411
-
412
- exports.getAssetLists = getAssetLists;
31
+ });