@pioneer-platform/blockbook 8.1.56 → 8.1.58

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,24 +1,15 @@
1
1
  declare const TAG = " | blockbook-client | ";
2
- declare let pioneerApi: any;
3
2
  declare const Blockbook: any;
4
3
  declare const log: any;
5
4
  declare const fakeUa: any;
6
5
  declare const Axios: any;
7
6
  declare const https: any;
7
+ declare const nodes: any;
8
8
  declare const axios: any;
9
9
  declare const axiosRetry: any;
10
10
  declare let BLOCKBOOK_URLS: any;
11
11
  declare let BLOCKBOOK_SOCKETS: any;
12
- declare let spec: string;
13
- declare let SERVERS_CONFIG: {
14
- symbol: string;
15
- blockchain: string;
16
- caip: string;
17
- type: string;
18
- service: string;
19
- websocket: string;
20
- }[];
21
- declare let init_network: (servers?: any) => Promise<boolean>;
12
+ declare let init_network: (servers?: any[]) => Promise<boolean>;
22
13
  declare let get_fees: (coin: string) => Promise<any>;
23
14
  declare let get_info_by_pubkey: (coin: string, pubkey: string, page?: string | undefined) => Promise<any>;
24
15
  declare let get_txids_by_address: (coin: string, address: string, page?: number) => Promise<any>;
@@ -27,5 +18,5 @@ declare let get_txs_by_xpub: (coin: string, xpub: string) => Promise<any>;
27
18
  declare let broadcast_transaction: (coin: string, hex: string) => Promise<any>;
28
19
  declare let get_transaction: (coin: string, txid: string) => Promise<any>;
29
20
  declare let get_utxos_by_xpub: (coin: string, xpub: string) => Promise<any>;
30
- declare let get_balance_by_xpub: (coin: string, xpub: any) => Promise<number | undefined>;
31
- declare let get_node_info: () => Promise<true | undefined>;
21
+ declare let get_balance_by_xpub: (coin: string, xpub: any) => Promise<number>;
22
+ declare let get_node_info: () => Promise<boolean>;
package/lib/index.js CHANGED
@@ -40,12 +40,12 @@ 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
43
  var Blockbook = require('blockbook-client').Blockbook;
45
44
  var log = require('@pioneer-platform/loggerdog')();
46
45
  var fakeUa = require('fake-useragent');
47
46
  var Axios = require('axios');
48
47
  var https = require('https');
