@bsv/wallet-toolbox 2.4.3 → 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 +81 -1
- package/LICENSE.txt +58 -0
- package/README.md +98 -36
- package/docs/README.md +3 -1
- package/docs/action-batch-planning.md +220 -0
- package/docs/authentication-observability.md +94 -0
- package/docs/client.md +1125 -2776
- package/docs/monitor.md +29 -111
- package/docs/services.md +296 -602
- package/docs/setup.md +48 -28
- package/docs/storage.md +329 -1692
- package/docs/wallet.md +9718 -4890
- package/out/src/CWIStyleWalletManager.d.ts +62 -6
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +584 -181
- 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 +36 -10
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +167 -132
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +30 -6
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +215 -34
- 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.d.ts +1 -0
- package/out/src/index.all.d.ts.map +1 -1
- package/out/src/index.all.js +1 -0
- package/out/src/index.all.js.map +1 -1
- package/out/src/index.client.d.ts +2 -0
- package/out/src/index.client.d.ts.map +1 -1
- package/out/src/index.client.js +2 -0
- package/out/src/index.client.js.map +1 -1
- package/out/src/index.mobile.d.ts +2 -0
- package/out/src/index.mobile.d.ts.map +1 -1
- package/out/src/index.mobile.js +2 -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 +60 -57
- 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 +13 -0
- package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskCleanupActionBatches.js +24 -0
- package/out/src/monitor/tasks/TaskCleanupActionBatches.js.map +1 -0
- 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/monitor/tasks/index.all.d.ts +1 -0
- package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
- package/out/src/monitor/tasks/index.all.js +1 -0
- package/out/src/monitor/tasks/index.all.js.map +1 -1
- package/out/src/sdk/ActionBatch.interfaces.d.ts +159 -0
- package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -0
- package/out/src/sdk/ActionBatch.interfaces.js +3 -0
- package/out/src/sdk/ActionBatch.interfaces.js.map +1 -0
- 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 +22 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/index.d.ts +1 -0
- package/out/src/sdk/index.d.ts.map +1 -1
- package/out/src/sdk/index.js +1 -0
- package/out/src/sdk/index.js.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 +29 -0
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -0
- package/out/src/signer/actionBatch/ActionBatchPlanner.js +346 -0
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -0
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +33 -0
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -0
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +869 -0
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -0
- 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 +97 -107
- 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 +50 -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 +19 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +232 -53
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +29 -1
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +225 -10
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +57 -1
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +277 -145
- 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 +10 -0
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +49 -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.d.ts +2 -0
- package/out/src/storage/idbHelpers.d.ts.map +1 -1
- package/out/src/storage/idbHelpers.js +19 -0
- 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 +15 -0
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -0
- package/out/src/storage/methods/actionBatch.js +737 -0
- package/out/src/storage/methods/actionBatch.js.map +1 -0
- package/out/src/storage/methods/actionBatchBlobs.d.ts +15 -0
- package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -0
- package/out/src/storage/methods/actionBatchBlobs.js +184 -0
- package/out/src/storage/methods/actionBatchBlobs.js.map +1 -0
- package/out/src/storage/methods/actionBatchValidation.d.ts +17 -0
- package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -0
- package/out/src/storage/methods/actionBatchValidation.js +416 -0
- package/out/src/storage/methods/actionBatchValidation.js.map +1 -0
- package/out/src/storage/methods/actionPlanning.d.ts +12 -0
- package/out/src/storage/methods/actionPlanning.d.ts.map +1 -0
- package/out/src/storage/methods/actionPlanning.js +48 -0
- package/out/src/storage/methods/actionPlanning.js.map +1 -0
- 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 +66 -63
- 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 +23 -4
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +97 -4
- 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 +62 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +451 -172
- 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 +56 -0
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/StorageIdbSchema.d.ts +24 -0
- 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.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 +26 -0
- package/out/src/storage/schema/tables/TableActionBatch.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableActionBatch.js +3 -0
- package/out/src/storage/schema/tables/TableActionBatch.js.map +1 -0
- package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -1
- package/out/src/storage/schema/tables/index.d.ts +1 -0
- package/out/src/storage/schema/tables/index.d.ts.map +1 -1
- package/out/src/storage/schema/tables/index.js +1 -0
- package/out/src/storage/schema/tables/index.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 +9 -0
- package/out/src/utility/actionBatchDigest.d.ts.map +1 -0
- package/out/src/utility/actionBatchDigest.js +86 -0
- package/out/src/utility/actionBatchDigest.js.map +1 -0
- 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.d.ts +9 -0
- package/out/src/utility/beefForTxids.d.ts.map +1 -0
- package/out/src/utility/beefForTxids.js +35 -0
- package/out/src/utility/beefForTxids.js.map +1 -0
- 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 +36 -90
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +103 -151
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/WABTransport.d.ts +81 -0
- package/out/src/wab-client/WABTransport.d.ts.map +1 -0
- package/out/src/wab-client/WABTransport.js +420 -0
- package/out/src/wab-client/WABTransport.js.map +1 -0
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +10 -10
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +16 -21
- 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 +2 -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 +14 -0
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
- package/package.json +66 -30
- package/license.md +0 -28
|
@@ -16,6 +16,8 @@ const WERR_errors_1 = require("../sdk/WERR_errors");
|
|
|
16
16
|
const utilityHelpers_1 = require("../utility/utilityHelpers");
|
|
17
17
|
const WalletError_1 = require("../sdk/WalletError");
|
|
18
18
|
const utilityHelpers_noBuffer_1 = require("../utility/utilityHelpers.noBuffer");
|
|
19
|
+
const actionBatch_1 = require("./methods/actionBatch");
|
|
20
|
+
const actionBatchBlobs_1 = require("./methods/actionBatchBlobs");
|
|
19
21
|
class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
20
22
|
isDirty = false;
|
|
21
23
|
_services;
|
|
@@ -23,6 +25,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
23
25
|
commissionSatoshis;
|
|
24
26
|
commissionPubKeyHex;
|
|
25
27
|
maxRecursionDepth;
|
|
28
|
+
scriptVerifier;
|
|
26
29
|
static defaultOptions() {
|
|
27
30
|
const opts = {
|
|
28
31
|
feeModel: { model: 'sat/kb', value: 100 },
|
|
@@ -44,6 +47,88 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
44
47
|
this.commissionPubKeyHex = options.commissionPubKeyHex;
|
|
45
48
|
this.commissionSatoshis = options.commissionSatoshis;
|
|
46
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();
|
|
57
|
+
}
|
|
58
|
+
async findActionBatchForUpdate(userId, batchId, trx) {
|
|
59
|
+
return await this.findActionBatch(userId, batchId, trx);
|
|
60
|
+
}
|
|
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
|
+
}
|
|
98
|
+
async getCapabilities() {
|
|
99
|
+
return this.supportsActionBatchPersistence() ? (0, actionBatch_1.getActionBatchCapabilities)() : {};
|
|
100
|
+
}
|
|
101
|
+
supportsActionBatchPersistence() {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
async beginActionBatch(auth, args) {
|
|
105
|
+
if (!this.supportsActionBatchPersistence())
|
|
106
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED('actionBatch capability is not available');
|
|
107
|
+
return await (0, actionBatch_1.beginActionBatch)(this, auth, args);
|
|
108
|
+
}
|
|
109
|
+
async extendActionBatch(auth, args) {
|
|
110
|
+
return await (0, actionBatch_1.extendActionBatch)(this, auth, args);
|
|
111
|
+
}
|
|
112
|
+
async renewActionBatch(auth, batchId) {
|
|
113
|
+
return await (0, actionBatch_1.renewActionBatch)(this, auth, batchId);
|
|
114
|
+
}
|
|
115
|
+
async prepareActionBatchCommit(auth, manifest) {
|
|
116
|
+
return await (0, actionBatchBlobs_1.prepareActionBatchCommit)(this, auth, manifest);
|
|
117
|
+
}
|
|
118
|
+
async putActionBatchBlob(auth, args) {
|
|
119
|
+
return await (0, actionBatchBlobs_1.putActionBatchBlob)(this, auth, args);
|
|
120
|
+
}
|
|
121
|
+
async putActionBatchPack(auth, args) {
|
|
122
|
+
return await (0, actionBatchBlobs_1.putActionBatchPack)(this, auth, args);
|
|
123
|
+
}
|
|
124
|
+
async commitActionBatch(auth, manifest) {
|
|
125
|
+
return await (0, actionBatch_1.commitActionBatch)(this, auth, manifest);
|
|
126
|
+
}
|
|
127
|
+
async commitActionBatchByDigest(auth, args) {
|
|
128
|
+
return await (0, actionBatch_1.commitActionBatchByDigest)(this, auth, args);
|
|
129
|
+
}
|
|
130
|
+
async abortActionBatch(auth, batchId) {
|
|
131
|
+
return await (0, actionBatch_1.abortActionBatch)(this, auth, batchId);
|
|
47
132
|
}
|
|
48
133
|
async findOutputsByIds(outputIds, trx) {
|
|
49
134
|
const byId = {};
|
|
@@ -69,6 +154,9 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
69
154
|
}
|
|
70
155
|
return byOutpoint;
|
|
71
156
|
}
|
|
157
|
+
async findOutputsByOutpointsForUpdate(userId, outpoints, trx) {
|
|
158
|
+
return await this.findOutputsByOutpoints(userId, outpoints, trx);
|
|
159
|
+
}
|
|
72
160
|
async findOrInsertOutputBasketsBulk(userId, names, trx) {
|
|
73
161
|
const byName = {};
|
|
74
162
|
for (const name of names)
|
|
@@ -81,6 +169,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
81
169
|
byTag[tag] = await this.findOrInsertOutputTag(userId, tag, trx);
|
|
82
170
|
return byTag;
|
|
83
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
|
+
}
|
|
84
178
|
async sumSpendableSatoshisInBasket(userId, basketId, excludeSending, trx) {
|
|
85
179
|
const status = ['completed', 'unproven'];
|
|
86
180
|
if (!excludeSending)
|
|
@@ -105,7 +199,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
105
199
|
continue;
|
|
106
200
|
const createdAt = this.validateDate(output.created_at);
|
|
107
201
|
const prior = latestByUserId.get(output.userId);
|
|
108
|
-
if (
|
|
202
|
+
if (prior == null || createdAt > prior) {
|
|
109
203
|
latestByUserId.set(output.userId, createdAt);
|
|
110
204
|
}
|
|
111
205
|
}
|
|
@@ -127,32 +221,79 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
127
221
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('Must setServices first.');
|
|
128
222
|
return this._services;
|
|
129
223
|
}
|
|
130
|
-
async
|
|
131
|
-
if (auth.userId == null)
|
|
132
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('auth.userId', 'valid');
|
|
133
|
-
const userId = auth.userId;
|
|
224
|
+
async findAbortableTransaction(userId, args, trx) {
|
|
134
225
|
let reference = args.reference;
|
|
135
|
-
let
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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 },
|
|
139
235
|
noRawTx: true,
|
|
140
236
|
trx
|
|
141
237
|
}));
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
chainStatus = result.results.find(item => item.txid === tx.txid)?.status;
|
|
151
258
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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);
|
|
155
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);
|
|
156
297
|
// Chain-status protection for signed nosend txs.
|
|
157
298
|
//
|
|
158
299
|
// Background: a nosend tx (created via createAction({noSend:true}))
|
|
@@ -184,57 +325,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
184
325
|
// hole can never be 100% closed against externally-broadcast
|
|
185
326
|
// chain-confirmed txs while offline; the audit trail makes it
|
|
186
327
|
// recoverable.
|
|
187
|
-
|
|
188
|
-
if (
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
try {
|
|
192
|
-
const r = await services.getStatusForTxids([tx.txid]);
|
|
193
|
-
if (r.status !== 'success') {
|
|
194
|
-
serviceUnreachable = true;
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
chainStatus = r.results.find(x => x.txid === tx.txid)?.status;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
catch {
|
|
201
|
-
serviceUnreachable = true;
|
|
202
|
-
}
|
|
203
|
-
if (chainStatus === 'mined' || chainStatus === 'known') {
|
|
204
|
-
const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
205
|
-
if (req != null) {
|
|
206
|
-
req.addHistoryNote({
|
|
207
|
-
what: 'abortAction-skipped-onchain',
|
|
208
|
-
reference: args.reference,
|
|
209
|
-
chainStatus
|
|
210
|
-
});
|
|
211
|
-
await req.updateStorageDynamicProperties(this, trx);
|
|
212
|
-
}
|
|
213
|
-
// Surface the refusal via a sentinel so the surrounding
|
|
214
|
-
// transaction commits the history note BEFORE returning
|
|
215
|
-
// the aborted:false result. Returning directly from inside
|
|
216
|
-
// the transaction would still work, but the sentinel keeps
|
|
217
|
-
// the audit-write / result-shape decision on the same
|
|
218
|
-
// commit-then-return path that existed when this surface
|
|
219
|
-
// threw, minimizing diff churn.
|
|
220
|
-
return { __abortAction: 'skipped-onchain', chainStatus };
|
|
221
|
-
}
|
|
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' };
|
|
222
332
|
}
|
|
223
|
-
await this.
|
|
224
|
-
if (tx.txid != null && tx.txid !== '') {
|
|
225
|
-
const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
226
|
-
if (req != null) {
|
|
227
|
-
req.addHistoryNote(serviceUnreachable
|
|
228
|
-
? { what: 'abortAction-offline-fallback', reference: args.reference }
|
|
229
|
-
: { what: 'abortAction', reference: args.reference });
|
|
230
|
-
req.status = 'invalid';
|
|
231
|
-
await req.updateStorageDynamicProperties(this, trx);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
const r = {
|
|
235
|
-
aborted: true
|
|
236
|
-
};
|
|
237
|
-
return r;
|
|
333
|
+
return await this.invalidateAbortedTransaction(tx, userId, reference, args.reference, protection.serviceUnreachable, trx);
|
|
238
334
|
});
|
|
239
335
|
if ('__abortAction' in r) {
|
|
240
336
|
// Tone Engel review feedback (PR #122 comment 4444566147 item 3):
|
|
@@ -304,7 +400,9 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
304
400
|
throw new WERR_errors_1.WERR_INTERNAL('req rawTx and beef must be valid.');
|
|
305
401
|
mergeToBeef.mergeRawTx((0, utilityHelpers_noBuffer_1.asArray)(rawTx));
|
|
306
402
|
mergeToBeef.mergeBeef((0, utilityHelpers_noBuffer_1.asArray)(beef));
|
|
307
|
-
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
|
+
});
|
|
308
406
|
}
|
|
309
407
|
/**
|
|
310
408
|
* Checks if txid is a known valid ProvenTx and returns it if found.
|
|
@@ -337,7 +435,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
337
435
|
return existing;
|
|
338
436
|
}
|
|
339
437
|
async getProvenOrReq(txid, newReq, trx) {
|
|
340
|
-
if (
|
|
438
|
+
if (newReq != null && txid !== newReq.txid)
|
|
341
439
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('newReq', 'same txid');
|
|
342
440
|
const r = { proven: undefined, req: undefined };
|
|
343
441
|
r.proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
|
|
@@ -439,6 +537,8 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
439
537
|
async createAction(auth, args) {
|
|
440
538
|
if (auth.userId == null)
|
|
441
539
|
throw new WERR_errors_1.WERR_UNAUTHORIZED();
|
|
540
|
+
if (this.supportsActionBatchPersistence())
|
|
541
|
+
await (0, actionBatch_1.cleanupExpiredActionBatches)(this);
|
|
442
542
|
return await (0, createAction_1.createAction)(this, auth, args);
|
|
443
543
|
}
|
|
444
544
|
async processAction(auth, args) {
|
|
@@ -514,7 +614,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
514
614
|
beef.mergeBump(mp);
|
|
515
615
|
return beef;
|
|
516
616
|
}
|
|
517
|
-
async getValidBeefForTxid(txid, mergeToBeef, trustSelf, knownTxids, trx, requiredLevels, chainTracker, skipInvalidProofs) {
|
|
617
|
+
async getValidBeefForTxid(...[txid, mergeToBeef, trustSelf, knownTxids, trx, requiredLevels, chainTracker, skipInvalidProofs]) {
|
|
518
618
|
const beef = mergeToBeef ?? new sdk_1.Beef();
|
|
519
619
|
const r = await this.getProvenOrRawTx(txid, trx);
|
|
520
620
|
// --- proven-tx path ---
|
|
@@ -667,6 +767,94 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
667
767
|
}
|
|
668
768
|
return { log };
|
|
669
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
|
+
}
|
|
670
858
|
/**
|
|
671
859
|
* Restore every failed local copy of a transaction before proof completion.
|
|
672
860
|
* Also heals the request's notification set from the authoritative txid
|
|
@@ -688,23 +876,10 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
688
876
|
// transition separately so it is persisted atomically with bookkeeping.
|
|
689
877
|
await req.refreshFromStorage(this);
|
|
690
878
|
const preparedTransactionIds = new Set(transactionsToRepair.map(transaction => transaction.transactionId));
|
|
691
|
-
const outputVerdicts = new Map();
|
|
692
879
|
const bsvtx = transactionsToRepair.length > 0 ? sdk_1.Transaction.fromBinary(req.rawTx) : undefined;
|
|
693
880
|
// UTXO checks can call external services. Complete every check before
|
|
694
881
|
// opening the write transaction so network latency never holds DB locks.
|
|
695
|
-
|
|
696
|
-
const services = this.getServices();
|
|
697
|
-
for (const transaction of transactionsToRepair) {
|
|
698
|
-
const outputs = await this.findOutputs({
|
|
699
|
-
partial: { userId: transaction.userId, transactionId: transaction.transactionId }
|
|
700
|
-
});
|
|
701
|
-
for (const output of outputs) {
|
|
702
|
-
const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
|
|
703
|
-
await this.validateOutputScript(output);
|
|
704
|
-
outputVerdicts.set(outputId, output.lockingScript == null ? undefined : await services.isUtxo(output));
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
}
|
|
882
|
+
const outputVerdicts = await this.prepareProofRecoveryOutputVerdicts(transactionsToRepair);
|
|
708
883
|
return await this.transaction(async (trx) => {
|
|
709
884
|
let log = '';
|
|
710
885
|
await req.refreshFromStorage(this, trx);
|
|
@@ -726,59 +901,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
726
901
|
const shouldRepair = requestUpdate != null || tx.status === 'failed';
|
|
727
902
|
if (!shouldRepair)
|
|
728
903
|
continue;
|
|
729
|
-
|
|
730
|
-
throw new WERR_errors_1.WERR_INTERNAL(`Transaction ${tx.transactionId} changed while preparing proof recovery.`);
|
|
731
|
-
}
|
|
732
|
-
await this.updateTransaction(tx.transactionId, { status: 'unproven' }, trx);
|
|
733
|
-
log += ' '.repeat(indent) + `transaction ${tx.transactionId} status is now 'unproven'\n`;
|
|
734
|
-
let vin = -1;
|
|
735
|
-
for (const input of bsvtx.inputs) {
|
|
736
|
-
vin++;
|
|
737
|
-
const sourceTXID = input.sourceTXID;
|
|
738
|
-
if (sourceTXID == null) {
|
|
739
|
-
log += ' '.repeat(indent + 2) + `input ${vin} has no source transaction id\n`;
|
|
740
|
-
continue;
|
|
741
|
-
}
|
|
742
|
-
const outputs = await this.findOutputs({
|
|
743
|
-
partial: {
|
|
744
|
-
userId: tx.userId,
|
|
745
|
-
txid: sourceTXID,
|
|
746
|
-
vout: input.sourceOutputIndex
|
|
747
|
-
},
|
|
748
|
-
trx
|
|
749
|
-
});
|
|
750
|
-
if (outputs.length === 1) {
|
|
751
|
-
const output = outputs[0];
|
|
752
|
-
log += ' '.repeat(indent + 2) +
|
|
753
|
-
`input ${vin} matched to output ${output.outputId} updated spentBy ${tx.transactionId}\n`;
|
|
754
|
-
await this.updateOutput((0, utilityHelpers_1.verifyId)(output.outputId), { spendable: false, spentBy: tx.transactionId }, trx);
|
|
755
|
-
}
|
|
756
|
-
else {
|
|
757
|
-
log += ' '.repeat(indent + 2) + `input ${vin} not matched to user's outputs\n`;
|
|
758
|
-
}
|
|
759
|
-
}
|
|
760
|
-
const outputs = await this.findOutputs({
|
|
761
|
-
partial: { userId: tx.userId, transactionId: tx.transactionId },
|
|
762
|
-
trx
|
|
763
|
-
});
|
|
764
|
-
for (const output of outputs) {
|
|
765
|
-
const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
|
|
766
|
-
if (!outputVerdicts.has(outputId)) {
|
|
767
|
-
throw new WERR_errors_1.WERR_INTERNAL(`Output ${outputId} changed while preparing proof recovery.`);
|
|
768
|
-
}
|
|
769
|
-
const isUtxo = outputVerdicts.get(outputId);
|
|
770
|
-
if (isUtxo == null) {
|
|
771
|
-
log += ' '.repeat(indent + 2) + `output ${output.outputId} does not have a valid locking script\n`;
|
|
772
|
-
}
|
|
773
|
-
else if (isUtxo === output.spendable) {
|
|
774
|
-
log += ' '.repeat(indent + 2) + `output ${output.outputId} unchanged\n`;
|
|
775
|
-
}
|
|
776
|
-
else {
|
|
777
|
-
log += ' '.repeat(indent + 2) +
|
|
778
|
-
`output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
|
|
779
|
-
await this.updateOutput(outputId, { spendable: isUtxo }, trx);
|
|
780
|
-
}
|
|
781
|
-
}
|
|
904
|
+
log += await this.restoreTransactionForProof(tx, bsvtx, preparedTransactionIds, outputVerdicts, indent, trx);
|
|
782
905
|
}
|
|
783
906
|
await req.updateStorageDynamicProperties(this, trx);
|
|
784
907
|
return log;
|
|
@@ -811,9 +934,13 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
811
934
|
const transactionIdsNeedingProof = transactions
|
|
812
935
|
.filter(transaction => transaction.status !== 'completed' || transaction.provenTxId !== proven.provenTxId)
|
|
813
936
|
.map(transaction => transaction.transactionId);
|
|
814
|
-
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
|
+
});
|
|
815
940
|
const completedTransactions = await this.findTransactions({ partial: { txid: req.txid }, trx });
|
|
816
|
-
req.notified =
|
|
941
|
+
req.notified =
|
|
942
|
+
updatesSucceeded &&
|
|
943
|
+
completedTransactions.every(transaction => transaction.status === 'completed' && transaction.provenTxId === proven.provenTxId);
|
|
817
944
|
await req.updateStorageDynamicProperties(this, trx);
|
|
818
945
|
return false;
|
|
819
946
|
});
|
|
@@ -853,7 +980,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
853
980
|
return { invalidSpendableOutputs };
|
|
854
981
|
}
|
|
855
982
|
async checkOutputIsUtxo(o, services) {
|
|
856
|
-
if (
|
|
983
|
+
if (o.lockingScript == null || o.lockingScript.length === 0)
|
|
857
984
|
return false;
|
|
858
985
|
const hash = services.hashOutputScript((0, utilityHelpers_noBuffer_1.asString)(o.lockingScript));
|
|
859
986
|
const r = await services.getUtxoStatus(hash, undefined, `${o.txid ?? ''}.${o.vout ?? ''}`);
|
|
@@ -894,7 +1021,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
894
1021
|
}
|
|
895
1022
|
async validateOutputScript(o, trx) {
|
|
896
1023
|
// without offset and length values return what we have (make no changes)
|
|
897
|
-
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 === '')
|
|
898
1030
|
return;
|
|
899
1031
|
// if there is an outputScript and its length is the expected length return what we have.
|
|
900
1032
|
if (o.lockingScript?.length === o.scriptLength)
|