@bsv/wallet-toolbox 2.12.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 +350 -1
- package/README.md +556 -6
- 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/sync-transfer.md +144 -0
- 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 +23 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +49 -3
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.js +2 -2
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +5 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +276 -110
- 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 +6 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +70 -42
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +8 -4
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +185 -92
- 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 +237 -138
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +7 -1
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +17 -42
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +2 -0
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +63 -38
- 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 +9 -7
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +71 -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/getSyncChunk.d.ts.map +1 -1
- package/out/src/storage/methods/getSyncChunk.js +42 -11
- package/out/src/storage/methods/getSyncChunk.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 +10 -2
- package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
- package/out/src/storage/methods/validateSyncProof.js +27 -4
- 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 +94 -8
- 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 +26 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
- 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 +65 -8
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +53 -10
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +304 -9
- 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 +13 -11
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +10 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +206 -21
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
- package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
- package/out/src/storage/remoting/SyncTransfer.js +153 -0
- package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
- package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
- package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
- package/out/src/storage/remoting/syncChunkBinary.d.ts +4 -0
- package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
- package/out/src/storage/remoting/syncChunkBinary.js +38 -0
- package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts +3 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +89 -2
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/StorageIdbSchema.d.ts +1 -0
- package/out/src/storage/schema/StorageIdbSchema.d.ts.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 +95 -41
- 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.d.ts +3 -1
- package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +7 -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/storage/sync/SyncPageBudget.d.ts +8 -0
- package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
- package/out/src/storage/sync/SyncPageBudget.js +24 -0
- package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
- package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
- package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
- package/out/src/storage/sync/syncCheckpoint.js +49 -0
- package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
- 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 +6 -5
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { type ValidCreateActionArgs, type ValidListActionsArgs, type ValidListCertificatesArgs, type ValidListOutputsArgs } from '@bsv/sdk/wallet/validationHelpers';
|
|
2
|
+
import { type SyncTransferCapabilities } from './SyncTransfer';
|
|
3
|
+
import { AbortActionArgs, AbortActionResult, InternalizeActionArgs, ListActionsResult, ListCertificatesResult, ListOutputsResult, RelinquishCertificateArgs, RelinquishOutputArgs, WalletInterface, AuthFetch, Telemetry, TelemetryConfig, TelemetrySpan } from '@bsv/sdk';
|
|
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';
|
|
3
5
|
import { AbortActionBatchResult, ActionBatchManifest, BeginActionBatchArgs, BeginActionBatchResult, CommitActionBatchByDigestArgs, CommitActionBatchResult, ExtendActionBatchArgs, ExtendActionBatchResult, PrepareActionBatchCommitResult, PutActionBatchBlobArgs, PutActionBatchPackArgs, ResumeActionBatchArgs, ResumeActionBatchResult, RenewActionBatchResult, StorageCapabilities } from '../../sdk/ActionBatch.interfaces';
|
|
4
6
|
import { TableSettings } from '../schema/tables/TableSettings';
|
|
5
7
|
import { WalletServices } from '../../sdk/WalletServices.interfaces';
|
|
@@ -10,6 +12,11 @@ import { TableOutputBasket } from '../schema/tables/TableOutputBasket';
|
|
|
10
12
|
import { TableOutput } from '../schema/tables/TableOutput';
|
|
11
13
|
import { TableProvenTxReq } from '../schema/tables/TableProvenTxReq';
|
|
12
14
|
import { EntityTimeStamp } from '../../sdk/types';
|
|
15
|
+
type RemoteStorageSettings = TableSettings & {
|
|
16
|
+
/** Runtime-only RPC advertisement, not a persisted settings-table column. */
|
|
17
|
+
syncCheckpointVersion?: 1;
|
|
18
|
+
syncTransfer?: SyncTransferCapabilities;
|
|
19
|
+
};
|
|
13
20
|
export interface StorageClientOptions {
|
|
14
21
|
/**
|
|
15
22
|
* Send compact tagged binary request values after the server advertises
|
|
@@ -22,6 +29,18 @@ export interface StorageClientOptions {
|
|
|
22
29
|
* supplied. Request parameters and response payloads are never emitted.
|
|
23
30
|
*/
|
|
24
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;
|
|
25
44
|
}
|
|
26
45
|
/**
|
|
27
46
|
* Abstract base class shared by `StorageClient` and `StorageMobile`.
|
|
@@ -37,8 +56,18 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
37
56
|
protected serverSupportsBinary: boolean;
|
|
38
57
|
protected readonly binaryRequests: boolean;
|
|
39
58
|
protected readonly telemetry: Telemetry;
|
|
40
|
-
|
|
59
|
+
private authenticatedServerIdentityKey?;
|
|
60
|
+
private readonly expectedStorageIdentityKey?;
|
|
61
|
+
private syncChunkRoughSizeLimit?;
|
|
62
|
+
/** Optional progress/cancellation hook for a bounded transfer; never receives wallet contents. */
|
|
63
|
+
onSyncTransferProgress?: (progress: {
|
|
64
|
+
direction: 'read' | 'write';
|
|
65
|
+
bytes: number;
|
|
66
|
+
totalBytes: number;
|
|
67
|
+
}) => void;
|
|
68
|
+
settings?: RemoteStorageSettings;
|
|
41
69
|
constructor(wallet: WalletInterface, endpointUrl: string, options?: StorageClientOptions);
|
|
70
|
+
protected authenticatedFetch(url: string, config: Parameters<AuthFetch['fetch']>[1]): Promise<Response>;
|
|
42
71
|
protected traceRpcCall<T>(method: string, params: unknown[], callback: (span?: TelemetrySpan) => Promise<T>): Promise<T>;
|
|
43
72
|
protected traceRpcStep<T>(name: string, parent: TelemetrySpan | undefined, callback: (span?: TelemetrySpan) => Promise<T> | T, attributes?: Readonly<Record<string, unknown>>): Promise<T>;
|
|
44
73
|
/**
|
|
@@ -55,6 +84,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
55
84
|
* @param params The array of parameters to pass to the method in order.
|
|
56
85
|
*/
|
|
57
86
|
protected abstract rpcCall<T>(method: string, params: unknown[]): Promise<T>;
|
|
87
|
+
protected nextRequestId(): number;
|
|
58
88
|
/**
|
|
59
89
|
* @returns true once storage `TableSettings` have been retreived from remote storage.
|
|
60
90
|
*/
|
|
@@ -63,13 +93,13 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
63
93
|
* @returns remote storage `TableSettings` if they have been retreived by `makeAvailable`.
|
|
64
94
|
* @throws WERR_INVALID_OPERATION if `makeAvailable` has not yet been called.
|
|
65
95
|
*/
|
|
66
|
-
getSettings():
|
|
96
|
+
getSettings(): RemoteStorageSettings;
|
|
67
97
|
/**
|
|
68
98
|
* Must be called prior to making use of storage.
|
|
69
99
|
* Retreives `TableSettings` from remote storage provider.
|
|
70
100
|
* @returns remote storage `TableSettings`
|
|
71
101
|
*/
|
|
72
|
-
makeAvailable(): Promise<
|
|
102
|
+
makeAvailable(): Promise<RemoteStorageSettings>;
|
|
73
103
|
/**
|
|
74
104
|
* Called to cleanup resources when no further use of this object will occur.
|
|
75
105
|
*/
|
|
@@ -108,7 +138,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
108
138
|
* @param args Validated extension of original wallet `createAction` arguments.
|
|
109
139
|
* @returns `StorageCreateActionResults` supporting additional wallet processing to yield `createAction` results.
|
|
110
140
|
*/
|
|
111
|
-
createAction(auth: AuthId, args:
|
|
141
|
+
createAction(auth: AuthId, args: ValidCreateActionArgs): Promise<StorageCreateActionResult>;
|
|
112
142
|
/**
|
|
113
143
|
* Storage level processing for wallet `createAction` and `signAction`.
|
|
114
144
|
*
|
|
@@ -120,7 +150,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
120
150
|
* @returns `StorageProcessActionResults` supporting final wallet processing to yield `createAction` or `signAction` results.
|
|
121
151
|
*/
|
|
122
152
|
processAction(auth: AuthId, args: StorageProcessActionArgs): Promise<StorageProcessActionResults>;
|
|
123
|
-
prepareNoSendExpiry(auth: AuthId, args:
|
|
153
|
+
prepareNoSendExpiry(auth: AuthId, args: ValidCreateActionArgs): Promise<StoragePrepareNoSendExpiryResult>;
|
|
124
154
|
activateNoSendExpiry(auth: AuthId, args: StorageActivateNoSendExpiryArgs): Promise<StorageActivateNoSendExpiryResult>;
|
|
125
155
|
armNoSendExpiry(auth: AuthId, args: StorageArmNoSendExpiryArgs): Promise<void>;
|
|
126
156
|
getCapabilities(): Promise<StorageCapabilities>;
|
|
@@ -152,6 +182,8 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
152
182
|
user: TableUser;
|
|
153
183
|
isNew: boolean;
|
|
154
184
|
}>;
|
|
185
|
+
/** Read compact progress only when the provider advertises support. */
|
|
186
|
+
getSyncCheckpoint(auth: AuthId, storageIdentityKey: string, storageName: string): Promise<SyncCheckpoint | undefined>;
|
|
155
187
|
/**
|
|
156
188
|
* Used to both find and insert a `TableSyncState` record for the user to track wallet data replication across storage providers.
|
|
157
189
|
* @param auth Identifies client by identity key and the storage identity key of their currently active storage.
|
|
@@ -179,7 +211,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
179
211
|
* @param args Validated extension of original wallet `listActions` arguments.
|
|
180
212
|
* @returns `listActions` results.
|
|
181
213
|
*/
|
|
182
|
-
listActions(auth: AuthId, vargs:
|
|
214
|
+
listActions(auth: AuthId, vargs: ValidListActionsArgs): Promise<ListActionsResult>;
|
|
183
215
|
/**
|
|
184
216
|
* Storage level processing for wallet `listOutputs`.
|
|
185
217
|
* @param auth Identifies client by identity key and the storage identity key of their currently active storage.
|
|
@@ -187,7 +219,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
187
219
|
* @param args Validated extension of original wallet `listOutputs` arguments.
|
|
188
220
|
* @returns `listOutputs` results.
|
|
189
221
|
*/
|
|
190
|
-
listOutputs(auth: AuthId, vargs:
|
|
222
|
+
listOutputs(auth: AuthId, vargs: ValidListOutputsArgs): Promise<ListOutputsResult>;
|
|
191
223
|
/**
|
|
192
224
|
* Storage level processing for wallet `listCertificates`.
|
|
193
225
|
* @param auth Identifies client by identity key and the storage identity key of their currently active storage.
|
|
@@ -195,7 +227,7 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
195
227
|
* @param args Validated extension of original wallet `listCertificates` arguments.
|
|
196
228
|
* @returns `listCertificates` results.
|
|
197
229
|
*/
|
|
198
|
-
listCertificates(auth: AuthId, vargs:
|
|
230
|
+
listCertificates(auth: AuthId, vargs: ValidListCertificatesArgs): Promise<ListCertificatesResult>;
|
|
199
231
|
/**
|
|
200
232
|
* Find user certificates, optionally with fields.
|
|
201
233
|
*
|
|
@@ -282,6 +314,16 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
282
314
|
* @returns the next "chunk" of replication data
|
|
283
315
|
*/
|
|
284
316
|
getSyncChunk(args: RequestSyncChunkArgs): Promise<SyncChunk>;
|
|
317
|
+
private readSyncChunkResponse;
|
|
318
|
+
protected requestUsesBinary(method: string): boolean;
|
|
319
|
+
protected rpcResponseError(response: Response): Error;
|
|
320
|
+
private smallerSyncRequest;
|
|
321
|
+
private syncTransferCapabilities;
|
|
322
|
+
private syncTransferRetryDelay;
|
|
323
|
+
private transferPartCall;
|
|
324
|
+
private releaseSyncTransfer;
|
|
325
|
+
private downloadSyncTransfer;
|
|
326
|
+
private uploadSyncTransfer;
|
|
285
327
|
/**
|
|
286
328
|
* Handles the data received when a new transaction proof is found in response to an outstanding request for proof data:
|
|
287
329
|
*
|
|
@@ -319,4 +361,5 @@ export declare abstract class StorageClientBase implements WalletStorageProvider
|
|
|
319
361
|
*/
|
|
320
362
|
validateEntities<T extends EntityTimeStamp>(entities: T[], dateFields?: string[]): T[];
|
|
321
363
|
}
|
|
364
|
+
export {};
|
|
322
365
|
//# sourceMappingURL=StorageClientBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageClientBase.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/StorageClientBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EAEjB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EACf,SAAS,
|
|
1
|
+
{"version":3,"file":"StorageClientBase.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/StorageClientBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StorageClientBase = void 0;
|
|
4
|
+
const SyncTransfer_1 = require("./SyncTransfer");
|
|
5
|
+
const syncChunkBinary_1 = require("./syncChunkBinary");
|
|
6
|
+
const syncCheckpoint_1 = require("../sync/syncCheckpoint");
|
|
4
7
|
const sdk_1 = require("@bsv/sdk");
|
|
5
8
|
const WERR_errors_1 = require("../../sdk/WERR_errors");
|
|
6
9
|
const entityValidationHelpers_1 = require("./entityValidationHelpers");
|
|
7
10
|
const actionBatchPack_1 = require("../../utility/actionBatchPack");
|
|
8
11
|
const beefForTxids_1 = require("../../utility/beefForTxids");
|
|
12
|
+
const syncChunkResponseRetryLimit = 4;
|
|
13
|
+
const minimumSyncChunkRoughSize = 64 * 1024;
|
|
14
|
+
function isSyncChunkResponseTooLarge(error) {
|
|
15
|
+
return error instanceof Error && /WalletStorageClient rpcCall: network error 413(?:\s|$)/.test(error.message);
|
|
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
|
+
}
|
|
9
23
|
function isLoopbackStorageHost(hostname) {
|
|
10
24
|
const normalized = hostname.toLowerCase();
|
|
11
25
|
return (normalized === 'localhost' ||
|
|
@@ -14,6 +28,12 @@ function isLoopbackStorageHost(hostname) {
|
|
|
14
28
|
normalized.endsWith('.localhost'));
|
|
15
29
|
}
|
|
16
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
|
+
}
|
|
17
37
|
let parsed;
|
|
18
38
|
try {
|
|
19
39
|
parsed = new URL(endpointUrl);
|
|
@@ -32,6 +52,76 @@ function normalizeStorageEndpointUrl(endpointUrl) {
|
|
|
32
52
|
// boundary; canonicalizing here would be an unrelated observable change.
|
|
33
53
|
return endpointUrl;
|
|
34
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
|
+
}
|
|
35
125
|
/**
|
|
36
126
|
* Abstract base class shared by `StorageClient` and `StorageMobile`.
|
|
37
127
|
*
|
|
@@ -46,6 +136,11 @@ class StorageClientBase {
|
|
|
46
136
|
serverSupportsBinary = false;
|
|
47
137
|
binaryRequests;
|
|
48
138
|
telemetry;
|
|
139
|
+
authenticatedServerIdentityKey;
|
|
140
|
+
expectedStorageIdentityKey;
|
|
141
|
+
syncChunkRoughSizeLimit;
|
|
142
|
+
/** Optional progress/cancellation hook for a bounded transfer; never receives wallet contents. */
|
|
143
|
+
onSyncTransferProgress;
|
|
49
144
|
// Track ephemeral (in-memory) "settings" if you wish to align with isAvailable() checks
|
|
50
145
|
settings;
|
|
51
146
|
constructor(wallet, endpointUrl, options = {}) {
|
|
@@ -53,6 +148,23 @@ class StorageClientBase {
|
|
|
53
148
|
this.endpointUrl = normalizeStorageEndpointUrl(endpointUrl);
|
|
54
149
|
this.binaryRequests = options.binaryRequests === true;
|
|
55
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;
|
|
56
168
|
}
|
|
57
169
|
async traceRpcCall(method, params, callback) {
|
|
58
170
|
if (!this.telemetry.enabled)
|
|
@@ -88,6 +200,12 @@ class StorageClientBase {
|
|
|
88
200
|
isStorageProvider() {
|
|
89
201
|
return false;
|
|
90
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
|
+
}
|
|
91
209
|
/**
|
|
92
210
|
* @returns true once storage `TableSettings` have been retreived from remote storage.
|
|
93
211
|
*/
|
|
@@ -111,7 +229,15 @@ class StorageClientBase {
|
|
|
111
229
|
* @returns remote storage `TableSettings`
|
|
112
230
|
*/
|
|
113
231
|
async makeAvailable() {
|
|
114
|
-
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;
|
|
115
241
|
return this.settings;
|
|
116
242
|
}
|
|
117
243
|
/// ///////////////////////////////////////////////////////////////////////////
|
|
@@ -183,7 +309,7 @@ class StorageClientBase {
|
|
|
183
309
|
else {
|
|
184
310
|
let source;
|
|
185
311
|
try {
|
|
186
|
-
source = sdk_1.Beef.
|
|
312
|
+
source = sdk_1.Beef.fromBinaryStrict(args.inputBEEF);
|
|
187
313
|
}
|
|
188
314
|
catch {
|
|
189
315
|
// Forward malformed proof data so the server preserves its established
|
|
@@ -247,14 +373,13 @@ class StorageClientBase {
|
|
|
247
373
|
const baseUrl = this.endpointUrl.endsWith('/') ? this.endpointUrl.slice(0, -1) : this.endpointUrl;
|
|
248
374
|
const url = `${baseUrl}/action-batch/${encodeURIComponent(args.batchId)}/blob/${encodeURIComponent(args.digest)}`;
|
|
249
375
|
const bytes = args.bytes instanceof Uint8Array ? args.bytes : Uint8Array.from(args.bytes);
|
|
250
|
-
const response = await this.
|
|
376
|
+
const response = await this.authenticatedFetch(url, {
|
|
251
377
|
method: 'PUT',
|
|
252
378
|
headers: { 'Content-Type': 'application/octet-stream' },
|
|
253
379
|
body: bytes
|
|
254
380
|
});
|
|
255
381
|
if (!response.ok) {
|
|
256
|
-
|
|
257
|
-
throw new Error(`WalletStorageClient putActionBatchBlob: network error ${response.status} ${response.statusText}: ${details}`);
|
|
382
|
+
throw new Error(`WalletStorageClient putActionBatchBlob: network error ${response.status}`);
|
|
258
383
|
}
|
|
259
384
|
}
|
|
260
385
|
async putActionBatchPack(_auth, args) {
|
|
@@ -269,7 +394,7 @@ class StorageClientBase {
|
|
|
269
394
|
}
|
|
270
395
|
const baseUrl = this.endpointUrl.endsWith('/') ? this.endpointUrl.slice(0, -1) : this.endpointUrl;
|
|
271
396
|
const url = `${baseUrl}/action-batch/${encodeURIComponent(args.batchId)}/pack`;
|
|
272
|
-
const response = await this.
|
|
397
|
+
const response = await this.authenticatedFetch(url, {
|
|
273
398
|
method: 'PUT',
|
|
274
399
|
headers: {
|
|
275
400
|
'Content-Type': 'application/octet-stream',
|
|
@@ -278,8 +403,7 @@ class StorageClientBase {
|
|
|
278
403
|
body
|
|
279
404
|
});
|
|
280
405
|
if (!response.ok) {
|
|
281
|
-
|
|
282
|
-
throw new Error(`WalletStorageClient putActionBatchPack: network error ${response.status} ${response.statusText}: ${details}`);
|
|
406
|
+
throw new Error(`WalletStorageClient putActionBatchPack: network error ${response.status}`);
|
|
283
407
|
}
|
|
284
408
|
}
|
|
285
409
|
async commitActionBatch(auth, manifest) {
|
|
@@ -310,6 +434,15 @@ class StorageClientBase {
|
|
|
310
434
|
async findOrInsertUser(identityKey) {
|
|
311
435
|
return await this.rpcCall('findOrInsertUser', [identityKey]);
|
|
312
436
|
}
|
|
437
|
+
/** Read compact progress only when the provider advertises support. */
|
|
438
|
+
async getSyncCheckpoint(auth, storageIdentityKey, storageName) {
|
|
439
|
+
// Settings are already exchanged with legacy providers. Only an advertised
|
|
440
|
+
// capability enables this RPC; transport and authentication failures propagate.
|
|
441
|
+
if ((await this.makeAvailable()).syncCheckpointVersion !== 1)
|
|
442
|
+
return undefined;
|
|
443
|
+
const checkpoint = await this.rpcCall('getSyncCheckpoint', [auth, storageIdentityKey, storageName]);
|
|
444
|
+
return (0, syncCheckpoint_1.validateSyncCheckpoint)(checkpoint);
|
|
445
|
+
}
|
|
313
446
|
/**
|
|
314
447
|
* Used to both find and insert a `TableSyncState` record for the user to track wallet data replication across storage providers.
|
|
315
448
|
* @param auth Identifies client by identity key and the storage identity key of their currently active storage.
|
|
@@ -473,7 +606,17 @@ class StorageClientBase {
|
|
|
473
606
|
* @returns whether processing is done, counts of inserts and udpates, and related progress tracking properties.
|
|
474
607
|
*/
|
|
475
608
|
async processSyncChunk(args, chunk) {
|
|
476
|
-
const
|
|
609
|
+
const wireChunk = this.binaryRequests && this.serverSupportsBinary ? (0, syncChunkBinary_1.syncChunkBinary)(chunk) : chunk;
|
|
610
|
+
const capabilities = this.syncTransferCapabilities();
|
|
611
|
+
// Keep ordinary pages on the existing RPC. Only an oversized encoded payload uses staging.
|
|
612
|
+
const bytes = capabilities == null ? undefined : (0, SyncTransfer_1.encodeSyncTransfer)({ args, chunk: (0, syncChunkBinary_1.syncChunkBinary)(chunk) });
|
|
613
|
+
// Legacy numeric byte arrays can require four JSON characters per byte.
|
|
614
|
+
const expansion = this.binaryRequests && this.serverSupportsBinary ? 1 : 4;
|
|
615
|
+
const r = bytes != null && bytes.length * expansion > (capabilities.inlineBytes ?? 6 * 1024 * 1024)
|
|
616
|
+
? await this.uploadSyncTransfer(args.identityKey, bytes, capabilities)
|
|
617
|
+
: await this.rpcCall('processSyncChunk', [args, wireChunk]);
|
|
618
|
+
if (r.nextCheckpoint != null)
|
|
619
|
+
r.nextCheckpoint = (0, syncCheckpoint_1.validateSyncCheckpoint)(r.nextCheckpoint, args);
|
|
477
620
|
return r;
|
|
478
621
|
}
|
|
479
622
|
/**
|
|
@@ -486,9 +629,161 @@ class StorageClientBase {
|
|
|
486
629
|
* @returns the next "chunk" of replication data
|
|
487
630
|
*/
|
|
488
631
|
async getSyncChunk(args) {
|
|
632
|
+
const transfer = this.syncTransferCapabilities();
|
|
633
|
+
let requestArgs = { ...args, ...(transfer == null ? {} : { syncTransferVersion: 1 }) };
|
|
634
|
+
if (this.syncChunkRoughSizeLimit != null) {
|
|
635
|
+
requestArgs.maxRoughSize = Math.min(requestArgs.maxRoughSize, this.syncChunkRoughSizeLimit);
|
|
636
|
+
}
|
|
637
|
+
for (let retries = 0;; retries++) {
|
|
638
|
+
try {
|
|
639
|
+
return await this.readSyncChunkResponse(requestArgs, args.maxRoughSize, transfer);
|
|
640
|
+
}
|
|
641
|
+
catch (error) {
|
|
642
|
+
if (!isSyncChunkResponseTooLarge(error))
|
|
643
|
+
throw error;
|
|
644
|
+
const smaller = this.smallerSyncRequest(requestArgs, retries);
|
|
645
|
+
if (smaller != null) {
|
|
646
|
+
requestArgs = smaller;
|
|
647
|
+
continue;
|
|
648
|
+
}
|
|
649
|
+
if (transfer == null)
|
|
650
|
+
throw error;
|
|
651
|
+
return await this.downloadSyncTransfer(requestArgs, transfer);
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
async readSyncChunkResponse(args, originalMaxRoughSize, transfer) {
|
|
489
656
|
const r = await this.rpcCall('getSyncChunk', [args]);
|
|
657
|
+
if ('syncTransfer' in r) {
|
|
658
|
+
if (transfer == null || Object.keys(r).length !== 1)
|
|
659
|
+
throw new Error('Unexpected wallet sync transfer response');
|
|
660
|
+
return await this.downloadSyncTransfer(args, transfer, r.syncTransfer);
|
|
661
|
+
}
|
|
662
|
+
if (args.maxRoughSize < originalMaxRoughSize) {
|
|
663
|
+
this.syncChunkRoughSizeLimit = args.maxRoughSize;
|
|
664
|
+
}
|
|
490
665
|
return (0, entityValidationHelpers_1.validateSyncChunkEntities)(r);
|
|
491
666
|
}
|
|
667
|
+
requestUsesBinary(method) {
|
|
668
|
+
const transferPart = method === 'writeSyncTransferPart' && this.settings?.syncTransfer?.version === 1;
|
|
669
|
+
return (this.binaryRequests || transferPart) && this.serverSupportsBinary;
|
|
670
|
+
}
|
|
671
|
+
rpcResponseError(response) {
|
|
672
|
+
const error = new Error(`WalletStorageClient rpcCall: network error ${response.status}`);
|
|
673
|
+
if (response.status !== 429)
|
|
674
|
+
return error;
|
|
675
|
+
const after = response.headers.get('retry-after');
|
|
676
|
+
let delay = 1000;
|
|
677
|
+
if (after != null)
|
|
678
|
+
delay = /^\d+$/.test(after) ? Number(after) * 1000 : Date.parse(after) - Date.now();
|
|
679
|
+
return Object.assign(error, { retryAfterMs: delay });
|
|
680
|
+
}
|
|
681
|
+
smallerSyncRequest(args, retries) {
|
|
682
|
+
const nextRoughSize = Math.max(minimumSyncChunkRoughSize, Math.floor(args.maxRoughSize / 2));
|
|
683
|
+
if (retries < syncChunkResponseRetryLimit && nextRoughSize < args.maxRoughSize) {
|
|
684
|
+
return { ...args, maxRoughSize: nextRoughSize };
|
|
685
|
+
}
|
|
686
|
+
if (args.maxItems === 1)
|
|
687
|
+
return undefined;
|
|
688
|
+
return { ...args, maxItems: 1, maxRoughSize: minimumSyncChunkRoughSize };
|
|
689
|
+
}
|
|
690
|
+
syncTransferCapabilities() {
|
|
691
|
+
const value = this.settings?.syncTransfer;
|
|
692
|
+
return value == null ? undefined : (0, SyncTransfer_1.validateSyncTransferCapabilities)(value);
|
|
693
|
+
}
|
|
694
|
+
syncTransferRetryDelay(error, attempt) {
|
|
695
|
+
const message = error instanceof Error ? error.message : '';
|
|
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))
|
|
698
|
+
return undefined;
|
|
699
|
+
if (!/network error 429/.test(message))
|
|
700
|
+
return 250 * 2 ** attempt;
|
|
701
|
+
const cause = error instanceof Error && error.cause instanceof Error ? error.cause : error;
|
|
702
|
+
const retryAfter = cause != null && typeof cause === 'object' ? Reflect.get(cause, 'retryAfterMs') : undefined;
|
|
703
|
+
const delay = retryAfter ?? 1000;
|
|
704
|
+
return Number.isFinite(delay) && delay >= 0 && delay <= 60_000 ? delay : undefined;
|
|
705
|
+
}
|
|
706
|
+
async transferPartCall(method, input) {
|
|
707
|
+
for (let attempt = 0;; attempt++) {
|
|
708
|
+
try {
|
|
709
|
+
return await this.rpcCall(method, [input]);
|
|
710
|
+
}
|
|
711
|
+
catch (error) {
|
|
712
|
+
// Only immutable reads and identical staged part writes may be retried here. Never commit.
|
|
713
|
+
const delay = this.syncTransferRetryDelay(error, attempt);
|
|
714
|
+
if (delay == null)
|
|
715
|
+
throw error;
|
|
716
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
async releaseSyncTransfer(identityKey, transferId) {
|
|
721
|
+
try {
|
|
722
|
+
await this.rpcCall('releaseSyncTransfer', [{ identityKey, transferId }]);
|
|
723
|
+
}
|
|
724
|
+
catch {
|
|
725
|
+
// Expiry reclaims staging if the connection is gone. Wallet records are never removed.
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
async downloadSyncTransfer(args, capabilities, suppliedManifest) {
|
|
729
|
+
const manifest = (0, SyncTransfer_1.validateSyncTransferManifest)(suppliedManifest ??
|
|
730
|
+
(await this.transferPartCall('beginReadSyncTransfer', {
|
|
731
|
+
identityKey: args.identityKey,
|
|
732
|
+
args
|
|
733
|
+
})), capabilities);
|
|
734
|
+
try {
|
|
735
|
+
const chunk = (await (0, SyncTransfer_1.receiveSyncTransfer)(manifest, async (offset) => {
|
|
736
|
+
this.onSyncTransferProgress?.({ direction: 'read', bytes: offset, totalBytes: manifest.totalBytes });
|
|
737
|
+
return await this.transferPartCall('readSyncTransferPart', {
|
|
738
|
+
identityKey: args.identityKey,
|
|
739
|
+
transferId: manifest.transferId,
|
|
740
|
+
offset
|
|
741
|
+
});
|
|
742
|
+
}));
|
|
743
|
+
this.onSyncTransferProgress?.({ direction: 'read', bytes: manifest.totalBytes, totalBytes: manifest.totalBytes });
|
|
744
|
+
if (chunk?.userIdentityKey !== args.identityKey ||
|
|
745
|
+
chunk.fromStorageIdentityKey !== args.fromStorageIdentityKey ||
|
|
746
|
+
chunk.toStorageIdentityKey !== args.toStorageIdentityKey)
|
|
747
|
+
throw new Error('Wallet sync transfer identities changed');
|
|
748
|
+
return (0, entityValidationHelpers_1.validateSyncChunkEntities)(chunk);
|
|
749
|
+
}
|
|
750
|
+
finally {
|
|
751
|
+
await this.releaseSyncTransfer(args.identityKey, manifest.transferId);
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
async uploadSyncTransfer(identityKey, bytes, capabilities) {
|
|
755
|
+
if (bytes.length > capabilities.maxBytes)
|
|
756
|
+
throw new RangeError('Wallet sync record exceeds the negotiated transfer size limit');
|
|
757
|
+
const response = await this.transferPartCall('beginWriteSyncTransfer', { identityKey, digest: (0, SyncTransfer_1.syncTransferDigest)(bytes), totalBytes: bytes.length });
|
|
758
|
+
const manifest = (0, SyncTransfer_1.validateSyncTransferManifest)(response, capabilities);
|
|
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 ||
|
|
764
|
+
(response.receivedBytes !== bytes.length && response.receivedBytes % manifest.partBytes !== 0)) {
|
|
765
|
+
throw new Error('Invalid wallet sync upload checkpoint');
|
|
766
|
+
}
|
|
767
|
+
for (let offset = response.receivedBytes; offset < bytes.length;) {
|
|
768
|
+
this.onSyncTransferProgress?.({ direction: 'write', bytes: offset, totalBytes: bytes.length });
|
|
769
|
+
const part = bytes.subarray(offset, offset + manifest.partBytes);
|
|
770
|
+
const next = await this.transferPartCall('writeSyncTransferPart', {
|
|
771
|
+
identityKey,
|
|
772
|
+
transferId: manifest.transferId,
|
|
773
|
+
offset,
|
|
774
|
+
bytes: part
|
|
775
|
+
});
|
|
776
|
+
if (next !== offset + part.length)
|
|
777
|
+
throw new Error('Invalid wallet sync upload acknowledgement');
|
|
778
|
+
offset = next;
|
|
779
|
+
}
|
|
780
|
+
// An uncertain commit is surfaced. The next sync starts from the writer's durable checkpoint.
|
|
781
|
+
const result = await this.rpcCall('commitSyncTransfer', [
|
|
782
|
+
{ identityKey, transferId: manifest.transferId }
|
|
783
|
+
]);
|
|
784
|
+
await this.releaseSyncTransfer(identityKey, manifest.transferId);
|
|
785
|
+
return result;
|
|
786
|
+
}
|
|
492
787
|
/**
|
|
493
788
|
* Handles the data received when a new transaction proof is found in response to an outstanding request for proof data:
|
|
494
789
|
*
|