@bsv/wallet-toolbox 2.4.4 → 2.4.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/LICENSE.txt +58 -0
- package/README.md +98 -36
- package/docs/action-batch-planning.md +117 -14
- package/docs/client.md +1535 -4125
- package/docs/monitor.md +34 -137
- package/docs/services.md +296 -602
- package/docs/setup.md +48 -28
- package/docs/storage.md +358 -1901
- package/docs/wallet.md +10316 -5665
- package/out/src/CWIStyleWalletManager.d.ts +11 -2
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +118 -87
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +7 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +10 -11
- package/out/src/Setup.js.map +1 -1
- package/out/src/SetupClient.d.ts +2 -0
- package/out/src/SetupClient.d.ts.map +1 -1
- package/out/src/SetupClient.js +8 -9
- package/out/src/SetupClient.js.map +1 -1
- package/out/src/SetupWallet.d.ts +6 -0
- package/out/src/SetupWallet.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.js.map +1 -1
- package/out/src/SimpleWalletManager.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.js +2 -5
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.d.ts +28 -10
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +146 -125
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +11 -1
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +7 -6
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.d.ts.map +1 -1
- package/out/src/WalletLogger.js +33 -30
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +22 -1
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +392 -267
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.d.ts.map +1 -1
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
- package/out/src/entropy/EntropyCollector.js +6 -8
- package/out/src/entropy/EntropyCollector.js.map +1 -1
- package/out/src/fundWalletP2PKH.js.map +1 -1
- package/out/src/index.all.js.map +1 -1
- package/out/src/index.client.js.map +1 -1
- package/out/src/index.mobile.d.ts +1 -0
- package/out/src/index.mobile.d.ts.map +1 -1
- package/out/src/index.mobile.js +1 -0
- package/out/src/index.mobile.js.map +1 -1
- 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.map +1 -1
- package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
- 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.map +1 -1
- package/out/src/mockchain/MockServices.d.ts +4 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +69 -74
- 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 +51 -56
- package/out/src/mockchain/merkleTree.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +4 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +56 -54
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts +3 -0
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +65 -56
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/index.all.js.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +5 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +86 -77
- 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 +132 -131
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +3 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +3 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCleanupActionBatches.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 +1 -1
- package/out/src/monitor/tasks/TaskClock.js.map +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 +3 -1
- package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.js +3 -1
- package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts +4 -3
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +4 -3
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts +3 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.js +3 -1
- package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +3 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +3 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +3 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +3 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts +3 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js +3 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +3 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +3 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts +3 -0
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +53 -46
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.js +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts +3 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +3 -1
- 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.map +1 -1
- package/out/src/sdk/ActionBatch.interfaces.d.ts +56 -2
- package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +3 -3
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WERR_errors.d.ts +1 -1
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/out/src/sdk/WERR_errors.js +2 -2
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.d.ts +3 -0
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +53 -56
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +3 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +5 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/ServiceCollection.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +8 -2
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +86 -44
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.d.ts +7 -7
- package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.js +9 -9
- package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +4 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +42 -6
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +4 -4
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +45 -40
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +5 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +25 -18
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +3 -3
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +6 -7
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.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.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
- 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 +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.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.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.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.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +12 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +110 -103
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +58 -48
- 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.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +55 -54
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +97 -72
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +5 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +145 -136
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +92 -68
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +43 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +76 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts +18 -0
- package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js +24 -0
- package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +2 -3
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +4 -22
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -4
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +12 -25
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -3
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +4 -22
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +3 -15
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +3 -15
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +3 -15
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +64 -61
- 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.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 +4 -3
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -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/ChaintracksFs.d.ts +8 -10
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +14 -24
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.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.map +1 -1
- 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 -11
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +20 -49
- 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 +4 -2
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +23 -14
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +1 -14
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/networkConfig.js.map +1 -1
- package/out/src/services/providers/ARC.d.ts +4 -0
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +96 -83
- 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.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +4 -0
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +118 -92
- package/out/src/services/providers/Arcade.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +107 -86
- 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.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +19 -6
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/exchangeRates.js +1 -1
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
- package/out/src/signer/WalletSigner.d.ts.map +1 -1
- package/out/src/signer/WalletSigner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchPlanner.js +68 -35
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +217 -41
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +11 -0
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -0
- package/out/src/signer/actionBatch/actionBatchBootstrap.js +38 -0
- package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -0
- 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 +95 -106
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.d.ts +3 -7
- package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.js +14 -57
- 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 +47 -20
- 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 +4 -4
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/out/src/signer/methods/resultBeef.js.map +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +29 -4
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.d.ts +17 -0
- package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -0
- package/out/src/signer/methods/verifyUnlockScripts.js +137 -0
- package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -0
- package/out/src/storage/StorageIdb.d.ts +5 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +80 -27
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +10 -1
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +118 -9
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +41 -13
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +241 -158
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +13 -5
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +3 -0
- 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.map +1 -1
- package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +2 -0
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +25 -6
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +79 -0
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +47 -16
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/adminServer/adminUi.js.map +1 -1
- package/out/src/storage/idbHelpers.js.map +1 -1
- package/out/src/storage/index.all.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js +48 -71
- 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 +29 -27
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/actionBatch.d.ts +2 -1
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatch.js +143 -50
- package/out/src/storage/methods/actionBatch.js.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.d.ts +6 -3
- package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.js +77 -14
- package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.d.ts +6 -4
- package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.js +261 -155
- package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
- package/out/src/storage/methods/actionPlanning.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +0 -21
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +43 -51
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +57 -38
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +2 -2
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +66 -38
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +48 -42
- 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 +8 -6
- package/out/src/storage/methods/getSyncChunk.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +145 -121
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +1 -1
- package/out/src/storage/methods/listActionsKnex.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 +1 -1
- package/out/src/storage/methods/listCertificates.js.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts +1 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.js +133 -152
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js +213 -254
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/managedChange.d.ts +3 -3
- package/out/src/storage/methods/managedChange.d.ts.map +1 -1
- package/out/src/storage/methods/managedChange.js +1 -2
- package/out/src/storage/methods/managedChange.js.map +1 -1
- package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
- package/out/src/storage/methods/offsetKey.js +0 -1
- package/out/src/storage/methods/offsetKey.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts +2 -0
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +8 -8
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/purgeData.d.ts.map +1 -1
- package/out/src/storage/methods/purgeData.js +157 -179
- package/out/src/storage/methods/purgeData.js.map +1 -1
- package/out/src/storage/methods/purgeDataIdb.d.ts +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/reviewStatus.js +6 -6
- package/out/src/storage/methods/reviewStatus.js.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
- package/out/src/storage/methods/utils.Buffer.js.map +1 -1
- package/out/src/storage/methods/utils.js.map +1 -1
- package/out/src/storage/portable/index.js +2 -2
- package/out/src/storage/portable/index.js.map +1 -1
- package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
- package/out/src/storage/remoting/BinaryJson.js +84 -38
- package/out/src/storage/remoting/BinaryJson.js.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
- package/out/src/storage/remoting/RateLimitPolicy.d.ts +10 -0
- package/out/src/storage/remoting/RateLimitPolicy.d.ts.map +1 -0
- package/out/src/storage/remoting/RateLimitPolicy.js +37 -0
- package/out/src/storage/remoting/RateLimitPolicy.js.map +1 -0
- package/out/src/storage/remoting/StorageClient.d.ts +2 -0
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +82 -50
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +15 -5
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +61 -3
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +34 -22
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +52 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +340 -201
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/edgePolicy.d.ts +57 -0
- package/out/src/storage/remoting/edgePolicy.d.ts.map +1 -0
- package/out/src/storage/remoting/edgePolicy.js +387 -0
- package/out/src/storage/remoting/edgePolicy.js.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
- package/out/src/storage/remoting/entityValidationHelpers.js +22 -5
- package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +12 -0
- package/out/src/storage/schema/KnexMigrations.js.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.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
- 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.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- 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.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
- 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.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -0
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +46 -36
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +2 -2
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +12 -10
- 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 +25 -34
- 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.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
- 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.map +1 -1
- package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
- 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 +9 -14
- package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
- package/out/src/storage/schema/tables/TableActionBatch.d.ts +3 -1
- package/out/src/storage/schema/tables/TableActionBatch.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -1
- package/out/src/storage/storageProviderHelpers.js.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +3 -0
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +30 -16
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/Format.d.ts.map +1 -1
- package/out/src/utility/Format.js +2 -2
- package/out/src/utility/Format.js.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
- package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
- package/out/src/utility/actionBatchDigest.js +41 -3
- package/out/src/utility/actionBatchDigest.js.map +1 -1
- package/out/src/utility/actionBatchPack.d.ts +16 -0
- package/out/src/utility/actionBatchPack.d.ts.map +1 -0
- package/out/src/utility/actionBatchPack.js +220 -0
- package/out/src/utility/actionBatchPack.js.map +1 -0
- package/out/src/utility/aggregateResults.d.ts.map +1 -1
- package/out/src/utility/aggregateResults.js.map +1 -1
- package/out/src/utility/beefForTxids.js.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.js +26 -30
- package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
- package/out/src/utility/formatUnknown.d.ts +6 -0
- package/out/src/utility/formatUnknown.d.ts.map +1 -0
- package/out/src/utility/formatUnknown.js +39 -0
- package/out/src/utility/formatUnknown.js.map +1 -0
- package/out/src/utility/hashWasm.d.ts +5 -0
- package/out/src/utility/hashWasm.d.ts.map +1 -0
- package/out/src/utility/hashWasm.js +15 -0
- package/out/src/utility/hashWasm.js.map +1 -0
- package/out/src/utility/identityUtils.d.ts.map +1 -1
- package/out/src/utility/identityUtils.js +2 -4
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.js +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 +49 -42
- package/out/src/utility/stampLog.js.map +1 -1
- package/out/src/utility/traceContext.d.ts +13 -0
- package/out/src/utility/traceContext.d.ts.map +1 -0
- package/out/src/utility/traceContext.js +34 -0
- package/out/src/utility/traceContext.js.map +1 -0
- 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.buffer.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts +2 -2
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +8 -4
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +1 -2
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +1 -1
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/WABTransport.d.ts +33 -5
- package/out/src/wab-client/WABTransport.d.ts.map +1 -1
- package/out/src/wab-client/WABTransport.js +240 -120
- package/out/src/wab-client/WABTransport.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.map +1 -1
- package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +1 -1
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
- package/package.json +57 -21
- package/license.md +0 -28
|
@@ -25,6 +25,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
25
25
|
commissionSatoshis;
|
|
26
26
|
commissionPubKeyHex;
|
|
27
27
|
maxRecursionDepth;
|
|
28
|
+
scriptVerifier;
|
|
28
29
|
static defaultOptions() {
|
|
29
30
|
const opts = {
|
|
30
31
|
feeModel: { model: 'sat/kb', value: 100 },
|
|
@@ -46,26 +47,60 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
46
47
|
this.commissionPubKeyHex = options.commissionPubKeyHex;
|
|
47
48
|
this.commissionSatoshis = options.commissionSatoshis;
|
|
48
49
|
this.maxRecursionDepth = 12;
|
|
50
|
+
this.scriptVerifier = options.scriptVerifier;
|
|
51
|
+
}
|
|
52
|
+
async insertActionBatch(_batch, _trx) {
|
|
53
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
54
|
+
}
|
|
55
|
+
async findActionBatch(_userId, _batchId, _trx) {
|
|
56
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
49
57
|
}
|
|
50
|
-
async insertActionBatch(batch, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
|
|
51
|
-
async findActionBatch(userId, batchId, trx) { throw new WERR_errors_1.WERR_NOT_IMPLEMENTED(); }
|
|
52
58
|
async findActionBatchForUpdate(userId, batchId, trx) {
|
|
53
59
|
return await this.findActionBatch(userId, batchId, trx);
|
|
54
60
|
}
|
|
55
|
-
async findExpiredActionBatches(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
async
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
async
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
async
|
|
61
|
+
async findExpiredActionBatches(_now, _trx) {
|
|
62
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
63
|
+
}
|
|
64
|
+
async updateActionBatch(_actionBatchId, _update, _trx) {
|
|
65
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
66
|
+
}
|
|
67
|
+
async deleteActionBatch(_actionBatchId, _trx) {
|
|
68
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
69
|
+
}
|
|
70
|
+
async reserveActionBatchOutputs(_reservations, _trx) {
|
|
71
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
72
|
+
}
|
|
73
|
+
async findActionBatchOutputIds(_actionBatchId, _trx) {
|
|
74
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
75
|
+
}
|
|
76
|
+
async findReservedActionBatchOutputIds(_outputIds, _trx) {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
async deleteActionBatchOutputReservations(_actionBatchId, _trx) {
|
|
80
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
81
|
+
}
|
|
82
|
+
async putActionBatchBlobRecord(_blob, _trx) {
|
|
83
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
84
|
+
}
|
|
85
|
+
async findActionBatchBlobRecord(_actionBatchId, _digest, _trx) {
|
|
86
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
87
|
+
}
|
|
88
|
+
async findActionBatchBlobRecords(actionBatchId, digests, trx) {
|
|
89
|
+
return (await Promise.all(digests.map(async (digest) => await this.findActionBatchBlobRecord(actionBatchId, digest, trx)))).filter((blob) => blob != null);
|
|
90
|
+
}
|
|
91
|
+
async putActionBatchBlobRecords(blobs, trx) {
|
|
92
|
+
for (const blob of blobs)
|
|
93
|
+
await this.putActionBatchBlobRecord(blob, trx);
|
|
94
|
+
}
|
|
95
|
+
async deleteActionBatchBlobRecords(_actionBatchId, _trx) {
|
|
96
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
97
|
+
}
|
|
65
98
|
async getCapabilities() {
|
|
66
99
|
return this.supportsActionBatchPersistence() ? (0, actionBatch_1.getActionBatchCapabilities)() : {};
|
|
67
100
|
}
|
|
68
|
-
supportsActionBatchPersistence() {
|
|
101
|
+
supportsActionBatchPersistence() {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
69
104
|
async beginActionBatch(auth, args) {
|
|
70
105
|
if (!this.supportsActionBatchPersistence())
|
|
71
106
|
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED('actionBatch capability is not available');
|
|
@@ -83,9 +118,15 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
83
118
|
async putActionBatchBlob(auth, args) {
|
|
84
119
|
return await (0, actionBatchBlobs_1.putActionBatchBlob)(this, auth, args);
|
|
85
120
|
}
|
|
121
|
+
async putActionBatchPack(auth, args) {
|
|
122
|
+
return await (0, actionBatchBlobs_1.putActionBatchPack)(this, auth, args);
|
|
123
|
+
}
|
|
86
124
|
async commitActionBatch(auth, manifest) {
|
|
87
125
|
return await (0, actionBatch_1.commitActionBatch)(this, auth, manifest);
|
|
88
126
|
}
|
|
127
|
+
async commitActionBatchByDigest(auth, args) {
|
|
128
|
+
return await (0, actionBatch_1.commitActionBatchByDigest)(this, auth, args);
|
|
129
|
+
}
|
|
89
130
|
async abortActionBatch(auth, batchId) {
|
|
90
131
|
return await (0, actionBatch_1.abortActionBatch)(this, auth, batchId);
|
|
91
132
|
}
|
|
@@ -128,6 +169,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
128
169
|
byTag[tag] = await this.findOrInsertOutputTag(userId, tag, trx);
|
|
129
170
|
return byTag;
|
|
130
171
|
}
|
|
172
|
+
async findOrInsertTxLabelsBulk(userId, labels, trx) {
|
|
173
|
+
const byLabel = {};
|
|
174
|
+
for (const label of labels)
|
|
175
|
+
byLabel[label] ??= await this.findOrInsertTxLabel(userId, label, trx);
|
|
176
|
+
return byLabel;
|
|
177
|
+
}
|
|
131
178
|
async sumSpendableSatoshisInBasket(userId, basketId, excludeSending, trx) {
|
|
132
179
|
const status = ['completed', 'unproven'];
|
|
133
180
|
if (!excludeSending)
|
|
@@ -152,7 +199,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
152
199
|
continue;
|
|
153
200
|
const createdAt = this.validateDate(output.created_at);
|
|
154
201
|
const prior = latestByUserId.get(output.userId);
|
|
155
|
-
if (
|
|
202
|
+
if (prior == null || createdAt > prior) {
|
|
156
203
|
latestByUserId.set(output.userId, createdAt);
|
|
157
204
|
}
|
|
158
205
|
}
|
|
@@ -174,32 +221,79 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
174
221
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('Must setServices first.');
|
|
175
222
|
return this._services;
|
|
176
223
|
}
|
|
177
|
-
async
|
|
178
|
-
if (auth.userId == null)
|
|
179
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('auth.userId', 'valid');
|
|
180
|
-
const userId = auth.userId;
|
|
224
|
+
async findAbortableTransaction(userId, args, trx) {
|
|
181
225
|
let reference = args.reference;
|
|
182
|
-
let
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
226
|
+
let tx = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTransactions({
|
|
227
|
+
partial: { reference, userId },
|
|
228
|
+
noRawTx: true,
|
|
229
|
+
trx
|
|
230
|
+
}));
|
|
231
|
+
if (tx == null && args.reference.length === 64) {
|
|
232
|
+
reference = undefined;
|
|
233
|
+
tx = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTransactions({
|
|
234
|
+
partial: { txid: args.reference, userId },
|
|
186
235
|
noRawTx: true,
|
|
187
236
|
trx
|
|
188
237
|
}));
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
238
|
+
}
|
|
239
|
+
const unAbortableStatus = ['completed', 'failed', 'sending', 'unproven'];
|
|
240
|
+
if (tx == null || !tx.isOutgoing || unAbortableStatus.includes(tx.status)) {
|
|
241
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('reference', 'an inprocess, outgoing action that has not been signed and shared to the network.');
|
|
242
|
+
}
|
|
243
|
+
return { tx, reference };
|
|
244
|
+
}
|
|
245
|
+
async checkAbortChainProtection(tx, args, trx) {
|
|
246
|
+
if (tx.txid == null || tx.txid === '' || tx.status !== 'nosend') {
|
|
247
|
+
return { skipped: false, serviceUnreachable: false };
|
|
248
|
+
}
|
|
249
|
+
let serviceUnreachable = false;
|
|
250
|
+
let chainStatus;
|
|
251
|
+
try {
|
|
252
|
+
const result = await this.getServices().getStatusForTxids([tx.txid]);
|
|
253
|
+
if (result.status !== 'success') {
|
|
254
|
+
serviceUnreachable = true;
|
|
198
255
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('reference', 'an inprocess, outgoing action that has not been signed and shared to the network.');
|
|
256
|
+
else {
|
|
257
|
+
chainStatus = result.results.find(item => item.txid === tx.txid)?.status;
|
|
202
258
|
}
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
serviceUnreachable = true;
|
|
262
|
+
}
|
|
263
|
+
if (chainStatus !== 'mined' && chainStatus !== 'known') {
|
|
264
|
+
return { skipped: false, serviceUnreachable };
|
|
265
|
+
}
|
|
266
|
+
const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
267
|
+
if (req != null) {
|
|
268
|
+
req.addHistoryNote({
|
|
269
|
+
what: 'abortAction-skipped-onchain',
|
|
270
|
+
reference: args.reference,
|
|
271
|
+
chainStatus
|
|
272
|
+
});
|
|
273
|
+
await req.updateStorageDynamicProperties(this, trx);
|
|
274
|
+
}
|
|
275
|
+
return { skipped: true, serviceUnreachable };
|
|
276
|
+
}
|
|
277
|
+
async invalidateAbortedTransaction(tx, userId, reference, originalReference, serviceUnreachable, trx) {
|
|
278
|
+
await this.updateTransactionStatus('failed', tx.transactionId, userId, reference, trx);
|
|
279
|
+
if (tx.txid != null && tx.txid !== '') {
|
|
280
|
+
const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
281
|
+
if (req != null) {
|
|
282
|
+
req.addHistoryNote(serviceUnreachable
|
|
283
|
+
? { what: 'abortAction-offline-fallback', reference: originalReference }
|
|
284
|
+
: { what: 'abortAction', reference: originalReference });
|
|
285
|
+
req.status = 'invalid';
|
|
286
|
+
await req.updateStorageDynamicProperties(this, trx);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return { aborted: true };
|
|
290
|
+
}
|
|
291
|
+
async abortAction(auth, args) {
|
|
292
|
+
if (auth.userId == null)
|
|
293
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('auth.userId', 'valid');
|
|
294
|
+
const userId = auth.userId;
|
|
295
|
+
const r = await this.transaction(async (trx) => {
|
|
296
|
+
const { tx, reference } = await this.findAbortableTransaction(userId, args, trx);
|
|
203
297
|
// Chain-status protection for signed nosend txs.
|
|
204
298
|
//
|
|
205
299
|
// Background: a nosend tx (created via createAction({noSend:true}))
|
|
@@ -231,57 +325,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
231
325
|
// hole can never be 100% closed against externally-broadcast
|
|
232
326
|
// chain-confirmed txs while offline; the audit trail makes it
|
|
233
327
|
// recoverable.
|
|
234
|
-
|
|
235
|
-
if (
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
try {
|
|
239
|
-
const r = await services.getStatusForTxids([tx.txid]);
|
|
240
|
-
if (r.status !== 'success') {
|
|
241
|
-
serviceUnreachable = true;
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
chainStatus = r.results.find(x => x.txid === tx.txid)?.status;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
catch {
|
|
248
|
-
serviceUnreachable = true;
|
|
249
|
-
}
|
|
250
|
-
if (chainStatus === 'mined' || chainStatus === 'known') {
|
|
251
|
-
const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
252
|
-
if (req != null) {
|
|
253
|
-
req.addHistoryNote({
|
|
254
|
-
what: 'abortAction-skipped-onchain',
|
|
255
|
-
reference: args.reference,
|
|
256
|
-
chainStatus
|
|
257
|
-
});
|
|
258
|
-
await req.updateStorageDynamicProperties(this, trx);
|
|
259
|
-
}
|
|
260
|
-
// Surface the refusal via a sentinel so the surrounding
|
|
261
|
-
// transaction commits the history note BEFORE returning
|
|
262
|
-
// the aborted:false result. Returning directly from inside
|
|
263
|
-
// the transaction would still work, but the sentinel keeps
|
|
264
|
-
// the audit-write / result-shape decision on the same
|
|
265
|
-
// commit-then-return path that existed when this surface
|
|
266
|
-
// threw, minimizing diff churn.
|
|
267
|
-
return { __abortAction: 'skipped-onchain', chainStatus };
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
await this.updateTransactionStatus('failed', tx.transactionId, userId, reference, trx);
|
|
271
|
-
if (tx.txid != null && tx.txid !== '') {
|
|
272
|
-
const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
273
|
-
if (req != null) {
|
|
274
|
-
req.addHistoryNote(serviceUnreachable
|
|
275
|
-
? { what: 'abortAction-offline-fallback', reference: args.reference }
|
|
276
|
-
: { what: 'abortAction', reference: args.reference });
|
|
277
|
-
req.status = 'invalid';
|
|
278
|
-
await req.updateStorageDynamicProperties(this, trx);
|
|
279
|
-
}
|
|
328
|
+
const protection = await this.checkAbortChainProtection(tx, args, trx);
|
|
329
|
+
if (protection.skipped) {
|
|
330
|
+
// Commit the audit note before translating this sentinel to aborted:false.
|
|
331
|
+
return { __abortAction: 'skipped-onchain' };
|
|
280
332
|
}
|
|
281
|
-
|
|
282
|
-
aborted: true
|
|
283
|
-
};
|
|
284
|
-
return r;
|
|
333
|
+
return await this.invalidateAbortedTransaction(tx, userId, reference, args.reference, protection.serviceUnreachable, trx);
|
|
285
334
|
});
|
|
286
335
|
if ('__abortAction' in r) {
|
|
287
336
|
// Tone Engel review feedback (PR #122 comment 4444566147 item 3):
|
|
@@ -351,7 +400,9 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
351
400
|
throw new WERR_errors_1.WERR_INTERNAL('req rawTx and beef must be valid.');
|
|
352
401
|
mergeToBeef.mergeRawTx((0, utilityHelpers_noBuffer_1.asArray)(rawTx));
|
|
353
402
|
mergeToBeef.mergeBeef((0, utilityHelpers_noBuffer_1.asArray)(beef));
|
|
354
|
-
await (0, storageProviderHelpers_1.mergeInputsIntoBeef)((0, utilityHelpers_noBuffer_1.asArray)(rawTx), mergeToBeef, knownTxids, trx, async (txid, beef, _trust, knownTxids, trx) => {
|
|
403
|
+
await (0, storageProviderHelpers_1.mergeInputsIntoBeef)((0, utilityHelpers_noBuffer_1.asArray)(rawTx), mergeToBeef, knownTxids, trx, async (txid, beef, _trust, knownTxids, trx) => {
|
|
404
|
+
await this.getValidBeefForKnownTxid(txid, beef, undefined, knownTxids, trx);
|
|
405
|
+
});
|
|
355
406
|
}
|
|
356
407
|
/**
|
|
357
408
|
* Checks if txid is a known valid ProvenTx and returns it if found.
|
|
@@ -384,7 +435,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
384
435
|
return existing;
|
|
385
436
|
}
|
|
386
437
|
async getProvenOrReq(txid, newReq, trx) {
|
|
387
|
-
if (
|
|
438
|
+
if (newReq != null && txid !== newReq.txid)
|
|
388
439
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('newReq', 'same txid');
|
|
389
440
|
const r = { proven: undefined, req: undefined };
|
|
390
441
|
r.proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
|
|
@@ -563,7 +614,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
563
614
|
beef.mergeBump(mp);
|
|
564
615
|
return beef;
|
|
565
616
|
}
|
|
566
|
-
async getValidBeefForTxid(txid, mergeToBeef, trustSelf, knownTxids, trx, requiredLevels, chainTracker, skipInvalidProofs) {
|
|
617
|
+
async getValidBeefForTxid(...[txid, mergeToBeef, trustSelf, knownTxids, trx, requiredLevels, chainTracker, skipInvalidProofs]) {
|
|
567
618
|
const beef = mergeToBeef ?? new sdk_1.Beef();
|
|
568
619
|
const r = await this.getProvenOrRawTx(txid, trx);
|
|
569
620
|
// --- proven-tx path ---
|
|
@@ -716,6 +767,94 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
716
767
|
}
|
|
717
768
|
return { log };
|
|
718
769
|
}
|
|
770
|
+
async prepareProofRecoveryOutputVerdicts(transactions) {
|
|
771
|
+
const verdicts = new Map();
|
|
772
|
+
if (transactions.length === 0)
|
|
773
|
+
return verdicts;
|
|
774
|
+
const services = this.getServices();
|
|
775
|
+
for (const transaction of transactions) {
|
|
776
|
+
const outputs = await this.findOutputs({
|
|
777
|
+
partial: {
|
|
778
|
+
userId: transaction.userId,
|
|
779
|
+
transactionId: transaction.transactionId
|
|
780
|
+
}
|
|
781
|
+
});
|
|
782
|
+
for (const output of outputs) {
|
|
783
|
+
const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
|
|
784
|
+
await this.validateOutputScript(output);
|
|
785
|
+
verdicts.set(outputId, output.lockingScript == null ? undefined : await services.isUtxo(output));
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
return verdicts;
|
|
789
|
+
}
|
|
790
|
+
async restoreProofRecoveryInputs(tx, bsvtx, indent, trx) {
|
|
791
|
+
let log = '';
|
|
792
|
+
for (const [vin, input] of bsvtx.inputs.entries()) {
|
|
793
|
+
const sourceTXID = input.sourceTXID;
|
|
794
|
+
if (sourceTXID == null) {
|
|
795
|
+
log += ' '.repeat(indent + 2) + `input ${vin} has no source transaction id\n`;
|
|
796
|
+
continue;
|
|
797
|
+
}
|
|
798
|
+
const outputs = await this.findOutputs({
|
|
799
|
+
partial: {
|
|
800
|
+
userId: tx.userId,
|
|
801
|
+
txid: sourceTXID,
|
|
802
|
+
vout: input.sourceOutputIndex
|
|
803
|
+
},
|
|
804
|
+
trx
|
|
805
|
+
});
|
|
806
|
+
if (outputs.length !== 1) {
|
|
807
|
+
log += ' '.repeat(indent + 2) + `input ${vin} not matched to user's outputs\n`;
|
|
808
|
+
continue;
|
|
809
|
+
}
|
|
810
|
+
const output = outputs[0];
|
|
811
|
+
log +=
|
|
812
|
+
' '.repeat(indent + 2) +
|
|
813
|
+
`input ${vin} matched to output ${output.outputId} updated spentBy ${tx.transactionId}\n`;
|
|
814
|
+
await this.updateOutput((0, utilityHelpers_1.verifyId)(output.outputId), { spendable: false, spentBy: tx.transactionId }, trx);
|
|
815
|
+
}
|
|
816
|
+
return log;
|
|
817
|
+
}
|
|
818
|
+
async restoreProofRecoveryOutputs(tx, outputVerdicts, indent, trx) {
|
|
819
|
+
let log = '';
|
|
820
|
+
const outputs = await this.findOutputs({
|
|
821
|
+
partial: { userId: tx.userId, transactionId: tx.transactionId },
|
|
822
|
+
trx
|
|
823
|
+
});
|
|
824
|
+
for (const output of outputs) {
|
|
825
|
+
const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
|
|
826
|
+
if (!outputVerdicts.has(outputId)) {
|
|
827
|
+
throw new WERR_errors_1.WERR_INTERNAL(`Output ${outputId} changed while preparing proof recovery.`);
|
|
828
|
+
}
|
|
829
|
+
const isUtxo = outputVerdicts.get(outputId);
|
|
830
|
+
if (isUtxo == null) {
|
|
831
|
+
log +=
|
|
832
|
+
' '.repeat(indent + 2) +
|
|
833
|
+
`output ${output.outputId} does not have a valid locking script\n`;
|
|
834
|
+
continue;
|
|
835
|
+
}
|
|
836
|
+
if (isUtxo === output.spendable) {
|
|
837
|
+
log += ' '.repeat(indent + 2) + `output ${output.outputId} unchanged\n`;
|
|
838
|
+
continue;
|
|
839
|
+
}
|
|
840
|
+
log +=
|
|
841
|
+
' '.repeat(indent + 2) +
|
|
842
|
+
`output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
|
|
843
|
+
await this.updateOutput(outputId, { spendable: isUtxo }, trx);
|
|
844
|
+
}
|
|
845
|
+
return log;
|
|
846
|
+
}
|
|
847
|
+
async restoreTransactionForProof(tx, bsvtx, preparedTransactionIds, outputVerdicts, indent, trx) {
|
|
848
|
+
if (bsvtx == null || !preparedTransactionIds.has(tx.transactionId)) {
|
|
849
|
+
throw new WERR_errors_1.WERR_INTERNAL(`Transaction ${tx.transactionId} changed while preparing proof recovery.`);
|
|
850
|
+
}
|
|
851
|
+
await this.updateTransaction(tx.transactionId, { status: 'unproven' }, trx);
|
|
852
|
+
let log = ' '.repeat(indent) +
|
|
853
|
+
`transaction ${tx.transactionId} status is now 'unproven'\n`;
|
|
854
|
+
log += await this.restoreProofRecoveryInputs(tx, bsvtx, indent, trx);
|
|
855
|
+
log += await this.restoreProofRecoveryOutputs(tx, outputVerdicts, indent, trx);
|
|
856
|
+
return log;
|
|
857
|
+
}
|
|
719
858
|
/**
|
|
720
859
|
* Restore every failed local copy of a transaction before proof completion.
|
|
721
860
|
* Also heals the request's notification set from the authoritative txid
|
|
@@ -737,23 +876,10 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
737
876
|
// transition separately so it is persisted atomically with bookkeeping.
|
|
738
877
|
await req.refreshFromStorage(this);
|
|
739
878
|
const preparedTransactionIds = new Set(transactionsToRepair.map(transaction => transaction.transactionId));
|
|
740
|
-
const outputVerdicts = new Map();
|
|
741
879
|
const bsvtx = transactionsToRepair.length > 0 ? sdk_1.Transaction.fromBinary(req.rawTx) : undefined;
|
|
742
880
|
// UTXO checks can call external services. Complete every check before
|
|
743
881
|
// opening the write transaction so network latency never holds DB locks.
|
|
744
|
-
|
|
745
|
-
const services = this.getServices();
|
|
746
|
-
for (const transaction of transactionsToRepair) {
|
|
747
|
-
const outputs = await this.findOutputs({
|
|
748
|
-
partial: { userId: transaction.userId, transactionId: transaction.transactionId }
|
|
749
|
-
});
|
|
750
|
-
for (const output of outputs) {
|
|
751
|
-
const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
|
|
752
|
-
await this.validateOutputScript(output);
|
|
753
|
-
outputVerdicts.set(outputId, output.lockingScript == null ? undefined : await services.isUtxo(output));
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
}
|
|
882
|
+
const outputVerdicts = await this.prepareProofRecoveryOutputVerdicts(transactionsToRepair);
|
|
757
883
|
return await this.transaction(async (trx) => {
|
|
758
884
|
let log = '';
|
|
759
885
|
await req.refreshFromStorage(this, trx);
|
|
@@ -775,59 +901,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
775
901
|
const shouldRepair = requestUpdate != null || tx.status === 'failed';
|
|
776
902
|
if (!shouldRepair)
|
|
777
903
|
continue;
|
|
778
|
-
|
|
779
|
-
throw new WERR_errors_1.WERR_INTERNAL(`Transaction ${tx.transactionId} changed while preparing proof recovery.`);
|
|
780
|
-
}
|
|
781
|
-
await this.updateTransaction(tx.transactionId, { status: 'unproven' }, trx);
|
|
782
|
-
log += ' '.repeat(indent) + `transaction ${tx.transactionId} status is now 'unproven'\n`;
|
|
783
|
-
let vin = -1;
|
|
784
|
-
for (const input of bsvtx.inputs) {
|
|
785
|
-
vin++;
|
|
786
|
-
const sourceTXID = input.sourceTXID;
|
|
787
|
-
if (sourceTXID == null) {
|
|
788
|
-
log += ' '.repeat(indent + 2) + `input ${vin} has no source transaction id\n`;
|
|
789
|
-
continue;
|
|
790
|
-
}
|
|
791
|
-
const outputs = await this.findOutputs({
|
|
792
|
-
partial: {
|
|
793
|
-
userId: tx.userId,
|
|
794
|
-
txid: sourceTXID,
|
|
795
|
-
vout: input.sourceOutputIndex
|
|
796
|
-
},
|
|
797
|
-
trx
|
|
798
|
-
});
|
|
799
|
-
if (outputs.length === 1) {
|
|
800
|
-
const output = outputs[0];
|
|
801
|
-
log += ' '.repeat(indent + 2) +
|
|
802
|
-
`input ${vin} matched to output ${output.outputId} updated spentBy ${tx.transactionId}\n`;
|
|
803
|
-
await this.updateOutput((0, utilityHelpers_1.verifyId)(output.outputId), { spendable: false, spentBy: tx.transactionId }, trx);
|
|
804
|
-
}
|
|
805
|
-
else {
|
|
806
|
-
log += ' '.repeat(indent + 2) + `input ${vin} not matched to user's outputs\n`;
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
const outputs = await this.findOutputs({
|
|
810
|
-
partial: { userId: tx.userId, transactionId: tx.transactionId },
|
|
811
|
-
trx
|
|
812
|
-
});
|
|
813
|
-
for (const output of outputs) {
|
|
814
|
-
const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
|
|
815
|
-
if (!outputVerdicts.has(outputId)) {
|
|
816
|
-
throw new WERR_errors_1.WERR_INTERNAL(`Output ${outputId} changed while preparing proof recovery.`);
|
|
817
|
-
}
|
|
818
|
-
const isUtxo = outputVerdicts.get(outputId);
|
|
819
|
-
if (isUtxo == null) {
|
|
820
|
-
log += ' '.repeat(indent + 2) + `output ${output.outputId} does not have a valid locking script\n`;
|
|
821
|
-
}
|
|
822
|
-
else if (isUtxo === output.spendable) {
|
|
823
|
-
log += ' '.repeat(indent + 2) + `output ${output.outputId} unchanged\n`;
|
|
824
|
-
}
|
|
825
|
-
else {
|
|
826
|
-
log += ' '.repeat(indent + 2) +
|
|
827
|
-
`output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
|
|
828
|
-
await this.updateOutput(outputId, { spendable: isUtxo }, trx);
|
|
829
|
-
}
|
|
830
|
-
}
|
|
904
|
+
log += await this.restoreTransactionForProof(tx, bsvtx, preparedTransactionIds, outputVerdicts, indent, trx);
|
|
831
905
|
}
|
|
832
906
|
await req.updateStorageDynamicProperties(this, trx);
|
|
833
907
|
return log;
|
|
@@ -860,9 +934,13 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
860
934
|
const transactionIdsNeedingProof = transactions
|
|
861
935
|
.filter(transaction => transaction.status !== 'completed' || transaction.provenTxId !== proven.provenTxId)
|
|
862
936
|
.map(transaction => transaction.transactionId);
|
|
863
|
-
const updatesSucceeded = await (0, storageProviderHelpers_1.notifyTransactionsOfProof)(transactionIdsNeedingProof, proven.provenTxId, note => req.addHistoryNote(note), async (id, update) => {
|
|
937
|
+
const updatesSucceeded = await (0, storageProviderHelpers_1.notifyTransactionsOfProof)(transactionIdsNeedingProof, proven.provenTxId, note => req.addHistoryNote(note), async (id, update) => {
|
|
938
|
+
await this.updateTransaction(id, update, trx);
|
|
939
|
+
});
|
|
864
940
|
const completedTransactions = await this.findTransactions({ partial: { txid: req.txid }, trx });
|
|
865
|
-
req.notified =
|
|
941
|
+
req.notified =
|
|
942
|
+
updatesSucceeded &&
|
|
943
|
+
completedTransactions.every(transaction => transaction.status === 'completed' && transaction.provenTxId === proven.provenTxId);
|
|
866
944
|
await req.updateStorageDynamicProperties(this, trx);
|
|
867
945
|
return false;
|
|
868
946
|
});
|
|
@@ -902,7 +980,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
902
980
|
return { invalidSpendableOutputs };
|
|
903
981
|
}
|
|
904
982
|
async checkOutputIsUtxo(o, services) {
|
|
905
|
-
if (
|
|
983
|
+
if (o.lockingScript == null || o.lockingScript.length === 0)
|
|
906
984
|
return false;
|
|
907
985
|
const hash = services.hashOutputScript((0, utilityHelpers_noBuffer_1.asString)(o.lockingScript));
|
|
908
986
|
const r = await services.getUtxoStatus(hash, undefined, `${o.txid ?? ''}.${o.vout ?? ''}`);
|
|
@@ -943,7 +1021,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
943
1021
|
}
|
|
944
1022
|
async validateOutputScript(o, trx) {
|
|
945
1023
|
// without offset and length values return what we have (make no changes)
|
|
946
|
-
if (o.scriptLength == null ||
|
|
1024
|
+
if (o.scriptLength == null ||
|
|
1025
|
+
o.scriptLength === 0 ||
|
|
1026
|
+
o.scriptOffset == null ||
|
|
1027
|
+
o.scriptOffset === 0 ||
|
|
1028
|
+
o.txid == null ||
|
|
1029
|
+
o.txid === '')
|
|
947
1030
|
return;
|
|
948
1031
|
// if there is an outputScript and its length is the expected length return what we have.
|
|
949
1032
|
if (o.lockingScript?.length === o.scriptLength)
|