48
+ var nodes = require("@pioneer-platform/nodes");
49
49
  var axios = Axios.create({
50
50
  httpsAgent: new https.Agent({
51
51
  rejectUnauthorized: false
@@ -55,108 +55,19 @@ var axiosRetry = require('axios-retry');
55
55
  axiosRetry(axios, {
56
56
  retries: 3,
57
57
  retryDelay: function (retryCount) {
58
- console.log("retry attempt: ".concat(retryCount));
58
+ log.error(TAG, "retry attempt: ".concat(retryCount));
59
59
  return retryCount * 2000; // time interval between retries
60
60
  },
61
61
  retryCondition: function (error) {
62
- //console.error(error)
62
+ var _a;
63
+ log.error(TAG, error);
64
+ //@TODO mark node offline, and punish
63
65
  // if retry condition is not specified, by default idempotent requests are retried
64
- return error.response.status === 503;
66
+ return ((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.status) === 503;
65
67
  },
66
68
  });
67
69
  var BLOCKBOOK_URLS = {};
68
70
  var BLOCKBOOK_SOCKETS = {};
69
- var spec = process.env['PIONEER_SPEC'] || 'https://pioneers.dev/spec/swagger.json';
70
- var SERVERS_CONFIG = [
71
- {
72
- symbol: "MATIC",
73
- blockchain: "polygon",
74
- caip: "eip155:137/slip44:60",
75
- type: "blockbook",
76
- service: "https://indexer.polygon.shapeshift.com",
77
- websocket: "wss://indexer.polygon.shapeshift.com/websocket"
78
- },
79
- {
80
- symbol: "ETH",
81
- blockchain: "optimism",
82
- caip: "eip155:10/slip44:60",
83
- type: "blockbook",
84
- service: "https://indexer.optimism.shapeshift.com",
85
- websocket: "wss://indexer.optimism.shapeshift.com/websocket"
86
- },
87
- {
88
- symbol: "LTC",
89
- blockchain: "litecoin",
90
- caip: "bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2",
91
- type: "blockbook",
92
- service: "https://indexer.litecoin.shapeshift.com",
93
- websocket: "wss://indexer.litecoin.shapeshift.com/websocket"
94
- },
95
- {
96
- symbol: "xDAI",
97
- blockchain: "gnosis",
98
- caip: "eip155:100/slip44:60",
99
- type: "blockbook",
100
- service: "https://indexer.gnosis.shapeshift.com",
101
- websocket: "wss://indexer.gnosis.shapeshift.com/websocket"
102
- },
103
- {
104
- symbol: "ETH",
105
- blockchain: "ethereum",
106
- caip: "eip155:1/slip44:60",
107
- type: "blockbook",
108
- service: "https://indexer.ethereum.shapeshift.com",
109
- websocket: "wss://indexer.ethereum.shapeshift.com/websocket"
110
- },
111
- {
112
- symbol: "DOGE",
113
- blockchain: "dogecoin",
114
- caip: "bip122:00000000001a91e3dace36e2be3bf030/slip44:3",
115
- type: "blockbook",
116
- service: "https://indexer.dogecoin.shapeshift.com",
117
- websocket: "wss://indexer.dogecoin.shapeshift.com/websocket"
118
- },
119
- {
120
- symbol: "BNB",
121
- blockchain: "bnbsmartchain",
122
- caip: "eip155:56/slip44:60",
123
- type: "blockbook",
124
- service: "https://indexer.bnbsmartchain.shapeshift.com",
125
- websocket: "wss://indexer.bnbsmartchain.shapeshift.com/websocket"
126
- },
127
- {
128
- symbol: "BCH",
129
- blockchain: "bitcoincash",
130
- caip: "bip122:000000000000000000651ef99cb9fcbe/slip44:145",
131
- type: "blockbook",
132
- service: "https://indexer.bitcoincash.shapeshift.com",
133
- websocket: "wss://indexer.bitcoincash.shapeshift.com/websocket"
134
- },
135
- {
136
- symbol: "BTC",
137
- blockchain: "bitcoin",
138
- caip: "bip122:000000000019d6689c085ae165831e93/slip44:0",
139
- type: "blockbook",
140
- service: "https://indexer.bitcoin.shapeshift.com",
141
- websocket: "wss://indexer.bitcoin.shapeshift.com/websocket"
142
- },
143
- {
144
- symbol: "AVAX",
145
- blockchain: "avalanche",
146
- caip: "eip155:43114/slip44:60",
147
- type: "blockbook",
148
- service: "https://indexer.avalanche.shapeshift.com",
149
- websocket: "wss://indexer.avalanche.shapeshift.com/websocket"
150
- },
151
- {
152
- symbol: "AVAX",
153
- blockchain: "avalanche",
154
- caip: "eip155:43114/slip44:60",
155
- type: "blockbook",
156
- service: "https://indexer.avalanche.shapeshift.com",
157
- websocket: "wss://indexer.avalanche.shapeshift.com/websocket"
158
- }
159
- ];
160
71
  module.exports = {
161
72
  init: function (servers) {
162
73
  return init_network(servers);
@@ -200,41 +111,28 @@ module.exports = {
200
111
  };
201
112
  var init_network = function (servers) {
202
113
  return __awaiter(this, void 0, void 0, function () {
203
- var tag, blockbooks, config, pioneer, allBlockbooksRemote, e_1, i, blockbook, url, e_2;
114
+ var tag, SEED_NODES, blockbooks, i, blockbook, url, e_1;
204
115
  return __generator(this, function (_a) {
205
116
  switch (_a.label) {
206
117
  case 0:
207
118
  tag = ' | get_txs_by_address | ';
208
119
  _a.label = 1;
209
120
  case 1:
210
- _a.trys.push([1, 7, , 8]);
121
+ _a.trys.push([1, 3, , 4]);
211
122
  log.debug(tag, "checkpoint: ");
212
- blockbooks = servers || [];
213
- _a.label = 2;
123
+ return [4 /*yield*/, nodes.getBlockbooks()];
214
124
  case 2:
215
- _a.trys.push([2, 5, , 6]);
216
- config = {
217
- queryKey: 'unchained:npm',
218
- spec: spec
219
- };
220
- pioneer = new pioneerApi(spec, config);
221
- return [4 /*yield*/, pioneer.init()];
222
- case 3:
223
- pioneer = _a.sent();
224
- return [4 /*yield*/, pioneer.SearchNodesByType({ type: "blockbook" })];
225
- case 4:
226
- allBlockbooksRemote = _a.sent();
227
- allBlockbooksRemote = allBlockbooksRemote.data;
228
- log.info(tag, "allBlockbooksRemote: ", allBlockbooksRemote);
229
- blockbooks.apply(void 0, allBlockbooksRemote);
230
- return [3 /*break*/, 6];
231
- case 5:
232
- e_1 = _a.sent();
233
- return [3 /*break*/, 6];
234
- case 6:
235
- if (blockbooks.length === 0)
236
- blockbooks = SERVERS_CONFIG;
237
- log.info(tag, "blockbooks: ", blockbooks.length);
125
+ SEED_NODES = _a.sent();
126
+ log.info(tag, "SEED_NODES: ", SEED_NODES);
127
+ blockbooks = [];
128
+ if (servers && Array.isArray(servers)) { // Type checking for array
129
+ blockbooks = servers.concat(SEED_NODES); // Combine arrays
130
+ }
131
+ else {
132
+ console.error("Invalid 'servers' parameter. Expected an array.");
133
+ blockbooks = SEED_NODES;
134
+ }
135
+ log.debug(tag, "blockbooks: ", blockbooks.length);
238
136
  for (i = 0; i < blockbooks.length; i++) {
239
137
  blockbook = blockbooks[i];
240
138
  //get swagger
@@ -253,21 +151,21 @@ var init_network = function (servers) {
253
151
  // throw Error("invalid unchained service!")
254
152
  }
255
153
  }
256
- log.info(tag, "BLOCKBOOK_URLS: ", BLOCKBOOK_URLS);
257
- log.info(tag, "BLOCKBOOK_SOCKETS: ", BLOCKBOOK_SOCKETS);
154
+ log.debug(tag, "BLOCKBOOK_URLS: ", BLOCKBOOK_URLS);
155
+ log.debug(tag, "BLOCKBOOK_SOCKETS: ", BLOCKBOOK_SOCKETS);
258
156
  return [2 /*return*/, true];
259
- case 7:
260
- e_2 = _a.sent();
157
+ case 3:
158
+ e_1 = _a.sent();
261
159
  // console.error(tag, 'Error: ', e)
262
- throw e_2;
263
- case 8: return [2 /*return*/];
160
+ throw e_1;
161
+ case 4: return [2 /*return*/];
264
162
  }
265
163
  });
266
164
  });
267
165
  };
268
166
  var get_fees = function (coin) {
269
167
  return __awaiter(this, void 0, void 0, function () {
270
- var tag, url, body, resp, e_3;
168
+ var tag, url, body, resp, e_2;
271
169
  return __generator(this, function (_a) {
272
170
  switch (_a.label) {
273
171
  case 0:
@@ -276,7 +174,7 @@ var get_fees = function (coin) {
276
174
  case 1:
277
175
  _a.trys.push([1, 3, , 4]);
278
176
  url = BLOCKBOOK_URLS[coin.toUpperCase()] + "/api/v2/fees";
279
- log.info(tag, "url: ", url);
177
+ log.debug(tag, "url: ", url);
280
178
  body = {
281
179
  method: 'GET',
282
180
  url: url,
@@ -296,9 +194,9 @@ var get_fees = function (coin) {
296
194
  //TODO paginate?
297
195
  return [2 /*return*/, resp.data];
298
196
  case 3:
299
- e_3 = _a.sent();
300
- console.error(tag, e_3);
301
- return [3 /*break*/, 4];
197
+ e_2 = _a.sent();
198
+ console.error(tag, e_2);
199
+ throw e_2;
302
200
  case 4: return [2 /*return*/];
303
201
  }
304
202
  });
@@ -306,7 +204,7 @@ var get_fees = function (coin) {
306
204
  };
307
205
  var get_info_by_pubkey = function (coin, pubkey, page) {
308
206
  return __awaiter(this, void 0, void 0, function () {
309
- var tag, url, body, resp, e_4;
207
+ var tag, url, body, resp, e_3;
310
208
  return __generator(this, function (_a) {
311
209
  switch (_a.label) {
312
210
  case 0:
@@ -334,9 +232,9 @@ var get_info_by_pubkey = function (coin, pubkey, page) {
334
232
  //TODO paginate?
335
233
  return [2 /*return*/, resp.data];
336
234
  case 3:
337
- e_4 = _a.sent();
338
- console.error(tag, e_4);
339
- return [3 /*break*/, 4];
235
+ e_3 = _a.sent();
236
+ console.error(tag, e_3);
237
+ throw e_3;
340
238
  case 4: return [2 /*return*/];
341
239
  }
342
240
  });
@@ -344,7 +242,7 @@ var get_info_by_pubkey = function (coin, pubkey, page) {
344
242
  };
345
243
  var get_txids_by_address = function (coin, address, page) {
346
244
  return __awaiter(this, void 0, void 0, function () {
347
- var tag, url, body, resp, e_5;
245
+ var tag, url, body, resp, e_4;
348
246
  return __generator(this, function (_a) {
349
247
  switch (_a.label) {
350
248
  case 0:
@@ -373,9 +271,9 @@ var get_txids_by_address = function (coin, address, page) {
373
271
  //TODO paginate?
374
272
  return [2 /*return*/, resp.data];
375
273
  case 3:
376
- e_5 = _a.sent();
377
- console.error(tag, e_5);
378
- return [3 /*break*/, 4];
274
+ e_4 = _a.sent();
275
+ console.error(tag, e_4);
276
+ throw e_4;
379
277
  case 4: return [2 /*return*/];
380
278
  }
381
279
  });
@@ -383,7 +281,7 @@ var get_txids_by_address = function (coin, address, page) {
383
281
  };
384
282
  var get_info_by_address = function (coin, address, filter) {
385
283
  return __awaiter(this, void 0, void 0, function () {
386
- var tag, url, body, resp, e_6;
284
+ var tag, url, body, resp, e_5;
387
285
  return __generator(this, function (_a) {
388
286
  switch (_a.label) {
389
287
  case 0:
@@ -393,6 +291,9 @@ var get_info_by_address = function (coin, address, filter) {
393
291
  _a.trys.push([1, 3, , 4]);
394
292
  if (!filter)
395
293
  filter = "all";
294
+ //let url = ETH_BLOCKBOOK_URL+"/api/v2/address/"+address+"?="+filter
295
+ if (!BLOCKBOOK_URLS[coin.toUpperCase()])
296
+ throw Error("invalid coin: " + coin);
396
297
  url = BLOCKBOOK_URLS[coin.toUpperCase()] + "/api/v2/address/" + address + "?details=all";
397
298
  body = {
398
299
  method: 'GET',
@@ -411,9 +312,9 @@ var get_info_by_address = function (coin, address, filter) {
411
312
  //TODO paginate?
412
313
  return [2 /*return*/, resp.data];
413
314
  case 3:
414
- e_6 = _a.sent();
415
- console.error(tag, e_6);
416
- return [3 /*break*/, 4];
315
+ e_5 = _a.sent();
316
+ console.error(tag, e_5);
317
+ throw e_5;
417
318
  case 4: return [2 /*return*/];
418
319
  }
419
320
  });
@@ -421,7 +322,7 @@ var get_info_by_address = function (coin, address, filter) {
421
322
  };
422
323
  var get_txs_by_xpub = function (coin, xpub) {
423
324
  return __awaiter(this, void 0, void 0, function () {
424
- var tag, url, body, resp, e_7;
325
+ var tag, url, body, resp, e_6;
425
326
  return __generator(this, function (_a) {
426
327
  switch (_a.label) {
427
328
  case 0:
@@ -445,9 +346,9 @@ var get_txs_by_xpub = function (coin, xpub) {
445
346
  resp = _a.sent();
446
347
  return [2 /*return*/, resp.data];
447
348
  case 3:
448
- e_7 = _a.sent();
449
- console.error(tag, e_7);
450
- return [3 /*break*/, 4];
349
+ e_6 = _a.sent();
350
+ console.error(tag, e_6);
351
+ throw e_6;
451
352
  case 4: return [2 /*return*/];
452
353
  }
453
354
  });
@@ -455,7 +356,7 @@ var get_txs_by_xpub = function (coin, xpub) {
455
356
  };
456
357
  var broadcast_transaction = function (coin, hex) {
457
358
  return __awaiter(this, void 0, void 0, function () {
458
- var tag, url, data, body, output, resp, e_8, e_9;
359
+ var tag, url, data, body, output, resp, e_7, e_8;
459
360
  return __generator(this, function (_a) {
460
361
  switch (_a.label) {
461
362
  case 0:
@@ -490,14 +391,14 @@ var broadcast_transaction = function (coin, hex) {
490
391
  output.success = true;
491
392
  return [3 /*break*/, 5];
492
393
  case 4:
493
- e_8 = _a.sent();
494
- log.error(tag, "error: ", e_8);
394
+ e_7 = _a.sent();
395
+ log.error(tag, "error: ", e_7);
495
396
  return [3 /*break*/, 5];
496
397
  case 5: return [2 /*return*/, output];
497
398
  case 6:
498
- e_9 = _a.sent();
399
+ e_8 = _a.sent();
499
400
  //console.error(tag,e)
500
- throw e_9;
401
+ throw e_8;
501
402
  case 7: return [2 /*return*/];
502
403
  }
503
404
  });
@@ -505,7 +406,7 @@ var broadcast_transaction = function (coin, hex) {
505
406
  };
506
407
  var get_transaction = function (coin, txid) {
507
408
  return __awaiter(this, void 0, void 0, function () {
508
- var tag, url, body, resp, e_10;
409
+ var tag, url, body, resp, e_9;
509
410
  return __generator(this, function (_a) {
510
411
  switch (_a.label) {
511
412
  case 0:
@@ -528,9 +429,9 @@ var get_transaction = function (coin, txid) {
528
429
  resp = _a.sent();
529
430
  return [2 /*return*/, resp.data];
530
431
  case 3:
531
- e_10 = _a.sent();
532
- console.error(tag, e_10);
533
- return [3 /*break*/, 4];
432
+ e_9 = _a.sent();
433
+ console.error(tag, e_9);
434
+ throw e_9;
534
435
  case 4: return [2 /*return*/];
535
436
  }
536
437
  });
@@ -538,7 +439,7 @@ var get_transaction = function (coin, txid) {
538
439
  };
539
440
  var get_utxos_by_xpub = function (coin, xpub) {
540
441
  return __awaiter(this, void 0, void 0, function () {
541
- var tag, url, body, resp, e_11;
442
+ var tag, url, body, resp, e_10;
542
443
  return __generator(this, function (_a) {
543
444
  switch (_a.label) {
544
445
  case 0:
@@ -562,9 +463,9 @@ var get_utxos_by_xpub = function (coin, xpub) {
562
463
  resp = _a.sent();
563
464
  return [2 /*return*/, resp.data];
564
465
  case 3:
565
- e_11 = _a.sent();
566
- console.error(tag, e_11);
567
- return [3 /*break*/, 4];
466
+ e_10 = _a.sent();
467
+ console.error(tag, e_10);
468
+ throw e_10;
568
469
  case 4: return [2 /*return*/];
569
470
  }
570
471
  });
@@ -572,7 +473,7 @@ var get_utxos_by_xpub = function (coin, xpub) {
572
473
  };
573
474
  var get_balance_by_xpub = function (coin, xpub) {
574
475
  return __awaiter(this, void 0, void 0, function () {
575
- var tag, output, balance, i, uxto, e_12;
476
+ var tag, output, balance, i, uxto, e_11;
576
477
  return __generator(this, function (_a) {
577
478
  switch (_a.label) {
578
479
  case 0:
@@ -594,9 +495,9 @@ var get_balance_by_xpub = function (coin, xpub) {
594
495
  }
595
496
  return [2 /*return*/, balance / 100000000];
596
497
  case 3:
597
- e_12 = _a.sent();
598
- console.error(tag, e_12);
599
- return [3 /*break*/, 4];
498
+ e_11 = _a.sent();
499
+ console.error(tag, e_11);
500
+ throw e_11;
600
501
  case 4: return [2 /*return*/];
601
502
  }
602
503
  });
@@ -612,6 +513,7 @@ var get_node_info = function () {
612
513
  }
613
514
  catch (e) {
614
515
  console.error(tag, e);
516
+ throw e;
615
517
  }
616
518
  return [2 /*return*/];
617
519
  });
package/package.json CHANGED
@@ -1,20 +1,21 @@
1
1
  {
2
2
  "name": "@pioneer-platform/blockbook",
3
- "version": "8.1.56",
3
+ "version": "8.1.58",
4
4
  "main": "./lib/index.js",
5
5
  "types": "./lib/main.d.ts",
6
6
  "scripts": {
7
7
  "npm": "npm i",
8
8
  "start": "node lib/index",
9
9
  "build": "tsc -p .",
10
+ "build:watch": "npm run build && onchange 'src/**/*.ts' -- npm run build",
10
11
  "test": "npm run build && node __tests__/test-module.js",
11
12
  "prepublish": "npm run build",
12
13
  "refresh": "rm -rf ./node_modules ./package-lock.json && npm install"
13
14
  },
14
15
  "dependencies": {
15
16
  "@altangent/lib-blockbook": "^0.12.9",
16
- "@pioneer-platform/loggerdog": "^8.1.29",
17
- "@pioneer-platform/pioneer-client": "^9.0.11",
17
+ "@pioneer-platform/loggerdog": "^8.1.30",
18
+ "@pioneer-platform/pioneer-client": "^9.0.12",
18
19
  "@types/request-promise-native": "^1.0.17",
19
20
  "@types/ws": "^7.4.2",
20
21
  "axios": "^0.21.4",
@@ -29,5 +30,5 @@
29
30
  "ts-node": "^10.9.1",
30
31
  "typescript": "^5.0.2"
31
32
  },
32
- "gitHead": "8c626a669f7045d1eb9c00252d9a81845a57fa50"
33
+ "gitHead": "6b6e8cf1e369479b9e7e977d0e4990cefe607a89"
33
34
  }