@arkade-os/sdk 0.4.64 → 0.4.66

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.
Files changed (79) hide show
  1. package/dist/adapters/expo.cjs +5 -5
  2. package/dist/adapters/expo.d.cts +3 -6
  3. package/dist/adapters/expo.d.ts +3 -6
  4. package/dist/adapters/expo.js +3 -3
  5. package/dist/adapters/indexedDB.cjs +5 -5
  6. package/dist/adapters/indexedDB.js +4 -4
  7. package/dist/{asyncStorageTaskQueue-Dq_UcvDx.d.ts → asyncStorageTaskQueue-B6SijMi3.d.ts} +1 -1
  8. package/dist/{asyncStorageTaskQueue-Chwe60Ce.d.cts → asyncStorageTaskQueue-BZcIN7sA.d.cts} +1 -1
  9. package/dist/{chunk-HQ2DDMQN.js → chunk-2JZGPXU4.js} +170 -6
  10. package/dist/chunk-2JZGPXU4.js.map +1 -0
  11. package/dist/{chunk-RXITDAV4.cjs → chunk-3S3JZUEN.cjs} +184 -19
  12. package/dist/chunk-3S3JZUEN.cjs.map +1 -0
  13. package/dist/{chunk-USXWE2EJ.js → chunk-55ZZ6RBL.js} +4 -4
  14. package/dist/{chunk-USXWE2EJ.js.map → chunk-55ZZ6RBL.js.map} +1 -1
  15. package/dist/{chunk-LPEE2H2M.cjs → chunk-5E6IZNRG.cjs} +656 -774
  16. package/dist/chunk-5E6IZNRG.cjs.map +1 -0
  17. package/dist/{chunk-LN2VZP63.js → chunk-CYOI4PEA.js} +162 -15
  18. package/dist/chunk-CYOI4PEA.js.map +1 -0
  19. package/dist/{chunk-WJN2BLEI.js → chunk-DSC3G6QZ.js} +253 -379
  20. package/dist/chunk-DSC3G6QZ.js.map +1 -0
  21. package/dist/{chunk-4N45WCSJ.cjs → chunk-IM6IKNSL.cjs} +17 -17
  22. package/dist/{chunk-4N45WCSJ.cjs.map → chunk-IM6IKNSL.cjs.map} +1 -1
  23. package/dist/{chunk-XJCBV4AA.js → chunk-J33ZEM3A.js} +26 -18
  24. package/dist/chunk-J33ZEM3A.js.map +1 -0
  25. package/dist/{chunk-35YIP6OA.cjs → chunk-LL47QIHD.cjs} +10 -10
  26. package/dist/{chunk-35YIP6OA.cjs.map → chunk-LL47QIHD.cjs.map} +1 -1
  27. package/dist/{chunk-WXCVS6PD.cjs → chunk-PXPPZF5K.cjs} +207 -59
  28. package/dist/chunk-PXPPZF5K.cjs.map +1 -0
  29. package/dist/{chunk-ZUEGFM3T.js → chunk-R5POS3RS.js} +4 -4
  30. package/dist/{chunk-ZUEGFM3T.js.map → chunk-R5POS3RS.js.map} +1 -1
  31. package/dist/{chunk-FZFSGOTZ.cjs → chunk-ZIRFXBKL.cjs} +26 -18
  32. package/dist/chunk-ZIRFXBKL.cjs.map +1 -0
  33. package/dist/contracts/handlers/index.cjs +9 -9
  34. package/dist/contracts/handlers/index.d.cts +3 -3
  35. package/dist/contracts/handlers/index.d.ts +3 -3
  36. package/dist/contracts/handlers/index.js +2 -2
  37. package/dist/{delegate-Dv_9OVHv.d.ts → delegate-T-vgxMYZ.d.ts} +1 -1
  38. package/dist/{delegate-BBQW61ym.d.cts → delegate-YXupcWWJ.d.cts} +1 -1
  39. package/dist/{index-Bxe9kBFs.d.ts → index-D_FgwLH9.d.ts} +111 -2
  40. package/dist/{index-aZycGEsQ.d.cts → index-e7LYXk1d.d.cts} +111 -2
  41. package/dist/{index-CFOMyVMt.d.cts → index-uUE_uQPn.d.cts} +70 -33
  42. package/dist/{index-CFOMyVMt.d.ts → index-uUE_uQPn.d.ts} +70 -33
  43. package/dist/index.cjs +308 -268
  44. package/dist/index.d.cts +214 -19
  45. package/dist/index.d.ts +214 -19
  46. package/dist/index.js +4 -4
  47. package/dist/repositories/realm/index.cjs +19 -19
  48. package/dist/repositories/realm/index.d.cts +2 -2
  49. package/dist/repositories/realm/index.d.ts +2 -2
  50. package/dist/repositories/realm/index.js +5 -5
  51. package/dist/repositories/sqlite/index.cjs +18 -18
  52. package/dist/repositories/sqlite/index.d.cts +2 -2
  53. package/dist/repositories/sqlite/index.d.ts +2 -2
  54. package/dist/repositories/sqlite/index.js +5 -5
  55. package/dist/{taskRunner-CIKOS2OO.d.cts → taskRunner-BOVcIH1N.d.cts} +1 -1
  56. package/dist/{taskRunner-BDzWbpct.d.ts → taskRunner-DNyD1kXG.d.ts} +1 -1
  57. package/dist/wallet/expo/background.cjs +14 -14
  58. package/dist/wallet/expo/background.d.cts +3 -3
  59. package/dist/wallet/expo/background.d.ts +3 -3
  60. package/dist/wallet/expo/background.js +6 -6
  61. package/dist/wallet/expo/index.cjs +14 -14
  62. package/dist/wallet/expo/index.d.cts +4 -4
  63. package/dist/wallet/expo/index.d.ts +4 -4
  64. package/dist/wallet/expo/index.js +5 -5
  65. package/dist/{wallet-C2NvHjWB.d.cts → wallet-CNibc3yJ.d.ts} +3 -3
  66. package/dist/{wallet-DJUnN939.d.ts → wallet-DJN1QgFt.d.cts} +3 -3
  67. package/dist/worker/expo/index.cjs +9 -9
  68. package/dist/worker/expo/index.d.cts +4 -4
  69. package/dist/worker/expo/index.d.ts +4 -4
  70. package/dist/worker/expo/index.js +5 -5
  71. package/package.json +1 -1
  72. package/dist/chunk-FZFSGOTZ.cjs.map +0 -1
  73. package/dist/chunk-HQ2DDMQN.js.map +0 -1
  74. package/dist/chunk-LN2VZP63.js.map +0 -1
  75. package/dist/chunk-LPEE2H2M.cjs.map +0 -1
  76. package/dist/chunk-RXITDAV4.cjs.map +0 -1
  77. package/dist/chunk-WJN2BLEI.js.map +0 -1
  78. package/dist/chunk-WXCVS6PD.cjs.map +0 -1
  79. package/dist/chunk-XJCBV4AA.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkFZFSGOTZ_cjs = require('./chunk-FZFSGOTZ.cjs');
