@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
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeTxid = normalizeTxid;
|
|
4
|
+
exports.snapshotMerklePathResult = snapshotMerklePathResult;
|
|
5
|
+
exports.copyMerklePath = copyMerklePath;
|
|
6
|
+
exports.copyValidatedBlockHeader = copyValidatedBlockHeader;
|
|
7
|
+
exports.validateMerklePathResult = validateMerklePathResult;
|
|
8
|
+
exports.authenticateMerklePathResult = authenticateMerklePathResult;
|
|
9
|
+
const sdk_1 = require("@bsv/sdk");
|
|
10
|
+
const WERR_errors_1 = require("../sdk/WERR_errors");
|
|
11
|
+
const WalletError_1 = require("../sdk/WalletError");
|
|
12
|
+
const blockHeaderUtilities_1 = require("./chaintracker/chaintracks/util/blockHeaderUtilities");
|
|
13
|
+
const HEX_32_BYTES = /^[0-9a-fA-F]{64}$/;
|
|
14
|
+
const MAX_BLOCK_HEIGHT = 0x7fffffff;
|
|
15
|
+
const MAX_PATH_LEVELS = 32;
|
|
16
|
+
const MAX_PATH_LEAVES = 4096;
|
|
17
|
+
const MAX_LEAF_OFFSET = 0x7fffffff;
|
|
18
|
+
const MAX_PROOF_CANDIDATES = 8;
|
|
19
|
+
const MAX_PROOF_NOTES = 64;
|
|
20
|
+
const MAX_NOTE_PROPERTIES = 32;
|
|
21
|
+
function invalid(name, requirement) {
|
|
22
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, requirement);
|
|
23
|
+
}
|
|
24
|
+
function normalizeTxid(value, name = 'txid') {
|
|
25
|
+
if (typeof value !== 'string' || !HEX_32_BYTES.test(value)) {
|
|
26
|
+
invalid(name, 'exactly 32 hexadecimal bytes');
|
|
27
|
+
}
|
|
28
|
+
return value.toLowerCase();
|
|
29
|
+
}
|
|
30
|
+
function requirePlainDataRecord(value, name) {
|
|
31
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value)) {
|
|
32
|
+
invalid(name, 'an accessor-free data object');
|
|
33
|
+
}
|
|
34
|
+
const prototype = Object.getPrototypeOf(value);
|
|
35
|
+
if (prototype !== Object.prototype && prototype !== null && prototype !== sdk_1.MerklePath.prototype) {
|
|
36
|
+
invalid(name, 'an accessor-free data object');
|
|
37
|
+
}
|
|
38
|
+
if (Object.getOwnPropertySymbols(value).length !== 0) {
|
|
39
|
+
invalid(name, 'an accessor-free data object without symbol properties');
|
|
40
|
+
}
|
|
41
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
42
|
+
if (Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
|
|
43
|
+
invalid(name, 'accessor-free data properties');
|
|
44
|
+
}
|
|
45
|
+
return descriptors;
|
|
46
|
+
}
|
|
47
|
+
function ownValue(descriptors, property, name) {
|
|
48
|
+
const descriptor = descriptors[property];
|
|
49
|
+
if (descriptor == null || !('value' in descriptor))
|
|
50
|
+
invalid(name, `an own ${property} data property`);
|
|
51
|
+
return descriptor.value;
|
|
52
|
+
}
|
|
53
|
+
function optionalOwnValue(descriptors, property) {
|
|
54
|
+
const descriptor = descriptors[property];
|
|
55
|
+
return descriptor != null && 'value' in descriptor ? descriptor.value : undefined;
|
|
56
|
+
}
|
|
57
|
+
function requireDenseArray(value, name, maximum) {
|
|
58
|
+
if (!Array.isArray(value) || value.length > maximum)
|
|
59
|
+
invalid(name, `a dense array of at most ${maximum} items`);
|
|
60
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
61
|
+
if (Object.getOwnPropertySymbols(value).length !== 0)
|
|
62
|
+
invalid(name, 'an array without symbol properties');
|
|
63
|
+
if (Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
|
|
64
|
+
invalid(name, 'an accessor-free array');
|
|
65
|
+
}
|
|
66
|
+
const expectedKeys = new Set(['length', ...Array.from({ length: value.length }, (_, index) => String(index))]);
|
|
67
|
+
if (Object.keys(descriptors).some(key => !expectedKeys.has(key)) ||
|
|
68
|
+
expectedKeys.size !== Object.keys(descriptors).length) {
|
|
69
|
+
invalid(name, 'a dense array without extra properties');
|
|
70
|
+
}
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
function requireInteger(value, name, maximum) {
|
|
74
|
+
if (!Number.isSafeInteger(value) || value < 0 || value > maximum) {
|
|
75
|
+
invalid(name, `an integer from 0 through ${maximum}`);
|
|
76
|
+
}
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
function boundedText(value, name, maximum) {
|
|
80
|
+
if (typeof value !== 'string' || value.length > maximum || /\p{Cc}/u.test(value)) {
|
|
81
|
+
invalid(name, `at most ${maximum} characters without control characters`);
|
|
82
|
+
}
|
|
83
|
+
return value;
|
|
84
|
+
}
|
|
85
|
+
function copyProofNotes(value) {
|
|
86
|
+
if (value === undefined)
|
|
87
|
+
return undefined;
|
|
88
|
+
const notes = requireDenseArray(value, 'getMerklePath result.notes', MAX_PROOF_NOTES);
|
|
89
|
+
return notes.map((noteValue, index) => {
|
|
90
|
+
const name = `getMerklePath result.notes[${index}]`;
|
|
91
|
+
const descriptors = requirePlainDataRecord(noteValue, name);
|
|
92
|
+
const keys = Object.keys(descriptors);
|
|
93
|
+
if (keys.length > MAX_NOTE_PROPERTIES || keys.some(key => !/^[A-Za-z][A-Za-z0-9_]{0,63}$/.test(key))) {
|
|
94
|
+
invalid(name, `at most ${MAX_NOTE_PROPERTIES} bounded data properties`);
|
|
95
|
+
}
|
|
96
|
+
const note = {};
|
|
97
|
+
for (const key of keys) {
|
|
98
|
+
const value = ownValue(descriptors, key, name);
|
|
99
|
+
if (value === undefined || typeof value === 'boolean') {
|
|
100
|
+
note[key] = value;
|
|
101
|
+
}
|
|
102
|
+
else if (typeof value === 'number' && Number.isFinite(value) && Number.isSafeInteger(value)) {
|
|
103
|
+
note[key] = value;
|
|
104
|
+
}
|
|
105
|
+
else if (typeof value === 'string') {
|
|
106
|
+
note[key] = boundedText(value, `${name}.${key}`, key === 'what' || key === 'when' ? 128 : 512);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
invalid(`${name}.${key}`, 'a bounded string, safe integer, boolean, or undefined');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (typeof note.what !== 'string' || note.what.length === 0)
|
|
113
|
+
invalid(`${name}.what`, 'a nonempty bounded string');
|
|
114
|
+
return note;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Snapshot the provider envelope before inspecting proof availability or
|
|
119
|
+
* diagnostics. The optional legacy array mode is bounded for older custom
|
|
120
|
+
* WalletServices implementations; ordinary providers return one path.
|
|
121
|
+
*/
|
|
122
|
+
function snapshotMerklePathResult(value, allowLegacyArray = false, providerName) {
|
|
123
|
+
const descriptors = requirePlainDataRecord(value, 'getMerklePath result');
|
|
124
|
+
const allowed = new Set(['name', 'merklePath', 'header', 'error', 'notes']);
|
|
125
|
+
if (Object.keys(descriptors).some(key => !allowed.has(key))) {
|
|
126
|
+
invalid('getMerklePath result', 'only name, merklePath, header, error, and notes data properties');
|
|
127
|
+
}
|
|
128
|
+
const nameValue = providerName ?? optionalOwnValue(descriptors, 'name');
|
|
129
|
+
const name = nameValue === undefined ? undefined : boundedText(nameValue, 'getMerklePath result.name', 128);
|
|
130
|
+
const merklePathValue = optionalOwnValue(descriptors, 'merklePath');
|
|
131
|
+
let merklePath;
|
|
132
|
+
if (merklePathValue !== undefined) {
|
|
133
|
+
if (Array.isArray(merklePathValue)) {
|
|
134
|
+
if (!allowLegacyArray)
|
|
135
|
+
invalid('getMerklePath result.merklePath', 'one MerklePath object');
|
|
136
|
+
merklePath = requireDenseArray(merklePathValue, 'getMerklePath result.merklePath', MAX_PROOF_CANDIDATES);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
merklePath = merklePathValue;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const header = optionalOwnValue(descriptors, 'header');
|
|
143
|
+
const errorValue = optionalOwnValue(descriptors, 'error');
|
|
144
|
+
if (errorValue !== undefined && !(errorValue instanceof Error)) {
|
|
145
|
+
invalid('getMerklePath result.error', 'a WalletError or absent');
|
|
146
|
+
}
|
|
147
|
+
const error = errorValue === undefined ? undefined : WalletError_1.WalletError.fromUnknown(errorValue);
|
|
148
|
+
const notes = copyProofNotes(optionalOwnValue(descriptors, 'notes'));
|
|
149
|
+
return {
|
|
150
|
+
...(name !== undefined ? { name } : {}),
|
|
151
|
+
...(merklePath !== undefined ? { merklePath } : {}),
|
|
152
|
+
...(header !== undefined ? { header } : {}),
|
|
153
|
+
...(error !== undefined ? { error } : {}),
|
|
154
|
+
...(notes !== undefined ? { notes } : {})
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function copyMerklePath(txid, value) {
|
|
158
|
+
const descriptors = requirePlainDataRecord(value, 'merklePath');
|
|
159
|
+
const blockHeight = requireInteger(ownValue(descriptors, 'blockHeight', 'merklePath'), 'merklePath.blockHeight', MAX_BLOCK_HEIGHT);
|
|
160
|
+
const sourcePath = requireDenseArray(ownValue(descriptors, 'path', 'merklePath'), 'merklePath.path', MAX_PATH_LEVELS);
|
|
161
|
+
if (sourcePath.length === 0)
|
|
162
|
+
invalid('merklePath.path', 'at least one level');
|
|
163
|
+
let leafCount = 0;
|
|
164
|
+
const path = sourcePath.map((sourceLevel, levelIndex) => {
|
|
165
|
+
const level = requireDenseArray(sourceLevel, `merklePath.path[${levelIndex}]`, MAX_PATH_LEAVES);
|
|
166
|
+
leafCount += level.length;
|
|
167
|
+
if (leafCount > MAX_PATH_LEAVES)
|
|
168
|
+
invalid('merklePath.path', `at most ${MAX_PATH_LEAVES} total leaves`);
|
|
169
|
+
return level.map((sourceLeaf, leafIndex) => {
|
|
170
|
+
const name = `merklePath.path[${levelIndex}][${leafIndex}]`;
|
|
171
|
+
const leafDescriptors = requirePlainDataRecord(sourceLeaf, name);
|
|
172
|
+
const keys = Object.keys(leafDescriptors);
|
|
173
|
+
if (keys.length > 4 || keys.some(key => !['offset', 'hash', 'txid', 'duplicate'].includes(key))) {
|
|
174
|
+
invalid(name, 'only offset, hash, txid, and duplicate data properties');
|
|
175
|
+
}
|
|
176
|
+
const offset = requireInteger(ownValue(leafDescriptors, 'offset', name), `${name}.offset`, MAX_LEAF_OFFSET);
|
|
177
|
+
const hashValue = leafDescriptors.hash?.value;
|
|
178
|
+
const txidValue = leafDescriptors.txid?.value;
|
|
179
|
+
const duplicateValue = leafDescriptors.duplicate?.value;
|
|
180
|
+
if (txidValue !== undefined && txidValue !== true)
|
|
181
|
+
invalid(`${name}.txid`, 'true or absent');
|
|
182
|
+
if (duplicateValue !== undefined && duplicateValue !== true)
|
|
183
|
+
invalid(`${name}.duplicate`, 'true or absent');
|
|
184
|
+
if (duplicateValue === true) {
|
|
185
|
+
if (hashValue !== undefined || txidValue !== undefined) {
|
|
186
|
+
invalid(name, 'a duplicate marker without hash or txid properties');
|
|
187
|
+
}
|
|
188
|
+
return { offset, duplicate: true };
|
|
189
|
+
}
|
|
190
|
+
const hash = normalizeTxid(hashValue, `${name}.hash`);
|
|
191
|
+
return txidValue === true ? { offset, hash, txid: true } : { offset, hash };
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
let merklePath;
|
|
195
|
+
try {
|
|
196
|
+
merklePath = new sdk_1.MerklePath(blockHeight, path);
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
invalid('merklePath', 'a structurally consistent bounded Merkle path');
|
|
200
|
+
}
|
|
201
|
+
// A compound proof may mark several transaction leaves, while older proof
|
|
202
|
+
// providers may omit the optional `txid` marker entirely. Membership is
|
|
203
|
+
// bound by the requested hash and the root computation, not by that marker.
|
|
204
|
+
const leaf = merklePath.path[0].find(candidate => candidate.hash === txid);
|
|
205
|
+
if (leaf == null)
|
|
206
|
+
invalid('merklePath', 'a transaction leaf bound to the requested txid');
|
|
207
|
+
let root;
|
|
208
|
+
try {
|
|
209
|
+
root = normalizeTxid(merklePath.computeRoot(txid), 'merklePath root');
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
invalid('merklePath', 'a path that computes the requested transaction root');
|
|
213
|
+
}
|
|
214
|
+
return { merklePath, root, index: leaf.offset };
|
|
215
|
+
}
|
|
216
|
+
function copyValidatedBlockHeader(value, requireProofOfWork = false, requireHeaderFormat = true) {
|
|
217
|
+
const descriptors = requirePlainDataRecord(value, 'header');
|
|
218
|
+
const header = {
|
|
219
|
+
version: ownValue(descriptors, 'version', 'header'),
|
|
220
|
+
previousHash: ownValue(descriptors, 'previousHash', 'header'),
|
|
221
|
+
merkleRoot: ownValue(descriptors, 'merkleRoot', 'header'),
|
|
222
|
+
time: ownValue(descriptors, 'time', 'header'),
|
|
223
|
+
bits: ownValue(descriptors, 'bits', 'header'),
|
|
224
|
+
nonce: ownValue(descriptors, 'nonce', 'header'),
|
|
225
|
+
height: ownValue(descriptors, 'height', 'header'),
|
|
226
|
+
hash: ownValue(descriptors, 'hash', 'header')
|
|
227
|
+
};
|
|
228
|
+
if (!Number.isSafeInteger(header.height) || header.height < 0 || header.height > MAX_BLOCK_HEIGHT) {
|
|
229
|
+
invalid('header.height', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
|
|
230
|
+
}
|
|
231
|
+
const merkleRoot = normalizeTxid(header.merkleRoot, 'header.merkleRoot');
|
|
232
|
+
const hash = normalizeTxid(header.hash, 'header.hash');
|
|
233
|
+
if (requireHeaderFormat) {
|
|
234
|
+
try {
|
|
235
|
+
(0, blockHeaderUtilities_1.validateHeaderFormat)(header);
|
|
236
|
+
if (requireProofOfWork)
|
|
237
|
+
(0, blockHeaderUtilities_1.validateHeaderProofOfWork)(header);
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
invalid('header', requireProofOfWork ? 'a canonical proof-of-work-valid block header' : 'a canonical block header');
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
...header,
|
|
245
|
+
previousHash: typeof header.previousHash === 'string' ? header.previousHash.toLowerCase() : header.previousHash,
|
|
246
|
+
merkleRoot,
|
|
247
|
+
hash
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function validateMerklePathResult(requestedTxid, result, requireProofOfWork = false, requireHeaderFormat = true) {
|
|
251
|
+
const txid = normalizeTxid(requestedTxid);
|
|
252
|
+
const descriptors = requirePlainDataRecord(result, 'getMerklePath result');
|
|
253
|
+
const merklePathValue = ownValue(descriptors, 'merklePath', 'getMerklePath result');
|
|
254
|
+
const headerValue = ownValue(descriptors, 'header', 'getMerklePath result');
|
|
255
|
+
const proof = copyMerklePath(txid, merklePathValue);
|
|
256
|
+
const header = copyValidatedBlockHeader(headerValue, requireProofOfWork, requireHeaderFormat);
|
|
257
|
+
if (proof.merklePath.blockHeight !== header.height) {
|
|
258
|
+
invalid('merklePath.blockHeight', 'the authenticated header height');
|
|
259
|
+
}
|
|
260
|
+
if (proof.root !== header.merkleRoot) {
|
|
261
|
+
invalid('merklePath root', 'the authenticated header Merkle root');
|
|
262
|
+
}
|
|
263
|
+
return { ...proof, header };
|
|
264
|
+
}
|
|
265
|
+
async function authenticateMerklePathResult(requestedTxid, result, validator, requireProofOfWork = false, requireHeaderFormat = true) {
|
|
266
|
+
const validated = validateMerklePathResult(requestedTxid, result, requireProofOfWork, requireHeaderFormat);
|
|
267
|
+
if ((await validator.isValidRootForHeight(validated.root, validated.header.height)) !== true) {
|
|
268
|
+
invalid('merklePath root', 'a root authenticated by the configured chain tracker at the proof height');
|
|
269
|
+
}
|
|
270
|
+
return validated;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=validateMerklePathResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateMerklePathResult.js","sourceRoot":"","sources":["../../../src/services/validateMerklePathResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Beef } from '@bsv/sdk';
|
|
2
|
+
import { PostBeefResult, PostTxResultForTxid } from '../sdk/WalletServices.interfaces';
|
|
3
|
+
export declare const MAX_POST_BEEF_BYTES: number;
|
|
4
|
+
export declare const MAX_POST_BEEF_TXIDS = 1000;
|
|
5
|
+
export interface ValidatedPostBeefRequest {
|
|
6
|
+
beefBytes: number[];
|
|
7
|
+
txids: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare function normalizePostRawHex(value: unknown, maximumBytes: number, name?: string): string;
|
|
10
|
+
export declare function normalizePostTxids(value: unknown, name?: string, allowEmpty?: boolean): string[];
|
|
11
|
+
export declare function validatePostBeefResult(value: unknown, expectedTxids: string[], configuredProviderName: string, allowInternalTimeoutNote?: boolean): PostBeefResult;
|
|
12
|
+
export declare function validatePostTxResult(value: unknown, expectedTxid: string, configuredProviderName: string): PostTxResultForTxid;
|
|
13
|
+
export declare function validatePostTxResultOrServiceError(value: unknown, expectedTxid: string, configuredProviderName: string): PostTxResultForTxid;
|
|
14
|
+
export declare function validatePostBeefResultOrServiceError(value: unknown, expectedTxids: string[], configuredProviderName: string): PostBeefResult;
|
|
15
|
+
export declare function snapshotPostBeefRequest(beef: Beef, txids: string[]): ValidatedPostBeefRequest;
|
|
16
|
+
export declare function makePostBeefServiceError(providerName: string, txids: string[], what: 'postBeefServiceError' | 'postBeefServiceTimeout', timeoutMs?: number): PostBeefResult;
|
|
17
|
+
//# sourceMappingURL=validatePostBeefResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatePostBeefResult.d.ts","sourceRoot":"","sources":["../../../src/services/validatePostBeefResult.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAOtF,eAAO,MAAM,mBAAmB,QAAmB,CAAA;AACnD,eAAO,MAAM,mBAAmB,OAAiC,CAAA;AAgBjE,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,SAAU,GAAG,MAAM,CAYhG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,SAAU,EAAE,UAAU,UAAQ,GAAG,MAAM,EAAE,CAQ/F;AA+LD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EAAE,EACvB,sBAAsB,EAAE,MAAM,EAC9B,wBAAwB,UAAQ,GAC/B,cAAc,CAkChB;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,EACpB,sBAAsB,EAAE,MAAM,GAC7B,mBAAmB,CAarB;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,EACpB,sBAAsB,EAAE,MAAM,GAC7B,mBAAmB,CAMrB;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EAAE,EACvB,sBAAsB,EAAE,MAAM,GAC7B,cAAc,CAMhB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,wBAAwB,CAe7F;AAED,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,sBAAsB,GAAG,wBAAwB,EACvD,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,CAchB"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_POST_BEEF_TXIDS = exports.MAX_POST_BEEF_BYTES = void 0;
|
|
4
|
+
exports.normalizePostRawHex = normalizePostRawHex;
|
|
5
|
+
exports.normalizePostTxids = normalizePostTxids;
|
|
6
|
+
exports.validatePostBeefResult = validatePostBeefResult;
|
|
7
|
+
exports.validatePostTxResult = validatePostTxResult;
|
|
8
|
+
exports.validatePostTxResultOrServiceError = validatePostTxResultOrServiceError;
|
|
9
|
+
exports.validatePostBeefResultOrServiceError = validatePostBeefResultOrServiceError;
|
|
10
|
+
exports.snapshotPostBeefRequest = snapshotPostBeefRequest;
|
|
11
|
+
exports.makePostBeefServiceError = makePostBeefServiceError;
|
|
12
|
+
const validationHelpers_1 = require("@bsv/sdk/wallet/validationHelpers");
|
|
13
|
+
const sdk_1 = require("@bsv/sdk");
|
|
14
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
15
|
+
const WERR_errors_1 = require("../sdk/WERR_errors");
|
|
16
|
+
const WalletError_1 = require("../sdk/WalletError");
|
|
17
|
+
const utilityHelpers_1 = require("../utility/utilityHelpers");
|
|
18
|
+
const validateMerklePathResult_1 = require("./validateMerklePathResult");
|
|
19
|
+
exports.MAX_POST_BEEF_BYTES = 64 * 1024 * 1024;
|
|
20
|
+
exports.MAX_POST_BEEF_TXIDS = validationHelpers_1.MAXIMUM_SEND_WITH_TRANSACTIONS;
|
|
21
|
+
const MAX_COMPETING_TXIDS = 24;
|
|
22
|
+
const MAX_TOTAL_NOTES = 128;
|
|
23
|
+
const MAX_NOTE_PROPERTIES = 24;
|
|
24
|
+
const MAX_DATA_NODES = 512;
|
|
25
|
+
const MAX_DATA_BYTES = 64 * 1024;
|
|
26
|
+
const MAX_BLOCK_HEIGHT = 0x7fffffff;
|
|
27
|
+
const unsafeKeys = new Set(['__proto__', 'constructor', 'prototype']);
|
|
28
|
+
const omittedDiagnosticKeys = new Set(['rawTx', 'raws', 'beef', 'url', 'txids']);
|
|
29
|
+
function normalizePostRawHex(value, maximumBytes, name = 'rawTx') {
|
|
30
|
+
if (!Number.isSafeInteger(maximumBytes) || maximumBytes < 1)
|
|
31
|
+
invalid('maximumBytes', 'a positive safe integer');
|
|
32
|
+
if (typeof value !== 'string' ||
|
|
33
|
+
value.length === 0 ||
|
|
34
|
+
value.length > maximumBytes * 2 ||
|
|
35
|
+
value.length % 2 !== 0 ||
|
|
36
|
+
!/^[0-9a-fA-F]+$/.test(value)) {
|
|
37
|
+
invalid(name, `nonempty hexadecimal data no larger than ${maximumBytes} bytes`);
|
|
38
|
+
}
|
|
39
|
+
return value.toLowerCase();
|
|
40
|
+
}
|
|
41
|
+
function normalizePostTxids(value, name = 'txids', allowEmpty = false) {
|
|
42
|
+
const txids = denseArray(value, name, exports.MAX_POST_BEEF_TXIDS).map((txid, index) => (0, validateMerklePathResult_1.normalizeTxid)(txid, `${name}[${index}]`));
|
|
43
|
+
if ((!allowEmpty && txids.length === 0) || new Set(txids).size !== txids.length) {
|
|
44
|
+
invalid(name, `${allowEmpty ? '0' : '1'} through ${exports.MAX_POST_BEEF_TXIDS} unique transaction IDs`);
|
|
45
|
+
}
|
|
46
|
+
return txids;
|
|
47
|
+
}
|
|
48
|
+
function invalid(name, requirement) {
|
|
49
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, requirement);
|
|
50
|
+
}
|
|
51
|
+
function plainDescriptors(value, name) {
|
|
52
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value)) {
|
|
53
|
+
invalid(name, 'an accessor-free plain data object');
|
|
54
|
+
}
|
|
55
|
+
const prototype = Object.getPrototypeOf(value);
|
|
56
|
+
if (prototype !== Object.prototype && prototype !== null)
|
|
57
|
+
invalid(name, 'an accessor-free plain data object');
|
|
58
|
+
const result = Object.getOwnPropertyDescriptors(value);
|
|
59
|
+
if (Object.getOwnPropertySymbols(value).length !== 0 ||
|
|
60
|
+
Object.values(result).some(property => property.get != null || property.set != null)) {
|
|
61
|
+
invalid(name, 'accessor-free data properties without symbols');
|
|
62
|
+
}
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
function read(source, property) {
|
|
66
|
+
return source[property]?.value;
|
|
67
|
+
}
|
|
68
|
+
function denseArray(value, name, maximum) {
|
|
69
|
+
if (!Array.isArray(value) || value.length > maximum)
|
|
70
|
+
invalid(name, `a dense array of at most ${maximum} items`);
|
|
71
|
+
const properties = Object.getOwnPropertyDescriptors(value);
|
|
72
|
+
const expected = new Set(['length', ...Array.from({ length: value.length }, (_, index) => String(index))]);
|
|
73
|
+
if (Object.getOwnPropertySymbols(value).length !== 0 ||
|
|
74
|
+
Object.keys(properties).length !== expected.size ||
|
|
75
|
+
Object.keys(properties).some(key => !expected.has(key)) ||
|
|
76
|
+
Object.values(properties).some(property => property.get != null || property.set != null)) {
|
|
77
|
+
invalid(name, 'an accessor-free dense array without extra properties');
|
|
78
|
+
}
|
|
79
|
+
return Array.from({ length: value.length }, (_, index) => properties[String(index)].value);
|
|
80
|
+
}
|
|
81
|
+
function boundedText(value, name, maximum) {
|
|
82
|
+
if (typeof value !== 'string' || value.length === 0 || (0, utils_1.toArray)(value, 'utf8').length > maximum) {
|
|
83
|
+
invalid(name, `1 through ${maximum} UTF-8 bytes`);
|
|
84
|
+
}
|
|
85
|
+
if (/\p{Cc}/u.test(value))
|
|
86
|
+
invalid(name, 'text without control characters');
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
function copyJsonValue(value, name, budget, depth = 0) {
|
|
90
|
+
if (budget.nodes-- <= 0 || depth > 4)
|
|
91
|
+
invalid(name, 'bounded JSON-like diagnostic data');
|
|
92
|
+
if (value === null || typeof value === 'boolean')
|
|
93
|
+
return value;
|
|
94
|
+
if (typeof value === 'number') {
|
|
95
|
+
if (!Number.isFinite(value) || Math.abs(value) > Number.MAX_SAFE_INTEGER)
|
|
96
|
+
invalid(name, 'a finite safe number');
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
if (typeof value === 'string') {
|
|
100
|
+
const bytes = (0, utils_1.toArray)(value, 'utf8').length;
|
|
101
|
+
budget.bytes -= bytes;
|
|
102
|
+
if (bytes > 4096 || budget.bytes < 0)
|
|
103
|
+
invalid(name, 'bounded diagnostic strings');
|
|
104
|
+
return value.replace(/\p{Cc}/gu, ' ');
|
|
105
|
+
}
|
|
106
|
+
if (Array.isArray(value)) {
|
|
107
|
+
return denseArray(value, name, 64).map((item, index) => copyJsonValue(item, `${name}[${index}]`, budget, depth + 1));
|
|
108
|
+
}
|
|
109
|
+
const source = plainDescriptors(value, name);
|
|
110
|
+
const keys = Object.keys(source);
|
|
111
|
+
if (keys.length > 32 || keys.some(key => unsafeKeys.has(key)))
|
|
112
|
+
invalid(name, 'at most 32 safe data properties');
|
|
113
|
+
const result = {};
|
|
114
|
+
for (const key of keys)
|
|
115
|
+
result[key] = copyJsonValue(read(source, key), `${name}.${key}`, budget, depth + 1);
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
function copyNotes(value, name, budget, allowInternalTimeoutNote) {
|
|
119
|
+
if (value === undefined)
|
|
120
|
+
return [];
|
|
121
|
+
const notes = denseArray(value, name, MAX_TOTAL_NOTES);
|
|
122
|
+
if (notes.length > budget.notes)
|
|
123
|
+
invalid(name, `at most ${MAX_TOTAL_NOTES} notes across one provider result`);
|
|
124
|
+
budget.notes -= notes.length;
|
|
125
|
+
return notes.map((candidate, index) => {
|
|
126
|
+
const noteName = `${name}[${index}]`;
|
|
127
|
+
const source = plainDescriptors(candidate, noteName);
|
|
128
|
+
const keys = Object.keys(source);
|
|
129
|
+
if (keys.length > MAX_NOTE_PROPERTIES || keys.some(key => unsafeKeys.has(key))) {
|
|
130
|
+
invalid(noteName, `at most ${MAX_NOTE_PROPERTIES} safe scalar properties`);
|
|
131
|
+
}
|
|
132
|
+
const what = boundedText(read(source, 'what'), `${noteName}.what`, 128);
|
|
133
|
+
if (what === 'postBeefServiceTimeout' && !allowInternalTimeoutNote) {
|
|
134
|
+
invalid(`${noteName}.what`, 'a provider diagnostic rather than a reserved local timeout marker');
|
|
135
|
+
}
|
|
136
|
+
const result = { what };
|
|
137
|
+
for (const key of keys) {
|
|
138
|
+
if (key === 'what' || omittedDiagnosticKeys.has(key))
|
|
139
|
+
continue;
|
|
140
|
+
const item = read(source, key);
|
|
141
|
+
if (item === undefined)
|
|
142
|
+
continue;
|
|
143
|
+
if (typeof item === 'boolean')
|
|
144
|
+
result[key] = item;
|
|
145
|
+
else if (typeof item === 'number' && Number.isFinite(item) && Math.abs(item) <= Number.MAX_SAFE_INTEGER) {
|
|
146
|
+
result[key] = item;
|
|
147
|
+
}
|
|
148
|
+
else if (typeof item === 'string') {
|
|
149
|
+
if (item.length > 0)
|
|
150
|
+
result[key] = boundedText(item, `${noteName}.${key}`, key === 'when' ? 64 : 1024);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
invalid(`${noteName}.${key}`, 'a bounded string, finite number, boolean, or absent');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function optionalBoolean(value, name) {
|
|
160
|
+
if (value === undefined)
|
|
161
|
+
return undefined;
|
|
162
|
+
if (typeof value !== 'boolean')
|
|
163
|
+
invalid(name, 'a boolean or absent');
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
function copyTxidResult(value, index, expected, budget, allowInternalTimeoutNote) {
|
|
167
|
+
const name = `postBeef result.txidResults[${index}]`;
|
|
168
|
+
const source = plainDescriptors(value, name);
|
|
169
|
+
const allowed = new Set([
|
|
170
|
+
'txid',
|
|
171
|
+
'status',
|
|
172
|
+
'alreadyKnown',
|
|
173
|
+
'doubleSpend',
|
|
174
|
+
'blockHash',
|
|
175
|
+
'blockHeight',
|
|
176
|
+
'merklePath',
|
|
177
|
+
'competingTxs',
|
|
178
|
+
'data',
|
|
179
|
+
'notes',
|
|
180
|
+
'serviceError'
|
|
181
|
+
]);
|
|
182
|
+
if (Object.keys(source).some(key => !allowed.has(key)))
|
|
183
|
+
invalid(name, 'only documented transaction-result fields');
|
|
184
|
+
const txid = (0, validateMerklePathResult_1.normalizeTxid)(read(source, 'txid'), `${name}.txid`);
|
|
185
|
+
if (!expected.has(txid))
|
|
186
|
+
invalid(`${name}.txid`, 'one of the exact requested transaction IDs');
|
|
187
|
+
const status = read(source, 'status');
|
|
188
|
+
if (status !== 'success' && status !== 'error')
|
|
189
|
+
invalid(`${name}.status`, "'success' or 'error'");
|
|
190
|
+
const alreadyKnown = optionalBoolean(read(source, 'alreadyKnown'), `${name}.alreadyKnown`);
|
|
191
|
+
const doubleSpend = optionalBoolean(read(source, 'doubleSpend'), `${name}.doubleSpend`);
|
|
192
|
+
const serviceError = optionalBoolean(read(source, 'serviceError'), `${name}.serviceError`);
|
|
193
|
+
if (status === 'success' && (doubleSpend === true || serviceError === true)) {
|
|
194
|
+
invalid(name, 'successful results without double-spend or service-error flags');
|
|
195
|
+
}
|
|
196
|
+
if (status === 'error' && alreadyKnown === true)
|
|
197
|
+
invalid(name, 'already-known results classified as success');
|
|
198
|
+
if (doubleSpend === true && serviceError === true)
|
|
199
|
+
invalid(name, 'a single error class');
|
|
200
|
+
let competingTxs;
|
|
201
|
+
const rawCompeting = read(source, 'competingTxs');
|
|
202
|
+
if (rawCompeting !== undefined) {
|
|
203
|
+
if (doubleSpend !== true)
|
|
204
|
+
invalid(`${name}.competingTxs`, 'present only for a double-spend result');
|
|
205
|
+
competingTxs = denseArray(rawCompeting, `${name}.competingTxs`, MAX_COMPETING_TXIDS).map((item, itemIndex) => (0, validateMerklePathResult_1.normalizeTxid)(item, `${name}.competingTxs[${itemIndex}]`));
|
|
206
|
+
if (competingTxs.includes(txid) || new Set(competingTxs).size !== competingTxs.length) {
|
|
207
|
+
invalid(`${name}.competingTxs`, 'unique competing IDs that exclude the submitted transaction');
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const result = { txid, status };
|
|
211
|
+
if (alreadyKnown !== undefined)
|
|
212
|
+
result.alreadyKnown = alreadyKnown;
|
|
213
|
+
if (doubleSpend !== undefined)
|
|
214
|
+
result.doubleSpend = doubleSpend;
|
|
215
|
+
if (serviceError !== undefined)
|
|
216
|
+
result.serviceError = serviceError;
|
|
217
|
+
if (competingTxs !== undefined)
|
|
218
|
+
result.competingTxs = competingTxs;
|
|
219
|
+
const blockHash = read(source, 'blockHash');
|
|
220
|
+
if (blockHash !== undefined)
|
|
221
|
+
result.blockHash = (0, validateMerklePathResult_1.normalizeTxid)(blockHash, `${name}.blockHash`);
|
|
222
|
+
const blockHeight = read(source, 'blockHeight');
|
|
223
|
+
if (blockHeight !== undefined) {
|
|
224
|
+
if (!Number.isSafeInteger(blockHeight) ||
|
|
225
|
+
blockHeight < 0 ||
|
|
226
|
+
blockHeight > MAX_BLOCK_HEIGHT) {
|
|
227
|
+
invalid(`${name}.blockHeight`, `an integer from 0 through ${MAX_BLOCK_HEIGHT}, or absent`);
|
|
228
|
+
}
|
|
229
|
+
result.blockHeight = blockHeight;
|
|
230
|
+
}
|
|
231
|
+
const data = read(source, 'data');
|
|
232
|
+
if (data !== undefined)
|
|
233
|
+
result.data = copyJsonValue(data, `${name}.data`, budget);
|
|
234
|
+
const notes = copyNotes(read(source, 'notes'), `${name}.notes`, budget, allowInternalTimeoutNote);
|
|
235
|
+
if (notes.length > 0)
|
|
236
|
+
result.notes = notes;
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
function validatePostBeefResult(value, expectedTxids, configuredProviderName, allowInternalTimeoutNote = false) {
|
|
240
|
+
const expected = new Set(expectedTxids.map((txid, index) => (0, validateMerklePathResult_1.normalizeTxid)(txid, `txids[${index}]`)));
|
|
241
|
+
if (expected.size !== expectedTxids.length || expected.size === 0 || expected.size > exports.MAX_POST_BEEF_TXIDS) {
|
|
242
|
+
invalid('txids', `1 through ${exports.MAX_POST_BEEF_TXIDS} unique transaction IDs`);
|
|
243
|
+
}
|
|
244
|
+
const source = plainDescriptors(value, 'postBeef result');
|
|
245
|
+
if (Object.keys(source).some(key => !['name', 'status', 'error', 'txidResults', 'data', 'notes'].includes(key))) {
|
|
246
|
+
invalid('postBeef result', 'only documented aggregate-result fields');
|
|
247
|
+
}
|
|
248
|
+
const name = boundedText(configuredProviderName, 'postBeef provider name', 128);
|
|
249
|
+
const status = read(source, 'status');
|
|
250
|
+
if (status !== 'success' && status !== 'error')
|
|
251
|
+
invalid('postBeef result.status', "'success' or 'error'");
|
|
252
|
+
const budget = { notes: MAX_TOTAL_NOTES, nodes: MAX_DATA_NODES, bytes: MAX_DATA_BYTES };
|
|
253
|
+
const txidResults = denseArray(read(source, 'txidResults'), 'postBeef result.txidResults', expected.size).map((candidate, index) => copyTxidResult(candidate, index, expected, budget, allowInternalTimeoutNote));
|
|
254
|
+
if (txidResults.length !== expected.size || new Set(txidResults.map(result => result.txid)).size !== expected.size) {
|
|
255
|
+
invalid('postBeef result.txidResults', 'exactly one result for every requested transaction ID');
|
|
256
|
+
}
|
|
257
|
+
const allSuccessful = txidResults.every(result => result.status === 'success');
|
|
258
|
+
if ((status === 'success') !== allSuccessful) {
|
|
259
|
+
invalid('postBeef result.status', 'success exactly when every requested transaction result succeeds');
|
|
260
|
+
}
|
|
261
|
+
const result = { name, status, txidResults };
|
|
262
|
+
const error = read(source, 'error');
|
|
263
|
+
if (error !== undefined) {
|
|
264
|
+
if (status !== 'error' || !(error instanceof Error))
|
|
265
|
+
invalid('postBeef result.error', 'an Error on an error result');
|
|
266
|
+
result.error = WalletError_1.WalletError.fromUnknown(error);
|
|
267
|
+
}
|
|
268
|
+
const data = read(source, 'data');
|
|
269
|
+
if (data !== undefined)
|
|
270
|
+
result.data = copyJsonValue(data, 'postBeef result.data', budget);
|
|
271
|
+
const notes = copyNotes(read(source, 'notes'), 'postBeef result.notes', budget, allowInternalTimeoutNote);
|
|
272
|
+
if (notes.length > 0)
|
|
273
|
+
result.notes = notes;
|
|
274
|
+
return result;
|
|
275
|
+
}
|
|
276
|
+
function validatePostTxResult(value, expectedTxid, configuredProviderName) {
|
|
277
|
+
const source = plainDescriptors(value, 'post transaction result');
|
|
278
|
+
const status = read(source, 'status');
|
|
279
|
+
const aggregate = validatePostBeefResult({
|
|
280
|
+
name: configuredProviderName,
|
|
281
|
+
status,
|
|
282
|
+
txidResults: [value]
|
|
283
|
+
}, [expectedTxid], configuredProviderName);
|
|
284
|
+
return aggregate.txidResults[0];
|
|
285
|
+
}
|
|
286
|
+
function validatePostTxResultOrServiceError(value, expectedTxid, configuredProviderName) {
|
|
287
|
+
try {
|
|
288
|
+
return validatePostTxResult(value, expectedTxid, configuredProviderName);
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
return makePostBeefServiceError(configuredProviderName, [expectedTxid], 'postBeefServiceError').txidResults[0];
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function validatePostBeefResultOrServiceError(value, expectedTxids, configuredProviderName) {
|
|
295
|
+
try {
|
|
296
|
+
return validatePostBeefResult(value, expectedTxids, configuredProviderName);
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
return makePostBeefServiceError(configuredProviderName, expectedTxids, 'postBeefServiceError');
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
function snapshotPostBeefRequest(beef, txids) {
|
|
303
|
+
if (!(beef instanceof sdk_1.Beef))
|
|
304
|
+
invalid('beef', 'a BEEF instance');
|
|
305
|
+
const normalizedTxids = normalizePostTxids(txids);
|
|
306
|
+
const beefBytes = Array.from(beef.toBinary());
|
|
307
|
+
if (beefBytes.length === 0 || beefBytes.length > exports.MAX_POST_BEEF_BYTES) {
|
|
308
|
+
invalid('beef', `a serialized BEEF no larger than ${exports.MAX_POST_BEEF_BYTES} bytes`);
|
|
309
|
+
}
|
|
310
|
+
const owned = sdk_1.Beef.fromBinaryStrict(beefBytes);
|
|
311
|
+
for (const [index, txid] of normalizedTxids.entries()) {
|
|
312
|
+
const rawTx = owned.findTxid(txid)?.rawTx;
|
|
313
|
+
if (rawTx == null || (0, utils_1.toHex)((0, utilityHelpers_1.doubleSha256BE)(Array.from(rawTx))) !== txid) {
|
|
314
|
+
invalid(`txids[${index}]`, 'a raw transaction with the exact ID in the submitted BEEF');
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return { beefBytes, txids: normalizedTxids };
|
|
318
|
+
}
|
|
319
|
+
function makePostBeefServiceError(providerName, txids, what, timeoutMs) {
|
|
320
|
+
const candidate = {
|
|
321
|
+
name: providerName,
|
|
322
|
+
status: 'error',
|
|
323
|
+
txidResults: txids.map(txid => ({ txid, status: 'error', serviceError: true })),
|
|
324
|
+
notes: [
|
|
325
|
+
{
|
|
326
|
+
when: new Date().toISOString(),
|
|
327
|
+
what,
|
|
328
|
+
...(timeoutMs === undefined ? {} : { timeoutMs })
|
|
329
|
+
}
|
|
330
|
+
]
|
|
331
|
+
};
|
|
332
|
+
return validatePostBeefResult(candidate, txids, providerName, true);
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=validatePostBeefResult.js.map
|