@arkade-os/sdk 0.4.44 → 0.4.45

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 (68) hide show
  1. package/README.md +35 -0
  2. package/dist/adapters/expo.cjs +4 -4
  3. package/dist/adapters/expo.d.cts +2 -2
  4. package/dist/adapters/expo.d.ts +2 -2
  5. package/dist/adapters/expo.js +2 -2
  6. package/dist/adapters/indexedDB.cjs +3 -3
  7. package/dist/adapters/indexedDB.js +2 -2
  8. package/dist/{ark-I8jfe5VE.d.cts → ark-C-PjOngm.d.cts} +89 -1
  9. package/dist/{ark-I8jfe5VE.d.ts → ark-C-PjOngm.d.ts} +89 -1
  10. package/dist/{asyncStorageTaskQueue-Dap7qUlF.d.cts → asyncStorageTaskQueue-BmBPvTyh.d.cts} +2 -2
  11. package/dist/{asyncStorageTaskQueue-BtSOVZFn.d.ts → asyncStorageTaskQueue-CHpI3moJ.d.ts} +2 -2
  12. package/dist/{chunk-V7WIZR2B.js → chunk-BOA4SHCD.js} +3 -3
  13. package/dist/{chunk-V7WIZR2B.js.map → chunk-BOA4SHCD.js.map} +1 -1
  14. package/dist/{chunk-X37EKDIH.cjs → chunk-HZ7VIN7P.cjs} +11 -11
  15. package/dist/{chunk-X37EKDIH.cjs.map → chunk-HZ7VIN7P.cjs.map} +1 -1
  16. package/dist/{chunk-RJ6XVCX4.cjs → chunk-OFQGANH2.cjs} +7 -7
  17. package/dist/{chunk-RJ6XVCX4.cjs.map → chunk-OFQGANH2.cjs.map} +1 -1
  18. package/dist/{chunk-LCQQPOIT.js → chunk-QZ6HZZZK.js} +3 -3
  19. package/dist/{chunk-LCQQPOIT.js.map → chunk-QZ6HZZZK.js.map} +1 -1
  20. package/dist/{chunk-XIVCG6EP.cjs → chunk-SRCWBFSZ.cjs} +1000 -322
  21. package/dist/chunk-SRCWBFSZ.cjs.map +1 -0
  22. package/dist/{chunk-FMI2GKYO.js → chunk-TGRJ5WAX.js} +919 -243
  23. package/dist/chunk-TGRJ5WAX.js.map +1 -0
  24. package/dist/{chunk-UBYY2TPK.cjs → chunk-UHOHLN3C.cjs} +119 -69
  25. package/dist/chunk-UHOHLN3C.cjs.map +1 -0
  26. package/dist/{chunk-LJ35HPJW.js → chunk-YBQV7XBC.js} +119 -70
  27. package/dist/chunk-YBQV7XBC.js.map +1 -0
  28. package/dist/contracts/handlers/index.d.cts +3 -3
  29. package/dist/contracts/handlers/index.d.ts +3 -3
  30. package/dist/{delegate-CgjVjYOP.d.ts → delegate-BKNqva1j.d.ts} +1 -1
  31. package/dist/{delegate-BRqbh2fW.d.cts → delegate-DOEobYwH.d.cts} +1 -1
  32. package/dist/{index-DHuXlDEg.d.cts → index-BlW4I30l.d.cts} +2 -2
  33. package/dist/{index-DvWNB_rl.d.ts → index-Cm2fGeox.d.ts} +2 -2
  34. package/dist/index.cjs +141 -129
  35. package/dist/index.d.cts +45 -20
  36. package/dist/index.d.ts +45 -20
  37. package/dist/index.js +2 -2
  38. package/dist/repositories/realm/index.cjs +17 -17
  39. package/dist/repositories/realm/index.d.cts +2 -2
  40. package/dist/repositories/realm/index.d.ts +2 -2
  41. package/dist/repositories/realm/index.js +3 -3
  42. package/dist/repositories/sqlite/index.cjs +16 -16
  43. package/dist/repositories/sqlite/index.d.cts +2 -2
  44. package/dist/repositories/sqlite/index.d.ts +2 -2
  45. package/dist/repositories/sqlite/index.js +3 -3
  46. package/dist/{taskRunner-Bptw9UMa.d.ts → taskRunner-BngWSFMi.d.ts} +2 -2
  47. package/dist/{taskRunner-CeFxKhSH.d.cts → taskRunner-DOiyRuJa.d.cts} +2 -2
  48. package/dist/wallet/expo/background.cjs +12 -12
  49. package/dist/wallet/expo/background.d.cts +3 -3
  50. package/dist/wallet/expo/background.d.ts +3 -3
  51. package/dist/wallet/expo/background.js +4 -4
  52. package/dist/wallet/expo/index.cjs +21 -12
  53. package/dist/wallet/expo/index.cjs.map +1 -1
  54. package/dist/wallet/expo/index.d.cts +11 -4
  55. package/dist/wallet/expo/index.d.ts +11 -4
  56. package/dist/wallet/expo/index.js +12 -3
  57. package/dist/wallet/expo/index.js.map +1 -1
  58. package/dist/{wallet-BsqRU8KM.d.cts → wallet-B3awP1Nj.d.ts} +105 -3
  59. package/dist/{wallet-D9z7wssl.d.ts → wallet-DBjumS42.d.cts} +105 -3
  60. package/dist/worker/expo/index.cjs +7 -7
  61. package/dist/worker/expo/index.d.cts +4 -4
  62. package/dist/worker/expo/index.d.ts +4 -4
  63. package/dist/worker/expo/index.js +3 -3
  64. package/package.json +1 -1
  65. package/dist/chunk-FMI2GKYO.js.map +0 -1
  66. package/dist/chunk-LJ35HPJW.js.map +0 -1
  67. package/dist/chunk-UBYY2TPK.cjs.map +0 -1
  68. package/dist/chunk-XIVCG6EP.cjs.map +0 -1
