@arkade-os/sdk 0.4.18 → 0.4.20
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/dist/cjs/contracts/contractWatcher.js +7 -1
- package/dist/cjs/contracts/handlers/default.js +10 -3
- package/dist/cjs/contracts/handlers/helpers.js +47 -5
- package/dist/cjs/contracts/handlers/vhtlc.js +4 -2
- package/dist/cjs/identity/descriptor.js +98 -0
- package/dist/cjs/identity/descriptorProvider.js +2 -0
- package/dist/cjs/identity/index.js +15 -1
- package/dist/cjs/identity/seedIdentity.js +91 -6
- package/dist/cjs/identity/serialize.js +166 -0
- package/dist/cjs/identity/staticDescriptorProvider.js +65 -0
- package/dist/cjs/index.js +6 -3
- package/dist/cjs/providers/ark.js +45 -34
- package/dist/cjs/providers/electrum.js +663 -0
- package/dist/cjs/providers/indexer.js +5 -1
- package/dist/cjs/providers/utils.js +4 -0
- package/dist/cjs/wallet/ramps.js +1 -1
- package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +10 -0
- package/dist/cjs/wallet/serviceWorker/wallet.js +137 -91
- package/dist/cjs/wallet/vtxo-manager.js +133 -17
- package/dist/cjs/wallet/wallet.js +80 -19
- package/dist/cjs/worker/messageBus.js +200 -56
- package/dist/esm/contracts/contractWatcher.js +7 -1
- package/dist/esm/contracts/handlers/default.js +10 -3
- package/dist/esm/contracts/handlers/helpers.js +47 -5
- package/dist/esm/contracts/handlers/vhtlc.js +4 -2
- package/dist/esm/identity/descriptor.js +92 -0
- package/dist/esm/identity/descriptorProvider.js +1 -0
- package/dist/esm/identity/index.js +6 -1
- package/dist/esm/identity/seedIdentity.js +89 -6
- package/dist/esm/identity/serialize.js +159 -0
- package/dist/esm/identity/staticDescriptorProvider.js +61 -0
- package/dist/esm/index.js +2 -1
- package/dist/esm/providers/ark.js +46 -35
- package/dist/esm/providers/electrum.js +658 -0
- package/dist/esm/providers/indexer.js +6 -2
- package/dist/esm/providers/utils.js +3 -0
- package/dist/esm/wallet/ramps.js +1 -1
- package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +10 -0
- package/dist/esm/wallet/serviceWorker/wallet.js +137 -91
- package/dist/esm/wallet/vtxo-manager.js +133 -17
- package/dist/esm/wallet/wallet.js +80 -19
- package/dist/esm/worker/messageBus.js +201 -57
- package/dist/types/contracts/handlers/default.d.ts +1 -1
- package/dist/types/contracts/handlers/helpers.d.ts +1 -1
- package/dist/types/contracts/types.d.ts +11 -3
- package/dist/types/identity/descriptor.d.ts +35 -0
- package/dist/types/identity/descriptorProvider.d.ts +28 -0
- package/dist/types/identity/index.d.ts +7 -1
- package/dist/types/identity/seedIdentity.d.ts +41 -4
- package/dist/types/identity/serialize.d.ts +84 -0
- package/dist/types/identity/staticDescriptorProvider.d.ts +18 -0
- package/dist/types/index.d.ts +4 -2
- package/dist/types/providers/electrum.d.ts +212 -0
- package/dist/types/providers/utils.d.ts +1 -0
- package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +11 -2
- package/dist/types/wallet/serviceWorker/wallet.d.ts +27 -10
- package/dist/types/wallet/vtxo-manager.d.ts +15 -0
- package/dist/types/wallet/wallet.d.ts +3 -0
- package/dist/types/worker/messageBus.d.ts +68 -8
- package/package.json +3 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { hex } from "@scure/base";
|
|
2
|
-
import { eventSourceIterator } from './utils.js';
|
|
2
|
+
import { eventSourceIterator, isEventSourceError } from './utils.js';
|
|
3
3
|
import { maybeArkError } from './errors.js';
|
|
4
4
|
import { Intent } from '../intent/index.js';
|
|
5
5
|
export var SettlementEventType;
|
|
@@ -227,28 +227,21 @@ export class RestArkProvider {
|
|
|
227
227
|
const queryParams = topics.length > 0
|
|
228
228
|
? `?${topics.map((topic) => `topics=${encodeURIComponent(topic)}`).join("&")}`
|
|
229
229
|
: "";
|
|
230
|
-
//
|
|
231
|
-
//
|
|
232
|
-
//
|
|
233
|
-
|
|
234
|
-
|
|
230
|
+
// The EventSource is allocated inside the generator body so that
|
|
231
|
+
// abandoning the returned iterator before iteration starts does not
|
|
232
|
+
// leak the underlying SSE connection. `return()` is overridden below
|
|
233
|
+
// so that closing the generator also closes the connection even when
|
|
234
|
+
// the body is currently suspended at an await point.
|
|
235
|
+
let eventSource = null;
|
|
235
236
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
236
237
|
const self = this;
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
? eagerIterator
|
|
245
|
-
: eventSourceIterator(eventSource);
|
|
246
|
-
firstIteration = false;
|
|
247
|
-
try {
|
|
248
|
-
const abortHandler = () => {
|
|
249
|
-
eventSource.close();
|
|
250
|
-
};
|
|
251
|
-
signal?.addEventListener("abort", abortHandler);
|
|
238
|
+
const gen = (async function* () {
|
|
239
|
+
const abortHandler = () => eventSource?.close();
|
|
240
|
+
signal?.addEventListener("abort", abortHandler);
|
|
241
|
+
try {
|
|
242
|
+
while (!signal?.aborted) {
|
|
243
|
+
eventSource = new EventSource(url + queryParams);
|
|
244
|
+
const iterator = eventSourceIterator(eventSource);
|
|
252
245
|
try {
|
|
253
246
|
for await (const event of iterator) {
|
|
254
247
|
if (signal?.aborted)
|
|
@@ -266,25 +259,39 @@ export class RestArkProvider {
|
|
|
266
259
|
}
|
|
267
260
|
}
|
|
268
261
|
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
if (signal?.aborted ||
|
|
264
|
+
(error instanceof Error &&
|
|
265
|
+
error.name === "AbortError")) {
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
// ignore timeout errors, they're expected when the server is not sending anything for 5 min
|
|
269
|
+
if (isFetchTimeoutError(error)) {
|
|
270
|
+
console.debug("Timeout error ignored");
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
if (isEventSourceError(error)) {
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
console.error("Event stream error:", error);
|
|
277
|
+
throw error;
|
|
278
|
+
}
|
|
269
279
|
finally {
|
|
270
|
-
signal?.removeEventListener("abort", abortHandler);
|
|
271
280
|
eventSource.close();
|
|
272
281
|
}
|
|
273
282
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
// ignore timeout errors, they're expected when the server is not sending anything for 5 min
|
|
279
|
-
if (isFetchTimeoutError(error)) {
|
|
280
|
-
console.debug("Timeout error ignored");
|
|
281
|
-
continue;
|
|
282
|
-
}
|
|
283
|
-
console.error("Event stream error:", error);
|
|
284
|
-
throw error;
|
|
285
|
-
}
|
|
283
|
+
}
|
|
284
|
+
finally {
|
|
285
|
+
signal?.removeEventListener("abort", abortHandler);
|
|
286
|
+
eventSource?.close();
|
|
286
287
|
}
|
|
287
288
|
})();
|
|
289
|
+
const origReturn = gen.return.bind(gen);
|
|
290
|
+
gen.return = (value) => {
|
|
291
|
+
eventSource?.close();
|
|
292
|
+
return origReturn(value);
|
|
293
|
+
};
|
|
294
|
+
return gen;
|
|
288
295
|
}
|
|
289
296
|
async *getTransactionsStream(signal) {
|
|
290
297
|
const url = `${this.serverUrl}/v1/txs`;
|
|
@@ -319,7 +326,8 @@ export class RestArkProvider {
|
|
|
319
326
|
}
|
|
320
327
|
}
|
|
321
328
|
catch (error) {
|
|
322
|
-
if (
|
|
329
|
+
if (signal?.aborted ||
|
|
330
|
+
(error instanceof Error && error.name === "AbortError")) {
|
|
323
331
|
break;
|
|
324
332
|
}
|
|
325
333
|
// ignore timeout errors, they're expected when the server is not sending anything for 5 min
|
|
@@ -327,6 +335,9 @@ export class RestArkProvider {
|
|
|
327
335
|
console.debug("Timeout error ignored");
|
|
328
336
|
continue;
|
|
329
337
|
}
|
|
338
|
+
if (isEventSourceError(error)) {
|
|
339
|
+
throw error;
|
|
340
|
+
}
|
|
330
341
|
console.error("Transaction stream error:", error);
|
|
331
342
|
throw error;
|
|
332
343
|
}
|