@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 +24 -0
- package/README.md +79 -1
- package/main/index.js +18 -399
- package/main/registry.js +312 -0
- package/main/utils.js +415 -0
- package/module/index.js +2 -338
- package/module/registry.js +216 -0
- package/module/utils.js +341 -0
- package/package.json +6 -3
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
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
|
|
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
|
-
|
|
331
|
-
});
|
|
332
|
-
return newAsset;
|
|
333
|
-
});
|
|
334
|
-
if (!cw20Assets.length) return;
|
|
335
|
-
var channel = getWasmChannel(ibcInfo);
|
|
20
|
+
var _utils = require("./utils");
|
|
336
21
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
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
|
+
});
|