@bsv/wallet-toolbox-mobile 2.1.27 → 2.1.30

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 (228) hide show
  1. package/README.md +83 -0
  2. package/out/src/CWIStyleWalletManager.js +107 -41
  3. package/out/src/CWIStyleWalletManager.js.map +1 -1
  4. package/out/src/SimpleWalletManager.js +29 -0
  5. package/out/src/SimpleWalletManager.js.map +1 -1
  6. package/out/src/Wallet.js +84 -66
  7. package/out/src/Wallet.js.map +1 -1
  8. package/out/src/WalletAuthenticationManager.js +6 -3
  9. package/out/src/WalletAuthenticationManager.js.map +1 -1
  10. package/out/src/WalletLogger.js +6 -4
  11. package/out/src/WalletLogger.js.map +1 -1
  12. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  13. package/out/src/WalletPermissionsManager.js +158 -167
  14. package/out/src/WalletPermissionsManager.js.map +1 -1
  15. package/out/src/WalletSettingsManager.js +3 -0
  16. package/out/src/WalletSettingsManager.js.map +1 -1
  17. package/out/src/mockchain/MockChainMigrations.js +1 -1
  18. package/out/src/mockchain/MockChainMigrations.js.map +1 -1
  19. package/out/src/mockchain/MockChainStorage.js +1 -0
  20. package/out/src/mockchain/MockChainStorage.js.map +1 -1
  21. package/out/src/mockchain/MockChainTracker.js +2 -0
  22. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  23. package/out/src/mockchain/MockMiner.js +2 -2
  24. package/out/src/mockchain/MockMiner.js.map +1 -1
  25. package/out/src/mockchain/MockServices.js +21 -25
  26. package/out/src/mockchain/MockServices.js.map +1 -1
  27. package/out/src/monitor/Monitor.d.ts.map +1 -1
  28. package/out/src/monitor/Monitor.js +57 -33
  29. package/out/src/monitor/Monitor.js.map +1 -1
  30. package/out/src/monitor/tasks/TaskArcSSE.js +10 -13
  31. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  32. package/out/src/monitor/tasks/TaskCheckForProofs.js +10 -11
  33. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  34. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +59 -1
  35. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  36. package/out/src/monitor/tasks/TaskCheckNoSends.js +101 -12
  37. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  38. package/out/src/monitor/tasks/TaskClock.js +3 -1
  39. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  40. package/out/src/monitor/tasks/TaskFailAbandoned.js +2 -1
  41. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  42. package/out/src/monitor/tasks/TaskMineBlock.js +3 -2
  43. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
  44. package/out/src/monitor/tasks/TaskMonitorCallHistory.js +2 -1
  45. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  46. package/out/src/monitor/tasks/TaskNewHeader.js +12 -1
  47. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  48. package/out/src/monitor/tasks/TaskPurge.js +7 -5
  49. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  50. package/out/src/monitor/tasks/TaskReorg.js +4 -2
  51. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  52. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +12 -9
  53. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  54. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +8 -3
  55. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  56. package/out/src/monitor/tasks/TaskReviewStatus.js +7 -5
  57. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  58. package/out/src/monitor/tasks/TaskReviewUtxos.js +6 -2
  59. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  60. package/out/src/monitor/tasks/TaskSendWaiting.js +9 -2
  61. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  62. package/out/src/monitor/tasks/TaskUnFail.js +6 -5
  63. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  64. package/out/src/monitor/tasks/WalletMonitorTask.js +7 -4
  65. package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
  66. package/out/src/sdk/PrivilegedKeyManager.js +44 -27
  67. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  68. package/out/src/sdk/WERR_errors.js +23 -8
  69. package/out/src/sdk/WERR_errors.js.map +1 -1
  70. package/out/src/sdk/WalletError.js +7 -7
  71. package/out/src/sdk/WalletError.js.map +1 -1
  72. package/out/src/services/ServiceCollection.js +9 -2
  73. package/out/src/services/ServiceCollection.js.map +1 -1
  74. package/out/src/services/Services.js +58 -54
  75. package/out/src/services/Services.js.map +1 -1
  76. package/out/src/services/chaintracker/ChaintracksChainTracker.js +5 -2
  77. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  78. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +27 -21
  79. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  80. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +4 -1
  81. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  82. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +8 -1
  83. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  84. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +7 -0
  85. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  86. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +5 -3
  87. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  88. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +3 -1
  89. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  90. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +3 -1
  91. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  92. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +1 -2
  93. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  94. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +8 -5
  95. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  96. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +3 -1
  97. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  98. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +12 -6
  99. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  100. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +8 -7
  101. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  102. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +15 -16
  103. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  104. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +1 -1
  105. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  106. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -1
  107. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  108. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +19 -16
  109. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  110. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +4 -0
  111. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  112. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +17 -4
  113. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  114. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +21 -0
  115. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  116. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +1 -3
  117. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  118. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +7 -5
  119. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  120. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +4 -6
  121. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  122. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +1 -1
  123. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  124. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +8 -8
  125. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  126. package/out/src/services/createDefaultWalletServicesOptions.js +8 -8
  127. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  128. package/out/src/services/providers/ARC.js +13 -5
  129. package/out/src/services/providers/ARC.js.map +1 -1
  130. package/out/src/services/providers/ArcSSEClient.js +9 -8
  131. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  132. package/out/src/services/providers/Bitails.js +6 -2
  133. package/out/src/services/providers/Bitails.js.map +1 -1
  134. package/out/src/services/providers/SdkWhatsOnChain.js +6 -2
  135. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  136. package/out/src/services/providers/WhatsOnChain.js +2 -1
  137. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  138. package/out/src/services/providers/getBeefForTxid.js +2 -1
  139. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  140. package/out/src/signer/WalletSigner.js +4 -1
  141. package/out/src/signer/WalletSigner.js.map +1 -1
  142. package/out/src/signer/methods/acquireDirectCertificate.js +1 -2
  143. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  144. package/out/src/signer/methods/buildSignableTransaction.js +1 -2
  145. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  146. package/out/src/signer/methods/completeSignedTransaction.js +4 -5
  147. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  148. package/out/src/signer/methods/createAction.js +9 -11
  149. package/out/src/signer/methods/createAction.js.map +1 -1
  150. package/out/src/signer/methods/internalizeAction.d.ts +8 -1
  151. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  152. package/out/src/signer/methods/internalizeAction.js +8 -1
  153. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  154. package/out/src/signer/methods/signAction.js +5 -6
  155. package/out/src/signer/methods/signAction.js.map +1 -1
  156. package/out/src/storage/StorageProvider.d.ts +4 -1
  157. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  158. package/out/src/storage/StorageProvider.js +122 -32
  159. package/out/src/storage/StorageProvider.js.map +1 -1
  160. package/out/src/storage/StorageReader.js +4 -2
  161. package/out/src/storage/StorageReader.js.map +1 -1
  162. package/out/src/storage/StorageSyncReader.js +2 -0
  163. package/out/src/storage/StorageSyncReader.js.map +1 -1
  164. package/out/src/storage/WalletStorageManager.js +47 -25
  165. package/out/src/storage/WalletStorageManager.js.map +1 -1
  166. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  167. package/out/src/storage/methods/ListActionsSpecOp.js +69 -6
  168. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  169. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  170. package/out/src/storage/methods/ListOutputsSpecOp.js +5 -2
  171. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  172. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +10 -12
  173. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  174. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  175. package/out/src/storage/methods/createAction.js +111 -69
  176. package/out/src/storage/methods/createAction.js.map +1 -1
  177. package/out/src/storage/methods/generateChange.js +2 -3
  178. package/out/src/storage/methods/generateChange.js.map +1 -1
  179. package/out/src/storage/methods/getBeefForTransaction.js +2 -4
  180. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  181. package/out/src/storage/methods/internalizeAction.d.ts +69 -2
  182. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  183. package/out/src/storage/methods/internalizeAction.js +232 -27
  184. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  185. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  186. package/out/src/storage/methods/processAction.js +12 -11
  187. package/out/src/storage/methods/processAction.js.map +1 -1
  188. package/out/src/storage/portable/index.d.ts.map +1 -1
  189. package/out/src/storage/portable/index.js +171 -129
  190. package/out/src/storage/portable/index.js.map +1 -1
  191. package/out/src/storage/remoting/StorageClient.js +2 -3
  192. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  193. package/out/src/storage/remoting/StorageClientBase.js +6 -3
  194. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  195. package/out/src/storage/schema/entities/EntityBase.js +1 -0
  196. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  197. package/out/src/storage/schema/entities/EntityOutputBasket.js +1 -1
  198. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  199. package/out/src/storage/schema/entities/EntityProvenTx.js +12 -13
  200. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  201. package/out/src/storage/schema/entities/EntityProvenTxReq.js +7 -9
  202. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  203. package/out/src/storage/schema/entities/EntitySyncState.js +6 -3
  204. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  205. package/out/src/storage/schema/entities/MergeEntity.js +4 -0
  206. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  207. package/out/src/storage/storageProviderHelpers.js +2 -3
  208. package/out/src/storage/storageProviderHelpers.js.map +1 -1
  209. package/out/src/utility/ScriptTemplateBRC29.js +7 -6
  210. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  211. package/out/src/utility/brc114ActionTimeLabels.js +1 -1
  212. package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
  213. package/out/src/utility/identityUtils.js +2 -4
  214. package/out/src/utility/identityUtils.js.map +1 -1
  215. package/out/src/utility/utilityHelpers.js +2 -2
  216. package/out/src/utility/utilityHelpers.js.map +1 -1
  217. package/out/src/utility/utilityHelpers.noBuffer.js +4 -4
  218. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  219. package/out/src/wab-client/WABClient.js +1 -0
  220. package/out/src/wab-client/WABClient.js.map +1 -1
  221. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js +1 -4
  222. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
  223. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js +1 -4
  224. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
  225. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +1 -4
  226. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
  227. package/out/tsconfig.mobile.tsbuildinfo +1 -1
  228. package/package.json +3 -3
