beignet 0.30.1 → 0.30.2

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 (102) hide show
  1. package/dist/cli/beignet-node.js +73 -32
  2. package/dist/cli/beignet-node.js.map +1 -1
  3. package/dist/cli/cli.js +13 -3
  4. package/dist/cli/cli.js.map +1 -1
  5. package/dist/cli/config.js +1 -0
  6. package/dist/cli/config.js.map +1 -1
  7. package/dist/cli/daemon-options.js +1 -0
  8. package/dist/cli/daemon-options.js.map +1 -1
  9. package/dist/cli/daemon.js +56 -8
  10. package/dist/cli/daemon.js.map +1 -1
  11. package/dist/cli/direct-funding.js +0 -2
  12. package/dist/cli/direct-funding.js.map +1 -1
  13. package/dist/cli/onchain-sweep.js +4 -2
  14. package/dist/cli/onchain-sweep.js.map +1 -1
  15. package/dist/cli/openapi.js +10 -3
  16. package/dist/cli/openapi.js.map +1 -1
  17. package/dist/lightning/channel/channel-manager.js +87 -10
  18. package/dist/lightning/channel/channel-manager.js.map +1 -1
  19. package/dist/lightning/channel/channel-state.js.map +1 -1
  20. package/dist/lightning/channel/channel.js +23 -3
  21. package/dist/lightning/channel/channel.js.map +1 -1
  22. package/dist/lightning/channel/dual-funding.js +2 -2
  23. package/dist/lightning/channel/dual-funding.js.map +1 -1
  24. package/dist/lightning/channel/splice.js +2 -2
  25. package/dist/lightning/channel/splice.js.map +1 -1
  26. package/dist/lightning/direct-funding/sender/engine.js +8 -4
  27. package/dist/lightning/direct-funding/sender/engine.js.map +1 -1
  28. package/dist/lightning/gossip/gossip-sync.js +14 -2
  29. package/dist/lightning/gossip/gossip-sync.js.map +1 -1
  30. package/dist/lightning/gossip/rapid-sync.js +13 -3
  31. package/dist/lightning/gossip/rapid-sync.js.map +1 -1
  32. package/dist/lightning/interactive-tx/builder.js +19 -2
  33. package/dist/lightning/interactive-tx/builder.js.map +1 -1
  34. package/dist/lightning/interactive-tx/validation.js +2 -1
  35. package/dist/lightning/interactive-tx/validation.js.map +1 -1
  36. package/dist/lightning/node/lightning-node.js +254 -43
  37. package/dist/lightning/node/lightning-node.js.map +1 -1
  38. package/dist/lightning/node/types.js.map +1 -1
  39. package/dist/lightning/recovery/guardian-store.js +17 -1
  40. package/dist/lightning/recovery/guardian-store.js.map +1 -1
  41. package/dist/lightning/recovery/guardian.js +37 -1
  42. package/dist/lightning/recovery/guardian.js.map +1 -1
  43. package/dist/lightning/recovery/restore-driver.js +82 -26
  44. package/dist/lightning/recovery/restore-driver.js.map +1 -1
  45. package/dist/lightning/storage/durable-ledger.js +58 -15
  46. package/dist/lightning/storage/durable-ledger.js.map +1 -1
  47. package/dist/lightning/storage/serialization.js +4 -0
  48. package/dist/lightning/storage/serialization.js.map +1 -1
  49. package/dist/lightning/storage/sqlite-storage.js +185 -3
  50. package/dist/lightning/storage/sqlite-storage.js.map +1 -1
  51. package/dist/lightning/storage/types.js.map +1 -1
  52. package/dist/lightning/swaps/chain-resolver.js +49 -11
  53. package/dist/lightning/swaps/chain-resolver.js.map +1 -1
  54. package/dist/lightning/swaps/ledger.js +152 -10
  55. package/dist/lightning/swaps/ledger.js.map +1 -1
  56. package/dist/lightning/swaps/reverse-engine.js +108 -21
  57. package/dist/lightning/swaps/reverse-engine.js.map +1 -1
  58. package/dist/lightning/swaps/submarine-engine.js +42 -5
  59. package/dist/lightning/swaps/submarine-engine.js.map +1 -1
  60. package/dist/lightning/transport/peer.js +59 -8
  61. package/dist/lightning/transport/peer.js.map +1 -1
  62. package/dist/transaction/index.js +431 -99
  63. package/dist/transaction/index.js.map +1 -1
  64. package/dist/types/cli/beignet-node.d.ts +0 -1
  65. package/dist/types/cli/daemon.d.ts +5 -0
  66. package/dist/types/cli/types.d.ts +1 -0
  67. package/dist/types/lightning/channel/channel-manager.d.ts +7 -0
  68. package/dist/types/lightning/channel/channel-state.d.ts +1 -0
  69. package/dist/types/lightning/channel/channel.d.ts +3 -1
  70. package/dist/types/lightning/channel/dual-funding.d.ts +1 -1
  71. package/dist/types/lightning/channel/splice.d.ts +1 -1
  72. package/dist/types/lightning/gossip/gossip-sync.d.ts +1 -0
  73. package/dist/types/lightning/gossip/rapid-sync.d.ts +2 -1
  74. package/dist/types/lightning/interactive-tx/builder.d.ts +3 -1
  75. package/dist/types/lightning/interactive-tx/validation.d.ts +1 -0
  76. package/dist/types/lightning/node/lightning-node.d.ts +19 -1
  77. package/dist/types/lightning/node/types.d.ts +2 -0
  78. package/dist/types/lightning/recovery/guardian-store.d.ts +2 -0
  79. package/dist/types/lightning/recovery/guardian.d.ts +1 -0
  80. package/dist/types/lightning/recovery/restore-driver.d.ts +3 -0
  81. package/dist/types/lightning/storage/durable-ledger.d.ts +12 -1
  82. package/dist/types/lightning/storage/serialization.d.ts +1 -0
  83. package/dist/types/lightning/storage/sqlite-storage.d.ts +26 -1
  84. package/dist/types/lightning/storage/types.d.ts +5 -0
  85. package/dist/types/lightning/swaps/chain-resolver.d.ts +3 -0
  86. package/dist/types/lightning/swaps/ledger.d.ts +13 -0
  87. package/dist/types/lightning/swaps/reverse-engine.d.ts +10 -1
  88. package/dist/types/lightning/swaps/submarine-engine.d.ts +6 -0
  89. package/dist/types/lightning/transport/peer.d.ts +5 -0
  90. package/dist/types/transaction/index.d.ts +12 -5
  91. package/dist/types/transaction.js.map +1 -1
  92. package/dist/types/types/transaction.d.ts +1 -0
  93. package/dist/types/wallet/constants.d.ts +1 -0
  94. package/dist/types/wallet/index.d.ts +3 -1
  95. package/dist/utils/transaction.js +9 -3
  96. package/dist/utils/transaction.js.map +1 -1
  97. package/dist/wallet/constants.js +2 -1
  98. package/dist/wallet/constants.js.map +1 -1
  99. package/dist/wallet/index.js +97 -42
  100. package/dist/wallet/index.js.map +1 -1
  101. package/docs/RECOVERY-GUARDIAN-WIRE.md +5 -1
  102. package/package.json +1 -1
