@bopen-io/wallet-toolbox 2.6.2-brc153.5 → 2.14.5
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 +744 -1
- package/LICENSES/Open-BSV-License-4-wallet-pre-2026.txt +28 -0
- package/README.md +823 -14
- package/THIRD_PARTY_NOTICES.md +35 -0
- package/docs/README.md +44 -31
- package/docs/action-batch-planning.md +80 -37
- package/docs/client.md +12996 -4571
- package/docs/identity-verification.md +218 -0
- package/docs/local-first-chaintracks.md +129 -0
- package/docs/managed-change-liquidity.md +258 -0
- package/docs/managed-change-policy.md +14 -1
- package/docs/monitor.md +505 -190
- package/docs/no-send-expiry.md +167 -0
- package/docs/prepared-beef.md +197 -0
- package/docs/services.md +4013 -1153
- package/docs/setup.md +107 -56
- package/docs/storage.md +5781 -1599
- package/docs/sync-transfer.md +144 -0
- package/docs/wab-shamir.md +5 -1
- package/docs/wallet.md +10188 -10904
- package/out/src/CWIStyleWalletManager.d.ts +39 -31
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +309 -258
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +14 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +6 -2
- package/out/src/Setup.js.map +1 -1
- package/out/src/SetupClient.d.ts +3 -0
- package/out/src/SetupClient.d.ts.map +1 -1
- package/out/src/SetupClient.js +1 -0
- package/out/src/SetupClient.js.map +1 -1
- package/out/src/SetupWallet.d.ts +3 -0
- package/out/src/SetupWallet.d.ts.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 +54 -14
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +216 -114
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +32 -0
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +531 -78
- 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 +101 -43
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +897 -414
- 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 +143 -8
- 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/index.client.d.ts +6 -0
- package/out/src/index.client.d.ts.map +1 -1
- package/out/src/index.client.js +16 -1
- package/out/src/index.client.js.map +1 -1
- package/out/src/index.mobile.d.ts +7 -0
- package/out/src/index.mobile.d.ts.map +1 -1
- package/out/src/index.mobile.js +17 -1
- package/out/src/index.mobile.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 +2 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +54 -14
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +51 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +282 -41
- 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 +6 -1
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +117 -74
- 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/TaskNoSendExpiry.d.ts +19 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.js +47 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.js.map +1 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts +27 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +242 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -0
- 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 +31 -9
- 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 +33 -6
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +189 -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/monitor/tasks/index.all.d.ts +2 -0
- package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
- package/out/src/monitor/tasks/index.all.js +2 -0
- package/out/src/monitor/tasks/index.all.js.map +1 -1
- package/out/src/sdk/ActionBatch.interfaces.d.ts +23 -0
- package/out/src/sdk/ActionBatch.interfaces.d.ts.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/WERR_errors.d.ts +23 -0
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/out/src/sdk/WERR_errors.js +51 -7
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +7 -21
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js +121 -3
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +45 -2
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +87 -4
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.d.ts +3 -2
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +3 -2
- package/out/src/sdk/types.js.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 +346 -120
- 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 +269 -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 +122 -0
- package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -0
- package/out/src/services/chaintracker/LocalChainTracker.js +465 -0
- package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -0
- 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/BulkFileDataCacheApi.d.ts +48 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js +3 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts +70 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js +21 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js.map +1 -0
- 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 +53 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +9 -2
- 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 +28 -3
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +282 -64
- 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 +348 -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 +378 -44
- 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 +230 -28
- 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 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +240 -87
- 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.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +6 -3
- 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/index.all.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.all.js +3 -0
- package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +5 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +51 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +394 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +45 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +733 -166
- 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 +32 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +40 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -0
- 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 +3 -1
- 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 +38 -4
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +191 -47
- 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 +48 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +280 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts +30 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js +57 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js.map +1 -0
- 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 +14 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +148 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +41 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +271 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -0
- 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 +17 -4
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +362 -105
- 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/chaintracker/index.all.d.ts +1 -0
- package/out/src/services/chaintracker/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.all.js +1 -0
- package/out/src/services/chaintracker/index.all.js.map +1 -1
- package/out/src/services/chaintracker/index.client.d.ts +1 -0
- package/out/src/services/chaintracker/index.client.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.client.js +1 -0
- package/out/src/services/chaintracker/index.client.js.map +1 -1
- package/out/src/services/chaintracker/index.mobile.d.ts +1 -0
- package/out/src/services/chaintracker/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.mobile.js +1 -0
- package/out/src/services/chaintracker/index.mobile.js.map +1 -1
- package/out/src/services/classifyOutputUtxo.d.ts +25 -0
- package/out/src/services/classifyOutputUtxo.d.ts.map +1 -0
- package/out/src/services/classifyOutputUtxo.js +96 -0
- package/out/src/services/classifyOutputUtxo.js.map +1 -0
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +16 -3
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +38 -8
- package/out/src/services/createDefaultWalletServicesOptions.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 +38 -23
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +384 -63
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +11 -1
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +111 -33
- 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/arcadeStatus.d.ts +18 -0
- package/out/src/services/providers/arcadeStatus.d.ts.map +1 -0
- package/out/src/services/providers/arcadeStatus.js +56 -0
- package/out/src/services/providers/arcadeStatus.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 +29 -6
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +8 -5
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +186 -73
- 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 +3 -1
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts +7 -0
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js +254 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -0
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +9 -5
- 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 +12 -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 +11 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +134 -44
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +68 -7
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +551 -105
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +41 -10
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +397 -107
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +9 -3
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +21 -43
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +4 -0
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +68 -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 +31 -6
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +166 -75
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +3 -1
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +38 -49
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminUi.js +32 -9
- package/out/src/storage/adminServer/adminUi.js.map +1 -1
- package/out/src/storage/adminServer/reviewUtxos.d.ts +27 -0
- package/out/src/storage/adminServer/reviewUtxos.d.ts.map +1 -0
- package/out/src/storage/adminServer/reviewUtxos.js +62 -0
- package/out/src/storage/adminServer/reviewUtxos.js.map +1 -0
- package/out/src/storage/idbHelpers.d.ts.map +1 -1
- package/out/src/storage/idbHelpers.js +14 -2
- package/out/src/storage/idbHelpers.js.map +1 -1
- package/out/src/storage/index.all.d.ts +3 -0
- package/out/src/storage/index.all.d.ts.map +1 -1
- package/out/src/storage/index.all.js +3 -0
- package/out/src/storage/index.all.js.map +1 -1
- package/out/src/storage/index.client.d.ts +1 -0
- package/out/src/storage/index.client.d.ts.map +1 -1
- package/out/src/storage/index.client.js +1 -0
- package/out/src/storage/index.client.js.map +1 -1
- package/out/src/storage/index.mobile.d.ts +1 -0
- package/out/src/storage/index.mobile.d.ts.map +1 -1
- package/out/src/storage/index.mobile.js +1 -0
- package/out/src/storage/index.mobile.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 +5 -44
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/actionBatch.d.ts +9 -2
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatch.js +260 -67
- 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 +47 -26
- 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 +59 -110
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/availableManagedChange.d.ts +8 -1
- package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -1
- package/out/src/storage/methods/availableManagedChange.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +60 -3
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +390 -105
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +15 -5
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +187 -27
- 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 +171 -133
- 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 +22 -11
- 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 +25 -18
- 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 +32 -30
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/managedChangePolicy.d.ts +44 -0
- package/out/src/storage/methods/managedChangePolicy.d.ts.map +1 -0
- package/out/src/storage/methods/managedChangePolicy.js +58 -0
- package/out/src/storage/methods/managedChangePolicy.js.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts +13 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js +16 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js.map +1 -0
- package/out/src/storage/methods/noSendExpiry.d.ts +11 -0
- package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiry.js +359 -0
- package/out/src/storage/methods/noSendExpiry.js.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts +14 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js +691 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js.map +1 -0
- package/out/src/storage/methods/preparedBeef.d.ts +104 -0
- package/out/src/storage/methods/preparedBeef.d.ts.map +1 -0
- package/out/src/storage/methods/preparedBeef.js +524 -0
- package/out/src/storage/methods/preparedBeef.js.map +1 -0
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +144 -32
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/purgeData.d.ts.map +1 -1
- package/out/src/storage/methods/purgeData.js +21 -3
- package/out/src/storage/methods/purgeData.js.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +32 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js +142 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -0
- package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatus.js +7 -4
- package/out/src/storage/methods/reviewStatus.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 +38 -0
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -0
- package/out/src/storage/methods/reviewUtxoOutputs.js +197 -0
- package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -0
- package/out/src/storage/methods/validateSyncProof.d.ts +32 -0
- package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -0
- package/out/src/storage/methods/validateSyncProof.js +139 -0
- package/out/src/storage/methods/validateSyncProof.js.map +1 -0
- package/out/src/storage/portable/index.d.ts.map +1 -1
- package/out/src/storage/portable/index.js +25 -15
- 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/KnexPaymentReplayStore.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexPaymentReplayStore.js +1 -0
- package/out/src/storage/remoting/KnexPaymentReplayStore.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 +221 -40
- 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 +57 -10
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +372 -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 +221 -20
- 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 +6 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +194 -5
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/StorageIdbSchema.d.ts +3 -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 +24 -4
- package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.js +5 -2
- package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +4 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +125 -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 +4 -2
- package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +12 -6
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.d.ts +26 -0
- package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.js +221 -21
- package/out/src/storage/schema/entities/EntityTransaction.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/TablePreparedBeef.interfaces.d.ts +23 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js +3 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js.map +1 -0
- 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 +2 -2
- 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 +17 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.js +14 -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/Argon2idBackend.d.ts +36 -0
- package/out/src/utility/Argon2idBackend.d.ts.map +1 -0
- package/out/src/utility/Argon2idBackend.js +60 -0
- package/out/src/utility/Argon2idBackend.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/beefForTxids.d.ts +12 -3
- package/out/src/utility/beefForTxids.d.ts.map +1 -1
- package/out/src/utility/beefForTxids.js +69 -21
- package/out/src/utility/beefForTxids.js.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.d.ts +16 -0
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.js +20 -5
- package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
- package/out/src/utility/brc177NoSendExpiry.d.ts +34 -0
- package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -0
- package/out/src/utility/brc177NoSendExpiry.js +81 -0
- package/out/src/utility/brc177NoSendExpiry.js.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts +12 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.js +23 -0
- package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -0
- package/out/src/utility/exactActionSpend.d.ts +9 -0
- package/out/src/utility/exactActionSpend.d.ts.map +1 -0
- package/out/src/utility/exactActionSpend.js +26 -0
- package/out/src/utility/exactActionSpend.js.map +1 -0
- package/out/src/utility/hashWasm.d.ts +1 -1
- package/out/src/utility/hashWasm.d.ts.map +1 -1
- package/out/src/utility/hashWasm.js +83 -1
- package/out/src/utility/hashWasm.js.map +1 -1
- 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 +523 -61
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/index.all.d.ts +2 -0
- package/out/src/utility/index.all.d.ts.map +1 -1
- package/out/src/utility/index.all.js +2 -0
- package/out/src/utility/index.all.js.map +1 -1
- package/out/src/utility/index.client.d.ts +2 -0
- package/out/src/utility/index.client.d.ts.map +1 -1
- package/out/src/utility/index.client.js +2 -0
- package/out/src/utility/index.client.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts.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 +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +10 -7
- 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 +4 -17
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +35 -12
- 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/WABTransport.d.ts +17 -23
- package/out/src/wab-client/WABTransport.d.ts.map +1 -1
- package/out/src/wab-client/WABTransport.js +130 -142
- package/out/src/wab-client/WABTransport.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +8 -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 +36 -32
- package/docs/open-rpc/index.html +0 -46
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GoChaintracksServiceClient = void 0;
|
|
4
4
|
const utilityHelpers_noBuffer_1 = require("../../../utility/utilityHelpers.noBuffer");
|
|
5
|
+
const blockHeaderUtilities_1 = require("./util/blockHeaderUtilities");
|
|
6
|
+
const safeDiagnostic_1 = require("./util/safeDiagnostic");
|
|
5
7
|
/**
|
|
6
8
|
* Client for go-chaintracks compatible HTTP services, including Arcade's
|
|
7
9
|
* `/chaintracks/v2` surface. Unlike the legacy ChaintracksServiceClient, this
|
|
@@ -10,37 +12,70 @@ const utilityHelpers_noBuffer_1 = require("../../../utility/utilityHelpers.noBuf
|
|
|
10
12
|
*/
|
|
11
13
|
class GoChaintracksServiceClient {
|
|
12
14
|
chain;
|
|
15
|
+
/** SSE client; reorg registration is a supported additive capability. */
|
|
16
|
+
supportsReorgEvents = true;
|
|
17
|
+
static MAX_CONFIGURED_BYTES = 512 * 1024 * 1024;
|
|
18
|
+
static MAX_SUBSCRIPTIONS = 100_000;
|
|
13
19
|
baseUrl;
|
|
14
20
|
fetcher;
|
|
15
21
|
requestTimeoutMsecs;
|
|
16
22
|
reconnectWaitMsecs;
|
|
17
23
|
reconnectWaitMaxMsecs;
|
|
24
|
+
maxJsonResponseBytes;
|
|
25
|
+
maxBinaryResponseBytes;
|
|
26
|
+
maxSseEventBytes;
|
|
27
|
+
maxReorgHeaders;
|
|
28
|
+
streamIdleTimeoutMsecs;
|
|
18
29
|
subscriptions = new Map();
|
|
19
30
|
nextSubscriptionId = 1;
|
|
20
31
|
constructor(chain, serviceUrl, options = {}) {
|
|
21
32
|
this.chain = chain;
|
|
22
|
-
|
|
33
|
+
if (typeof chain !== 'string' || this.normalizeChain(chain) !== chain) {
|
|
34
|
+
throw new Error('chain must be a supported canonical ChainTracks network.');
|
|
35
|
+
}
|
|
36
|
+
if (options == null || typeof options !== 'object' || Array.isArray(options)) {
|
|
37
|
+
throw new Error('options must be a plain data object.');
|
|
38
|
+
}
|
|
39
|
+
const optionDescriptors = Object.getOwnPropertyDescriptors(options);
|
|
40
|
+
if (Object.values(optionDescriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
|
|
41
|
+
throw new Error('options must contain accessor-free data properties.');
|
|
42
|
+
}
|
|
43
|
+
options = Object.freeze({ ...options });
|
|
44
|
+
const parsedServiceUrl = this.parseServiceUrl(serviceUrl);
|
|
45
|
+
let base = parsedServiceUrl.toString();
|
|
23
46
|
while (base.endsWith('/'))
|
|
24
47
|
base = base.slice(0, -1);
|
|
25
48
|
let prefix = options.apiPrefix ?? '';
|
|
26
49
|
if (prefix !== '') {
|
|
50
|
+
if (/[[\]\\?#]/.test(prefix) || prefix.split('/').some(part => part === '..' || part === '.')) {
|
|
51
|
+
throw new Error('apiPrefix must be an absolute URL path without traversal, query, or fragment.');
|
|
52
|
+
}
|
|
27
53
|
if (!prefix.startsWith('/'))
|
|
28
54
|
prefix = `/${prefix}`;
|
|
29
55
|
while (prefix.endsWith('/'))
|
|
30
56
|
prefix = prefix.slice(0, -1);
|
|
31
57
|
}
|
|
32
58
|
this.baseUrl = `${base}${prefix}`;
|
|
33
|
-
|
|
59
|
+
const fetchImpl = options.fetch ?? fetch;
|
|
60
|
+
if (typeof fetchImpl !== 'function')
|
|
61
|
+
throw new Error('fetch must be a function.');
|
|
62
|
+
// Call fetch with no receiver: browsers refuse it on anything but the window.
|
|
63
|
+
this.fetcher = async (input, init) => await fetchImpl(input, init);
|
|
34
64
|
this.requestTimeoutMsecs = options.requestTimeoutMsecs ?? 30000;
|
|
35
65
|
this.reconnectWaitMsecs = options.reconnectWaitMsecs ?? 1000;
|
|
36
66
|
this.reconnectWaitMaxMsecs = options.reconnectWaitMaxMsecs ?? 60000;
|
|
67
|
+
this.maxJsonResponseBytes = this.readPositiveOption(options.maxJsonResponseBytes, 1024 * 1024, 'maxJsonResponseBytes', GoChaintracksServiceClient.MAX_CONFIGURED_BYTES);
|
|
68
|
+
this.maxBinaryResponseBytes = this.readPositiveOption(options.maxBinaryResponseBytes, 32 * 1024 * 1024, 'maxBinaryResponseBytes', GoChaintracksServiceClient.MAX_CONFIGURED_BYTES);
|
|
69
|
+
this.maxSseEventBytes = this.readPositiveOption(options.maxSseEventBytes, 1024 * 1024, 'maxSseEventBytes', GoChaintracksServiceClient.MAX_CONFIGURED_BYTES);
|
|
70
|
+
this.maxReorgHeaders = this.readPositiveOption(options.maxReorgHeaders, 4096, 'maxReorgHeaders', 100_000);
|
|
71
|
+
this.streamIdleTimeoutMsecs = this.readPositiveOption(options.streamIdleTimeoutMsecs, 45_000, 'streamIdleTimeoutMsecs', 60 * 60 * 1000);
|
|
37
72
|
for (const [name, value] of [
|
|
38
73
|
['requestTimeoutMsecs', this.requestTimeoutMsecs],
|
|
39
74
|
['reconnectWaitMsecs', this.reconnectWaitMsecs],
|
|
40
75
|
['reconnectWaitMaxMsecs', this.reconnectWaitMaxMsecs]
|
|
41
76
|
]) {
|
|
42
|
-
if (!Number.isSafeInteger(value) || value < 1) {
|
|
43
|
-
throw new Error(`${name} must be a positive integer.`);
|
|
77
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > 60 * 60 * 1000) {
|
|
78
|
+
throw new Error(`${name} must be a positive integer no greater than 3600000.`);
|
|
44
79
|
}
|
|
45
80
|
}
|
|
46
81
|
if (this.reconnectWaitMaxMsecs < this.reconnectWaitMsecs) {
|
|
@@ -55,8 +90,16 @@ class GoChaintracksServiceClient {
|
|
|
55
90
|
return h != null && root === (0, utilityHelpers_noBuffer_1.asString)(h.merkleRoot);
|
|
56
91
|
}
|
|
57
92
|
async getChain() {
|
|
58
|
-
const
|
|
59
|
-
|
|
93
|
+
const value = await this.getJson('/network');
|
|
94
|
+
const network = typeof value === 'string' ? value : this.readExactRecord(value, ['network'], 'network response').network;
|
|
95
|
+
if (typeof network !== 'string' || network.length > 64) {
|
|
96
|
+
throw new Error('ChainTracks upstream returned an invalid network.');
|
|
97
|
+
}
|
|
98
|
+
const actual = this.normalizeChain(network);
|
|
99
|
+
if (actual !== this.chain) {
|
|
100
|
+
throw new Error(`ChainTracks upstream network '${actual}' does not match configured chain '${this.chain}'.`);
|
|
101
|
+
}
|
|
102
|
+
return actual;
|
|
60
103
|
}
|
|
61
104
|
async getInfo() {
|
|
62
105
|
const tip = await this.findChainTipHeader();
|
|
@@ -71,24 +114,60 @@ class GoChaintracksServiceClient {
|
|
|
71
114
|
};
|
|
72
115
|
}
|
|
73
116
|
async getPresentHeight() {
|
|
74
|
-
const
|
|
75
|
-
|
|
117
|
+
const value = await this.getJson('/height');
|
|
118
|
+
const height = typeof value === 'number' ? value : this.readExactRecord(value, ['height'], 'height response').height;
|
|
119
|
+
return this.validateHeight(height, 'upstream height');
|
|
76
120
|
}
|
|
77
121
|
async getHeaders(height, count) {
|
|
78
|
-
|
|
122
|
+
this.validateHeight(height, 'height');
|
|
123
|
+
if (!Number.isSafeInteger(count) || count < 1) {
|
|
124
|
+
throw new Error('count must be a positive safe integer.');
|
|
125
|
+
}
|
|
126
|
+
if (count > Math.floor(this.maxBinaryResponseBytes / 80)) {
|
|
127
|
+
throw new Error('count exceeds the configured binary response limit.');
|
|
128
|
+
}
|
|
129
|
+
const bytes = await this.getBinary(`/headers.bin?height=${height}&count=${count}`, count * 80);
|
|
130
|
+
if (bytes.length % 80 !== 0) {
|
|
131
|
+
throw new Error('ChainTracks upstream returned a non-canonical binary header response.');
|
|
132
|
+
}
|
|
133
|
+
const headers = (0, blockHeaderUtilities_1.deserializeBlockHeaders)(height, bytes);
|
|
134
|
+
for (const [index, header] of headers.entries()) {
|
|
135
|
+
this.validateRemoteHeader(header, `binary header ${index}`);
|
|
136
|
+
if (index > 0 && header.previousHash !== headers[index - 1]?.hash) {
|
|
137
|
+
throw new Error('ChainTracks upstream returned an unlinked binary header response.');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
79
140
|
return (0, utilityHelpers_noBuffer_1.asString)(bytes);
|
|
80
141
|
}
|
|
81
142
|
async findChainTipHeader() {
|
|
82
|
-
return await this.getJson('/tip');
|
|
143
|
+
return this.validateRemoteHeader(await this.getJson('/tip'), 'chain tip');
|
|
83
144
|
}
|
|
84
145
|
async findChainTipHash() {
|
|
85
146
|
return (await this.findChainTipHeader()).hash;
|
|
86
147
|
}
|
|
87
148
|
async findHeaderForHeight(height) {
|
|
88
|
-
|
|
149
|
+
this.validateHeight(height, 'height');
|
|
150
|
+
const value = await this.getJsonOrUndefined(`/header/height/${height}`);
|
|
151
|
+
if (value === undefined)
|
|
152
|
+
return undefined;
|
|
153
|
+
const header = this.validateRemoteHeader(value, 'header-by-height response');
|
|
154
|
+
if (header.height !== height) {
|
|
155
|
+
throw new Error('ChainTracks upstream returned a header for the wrong height.');
|
|
156
|
+
}
|
|
157
|
+
return header;
|
|
89
158
|
}
|
|
90
159
|
async findHeaderForBlockHash(hash) {
|
|
91
|
-
|
|
160
|
+
if (!/^[0-9a-fA-F]{64}$/.test(hash)) {
|
|
161
|
+
throw new Error('hash must be exactly 32 hexadecimal bytes.');
|
|
162
|
+
}
|
|
163
|
+
const value = await this.getJsonOrUndefined(`/header/hash/${hash}`);
|
|
164
|
+
if (value === undefined)
|
|
165
|
+
return undefined;
|
|
166
|
+
const header = this.validateRemoteHeader(value, 'header-by-hash response');
|
|
167
|
+
if (header.hash.toLowerCase() !== hash.toLowerCase()) {
|
|
168
|
+
throw new Error('ChainTracks upstream returned a header for the wrong hash.');
|
|
169
|
+
}
|
|
170
|
+
return header;
|
|
92
171
|
}
|
|
93
172
|
async addHeader(_header) {
|
|
94
173
|
throw new Error('GoChaintracksServiceClient.addHeader is not supported by the remote v2 API.');
|
|
@@ -112,19 +191,52 @@ class GoChaintracksServiceClient {
|
|
|
112
191
|
return await this.isListening();
|
|
113
192
|
}
|
|
114
193
|
async subscribeHeaders(listener) {
|
|
194
|
+
this.validateListener(listener);
|
|
115
195
|
return this.subscribe('header', '/tip/stream', payload => {
|
|
116
|
-
listener(payload);
|
|
196
|
+
listener(this.validateRemoteHeader(payload, 'tip stream event'));
|
|
117
197
|
});
|
|
118
198
|
}
|
|
119
199
|
async subscribeReorgs(listener) {
|
|
200
|
+
this.validateListener(listener);
|
|
120
201
|
return this.subscribe('reorg', '/reorg/stream', payload => {
|
|
121
|
-
const event = payload;
|
|
122
|
-
|
|
123
|
-
|
|
202
|
+
const event = this.readExactRecord(payload, ['depth', 'oldTip', 'newTip', 'deactivatedHeaders'], 'reorg stream event', ['deactivatedHeaders']);
|
|
203
|
+
const depth = event.depth;
|
|
204
|
+
if (!Number.isSafeInteger(depth) || depth < 0 || depth > this.maxReorgHeaders) {
|
|
205
|
+
throw new Error('ChainTracks upstream returned an invalid reorg depth.');
|
|
206
|
+
}
|
|
207
|
+
const oldTip = this.validateRemoteHeader(event.oldTip, 'reorg old tip');
|
|
208
|
+
const newTip = this.validateRemoteHeader(event.newTip, 'reorg new tip');
|
|
209
|
+
let deactivatedHeaders;
|
|
210
|
+
if (event.deactivatedHeaders !== undefined) {
|
|
211
|
+
if (!Array.isArray(event.deactivatedHeaders) || event.deactivatedHeaders.length > this.maxReorgHeaders) {
|
|
212
|
+
throw new Error('ChainTracks upstream returned an invalid deactivated-header list.');
|
|
213
|
+
}
|
|
214
|
+
deactivatedHeaders = event.deactivatedHeaders.map((header, index) => this.validateRemoteHeader(header, `deactivated header ${index}`));
|
|
215
|
+
if (deactivatedHeaders.length > depth) {
|
|
216
|
+
throw new Error('ChainTracks upstream returned more deactivated headers than the reorg depth.');
|
|
217
|
+
}
|
|
218
|
+
if (deactivatedHeaders.length > 0 && deactivatedHeaders[0].hash !== oldTip.hash) {
|
|
219
|
+
throw new Error('ChainTracks upstream returned a deactivated-header list that does not start at the old tip.');
|
|
220
|
+
}
|
|
221
|
+
const seen = new Set();
|
|
222
|
+
for (let index = 0; index < deactivatedHeaders.length; index++) {
|
|
223
|
+
const header = deactivatedHeaders[index];
|
|
224
|
+
if (seen.has(header.hash))
|
|
225
|
+
throw new Error('ChainTracks upstream returned duplicate deactivated headers.');
|
|
226
|
+
seen.add(header.hash);
|
|
227
|
+
const parent = deactivatedHeaders[index + 1];
|
|
228
|
+
if (parent != null && (header.height !== parent.height + 1 || header.previousHash !== parent.hash)) {
|
|
229
|
+
throw new Error('ChainTracks upstream returned an unlinked deactivated-header list.');
|
|
230
|
+
}
|
|
231
|
+
}
|
|
124
232
|
}
|
|
233
|
+
listener(depth, oldTip, newTip, deactivatedHeaders);
|
|
125
234
|
});
|
|
126
235
|
}
|
|
127
236
|
async unsubscribe(subscriptionId) {
|
|
237
|
+
if (typeof subscriptionId !== 'string' || subscriptionId.length === 0 || subscriptionId.length > 128) {
|
|
238
|
+
throw new Error('subscriptionId must be a non-empty bounded string.');
|
|
239
|
+
}
|
|
128
240
|
const sub = this.subscriptions.get(subscriptionId);
|
|
129
241
|
if (sub == null)
|
|
130
242
|
return false;
|
|
@@ -134,6 +246,12 @@ class GoChaintracksServiceClient {
|
|
|
134
246
|
return true;
|
|
135
247
|
}
|
|
136
248
|
async subscribe(type, path, onPayload) {
|
|
249
|
+
if (this.subscriptions.size >= GoChaintracksServiceClient.MAX_SUBSCRIPTIONS) {
|
|
250
|
+
throw new Error('ChainTracks subscription capacity has been reached.');
|
|
251
|
+
}
|
|
252
|
+
if (!Number.isSafeInteger(this.nextSubscriptionId) || this.nextSubscriptionId < 1) {
|
|
253
|
+
throw new Error('ChainTracks subscription id space has been exhausted.');
|
|
254
|
+
}
|
|
137
255
|
const id = `${type}-${this.nextSubscriptionId++}`;
|
|
138
256
|
const abort = new AbortController();
|
|
139
257
|
const done = this.runSseWithReconnect(path, abort.signal, onPayload);
|
|
@@ -192,23 +310,28 @@ class GoChaintracksServiceClient {
|
|
|
192
310
|
try {
|
|
193
311
|
const response = await this.fetcher(this.url(path), {
|
|
194
312
|
headers: { Accept: 'text/event-stream' },
|
|
313
|
+
redirect: 'error',
|
|
195
314
|
signal: controller.signal
|
|
196
315
|
});
|
|
197
316
|
clearTimeout(timeout);
|
|
198
317
|
if (!response.ok) {
|
|
199
|
-
|
|
318
|
+
await response.body?.cancel().catch(() => { });
|
|
319
|
+
throw new Error(`GET ${this.url(path)} failed ${response.status} ${(0, safeDiagnostic_1.safeDiagnostic)(response.statusText, 128)}`);
|
|
200
320
|
}
|
|
201
321
|
if (response.body == null) {
|
|
202
322
|
throw new Error(`GET ${this.url(path)} returned no response body`);
|
|
203
323
|
}
|
|
204
324
|
const reader = response.body.getReader();
|
|
205
|
-
const decoder = new TextDecoder();
|
|
325
|
+
const decoder = new TextDecoder('utf-8', { fatal: true });
|
|
206
326
|
let buffer = '';
|
|
207
327
|
try {
|
|
208
328
|
for (;;) {
|
|
209
|
-
const { done, value } = await reader.
|
|
329
|
+
const { done, value } = await this.readStreamChunk(reader, controller.signal, this.streamIdleTimeoutMsecs);
|
|
210
330
|
if (done)
|
|
211
331
|
break;
|
|
332
|
+
if (value.byteLength > this.maxSseEventBytes) {
|
|
333
|
+
throw new Error('ChainTracks upstream SSE chunk exceeds the configured byte limit.');
|
|
334
|
+
}
|
|
212
335
|
buffer += decoder.decode(value, { stream: true });
|
|
213
336
|
buffer = this.processSseBuffer(buffer, observePayload);
|
|
214
337
|
}
|
|
@@ -216,11 +339,13 @@ class GoChaintracksServiceClient {
|
|
|
216
339
|
this.processSseBuffer(`${buffer}\n\n`, observePayload);
|
|
217
340
|
}
|
|
218
341
|
finally {
|
|
342
|
+
await reader.cancel().catch(() => { });
|
|
219
343
|
reader.releaseLock();
|
|
220
344
|
}
|
|
221
345
|
}
|
|
222
346
|
finally {
|
|
223
347
|
clearTimeout(timeout);
|
|
348
|
+
controller.abort();
|
|
224
349
|
signal.removeEventListener('abort', onAbort);
|
|
225
350
|
}
|
|
226
351
|
return receivedEvent;
|
|
@@ -229,9 +354,12 @@ class GoChaintracksServiceClient {
|
|
|
229
354
|
buffer = buffer.replaceAll('\r\n', '\n');
|
|
230
355
|
for (;;) {
|
|
231
356
|
const boundary = buffer.indexOf('\n\n');
|
|
232
|
-
if (boundary < 0)
|
|
357
|
+
if (boundary < 0) {
|
|
358
|
+
this.assertSseSize(buffer);
|
|
233
359
|
return buffer;
|
|
360
|
+
}
|
|
234
361
|
const eventText = buffer.slice(0, boundary);
|
|
362
|
+
this.assertSseSize(eventText);
|
|
235
363
|
buffer = buffer.slice(boundary + 2);
|
|
236
364
|
const data = eventText
|
|
237
365
|
.split(/\r?\n/)
|
|
@@ -240,12 +368,15 @@ class GoChaintracksServiceClient {
|
|
|
240
368
|
.join('\n');
|
|
241
369
|
if (data === '')
|
|
242
370
|
continue;
|
|
371
|
+
let payload;
|
|
243
372
|
try {
|
|
244
|
-
|
|
373
|
+
payload = JSON.parse(data);
|
|
245
374
|
}
|
|
246
375
|
catch {
|
|
247
376
|
// Ignore malformed events; the next SSE event can still be valid.
|
|
377
|
+
continue;
|
|
248
378
|
}
|
|
379
|
+
onPayload(payload);
|
|
249
380
|
}
|
|
250
381
|
}
|
|
251
382
|
async getJson(path) {
|
|
@@ -255,43 +386,246 @@ class GoChaintracksServiceClient {
|
|
|
255
386
|
return r;
|
|
256
387
|
}
|
|
257
388
|
async getJsonOrUndefined(path) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
389
|
+
return await this.consumeWithTimeout(this.url(path), { headers: { Accept: 'application/json' } }, async (response, signal) => {
|
|
390
|
+
if (response.status === 404) {
|
|
391
|
+
await response.body?.cancel().catch(() => { });
|
|
392
|
+
return undefined;
|
|
393
|
+
}
|
|
394
|
+
if (!response.ok) {
|
|
395
|
+
await response.body?.cancel().catch(() => { });
|
|
396
|
+
throw new Error(`GET ${this.url(path)} failed ${response.status} ${response.statusText}`);
|
|
397
|
+
}
|
|
398
|
+
const bytes = await this.readBoundedBody(response, this.maxJsonResponseBytes, signal);
|
|
399
|
+
let value;
|
|
400
|
+
try {
|
|
401
|
+
value = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(bytes));
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
throw new Error(`GET ${this.url(path)} returned invalid JSON.`);
|
|
405
|
+
}
|
|
406
|
+
if (this.isPlainRecord(value) && Object.hasOwn(value, 'status')) {
|
|
407
|
+
const envelope = this.readRecord(value, ['status', 'value', 'code', 'description'], 'legacy ChainTracks envelope');
|
|
408
|
+
if (envelope.status === 'success' && Object.hasOwn(envelope, 'value')) {
|
|
409
|
+
return envelope.value;
|
|
410
|
+
}
|
|
411
|
+
if (envelope.status === 'error') {
|
|
412
|
+
const description = envelope.description;
|
|
413
|
+
if (description !== undefined && (typeof description !== 'string' || description.length > 4096)) {
|
|
414
|
+
throw new Error('ChainTracks upstream returned an invalid error envelope.');
|
|
415
|
+
}
|
|
416
|
+
throw new Error(typeof description === 'string' ? (0, safeDiagnostic_1.safeDiagnostic)(description) : `GET ${this.url(path)} failed`);
|
|
417
|
+
}
|
|
418
|
+
throw new Error('ChainTracks upstream returned an invalid legacy envelope.');
|
|
419
|
+
}
|
|
420
|
+
return value;
|
|
421
|
+
});
|
|
273
422
|
}
|
|
274
|
-
async getBinary(path) {
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
423
|
+
async getBinary(path, expectedMaximum) {
|
|
424
|
+
const maximum = Math.min(this.maxBinaryResponseBytes, expectedMaximum);
|
|
425
|
+
return await this.consumeWithTimeout(this.url(path), { headers: { Accept: 'application/octet-stream' } }, async (response, signal) => {
|
|
426
|
+
if (!response.ok) {
|
|
427
|
+
await response.body?.cancel().catch(() => { });
|
|
428
|
+
throw new Error(`GET ${this.url(path)} failed ${response.status} ${(0, safeDiagnostic_1.safeDiagnostic)(response.statusText, 128)}`);
|
|
429
|
+
}
|
|
430
|
+
return await this.readBoundedBody(response, maximum, signal);
|
|
431
|
+
});
|
|
280
432
|
}
|
|
281
|
-
async
|
|
433
|
+
async consumeWithTimeout(url, init, consume) {
|
|
282
434
|
const controller = new AbortController();
|
|
283
435
|
const timeout = setTimeout(() => controller.abort(), this.requestTimeoutMsecs);
|
|
284
436
|
try {
|
|
285
|
-
|
|
437
|
+
const response = await this.fetcher(url, {
|
|
438
|
+
...init,
|
|
439
|
+
redirect: 'error',
|
|
440
|
+
signal: controller.signal
|
|
441
|
+
});
|
|
442
|
+
return await consume(response, controller.signal);
|
|
286
443
|
}
|
|
287
444
|
finally {
|
|
288
445
|
clearTimeout(timeout);
|
|
446
|
+
controller.abort();
|
|
289
447
|
}
|
|
290
448
|
}
|
|
449
|
+
async readBoundedBody(response, maximum, signal) {
|
|
450
|
+
const contentLength = response.headers.get('content-length');
|
|
451
|
+
if (contentLength != null) {
|
|
452
|
+
if (!/^(0|[1-9]\d*)$/.test(contentLength)) {
|
|
453
|
+
throw new Error('ChainTracks upstream returned an invalid Content-Length.');
|
|
454
|
+
}
|
|
455
|
+
const declared = Number(contentLength);
|
|
456
|
+
if (!Number.isSafeInteger(declared) || declared > maximum) {
|
|
457
|
+
throw new Error('ChainTracks upstream response exceeds the configured byte limit.');
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
if (response.body == null)
|
|
461
|
+
return new Uint8Array(0);
|
|
462
|
+
const reader = response.body.getReader();
|
|
463
|
+
const chunks = [];
|
|
464
|
+
let length = 0;
|
|
465
|
+
try {
|
|
466
|
+
for (;;) {
|
|
467
|
+
const { done, value } = await this.readStreamChunk(reader, signal);
|
|
468
|
+
if (done)
|
|
469
|
+
break;
|
|
470
|
+
if (!(value instanceof Uint8Array)) {
|
|
471
|
+
throw new Error('ChainTracks upstream returned a non-byte response body.');
|
|
472
|
+
}
|
|
473
|
+
length += value.byteLength;
|
|
474
|
+
if (!Number.isSafeInteger(length) || length > maximum) {
|
|
475
|
+
throw new Error('ChainTracks upstream response exceeds the configured byte limit.');
|
|
476
|
+
}
|
|
477
|
+
chunks.push(value);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
finally {
|
|
481
|
+
await reader.cancel().catch(() => { });
|
|
482
|
+
reader.releaseLock();
|
|
483
|
+
}
|
|
484
|
+
const result = new Uint8Array(length);
|
|
485
|
+
let offset = 0;
|
|
486
|
+
for (const chunk of chunks) {
|
|
487
|
+
result.set(chunk, offset);
|
|
488
|
+
offset += chunk.byteLength;
|
|
489
|
+
}
|
|
490
|
+
return result;
|
|
491
|
+
}
|
|
492
|
+
async readStreamChunk(reader, signal, idleTimeoutMsecs) {
|
|
493
|
+
if (signal.aborted)
|
|
494
|
+
throw this.abortError();
|
|
495
|
+
return await new Promise((resolve, reject) => {
|
|
496
|
+
let settled = false;
|
|
497
|
+
let timeout;
|
|
498
|
+
const finish = (action, value) => {
|
|
499
|
+
if (settled)
|
|
500
|
+
return;
|
|
501
|
+
settled = true;
|
|
502
|
+
if (timeout != null)
|
|
503
|
+
clearTimeout(timeout);
|
|
504
|
+
signal.removeEventListener('abort', onAbort);
|
|
505
|
+
action(value);
|
|
506
|
+
};
|
|
507
|
+
const onAbort = () => finish(reject, this.abortError());
|
|
508
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
509
|
+
if (idleTimeoutMsecs != null) {
|
|
510
|
+
timeout = setTimeout(() => finish(reject, new Error('ChainTracks upstream stream exceeded its idle timeout.')), idleTimeoutMsecs);
|
|
511
|
+
}
|
|
512
|
+
reader.read().then(result => finish(resolve, result), error => finish(reject, error instanceof Error ? error : new Error(String(error))));
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
abortError() {
|
|
516
|
+
const error = new Error('ChainTracks upstream request exceeded its deadline.');
|
|
517
|
+
error.name = 'AbortError';
|
|
518
|
+
return error;
|
|
519
|
+
}
|
|
520
|
+
assertSseSize(value) {
|
|
521
|
+
if (new TextEncoder().encode(value).byteLength > this.maxSseEventBytes) {
|
|
522
|
+
throw new Error('ChainTracks upstream SSE event exceeds the configured byte limit.');
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
validateHeight(value, name) {
|
|
526
|
+
if (!Number.isSafeInteger(value) || value < 0 || value > 0x7fffffff) {
|
|
527
|
+
throw new Error(`${name} must be an integer between 0 and 2147483647.`);
|
|
528
|
+
}
|
|
529
|
+
return value;
|
|
530
|
+
}
|
|
531
|
+
validateRemoteHeader(value, name) {
|
|
532
|
+
const baseKeys = ['version', 'previousHash', 'merkleRoot', 'time', 'bits', 'nonce', 'height', 'hash'];
|
|
533
|
+
const liveKeys = ['chainWork', 'isChainTip', 'isActive', 'headerId', 'previousHeaderId'];
|
|
534
|
+
const record = this.readExactRecord(value, [...baseKeys, ...liveKeys], name, liveKeys);
|
|
535
|
+
const presentLiveKeys = liveKeys.filter(key => Object.hasOwn(record, key));
|
|
536
|
+
if ((presentLiveKeys.length !== 0 && presentLiveKeys.length !== liveKeys.length) ||
|
|
537
|
+
(record.chainWork !== undefined &&
|
|
538
|
+
(typeof record.chainWork !== 'string' || !/^[0-9a-fA-F]{64}$/.test(record.chainWork))) ||
|
|
539
|
+
(record.isChainTip !== undefined && typeof record.isChainTip !== 'boolean') ||
|
|
540
|
+
(record.isActive !== undefined && typeof record.isActive !== 'boolean') ||
|
|
541
|
+
(record.headerId !== undefined && (!Number.isSafeInteger(record.headerId) || record.headerId < 1)) ||
|
|
542
|
+
(record.previousHeaderId !== undefined &&
|
|
543
|
+
record.previousHeaderId !== null &&
|
|
544
|
+
(!Number.isSafeInteger(record.previousHeaderId) || record.previousHeaderId < 1))) {
|
|
545
|
+
throw new Error(`ChainTracks upstream returned an invalid ${name}.`);
|
|
546
|
+
}
|
|
547
|
+
const header = {
|
|
548
|
+
version: record.version,
|
|
549
|
+
previousHash: record.previousHash,
|
|
550
|
+
merkleRoot: record.merkleRoot,
|
|
551
|
+
time: record.time,
|
|
552
|
+
bits: record.bits,
|
|
553
|
+
nonce: record.nonce,
|
|
554
|
+
height: record.height,
|
|
555
|
+
hash: record.hash
|
|
556
|
+
};
|
|
557
|
+
try {
|
|
558
|
+
(0, blockHeaderUtilities_1.validateHeaderFormat)(header);
|
|
559
|
+
(0, blockHeaderUtilities_1.validateHeaderProofOfWork)(header);
|
|
560
|
+
}
|
|
561
|
+
catch (error) {
|
|
562
|
+
throw new Error(`ChainTracks upstream returned an invalid ${name}: ${(0, safeDiagnostic_1.safeDiagnostic)(error)}`);
|
|
563
|
+
}
|
|
564
|
+
const result = { ...header };
|
|
565
|
+
for (const key of liveKeys) {
|
|
566
|
+
if (record[key] !== undefined)
|
|
567
|
+
result[key] = record[key];
|
|
568
|
+
}
|
|
569
|
+
return result;
|
|
570
|
+
}
|
|
571
|
+
isPlainRecord(value) {
|
|
572
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value))
|
|
573
|
+
return false;
|
|
574
|
+
const prototype = Object.getPrototypeOf(value);
|
|
575
|
+
return prototype === Object.prototype || prototype === null;
|
|
576
|
+
}
|
|
577
|
+
readRecord(value, allowedKeys, name) {
|
|
578
|
+
if (!this.isPlainRecord(value))
|
|
579
|
+
throw new Error(`ChainTracks upstream returned an invalid ${name}.`);
|
|
580
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
581
|
+
if (Object.keys(descriptors).some(key => !allowedKeys.includes(key) || descriptors[key]?.get != null || descriptors[key]?.set != null)) {
|
|
582
|
+
throw new Error(`ChainTracks upstream returned an invalid ${name}.`);
|
|
583
|
+
}
|
|
584
|
+
return value;
|
|
585
|
+
}
|
|
586
|
+
readExactRecord(value, allowedKeys, name, optionalKeys = []) {
|
|
587
|
+
const record = this.readRecord(value, allowedKeys, name);
|
|
588
|
+
const requiredKeys = allowedKeys.filter(key => !optionalKeys.includes(key));
|
|
589
|
+
if (!requiredKeys.every(key => Object.hasOwn(record, key))) {
|
|
590
|
+
throw new Error(`ChainTracks upstream returned an invalid ${name}.`);
|
|
591
|
+
}
|
|
592
|
+
return record;
|
|
593
|
+
}
|
|
594
|
+
readPositiveOption(value, fallback, name, maximum) {
|
|
595
|
+
const resolved = value ?? fallback;
|
|
596
|
+
if (!Number.isSafeInteger(resolved) || resolved < 1 || resolved > maximum) {
|
|
597
|
+
throw new Error(`${name} must be an integer between 1 and ${maximum}.`);
|
|
598
|
+
}
|
|
599
|
+
return resolved;
|
|
600
|
+
}
|
|
601
|
+
validateListener(listener) {
|
|
602
|
+
if (typeof listener !== 'function')
|
|
603
|
+
throw new Error('listener must be a function.');
|
|
604
|
+
}
|
|
605
|
+
parseServiceUrl(serviceUrl) {
|
|
606
|
+
let parsed;
|
|
607
|
+
try {
|
|
608
|
+
parsed = new URL(serviceUrl);
|
|
609
|
+
}
|
|
610
|
+
catch {
|
|
611
|
+
throw new Error('serviceUrl must be an absolute HTTP(S) URL.');
|
|
612
|
+
}
|
|
613
|
+
if (!['http:', 'https:'].includes(parsed.protocol) ||
|
|
614
|
+
parsed.username !== '' ||
|
|
615
|
+
parsed.password !== '' ||
|
|
616
|
+
parsed.search !== '' ||
|
|
617
|
+
parsed.hash !== '') {
|
|
618
|
+
throw new Error('serviceUrl must be an HTTP(S) URL without credentials, query, or fragment.');
|
|
619
|
+
}
|
|
620
|
+
return parsed;
|
|
621
|
+
}
|
|
291
622
|
url(path) {
|
|
292
623
|
return `${this.baseUrl}${path}`;
|
|
293
624
|
}
|
|
294
625
|
normalizeChain(network) {
|
|
626
|
+
if (typeof network !== 'string' || network.length > 64 || (0, safeDiagnostic_1.containsControlCharacter)(network)) {
|
|
627
|
+
throw new Error('ChainTracks upstream returned an invalid network.');
|
|
628
|
+
}
|
|
295
629
|
switch (network.trim().toLowerCase()) {
|
|
296
630
|
case 'main':
|
|
297
631
|
case 'mainnet':
|