@buildonspark/spark-sdk 0.3.7 → 0.3.9
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 +15 -0
- package/dist/bare/index.cjs +8088 -7723
- package/dist/bare/index.d.cts +350 -262
- package/dist/bare/index.d.ts +350 -262
- package/dist/bare/index.js +7968 -7608
- package/dist/{chunk-J2P3KTQP.js → chunk-4YFT7DAE.js} +1 -1
- package/dist/{chunk-XWLR6G5C.js → chunk-JLF6WJ7K.js} +1 -1
- package/dist/{chunk-UYTT3C6H.js → chunk-MFCM6GUD.js} +40 -213
- package/dist/{chunk-KDEVNW7C.js → chunk-O4C4HGQL.js} +3391 -3292
- package/dist/{chunk-SRPKOCG4.js → chunk-S55NZT4P.js} +8 -10
- package/dist/{chunk-P4HYYSMU.js → chunk-WRE2T22S.js} +1 -1
- package/dist/{chunk-IC4IUEOS.js → chunk-YEBEN7XD.js} +309 -38
- package/dist/{client-Bcb7TUIp.d.cts → client-BIqiUNy4.d.cts} +2 -2
- package/dist/{client-D9T58OY8.d.ts → client-BaQf-5gD.d.ts} +2 -2
- package/dist/debug.cjs +8068 -7704
- package/dist/debug.d.cts +25 -18
- package/dist/debug.d.ts +25 -18
- package/dist/debug.js +5 -5
- package/dist/graphql/objects/index.d.cts +3 -3
- package/dist/graphql/objects/index.d.ts +3 -3
- package/dist/index.cjs +6871 -6501
- package/dist/index.d.cts +9 -8
- package/dist/index.d.ts +9 -8
- package/dist/index.js +36 -24
- package/dist/index.node.cjs +7102 -6903
- package/dist/index.node.d.cts +9 -8
- package/dist/index.node.d.ts +9 -8
- package/dist/index.node.js +35 -23
- package/dist/{logging-zkr4UlOi.d.cts → logging-CXhvuqJJ.d.cts} +45 -35
- package/dist/{logging-JIaZZIbR.d.ts → logging-DDeMLsVN.d.ts} +45 -35
- package/dist/native/{chunk-X2QXUON7.js → chunk-AFP5QR4O.js} +11 -8
- package/dist/native/index.react-native.cjs +7054 -6677
- package/dist/native/index.react-native.d.cts +180 -92
- package/dist/native/index.react-native.d.ts +180 -92
- package/dist/native/index.react-native.js +6760 -6393
- package/dist/native/{wasm-GKEDPGTM.js → wasm-D4TI35NF.js} +1 -1
- package/dist/proto/spark.cjs +309 -38
- package/dist/proto/spark.d.cts +1 -1
- package/dist/proto/spark.d.ts +1 -1
- package/dist/proto/spark.js +5 -1
- package/dist/proto/spark_token.d.cts +1 -1
- package/dist/proto/spark_token.d.ts +1 -1
- package/dist/proto/spark_token.js +2 -2
- package/dist/{spark-WA_4wcBr.d.cts → spark-DOpheE8_.d.cts} +69 -7
- package/dist/{spark-WA_4wcBr.d.ts → spark-DOpheE8_.d.ts} +69 -7
- package/dist/{spark-wallet.browser-DC3jdQPW.d.cts → spark-wallet.browser-CbYo8A_U.d.cts} +8 -8
- package/dist/{spark-wallet.browser-BwYkkOBU.d.ts → spark-wallet.browser-Cz8c4kOW.d.ts} +8 -8
- package/dist/{spark-wallet.node-CR_zNxmy.d.cts → spark-wallet.node-4WQgWwB2.d.cts} +9 -31
- package/dist/{spark-wallet.node-C9d2W-Nb.d.ts → spark-wallet.node-CmIvxtcC.d.ts} +9 -31
- package/dist/tests/test-utils.cjs +7341 -7065
- package/dist/tests/test-utils.d.cts +7 -5
- package/dist/tests/test-utils.d.ts +7 -5
- package/dist/tests/test-utils.js +7 -7
- package/dist/{token-transactions-BZoJuvuE.d.ts → token-transactions-Bu023ztN.d.ts} +2 -2
- package/dist/{token-transactions-I_OFIoNH.d.cts → token-transactions-CV8QD3I7.d.cts} +2 -2
- package/dist/types/index.cjs +307 -38
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +2 -2
- package/dist/{spark-wallet-CE5PYiIb.d.ts → wallet-config-Bmk2eAn8.d.ts} +310 -287
- package/dist/{spark-wallet-BuFrUWeE.d.cts → wallet-config-DQw5llqA.d.cts} +310 -287
- package/package.json +3 -3
- package/src/proto/mock.ts +0 -264
- package/src/proto/spark.ts +433 -46
- package/src/services/config.ts +5 -0
- package/src/services/connection/connection.browser.ts +27 -19
- package/src/services/connection/connection.node.ts +79 -24
- package/src/services/connection/connection.ts +395 -233
- package/src/services/coop-exit.ts +26 -107
- package/src/services/deposit.ts +12 -48
- package/src/services/lightning.ts +30 -4
- package/src/services/signing.ts +187 -37
- package/src/services/transfer.ts +553 -723
- package/src/services/wallet-config.ts +6 -0
- package/src/spark-wallet/proto-descriptors.ts +1 -1
- package/src/spark-wallet/spark-wallet.ts +132 -313
- package/src/spark-wallet/types.ts +2 -2
- package/src/spark_descriptors.pb +0 -0
- package/src/tests/connection.test.ts +537 -0
- package/src/tests/integration/connection.test.ts +39 -0
- package/src/tests/integration/lightning.test.ts +32 -16
- package/src/tests/integration/static_deposit.test.ts +13 -11
- package/src/tests/integration/transfer.test.ts +13 -1
- package/src/tests/isHermeticTest.ts +1 -1
- package/src/tests/utils/test-faucet.ts +53 -20
- package/src/utils/htlc-transactions.ts +224 -0
- package/src/utils/transaction.ts +285 -248
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
NetworkError,
|
|
4
4
|
SparkWallet,
|
|
5
5
|
clientEnv
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-O4C4HGQL.js";
|
|
7
7
|
import {
|
|
8
8
|
Empty
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-YEBEN7XD.js";
|
|
10
10
|
|
|
11
11
|
// src/services/connection/connection.node.ts
|
|
12
12
|
import {
|
|
@@ -19,66 +19,6 @@ import { Metadata } from "nice-grpc-common";
|
|
|
19
19
|
|
|
20
20
|
// src/proto/mock.ts
|
|
21
21
|
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
22
|
-
function interruptTransferRequest_InterruptTransferActionFromJSON(object) {
|
|
23
|
-
switch (object) {
|
|
24
|
-
case 0:
|
|
25
|
-
case "NONE":
|
|
26
|
-
return 0 /* NONE */;
|
|
27
|
-
case 1:
|
|
28
|
-
case "INTERRUPT":
|
|
29
|
-
return 1 /* INTERRUPT */;
|
|
30
|
-
case 2:
|
|
31
|
-
case "RESUME":
|
|
32
|
-
return 2 /* RESUME */;
|
|
33
|
-
case -1:
|
|
34
|
-
case "UNRECOGNIZED":
|
|
35
|
-
default:
|
|
36
|
-
return -1 /* UNRECOGNIZED */;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function interruptTransferRequest_InterruptTransferActionToJSON(object) {
|
|
40
|
-
switch (object) {
|
|
41
|
-
case 0 /* NONE */:
|
|
42
|
-
return "NONE";
|
|
43
|
-
case 1 /* INTERRUPT */:
|
|
44
|
-
return "INTERRUPT";
|
|
45
|
-
case 2 /* RESUME */:
|
|
46
|
-
return "RESUME";
|
|
47
|
-
case -1 /* UNRECOGNIZED */:
|
|
48
|
-
default:
|
|
49
|
-
return "UNRECOGNIZED";
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function interruptCoopExitRequest_InterruptCoopExitActionFromJSON(object) {
|
|
53
|
-
switch (object) {
|
|
54
|
-
case 0:
|
|
55
|
-
case "NONE":
|
|
56
|
-
return 0 /* NONE */;
|
|
57
|
-
case 1:
|
|
58
|
-
case "INTERRUPT":
|
|
59
|
-
return 1 /* INTERRUPT */;
|
|
60
|
-
case 2:
|
|
61
|
-
case "RESUME":
|
|
62
|
-
return 2 /* RESUME */;
|
|
63
|
-
case -1:
|
|
64
|
-
case "UNRECOGNIZED":
|
|
65
|
-
default:
|
|
66
|
-
return -1 /* UNRECOGNIZED */;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
function interruptCoopExitRequest_InterruptCoopExitActionToJSON(object) {
|
|
70
|
-
switch (object) {
|
|
71
|
-
case 0 /* NONE */:
|
|
72
|
-
return "NONE";
|
|
73
|
-
case 1 /* INTERRUPT */:
|
|
74
|
-
return "INTERRUPT";
|
|
75
|
-
case 2 /* RESUME */:
|
|
76
|
-
return "RESUME";
|
|
77
|
-
case -1 /* UNRECOGNIZED */:
|
|
78
|
-
default:
|
|
79
|
-
return "UNRECOGNIZED";
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
22
|
function createBaseCleanUpPreimageShareRequest() {
|
|
83
23
|
return { paymentHash: new Uint8Array(0) };
|
|
84
24
|
}
|
|
@@ -130,59 +70,6 @@ var CleanUpPreimageShareRequest = {
|
|
|
130
70
|
return message;
|
|
131
71
|
}
|
|
132
72
|
};
|
|
133
|
-
function createBaseInterruptTransferRequest() {
|
|
134
|
-
return { action: 0 };
|
|
135
|
-
}
|
|
136
|
-
var InterruptTransferRequest = {
|
|
137
|
-
encode(message, writer = new BinaryWriter()) {
|
|
138
|
-
if (message.action !== 0) {
|
|
139
|
-
writer.uint32(8).int32(message.action);
|
|
140
|
-
}
|
|
141
|
-
return writer;
|
|
142
|
-
},
|
|
143
|
-
decode(input, length) {
|
|
144
|
-
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
145
|
-
const end = length === void 0 ? reader.len : reader.pos + length;
|
|
146
|
-
const message = createBaseInterruptTransferRequest();
|
|
147
|
-
while (reader.pos < end) {
|
|
148
|
-
const tag = reader.uint32();
|
|
149
|
-
switch (tag >>> 3) {
|
|
150
|
-
case 1: {
|
|
151
|
-
if (tag !== 8) {
|
|
152
|
-
break;
|
|
153
|
-
}
|
|
154
|
-
message.action = reader.int32();
|
|
155
|
-
continue;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
if ((tag & 7) === 4 || tag === 0) {
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
reader.skip(tag & 7);
|
|
162
|
-
}
|
|
163
|
-
return message;
|
|
164
|
-
},
|
|
165
|
-
fromJSON(object) {
|
|
166
|
-
return {
|
|
167
|
-
action: isSet(object.action) ? interruptTransferRequest_InterruptTransferActionFromJSON(object.action) : 0
|
|
168
|
-
};
|
|
169
|
-
},
|
|
170
|
-
toJSON(message) {
|
|
171
|
-
const obj = {};
|
|
172
|
-
if (message.action !== 0) {
|
|
173
|
-
obj.action = interruptTransferRequest_InterruptTransferActionToJSON(message.action);
|
|
174
|
-
}
|
|
175
|
-
return obj;
|
|
176
|
-
},
|
|
177
|
-
create(base) {
|
|
178
|
-
return InterruptTransferRequest.fromPartial(base ?? {});
|
|
179
|
-
},
|
|
180
|
-
fromPartial(object) {
|
|
181
|
-
const message = createBaseInterruptTransferRequest();
|
|
182
|
-
message.action = object.action ?? 0;
|
|
183
|
-
return message;
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
73
|
function createBaseUpdateNodesStatusRequest() {
|
|
187
74
|
return { nodeIds: [], status: "" };
|
|
188
75
|
}
|
|
@@ -302,74 +189,6 @@ var TriggerTaskRequest = {
|
|
|
302
189
|
return message;
|
|
303
190
|
}
|
|
304
191
|
};
|
|
305
|
-
function createBaseInterruptCoopExitRequest() {
|
|
306
|
-
return { action: 0, targetOperator: "" };
|
|
307
|
-
}
|
|
308
|
-
var InterruptCoopExitRequest = {
|
|
309
|
-
encode(message, writer = new BinaryWriter()) {
|
|
310
|
-
if (message.action !== 0) {
|
|
311
|
-
writer.uint32(8).int32(message.action);
|
|
312
|
-
}
|
|
313
|
-
if (message.targetOperator !== "") {
|
|
314
|
-
writer.uint32(18).string(message.targetOperator);
|
|
315
|
-
}
|
|
316
|
-
return writer;
|
|
317
|
-
},
|
|
318
|
-
decode(input, length) {
|
|
319
|
-
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
320
|
-
const end = length === void 0 ? reader.len : reader.pos + length;
|
|
321
|
-
const message = createBaseInterruptCoopExitRequest();
|
|
322
|
-
while (reader.pos < end) {
|
|
323
|
-
const tag = reader.uint32();
|
|
324
|
-
switch (tag >>> 3) {
|
|
325
|
-
case 1: {
|
|
326
|
-
if (tag !== 8) {
|
|
327
|
-
break;
|
|
328
|
-
}
|
|
329
|
-
message.action = reader.int32();
|
|
330
|
-
continue;
|
|
331
|
-
}
|
|
332
|
-
case 2: {
|
|
333
|
-
if (tag !== 18) {
|
|
334
|
-
break;
|
|
335
|
-
}
|
|
336
|
-
message.targetOperator = reader.string();
|
|
337
|
-
continue;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
if ((tag & 7) === 4 || tag === 0) {
|
|
341
|
-
break;
|
|
342
|
-
}
|
|
343
|
-
reader.skip(tag & 7);
|
|
344
|
-
}
|
|
345
|
-
return message;
|
|
346
|
-
},
|
|
347
|
-
fromJSON(object) {
|
|
348
|
-
return {
|
|
349
|
-
action: isSet(object.action) ? interruptCoopExitRequest_InterruptCoopExitActionFromJSON(object.action) : 0,
|
|
350
|
-
targetOperator: isSet(object.targetOperator) ? globalThis.String(object.targetOperator) : ""
|
|
351
|
-
};
|
|
352
|
-
},
|
|
353
|
-
toJSON(message) {
|
|
354
|
-
const obj = {};
|
|
355
|
-
if (message.action !== 0) {
|
|
356
|
-
obj.action = interruptCoopExitRequest_InterruptCoopExitActionToJSON(message.action);
|
|
357
|
-
}
|
|
358
|
-
if (message.targetOperator !== "") {
|
|
359
|
-
obj.targetOperator = message.targetOperator;
|
|
360
|
-
}
|
|
361
|
-
return obj;
|
|
362
|
-
},
|
|
363
|
-
create(base) {
|
|
364
|
-
return InterruptCoopExitRequest.fromPartial(base ?? {});
|
|
365
|
-
},
|
|
366
|
-
fromPartial(object) {
|
|
367
|
-
const message = createBaseInterruptCoopExitRequest();
|
|
368
|
-
message.action = object.action ?? 0;
|
|
369
|
-
message.targetOperator = object.targetOperator ?? "";
|
|
370
|
-
return message;
|
|
371
|
-
}
|
|
372
|
-
};
|
|
373
192
|
var MockServiceDefinition = {
|
|
374
193
|
name: "MockService",
|
|
375
194
|
fullName: "mock.MockService",
|
|
@@ -382,22 +201,6 @@ var MockServiceDefinition = {
|
|
|
382
201
|
responseStream: false,
|
|
383
202
|
options: {}
|
|
384
203
|
},
|
|
385
|
-
interrupt_transfer: {
|
|
386
|
-
name: "interrupt_transfer",
|
|
387
|
-
requestType: InterruptTransferRequest,
|
|
388
|
-
requestStream: false,
|
|
389
|
-
responseType: Empty,
|
|
390
|
-
responseStream: false,
|
|
391
|
-
options: {}
|
|
392
|
-
},
|
|
393
|
-
interrupt_coop_exit: {
|
|
394
|
-
name: "interrupt_coop_exit",
|
|
395
|
-
requestType: InterruptCoopExitRequest,
|
|
396
|
-
requestStream: false,
|
|
397
|
-
responseType: Empty,
|
|
398
|
-
responseStream: false,
|
|
399
|
-
options: {}
|
|
400
|
-
},
|
|
401
204
|
update_nodes_status: {
|
|
402
205
|
name: "update_nodes_status",
|
|
403
206
|
requestType: UpdateNodesStatusRequest,
|
|
@@ -449,19 +252,27 @@ import { openTelemetryClientMiddleware } from "nice-grpc-opentelemetry";
|
|
|
449
252
|
import { retryMiddleware } from "nice-grpc-client-middleware-retry";
|
|
450
253
|
import fs from "fs";
|
|
451
254
|
var ConnectionManagerNodeJS = class extends ConnectionManager {
|
|
255
|
+
certPath = null;
|
|
452
256
|
constructor(config) {
|
|
453
257
|
super(config);
|
|
454
258
|
}
|
|
455
259
|
async createMockClient(address) {
|
|
456
|
-
const
|
|
260
|
+
const key = this.makeChannelKey(address, false);
|
|
261
|
+
const channel = await ConnectionManager.acquireChannel(
|
|
262
|
+
key,
|
|
263
|
+
() => this.createChannelWithTLS(address, false)
|
|
264
|
+
);
|
|
457
265
|
const client = createClient(MockServiceDefinition, channel);
|
|
458
|
-
return {
|
|
266
|
+
return {
|
|
267
|
+
...client,
|
|
268
|
+
close: () => ConnectionManager.releaseChannel(key)
|
|
269
|
+
};
|
|
459
270
|
}
|
|
460
|
-
async createChannelWithTLS(address,
|
|
271
|
+
async createChannelWithTLS(address, isStreamClientType = false) {
|
|
461
272
|
try {
|
|
462
|
-
if (certPath) {
|
|
273
|
+
if (this.certPath) {
|
|
463
274
|
try {
|
|
464
|
-
const cert = fs.readFileSync(certPath);
|
|
275
|
+
const cert = fs.readFileSync(this.certPath);
|
|
465
276
|
return createChannel(address, ChannelCredentials.createSsl(cert));
|
|
466
277
|
} catch (error) {
|
|
467
278
|
console.error("Error reading certificate:", error);
|
|
@@ -473,12 +284,13 @@ var ConnectionManagerNodeJS = class extends ConnectionManager {
|
|
|
473
284
|
);
|
|
474
285
|
}
|
|
475
286
|
} else {
|
|
476
|
-
|
|
287
|
+
const ch = createChannel(
|
|
477
288
|
address,
|
|
478
289
|
ChannelCredentials.createSsl(null, null, null, {
|
|
479
290
|
rejectUnauthorized: false
|
|
480
291
|
})
|
|
481
292
|
);
|
|
293
|
+
return ch;
|
|
482
294
|
}
|
|
483
295
|
} catch (error) {
|
|
484
296
|
console.error("Channel creation error:", error);
|
|
@@ -506,19 +318,17 @@ var ConnectionManagerNodeJS = class extends ConnectionManager {
|
|
|
506
318
|
});
|
|
507
319
|
}.bind(this);
|
|
508
320
|
}
|
|
509
|
-
createMiddleware(address
|
|
321
|
+
createMiddleware(address) {
|
|
510
322
|
return async function* (call, options) {
|
|
511
323
|
const metadata = Metadata(options.metadata).set(
|
|
512
324
|
"X-Client-Env",
|
|
513
325
|
clientEnv
|
|
514
326
|
);
|
|
515
327
|
try {
|
|
328
|
+
const token = await this.authenticate(address);
|
|
516
329
|
return yield* call.next(call.request, {
|
|
517
330
|
...options,
|
|
518
|
-
metadata: metadata.set(
|
|
519
|
-
"Authorization",
|
|
520
|
-
`Bearer ${this.clients.get(address)?.authToken || initialAuthToken}`
|
|
521
|
-
)
|
|
331
|
+
metadata: metadata.set("Authorization", `Bearer ${token}`)
|
|
522
332
|
});
|
|
523
333
|
} catch (error) {
|
|
524
334
|
return yield* this.handleMiddlewareError(
|
|
@@ -531,7 +341,7 @@ var ConnectionManagerNodeJS = class extends ConnectionManager {
|
|
|
531
341
|
}
|
|
532
342
|
}.bind(this);
|
|
533
343
|
}
|
|
534
|
-
async createGrpcClient(
|
|
344
|
+
async createGrpcClient(definition, channel, withRetries, middleware, channelKey) {
|
|
535
345
|
const retryOptions = {
|
|
536
346
|
retry: true,
|
|
537
347
|
retryMaxAttempts: 3
|
|
@@ -545,13 +355,30 @@ var ConnectionManagerNodeJS = class extends ConnectionManager {
|
|
|
545
355
|
if (middleware) {
|
|
546
356
|
clientFactory = clientFactory.use(middleware);
|
|
547
357
|
}
|
|
548
|
-
const client = clientFactory.create(
|
|
358
|
+
const client = clientFactory.create(definition, channel, {
|
|
549
359
|
"*": options
|
|
550
360
|
});
|
|
551
361
|
return {
|
|
552
362
|
...client,
|
|
553
|
-
close: channel.close.bind(channel)
|
|
363
|
+
close: channelKey ? () => ConnectionManager.releaseChannel(channelKey) : channel.close.bind(channel)
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
async subscribeToEvents(address, signal) {
|
|
367
|
+
const stream = super.subscribeToEvents(address, signal);
|
|
368
|
+
const channel = await this.getChannelForClient("stream", address);
|
|
369
|
+
if (!channel) {
|
|
370
|
+
throw new Error("Failed to get channel for client");
|
|
371
|
+
}
|
|
372
|
+
const maybeUnref = () => {
|
|
373
|
+
const internalChannel = channel.internalChannel;
|
|
374
|
+
if (internalChannel?.currentPicker?.subchannel?.child?.transport?.session?.socket) {
|
|
375
|
+
internalChannel.currentPicker.subchannel.child.transport.session.socket.unref();
|
|
376
|
+
} else {
|
|
377
|
+
setTimeout(maybeUnref, 100);
|
|
378
|
+
}
|
|
554
379
|
};
|
|
380
|
+
maybeUnref();
|
|
381
|
+
return stream;
|
|
555
382
|
}
|
|
556
383
|
};
|
|
557
384
|
|