@@ -124,6 +124,59 @@ function checkKeyIncludes(key, arkPsbtFieldKey) {
124
124
  return base.hex.encode(new Uint8Array([key.type, ...key.key])).includes(expected);
125
125
  }
126
126
 
127
+ // package.json
128
+ var version = "0.4.45";
129
+
130
+ // src/utils/fetch.ts
131
+ var buildVersion = "0.9.9";
132
+ var sdkVersion = `ts-sdk/${version}`;
133
+ var FetchError = class extends Error {
134
+ /** The request URL that failed, when derivable from the `fetch` input. */
135
+ url;
136
+ /** The HTTP method of the failed request (defaults to `"GET"`). */
137
+ method;
138
+ constructor(message, options) {
139
+ super(message, { cause: options.cause });
140
+ this.name = "FetchError";
141
+ this.url = options.url;
142
+ this.method = options.method;
143
+ }
144
+ };
145
+ function baseFetch(input, init) {
146
+ if (typeof globalThis.fetch !== "function") {
147
+ throw new Error("Fetch API is not available in this environment.");
148
+ }
149
+ return globalThis.fetch(input, init).catch((cause) => {
150
+ const { url, method } = describeRequest(input, init);
151
+ throw new FetchError(`Network request failed: ${method} ${url}`, { url, method, cause });
152
+ });
153
+ }
154
+ function fetch(input, init) {
155
+ const headers = new Headers(init?.headers);
156
+ headers.set("X-Build-Version", buildVersion);
157
+ headers.set("X-SDK-VERSION", sdkVersion);
158
+ return baseFetch(input, { ...init, headers });
159
+ }
160
+ function describeRequest(input, init) {
161
+ let url;
162
+ if (typeof input === "string") {
163
+ url = input;
164
+ } else if (input instanceof URL) {
165
+ url = input.href;
166
+ } else {
167
+ url = input.url;
168
+ }
169
+ let method;
170
+ if (init?.method !== void 0) {
171
+ method = init.method;
172
+ } else if (input instanceof Request) {
173
+ method = input.method;
174
+ } else {
175
+ method = "GET";
176
+ }
177
+ return { url, method };
178
+ }
179
+
127
180
  // src/providers/errors.ts