3
+ var chunkZIRFXBKL_cjs = require('./chunk-ZIRFXBKL.cjs');
4
4
  var chunk5BLDMQED_cjs = require('./chunk-5BLDMQED.cjs');
5
5
  var base = require('@scure/base');
6
6
  var secp256k1_js = require('@noble/curves/secp256k1.js');
@@ -9,6 +9,7 @@ var utils_js = require('@scure/btc-signer/utils.js');
9
9
  // src/extension/asset/index.ts
10
10
  var asset_exports = {};
11
11
  chunk5BLDMQED_cjs.__export(asset_exports, {
12
+ ASSET_ID_VECTORS: () => ASSET_ID_VECTORS,
12
13
  AssetGroup: () => AssetGroup,
13
14
  AssetId: () => AssetId,
14
15
  AssetInput: () => AssetInput,
@@ -1273,6 +1274,143 @@ var Packet = class _Packet {
1273
1274
  return packet;
1274
1275
  }
1275
1276
  };
1277
+
1278
+ // src/extension/asset/assetIdVectors.json
1279
+ var assetIdVectors_default = {
1280
+ version: 1,
1281
+ note: "Source of truth for the Arkade Asset ID encodings. See ts-sdk plans/asset-id-shared-vectors.md.",
1282
+ txid_hex: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20",
1283
+ script_txid_hex: "201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201",
1284
+ valid: [
1285
+ {
1286
+ label: "group 0 (issuance mints this one)",
1287
+ group_index: 0,
1288
+ asset_id_hex: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f200000",
1289
+ script_group_index_item_hex: ""
1290
+ },
1291
+ {
1292
+ label: "group 1 \u2014 high byte zero, so endianness bugs hide here",
1293
+ group_index: 1,
1294
+ asset_id_hex: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f200100",
1295
+ script_group_index_item_hex: "01"
1296
+ },
1297
+ {
1298
+ label: "endianness discriminator (gidx 258 = 0x0102)",
1299
+ group_index: 258,
1300
+ asset_id_hex: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f200201",
1301
+ script_group_index_item_hex: "0201"
1302
+ },
1303
+ {
1304
+ label: "upper bound \u2014 script number needs a third byte, the u16 blob does not",
1305
+ group_index: 65535,
1306
+ asset_id_hex: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20ffff",
1307
+ script_group_index_item_hex: "ffff00"
1308
+ }
1309
+ ],
1310
+ invalid_identity: [
1311
+ {
1312
+ label: "uppercase",
1313
+ value: "0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F200201",
1314
+ why: "identity is lowercase-only",
1315
+ normalizes_to: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f200201"
1316
+ },
1317
+ {
1318
+ label: "too short",
1319
+ value: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2002",
1320
+ why: "33 bytes; the identity is 34"
1321
+ },
1322
+ {
1323
+ label: "non-hex",
1324
+ value: "z102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f200201",
1325
+ why: "ASCII hex only"
1326
+ }
1327
+ ],
1328
+ invalid_decode: [
1329
+ {
1330
+ label: "empty",
1331
+ value: "",
1332
+ expected_error: "missing asset id"
1333
+ },
1334
+ {
1335
+ label: "too short",
1336
+ value: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2002",
1337
+ expected_error: "invalid asset id length"
1338
+ },
1339
+ {
1340
+ label: "too long",
1341
+ value: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f200201ff",
1342
+ expected_error: "invalid asset id length"
1343
+ },
1344
+ {
1345
+ label: "non-hex",
1346
+ value: "z102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f200201",
1347
+ expected_error: "invalid asset id format"
1348
+ },
1349
+ {
1350
+ label: "zero txid",
1351
+ value: "00000000000000000000000000000000000000000000000000000000000000000201",
1352
+ expected_error: "empty txid"
1353
+ }
1354
+ ],
1355
+ invalid_construction: [
1356
+ {
1357
+ label: "missing txid",
1358
+ txid_hex: "",
1359
+ group_index: 0,
1360
+ expected_error: "missing txid"
1361
+ },
1362
+ {
1363
+ label: "non-hex txid",
1364
+ txid_hex: "z102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20",
1365
+ group_index: 0,
1366
+ expected_error: "invalid txid format"
1367
+ },
1368
+ {
1369
+ label: "txid too long",
1370
+ txid_hex: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021",
1371
+ group_index: 0,
1372
+ expected_error: "invalid txid length"
1373
+ },
1374
+ {
1375
+ label: "txid too short",
1376
+ txid_hex: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e",
1377
+ group_index: 0,
1378
+ expected_error: "invalid txid length"
1379
+ },
1380
+ {
1381
+ label: "zero txid",
1382
+ txid_hex: "0000000000000000000000000000000000000000000000000000000000000000",
1383
+ group_index: 0,
1384
+ expected_error: "empty txid"
1385
+ },
1386
+ {
1387
+ label: "gidx out of range",
1388
+ txid_hex: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20",
1389
+ group_index: 65536,
1390
+ expected_error: "invalid group index",
1391
+ outside_uint16: true
1392
+ },
1393
+ {
1394
+ label: "gidx negative",
1395
+ txid_hex: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20",
1396
+ group_index: -1,
1397
+ expected_error: "invalid group index",
1398
+ outside_uint16: true
1399
+ }
1400
+ ]
1401
+ };
1402
+
1403
+ // src/extension/asset/assetIdVectors.ts
1404
+ function deepFreeze(value) {
1405
+ if (value !== null && typeof value === "object" && !Object.isFrozen(value)) {
1406
+ Object.freeze(value);
1407
+ for (const key of Object.getOwnPropertyNames(value)) {
1408
+ deepFreeze(value[key]);
1409
+ }
1410
+ }
1411
+ return value;
1412
+ }
1413
+ var ASSET_ID_VECTORS = deepFreeze(assetIdVectors_default);
1276
1414
  var INDEXER_MAX_ATTEMPTS = 3;
1277
1415
  var INDEXER_RETRY_BASE_MS = 250;
1278
1416
  async function indexerFetch(input, init) {
@@ -1282,10 +1420,10 @@ async function indexerFetch(input, init) {
1282
1420
  const lastAttempt = attempt >= maxAttempts;
1283
1421
  let res;
1284
1422
  try {
1285
- res = await chunkFZFSGOTZ_cjs.rateGate.runHttp(input, () => chunkFZFSGOTZ_cjs.baseFetch(input, init));
1423
+ res = await chunkZIRFXBKL_cjs.rateGate.runHttp(input, () => chunkZIRFXBKL_cjs.baseFetch(input, init));
1286
1424
  } catch (err) {
1287
- const mapped = chunkFZFSGOTZ_cjs.toProviderUnavailable(err, "indexer");
1288
- if (lastAttempt || !(mapped instanceof chunkFZFSGOTZ_cjs.ProviderUnavailableError)) throw mapped;
1425
+ const mapped = chunkZIRFXBKL_cjs.toProviderUnavailable(err, "indexer");
1426
+ if (lastAttempt || !(mapped instanceof chunkZIRFXBKL_cjs.ProviderUnavailableError)) throw mapped;
1289
1427
  await sleep(retryDelayMs(attempt));
1290
1428
  continue;
1291
1429
  }
@@ -1297,7 +1435,7 @@ async function indexerFetch(input, init) {
1297
1435
  body = void 0;
1298
1436
  }
1299
1437
  try {
1300
- chunkFZFSGOTZ_cjs.throwIfHttpUnavailable(res, "indexer", body);
1438
+ chunkZIRFXBKL_cjs.throwIfHttpUnavailable(res, "indexer", body);
1301
1439
  } catch (err) {
1302
1440
  if (lastAttempt) throw err;
1303
1441
  await sleep(retryDelayMs(attempt));
@@ -1310,6 +1448,7 @@ function retryDelayMs(attempt) {
1310
1448
  return INDEXER_RETRY_BASE_MS * 2 ** (attempt - 1);
1311
1449
  }
1312
1450
  var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
1451
+ var DEFAULT_VTXO_PAGE_SIZE = 500;
1313
1452
  var IndexerTxType = /* @__PURE__ */ ((IndexerTxType2) => {
1314
1453
  IndexerTxType2[IndexerTxType2["INDEXER_TX_TYPE_UNSPECIFIED"] = 0] = "INDEXER_TX_TYPE_UNSPECIFIED";
1315
1454
  IndexerTxType2[IndexerTxType2["INDEXER_TX_TYPE_RECEIVED"] = 1] = "INDEXER_TX_TYPE_RECEIVED";
@@ -1325,7 +1464,7 @@ var ChainTxType = /* @__PURE__ */ ((ChainTxType2) => {
1325
1464
  return ChainTxType2;
1326
1465
  })(ChainTxType || {});
1327
1466
  var RestIndexerProvider = class {
1328
- constructor(serverUrl = chunkFZFSGOTZ_cjs.DEFAULT_ARKADE_SERVER_URL, options = {}) {
1467
+ constructor(serverUrl = chunkZIRFXBKL_cjs.DEFAULT_ARKADE_SERVER_URL, options = {}) {
1329
1468
  this.serverUrl = serverUrl;
1330
1469
  this.eventSource = options.eventSource;
1331
1470
  }
@@ -1461,8 +1600,8 @@ var RestIndexerProvider = class {
1461
1600
  try {
1462
1601
  while (!abortSignal?.aborted) {
1463
1602
  try {
1464
- const currentIterator = chunkFZFSGOTZ_cjs.eventSourceIterator(
1465
- chunkFZFSGOTZ_cjs.resolveEventSource(override)(url)
1603
+ const currentIterator = chunkZIRFXBKL_cjs.eventSourceIterator(
1604
+ chunkZIRFXBKL_cjs.resolveEventSource(override)(url)
1466
1605
  );
1467
1606
  iterator = currentIterator;
1468
1607
  for await (const event of currentIterator) {
@@ -1473,9 +1612,9 @@ var RestIndexerProvider = class {
1473
1612
  yield {
1474
1613
  txid: data.event.txid,
1475
1614
  scripts: data.event.scripts || [],
1476
- newVtxos: (data.event.newVtxos || []).map(chunkFZFSGOTZ_cjs.convertVtxo),
1477
- spentVtxos: (data.event.spentVtxos || []).map(chunkFZFSGOTZ_cjs.convertVtxo),
1478
- sweptVtxos: (data.event.sweptVtxos || []).map(chunkFZFSGOTZ_cjs.convertVtxo),
1615
+ newVtxos: (data.event.newVtxos || []).map(chunkZIRFXBKL_cjs.convertVtxo),
1616
+ spentVtxos: (data.event.spentVtxos || []).map(chunkZIRFXBKL_cjs.convertVtxo),
1617
+ sweptVtxos: (data.event.sweptVtxos || []).map(chunkZIRFXBKL_cjs.convertVtxo),
1479
1618
  tx: data.event.tx,
1480
1619
  checkpointTxs: data.event.checkpointTxs
1481
1620
  };
@@ -1489,14 +1628,14 @@ var RestIndexerProvider = class {
1489
1628
  if (abortSignal?.aborted || error instanceof Error && error.name === "AbortError") {
1490
1629
  break;
1491
1630
  }
1492
- if (chunkFZFSGOTZ_cjs.isFetchTimeoutError(error)) {
1631
+ if (chunkZIRFXBKL_cjs.isFetchTimeoutError(error)) {
1493
1632
  console.debug("Timeout error ignored");
1494
1633
  continue;
1495
1634
  }
1496
- if (chunkFZFSGOTZ_cjs.isEventSourceError(error)) {
1635
+ if (chunkZIRFXBKL_cjs.isEventSourceError(error)) {
1497
1636
  throw error;
1498
1637
  }
1499
- if (chunkFZFSGOTZ_cjs.isEventSourceUnavailableError(error)) throw error;
1638
+ if (chunkZIRFXBKL_cjs.isEventSourceUnavailableError(error)) throw error;
1500
1639
  console.error("Subscription error:", error);
1501
1640
  throw error;
1502
1641
  } finally {
@@ -1582,14 +1721,39 @@ var RestIndexerProvider = class {
1582
1721
  if (opts?.after !== void 0 && opts?.before !== void 0 && opts.after !== 0 && opts.before !== 0 && opts.before <= opts.after) {
1583
1722
  throw new Error("before must be greater than after");
1584
1723
  }
1724
+ if (opts?.pageIndex === void 0 && opts?.pageSize === void 0) {
1725
+ const all = [];
1726
+ let pageIndex = 0;
1727
+ for (; ; ) {
1728
+ const { vtxos, page } = await this.fetchVtxosPage({
1729
+ ...opts,
1730
+ pageIndex,
1731
+ pageSize: DEFAULT_VTXO_PAGE_SIZE
1732
+ });
1733
+ all.push(...vtxos);
1734
+ if (!page || page.current >= page.total || vtxos.length < DEFAULT_VTXO_PAGE_SIZE) {
1735
+ break;
1736
+ }
1737
+ pageIndex = page.next;
1738
+ }
1739
+ return { vtxos: all };
1740
+ }
1741
+ return this.fetchVtxosPage(opts);
1742
+ }
1743
+ /**
1744
+ * Fetch a single page of vtxos. Callers paging to exhaustion get no
1745
+ * deliberate inter-page backoff here: `indexerFetch` already enforces
1746
+ * politeness through the rate gate, so don't add a redundant sleep.
1747
+ */
1748
+ async fetchVtxosPage(opts) {
1585
1749
  let url = `${this.serverUrl}/v1/indexer/vtxos`;
1586
1750
  const params = new URLSearchParams();
1587
- if (hasScripts) {
1751
+ if (opts?.scripts?.length) {
1588
1752
  opts.scripts.forEach((script) => {
1589
1753
  params.append("scripts", script);
1590
1754
  });
1591
1755
  }
1592
- if (hasOutpoints) {
1756
+ if (opts?.outpoints?.length) {
1593
1757
  opts.outpoints.forEach((outpoint) => {
1594
1758
  params.append("outpoints", `${outpoint.txid}:${outpoint.vout}`);
1595
1759
  });
@@ -1622,7 +1786,7 @@ var RestIndexerProvider = class {
1622
1786
  throw new Error("Invalid vtxos data received");
1623
1787
  }
1624
1788
  return {
1625
- vtxos: data.vtxos.map(chunkFZFSGOTZ_cjs.convertVtxo),
1789
+ vtxos: data.vtxos.map(chunkZIRFXBKL_cjs.convertVtxo),
1626
1790
  page: data.page
1627
1791
  };
1628
1792
  }
@@ -1799,10 +1963,11 @@ exports.AssetRef = AssetRef;
1799
1963
  exports.BufferReader = BufferReader;
1800
1964
  exports.BufferWriter = BufferWriter;
1801
1965
  exports.ChainTxType = ChainTxType;
1966
+ exports.DEFAULT_VTXO_PAGE_SIZE = DEFAULT_VTXO_PAGE_SIZE;
1802
1967
  exports.IndexerTxType = IndexerTxType;
1803
1968
  exports.Metadata = Metadata;
1804
1969
  exports.Packet = Packet;
1805
1970
  exports.RestIndexerProvider = RestIndexerProvider;
1806
1971
  exports.asset_exports = asset_exports;
1807
- //# sourceMappingURL=chunk-RXITDAV4.cjs.map
1808
- //# sourceMappingURL=chunk-RXITDAV4.cjs.map
1972
+ //# sourceMappingURL=chunk-3S3JZUEN.cjs.map
1973
+ //# sourceMappingURL=chunk-3S3JZUEN.cjs.map