@pioneer-platform/maya-network 8.12.1 → 8.12.2

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @pioneer-platform/maya-network
2
2
 
3
+ ## 8.12.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Add dual-endpoint fallback for MayaChain broadcast and account info
8
+
9
+ - Broadcast now tries Unchained API first, falls back to direct Maya node
10
+ - Account info has same fallback logic for reliability
11
+ - Better error messages showing both endpoint results
12
+ - Eliminates single point of failure
13
+ - Logs which endpoint succeeded for debugging
14
+
3
15
  ## 8.12.1
4
16
 
5
17
  ### Patch Changes
package/lib/index.d.ts CHANGED
@@ -6,6 +6,7 @@ declare const https: any;
6
6
  declare const axiosInstance: any;
7
7
  declare const axiosRetry: any;
8
8
  declare const UNCHAINED_API = "https://api.mayachain.shapeshift.com";
9
+ declare const MAYA_NODE = "https://mayanode.mayachain.info";
9
10
  declare const MIDGARD_API = "https://midgard.mayachain.info/v2";
10
11
  declare const BASE_MAYA = 10000000000;
11
12
  /**********************************
package/lib/index.js CHANGED
@@ -77,8 +77,10 @@ axiosRetry(axiosInstance, {
77
77
  log.debug(TAG, "Retry ".concat(retryCount, "/2: ").concat(error.message));
78
78
  }
79
79
  });
80
- // Unchained API endpoint
80
+ // Unchained API endpoint (primary)
81
81
  var UNCHAINED_API = 'https://api.mayachain.shapeshift.com';
82
+ // Direct node fallback
83
+ var MAYA_NODE = 'https://mayanode.mayachain.info';
82
84
  // Fallback to Midgard for pool data (not available in Unchained)
83
85
  var MIDGARD_API = 'https://midgard.mayachain.info/v2';
84
86
  // Base unit conversion (10 decimal places for CACAO)
@@ -162,22 +164,20 @@ var get_info = function () {
162
164
  };
163
165
  var get_account_info = function (address) {
164
166
  return __awaiter(this, void 0, void 0, function () {
165
- var tag, result, unchainedData, e_2;
167
+ var tag, result, unchainedData, unchainedError_1, nodeResult, nodeError_1;
166
168
  return __generator(this, function (_a) {
167
169
  switch (_a.label) {
168
170
  case 0:
169
171
  tag = TAG + " | get_account_info | ";
170
172
  _a.label = 1;
171
173
  case 1:
172
- _a.trys.push([1, 3, , 4]);
174
+ _a.trys.push([1, 3, , 8]);
173
175
  return [4 /*yield*/, axiosInstance({
174
176
  method: 'GET',
175
177
  url: "".concat(UNCHAINED_API, "/api/v1/account/").concat(address),
176
178
  timeout: 5000
177
179
  })
178
180
  // Unchained returns flat structure, wrap it for backward compatibility
179
- // Old format: { result: { value: { account_number, sequence, ... } } }
180
- // New format: { accountNumber, sequence, balance, ... }
181
181
  ];
182
182
  case 2:
183
183
  result = _a.sent();
@@ -192,17 +192,35 @@ var get_account_info = function (address) {
192
192
  }
193
193
  } }, unchainedData)];
194
194
  case 3:
195
- e_2 = _a.sent();
196
- log.error(tag, "Error:", e_2.message);
197
- throw e_2;
198
- case 4: return [2 /*return*/];
195
+ unchainedError_1 = _a.sent();
196
+ log.warn(tag, "Unchained API failed, trying node fallback:", unchainedError_1.message);
197
+ _a.label = 4;
198
+ case 4:
199
+ _a.trys.push([4, 6, , 7]);
200
+ return [4 /*yield*/, axiosInstance({
201
+ method: 'GET',
202
+ url: "".concat(MAYA_NODE, "/auth/accounts/").concat(address),
203
+ timeout: 5000
204
+ })
205
+ // Node returns nested format already
206
+ ];
207
+ case 5:
208
+ nodeResult = _a.sent();
209
+ // Node returns nested format already
210
+ return [2 /*return*/, nodeResult.data];
211
+ case 6:
212
+ nodeError_1 = _a.sent();
213
+ log.error(tag, "Both endpoints failed:", nodeError_1.message);
214
+ throw nodeError_1;
215
+ case 7: return [3 /*break*/, 8];
216
+ case 8: return [2 /*return*/];
199
217
  }
200
218
  });
201
219
  });
202
220
  };
