@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.
Files changed (87) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/bare/index.cjs +8088 -7723
  3. package/dist/bare/index.d.cts +350 -262
  4. package/dist/bare/index.d.ts +350 -262
  5. package/dist/bare/index.js +7968 -7608
  6. package/dist/{chunk-J2P3KTQP.js → chunk-4YFT7DAE.js} +1 -1
  7. package/dist/{chunk-XWLR6G5C.js → chunk-JLF6WJ7K.js} +1 -1
  8. package/dist/{chunk-UYTT3C6H.js → chunk-MFCM6GUD.js} +40 -213
  9. package/dist/{chunk-KDEVNW7C.js → chunk-O4C4HGQL.js} +3391 -3292
  10. package/dist/{chunk-SRPKOCG4.js → chunk-S55NZT4P.js} +8 -10
  11. package/dist/{chunk-P4HYYSMU.js → chunk-WRE2T22S.js} +1 -1
  12. package/dist/{chunk-IC4IUEOS.js → chunk-YEBEN7XD.js} +309 -38
  13. package/dist/{client-Bcb7TUIp.d.cts → client-BIqiUNy4.d.cts} +2 -2
  14. package/dist/{client-D9T58OY8.d.ts → client-BaQf-5gD.d.ts} +2 -2
  15. package/dist/debug.cjs +8068 -7704
  16. package/dist/debug.d.cts +25 -18
  17. package/dist/debug.d.ts +25 -18
  18. package/dist/debug.js +5 -5
  19. package/dist/graphql/objects/index.d.cts +3 -3
  20. package/dist/graphql/objects/index.d.ts +3 -3
  21. package/dist/index.cjs +6871 -6501
  22. package/dist/index.d.cts +9 -8
  23. package/dist/index.d.ts +9 -8
  24. package/dist/index.js +36 -24
  25. package/dist/index.node.cjs +7102 -6903
  26. package/dist/index.node.d.cts +9 -8
  27. package/dist/index.node.d.ts +9 -8
  28. package/dist/index.node.js +35 -23
  29. package/dist/{logging-zkr4UlOi.d.cts → logging-CXhvuqJJ.d.cts} +45 -35
  30. package/dist/{logging-JIaZZIbR.d.ts → logging-DDeMLsVN.d.ts} +45 -35
  31. package/dist/native/{chunk-X2QXUON7.js → chunk-AFP5QR4O.js} +11 -8
  32. package/dist/native/index.react-native.cjs +7054 -6677
  33. package/dist/native/index.react-native.d.cts +180 -92
  34. package/dist/native/index.react-native.d.ts +180 -92
  35. package/dist/native/index.react-native.js +6760 -6393
  36. package/dist/native/{wasm-GKEDPGTM.js → wasm-D4TI35NF.js} +1 -1
  37. package/dist/proto/spark.cjs +309 -38
  38. package/dist/proto/spark.d.cts +1 -1
  39. package/dist/proto/spark.d.ts +1 -1
  40. package/dist/proto/spark.js +5 -1
  41. package/dist/proto/spark_token.d.cts +1 -1
  42. package/dist/proto/spark_token.d.ts +1 -1
  43. package/dist/proto/spark_token.js +2 -2
  44. package/dist/{spark-WA_4wcBr.d.cts → spark-DOpheE8_.d.cts} +69 -7
  45. package/dist/{spark-WA_4wcBr.d.ts → spark-DOpheE8_.d.ts} +69 -7
  46. package/dist/{spark-wallet.browser-DC3jdQPW.d.cts → spark-wallet.browser-CbYo8A_U.d.cts} +8 -8
  47. package/dist/{spark-wallet.browser-BwYkkOBU.d.ts → spark-wallet.browser-Cz8c4kOW.d.ts} +8 -8
  48. package/dist/{spark-wallet.node-CR_zNxmy.d.cts → spark-wallet.node-4WQgWwB2.d.cts} +9 -31
  49. package/dist/{spark-wallet.node-C9d2W-Nb.d.ts → spark-wallet.node-CmIvxtcC.d.ts} +9 -31
  50. package/dist/tests/test-utils.cjs +7341 -7065
  51. package/dist/tests/test-utils.d.cts +7 -5
  52. package/dist/tests/test-utils.d.ts +7 -5
  53. package/dist/tests/test-utils.js +7 -7
  54. package/dist/{token-transactions-BZoJuvuE.d.ts → token-transactions-Bu023ztN.d.ts} +2 -2
  55. package/dist/{token-transactions-I_OFIoNH.d.cts → token-transactions-CV8QD3I7.d.cts} +2 -2
  56. package/dist/types/index.cjs +307 -38
  57. package/dist/types/index.d.cts +2 -2
  58. package/dist/types/index.d.ts +2 -2
  59. package/dist/types/index.js +2 -2
  60. package/dist/{spark-wallet-CE5PYiIb.d.ts → wallet-config-Bmk2eAn8.d.ts} +310 -287
  61. package/dist/{spark-wallet-BuFrUWeE.d.cts → wallet-config-DQw5llqA.d.cts} +310 -287
  62. package/package.json +3 -3
  63. package/src/proto/mock.ts +0 -264
  64. package/src/proto/spark.ts +433 -46
  65. package/src/services/config.ts +5 -0
  66. package/src/services/connection/connection.browser.ts +27 -19
  67. package/src/services/connection/connection.node.ts +79 -24
  68. package/src/services/connection/connection.ts +395 -233
  69. package/src/services/coop-exit.ts +26 -107
  70. package/src/services/deposit.ts +12 -48
  71. package/src/services/lightning.ts +30 -4
  72. package/src/services/signing.ts +187 -37
  73. package/src/services/transfer.ts +553 -723
  74. package/src/services/wallet-config.ts +6 -0
  75. package/src/spark-wallet/proto-descriptors.ts +1 -1
  76. package/src/spark-wallet/spark-wallet.ts +132 -313
  77. package/src/spark-wallet/types.ts +2 -2
  78. package/src/spark_descriptors.pb +0 -0
  79. package/src/tests/connection.test.ts +537 -0
  80. package/src/tests/integration/connection.test.ts +39 -0
  81. package/src/tests/integration/lightning.test.ts +32 -16
  82. package/src/tests/integration/static_deposit.test.ts +13 -11
  83. package/src/tests/integration/transfer.test.ts +13 -1
  84. package/src/tests/isHermeticTest.ts +1 -1
  85. package/src/tests/utils/test-faucet.ts +53 -20
  86. package/src/utils/htlc-transactions.ts +224 -0
  87. package/src/utils/transaction.ts +285 -248
