@pioneer-platform/pioneer-router 8.4.3

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 ADDED
@@ -0,0 +1,49 @@
1
+ declare const TAG = " | Pioneer-router | ";
2
+ declare const log: any;
3
+ declare let thorswap: any;
4
+ interface Swap {
5
+ sellAsset: {
6
+ context: string;
7
+ caip: string;
8
+ identifier: string;
9
+ address: string;
10
+ symbol: string;
11
+ chain: string;
12
+ ticker: string;
13
+ type: string;
14
+ balance: string;
15
+ priceUsd: number;
16
+ rank: number;
17
+ name: string;
18
+ source: string;
19
+ alias: number;
20
+ valueUsd: string;
21
+ };
22
+ sellAmount: string;
23
+ buyAsset: {
24
+ context: string;
25
+ caip: string;
26
+ identifier: string;
27
+ address: string;
28
+ symbol: string;
29
+ chain: string;
30
+ ticker: string;
31
+ type: string;
32
+ balance: string;
33
+ priceUsd: number;
34
+ rank: number;
35
+ name: string;
36
+ source: string;
37
+ alias: number;
38
+ valueUsd: string;
39
+ };
40
+ senderAddress: string;
41
+ recipientAddress: string;
42
+ slippage: string;
43
+ }
44
+ declare let NetworksByIntegration: any;
45
+ declare function get_quote_from_integration(integration: string, quote: Swap): Promise<any>;
46
+ declare function get_quote(quote: Swap): Promise<{
47
+ integration: string;
48
+ quote: any;
49
+ }[]>;
package/lib/index.js ADDED
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ /*
3
+
4
+ Pioneer API
5
+ A High Availability blockchain api
6
+
7
+ Goals:
8
+ v1 compatibility with watchtower with 0 change
9
+ Multi-asset support
10
+
11
+ V2 goals:
12
+ Treat Xpubs as passwords
13
+ encrypt long term data storage
14
+ maintain hash table to detect and cache payments
15
+
16
+
17
+
18
+ getTransactions:
19
+
20
+ Data: example
21
+
22
+ { success: true,
23
+ pagination: { page: 1, total_objects: 88, total_pages: 9 },
24
+ data:
25
+ [ { txid:
26
+ '',
27
+ status: 'confirmed',
28
+ type: 'send',
29
+ amount: -78602,
30
+ date: '2019-05-10T21:01:23Z',
31
+ confirmations: 1055,
32
+ network: 'BTC',
33
+ xpub:
34
+ '' },
35
+ }
36
+ ]
37
+ }
38
+ }
39
+
40
+ */
41
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
42
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
43
+ return new (P || (P = Promise))(function (resolve, reject) {
44
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
45
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
46
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
47
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
48
+ });
49
+ };
50
+ var __generator = (this && this.__generator) || function (thisArg, body) {
51
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
52
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
53
+ function verb(n) { return function (v) { return step([n, v]); }; }
54
+ function step(op) {
55
+ if (f) throw new TypeError("Generator is already executing.");
56
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
57
+ 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;
58
+ if (y = 0, t) op = [op[0] & 2, t.value];
59
+ switch (op[0]) {
60
+ case 0: case 1: t = op; break;
61
+ case 4: _.label++; return { value: op[1], done: false };
62
+ case 5: _.label++; y = op[1]; op = [0]; continue;
63
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
64
+ default:
65
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
66
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
67
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
68
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
69
+ if (t[2]) _.ops.pop();
70
+ _.trys.pop(); continue;
71
+ }
72
+ op = body.call(thisArg, _);
73
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
74
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
75
+ }
76
+ };
77
+ var TAG = " | Pioneer-router | ";
78
+ var log = require('@pioneer-platform/loggerdog')();
79
+ //thorswap
80
+ var thorswap = require("@pioneer-platform/thorswap-client");
81
+ var NetworksByIntegration = {};
82
+ module.exports = {
83
+ init: function () {
84
+ return __awaiter(this, void 0, void 0, function () {
85
+ return __generator(this, function (_a) {
86
+ switch (_a.label) {
87
+ case 0: return [4 /*yield*/, thorswap.init()];
88
+ case 1:
89
+ _a.sent();
90
+ NetworksByIntegration['thorswap'] = thorswap.networkSupport();
91
+ return [2 /*return*/, true];
92
+ }
93
+ });
94
+ });
95
+ },
96
+ routes: function () {
97
+ return NetworksByIntegration;
98
+ },
99
+ quote: function (quote) {
100
+ return __awaiter(this, void 0, void 0, function () {
101
+ return __generator(this, function (_a) {
102
+ return [2 /*return*/, get_quote(quote)];
103
+ });
104
+ });
105
+ }
106
+ };
107
+ function get_quote_from_integration(integration, quote) {
108
+ return __awaiter(this, void 0, void 0, function () {
109
+ var tag, _a, payloadThorswap, quoteThorswap, e_1;
110
+ return __generator(this, function (_b) {
111
+ switch (_b.label) {
112
+ case 0:
113
+ tag = TAG + " | get_quote_from_integration | ";
114
+ _b.label = 1;
115
+ case 1:
116
+ _b.trys.push([1, 6, , 7]);
117
+ _a = integration;
118
+ switch (_a) {
119
+ case "thorswap": return [3 /*break*/, 2];
120
+ }
121
+ return [3 /*break*/, 4];
122
+ case 2:
123
+ payloadThorswap = {
124
+ sellAsset: quote.sellAsset.identifier,
125
+ buyAsset: quote.buyAsset.identifier,
126
+ sellAmount: quote.sellAmount,
127
+ senderAddress: quote.senderAddress,
128
+ recipientAddress: quote.recipientAddress,
129
+ slippage: quote.slippage
130
+ };
131
+ log.info(tag, "payloadThorswap: ", payloadThorswap);
132
+ return [4 /*yield*/, thorswap.getQuote(payloadThorswap)];
133
+ case 3:
134
+ quoteThorswap = _b.sent();
135
+ return [2 /*return*/, quoteThorswap];
136
+ case 4: throw new Error("Intergration not found");
137
+ case 5: return [3 /*break*/, 7];
138
+ case 6:
139
+ e_1 = _b.sent();
140
+ throw e_1;
141
+ case 7: return [2 /*return*/];
142
+ }
143
+ });
144
+ });
145
+ }
146
+ function get_quote(quote) {
147
+ return __awaiter(this, void 0, void 0, function () {
148
+ var sellChain, buyChain, integrations, quotes, _i, integrations_1, integration, supportedNetworks, integrationQuote, err_1;
149
+ return __generator(this, function (_a) {
150
+ switch (_a.label) {
151
+ case 0:
152
+ _a.trys.push([0, 5, , 6]);
153
+ sellChain = quote.sellAsset.caip;
154
+ buyChain = quote.buyAsset.caip;
155
+ integrations = Object.keys(NetworksByIntegration);
156
+ quotes = [];
157
+ _i = 0, integrations_1 = integrations;
158
+ _a.label = 1;
159
+ case 1:
160
+ if (!(_i < integrations_1.length)) return [3 /*break*/, 4];
161
+ integration = integrations_1[_i];
162
+ supportedNetworks = NetworksByIntegration[integration];
163
+ if (!(supportedNetworks.includes(sellChain) && supportedNetworks.includes(buyChain))) return [3 /*break*/, 3];
164
+ console.log(TAG, "Found supported integration for both networks:", integration);
165
+ return [4 /*yield*/, get_quote_from_integration(integration, quote)];
166
+ case 2:
167
+ integrationQuote = _a.sent();
168
+ quotes.push({ integration: integration, quote: integrationQuote });
169
+ _a.label = 3;
170
+ case 3:
171
+ _i++;
172
+ return [3 /*break*/, 1];
173
+ case 4:
174
+ //return applicable intergrations
175
+ //for each intergration get quote
176
+ //set best quote
177
+ //return quotes
178
+ return [2 /*return*/, quotes];
179
+ case 5:
180
+ err_1 = _a.sent();
181
+ throw err_1;
182
+ case 6: return [2 /*return*/];
183
+ }
184
+ });
185
+ });
186
+ }
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@pioneer-platform/pioneer-router",
3
+ "version": "8.4.3",
4
+ "main": "./lib/index.js",
5
+ "types": "./lib/index.d.ts",
6
+ "scripts": {
7
+ "npm": "npm i",
8
+ "npm-update": "npm update",
9
+ "test": "npm run build && node __tests__/test-module.js",
10
+ "test-cli-export": "npm run build && node __tests__/reference-test-cli-export.js",
11
+ "lint": "prettier --write '**/**/*.ts'",
12
+ "start": "nodemon --watch 'src/**/*.ts' --exec ts-node __tests__node",
13
+ "build": "tsc -p .",
14
+ "prepublish": "npm run build",
15
+ "refresh": "rm -rf ./node_modules ./package-lock.json && npm install",
16
+ "test-jest": "jest --coverage",
17
+ "test:watch": "jest --coverage --watchAll",
18
+ "build:watch": "onchange 'src/**/*.ts' -- npm run build",
19
+ "view:coverage": "serve coverage/lcov-report",
20
+ "clean": "rm -rf coverage src/**/*.js src/**/*.map lib node_modules"
21
+ },
22
+ "dependencies": {
23
+ "@pioneer-platform/thorswap-client": "8.3.2",
24
+ "dotenv": "^8.2.0",
25
+ "short-uuid": "^4.2.2"
26
+ },
27
+ "devDependencies": {
28
+ "@types/jest": "^25.2.3",
29
+ "@types/node": "^13.13.39",
30
+ "@types/source-map-support": "^0.5.3",
31
+ "jest": "^26.6.3",
32
+ "onchange": "^7.1.0",
33
+ "serve": "^11.3.2",
34
+ "source-map-support": "^0.5.19",
35
+ "ts-jest": "^29.0.5",
36
+ "typescript": "^5.0.2"
37
+ },
38
+ "gitHead": "aeae28273014ab69b42f22abec159c6693a56c40"
39
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es5",
4
+ "module": "commonjs",
5
+ "lib": ["es6", "es2015", "dom"],
6
+ "declaration": true,
7
+ "outDir": "lib",
8
+ "rootDir": "src",
9
+ "strict": true,
10
+ "types": ["node"],
11
+ "esModuleInterop": true
12
+ }
13
+ }