@pioneer-platform/shapeshift 8.1.16 → 8.2.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/lib/index.d.ts +11 -1
- package/lib/index.js +146 -76
- package/package.json +20 -18
package/lib/index.d.ts
CHANGED
|
@@ -1,2 +1,12 @@
|
|
|
1
|
-
declare const TAG = " |
|
|
1
|
+
declare const TAG = " | unchained-client | ";
|
|
2
|
+
declare let pioneerApi: any;
|
|
2
3
|
declare const log: any;
|
|
4
|
+
declare const fakeUa: any;
|
|
5
|
+
declare const nodes: any;
|
|
6
|
+
declare const Axios: any;
|
|
7
|
+
declare const https: any;
|
|
8
|
+
declare const axios: any;
|
|
9
|
+
declare const axiosRetry: any;
|
|
10
|
+
declare const ALL_UNCHAINED_APIS: any;
|
|
11
|
+
declare let init_network: (servers?: any) => Promise<any>;
|
|
12
|
+
declare let get_fees: (caip: string) => Promise<any>;
|
package/lib/index.js
CHANGED
|
@@ -1,26 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
ShapeShift Exchange class
|
|
4
3
|
|
|
5
|
-
Goals:
|
|
6
|
-
Unify the multi-chain DEX and bridge tools into a uniform multi-chain swapping class
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
High level
|
|
11
|
-
* List available exchanges
|
|
12
|
-
|
|
13
|
-
getAvailable routes
|
|
14
|
-
|
|
15
|
-
getAvailable rates
|
|
16
|
-
|
|
17
|
-
predict incurred fee's
|
|
18
|
-
|
|
19
|
-
calcuate multiple hops
|
|
20
|
-
|
|
21
|
-
find best route
|
|
22
|
-
|
|
23
|
-
predict/observe/report/record fee's
|
|
24
4
|
|
|
25
5
|
*/
|
|
26
6
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
@@ -38,7 +18,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
18
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
39
19
|
function step(op) {
|
|
40
20
|
if (f) throw new TypeError("Generator is already executing.");
|
|
41
|
-
while (_) try {
|
|
21
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
42
22
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
43
23
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
44
24
|
switch (op[0]) {
|
|
@@ -59,60 +39,150 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
59
39
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
60
40
|
}
|
|
61
41
|
};
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
42
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
43
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
44
|
+
if (ar || !(i in from)) {
|
|
45
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
46
|
+
ar[i] = from[i];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
50
|
+
};
|
|
51
|
+
var TAG = " | unchained-client | ";
|
|
52
|
+
var pioneerApi = require("@pioneer-platform/pioneer-client").default;
|
|
53
|
+
var log = require('@pioneer-platform/loggerdog')();
|
|
54
|
+
var fakeUa = require('fake-useragent');
|
|
55
|
+
var nodes = require("@pioneer-platform/nodes");
|
|
56
|
+
var Axios = require('axios');
|
|
57
|
+
var https = require('https');
|
|
58
|
+
var axios = Axios.create({
|
|
59
|
+
httpsAgent: new https.Agent({
|
|
60
|
+
rejectUnauthorized: false
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
var axiosRetry = require('axios-retry');
|
|
64
|
+
var ALL_UNCHAINED_APIS = {};
|
|
65
|
+
axiosRetry(axios, {
|
|
66
|
+
retries: 3,
|
|
67
|
+
retryDelay: function (retryCount) {
|
|
68
|
+
log.debug(TAG, "retry attempt: ".concat(retryCount));
|
|
69
|
+
return retryCount * 2000; // time interval between retries
|
|
70
|
+
},
|
|
71
|
+
retryCondition: function (error) {
|
|
72
|
+
//console.error(error)
|
|
73
|
+
// if retry condition is not specified, by default idempotent requests are retried
|
|
74
|
+
return error.response.status === 503;
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
module.exports = {
|
|
78
|
+
init: function (servers) {
|
|
79
|
+
return init_network(servers);
|
|
80
|
+
},
|
|
81
|
+
unchained: function () {
|
|
82
|
+
return ALL_UNCHAINED_APIS();
|
|
83
|
+
},
|
|
84
|
+
getFees: function (caip) {
|
|
85
|
+
return get_fees(caip);
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
var init_network = function (servers) {
|
|
89
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
90
|
+
var tag, allUnchaineds, SEED_NODES, combinedSet, i, unchainedInfo, config, Unchained, _a, _b, e_1, e_2;
|
|
91
|
+
return __generator(this, function (_c) {
|
|
92
|
+
switch (_c.label) {
|
|
93
|
+
case 0:
|
|
94
|
+
tag = TAG + " | init_network | ";
|
|
95
|
+
_c.label = 1;
|
|
96
|
+
case 1:
|
|
97
|
+
_c.trys.push([1, 11, , 12]);
|
|
98
|
+
allUnchaineds = [];
|
|
99
|
+
if (servers && Array.isArray(servers)) {
|
|
100
|
+
allUnchaineds = servers;
|
|
107
101
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
102
|
+
else if (servers) {
|
|
103
|
+
// Handle the case when 'servers' is not an array
|
|
104
|
+
log.error(tag, "'servers' is not an array!", servers);
|
|
111
105
|
}
|
|
112
|
-
return [
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
106
|
+
return [4 /*yield*/, nodes.getUnchaineds()];
|
|
107
|
+
case 2:
|
|
108
|
+
SEED_NODES = _c.sent();
|
|
109
|
+
log.debug(tag, "SEED_NODES: ", SEED_NODES);
|
|
110
|
+
log.debug(tag, "SEED_NODES: ", SEED_NODES.length);
|
|
111
|
+
combinedSet = new Set(__spreadArray(__spreadArray([], allUnchaineds, true), SEED_NODES, true));
|
|
112
|
+
// Convert the Set back to an array
|
|
113
|
+
allUnchaineds = Array.from(combinedSet);
|
|
114
|
+
log.debug(tag, "allUnchaineds: ", allUnchaineds);
|
|
115
|
+
log.debug(tag, "allUnchaineds: ", allUnchaineds.length);
|
|
116
|
+
i = 0;
|
|
117
|
+
_c.label = 3;
|
|
118
|
+
case 3:
|
|
119
|
+
if (!(i < allUnchaineds.length)) return [3 /*break*/, 10];
|
|
120
|
+
unchainedInfo = allUnchaineds[i];
|
|
121
|
+
if (!(unchainedInfo.service && unchainedInfo.caip && unchainedInfo.swagger)) return [3 /*break*/, 8];
|
|
122
|
+
config = { queryKey: "foobaz", spec: unchainedInfo.swagger };
|
|
123
|
+
Unchained = new pioneerApi(unchainedInfo.swagger, config);
|
|
124
|
+
_c.label = 4;
|
|
125
|
+
case 4:
|
|
126
|
+
_c.trys.push([4, 6, , 7]);
|
|
127
|
+
//if already set, check pings, choose lowest ping
|
|
128
|
+
_a = ALL_UNCHAINED_APIS;
|
|
129
|
+
_b = unchainedInfo.caip;
|
|
130
|
+
return [4 /*yield*/, Unchained.init()];
|
|
131
|
+
case 5:
|
|
132
|
+
//if already set, check pings, choose lowest ping
|
|
133
|
+
_a[_b] = _c.sent();
|
|
134
|
+
return [3 /*break*/, 7];
|
|
135
|
+
case 6:
|
|
136
|
+
e_1 = _c.sent();
|
|
137
|
+
//@TODO mark offline on api
|
|
138
|
+
log.debug(tag, " service if offline: ", unchainedInfo.service);
|
|
139
|
+
return [3 /*break*/, 7];
|
|
140
|
+
case 7: return [3 /*break*/, 9];
|
|
141
|
+
case 8:
|
|
142
|
+
log.debug(tag, "invalid unchained service: ", unchainedInfo.service);
|
|
143
|
+
_c.label = 9;
|
|
144
|
+
case 9:
|
|
145
|
+
i++;
|
|
146
|
+
return [3 /*break*/, 3];
|
|
147
|
+
case 10: return [2 /*return*/, ALL_UNCHAINED_APIS];
|
|
148
|
+
case 11:
|
|
149
|
+
e_2 = _c.sent();
|
|
150
|
+
console.error(tag, e_2);
|
|
151
|
+
return [3 /*break*/, 12];
|
|
152
|
+
case 12: return [2 /*return*/];
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
var get_fees = function (caip) {
|
|
158
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
159
|
+
var tag, output, e_3;
|
|
160
|
+
return __generator(this, function (_a) {
|
|
161
|
+
switch (_a.label) {
|
|
162
|
+
case 0:
|
|
163
|
+
tag = TAG + " | get_fees | ";
|
|
164
|
+
_a.label = 1;
|
|
165
|
+
case 1:
|
|
166
|
+
_a.trys.push([1, 6, , 7]);
|
|
167
|
+
output = void 0;
|
|
168
|
+
if (!ALL_UNCHAINED_APIS[caip].GetNetworkFees) return [3 /*break*/, 3];
|
|
169
|
+
return [4 /*yield*/, ALL_UNCHAINED_APIS[caip].GetNetworkFees()];
|
|
170
|
+
case 2:
|
|
171
|
+
output = _a.sent();
|
|
172
|
+
return [3 /*break*/, 5];
|
|
173
|
+
case 3:
|
|
174
|
+
if (!ALL_UNCHAINED_APIS[caip].GetGasFees) return [3 /*break*/, 5];
|
|
175
|
+
return [4 /*yield*/, ALL_UNCHAINED_APIS[caip].GetGasFees()];
|
|
176
|
+
case 4:
|
|
177
|
+
output = _a.sent();
|
|
178
|
+
_a.label = 5;
|
|
179
|
+
case 5: return [2 /*return*/, output];
|
|
180
|
+
case 6:
|
|
181
|
+
e_3 = _a.sent();
|
|
182
|
+
console.error(tag, e_3);
|
|
183
|
+
return [3 /*break*/, 7];
|
|
184
|
+
case 7: return [2 /*return*/];
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
};
|
package/package.json
CHANGED
|
@@ -1,30 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pioneer-platform/shapeshift",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
|
-
"types": "./lib/
|
|
6
|
-
"dependencies": {
|
|
7
|
-
"@pioneer-platform/loggerdog": "^8.1.16",
|
|
8
|
-
"axios": "^0.21.1",
|
|
9
|
-
"dotenv": "^8.2.0"
|
|
10
|
-
},
|
|
5
|
+
"types": "./lib/main.d.ts",
|
|
11
6
|
"scripts": {
|
|
12
7
|
"npm": "npm i",
|
|
13
|
-
"
|
|
8
|
+
"start": "node lib/index",
|
|
14
9
|
"build": "tsc -p .",
|
|
10
|
+
"test": "npm run build && node __tests__/test-module.js",
|
|
15
11
|
"prepublish": "npm run build",
|
|
16
12
|
"refresh": "rm -rf ./node_modules ./package-lock.json && npm install"
|
|
17
13
|
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@pioneer-platform/loggerdog": "^8.2.0",
|
|
16
|
+
"@pioneer-platform/nodes": "^8.2.0",
|
|
17
|
+
"@pioneer-platform/pioneer-client": "^9.1.0",
|
|
18
|
+
"@types/request-promise-native": "^1.0.17",
|
|
19
|
+
"@types/ws": "^7.4.2",
|
|
20
|
+
"axios": "^0.21.4",
|
|
21
|
+
"axios-retry": "^3.1.9",
|
|
22
|
+
"fake-useragent": "^1.0.1"
|
|
23
|
+
},
|
|
18
24
|
"devDependencies": {
|
|
19
|
-
"@types/
|
|
20
|
-
"@types/node": "^13.13.
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"serve": "^11.3.2",
|
|
25
|
-
"source-map-support": "^0.5.19",
|
|
26
|
-
"ts-jest": "^25.4.0",
|
|
27
|
-
"typescript": "^3.9.7"
|
|
25
|
+
"@types/express": "^4.17.6",
|
|
26
|
+
"@types/node": "^13.13.48",
|
|
27
|
+
"nodemon": "^2.0.3",
|
|
28
|
+
"ts-node": "^10.9.1",
|
|
29
|
+
"typescript": "^5.0.2"
|
|
28
30
|
},
|
|
29
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "85d1a59f3eec7851cc4b426ab69e1eabfcfc9954"
|
|
30
32
|
}
|