203
221
  var get_balance = function (address) {
204
222
  return __awaiter(this, void 0, void 0, function () {
205
- var tag, accountInfo, balance, e_3;
223
+ var tag, accountInfo, balance, e_2;
206
224
  return __generator(this, function (_a) {
207
225
  switch (_a.label) {
208
226
  case 0:
@@ -219,9 +237,9 @@ var get_balance = function (address) {
219
237
  // Convert from base units to CACAO
220
238
  return [2 /*return*/, balance / BASE_MAYA];
221
239
  case 3:
222
- e_3 = _a.sent();
223
- log.error(tag, "Error:", e_3.message);
224
- throw e_3;
240
+ e_2 = _a.sent();
241
+ log.error(tag, "Error:", e_2.message);
242
+ throw e_2;
225
243
  case 4: return [2 /*return*/];
226
244
  }
227
245
  });
@@ -229,7 +247,7 @@ var get_balance = function (address) {
229
247
  };
230
248
  var get_balances = function (address) {
231
249
  return __awaiter(this, void 0, void 0, function () {
232
- var tag, accountInfo, output, cacaoBalance, _i, _a, asset, e_4;
250
+ var tag, accountInfo, output, cacaoBalance, _i, _a, asset, e_3;
233
251
  return __generator(this, function (_b) {
234
252
  switch (_b.label) {
235
253
  case 0:
@@ -278,9 +296,9 @@ var get_balances = function (address) {
278
296
  }
279
297
  return [2 /*return*/, output];
280
298
  case 3:
281
- e_4 = _b.sent();
282
- log.error(tag, "Error:", e_4.message);
283
- throw e_4;
299
+ e_3 = _b.sent();
300
+ log.error(tag, "Error:", e_3.message);
301
+ throw e_3;
284
302
  case 4: return [2 /*return*/];
285
303
  }
286
304
  });
@@ -288,7 +306,7 @@ var get_balances = function (address) {
288
306
  };
289
307
  var get_txs_by_address = function (address_1, cursor_1) {
290
308
  return __awaiter(this, arguments, void 0, function (address, cursor, pageSize) {
291
- var tag, params, result, e_5;
309
+ var tag, params, result, e_4;
292
310
  if (pageSize === void 0) { pageSize = 50; }
293
311
  return __generator(this, function (_a) {
294
312
  switch (_a.label) {
@@ -310,9 +328,9 @@ var get_txs_by_address = function (address_1, cursor_1) {
310
328
  result = _a.sent();
311
329
  return [2 /*return*/, result.data];
312
330
  case 3:
313
- e_5 = _a.sent();
314
- log.error(tag, "Error:", e_5.message);
315
- throw e_5;
331
+ e_4 = _a.sent();
332
+ log.error(tag, "Error:", e_4.message);
333
+ throw e_4;
316
334
  case 4: return [2 /*return*/];
317
335
  }
318
336
  });
@@ -339,16 +357,16 @@ var get_transaction = function (txid) {
339
357
  };
340
358
  var broadcast_transaction = function (tx) {
341
359
  return __awaiter(this, void 0, void 0, function () {
342
- var tag, output, payload, result, e_6;
343
- var _a;
344
- return __generator(this, function (_b) {
345
- switch (_b.label) {
360
+ var tag, output, payload, result, unchainedError_2, nodeResult, nodeError, nodeError_2, nodeErrorMsg;
361
+ var _a, _b, _c, _d, _e;
362
+ return __generator(this, function (_f) {
363
+ switch (_f.label) {
346
364
  case 0:
347
365
  tag = TAG + " | broadcast_transaction | ";
348
366
  output = { success: false };
349
- _b.label = 1;
367
+ _f.label = 1;
350
368
  case 1:
351
- _b.trys.push([1, 3, , 4]);
369
+ _f.trys.push([1, 3, , 4]);
352
370
  payload = {
353
371
  rawTx: tx
354
372
  };
@@ -360,32 +378,65 @@ var broadcast_transaction = function (tx) {
360
378
  timeout: 10000
361
379
  })];
362
380
  case 2:
363
- result = _b.sent();
364
- log.info(tag, 'Broadcast response:', result.data);
381
+ result = _f.sent();
382
+ log.info(tag, 'Unchained response:', result.data);
365
383
  // Unchained returns { txid: "hash" } on success
366
384
  if (result.data.txid || result.data.txHash) {
367
385
  output.txid = result.data.txid || result.data.txHash;
368
386
  output.success = true;
369
387
  output.endpoint = 'Unchained';
370
- log.info(tag, "\u2705 Broadcast SUCCESS - txid: ".concat(output.txid));
388
+ log.info(tag, "\u2705 Broadcast SUCCESS via Unchained - txid: ".concat(output.txid));
389
+ return [2 /*return*/, output];
371
390
  }
372
391
  else if (result.data.message) {
373
392
  output.error = result.data.message;
374
- log.error(tag, " Broadcast FAILED:", result.data.message);
393
+ log.warn(tag, "Unchained returned error:", result.data.message);
375
394
  }
376
- return [2 /*return*/, output];
395
+ return [3 /*break*/, 4];
377
396
  case 3:
378
- e_6 = _b.sent();
379
- log.error(tag, "Broadcast error:", e_6.message);
380
- if ((_a = e_6.response) === null || _a === void 0 ? void 0 : _a.data) {
381
- output.error = e_6.response.data.message || e_6.response.data.error || e_6.message;
382
- log.error(tag, "Response data:", e_6.response.data);
397
+ unchainedError_2 = _f.sent();
398
+ log.warn(tag, "Unchained API failed:", unchainedError_2.message);
399
+ if ((_a = unchainedError_2.response) === null || _a === void 0 ? void 0 : _a.data) {
400
+ output.error = unchainedError_2.response.data.message || unchainedError_2.response.data.error || unchainedError_2.message;
401
+ log.debug(tag, "Unchained error details:", unchainedError_2.response.data);
383
402
  }
384
- else {
385
- output.error = e_6.message || 'Broadcast failed';
403
+ return [3 /*break*/, 4];
404
+ case 4:
405
+ _f.trys.push([4, 6, , 7]);
406
+ log.info(tag, "Trying direct Maya node fallback");
407
+ return [4 /*yield*/, axiosInstance({
408
+ url: "".concat(MAYA_NODE, "/txs"),
409
+ method: 'POST',
410
+ data: {
411
+ tx: tx,
412
+ mode: 'sync'
413
+ },
414
+ timeout: 10000
415
+ })];
416
+ case 5:
417
+ nodeResult = _f.sent();
418
+ log.info(tag, 'Node response:', nodeResult.data);
419
+ // Node returns { txhash: "hash" } on success
420
+ if (nodeResult.data.txhash || nodeResult.data.hash) {
421
+ output.txid = nodeResult.data.txhash || nodeResult.data.hash;
422
+ output.success = true;
423
+ output.endpoint = 'MayaNode';
424
+ log.info(tag, "\u2705 Broadcast SUCCESS via MayaNode - txid: ".concat(output.txid));
425
+ return [2 /*return*/, output];
386
426
  }
387
- return [2 /*return*/, output];
388
- case 4: return [2 /*return*/];
427
+ else if (nodeResult.data.raw_log || nodeResult.data.message) {
428
+ nodeError = nodeResult.data.raw_log || nodeResult.data.message;
429
+ output.error = "Both endpoints failed. Unchained: ".concat(output.error, ". Node: ").concat(nodeError);
430
+ log.error(tag, "❌ Both endpoints FAILED");
431
+ }
432
+ return [3 /*break*/, 7];
433
+ case 6:
434
+ nodeError_2 = _f.sent();
435
+ log.error(tag, "Node broadcast also failed:", nodeError_2.message);
436
+ nodeErrorMsg = ((_c = (_b = nodeError_2.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.raw_log) || ((_e = (_d = nodeError_2.response) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.message) || nodeError_2.message;
437
+ output.error = "Both endpoints failed. Unchained: ".concat(output.error, ". Node: ").concat(nodeErrorMsg);
438
+ return [3 /*break*/, 7];
439
+ case 7: return [2 /*return*/, output];
389
440
  }
390
441
  });
391
442
  });
@@ -393,7 +444,7 @@ var broadcast_transaction = function (tx) {
393
444
  // Pool endpoints use Midgard (not available in Unchained)
394
445
  var get_pool = function (poolId) {
395
446
  return __awaiter(this, void 0, void 0, function () {
396
- var tag, params, result, e_7;
447
+ var tag, params, result, e_5;
397
448
  return __generator(this, function (_a) {
398
449
  switch (_a.label) {
399
450
  case 0:
@@ -415,9 +466,9 @@ var get_pool = function (poolId) {
415
466
  result = _a.sent();
416
467
  return [2 /*return*/, result.data];
417
468
  case 3:
418
- e_7 = _a.sent();
419
- log.error(tag, "Error:", e_7.message);
420
- throw e_7;
469
+ e_5 = _a.sent();
470
+ log.error(tag, "Error:", e_5.message);
471
+ throw e_5;
421
472
  case 4: return [2 /*return*/];
422
473
  }
423
474
  });
@@ -425,7 +476,7 @@ var get_pool = function (poolId) {
425
476
  };
426
477
  var get_pools = function () {
427
478
  return __awaiter(this, void 0, void 0, function () {
428
- var tag, result, e_8;
479
+ var tag, result, e_6;
429
480
  return __generator(this, function (_a) {
430
481
  switch (_a.label) {
431
482
  case 0:
@@ -442,9 +493,9 @@ var get_pools = function () {
442
493
  result = _a.sent();
443
494
  return [2 /*return*/, result.data];
444
495
  case 3:
445
- e_8 = _a.sent();
446
- log.error(tag, "Error:", e_8.message);
447
- throw e_8;
496
+ e_6 = _a.sent();
497
+ log.error(tag, "Error:", e_6.message);
498
+ throw e_6;
448
499
  case 4: return [2 /*return*/];
449
500
  }
450
501
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pioneer-platform/maya-network",
3
- "version": "8.12.1",
3
+ "version": "8.12.2",
4
4
  "main": "./lib/index.js",
5
5
  "types": "./lib/index.d.ts",
6
6
  "scripts": {