@bopen-io/wallet-toolbox 2.1.21-parity-fix.2 → 2.6.2-brc153.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +232 -6
- package/LICENSE.txt +58 -0
- package/README.md +236 -47
- package/docs/README.md +3 -1
- package/docs/action-batch-planning.md +220 -0
- package/docs/authentication-observability.md +106 -0
- package/docs/client.md +55 -14
- package/docs/managed-change-policy.md +79 -0
- package/docs/monitor.md +3 -2
- package/docs/setup.md +24 -4
- package/docs/storage.md +16 -6
- package/docs/wallet.md +55 -14
- package/out/src/CWIStyleWalletManager.d.ts +122 -12
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +1006 -461
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +13 -6
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +15 -16
- package/out/src/Setup.js.map +1 -1
- package/out/src/SetupClient.d.ts +8 -6
- package/out/src/SetupClient.d.ts.map +1 -1
- package/out/src/SetupClient.js +11 -12
- 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 +5 -5
- package/out/src/ShamirWalletManager.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.js +16 -9
- package/out/src/ShamirWalletManager.js.map +1 -1
- package/out/src/SimpleWalletManager.d.ts +12 -2
- package/out/src/SimpleWalletManager.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.js +73 -31
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.d.ts +88 -14
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +410 -249
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +31 -7
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +219 -35
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.d.ts.map +1 -1
- package/out/src/WalletLogger.js +45 -32
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +163 -19
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +1232 -1180
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.d.ts +2 -2
- package/out/src/WalletSettingsManager.d.ts.map +1 -1
- package/out/src/WalletSettingsManager.js +3 -0
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/entropy/EntropyCollector.d.ts +1 -1
- package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
- package/out/src/entropy/EntropyCollector.js +18 -20
- package/out/src/entropy/EntropyCollector.js.map +1 -1
- package/out/src/fundWalletP2PKH.d.ts +2 -2
- package/out/src/fundWalletP2PKH.d.ts.map +1 -1
- package/out/src/fundWalletP2PKH.js +15 -15
- package/out/src/fundWalletP2PKH.js.map +1 -1
- package/out/src/index.all.d.ts +2 -0
- package/out/src/index.all.d.ts.map +1 -1
- package/out/src/index.all.js +2 -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 +3 -0
- package/out/src/index.mobile.d.ts.map +1 -1
- package/out/src/index.mobile.js +3 -0
- package/out/src/index.mobile.js.map +1 -1
- package/out/src/mockchain/MockChainMigrations.d.ts +3 -3
- package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
- package/out/src/mockchain/MockChainMigrations.js +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 +9 -8
- 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 +12 -10
- package/out/src/mockchain/MockChainTracker.js.map +1 -1
- package/out/src/mockchain/MockMiner.d.ts.map +1 -1
- package/out/src/mockchain/MockMiner.js +5 -5
- package/out/src/mockchain/MockMiner.js.map +1 -1
- package/out/src/mockchain/MockServices.d.ts +13 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +232 -283
- 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 +61 -57
- package/out/src/mockchain/merkleTree.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +24 -4
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +158 -148
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts +5 -2
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +79 -69
- 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 +12 -5
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +143 -135
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +6 -4
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +141 -129
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +63 -3
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +103 -13
- 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 +2 -2
- package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskClock.js +4 -3
- package/out/src/monitor/tasks/TaskClock.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js +2 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.d.ts +4 -2
- package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.js +5 -2
- package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js +3 -2
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts +5 -4
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +22 -8
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts +4 -2
- package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.js +9 -5
- package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js +6 -4
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +4 -2
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +22 -17
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +4 -2
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +12 -5
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts +4 -2
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js +16 -7
- package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -2
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +8 -2
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts +4 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +63 -50
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +2 -2
- package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.js +4 -6
- package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts +4 -2
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +13 -67
- 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 +10 -5
- 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/CertOpsWallet.d.ts +3 -3
- package/out/src/sdk/CertOpsWallet.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts +3 -3
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +75 -50
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WERR_errors.d.ts +3 -3
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/out/src/sdk/WERR_errors.js +29 -14
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.d.ts +4 -1
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +63 -58
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js +1 -3
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +45 -20
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +92 -64
- 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.d.ts +14 -5
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +13 -4
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/ServiceCollection.d.ts +6 -6
- package/out/src/services/ServiceCollection.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.js +14 -9
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +16 -2
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +320 -241
- 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 +22 -16
- package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +5 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +61 -19
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +8 -6
- 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/Api/BulkIngestorApi.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +11 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +29 -10
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +369 -259
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +39 -44
- 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 +24 -15
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +64 -0
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +318 -0
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +9 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts +1 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +10 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts +27 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +64 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +6 -5
- 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 +3 -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 +4 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +24 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +68 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -0
- 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 +3 -10
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +13 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +50 -10
- 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 +4 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +14 -4
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +120 -143
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +22 -8
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +106 -54
- 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 +12 -17
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +3 -3
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +15 -14
- 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 +85 -66
- 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 +128 -101
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +6 -2
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +170 -158
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js +0 -21
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +9 -2
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +142 -92
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +58 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +143 -28
- 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 +14 -29
- 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 +6 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +8 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +282 -252
- 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 +12 -7
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +53 -29
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +5 -5
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +34 -11
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +8 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +54 -13
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +10 -12
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +30 -34
- 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 +28 -18
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +4 -6
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +2 -12
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +72 -63
- 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.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +9 -10
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +33 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +94 -15
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/networkConfig.d.ts +18 -0
- package/out/src/services/networkConfig.d.ts.map +1 -0
- package/out/src/services/networkConfig.js +92 -0
- package/out/src/services/networkConfig.js.map +1 -0
- package/out/src/services/providers/ARC.d.ts +8 -0
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +167 -92
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/ArcSSEClient.d.ts +1 -0
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +21 -17
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +77 -0
- package/out/src/services/providers/Arcade.d.ts.map +1 -0
- package/out/src/services/providers/Arcade.js +356 -0
- package/out/src/services/providers/Arcade.js.map +1 -0
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +128 -103
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js +18 -3
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts +10 -2
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +145 -236
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
- package/out/src/services/providers/exchangeRates.js +4 -4
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js +2 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.d.ts +68 -0
- package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -0
- package/out/src/services/providers/whatsOnChainHelpers.js +147 -0
- package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -0
- package/out/src/signer/WalletSigner.d.ts.map +1 -1
- package/out/src/signer/WalletSigner.js +4 -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 +2 -3
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts +54 -0
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +215 -100
- 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 +78 -80
- 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 +81 -41
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts +16 -5
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +34 -18
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.js +1 -1
- package/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/out/src/signer/methods/resultBeef.d.ts +4 -0
- package/out/src/signer/methods/resultBeef.d.ts.map +1 -0
- package/out/src/signer/methods/resultBeef.js +12 -0
- package/out/src/signer/methods/resultBeef.js.map +1 -0
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +42 -15
- 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 +373 -0
- package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -0
- package/out/src/storage/StorageIdb.d.ts +51 -6
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +929 -1324
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +51 -3
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +751 -314
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +117 -2
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +735 -254
- 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 +21 -15
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +0 -1
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +32 -35
- 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 +6 -4
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +13 -0
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +179 -103
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +80 -1
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +90 -72
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminUi.js.map +1 -1
- package/out/src/storage/idbHelpers.d.ts +44 -0
- package/out/src/storage/idbHelpers.d.ts.map +1 -0
- package/out/src/storage/idbHelpers.js +395 -0
- package/out/src/storage/idbHelpers.js.map +1 -0
- package/out/src/storage/index.all.d.ts +6 -0
- package/out/src/storage/index.all.d.ts.map +1 -1
- package/out/src/storage/index.all.js +6 -0
- package/out/src/storage/index.all.js.map +1 -1
- package/out/src/storage/index.client.d.ts +4 -0
- package/out/src/storage/index.client.d.ts.map +1 -1
- package/out/src/storage/index.client.js +4 -0
- package/out/src/storage/index.client.js.map +1 -1
- package/out/src/storage/index.mobile.d.ts +3 -0
- package/out/src/storage/index.mobile.d.ts.map +1 -1
- package/out/src/storage/index.mobile.js +3 -0
- package/out/src/storage/index.mobile.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts +6 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js +75 -9
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts +2 -0
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +43 -29
- 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 +725 -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 +26 -0
- package/out/src/storage/methods/actionPlanning.d.ts.map +1 -0
- package/out/src/storage/methods/actionPlanning.js +103 -0
- package/out/src/storage/methods/actionPlanning.js.map +1 -0
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +63 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +245 -92
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/availableManagedChange.d.ts +11 -0
- package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -0
- package/out/src/storage/methods/availableManagedChange.js +25 -0
- package/out/src/storage/methods/availableManagedChange.js.map +1 -0
- 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 +783 -416
- 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 +188 -127
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.d.ts +7 -0
- package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +291 -63
- 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 +11 -8
- package/out/src/storage/methods/getSyncChunk.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +77 -6
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +372 -139
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js +87 -110
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.d.ts +1 -1
- package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +97 -118
- package/out/src/storage/methods/listActionsKnex.js.map +1 -1
- package/out/src/storage/methods/listCertificates.d.ts +2 -2
- package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
- package/out/src/storage/methods/listCertificates.js +8 -8
- 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 +144 -150
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts +2 -2
- package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js +217 -246
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/managedChange.d.ts +26 -0
- package/out/src/storage/methods/managedChange.d.ts.map +1 -0
- package/out/src/storage/methods/managedChange.js +42 -0
- package/out/src/storage/methods/managedChange.js.map +1 -0
- package/out/src/storage/methods/offsetKey.d.ts +1 -1
- package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
- package/out/src/storage/methods/offsetKey.js +3 -6
- package/out/src/storage/methods/offsetKey.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts +2 -11
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +173 -106
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/purgeData.d.ts +1 -1
- package/out/src/storage/methods/purgeData.d.ts.map +1 -1
- package/out/src/storage/methods/purgeData.js +169 -172
- 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 +2 -2
- package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
- package/out/src/storage/methods/reviewStatus.d.ts +4 -3
- package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatus.js +54 -14
- package/out/src/storage/methods/reviewStatus.js.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts +3 -3
- package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.js +54 -13
- package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
- package/out/src/storage/methods/utils.Buffer.d.ts.map +1 -1
- package/out/src/storage/methods/utils.Buffer.js.map +1 -1
- package/out/src/storage/methods/utils.d.ts.map +1 -1
- package/out/src/storage/methods/utils.js +7 -1
- package/out/src/storage/methods/utils.js.map +1 -1
- package/out/src/storage/portable/index.d.ts +55 -0
- package/out/src/storage/portable/index.d.ts.map +1 -0
- package/out/src/storage/portable/index.js +872 -0
- package/out/src/storage/portable/index.js.map +1 -0
- package/out/src/storage/remoting/BinaryJson.d.ts +10 -0
- package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -0
- package/out/src/storage/remoting/BinaryJson.js +218 -0
- package/out/src/storage/remoting/BinaryJson.js.map +1 -0
- package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts +12 -0
- package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts.map +1 -0
- package/out/src/storage/remoting/KnexPaymentReplayStore.js +46 -0
- package/out/src/storage/remoting/KnexPaymentReplayStore.js.map +1 -0
- package/out/src/storage/remoting/KnexSessionManager.d.ts +57 -0
- package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -0
- package/out/src/storage/remoting/KnexSessionManager.js +256 -0
- package/out/src/storage/remoting/KnexSessionManager.js.map +1 -0
- 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 +7 -271
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +87 -458
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +318 -0
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -0
- package/out/src/storage/remoting/StorageClientBase.js +474 -0
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -0
- package/out/src/storage/remoting/StorageMobile.d.ts +8 -276
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +43 -435
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +106 -9
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +628 -225
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/edgePolicy.d.ts +84 -0
- package/out/src/storage/remoting/edgePolicy.d.ts.map +1 -0
- package/out/src/storage/remoting/edgePolicy.js +570 -0
- package/out/src/storage/remoting/edgePolicy.js.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts +29 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.js +108 -0
- package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts +7 -3
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +173 -11
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/StorageIdbSchema.d.ts +27 -1
- 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 +1 -0
- package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificate.js +5 -4
- package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificateField.js +5 -7
- package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
- package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityCommission.js +6 -8
- package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.js +21 -24
- package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.js +7 -7
- package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTag.js +2 -2
- package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTagMap.js +4 -6
- package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +8 -4
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +77 -64
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +11 -2
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +122 -74
- 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 +40 -45
- 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 +30 -31
- package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabel.js +2 -2
- package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabelMap.js +4 -6
- package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
- package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityUser.js +3 -3
- package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.js +17 -18
- 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.d.ts +20 -0
- package/out/src/storage/schema/tables/TableAuthSession.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableAuthSession.js +15 -0
- package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -0
- package/out/src/storage/schema/tables/TableCertificate.d.ts +2 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutput.d.ts +3 -2
- package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutput.js +1 -1
- package/out/src/storage/schema/tables/TableOutput.js.map +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +24 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
- package/out/src/storage/schema/tables/index.d.ts +2 -0
- package/out/src/storage/schema/tables/index.d.ts.map +1 -1
- package/out/src/storage/schema/tables/index.js +2 -0
- package/out/src/storage/schema/tables/index.js.map +1 -1
- package/out/src/storage/storageProviderHelpers.d.ts +35 -0
- package/out/src/storage/storageProviderHelpers.d.ts.map +1 -0
- package/out/src/storage/storageProviderHelpers.js +106 -0
- package/out/src/storage/storageProviderHelpers.js.map +1 -0
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +4 -2
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +65 -46
- 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 +15 -49
- package/out/src/utility/Format.js.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.d.ts +3 -2
- package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.js +22 -11
- 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 +1 -1
- package/out/src/utility/aggregateResults.d.ts.map +1 -1
- package/out/src/utility/aggregateResults.js +2 -2
- package/out/src/utility/aggregateResults.js.map +1 -1
- package/out/src/utility/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 +2 -2
- package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.js +31 -28
- package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.d.ts +23 -0
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -0
- package/out/src/utility/brc153ReferenceLabels.js +51 -0
- package/out/src/utility/brc153ReferenceLabels.js.map +1 -0
- 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 +12 -6
- package/out/src/utility/identityUtils.d.ts.map +1 -1
- package/out/src/utility/identityUtils.js +82 -38
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/index.all.d.ts +2 -0
- package/out/src/utility/index.all.d.ts.map +1 -1
- package/out/src/utility/index.all.js +2 -0
- package/out/src/utility/index.all.js.map +1 -1
- package/out/src/utility/index.client.d.ts +2 -0
- package/out/src/utility/index.client.d.ts.map +1 -1
- package/out/src/utility/index.client.js +2 -0
- package/out/src/utility/index.client.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts +5 -5
- 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 +53 -44
- 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.js +1 -1
- package/out/src/utility/tscProofToMerklePath.js.map +1 -1
- package/out/src/utility/utilityHelpers.buffer.d.ts +5 -3
- package/out/src/utility/utilityHelpers.buffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.buffer.js +3 -3
- package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts +3 -4
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +24 -16
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.d.ts +7 -3
- package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +7 -8
- 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 -150
- 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 +1 -4
- package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js +1 -4
- 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 -3
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
- package/package.json +89 -36
- package/license.md +0 -28
- package/out/src/__tests/CWIStyleWalletManager.test.d.ts +0 -2
- package/out/src/__tests/CWIStyleWalletManager.test.d.ts.map +0 -1
- package/out/src/__tests/CWIStyleWalletManager.test.js +0 -809
- package/out/src/__tests/CWIStyleWalletManager.test.js.map +0 -1
- package/out/src/__tests/ShamirWalletManager.test.d.ts +0 -2
- package/out/src/__tests/ShamirWalletManager.test.d.ts.map +0 -1
- package/out/src/__tests/ShamirWalletManager.test.js +0 -299
- package/out/src/__tests/ShamirWalletManager.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.callbacks.test.js +0 -373
- package/out/src/__tests/WalletPermissionsManager.callbacks.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.checks.test.js +0 -642
- package/out/src/__tests/WalletPermissionsManager.checks.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.encryption.test.js +0 -335
- package/out/src/__tests/WalletPermissionsManager.encryption.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +0 -87
- package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.fixtures.js +0 -290
- package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.flows.test.js +0 -613
- package/out/src/__tests/WalletPermissionsManager.flows.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.initialization.test.js +0 -227
- package/out/src/__tests/WalletPermissionsManager.initialization.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.pmodules.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.pmodules.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.pmodules.test.js +0 -735
- package/out/src/__tests/WalletPermissionsManager.pmodules.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.proxying.test.js +0 -584
- package/out/src/__tests/WalletPermissionsManager.proxying.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.tokens.test.js +0 -415
- package/out/src/__tests/WalletPermissionsManager.tokens.test.js.map +0 -1
- package/out/src/entropy/__tests/EntropyCollector.test.d.ts +0 -2
- package/out/src/entropy/__tests/EntropyCollector.test.d.ts.map +0 -1
- package/out/src/entropy/__tests/EntropyCollector.test.js +0 -137
- package/out/src/entropy/__tests/EntropyCollector.test.js.map +0 -1
- package/out/src/monitor/__test/MonitorDaemon.man.test.d.ts +0 -2
- package/out/src/monitor/__test/MonitorDaemon.man.test.d.ts.map +0 -1
- package/out/src/monitor/__test/MonitorDaemon.man.test.js +0 -41
- package/out/src/monitor/__test/MonitorDaemon.man.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js +0 -257
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js +0 -161
- package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js +0 -214
- package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js +0 -92
- package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js +0 -139
- package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js.map +0 -1
- package/out/src/sdk/__test/CertificateLifeCycle.test.d.ts +0 -2
- package/out/src/sdk/__test/CertificateLifeCycle.test.d.ts.map +0 -1
- package/out/src/sdk/__test/CertificateLifeCycle.test.js +0 -62
- package/out/src/sdk/__test/CertificateLifeCycle.test.js.map +0 -1
- package/out/src/sdk/__test/PrivilegedKeyManager.test.d.ts +0 -2
- package/out/src/sdk/__test/PrivilegedKeyManager.test.d.ts.map +0 -1
- package/out/src/sdk/__test/PrivilegedKeyManager.test.js +0 -647
- package/out/src/sdk/__test/PrivilegedKeyManager.test.js.map +0 -1
- package/out/src/sdk/__test/WalletError.test.d.ts +0 -2
- package/out/src/sdk/__test/WalletError.test.d.ts.map +0 -1
- package/out/src/sdk/__test/WalletError.test.js +0 -255
- package/out/src/sdk/__test/WalletError.test.js.map +0 -1
- package/out/src/sdk/__test/validationHelpers.test.d.ts +0 -2
- package/out/src/sdk/__test/validationHelpers.test.d.ts.map +0 -1
- package/out/src/sdk/__test/validationHelpers.test.js +0 -20
- package/out/src/sdk/__test/validationHelpers.test.js.map +0 -1
- package/out/src/services/__tests/ARC.man.test.d.ts +0 -2
- package/out/src/services/__tests/ARC.man.test.d.ts.map +0 -1
- package/out/src/services/__tests/ARC.man.test.js +0 -104
- package/out/src/services/__tests/ARC.man.test.js.map +0 -1
- package/out/src/services/__tests/ARC.timeout.man.test.d.ts +0 -2
- package/out/src/services/__tests/ARC.timeout.man.test.d.ts.map +0 -1
- package/out/src/services/__tests/ARC.timeout.man.test.js +0 -74
- package/out/src/services/__tests/ARC.timeout.man.test.js.map +0 -1
- package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts +0 -2
- package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts.map +0 -1
- package/out/src/services/__tests/ArcGorillaPool.man.test.js +0 -93
- package/out/src/services/__tests/ArcGorillaPool.man.test.js.map +0 -1
- package/out/src/services/__tests/arcServices.test.d.ts +0 -2
- package/out/src/services/__tests/arcServices.test.d.ts.map +0 -1
- package/out/src/services/__tests/arcServices.test.js +0 -7
- package/out/src/services/__tests/arcServices.test.js.map +0 -1
- package/out/src/services/__tests/bitrails.test.d.ts +0 -2
- package/out/src/services/__tests/bitrails.test.d.ts.map +0 -1
- package/out/src/services/__tests/bitrails.test.js +0 -59
- package/out/src/services/__tests/bitrails.test.js.map +0 -1
- package/out/src/services/__tests/getFiatExchangeRate.test.d.ts +0 -2
- package/out/src/services/__tests/getFiatExchangeRate.test.d.ts.map +0 -1
- package/out/src/services/__tests/getFiatExchangeRate.test.js +0 -156
- package/out/src/services/__tests/getFiatExchangeRate.test.js.map +0 -1
- package/out/src/services/__tests/getMerklePath.test.d.ts +0 -2
- package/out/src/services/__tests/getMerklePath.test.d.ts.map +0 -1
- package/out/src/services/__tests/getMerklePath.test.js +0 -16
- package/out/src/services/__tests/getMerklePath.test.js.map +0 -1
- package/out/src/services/__tests/getRawTx.test.d.ts +0 -2
- package/out/src/services/__tests/getRawTx.test.d.ts.map +0 -1
- package/out/src/services/__tests/getRawTx.test.js +0 -16
- package/out/src/services/__tests/getRawTx.test.js.map +0 -1
- package/out/src/services/__tests/postBeef.test.d.ts +0 -2
- package/out/src/services/__tests/postBeef.test.d.ts.map +0 -1
- package/out/src/services/__tests/postBeef.test.js +0 -101
- package/out/src/services/__tests/postBeef.test.js.map +0 -1
- package/out/src/services/__tests/verifyBeef.test.d.ts +0 -2
- package/out/src/services/__tests/verifyBeef.test.d.ts.map +0 -1
- package/out/src/services/__tests/verifyBeef.test.js +0 -43
- package/out/src/services/__tests/verifyBeef.test.js.map +0 -1
- package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.d.ts +0 -2
- package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js +0 -25
- package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js.map +0 -1
- package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.d.ts +0 -2
- package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js +0 -27
- package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js +0 -56
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js +0 -40
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js +0 -108
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js +0 -87
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.js +0 -39
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +0 -75
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js +0 -43
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js +0 -164
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts +0 -12
- package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js +0 -69
- package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js +0 -109
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +0 -54
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js +0 -255
- package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js +0 -56
- package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.js +0 -69
- package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js +0 -51
- package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js.map +0 -1
- package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts +0 -2
- package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts.map +0 -1
- package/out/src/services/providers/__tests/ArcSSEClient.test.js +0 -256
- package/out/src/services/providers/__tests/ArcSSEClient.test.js.map +0 -1
- package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts +0 -2
- package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts.map +0 -1
- package/out/src/services/providers/__tests/WhatsOnChain.test.js +0 -191
- package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +0 -1
- package/out/src/services/providers/__tests/exchangeRates.test.d.ts +0 -2
- package/out/src/services/providers/__tests/exchangeRates.test.d.ts.map +0 -1
- package/out/src/services/providers/__tests/exchangeRates.test.js +0 -23
- package/out/src/services/providers/__tests/exchangeRates.test.js.map +0 -1
- package/out/src/storage/__test/StorageIdb.test.d.ts +0 -2
- package/out/src/storage/__test/StorageIdb.test.d.ts.map +0 -1
- package/out/src/storage/__test/StorageIdb.test.js +0 -44
- package/out/src/storage/__test/StorageIdb.test.js.map +0 -1
- package/out/src/storage/__test/WalletStorageManager.test.d.ts +0 -2
- package/out/src/storage/__test/WalletStorageManager.test.d.ts.map +0 -1
- package/out/src/storage/__test/WalletStorageManager.test.js +0 -254
- package/out/src/storage/__test/WalletStorageManager.test.js.map +0 -1
- package/out/src/storage/__test/adminStats.man.test.d.ts +0 -2
- package/out/src/storage/__test/adminStats.man.test.d.ts.map +0 -1
- package/out/src/storage/__test/adminStats.man.test.js +0 -78
- package/out/src/storage/__test/adminStats.man.test.js.map +0 -1
- package/out/src/storage/__test/findStaleMerkleRoots.test.d.ts +0 -2
- package/out/src/storage/__test/findStaleMerkleRoots.test.d.ts.map +0 -1
- package/out/src/storage/__test/findStaleMerkleRoots.test.js +0 -41
- package/out/src/storage/__test/findStaleMerkleRoots.test.js.map +0 -1
- package/out/src/storage/__test/findStaleMerkleRootsKnex.test.d.ts +0 -2
- package/out/src/storage/__test/findStaleMerkleRootsKnex.test.d.ts.map +0 -1
- package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js +0 -73
- package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js.map +0 -1
- package/out/src/storage/__test/getBeefForTransaction.test.d.ts +0 -2
- package/out/src/storage/__test/getBeefForTransaction.test.d.ts.map +0 -1
- package/out/src/storage/__test/getBeefForTransaction.test.js +0 -347
- package/out/src/storage/__test/getBeefForTransaction.test.js.map +0 -1
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.d.ts +0 -2
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.d.ts.map +0 -1
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +0 -1111
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +0 -1
- package/out/src/storage/methods/__test/offsetKey.test.d.ts +0 -2
- package/out/src/storage/methods/__test/offsetKey.test.d.ts.map +0 -1
- package/out/src/storage/methods/__test/offsetKey.test.js +0 -229
- package/out/src/storage/methods/__test/offsetKey.test.js.map +0 -1
- package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts +0 -2
- package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts.map +0 -1
- package/out/src/storage/remoting/__test/StorageClient.man.test.js +0 -487
- package/out/src/storage/remoting/__test/StorageClient.man.test.js.map +0 -1
- package/out/src/storage/remoting/__test/StorageClient.test.d.ts +0 -2
- package/out/src/storage/remoting/__test/StorageClient.test.d.ts.map +0 -1
- package/out/src/storage/remoting/__test/StorageClient.test.js +0 -119
- package/out/src/storage/remoting/__test/StorageClient.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js +0 -301
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.js +0 -308
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.js +0 -316
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js +0 -228
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js +0 -191
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js +0 -226
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/OutputTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTests.test.js +0 -413
- package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js +0 -299
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +0 -474
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js +0 -234
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +0 -539
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js +0 -304
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js +0 -170
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.js +0 -81
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/usersTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/usersTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/usersTests.test.js +0 -277
- package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +0 -1
- package/out/src/utility/__tests/utilityHelpers.noBuffer.test.d.ts +0 -2
- package/out/src/utility/__tests/utilityHelpers.noBuffer.test.d.ts.map +0 -1
- package/out/src/utility/__tests/utilityHelpers.noBuffer.test.js +0 -107
- package/out/src/utility/__tests/utilityHelpers.noBuffer.test.js.map +0 -1
- package/out/src/wab-client/__tests/WABClient.man.test.d.ts +0 -2
- package/out/src/wab-client/__tests/WABClient.man.test.d.ts.map +0 -1
- package/out/src/wab-client/__tests/WABClient.man.test.js +0 -52
- package/out/src/wab-client/__tests/WABClient.man.test.js.map +0 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StorageIdb = void 0;
|
|
4
4
|
const idb_1 = require("idb");
|
|
5
|
+
const idbHelpers_1 = require("./idbHelpers");
|
|
5
6
|
const utilityHelpers_1 = require("../utility/utilityHelpers");
|
|
6
7
|
const StorageProvider_1 = require("./StorageProvider");
|
|
7
8
|
const listActionsIdb_1 = require("./methods/listActionsIdb");
|
|
@@ -9,32 +10,58 @@ const listOutputsIdb_1 = require("./methods/listOutputsIdb");
|
|
|
9
10
|
const reviewStatusIdb_1 = require("./methods/reviewStatusIdb");
|
|
10
11
|
const purgeDataIdb_1 = require("./methods/purgeDataIdb");
|
|
11
12
|
const WERR_errors_1 = require("../sdk/WERR_errors");
|
|
13
|
+
const managedChange_1 = require("./methods/managedChange");
|
|
14
|
+
const actionPlanning_1 = require("./methods/actionPlanning");
|
|
15
|
+
/**
|
|
16
|
+
* Shared cursor-scan loop used by all `filterXxx` methods of StorageIdb.
|
|
17
|
+
*
|
|
18
|
+
* Walks `cursor` forward, applying `since`, a caller-supplied `matches`
|
|
19
|
+
* predicate, paging (offset / limit), and an async `accept` callback for
|
|
20
|
+
* records that pass all filters. Returns the number of accepted records.
|
|
21
|
+
*
|
|
22
|
+
* Implemented as a module-level helper (not a class method) so that
|
|
23
|
+
* profiling/instrumentation that wraps class-prototype methods cannot
|
|
24
|
+
* intercept or mutate its `matches` / `accept` callbacks.
|
|
25
|
+
*/
|
|
26
|
+
async function scanCursor(
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
+
cursor, since, offset, limit, matches, accept) {
|
|
29
|
+
let skipped = 0;
|
|
30
|
+
let count = 0;
|
|
31
|
+
for (; cursor != null; cursor = await cursor.continue()) {
|
|
32
|
+
const r = cursor.value;
|
|
33
|
+
if (since != null && since > r.updated_at)
|
|
34
|
+
continue;
|
|
35
|
+
if (!(await matches(r)))
|
|
36
|
+
continue;
|
|
37
|
+
if (skipped < offset) {
|
|
38
|
+
skipped++;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
accept(r);
|
|
42
|
+
count++;
|
|
43
|
+
if ((limit ?? 0) > 0 && count >= limit)
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
return count;
|
|
47
|
+
}
|
|
12
48
|
/**
|
|
13
49
|
* This class implements the `StorageProvider` interface using IndexedDB,
|
|
14
50
|
* via the promises wrapper package `idb`.
|
|
15
51
|
*/
|
|
16
52
|
class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
53
|
+
dbName;
|
|
54
|
+
db;
|
|
17
55
|
constructor(options) {
|
|
18
56
|
super(options);
|
|
19
|
-
this.allStores = [
|
|
20
|
-
'certificates',
|
|
21
|
-
'certificate_fields',
|
|
22
|
-
'commissions',
|
|
23
|
-
'monitor_events',
|
|
24
|
-
'outputs',
|
|
25
|
-
'output_baskets',
|
|
26
|
-
'output_tags',
|
|
27
|
-
'output_tags_map',
|
|
28
|
-
'proven_txs',
|
|
29
|
-
'proven_tx_reqs',
|
|
30
|
-
'sync_states',
|
|
31
|
-
'transactions',
|
|
32
|
-
'tx_labels',
|
|
33
|
-
'tx_labels_map',
|
|
34
|
-
'users'
|
|
35
|
-
];
|
|
36
57
|
this.dbName = `wallet-toolbox-${this.chain}net`;
|
|
37
58
|
}
|
|
59
|
+
supportsActionBatchPersistence() {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
requiresActionBatchCleanupBeforeCreateAction() {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
38
65
|
/**
|
|
39
66
|
* This method must be called at least once before any other method accesses the database,
|
|
40
67
|
* and each time the schema may have updated.
|
|
@@ -61,7 +88,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
61
88
|
* @returns
|
|
62
89
|
*/
|
|
63
90
|
async verifyDB(storageName, storageIdentityKey) {
|
|
64
|
-
if (this.db)
|
|
91
|
+
if (this.db != null)
|
|
65
92
|
return this.db;
|
|
66
93
|
this.db = await this.initDB(storageName, storageIdentityKey);
|
|
67
94
|
this._settings = (await this.db.getAll('settings'))[0];
|
|
@@ -73,15 +100,15 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
73
100
|
* or a Knex.Transaction as appropriate.
|
|
74
101
|
*/
|
|
75
102
|
toDbTrx(stores, mode, trx) {
|
|
76
|
-
if (trx) {
|
|
103
|
+
if (trx != null) {
|
|
77
104
|
const t = trx;
|
|
78
105
|
return t;
|
|
79
106
|
}
|
|
80
107
|
else {
|
|
81
|
-
if (
|
|
108
|
+
if (this.db == null)
|
|
82
109
|
throw new Error('not initialized');
|
|
83
110
|
const db = this.db;
|
|
84
|
-
const trx = db.transaction(stores
|
|
111
|
+
const trx = db.transaction(stores.length > 0 ? stores : this.allStores, mode);
|
|
85
112
|
this.whenLastAccess = new Date();
|
|
86
113
|
return trx;
|
|
87
114
|
}
|
|
@@ -95,158 +122,29 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
95
122
|
*
|
|
96
123
|
* @param trx
|
|
97
124
|
*/
|
|
98
|
-
async readSettings(
|
|
125
|
+
async readSettings(_trx) {
|
|
99
126
|
await this.verifyDB();
|
|
100
127
|
return this._settings;
|
|
101
128
|
}
|
|
102
129
|
async initDB(storageName, storageIdentityKey) {
|
|
103
130
|
const chain = this.chain;
|
|
104
131
|
const maxOutputScript = 1024;
|
|
105
|
-
const db = await (0, idb_1.openDB)(this.dbName,
|
|
106
|
-
upgrade(db,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
});
|
|
113
|
-
provenTxsStore.createIndex('txid', 'txid', { unique: true });
|
|
114
|
-
}
|
|
115
|
-
if (!db.objectStoreNames.contains('proven_tx_reqs')) {
|
|
116
|
-
// proven_tx_reqs object store
|
|
117
|
-
const provenTxReqsStore = db.createObjectStore('proven_tx_reqs', {
|
|
118
|
-
keyPath: 'provenTxReqId',
|
|
119
|
-
autoIncrement: true
|
|
120
|
-
});
|
|
121
|
-
provenTxReqsStore.createIndex('provenTxId', 'provenTxId');
|
|
122
|
-
provenTxReqsStore.createIndex('txid', 'txid', { unique: true });
|
|
123
|
-
provenTxReqsStore.createIndex('status', 'status');
|
|
124
|
-
provenTxReqsStore.createIndex('batch', 'batch');
|
|
125
|
-
}
|
|
126
|
-
if (!db.objectStoreNames.contains('users')) {
|
|
127
|
-
const users = db.createObjectStore('users', {
|
|
128
|
-
keyPath: 'userId',
|
|
129
|
-
autoIncrement: true
|
|
130
|
-
});
|
|
131
|
-
users.createIndex('identityKey', 'identityKey', { unique: true });
|
|
132
|
-
}
|
|
133
|
-
if (!db.objectStoreNames.contains('certificates')) {
|
|
134
|
-
// certificates object store
|
|
135
|
-
const certificatesStore = db.createObjectStore('certificates', {
|
|
136
|
-
keyPath: 'certificateId',
|
|
137
|
-
autoIncrement: true
|
|
138
|
-
});
|
|
139
|
-
certificatesStore.createIndex('userId', 'userId');
|
|
140
|
-
certificatesStore.createIndex('userId_type_certifier_serialNumber', ['userId', 'type', 'certifier', 'serialNumber'], { unique: true });
|
|
141
|
-
}
|
|
142
|
-
if (!db.objectStoreNames.contains('certificate_fields')) {
|
|
143
|
-
// certificate_fields object store
|
|
144
|
-
const certificateFieldsStore = db.createObjectStore('certificate_fields', {
|
|
145
|
-
keyPath: ['certificateId', 'fieldName'] // Composite key
|
|
146
|
-
});
|
|
147
|
-
certificateFieldsStore.createIndex('userId', 'userId');
|
|
148
|
-
certificateFieldsStore.createIndex('certificateId', 'certificateId');
|
|
149
|
-
}
|
|
150
|
-
if (!db.objectStoreNames.contains('output_baskets')) {
|
|
151
|
-
// output_baskets object store
|
|
152
|
-
const outputBasketsStore = db.createObjectStore('output_baskets', {
|
|
153
|
-
keyPath: 'basketId',
|
|
154
|
-
autoIncrement: true
|
|
155
|
-
});
|
|
156
|
-
outputBasketsStore.createIndex('userId', 'userId');
|
|
157
|
-
outputBasketsStore.createIndex('name_userId', ['name', 'userId'], { unique: true });
|
|
158
|
-
}
|
|
159
|
-
if (!db.objectStoreNames.contains('transactions')) {
|
|
160
|
-
// transactions object store
|
|
161
|
-
const transactionsStore = db.createObjectStore('transactions', {
|
|
162
|
-
keyPath: 'transactionId',
|
|
163
|
-
autoIncrement: true
|
|
164
|
-
});
|
|
165
|
-
transactionsStore.createIndex('userId', 'userId');
|
|
166
|
-
transactionsStore.createIndex('status', 'status');
|
|
167
|
-
transactionsStore.createIndex('status_userId', ['status', 'userId']);
|
|
168
|
-
transactionsStore.createIndex('provenTxId', 'provenTxId');
|
|
169
|
-
transactionsStore.createIndex('reference', 'reference', { unique: true });
|
|
170
|
-
}
|
|
171
|
-
if (!db.objectStoreNames.contains('commissions')) {
|
|
172
|
-
// commissions object store
|
|
173
|
-
const commissionsStore = db.createObjectStore('commissions', {
|
|
174
|
-
keyPath: 'commissionId',
|
|
175
|
-
autoIncrement: true
|
|
176
|
-
});
|
|
177
|
-
commissionsStore.createIndex('userId', 'userId');
|
|
178
|
-
commissionsStore.createIndex('transactionId', 'transactionId', { unique: true });
|
|
179
|
-
}
|
|
180
|
-
if (!db.objectStoreNames.contains('outputs')) {
|
|
181
|
-
// outputs object store
|
|
182
|
-
const outputsStore = db.createObjectStore('outputs', {
|
|
183
|
-
keyPath: 'outputId',
|
|
184
|
-
autoIncrement: true
|
|
185
|
-
});
|
|
186
|
-
outputsStore.createIndex('userId', 'userId');
|
|
187
|
-
outputsStore.createIndex('transactionId', 'transactionId');
|
|
188
|
-
outputsStore.createIndex('basketId', 'basketId');
|
|
189
|
-
outputsStore.createIndex('spentBy', 'spentBy');
|
|
190
|
-
outputsStore.createIndex('transactionId_vout_userId', ['transactionId', 'vout', 'userId'], { unique: true });
|
|
191
|
-
}
|
|
192
|
-
if (!db.objectStoreNames.contains('output_tags')) {
|
|
193
|
-
// output_tags object store
|
|
194
|
-
const outputTagsStore = db.createObjectStore('output_tags', {
|
|
195
|
-
keyPath: 'outputTagId',
|
|
196
|
-
autoIncrement: true
|
|
197
|
-
});
|
|
198
|
-
outputTagsStore.createIndex('userId', 'userId');
|
|
199
|
-
outputTagsStore.createIndex('tag_userId', ['tag', 'userId'], { unique: true });
|
|
200
|
-
}
|
|
201
|
-
if (!db.objectStoreNames.contains('output_tags_map')) {
|
|
202
|
-
// output_tags_map object store
|
|
203
|
-
const outputTagsMapStore = db.createObjectStore('output_tags_map', {
|
|
204
|
-
keyPath: ['outputTagId', 'outputId']
|
|
205
|
-
});
|
|
206
|
-
outputTagsMapStore.createIndex('outputTagId', 'outputTagId');
|
|
207
|
-
outputTagsMapStore.createIndex('outputId', 'outputId');
|
|
208
|
-
}
|
|
209
|
-
if (!db.objectStoreNames.contains('tx_labels')) {
|
|
210
|
-
// tx_labels object store
|
|
211
|
-
const txLabelsStore = db.createObjectStore('tx_labels', {
|
|
212
|
-
keyPath: 'txLabelId',
|
|
213
|
-
autoIncrement: true
|
|
214
|
-
});
|
|
215
|
-
txLabelsStore.createIndex('userId', 'userId');
|
|
216
|
-
txLabelsStore.createIndex('label_userId', ['label', 'userId'], { unique: true });
|
|
132
|
+
const db = await (0, idb_1.openDB)(this.dbName, 3, {
|
|
133
|
+
upgrade(db, _oldVersion, _newVersion, transaction) {
|
|
134
|
+
(0, idbHelpers_1.upgradeAllStoresV1)(db);
|
|
135
|
+
(0, idbHelpers_1.upgradeActionBatchStoresV2)(db);
|
|
136
|
+
const outputs = transaction.objectStore('outputs');
|
|
137
|
+
if (!outputs.indexNames.contains('userId_basketId')) {
|
|
138
|
+
outputs.createIndex('userId_basketId', ['userId', 'basketId']);
|
|
217
139
|
}
|
|
218
|
-
if (!
|
|
219
|
-
|
|
220
|
-
const txLabelsMapStore = db.createObjectStore('tx_labels_map', {
|
|
221
|
-
keyPath: ['txLabelId', 'transactionId']
|
|
222
|
-
});
|
|
223
|
-
txLabelsMapStore.createIndex('txLabelId', 'txLabelId');
|
|
224
|
-
txLabelsMapStore.createIndex('transactionId', 'transactionId');
|
|
225
|
-
}
|
|
226
|
-
if (!db.objectStoreNames.contains('monitor_events')) {
|
|
227
|
-
// monitor_events object store
|
|
228
|
-
const monitorEventsStore = db.createObjectStore('monitor_events', {
|
|
229
|
-
keyPath: 'id',
|
|
230
|
-
autoIncrement: true
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
if (!db.objectStoreNames.contains('sync_states')) {
|
|
234
|
-
// sync_states object store
|
|
235
|
-
const syncStatesStore = db.createObjectStore('sync_states', {
|
|
236
|
-
keyPath: 'syncStateId',
|
|
237
|
-
autoIncrement: true
|
|
238
|
-
});
|
|
239
|
-
syncStatesStore.createIndex('userId', 'userId');
|
|
240
|
-
syncStatesStore.createIndex('refNum', 'refNum', { unique: true });
|
|
241
|
-
syncStatesStore.createIndex('status', 'status');
|
|
140
|
+
if (!outputs.indexNames.contains('txid_vout_userId')) {
|
|
141
|
+
outputs.createIndex('txid_vout_userId', ['txid', 'vout', 'userId'], { unique: true });
|
|
242
142
|
}
|
|
243
143
|
if (!db.objectStoreNames.contains('settings')) {
|
|
244
|
-
if (
|
|
144
|
+
if (storageName == null || storageName === '' || storageIdentityKey == null || storageIdentityKey === '') {
|
|
245
145
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('migrate must be called before first access');
|
|
246
146
|
}
|
|
247
|
-
const settings = db.createObjectStore('settings', {
|
|
248
|
-
keyPath: 'storageIdentityKey'
|
|
249
|
-
});
|
|
147
|
+
const settings = db.createObjectStore('settings', { keyPath: 'storageIdentityKey' });
|
|
250
148
|
const s = {
|
|
251
149
|
created_at: new Date(),
|
|
252
150
|
updated_at: new Date(),
|
|
@@ -256,7 +154,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
256
154
|
dbtype: 'IndexedDB',
|
|
257
155
|
maxOutputScript
|
|
258
156
|
};
|
|
259
|
-
settings.put(s);
|
|
157
|
+
void settings.put(s);
|
|
260
158
|
}
|
|
261
159
|
}
|
|
262
160
|
});
|
|
@@ -278,7 +176,8 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
278
176
|
* 3. Find an output that comes as close to funding as possible (targetSatoshis).
|
|
279
177
|
* 4. Return undefined if no output is found.
|
|
280
178
|
*
|
|
281
|
-
* Outputs must belong to userId and basketId and
|
|
179
|
+
* Outputs must belong to userId and basketId and satisfy the wallet-managed
|
|
180
|
+
* BRC-29 change policy.
|
|
282
181
|
* Their corresponding transaction must have status of 'completed', 'unproven', or 'sending' (if excludeSending is false).
|
|
283
182
|
*
|
|
284
183
|
* @param userId
|
|
@@ -290,13 +189,13 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
290
189
|
* @returns next funding output to add to transaction or undefined if there are none.
|
|
291
190
|
*/
|
|
292
191
|
async allocateChangeInput(userId, basketId, targetSatoshis, exactSatoshis, excludeSending, transactionId) {
|
|
293
|
-
const dbTrx = this.toDbTrx(['outputs', 'transactions', 'proven_txs', 'proven_tx_reqs'], 'readwrite');
|
|
192
|
+
const dbTrx = this.toDbTrx(['outputs', 'transactions', 'proven_txs', 'proven_tx_reqs', 'action_batch_outputs'], 'readwrite');
|
|
294
193
|
try {
|
|
295
194
|
const txStatus = ['completed', 'unproven'];
|
|
296
195
|
if (!excludeSending)
|
|
297
196
|
txStatus.push('sending');
|
|
298
197
|
const args = {
|
|
299
|
-
partial: { userId, basketId, spendable: true },
|
|
198
|
+
partial: { userId, basketId, spendable: true, ...managedChange_1.managedChangeOutputFields },
|
|
300
199
|
txStatus,
|
|
301
200
|
// Skip per-output script hydration during the candidate scan — we only need
|
|
302
201
|
// the locking script for the one we actually pick below. Matches Knex's
|
|
@@ -304,36 +203,16 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
304
203
|
noScript: true,
|
|
305
204
|
trx: dbTrx
|
|
306
205
|
};
|
|
307
|
-
const
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}
|
|
318
|
-
if (!output) {
|
|
319
|
-
// sort scores increasing by score property
|
|
320
|
-
scores = scores.sort((a, b) => a.score - b.score);
|
|
321
|
-
// find the first score that is greater than or equal to 0
|
|
322
|
-
const o = scores.find(s => s.score >= 0);
|
|
323
|
-
if (o) {
|
|
324
|
-
// stage 2 satisfied (minimally funded)
|
|
325
|
-
output = o.output;
|
|
326
|
-
}
|
|
327
|
-
else if (scores.length > 0) {
|
|
328
|
-
// stage 3 satisfied (minimally under-funded)
|
|
329
|
-
output = scores.slice(-1)[0].output;
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
// no available funding outputs
|
|
333
|
-
output = undefined;
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
if (output) {
|
|
206
|
+
const reservationStore = dbTrx.objectStore('action_batch_outputs');
|
|
207
|
+
if (reservationStore.get == null)
|
|
208
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs store does not support get');
|
|
209
|
+
const outputs = [];
|
|
210
|
+
for (const candidate of (await this.findOutputs(args)).filter(managedChange_1.isAutoSpendableChangeOutput)) {
|
|
211
|
+
if ((await reservationStore.get(candidate.outputId)) == null)
|
|
212
|
+
outputs.push(candidate);
|
|
213
|
+
}
|
|
214
|
+
const output = (0, actionPlanning_1.selectCanonicalChange)(outputs, targetSatoshis, exactSatoshis);
|
|
215
|
+
if (output != null) {
|
|
337
216
|
// mark output as spent by transactionId
|
|
338
217
|
await this.updateOutput(output.outputId, { spendable: false, spentBy: transactionId }, dbTrx);
|
|
339
218
|
// Hydrate the locking script for the chosen output. Identical to Knex canon at
|
|
@@ -353,50 +232,76 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
353
232
|
rawTx: undefined,
|
|
354
233
|
inputBEEF: undefined
|
|
355
234
|
};
|
|
356
|
-
r.proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid
|
|
357
|
-
if (
|
|
358
|
-
const req = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid
|
|
359
|
-
if (req && ['unsent', 'unmined', 'unconfirmed', 'sending', 'nosend', 'completed'].includes(req.status)) {
|
|
235
|
+
r.proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
|
|
236
|
+
if (r.proven == null) {
|
|
237
|
+
const req = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid }, trx }));
|
|
238
|
+
if (req != null && ['unsent', 'unmined', 'unconfirmed', 'sending', 'nosend', 'completed'].includes(req.status)) {
|
|
360
239
|
r.rawTx = req.rawTx;
|
|
361
240
|
r.inputBEEF = req.inputBEEF;
|
|
362
241
|
}
|
|
363
242
|
}
|
|
364
243
|
return r;
|
|
365
244
|
}
|
|
245
|
+
async getProvenOrRawTxs(txids, trx) {
|
|
246
|
+
const results = new Map();
|
|
247
|
+
const unique = [...new Set(txids)];
|
|
248
|
+
if (unique.length === 0)
|
|
249
|
+
return results;
|
|
250
|
+
const dbTrx = this.toDbTrx(['proven_txs', 'proven_tx_reqs'], 'readonly', trx);
|
|
251
|
+
const provenIndex = dbTrx.objectStore('proven_txs').index('txid');
|
|
252
|
+
const requestIndex = dbTrx.objectStore('proven_tx_reqs').index('txid');
|
|
253
|
+
const usableStatuses = new Set(['unsent', 'unmined', 'unconfirmed', 'sending', 'nosend', 'completed']);
|
|
254
|
+
await Promise.all(unique.map(async (txid) => {
|
|
255
|
+
const proven = await provenIndex.get(txid);
|
|
256
|
+
if (proven != null) {
|
|
257
|
+
results.set(txid, { proven: this.validateEntity(proven), rawTx: undefined, inputBEEF: undefined });
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
const request = await requestIndex.get(txid);
|
|
261
|
+
if (request != null && usableStatuses.has(request.status)) {
|
|
262
|
+
const validated = this.validateEntity(request);
|
|
263
|
+
results.set(txid, {
|
|
264
|
+
proven: undefined,
|
|
265
|
+
rawTx: Array.from(validated.rawTx),
|
|
266
|
+
inputBEEF: validated.inputBEEF == null ? undefined : Array.from(validated.inputBEEF)
|
|
267
|
+
});
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
results.set(txid, { proven: undefined, rawTx: undefined, inputBEEF: undefined });
|
|
271
|
+
}));
|
|
272
|
+
if (trx == null)
|
|
273
|
+
await dbTrx.done;
|
|
274
|
+
return results;
|
|
275
|
+
}
|
|
366
276
|
async getRawTxOfKnownValidTransaction(txid, offset, length, trx) {
|
|
367
|
-
if (
|
|
277
|
+
if (txid == null || txid === '')
|
|
368
278
|
return undefined;
|
|
369
279
|
if (!this.isAvailable())
|
|
370
280
|
await this.makeAvailable();
|
|
371
|
-
let rawTx = undefined;
|
|
372
281
|
const sliceRequested = offset !== undefined && length !== undefined && Number.isInteger(offset) && Number.isInteger(length);
|
|
373
282
|
// Slice path uses an extended status set that includes 'unfail' — matches Knex
|
|
374
283
|
// canon at StorageKnex.ts:131. The non-slice path continues to delegate to
|
|
375
284
|
// getProvenOrRawTx which uses the narrower set.
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
rawTx = proven.rawTx;
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
const req = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid }, trx }));
|
|
383
|
-
if (req && ['unsent', 'nosend', 'sending', 'unmined', 'completed', 'unfail'].includes(req.status)) {
|
|
384
|
-
rawTx = req.rawTx;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
else {
|
|
389
|
-
const r = await this.getProvenOrRawTx(txid, trx);
|
|
390
|
-
if (r.proven)
|
|
391
|
-
rawTx = r.proven.rawTx;
|
|
392
|
-
else
|
|
393
|
-
rawTx = r.rawTx;
|
|
394
|
-
}
|
|
395
|
-
if (rawTx && sliceRequested) {
|
|
396
|
-
rawTx = rawTx.slice(offset, offset + length);
|
|
285
|
+
const rawTx = sliceRequested ? await this.getRawTxForSlice(txid, trx) : await this.getRawTxFull(txid, trx);
|
|
286
|
+
if (rawTx != null && sliceRequested) {
|
|
287
|
+
return rawTx.slice(offset, offset + length);
|
|
397
288
|
}
|
|
398
289
|
return rawTx;
|
|
399
290
|
}
|
|
291
|
+
async getRawTxForSlice(txid, trx) {
|
|
292
|
+
const proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
|
|
293
|
+
if (proven != null)
|
|
294
|
+
return proven.rawTx;
|
|
295
|
+
const req = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid }, trx }));
|
|
296
|
+
const validStatuses = ['unsent', 'nosend', 'sending', 'unmined', 'completed', 'unfail'];
|
|
297
|
+
if (req != null && validStatuses.includes(req.status))
|
|
298
|
+
return req.rawTx;
|
|
299
|
+
return undefined;
|
|
300
|
+
}
|
|
301
|
+
async getRawTxFull(txid, trx) {
|
|
302
|
+
const r = await this.getProvenOrRawTx(txid, trx);
|
|
303
|
+
return r.proven != null ? r.proven.rawTx : r.rawTx;
|
|
304
|
+
}
|
|
400
305
|
async getLabelsForTransactionId(transactionId, trx) {
|
|
401
306
|
const maps = await this.findTxLabelMaps({ partial: { transactionId, isDeleted: false }, trx });
|
|
402
307
|
const labelIds = maps.map(m => m.txLabelId);
|
|
@@ -406,10 +311,12 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
406
311
|
// Knex/Bun drop it via JOIN; we must do the same silently or we'd break the whole
|
|
407
312
|
// listActions response. Skip + log so persistent orphans still produce a signal.
|
|
408
313
|
const label = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTxLabels({ partial: { txLabelId, isDeleted: false }, trx }));
|
|
409
|
-
if (label)
|
|
314
|
+
if (label != null) {
|
|
410
315
|
labels.push(label);
|
|
411
|
-
|
|
412
|
-
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
console.debug(`[StorageIdb] orphan tx_labels_map row skipped: transactionId=${String(transactionId)} txLabelId=${txLabelId}`);
|
|
319
|
+
}
|
|
413
320
|
}
|
|
414
321
|
return labels;
|
|
415
322
|
}
|
|
@@ -419,20 +326,22 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
419
326
|
const tags = [];
|
|
420
327
|
for (const outputTagId of tagIds) {
|
|
421
328
|
const tag = (0, utilityHelpers_1.verifyOneOrNone)(await this.findOutputTags({ partial: { outputTagId, isDeleted: false }, trx }));
|
|
422
|
-
if (tag)
|
|
329
|
+
if (tag != null) {
|
|
423
330
|
tags.push(tag);
|
|
424
|
-
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
425
333
|
console.debug(`[StorageIdb] orphan output_tags_map row skipped: outputId=${outputId} outputTagId=${outputTagId}`);
|
|
334
|
+
}
|
|
426
335
|
}
|
|
427
336
|
return tags;
|
|
428
337
|
}
|
|
429
338
|
async listActions(auth, vargs) {
|
|
430
|
-
if (
|
|
339
|
+
if (auth.userId == null)
|
|
431
340
|
throw new WERR_errors_1.WERR_UNAUTHORIZED();
|
|
432
341
|
return await (0, listActionsIdb_1.listActionsIdb)(this, auth, vargs);
|
|
433
342
|
}
|
|
434
343
|
async listOutputs(auth, vargs) {
|
|
435
|
-
if (
|
|
344
|
+
if (auth.userId == null)
|
|
436
345
|
throw new WERR_errors_1.WERR_UNAUTHORIZED();
|
|
437
346
|
return await (0, listOutputsIdb_1.listOutputsIdb)(this, auth, vargs);
|
|
438
347
|
}
|
|
@@ -440,33 +349,83 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
440
349
|
const txStatus = ['completed', 'unproven'];
|
|
441
350
|
if (!excludeSending)
|
|
442
351
|
txStatus.push('sending');
|
|
443
|
-
const args = {
|
|
444
|
-
|
|
352
|
+
const args = {
|
|
353
|
+
partial: { userId, basketId, spendable: true, ...managedChange_1.managedChangeOutputFields },
|
|
354
|
+
txStatus,
|
|
355
|
+
noScript: true
|
|
356
|
+
};
|
|
357
|
+
const outputIds = [];
|
|
445
358
|
await this.filterOutputs(args, r => {
|
|
446
|
-
|
|
359
|
+
if ((0, managedChange_1.isAutoSpendableChangeOutput)(r))
|
|
360
|
+
outputIds.push(r.outputId);
|
|
447
361
|
});
|
|
448
|
-
|
|
362
|
+
const reserved = await this.findReservedActionBatchOutputIds(outputIds);
|
|
363
|
+
return outputIds.length - reserved.length;
|
|
364
|
+
}
|
|
365
|
+
async findTransactionStatusesByIds(userId, transactionIds, trx) {
|
|
366
|
+
const statuses = new Map();
|
|
367
|
+
if (transactionIds.length === 0)
|
|
368
|
+
return statuses;
|
|
369
|
+
const dbTrx = this.toDbTrx(['transactions'], 'readonly', trx);
|
|
370
|
+
const store = dbTrx.objectStore('transactions');
|
|
371
|
+
for (const transactionId of new Set(transactionIds)) {
|
|
372
|
+
const transaction = await store.get(transactionId);
|
|
373
|
+
if (transaction?.userId === userId)
|
|
374
|
+
statuses.set(transactionId, transaction.status);
|
|
375
|
+
}
|
|
376
|
+
if (trx == null)
|
|
377
|
+
await dbTrx.done;
|
|
378
|
+
return statuses;
|
|
379
|
+
}
|
|
380
|
+
async findOutputsByOutpointsInternal(userId, outpoints, trx, noScript = false) {
|
|
381
|
+
const byOutpoint = {};
|
|
382
|
+
if (outpoints.length === 0)
|
|
383
|
+
return byOutpoint;
|
|
384
|
+
const dbTrx = this.toDbTrx(noScript ? ['outputs'] : ['outputs', 'proven_txs', 'proven_tx_reqs'], 'readonly', trx);
|
|
385
|
+
const index = dbTrx.objectStore('outputs').index('txid_vout_userId');
|
|
386
|
+
const unique = [...new Map(outpoints.map(outpoint => [`${outpoint.txid}.${outpoint.vout}`, outpoint])).values()];
|
|
387
|
+
const rows = await Promise.all(unique.map(async (outpoint) => await index.get([outpoint.txid, outpoint.vout, userId])));
|
|
388
|
+
for (const row of rows) {
|
|
389
|
+
if (row == null)
|
|
390
|
+
continue;
|
|
391
|
+
if (!noScript)
|
|
392
|
+
await this.validateOutputScript(row, dbTrx);
|
|
393
|
+
byOutpoint[`${String(row.txid)}.${row.vout}`] = this.validateEntity(row);
|
|
394
|
+
}
|
|
395
|
+
if (trx == null)
|
|
396
|
+
await dbTrx.done;
|
|
397
|
+
return byOutpoint;
|
|
398
|
+
}
|
|
399
|
+
async findOutputsByOutpoints(userId, outpoints, trx) {
|
|
400
|
+
return await this.findOutputsByOutpointsInternal(userId, outpoints, trx);
|
|
401
|
+
}
|
|
402
|
+
async findOutputsByOutpointsForUpdate(userId, outpoints, trx, noScript = false) {
|
|
403
|
+
return await this.findOutputsByOutpointsInternal(userId, outpoints, trx, noScript);
|
|
449
404
|
}
|
|
450
405
|
async findCertificatesAuth(auth, args) {
|
|
451
|
-
if (
|
|
406
|
+
if (auth.userId == null ||
|
|
407
|
+
(args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
|
|
452
408
|
throw new WERR_errors_1.WERR_UNAUTHORIZED();
|
|
453
409
|
args.partial.userId = auth.userId;
|
|
454
410
|
return await this.findCertificates(args);
|
|
455
411
|
}
|
|
456
412
|
async findOutputBasketsAuth(auth, args) {
|
|
457
|
-
if (
|
|
413
|
+
if (auth.userId == null ||
|
|
414
|
+
(args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
|
|
458
415
|
throw new WERR_errors_1.WERR_UNAUTHORIZED();
|
|
459
416
|
args.partial.userId = auth.userId;
|
|
460
417
|
return await this.findOutputBaskets(args);
|
|
461
418
|
}
|
|
462
419
|
async findOutputsAuth(auth, args) {
|
|
463
|
-
if (
|
|
420
|
+
if (auth.userId == null ||
|
|
421
|
+
(args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
|
|
464
422
|
throw new WERR_errors_1.WERR_UNAUTHORIZED();
|
|
465
423
|
args.partial.userId = auth.userId;
|
|
466
424
|
return await this.findOutputs(args);
|
|
467
425
|
}
|
|
468
426
|
async insertCertificateAuth(auth, certificate) {
|
|
469
|
-
if (
|
|
427
|
+
if (auth.userId == null ||
|
|
428
|
+
(certificate.userId != null && certificate.userId !== 0 && certificate.userId !== auth.userId))
|
|
470
429
|
throw new WERR_errors_1.WERR_UNAUTHORIZED();
|
|
471
430
|
certificate.userId = auth.userId;
|
|
472
431
|
return await this.insertCertificate(certificate);
|
|
@@ -485,70 +444,45 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
485
444
|
* you need IS NULL semantics (only meaningful for nullable columns).
|
|
486
445
|
*/
|
|
487
446
|
assertNoUndefinedInPartial(partial) {
|
|
488
|
-
if (
|
|
447
|
+
if (partial == null)
|
|
489
448
|
return;
|
|
490
449
|
for (const k of Object.keys(partial)) {
|
|
491
450
|
if (partial[k] === undefined) {
|
|
492
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`args.partial.${k}`,
|
|
451
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`args.partial.${k}`, 'not undefined. Passing undefined as a filter value is not supported — omit the key to skip filtering. Matches Knex semantics.');
|
|
493
452
|
}
|
|
494
453
|
}
|
|
495
454
|
}
|
|
496
455
|
async filterOutputTagMaps(args, filtered, userId) {
|
|
497
|
-
var _a, _b, _c, _d;
|
|
498
456
|
this.assertNoUndefinedInPartial(args.partial);
|
|
499
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
500
|
-
let skipped = 0;
|
|
501
|
-
let count = 0;
|
|
502
457
|
const dbTrx = this.toDbTrx(['output_tags_map', 'output_tags'], 'readonly', args.trx);
|
|
458
|
+
const store = dbTrx.objectStore('output_tags_map');
|
|
459
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
503
460
|
let cursor;
|
|
504
|
-
if (
|
|
505
|
-
cursor = await
|
|
461
|
+
if (args.partial?.outputTagId !== undefined) {
|
|
462
|
+
cursor = await store.index('outputTagId').openCursor(args.partial.outputTagId);
|
|
506
463
|
}
|
|
507
|
-
else if (
|
|
508
|
-
cursor = await
|
|
464
|
+
else if (args.partial?.outputId !== undefined) {
|
|
465
|
+
cursor = await store.index('outputId').openCursor(args.partial.outputId);
|
|
509
466
|
}
|
|
510
467
|
else {
|
|
511
|
-
cursor = await
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
break;
|
|
519
|
-
firstTime = false;
|
|
520
|
-
const r = cursor.value;
|
|
521
|
-
if (args.since && args.since > r.updated_at)
|
|
522
|
-
continue;
|
|
523
|
-
if (args.tagIds && !args.tagIds.includes(r.outputTagId))
|
|
524
|
-
continue;
|
|
525
|
-
if (args.partial) {
|
|
526
|
-
if (args.partial.outputTagId !== undefined && r.outputTagId !== args.partial.outputTagId)
|
|
527
|
-
continue;
|
|
528
|
-
if (args.partial.outputId !== undefined && r.outputId !== args.partial.outputId)
|
|
529
|
-
continue;
|
|
530
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
531
|
-
continue;
|
|
532
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
533
|
-
continue;
|
|
534
|
-
if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
|
|
535
|
-
continue;
|
|
536
|
-
}
|
|
468
|
+
cursor = await store.openCursor();
|
|
469
|
+
}
|
|
470
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
|
|
471
|
+
if (args.tagIds != null && !args.tagIds.includes(r.outputTagId))
|
|
472
|
+
return false;
|
|
473
|
+
if (!(0, idbHelpers_1.matchesOutputTagMapPartial)(r, args.partial))
|
|
474
|
+
return false;
|
|
537
475
|
if (userId !== undefined) {
|
|
538
|
-
const tagsForUser = await this.countOutputTags({
|
|
476
|
+
const tagsForUser = await this.countOutputTags({
|
|
477
|
+
partial: { userId, outputTagId: r.outputTagId },
|
|
478
|
+
trx: dbTrx
|
|
479
|
+
});
|
|
539
480
|
if (tagsForUser === 0)
|
|
540
|
-
|
|
541
|
-
}
|
|
542
|
-
if (skipped < offset) {
|
|
543
|
-
skipped++;
|
|
544
|
-
continue;
|
|
481
|
+
return false;
|
|
545
482
|
}
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
break;
|
|
550
|
-
}
|
|
551
|
-
if (!args.trx)
|
|
483
|
+
return true;
|
|
484
|
+
}, filtered);
|
|
485
|
+
if (args.trx == null)
|
|
552
486
|
await dbTrx.done;
|
|
553
487
|
}
|
|
554
488
|
async findOutputTagMaps(args) {
|
|
@@ -558,93 +492,53 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
558
492
|
});
|
|
559
493
|
return results;
|
|
560
494
|
}
|
|
495
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
496
|
+
async openProvenTxReqsCursor(
|
|
497
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
498
|
+
store,
|
|
499
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
500
|
+
partial, direction
|
|
501
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
502
|
+
) {
|
|
503
|
+
if (partial?.provenTxReqId != null && partial.provenTxReqId !== 0)
|
|
504
|
+
return store.openCursor(partial.provenTxReqId, direction);
|
|
505
|
+
if (partial?.provenTxId !== undefined)
|
|
506
|
+
return store.index('provenTxId').openCursor(partial.provenTxId, direction);
|
|
507
|
+
if (partial?.txid !== undefined)
|
|
508
|
+
return store.index('txid').openCursor(partial.txid, direction);
|
|
509
|
+
if (partial?.status !== undefined)
|
|
510
|
+
return store.index('status').openCursor(partial.status, direction);
|
|
511
|
+
if (partial?.batch !== undefined)
|
|
512
|
+
return store.index('batch').openCursor(partial.batch, direction);
|
|
513
|
+
return store.openCursor(null, direction);
|
|
514
|
+
}
|
|
561
515
|
async filterProvenTxReqs(args, filtered, userId) {
|
|
562
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
563
516
|
this.assertNoUndefinedInPartial(args.partial);
|
|
564
|
-
if (args.partial.rawTx)
|
|
565
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx',
|
|
566
|
-
if (args.partial.inputBEEF)
|
|
567
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.inputBEEF', `undefined. ProvenTxReqs may not be found by inputBEEF value.`);
|
|
568
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
569
|
-
let skipped = 0;
|
|
570
|
-
let count = 0;
|
|
571
|
-
const dbTrx = this.toDbTrx(['proven_tx_reqs', 'transactions'], 'readonly', args.trx);
|
|
572
|
-
const direction = args.orderDescending ? 'prev' : 'next';
|
|
573
|
-
let cursor;
|
|
574
|
-
if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.provenTxReqId) {
|
|
575
|
-
cursor = await dbTrx.objectStore('proven_tx_reqs').openCursor(args.partial.provenTxReqId, direction);
|
|
576
|
-
}
|
|
577
|
-
else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.provenTxId) !== undefined) {
|
|
578
|
-
cursor = await dbTrx
|
|
579
|
-
.objectStore('proven_tx_reqs')
|
|
580
|
-
.index('provenTxId')
|
|
581
|
-
.openCursor(args.partial.provenTxId, direction);
|
|
517
|
+
if (args.partial.rawTx != null) {
|
|
518
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx', 'undefined. ProvenTxReqs may not be found by rawTx value.');
|
|
582
519
|
}
|
|
583
|
-
|
|
584
|
-
|
|
520
|
+
if (args.partial.inputBEEF != null) {
|
|
521
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.inputBEEF', 'undefined. ProvenTxReqs may not be found by inputBEEF value.');
|
|
585
522
|
}
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
if (!firstTime)
|
|
598
|
-
cursor = await cursor.continue();
|
|
599
|
-
if (!cursor)
|
|
600
|
-
break;
|
|
601
|
-
firstTime = false;
|
|
602
|
-
const r = cursor.value;
|
|
603
|
-
if (args.since && args.since > r.updated_at)
|
|
604
|
-
continue;
|
|
605
|
-
if (args.partial) {
|
|
606
|
-
if (args.partial.provenTxReqId !== undefined && r.provenTxReqId !== args.partial.provenTxReqId)
|
|
607
|
-
continue;
|
|
608
|
-
if (args.partial.provenTxId !== undefined && r.provenTxId !== args.partial.provenTxId)
|
|
609
|
-
continue;
|
|
610
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
611
|
-
continue;
|
|
612
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
613
|
-
continue;
|
|
614
|
-
if (args.partial.status !== undefined && r.status !== args.partial.status)
|
|
615
|
-
continue;
|
|
616
|
-
if (args.partial.attempts !== undefined && r.attempts !== args.partial.attempts)
|
|
617
|
-
continue;
|
|
618
|
-
if (args.partial.notified !== undefined && r.notified !== args.partial.notified)
|
|
619
|
-
continue;
|
|
620
|
-
if (args.partial.txid !== undefined && r.txid !== args.partial.txid)
|
|
621
|
-
continue;
|
|
622
|
-
if (args.partial.batch !== undefined && r.batch !== args.partial.batch)
|
|
623
|
-
continue;
|
|
624
|
-
if (args.partial.history !== undefined && r.history !== args.partial.history)
|
|
625
|
-
continue;
|
|
626
|
-
if (args.partial.notify !== undefined && r.notify !== args.partial.notify)
|
|
627
|
-
continue;
|
|
628
|
-
}
|
|
629
|
-
if (args.status && args.status.length > 0 && !args.status.includes(r.status))
|
|
630
|
-
continue;
|
|
631
|
-
if (args.txids && args.txids.length > 0 && !args.txids.includes(r.txid))
|
|
632
|
-
continue;
|
|
523
|
+
const dbTrx = this.toDbTrx(['proven_tx_reqs', 'transactions'], 'readonly', args.trx);
|
|
524
|
+
const direction = args.orderDescending === true ? 'prev' : 'next';
|
|
525
|
+
const store = dbTrx.objectStore('proven_tx_reqs');
|
|
526
|
+
const cursor = await this.openProvenTxReqsCursor(store, args.partial, direction);
|
|
527
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
|
|
528
|
+
if (!(0, idbHelpers_1.matchesProvenTxReqPartial)(r, args.partial))
|
|
529
|
+
return false;
|
|
530
|
+
if (args.status != null && args.status.length > 0 && !args.status.includes(r.status))
|
|
531
|
+
return false;
|
|
532
|
+
if (args.txids != null && args.txids.length > 0 && !args.txids.includes(r.txid))
|
|
533
|
+
return false;
|
|
633
534
|
if (userId !== undefined) {
|
|
634
535
|
const txsForUser = await this.countTransactions({ partial: { userId, txid: r.txid }, trx: dbTrx });
|
|
635
536
|
if (txsForUser === 0)
|
|
636
|
-
|
|
637
|
-
}
|
|
638
|
-
if (skipped < offset) {
|
|
639
|
-
skipped++;
|
|
640
|
-
continue;
|
|
537
|
+
return false;
|
|
641
538
|
}
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
break;
|
|
646
|
-
}
|
|
647
|
-
if (!args.trx)
|
|
539
|
+
return true;
|
|
540
|
+
}, filtered);
|
|
541
|
+
if (args.trx == null)
|
|
648
542
|
await dbTrx.done;
|
|
649
543
|
}
|
|
650
544
|
async findProvenTxReqs(args) {
|
|
@@ -655,70 +549,40 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
655
549
|
return results;
|
|
656
550
|
}
|
|
657
551
|
async filterProvenTxs(args, filtered, userId) {
|
|
658
|
-
var _a, _b, _c, _d;
|
|
659
552
|
this.assertNoUndefinedInPartial(args.partial);
|
|
660
|
-
if (args.partial.rawTx)
|
|
661
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx',
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
let count = 0;
|
|
553
|
+
if (args.partial.rawTx != null) {
|
|
554
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx', 'undefined. ProvenTxs may not be found by rawTx value.');
|
|
555
|
+
}
|
|
556
|
+
if (args.partial.merklePath != null) {
|
|
557
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.merklePath', 'undefined. ProvenTxs may not be found by merklePath value.');
|
|
558
|
+
}
|
|
667
559
|
const dbTrx = this.toDbTrx(['proven_txs', 'transactions'], 'readonly', args.trx);
|
|
668
|
-
const direction = args.orderDescending ? 'prev' : 'next';
|
|
560
|
+
const direction = args.orderDescending === true ? 'prev' : 'next';
|
|
561
|
+
const store = dbTrx.objectStore('proven_txs');
|
|
562
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
669
563
|
let cursor;
|
|
670
|
-
if (
|
|
671
|
-
cursor = await
|
|
564
|
+
if (args.partial?.provenTxId != null && args.partial.provenTxId > 0) {
|
|
565
|
+
cursor = await store.openCursor(args.partial.provenTxId, direction);
|
|
672
566
|
}
|
|
673
|
-
else if (
|
|
674
|
-
cursor = await
|
|
567
|
+
else if (args.partial?.txid !== undefined) {
|
|
568
|
+
cursor = await store.index('txid').openCursor(args.partial.txid, direction);
|
|
675
569
|
}
|
|
676
570
|
else {
|
|
677
|
-
cursor = await
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
break;
|
|
685
|
-
firstTime = false;
|
|
686
|
-
const r = cursor.value;
|
|
687
|
-
if (args.since && args.since > r.updated_at)
|
|
688
|
-
continue;
|
|
689
|
-
if (args.partial) {
|
|
690
|
-
if (args.partial.provenTxId !== undefined && r.provenTxId !== args.partial.provenTxId)
|
|
691
|
-
continue;
|
|
692
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
693
|
-
continue;
|
|
694
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
695
|
-
continue;
|
|
696
|
-
if (args.partial.txid !== undefined && r.txid !== args.partial.txid)
|
|
697
|
-
continue;
|
|
698
|
-
if (args.partial.height !== undefined && r.height !== args.partial.height)
|
|
699
|
-
continue;
|
|
700
|
-
if (args.partial.index !== undefined && r.index !== args.partial.index)
|
|
701
|
-
continue;
|
|
702
|
-
if (args.partial.blockHash !== undefined && r.blockHash !== args.partial.blockHash)
|
|
703
|
-
continue;
|
|
704
|
-
if (args.partial.merkleRoot !== undefined && r.merkleRoot !== args.partial.merkleRoot)
|
|
705
|
-
continue;
|
|
706
|
-
}
|
|
571
|
+
cursor = await store.openCursor(null, direction);
|
|
572
|
+
}
|
|
573
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
|
|
574
|
+
if (!(0, idbHelpers_1.matchesProvenTxPartial)(r, args.partial))
|
|
575
|
+
return false;
|
|
576
|
+
if (args.txids != null && args.txids.length > 0 && !args.txids.includes(r.txid))
|
|
577
|
+
return false;
|
|
707
578
|
if (userId !== undefined) {
|
|
708
|
-
const
|
|
709
|
-
if (
|
|
710
|
-
|
|
711
|
-
}
|
|
712
|
-
if (skipped < offset) {
|
|
713
|
-
skipped++;
|
|
714
|
-
continue;
|
|
579
|
+
const txCount = await this.countTransactions({ partial: { userId, provenTxId: r.provenTxId }, trx: dbTrx });
|
|
580
|
+
if (txCount === 0)
|
|
581
|
+
return false;
|
|
715
582
|
}
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
break;
|
|
720
|
-
}
|
|
721
|
-
if (!args.trx)
|
|
583
|
+
return true;
|
|
584
|
+
}, filtered);
|
|
585
|
+
if (args.trx == null)
|
|
722
586
|
await dbTrx.done;
|
|
723
587
|
}
|
|
724
588
|
async findProvenTxs(args) {
|
|
@@ -729,59 +593,31 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
729
593
|
return results;
|
|
730
594
|
}
|
|
731
595
|
async filterTxLabelMaps(args, filtered, userId) {
|
|
732
|
-
var _a, _b, _c, _d;
|
|
733
596
|
this.assertNoUndefinedInPartial(args.partial);
|
|
734
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
735
|
-
let skipped = 0;
|
|
736
|
-
let count = 0;
|
|
737
597
|
const dbTrx = this.toDbTrx(['tx_labels_map', 'tx_labels'], 'readonly', args.trx);
|
|
598
|
+
const store = dbTrx.objectStore('tx_labels_map');
|
|
599
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
738
600
|
let cursor;
|
|
739
|
-
if (
|
|
740
|
-
cursor = await
|
|
601
|
+
if (args.partial?.transactionId !== undefined) {
|
|
602
|
+
cursor = await store.index('transactionId').openCursor(args.partial.transactionId);
|
|
741
603
|
}
|
|
742
|
-
else if (
|
|
743
|
-
cursor = await
|
|
604
|
+
else if (args.partial?.txLabelId !== undefined) {
|
|
605
|
+
cursor = await store.index('txLabelId').openCursor(args.partial.txLabelId);
|
|
744
606
|
}
|
|
745
607
|
else {
|
|
746
|
-
cursor = await
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
cursor = await cursor.continue();
|
|
752
|
-
if (!cursor)
|
|
753
|
-
break;
|
|
754
|
-
firstTime = false;
|
|
755
|
-
const r = cursor.value;
|
|
756
|
-
if (args.since && args.since > r.updated_at)
|
|
757
|
-
continue;
|
|
758
|
-
if (args.partial) {
|
|
759
|
-
if (args.partial.txLabelId !== undefined && r.txLabelId !== args.partial.txLabelId)
|
|
760
|
-
continue;
|
|
761
|
-
if (args.partial.transactionId !== undefined && r.transactionId !== args.partial.transactionId)
|
|
762
|
-
continue;
|
|
763
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
764
|
-
continue;
|
|
765
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
766
|
-
continue;
|
|
767
|
-
if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
|
|
768
|
-
continue;
|
|
769
|
-
}
|
|
608
|
+
cursor = await store.openCursor();
|
|
609
|
+
}
|
|
610
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
|
|
611
|
+
if (!(0, idbHelpers_1.matchesTxLabelMapPartial)(r, args.partial))
|
|
612
|
+
return false;
|
|
770
613
|
if (userId !== undefined) {
|
|
771
|
-
const
|
|
772
|
-
if (
|
|
773
|
-
|
|
774
|
-
}
|
|
775
|
-
if (skipped < offset) {
|
|
776
|
-
skipped++;
|
|
777
|
-
continue;
|
|
614
|
+
const labelCount = await this.countTxLabels({ partial: { userId, txLabelId: r.txLabelId }, trx: dbTrx });
|
|
615
|
+
if (labelCount === 0)
|
|
616
|
+
return false;
|
|
778
617
|
}
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
break;
|
|
783
|
-
}
|
|
784
|
-
if (!args.trx)
|
|
618
|
+
return true;
|
|
619
|
+
}, filtered);
|
|
620
|
+
if (args.trx == null)
|
|
785
621
|
await dbTrx.done;
|
|
786
622
|
}
|
|
787
623
|
async findTxLabelMaps(args) {
|
|
@@ -822,10 +658,10 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
822
658
|
async insertCertificate(certificate, trx) {
|
|
823
659
|
const e = await this.validateEntityForInsert(certificate, trx, undefined, ['isDeleted']);
|
|
824
660
|
// Strip non-schema runtime fields before insert. Matches Knex canon.
|
|
825
|
-
if (e.logger)
|
|
661
|
+
if (e.logger != null)
|
|
826
662
|
delete e.logger;
|
|
827
663
|
const fields = e.fields;
|
|
828
|
-
if (e.fields)
|
|
664
|
+
if (e.fields != null)
|
|
829
665
|
delete e.fields;
|
|
830
666
|
if (e.certificateId === 0)
|
|
831
667
|
delete e.certificateId;
|
|
@@ -834,7 +670,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
834
670
|
try {
|
|
835
671
|
const id = Number(await store.add(e));
|
|
836
672
|
certificate.certificateId = id;
|
|
837
|
-
if (fields) {
|
|
673
|
+
if (fields != null) {
|
|
838
674
|
for (const field of fields) {
|
|
839
675
|
field.certificateId = certificate.certificateId;
|
|
840
676
|
field.userId = certificate.userId;
|
|
@@ -843,7 +679,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
843
679
|
}
|
|
844
680
|
}
|
|
845
681
|
finally {
|
|
846
|
-
if (
|
|
682
|
+
if (trx == null)
|
|
847
683
|
await dbTrx.done;
|
|
848
684
|
}
|
|
849
685
|
return certificate.certificateId;
|
|
@@ -856,7 +692,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
856
692
|
await store.add(e);
|
|
857
693
|
}
|
|
858
694
|
finally {
|
|
859
|
-
if (
|
|
695
|
+
if (trx == null)
|
|
860
696
|
await dbTrx.done;
|
|
861
697
|
}
|
|
862
698
|
}
|
|
@@ -871,7 +707,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
871
707
|
commission.commissionId = id;
|
|
872
708
|
}
|
|
873
709
|
finally {
|
|
874
|
-
if (
|
|
710
|
+
if (trx == null)
|
|
875
711
|
await dbTrx.done;
|
|
876
712
|
}
|
|
877
713
|
return commission.commissionId;
|
|
@@ -887,7 +723,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
887
723
|
event.id = id;
|
|
888
724
|
}
|
|
889
725
|
finally {
|
|
890
|
-
if (
|
|
726
|
+
if (trx == null)
|
|
891
727
|
await dbTrx.done;
|
|
892
728
|
}
|
|
893
729
|
return event.id;
|
|
@@ -903,7 +739,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
903
739
|
output.outputId = id;
|
|
904
740
|
}
|
|
905
741
|
finally {
|
|
906
|
-
if (
|
|
742
|
+
if (trx == null)
|
|
907
743
|
await dbTrx.done;
|
|
908
744
|
}
|
|
909
745
|
return output.outputId;
|
|
@@ -919,7 +755,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
919
755
|
basket.basketId = id;
|
|
920
756
|
}
|
|
921
757
|
finally {
|
|
922
|
-
if (
|
|
758
|
+
if (trx == null)
|
|
923
759
|
await dbTrx.done;
|
|
924
760
|
}
|
|
925
761
|
return basket.basketId;
|
|
@@ -935,7 +771,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
935
771
|
tag.outputTagId = id;
|
|
936
772
|
}
|
|
937
773
|
finally {
|
|
938
|
-
if (
|
|
774
|
+
if (trx == null)
|
|
939
775
|
await dbTrx.done;
|
|
940
776
|
}
|
|
941
777
|
return tag.outputTagId;
|
|
@@ -948,7 +784,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
948
784
|
await store.add(e);
|
|
949
785
|
}
|
|
950
786
|
finally {
|
|
951
|
-
if (
|
|
787
|
+
if (trx == null)
|
|
952
788
|
await dbTrx.done;
|
|
953
789
|
}
|
|
954
790
|
}
|
|
@@ -963,7 +799,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
963
799
|
tx.provenTxId = id;
|
|
964
800
|
}
|
|
965
801
|
finally {
|
|
966
|
-
if (
|
|
802
|
+
if (trx == null)
|
|
967
803
|
await dbTrx.done;
|
|
968
804
|
}
|
|
969
805
|
return tx.provenTxId;
|
|
@@ -979,7 +815,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
979
815
|
tx.provenTxReqId = id;
|
|
980
816
|
}
|
|
981
817
|
finally {
|
|
982
|
-
if (
|
|
818
|
+
if (trx == null)
|
|
983
819
|
await dbTrx.done;
|
|
984
820
|
}
|
|
985
821
|
return tx.provenTxReqId;
|
|
@@ -995,7 +831,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
995
831
|
syncState.syncStateId = id;
|
|
996
832
|
}
|
|
997
833
|
finally {
|
|
998
|
-
if (
|
|
834
|
+
if (trx == null)
|
|
999
835
|
await dbTrx.done;
|
|
1000
836
|
}
|
|
1001
837
|
return syncState.syncStateId;
|
|
@@ -1011,7 +847,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1011
847
|
tx.transactionId = id;
|
|
1012
848
|
}
|
|
1013
849
|
finally {
|
|
1014
|
-
if (
|
|
850
|
+
if (trx == null)
|
|
1015
851
|
await dbTrx.done;
|
|
1016
852
|
}
|
|
1017
853
|
return tx.transactionId;
|
|
@@ -1027,7 +863,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1027
863
|
label.txLabelId = id;
|
|
1028
864
|
}
|
|
1029
865
|
finally {
|
|
1030
|
-
if (
|
|
866
|
+
if (trx == null)
|
|
1031
867
|
await dbTrx.done;
|
|
1032
868
|
}
|
|
1033
869
|
return label.txLabelId;
|
|
@@ -1040,7 +876,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1040
876
|
await store.add(e);
|
|
1041
877
|
}
|
|
1042
878
|
finally {
|
|
1043
|
-
if (
|
|
879
|
+
if (trx == null)
|
|
1044
880
|
await dbTrx.done;
|
|
1045
881
|
}
|
|
1046
882
|
}
|
|
@@ -1055,14 +891,15 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1055
891
|
user.userId = id;
|
|
1056
892
|
}
|
|
1057
893
|
finally {
|
|
1058
|
-
if (
|
|
894
|
+
if (trx == null)
|
|
1059
895
|
await dbTrx.done;
|
|
1060
896
|
}
|
|
1061
897
|
return user.userId;
|
|
1062
898
|
}
|
|
1063
899
|
async updateIdb(id, update, keyProp, storeName, trx) {
|
|
1064
|
-
|
|
1065
|
-
|
|
900
|
+
const indexedUpdate = update;
|
|
901
|
+
if (indexedUpdate[keyProp] !== undefined && (Array.isArray(id) || indexedUpdate[keyProp] !== id)) {
|
|
902
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`update.${keyProp}`, 'undefined');
|
|
1066
903
|
}
|
|
1067
904
|
const u = this.validatePartialForUpdate(update);
|
|
1068
905
|
const dbTrx = this.toDbTrx([storeName], 'readwrite', trx);
|
|
@@ -1074,30 +911,34 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1074
911
|
const e = await store.get(i);
|
|
1075
912
|
// Match Knex/Bun semantics: missing rows produce a 0-row result, not an error.
|
|
1076
913
|
// Caller receives the true updated count and can decide how to react.
|
|
1077
|
-
if (
|
|
914
|
+
if (e == null)
|
|
1078
915
|
continue;
|
|
1079
916
|
const v = {
|
|
1080
917
|
...e,
|
|
1081
918
|
...u
|
|
1082
919
|
};
|
|
1083
920
|
const uid = await store.put(v);
|
|
1084
|
-
if (uid !== i)
|
|
1085
|
-
|
|
921
|
+
if (uid !== i) {
|
|
922
|
+
const uidText = typeof uid === 'object' ? JSON.stringify(uid) : String(uid);
|
|
923
|
+
throw new WERR_errors_1.WERR_INTERNAL(`updated id ${uidText} does not match original ${String(id)}`);
|
|
924
|
+
}
|
|
1086
925
|
updated++;
|
|
1087
926
|
}
|
|
1088
927
|
}
|
|
1089
928
|
finally {
|
|
1090
|
-
if (
|
|
929
|
+
if (trx == null)
|
|
1091
930
|
await dbTrx.done;
|
|
1092
931
|
}
|
|
1093
932
|
return updated;
|
|
1094
933
|
}
|
|
1095
934
|
async updateIdbKey(key, update, keyProps, storeName, trx) {
|
|
1096
|
-
|
|
935
|
+
const indexedUpdate = update;
|
|
936
|
+
if (key.length !== keyProps.length) {
|
|
1097
937
|
throw new WERR_errors_1.WERR_INTERNAL(`key.length ${key.length} !== keyProps.length ${keyProps.length}`);
|
|
938
|
+
}
|
|
1098
939
|
for (let i = 0; i < key.length; i++) {
|
|
1099
|
-
if (
|
|
1100
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`update.${keyProps[i]}`,
|
|
940
|
+
if (indexedUpdate[keyProps[i]] !== undefined && indexedUpdate[keyProps[i]] !== key[i]) {
|
|
941
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`update.${keyProps[i]}`, 'undefined');
|
|
1101
942
|
}
|
|
1102
943
|
}
|
|
1103
944
|
const u = this.validatePartialForUpdate(update);
|
|
@@ -1105,8 +946,9 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1105
946
|
const store = dbTrx.objectStore(storeName);
|
|
1106
947
|
try {
|
|
1107
948
|
const e = await store.get(key);
|
|
1108
|
-
if (
|
|
949
|
+
if (e == null) {
|
|
1109
950
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('key', `an existing record to update ${keyProps.join(',')} ${key.join(',')} not found`);
|
|
951
|
+
}
|
|
1110
952
|
const v = {
|
|
1111
953
|
...e,
|
|
1112
954
|
...u
|
|
@@ -1114,77 +956,281 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1114
956
|
const uid = await store.put(v);
|
|
1115
957
|
for (let i = 0; i < key.length; i++) {
|
|
1116
958
|
if (uid[i] !== key[i])
|
|
1117
|
-
throw new WERR_errors_1.WERR_INTERNAL(`updated key ${uid[i]} does not match original ${key[i]}`);
|
|
959
|
+
throw new WERR_errors_1.WERR_INTERNAL(`updated key ${String(uid[i])} does not match original ${String(key[i])}`);
|
|
1118
960
|
}
|
|
1119
961
|
}
|
|
1120
962
|
finally {
|
|
1121
|
-
if (
|
|
963
|
+
if (trx == null)
|
|
1122
964
|
await dbTrx.done;
|
|
1123
965
|
}
|
|
1124
966
|
return 1;
|
|
1125
967
|
}
|
|
1126
968
|
async updateCertificate(id, update, trx) {
|
|
1127
|
-
return this.updateIdb(id, update, 'certificateId', 'certificates', trx);
|
|
969
|
+
return await this.updateIdb(id, update, 'certificateId', 'certificates', trx);
|
|
1128
970
|
}
|
|
1129
971
|
async updateCertificateField(certificateId, fieldName, update, trx) {
|
|
1130
|
-
return this.updateIdbKey([certificateId, fieldName], update, ['certificateId', 'fieldName'], 'certificate_fields', trx);
|
|
972
|
+
return await this.updateIdbKey([certificateId, fieldName], update, ['certificateId', 'fieldName'], 'certificate_fields', trx);
|
|
1131
973
|
}
|
|
1132
974
|
async updateCommission(id, update, trx) {
|
|
1133
|
-
return this.updateIdb(id, update, 'commissionId', 'commissions', trx);
|
|
975
|
+
return await this.updateIdb(id, update, 'commissionId', 'commissions', trx);
|
|
1134
976
|
}
|
|
1135
977
|
async updateMonitorEvent(id, update, trx) {
|
|
1136
|
-
return this.updateIdb(id, update, 'id', 'monitor_events', trx);
|
|
978
|
+
return await this.updateIdb(id, update, 'id', 'monitor_events', trx);
|
|
1137
979
|
}
|
|
1138
980
|
async updateOutput(id, update, trx) {
|
|
1139
|
-
return this.updateIdb(id, update, 'outputId', 'outputs', trx);
|
|
981
|
+
return await this.updateIdb(id, update, 'outputId', 'outputs', trx);
|
|
1140
982
|
}
|
|
1141
983
|
async updateOutputBasket(id, update, trx) {
|
|
1142
|
-
return this.updateIdb(id, update, 'basketId', 'output_baskets', trx);
|
|
984
|
+
return await this.updateIdb(id, update, 'basketId', 'output_baskets', trx);
|
|
1143
985
|
}
|
|
1144
986
|
async updateOutputTag(id, update, trx) {
|
|
1145
|
-
return this.updateIdb(id, update, 'outputTagId', 'output_tags', trx);
|
|
987
|
+
return await this.updateIdb(id, update, 'outputTagId', 'output_tags', trx);
|
|
1146
988
|
}
|
|
1147
989
|
async updateProvenTx(id, update, trx) {
|
|
1148
|
-
return this.updateIdb(id, update, 'provenTxId', 'proven_txs', trx);
|
|
990
|
+
return await this.updateIdb(id, update, 'provenTxId', 'proven_txs', trx);
|
|
1149
991
|
}
|
|
1150
992
|
async updateProvenTxReq(id, update, trx) {
|
|
1151
|
-
return this.updateIdb(id, update, 'provenTxReqId', 'proven_tx_reqs', trx);
|
|
993
|
+
return await this.updateIdb(id, update, 'provenTxReqId', 'proven_tx_reqs', trx);
|
|
1152
994
|
}
|
|
1153
995
|
async updateSyncState(id, update, trx) {
|
|
1154
|
-
return this.updateIdb(id, update, 'syncStateId', 'sync_states', trx);
|
|
996
|
+
return await this.updateIdb(id, update, 'syncStateId', 'sync_states', trx);
|
|
1155
997
|
}
|
|
1156
998
|
async updateTransaction(id, update, trx) {
|
|
1157
|
-
return this.updateIdb(id, update, 'transactionId', 'transactions', trx);
|
|
999
|
+
return await this.updateIdb(id, update, 'transactionId', 'transactions', trx);
|
|
1158
1000
|
}
|
|
1159
1001
|
async updateTxLabel(id, update, trx) {
|
|
1160
|
-
return this.updateIdb(id, update, 'txLabelId', 'tx_labels', trx);
|
|
1002
|
+
return await this.updateIdb(id, update, 'txLabelId', 'tx_labels', trx);
|
|
1161
1003
|
}
|
|
1162
1004
|
async updateUser(id, update, trx) {
|
|
1163
|
-
return this.updateIdb(id, update, 'userId', 'users', trx);
|
|
1005
|
+
return await this.updateIdb(id, update, 'userId', 'users', trx);
|
|
1164
1006
|
}
|
|
1165
1007
|
async updateOutputTagMap(outputId, tagId, update, trx) {
|
|
1166
|
-
return this.updateIdbKey([tagId, outputId], update, ['outputTagId', 'outputId'], 'output_tags_map', trx);
|
|
1008
|
+
return await this.updateIdbKey([tagId, outputId], update, ['outputTagId', 'outputId'], 'output_tags_map', trx);
|
|
1167
1009
|
}
|
|
1168
1010
|
async updateTxLabelMap(transactionId, txLabelId, update, trx) {
|
|
1169
|
-
return this.updateIdbKey([txLabelId, transactionId], update, ['txLabelId', 'transactionId'], 'tx_labels_map', trx);
|
|
1011
|
+
return await this.updateIdbKey([txLabelId, transactionId], update, ['txLabelId', 'transactionId'], 'tx_labels_map', trx);
|
|
1170
1012
|
}
|
|
1171
1013
|
//
|
|
1172
1014
|
// StorageReader abstract methods
|
|
1173
1015
|
//
|
|
1174
1016
|
async destroy() {
|
|
1175
|
-
if (this.db) {
|
|
1017
|
+
if (this.db != null) {
|
|
1176
1018
|
this.db.close();
|
|
1177
1019
|
}
|
|
1178
1020
|
this.db = undefined;
|
|
1179
1021
|
this._settings = undefined;
|
|
1180
1022
|
}
|
|
1023
|
+
allStores = [
|
|
1024
|
+
'action_batches',
|
|
1025
|
+
'action_batch_outputs',
|
|
1026
|
+
'action_batch_blobs',
|
|
1027
|
+
'certificates',
|
|
1028
|
+
'certificate_fields',
|
|
1029
|
+
'commissions',
|
|
1030
|
+
'monitor_events',
|
|
1031
|
+
'outputs',
|
|
1032
|
+
'output_baskets',
|
|
1033
|
+
'output_tags',
|
|
1034
|
+
'output_tags_map',
|
|
1035
|
+
'proven_txs',
|
|
1036
|
+
'proven_tx_reqs',
|
|
1037
|
+
'sync_states',
|
|
1038
|
+
'transactions',
|
|
1039
|
+
'tx_labels',
|
|
1040
|
+
'tx_labels_map',
|
|
1041
|
+
'users'
|
|
1042
|
+
];
|
|
1043
|
+
async insertActionBatch(batch, trx) {
|
|
1044
|
+
const tx = this.toDbTrx(['action_batches'], 'readwrite', trx);
|
|
1045
|
+
const { actionBatchId: _actionBatchId, ...withoutId } = batch;
|
|
1046
|
+
const entity = batch.actionBatchId === 0 ? withoutId : batch;
|
|
1047
|
+
const store = tx.objectStore('action_batches');
|
|
1048
|
+
if (store.add == null)
|
|
1049
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches store does not support add');
|
|
1050
|
+
const id = await store.add(entity);
|
|
1051
|
+
batch.actionBatchId = Number(id);
|
|
1052
|
+
if (trx == null)
|
|
1053
|
+
await tx.done;
|
|
1054
|
+
return Number(id);
|
|
1055
|
+
}
|
|
1056
|
+
async findActionBatch(userId, batchId, trx) {
|
|
1057
|
+
const tx = this.toDbTrx(['action_batches'], 'readonly', trx);
|
|
1058
|
+
const index = tx.objectStore('action_batches').index('userId_batchId');
|
|
1059
|
+
if (index.get == null)
|
|
1060
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches userId_batchId index does not support get');
|
|
1061
|
+
const batch = await index.get([userId, batchId]);
|
|
1062
|
+
if (trx == null)
|
|
1063
|
+
await tx.done;
|
|
1064
|
+
return batch;
|
|
1065
|
+
}
|
|
1066
|
+
async findExpiredActionBatches(now, trx) {
|
|
1067
|
+
const tx = this.toDbTrx(['action_batches'], 'readonly', trx);
|
|
1068
|
+
const store = tx.objectStore('action_batches');
|
|
1069
|
+
if (store.getAll == null)
|
|
1070
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches store does not support getAll');
|
|
1071
|
+
const rows = await store.getAll();
|
|
1072
|
+
if (trx == null)
|
|
1073
|
+
await tx.done;
|
|
1074
|
+
return rows.filter(r => (r.status === 'active' || r.status === 'prepared') &&
|
|
1075
|
+
(r.expiresAt.getTime() <= now.getTime() || r.hardExpiresAt.getTime() <= now.getTime()));
|
|
1076
|
+
}
|
|
1077
|
+
async updateActionBatch(actionBatchId, update, trx) {
|
|
1078
|
+
const tx = this.toDbTrx(['action_batches'], 'readwrite', trx);
|
|
1079
|
+
const store = tx.objectStore('action_batches');
|
|
1080
|
+
if (store.get == null || store.put == null) {
|
|
1081
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches store does not support get and put');
|
|
1082
|
+
}
|
|
1083
|
+
const batch = await store.get(actionBatchId);
|
|
1084
|
+
if (batch == null) {
|
|
1085
|
+
if (trx == null)
|
|
1086
|
+
await tx.done;
|
|
1087
|
+
return 0;
|
|
1088
|
+
}
|
|
1089
|
+
await store.put({ ...batch, ...update, updated_at: new Date() });
|
|
1090
|
+
if (trx == null)
|
|
1091
|
+
await tx.done;
|
|
1092
|
+
return 1;
|
|
1093
|
+
}
|
|
1094
|
+
async deleteActionBatch(actionBatchId, trx) {
|
|
1095
|
+
const tx = this.toDbTrx(['action_batches'], 'readwrite', trx);
|
|
1096
|
+
const store = tx.objectStore('action_batches');
|
|
1097
|
+
if (store.delete == null)
|
|
1098
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches store does not support delete');
|
|
1099
|
+
await store.delete(actionBatchId);
|
|
1100
|
+
if (trx == null)
|
|
1101
|
+
await tx.done;
|
|
1102
|
+
}
|
|
1103
|
+
async reserveActionBatchOutputs(reservations, trx) {
|
|
1104
|
+
if (reservations.length === 0)
|
|
1105
|
+
return;
|
|
1106
|
+
const tx = this.toDbTrx(['action_batch_outputs'], 'readwrite', trx);
|
|
1107
|
+
const store = tx.objectStore('action_batch_outputs');
|
|
1108
|
+
if (store.add == null)
|
|
1109
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs store does not support add');
|
|
1110
|
+
for (const reservation of reservations)
|
|
1111
|
+
await store.add(reservation);
|
|
1112
|
+
if (trx == null)
|
|
1113
|
+
await tx.done;
|
|
1114
|
+
}
|
|
1115
|
+
async findActionBatchOutputIds(actionBatchId, trx) {
|
|
1116
|
+
const tx = this.toDbTrx(['action_batch_outputs'], 'readonly', trx);
|
|
1117
|
+
const index = tx.objectStore('action_batch_outputs').index('actionBatchId');
|
|
1118
|
+
if (index.getAll == null)
|
|
1119
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs index does not support getAll');
|
|
1120
|
+
const rows = await index.getAll(actionBatchId);
|
|
1121
|
+
if (trx == null)
|
|
1122
|
+
await tx.done;
|
|
1123
|
+
return rows.map(r => r.outputId);
|
|
1124
|
+
}
|
|
1125
|
+
async findReservedActionBatchOutputIds(outputIds, trx) {
|
|
1126
|
+
const tx = this.toDbTrx(['action_batch_outputs', 'action_batches'], 'readonly', trx);
|
|
1127
|
+
const store = tx.objectStore('action_batch_outputs');
|
|
1128
|
+
const batchStore = tx.objectStore('action_batches');
|
|
1129
|
+
if (store.get == null)
|
|
1130
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs store does not support get');
|
|
1131
|
+
const reserved = [];
|
|
1132
|
+
const now = Date.now();
|
|
1133
|
+
for (const outputId of outputIds) {
|
|
1134
|
+
const reservation = await store.get(outputId);
|
|
1135
|
+
if (reservation == null)
|
|
1136
|
+
continue;
|
|
1137
|
+
const batch = await batchStore.get(reservation.actionBatchId);
|
|
1138
|
+
if (batch != null &&
|
|
1139
|
+
(batch.status === 'active' || batch.status === 'prepared') &&
|
|
1140
|
+
batch.expiresAt.getTime() > now &&
|
|
1141
|
+
batch.hardExpiresAt.getTime() > now)
|
|
1142
|
+
reserved.push(outputId);
|
|
1143
|
+
}
|
|
1144
|
+
if (trx == null)
|
|
1145
|
+
await tx.done;
|
|
1146
|
+
return reserved;
|
|
1147
|
+
}
|
|
1148
|
+
async deleteActionBatchOutputReservations(actionBatchId, trx) {
|
|
1149
|
+
const tx = this.toDbTrx(['action_batch_outputs'], 'readwrite', trx);
|
|
1150
|
+
const store = tx.objectStore('action_batch_outputs');
|
|
1151
|
+
const index = store.index('actionBatchId');
|
|
1152
|
+
if (index.getAllKeys == null || store.delete == null) {
|
|
1153
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs store does not support indexed deletion');
|
|
1154
|
+
}
|
|
1155
|
+
const keys = await index.getAllKeys(actionBatchId);
|
|
1156
|
+
for (const key of keys)
|
|
1157
|
+
await store.delete(key);
|
|
1158
|
+
if (trx == null)
|
|
1159
|
+
await tx.done;
|
|
1160
|
+
}
|
|
1161
|
+
async putActionBatchBlobRecord(blob, trx) {
|
|
1162
|
+
const tx = this.toDbTrx(['action_batch_blobs'], 'readwrite', trx);
|
|
1163
|
+
const store = tx.objectStore('action_batch_blobs');
|
|
1164
|
+
if (store.put == null)
|
|
1165
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support put');
|
|
1166
|
+
await store.put({
|
|
1167
|
+
...blob,
|
|
1168
|
+
bytes: blob.bytes instanceof Uint8Array ? blob.bytes : Uint8Array.from(blob.bytes)
|
|
1169
|
+
});
|
|
1170
|
+
if (trx == null)
|
|
1171
|
+
await tx.done;
|
|
1172
|
+
}
|
|
1173
|
+
async findActionBatchBlobRecord(actionBatchId, digest, trx) {
|
|
1174
|
+
const tx = this.toDbTrx(['action_batch_blobs'], 'readonly', trx);
|
|
1175
|
+
const store = tx.objectStore('action_batch_blobs');
|
|
1176
|
+
if (store.get == null)
|
|
1177
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support get');
|
|
1178
|
+
const blob = await store.get([actionBatchId, digest]);
|
|
1179
|
+
if (trx == null)
|
|
1180
|
+
await tx.done;
|
|
1181
|
+
return blob;
|
|
1182
|
+
}
|
|
1183
|
+
async findActionBatchBlobRecords(actionBatchId, digests, trx) {
|
|
1184
|
+
const tx = this.toDbTrx(['action_batch_blobs'], 'readonly', trx);
|
|
1185
|
+
const store = tx.objectStore('action_batch_blobs');
|
|
1186
|
+
if (store.get == null)
|
|
1187
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support get');
|
|
1188
|
+
const blobs = [];
|
|
1189
|
+
for (const digest of new Set(digests)) {
|
|
1190
|
+
const blob = await store.get([actionBatchId, digest]);
|
|
1191
|
+
if (blob != null)
|
|
1192
|
+
blobs.push(blob);
|
|
1193
|
+
}
|
|
1194
|
+
if (trx == null)
|
|
1195
|
+
await tx.done;
|
|
1196
|
+
return blobs;
|
|
1197
|
+
}
|
|
1198
|
+
async putActionBatchBlobRecords(blobs, trx) {
|
|
1199
|
+
if (blobs.length === 0)
|
|
1200
|
+
return;
|
|
1201
|
+
const tx = this.toDbTrx(['action_batch_blobs'], 'readwrite', trx);
|
|
1202
|
+
const store = tx.objectStore('action_batch_blobs');
|
|
1203
|
+
if (store.put == null)
|
|
1204
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support put');
|
|
1205
|
+
for (const blob of blobs) {
|
|
1206
|
+
await store.put({
|
|
1207
|
+
...blob,
|
|
1208
|
+
bytes: blob.bytes instanceof Uint8Array ? blob.bytes : Uint8Array.from(blob.bytes)
|
|
1209
|
+
});
|
|
1210
|
+
}
|
|
1211
|
+
if (trx == null)
|
|
1212
|
+
await tx.done;
|
|
1213
|
+
}
|
|
1214
|
+
async deleteActionBatchBlobRecords(actionBatchId, trx) {
|
|
1215
|
+
const tx = this.toDbTrx(['action_batch_blobs'], 'readwrite', trx);
|
|
1216
|
+
const store = tx.objectStore('action_batch_blobs');
|
|
1217
|
+
const index = store.index('actionBatchId');
|
|
1218
|
+
if (index.getAllKeys == null || store.delete == null) {
|
|
1219
|
+
throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support indexed deletion');
|
|
1220
|
+
}
|
|
1221
|
+
const keys = await index.getAllKeys(actionBatchId);
|
|
1222
|
+
for (const key of keys)
|
|
1223
|
+
await store.delete(key);
|
|
1224
|
+
if (trx == null)
|
|
1225
|
+
await tx.done;
|
|
1226
|
+
}
|
|
1181
1227
|
/**
|
|
1182
1228
|
* @param scope
|
|
1183
1229
|
* @param trx
|
|
1184
1230
|
* @returns
|
|
1185
1231
|
*/
|
|
1186
1232
|
async transaction(scope, trx) {
|
|
1187
|
-
if (trx)
|
|
1233
|
+
if (trx != null)
|
|
1188
1234
|
return await scope(trx);
|
|
1189
1235
|
const stores = this.allStores;
|
|
1190
1236
|
const db = await this.verifyDB();
|
|
@@ -1201,61 +1247,22 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1201
1247
|
}
|
|
1202
1248
|
}
|
|
1203
1249
|
async filterCertificateFields(args, filtered) {
|
|
1204
|
-
var _a, _b, _c, _d;
|
|
1205
1250
|
this.assertNoUndefinedInPartial(args.partial);
|
|
1206
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
1207
|
-
let skipped = 0;
|
|
1208
|
-
let count = 0;
|
|
1209
1251
|
const dbTrx = this.toDbTrx(['certificate_fields'], 'readonly', args.trx);
|
|
1252
|
+
const store = dbTrx.objectStore('certificate_fields');
|
|
1253
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1210
1254
|
let cursor;
|
|
1211
|
-
if (
|
|
1212
|
-
cursor = await
|
|
1213
|
-
.objectStore('certificate_fields')
|
|
1214
|
-
.index('certificateId')
|
|
1215
|
-
.openCursor(args.partial.certificateId);
|
|
1255
|
+
if (args.partial?.certificateId !== undefined) {
|
|
1256
|
+
cursor = await store.index('certificateId').openCursor(args.partial.certificateId);
|
|
1216
1257
|
}
|
|
1217
|
-
else if (
|
|
1218
|
-
cursor = await
|
|
1258
|
+
else if (args.partial?.userId !== undefined) {
|
|
1259
|
+
cursor = await store.index('userId').openCursor(args.partial.userId);
|
|
1219
1260
|
}
|
|
1220
1261
|
else {
|
|
1221
|
-
cursor = await
|
|
1222
|
-
}
|
|
1223
|
-
let firstTime = true;
|
|
1224
|
-
while (cursor) {
|
|
1225
|
-
if (!firstTime)
|
|
1226
|
-
cursor = await cursor.continue();
|
|
1227
|
-
if (!cursor)
|
|
1228
|
-
break;
|
|
1229
|
-
firstTime = false;
|
|
1230
|
-
const r = cursor.value;
|
|
1231
|
-
if (args.since && args.since > r.updated_at)
|
|
1232
|
-
continue;
|
|
1233
|
-
if (args.partial) {
|
|
1234
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
1235
|
-
continue;
|
|
1236
|
-
if (args.partial.certificateId !== undefined && r.certificateId !== args.partial.certificateId)
|
|
1237
|
-
continue;
|
|
1238
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
1239
|
-
continue;
|
|
1240
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
1241
|
-
continue;
|
|
1242
|
-
if (args.partial.fieldName !== undefined && r.fieldName !== args.partial.fieldName)
|
|
1243
|
-
continue;
|
|
1244
|
-
if (args.partial.fieldValue !== undefined && r.fieldValue !== args.partial.fieldValue)
|
|
1245
|
-
continue;
|
|
1246
|
-
if (args.partial.masterKey !== undefined && r.masterKey !== args.partial.masterKey)
|
|
1247
|
-
continue;
|
|
1248
|
-
}
|
|
1249
|
-
if (skipped < offset) {
|
|
1250
|
-
skipped++;
|
|
1251
|
-
continue;
|
|
1252
|
-
}
|
|
1253
|
-
filtered(r);
|
|
1254
|
-
count++;
|
|
1255
|
-
if (((_d = args.paged) === null || _d === void 0 ? void 0 : _d.limit) && count >= args.paged.limit)
|
|
1256
|
-
break;
|
|
1262
|
+
cursor = await store.openCursor();
|
|
1257
1263
|
}
|
|
1258
|
-
|
|
1264
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesCertificateFieldPartial)(r, args.partial), filtered);
|
|
1265
|
+
if (args.trx == null)
|
|
1259
1266
|
await dbTrx.done;
|
|
1260
1267
|
}
|
|
1261
1268
|
async findCertificateFields(args) {
|
|
@@ -1265,81 +1272,39 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1265
1272
|
});
|
|
1266
1273
|
return result;
|
|
1267
1274
|
}
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
if (
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
cursor = await dbTrx
|
|
1282
|
-
.objectStore('certificates')
|
|
1275
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1276
|
+
async openCertificatesCursor(
|
|
1277
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1278
|
+
store,
|
|
1279
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1280
|
+
partial
|
|
1281
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1282
|
+
) {
|
|
1283
|
+
if (partial?.certificateId != null && partial.certificateId !== 0)
|
|
1284
|
+
return store.openCursor(partial.certificateId);
|
|
1285
|
+
if (partial?.userId !== undefined) {
|
|
1286
|
+
if (partial?.type != null && partial?.certifier != null && partial?.serialNumber != null) {
|
|
1287
|
+
return store
|
|
1283
1288
|
.index('userId_type_certifier_serialNumber')
|
|
1284
|
-
.openCursor([
|
|
1285
|
-
}
|
|
1286
|
-
else {
|
|
1287
|
-
cursor = await dbTrx.objectStore('certificates').index('userId').openCursor(args.partial.userId);
|
|
1288
|
-
}
|
|
1289
|
-
}
|
|
1290
|
-
else {
|
|
1291
|
-
cursor = await dbTrx.objectStore('certificates').openCursor();
|
|
1292
|
-
}
|
|
1293
|
-
let firstTime = true;
|
|
1294
|
-
while (cursor) {
|
|
1295
|
-
if (!firstTime)
|
|
1296
|
-
cursor = await cursor.continue();
|
|
1297
|
-
if (!cursor)
|
|
1298
|
-
break;
|
|
1299
|
-
firstTime = false;
|
|
1300
|
-
const r = cursor.value;
|
|
1301
|
-
if (args.since && args.since > r.updated_at)
|
|
1302
|
-
continue;
|
|
1303
|
-
if (args.certifiers && !args.certifiers.includes(r.certifier))
|
|
1304
|
-
continue;
|
|
1305
|
-
if (args.types && !args.types.includes(r.type))
|
|
1306
|
-
continue;
|
|
1307
|
-
if (args.partial) {
|
|
1308
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
1309
|
-
continue;
|
|
1310
|
-
if (args.partial.certificateId !== undefined && r.certificateId !== args.partial.certificateId)
|
|
1311
|
-
continue;
|
|
1312
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
1313
|
-
continue;
|
|
1314
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
1315
|
-
continue;
|
|
1316
|
-
if (args.partial.type !== undefined && r.type !== args.partial.type)
|
|
1317
|
-
continue;
|
|
1318
|
-
if (args.partial.serialNumber !== undefined && r.serialNumber !== args.partial.serialNumber)
|
|
1319
|
-
continue;
|
|
1320
|
-
if (args.partial.certifier !== undefined && r.certifier !== args.partial.certifier)
|
|
1321
|
-
continue;
|
|
1322
|
-
if (args.partial.subject !== undefined && r.subject !== args.partial.subject)
|
|
1323
|
-
continue;
|
|
1324
|
-
if (args.partial.verifier !== undefined && r.verifier !== args.partial.verifier)
|
|
1325
|
-
continue;
|
|
1326
|
-
if (args.partial.revocationOutpoint !== undefined && r.revocationOutpoint !== args.partial.revocationOutpoint)
|
|
1327
|
-
continue;
|
|
1328
|
-
if (args.partial.signature !== undefined && r.signature !== args.partial.signature)
|
|
1329
|
-
continue;
|
|
1330
|
-
if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
|
|
1331
|
-
continue;
|
|
1332
|
-
}
|
|
1333
|
-
if (skipped < offset) {
|
|
1334
|
-
skipped++;
|
|
1335
|
-
continue;
|
|
1289
|
+
.openCursor([partial.userId, partial.type, partial.certifier, partial.serialNumber]);
|
|
1336
1290
|
}
|
|
1337
|
-
|
|
1338
|
-
count++;
|
|
1339
|
-
if (((_g = args.paged) === null || _g === void 0 ? void 0 : _g.limit) && count >= args.paged.limit)
|
|
1340
|
-
break;
|
|
1291
|
+
return store.index('userId').openCursor(partial.userId);
|
|
1341
1292
|
}
|
|
1342
|
-
|
|
1293
|
+
return store.openCursor();
|
|
1294
|
+
}
|
|
1295
|
+
async filterCertificates(args, filtered) {
|
|
1296
|
+
this.assertNoUndefinedInPartial(args.partial);
|
|
1297
|
+
const dbTrx = this.toDbTrx(['certificates'], 'readonly', args.trx);
|
|
1298
|
+
const store = dbTrx.objectStore('certificates');
|
|
1299
|
+
const cursor = await this.openCertificatesCursor(store, args.partial);
|
|
1300
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => {
|
|
1301
|
+
if (args.certifiers != null && !args.certifiers.includes(r.certifier))
|
|
1302
|
+
return false;
|
|
1303
|
+
if (args.types != null && !args.types.includes(r.type))
|
|
1304
|
+
return false;
|
|
1305
|
+
return (0, idbHelpers_1.matchesCertificatePartial)(r, args.partial);
|
|
1306
|
+
}, filtered);
|
|
1307
|
+
if (args.trx == null)
|
|
1343
1308
|
await dbTrx.done;
|
|
1344
1309
|
}
|
|
1345
1310
|
async findCertificates(args) {
|
|
@@ -1347,7 +1312,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1347
1312
|
await this.filterCertificates(args, r => {
|
|
1348
1313
|
result.push(this.validateEntity(r));
|
|
1349
1314
|
});
|
|
1350
|
-
if (args.includeFields) {
|
|
1315
|
+
if (args.includeFields === true) {
|
|
1351
1316
|
for (const c of result) {
|
|
1352
1317
|
const fields = await this.findCertificateFields({ partial: { certificateId: c.certificateId }, trx: args.trx });
|
|
1353
1318
|
c.fields = fields;
|
|
@@ -1356,65 +1321,28 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1356
1321
|
return result;
|
|
1357
1322
|
}
|
|
1358
1323
|
async filterCommissions(args, filtered) {
|
|
1359
|
-
var _a, _b, _c, _d, _e;
|
|
1360
1324
|
this.assertNoUndefinedInPartial(args.partial);
|
|
1361
|
-
if (args.partial.lockingScript)
|
|
1362
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('partial.lockingScript',
|
|
1363
|
-
|
|
1364
|
-
let skipped = 0;
|
|
1365
|
-
let count = 0;
|
|
1325
|
+
if (args.partial.lockingScript != null) {
|
|
1326
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('partial.lockingScript', 'undefined. Commissions may not be found by lockingScript value.');
|
|
1327
|
+
}
|
|
1366
1328
|
const dbTrx = this.toDbTrx(['commissions'], 'readonly', args.trx);
|
|
1329
|
+
const store = dbTrx.objectStore('commissions');
|
|
1330
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1367
1331
|
let cursor;
|
|
1368
|
-
if (
|
|
1369
|
-
cursor = await
|
|
1332
|
+
if (args.partial?.commissionId != null && args.partial.commissionId !== 0) {
|
|
1333
|
+
cursor = await store.openCursor(args.partial.commissionId);
|
|
1370
1334
|
}
|
|
1371
|
-
else if (
|
|
1372
|
-
cursor = await
|
|
1335
|
+
else if (args.partial?.userId !== undefined) {
|
|
1336
|
+
cursor = await store.index('userId').openCursor(args.partial.userId);
|
|
1373
1337
|
}
|
|
1374
|
-
else if (
|
|
1375
|
-
cursor = await
|
|
1338
|
+
else if (args.partial?.transactionId !== undefined) {
|
|
1339
|
+
cursor = await store.index('transactionId').openCursor(args.partial.transactionId);
|
|
1376
1340
|
}
|
|
1377
1341
|
else {
|
|
1378
|
-
cursor = await
|
|
1379
|
-
}
|
|
1380
|
-
let firstTime = true;
|
|
1381
|
-
while (cursor) {
|
|
1382
|
-
if (!firstTime)
|
|
1383
|
-
cursor = await cursor.continue();
|
|
1384
|
-
if (!cursor)
|
|
1385
|
-
break;
|
|
1386
|
-
firstTime = false;
|
|
1387
|
-
const r = cursor.value;
|
|
1388
|
-
if (args.since && args.since > r.updated_at)
|
|
1389
|
-
continue;
|
|
1390
|
-
if (args.partial) {
|
|
1391
|
-
if (args.partial.commissionId !== undefined && r.commissionId !== args.partial.commissionId)
|
|
1392
|
-
continue;
|
|
1393
|
-
if (args.partial.transactionId !== undefined && r.transactionId !== args.partial.transactionId)
|
|
1394
|
-
continue;
|
|
1395
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
1396
|
-
continue;
|
|
1397
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
1398
|
-
continue;
|
|
1399
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
1400
|
-
continue;
|
|
1401
|
-
if (args.partial.satoshis !== undefined && r.satoshis !== args.partial.satoshis)
|
|
1402
|
-
continue;
|
|
1403
|
-
if (args.partial.keyOffset !== undefined && r.keyOffset !== args.partial.keyOffset)
|
|
1404
|
-
continue;
|
|
1405
|
-
if (args.partial.isRedeemed !== undefined && r.isRedeemed !== args.partial.isRedeemed)
|
|
1406
|
-
continue;
|
|
1407
|
-
}
|
|
1408
|
-
if (skipped < offset) {
|
|
1409
|
-
skipped++;
|
|
1410
|
-
continue;
|
|
1411
|
-
}
|
|
1412
|
-
filtered(r);
|
|
1413
|
-
count++;
|
|
1414
|
-
if (((_e = args.paged) === null || _e === void 0 ? void 0 : _e.limit) && count >= args.paged.limit)
|
|
1415
|
-
break;
|
|
1342
|
+
cursor = await store.openCursor();
|
|
1416
1343
|
}
|
|
1417
|
-
|
|
1344
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesCommissionPartial)(r, args.partial), filtered);
|
|
1345
|
+
if (args.trx == null)
|
|
1418
1346
|
await dbTrx.done;
|
|
1419
1347
|
}
|
|
1420
1348
|
async findCommissions(args) {
|
|
@@ -1425,352 +1353,186 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1425
1353
|
return result;
|
|
1426
1354
|
}
|
|
1427
1355
|
async filterMonitorEvents(args, filtered) {
|
|
1428
|
-
var _a, _b, _c;
|
|
1429
1356
|
this.assertNoUndefinedInPartial(args.partial);
|
|
1430
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
1431
|
-
let skipped = 0;
|
|
1432
|
-
let count = 0;
|
|
1433
1357
|
const dbTrx = this.toDbTrx(['monitor_events'], 'readonly', args.trx);
|
|
1358
|
+
const store = dbTrx.objectStore('monitor_events');
|
|
1359
|
+
const cursor = args.partial?.id != null && args.partial.id !== 0
|
|
1360
|
+
? await store.openCursor(args.partial.id)
|
|
1361
|
+
: await store.openCursor();
|
|
1362
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesMonitorEventPartial)(r, args.partial), filtered);
|
|
1363
|
+
if (args.trx == null)
|
|
1364
|
+
await dbTrx.done;
|
|
1365
|
+
}
|
|
1366
|
+
async findMonitorEvents(args) {
|
|
1367
|
+
const result = [];
|
|
1368
|
+
await this.filterMonitorEvents(args, r => {
|
|
1369
|
+
result.push(this.validateEntity(r));
|
|
1370
|
+
});
|
|
1371
|
+
return result;
|
|
1372
|
+
}
|
|
1373
|
+
async filterOutputBaskets(args, filtered) {
|
|
1374
|
+
this.assertNoUndefinedInPartial(args.partial);
|
|
1375
|
+
const dbTrx = this.toDbTrx(['output_baskets'], 'readonly', args.trx);
|
|
1376
|
+
const store = dbTrx.objectStore('output_baskets');
|
|
1377
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1434
1378
|
let cursor;
|
|
1435
|
-
if (
|
|
1436
|
-
cursor = await
|
|
1379
|
+
if (args.partial?.basketId != null && args.partial.basketId !== 0) {
|
|
1380
|
+
cursor = await store.openCursor(args.partial.basketId);
|
|
1437
1381
|
}
|
|
1438
|
-
else {
|
|
1439
|
-
cursor = await
|
|
1440
|
-
}
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
break;
|
|
1447
|
-
firstTime = false;
|
|
1448
|
-
const r = cursor.value;
|
|
1449
|
-
if (args.since && args.since > r.updated_at)
|
|
1450
|
-
continue;
|
|
1451
|
-
if (args.partial) {
|
|
1452
|
-
if (args.partial.id !== undefined && r.id !== args.partial.id)
|
|
1453
|
-
continue;
|
|
1454
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
1455
|
-
continue;
|
|
1456
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
1457
|
-
continue;
|
|
1458
|
-
if (args.partial.event !== undefined && r.event !== args.partial.event)
|
|
1459
|
-
continue;
|
|
1460
|
-
if (args.partial.details !== undefined && r.details !== args.partial.details)
|
|
1461
|
-
continue;
|
|
1462
|
-
}
|
|
1463
|
-
if (skipped < offset) {
|
|
1464
|
-
skipped++;
|
|
1465
|
-
continue;
|
|
1466
|
-
}
|
|
1467
|
-
filtered(r);
|
|
1468
|
-
count++;
|
|
1469
|
-
if (((_c = args.paged) === null || _c === void 0 ? void 0 : _c.limit) && count >= args.paged.limit)
|
|
1470
|
-
break;
|
|
1382
|
+
else if (args.partial?.userId !== undefined && args.partial?.name !== undefined) {
|
|
1383
|
+
cursor = await store.index('name_userId').openCursor([args.partial.name, args.partial.userId]);
|
|
1384
|
+
}
|
|
1385
|
+
else if (args.partial?.userId !== undefined) {
|
|
1386
|
+
cursor = await store.index('userId').openCursor(args.partial.userId);
|
|
1387
|
+
}
|
|
1388
|
+
else {
|
|
1389
|
+
cursor = await store.openCursor();
|
|
1471
1390
|
}
|
|
1472
|
-
|
|
1391
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesOutputBasketPartial)(r, args.partial), filtered);
|
|
1392
|
+
if (args.trx == null)
|
|
1473
1393
|
await dbTrx.done;
|
|
1474
1394
|
}
|
|
1475
|
-
async
|
|
1395
|
+
async findOutputBaskets(args) {
|
|
1476
1396
|
const result = [];
|
|
1477
|
-
await this.
|
|
1397
|
+
await this.filterOutputBaskets(args, r => {
|
|
1478
1398
|
result.push(this.validateEntity(r));
|
|
1479
1399
|
});
|
|
1480
1400
|
return result;
|
|
1481
1401
|
}
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
if (
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
.
|
|
1497
|
-
.index('name_userId')
|
|
1498
|
-
.openCursor([args.partial.name, args.partial.userId]);
|
|
1499
|
-
}
|
|
1500
|
-
else {
|
|
1501
|
-
cursor = await dbTrx.objectStore('output_baskets').index('userId').openCursor(args.partial.userId);
|
|
1402
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1403
|
+
async openOutputsCursor(
|
|
1404
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1405
|
+
store,
|
|
1406
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1407
|
+
partial, direction
|
|
1408
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1409
|
+
) {
|
|
1410
|
+
if (partial?.outputId != null && partial.outputId !== 0)
|
|
1411
|
+
return store.openCursor(partial.outputId, direction);
|
|
1412
|
+
if (partial?.userId !== undefined) {
|
|
1413
|
+
if (partial?.transactionId != null && partial.transactionId !== 0 && partial?.vout !== undefined) {
|
|
1414
|
+
return store
|
|
1415
|
+
.index('transactionId_vout_userId')
|
|
1416
|
+
.openCursor([partial.transactionId, partial.vout, partial.userId], direction);
|
|
1502
1417
|
}
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
let firstTime = true;
|
|
1508
|
-
while (cursor) {
|
|
1509
|
-
if (!firstTime)
|
|
1510
|
-
cursor = await cursor.continue();
|
|
1511
|
-
if (!cursor)
|
|
1512
|
-
break;
|
|
1513
|
-
firstTime = false;
|
|
1514
|
-
const r = cursor.value;
|
|
1515
|
-
if (args.since && args.since > r.updated_at)
|
|
1516
|
-
continue;
|
|
1517
|
-
if (args.partial) {
|
|
1518
|
-
if (args.partial.basketId !== undefined && r.basketId !== args.partial.basketId)
|
|
1519
|
-
continue;
|
|
1520
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
1521
|
-
continue;
|
|
1522
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
1523
|
-
continue;
|
|
1524
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
1525
|
-
continue;
|
|
1526
|
-
if (args.partial.name !== undefined && r.name !== args.partial.name)
|
|
1527
|
-
continue;
|
|
1528
|
-
if (args.partial.numberOfDesiredUTXOs !== undefined &&
|
|
1529
|
-
r.numberOfDesiredUTXOs !== args.partial.numberOfDesiredUTXOs)
|
|
1530
|
-
continue;
|
|
1531
|
-
if (args.partial.minimumDesiredUTXOValue !== undefined &&
|
|
1532
|
-
r.numberOfDesiredSatoshis !== args.partial.minimumDesiredUTXOValue)
|
|
1533
|
-
continue;
|
|
1534
|
-
if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
|
|
1535
|
-
continue;
|
|
1418
|
+
if (partial?.txid != null && partial.txid !== '' && partial?.vout !== undefined) {
|
|
1419
|
+
return store
|
|
1420
|
+
.index('txid_vout_userId')
|
|
1421
|
+
.openCursor([partial.txid, partial.vout, partial.userId], direction);
|
|
1536
1422
|
}
|
|
1537
|
-
if (
|
|
1538
|
-
|
|
1539
|
-
continue;
|
|
1423
|
+
if (partial?.basketId !== undefined) {
|
|
1424
|
+
return store.index('userId_basketId').openCursor([partial.userId, partial.basketId], direction);
|
|
1540
1425
|
}
|
|
1541
|
-
|
|
1542
|
-
count++;
|
|
1543
|
-
if (((_e = args.paged) === null || _e === void 0 ? void 0 : _e.limit) && count >= args.paged.limit)
|
|
1544
|
-
break;
|
|
1426
|
+
return store.index('userId').openCursor(partial.userId, direction);
|
|
1545
1427
|
}
|
|
1546
|
-
if (
|
|
1547
|
-
|
|
1428
|
+
if (partial?.transactionId !== undefined)
|
|
1429
|
+
return store.index('transactionId').openCursor(partial.transactionId, direction);
|
|
1430
|
+
if (partial?.basketId !== undefined)
|
|
1431
|
+
return store.index('basketId').openCursor(partial.basketId, direction);
|
|
1432
|
+
if (partial?.spentBy !== undefined)
|
|
1433
|
+
return store.index('spentBy').openCursor(partial.spentBy, direction);
|
|
1434
|
+
return store.openCursor(null, direction);
|
|
1548
1435
|
}
|
|
1549
|
-
async
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1436
|
+
async eligibleOutputTransactionIds(args, dbTrx) {
|
|
1437
|
+
if (args.txStatus == null)
|
|
1438
|
+
return undefined;
|
|
1439
|
+
const validTransactionIds = new Set();
|
|
1440
|
+
const transactions = dbTrx.objectStore('transactions');
|
|
1441
|
+
for (const status of args.txStatus) {
|
|
1442
|
+
const index = args.partial.userId === undefined
|
|
1443
|
+
? transactions.index('status')
|
|
1444
|
+
: transactions.index('status_userId');
|
|
1445
|
+
const key = args.partial.userId === undefined ? status : [status, args.partial.userId];
|
|
1446
|
+
for (const transactionId of await index.getAllKeys(key))
|
|
1447
|
+
validTransactionIds.add(Number(transactionId));
|
|
1448
|
+
}
|
|
1449
|
+
return validTransactionIds;
|
|
1555
1450
|
}
|
|
1556
1451
|
async filterOutputs(args, filtered, tagIds, isQueryModeAll) {
|
|
1557
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
1558
1452
|
this.assertNoUndefinedInPartial(args.partial);
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.lockingScript', `undefined. Outputs may not be found by lockingScript value.`);
|
|
1563
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
1564
|
-
let skipped = 0;
|
|
1565
|
-
let count = 0;
|
|
1453
|
+
if (args.partial.lockingScript != null) {
|
|
1454
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.lockingScript', 'undefined. Outputs may not be found by lockingScript value.');
|
|
1455
|
+
}
|
|
1566
1456
|
const stores = ['outputs'];
|
|
1567
|
-
if (tagIds && tagIds.length > 0)
|
|
1457
|
+
if (tagIds != null && tagIds.length > 0)
|
|
1568
1458
|
stores.push('output_tags_map');
|
|
1569
|
-
|
|
1570
|
-
if (args.txStatus) {
|
|
1459
|
+
if (args.txStatus != null)
|
|
1571
1460
|
stores.push('transactions');
|
|
1572
|
-
}
|
|
1573
1461
|
const dbTrx = this.toDbTrx(stores, 'readonly', args.trx);
|
|
1574
|
-
const direction = args.orderDescending ? 'prev' : 'next';
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
cursor = await dbTrx.objectStore('outputs').index('transactionId').openCursor(args.partial.transactionId, direction);
|
|
1592
|
-
}
|
|
1593
|
-
else if (((_g = args.partial) === null || _g === void 0 ? void 0 : _g.basketId) !== undefined) {
|
|
1594
|
-
cursor = await dbTrx.objectStore('outputs').index('basketId').openCursor(args.partial.basketId, direction);
|
|
1595
|
-
}
|
|
1596
|
-
else if (((_h = args.partial) === null || _h === void 0 ? void 0 : _h.spentBy) !== undefined) {
|
|
1597
|
-
cursor = await dbTrx.objectStore('outputs').index('spentBy').openCursor(args.partial.spentBy, direction);
|
|
1598
|
-
}
|
|
1599
|
-
else {
|
|
1600
|
-
cursor = await dbTrx.objectStore('outputs').openCursor(null, direction);
|
|
1601
|
-
}
|
|
1602
|
-
let firstTime = true;
|
|
1603
|
-
while (cursor) {
|
|
1604
|
-
if (!firstTime)
|
|
1605
|
-
cursor = await cursor.continue();
|
|
1606
|
-
if (!cursor)
|
|
1607
|
-
break;
|
|
1608
|
-
firstTime = false;
|
|
1609
|
-
const r = cursor.value;
|
|
1610
|
-
if (args.since && args.since > r.updated_at)
|
|
1611
|
-
continue;
|
|
1612
|
-
if (args.partial) {
|
|
1613
|
-
if (args.partial.outputId !== undefined && r.outputId !== args.partial.outputId)
|
|
1614
|
-
continue;
|
|
1615
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
1616
|
-
continue;
|
|
1617
|
-
if (args.partial.transactionId !== undefined && r.transactionId !== args.partial.transactionId)
|
|
1618
|
-
continue;
|
|
1619
|
-
if (args.partial.basketId !== undefined && r.basketId !== args.partial.basketId)
|
|
1620
|
-
continue;
|
|
1621
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
1622
|
-
continue;
|
|
1623
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
1624
|
-
continue;
|
|
1625
|
-
if (args.partial.spendable !== undefined && r.spendable !== args.partial.spendable)
|
|
1626
|
-
continue;
|
|
1627
|
-
if (args.partial.change !== undefined && r.change !== args.partial.change)
|
|
1628
|
-
continue;
|
|
1629
|
-
if (args.partial.outputDescription !== undefined && r.outputDescription !== args.partial.outputDescription)
|
|
1630
|
-
continue;
|
|
1631
|
-
if (args.partial.vout !== undefined && r.vout !== args.partial.vout)
|
|
1632
|
-
continue;
|
|
1633
|
-
if (args.partial.satoshis !== undefined && r.satoshis !== args.partial.satoshis)
|
|
1634
|
-
continue;
|
|
1635
|
-
if (args.partial.providedBy !== undefined && r.providedBy !== args.partial.providedBy)
|
|
1636
|
-
continue;
|
|
1637
|
-
if (args.partial.purpose !== undefined && r.purpose !== args.partial.purpose)
|
|
1638
|
-
continue;
|
|
1639
|
-
if (args.partial.type !== undefined && r.type !== args.partial.type)
|
|
1640
|
-
continue;
|
|
1641
|
-
if (args.partial.txid !== undefined && r.txid !== args.partial.txid)
|
|
1642
|
-
continue;
|
|
1643
|
-
if (args.partial.senderIdentityKey !== undefined && r.senderIdentityKey !== args.partial.senderIdentityKey)
|
|
1644
|
-
continue;
|
|
1645
|
-
if (args.partial.derivationPrefix !== undefined && r.derivationPrefix !== args.partial.derivationPrefix)
|
|
1646
|
-
continue;
|
|
1647
|
-
if (args.partial.derivationSuffix !== undefined && r.derivationSuffix !== args.partial.derivationSuffix)
|
|
1648
|
-
continue;
|
|
1649
|
-
if (args.partial.customInstructions !== undefined && r.customInstructions !== args.partial.customInstructions)
|
|
1650
|
-
continue;
|
|
1651
|
-
if (args.partial.spentBy !== undefined && r.spentBy !== args.partial.spentBy)
|
|
1652
|
-
continue;
|
|
1653
|
-
if (args.partial.sequenceNumber !== undefined && r.sequenceNumber !== args.partial.sequenceNumber)
|
|
1654
|
-
continue;
|
|
1655
|
-
if (args.partial.scriptLength !== undefined && r.scriptLength !== args.partial.scriptLength)
|
|
1656
|
-
continue;
|
|
1657
|
-
if (args.partial.scriptOffset !== undefined && r.scriptOffset !== args.partial.scriptOffset)
|
|
1658
|
-
continue;
|
|
1659
|
-
}
|
|
1660
|
-
if (args.txStatus !== undefined && args.txStatus.length > 0) {
|
|
1661
|
-
const count = await this.countTransactions({
|
|
1662
|
-
partial: { transactionId: r.transactionId },
|
|
1663
|
-
status: args.txStatus,
|
|
1664
|
-
trx: dbTrx
|
|
1665
|
-
});
|
|
1666
|
-
if (count === 0)
|
|
1667
|
-
continue;
|
|
1668
|
-
}
|
|
1669
|
-
if (tagIds && tagIds.length > 0) {
|
|
1670
|
-
let ids = [...tagIds];
|
|
1671
|
-
await this.filterOutputTagMaps({ partial: { outputId: r.outputId }, trx: dbTrx }, tm => {
|
|
1672
|
-
if (ids.length > 0) {
|
|
1673
|
-
const i = ids.indexOf(tm.outputTagId);
|
|
1674
|
-
if (i >= 0) {
|
|
1675
|
-
if (isQueryModeAll) {
|
|
1676
|
-
ids.splice(i, 1);
|
|
1677
|
-
}
|
|
1678
|
-
else {
|
|
1679
|
-
ids = [];
|
|
1680
|
-
}
|
|
1681
|
-
}
|
|
1682
|
-
}
|
|
1683
|
-
});
|
|
1684
|
-
if (ids.length > 0)
|
|
1685
|
-
continue;
|
|
1686
|
-
}
|
|
1687
|
-
if (skipped < offset) {
|
|
1688
|
-
skipped++;
|
|
1689
|
-
continue;
|
|
1690
|
-
}
|
|
1691
|
-
if (args.noScript === true) {
|
|
1462
|
+
const direction = args.orderDescending === true ? 'prev' : 'next';
|
|
1463
|
+
const store = dbTrx.objectStore('outputs');
|
|
1464
|
+
const validTransactionIds = await this.eligibleOutputTransactionIds(args, dbTrx);
|
|
1465
|
+
const cursor = await this.openOutputsCursor(store, args.partial, direction);
|
|
1466
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
|
|
1467
|
+
if (!(0, idbHelpers_1.matchesOutputPartial)(r, args.partial))
|
|
1468
|
+
return false;
|
|
1469
|
+
if (validTransactionIds != null && !validTransactionIds.has(r.transactionId))
|
|
1470
|
+
return false;
|
|
1471
|
+
if (tagIds != null &&
|
|
1472
|
+
tagIds.length > 0 &&
|
|
1473
|
+
!(await this.outputMatchesTags(r.outputId, tagIds, isQueryModeAll, dbTrx)))
|
|
1474
|
+
return false;
|
|
1475
|
+
return true;
|
|
1476
|
+
}, r => {
|
|
1477
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1478
|
+
if (args.noScript === true)
|
|
1692
1479
|
r.script = undefined;
|
|
1693
|
-
}
|
|
1694
1480
|
filtered(r);
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
break;
|
|
1698
|
-
}
|
|
1699
|
-
if (!args.trx)
|
|
1481
|
+
});
|
|
1482
|
+
if (args.trx == null)
|
|
1700
1483
|
await dbTrx.done;
|
|
1701
1484
|
}
|
|
1485
|
+
async outputMatchesTags(outputId, tagIds, isQueryModeAll, dbTrx) {
|
|
1486
|
+
let ids = [...tagIds];
|
|
1487
|
+
await this.filterOutputTagMaps({ partial: { outputId }, trx: dbTrx }, tm => {
|
|
1488
|
+
if (ids.length > 0) {
|
|
1489
|
+
const i = ids.indexOf(tm.outputTagId);
|
|
1490
|
+
if (i >= 0) {
|
|
1491
|
+
if (isQueryModeAll === true) {
|
|
1492
|
+
ids.splice(i, 1);
|
|
1493
|
+
}
|
|
1494
|
+
else {
|
|
1495
|
+
ids = [];
|
|
1496
|
+
}
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
});
|
|
1500
|
+
return ids.length === 0;
|
|
1501
|
+
}
|
|
1702
1502
|
async findOutputs(args, tagIds, isQueryModeAll) {
|
|
1703
1503
|
const results = [];
|
|
1704
1504
|
await this.filterOutputs(args, r => {
|
|
1705
1505
|
results.push(this.validateEntity(r));
|
|
1706
1506
|
}, tagIds, isQueryModeAll);
|
|
1707
1507
|
for (const o of results) {
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1508
|
+
if (args.noScript === true) {
|
|
1509
|
+
o.lockingScript = undefined;
|
|
1510
|
+
}
|
|
1511
|
+
else {
|
|
1711
1512
|
await this.validateOutputScript(o, args.trx);
|
|
1513
|
+
}
|
|
1712
1514
|
}
|
|
1713
1515
|
return results;
|
|
1714
1516
|
}
|
|
1715
1517
|
async filterOutputTags(args, filtered) {
|
|
1716
|
-
var _a, _b, _c, _d, _e;
|
|
1717
|
-
this.assertNoUndefinedInPartial(args.partial);
|
|
1718
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
1719
|
-
let skipped = 0;
|
|
1720
|
-
let count = 0;
|
|
1721
1518
|
const dbTrx = this.toDbTrx(['output_tags'], 'readonly', args.trx);
|
|
1519
|
+
const store = dbTrx.objectStore('output_tags');
|
|
1520
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1722
1521
|
let cursor;
|
|
1723
|
-
if (
|
|
1724
|
-
cursor = await
|
|
1725
|
-
}
|
|
1726
|
-
else if (
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
.openCursor([args.partial.tag, args.partial.userId]);
|
|
1732
|
-
}
|
|
1733
|
-
else {
|
|
1734
|
-
cursor = await dbTrx.objectStore('output_tags').index('userId').openCursor(args.partial.userId);
|
|
1735
|
-
}
|
|
1522
|
+
if (args.partial?.outputTagId != null && args.partial.outputTagId !== 0) {
|
|
1523
|
+
cursor = await store.openCursor(args.partial.outputTagId);
|
|
1524
|
+
}
|
|
1525
|
+
else if (args.partial?.userId !== undefined && args.partial?.tag !== undefined) {
|
|
1526
|
+
cursor = await store.index('tag_userId').openCursor([args.partial.tag, args.partial.userId]);
|
|
1527
|
+
}
|
|
1528
|
+
else if (args.partial?.userId !== undefined) {
|
|
1529
|
+
cursor = await store.index('userId').openCursor(args.partial.userId);
|
|
1736
1530
|
}
|
|
1737
1531
|
else {
|
|
1738
|
-
cursor = await
|
|
1739
|
-
}
|
|
1740
|
-
let firstTime = true;
|
|
1741
|
-
while (cursor) {
|
|
1742
|
-
if (!firstTime)
|
|
1743
|
-
cursor = await cursor.continue();
|
|
1744
|
-
if (!cursor)
|
|
1745
|
-
break;
|
|
1746
|
-
firstTime = false;
|
|
1747
|
-
const r = cursor.value;
|
|
1748
|
-
if (args.since && args.since > r.updated_at)
|
|
1749
|
-
continue;
|
|
1750
|
-
if (args.partial) {
|
|
1751
|
-
if (args.partial.outputTagId !== undefined && r.outputTagId !== args.partial.outputTagId)
|
|
1752
|
-
continue;
|
|
1753
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
1754
|
-
continue;
|
|
1755
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
1756
|
-
continue;
|
|
1757
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
1758
|
-
continue;
|
|
1759
|
-
if (args.partial.tag !== undefined && r.tag !== args.partial.tag)
|
|
1760
|
-
continue;
|
|
1761
|
-
if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
|
|
1762
|
-
continue;
|
|
1763
|
-
}
|
|
1764
|
-
if (skipped < offset) {
|
|
1765
|
-
skipped++;
|
|
1766
|
-
continue;
|
|
1767
|
-
}
|
|
1768
|
-
filtered(r);
|
|
1769
|
-
count++;
|
|
1770
|
-
if (((_e = args.paged) === null || _e === void 0 ? void 0 : _e.limit) && count >= args.paged.limit)
|
|
1771
|
-
break;
|
|
1532
|
+
cursor = await store.openCursor();
|
|
1772
1533
|
}
|
|
1773
|
-
|
|
1534
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesOutputTagPartial)(r, args.partial), filtered);
|
|
1535
|
+
if (args.trx == null)
|
|
1774
1536
|
await dbTrx.done;
|
|
1775
1537
|
}
|
|
1776
1538
|
async findOutputTags(args) {
|
|
@@ -1781,78 +1543,30 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1781
1543
|
return result;
|
|
1782
1544
|
}
|
|
1783
1545
|
async filterSyncStates(args, filtered) {
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.syncMap', `undefined. SyncStates may not be found by syncMap value.`);
|
|
1788
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
1789
|
-
let skipped = 0;
|
|
1790
|
-
let count = 0;
|
|
1546
|
+
if (args.partial.syncMap != null && args.partial.syncMap !== '') {
|
|
1547
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.syncMap', 'undefined. SyncStates may not be found by syncMap value.');
|
|
1548
|
+
}
|
|
1791
1549
|
const dbTrx = this.toDbTrx(['sync_states'], 'readonly', args.trx);
|
|
1550
|
+
const store = dbTrx.objectStore('sync_states');
|
|
1551
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1792
1552
|
let cursor;
|
|
1793
|
-
if (
|
|
1794
|
-
cursor = await
|
|
1553
|
+
if (args.partial?.syncStateId != null && args.partial.syncStateId !== 0) {
|
|
1554
|
+
cursor = await store.openCursor(args.partial.syncStateId);
|
|
1795
1555
|
}
|
|
1796
|
-
else if (
|
|
1797
|
-
cursor = await
|
|
1556
|
+
else if (args.partial?.userId !== undefined) {
|
|
1557
|
+
cursor = await store.index('userId').openCursor(args.partial.userId);
|
|
1798
1558
|
}
|
|
1799
|
-
else if (
|
|
1800
|
-
cursor = await
|
|
1559
|
+
else if (args.partial?.refNum !== undefined) {
|
|
1560
|
+
cursor = await store.index('refNum').openCursor(args.partial.refNum);
|
|
1801
1561
|
}
|
|
1802
|
-
else if (
|
|
1803
|
-
cursor = await
|
|
1562
|
+
else if (args.partial?.status !== undefined) {
|
|
1563
|
+
cursor = await store.index('status').openCursor(args.partial.status);
|
|
1804
1564
|
}
|
|
1805
1565
|
else {
|
|
1806
|
-
cursor = await
|
|
1807
|
-
}
|
|
1808
|
-
let firstTime = true;
|
|
1809
|
-
while (cursor) {
|
|
1810
|
-
if (!firstTime)
|
|
1811
|
-
cursor = await cursor.continue();
|
|
1812
|
-
if (!cursor)
|
|
1813
|
-
break;
|
|
1814
|
-
firstTime = false;
|
|
1815
|
-
const r = cursor.value;
|
|
1816
|
-
if (args.since && args.since > r.updated_at)
|
|
1817
|
-
continue;
|
|
1818
|
-
if (args.partial) {
|
|
1819
|
-
if (args.partial.syncStateId !== undefined && r.syncStateId !== args.partial.syncStateId)
|
|
1820
|
-
continue;
|
|
1821
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
1822
|
-
continue;
|
|
1823
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
1824
|
-
continue;
|
|
1825
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
1826
|
-
continue;
|
|
1827
|
-
if (args.partial.storageIdentityKey !== undefined && r.storageIdentityKey !== args.partial.storageIdentityKey)
|
|
1828
|
-
continue;
|
|
1829
|
-
if (args.partial.storageName !== undefined && r.storageName !== args.partial.storageName)
|
|
1830
|
-
continue;
|
|
1831
|
-
if (args.partial.status !== undefined && r.status !== args.partial.status)
|
|
1832
|
-
continue;
|
|
1833
|
-
if (args.partial.init !== undefined && r.init !== args.partial.init)
|
|
1834
|
-
continue;
|
|
1835
|
-
if (args.partial.refNum !== undefined && r.refNum !== args.partial.refNum)
|
|
1836
|
-
continue;
|
|
1837
|
-
if (args.partial.when !== undefined && ((_f = r.when) === null || _f === void 0 ? void 0 : _f.getTime()) !== args.partial.when.getTime())
|
|
1838
|
-
continue;
|
|
1839
|
-
if (args.partial.satoshis !== undefined && r.satoshis !== args.partial.satoshis)
|
|
1840
|
-
continue;
|
|
1841
|
-
if (args.partial.errorLocal !== undefined && r.errorLocale !== args.partial.errorLocal)
|
|
1842
|
-
continue;
|
|
1843
|
-
if (args.partial.errorOther !== undefined && r.errorOther !== args.partial.errorOther)
|
|
1844
|
-
continue;
|
|
1845
|
-
}
|
|
1846
|
-
if (skipped < offset) {
|
|
1847
|
-
skipped++;
|
|
1848
|
-
continue;
|
|
1849
|
-
}
|
|
1850
|
-
filtered(r);
|
|
1851
|
-
count++;
|
|
1852
|
-
if (((_g = args.paged) === null || _g === void 0 ? void 0 : _g.limit) && count >= args.paged.limit)
|
|
1853
|
-
break;
|
|
1566
|
+
cursor = await store.openCursor();
|
|
1854
1567
|
}
|
|
1855
|
-
|
|
1568
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesSyncStatePartial)(r, args.partial), filtered);
|
|
1569
|
+
if (args.trx == null)
|
|
1856
1570
|
await dbTrx.done;
|
|
1857
1571
|
}
|
|
1858
1572
|
async findSyncStates(args) {
|
|
@@ -1862,125 +1576,78 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1862
1576
|
});
|
|
1863
1577
|
return result;
|
|
1864
1578
|
}
|
|
1579
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1580
|
+
async openTransactionsCursor(
|
|
1581
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1582
|
+
store,
|
|
1583
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1584
|
+
partial, direction
|
|
1585
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1586
|
+
) {
|
|
1587
|
+
if (partial?.transactionId != null && partial.transactionId !== 0)
|
|
1588
|
+
return store.openCursor(partial.transactionId, direction);
|
|
1589
|
+
if (partial?.userId !== undefined) {
|
|
1590
|
+
if (partial?.status !== undefined) {
|
|
1591
|
+
return store.index('status_userId').openCursor([partial.status, partial.userId], direction);
|
|
1592
|
+
}
|
|
1593
|
+
return store.index('userId').openCursor(partial.userId, direction);
|
|
1594
|
+
}
|
|
1595
|
+
if (partial?.status !== undefined)
|
|
1596
|
+
return store.index('status').openCursor(partial.status, direction);
|
|
1597
|
+
if (partial?.provenTxId !== undefined)
|
|
1598
|
+
return store.index('provenTxId').openCursor(partial.provenTxId, direction);
|
|
1599
|
+
if (partial?.reference !== undefined)
|
|
1600
|
+
return store.index('reference').openCursor(partial.reference, direction);
|
|
1601
|
+
return store.openCursor(null, direction);
|
|
1602
|
+
}
|
|
1865
1603
|
async filterTransactions(args, filtered, labelIds, isQueryModeAll) {
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
1873
|
-
let skipped = 0;
|
|
1874
|
-
let count = 0;
|
|
1604
|
+
if (args.partial.rawTx != null) {
|
|
1605
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx', 'undefined. Transactions may not be found by rawTx value.');
|
|
1606
|
+
}
|
|
1607
|
+
if (args.partial.inputBEEF != null) {
|
|
1608
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.inputBEEF', 'undefined. Transactions may not be found by inputBEEF value.');
|
|
1609
|
+
}
|
|
1875
1610
|
const stores = ['transactions'];
|
|
1876
|
-
if (labelIds && labelIds.length > 0)
|
|
1611
|
+
if (labelIds != null && labelIds.length > 0)
|
|
1877
1612
|
stores.push('tx_labels_map');
|
|
1878
|
-
}
|
|
1879
1613
|
const dbTrx = this.toDbTrx(stores, 'readonly', args.trx);
|
|
1880
|
-
const direction = args.orderDescending ? 'prev' : 'next';
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
if (
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
cursor = await dbTrx.objectStore('transactions').openCursor(null, direction);
|
|
1910
|
-
}
|
|
1911
|
-
let firstTime = true;
|
|
1912
|
-
while (cursor) {
|
|
1913
|
-
if (!firstTime)
|
|
1914
|
-
cursor = await cursor.continue();
|
|
1915
|
-
if (!cursor)
|
|
1916
|
-
break;
|
|
1917
|
-
firstTime = false;
|
|
1918
|
-
const r = cursor.value;
|
|
1919
|
-
if (args.since && args.since > r.updated_at)
|
|
1920
|
-
continue;
|
|
1921
|
-
if (args.from && r.created_at.getTime() < args.from.getTime())
|
|
1922
|
-
continue;
|
|
1923
|
-
if (args.to && r.created_at.getTime() >= args.to.getTime())
|
|
1924
|
-
continue;
|
|
1925
|
-
if (args.status && args.status.length > 0 && !args.status.includes(r.status))
|
|
1926
|
-
continue;
|
|
1927
|
-
if (args.partial) {
|
|
1928
|
-
if (args.partial.transactionId !== undefined && r.transactionId !== args.partial.transactionId)
|
|
1929
|
-
continue;
|
|
1930
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
1931
|
-
continue;
|
|
1932
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
1933
|
-
continue;
|
|
1934
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
1935
|
-
continue;
|
|
1936
|
-
if (args.partial.provenTxId !== undefined && r.provenTxId !== args.partial.provenTxId)
|
|
1937
|
-
continue;
|
|
1938
|
-
if (args.partial.status !== undefined && r.status !== args.partial.status)
|
|
1939
|
-
continue;
|
|
1940
|
-
if (args.partial.reference !== undefined && r.reference !== args.partial.reference)
|
|
1941
|
-
continue;
|
|
1942
|
-
if (args.partial.isOutgoing !== undefined && r.isOutgoing !== args.partial.isOutgoing)
|
|
1943
|
-
continue;
|
|
1944
|
-
if (args.partial.satoshis !== undefined && r.satoshis !== args.partial.satoshis)
|
|
1945
|
-
continue;
|
|
1946
|
-
if (args.partial.description !== undefined && r.description !== args.partial.description)
|
|
1947
|
-
continue;
|
|
1948
|
-
if (args.partial.version !== undefined && r.version !== args.partial.version)
|
|
1949
|
-
continue;
|
|
1950
|
-
if (args.partial.lockTime !== undefined && r.lockTime !== args.partial.lockTime)
|
|
1951
|
-
continue;
|
|
1952
|
-
if (args.partial.txid !== undefined && r.txid !== args.partial.txid)
|
|
1953
|
-
continue;
|
|
1954
|
-
}
|
|
1955
|
-
if (labelIds && labelIds.length > 0) {
|
|
1956
|
-
let ids = [...labelIds];
|
|
1957
|
-
await this.filterTxLabelMaps({ partial: { transactionId: r.transactionId }, trx: dbTrx }, lm => {
|
|
1958
|
-
if (ids.length > 0) {
|
|
1959
|
-
const i = ids.indexOf(lm.txLabelId);
|
|
1960
|
-
if (i >= 0) {
|
|
1961
|
-
if (isQueryModeAll) {
|
|
1962
|
-
ids.splice(i, 1);
|
|
1963
|
-
}
|
|
1964
|
-
else {
|
|
1965
|
-
ids = [];
|
|
1966
|
-
}
|
|
1967
|
-
}
|
|
1614
|
+
const direction = args.orderDescending === true ? 'prev' : 'next';
|
|
1615
|
+
const store = dbTrx.objectStore('transactions');
|
|
1616
|
+
const cursor = await this.openTransactionsCursor(store, args.partial, direction);
|
|
1617
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
|
|
1618
|
+
if (args.from != null && r.created_at.getTime() < args.from.getTime())
|
|
1619
|
+
return false;
|
|
1620
|
+
if (args.to != null && r.created_at.getTime() >= args.to.getTime())
|
|
1621
|
+
return false;
|
|
1622
|
+
if (args.status != null && !args.status.includes(r.status))
|
|
1623
|
+
return false;
|
|
1624
|
+
if (!(0, idbHelpers_1.matchesTransactionPartial)(r, args.partial))
|
|
1625
|
+
return false;
|
|
1626
|
+
if (labelIds != null &&
|
|
1627
|
+
labelIds.length > 0 &&
|
|
1628
|
+
!(await this.transactionMatchesLabels(r.transactionId, labelIds, isQueryModeAll, dbTrx)))
|
|
1629
|
+
return false;
|
|
1630
|
+
return true;
|
|
1631
|
+
}, filtered);
|
|
1632
|
+
if (args.trx == null)
|
|
1633
|
+
await dbTrx.done;
|
|
1634
|
+
}
|
|
1635
|
+
async transactionMatchesLabels(transactionId, labelIds, isQueryModeAll, dbTrx) {
|
|
1636
|
+
let ids = [...labelIds];
|
|
1637
|
+
await this.filterTxLabelMaps({ partial: { transactionId }, trx: dbTrx }, lm => {
|
|
1638
|
+
if (ids.length > 0) {
|
|
1639
|
+
const i = ids.indexOf(lm.txLabelId);
|
|
1640
|
+
if (i >= 0) {
|
|
1641
|
+
if (isQueryModeAll === true) {
|
|
1642
|
+
ids.splice(i, 1);
|
|
1968
1643
|
}
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
if (skipped < offset) {
|
|
1974
|
-
skipped++;
|
|
1975
|
-
continue;
|
|
1644
|
+
else {
|
|
1645
|
+
ids = [];
|
|
1646
|
+
}
|
|
1647
|
+
}
|
|
1976
1648
|
}
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
if (((_h = args.paged) === null || _h === void 0 ? void 0 : _h.limit) && count >= args.paged.limit)
|
|
1980
|
-
break;
|
|
1981
|
-
}
|
|
1982
|
-
if (!args.trx)
|
|
1983
|
-
await dbTrx.done;
|
|
1649
|
+
});
|
|
1650
|
+
return ids.length === 0;
|
|
1984
1651
|
}
|
|
1985
1652
|
async findTransactions(args, labelIds, isQueryModeAll) {
|
|
1986
1653
|
const results = [];
|
|
@@ -1988,75 +1655,35 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
1988
1655
|
results.push(this.validateEntity(r));
|
|
1989
1656
|
}, labelIds, isQueryModeAll);
|
|
1990
1657
|
for (const t of results) {
|
|
1991
|
-
|
|
1992
|
-
// transactionColumnsWithoutRawTx only strips rawTx, and callers such as
|
|
1993
|
-
// getReqsAndBeefToShareWithWorld legitimately need inputBEEF when noRawTx is set.
|
|
1994
|
-
if (!args.noRawTx)
|
|
1995
|
-
await this.validateRawTransaction(t, args.trx);
|
|
1996
|
-
else
|
|
1658
|
+
if (args.noRawTx === true) {
|
|
1997
1659
|
t.rawTx = undefined;
|
|
1660
|
+
t.inputBEEF = undefined;
|
|
1661
|
+
}
|
|
1662
|
+
else {
|
|
1663
|
+
await this.validateRawTransaction(t, args.trx);
|
|
1664
|
+
}
|
|
1998
1665
|
}
|
|
1999
1666
|
return results;
|
|
2000
1667
|
}
|
|
2001
1668
|
async filterTxLabels(args, filtered) {
|
|
2002
|
-
var _a, _b, _c, _d, _e;
|
|
2003
|
-
this.assertNoUndefinedInPartial(args.partial);
|
|
2004
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
2005
|
-
let skipped = 0;
|
|
2006
|
-
let count = 0;
|
|
2007
1669
|
const dbTrx = this.toDbTrx(['tx_labels'], 'readonly', args.trx);
|
|
1670
|
+
const store = dbTrx.objectStore('tx_labels');
|
|
1671
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2008
1672
|
let cursor;
|
|
2009
|
-
if (
|
|
2010
|
-
cursor = await
|
|
2011
|
-
}
|
|
2012
|
-
else if (
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
.openCursor([args.partial.label, args.partial.userId]);
|
|
2018
|
-
}
|
|
2019
|
-
else {
|
|
2020
|
-
cursor = await dbTrx.objectStore('tx_labels').index('userId').openCursor(args.partial.userId);
|
|
2021
|
-
}
|
|
1673
|
+
if (args.partial?.txLabelId != null && args.partial.txLabelId !== 0) {
|
|
1674
|
+
cursor = await store.openCursor(args.partial.txLabelId);
|
|
1675
|
+
}
|
|
1676
|
+
else if (args.partial?.userId !== undefined && args.partial?.label !== undefined) {
|
|
1677
|
+
cursor = await store.index('label_userId').openCursor([args.partial.label, args.partial.userId]);
|
|
1678
|
+
}
|
|
1679
|
+
else if (args.partial?.userId !== undefined) {
|
|
1680
|
+
cursor = await store.index('userId').openCursor(args.partial.userId);
|
|
2022
1681
|
}
|
|
2023
1682
|
else {
|
|
2024
|
-
cursor = await
|
|
2025
|
-
}
|
|
2026
|
-
let firstTime = true;
|
|
2027
|
-
while (cursor) {
|
|
2028
|
-
if (!firstTime)
|
|
2029
|
-
cursor = await cursor.continue();
|
|
2030
|
-
if (!cursor)
|
|
2031
|
-
break;
|
|
2032
|
-
firstTime = false;
|
|
2033
|
-
const r = cursor.value;
|
|
2034
|
-
if (args.since && args.since > r.updated_at)
|
|
2035
|
-
continue;
|
|
2036
|
-
if (args.partial) {
|
|
2037
|
-
if (args.partial.txLabelId !== undefined && r.txLabelId !== args.partial.txLabelId)
|
|
2038
|
-
continue;
|
|
2039
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
2040
|
-
continue;
|
|
2041
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
2042
|
-
continue;
|
|
2043
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
2044
|
-
continue;
|
|
2045
|
-
if (args.partial.label !== undefined && r.label !== args.partial.label)
|
|
2046
|
-
continue;
|
|
2047
|
-
if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
|
|
2048
|
-
continue;
|
|
2049
|
-
}
|
|
2050
|
-
if (skipped < offset) {
|
|
2051
|
-
skipped++;
|
|
2052
|
-
continue;
|
|
2053
|
-
}
|
|
2054
|
-
filtered(r);
|
|
2055
|
-
count++;
|
|
2056
|
-
if (((_e = args.paged) === null || _e === void 0 ? void 0 : _e.limit) && count >= args.paged.limit)
|
|
2057
|
-
break;
|
|
1683
|
+
cursor = await store.openCursor();
|
|
2058
1684
|
}
|
|
2059
|
-
|
|
1685
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesTxLabelPartial)(r, args.partial), filtered);
|
|
1686
|
+
if (args.trx == null)
|
|
2060
1687
|
await dbTrx.done;
|
|
2061
1688
|
}
|
|
2062
1689
|
async findTxLabels(args) {
|
|
@@ -2066,46 +1693,26 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
2066
1693
|
});
|
|
2067
1694
|
return result;
|
|
2068
1695
|
}
|
|
1696
|
+
matchesUserPartial(r, partial) {
|
|
1697
|
+
if (partial == null)
|
|
1698
|
+
return true;
|
|
1699
|
+
if (partial.userId != null && partial.userId !== 0 && r.userId !== partial.userId)
|
|
1700
|
+
return false;
|
|
1701
|
+
if (partial.created_at != null && r.created_at.getTime() !== partial.created_at.getTime())
|
|
1702
|
+
return false;
|
|
1703
|
+
if (partial.updated_at != null && r.updated_at.getTime() !== partial.updated_at.getTime())
|
|
1704
|
+
return false;
|
|
1705
|
+
if (partial.identityKey != null && partial.identityKey !== '' && r.identityKey !== partial.identityKey)
|
|
1706
|
+
return false;
|
|
1707
|
+
if (partial.activeStorage != null && partial.activeStorage !== '' && r.activeStorage !== partial.activeStorage)
|
|
1708
|
+
return false;
|
|
1709
|
+
return true;
|
|
1710
|
+
}
|
|
2069
1711
|
async filterUsers(args, filtered) {
|
|
2070
|
-
var _a, _b;
|
|
2071
|
-
this.assertNoUndefinedInPartial(args.partial);
|
|
2072
|
-
const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
|
|
2073
|
-
let skipped = 0;
|
|
2074
|
-
let count = 0;
|
|
2075
1712
|
const dbTrx = this.toDbTrx(['users'], 'readonly', args.trx);
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
if (!firstTime)
|
|
2080
|
-
cursor = await cursor.continue();
|
|
2081
|
-
if (!cursor)
|
|
2082
|
-
break;
|
|
2083
|
-
firstTime = false;
|
|
2084
|
-
const r = cursor.value;
|
|
2085
|
-
if (args.since && args.since > r.updated_at)
|
|
2086
|
-
continue;
|
|
2087
|
-
if (args.partial) {
|
|
2088
|
-
if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
|
|
2089
|
-
continue;
|
|
2090
|
-
if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
|
|
2091
|
-
continue;
|
|
2092
|
-
if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
|
|
2093
|
-
continue;
|
|
2094
|
-
if (args.partial.identityKey !== undefined && r.identityKey !== args.partial.identityKey)
|
|
2095
|
-
continue;
|
|
2096
|
-
if (args.partial.activeStorage !== undefined && r.activeStorage !== args.partial.activeStorage)
|
|
2097
|
-
continue;
|
|
2098
|
-
}
|
|
2099
|
-
if (skipped < offset) {
|
|
2100
|
-
skipped++;
|
|
2101
|
-
continue;
|
|
2102
|
-
}
|
|
2103
|
-
filtered(r);
|
|
2104
|
-
count++;
|
|
2105
|
-
if (((_b = args.paged) === null || _b === void 0 ? void 0 : _b.limit) && count >= args.paged.limit)
|
|
2106
|
-
break;
|
|
2107
|
-
}
|
|
2108
|
-
if (!args.trx)
|
|
1713
|
+
const cursor = await dbTrx.objectStore('users').openCursor();
|
|
1714
|
+
await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => this.matchesUserPartial(r, args.partial), filtered);
|
|
1715
|
+
if (args.trx == null)
|
|
2109
1716
|
await dbTrx.done;
|
|
2110
1717
|
}
|
|
2111
1718
|
async findUsers(args) {
|
|
@@ -2244,10 +1851,8 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
2244
1851
|
}, args.userId);
|
|
2245
1852
|
return results;
|
|
2246
1853
|
}
|
|
2247
|
-
async verifyReadyForDatabaseAccess(
|
|
2248
|
-
|
|
2249
|
-
this._settings = await this.readSettings();
|
|
2250
|
-
}
|
|
1854
|
+
async verifyReadyForDatabaseAccess(_trx) {
|
|
1855
|
+
this._settings ??= await this.readSettings();
|
|
2251
1856
|
return this._settings.dbtype;
|
|
2252
1857
|
}
|
|
2253
1858
|
/**
|
|
@@ -2257,18 +1862,30 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
2257
1862
|
validateEntity(entity, dateFields, booleanFields) {
|
|
2258
1863
|
entity.created_at = this.validateDate(entity.created_at);
|
|
2259
1864
|
entity.updated_at = this.validateDate(entity.updated_at);
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
1865
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1866
|
+
const e = entity;
|
|
1867
|
+
this.applyDateFields(e, dateFields);
|
|
1868
|
+
this.applyBooleanFields(e, booleanFields);
|
|
1869
|
+
this.normalizeEntityValues(e);
|
|
1870
|
+
return entity;
|
|
1871
|
+
}
|
|
1872
|
+
applyDateFields(entity, dateFields) {
|
|
1873
|
+
if (dateFields == null)
|
|
1874
|
+
return;
|
|
1875
|
+
for (const df of dateFields) {
|
|
1876
|
+
if (entity[df] != null)
|
|
1877
|
+
entity[df] = this.validateDate(entity[df]);
|
|
2265
1878
|
}
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
1879
|
+
}
|
|
1880
|
+
applyBooleanFields(entity, booleanFields) {
|
|
1881
|
+
if (booleanFields == null)
|
|
1882
|
+
return;
|
|
1883
|
+
for (const df of booleanFields) {
|
|
1884
|
+
if (entity[df] !== undefined)
|
|
1885
|
+
entity[df] = entity[df] !== 0 && entity[df] != null && entity[df] !== false;
|
|
2271
1886
|
}
|
|
1887
|
+
}
|
|
1888
|
+
normalizeEntityValues(entity) {
|
|
2272
1889
|
for (const key of Object.keys(entity)) {
|
|
2273
1890
|
const val = entity[key];
|
|
2274
1891
|
if (val === null) {
|
|
@@ -2278,7 +1895,6 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
2278
1895
|
entity[key] = Array.from(val);
|
|
2279
1896
|
}
|
|
2280
1897
|
}
|
|
2281
|
-
return entity;
|
|
2282
1898
|
}
|
|
2283
1899
|
/**
|
|
2284
1900
|
* Helper to force uniform behavior across database engines.
|
|
@@ -2296,29 +1912,38 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
2296
1912
|
* Use to process the update template for entities being updated.
|
|
2297
1913
|
*/
|
|
2298
1914
|
validatePartialForUpdate(update, dateFields, booleanFields) {
|
|
2299
|
-
if (
|
|
1915
|
+
if (this.dbtype == null)
|
|
2300
1916
|
throw new WERR_errors_1.WERR_INTERNAL('must call verifyReadyForDatabaseAccess first');
|
|
2301
1917
|
const v = { ...update };
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
if (v.updated_at)
|
|
2305
|
-
v.updated_at = this.validateEntityDate(v.updated_at);
|
|
2306
|
-
if (!v.created_at)
|
|
1918
|
+
v.created_at = v.created_at != null ? this.validateEntityDate(v.created_at) : undefined;
|
|
1919
|
+
if (v.created_at == null)
|
|
2307
1920
|
delete v.created_at;
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
1921
|
+
v.updated_at = v.updated_at != null ? this.validateEntityDate(v.updated_at) : this.validateEntityDate(new Date());
|
|
1922
|
+
this.applyOptionalDateFields(v, dateFields);
|
|
1923
|
+
this.applyIntegerBooleanFields(update, booleanFields);
|
|
1924
|
+
this.normalizeForStorage(v);
|
|
1925
|
+
this.isDirty = true;
|
|
1926
|
+
return v;
|
|
1927
|
+
}
|
|
1928
|
+
applyOptionalDateFields(v, dateFields) {
|
|
1929
|
+
if (dateFields == null)
|
|
1930
|
+
return;
|
|
1931
|
+
for (const df of dateFields) {
|
|
1932
|
+
if (v[df] != null)
|
|
1933
|
+
v[df] = this.validateOptionalEntityDate(v[df]);
|
|
2315
1934
|
}
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
1935
|
+
}
|
|
1936
|
+
applyIntegerBooleanFields(update, booleanFields) {
|
|
1937
|
+
if (booleanFields == null)
|
|
1938
|
+
return;
|
|
1939
|
+
for (const df of booleanFields) {
|
|
1940
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1941
|
+
const u = update;
|
|
1942
|
+
if (u[df] !== undefined)
|
|
1943
|
+
u[df] = u[df] != null && u[df] !== false ? 1 : 0;
|
|
2321
1944
|
}
|
|
1945
|
+
}
|
|
1946
|
+
normalizeForStorage(v) {
|
|
2322
1947
|
for (const key of Object.keys(v)) {
|
|
2323
1948
|
const val = v[key];
|
|
2324
1949
|
if (Array.isArray(val) && (val.length === 0 || Number.isInteger(val[0]))) {
|
|
@@ -2328,8 +1953,6 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
2328
1953
|
v[key] = undefined;
|
|
2329
1954
|
}
|
|
2330
1955
|
}
|
|
2331
|
-
this.isDirty = true;
|
|
2332
|
-
return v;
|
|
2333
1956
|
}
|
|
2334
1957
|
/**
|
|
2335
1958
|
* Helper to force uniform behavior across database engines.
|
|
@@ -2338,47 +1961,29 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
|
|
|
2338
1961
|
async validateEntityForInsert(entity, trx, dateFields, booleanFields) {
|
|
2339
1962
|
await this.verifyReadyForDatabaseAccess(trx);
|
|
2340
1963
|
const v = { ...entity };
|
|
2341
|
-
v.created_at = this.validateOptionalEntityDate(v.created_at, true);
|
|
2342
|
-
v.updated_at = this.validateOptionalEntityDate(v.updated_at, true);
|
|
2343
|
-
if (
|
|
1964
|
+
v.created_at = this.validateOptionalEntityDate(v.created_at, true) ?? new Date();
|
|
1965
|
+
v.updated_at = this.validateOptionalEntityDate(v.updated_at, true) ?? new Date();
|
|
1966
|
+
if (v.created_at == null)
|
|
2344
1967
|
delete v.created_at;
|
|
2345
|
-
if (
|
|
1968
|
+
if (v.updated_at == null)
|
|
2346
1969
|
delete v.updated_at;
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
v[df] = this.validateOptionalEntityDate(v[df]);
|
|
2351
|
-
}
|
|
2352
|
-
}
|
|
2353
|
-
if (booleanFields) {
|
|
2354
|
-
for (const df of booleanFields) {
|
|
2355
|
-
if (entity[df] !== undefined)
|
|
2356
|
-
entity[df] = !!entity[df] ? 1 : 0;
|
|
2357
|
-
}
|
|
2358
|
-
}
|
|
2359
|
-
for (const key of Object.keys(v)) {
|
|
2360
|
-
const val = v[key];
|
|
2361
|
-
if (Array.isArray(val) && (val.length === 0 || Number.isInteger(val[0]))) {
|
|
2362
|
-
v[key] = Uint8Array.from(val);
|
|
2363
|
-
}
|
|
2364
|
-
else if (val === null) {
|
|
2365
|
-
v[key] = undefined;
|
|
2366
|
-
}
|
|
2367
|
-
}
|
|
1970
|
+
this.applyOptionalDateFields(v, dateFields);
|
|
1971
|
+
this.applyIntegerBooleanFields(entity, booleanFields);
|
|
1972
|
+
this.normalizeForStorage(v);
|
|
2368
1973
|
this.isDirty = true;
|
|
2369
1974
|
return v;
|
|
2370
1975
|
}
|
|
2371
1976
|
async validateRawTransaction(t, trx) {
|
|
2372
1977
|
// if there is no txid or there is a rawTransaction return what we have.
|
|
2373
|
-
if (t.rawTx ||
|
|
1978
|
+
if (t.rawTx != null || t.txid == null || t.txid === '')
|
|
2374
1979
|
return;
|
|
2375
1980
|
// rawTransaction is missing, see if we moved it ...
|
|
2376
1981
|
const rawTx = await this.getRawTxOfKnownValidTransaction(t.txid, undefined, undefined, trx);
|
|
2377
|
-
if (
|
|
1982
|
+
if (rawTx == null)
|
|
2378
1983
|
return;
|
|
2379
1984
|
t.rawTx = rawTx;
|
|
2380
1985
|
}
|
|
2381
|
-
async adminStats(
|
|
1986
|
+
async adminStats(_adminIdentityKey) {
|
|
2382
1987
|
throw new Error('Method intentionally not implemented for personal storage.');
|
|
2383
1988
|
}
|
|
2384
1989
|
}
|