@pioneer-platform/blockbook 8.1.52 → 8.1.53

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 CHANGED
@@ -1,4 +1,6 @@
1
1
  declare const TAG = " | blockbook-client | ";
2
+ declare let pioneerApi: any;
3
+ declare const Blockbook: any;
2
4
  declare const log: any;
3
5
  declare const fakeUa: any;
4
6
  declare const Axios: any;
@@ -6,6 +8,10 @@ declare const https: any;
6
8
  declare const axios: any;
7
9
  declare const axiosRetry: any;
8
10
  declare let BLOCKBOOK_URLS: any;
11
+ declare let BLOCKBOOK_SOCKETS: any;
12
+ declare let spec: string;
13
+ declare let init_network: (servers?: any) => Promise<boolean>;
14
+ declare let get_fees: (coin: string) => Promise<any>;
9
15
  declare let get_info_by_pubkey: (coin: string, pubkey: string, page?: string | undefined) => Promise<any>;
10
16
  declare let get_txids_by_address: (coin: string, address: string, page?: number) => Promise<any>;
11
17
  declare let get_info_by_address: (coin: string, address: string, filter?: string) => Promise<any>;
@@ -14,5 +20,4 @@ declare let broadcast_transaction: (coin: string, hex: string) => Promise<any>;
14
20
  declare let get_transaction: (coin: string, txid: string) => Promise<any>;
15
21
  declare let get_utxos_by_xpub: (coin: string, xpub: string) => Promise<any>;
16
22
  declare let get_balance_by_xpub: (coin: string, xpub: any) => Promise<number | undefined>;
17
- declare let init_network: (servers: any, runtime?: string) => boolean;
18
23
  declare let get_node_info: () => Promise<true | undefined>;
package/lib/index.js CHANGED
@@ -40,6 +40,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
40
40
  }
41
41
  };
42
42
  var TAG = " | blockbook-client | ";
43
+ var pioneerApi = require("@pioneer-platform/pioneer-client").default;
44
+ var Blockbook = require('blockbook-client').Blockbook;
43
45
  var log = require('@pioneer-platform/loggerdog')();
44
46
  var fakeUa = require('fake-useragent');
45
47
  var Axios = require('axios');
@@ -62,26 +64,25 @@ axiosRetry(axios, {
62
64
  return error.response.status === 503;
63
65
  },
64
66
  });
