@arkade-os/boltz-swap 0.3.32 → 0.3.34
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/README.md +22 -26
- package/dist/{arkade-swaps-CS8FZSVL.d.cts → arkade-swaps-BXAD1s8j.d.ts} +69 -8
- package/dist/{arkade-swaps-WiKCanCL.d.ts → arkade-swaps-CfMets16.d.cts} +69 -8
- package/dist/{chunk-NHBWNN6H.js → chunk-5K2FS2FE.js} +8 -27
- package/dist/chunk-SJQJQO7P.js +25 -0
- package/dist/{chunk-B3Q4TFWT.js → chunk-TDBUZE4N.js} +817 -866
- package/dist/expo/background.cjs +840 -892
- package/dist/expo/background.d.cts +3 -3
- package/dist/expo/background.d.ts +3 -3
- package/dist/expo/background.js +9 -20
- package/dist/expo/index.cjs +840 -870
- package/dist/expo/index.d.cts +8 -6
- package/dist/expo/index.d.ts +8 -6
- package/dist/expo/index.js +17 -20
- package/dist/index.cjs +1034 -1022
- package/dist/index.d.cts +95 -11
- package/dist/index.d.ts +95 -11
- package/dist/index.js +164 -119
- package/dist/repositories/realm/index.cjs +10 -22
- package/dist/repositories/realm/index.d.cts +7 -5
- package/dist/repositories/realm/index.d.ts +7 -5
- package/dist/repositories/realm/index.js +8 -22
- package/dist/repositories/sqlite/index.cjs +12 -23
- package/dist/repositories/sqlite/index.d.cts +1 -1
- package/dist/repositories/sqlite/index.d.ts +1 -1
- package/dist/repositories/sqlite/index.js +10 -23
- package/dist/{swapsPollProcessor-BF3uTFae.d.cts → swapsPollProcessor-BpAqG0V6.d.cts} +3 -3
- package/dist/{swapsPollProcessor-wYOMzldd.d.ts → swapsPollProcessor-DFVOAy_-.d.ts} +3 -3
- package/dist/{types-BBI7-KJ0.d.cts → types--axEWA8c.d.cts} +42 -4
- package/dist/{types-BBI7-KJ0.d.ts → types--axEWA8c.d.ts} +42 -4
- package/package.json +10 -25
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
InvoiceFailedToPayError,
|
|
9
9
|
NetworkError,
|
|
10
10
|
PreimageFetchError,
|
|
11
|
+
QuoteRejectedError,
|
|
11
12
|
SchemaError,
|
|
12
13
|
SwapError,
|
|
13
14
|
SwapExpiredError,
|
|
@@ -51,13 +52,20 @@ import {
|
|
|
51
52
|
updateReverseSwapStatus,
|
|
52
53
|
updateSubmarineSwapStatus,
|
|
53
54
|
verifySignatures
|
|
54
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-TDBUZE4N.js";
|
|
56
|
+
import {
|
|
57
|
+
applyCreatedAtOrder,
|
|
58
|
+
applySwapsFilter
|
|
59
|
+
} from "./chunk-SJQJQO7P.js";
|
|
55
60
|
|
|
56
61
|
// src/serviceWorker/arkade-swaps-message-handler.ts
|
|
57
|
-
import {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
import { RestArkProvider, RestIndexerProvider } from "@arkade-os/sdk";
|
|
63
|
+
function toQuoteTransportError(error) {
|
|
64
|
+
if (error instanceof QuoteRejectedError) {
|
|
65
|
+
return error.toTransportError();
|
|
66
|
+
}
|
|
67
|
+
return error;
|
|
68
|
+
}
|
|
61
69
|
var DEFAULT_MESSAGE_TAG = "ARKADE_SWAPS_UPDATER";
|
|
62
70
|
var HANDLER_NOT_INITIALIZED = "ArkadeSwaps handler not initialized";
|
|
63
71
|
var HandlerNotInitializedError = class extends Error {
|
|
@@ -173,9 +181,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
173
181
|
try {
|
|
174
182
|
switch (message.type) {
|
|
175
183
|
case "CREATE_LIGHTNING_INVOICE": {
|
|
176
|
-
const res = await this.handler.createLightningInvoice(
|
|
177
|
-
message.payload
|
|
178
|
-
);
|
|
184
|
+
const res = await this.handler.createLightningInvoice(message.payload);
|
|
179
185
|
return this.tagged({
|
|
180
186
|
id,
|
|
181
187
|
type: "LIGHTNING_INVOICE_CREATED",
|
|
@@ -183,9 +189,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
183
189
|
});
|
|
184
190
|
}
|
|
185
191
|
case "SEND_LIGHTNING_PAYMENT": {
|
|
186
|
-
const res = await this.handler.sendLightningPayment(
|
|
187
|
-
message.payload
|
|
188
|
-
);
|
|
192
|
+
const res = await this.handler.sendLightningPayment(message.payload);
|
|
189
193
|
return this.tagged({
|
|
190
194
|
id,
|
|
191
195
|
type: "LIGHTNING_PAYMENT_SENT",
|
|
@@ -193,9 +197,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
193
197
|
});
|
|
194
198
|
}
|
|
195
199
|
case "CREATE_SUBMARINE_SWAP": {
|
|
196
|
-
const res = await this.handler.createSubmarineSwap(
|
|
197
|
-
message.payload
|
|
198
|
-
);
|
|
200
|
+
const res = await this.handler.createSubmarineSwap(message.payload);
|
|
199
201
|
return this.tagged({
|
|
200
202
|
id,
|
|
201
203
|
type: "SUBMARINE_SWAP_CREATED",
|
|
@@ -203,9 +205,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
203
205
|
});
|
|
204
206
|
}
|
|
205
207
|
case "CREATE_REVERSE_SWAP": {
|
|
206
|
-
const res = await this.handler.createReverseSwap(
|
|
207
|
-
message.payload
|
|
208
|
-
);
|
|
208
|
+
const res = await this.handler.createReverseSwap(message.payload);
|
|
209
209
|
return this.tagged({
|
|
210
210
|
id,
|
|
211
211
|
type: "REVERSE_SWAP_CREATED",
|
|
@@ -216,9 +216,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
216
216
|
await this.handler.claimVHTLC(message.payload);
|
|
217
217
|
return this.tagged({ id, type: "VHTLC_CLAIMED" });
|
|
218
218
|
case "REFUND_VHTLC": {
|
|
219
|
-
const outcome = await this.handler.refundVHTLC(
|
|
220
|
-
message.payload
|
|
221
|
-
);
|
|
219
|
+
const outcome = await this.handler.refundVHTLC(message.payload);
|
|
222
220
|
return this.tagged({
|
|
223
221
|
id,
|
|
224
222
|
type: "VHTLC_REFUNDED",
|
|
@@ -226,9 +224,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
226
224
|
});
|
|
227
225
|
}
|
|
228
226
|
case "INSPECT_SUBMARINE_RECOVERY": {
|
|
229
|
-
const info = await this.handler.inspectSubmarineRecovery(
|
|
230
|
-
message.payload
|
|
231
|
-
);
|
|
227
|
+
const info = await this.handler.inspectSubmarineRecovery(message.payload);
|
|
232
228
|
return this.tagged({
|
|
233
229
|
id,
|
|
234
230
|
type: "SUBMARINE_RECOVERY_INSPECTED",
|
|
@@ -244,9 +240,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
244
240
|
});
|
|
245
241
|
}
|
|
246
242
|
case "RECOVER_SUBMARINE_FUNDS": {
|
|
247
|
-
const outcome = await this.handler.recoverSubmarineFunds(
|
|
248
|
-
message.payload
|
|
249
|
-
);
|
|
243
|
+
const outcome = await this.handler.recoverSubmarineFunds(message.payload);
|
|
250
244
|
return this.tagged({
|
|
251
245
|
id,
|
|
252
246
|
type: "SUBMARINE_FUNDS_RECOVERED",
|
|
@@ -254,9 +248,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
254
248
|
});
|
|
255
249
|
}
|
|
256
250
|
case "RECOVER_ALL_SUBMARINE_FUNDS": {
|
|
257
|
-
const results = await this.handler.recoverAllSubmarineFunds(
|
|
258
|
-
message.payload
|
|
259
|
-
);
|
|
251
|
+
const results = await this.handler.recoverAllSubmarineFunds(message.payload);
|
|
260
252
|
return this.tagged({
|
|
261
253
|
id,
|
|
262
254
|
type: "ALL_SUBMARINE_FUNDS_RECOVERED",
|
|
@@ -264,9 +256,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
264
256
|
});
|
|
265
257
|
}
|
|
266
258
|
case "WAIT_AND_CLAIM": {
|
|
267
|
-
const res = await this.handler.waitAndClaim(
|
|
268
|
-
message.payload
|
|
269
|
-
);
|
|
259
|
+
const res = await this.handler.waitAndClaim(message.payload);
|
|
270
260
|
return this.tagged({
|
|
271
261
|
id,
|
|
272
262
|
type: "WAIT_AND_CLAIMED",
|
|
@@ -274,9 +264,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
274
264
|
});
|
|
275
265
|
}
|
|
276
266
|
case "WAIT_FOR_SWAP_SETTLEMENT": {
|
|
277
|
-
const res = await this.handler.waitForSwapSettlement(
|
|
278
|
-
message.payload
|
|
279
|
-
);
|
|
267
|
+
const res = await this.handler.waitForSwapSettlement(message.payload);
|
|
280
268
|
return this.tagged({
|
|
281
269
|
id,
|
|
282
270
|
type: "SWAP_SETTLED",
|
|
@@ -284,9 +272,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
284
272
|
});
|
|
285
273
|
}
|
|
286
274
|
case "RESTORE_SWAPS": {
|
|
287
|
-
const res = await this.handler.restoreSwaps(
|
|
288
|
-
message.payload
|
|
289
|
-
);
|
|
275
|
+
const res = await this.handler.restoreSwaps(message.payload);
|
|
290
276
|
return this.tagged({
|
|
291
277
|
id,
|
|
292
278
|
type: "SWAPS_RESTORED",
|
|
@@ -316,23 +302,15 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
316
302
|
});
|
|
317
303
|
}
|
|
318
304
|
case "GET_FEES": {
|
|
319
|
-
const res = message.payload ? await this.handler.getFees(
|
|
320
|
-
message.payload.from,
|
|
321
|
-
message.payload.to
|
|
322
|
-
) : await this.handler.getFees();
|
|
305
|
+
const res = message.payload ? await this.handler.getFees(message.payload.from, message.payload.to) : await this.handler.getFees();
|
|
323
306
|
return this.tagged({ id, type: "FEES", payload: res });
|
|
324
307
|
}
|
|
325
308
|
case "GET_LIMITS": {
|
|
326
|
-
const res = message.payload ? await this.handler.getLimits(
|
|
327
|
-
message.payload.from,
|
|
328
|
-
message.payload.to
|
|
329
|
-
) : await this.handler.getLimits();
|
|
309
|
+
const res = message.payload ? await this.handler.getLimits(message.payload.from, message.payload.to) : await this.handler.getLimits();
|
|
330
310
|
return this.tagged({ id, type: "LIMITS", payload: res });
|
|
331
311
|
}
|
|
332
312
|
case "GET_SWAP_STATUS": {
|
|
333
|
-
const res = await this.handler.getSwapStatus(
|
|
334
|
-
message.payload.swapId
|
|
335
|
-
);
|
|
313
|
+
const res = await this.handler.getSwapStatus(message.payload.swapId);
|
|
336
314
|
return this.tagged({
|
|
337
315
|
id,
|
|
338
316
|
type: "SWAP_STATUS",
|
|
@@ -391,9 +369,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
391
369
|
});
|
|
392
370
|
}
|
|
393
371
|
case "CREATE_CHAIN_SWAP": {
|
|
394
|
-
const res = await this.handler.createChainSwap(
|
|
395
|
-
message.payload
|
|
396
|
-
);
|
|
372
|
+
const res = await this.handler.createChainSwap(message.payload);
|
|
397
373
|
return this.tagged({
|
|
398
374
|
id,
|
|
399
375
|
type: "CHAIN_SWAP_CREATED",
|
|
@@ -401,9 +377,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
401
377
|
});
|
|
402
378
|
}
|
|
403
379
|
case "WAIT_AND_CLAIM_CHAIN": {
|
|
404
|
-
const res = await this.handler.waitAndClaimChain(
|
|
405
|
-
message.payload
|
|
406
|
-
);
|
|
380
|
+
const res = await this.handler.waitAndClaimChain(message.payload);
|
|
407
381
|
return this.tagged({
|
|
408
382
|
id,
|
|
409
383
|
type: "CHAIN_CLAIMED",
|
|
@@ -411,9 +385,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
411
385
|
});
|
|
412
386
|
}
|
|
413
387
|
case "WAIT_AND_CLAIM_ARK": {
|
|
414
|
-
const res = await this.handler.waitAndClaimArk(
|
|
415
|
-
message.payload
|
|
416
|
-
);
|
|
388
|
+
const res = await this.handler.waitAndClaimArk(message.payload);
|
|
417
389
|
return this.tagged({
|
|
418
390
|
id,
|
|
419
391
|
type: "ARK_CLAIMED",
|
|
@@ -421,9 +393,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
421
393
|
});
|
|
422
394
|
}
|
|
423
395
|
case "WAIT_AND_CLAIM_BTC": {
|
|
424
|
-
const res = await this.handler.waitAndClaimBtc(
|
|
425
|
-
message.payload
|
|
426
|
-
);
|
|
396
|
+
const res = await this.handler.waitAndClaimBtc(message.payload);
|
|
427
397
|
return this.tagged({
|
|
428
398
|
id,
|
|
429
399
|
type: "BTC_CLAIMED",
|
|
@@ -436,13 +406,16 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
436
406
|
case "CLAIM_BTC":
|
|
437
407
|
await this.handler.claimBtc(message.payload);
|
|
438
408
|
return this.tagged({ id, type: "BTC_CLAIM_EXECUTED" });
|
|
439
|
-
case "REFUND_ARK":
|
|
440
|
-
await this.handler.refundArk(message.payload);
|
|
441
|
-
return this.tagged({
|
|
409
|
+
case "REFUND_ARK": {
|
|
410
|
+
const outcome = await this.handler.refundArk(message.payload);
|
|
411
|
+
return this.tagged({
|
|
412
|
+
id,
|
|
413
|
+
type: "ARK_REFUND_EXECUTED",
|
|
414
|
+
payload: outcome
|
|
415
|
+
});
|
|
416
|
+
}
|
|
442
417
|
case "SIGN_SERVER_CLAIM":
|
|
443
|
-
await this.handler.signCooperativeClaimForServer(
|
|
444
|
-
message.payload
|
|
445
|
-
);
|
|
418
|
+
await this.handler.signCooperativeClaimForServer(message.payload);
|
|
446
419
|
return this.tagged({ id, type: "SERVER_CLAIM_SIGNED" });
|
|
447
420
|
case "VERIFY_CHAIN_SWAP": {
|
|
448
421
|
const verified = await this.handler.verifyChainSwap({
|
|
@@ -455,14 +428,47 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
455
428
|
});
|
|
456
429
|
}
|
|
457
430
|
case "QUOTE_SWAP": {
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
431
|
+
try {
|
|
432
|
+
const amount = await this.handler.quoteSwap(
|
|
433
|
+
message.payload.swapId,
|
|
434
|
+
message.payload.options
|
|
435
|
+
);
|
|
436
|
+
return this.tagged({
|
|
437
|
+
id,
|
|
438
|
+
type: "SWAP_QUOTED",
|
|
439
|
+
payload: { amount }
|
|
440
|
+
});
|
|
441
|
+
} catch (e) {
|
|
442
|
+
throw toQuoteTransportError(e);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
case "GET_SWAP_QUOTE": {
|
|
446
|
+
try {
|
|
447
|
+
const amount = await this.handler.getSwapQuote(message.payload.swapId);
|
|
448
|
+
return this.tagged({
|
|
449
|
+
id,
|
|
450
|
+
type: "SWAP_QUOTE_RETRIEVED",
|
|
451
|
+
payload: { amount }
|
|
452
|
+
});
|
|
453
|
+
} catch (e) {
|
|
454
|
+
throw toQuoteTransportError(e);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
case "ACCEPT_SWAP_QUOTE": {
|
|
458
|
+
try {
|
|
459
|
+
const amount = await this.handler.acceptSwapQuote(
|
|
460
|
+
message.payload.swapId,
|
|
461
|
+
message.payload.amount,
|
|
462
|
+
message.payload.options
|
|
463
|
+
);
|
|
464
|
+
return this.tagged({
|
|
465
|
+
id,
|
|
466
|
+
type: "SWAP_QUOTE_ACCEPTED",
|
|
467
|
+
payload: { amount }
|
|
468
|
+
});
|
|
469
|
+
} catch (e) {
|
|
470
|
+
throw toQuoteTransportError(e);
|
|
471
|
+
}
|
|
466
472
|
}
|
|
467
473
|
/* --- SwapManager methods --- */
|
|
468
474
|
case "SM-START": {
|
|
@@ -478,9 +484,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
478
484
|
return this.tagged({ id, type: "SM-SWAP_ADDED" });
|
|
479
485
|
}
|
|
480
486
|
case "SM-REMOVE_SWAP": {
|
|
481
|
-
await this.getSwapManagerOrThrow().removeSwap(
|
|
482
|
-
message.payload.swapId
|
|
483
|
-
);
|
|
487
|
+
await this.getSwapManagerOrThrow().removeSwap(message.payload.swapId);
|
|
484
488
|
return this.tagged({ id, type: "SM-SWAP_REMOVED" });
|
|
485
489
|
}
|
|
486
490
|
case "SM-GET_PENDING_SWAPS": {
|
|
@@ -492,9 +496,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
492
496
|
});
|
|
493
497
|
}
|
|
494
498
|
case "SM-HAS_SWAP": {
|
|
495
|
-
const has = await this.getSwapManagerOrThrow().hasSwap(
|
|
496
|
-
message.payload.swapId
|
|
497
|
-
);
|
|
499
|
+
const has = await this.getSwapManagerOrThrow().hasSwap(message.payload.swapId);
|
|
498
500
|
return this.tagged({
|
|
499
501
|
id,
|
|
500
502
|
type: "SM-HAS_SWAP_RESULT",
|
|
@@ -608,6 +610,7 @@ var ArkadeSwapsMessageHandler = class _ArkadeSwapsMessageHandler {
|
|
|
608
610
|
|
|
609
611
|
// src/serviceWorker/arkade-swaps-runtime.ts
|
|
610
612
|
import {
|
|
613
|
+
getRandomId,
|
|
611
614
|
MESSAGE_BUS_NOT_INITIALIZED,
|
|
612
615
|
ServiceWorkerTimeoutError
|
|
613
616
|
} from "@arkade-os/sdk";
|
|
@@ -617,6 +620,11 @@ function isMessageBusNotInitializedError(error) {
|
|
|
617
620
|
function isHandlerNotInitializedError(error) {
|
|
618
621
|
return error instanceof Error && error.message.includes(HANDLER_NOT_INITIALIZED);
|
|
619
622
|
}
|
|
623
|
+
function rethrowIfQuoteRejected(error) {
|
|
624
|
+
if (error instanceof QuoteRejectedError) throw error;
|
|
625
|
+
const rebuilt = QuoteRejectedError.fromTransportError(error);
|
|
626
|
+
if (rebuilt) throw rebuilt;
|
|
627
|
+
}
|
|
620
628
|
var DEFAULT_MESSAGE_TIMEOUT_MS = 3e4;
|
|
621
629
|
var NO_MESSAGE_TIMEOUT_MS = 0;
|
|
622
630
|
var DEDUPABLE_REQUEST_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -1084,12 +1092,13 @@ var ServiceWorkerArkadeSwaps = class _ServiceWorkerArkadeSwaps {
|
|
|
1084
1092
|
});
|
|
1085
1093
|
}
|
|
1086
1094
|
async refundArk(pendingSwap) {
|
|
1087
|
-
await this.sendMessage({
|
|
1095
|
+
const res = await this.sendMessage({
|
|
1088
1096
|
id: getRandomId(),
|
|
1089
1097
|
tag: this.messageTag,
|
|
1090
1098
|
type: "REFUND_ARK",
|
|
1091
1099
|
payload: pendingSwap
|
|
1092
1100
|
});
|
|
1101
|
+
return res.payload;
|
|
1093
1102
|
}
|
|
1094
1103
|
async signCooperativeClaimForServer(pendingSwap) {
|
|
1095
1104
|
await this.sendMessage({
|
|
@@ -1117,19 +1126,48 @@ var ServiceWorkerArkadeSwaps = class _ServiceWorkerArkadeSwaps {
|
|
|
1117
1126
|
throw new Error("Cannot verify chain swap", { cause: e });
|
|
1118
1127
|
}
|
|
1119
1128
|
}
|
|
1120
|
-
async quoteSwap(swapId) {
|
|
1129
|
+
async quoteSwap(swapId, options) {
|
|
1121
1130
|
try {
|
|
1122
1131
|
const res = await this.sendMessage({
|
|
1123
1132
|
id: getRandomId(),
|
|
1124
1133
|
tag: this.messageTag,
|
|
1125
1134
|
type: "QUOTE_SWAP",
|
|
1126
|
-
payload: { swapId }
|
|
1135
|
+
payload: { swapId, options }
|
|
1127
1136
|
});
|
|
1128
1137
|
return res.payload.amount;
|
|
1129
1138
|
} catch (e) {
|
|
1139
|
+
rethrowIfQuoteRejected(e);
|
|
1130
1140
|
throw new Error("Cannot quote swap", { cause: e });
|
|
1131
1141
|
}
|
|
1132
1142
|
}
|
|
1143
|
+
async getSwapQuote(swapId) {
|
|
1144
|
+
try {
|
|
1145
|
+
const res = await this.sendMessage({
|
|
1146
|
+
id: getRandomId(),
|
|
1147
|
+
tag: this.messageTag,
|
|
1148
|
+
type: "GET_SWAP_QUOTE",
|
|
1149
|
+
payload: { swapId }
|
|
1150
|
+
});
|
|
1151
|
+
return res.payload.amount;
|
|
1152
|
+
} catch (e) {
|
|
1153
|
+
rethrowIfQuoteRejected(e);
|
|
1154
|
+
throw new Error("Cannot get swap quote", { cause: e });
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
async acceptSwapQuote(swapId, amount, options) {
|
|
1158
|
+
try {
|
|
1159
|
+
const res = await this.sendMessage({
|
|
1160
|
+
id: getRandomId(),
|
|
1161
|
+
tag: this.messageTag,
|
|
1162
|
+
type: "ACCEPT_SWAP_QUOTE",
|
|
1163
|
+
payload: { swapId, amount, options }
|
|
1164
|
+
});
|
|
1165
|
+
return res.payload.amount;
|
|
1166
|
+
} catch (e) {
|
|
1167
|
+
rethrowIfQuoteRejected(e);
|
|
1168
|
+
throw new Error("Cannot accept swap quote", { cause: e });
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1133
1171
|
enrichReverseSwapPreimage(swap, preimage) {
|
|
1134
1172
|
return enrichReverseSwapPreimage(swap, preimage);
|
|
1135
1173
|
}
|
|
@@ -1137,9 +1175,7 @@ var ServiceWorkerArkadeSwaps = class _ServiceWorkerArkadeSwaps {
|
|
|
1137
1175
|
return enrichSubmarineSwapInvoice(swap, invoice);
|
|
1138
1176
|
}
|
|
1139
1177
|
createVHTLCScript(_args) {
|
|
1140
|
-
throw new Error(
|
|
1141
|
-
"createVHTLCScript is not supported via service worker"
|
|
1142
|
-
);
|
|
1178
|
+
throw new Error("createVHTLCScript is not supported via service worker");
|
|
1143
1179
|
}
|
|
1144
1180
|
async joinBatch(_identity, _input, _output, _arkInfo, _isRecoverable = true) {
|
|
1145
1181
|
throw new Error("joinBatch is not supported via service worker");
|
|
@@ -1269,10 +1305,7 @@ var ServiceWorkerArkadeSwaps = class _ServiceWorkerArkadeSwaps {
|
|
|
1269
1305
|
return new Promise((resolve, reject) => {
|
|
1270
1306
|
const cleanup = () => {
|
|
1271
1307
|
clearTimeout(timeoutId);
|
|
1272
|
-
navigator.serviceWorker.removeEventListener(
|
|
1273
|
-
"message",
|
|
1274
|
-
messageHandler
|
|
1275
|
-
);
|
|
1308
|
+
navigator.serviceWorker.removeEventListener("message", messageHandler);
|
|
1276
1309
|
};
|
|
1277
1310
|
const timeoutId = timeoutMs > 0 ? setTimeout(() => {
|
|
1278
1311
|
cleanup();
|
|
@@ -1317,18 +1350,11 @@ var ServiceWorkerArkadeSwaps = class _ServiceWorkerArkadeSwaps {
|
|
|
1317
1350
|
const pingId = getRandomId();
|
|
1318
1351
|
const cleanup = () => {
|
|
1319
1352
|
clearTimeout(timeoutId);
|
|
1320
|
-
navigator.serviceWorker.removeEventListener(
|
|
1321
|
-
"message",
|
|
1322
|
-
onMessage
|
|
1323
|
-
);
|
|
1353
|
+
navigator.serviceWorker.removeEventListener("message", onMessage);
|
|
1324
1354
|
};
|
|
1325
1355
|
const timeoutId = setTimeout(() => {
|
|
1326
1356
|
cleanup();
|
|
1327
|
-
reject(
|
|
1328
|
-
new ServiceWorkerTimeoutError(
|
|
1329
|
-
"Service worker ping timed out"
|
|
1330
|
-
)
|
|
1331
|
-
);
|
|
1357
|
+
reject(new ServiceWorkerTimeoutError("Service worker ping timed out"));
|
|
1332
1358
|
}, 2e3);
|
|
1333
1359
|
const onMessage = (event) => {
|
|
1334
1360
|
if (event.data?.id === pingId && event.data?.tag === "PONG") {
|
|
@@ -1356,9 +1382,7 @@ var ServiceWorkerArkadeSwaps = class _ServiceWorkerArkadeSwaps {
|
|
|
1356
1382
|
await this.reinitialize();
|
|
1357
1383
|
}
|
|
1358
1384
|
}
|
|
1359
|
-
const timeoutMs = LONG_RUNNING_ARKADE_SWAPS_REQUEST_TYPES.has(
|
|
1360
|
-
request.type
|
|
1361
|
-
) ? NO_MESSAGE_TIMEOUT_MS : DEFAULT_MESSAGE_TIMEOUT_MS;
|
|
1385
|
+
const timeoutMs = LONG_RUNNING_ARKADE_SWAPS_REQUEST_TYPES.has(request.type) ? NO_MESSAGE_TIMEOUT_MS : DEFAULT_MESSAGE_TIMEOUT_MS;
|
|
1362
1386
|
const maxRetries = 2;
|
|
1363
1387
|
for (let attempt = 0; ; attempt++) {
|
|
1364
1388
|
try {
|
|
@@ -1384,10 +1408,7 @@ var ServiceWorkerArkadeSwaps = class _ServiceWorkerArkadeSwaps {
|
|
|
1384
1408
|
id: getRandomId(),
|
|
1385
1409
|
payload: this.initPayload
|
|
1386
1410
|
};
|
|
1387
|
-
await this.sendMessageDirect(
|
|
1388
|
-
initMessage,
|
|
1389
|
-
DEFAULT_MESSAGE_TIMEOUT_MS
|
|
1390
|
-
);
|
|
1411
|
+
await this.sendMessageDirect(initMessage, DEFAULT_MESSAGE_TIMEOUT_MS);
|
|
1391
1412
|
})().finally(() => {
|
|
1392
1413
|
this.reinitPromise = null;
|
|
1393
1414
|
});
|
|
@@ -1396,10 +1417,7 @@ var ServiceWorkerArkadeSwaps = class _ServiceWorkerArkadeSwaps {
|
|
|
1396
1417
|
initEventStream() {
|
|
1397
1418
|
if (this.eventListenerInitialized) return;
|
|
1398
1419
|
this.eventListenerInitialized = true;
|
|
1399
|
-
navigator.serviceWorker.addEventListener(
|
|
1400
|
-
"message",
|
|
1401
|
-
this.handleEventMessage
|
|
1402
|
-
);
|
|
1420
|
+
navigator.serviceWorker.addEventListener("message", this.handleEventMessage);
|
|
1403
1421
|
}
|
|
1404
1422
|
handleEventMessage = (event) => {
|
|
1405
1423
|
const data = event.data;
|
|
@@ -1446,9 +1464,6 @@ var ServiceWorkerArkadeSwaps = class _ServiceWorkerArkadeSwaps {
|
|
|
1446
1464
|
}
|
|
1447
1465
|
};
|
|
1448
1466
|
};
|
|
1449
|
-
function getRandomId() {
|
|
1450
|
-
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
|
|
1451
|
-
}
|
|
1452
1467
|
|
|
1453
1468
|
// src/repositories/migrationFromContracts.ts
|
|
1454
1469
|
var MIGRATION_KEY = "migration-from-storage-adapter-swaps";
|
|
@@ -1458,8 +1473,14 @@ async function migrateToSwapRepository(storageAdapter, fresh) {
|
|
|
1458
1473
|
if (migration === "done") {
|
|
1459
1474
|
return false;
|
|
1460
1475
|
}
|
|
1461
|
-
const reverseSwaps = await getContractCollection(
|
|
1462
|
-
|
|
1476
|
+
const reverseSwaps = await getContractCollection(
|
|
1477
|
+
storageAdapter,
|
|
1478
|
+
"reverseSwaps"
|
|
1479
|
+
);
|
|
1480
|
+
const submarineSwaps = await getContractCollection(
|
|
1481
|
+
storageAdapter,
|
|
1482
|
+
"submarineSwaps"
|
|
1483
|
+
);
|
|
1463
1484
|
for (const swap of reverseSwaps) {
|
|
1464
1485
|
await fresh.saveSwap(swap);
|
|
1465
1486
|
}
|
|
@@ -1469,9 +1490,7 @@ async function migrateToSwapRepository(storageAdapter, fresh) {
|
|
|
1469
1490
|
await storageAdapter.setItem(MIGRATION_KEY, "done");
|
|
1470
1491
|
return true;
|
|
1471
1492
|
} catch (error) {
|
|
1472
|
-
if (error instanceof Error && error.message.includes(
|
|
1473
|
-
"One of the specified object stores was not found."
|
|
1474
|
-
)) {
|
|
1493
|
+
if (error instanceof Error && error.message.includes("One of the specified object stores was not found.")) {
|
|
1475
1494
|
return false;
|
|
1476
1495
|
}
|
|
1477
1496
|
throw error;
|
|
@@ -1489,18 +1508,44 @@ async function getContractCollection(storage, contractType) {
|
|
|
1489
1508
|
);
|
|
1490
1509
|
}
|
|
1491
1510
|
}
|
|
1511
|
+
|
|
1512
|
+
// src/repositories/inMemory/swap-repository.ts
|
|
1513
|
+
var InMemorySwapRepository = class {
|
|
1514
|
+
version = 1;
|
|
1515
|
+
swaps = /* @__PURE__ */ new Map();
|
|
1516
|
+
async saveSwap(swap) {
|
|
1517
|
+
this.swaps.set(swap.id, swap);
|
|
1518
|
+
}
|
|
1519
|
+
async deleteSwap(id) {
|
|
1520
|
+
this.swaps.delete(id);
|
|
1521
|
+
}
|
|
1522
|
+
async getAllSwaps(filter) {
|
|
1523
|
+
const swaps = [...this.swaps.values()];
|
|
1524
|
+
if (!filter || Object.keys(filter).length === 0) return swaps;
|
|
1525
|
+
const filtered = applySwapsFilter(swaps, filter);
|
|
1526
|
+
return applyCreatedAtOrder(filtered, filter);
|
|
1527
|
+
}
|
|
1528
|
+
async clear() {
|
|
1529
|
+
this.swaps.clear();
|
|
1530
|
+
}
|
|
1531
|
+
async [Symbol.asyncDispose]() {
|
|
1532
|
+
await this.clear();
|
|
1533
|
+
}
|
|
1534
|
+
};
|
|
1492
1535
|
export {
|
|
1493
1536
|
ArkadeSwapsMessageHandler as ArkadeLightningMessageHandler,
|
|
1494
1537
|
ArkadeSwaps,
|
|
1495
1538
|
ArkadeSwapsMessageHandler,
|
|
1496
1539
|
BoltzRefundError,
|
|
1497
1540
|
BoltzSwapProvider,
|
|
1541
|
+
InMemorySwapRepository,
|
|
1498
1542
|
IndexedDbSwapRepository,
|
|
1499
1543
|
InsufficientFundsError,
|
|
1500
1544
|
InvoiceExpiredError,
|
|
1501
1545
|
InvoiceFailedToPayError,
|
|
1502
1546
|
NetworkError,
|
|
1503
1547
|
PreimageFetchError,
|
|
1548
|
+
QuoteRejectedError,
|
|
1504
1549
|
SchemaError,
|
|
1505
1550
|
ServiceWorkerArkadeSwaps as ServiceWorkerArkadeLightning,
|
|
1506
1551
|
ServiceWorkerArkadeSwaps,
|
|
@@ -26,9 +26,14 @@ __export(realm_exports, {
|
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(realm_exports);
|
|
28
28
|
|
|
29
|
+
// src/repositories/swap-repository.ts
|
|
30
|
+
function hasImpossibleSwapsFilter(filter) {
|
|
31
|
+
if (!filter) return false;
|
|
32
|
+
return Array.isArray(filter.id) && filter.id.length === 0 || Array.isArray(filter.status) && filter.status.length === 0 || Array.isArray(filter.type) && filter.type.length === 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
29
35
|
// src/repositories/realm/swap-repository.ts
|
|
30
36
|
var RealmSwapRepository = class {
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
37
|
constructor(realm) {
|
|
33
38
|
this.realm = realm;
|
|
34
39
|
}
|
|
@@ -66,21 +71,13 @@ var RealmSwapRepository = class {
|
|
|
66
71
|
}
|
|
67
72
|
async getAllSwaps(filter) {
|
|
68
73
|
await this.ensureInit();
|
|
69
|
-
if (
|
|
70
|
-
return [];
|
|
71
|
-
}
|
|
74
|
+
if (hasImpossibleSwapsFilter(filter)) return [];
|
|
72
75
|
let results = this.realm.objects("BoltzSwap");
|
|
73
76
|
if (filter) {
|
|
74
77
|
const filterParts = [];
|
|
75
78
|
const filterArgs = [];
|
|
76
79
|
let argIndex = 0;
|
|
77
|
-
argIndex = this.addFilterCondition(
|
|
78
|
-
filterParts,
|
|
79
|
-
filterArgs,
|
|
80
|
-
"id",
|
|
81
|
-
filter.id,
|
|
82
|
-
argIndex
|
|
83
|
-
);
|
|
80
|
+
argIndex = this.addFilterCondition(filterParts, filterArgs, "id", filter.id, argIndex);
|
|
84
81
|
argIndex = this.addFilterCondition(
|
|
85
82
|
filterParts,
|
|
86
83
|
filterArgs,
|
|
@@ -88,13 +85,7 @@ var RealmSwapRepository = class {
|
|
|
88
85
|
filter.status,
|
|
89
86
|
argIndex
|
|
90
87
|
);
|
|
91
|
-
this.addFilterCondition(
|
|
92
|
-
filterParts,
|
|
93
|
-
filterArgs,
|
|
94
|
-
"type",
|
|
95
|
-
filter.type,
|
|
96
|
-
argIndex
|
|
97
|
-
);
|
|
88
|
+
this.addFilterCondition(filterParts, filterArgs, "type", filter.type, argIndex);
|
|
98
89
|
if (filterParts.length > 0) {
|
|
99
90
|
const query = filterParts.join(" AND ");
|
|
100
91
|
results = results.filtered(query, ...filterArgs);
|
|
@@ -104,10 +95,7 @@ var RealmSwapRepository = class {
|
|
|
104
95
|
const reverse = filter.orderDirection === "desc";
|
|
105
96
|
results = results.sorted("createdAt", reverse);
|
|
106
97
|
}
|
|
107
|
-
return [...results].map(
|
|
108
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
109
|
-
(obj) => JSON.parse(obj.data)
|
|
110
|
-
);
|
|
98
|
+
return [...results].map((obj) => JSON.parse(obj.data));
|
|
111
99
|
}
|
|
112
100
|
async clear() {
|
|
113
101
|
await this.ensureInit();
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RealmLike } from '@arkade-os/sdk/repositories/realm';
|
|
2
|
+
import { n as SwapRepository, B as BoltzSwap, p as GetSwapsFilter } from '../../types--axEWA8c.cjs';
|
|
2
3
|
import '@arkade-os/sdk';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Realm-based implementation of SwapRepository.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* the
|
|
8
|
+
* `realm` is a peer dependency and not installed in this package; consumers
|
|
9
|
+
* open Realm with the schemas from `./schemas.ts` and pass the instance to
|
|
10
|
+
* the constructor, where it is validated against the shared `RealmLike`
|
|
11
|
+
* shape exported by `@arkade-os/sdk`.
|
|
10
12
|
*
|
|
11
13
|
* Realm handles schema creation on open, so `ensureInit()` is a no-op.
|
|
12
14
|
* The consumer owns the Realm lifecycle — `[Symbol.asyncDispose]` is a no-op.
|
|
@@ -14,7 +16,7 @@ import '@arkade-os/sdk';
|
|
|
14
16
|
declare class RealmSwapRepository implements SwapRepository {
|
|
15
17
|
private readonly realm;
|
|
16
18
|
readonly version: 1;
|
|
17
|
-
constructor(realm:
|
|
19
|
+
constructor(realm: RealmLike);
|
|
18
20
|
private ensureInit;
|
|
19
21
|
[Symbol.asyncDispose](): Promise<void>;
|
|
20
22
|
saveSwap<T extends BoltzSwap>(swap: T): Promise<void>;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RealmLike } from '@arkade-os/sdk/repositories/realm';
|
|
2
|
+
import { n as SwapRepository, B as BoltzSwap, p as GetSwapsFilter } from '../../types--axEWA8c.js';
|
|
2
3
|
import '@arkade-os/sdk';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Realm-based implementation of SwapRepository.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* the
|
|
8
|
+
* `realm` is a peer dependency and not installed in this package; consumers
|
|
9
|
+
* open Realm with the schemas from `./schemas.ts` and pass the instance to
|
|
10
|
+
* the constructor, where it is validated against the shared `RealmLike`
|
|
11
|
+
* shape exported by `@arkade-os/sdk`.
|
|
10
12
|
*
|
|
11
13
|
* Realm handles schema creation on open, so `ensureInit()` is a no-op.
|
|
12
14
|
* The consumer owns the Realm lifecycle — `[Symbol.asyncDispose]` is a no-op.
|
|
@@ -14,7 +16,7 @@ import '@arkade-os/sdk';
|
|
|
14
16
|
declare class RealmSwapRepository implements SwapRepository {
|
|
15
17
|
private readonly realm;
|
|
16
18
|
readonly version: 1;
|
|
17
|
-
constructor(realm:
|
|
19
|
+
constructor(realm: RealmLike);
|
|
18
20
|
private ensureInit;
|
|
19
21
|
[Symbol.asyncDispose](): Promise<void>;
|
|
20
22
|
saveSwap<T extends BoltzSwap>(swap: T): Promise<void>;
|