@bsv/wallet-toolbox-client 2.1.24 → 3.0.0-alpha.0
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/out/src/CWIStyleWalletManager.d.ts +33 -7
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +281 -313
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/SetupClient.d.ts +6 -6
- package/out/src/SetupClient.d.ts.map +1 -1
- package/out/src/SetupClient.js +5 -5
- package/out/src/SetupClient.js.map +1 -1
- package/out/src/SetupWallet.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.d.ts +12 -2
- package/out/src/SimpleWalletManager.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.js +46 -30
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.d.ts +1 -1
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +102 -100
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +1 -1
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +3 -3
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.d.ts.map +1 -1
- package/out/src/WalletLogger.js +16 -8
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +89 -18
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +656 -870
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.d.ts +2 -2
- package/out/src/WalletSettingsManager.d.ts.map +1 -1
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/fundWalletP2PKH.d.ts +2 -2
- package/out/src/fundWalletP2PKH.d.ts.map +1 -1
- package/out/src/fundWalletP2PKH.js +11 -10
- package/out/src/fundWalletP2PKH.js.map +1 -1
- package/out/src/mockchain/MockChainMigrations.d.ts +3 -3
- package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
- package/out/src/mockchain/MockChainMigrations.js.map +1 -1
- package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
- package/out/src/mockchain/MockChainStorage.js +5 -5
- package/out/src/mockchain/MockChainStorage.js.map +1 -1
- package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
- package/out/src/mockchain/MockChainTracker.js +10 -10
- package/out/src/mockchain/MockChainTracker.js.map +1 -1
- package/out/src/mockchain/MockMiner.d.ts.map +1 -1
- package/out/src/mockchain/MockMiner.js +3 -3
- package/out/src/mockchain/MockMiner.js.map +1 -1
- package/out/src/mockchain/MockServices.d.ts +9 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +195 -238
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/mockchain/merkleTree.d.ts.map +1 -1
- package/out/src/mockchain/merkleTree.js +21 -12
- package/out/src/mockchain/merkleTree.js.map +1 -1
- package/out/src/monitor/LeasedMonitorTask.d.ts +43 -0
- package/out/src/monitor/LeasedMonitorTask.d.ts.map +1 -0
- package/out/src/monitor/LeasedMonitorTask.js +89 -0
- package/out/src/monitor/LeasedMonitorTask.js.map +1 -0
- package/out/src/monitor/Monitor.d.ts +24 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +63 -75
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/V7LeasedTask.d.ts +43 -0
- package/out/src/monitor/V7LeasedTask.d.ts.map +1 -0
- package/out/src/monitor/V7LeasedTask.js +89 -0
- package/out/src/monitor/V7LeasedTask.js.map +1 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -2
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +10 -23
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +4 -2
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +83 -16
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +1 -2
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/monitor/tasks/TaskClock.d.ts +1 -1
- package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskClock.js +0 -1
- package/out/src/monitor/tasks/TaskClock.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.d.ts +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts +2 -2
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +7 -5
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts +1 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js +2 -2
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +10 -10
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +2 -2
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +4 -5
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +13 -15
- package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
- package/out/src/monitor/tasks/WalletMonitorTask.js +3 -1
- package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
- package/out/src/sdk/CertOpsWallet.d.ts +3 -3
- package/out/src/sdk/CertOpsWallet.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts +3 -3
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +26 -21
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/out/src/sdk/WERR_errors.js +5 -5
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.d.ts +1 -1
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +10 -3
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js +1 -3
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +19 -19
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +59 -59
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.d.ts +36 -4
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +53 -4
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/ServiceCollection.d.ts +6 -6
- package/out/src/services/ServiceCollection.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.js +3 -4
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +5 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +174 -182
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.js +7 -7
- package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +5 -5
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +5 -3
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +20 -10
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +228 -221
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +9 -10
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts +1 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +3 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +3 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +6 -39
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +8 -6
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +9 -16
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +34 -22
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +31 -30
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +11 -10
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +247 -227
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +8 -7
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +35 -25
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +5 -5
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +13 -11
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +0 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +21 -13
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +28 -24
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +9 -10
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +3 -3
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +7 -14
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +1 -1
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +17 -17
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts +2 -0
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +109 -233
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
- package/out/src/services/providers/exchangeRates.js +3 -3
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.d.ts +68 -0
- package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -0
- package/out/src/services/providers/whatsOnChainHelpers.js +147 -0
- package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -0
- package/out/src/signer/WalletSigner.d.ts.map +1 -1
- package/out/src/signer/WalletSigner.js.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +21 -13
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.js +20 -21
- package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +8 -7
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +8 -6
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.js +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +8 -10
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/storage/StorageIdb.d.ts +16 -1
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +544 -1224
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +124 -1
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +316 -186
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +8 -7
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +32 -32
- package/out/src/storage/StorageReaderWriter.js.map +1 -1
- package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
- package/out/src/storage/StorageSyncReader.js +3 -3
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +3 -0
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +83 -73
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/idbHelpers.d.ts +47 -0
- package/out/src/storage/idbHelpers.d.ts.map +1 -0
- package/out/src/storage/idbHelpers.js +417 -0
- package/out/src/storage/idbHelpers.js.map +1 -0
- package/out/src/storage/methods/ListActionsSpecOp.d.ts +6 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js +28 -2
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +8 -11
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +83 -0
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +338 -63
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +251 -274
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +99 -80
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +15 -13
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
- package/out/src/storage/methods/getSyncChunk.js +4 -3
- package/out/src/storage/methods/getSyncChunk.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +213 -56
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js +85 -110
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listCertificates.d.ts +1 -1
- package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
- package/out/src/storage/methods/listCertificates.js +7 -7
- package/out/src/storage/methods/listCertificates.js.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.js +24 -27
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/offsetKey.d.ts +1 -1
- package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
- package/out/src/storage/methods/offsetKey.js +3 -5
- package/out/src/storage/methods/offsetKey.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts +0 -11
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +168 -93
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
- package/out/src/storage/methods/purgeDataIdb.js +1 -1
- package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
- package/out/src/storage/methods/utils.d.ts.map +1 -1
- package/out/src/storage/methods/utils.js +7 -1
- package/out/src/storage/methods/utils.js.map +1 -1
- package/out/src/storage/remoting/StorageClient.d.ts +4 -270
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +16 -423
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +289 -0
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -0
- package/out/src/storage/remoting/StorageClientBase.js +375 -0
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts +29 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.js +91 -0
- package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -0
- package/out/src/storage/schema/StorageIdbSchema.d.ts +43 -2
- package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificate.js +5 -4
- package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificateField.js +5 -7
- package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
- package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityCommission.js +6 -8
- package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.js +21 -24
- package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.js +6 -6
- package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTag.js +2 -2
- package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTagMap.js +4 -6
- package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -3
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +22 -23
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +9 -0
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +116 -68
- package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +19 -18
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.js +25 -26
- package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabel.js +2 -2
- package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabelMap.js +4 -6
- package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
- package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityUser.js +3 -3
- package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.js +6 -6
- package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
- package/out/src/storage/schema/monitorLease.d.ts +57 -0
- package/out/src/storage/schema/monitorLease.d.ts.map +1 -0
- package/out/src/storage/schema/monitorLease.js +101 -0
- package/out/src/storage/schema/monitorLease.js.map +1 -0
- package/out/src/storage/schema/processingFsm.d.ts +27 -0
- package/out/src/storage/schema/processingFsm.d.ts.map +1 -0
- package/out/src/storage/schema/processingFsm.js +132 -0
- package/out/src/storage/schema/processingFsm.js.map +1 -0
- package/out/src/storage/schema/tables/TableAction.d.ts +38 -0
- package/out/src/storage/schema/tables/TableAction.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableAction.js +3 -0
- package/out/src/storage/schema/tables/TableAction.js.map +1 -0
- package/out/src/storage/schema/tables/TableCertificate.d.ts +2 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableChainTip.d.ts +17 -0
- package/out/src/storage/schema/tables/TableChainTip.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableChainTip.js +3 -0
- package/out/src/storage/schema/tables/TableChainTip.js.map +1 -0
- package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableMonitorLease.d.ts +23 -0
- package/out/src/storage/schema/tables/TableMonitorLease.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableMonitorLease.js +3 -0
- package/out/src/storage/schema/tables/TableMonitorLease.js.map +1 -0
- package/out/src/storage/schema/tables/TableOutput.d.ts +10 -2
- package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutput.js +1 -1
- package/out/src/storage/schema/tables/TableOutput.js.map +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +24 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransactionNew.d.ts +50 -0
- package/out/src/storage/schema/tables/TableTransactionNew.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableTransactionNew.js +3 -0
- package/out/src/storage/schema/tables/TableTransactionNew.js.map +1 -0
- package/out/src/storage/schema/tables/TableTransactionV7.d.ts +50 -0
- package/out/src/storage/schema/tables/TableTransactionV7.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableTransactionV7.js +3 -0
- package/out/src/storage/schema/tables/TableTransactionV7.js.map +1 -0
- package/out/src/storage/schema/tables/TableTxAudit.d.ts +26 -0
- package/out/src/storage/schema/tables/TableTxAudit.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableTxAudit.js +3 -0
- package/out/src/storage/schema/tables/TableTxAudit.js.map +1 -0
- package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
- package/out/src/storage/schema/tables/index.d.ts +5 -0
- package/out/src/storage/schema/tables/index.d.ts.map +1 -1
- package/out/src/storage/schema/tables/index.js +5 -0
- package/out/src/storage/schema/tables/index.js.map +1 -1
- package/out/src/storage/schema/transactionCrud.d.ts +41 -0
- package/out/src/storage/schema/transactionCrud.d.ts.map +1 -0
- package/out/src/storage/schema/transactionCrud.js +205 -0
- package/out/src/storage/schema/transactionCrud.js.map +1 -0
- package/out/src/storage/schema/transactionService.d.ts +315 -0
- package/out/src/storage/schema/transactionService.d.ts.map +1 -0
- package/out/src/storage/schema/transactionService.js +783 -0
- package/out/src/storage/schema/transactionService.js.map +1 -0
- package/out/src/storage/schema/txAudit.d.ts +33 -0
- package/out/src/storage/schema/txAudit.d.ts.map +1 -0
- package/out/src/storage/schema/txAudit.js +64 -0
- package/out/src/storage/schema/txAudit.js.map +1 -0
- package/out/src/storage/schema/v7Crud.d.ts +41 -0
- package/out/src/storage/schema/v7Crud.d.ts.map +1 -0
- package/out/src/storage/schema/v7Crud.js +205 -0
- package/out/src/storage/schema/v7Crud.js.map +1 -0
- package/out/src/storage/schema/v7Fsm.d.ts +27 -0
- package/out/src/storage/schema/v7Fsm.d.ts.map +1 -0
- package/out/src/storage/schema/v7Fsm.js +124 -0
- package/out/src/storage/schema/v7Fsm.js.map +1 -0
- package/out/src/storage/schema/v7MonitorLease.d.ts +57 -0
- package/out/src/storage/schema/v7MonitorLease.d.ts.map +1 -0
- package/out/src/storage/schema/v7MonitorLease.js +101 -0
- package/out/src/storage/schema/v7MonitorLease.js.map +1 -0
- package/out/src/storage/schema/v7Service.d.ts +305 -0
- package/out/src/storage/schema/v7Service.d.ts.map +1 -0
- package/out/src/storage/schema/v7Service.js +757 -0
- package/out/src/storage/schema/v7Service.js.map +1 -0
- package/out/src/storage/schema/v7TxAudit.d.ts +33 -0
- package/out/src/storage/schema/v7TxAudit.d.ts.map +1 -0
- package/out/src/storage/schema/v7TxAudit.js +64 -0
- package/out/src/storage/schema/v7TxAudit.js.map +1 -0
- package/out/src/storage/storageProviderHelpers.d.ts +34 -0
- package/out/src/storage/storageProviderHelpers.d.ts.map +1 -0
- package/out/src/storage/storageProviderHelpers.js +100 -0
- package/out/src/storage/storageProviderHelpers.js.map +1 -0
- package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.js +2 -1
- package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
- package/out/src/utility/aggregateResults.d.ts +1 -1
- package/out/src/utility/aggregateResults.d.ts.map +1 -1
- package/out/src/utility/aggregateResults.js +2 -2
- package/out/src/utility/aggregateResults.js.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.d.ts +2 -2
- package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.js +16 -9
- package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
- package/out/src/utility/identityUtils.js +1 -1
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts +4 -4
- package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
- package/out/src/utility/stampLog.d.ts.map +1 -1
- package/out/src/utility/stampLog.js +7 -5
- package/out/src/utility/stampLog.js.map +1 -1
- package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
- package/out/src/utility/tscProofToMerklePath.js +1 -1
- package/out/src/utility/tscProofToMerklePath.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts +1 -2
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +10 -10
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.d.ts +7 -3
- package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +3 -3
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/wab-client/WABClient.d.ts +1 -1
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +12 -12
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -3
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
- package/package.json +7 -6
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.StorageProvider = void 0;
|
|
4
4
|
exports.validateStorageFeeModel = validateStorageFeeModel;
|
|
5
5
|
const sdk_1 = require("@bsv/sdk");
|
|
6
|
+
const storageProviderHelpers_1 = require("./storageProviderHelpers");
|
|
6
7
|
const getBeefForTransaction_1 = require("./methods/getBeefForTransaction");
|
|
7
8
|
const processAction_1 = require("./methods/processAction");
|
|
8
9
|
const attemptToPostReqsToNetwork_1 = require("./methods/attemptToPostReqsToNetwork");
|
|
@@ -50,7 +51,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
50
51
|
async findStaleMerkleRoots(args) {
|
|
51
52
|
let provenTxs = await this.findProvenTxs({ partial: { height: args.height } });
|
|
52
53
|
provenTxs = provenTxs.filter(ptx => ptx.merkleRoot !== args.merkleRoot);
|
|
53
|
-
|
|
54
|
+
const roots = Array.from(new Set(provenTxs.map(ptx => ptx.merkleRoot)));
|
|
54
55
|
return roots;
|
|
55
56
|
}
|
|
56
57
|
async findOutputsByOutpoints(userId, outpoints, trx) {
|
|
@@ -98,7 +99,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
98
99
|
continue;
|
|
99
100
|
const createdAt = this.validateDate(output.created_at);
|
|
100
101
|
const prior = latestByUserId.get(output.userId);
|
|
101
|
-
if (
|
|
102
|
+
if ((prior == null) || createdAt > prior) {
|
|
102
103
|
latestByUserId.set(output.userId, createdAt);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
@@ -106,8 +107,8 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
106
107
|
.sort((a, b) => b[1].getTime() - a[1].getTime())
|
|
107
108
|
.slice(0, limit)
|
|
108
109
|
.map(([userId]) => userId);
|
|
109
|
-
const users = await Promise.all(sortedUserIds.map(userId => this.findUserById(userId, trx)));
|
|
110
|
-
return users.filter((user) =>
|
|
110
|
+
const users = await Promise.all(sortedUserIds.map(async (userId) => await this.findUserById(userId, trx)));
|
|
111
|
+
return users.filter((user) => user != null);
|
|
111
112
|
}
|
|
112
113
|
isStorageProvider() {
|
|
113
114
|
return true;
|
|
@@ -116,39 +117,194 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
116
117
|
this._services = v;
|
|
117
118
|
}
|
|
118
119
|
getServices() {
|
|
119
|
-
if (
|
|
120
|
+
if (this._services == null)
|
|
120
121
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('Must setServices first.');
|
|
121
122
|
return this._services;
|
|
122
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns a TransactionService instance if this storage provider supports
|
|
126
|
+
* the the new schema (i.e. has a Knex handle). Returns undefined for providers
|
|
127
|
+
* that do not support the new schema layer (e.g. StorageIdb).
|
|
128
|
+
*
|
|
129
|
+
* StorageKnex overrides this to return `new TransactionService(this.knex)`.
|
|
130
|
+
*/
|
|
131
|
+
getTransactionService() {
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Insert a legacy-shaped transaction row.
|
|
136
|
+
*
|
|
137
|
+
* Post-cutover: writes into `transactions_legacy` (the renamed legacy table)
|
|
138
|
+
* so that `createAction` can still store unsigned rows before the real txid is
|
|
139
|
+
* known, without touching the new `transactions` table (which requires a non-null txid).
|
|
140
|
+
*
|
|
141
|
+
* Pre-cutover (or on providers that do not support the the new schema): falls back
|
|
142
|
+
* to the standard `insertTransaction` which targets the `transactions` table.
|
|
143
|
+
*
|
|
144
|
+
* StorageKnex overrides this to route to `transactions_legacy` when the table
|
|
145
|
+
* exists, otherwise falls through to the standard `transactions` insert.
|
|
146
|
+
*/
|
|
147
|
+
async insertLegacyTransaction(tx, trx) {
|
|
148
|
+
return await this.insertTransaction(tx, trx);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Insert a `tx_labels_map` row for a legacy transaction that does not yet
|
|
152
|
+
* have a `actions.actionId`.
|
|
153
|
+
*
|
|
154
|
+
* Post-cutover the `tx_labels_map.transactionId` column has a FK to
|
|
155
|
+
* `actions.actionId`. When `createAction` writes labels against a legacy
|
|
156
|
+
* transactionId (before processAction creates the actions row), the FK
|
|
157
|
+
* cannot be satisfied. This shim bypasses that constraint temporarily.
|
|
158
|
+
* `processAction` later rewrites the rows to the real actionId via
|
|
159
|
+
* `TransactionService.repointLabelsToActionId`.
|
|
160
|
+
*
|
|
161
|
+
* Pre-cutover: delegates to `insertTxLabelMap` with no FK bypass needed.
|
|
162
|
+
*
|
|
163
|
+
* StorageKnex overrides this to temporarily disable FK checks on SQLite
|
|
164
|
+
* when `transactions_legacy` is present (indicating post-cutover).
|
|
165
|
+
*/
|
|
166
|
+
async insertLegacyTxLabelMap(labelMap, trx) {
|
|
167
|
+
return await this.insertTxLabelMap(labelMap, trx);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Find-or-insert a `tx_labels_map` row using `insertLegacyTxLabelMap` so
|
|
171
|
+
* that post-cutover FK constraints are bypassed for new unsigned transactions.
|
|
172
|
+
*
|
|
173
|
+
* Mirrors the logic of `findOrInsertTxLabelMap` (StorageReaderWriter) but
|
|
174
|
+
* delegates the insert step to `insertLegacyTxLabelMap`.
|
|
175
|
+
*/
|
|
176
|
+
async findOrInsertLegacyTxLabelMap(transactionId, txLabelId, trx) {
|
|
177
|
+
const partial = { transactionId, txLabelId };
|
|
178
|
+
for (let retry = 0;; retry++) {
|
|
179
|
+
try {
|
|
180
|
+
const now = new Date();
|
|
181
|
+
let txLabelMap = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTxLabelMaps({ partial, trx }));
|
|
182
|
+
if (txLabelMap == null) {
|
|
183
|
+
txLabelMap = {
|
|
184
|
+
...partial,
|
|
185
|
+
created_at: now,
|
|
186
|
+
updated_at: now,
|
|
187
|
+
isDeleted: false
|
|
188
|
+
};
|
|
189
|
+
await this.insertLegacyTxLabelMap(txLabelMap, trx);
|
|
190
|
+
}
|
|
191
|
+
if (txLabelMap.isDeleted) {
|
|
192
|
+
await this.updateTxLabelMap(transactionId, txLabelId, { isDeleted: false });
|
|
193
|
+
}
|
|
194
|
+
return txLabelMap;
|
|
195
|
+
}
|
|
196
|
+
catch (error_) {
|
|
197
|
+
if (retry > 0)
|
|
198
|
+
throw error_;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Find legacy-shaped transaction rows from the appropriate table.
|
|
204
|
+
*
|
|
205
|
+
* Post-cutover: queries `transactions_legacy` (the renamed legacy schema
|
|
206
|
+
* table that holds unsigned/unprocessed rows without a real txid).
|
|
207
|
+
* Pre-cutover (or on providers that do not support the the new schema): falls back
|
|
208
|
+
* to the standard `findTransactions` which targets the `transactions` table.
|
|
209
|
+
*
|
|
210
|
+
* Used by `processAction.validateCommitNewTxToStorageArgs` to locate the
|
|
211
|
+
* unsigned transaction row created by `createAction` via `insertLegacyTransaction`.
|
|
212
|
+
*
|
|
213
|
+
* StorageKnex overrides this to route to `transactions_legacy` when the
|
|
214
|
+
* table exists (post-cutover), otherwise falls through to `findTransactions`.
|
|
215
|
+
*/
|
|
216
|
+
async findLegacyTransactions(args) {
|
|
217
|
+
return await this.findTransactions(args);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Update a legacy-shaped transaction row in the appropriate table.
|
|
221
|
+
*
|
|
222
|
+
* Post-cutover: updates `transactions_legacy` (where unsigned rows live).
|
|
223
|
+
* Pre-cutover: delegates to the standard `updateTransaction`.
|
|
224
|
+
*
|
|
225
|
+
* Used by `processAction.commitNewTxToStorage` to write back the final txid
|
|
226
|
+
* and status to the legacy row that was created by `createAction`.
|
|
227
|
+
*
|
|
228
|
+
* StorageKnex overrides this to route to `transactions_legacy` when the
|
|
229
|
+
* table exists (post-cutover), otherwise falls through to `updateTransaction`.
|
|
230
|
+
*/
|
|
231
|
+
async updateLegacyTransaction(id, update, trx) {
|
|
232
|
+
return await this.updateTransaction(id, update, trx);
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Mark an output as spent by a (potentially legacy) transaction.
|
|
236
|
+
*
|
|
237
|
+
* Post-cutover on SQLite: setting `outputs.spentBy = legacyTransactionId`
|
|
238
|
+
* violates the FK `outputs.spentBy → transactions.transactionId` because
|
|
239
|
+
* unsigned transactions created by `createAction` live in `transactions_legacy`.
|
|
240
|
+
* This method disables the FK constraint for the duration of the update.
|
|
241
|
+
* The constraint will be satisfied once `processAction` creates the new schema row and
|
|
242
|
+
* the bridge-period is complete.
|
|
243
|
+
*
|
|
244
|
+
* Pre-cutover: delegates to `updateOutput` with no FK bypass.
|
|
245
|
+
*
|
|
246
|
+
* StorageKnex overrides this to toggle `PRAGMA foreign_keys` around the UPDATE
|
|
247
|
+
* when `isPostCutover()` and the dbtype is `SQLite`.
|
|
248
|
+
*
|
|
249
|
+
* Mapping §2: bridge-period `outputs.spentBy` temporarily references
|
|
250
|
+
* `transactions_legacy.transactionId` during `createAction`; new-schema FK is bypassed.
|
|
251
|
+
*/
|
|
252
|
+
async markOutputAsSpentBy(outputId, update, trx) {
|
|
253
|
+
await this.updateOutput(outputId, update, trx);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Disable FK enforcement on the underlying database connection.
|
|
257
|
+
*
|
|
258
|
+
* No-op on non-SQLite or pre-cutover databases. On post-cutover SQLite,
|
|
259
|
+
* `StorageKnex` overrides this to run `PRAGMA foreign_keys = OFF` on the
|
|
260
|
+
* bare knex connection BEFORE a transaction is opened (since PRAGMA changes
|
|
261
|
+
* inside SQLite transactions are silently ignored).
|
|
262
|
+
*
|
|
263
|
+
* Must be paired with a `enableForeignKeys()` call in a finally block.
|
|
264
|
+
*/
|
|
265
|
+
async disableForeignKeys() {
|
|
266
|
+
// no-op by default (non-SQLite or pre-cutover)
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Re-enable FK enforcement on the underlying database connection.
|
|
270
|
+
* Counterpart to `disableForeignKeys()`.
|
|
271
|
+
*/
|
|
272
|
+
async enableForeignKeys() {
|
|
273
|
+
// no-op by default
|
|
274
|
+
}
|
|
123
275
|
async abortAction(auth, args) {
|
|
124
276
|
if (!auth.userId)
|
|
125
277
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('auth.userId', 'valid');
|
|
126
278
|
const userId = auth.userId;
|
|
127
279
|
let reference = args.reference;
|
|
128
|
-
let txid
|
|
280
|
+
let txid;
|
|
129
281
|
const r = await this.transaction(async (trx) => {
|
|
130
|
-
|
|
282
|
+
// Post-cutover: unsigned/unprocessed rows live in transactions_legacy.
|
|
283
|
+
// findLegacyTransactions routes to the correct table.
|
|
284
|
+
// Mapping §2: legacy `unsigned` → no equivalent in new schema; must check transactions_legacy.
|
|
285
|
+
let tx = (0, utilityHelpers_1.verifyOneOrNone)(await this.findLegacyTransactions({
|
|
131
286
|
partial: { reference, userId },
|
|
132
287
|
noRawTx: true,
|
|
133
288
|
trx
|
|
134
289
|
}));
|
|
135
|
-
if (
|
|
290
|
+
if ((tx == null) && args.reference.length === 64) {
|
|
136
291
|
// reference may also be a txid
|
|
137
292
|
txid = reference;
|
|
138
293
|
reference = undefined;
|
|
139
|
-
tx = (0, utilityHelpers_1.verifyOneOrNone)(await this.
|
|
294
|
+
tx = (0, utilityHelpers_1.verifyOneOrNone)(await this.findLegacyTransactions({
|
|
140
295
|
partial: { txid, userId },
|
|
141
296
|
noRawTx: true,
|
|
142
297
|
trx
|
|
143
298
|
}));
|
|
144
299
|
}
|
|
145
300
|
const unAbortableStatus = ['completed', 'failed', 'sending', 'unproven'];
|
|
146
|
-
if (
|
|
301
|
+
if ((tx == null) || !tx.isOutgoing || unAbortableStatus.findIndex(s => s === tx.status) > -1) {
|
|
147
302
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('reference', 'an inprocess, outgoing action that has not been signed and shared to the network.');
|
|
303
|
+
}
|
|
148
304
|
await this.updateTransactionStatus('failed', tx.transactionId, userId, reference, trx);
|
|
149
305
|
if (tx.txid) {
|
|
150
306
|
const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
151
|
-
if (req) {
|
|
307
|
+
if (req != null) {
|
|
152
308
|
req.addHistoryNote({ what: 'abortAction', reference: args.reference });
|
|
153
309
|
req.status = 'invalid';
|
|
154
310
|
await req.updateStorageDynamicProperties(this, trx);
|
|
@@ -190,43 +346,24 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
190
346
|
r.details.push(d);
|
|
191
347
|
try {
|
|
192
348
|
d.proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
|
|
193
|
-
if (d.proven)
|
|
349
|
+
if (d.proven != null) {
|
|
194
350
|
d.status = 'alreadySent';
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
d.req = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid }, trx }));
|
|
354
|
+
if (d.req == null) {
|
|
355
|
+
d.status = 'error';
|
|
356
|
+
d.error = `ERR_UNKNOWN_TXID: ${txid} was not found.`;
|
|
357
|
+
}
|
|
195
358
|
else {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
d.req
|
|
200
|
-
if (!d.req) {
|
|
201
|
-
d.status = 'error';
|
|
202
|
-
d.error = `ERR_UNKNOWN_TXID: ${txid} was not found.`;
|
|
203
|
-
}
|
|
204
|
-
else if (errorStatus.indexOf(d.req.status) > -1) {
|
|
205
|
-
d.status = 'error';
|
|
206
|
-
d.error = `ERR_INVALID_PARAMETER: ${txid} is not ready to send.`;
|
|
207
|
-
}
|
|
208
|
-
else if (alreadySentStatus.indexOf(d.req.status) > -1) {
|
|
209
|
-
d.status = 'alreadySent';
|
|
210
|
-
}
|
|
211
|
-
else if (readyToSendStatus.indexOf(d.req.status) > -1) {
|
|
212
|
-
if (!d.req.rawTx || !d.req.inputBEEF) {
|
|
213
|
-
d.status = 'error';
|
|
214
|
-
d.error = `ERR_INTERNAL: ${txid} req is missing rawTx or beef.`;
|
|
215
|
-
}
|
|
216
|
-
else
|
|
217
|
-
d.status = 'readyToSend';
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
d.status = 'error';
|
|
221
|
-
d.error = `ERR_INTERNAL: ${txid} has unexpected req status ${d.req.status}`;
|
|
222
|
-
}
|
|
223
|
-
if (d.status === 'readyToSend') {
|
|
224
|
-
await this.mergeReqToBeefToShareExternally(d.req, r.beef, knownTxids, trx);
|
|
225
|
-
}
|
|
359
|
+
(0, storageProviderHelpers_1.classifyReqStatus)(d, d.req);
|
|
360
|
+
}
|
|
361
|
+
if (d.status === 'readyToSend') {
|
|
362
|
+
await this.mergeReqToBeefToShareExternally(d.req, r.beef, knownTxids, trx);
|
|
226
363
|
}
|
|
227
364
|
}
|
|
228
|
-
catch (
|
|
229
|
-
const e = WalletError_1.WalletError.fromUnknown(
|
|
365
|
+
catch (error_) {
|
|
366
|
+
const e = WalletError_1.WalletError.fromUnknown(error_);
|
|
230
367
|
d.error = `${e.name}: ${e.message}`;
|
|
231
368
|
}
|
|
232
369
|
}
|
|
@@ -234,23 +371,11 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
234
371
|
}
|
|
235
372
|
async mergeReqToBeefToShareExternally(req, mergeToBeef, knownTxids, trx) {
|
|
236
373
|
const { rawTx, inputBEEF: beef } = req;
|
|
237
|
-
if (!rawTx ||
|
|
238
|
-
throw new WERR_errors_1.WERR_INTERNAL(
|
|
374
|
+
if (!rawTx || (beef == null))
|
|
375
|
+
throw new WERR_errors_1.WERR_INTERNAL('req rawTx and beef must be valid.');
|
|
239
376
|
mergeToBeef.mergeRawTx((0, utilityHelpers_noBuffer_1.asArray)(rawTx));
|
|
240
377
|
mergeToBeef.mergeBeef((0, utilityHelpers_noBuffer_1.asArray)(beef));
|
|
241
|
-
|
|
242
|
-
for (const input of tx.inputs) {
|
|
243
|
-
if (!input.sourceTXID)
|
|
244
|
-
throw new WERR_errors_1.WERR_INTERNAL(`req all transaction inputs must have valid sourceTXID`);
|
|
245
|
-
const txid = input.sourceTXID;
|
|
246
|
-
const btx = mergeToBeef.findTxid(txid);
|
|
247
|
-
if (!btx) {
|
|
248
|
-
if (knownTxids && knownTxids.indexOf(txid) > -1)
|
|
249
|
-
mergeToBeef.mergeTxidOnly(txid);
|
|
250
|
-
else
|
|
251
|
-
await this.getValidBeefForKnownTxid(txid, mergeToBeef, undefined, knownTxids, trx);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
378
|
+
await (0, storageProviderHelpers_1.mergeInputsIntoBeef)((0, utilityHelpers_noBuffer_1.asArray)(rawTx), mergeToBeef, knownTxids, trx, async (txid, beef, _trust, knownTxids, trx) => { await this.getValidBeefForKnownTxid(txid, beef, undefined, knownTxids, trx); });
|
|
254
379
|
}
|
|
255
380
|
/**
|
|
256
381
|
* Checks if txid is a known valid ProvenTx and returns it if found.
|
|
@@ -266,33 +391,37 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
266
391
|
* @param trx
|
|
267
392
|
* @returns
|
|
268
393
|
*/
|
|
394
|
+
async upsertProvenTxReq(txid, newReq, trx) {
|
|
395
|
+
const existing = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid }, trx }));
|
|
396
|
+
if (existing == null && newReq == null)
|
|
397
|
+
return undefined;
|
|
398
|
+
if (existing == null) {
|
|
399
|
+
await this.insertProvenTxReq(newReq, trx);
|
|
400
|
+
return newReq;
|
|
401
|
+
}
|
|
402
|
+
if (newReq != null) {
|
|
403
|
+
const req1 = new entities_1.EntityProvenTxReq(existing);
|
|
404
|
+
req1.mergeHistory(newReq, undefined, true);
|
|
405
|
+
req1.mergeNotifyTransactionIds(newReq);
|
|
406
|
+
await req1.updateStorageDynamicProperties(this, trx);
|
|
407
|
+
}
|
|
408
|
+
return existing;
|
|
409
|
+
}
|
|
269
410
|
async getProvenOrReq(txid, newReq, trx) {
|
|
270
|
-
if (newReq && txid !== newReq.txid)
|
|
271
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('newReq',
|
|
411
|
+
if ((newReq != null) && txid !== newReq.txid)
|
|
412
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('newReq', 'same txid');
|
|
272
413
|
const r = { proven: undefined, req: undefined };
|
|
273
414
|
r.proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
|
|
274
|
-
if (r.proven)
|
|
415
|
+
if (r.proven != null)
|
|
275
416
|
return r;
|
|
276
417
|
for (let retry = 0;; retry++) {
|
|
277
418
|
try {
|
|
278
|
-
r.req =
|
|
279
|
-
if (!r.req && !newReq)
|
|
280
|
-
break;
|
|
281
|
-
if (!r.req && newReq) {
|
|
282
|
-
await this.insertProvenTxReq(newReq, trx);
|
|
283
|
-
}
|
|
284
|
-
if (r.req && newReq) {
|
|
285
|
-
// Merge history and notify into existing
|
|
286
|
-
const req1 = new entities_1.EntityProvenTxReq(r.req);
|
|
287
|
-
req1.mergeHistory(newReq, undefined, true);
|
|
288
|
-
req1.mergeNotifyTransactionIds(newReq);
|
|
289
|
-
await req1.updateStorageDynamicProperties(this, trx);
|
|
290
|
-
}
|
|
419
|
+
r.req = await this.upsertProvenTxReq(txid, newReq, trx);
|
|
291
420
|
break;
|
|
292
421
|
}
|
|
293
|
-
catch (
|
|
422
|
+
catch (error_) {
|
|
294
423
|
if (retry > 0)
|
|
295
|
-
throw
|
|
424
|
+
throw error_;
|
|
296
425
|
}
|
|
297
426
|
}
|
|
298
427
|
return r;
|
|
@@ -316,8 +445,9 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
316
445
|
* @param trx
|
|
317
446
|
*/
|
|
318
447
|
async updateTransactionStatus(status, transactionId, userId, reference, trx) {
|
|
319
|
-
if (!transactionId && !(userId && reference))
|
|
448
|
+
if (!transactionId && !(userId && reference)) {
|
|
320
449
|
throw new WERR_errors_1.WERR_MISSING_PARAMETER('either transactionId or userId and reference');
|
|
450
|
+
}
|
|
321
451
|
await this.transaction(async (trx) => {
|
|
322
452
|
const where = {};
|
|
323
453
|
if (transactionId)
|
|
@@ -326,16 +456,23 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
326
456
|
where.userId = userId;
|
|
327
457
|
if (reference)
|
|
328
458
|
where.reference = reference;
|
|
329
|
-
|
|
330
|
-
//
|
|
459
|
+
// Post-cutover: unsigned/unprocessed rows live in transactions_legacy.
|
|
460
|
+
// findLegacyTransactions routes to transactions_legacy when post-cutover,
|
|
461
|
+
// falls back to findTransactions pre-cutover.
|
|
462
|
+
// Mapping §2: legacy `unsigned`/`unprocessed` rows only exist in
|
|
463
|
+
// transactions_legacy post-cutover; new `transactions` has `processing`.
|
|
464
|
+
const tx = (0, utilityHelpers_1.verifyOne)(await this.findLegacyTransactions({ partial: where, noRawTx: true, trx }));
|
|
465
|
+
// if (tx.status === status)
|
|
331
466
|
// no change required. Assume inputs and outputs spendable and spentBy are valid for status.
|
|
332
|
-
//return
|
|
467
|
+
// return
|
|
333
468
|
// Once completed, this method cannot be used to "uncomplete" transaction.
|
|
334
|
-
if ((status !== 'completed' && tx.status === 'completed') || tx.provenTxId)
|
|
469
|
+
if ((status !== 'completed' && tx.status === 'completed') || tx.provenTxId) {
|
|
335
470
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('The status of a "completed" transaction cannot be changed.');
|
|
471
|
+
}
|
|
336
472
|
// It is not possible to un-fail a transaction. Information is lost and not recoverable.
|
|
337
|
-
if (status !== 'failed' && tx.status === 'failed')
|
|
338
|
-
throw new WERR_errors_1.WERR_INVALID_OPERATION(
|
|
473
|
+
if (status !== 'failed' && tx.status === 'failed') {
|
|
474
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('A "failed" transaction may not be un-failed by this method.');
|
|
475
|
+
}
|
|
339
476
|
switch (status) {
|
|
340
477
|
case 'failed':
|
|
341
478
|
{
|
|
@@ -360,7 +497,8 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
360
497
|
default:
|
|
361
498
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('status', `not be ${status}`);
|
|
362
499
|
}
|
|
363
|
-
|
|
500
|
+
// Post-cutover: updateLegacyTransaction routes to transactions_legacy.
|
|
501
|
+
await this.updateLegacyTransaction(tx.transactionId, { status }, trx);
|
|
364
502
|
}, trx);
|
|
365
503
|
}
|
|
366
504
|
async createAction(auth, args) {
|
|
@@ -399,64 +537,69 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
399
537
|
*/
|
|
400
538
|
async getValidBeefForKnownTxid(txid, mergeToBeef, trustSelf, knownTxids, trx, requiredLevels) {
|
|
401
539
|
const beef = await this.getValidBeefForTxid(txid, mergeToBeef, trustSelf, knownTxids, trx, requiredLevels);
|
|
402
|
-
if (
|
|
540
|
+
if (beef == null)
|
|
403
541
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('txid', `known to storage. ${txid} is not known.`);
|
|
404
542
|
return beef;
|
|
405
543
|
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
544
|
+
/**
|
|
545
|
+
* Handles the proven-tx branch of getValidBeefForTxid.
|
|
546
|
+
*
|
|
547
|
+
* Returns the beef if the proof was merged and we can stop, or `undefined` to
|
|
548
|
+
* signal that the caller should fall through to the rawTx path. May also
|
|
549
|
+
* populate `r.rawTx` so the rawTx path can proceed without re-fetching.
|
|
550
|
+
*/
|
|
551
|
+
async handleProvenTxBranch(txid, r, beef, trustSelf, requiredLevels, chainTracker, skipInvalidProofs) {
|
|
552
|
+
if (requiredLevels) {
|
|
553
|
+
// Need more levels — caller should proceed via rawTx path
|
|
554
|
+
r.rawTx = r.proven.rawTx;
|
|
555
|
+
return undefined;
|
|
556
|
+
}
|
|
557
|
+
if (trustSelf === 'known') {
|
|
558
|
+
beef.mergeTxidOnly(txid);
|
|
559
|
+
return beef;
|
|
560
|
+
}
|
|
561
|
+
const mp = new entities_1.EntityProvenTx(r.proven).getMerklePath();
|
|
562
|
+
if (chainTracker != null) {
|
|
563
|
+
const root = mp.computeRoot();
|
|
564
|
+
const isValid = await chainTracker.isValidRootForHeight(root, r.proven.height);
|
|
565
|
+
if (!isValid) {
|
|
566
|
+
if (!skipInvalidProofs)
|
|
567
|
+
throw new WERR_errors_1.WERR_INVALID_MERKLE_ROOT(r.proven.blockHash, r.proven.height, root, txid);
|
|
568
|
+
// Proof is currently invalid — recurse deeper via rawTx path
|
|
411
569
|
r.rawTx = r.proven.rawTx;
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
if (trustSelf === 'known')
|
|
415
|
-
beef.mergeTxidOnly(txid);
|
|
416
|
-
else {
|
|
417
|
-
const mp = new entities_1.EntityProvenTx(r.proven).getMerklePath();
|
|
418
|
-
if (chainTracker) {
|
|
419
|
-
const root = mp.computeRoot();
|
|
420
|
-
const isValid = await chainTracker.isValidRootForHeight(root, r.proven.height);
|
|
421
|
-
if (!isValid) {
|
|
422
|
-
if (!skipInvalidProofs) {
|
|
423
|
-
throw new WERR_errors_1.WERR_INVALID_MERKLE_ROOT(r.proven.blockHash, r.proven.height, root, txid);
|
|
424
|
-
}
|
|
425
|
-
// ignore this currently invalid proof and try to recurse deeper
|
|
426
|
-
r.rawTx = r.proven.rawTx;
|
|
427
|
-
r.proven = undefined;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
if (r.proven) {
|
|
431
|
-
// If we still like this proof, merge it and return
|
|
432
|
-
beef.mergeRawTx(r.proven.rawTx);
|
|
433
|
-
beef.mergeBump(mp);
|
|
434
|
-
return beef;
|
|
435
|
-
}
|
|
436
|
-
}
|
|
570
|
+
r.proven = undefined;
|
|
571
|
+
return undefined;
|
|
437
572
|
}
|
|
438
573
|
}
|
|
439
|
-
|
|
574
|
+
// Proof is good — merge and return
|
|
575
|
+
beef.mergeRawTx(r.proven.rawTx);
|
|
576
|
+
beef.mergeBump(mp);
|
|
577
|
+
return beef;
|
|
578
|
+
}
|
|
579
|
+
async getValidBeefForTxid(txid, mergeToBeef, trustSelf, knownTxids, trx, requiredLevels, chainTracker, skipInvalidProofs) {
|
|
580
|
+
const beef = mergeToBeef !== null && mergeToBeef !== void 0 ? mergeToBeef : new sdk_1.Beef();
|
|
581
|
+
const r = await this.getProvenOrRawTx(txid, trx);
|
|
582
|
+
// --- proven-tx path ---
|
|
583
|
+
if (r.proven != null) {
|
|
584
|
+
const result = await this.handleProvenTxBranch(txid, r, beef, trustSelf, requiredLevels, chainTracker, skipInvalidProofs);
|
|
585
|
+
if (result != null || r.rawTx == null)
|
|
586
|
+
return result;
|
|
587
|
+
}
|
|
588
|
+
// --- rawTx path ---
|
|
589
|
+
if (r.rawTx == null)
|
|
440
590
|
return undefined;
|
|
441
591
|
if (trustSelf === 'known') {
|
|
442
592
|
beef.mergeTxidOnly(txid);
|
|
443
593
|
}
|
|
444
594
|
else {
|
|
445
595
|
beef.mergeRawTx(r.rawTx);
|
|
446
|
-
if (r.inputBEEF)
|
|
596
|
+
if (r.inputBEEF != null)
|
|
447
597
|
beef.mergeBeef(r.inputBEEF);
|
|
448
|
-
const tx = sdk_1.Transaction.fromBinary(r.rawTx);
|
|
449
598
|
if (requiredLevels)
|
|
450
599
|
requiredLevels--;
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
if (!requiredLevels && knownTxids && knownTxids.indexOf(input.sourceTXID) > -1)
|
|
455
|
-
beef.mergeTxidOnly(input.sourceTXID);
|
|
456
|
-
else
|
|
457
|
-
await this.getValidBeefForKnownTxid(input.sourceTXID, beef, trustSelf, knownTxids, trx, requiredLevels);
|
|
458
|
-
}
|
|
459
|
-
}
|
|
600
|
+
await (0, storageProviderHelpers_1.mergeInputBeefs)(r.rawTx, beef, trustSelf, knownTxids, trx, requiredLevels, async (sourceTXID, beef, trustSelf, knownTxids, trx, requiredLevels) => {
|
|
601
|
+
await this.getValidBeefForKnownTxid(sourceTXID, beef, trustSelf, knownTxids, trx, requiredLevels);
|
|
602
|
+
});
|
|
460
603
|
}
|
|
461
604
|
return beef;
|
|
462
605
|
}
|
|
@@ -511,6 +654,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
511
654
|
* Alterations of "typically" to handle:
|
|
512
655
|
*/
|
|
513
656
|
async updateProvenTxReqWithNewProvenTx(args) {
|
|
657
|
+
var _a;
|
|
514
658
|
const req = await entities_1.EntityProvenTxReq.fromStorageId(this, args.provenTxReqId);
|
|
515
659
|
let proven;
|
|
516
660
|
if (req.provenTxId) {
|
|
@@ -542,24 +686,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
542
686
|
return { proven, isNew };
|
|
543
687
|
}));
|
|
544
688
|
if (isNew) {
|
|
545
|
-
|
|
546
|
-
if (ids.length > 0) {
|
|
547
|
-
for (const id of ids) {
|
|
548
|
-
try {
|
|
549
|
-
await this.updateTransaction(id, {
|
|
550
|
-
provenTxId: proven.provenTxId,
|
|
551
|
-
status: 'completed'
|
|
552
|
-
});
|
|
553
|
-
req.addHistoryNote({ what: 'notifyTxOfProof', transactionId: id });
|
|
554
|
-
}
|
|
555
|
-
catch (eu) {
|
|
556
|
-
const { code, description } = WalletError_1.WalletError.fromUnknown(eu);
|
|
557
|
-
const { provenTxId } = proven;
|
|
558
|
-
req.addHistoryNote({ what: 'notifyTxOfProofError', id, provenTxId, code, description });
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
await req.updateStorageDynamicProperties(this);
|
|
562
|
-
}
|
|
689
|
+
await (0, storageProviderHelpers_1.notifyTransactionsOfProof)((_a = req.notify.transactionIds) !== null && _a !== void 0 ? _a : [], proven.provenTxId, note => req.addHistoryNote(note), async () => { await req.updateStorageDynamicProperties(this); }, async (id, update) => { await this.updateTransaction(id, update); });
|
|
563
690
|
}
|
|
564
691
|
}
|
|
565
692
|
const r = {
|
|
@@ -579,51 +706,53 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
579
706
|
async confirmSpendableOutputs() {
|
|
580
707
|
const invalidSpendableOutputs = [];
|
|
581
708
|
const users = await this.findUsers({ partial: {} });
|
|
709
|
+
const services = this.getServices();
|
|
582
710
|
for (const { userId } of users) {
|
|
583
711
|
const defaultBasket = (0, utilityHelpers_1.verifyOne)(await this.findOutputBaskets({ partial: { userId, name: 'default' } }));
|
|
584
|
-
const
|
|
585
|
-
userId,
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
const oid = (0, utilityHelpers_1.verifyId)(o.outputId);
|
|
594
|
-
if (o.spendable) {
|
|
595
|
-
let ok = false;
|
|
596
|
-
if (o.lockingScript && o.lockingScript.length > 0) {
|
|
597
|
-
const hash = services.hashOutputScript((0, utilityHelpers_noBuffer_1.asString)(o.lockingScript));
|
|
598
|
-
const r = await services.getUtxoStatus(hash, undefined, `${o.txid}.${o.vout}`);
|
|
599
|
-
if (r.isUtxo === true)
|
|
600
|
-
ok = true;
|
|
601
|
-
}
|
|
602
|
-
if (!ok)
|
|
603
|
-
invalidSpendableOutputs.push(o);
|
|
604
|
-
}
|
|
712
|
+
const outputs = await this.findOutputs({
|
|
713
|
+
partial: { userId, basketId: defaultBasket.basketId, spendable: true }
|
|
714
|
+
});
|
|
715
|
+
for (const o of outputs) {
|
|
716
|
+
if (!o.spendable)
|
|
717
|
+
continue;
|
|
718
|
+
const isUtxo = await this.checkOutputIsUtxo(o, services);
|
|
719
|
+
if (!isUtxo)
|
|
720
|
+
invalidSpendableOutputs.push(o);
|
|
605
721
|
}
|
|
606
722
|
}
|
|
607
723
|
return { invalidSpendableOutputs };
|
|
608
724
|
}
|
|
725
|
+
async checkOutputIsUtxo(o, services) {
|
|
726
|
+
var _a, _b;
|
|
727
|
+
if ((o.lockingScript == null) || o.lockingScript.length === 0)
|
|
728
|
+
return false;
|
|
729
|
+
const hash = services.hashOutputScript((0, utilityHelpers_noBuffer_1.asString)(o.lockingScript));
|
|
730
|
+
const r = await services.getUtxoStatus(hash, undefined, `${(_a = o.txid) !== null && _a !== void 0 ? _a : ''}.${(_b = o.vout) !== null && _b !== void 0 ? _b : ''}`);
|
|
731
|
+
return r.isUtxo === true;
|
|
732
|
+
}
|
|
609
733
|
async updateProvenTxReqDynamics(id, update, trx) {
|
|
734
|
+
var _a, _b;
|
|
610
735
|
const partial = {};
|
|
611
|
-
if (update
|
|
612
|
-
partial
|
|
613
|
-
if (update
|
|
614
|
-
partial
|
|
615
|
-
if (update
|
|
616
|
-
partial
|
|
617
|
-
if (Number.isInteger(update
|
|
618
|
-
partial
|
|
619
|
-
if (update
|
|
620
|
-
partial
|
|
621
|
-
if (update
|
|
622
|
-
partial
|
|
623
|
-
if (update
|
|
624
|
-
partial
|
|
625
|
-
if (update
|
|
626
|
-
partial
|
|
736
|
+
if (update.updated_at != null)
|
|
737
|
+
partial.updated_at = update.updated_at;
|
|
738
|
+
if (update.provenTxId)
|
|
739
|
+
partial.provenTxId = update.provenTxId;
|
|
740
|
+
if (update.status)
|
|
741
|
+
partial.status = update.status;
|
|
742
|
+
if (Number.isInteger(update.attempts))
|
|
743
|
+
partial.attempts = update.attempts;
|
|
744
|
+
if (update.notified !== undefined)
|
|
745
|
+
partial.notified = update.notified;
|
|
746
|
+
if (update.batch)
|
|
747
|
+
partial.batch = update.batch;
|
|
748
|
+
if (update.history)
|
|
749
|
+
partial.history = update.history;
|
|
750
|
+
if (update.notify)
|
|
751
|
+
partial.notify = update.notify;
|
|
752
|
+
if (update.wasBroadcast !== undefined)
|
|
753
|
+
partial.wasBroadcast = (_a = update.wasBroadcast) !== null && _a !== void 0 ? _a : false;
|
|
754
|
+
if (Number.isInteger(update.rebroadcastAttempts))
|
|
755
|
+
partial.rebroadcastAttempts = (_b = update.rebroadcastAttempts) !== null && _b !== void 0 ? _b : 0;
|
|
627
756
|
return await this.updateProvenTxReq(id, partial, trx);
|
|
628
757
|
}
|
|
629
758
|
async extendOutput(o, includeBasket = false, includeTags = false, trx) {
|
|
@@ -636,15 +765,16 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
636
765
|
return o;
|
|
637
766
|
}
|
|
638
767
|
async validateOutputScript(o, trx) {
|
|
768
|
+
var _a;
|
|
639
769
|
// without offset and length values return what we have (make no changes)
|
|
640
770
|
if (!o.scriptLength || !o.scriptOffset || !o.txid)
|
|
641
771
|
return;
|
|
642
772
|
// if there is an outputScript and its length is the expected length return what we have.
|
|
643
|
-
if (o.lockingScript
|
|
773
|
+
if (((_a = o.lockingScript) === null || _a === void 0 ? void 0 : _a.length) === o.scriptLength)
|
|
644
774
|
return;
|
|
645
775
|
// outputScript is missing or has incorrect length...
|
|
646
776
|
const script = await this.getRawTxOfKnownValidTransaction(o.txid, o.scriptOffset, o.scriptLength, trx);
|
|
647
|
-
if (
|
|
777
|
+
if (script == null)
|
|
648
778
|
return;
|
|
649
779
|
o.lockingScript = script;
|
|
650
780
|
}
|
|
@@ -657,7 +787,7 @@ function validateStorageFeeModel(v) {
|
|
|
657
787
|
};
|
|
658
788
|
if (typeof v === 'object') {
|
|
659
789
|
if (v.model !== 'sat/kb')
|
|
660
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('StorageFeeModel.model',
|
|
790
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('StorageFeeModel.model', '"sat/kb"');
|
|
661
791
|
if (typeof v.value === 'number') {
|
|
662
792
|
r.value = v.value;
|
|
663
793
|
}
|