@@ -2,7 +2,7 @@ import {
2
2
  Network,
3
3
  TransferStatus,
4
4
  TransferType
5
- } from "./chunk-IC4IUEOS.js";
5
+ } from "./chunk-YEBEN7XD.js";
6
6
 
7
7
  // src/types/sdk-types.ts
8
8
  import { bytesToHex } from "@noble/curves/utils";
@@ -5,7 +5,7 @@ import {
5
5
  Timestamp,
6
6
  networkFromJSON,
7
7
  networkToJSON
8
- } from "./chunk-IC4IUEOS.js";
8
+ } from "./chunk-YEBEN7XD.js";
9
9
 
10
10
  // src/proto/spark_token.ts
11
11
  import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
@@ -3,10 +3,10 @@ import {
3
3
  NetworkError,
4
4
  SparkWallet,
5
5
  clientEnv
6
- } from "./chunk-KDEVNW7C.js";
6
+ } from "./chunk-O4C4HGQL.js";
7
7
  import {
8
8
  Empty
9
- } from "./chunk-IC4IUEOS.js";
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 channel = await this.createChannelWithTLS(address);
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 { ...client, close: () => channel.close() };
266
+ return {
267
+ ...client,
268
+ close: () => ConnectionManager.releaseChannel(key)
269
+ };
459
270
  }
460
- async createChannelWithTLS(address, certPath) {
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
- return createChannel(
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, initialAuthToken) {
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(defintion, channel, withRetries, middleware) {
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(defintion, channel, {
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