128
181
  var ArkError = class extends Error {
129
182
  constructor(code, message, name, metadata) {
@@ -134,6 +187,28 @@ var ArkError = class extends Error {
134
187
  this.metadata = metadata;
135
188
  }
136
189
  };
190
+ var ProviderUnavailableError = class extends Error {
191
+ /** Always `true`: this error type only ever wraps retryable conditions. */
192
+ retryable = true;
193
+ constructor(message, options) {
194
+ super(message, { cause: options?.cause });
195
+ this.name = "ProviderUnavailableError";
196
+ }
197
+ };
198
+ function throwIfHttpUnavailable(response, kind, body) {
199
+ if (body !== void 0 && maybeArkError(new Error(body))) return;
200
+ if (response.status === 429 || response.status >= 500) {
201
+ throw new ProviderUnavailableError(
202
+ `${kind} unavailable: ${response.status} ${response.statusText}`
203
+ );
204
+ }
205
+ }
206
+ function toProviderUnavailable(err, kind) {
207
+ if (err instanceof FetchError) {
208
+ return new ProviderUnavailableError(`${kind} request failed`, { cause: err });
209
+ }
210
+ return err;
211
+ }
137
212
  function maybeArkError(error) {
138
213
  try {
139
214
  if (!(error instanceof Error)) return void 0;
@@ -350,59 +425,6 @@ function prepareCoinAsIntentProofInput(coin) {
350
425
  };
351
426
  }
352
427
 
353
- // package.json
354
- var version = "0.4.44";
355
-
356
- // src/utils/fetch.ts
357
- var buildVersion = "0.9.9";
358
- var sdkVersion = `ts-sdk/${version}`;
359
- var FetchError = class extends Error {
360
- /** The request URL that failed, when derivable from the `fetch` input. */
361
- url;
362
- /** The HTTP method of the failed request (defaults to `"GET"`). */
363
- method;
364
- constructor(message, options) {
365
- super(message, { cause: options.cause });
366
- this.name = "FetchError";
367
- this.url = options.url;
368
- this.method = options.method;
369
- }
370
- };
371
- function baseFetch(input, init) {
372
- if (typeof globalThis.fetch !== "function") {
373
- throw new Error("Fetch API is not available in this environment.");
374
- }
375
- return globalThis.fetch(input, init).catch((cause) => {
376
- const { url, method } = describeRequest(input, init);
377
- throw new FetchError(`Network request failed: ${method} ${url}`, { url, method, cause });
378
- });
379
- }
380
- function fetch(input, init) {
381
- const headers = new Headers(init?.headers);
382
- headers.set("X-Build-Version", buildVersion);
383
- headers.set("X-SDK-VERSION", sdkVersion);
384
- return baseFetch(input, { ...init, headers });
385
- }
386
- function describeRequest(input, init) {
387
- let url;
388
- if (typeof input === "string") {
389
- url = input;
390
- } else if (input instanceof URL) {
391
- url = input.href;
392
- } else {
393
- url = input.url;
394
- }
395
- let method;
396
- if (init?.method !== void 0) {
397
- method = init.method;
398
- } else if (input instanceof Request) {
399
- method = input.method;
400
- } else {
401
- method = "GET";
402
- }
403
- return { url, method };
404
- }
405
-
406
428
  // src/providers/utils.ts
407
429
  function createAbortError() {
408
430
  const error = new Error("EventSource closed");
@@ -570,16 +592,24 @@ var RestArkProvider = class {
570
592
  ...init.headers
571
593
  };
572
594
  if (digest) headers["X-Digest"] = digest;
573
- const response = await fetch(url, { ...init, headers });
595
+ let response;
596
+ try {
597
+ response = await fetch(url, { ...init, headers });
598
+ } catch (err) {
599
+ throw toProviderUnavailable(err, "arkade");
600
+ }
574
601
  if (response.ok) return response;
575
602
  let body;
576
603
  try {
577
604
  body = await response.clone().text();
578
605
  } catch (e) {
579
606
  console.warn("authedFetch could not read response body for digest check", e);
607
+ throwIfHttpUnavailable(response, "arkade");
580
608
  return response;
581
609
  }
582
- if (maybeArkError(new Error(body))?.name !== "DIGEST_MISMATCH") return response;
610
+ const arkError = maybeArkError(new Error(body));
611
+ if (!arkError) throwIfHttpUnavailable(response, "arkade");
612
+ if (arkError?.name !== "DIGEST_MISMATCH") return response;
583
613
  this._digest = "";
584
614
  const info = await this.getInfo();
585
615
  this.emitServerInfoChanged(info);
@@ -592,6 +622,7 @@ var RestArkProvider = class {
592
622
  const response = await fetch(url);
593
623
  if (!response.ok) {
594
624
  const errorText = await response.text();
625
+ throwIfHttpUnavailable(response, "arkade", errorText);
595
626
  handleError(errorText, `Failed to get server info: ${response.statusText}`);
596
627
  }
597
628
  const fromServer = await response.json();
@@ -2315,6 +2346,24 @@ var Packet = class _Packet {
2315
2346
  return packet;
2316
2347
  }
2317
2348
  };
2349
+ async function indexerFetch(input, init) {
2350
+ let res;
2351
+ try {
2352
+ res = await baseFetch(input, init);
2353
+ } catch (err) {
2354
+ throw toProviderUnavailable(err, "indexer");
2355
+ }
2356
+ if (!res.ok) {
2357
+ let body;
2358
+ try {
2359
+ body = await res.clone().text();
2360
+ } catch {
2361
+ body = void 0;
2362
+ }
2363
+ throwIfHttpUnavailable(res, "indexer", body);
2364
+ }
2365
+ return res;
2366
+ }
2318
2367
  var IndexerTxType = /* @__PURE__ */ ((IndexerTxType2) => {
2319
2368
  IndexerTxType2[IndexerTxType2["INDEXER_TX_TYPE_UNSPECIFIED"] = 0] = "INDEXER_TX_TYPE_UNSPECIFIED";
2320
2369
  IndexerTxType2[IndexerTxType2["INDEXER_TX_TYPE_RECEIVED"] = 1] = "INDEXER_TX_TYPE_RECEIVED";
@@ -2344,7 +2393,7 @@ var RestIndexerProvider = class {
2344
2393
  if (params.toString()) {
2345
2394
  url += "?" + params.toString();
2346
2395
  }
2347
- const res = await baseFetch(url);
2396
+ const res = await indexerFetch(url);
2348
2397
  if (!res.ok) {
2349
2398
  throw new Error(`Failed to fetch vtxo tree: ${res.statusText}`);
2350
2399
  }
@@ -2370,7 +2419,7 @@ var RestIndexerProvider = class {
2370
2419
  if (params.toString()) {
2371
2420
  url += "?" + params.toString();
2372
2421
  }
2373
- const res = await baseFetch(url);
2422
+ const res = await indexerFetch(url);
2374
2423
  if (!res.ok) {
2375
2424
  throw new Error(`Failed to fetch vtxo tree leaves: ${res.statusText}`);
2376
2425
  }
@@ -2382,7 +2431,7 @@ var RestIndexerProvider = class {
2382
2431
  }
2383
2432
  async getBatchSweepTransactions(batchOutpoint) {
2384
2433
  const url = `${this.serverUrl}/v1/indexer/batch/${batchOutpoint.txid}/${batchOutpoint.vout}/sweepTxs`;
2385
- const res = await baseFetch(url);
2434
+ const res = await indexerFetch(url);
2386
2435
  if (!res.ok) {
2387
2436
  throw new Error(`Failed to fetch batch sweep transactions: ${res.statusText}`);
2388
2437
  }
@@ -2394,7 +2443,7 @@ var RestIndexerProvider = class {
2394
2443
  }
2395
2444
  async getCommitmentTx(txid) {
2396
2445
  const url = `${this.serverUrl}/v1/indexer/commitmentTx/${txid}`;
2397
- const res = await baseFetch(url);
2446
+ const res = await indexerFetch(url);
2398
2447
  if (!res.ok) {
2399
2448
  throw new Error(`Failed to fetch commitment tx: ${res.statusText}`);
2400
2449
  }
@@ -2415,7 +2464,7 @@ var RestIndexerProvider = class {
2415
2464
  if (params.toString()) {
2416
2465
  url += "?" + params.toString();
2417
2466
  }
2418
- const res = await baseFetch(url);
2467
+ const res = await indexerFetch(url);
2419
2468
  if (!res.ok) {
2420
2469
  throw new Error(`Failed to fetch commitment tx connectors: ${res.statusText}`);
2421
2470
  }
@@ -2441,7 +2490,7 @@ var RestIndexerProvider = class {
2441
2490
  if (params.toString()) {
2442
2491
  url += "?" + params.toString();
2443
2492
  }
2444
- const res = await baseFetch(url);
2493
+ const res = await indexerFetch(url);
2445
2494
  if (!res.ok) {
2446
2495
  throw new Error(`Failed to fetch commitment tx forfeitTxs: ${res.statusText}`);
2447
2496
  }
@@ -2524,7 +2573,7 @@ var RestIndexerProvider = class {
2524
2573
  if (params.toString()) {
2525
2574
  url += "?" + params.toString();
2526
2575
  }
2527
- const res = await baseFetch(url);
2576
+ const res = await indexerFetch(url);
2528
2577
  if (!res.ok) {
2529
2578
  throw new Error(`Failed to fetch virtual txs: ${res.statusText}`);
2530
2579
  }
@@ -2545,7 +2594,7 @@ var RestIndexerProvider = class {
2545
2594
  if (params.toString()) {
2546
2595
  url += "?" + params.toString();
2547
2596
  }
2548
- const res = await baseFetch(url);
2597
+ const res = await indexerFetch(url);
2549
2598
  if (!res.ok) {
2550
2599
  throw new Error(`Failed to fetch vtxo chain: ${res.statusText}`);
2551
2600
  }
@@ -2604,7 +2653,7 @@ var RestIndexerProvider = class {
2604
2653
  if (params.toString()) {
2605
2654
  url += "?" + params.toString();
2606
2655
  }
2607
- const res = await baseFetch(url);
2656
+ const res = await indexerFetch(url);
2608
2657
  if (!res.ok) {
2609
2658
  throw new Error(`Failed to fetch vtxos: ${res.statusText}`);
2610
2659
  }
@@ -2619,7 +2668,7 @@ var RestIndexerProvider = class {
2619
2668
  }
2620
2669
  async getAssetDetails(assetId) {
2621
2670
  const url = `${this.serverUrl}/v1/indexer/asset/${encodeURIComponent(assetId)}`;
2622
- const res = await baseFetch(url);
2671
+ const res = await indexerFetch(url);
2623
2672
  if (!res.ok) {
2624
2673
  throw new Error(`Failed to fetch asset details: ${res.statusText}`);
2625
2674
  }
@@ -2637,7 +2686,7 @@ var RestIndexerProvider = class {
2637
2686
  }
2638
2687
  async subscribeForScripts(scripts, subscriptionId) {
2639
2688
  const url = `${this.serverUrl}/v1/indexer/script/subscribe`;
2640
- const res = await baseFetch(url, {
2689
+ const res = await indexerFetch(url, {
2641
2690
  headers: {
2642
2691
  "Content-Type": "application/json"
2643
2692
  },
@@ -2654,7 +2703,7 @@ var RestIndexerProvider = class {
2654
2703
  }
2655
2704
  async unsubscribeForScripts(subscriptionId, scripts) {
2656
2705
  const url = `${this.serverUrl}/v1/indexer/script/unsubscribe`;
2657
- const res = await baseFetch(url, {
2706
+ const res = await indexerFetch(url, {
2658
2707
  headers: {
2659
2708
  "Content-Type": "application/json"
2660
2709
  },
@@ -2827,6 +2876,7 @@ exports.IndexerTxType = IndexerTxType;
2827
2876
  exports.Metadata = Metadata;
2828
2877
  exports.OP_RETURN_EMPTY_PKSCRIPT = OP_RETURN_EMPTY_PKSCRIPT;
2829
2878
  exports.Packet = Packet;
2879
+ exports.ProviderUnavailableError = ProviderUnavailableError;
2830
2880
  exports.RestArkProvider = RestArkProvider;
2831
2881
  exports.RestIndexerProvider = RestIndexerProvider;
2832
2882
  exports.SettlementEventType = SettlementEventType;
@@ -2844,5 +2894,5 @@ exports.isFetchTimeoutError = isFetchTimeoutError;
2844
2894
  exports.maybeArkError = maybeArkError;
2845
2895
  exports.sdkVersion = sdkVersion;
2846
2896
  exports.setArkPsbtField = setArkPsbtField;
2847
- //# sourceMappingURL=chunk-UBYY2TPK.cjs.map
2848
- //# sourceMappingURL=chunk-UBYY2TPK.cjs.map
2897
+ //# sourceMappingURL=chunk-UHOHLN3C.cjs.map
2898
+ //# sourceMappingURL=chunk-UHOHLN3C.cjs.map