@@ -1,6 +1,63 @@
1
- import { InternalizeActionArgs } from '@bsv/sdk';
1
+ import { Transaction as BsvTransaction, InternalizeActionArgs } from '@bsv/sdk';
2
2
  import { StorageProvider } from '../StorageProvider';
3
3
  import { AuthId, StorageInternalizeActionResult } from '../../sdk/WalletStorage.interfaces';
4
+ /**
5
+ * Record of a spent-input transition this internalize call performed.
6
+ * Carries enough state to roll back the exact change via
7
+ * {@link restoreInputsToSpendable}: which row, and whether we touched
8
+ * `spentBy` (only true for rows owned by the internalizing user).
9
+ */
10
+ export interface SpentInputTransition {
11
+ outputId: number;
12
+ /** true if the call set spentBy; false if only spendable was flipped. */
13
+ setSpentBy: boolean;
14
+ }
15
+ /**
16
+ * Mark every storage row at each consumed-input outpoint as spent — across
17
+ * all users that track that outpoint. An on-chain spend invalidates the UTXO
18
+ * for every wallet that references it, not just the wallet that called
19
+ * `internalizeAction`. Returns the per-row transitions so the caller can
20
+ * roll back via {@link restoreInputsToSpendable} on broadcast failure.
21
+ *
22
+ * Cross-user semantics:
23
+ * - For rows owned by `userId` (the internalizing user) we also set
24
+ * `spentBy=transactionId`. They own the corresponding transaction
25
+ * record; the FK target exists in their scope.
26
+ * - For rows owned by other users we set `spendable=false` and leave
27
+ * `spentBy` untouched. `spentBy` references the owning user's
28
+ * `transactions.transactionId`, and that user has no record of our
29
+ * transaction yet — they'd need to internalize it themselves to get
30
+ * one. Leaving `spentBy` undefined keeps the field consistent with
31
+ * "this UTXO is spent, but my wallet didn't witness the spend".
32
+ *
33
+ * Mirrors what `createAction` does for wallet-originated transactions and
34
+ * what `TaskUnFail.unfailReq` does when reviving a previously-failed tx.
35
+ * Without this, an externally-broadcast tx that consumed user UTXOs would
36
+ * leave those UTXOs as phantom spendable rows, picked up by subsequent
37
+ * `createAction` fund selection.
38
+ *
39
+ * Idempotent: rows already `spendable=false` are skipped. Rows already
40
+ * `spentBy` a different transaction are also skipped (a competing spend
41
+ * has been recorded; do not overwrite).
42
+ */
43
+ export declare function markUserInputsSpent(storage: StorageProvider, userId: number, tx: BsvTransaction, transactionId: number): Promise<SpentInputTransition[]>;
44
+ /**
45
+ * Revert the spendable=true → false transitions performed by
46
+ * {@link markUserInputsSpent}. Used when an internalize call's downstream
47
+ * broadcast fails non-fatally so the caller can retry with the same UTXOs.
48
+ *
49
+ * Only undoes what was changed: `spendable=true` always; `spentBy=undefined`
50
+ * only when the original transition set it. Avoids clobbering a competing
51
+ * spent-by on cross-user rows.
52
+ *
53
+ * The downstream `attemptToPostReqsToNetwork` path also calls
54
+ * `updateTransactionStatus('failed')` on doubleSpend/invalidTx outcomes,
55
+ * which independently restores same-user inputs (via
56
+ * `EntityTransaction.getInputs` filtered by userId). This explicit rollback
57
+ * covers cross-user rows and any path where the downstream restore did not
58
+ * run, and is a no-op when the downstream restore already happened.
59
+ */
60
+ export declare function restoreInputsToSpendable(storage: StorageProvider, transitions: SpentInputTransition[]): Promise<void>;
4
61
  /**
5
62
  * Internalize Action allows a wallet to take ownership of outputs in a pre-existing transaction.
6
63
  * The transaction may, or may not already be known to both the storage and user.
@@ -14,7 +71,17 @@ import { AuthId, StorageInternalizeActionResult } from '../../sdk/WalletStorage.
14
71
  * Processing starts with simple validation and then checks for a pre-existing transaction.
15
72
  * If the transaction is already known to the user, then the outputs are reviewed against the existing outputs treatment,
16
73
  * and merge rules are added to the arguments passed to the storage layer.
17
- * The existing transaction must be in the 'unproven' or 'completed' status. Any other status is an error.
74
+ *
75
+ * The existing transaction's `status` determines what the merge path does next:
76
+ * - `'unproven'` or `'completed'`: outputs are merged into the existing record. The transaction status is left as-is.
77
+ * - `'nosend'`: an ambiguous case. The transaction was created with `noSend: true` and may have been externally
78
+ * broadcast, may be sitting in a sendWith chain, or may be stuck mid-flight. The merge path treats the
79
+ * `internalizeAction` call as explicit authorization to advance the lifecycle. Specifically: `transactions.status`
80
+ * is promoted to `'completed'` (when a BUMP is included in the BEEF) or `'unproven'` (otherwise), and the
81
+ * `proven_tx_req` is moved out of `'nosend'` so Monitor's standard proof-fetching flow can finalize it.
82
+ * This makes the `internalizeAction` semantics consistent regardless of whether the originator shares the
83
+ * same storage as the internalizer or not.
84
+ * - Any other status: an error.
18
85
  *
19
86
  * When the transaction already exists, the description is updated. The isOutgoing sense is not changed.
20
87
  *
@@ -1 +1 @@
1
- {"version":3,"file":"internalizeAction.d.ts","sourceRoot":"","sources":["../../../../../src/storage/methods/internalizeAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,qBAAqB,EAKtB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAsB,MAAM,oCAAoC,CAAA;AAW/G;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,8BAA8B,CAAC,CAQzC"}
1
+ {"version":3,"file":"internalizeAction.d.ts","sourceRoot":"","sources":["../../../../../src/storage/methods/internalizeAction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,IAAI,cAAc,EAG7B,qBAAqB,EAOtB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAsB,MAAM,oCAAoC,CAAA;AAW/G;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,cAAc,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA0BjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,oBAAoB,EAAE,GAClC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,8BAA8B,CAAC,CAQzC"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.markUserInputsSpent = markUserInputsSpent;
4
+ exports.restoreInputsToSpendable = restoreInputsToSpendable;
3
5
  exports.internalizeAction = internalizeAction;
4
6
  const sdk_1 = require("@bsv/sdk");
5
7
  const processAction_1 = require("./processAction");
@@ -7,6 +9,92 @@ const WERR_errors_1 = require("../../sdk/WERR_errors");
7
9
  const utilityHelpers_1 = require("../../utility/utilityHelpers");
8
10
  const EntityProvenTxReq_1 = require("../schema/entities/EntityProvenTxReq");
9
11
  const blockHeaderUtilities_1 = require("../../services/chaintracker/chaintracks/util/blockHeaderUtilities");
12
+ /**
13
+ * Mark every storage row at each consumed-input outpoint as spent — across
14
+ * all users that track that outpoint. An on-chain spend invalidates the UTXO
15
+ * for every wallet that references it, not just the wallet that called
16
+ * `internalizeAction`. Returns the per-row transitions so the caller can
17
+ * roll back via {@link restoreInputsToSpendable} on broadcast failure.
18
+ *
19
+ * Cross-user semantics:
20
+ * - For rows owned by `userId` (the internalizing user) we also set
21
+ * `spentBy=transactionId`. They own the corresponding transaction
22
+ * record; the FK target exists in their scope.
23
+ * - For rows owned by other users we set `spendable=false` and leave
24
+ * `spentBy` untouched. `spentBy` references the owning user's
25
+ * `transactions.transactionId`, and that user has no record of our
26
+ * transaction yet — they'd need to internalize it themselves to get
27
+ * one. Leaving `spentBy` undefined keeps the field consistent with
28
+ * "this UTXO is spent, but my wallet didn't witness the spend".
29
+ *
30
+ * Mirrors what `createAction` does for wallet-originated transactions and
31
+ * what `TaskUnFail.unfailReq` does when reviving a previously-failed tx.
32
+ * Without this, an externally-broadcast tx that consumed user UTXOs would
33
+ * leave those UTXOs as phantom spendable rows, picked up by subsequent
34
+ * `createAction` fund selection.
35
+ *
36
+ * Idempotent: rows already `spendable=false` are skipped. Rows already
37
+ * `spentBy` a different transaction are also skipped (a competing spend
38
+ * has been recorded; do not overwrite).
39
+ */
40
+ async function markUserInputsSpent(storage, userId, tx, transactionId) {
41
+ const outpoints = tx.inputs
42
+ .map(i => ({ txid: i.sourceTXID ?? '', vout: i.sourceOutputIndex ?? 0 }))
43
+ .filter(o => o.txid !== '');
44
+ if (outpoints.length === 0)
45
+ return [];
46
+ const transitioned = [];
47
+ await storage.transaction(async (trx) => {
48
+ for (const op of outpoints) {
49
+ const matches = await storage.findOutputs({
50
+ partial: { txid: op.txid, vout: op.vout },
51
+ noScript: true,
52
+ trx
53
+ });
54
+ for (const o of matches) {
55
+ if (!o.spendable)
56
+ continue;
57
+ if (o.spentBy != null && o.spentBy !== transactionId)
58
+ continue;
59
+ const setSpentBy = o.userId === userId;
60
+ const update = setSpentBy
61
+ ? { spendable: false, spentBy: transactionId }
62
+ : { spendable: false };
63
+ await storage.updateOutput((0, utilityHelpers_1.verifyId)(o.outputId), update, trx);
64
+ transitioned.push({ outputId: (0, utilityHelpers_1.verifyId)(o.outputId), setSpentBy });
65
+ }
66
+ }
67
+ });
68
+ return transitioned;
69
+ }
70
+ /**
71
+ * Revert the spendable=true → false transitions performed by
72
+ * {@link markUserInputsSpent}. Used when an internalize call's downstream
73
+ * broadcast fails non-fatally so the caller can retry with the same UTXOs.
74
+ *
75
+ * Only undoes what was changed: `spendable=true` always; `spentBy=undefined`
76
+ * only when the original transition set it. Avoids clobbering a competing
77
+ * spent-by on cross-user rows.
78
+ *
79
+ * The downstream `attemptToPostReqsToNetwork` path also calls
80
+ * `updateTransactionStatus('failed')` on doubleSpend/invalidTx outcomes,
81
+ * which independently restores same-user inputs (via
82
+ * `EntityTransaction.getInputs` filtered by userId). This explicit rollback
83
+ * covers cross-user rows and any path where the downstream restore did not
84
+ * run, and is a no-op when the downstream restore already happened.
85
+ */
86
+ async function restoreInputsToSpendable(storage, transitions) {
87
+ if (transitions.length === 0)
88
+ return;
89
+ await storage.transaction(async (trx) => {
90
+ for (const t of transitions) {
91
+ const update = t.setSpentBy
92
+ ? { spendable: true, spentBy: undefined }
93
+ : { spendable: true };
94
+ await storage.updateOutput((0, utilityHelpers_1.verifyId)(t.outputId), update, trx);
95
+ }
96
+ });
97
+ }
10
98
  /**
11
99
  * Internalize Action allows a wallet to take ownership of outputs in a pre-existing transaction.
12
100
  * The transaction may, or may not already be known to both the storage and user.
@@ -20,7 +108,17 @@ const blockHeaderUtilities_1 = require("../../services/chaintracker/chaintracks/
20
108
  * Processing starts with simple validation and then checks for a pre-existing transaction.
21
109
  * If the transaction is already known to the user, then the outputs are reviewed against the existing outputs treatment,
22
110
  * and merge rules are added to the arguments passed to the storage layer.
23
- * The existing transaction must be in the 'unproven' or 'completed' status. Any other status is an error.
111
+ *
112
+ * The existing transaction's `status` determines what the merge path does next:
113
+ * - `'unproven'` or `'completed'`: outputs are merged into the existing record. The transaction status is left as-is.
114
+ * - `'nosend'`: an ambiguous case. The transaction was created with `noSend: true` and may have been externally
115
+ * broadcast, may be sitting in a sendWith chain, or may be stuck mid-flight. The merge path treats the
116
+ * `internalizeAction` call as explicit authorization to advance the lifecycle. Specifically: `transactions.status`
117
+ * is promoted to `'completed'` (when a BUMP is included in the BEEF) or `'unproven'` (otherwise), and the
118
+ * `proven_tx_req` is moved out of `'nosend'` so Monitor's standard proof-fetching flow can finalize it.
119
+ * This makes the `internalizeAction` semantics consistent regardless of whether the originator shares the
120
+ * same storage as the internalizer or not.
121
+ * - Any other status: an error.
24
122
  *
25
123
  * When the transaction already exists, the description is updated. The isOutgoing sense is not changed.
26
124
  *
@@ -43,6 +141,31 @@ async function internalizeAction(storage, auth, args) {
43
141
  return ctx.r;
44
142
  }
45
143
  class InternalizeActionContext {
144
+ storage;
145
+ auth;
146
+ args;
147
+ /** result to be returned */
148
+ r;
149
+ /** the parsed input AtomicBEEF */
150
+ ab;
151
+ /** the incoming transaction extracted from AtomicBEEF */
152
+ tx;
153
+ /** the user's change basket */
154
+ changeBasket;
155
+ /** cached baskets referenced by basket insertions */
156
+ baskets;
157
+ /** existing storage transaction for this txid and userId */
158
+ etx;
159
+ /** existing outputs */
160
+ eos;
161
+ /** all the basket insertions from incoming outputs array */
162
+ basketInsertions;
163
+ /** all the wallet payments from incoming outputs array */
164
+ walletPayments;
165
+ /** outputs this call transitioned spendable=true → false (for rollback) */
166
+ spentInputs;
167
+ userId;
168
+ vargs;
46
169
  constructor(storage, auth, args) {
47
170
  this.storage = storage;
48
171
  this.auth = auth;
@@ -62,6 +185,7 @@ class InternalizeActionContext {
62
185
  this.basketInsertions = [];
63
186
  this.walletPayments = [];
64
187
  this.eos = [];
188
+ this.spentInputs = [];
65
189
  }
66
190
  get isMerge() {
67
191
  return this.r.isMerge;
@@ -211,7 +335,7 @@ class InternalizeActionContext {
211
335
  }
212
336
  async findOrInsertTargetTransaction(satoshis, provenTx) {
213
337
  const now = new Date();
214
- const provenTxId = provenTx === null || provenTx === void 0 ? void 0 : provenTx.provenTxId;
338
+ const provenTxId = provenTx?.provenTxId;
215
339
  const status = (provenTx != null) ? 'completed' : 'unproven';
216
340
  const newTx = {
217
341
  created_at: now,
@@ -246,9 +370,44 @@ class InternalizeActionContext {
246
370
  }
247
371
  return tr.tx;
248
372
  }
373
+ async findOrInsertProvenTxFromBump(bump, btx) {
374
+ const now = new Date();
375
+ const merkleRoot = bump.computeRoot(this.txid);
376
+ const indexEntry = bump.path[0].find(p => p.hash === this.txid);
377
+ if (indexEntry == null) {
378
+ throw new WERR_errors_1.WERR_INTERNAL(`Could not determine transaction index for txid ${this.txid} in bump path. Expected to find txid in bump.path[0]: ${JSON.stringify(bump.path[0])}`);
379
+ }
380
+ const index = indexEntry.offset;
381
+ const header = await this.storage.getServices().getHeaderForHeight(bump.blockHeight);
382
+ if (!header) {
383
+ throw new WERR_errors_1.WERR_INTERNAL(`Block header not found for height ${bump.blockHeight}`);
384
+ }
385
+ const hash = (0, blockHeaderUtilities_1.blockHash)(header);
386
+ const provenTxR = await this.storage.findOrInsertProvenTx({
387
+ created_at: now,
388
+ updated_at: now,
389
+ provenTxId: 0,
390
+ txid: this.txid,
391
+ height: bump.blockHeight,
392
+ index,
393
+ merklePath: bump.toBinary(),
394
+ rawTx: btx.rawTx,
395
+ blockHash: hash,
396
+ merkleRoot
397
+ });
398
+ return provenTxR.proven;
399
+ }
249
400
  async mergedInternalize() {
250
401
  const transactionId = this.etx.transactionId;
402
+ const wasNoSend = this.etx.status === 'nosend';
251
403
  await this.addLabels(transactionId);
404
+ // Externally-broadcast txs internalized into a pre-existing storage
405
+ // record (typically a nosend created by this wallet) still need their
406
+ // consumed user UTXOs marked spent. createAction marks them when the
407
+ // tx is wallet-originated, but a nosend can be merged from a sender
408
+ // that doesn't share storage. Idempotent for the wallet-originated
409
+ // case — already-spent outputs are skipped.
410
+ await this.markInputsSpent(transactionId);
252
411
  for (const payment of this.walletPayments) {
253
412
  if ((payment.eo != null) && !payment.ignore)
254
413
  await this.mergeWalletPaymentForOutput(transactionId, payment);
@@ -261,6 +420,60 @@ class InternalizeActionContext {
261
420
  else
262
421
  await this.storeNewBasketInsertionForOutput(transactionId, basket);
263
422
  }
423
+ // Lifecycle advance when merging into a tx that was 'nosend'.
424
+ //
425
+ // Background: an internalizeAction call against an existing tx in
426
+ // 'nosend' status is the caller asserting the tx has now been
427
+ // externally broadcast (and potentially mined if the BEEF includes
428
+ // a BUMP). Before this advance, mergedInternalize only updated
429
+ // labels + per-output ownership records and left transactions.status
430
+ // and proven_tx_reqs.status unchanged. The nosend state then had no
431
+ // reliable retirement path: TaskCheckNoSends's default daily cadence
432
+ // combined with intermittent wallet uptime meant the req could sit
433
+ // in 'nosend' indefinitely, and a subsequent abortAction call would
434
+ // unconditionally invalidate the on-chain tx — orphaning every
435
+ // output the tx produced.
436
+ //
437
+ // BUMP-present path: mirror newInternalize's findOrInsertProvenTx
438
+ // path, then promote the existing transaction record to 'completed'
439
+ // with the new provenTxId and retire the proven_tx_req to
440
+ // 'completed' too.
441
+ //
442
+ // BUMP-absent path: promote transactions.status to 'unproven' (so
443
+ // listOutputs filters the tx's outputs into the spendable set
444
+ // immediately) and transition the proven_tx_req to 'unmined' so
445
+ // TaskCheckForProofs picks it up on its next nudge cycle. This
446
+ // hands off to Monitor's standard proof-fetching flow.
447
+ if (wasNoSend) {
448
+ const bump = this.ab.findBump(this.txid);
449
+ if (bump != null) {
450
+ const btx = this.ab.findTxid(this.txid);
451
+ if (btx == null) {
452
+ throw new WERR_errors_1.WERR_INTERNAL(`Could not find transaction ${this.txid} in AtomicBEEF`);
453
+ }
454
+ const proven = await this.findOrInsertProvenTxFromBump(bump, btx);
455
+ await this.storage.updateTransaction(transactionId, {
456
+ provenTxId: proven.provenTxId,
457
+ status: 'completed'
458
+ });
459
+ const req = await EntityProvenTxReq_1.EntityProvenTxReq.fromStorageTxid(this.storage, this.txid);
460
+ if (req != null && req.status === 'nosend') {
461
+ req.addHistoryNote({ what: 'internalizeAction-bumpRetire', userId: this.userId });
462
+ req.provenTxId = proven.provenTxId;
463
+ req.status = 'completed';
464
+ await req.updateStorageDynamicProperties(this.storage);
465
+ }
466
+ }
467
+ else {
468
+ await this.storage.updateTransaction(transactionId, { status: 'unproven' });
469
+ const req = await EntityProvenTxReq_1.EntityProvenTxReq.fromStorageTxid(this.storage, this.txid);
470
+ if (req != null && req.status === 'nosend') {
471
+ req.addHistoryNote({ what: 'internalizeAction-nosendRetire', userId: this.userId });
472
+ req.status = 'unmined';
473
+ await req.updateStorageDynamicProperties(this.storage);
474
+ }
475
+ }
476
+ }
264
477
  }
265
478
  /**
266
479
  * internalize output(s) from a transaction with txid unknown to storage.
@@ -276,34 +489,13 @@ class InternalizeActionContext {
276
489
  // The presence bump indicates the transaction has already been mined.
277
490
  // Verify a provenTx record exist before creating a new transaction with completed status...
278
491
  // Which normally means creating a new provenTx record.
279
- const now = new Date();
280
- const merkleRoot = bump.computeRoot(this.txid);
281
- const indexEntry = bump.path[0].find(p => p.hash === this.txid);
282
- if (indexEntry == null) {
283
- throw new WERR_errors_1.WERR_INTERNAL(`Could not determine transaction index for txid ${this.txid} in bump path. Expected to find txid in bump.path[0]: ${JSON.stringify(bump.path[0])}`);
284
- }
285
- const index = indexEntry.offset;
286
- const header = await this.storage.getServices().getHeaderForHeight(bump.blockHeight);
287
- if (!header) {
288
- throw new WERR_errors_1.WERR_INTERNAL(`Block header not found for height ${bump.blockHeight}`);
289
- }
290
- const hash = (0, blockHeaderUtilities_1.blockHash)(header);
291
- const provenTxR = await this.storage.findOrInsertProvenTx({
292
- created_at: now,
293
- updated_at: now,
294
- provenTxId: 0,
295
- txid: this.txid,
296
- height: bump.blockHeight,
297
- index,
298
- merklePath: bump.toBinary(),
299
- rawTx: btx.rawTx,
300
- blockHash: hash,
301
- merkleRoot
302
- });
303
- pr.proven = provenTxR.proven;
492
+ pr.proven = await this.findOrInsertProvenTxFromBump(bump, btx);
304
493
  }
305
494
  this.etx = await this.findOrInsertTargetTransaction(this.satoshis, pr.proven);
306
495
  const transactionId = this.etx.transactionId;
496
+ // Mark any user-owned outputs the incoming tx consumes as spent BEFORE
497
+ // attempting broadcast. If broadcast fails we restore them below.
498
+ await this.markInputsSpent(transactionId);
307
499
  if (pr.proven == null) {
308
500
  // beef doesn't include proof of mining for the transaction (etx).
309
501
  // the new transaction record has been added to storage, but (baring race conditions)
@@ -332,6 +524,11 @@ class InternalizeActionContext {
332
524
  };
333
525
  const { swr, ndr } = await (0, processAction_1.shareReqsWithWorld)(this.storage, this.userId, [], false, r);
334
526
  if (ndr[0].status !== 'success') {
527
+ // Roll back the spendable=true → false transitions performed above
528
+ // so the caller can retry with the same UTXOs. Idempotent w.r.t.
529
+ // attemptToPostReqsToNetwork's own updateTransactionStatus('failed')
530
+ // restore on doubleSpend/invalidTx outcomes.
531
+ await this.restoreSpentInputs();
335
532
  this.r.sendWithResults = swr;
336
533
  this.r.notDelayedResults = ndr;
337
534
  // abort the internalize action, WERR_REVIEW_ACTIONS exception will be thrown
@@ -352,6 +549,14 @@ class InternalizeActionContext {
352
549
  await this.storage.findOrInsertTxLabelMap((0, utilityHelpers_1.verifyId)(transactionId), (0, utilityHelpers_1.verifyId)(txLabel.txLabelId));
353
550
  }
354
551
  }
552
+ async markInputsSpent(transactionId) {
553
+ const transitioned = await markUserInputsSpent(this.storage, this.userId, this.tx, transactionId);
554
+ this.spentInputs.push(...transitioned);
555
+ }
556
+ async restoreSpentInputs() {
557
+ await restoreInputsToSpendable(this.storage, this.spentInputs);
558
+ this.spentInputs = [];
559
+ }
355
560
  async addBasketTags(basket, outputId) {
356
561
  for (const tag of basket.tags || []) {
357
562
  await this.storage.tagOutput({ outputId, userId: this.userId }, tag);
@@ -1 +1 @@
1
- {"version":3,"file":"internalizeAction.js","sourceRoot":"","sources":["../../../../../src/storage/methods/internalizeAction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internalizeAction.js","sourceRoot":"","sources":["../../../../../src/storage/methods/internalizeAction.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"processAction.d.ts","sourceRoot":"","sources":["../../../../../src/storage/methods/processAction.ts"],"names":[],"mappings":"AACA,OAAO,EACL,IAAI,EAEJ,cAAc,EAEd,qBAAqB,EACtB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC5B,MAAM,oCAAoC,CAAA;AAU3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAQ9D,wBAAsB,aAAa,CACjC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,2BAA2B,CAAC,CA0CtC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAA;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,SAAS,GAAG,OAAO,CAAA;IAE3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AA6CD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,OAAO,EAClB,CAAC,CAAC,EAAE,oBAAoB,EACxB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC;IAAE,GAAG,EAAE,cAAc,EAAE,CAAC;IAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;CAAE,CAAC,CAsC3E;AAwLD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,iBAAiB,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb"}
1
+ {"version":3,"file":"processAction.d.ts","sourceRoot":"","sources":["../../../../../src/storage/methods/processAction.ts"],"names":[],"mappings":"AACA,OAAO,EACL,IAAI,EAEJ,cAAc,EAEd,qBAAqB,EACtB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC5B,MAAM,oCAAoC,CAAA;AAU3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAQ9D,wBAAsB,aAAa,CACjC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,2BAA2B,CAAC,CA0CtC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAA;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,SAAS,GAAG,OAAO,CAAA;IAE3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AA6CD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,OAAO,EAClB,CAAC,CAAC,EAAE,oBAAoB,EACxB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC;IAAE,GAAG,EAAE,cAAc,EAAE,CAAC;IAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;CAAE,CAAC,CAuC3E;AAwLD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,iBAAiB,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb"}
@@ -13,7 +13,7 @@ const parseTxScriptOffsets_1 = require("../../utility/parseTxScriptOffsets");
13
13
  const utilityHelpers_noBuffer_1 = require("../../utility/utilityHelpers.noBuffer");
14
14
  async function processAction(storage, auth, args) {
15
15
  const logger = args.logger;
16
- logger === null || logger === void 0 ? void 0 : logger.group('storage processAction');
16
+ logger?.group('storage processAction');
17
17
  const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
18
18
  const r = {
19
19
  sendWithResults: undefined
@@ -22,24 +22,24 @@ async function processAction(storage, auth, args) {
22
22
  const txidsOfReqsToShareWithWorld = [...args.sendWith];
23
23
  if (args.isNewTx) {
24
24
  const vargs = await validateCommitNewTxToStorageArgs(storage, userId, args);
25
- logger === null || logger === void 0 ? void 0 : logger.log('validated new tx updates to storage');
25
+ logger?.log('validated new tx updates to storage');
26
26
  ({ req } = await commitNewTxToStorage(storage, userId, vargs));
27
- logger === null || logger === void 0 ? void 0 : logger.log('committed new tx updates to storage ');
27
+ logger?.log('committed new tx updates to storage ');
28
28
  if (!req)
29
29
  throw new WERR_errors_1.WERR_INTERNAL();
30
30
  // Add the new txid to sendWith unless there are no others to send and the noSend option is set.
31
31
  if (args.isNoSend && !args.isSendWith) {
32
- logger === null || logger === void 0 ? void 0 : logger.log(`noSend txid ${req.txid}`);
32
+ logger?.log(`noSend txid ${req.txid}`);
33
33
  }
34
34
  else {
35
35
  txidsOfReqsToShareWithWorld.push(req.txid);
36
- logger === null || logger === void 0 ? void 0 : logger.log(`sending txid ${req.txid}`);
36
+ logger?.log(`sending txid ${req.txid}`);
37
37
  }
38
38
  }
39
39
  const { swr, ndr } = await shareReqsWithWorld(storage, userId, txidsOfReqsToShareWithWorld, args.isDelayed, undefined, logger);
40
40
  r.sendWithResults = swr;
41
41
  r.notDelayedResults = ndr;
42
- logger === null || logger === void 0 ? void 0 : logger.groupEnd();
42
+ logger?.groupEnd();
43
43
  return r;
44
44
  }
45
45
  /**
@@ -71,25 +71,25 @@ async function verifyMergedBeef(storage, r, readyToSendReqs, logger) {
71
71
  return;
72
72
  const beefIsValid = await r.beef.verify(await storage.getServices().getChainTracker());
73
73
  if (!beefIsValid) {
74
- logger === null || logger === void 0 ? void 0 : logger.error(`VERIFY FALSE BEEF: ${r.beef.toLogString()}`);
74
+ logger?.error(`VERIFY FALSE BEEF: ${r.beef.toLogString()}`);
75
75
  throw new WERR_errors_1.WERR_INTERNAL('merged Beef failed validation.');
76
76
  }
77
- logger === null || logger === void 0 ? void 0 : logger.log('beef is valid');
77
+ logger?.log('beef is valid');
78
78
  }
79
79
  async function shareReqsWithWorld(storage, userId, txids, isDelayed, r, logger) {
80
80
  const swr = [];
81
81
  const ndr = undefined;
82
82
  if ((r == null) && txids.length < 1)
83
83
  return { swr, ndr };
84
- r || (r = await storage.getReqsAndBeefToShareWithWorld(txids, []));
84
+ r ||= await storage.getReqsAndBeefToShareWithWorld(txids, []);
85
85
  const readyToSendReqs = [];
86
86
  classifyReqDetails(r.details, swr, readyToSendReqs);
87
87
  const readyToSendReqIds = readyToSendReqs.map(r => r.id);
88
88
  const transactionIds = readyToSendReqs.map(r => r.notify.transactionIds || []).flat();
89
- // If isDelayed, this (or a different beef) will have to be rebuilt at the time of sending.
90
- await verifyMergedBeef(storage, r, readyToSendReqs, logger);
91
89
  const batch = txids.length > 1 ? (0, utilityHelpers_1.randomBytesBase64)(16) : undefined;
92
90
  if (isDelayed) {
91
+ // Delayed sends rebuild BEEF when the monitor sends the req. Do not fail a committed
92
+ // transaction here because the current aggregate BEEF is only a scheduling artifact.
93
93
  if (readyToSendReqIds.length > 0) {
94
94
  await storage.transaction(async (trx) => {
95
95
  await storage.updateProvenTxReq(readyToSendReqIds, { status: 'unsent', batch }, trx);
@@ -100,6 +100,7 @@ async function shareReqsWithWorld(storage, userId, txids, isDelayed, r, logger)
100
100
  }
101
101
  if (readyToSendReqIds.length < 1)
102
102
  return { swr, ndr };
103
+ await verifyMergedBeef(storage, r, readyToSendReqs, logger);
103
104
  if (batch) {
104
105
  for (const req of readyToSendReqs)
105
106
  req.batch = batch;