@@ -6733,34 +6733,82 @@ class BeignetNode extends events_1.EventEmitter {
6733
6733
  }
6734
6734
  }
6735
6735
  listPayments(filter) {
6736
- let payments = this.paymentRecords().map((p) => this.toPaymentInfo(p));
6737
- payments.sort((a, b) => b.createdAt - a.createdAt);
6738
- if (filter) {
6739
- if (filter.status) {
6740
- payments = payments.filter((p) => p.status === filter.status);
6741
- }
6742
- if (filter.direction) {
6743
- payments = payments.filter((p) => p.direction === filter.direction);
6736
+ const since = filter?.since;
6737
+ const status = filter?.status || undefined;
6738
+ const direction = filter?.direction || undefined;
6739
+ const metadata = filter?.metadataKey !== undefined
6740
+ ? { key: filter.metadataKey, value: filter.metadataValue }
6741
+ : undefined;
6742
+ const matches = (p) => {
6743
+ if (since !== undefined && p.createdAt < since)
6744
+ return false;
6745
+ if (status && p.status !== status)
6746
+ return false;
6747
+ if (direction && p.direction !== direction)
6748
+ return false;
6749
+ if (!metadata)
6750
+ return true;
6751
+ if (!p.metadata ||
6752
+ !Object.prototype.hasOwnProperty.call(p.metadata, metadata.key)) {
6753
+ return false;
6744
6754
  }
6745
- if (filter.since !== undefined) {
6746
- payments = payments.filter((p) => p.createdAt >= filter.since);
6755
+ return (metadata.value === undefined ||
6756
+ p.metadata[metadata.key] === metadata.value);
6757
+ };
6758
+ const live = new Map();
6759
+ for (const p of this.node.listPayments()) {
6760
+ live.set(p.paymentHash.toString('hex'), p);
6761
+ }
6762
+ const newer = (a, b) => a.createdAt > b.createdAt ||
6763
+ (a.createdAt === b.createdAt && a.paymentHash > b.paymentHash);
6764
+ const liveNewestFirst = [...live]
6765
+ .filter(([, p]) => matches(p))
6766
+ .map(([paymentHash, p]) => ({
6767
+ paymentHash,
6768
+ createdAt: p.createdAt,
6769
+ load: () => p
6770
+ }))
6771
+ .sort((a, b) => (newer(a, b) ? -1 : newer(b, a) ? 1 : 0));
6772
+ const rows = this.storage.paymentsNewestFirst(since, {
6773
+ status,
6774
+ direction,
6775
+ metadata
6776
+ });
6777
+ const nextRow = () => {
6778
+ for (let r = rows.next(); !r.done; r = rows.next()) {
6779
+ if (!live.has(r.value.paymentHash))
6780
+ return r.value;
6747
6781
  }
6748
- if (filter.metadataKey !== undefined) {
6749
- if (filter.metadataValue !== undefined) {
6750
- payments = payments.filter((p) => p.metadata?.[filter.metadataKey] === filter.metadataValue);
6751
- }
6752
- else {
6753
- payments = payments.filter((p) => p.metadata !== undefined && filter.metadataKey in p.metadata);
6754
- }
6782
+ return undefined;
6783
+ };
6784
+ const offset = filter?.offset !== undefined && filter.offset > 0 ? filter.offset : 0;
6785
+ const limit = filter?.limit !== undefined && filter.limit > 0 ? filter.limit : Infinity;
6786
+ const page = [];
6787
+ let skipped = 0;
6788
+ let i = 0;
6789
+ let row = nextRow();
6790
+ while (page.length < limit) {
6791
+ let next;
6792
+ if (i < liveNewestFirst.length &&
6793
+ (!row || newer(liveNewestFirst[i], row))) {
6794
+ next = liveNewestFirst[i++];
6795
+ }
6796
+ else if (row) {
6797
+ next = row;
6798
+ row = nextRow();
6755
6799
  }
6756
- if (filter.offset !== undefined && filter.offset > 0) {
6757
- payments = payments.slice(filter.offset);
6800
+ else {
6801
+ break;
6758
6802
  }
6759
- if (filter.limit !== undefined && filter.limit > 0) {
6760
- payments = payments.slice(0, filter.limit);
6803
+ if (skipped < offset) {
6804
+ skipped++;
6805
+ continue;
6761
6806
  }
6807
+ const record = next.load();
6808
+ if (record)
6809
+ page.push(this.toPaymentInfo(record));
6762
6810
  }
6763
- return payments;
6811
+ return page;
6764
6812
  }
6765
6813
  getPayment(paymentHash) {
6766
6814
  const live = this.livePayment(paymentHash);
@@ -6776,16 +6824,6 @@ class BeignetNode extends events_1.EventEmitter {
6776
6824
  const p = this.node.getPayment(Buffer.from(paymentHash, 'hex'));
6777
6825
  return p ? this.toPaymentInfo(p) : null;
6778
6826
  }
6779
- paymentRecords() {
6780
- const byHash = new Map();
6781
- for (const { paymentHash, payment } of this.storage.loadAllPayments()) {
6782
- byHash.set(paymentHash, payment);
6783
- }
6784
- for (const p of this.node.listPayments()) {
6785
- byHash.set(p.paymentHash.toString('hex'), p);
6786
- }
6787
- return [...byHash.values()];
6788
- }
6789
6827
  durablePaymentFor(err, hashHex) {
6790
6828
  if (!(err instanceof errors_1.BeignetError) ||
6791
6829
  err.code !== errors_1.BeignetErrorCode.DUPLICATE_PAYMENT) {
@@ -7716,6 +7754,9 @@ class BeignetNode extends events_1.EventEmitter {
7716
7754
  throw new errors_1.BeignetError(errors_1.BeignetErrorCode.INVALID_PARAMS, 'budgetSatsPerDay must be a non-negative integer');
7717
7755
  }
7718
7756
  this._checkDraining();
7757
+ if (this.destroyed) {
7758
+ throw new errors_1.BeignetError(errors_1.BeignetErrorCode.NODE_DESTROYED, 'Node is shutting down; no new rebalances accepted');
7759
+ }
7719
7760
  const holdSats = this.node.rebalanceBudgetSatsPerDay(budgetSatsPerDay);
7720
7761
  if (!Number.isInteger(holdSats) || holdSats < 0) {
7721
7762
  throw new errors_1.BeignetError(errors_1.BeignetErrorCode.INVALID_PARAMS, 'autoRebalance.budgetSatsPerDay must be a non-negative integer');