65
- var BLOCKBOOK_URLS = {
66
- 'BTC': process.env['BTC_BLOCKBOOK_URL'],
67
- 'ETH': process.env['ETH_BLOCKBOOK_URL'],
68
- 'BCH': process.env['BCH_BLOCKBOOK_URL'],
69
- 'DOGE': process.env['DOGE_BLOCKBOOK_URL'],
70
- 'LTC': process.env['DOGE_BLOCKBOOK_URL'],
71
- 'DASH': process.env['DASH_BLOCKBOOK_URL'],
72
- 'DGB': process.env['DGB_BLOCKBOOK_URL'],
73
- 'ETHW': process.env['ETHW_BLOCKBOOK_URL'],
74
- 'BSC': process.env['BSC_BLOCKBOOK_URL'],
75
- 'ADA': process.env['ADA_BLOCKBOOK_URL'],
76
- 'GRS': process.env['GRS_BLOCKBOOK_URL']
77
- };
67
+ var BLOCKBOOK_URLS = {};
68
+ var BLOCKBOOK_SOCKETS = {};
69
+ var spec = process.env['PIONEER_SPEC'] || 'https://pioneers.dev/spec/swagger.json';
78
70
  module.exports = {
79
- init: function (servers, runtime) {
80
- return init_network(servers, runtime);
71
+ init: function (servers) {
72
+ return init_network(servers);
81
73
  },
82
74
  getInfo: function () {
83
75
  return get_node_info();
84
76
  },
77
+ getBlockbooks: function () {
78
+ return BLOCKBOOK_URLS;
79
+ },
80
+ getBlockbookSockets: function () {
81
+ return BLOCKBOOK_SOCKETS;
82
+ },
83
+ getFees: function (coin) {
84
+ return get_fees(coin);
85
+ },
85
86
  getTransaction: function (coin, txid) {
86
87
  return get_transaction(coin, txid);
87
88
  },
@@ -107,9 +108,116 @@ module.exports = {
107
108
  return broadcast_transaction(coin, hex);
108
109
  },
109
110
  };
111
+ var init_network = function (servers) {
112
+ return __awaiter(this, void 0, void 0, function () {
113
+ var tag, blockbooks, config, pioneer, allBlockbooksRemote, e_1, i, blockbook, url, e_2;
114
+ return __generator(this, function (_a) {
115
+ switch (_a.label) {
116
+ case 0:
117
+ tag = ' | get_txs_by_address | ';
118
+ _a.label = 1;
119
+ case 1:
120
+ _a.trys.push([1, 7, , 8]);
121
+ log.debug(tag, "checkpoint: ");
122
+ blockbooks = servers || [];
123
+ _a.label = 2;
124
+ case 2:
125
+ _a.trys.push([2, 5, , 6]);
126
+ config = {
127
+ queryKey: 'unchained:npm',
128
+ spec: spec
129
+ };
130
+ pioneer = new pioneerApi(spec, config);
131
+ return [4 /*yield*/, pioneer.init()];
132
+ case 3:
133
+ pioneer = _a.sent();
134
+ return [4 /*yield*/, pioneer.SearchNodesByType({ type: "blockbook" })];
135
+ case 4:
136
+ allBlockbooksRemote = _a.sent();
137
+ allBlockbooksRemote = allBlockbooksRemote.data;
138
+ log.info(tag, "allBlockbooksRemote: ", allBlockbooksRemote);
139
+ blockbooks.apply(void 0, allBlockbooksRemote);
140
+ return [3 /*break*/, 6];
141
+ case 5:
142
+ e_1 = _a.sent();
143
+ return [3 /*break*/, 6];
144
+ case 6:
145
+ if (blockbooks.length === 0)
146
+ throw Error("No blockblocks found!");
147
+ log.info(tag, "blockbooks: ", blockbooks.length);
148
+ for (i = 0; i < blockbooks.length; i++) {
149
+ blockbook = blockbooks[i];
150
+ //get swagger
151
+ if (blockbook) {
152
+ //log.info("unchainedInfo.swagger: ",unchainedInfo.swagger)
153
+ BLOCKBOOK_URLS[blockbook.symbol.toUpperCase()] = blockbook.service;
154
+ url = blockbook.websocket.replace("/websocket", "");
155
+ url = blockbook.websocket.replace("wss://", "https://");
156
+ console.log("url: ", url);
157
+ BLOCKBOOK_SOCKETS[blockbook.symbol.toUpperCase()] = new Blockbook({
158
+ nodes: [url],
159
+ disableTypeValidation: true,
160
+ });
161
+ }
162
+ else {
163
+ log.error(tag, "invalid unchained service: ", blockbook);
164
+ // throw Error("invalid unchained service!")
165
+ }
166
+ }
167
+ log.info(tag, "BLOCKBOOK_URLS: ", BLOCKBOOK_URLS);
168
+ log.info(tag, "BLOCKBOOK_SOCKETS: ", BLOCKBOOK_SOCKETS);
169
+ return [2 /*return*/, true];
170
+ case 7:
171
+ e_2 = _a.sent();
172
+ // console.error(tag, 'Error: ', e)
173
+ throw e_2;
174
+ case 8: return [2 /*return*/];
175
+ }
176
+ });
177
+ });
178
+ };
179
+ var get_fees = function (coin) {
180
+ return __awaiter(this, void 0, void 0, function () {
181
+ var tag, url, body, resp, e_3;
182
+ return __generator(this, function (_a) {
183
+ switch (_a.label) {
184
+ case 0:
185
+ tag = TAG + " | get_fees | ";
186
+ _a.label = 1;
187
+ case 1:
188
+ _a.trys.push([1, 3, , 4]);
189
+ url = BLOCKBOOK_URLS[coin.toUpperCase()] + "/api/v2/fees";
190
+ log.info(tag, "url: ", url);
191
+ body = {
192
+ method: 'GET',
193
+ url: url,
194
+ headers: {
195
+ 'api-key': process.env['NOW_NODES_API'],
196
+ 'content-type': 'application/json',
197
+ 'User-Agent': fakeUa()
198
+ },
199
+ };
200
+ return [4 /*yield*/, axios(body)
201
+ //log.info(tag,"resp: ",resp)
202
+ //TODO paginate?
203
+ ];
204
+ case 2:
205
+ resp = _a.sent();
206
+ //log.info(tag,"resp: ",resp)
207
+ //TODO paginate?
208
+ return [2 /*return*/, resp.data];
209
+ case 3:
210
+ e_3 = _a.sent();
211
+ console.error(tag, e_3);
212
+ return [3 /*break*/, 4];
213
+ case 4: return [2 /*return*/];
214
+ }
215
+ });
216
+ });
217
+ };
110
218
  var get_info_by_pubkey = function (coin, pubkey, page) {
111
219
  return __awaiter(this, void 0, void 0, function () {
112
- var tag, url, body, resp, e_1;
220
+ var tag, url, body, resp, e_4;
113
221
  return __generator(this, function (_a) {
114
222
  switch (_a.label) {
115
223
  case 0:
@@ -137,8 +245,8 @@ var get_info_by_pubkey = function (coin, pubkey, page) {
137
245
  //TODO paginate?
138
246
  return [2 /*return*/, resp.data];
139
247
  case 3:
140
- e_1 = _a.sent();
141
- console.error(tag, e_1);
248
+ e_4 = _a.sent();
249
+ console.error(tag, e_4);
142
250
  return [3 /*break*/, 4];
143
251
  case 4: return [2 /*return*/];
144
252
  }
@@ -147,7 +255,7 @@ var get_info_by_pubkey = function (coin, pubkey, page) {
147
255
  };
148
256
  var get_txids_by_address = function (coin, address, page) {
149
257
  return __awaiter(this, void 0, void 0, function () {
150
- var tag, url, body, resp, e_2;
258
+ var tag, url, body, resp, e_5;
151
259
  return __generator(this, function (_a) {
152
260
  switch (_a.label) {
153
261
  case 0:
@@ -176,8 +284,8 @@ var get_txids_by_address = function (coin, address, page) {
176
284
  //TODO paginate?
177
285
  return [2 /*return*/, resp.data];
178
286
  case 3:
179
- e_2 = _a.sent();
180
- console.error(tag, e_2);
287
+ e_5 = _a.sent();
288
+ console.error(tag, e_5);
181
289
  return [3 /*break*/, 4];
182
290
  case 4: return [2 /*return*/];
183
291
  }
@@ -186,7 +294,7 @@ var get_txids_by_address = function (coin, address, page) {
186
294
  };
187
295
  var get_info_by_address = function (coin, address, filter) {
188
296
  return __awaiter(this, void 0, void 0, function () {
189
- var tag, url, body, resp, e_3;
297
+ var tag, url, body, resp, e_6;
190
298
  return __generator(this, function (_a) {
191
299
  switch (_a.label) {
192
300
  case 0:
@@ -214,8 +322,8 @@ var get_info_by_address = function (coin, address, filter) {
214
322
  //TODO paginate?
215
323
  return [2 /*return*/, resp.data];
216
324
  case 3:
217
- e_3 = _a.sent();
218
- console.error(tag, e_3);
325
+ e_6 = _a.sent();
326
+ console.error(tag, e_6);
219
327
  return [3 /*break*/, 4];
220
328
  case 4: return [2 /*return*/];
221
329
  }
@@ -224,7 +332,7 @@ var get_info_by_address = function (coin, address, filter) {
224
332
  };
225
333
  var get_txs_by_xpub = function (coin, xpub) {
226
334
  return __awaiter(this, void 0, void 0, function () {
227
- var tag, url, body, resp, e_4;
335
+ var tag, url, body, resp, e_7;
228
336
  return __generator(this, function (_a) {
229
337
  switch (_a.label) {
230
338
  case 0:
@@ -248,8 +356,8 @@ var get_txs_by_xpub = function (coin, xpub) {
248
356
  resp = _a.sent();
249
357
  return [2 /*return*/, resp.data];
250
358
  case 3:
251
- e_4 = _a.sent();
252
- console.error(tag, e_4);
359
+ e_7 = _a.sent();
360
+ console.error(tag, e_7);
253
361
  return [3 /*break*/, 4];
254
362
  case 4: return [2 /*return*/];
255
363
  }
@@ -258,7 +366,7 @@ var get_txs_by_xpub = function (coin, xpub) {
258
366
  };
259
367
  var broadcast_transaction = function (coin, hex) {
260
368
  return __awaiter(this, void 0, void 0, function () {
261
- var tag, url, data, body, output, resp, e_5, e_6;
369
+ var tag, url, data, body, output, resp, e_8, e_9;
262
370
  return __generator(this, function (_a) {
263
371
  switch (_a.label) {
264
372
  case 0:
@@ -293,14 +401,14 @@ var broadcast_transaction = function (coin, hex) {
293
401
  output.success = true;
294
402
  return [3 /*break*/, 5];
295
403
  case 4:
296
- e_5 = _a.sent();
297
- log.error(tag, "error: ", e_5);
404
+ e_8 = _a.sent();
405
+ log.error(tag, "error: ", e_8);
298
406
  return [3 /*break*/, 5];
299
407
  case 5: return [2 /*return*/, output];
300
408
  case 6:
301
- e_6 = _a.sent();
409
+ e_9 = _a.sent();
302
410
  //console.error(tag,e)
303
- throw e_6;
411
+ throw e_9;
304
412
  case 7: return [2 /*return*/];
305
413
  }
306
414
  });
@@ -308,7 +416,7 @@ var broadcast_transaction = function (coin, hex) {
308
416
  };
309
417
  var get_transaction = function (coin, txid) {
310
418
  return __awaiter(this, void 0, void 0, function () {
311
- var tag, url, body, resp, e_7;
419
+ var tag, url, body, resp, e_10;
312
420
  return __generator(this, function (_a) {
313
421
  switch (_a.label) {
314
422
  case 0:
@@ -331,8 +439,8 @@ var get_transaction = function (coin, txid) {
331
439
  resp = _a.sent();
332
440
  return [2 /*return*/, resp.data];
333
441
  case 3:
334
- e_7 = _a.sent();
335
- console.error(tag, e_7);
442
+ e_10 = _a.sent();
443
+ console.error(tag, e_10);
336
444
  return [3 /*break*/, 4];
337
445
  case 4: return [2 /*return*/];
338
446
  }
@@ -341,7 +449,7 @@ var get_transaction = function (coin, txid) {
341
449
  };
342
450
  var get_utxos_by_xpub = function (coin, xpub) {
343
451
  return __awaiter(this, void 0, void 0, function () {
344
- var tag, url, body, resp, e_8;
452
+ var tag, url, body, resp, e_11;
345
453
  return __generator(this, function (_a) {
346
454
  switch (_a.label) {
347
455
  case 0:
@@ -365,8 +473,8 @@ var get_utxos_by_xpub = function (coin, xpub) {
365
473
  resp = _a.sent();
366
474
  return [2 /*return*/, resp.data];
367
475
  case 3:
368
- e_8 = _a.sent();
369
- console.error(tag, e_8);
476
+ e_11 = _a.sent();
477
+ console.error(tag, e_11);
370
478
  return [3 /*break*/, 4];
371
479
  case 4: return [2 /*return*/];
372
480
  }
@@ -375,7 +483,7 @@ var get_utxos_by_xpub = function (coin, xpub) {
375
483
  };
376
484
  var get_balance_by_xpub = function (coin, xpub) {
377
485
  return __awaiter(this, void 0, void 0, function () {
378
- var tag, output, balance, i, uxto, e_9;
486
+ var tag, output, balance, i, uxto, e_12;
379
487
  return __generator(this, function (_a) {
380
488
  switch (_a.label) {
381
489
  case 0:
@@ -397,48 +505,14 @@ var get_balance_by_xpub = function (coin, xpub) {
397
505
  }
398
506
  return [2 /*return*/, balance / 100000000];
399
507
  case 3:
400
- e_9 = _a.sent();
401
- console.error(tag, e_9);
508
+ e_12 = _a.sent();
509
+ console.error(tag, e_12);
402
510
  return [3 /*break*/, 4];
403
511
  case 4: return [2 /*return*/];
404
512
  }
405
513
  });
406
514
  });
407
515
  };
408
- var init_network = function (servers, runtime) {
409
- var tag = ' | get_txs_by_address | ';
410
- try {
411
- log.debug(tag, "checkpoint: ");
412
- var output = [];
413
- //get networks from coins module
414
- // let blockbooks = getBlockBooks()
415
- // for(let i = 0; i < blockbooks.length; i++){
416
- // let coinInfo = blockbooks[i]
417
- // coinInfo.symbol = coinInfo.symbol.toUpperCase()
418
- // log.debug("coinInfo: ",coinInfo)
419
- // let blockbookurl = coinInfo.explorer.tx
420
- // blockbookurl = blockbookurl.replace("/tx/","")
421
- //
422
- // if(servers && servers[coinInfo.symbol]){
423
- // //use configured
424
- // BLOCKBOOK_URLS[coinInfo.symbol] = servers[coinInfo.symbol]
425
- // log.debug(coinInfo.symbol+ " blockbookurl: ",servers[coinInfo.symbol])
426
- // }else{
427
- // if(!runtime || runtime === 'public'){
428
- // //use public
429
- // BLOCKBOOK_URLS[coinInfo.symbol] = blockbookurl
430
- // log.debug(coinInfo.symbol+ " blockbookurl: ",blockbookurl)
431
- // }
432
- // //TODO use pioneer's
433
- // }
434
- // }
435
- return true;
436
- }
437
- catch (e) {
438
- // console.error(tag, 'Error: ', e)
439
- throw e;
440
- }
441
- };
442
516
  var get_node_info = function () {
443
517
  return __awaiter(this, void 0, void 0, function () {
444
518
  var tag;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pioneer-platform/blockbook",
3
- "version": "8.1.52",
3
+ "version": "8.1.53",
4
4
  "main": "./lib/index.js",
5
5
  "types": "./lib/main.d.ts",
6
6
  "scripts": {
@@ -12,12 +12,14 @@
12
12
  "refresh": "rm -rf ./node_modules ./package-lock.json && npm install"
13
13
  },
14
14
  "dependencies": {
15
+ "@altangent/lib-blockbook": "^0.12.9",
15
16
  "@pioneer-platform/loggerdog": "^8.1.29",
17
+ "@pioneer-platform/pioneer-client": "^9.0.11",
16
18
  "@types/request-promise-native": "^1.0.17",
17
19
  "@types/ws": "^7.4.2",
18
20
  "axios": "^0.21.4",
19
21
  "axios-retry": "^3.1.9",
20
- "blockbook-client": "^0.4.3",
22
+ "blockbook-client": "^0.7.8",
21
23
  "fake-useragent": "^1.0.1"
22
24
  },
23
25
  "devDependencies": {