@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
|
@@ -1,8 +1,264 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseResults = exports.queryOverlay = exports.transformVerifiableCertificatesWithTrust = void 0;
|
|
3
|
+
exports.parseResults = exports.IdentityEvidenceVerifier = exports.queryOverlayEvidence = exports.queryOverlay = exports.transformVerifiableCertificatesWithTrust = void 0;
|
|
4
|
+
exports.filterCertificatesByIdentityKey = filterCertificatesByIdentityKey;
|
|
5
|
+
exports.filterCertificatesByAttributes = filterCertificatesByAttributes;
|
|
4
6
|
exports.parseResults$ = parseResults$;
|
|
5
7
|
const sdk_1 = require("@bsv/sdk");
|
|
8
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
9
|
+
const WalletSettingsManager_1 = require("../WalletSettingsManager");
|
|
10
|
+
const MAX_IDENTITY_RESULTS = 256;
|
|
11
|
+
const MAX_IDENTITY_CERTIFICATE_BYTES = 256 * 1024;
|
|
12
|
+
const MAX_IDENTITY_FIELDS = 100;
|
|
13
|
+
const IDENTITY_PROTOCOL = [1, 'identity'];
|
|
14
|
+
const IDENTITY_KEY_ID = '1';
|
|
15
|
+
// BRC-100 bounds a discovered certificate's certifierInfo.description to 5-50
|
|
16
|
+
// UTF-8 bytes. Trust settings accept up to 500 so stored settings stay
|
|
17
|
+
// readable, so the bound is applied where the result is built.
|
|
18
|
+
const MIN_CERTIFIER_DESCRIPTION_BYTES = 5;
|
|
19
|
+
const MAX_CERTIFIER_DESCRIPTION_BYTES = 50;
|
|
20
|
+
const FALLBACK_CERTIFIER_DESCRIPTION = 'Trusted certifier';
|
|
21
|
+
/** Cut a long description at a code point boundary; replace one too short to keep. */
|
|
22
|
+
function certifierDescription(description) {
|
|
23
|
+
let kept = '';
|
|
24
|
+
let bytes = 0;
|
|
25
|
+
for (const char of description) {
|
|
26
|
+
const size = (0, utils_1.toArray)(char, 'utf8').length;
|
|
27
|
+
if (bytes + size > MAX_CERTIFIER_DESCRIPTION_BYTES)
|
|
28
|
+
break;
|
|
29
|
+
kept += char;
|
|
30
|
+
bytes += size;
|
|
31
|
+
}
|
|
32
|
+
kept = kept.trimEnd();
|
|
33
|
+
return (0, utils_1.toArray)(kept, 'utf8').length >= MIN_CERTIFIER_DESCRIPTION_BYTES ? kept : FALLBACK_CERTIFIER_DESCRIPTION;
|
|
34
|
+
}
|
|
35
|
+
function isPlainRecord(value) {
|
|
36
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value))
|
|
37
|
+
return false;
|
|
38
|
+
const prototype = Object.getPrototypeOf(value);
|
|
39
|
+
return prototype === Object.prototype || prototype === null;
|
|
40
|
+
}
|
|
41
|
+
function ownData(value, key) {
|
|
42
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
43
|
+
if (descriptor == null || !('value' in descriptor)) {
|
|
44
|
+
throw new Error(`Identity certificate ${key} must be an own data property`);
|
|
45
|
+
}
|
|
46
|
+
return descriptor.value;
|
|
47
|
+
}
|
|
48
|
+
function boundedBytes(value, field, minimum, maximum) {
|
|
49
|
+
const normalized = value instanceof Uint8Array ? Array.from(value) : value;
|
|
50
|
+
if (!Array.isArray(normalized) || normalized.length < minimum || normalized.length > maximum) {
|
|
51
|
+
throw new Error(`${field} must contain ${minimum}-${maximum} bytes`);
|
|
52
|
+
}
|
|
53
|
+
for (let index = 0; index < normalized.length; index++) {
|
|
54
|
+
if (!Object.prototype.hasOwnProperty.call(normalized, index) ||
|
|
55
|
+
!Number.isInteger(normalized[index]) ||
|
|
56
|
+
normalized[index] < 0 ||
|
|
57
|
+
normalized[index] > 255) {
|
|
58
|
+
throw new Error(`${field} must be a dense byte array`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return Array.from(normalized);
|
|
62
|
+
}
|
|
63
|
+
function pushOpcode(value) {
|
|
64
|
+
if (value.length <= 75)
|
|
65
|
+
return value.length;
|
|
66
|
+
if (value.length <= 0xff)
|
|
67
|
+
return 0x4c;
|
|
68
|
+
if (value.length <= 0xffff)
|
|
69
|
+
return 0x4d;
|
|
70
|
+
return 0x4e;
|
|
71
|
+
}
|
|
72
|
+
function certificateRecord(encoded) {
|
|
73
|
+
const parsed = JSON.parse((0, utils_1.toUTF8Strict)(encoded));
|
|
74
|
+
if (!isPlainRecord(parsed))
|
|
75
|
+
throw new Error('Identity certificate must be a plain object');
|
|
76
|
+
const allowed = new Set([
|
|
77
|
+
'type',
|
|
78
|
+
'serialNumber',
|
|
79
|
+
'subject',
|
|
80
|
+
'certifier',
|
|
81
|
+
'revocationOutpoint',
|
|
82
|
+
'fields',
|
|
83
|
+
'keyring',
|
|
84
|
+
'signature'
|
|
85
|
+
]);
|
|
86
|
+
for (const key of Reflect.ownKeys(parsed)) {
|
|
87
|
+
if (typeof key !== 'string' || !allowed.has(key)) {
|
|
88
|
+
throw new Error('Identity certificate contains an unexpected field');
|
|
89
|
+
}
|
|
90
|
+
ownData(parsed, key);
|
|
91
|
+
}
|
|
92
|
+
for (const key of allowed)
|
|
93
|
+
ownData(parsed, key);
|
|
94
|
+
const fields = ownData(parsed, 'fields');
|
|
95
|
+
const keyring = ownData(parsed, 'keyring');
|
|
96
|
+
if (!isPlainRecord(fields) || !isPlainRecord(keyring)) {
|
|
97
|
+
throw new Error('Identity certificate fields and keyring must be plain objects');
|
|
98
|
+
}
|
|
99
|
+
const fieldNames = Object.keys(fields);
|
|
100
|
+
const keyringNames = Object.keys(keyring);
|
|
101
|
+
if (fieldNames.length < 1 ||
|
|
102
|
+
fieldNames.length > MAX_IDENTITY_FIELDS ||
|
|
103
|
+
keyringNames.length < 1 ||
|
|
104
|
+
keyringNames.length > MAX_IDENTITY_FIELDS) {
|
|
105
|
+
throw new Error('Identity certificate fields or keyring have invalid cardinality');
|
|
106
|
+
}
|
|
107
|
+
for (const fieldName of keyringNames) {
|
|
108
|
+
if (!Object.prototype.hasOwnProperty.call(fields, fieldName)) {
|
|
109
|
+
throw new Error('Identity keyring refers to an absent certificate field');
|
|
110
|
+
}
|
|
111
|
+
const key = ownData(keyring, fieldName);
|
|
112
|
+
if (typeof key !== 'string' || key.length > 2048) {
|
|
113
|
+
throw new Error('Identity keyring value is missing or oversized');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return parsed;
|
|
117
|
+
}
|
|
118
|
+
function normalizeIdentitySearch(input) {
|
|
119
|
+
return input.trim().replaceAll(/\s+/g, ' ');
|
|
120
|
+
}
|
|
121
|
+
/** Match literal tokens in order, without a combinatorial wildcard expression. */
|
|
122
|
+
function identityFuzzyMatches(actual, expected) {
|
|
123
|
+
const tokens = normalizeIdentitySearch(expected).split(' ');
|
|
124
|
+
const lines = actual.split(/\r\n?|\n|\u2028|\u2029/);
|
|
125
|
+
for (const line of lines) {
|
|
126
|
+
let cursor = 0;
|
|
127
|
+
let tokenIndex = 0;
|
|
128
|
+
while (tokenIndex < tokens.length) {
|
|
129
|
+
const literal = new RegExp(tokens[tokenIndex].replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`), 'gi');
|
|
130
|
+
literal.lastIndex = cursor;
|
|
131
|
+
const found = literal.exec(line);
|
|
132
|
+
if (found == null)
|
|
133
|
+
break;
|
|
134
|
+
cursor = found.index + found[0].length;
|
|
135
|
+
tokenIndex++;
|
|
136
|
+
}
|
|
137
|
+
if (tokenIndex === tokens.length)
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
// The default English text index omits these words before matching. Apostrophes
|
|
143
|
+
// inside English words are retained; punctuation otherwise separates terms.
|
|
144
|
+
const IDENTITY_STOP_WORDS = " a about above after again against all am an and any are aren't as at be because been before being below between both but by can't cannot could couldn't did didn't do does doesn't doing don't down during each few for from further had hadn't has hasn't have haven't having he he'd he'll he's her here here's hers herself him himself his how how's i i'd i'll i'm i've if in into is isn't it it's its itself let's me more most mustn't my myself no nor not of off on once only or other ought our ours ourselves out over own same shan't she she'd she'll she's should shouldn't so some such than that that's the their theirs them themselves then there there's these they they'd they'll they're they've this those through to too under until up very was wasn't we we'd we'll we're we've were weren't what what's when when's where where's which while who who's whom why why's with won't would wouldn't you you'd you'll you're you've your yours yourself yourselves ";
|
|
145
|
+
function identityTextTokens(text) {
|
|
146
|
+
// ASCII apostrophes are part of English names such as O'Neil.
|
|
147
|
+
const tokens = text.match(/(?:[^\p{Dash}\p{Pattern_Syntax}\p{Quotation_Mark}\p{Terminal_Punctuation}\p{White_Space}]|')+/gu) ?? [];
|
|
148
|
+
return tokens.filter(token => !IDENTITY_STOP_WORDS.includes(` ${token} `));
|
|
149
|
+
}
|
|
150
|
+
/** -1 rejects the result; 1 records a positive indexed term; 0 is neutral. */
|
|
151
|
+
function identityQueryPartMatch(tokens, text, raw, phrase) {
|
|
152
|
+
const negative = raw.startsWith('-') && raw.length > 1;
|
|
153
|
+
if (phrase !== undefined) {
|
|
154
|
+
const present = containsText(text, phrase);
|
|
155
|
+
if (negative ? present : !present)
|
|
156
|
+
return -1;
|
|
157
|
+
if (negative)
|
|
158
|
+
return 0;
|
|
159
|
+
}
|
|
160
|
+
const terms = identityTextTokens(phrase ?? (negative ? raw.slice(1) : raw));
|
|
161
|
+
const matched = terms.some(term => tokens.includes(term));
|
|
162
|
+
if (!matched)
|
|
163
|
+
return 0;
|
|
164
|
+
return negative ? -1 : 1;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Bind the overlay's English text search using complete tokens, stopwords and
|
|
168
|
+
* exact phrases. Language-specific stemming remains unsupported; a stem-only
|
|
169
|
+
* overlay result may be conservatively dropped rather than treated as a substring.
|
|
170
|
+
*/
|
|
171
|
+
function identityTextMatches(searchable, search) {
|
|
172
|
+
const text = foldIdentityText(searchable);
|
|
173
|
+
const query = foldIdentityText(search);
|
|
174
|
+
const tokens = identityTextTokens(text);
|
|
175
|
+
const parts = /-?"([^"]*)"|[^\s"]+/g;
|
|
176
|
+
let positiveMatch = false;
|
|
177
|
+
let match = parts.exec(query);
|
|
178
|
+
while (match != null) {
|
|
179
|
+
const result = identityQueryPartMatch(tokens, text, match[0], match[1]);
|
|
180
|
+
if (result === -1)
|
|
181
|
+
return false;
|
|
182
|
+
if (result === 1)
|
|
183
|
+
positiveMatch = true;
|
|
184
|
+
match = parts.exec(query);
|
|
185
|
+
}
|
|
186
|
+
return positiveMatch;
|
|
187
|
+
}
|
|
188
|
+
/** The overlay matches userName exactly and other named fields fuzzily. */
|
|
189
|
+
function identityAttributeMatches(fieldName, actual, expected) {
|
|
190
|
+
if (typeof actual !== 'string')
|
|
191
|
+
return false;
|
|
192
|
+
if (fieldName === 'userName')
|
|
193
|
+
return actual === normalizeIdentitySearch(expected);
|
|
194
|
+
return identityFuzzyMatches(actual, expected);
|
|
195
|
+
}
|
|
196
|
+
function foldIdentityText(input) {
|
|
197
|
+
return input
|
|
198
|
+
.normalize('NFD')
|
|
199
|
+
.replaceAll(/\p{Mn}/gu, '')
|
|
200
|
+
.toLowerCase();
|
|
201
|
+
}
|
|
202
|
+
function containsText(haystack, needle) {
|
|
203
|
+
return haystack.includes(needle);
|
|
204
|
+
}
|
|
205
|
+
const UNSEARCHABLE_IDENTITY_FIELDS = new Set(['profilePhoto', 'icon']);
|
|
206
|
+
/**
|
|
207
|
+
* `any` is the overlay's all-fields search, not a field name. Accept a certificate
|
|
208
|
+
* when its searchable fields satisfy the same search the overlay ran.
|
|
209
|
+
*/
|
|
210
|
+
function identityAnyMatches(fields, expected) {
|
|
211
|
+
const normalized = normalizeIdentitySearch(expected);
|
|
212
|
+
if (normalized.length < 2)
|
|
213
|
+
return false;
|
|
214
|
+
const searchable = Object.entries(fields)
|
|
215
|
+
.filter(([key, value]) => !UNSEARCHABLE_IDENTITY_FIELDS.has(key) && typeof value === 'string')
|
|
216
|
+
.map(([, value]) => value)
|
|
217
|
+
.join(' ');
|
|
218
|
+
if (normalized.length === 2)
|
|
219
|
+
return identityFuzzyMatches(searchable, normalized);
|
|
220
|
+
return identityTextMatches(searchable, normalized);
|
|
221
|
+
}
|
|
222
|
+
/** Re-bind authenticated certificates to the identity lookup they answered. */
|
|
223
|
+
function filterCertificatesByIdentityKey(certificates, identityKey) {
|
|
224
|
+
const expected = identityKey.toLowerCase();
|
|
225
|
+
return certificates.filter(certificate => typeof certificate.subject === 'string' && certificate.subject.toLowerCase() === expected);
|
|
226
|
+
}
|
|
227
|
+
function usableIdentityAttributes(attributes) {
|
|
228
|
+
const expected = [];
|
|
229
|
+
for (const key of Object.keys(attributes)) {
|
|
230
|
+
const descriptor = Object.getOwnPropertyDescriptor(attributes, key);
|
|
231
|
+
if (descriptor == null || !('value' in descriptor) || typeof descriptor.value !== 'string')
|
|
232
|
+
return undefined;
|
|
233
|
+
if (normalizeIdentitySearch(descriptor.value).length > 0)
|
|
234
|
+
expected.push([key, descriptor.value]);
|
|
235
|
+
}
|
|
236
|
+
return expected;
|
|
237
|
+
}
|
|
238
|
+
function certificateMatchesAttributes(certificate, anySearch, expected) {
|
|
239
|
+
const fields = certificate.decryptedFields;
|
|
240
|
+
if (fields == null || typeof fields !== 'object' || Array.isArray(fields))
|
|
241
|
+
return false;
|
|
242
|
+
const record = fields;
|
|
243
|
+
if (anySearch !== undefined)
|
|
244
|
+
return identityAnyMatches(record, anySearch);
|
|
245
|
+
return expected.every(([fieldName, value]) => {
|
|
246
|
+
const descriptor = Object.getOwnPropertyDescriptor(record, fieldName);
|
|
247
|
+
return descriptor != null && 'value' in descriptor && identityAttributeMatches(fieldName, descriptor.value, value);
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
/** Re-bind authenticated certificates to the attribute lookup they answered. */
|
|
251
|
+
function filterCertificatesByAttributes(certificates, attributes) {
|
|
252
|
+
if (attributes == null || typeof attributes !== 'object' || Array.isArray(attributes))
|
|
253
|
+
return [];
|
|
254
|
+
const any = Object.getOwnPropertyDescriptor(attributes, 'any');
|
|
255
|
+
if (any != null && (!('value' in any) || typeof any.value !== 'string'))
|
|
256
|
+
return [];
|
|
257
|
+
const expected = any == null ? usableIdentityAttributes(attributes) : [];
|
|
258
|
+
if (expected == null || (any == null && expected.length === 0))
|
|
259
|
+
return [];
|
|
260
|
+
return certificates.filter(certificate => certificateMatchesAttributes(certificate, any?.value, expected));
|
|
261
|
+
}
|
|
6
262
|
/**
|
|
7
263
|
* Transforms an array of VerifiableCertificate instances according to the trust settings.
|
|
8
264
|
* Only certificates whose grouped total trust meets the threshold are returned,
|
|
@@ -13,46 +269,58 @@ const sdk_1 = require("@bsv/sdk");
|
|
|
13
269
|
* @returns a DiscoverCertificatesResult with totalCertificates and ordered certificates.
|
|
14
270
|
*/
|
|
15
271
|
const transformVerifiableCertificatesWithTrust = (trustSettings, certificates) => {
|
|
272
|
+
const validatedTrust = (0, WalletSettingsManager_1.validateTrustSettings)(trustSettings);
|
|
16
273
|
// Group certificates by subject while accumulating trust.
|
|
17
|
-
const identityGroups =
|
|
274
|
+
const identityGroups = new Map();
|
|
18
275
|
// Cache certifier lookups.
|
|
19
|
-
const certifierCache =
|
|
20
|
-
certificates.forEach(cert => {
|
|
276
|
+
const certifierCache = new Map(validatedTrust.trustedCertifiers.map(certifier => [certifier.identityKey, certifier]));
|
|
277
|
+
certificates.slice(0, MAX_IDENTITY_RESULTS).forEach(cert => {
|
|
21
278
|
const { subject, certifier } = cert;
|
|
22
279
|
if (subject === '' || certifier === '')
|
|
23
280
|
return;
|
|
24
|
-
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
if (found == null)
|
|
28
|
-
return; // Skip this certificate if its certifier is not trusted.
|
|
29
|
-
certifierCache[certifier] = found;
|
|
30
|
-
}
|
|
281
|
+
const trustedCertifier = certifierCache.get(certifier);
|
|
282
|
+
if (trustedCertifier == null)
|
|
283
|
+
return;
|
|
31
284
|
// Create the IdentityCertifier object that we want to attach.
|
|
32
285
|
const certifierInfo = {
|
|
33
|
-
name:
|
|
34
|
-
iconUrl:
|
|
35
|
-
description:
|
|
36
|
-
trust:
|
|
286
|
+
name: trustedCertifier.name,
|
|
287
|
+
iconUrl: trustedCertifier.iconUrl ?? 'https://bsvblockchain.org/favicon.ico',
|
|
288
|
+
description: certifierDescription(trustedCertifier.description),
|
|
289
|
+
trust: trustedCertifier.trust
|
|
37
290
|
};
|
|
38
291
|
// Create an extended certificate that includes certifierInfo.
|
|
39
|
-
// Note: We use object spread to copy over all properties from the original certificate.
|
|
40
292
|
const extendedCert = {
|
|
41
|
-
|
|
293
|
+
type: cert.type,
|
|
294
|
+
serialNumber: cert.serialNumber,
|
|
295
|
+
subject: cert.subject,
|
|
296
|
+
certifier: cert.certifier,
|
|
297
|
+
revocationOutpoint: cert.revocationOutpoint,
|
|
42
298
|
signature: cert.signature, // We know it exists at this point
|
|
43
|
-
|
|
44
|
-
|
|
299
|
+
fields: { ...cert.fields },
|
|
300
|
+
decryptedFields: { ...cert.decryptedFields },
|
|
301
|
+
publiclyRevealedKeyring: { ...cert.keyring },
|
|
45
302
|
certifierInfo
|
|
46
303
|
};
|
|
47
304
|
// Group certificates by subject.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
305
|
+
let group = identityGroups.get(subject);
|
|
306
|
+
if (group == null) {
|
|
307
|
+
group = { totalTrust: 0, members: [], certifiers: new Set(), certificates: new Set() };
|
|
308
|
+
identityGroups.set(subject, group);
|
|
309
|
+
}
|
|
310
|
+
const certificateID = `${cert.type}\0${cert.serialNumber}\0${certifier}`;
|
|
311
|
+
if (group.certificates.has(certificateID))
|
|
312
|
+
return;
|
|
313
|
+
group.certificates.add(certificateID);
|
|
314
|
+
if (!group.certifiers.has(certifier)) {
|
|
315
|
+
group.certifiers.add(certifier);
|
|
316
|
+
group.totalTrust += certifierInfo.trust;
|
|
317
|
+
}
|
|
318
|
+
group.members.push(extendedCert);
|
|
51
319
|
});
|
|
52
320
|
// Filter out groups that do not meet the trust threshold and flatten the results.
|
|
53
321
|
const finalResults = [];
|
|
54
|
-
|
|
55
|
-
if (group.totalTrust >=
|
|
322
|
+
identityGroups.forEach(group => {
|
|
323
|
+
if (group.totalTrust >= validatedTrust.trustLevel) {
|
|
56
324
|
finalResults.push(...group.members);
|
|
57
325
|
}
|
|
58
326
|
});
|
|
@@ -66,19 +334,80 @@ const transformVerifiableCertificatesWithTrust = (trustSettings, certificates) =
|
|
|
66
334
|
exports.transformVerifiableCertificatesWithTrust = transformVerifiableCertificatesWithTrust;
|
|
67
335
|
/**
|
|
68
336
|
* Performs an identity overlay service lookup query and returns the parsed results.
|
|
337
|
+
* Requires an independently maintained ChainTracker; missing context returns no identities.
|
|
69
338
|
*
|
|
70
339
|
* Identity paths benefit from a larger grace window (more hosts contribute outputs before the
|
|
71
340
|
* query resolves) — 300 ms is well under the "instant" perception threshold and catches the long
|
|
72
341
|
* tail of healthy-but-slightly-slow hosts.
|
|
73
342
|
*/
|
|
74
|
-
const queryOverlay = async (query, resolver) => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}, undefined, { graceMs: 300 });
|
|
79
|
-
return await (0, exports.parseResults)(results);
|
|
343
|
+
const queryOverlay = async (query, resolver, chainTracker) => {
|
|
344
|
+
if (chainTracker == null)
|
|
345
|
+
return [];
|
|
346
|
+
return await (0, exports.parseResults)(await (0, exports.queryOverlayEvidence)(query, resolver), chainTracker);
|
|
80
347
|
};
|
|
81
348
|
exports.queryOverlay = queryOverlay;
|
|
349
|
+
/**
|
|
350
|
+
* Fetch an owned snapshot of UNTRUSTED evidence, suitable only for revalidation.
|
|
351
|
+
* A limit rejects the lookup because this legacy result cannot represent partial completion.
|
|
352
|
+
*/
|
|
353
|
+
const queryOverlayEvidence = async (query, resolver, limits = {}) => {
|
|
354
|
+
const candidateBytes = limits.candidateBytes ?? sdk_1.defaultTransactionEvidenceLimits.candidateBytes;
|
|
355
|
+
const retainedBytes = limits.retainedBytes ?? sdk_1.defaultTransactionEvidenceLimits.retainedBytes;
|
|
356
|
+
const maxOutputs = limits.outputs ?? 512;
|
|
357
|
+
if (![candidateBytes, retainedBytes, maxOutputs].every(value => Number.isSafeInteger(value) && value > 0))
|
|
358
|
+
throw new sdk_1.TransactionEvidenceError('limit');
|
|
359
|
+
const outputs = [];
|
|
360
|
+
let bytes = 0;
|
|
361
|
+
let received = false;
|
|
362
|
+
let closed = false;
|
|
363
|
+
let limited = false;
|
|
364
|
+
const accept = (output) => {
|
|
365
|
+
const size = output.beef.length + (output.context?.length ?? 0);
|
|
366
|
+
if (outputs.length >= maxOutputs || output.beef.length > candidateBytes || bytes + size > retainedBytes) {
|
|
367
|
+
limited = true;
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
bytes += size;
|
|
371
|
+
outputs.push({
|
|
372
|
+
...output,
|
|
373
|
+
beef: output.beef.slice(),
|
|
374
|
+
...(output.context === undefined ? {} : { context: output.context.slice() })
|
|
375
|
+
});
|
|
376
|
+
};
|
|
377
|
+
try {
|
|
378
|
+
const results = await resolver.query({
|
|
379
|
+
service: 'ls_identity',
|
|
380
|
+
query
|
|
381
|
+
}, undefined, {
|
|
382
|
+
graceMs: 300,
|
|
383
|
+
evidenceLimits: { maxOutputs, maxBytes: retainedBytes },
|
|
384
|
+
onEvidence: event => {
|
|
385
|
+
if (closed)
|
|
386
|
+
return;
|
|
387
|
+
received = true;
|
|
388
|
+
if (event.type === 'output')
|
|
389
|
+
accept(event.output);
|
|
390
|
+
else
|
|
391
|
+
limited = true;
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
if (limited)
|
|
395
|
+
throw new sdk_1.TransactionEvidenceError('limit');
|
|
396
|
+
if (results.type !== 'output-list')
|
|
397
|
+
return results;
|
|
398
|
+
// Custom/older resolvers may not implement the additive intake callback.
|
|
399
|
+
if (!received)
|
|
400
|
+
for (const output of results.outputs)
|
|
401
|
+
accept(output);
|
|
402
|
+
if (limited)
|
|
403
|
+
throw new sdk_1.TransactionEvidenceError('limit');
|
|
404
|
+
return { type: 'output-list', outputs };
|
|
405
|
+
}
|
|
406
|
+
finally {
|
|
407
|
+
closed = true;
|
|
408
|
+
}
|
|
409
|
+
};
|
|
410
|
+
exports.queryOverlayEvidence = queryOverlayEvidence;
|
|
82
411
|
/**
|
|
83
412
|
* Cooperative yield helper. On environments where the main thread also drives UI work
|
|
84
413
|
* (React Native, browsers), parsing many certificates synchronously freezes input handling.
|
|
@@ -98,63 +427,196 @@ const isUiRuntime = () => {
|
|
|
98
427
|
return false;
|
|
99
428
|
};
|
|
100
429
|
const yieldToUi = async () => {
|
|
101
|
-
await new Promise(
|
|
430
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
102
431
|
};
|
|
103
432
|
/**
|
|
104
433
|
* Parse a single overlay output into a verified, decrypted certificate. Returns `null` on any
|
|
105
434
|
* parse / decrypt / verify failure so a malformed entry can never block the others.
|
|
106
435
|
*/
|
|
107
|
-
const
|
|
436
|
+
const decodeIdentityOutput = async (verifiedOutput) => {
|
|
108
437
|
try {
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
|
|
438
|
+
const decodedOutput = sdk_1.PushDrop.decode(verifiedOutput.lockingScript);
|
|
439
|
+
if (decodedOutput.fields.length !== 2)
|
|
440
|
+
return null;
|
|
441
|
+
const certificateBytes = boundedBytes(decodedOutput.fields[0], 'Identity certificate', 1, MAX_IDENTITY_CERTIFICATE_BYTES);
|
|
442
|
+
const fieldSignature = boundedBytes(decodedOutput.fields[1], 'Identity field signature', 8, 80);
|
|
443
|
+
const chunks = verifiedOutput.lockingScript.chunks;
|
|
444
|
+
if (chunks.length !== 5 ||
|
|
445
|
+
chunks[0].op !== 33 ||
|
|
446
|
+
chunks[0].data?.length !== 33 ||
|
|
447
|
+
chunks[1].op !== 0xac ||
|
|
448
|
+
chunks[2].op !== pushOpcode(certificateBytes) ||
|
|
449
|
+
chunks[3].op !== pushOpcode(fieldSignature) ||
|
|
450
|
+
chunks[4].op !== 0x6d) {
|
|
451
|
+
return null;
|
|
452
|
+
}
|
|
453
|
+
const certificate = certificateRecord(certificateBytes);
|
|
454
|
+
const subject = ownData(certificate, 'subject');
|
|
455
|
+
if (typeof subject !== 'string')
|
|
456
|
+
return null;
|
|
457
|
+
const anyoneWallet = new sdk_1.ProtoWallet('anyone');
|
|
458
|
+
const { publicKey: expectedLockingKey } = await anyoneWallet.getPublicKey({
|
|
459
|
+
protocolID: IDENTITY_PROTOCOL,
|
|
460
|
+
keyID: IDENTITY_KEY_ID,
|
|
461
|
+
counterparty: subject
|
|
462
|
+
});
|
|
463
|
+
if (decodedOutput.lockingPublicKey.toString() !== expectedLockingKey)
|
|
464
|
+
return null;
|
|
465
|
+
const { valid } = await anyoneWallet.verifySignature({
|
|
466
|
+
data: certificateBytes,
|
|
467
|
+
signature: fieldSignature,
|
|
468
|
+
counterparty: subject,
|
|
469
|
+
protocolID: IDENTITY_PROTOCOL,
|
|
470
|
+
keyID: IDENTITY_KEY_ID
|
|
471
|
+
});
|
|
472
|
+
if (valid !== true)
|
|
473
|
+
return null;
|
|
474
|
+
const verifiableCert = new sdk_1.VerifiableCertificate(ownData(certificate, 'type'), ownData(certificate, 'serialNumber'), subject, ownData(certificate, 'certifier'), ownData(certificate, 'revocationOutpoint'), ownData(certificate, 'fields'), ownData(certificate, 'keyring'), ownData(certificate, 'signature'));
|
|
475
|
+
if ((await verifiableCert.verify()) !== true)
|
|
476
|
+
return null;
|
|
477
|
+
const decryptedFields = await verifiableCert.decryptFields(anyoneWallet);
|
|
478
|
+
if (Object.keys(decryptedFields).length === 0)
|
|
479
|
+
return null;
|
|
115
480
|
verifiableCert.decryptedFields = decryptedFields;
|
|
116
481
|
return verifiableCert;
|
|
117
482
|
}
|
|
118
|
-
catch
|
|
119
|
-
|
|
483
|
+
catch {
|
|
484
|
+
// Untrusted parsing/decryption errors can contain identity data. Do not log it.
|
|
120
485
|
return null;
|
|
121
486
|
}
|
|
122
487
|
};
|
|
488
|
+
/**
|
|
489
|
+
* Wallet/session-owned identity validation. Chain evidence is checked on every
|
|
490
|
+
* use; bounded certificate crypto results are independent of mutable trust ratings.
|
|
491
|
+
*/
|
|
492
|
+
class IdentityEvidenceVerifier {
|
|
493
|
+
chainTracker;
|
|
494
|
+
chainNamespace;
|
|
495
|
+
disposed = false;
|
|
496
|
+
coordinator;
|
|
497
|
+
certificates = new Map();
|
|
498
|
+
expiryTimer;
|
|
499
|
+
constructor(chainTracker, chainNamespace = 'caller-chain-tracker', limits) {
|
|
500
|
+
this.chainTracker = chainTracker;
|
|
501
|
+
this.chainNamespace = chainNamespace;
|
|
502
|
+
this.coordinator = new sdk_1.TransactionEvidenceCoordinator({
|
|
503
|
+
chainTracker,
|
|
504
|
+
chainNamespace,
|
|
505
|
+
limits,
|
|
506
|
+
policyId: 'sdk-spv-overlay-graph-v1'
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
clone(json) {
|
|
510
|
+
const cert = JSON.parse(json);
|
|
511
|
+
const copy = new sdk_1.VerifiableCertificate(cert.type, cert.serialNumber, cert.subject, cert.certifier, cert.revocationOutpoint, cert.fields, cert.keyring, cert.signature);
|
|
512
|
+
copy.decryptedFields = cert.decryptedFields;
|
|
513
|
+
return copy;
|
|
514
|
+
}
|
|
515
|
+
async parse(output) {
|
|
516
|
+
try {
|
|
517
|
+
const evidence = { ...output, beef: output.beef.slice() };
|
|
518
|
+
const verified = await this.coordinator.verify(evidence);
|
|
519
|
+
if (this.disposed)
|
|
520
|
+
return null;
|
|
521
|
+
const cached = this.certificates.get(verified.outpoint);
|
|
522
|
+
if (cached !== undefined && cached.expiresAt > Date.now()) {
|
|
523
|
+
return { outpoint: verified.outpoint, certificate: this.clone(cached.json) };
|
|
524
|
+
}
|
|
525
|
+
const certificate = await decodeIdentityOutput(verified);
|
|
526
|
+
if (certificate === null)
|
|
527
|
+
return null;
|
|
528
|
+
// Certificate crypto can await; fence its completion against current chain/session state.
|
|
529
|
+
await this.coordinator.verify(evidence);
|
|
530
|
+
if (this.disposed)
|
|
531
|
+
return null;
|
|
532
|
+
// Store owned bytes and return a separate object; callers cannot mutate future results.
|
|
533
|
+
const json = JSON.stringify(certificate);
|
|
534
|
+
this.prune();
|
|
535
|
+
let bytes = [...this.certificates.values()].reduce((total, value) => total + value.json.length * 2, 0);
|
|
536
|
+
while (this.certificates.size > 0 &&
|
|
537
|
+
(this.certificates.size >= 128 || bytes + json.length * 2 > 2 * 1024 * 1024)) {
|
|
538
|
+
const oldest = this.certificates.keys().next().value;
|
|
539
|
+
bytes -= this.certificates.get(oldest).json.length * 2;
|
|
540
|
+
this.certificates.delete(oldest);
|
|
541
|
+
}
|
|
542
|
+
if (json.length * 2 <= 2 * 1024 * 1024) {
|
|
543
|
+
this.certificates.set(verified.outpoint, { json, expiresAt: Date.now() + 60_000 });
|
|
544
|
+
this.scheduleExpiry();
|
|
545
|
+
}
|
|
546
|
+
return { outpoint: verified.outpoint, certificate: this.clone(json) };
|
|
547
|
+
}
|
|
548
|
+
catch (error) {
|
|
549
|
+
if (error instanceof sdk_1.TransactionEvidenceError && (error.code === 'limit' || error.code === 'timeout'))
|
|
550
|
+
throw error;
|
|
551
|
+
return null;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
prune() {
|
|
555
|
+
for (const [key, cached] of this.certificates)
|
|
556
|
+
if (cached.expiresAt <= Date.now())
|
|
557
|
+
this.certificates.delete(key);
|
|
558
|
+
}
|
|
559
|
+
scheduleExpiry() {
|
|
560
|
+
clearTimeout(this.expiryTimer);
|
|
561
|
+
const expiresAt = Math.min(...[...this.certificates.values()].map(value => value.expiresAt));
|
|
562
|
+
if (!Number.isFinite(expiresAt))
|
|
563
|
+
return;
|
|
564
|
+
this.expiryTimer = setTimeout(() => {
|
|
565
|
+
this.prune();
|
|
566
|
+
this.scheduleExpiry();
|
|
567
|
+
}, Math.max(1, expiresAt - Date.now()));
|
|
568
|
+
this.expiryTimer.unref?.();
|
|
569
|
+
}
|
|
570
|
+
dispose() {
|
|
571
|
+
this.disposed = true;
|
|
572
|
+
this.coordinator.dispose();
|
|
573
|
+
this.certificates.clear();
|
|
574
|
+
clearTimeout(this.expiryTimer);
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
exports.IdentityEvidenceVerifier = IdentityEvidenceVerifier;
|
|
123
578
|
/**
|
|
124
579
|
* Parse the returned UTXOs, decrypting and verifying each certificate.
|
|
580
|
+
* An omitted ChainTracker fails closed. Each call revalidates transaction evidence;
|
|
581
|
+
* returned certificates carry no reusable chain-verdict or unspentness guarantee.
|
|
125
582
|
*
|
|
126
583
|
* On UI runtimes (browser / React Native), yields between iterations so the JS thread does not
|
|
127
584
|
* own the frame for the full duration. On Node, runs straight through.
|
|
128
585
|
*/
|
|
129
|
-
const parseResults = async (lookupResult) => {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
for (const output of lookupResult.outputs) {
|
|
135
|
-
if (shouldYield)
|
|
136
|
-
await yieldToUi();
|
|
137
|
-
const cert = await parseOne(output);
|
|
138
|
-
if (cert != null)
|
|
139
|
-
parsedResults.push(cert);
|
|
140
|
-
}
|
|
141
|
-
return parsedResults;
|
|
586
|
+
const parseResults = async (lookupResult, chainTracker, verifier) => {
|
|
587
|
+
const certificates = [];
|
|
588
|
+
for await (const certificate of parseResults$(lookupResult, chainTracker, verifier))
|
|
589
|
+
certificates.push(certificate);
|
|
590
|
+
return certificates;
|
|
142
591
|
};
|
|
143
592
|
exports.parseResults = parseResults;
|
|
144
593
|
/**
|
|
145
594
|
* Iterable variant of {@link parseResults}: emits each successfully parsed certificate as soon as
|
|
146
595
|
* it's ready, so callers can render progressively instead of waiting for the full set.
|
|
147
596
|
*/
|
|
148
|
-
async function* parseResults$(lookupResult) {
|
|
149
|
-
if (lookupResult.type !== 'output-list')
|
|
597
|
+
async function* parseResults$(lookupResult, chainTracker, verifier) {
|
|
598
|
+
if (lookupResult.type !== 'output-list' || chainTracker == null)
|
|
599
|
+
return;
|
|
600
|
+
if (verifier !== undefined && verifier.chainTracker !== chainTracker)
|
|
150
601
|
return;
|
|
602
|
+
const owned = verifier === undefined;
|
|
603
|
+
verifier ??= new IdentityEvidenceVerifier(chainTracker);
|
|
151
604
|
const shouldYield = isUiRuntime();
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
605
|
+
const seen = new Set();
|
|
606
|
+
try {
|
|
607
|
+
for (const output of lookupResult.outputs) {
|
|
608
|
+
if (shouldYield)
|
|
609
|
+
await yieldToUi();
|
|
610
|
+
const result = await verifier.parse(output);
|
|
611
|
+
if (result !== null && !seen.has(result.outpoint)) {
|
|
612
|
+
seen.add(result.outpoint);
|
|
613
|
+
yield result.certificate;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
finally {
|
|
618
|
+
if (owned)
|
|
619
|
+
verifier.dispose();
|
|
158
620
|
}
|
|
159
621
|
}
|
|
160
622
|
//# sourceMappingURL=identityUtils.js.map
|