@bsv/wallet-toolbox 2.13.0 → 2.13.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 +283 -1
- package/README.md +403 -5
- package/docs/README.md +8 -1
- package/docs/client.md +13057 -4632
- package/docs/identity-verification.md +196 -0
- package/docs/monitor.md +505 -190
- package/docs/services.md +4013 -1153
- package/docs/setup.md +98 -58
- package/docs/storage.md +5780 -1609
- package/docs/wallet.md +10155 -10871
- package/out/src/CWIStyleWalletManager.d.ts +6 -8
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +170 -125
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +2 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +3 -2
- package/out/src/Setup.js.map +1 -1
- package/out/src/ShamirWalletManager.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.js +34 -19
- package/out/src/ShamirWalletManager.js.map +1 -1
- package/out/src/SimpleWalletManager.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.js +7 -6
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.d.ts +50 -11
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +183 -107
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +282 -26
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.js +1 -1
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +30 -17
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +540 -312
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.d.ts +3 -2
- package/out/src/WalletSettingsManager.d.ts.map +1 -1
- package/out/src/WalletSettingsManager.js +141 -6
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
- package/out/src/entropy/EntropyCollector.js +3 -2
- package/out/src/entropy/EntropyCollector.js.map +1 -1
- package/out/src/fundWalletP2PKH.d.ts.map +1 -1
- package/out/src/fundWalletP2PKH.js +143 -44
- package/out/src/fundWalletP2PKH.js.map +1 -1
- package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
- package/out/src/mockchain/MockChainTracker.js +5 -5
- package/out/src/mockchain/MockChainTracker.js.map +1 -1
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +32 -8
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +17 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +206 -42
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +64 -16
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/monitorValidation.d.ts +12 -0
- package/out/src/monitor/monitorValidation.d.ts.map +1 -0
- package/out/src/monitor/monitorValidation.js +133 -0
- package/out/src/monitor/monitorValidation.js.map +1 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +28 -12
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
- package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +9 -3
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js +4 -4
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +17 -7
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -4
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +41 -13
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +26 -8
- package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +3 -2
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js +112 -2
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +17 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/services/Services.d.ts +4 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +260 -117
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
- package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.js +267 -66
- package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/LocalChainTracker.d.ts +26 -0
- package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/LocalChainTracker.js +180 -10
- package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +7 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +19 -0
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +237 -61
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +346 -30
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +375 -43
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
- 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.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
- 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 +14 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
- 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 +59 -6
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +225 -24
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +225 -86
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -2
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +18 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +204 -14
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +486 -82
- 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 +17 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +12 -2
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.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 +99 -30
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +7 -0
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +90 -24
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +9 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +100 -14
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +104 -8
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +79 -15
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +311 -93
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/classifyOutputUtxo.d.ts.map +1 -1
- package/out/src/services/classifyOutputUtxo.js +19 -10
- package/out/src/services/classifyOutputUtxo.js.map +1 -1
- package/out/src/services/fiatRateValidation.d.ts +12 -0
- package/out/src/services/fiatRateValidation.d.ts.map +1 -0
- package/out/src/services/fiatRateValidation.js +138 -0
- package/out/src/services/fiatRateValidation.js.map +1 -0
- package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
- package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
- package/out/src/services/getCanonicalMerklePath.js +90 -0
- package/out/src/services/getCanonicalMerklePath.js.map +1 -0
- package/out/src/services/providers/ARC.d.ts +3 -16
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +36 -37
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/ArcSSEClient.d.ts +25 -19
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +352 -85
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +1 -0
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +56 -41
- package/out/src/services/providers/Arcade.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts +3 -0
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +79 -12
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +221 -69
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
- package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
- package/out/src/services/providers/arcProviderConfig.js +83 -0
- package/out/src/services/providers/arcProviderConfig.js.map +1 -0
- package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
- package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
- package/out/src/services/providers/arcTxDataValidation.js +92 -0
- package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
- package/out/src/services/providers/exchangeRates.d.ts +3 -3
- package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
- package/out/src/services/providers/exchangeRates.js +153 -226
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
- package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
- package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
- package/out/src/services/validateMerklePathResult.d.ts +30 -0
- package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
- package/out/src/services/validateMerklePathResult.js +272 -0
- package/out/src/services/validateMerklePathResult.js.map +1 -0
- package/out/src/services/validatePostBeefResult.d.ts +17 -0
- package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
- package/out/src/services/validatePostBeefResult.js +334 -0
- package/out/src/services/validatePostBeefResult.js.map +1 -0
- package/out/src/services/validateRawTxResult.d.ts +6 -0
- package/out/src/services/validateRawTxResult.d.ts.map +1 -0
- package/out/src/services/validateRawTxResult.js +77 -0
- package/out/src/services/validateRawTxResult.js.map +1 -0
- package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
- package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
- package/out/src/services/validateScriptHashHistoryResult.js +99 -0
- package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
- package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
- package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
- package/out/src/services/validateStatusForTxidsResult.js +181 -0
- package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
- package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
- package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
- package/out/src/services/validateUtxoStatusResult.js +126 -0
- package/out/src/services/validateUtxoStatusResult.js.map +1 -0
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchPlanner.js +4 -3
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +6 -5
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +70 -76
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
- package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
- package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +6 -11
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts +4 -3
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +4 -2
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts +3 -3
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.js +9 -4
- package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +2 -2
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.d.ts +3 -2
- package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +3 -2
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
- package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
- package/out/src/storage/StorageIdb.d.ts +5 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +15 -20
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +5 -3
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +143 -93
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +19 -9
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +229 -145
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +1 -1
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +9 -42
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +1 -0
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +37 -36
- package/out/src/storage/StorageReaderWriter.js.map +1 -1
- package/out/src/storage/StorageSyncReader.d.ts +1 -1
- package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
- package/out/src/storage/StorageSyncReader.js +3 -36
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +8 -7
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +38 -65
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +16 -44
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +1 -0
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatch.js +3 -2
- package/out/src/storage/methods/actionBatch.js.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
- package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.js +40 -22
- package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.js +22 -30
- package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +57 -44
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +7 -6
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +7 -5
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +12 -11
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +5 -7
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +3 -3
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +134 -129
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
- package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js +2 -2
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
- package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +10 -9
- package/out/src/storage/methods/listActionsKnex.js.map +1 -1
- package/out/src/storage/methods/listCertificates.d.ts +3 -2
- package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
- package/out/src/storage/methods/listCertificates.js.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
- package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.js +11 -11
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
- package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js +15 -23
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/noSendExpiry.d.ts +3 -3
- package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
- package/out/src/storage/methods/noSendExpiry.js +10 -8
- package/out/src/storage/methods/noSendExpiry.js.map +1 -1
- package/out/src/storage/methods/preparedBeef.d.ts.map +1 -1
- package/out/src/storage/methods/preparedBeef.js +13 -14
- package/out/src/storage/methods/preparedBeef.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +37 -6
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts +1 -0
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -1
- package/out/src/storage/methods/reviewUtxoOutputs.js +51 -4
- package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -1
- package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
- package/out/src/storage/methods/validateSyncProof.js +3 -3
- package/out/src/storage/methods/validateSyncProof.js.map +1 -1
- package/out/src/storage/portable/index.d.ts.map +1 -1
- package/out/src/storage/portable/index.js +21 -13
- package/out/src/storage/portable/index.js.map +1 -1
- package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
- package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
- package/out/src/storage/remoting/BinaryJson.js +37 -0
- package/out/src/storage/remoting/BinaryJson.js.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
- package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.js +222 -30
- package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexSyncTransferStore.js +3 -4
- package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -1
- package/out/src/storage/remoting/StorageClient.d.ts +6 -1
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +63 -6
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +23 -6
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +148 -19
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +11 -9
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +5 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +95 -19
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.js +3 -2
- package/out/src/storage/remoting/SyncTransfer.js.map +1 -1
- package/out/src/storage/schema/KnexMigrations.d.ts +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +28 -6
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.js +11 -4
- package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +2 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +93 -39
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -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 +1 -1
- package/out/src/storage/schema/tables/TableOutput.d.ts.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 +1 -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/TableTransaction.js.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/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
- package/out/src/utility/actionBatchDigest.js +9 -7
- package/out/src/utility/actionBatchDigest.js.map +1 -1
- package/out/src/utility/actionBatchPack.d.ts.map +1 -1
- package/out/src/utility/actionBatchPack.js +7 -12
- package/out/src/utility/actionBatchPack.js.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.js +4 -4
- package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
- package/out/src/utility/brc177NoSendExpiry.d.ts +2 -2
- package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -1
- package/out/src/utility/canonicalizeAtomicBeef.js +2 -2
- package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -1
- package/out/src/utility/exactActionSpend.d.ts +11 -0
- package/out/src/utility/exactActionSpend.d.ts.map +1 -0
- package/out/src/utility/exactActionSpend.js +11 -0
- package/out/src/utility/exactActionSpend.js.map +1 -0
- package/out/src/utility/identityUtils.d.ts +44 -4
- package/out/src/utility/identityUtils.d.ts.map +1 -1
- package/out/src/utility/identityUtils.js +376 -61
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.js +1 -19
- package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
- package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
- package/out/src/utility/tscProofToMerklePath.js +35 -4
- package/out/src/utility/tscProofToMerklePath.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +8 -6
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
- package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
- package/out/src/utility/verifyOverlayOutput.js +22 -0
- package/out/src/utility/verifyOverlayOutput.js.map +1 -0
- package/out/src/utility/walletResultGuards.d.ts +14 -0
- package/out/src/utility/walletResultGuards.d.ts.map +1 -0
- package/out/src/utility/walletResultGuards.js +28 -0
- package/out/src/utility/walletResultGuards.js.map +1 -0
- package/out/src/wab-client/WABClient.d.ts +3 -17
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +30 -14
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
- package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
- package/out/src/wab-client/WABResponseValidation.js +321 -0
- package/out/src/wab-client/WABResponseValidation.js.map +1 -0
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
- package/package.json +5 -5
|
@@ -5,6 +5,56 @@ const WalletErrorFromJson_1 = require("../../sdk/WalletErrorFromJson");
|
|
|
5
5
|
const WalletLogger_1 = require("../../WalletLogger");
|
|
6
6
|
const StorageClientBase_1 = require("./StorageClientBase");
|
|
7
7
|
const BinaryJson_1 = require("./BinaryJson");
|
|
8
|
+
const MAX_REMOTE_LOG_ENTRIES = 1000;
|
|
9
|
+
const MAX_REMOTE_LOG_MESSAGE_LENGTH = 4096;
|
|
10
|
+
function invalidRemoteLog() {
|
|
11
|
+
throw new Error('Wallet storage returned invalid remote log data');
|
|
12
|
+
}
|
|
13
|
+
function validatedRemoteLog(result) {
|
|
14
|
+
if (result == null || typeof result !== 'object' || Array.isArray(result))
|
|
15
|
+
return undefined;
|
|
16
|
+
const log = Object.getOwnPropertyDescriptor(result, 'log');
|
|
17
|
+
if (log == null)
|
|
18
|
+
return undefined;
|
|
19
|
+
if (!('value' in log) || log.value == null || typeof log.value !== 'object' || Array.isArray(log.value)) {
|
|
20
|
+
return invalidRemoteLog();
|
|
21
|
+
}
|
|
22
|
+
const logProperties = Object.getOwnPropertyDescriptors(log.value);
|
|
23
|
+
if (Object.getOwnPropertySymbols(log.value).length !== 0 ||
|
|
24
|
+
Object.keys(logProperties).some(key => key !== 'logs') ||
|
|
25
|
+
Object.values(logProperties).some(property => property.get != null || property.set != null) ||
|
|
26
|
+
!Array.isArray(logProperties.logs?.value) ||
|
|
27
|
+
logProperties.logs.value.length > MAX_REMOTE_LOG_ENTRIES) {
|
|
28
|
+
return invalidRemoteLog();
|
|
29
|
+
}
|
|
30
|
+
const logs = logProperties.logs.value.map((entry) => {
|
|
31
|
+
if (entry == null || typeof entry !== 'object' || Array.isArray(entry))
|
|
32
|
+
return invalidRemoteLog();
|
|
33
|
+
const properties = Object.getOwnPropertyDescriptors(entry);
|
|
34
|
+
const keys = Object.keys(properties);
|
|
35
|
+
const booleanKeys = ['isError', 'isBegin', 'isEnd'];
|
|
36
|
+
if (Object.getOwnPropertySymbols(entry).length !== 0 ||
|
|
37
|
+
Object.values(properties).some(property => property.get != null || property.set != null) ||
|
|
38
|
+
keys.some(key => !['when', 'indent', 'log', ...booleanKeys].includes(key)) ||
|
|
39
|
+
!Number.isSafeInteger(properties.when?.value) ||
|
|
40
|
+
properties.when.value < 0 ||
|
|
41
|
+
!Number.isSafeInteger(properties.indent?.value) ||
|
|
42
|
+
properties.indent.value < 0 ||
|
|
43
|
+
properties.indent.value > 1000 ||
|
|
44
|
+
typeof properties.log?.value !== 'string' ||
|
|
45
|
+
properties.log.value.length > MAX_REMOTE_LOG_MESSAGE_LENGTH ||
|
|
46
|
+
booleanKeys.some(key => properties[key] != null && typeof properties[key].value !== 'boolean')) {
|
|
47
|
+
return invalidRemoteLog();
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
when: properties.when.value,
|
|
51
|
+
indent: properties.indent.value,
|
|
52
|
+
log: properties.log.value,
|
|
53
|
+
...Object.fromEntries(booleanKeys.filter(key => properties[key] != null).map(key => [key, properties[key].value]))
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
return { logs };
|
|
57
|
+
}
|
|
8
58
|
/**
|
|
9
59
|
* `StorageClient` implements the `WalletStorageProvider` interface which allows it to
|
|
10
60
|
* serve as a BRC-100 wallet's active storage.
|
|
@@ -15,7 +65,12 @@ const BinaryJson_1 = require("./BinaryJson");
|
|
|
15
65
|
* The `AuthFetch` component is used to secure and authenticate the requests to the remote server.
|
|
16
66
|
*
|
|
17
67
|
* `AuthFetch` is initialized with a BRC-100 wallet which establishes the identity of
|
|
18
|
-
* the party making requests of the remote service.
|
|
68
|
+
* the party making requests of the remote service. Responses must complete mutual
|
|
69
|
+
* authentication. By default, the first authenticated server identity is trusted for
|
|
70
|
+
* this client instance; callers can instead supply `serverIdentityKey` as an
|
|
71
|
+
* independently validated pin. The distinct storage-provider identity advertised by
|
|
72
|
+
* the authenticated `makeAvailable` response is authoritative by default; callers
|
|
73
|
+
* can independently pin it with `storageIdentityKey`.
|
|
19
74
|
*
|
|
20
75
|
* For details of the API implemented, follow the "See also" link for the `WalletStorageProvider` interface.
|
|
21
76
|
*/
|
|
@@ -36,7 +91,7 @@ class StorageClient extends StorageClientBase_1.StorageClientBase {
|
|
|
36
91
|
const loggerState = this.startRpcLogging(method, params);
|
|
37
92
|
const { logger } = loggerState;
|
|
38
93
|
try {
|
|
39
|
-
const id = this.
|
|
94
|
+
const id = this.nextRequestId();
|
|
40
95
|
const body = {
|
|
41
96
|
jsonrpc: '2.0',
|
|
42
97
|
method,
|
|
@@ -47,7 +102,7 @@ class StorageClient extends StorageClientBase_1.StorageClientBase {
|
|
|
47
102
|
const requestBody = await this.traceRpcStep('wallet.storage.request.serialize', rpcSpan, () => (0, BinaryJson_1.stringifyJsonRpc)(body, requestUsesBinary), { 'rpc.encoding': requestUsesBinary ? 'binary-json' : 'json' });
|
|
48
103
|
let response;
|
|
49
104
|
try {
|
|
50
|
-
response = await this.traceRpcStep('wallet.storage.http', rpcSpan, async () => await this.
|
|
105
|
+
response = await this.traceRpcStep('wallet.storage.http', rpcSpan, async () => await this.authenticatedFetch(this.endpointUrl, {
|
|
51
106
|
method: 'POST',
|
|
52
107
|
headers: {
|
|
53
108
|
'Content-Type': 'application/json',
|
|
@@ -74,18 +129,20 @@ class StorageClient extends StorageClientBase_1.StorageClientBase {
|
|
|
74
129
|
'http.response.status_code': response.status,
|
|
75
130
|
'rpc.encoding': responseUsesBinary ? 'binary-json' : 'json'
|
|
76
131
|
});
|
|
77
|
-
const json = await this.traceRpcStep('wallet.storage.response.parse', rpcSpan, () => (0, BinaryJson_1.parseJsonRpc)(responseText, responseUsesBinary), {
|
|
132
|
+
const json = await this.traceRpcStep('wallet.storage.response.parse', rpcSpan, () => (0, BinaryJson_1.validateJsonRpcResponse)((0, BinaryJson_1.parseJsonRpc)(responseText, responseUsesBinary), id), {
|
|
78
133
|
'rpc.encoding': responseUsesBinary ? 'binary-json' : 'json',
|
|
79
134
|
'response.size_bytes': responseText.length
|
|
80
135
|
});
|
|
81
|
-
if (json
|
|
136
|
+
if ('error' in json) {
|
|
82
137
|
(0, WalletLogger_1.logWalletError)(json.error, logger, 'error from remote service');
|
|
83
138
|
const werr = (0, WalletErrorFromJson_1.WalletErrorFromJson)(json.error);
|
|
84
139
|
throw werr;
|
|
85
140
|
}
|
|
86
141
|
if (logger != null) {
|
|
87
142
|
// merge log data from request processing
|
|
88
|
-
|
|
143
|
+
const remoteLog = validatedRemoteLog(json.result);
|
|
144
|
+
if (remoteLog != null)
|
|
145
|
+
logger.merge?.(remoteLog);
|
|
89
146
|
logger.groupEnd();
|
|
90
147
|
}
|
|
91
148
|
rpcSpan?.end({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageClient.js","sourceRoot":"","sources":["../../../../src/storage/remoting/StorageClient.ts"],"names":[],"mappings":";;;AACA,uEAAmE;AACnE,qDAAmD;AACnD,2DAAkF;AAClF,
|
|
1
|
+
{"version":3,"file":"StorageClient.js","sourceRoot":"","sources":["../../../../src/storage/remoting/StorageClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { type ValidCreateActionArgs, type ValidListActionsArgs, type ValidListCertificatesArgs, type ValidListOutputsArgs } from '@bsv/sdk/wallet/validationHelpers';
|
|
1
2
|
import { type SyncTransferCapabilities } from './SyncTransfer';
|
|
2
|
-
import { AbortActionArgs, AbortActionResult, InternalizeActionArgs, ListActionsResult, ListCertificatesResult, ListOutputsResult, RelinquishCertificateArgs, RelinquishOutputArgs, WalletInterface, AuthFetch,
|
|
3
|
+
import { AbortActionArgs, AbortActionResult, InternalizeActionArgs, ListActionsResult, ListCertificatesResult, ListOutputsResult, RelinquishCertificateArgs, RelinquishOutputArgs, WalletInterface, AuthFetch, Telemetry, TelemetryConfig, TelemetrySpan } from '@bsv/sdk';
|
|
3
4
|
import { AuthId, FindCertificatesArgs, FindOutputBasketsArgs, FindOutputsArgs, FindProvenTxReqsArgs, ProcessSyncChunkResult, RequestSyncChunkArgs, StorageCreateActionResult, StorageInternalizeActionResult, StorageProcessActionArgs, StorageProcessActionResults, StoragePrepareNoSendExpiryResult, StorageActivateNoSendExpiryArgs, StorageActivateNoSendExpiryResult, StorageArmNoSendExpiryArgs, SyncChunk, SyncCheckpoint, UpdateProvenTxReqWithNewProvenTxArgs, UpdateProvenTxReqWithNewProvenTxResult, WalletStorageProvider } from '../../sdk/WalletStorage.interfaces';
|
|
4
5
|
import { AbortActionBatchResult, ActionBatchManifest, BeginActionBatchArgs, BeginActionBatchResult, CommitActionBatchByDigestArgs, CommitActionBatchResult, ExtendActionBatchArgs, ExtendActionBatchResult, PrepareActionBatchCommitResult, PutActionBatchBlobArgs, PutActionBatchPackArgs, ResumeActionBatchArgs, ResumeActionBatchResult, RenewActionBatchResult, StorageCapabilities } from '../../sdk/ActionBatch.interfaces';
|
|
5
6
|
import { TableSettings } from '../schema/tables/TableSettings';
|
|
@@ -28,6 +29,18 @@ export interface StorageClientOptions {
|
|
|
28
29
|
* supplied. Request parameters and response payloads are never emitted.
|
|
29
30
|
*/
|
|
30
31
|
telemetry?: TelemetryConfig;
|
|
32
|
+
/**
|
|
33
|
+
* Optional independently validated server identity key. When omitted, the
|
|
34
|
+
* first authenticated response is authoritative for this client instance.
|
|
35
|
+
*/
|
|
36
|
+
serverIdentityKey?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Optional independently validated storage-provider identity. The storage
|
|
39
|
+
* and authenticated server may use distinct keys. When omitted, the value
|
|
40
|
+
* advertised in the first authenticated `makeAvailable` response is
|
|
41
|
+
* authoritative for this client instance.
|
|
42
|
+
*/
|
|
43
|
+
storageIdentityKey?: string;
|
|
31
44
|
}
|
|
32
45
|
/**
|
|
33
46
|
* Abstract base class shared by `StorageClient` and `StorageMobile`.
|
|
@@ -43,6 +56,8 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
43
56
|
protected serverSupportsBinary: boolean;
|
|
44
57
|
protected readonly binaryRequests: boolean;
|
|
45
58
|
protected readonly telemetry: Telemetry;
|
|
59
|
+
private authenticatedServerIdentityKey?;
|
|
60
|
+
private readonly expectedStorageIdentityKey?;
|
|
46
61
|
private syncChunkRoughSizeLimit?;
|
|
47
62
|
/** Optional progress/cancellation hook for a bounded transfer; never receives wallet contents. */
|
|
48
63
|
onSyncTransferProgress?: (progress: {
|
|
@@ -52,6 +67,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
52
67
|
}) => void;
|
|
53
68
|
settings?: RemoteStorageSettings;
|
|
54
69
|
constructor(wallet: WalletInterface, endpointUrl: string, options?: StorageClientOptions);
|
|
70
|
+
protected authenticatedFetch(url: string, config: Parameters<AuthFetch['fetch']>[1]): Promise<Response>;
|
|
55
71
|
protected traceRpcCall<T>(method: string, params: unknown[], callback: (span?: TelemetrySpan) => Promise<T>): Promise<T>;
|
|
56
72
|
protected traceRpcStep<T>(name: string, parent: TelemetrySpan | undefined, callback: (span?: TelemetrySpan) => Promise<T> | T, attributes?: Readonly<Record<string, unknown>>): Promise<T>;
|
|
57
73
|
/**
|
|
@@ -68,6 +84,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
68
84
|
* @param params The array of parameters to pass to the method in order.
|
|
69
85
|
*/
|
|
70
86
|
protected abstract rpcCall<T>(method: string, params: unknown[]): Promise<T>;
|
|
87
|
+
protected nextRequestId(): number;
|
|
71
88
|
/**
|
|
72
89
|
* @returns true once storage `TableSettings` have been retreived from remote storage.
|
|
73
90
|
*/
|
|
@@ -121,7 +138,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
121
138
|
* @param args Validated extension of original wallet `createAction` arguments.
|
|
122
139
|
* @returns `StorageCreateActionResults` supporting additional wallet processing to yield `createAction` results.
|
|
123
140
|
*/
|
|
124
|
-
createAction(auth: AuthId, args:
|
|
141
|
+
createAction(auth: AuthId, args: ValidCreateActionArgs): Promise<StorageCreateActionResult>;
|
|
125
142
|
/**
|
|
126
143
|
* Storage level processing for wallet `createAction` and `signAction`.
|
|
127
144
|
*
|
|
@@ -133,7 +150,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
133
150
|
* @returns `StorageProcessActionResults` supporting final wallet processing to yield `createAction` or `signAction` results.
|
|
134
151
|
*/
|
|
135
152
|
processAction(auth: AuthId, args: StorageProcessActionArgs): Promise<StorageProcessActionResults>;
|
|
136
|
-
prepareNoSendExpiry(auth: AuthId, args:
|
|
153
|
+
prepareNoSendExpiry(auth: AuthId, args: ValidCreateActionArgs): Promise<StoragePrepareNoSendExpiryResult>;
|
|
137
154
|
activateNoSendExpiry(auth: AuthId, args: StorageActivateNoSendExpiryArgs): Promise<StorageActivateNoSendExpiryResult>;
|
|
138
155
|
armNoSendExpiry(auth: AuthId, args: StorageArmNoSendExpiryArgs): Promise<void>;
|
|
139
156
|
getCapabilities(): Promise<StorageCapabilities>;
|
|
@@ -194,7 +211,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
194
211
|
* @param args Validated extension of original wallet `listActions` arguments.
|
|
195
212
|
* @returns `listActions` results.
|
|
196
213
|
*/
|
|
197
|
-
listActions(auth: AuthId, vargs:
|
|
214
|
+
listActions(auth: AuthId, vargs: ValidListActionsArgs): Promise<ListActionsResult>;
|
|
198
215
|
/**
|
|
199
216
|
* Storage level processing for wallet `listOutputs`.
|
|
200
217
|
* @param auth Identifies client by identity key and the storage identity key of their currently active storage.
|
|
@@ -202,7 +219,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
202
219
|
* @param args Validated extension of original wallet `listOutputs` arguments.
|
|
203
220
|
* @returns `listOutputs` results.
|
|
204
221
|
*/
|
|
205
|
-
listOutputs(auth: AuthId, vargs:
|
|
222
|
+
listOutputs(auth: AuthId, vargs: ValidListOutputsArgs): Promise<ListOutputsResult>;
|
|
206
223
|
/**
|
|
207
224
|
* Storage level processing for wallet `listCertificates`.
|
|
208
225
|
* @param auth Identifies client by identity key and the storage identity key of their currently active storage.
|
|
@@ -210,7 +227,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
210
227
|
* @param args Validated extension of original wallet `listCertificates` arguments.
|
|
211
228
|
* @returns `listCertificates` results.
|
|
212
229
|
*/
|
|
213
|
-
listCertificates(auth: AuthId, vargs:
|
|
230
|
+
listCertificates(auth: AuthId, vargs: ValidListCertificatesArgs): Promise<ListCertificatesResult>;
|
|
214
231
|
/**
|
|
215
232
|
* Find user certificates, optionally with fields.
|
|
216
233
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageClientBase.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/StorageClientBase.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"StorageClientBase.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/StorageClientBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,12 @@ const minimumSyncChunkRoughSize = 64 * 1024;
|
|
|
14
14
|
function isSyncChunkResponseTooLarge(error) {
|
|
15
15
|
return error instanceof Error && /WalletStorageClient rpcCall: network error 413(?:\s|$)/.test(error.message);
|
|
16
16
|
}
|
|
17
|
+
function hasControlCharacter(value) {
|
|
18
|
+
return Array.from(value).some(character => {
|
|
19
|
+
const point = character.codePointAt(0);
|
|
20
|
+
return point <= 0x1f || (point >= 0x7f && point <= 0x9f);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
17
23
|
function isLoopbackStorageHost(hostname) {
|
|
18
24
|
const normalized = hostname.toLowerCase();
|
|
19
25
|
return (normalized === 'localhost' ||
|
|
@@ -22,6 +28,12 @@ function isLoopbackStorageHost(hostname) {
|
|
|
22
28
|
normalized.endsWith('.localhost'));
|
|
23
29
|
}
|
|
24
30
|
function normalizeStorageEndpointUrl(endpointUrl) {
|
|
31
|
+
if (typeof endpointUrl !== 'string' ||
|
|
32
|
+
endpointUrl !== endpointUrl.trim() ||
|
|
33
|
+
endpointUrl.length > 8192 ||
|
|
34
|
+
hasControlCharacter(endpointUrl)) {
|
|
35
|
+
throw new TypeError('Wallet storage endpoint must be an exact bounded URL.');
|
|
36
|
+
}
|
|
25
37
|
let parsed;
|
|
26
38
|
try {
|
|
27
39
|
parsed = new URL(endpointUrl);
|
|
@@ -40,6 +52,76 @@ function normalizeStorageEndpointUrl(endpointUrl) {
|
|
|
40
52
|
// boundary; canonicalizing here would be an unrelated observable change.
|
|
41
53
|
return endpointUrl;
|
|
42
54
|
}
|
|
55
|
+
function normalizeServerIdentityKey(value) {
|
|
56
|
+
if (typeof value !== 'string' || !/^(?:02|03)[0-9a-f]{64}$/.test(value)) {
|
|
57
|
+
throw new TypeError('Wallet storage server identity key must be canonical.');
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
if (sdk_1.PublicKey.fromString(value).toString() !== value)
|
|
61
|
+
throw new Error();
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
throw new TypeError('Wallet storage server identity key must be canonical.');
|
|
65
|
+
}
|
|
66
|
+
return value;
|
|
67
|
+
}
|
|
68
|
+
function normalizeStorageIdentityKey(value) {
|
|
69
|
+
// Despite the historical "key" name, existing stores use both public keys
|
|
70
|
+
// and opaque identifiers, including legacy 32-byte and current 33-byte
|
|
71
|
+
// random values. Preserve that contract while enforcing the schema's
|
|
72
|
+
// bounded, non-control identifier domain.
|
|
73
|
+
if (typeof value !== 'string' || value.length < 1 || value.length > 130 || hasControlCharacter(value)) {
|
|
74
|
+
throw new TypeError('Wallet storage identity must be an exact bounded identifier.');
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
function validateRemoteStorageSettings(value) {
|
|
79
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value)) {
|
|
80
|
+
throw new Error('Wallet storage returned invalid settings.');
|
|
81
|
+
}
|
|
82
|
+
const prototype = Object.getPrototypeOf(value);
|
|
83
|
+
const properties = Object.getOwnPropertyDescriptors(value);
|
|
84
|
+
if ((prototype !== Object.prototype && prototype !== null) ||
|
|
85
|
+
Object.getOwnPropertySymbols(value).length !== 0 ||
|
|
86
|
+
Object.values(properties).some(property => property.get != null || property.set != null)) {
|
|
87
|
+
throw new Error('Wallet storage returned invalid settings.');
|
|
88
|
+
}
|
|
89
|
+
normalizeStorageIdentityKey(properties.storageIdentityKey?.value);
|
|
90
|
+
const storageName = properties.storageName?.value;
|
|
91
|
+
if (storageName !== undefined &&
|
|
92
|
+
(typeof storageName !== 'string' ||
|
|
93
|
+
storageName.length < 1 ||
|
|
94
|
+
storageName.length > 255 ||
|
|
95
|
+
hasControlCharacter(storageName))) {
|
|
96
|
+
throw new Error('Wallet storage returned invalid settings.');
|
|
97
|
+
}
|
|
98
|
+
const chain = properties.chain?.value;
|
|
99
|
+
if (chain !== undefined && (typeof chain !== 'string' || !['main', 'test', 'stn', 'ttn', 'tstn'].includes(chain))) {
|
|
100
|
+
throw new Error('Wallet storage returned invalid settings.');
|
|
101
|
+
}
|
|
102
|
+
const dbtype = properties.dbtype?.value;
|
|
103
|
+
if (dbtype !== undefined && (typeof dbtype !== 'string' || !['SQLite', 'MySQL', 'IndexedDB'].includes(dbtype))) {
|
|
104
|
+
throw new Error('Wallet storage returned invalid settings.');
|
|
105
|
+
}
|
|
106
|
+
const maxOutputScript = properties.maxOutputScript?.value;
|
|
107
|
+
if (maxOutputScript !== undefined &&
|
|
108
|
+
(!Number.isSafeInteger(maxOutputScript) || maxOutputScript < 0 || maxOutputScript > 16 * 1024 * 1024)) {
|
|
109
|
+
throw new Error('Wallet storage returned invalid settings.');
|
|
110
|
+
}
|
|
111
|
+
for (const key of ['created_at', 'updated_at']) {
|
|
112
|
+
const date = properties[key]?.value;
|
|
113
|
+
if (date !== undefined && !(date instanceof Date) && !(typeof date === 'string' || typeof date === 'number')) {
|
|
114
|
+
throw new Error('Wallet storage returned invalid settings.');
|
|
115
|
+
}
|
|
116
|
+
if (date !== undefined && !Number.isFinite(new Date(date).getTime())) {
|
|
117
|
+
throw new Error('Wallet storage returned invalid settings.');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (properties.syncCheckpointVersion != null && properties.syncCheckpointVersion.value !== 1) {
|
|
121
|
+
throw new Error('Wallet storage returned invalid settings.');
|
|
122
|
+
}
|
|
123
|
+
return value;
|
|
124
|
+
}
|
|
43
125
|
/**
|
|
44
126
|
* Abstract base class shared by `StorageClient` and `StorageMobile`.
|
|
45
127
|
*
|
|
@@ -54,6 +136,8 @@ class StorageClientBase {
|
|
|
54
136
|
serverSupportsBinary = false;
|
|
55
137
|
binaryRequests;
|
|
56
138
|
telemetry;
|
|
139
|
+
authenticatedServerIdentityKey;
|
|
140
|
+
expectedStorageIdentityKey;
|
|
57
141
|
syncChunkRoughSizeLimit;
|
|
58
142
|
/** Optional progress/cancellation hook for a bounded transfer; never receives wallet contents. */
|
|
59
143
|
onSyncTransferProgress;
|
|
@@ -64,6 +148,23 @@ class StorageClientBase {
|
|
|
64
148
|
this.endpointUrl = normalizeStorageEndpointUrl(endpointUrl);
|
|
65
149
|
this.binaryRequests = options.binaryRequests === true;
|
|
66
150
|
this.telemetry = new sdk_1.Telemetry(options.telemetry);
|
|
151
|
+
this.authenticatedServerIdentityKey =
|
|
152
|
+
options.serverIdentityKey === undefined ? undefined : normalizeServerIdentityKey(options.serverIdentityKey);
|
|
153
|
+
this.expectedStorageIdentityKey =
|
|
154
|
+
options.storageIdentityKey === undefined ? undefined : normalizeStorageIdentityKey(options.storageIdentityKey);
|
|
155
|
+
}
|
|
156
|
+
async authenticatedFetch(url, config) {
|
|
157
|
+
const response = await this.authClient.fetch(url, config);
|
|
158
|
+
const authenticatedIdentityKey = response.headers.get('x-bsv-auth-identity-key');
|
|
159
|
+
if (authenticatedIdentityKey == null) {
|
|
160
|
+
throw new Error('Wallet storage response was not mutually authenticated.');
|
|
161
|
+
}
|
|
162
|
+
const identityKey = normalizeServerIdentityKey(authenticatedIdentityKey);
|
|
163
|
+
if (this.authenticatedServerIdentityKey !== undefined && identityKey !== this.authenticatedServerIdentityKey) {
|
|
164
|
+
throw new Error('Wallet storage authenticated server identity changed.');
|
|
165
|
+
}
|
|
166
|
+
this.authenticatedServerIdentityKey = identityKey;
|
|
167
|
+
return response;
|
|
67
168
|
}
|
|
68
169
|
async traceRpcCall(method, params, callback) {
|
|
69
170
|
if (!this.telemetry.enabled)
|
|
@@ -99,6 +200,12 @@ class StorageClientBase {
|
|
|
99
200
|
isStorageProvider() {
|
|
100
201
|
return false;
|
|
101
202
|
}
|
|
203
|
+
nextRequestId() {
|
|
204
|
+
if (!Number.isSafeInteger(this.nextId) || this.nextId < 1) {
|
|
205
|
+
throw new Error('Wallet storage request identifier space exhausted.');
|
|
206
|
+
}
|
|
207
|
+
return this.nextId++;
|
|
208
|
+
}
|
|
102
209
|
/**
|
|
103
210
|
* @returns true once storage `TableSettings` have been retreived from remote storage.
|
|
104
211
|
*/
|
|
@@ -122,7 +229,15 @@ class StorageClientBase {
|
|
|
122
229
|
* @returns remote storage `TableSettings`
|
|
123
230
|
*/
|
|
124
231
|
async makeAvailable() {
|
|
125
|
-
this.settings
|
|
232
|
+
if (this.settings != null)
|
|
233
|
+
return this.settings;
|
|
234
|
+
const settings = validateRemoteStorageSettings(await this.rpcCall('makeAvailable', []));
|
|
235
|
+
const descriptor = Object.getOwnPropertyDescriptor(settings, 'storageIdentityKey');
|
|
236
|
+
const storageIdentityKey = normalizeStorageIdentityKey(descriptor != null && 'value' in descriptor ? descriptor.value : undefined);
|
|
237
|
+
if (this.expectedStorageIdentityKey !== undefined && storageIdentityKey !== this.expectedStorageIdentityKey) {
|
|
238
|
+
throw new Error('Wallet storage settings identity does not match the configured storage identity.');
|
|
239
|
+
}
|
|
240
|
+
this.settings = settings;
|
|
126
241
|
return this.settings;
|
|
127
242
|
}
|
|
128
243
|
/// ///////////////////////////////////////////////////////////////////////////
|
|
@@ -194,7 +309,7 @@ class StorageClientBase {
|
|
|
194
309
|
else {
|
|
195
310
|
let source;
|
|
196
311
|
try {
|
|
197
|
-
source = sdk_1.Beef.
|
|
312
|
+
source = sdk_1.Beef.fromBinaryStrict(args.inputBEEF);
|
|
198
313
|
}
|
|
199
314
|
catch {
|
|
200
315
|
// Forward malformed proof data so the server preserves its established
|
|
@@ -258,14 +373,13 @@ class StorageClientBase {
|
|
|
258
373
|
const baseUrl = this.endpointUrl.endsWith('/') ? this.endpointUrl.slice(0, -1) : this.endpointUrl;
|
|
259
374
|
const url = `${baseUrl}/action-batch/${encodeURIComponent(args.batchId)}/blob/${encodeURIComponent(args.digest)}`;
|
|
260
375
|
const bytes = args.bytes instanceof Uint8Array ? args.bytes : Uint8Array.from(args.bytes);
|
|
261
|
-
const response = await this.
|
|
376
|
+
const response = await this.authenticatedFetch(url, {
|
|
262
377
|
method: 'PUT',
|
|
263
378
|
headers: { 'Content-Type': 'application/octet-stream' },
|
|
264
379
|
body: bytes
|
|
265
380
|
});
|
|
266
381
|
if (!response.ok) {
|
|
267
|
-
|
|
268
|
-
throw new Error(`WalletStorageClient putActionBatchBlob: network error ${response.status} ${response.statusText}: ${details}`);
|
|
382
|
+
throw new Error(`WalletStorageClient putActionBatchBlob: network error ${response.status}`);
|
|
269
383
|
}
|
|
270
384
|
}
|
|
271
385
|
async putActionBatchPack(_auth, args) {
|
|
@@ -280,7 +394,7 @@ class StorageClientBase {
|
|
|
280
394
|
}
|
|
281
395
|
const baseUrl = this.endpointUrl.endsWith('/') ? this.endpointUrl.slice(0, -1) : this.endpointUrl;
|
|
282
396
|
const url = `${baseUrl}/action-batch/${encodeURIComponent(args.batchId)}/pack`;
|
|
283
|
-
const response = await this.
|
|
397
|
+
const response = await this.authenticatedFetch(url, {
|
|
284
398
|
method: 'PUT',
|
|
285
399
|
headers: {
|
|
286
400
|
'Content-Type': 'application/octet-stream',
|
|
@@ -289,8 +403,7 @@ class StorageClientBase {
|
|
|
289
403
|
body
|
|
290
404
|
});
|
|
291
405
|
if (!response.ok) {
|
|
292
|
-
|
|
293
|
-
throw new Error(`WalletStorageClient putActionBatchPack: network error ${response.status} ${response.statusText}: ${details}`);
|
|
406
|
+
throw new Error(`WalletStorageClient putActionBatchPack: network error ${response.status}`);
|
|
294
407
|
}
|
|
295
408
|
}
|
|
296
409
|
async commitActionBatch(auth, manifest) {
|
|
@@ -556,7 +669,7 @@ class StorageClientBase {
|
|
|
556
669
|
return (this.binaryRequests || transferPart) && this.serverSupportsBinary;
|
|
557
670
|
}
|
|
558
671
|
rpcResponseError(response) {
|
|
559
|
-
const error = new Error(`WalletStorageClient rpcCall: network error ${response.status}
|
|
672
|
+
const error = new Error(`WalletStorageClient rpcCall: network error ${response.status}`);
|
|
560
673
|
if (response.status !== 429)
|
|
561
674
|
return error;
|
|
562
675
|
const after = response.headers.get('retry-after');
|
|
@@ -580,7 +693,8 @@ class StorageClientBase {
|
|
|
580
693
|
}
|
|
581
694
|
syncTransferRetryDelay(error, attempt) {
|
|
582
695
|
const message = error instanceof Error ? error.message : '';
|
|
583
|
-
if (attempt >= 2 ||
|
|
696
|
+
if (attempt >= 2 ||
|
|
697
|
+
!/network error (?:429|502|503|504)|timed out waiting for authenticated response|fetch failed|Failed to fetch/i.test(message))
|
|
584
698
|
return undefined;
|
|
585
699
|
if (!/network error 429/.test(message))
|
|
586
700
|
return 250 * 2 ** attempt;
|
|
@@ -612,16 +726,23 @@ class StorageClientBase {
|
|
|
612
726
|
}
|
|
613
727
|
}
|
|
614
728
|
async downloadSyncTransfer(args, capabilities, suppliedManifest) {
|
|
615
|
-
const manifest = (0, SyncTransfer_1.validateSyncTransferManifest)(suppliedManifest ??
|
|
729
|
+
const manifest = (0, SyncTransfer_1.validateSyncTransferManifest)(suppliedManifest ??
|
|
730
|
+
(await this.transferPartCall('beginReadSyncTransfer', {
|
|
731
|
+
identityKey: args.identityKey,
|
|
732
|
+
args
|
|
733
|
+
})), capabilities);
|
|
616
734
|
try {
|
|
617
|
-
const chunk = await (0, SyncTransfer_1.receiveSyncTransfer)(manifest, async (offset) => {
|
|
735
|
+
const chunk = (await (0, SyncTransfer_1.receiveSyncTransfer)(manifest, async (offset) => {
|
|
618
736
|
this.onSyncTransferProgress?.({ direction: 'read', bytes: offset, totalBytes: manifest.totalBytes });
|
|
619
737
|
return await this.transferPartCall('readSyncTransferPart', {
|
|
620
|
-
identityKey: args.identityKey,
|
|
738
|
+
identityKey: args.identityKey,
|
|
739
|
+
transferId: manifest.transferId,
|
|
740
|
+
offset
|
|
621
741
|
});
|
|
622
|
-
});
|
|
742
|
+
}));
|
|
623
743
|
this.onSyncTransferProgress?.({ direction: 'read', bytes: manifest.totalBytes, totalBytes: manifest.totalBytes });
|
|
624
|
-
if (chunk?.userIdentityKey !== args.identityKey ||
|
|
744
|
+
if (chunk?.userIdentityKey !== args.identityKey ||
|
|
745
|
+
chunk.fromStorageIdentityKey !== args.fromStorageIdentityKey ||
|
|
625
746
|
chunk.toStorageIdentityKey !== args.toStorageIdentityKey)
|
|
626
747
|
throw new Error('Wallet sync transfer identities changed');
|
|
627
748
|
return (0, entityValidationHelpers_1.validateSyncChunkEntities)(chunk);
|
|
@@ -635,8 +756,11 @@ class StorageClientBase {
|
|
|
635
756
|
throw new RangeError('Wallet sync record exceeds the negotiated transfer size limit');
|
|
636
757
|
const response = await this.transferPartCall('beginWriteSyncTransfer', { identityKey, digest: (0, SyncTransfer_1.syncTransferDigest)(bytes), totalBytes: bytes.length });
|
|
637
758
|
const manifest = (0, SyncTransfer_1.validateSyncTransferManifest)(response, capabilities);
|
|
638
|
-
if (manifest.digest !== (0, SyncTransfer_1.syncTransferDigest)(bytes) ||
|
|
639
|
-
|
|
759
|
+
if (manifest.digest !== (0, SyncTransfer_1.syncTransferDigest)(bytes) ||
|
|
760
|
+
manifest.totalBytes !== bytes.length ||
|
|
761
|
+
!Number.isSafeInteger(response.receivedBytes) ||
|
|
762
|
+
response.receivedBytes < 0 ||
|
|
763
|
+
response.receivedBytes > bytes.length ||
|
|
640
764
|
(response.receivedBytes !== bytes.length && response.receivedBytes % manifest.partBytes !== 0)) {
|
|
641
765
|
throw new Error('Invalid wallet sync upload checkpoint');
|
|
642
766
|
}
|
|
@@ -644,14 +768,19 @@ class StorageClientBase {
|
|
|
644
768
|
this.onSyncTransferProgress?.({ direction: 'write', bytes: offset, totalBytes: bytes.length });
|
|
645
769
|
const part = bytes.subarray(offset, offset + manifest.partBytes);
|
|
646
770
|
const next = await this.transferPartCall('writeSyncTransferPart', {
|
|
647
|
-
identityKey,
|
|
771
|
+
identityKey,
|
|
772
|
+
transferId: manifest.transferId,
|
|
773
|
+
offset,
|
|
774
|
+
bytes: part
|
|
648
775
|
});
|
|
649
776
|
if (next !== offset + part.length)
|
|
650
777
|
throw new Error('Invalid wallet sync upload acknowledgement');
|
|
651
778
|
offset = next;
|
|
652
779
|
}
|
|
653
780
|
// An uncertain commit is surfaced. The next sync starts from the writer's durable checkpoint.
|
|
654
|
-
const result = await this.rpcCall('commitSyncTransfer', [
|
|
781
|
+
const result = await this.rpcCall('commitSyncTransfer', [
|
|
782
|
+
{ identityKey, transferId: manifest.transferId }
|
|
783
|
+
]);
|
|
655
784
|
await this.releaseSyncTransfer(identityKey, manifest.transferId);
|
|
656
785
|
return result;
|
|
657
786
|
}
|