@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
|
@@ -12,6 +12,7 @@ exports.convertBitsToTarget = convertBitsToTarget;
|
|
|
12
12
|
exports.convertBitsToWork = convertBitsToWork;
|
|
13
13
|
exports.deserializeBaseBlockHeaders = deserializeBaseBlockHeaders;
|
|
14
14
|
exports.deserializeBlockHeaders = deserializeBlockHeaders;
|
|
15
|
+
exports.validateBaseBlockHeaderFormat = validateBaseBlockHeaderFormat;
|
|
15
16
|
exports.validateHeaderFormat = validateHeaderFormat;
|
|
16
17
|
exports.validateHeaderDifficulty = validateHeaderDifficulty;
|
|
17
18
|
exports.validateHeaderProofOfWork = validateHeaderProofOfWork;
|
|
@@ -31,21 +32,114 @@ exports.readUInt32BE = readUInt32BE;
|
|
|
31
32
|
exports.convertBufferToUint32 = convertBufferToUint32;
|
|
32
33
|
const dirtyHashes_1 = require("./dirtyHashes");
|
|
33
34
|
const sdk_1 = require("@bsv/sdk");
|
|
35
|
+
const Hash_1 = require("@bsv/sdk/primitives/Hash");
|
|
36
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
34
37
|
const utilityHelpers_noBuffer_1 = require("../../../../utility/utilityHelpers.noBuffer");
|
|
35
38
|
const utilityHelpers_1 = require("../../../../utility/utilityHelpers");
|
|
36
39
|
const WERR_errors_1 = require("../../../../sdk/WERR_errors");
|
|
40
|
+
const MAX_HEADER_COUNT = 100_000;
|
|
41
|
+
const MAX_HEADER_BYTES = MAX_HEADER_COUNT * 80;
|
|
42
|
+
const MAX_BLOCK_HEIGHT = 0x7fffffff;
|
|
43
|
+
const UINT32_MAX = 0xffffffff;
|
|
44
|
+
const HEX_32_BYTES = /^[0-9a-fA-F]{64}$/;
|
|
45
|
+
function validateByteWindow(buffer, offset, length, name = 'buffer') {
|
|
46
|
+
if (!Array.isArray(buffer) && !(buffer instanceof Uint8Array)) {
|
|
47
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, 'a byte array');
|
|
48
|
+
}
|
|
49
|
+
if (!Number.isSafeInteger(offset) ||
|
|
50
|
+
offset < 0 ||
|
|
51
|
+
!Number.isSafeInteger(length) ||
|
|
52
|
+
length < 0 ||
|
|
53
|
+
!Number.isSafeInteger(offset + length) ||
|
|
54
|
+
offset + length > buffer.length) {
|
|
55
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${name} window`, 'non-negative safe integers within the byte array');
|
|
56
|
+
}
|
|
57
|
+
if (Array.isArray(buffer)) {
|
|
58
|
+
for (let index = offset; index < offset + length; index++) {
|
|
59
|
+
const value = buffer[index];
|
|
60
|
+
if (!Number.isInteger(value) || value < 0 || value > 0xff) {
|
|
61
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, 'an array of byte integers');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function validateWritableByteWindow(buffer, offset, length) {
|
|
67
|
+
if (!Array.isArray(buffer) && !(buffer instanceof Uint8Array)) {
|
|
68
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a writable byte array');
|
|
69
|
+
}
|
|
70
|
+
if (!Number.isSafeInteger(offset) ||
|
|
71
|
+
offset < 0 ||
|
|
72
|
+
!Number.isSafeInteger(offset + length) ||
|
|
73
|
+
offset + length > buffer.length) {
|
|
74
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', `a non-negative safe integer with ${length} writable bytes`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function validateWork(value, name) {
|
|
78
|
+
if (typeof value !== 'string' || !HEX_32_BYTES.test(value)) {
|
|
79
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, 'exactly 32 hexadecimal bytes');
|
|
80
|
+
}
|
|
81
|
+
return new sdk_1.BigNumber(value, 16);
|
|
82
|
+
}
|
|
83
|
+
function copyBaseHeaderData(value) {
|
|
84
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value)) {
|
|
85
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', 'a plain data object');
|
|
86
|
+
}
|
|
87
|
+
const prototype = Object.getPrototypeOf(value);
|
|
88
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
89
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', 'a plain data object');
|
|
90
|
+
}
|
|
91
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
92
|
+
if (Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
|
|
93
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', 'accessor-free data properties');
|
|
94
|
+
}
|
|
95
|
+
const read = (name) => {
|
|
96
|
+
const descriptor = descriptors[name];
|
|
97
|
+
if (descriptor == null || !('value' in descriptor)) {
|
|
98
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', `an own ${name} data property`);
|
|
99
|
+
}
|
|
100
|
+
return descriptor.value;
|
|
101
|
+
};
|
|
102
|
+
return {
|
|
103
|
+
version: read('version'),
|
|
104
|
+
previousHash: read('previousHash'),
|
|
105
|
+
merkleRoot: read('merkleRoot'),
|
|
106
|
+
time: read('time'),
|
|
107
|
+
bits: read('bits'),
|
|
108
|
+
nonce: read('nonce')
|
|
109
|
+
};
|
|
110
|
+
}
|
|
37
111
|
/**
|
|
38
112
|
* Computes sha256 hash of file contents read as bytes with no encoding.
|
|
39
113
|
* @param filepath Full filepath to file.
|
|
40
114
|
* @param bufferSize Optional read buffer size to use. Defaults to 80,000 bytes. Currently ignored.
|
|
41
115
|
* @returns `{hash, length}` where `hash` is base64 string form of file hash and `length` is file length in bytes.
|
|
42
116
|
*/
|
|
43
|
-
async function sha256HashOfBinaryFile(fs, filepath,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
117
|
+
async function sha256HashOfBinaryFile(fs, filepath, bufferSize = 80000) {
|
|
118
|
+
if (!Number.isSafeInteger(bufferSize) || bufferSize < 1 || bufferSize > MAX_HEADER_BYTES) {
|
|
119
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bufferSize', `an integer from 1 through ${MAX_HEADER_BYTES}`);
|
|
120
|
+
}
|
|
121
|
+
const hasher = new Hash_1.SHA256();
|
|
122
|
+
const file = await fs.openReadableFile(filepath);
|
|
123
|
+
try {
|
|
124
|
+
const length = await file.getLength();
|
|
125
|
+
if (!Number.isSafeInteger(length) || length < 0 || length > MAX_HEADER_BYTES) {
|
|
126
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('file length', `an integer from 0 through ${MAX_HEADER_BYTES}`);
|
|
127
|
+
}
|
|
128
|
+
let offset = 0;
|
|
129
|
+
while (offset < length) {
|
|
130
|
+
const requested = Math.min(bufferSize, length - offset);
|
|
131
|
+
const bytes = await file.read(requested, offset);
|
|
132
|
+
if (!(bytes instanceof Uint8Array) || bytes.length === 0 || bytes.length > requested) {
|
|
133
|
+
throw new Error('Binary file reader returned an invalid or incomplete chunk.');
|
|
134
|
+
}
|
|
135
|
+
hasher.update((0, utilityHelpers_noBuffer_1.asArray)(bytes));
|
|
136
|
+
offset += bytes.length;
|
|
137
|
+
}
|
|
138
|
+
return { hash: (0, utils_1.toBase64)(hasher.digest()), length };
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
await file.close();
|
|
142
|
+
}
|
|
49
143
|
}
|
|
50
144
|
/**
|
|
51
145
|
* Validates the contents of a bulk header file.
|
|
@@ -56,24 +150,64 @@ async function sha256HashOfBinaryFile(fs, filepath, _bufferSize = 80000) {
|
|
|
56
150
|
* @returns Validated BulkHeaderFileInfo with `validated` set to true.
|
|
57
151
|
*/
|
|
58
152
|
async function validateBulkFileData(bf, prevHash, prevChainWork, fetch) {
|
|
153
|
+
if (bf == null || typeof bf !== 'object' || Array.isArray(bf)) {
|
|
154
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf', 'a plain data object');
|
|
155
|
+
}
|
|
156
|
+
const prototype = Object.getPrototypeOf(bf);
|
|
157
|
+
const descriptors = Object.getOwnPropertyDescriptors(bf);
|
|
158
|
+
if ((prototype !== Object.prototype && prototype !== null) ||
|
|
159
|
+
Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
|
|
160
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf', 'an accessor-free plain data object');
|
|
161
|
+
}
|
|
59
162
|
const vbf = { ...bf };
|
|
163
|
+
if (!Number.isSafeInteger(vbf.count) || vbf.count <= 0 || vbf.count > MAX_HEADER_COUNT) {
|
|
164
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.count', `an integer from 1 through ${MAX_HEADER_COUNT}`);
|
|
165
|
+
}
|
|
166
|
+
if (!Number.isSafeInteger(vbf.firstHeight) || vbf.firstHeight < 0 || vbf.firstHeight > MAX_BLOCK_HEIGHT) {
|
|
167
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.firstHeight', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
|
|
168
|
+
}
|
|
169
|
+
if (vbf.firstHeight + vbf.count - 1 > MAX_BLOCK_HEIGHT) {
|
|
170
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf', 'a header range within the supported block heights');
|
|
171
|
+
}
|
|
172
|
+
if (!['main', 'test', 'stn', 'ttn', 'tstn', 'mock'].includes(vbf.chain)) {
|
|
173
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.chain', 'a supported Chaintracks network');
|
|
174
|
+
}
|
|
175
|
+
if (typeof vbf.fileName !== 'string' ||
|
|
176
|
+
!/^[A-Za-z0-9][A-Za-z0-9._~-]{0,254}$/.test(vbf.fileName) ||
|
|
177
|
+
vbf.fileName === '.' ||
|
|
178
|
+
vbf.fileName === '..') {
|
|
179
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.fileName', 'a safe path-free ASCII file name');
|
|
180
|
+
}
|
|
181
|
+
if (typeof prevHash !== 'string' || !HEX_32_BYTES.test(prevHash)) {
|
|
182
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('prevHash', 'exactly 32 hexadecimal bytes');
|
|
183
|
+
}
|
|
184
|
+
validateWork(prevChainWork, 'prevChainWork');
|
|
60
185
|
if (vbf.data == null && vbf.sourceUrl && fetch != null) {
|
|
61
186
|
const url = fetch.pathJoin(vbf.sourceUrl, vbf.fileName);
|
|
62
187
|
vbf.data = await fetch.download(url, vbf.count * 80);
|
|
63
188
|
}
|
|
64
189
|
if (vbf.data == null)
|
|
65
190
|
throw new WERR_errors_1.WERR_INVALID_OPERATION(`bulk file ${vbf.fileName} data is unavailable`);
|
|
66
|
-
if (vbf.
|
|
67
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.
|
|
68
|
-
}
|
|
191
|
+
if (!(vbf.data instanceof Uint8Array))
|
|
192
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.data', 'a Uint8Array');
|
|
69
193
|
if (vbf.data.length !== vbf.count * 80) {
|
|
70
194
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.data', `bulk file ${vbf.fileName} data length ${vbf.data.length} does not match expected count ${vbf.count}`);
|
|
71
195
|
}
|
|
72
|
-
vbf.fileHash = (0, utilityHelpers_noBuffer_1.asString)(
|
|
196
|
+
vbf.fileHash = (0, utilityHelpers_noBuffer_1.asString)((0, Hash_1.sha256)((0, utilityHelpers_noBuffer_1.asArray)(vbf.data)), 'base64');
|
|
73
197
|
if (bf.fileHash && bf.fileHash !== vbf.fileHash) {
|
|
74
198
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.fileHash', `expected ${bf.fileHash} but got ${vbf.fileHash}`);
|
|
75
199
|
}
|
|
76
200
|
const { lastHeaderHash, lastChainWork } = validateBufferOfHeaders(vbf.data, prevHash, 0, undefined, prevChainWork);
|
|
201
|
+
if (bf.lastHash &&
|
|
202
|
+
(typeof bf.lastHash !== 'string' || !HEX_32_BYTES.test(bf.lastHash) || bf.lastHash.toLowerCase() !== lastHeaderHash)) {
|
|
203
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.lastHash', `expected ${bf.lastHash} but got ${lastHeaderHash}`);
|
|
204
|
+
}
|
|
205
|
+
if (bf.lastChainWork &&
|
|
206
|
+
(typeof bf.lastChainWork !== 'string' ||
|
|
207
|
+
!HEX_32_BYTES.test(bf.lastChainWork) ||
|
|
208
|
+
bf.lastChainWork.toLowerCase() !== lastChainWork)) {
|
|
209
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.lastChainWork', `expected ${bf.lastChainWork} but got ${lastChainWork}`);
|
|
210
|
+
}
|
|
77
211
|
vbf.lastHash = lastHeaderHash;
|
|
78
212
|
vbf.lastChainWork = lastChainWork;
|
|
79
213
|
if (vbf.firstHeight === 0) {
|
|
@@ -92,11 +226,32 @@ async function validateBulkFileData(bf, prevHash, prevChainWork, fetch) {
|
|
|
92
226
|
* @returns Header hash of last header validated or previousHash if there where none.
|
|
93
227
|
*/
|
|
94
228
|
function validateBufferOfHeaders(buffer, previousHash, offset = 0, count = -1, previousChainWork) {
|
|
95
|
-
if (
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
229
|
+
if (!(buffer instanceof Uint8Array))
|
|
230
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a Uint8Array');
|
|
231
|
+
if (!Number.isSafeInteger(offset) || offset < 0 || offset > buffer.length) {
|
|
232
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', 'a non-negative safe integer within the buffer');
|
|
233
|
+
}
|
|
234
|
+
if (!Number.isSafeInteger(count) || count < -1 || count > MAX_HEADER_COUNT) {
|
|
235
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('count', `-1 or an integer from 0 through ${MAX_HEADER_COUNT}`);
|
|
236
|
+
}
|
|
237
|
+
if (count < 0) {
|
|
238
|
+
if ((buffer.length - offset) % 80 !== 0) {
|
|
239
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a complete sequence of 80-byte headers');
|
|
240
|
+
}
|
|
241
|
+
count = (buffer.length - offset) / 80;
|
|
242
|
+
}
|
|
243
|
+
if (count > MAX_HEADER_COUNT || offset + count * 80 > buffer.length) {
|
|
244
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'enough bytes for the bounded requested header count');
|
|
245
|
+
}
|
|
246
|
+
if (typeof previousHash !== 'string' || !HEX_32_BYTES.test(previousHash)) {
|
|
247
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('previousHash', 'exactly 32 hexadecimal bytes');
|
|
248
|
+
}
|
|
249
|
+
let lastHeaderHash = previousHash.toLowerCase();
|
|
99
250
|
let lastChainWork = previousChainWork;
|
|
251
|
+
if (lastChainWork !== undefined) {
|
|
252
|
+
validateWork(lastChainWork, 'previousChainWork');
|
|
253
|
+
lastChainWork = lastChainWork.toLowerCase();
|
|
254
|
+
}
|
|
100
255
|
for (let i = 0; i < count; i++) {
|
|
101
256
|
const headerStart = offset + i * 80;
|
|
102
257
|
const headerEnd = headerStart + 80;
|
|
@@ -143,20 +298,24 @@ function validateGenesisHeader(buffer, chain) {
|
|
|
143
298
|
* @returns Converted chainWork value from BN to hex string of 32 bytes.
|
|
144
299
|
*/
|
|
145
300
|
function workBNtoBuffer(work) {
|
|
146
|
-
|
|
301
|
+
const encoded = work.toString(16);
|
|
302
|
+
if (!/^[0-9a-f]+$/i.test(encoded) || encoded.length > 64) {
|
|
303
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('work', 'a non-negative integer no greater than 256 bits');
|
|
304
|
+
}
|
|
305
|
+
return encoded.toLowerCase().padStart(64, '0');
|
|
147
306
|
}
|
|
148
307
|
/**
|
|
149
308
|
* Returns true if work1 is more work (greater than) work2
|
|
150
309
|
*/
|
|
151
310
|
function isMoreWork(work1, work2) {
|
|
152
|
-
return
|
|
311
|
+
return validateWork(work1, 'work1').gt(validateWork(work2, 'work2'));
|
|
153
312
|
}
|
|
154
313
|
/**
|
|
155
314
|
* Add two Buffer encoded chainwork values
|
|
156
315
|
* @returns Sum of work1 + work2 as Buffer encoded chainWork value
|
|
157
316
|
*/
|
|
158
317
|
function addWork(work1, work2) {
|
|
159
|
-
const sum =
|
|
318
|
+
const sum = validateWork(work1, 'work1').add(validateWork(work2, 'work2'));
|
|
160
319
|
return workBNtoBuffer(sum);
|
|
161
320
|
}
|
|
162
321
|
/**
|
|
@@ -164,7 +323,11 @@ function addWork(work1, work2) {
|
|
|
164
323
|
* @returns work1 - work2 as Buffer encoded chainWork value
|
|
165
324
|
*/
|
|
166
325
|
function subWork(work1, work2) {
|
|
167
|
-
const
|
|
326
|
+
const minuend = validateWork(work1, 'work1');
|
|
327
|
+
const subtrahend = validateWork(work2, 'work2');
|
|
328
|
+
if (minuend.lt(subtrahend))
|
|
329
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('work1/work2', 'a non-negative subtraction');
|
|
330
|
+
const sum = minuend.sub(subtrahend);
|
|
168
331
|
return workBNtoBuffer(sum);
|
|
169
332
|
}
|
|
170
333
|
/**
|
|
@@ -173,8 +336,13 @@ function subWork(work1, work2) {
|
|
|
173
336
|
* @returns 32 byte Buffer with "target" value
|
|
174
337
|
*/
|
|
175
338
|
function convertBitsToTarget(bits) {
|
|
176
|
-
if (Array.isArray(bits))
|
|
339
|
+
if (Array.isArray(bits)) {
|
|
340
|
+
if (bits.length !== 4)
|
|
341
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bits', 'exactly four bytes');
|
|
342
|
+
validateByteWindow(bits, 0, 4, 'bits');
|
|
177
343
|
bits = readUInt32LE(bits, 0);
|
|
344
|
+
}
|
|
345
|
+
validateUnsignedHeaderInteger(bits, 'bits', UINT32_MAX);
|
|
178
346
|
const shift = (bits >> 24) & 0xff;
|
|
179
347
|
const data = bits & 0x007fffff;
|
|
180
348
|
const target = new sdk_1.BigNumber(data);
|
|
@@ -186,31 +354,59 @@ function convertBitsToTarget(bits) {
|
|
|
186
354
|
}
|
|
187
355
|
return target;
|
|
188
356
|
}
|
|
357
|
+
function readCompactBits(bits) {
|
|
358
|
+
if (bits.length !== 4)
|
|
359
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bits', 'exactly four bytes');
|
|
360
|
+
validateByteWindow(bits, 0, 4, 'bits');
|
|
361
|
+
return readUInt32LE(bits, 0);
|
|
362
|
+
}
|
|
189
363
|
/**
|
|
190
364
|
* Computes "chainWork" value for 4 byte Bitcoin block header "bits" value.
|
|
191
365
|
* @param bits number or converted from Buffer using `readUint32LE`
|
|
192
366
|
* @returns 32 byte Buffer with "chainWork" value
|
|
193
367
|
*/
|
|
194
368
|
function convertBitsToWork(bits) {
|
|
195
|
-
const
|
|
369
|
+
const encoded = Array.isArray(bits) ? readCompactBits(bits) : bits;
|
|
370
|
+
const target = validateCompactTarget(encoded);
|
|
196
371
|
// convert target to work
|
|
197
372
|
const work = target.notn(256).div(target.addn(1)).addn(1);
|
|
198
373
|
return work.toString(16).padStart(64, '0');
|
|
199
374
|
}
|
|
200
375
|
function deserializeBaseBlockHeaders(buffer, offset = 0, count) {
|
|
376
|
+
if (!Array.isArray(buffer) && !(buffer instanceof Uint8Array)) {
|
|
377
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a byte array');
|
|
378
|
+
}
|
|
379
|
+
if (!Number.isSafeInteger(offset) || offset < 0 || offset > buffer.length) {
|
|
380
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', 'a non-negative safe integer within the buffer');
|
|
381
|
+
}
|
|
382
|
+
if (count !== undefined && (!Number.isSafeInteger(count) || count < 0 || count > MAX_HEADER_COUNT)) {
|
|
383
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('count', `an integer from 0 through ${MAX_HEADER_COUNT}`);
|
|
384
|
+
}
|
|
385
|
+
const available = Math.floor((buffer.length - offset) / 80);
|
|
386
|
+
const limit = count ?? available;
|
|
387
|
+
if (Math.min(available, limit) > MAX_HEADER_COUNT) {
|
|
388
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', `no more than ${MAX_HEADER_COUNT} headers per decode`);
|
|
389
|
+
}
|
|
201
390
|
const headers = [];
|
|
202
|
-
while (
|
|
391
|
+
while (headers.length < limit && offset + 80 <= buffer.length) {
|
|
203
392
|
headers.push(deserializeBaseBlockHeader(buffer, offset));
|
|
204
393
|
offset += 80;
|
|
205
394
|
}
|
|
206
395
|
return headers;
|
|
207
396
|
}
|
|
208
397
|
function deserializeBlockHeaders(firstHeight, buffer, offset = 0, count) {
|
|
398
|
+
if (!Number.isSafeInteger(firstHeight) || firstHeight < 0 || firstHeight > MAX_BLOCK_HEIGHT) {
|
|
399
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('firstHeight', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
|
|
400
|
+
}
|
|
401
|
+
const baseHeaders = deserializeBaseBlockHeaders(buffer, offset, count);
|
|
402
|
+
if (firstHeight + baseHeaders.length - 1 > MAX_BLOCK_HEIGHT) {
|
|
403
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('headers', 'a range within the supported block heights');
|
|
404
|
+
}
|
|
209
405
|
const headers = [];
|
|
210
406
|
let nextHeight = firstHeight;
|
|
211
|
-
while (
|
|
407
|
+
while (headers.length < baseHeaders.length) {
|
|
212
408
|
const baseBuffer = buffer.slice(offset, offset + 80);
|
|
213
|
-
const base =
|
|
409
|
+
const base = baseHeaders[headers.length];
|
|
214
410
|
const header = {
|
|
215
411
|
...base,
|
|
216
412
|
height: nextHeight++,
|
|
@@ -231,7 +427,7 @@ function deserializeBlockHeaders(firstHeight, buffer, offset = 0, count) {
|
|
|
231
427
|
*
|
|
232
428
|
* @returns true if the header is correctly formatted
|
|
233
429
|
*/
|
|
234
|
-
function validateUnsignedHeaderInteger(value, field, maximum
|
|
430
|
+
function validateUnsignedHeaderInteger(value, field, maximum) {
|
|
235
431
|
if (typeof value !== 'number') {
|
|
236
432
|
throw new TypeError(`Header ${field} must be a number.`);
|
|
237
433
|
}
|
|
@@ -239,69 +435,60 @@ function validateUnsignedHeaderInteger(value, field, maximum, rangeField = field
|
|
|
239
435
|
throw new TypeError(`Header ${field} must be an integer.`);
|
|
240
436
|
}
|
|
241
437
|
if (value < 0 || value > maximum) {
|
|
242
|
-
throw new Error(`Header ${
|
|
438
|
+
throw new Error(`Header ${field} must be between 0 and ${maximum}.`);
|
|
243
439
|
}
|
|
244
440
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
merkleRoot: true,
|
|
250
|
-
time: true,
|
|
251
|
-
bits: true,
|
|
252
|
-
nonce: true,
|
|
253
|
-
height: true,
|
|
254
|
-
hash: true
|
|
255
|
-
};
|
|
256
|
-
const UINT_MAX = 0xffffffff;
|
|
257
|
-
/**
|
|
258
|
-
* Root object checks
|
|
259
|
-
*/
|
|
260
|
-
if (header === undefined) {
|
|
441
|
+
const BASE_HEADER_KEYS = ['version', 'previousHash', 'merkleRoot', 'time', 'bits', 'nonce'];
|
|
442
|
+
const BLOCK_HEADER_KEYS = [...BASE_HEADER_KEYS, 'height', 'hash'];
|
|
443
|
+
function validateHeaderRecord(header, allowedKeys) {
|
|
444
|
+
if (header == null)
|
|
261
445
|
throw new TypeError('Missing header.');
|
|
262
|
-
|
|
263
|
-
if (typeof header !== 'object') {
|
|
446
|
+
if (typeof header !== 'object' || Array.isArray(header)) {
|
|
264
447
|
throw new TypeError('Header must be an object.');
|
|
265
448
|
}
|
|
266
|
-
|
|
267
|
-
|
|
449
|
+
const prototype = Object.getPrototypeOf(header);
|
|
450
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
451
|
+
throw new TypeError('Header must be a plain data object.');
|
|
452
|
+
}
|
|
453
|
+
const descriptors = Object.getOwnPropertyDescriptors(header);
|
|
454
|
+
const keys = Object.keys(descriptors);
|
|
455
|
+
if (keys.length !== allowedKeys.length ||
|
|
456
|
+
!keys.every(key => allowedKeys.includes(key)) ||
|
|
457
|
+
keys.some(key => descriptors[key]?.get != null || descriptors[key]?.set != null)) {
|
|
458
|
+
throw new Error('Header must contain exactly the required data properties.');
|
|
268
459
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Validates the exact data representation of an unpositioned 80-byte block
|
|
463
|
+
* header before it reaches a chain lookup, queue, or serializer.
|
|
464
|
+
*/
|
|
465
|
+
function validateBaseBlockHeaderFormat(header) {
|
|
466
|
+
const UINT_MAX = 0xffffffff;
|
|
467
|
+
validateHeaderRecord(header, BASE_HEADER_KEYS);
|
|
272
468
|
validateUnsignedHeaderInteger(header.version, 'version', UINT_MAX);
|
|
273
|
-
|
|
274
|
-
* Height
|
|
275
|
-
*/
|
|
276
|
-
validateUnsignedHeaderInteger(header.height, 'height', UINT_MAX / 2, 'version');
|
|
277
|
-
/**
|
|
278
|
-
* Previous hash
|
|
279
|
-
*/
|
|
280
|
-
if (header.previousHash.length !== 64) {
|
|
469
|
+
if (typeof header.previousHash !== 'string' || !HEX_32_BYTES.test(header.previousHash)) {
|
|
281
470
|
throw new Error('Header previousHash must be 32 hex bytes.');
|
|
282
471
|
}
|
|
283
|
-
|
|
284
|
-
* Merkle root
|
|
285
|
-
*/
|
|
286
|
-
if (header.merkleRoot.length !== 64) {
|
|
472
|
+
if (typeof header.merkleRoot !== 'string' || !HEX_32_BYTES.test(header.merkleRoot)) {
|
|
287
473
|
throw new Error('Header merkleRoot must be 32 hex bytes.');
|
|
288
474
|
}
|
|
289
|
-
/**
|
|
290
|
-
* Time
|
|
291
|
-
*/
|
|
292
475
|
validateUnsignedHeaderInteger(header.time, 'time', UINT_MAX);
|
|
293
|
-
/**
|
|
294
|
-
* Bits
|
|
295
|
-
*/
|
|
296
476
|
validateUnsignedHeaderInteger(header.bits, 'bits', UINT_MAX);
|
|
297
|
-
/**
|
|
298
|
-
* Nonce
|
|
299
|
-
*/
|
|
300
477
|
validateUnsignedHeaderInteger(header.nonce, 'nonce', UINT_MAX);
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
478
|
+
}
|
|
479
|
+
function validateHeaderFormat(header) {
|
|
480
|
+
validateHeaderRecord(header, BLOCK_HEADER_KEYS);
|
|
481
|
+
const baseHeader = {
|
|
482
|
+
version: header.version,
|
|
483
|
+
previousHash: header.previousHash,
|
|
484
|
+
merkleRoot: header.merkleRoot,
|
|
485
|
+
time: header.time,
|
|
486
|
+
bits: header.bits,
|
|
487
|
+
nonce: header.nonce
|
|
488
|
+
};
|
|
489
|
+
validateBaseBlockHeaderFormat(baseHeader);
|
|
490
|
+
validateUnsignedHeaderInteger(header.height, 'height', 0x7fffffff);
|
|
491
|
+
if (typeof header.hash !== 'string' || !HEX_32_BYTES.test(header.hash)) {
|
|
305
492
|
throw new Error('Header hash must be 32 hex bytes.');
|
|
306
493
|
}
|
|
307
494
|
if (header.hash !== (0, utilityHelpers_noBuffer_1.asString)(blockHash(header))) {
|
|
@@ -316,6 +503,12 @@ function validateHeaderFormat(header) {
|
|
|
316
503
|
* @returns true if the header is valid
|
|
317
504
|
*/
|
|
318
505
|
function validateHeaderDifficulty(hash, bits) {
|
|
506
|
+
if (!Array.isArray(hash) && !(hash instanceof Uint8Array)) {
|
|
507
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', 'exactly 32 bytes');
|
|
508
|
+
}
|
|
509
|
+
validateByteWindow(hash, 0, hash.length, 'hash');
|
|
510
|
+
if (hash.length !== 32)
|
|
511
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', 'exactly 32 bytes');
|
|
319
512
|
const hashBN = new sdk_1.BigNumber((0, utilityHelpers_noBuffer_1.asArray)(hash));
|
|
320
513
|
const target = validateCompactTarget(bits);
|
|
321
514
|
if (hashBN.lte(target))
|
|
@@ -388,32 +581,39 @@ function blockHash(header) {
|
|
|
388
581
|
* @publicbody
|
|
389
582
|
*/
|
|
390
583
|
function serializeBaseBlockHeader(header, buffer, offset) {
|
|
391
|
-
const
|
|
392
|
-
|
|
393
|
-
writer
|
|
394
|
-
writer.
|
|
395
|
-
writer.
|
|
396
|
-
writer.
|
|
397
|
-
writer.writeUInt32LE(
|
|
584
|
+
const validated = copyBaseHeaderData(header);
|
|
585
|
+
validateBaseBlockHeaderFormat(validated);
|
|
586
|
+
const writer = new utils_1.Writer();
|
|
587
|
+
writer.writeUInt32LE(validated.version);
|
|
588
|
+
writer.write((0, utilityHelpers_noBuffer_1.asArray)(validated.previousHash).reverse());
|
|
589
|
+
writer.write((0, utilityHelpers_noBuffer_1.asArray)(validated.merkleRoot).reverse());
|
|
590
|
+
writer.writeUInt32LE(validated.time);
|
|
591
|
+
writer.writeUInt32LE(validated.bits);
|
|
592
|
+
writer.writeUInt32LE(validated.nonce);
|
|
398
593
|
const data = writer.toArray();
|
|
399
594
|
if (buffer != null) {
|
|
400
|
-
|
|
595
|
+
if (!Array.isArray(buffer))
|
|
596
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'an array');
|
|
597
|
+
offset ??= 0;
|
|
598
|
+
if (!Number.isSafeInteger(offset) || offset < 0 || offset + data.length > buffer.length) {
|
|
599
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', 'a non-negative safe integer with 80 writable bytes');
|
|
600
|
+
}
|
|
401
601
|
for (let i = 0; i < data.length; i++) {
|
|
402
|
-
if (offset + i >= buffer.length) {
|
|
403
|
-
throw new Error(`Buffer overflow at offset ${offset + i} for data length ${data.length}`);
|
|
404
|
-
}
|
|
405
602
|
buffer[offset + i] = data[i];
|
|
406
603
|
}
|
|
407
604
|
}
|
|
408
605
|
return data;
|
|
409
606
|
}
|
|
410
607
|
function serializeBaseBlockHeaders(headers) {
|
|
608
|
+
if (!Array.isArray(headers) || headers.length > MAX_HEADER_COUNT) {
|
|
609
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('headers', `a dense array of no more than ${MAX_HEADER_COUNT} entries`);
|
|
610
|
+
}
|
|
411
611
|
const data = new Uint8Array(headers.length * 80);
|
|
412
|
-
let
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
const d = serializeBaseBlockHeader(
|
|
416
|
-
data.set(d,
|
|
612
|
+
for (let index = 0; index < headers.length; index++) {
|
|
613
|
+
if (!Object.hasOwn(headers, index))
|
|
614
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('headers', 'a dense array');
|
|
615
|
+
const d = serializeBaseBlockHeader(headers[index]);
|
|
616
|
+
data.set(d, index * 80);
|
|
417
617
|
}
|
|
418
618
|
return data;
|
|
419
619
|
}
|
|
@@ -422,7 +622,8 @@ function serializeBaseBlockHeaders(headers) {
|
|
|
422
622
|
* @publicbody
|
|
423
623
|
*/
|
|
424
624
|
function deserializeBaseBlockHeader(buffer, offset = 0) {
|
|
425
|
-
|
|
625
|
+
validateByteWindow(buffer, offset, 80);
|
|
626
|
+
const reader = utils_1.ReaderUint8Array.makeReader(buffer, offset);
|
|
426
627
|
const header = {
|
|
427
628
|
version: reader.readUInt32LE(),
|
|
428
629
|
previousHash: (0, utilityHelpers_noBuffer_1.asString)(reader.read(32).reverse()),
|
|
@@ -434,6 +635,9 @@ function deserializeBaseBlockHeader(buffer, offset = 0) {
|
|
|
434
635
|
return header;
|
|
435
636
|
}
|
|
436
637
|
function deserializeBlockHeader(buffer, height, offset = 0) {
|
|
638
|
+
if (!Number.isSafeInteger(height) || height < 0 || height > MAX_BLOCK_HEIGHT) {
|
|
639
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('height', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
|
|
640
|
+
}
|
|
437
641
|
const base = deserializeBaseBlockHeader(buffer, offset);
|
|
438
642
|
const header = {
|
|
439
643
|
...base,
|
|
@@ -531,6 +735,9 @@ function swapByteOrder(buffer) {
|
|
|
531
735
|
* @publicbody
|
|
532
736
|
*/
|
|
533
737
|
function convertUint32ToBuffer(n, littleEndian = true) {
|
|
738
|
+
validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
|
|
739
|
+
if (typeof littleEndian !== 'boolean')
|
|
740
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('littleEndian', 'a boolean');
|
|
534
741
|
const a = [
|
|
535
742
|
n & 0xff, // lowest byte
|
|
536
743
|
(n >> 8) & 0xff,
|
|
@@ -540,6 +747,8 @@ function convertUint32ToBuffer(n, littleEndian = true) {
|
|
|
540
747
|
return littleEndian ? a : a.reverse();
|
|
541
748
|
}
|
|
542
749
|
function writeUInt32LE(n, a, offset) {
|
|
750
|
+
validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
|
|
751
|
+
validateWritableByteWindow(a, offset, 4);
|
|
543
752
|
a[offset++] = n & 0xff; // lowest byte
|
|
544
753
|
a[offset++] = (n >> 8) & 0xff;
|
|
545
754
|
a[offset++] = (n >> 16) & 0xff;
|
|
@@ -547,6 +756,8 @@ function writeUInt32LE(n, a, offset) {
|
|
|
547
756
|
return offset;
|
|
548
757
|
}
|
|
549
758
|
function writeUInt32BE(n, a, offset) {
|
|
759
|
+
validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
|
|
760
|
+
validateWritableByteWindow(a, offset, 4);
|
|
550
761
|
a[offset++] = (n >> 24) & 0xff; // highest byte
|
|
551
762
|
a[offset++] = (n >> 16) & 0xff;
|
|
552
763
|
a[offset++] = (n >> 8) & 0xff;
|
|
@@ -554,10 +765,12 @@ function writeUInt32BE(n, a, offset) {
|
|
|
554
765
|
return offset;
|
|
555
766
|
}
|
|
556
767
|
function readUInt32LE(a, offset) {
|
|
557
|
-
|
|
768
|
+
validateByteWindow(a, offset, 4);
|
|
769
|
+
return (a[offset++] | (a[offset++] << 8) | (a[offset++] << 16) | (a[offset++] << 24)) >>> 0;
|
|
558
770
|
}
|
|
559
771
|
function readUInt32BE(a, offset) {
|
|
560
|
-
|
|
772
|
+
validateByteWindow(a, offset, 4);
|
|
773
|
+
return ((a[offset++] << 24) | (a[offset++] << 16) | (a[offset++] << 8) | a[offset++]) >>> 0;
|
|
561
774
|
}
|
|
562
775
|
/**
|
|
563
776
|
* @param buffer four byte buffer with Uint32 number encoded
|
|
@@ -566,8 +779,13 @@ function readUInt32BE(a, offset) {
|
|
|
566
779
|
* @publicbody
|
|
567
780
|
*/
|
|
568
781
|
function convertBufferToUint32(buffer, littleEndian = true) {
|
|
782
|
+
validateByteWindow(buffer, 0, 4);
|
|
783
|
+
if (buffer.length !== 4)
|
|
784
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'exactly four bytes');
|
|
785
|
+
if (typeof littleEndian !== 'boolean')
|
|
786
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('littleEndian', 'a boolean');
|
|
569
787
|
const a = littleEndian ? buffer : buffer.slice().reverse();
|
|
570
|
-
const n = a[0] | (a[1] << 8) | (a[2] << 16) | (a[3] << 24);
|
|
788
|
+
const n = (a[0] | (a[1] << 8) | (a[2] << 16) | (a[3] << 24)) >>> 0;
|
|
571
789
|
return n;
|
|
572
790
|
}
|
|
573
791
|
//# sourceMappingURL=blockHeaderUtilities.js.map
|