@bsv/wallet-toolbox 2.1.28 → 2.2.0
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/docs/client.md +327 -152
- package/docs/storage.md +340 -58
- package/docs/wallet.md +699 -27
- package/out/src/CWIStyleWalletManager.js +107 -41
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.js +3 -3
- package/out/src/Setup.js.map +1 -1
- package/out/src/SetupClient.js +1 -1
- package/out/src/SetupClient.js.map +1 -1
- package/out/src/ShamirWalletManager.d.ts +2 -2
- package/out/src/ShamirWalletManager.js +10 -3
- package/out/src/ShamirWalletManager.js.map +1 -1
- package/out/src/SimpleWalletManager.js +29 -0
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.js +84 -66
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.js +6 -3
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.js +6 -4
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +158 -167
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.js +3 -0
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/entropy/EntropyCollector.js +9 -9
- package/out/src/entropy/EntropyCollector.js.map +1 -1
- package/out/src/fundWalletP2PKH.js +5 -6
- package/out/src/fundWalletP2PKH.js.map +1 -1
- package/out/src/mockchain/MockChainMigrations.js +1 -1
- package/out/src/mockchain/MockChainMigrations.js.map +1 -1
- package/out/src/mockchain/MockChainStorage.js +1 -0
- package/out/src/mockchain/MockChainStorage.js.map +1 -1
- package/out/src/mockchain/MockChainTracker.js +2 -0
- package/out/src/mockchain/MockChainTracker.js.map +1 -1
- package/out/src/mockchain/MockMiner.js +2 -2
- package/out/src/mockchain/MockMiner.js.map +1 -1
- package/out/src/mockchain/MockServices.js +21 -25
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/monitor/Monitor.js +45 -33
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +12 -10
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +10 -13
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +10 -11
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +22 -22
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/monitor/tasks/TaskClock.js +3 -1
- package/out/src/monitor/tasks/TaskClock.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js +2 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.js +3 -2
- package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js +2 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +12 -1
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.js +7 -5
- package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js +4 -2
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +12 -9
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +8 -3
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js +7 -5
- package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +6 -2
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +9 -2
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.js +2 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +6 -5
- package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/out/src/monitor/tasks/WalletMonitorTask.js +7 -4
- package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +44 -27
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WERR_errors.js +23 -8
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.js +7 -7
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/services/ServiceCollection.js +9 -2
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.js +58 -54
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.js +8 -2
- package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +5 -2
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +27 -21
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +10 -5
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +4 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +8 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +7 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +5 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +3 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +3 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +3 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +4 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +1 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +8 -5
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +3 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +2 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +12 -6
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +8 -7
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +8 -8
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +15 -16
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +3 -3
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +19 -16
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +4 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +17 -4
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +21 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +1 -3
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +9 -3
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +7 -5
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +4 -6
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +8 -8
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +8 -8
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/providers/ARC.js +13 -5
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +9 -8
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Bitails.js +6 -2
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js +6 -2
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +2 -1
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js +2 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/signer/WalletSigner.js +4 -1
- package/out/src/signer/WalletSigner.js.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js +1 -2
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +1 -2
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.js +4 -5
- package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.js +9 -11
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/signAction.js +5 -6
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/storage/StorageIdb.js +84 -99
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +22 -29
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +4 -1
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +45 -33
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.js +4 -2
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageSyncReader.js +2 -0
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.js +47 -25
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +35 -48
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/idbHelpers.js +1 -2
- package/out/src/storage/idbHelpers.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js +2 -2
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +5 -2
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +10 -12
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +87 -59
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.js +2 -3
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +2 -4
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +27 -2
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js +7 -9
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +7 -9
- package/out/src/storage/methods/listActionsKnex.js.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.js +5 -7
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js +9 -10
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +12 -11
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/reviewStatus.d.ts +3 -2
- package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatus.js +34 -2
- package/out/src/storage/methods/reviewStatus.js.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts +2 -2
- package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.js +54 -13
- package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
- package/out/src/storage/portable/index.js +11 -15
- package/out/src/storage/portable/index.js.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +2 -3
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +6 -3
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +17 -11
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +5 -1
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/entities/EntityBase.js +1 -0
- package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.js +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +12 -13
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +7 -9
- package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +6 -3
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.js +4 -0
- package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
- package/out/src/storage/storageProviderHelpers.js +2 -3
- package/out/src/storage/storageProviderHelpers.js.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +2 -2
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/Format.js +4 -5
- package/out/src/utility/Format.js.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.js +7 -6
- package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.js +1 -1
- package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
- package/out/src/utility/identityUtils.js +2 -4
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/utilityHelpers.buffer.js +3 -3
- package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
- package/out/src/utility/utilityHelpers.js +2 -2
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +4 -4
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/wab-client/WABClient.js +1 -0
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js +1 -4
- package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js +1 -4
- package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +1 -4
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
- package/package.json +26 -18
- package/out/src/__tests/CWIStyleWalletManager.test.d.ts +0 -2
- package/out/src/__tests/CWIStyleWalletManager.test.d.ts.map +0 -1
- package/out/src/__tests/CWIStyleWalletManager.test.js +0 -810
- package/out/src/__tests/CWIStyleWalletManager.test.js.map +0 -1
- package/out/src/__tests/ShamirWalletManager.test.d.ts +0 -2
- package/out/src/__tests/ShamirWalletManager.test.d.ts.map +0 -1
- package/out/src/__tests/ShamirWalletManager.test.js +0 -303
- package/out/src/__tests/ShamirWalletManager.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.callbacks.test.js +0 -365
- package/out/src/__tests/WalletPermissionsManager.callbacks.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.checks.test.js +0 -642
- package/out/src/__tests/WalletPermissionsManager.checks.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.encryption.test.js +0 -335
- package/out/src/__tests/WalletPermissionsManager.encryption.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +0 -86
- package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.fixtures.js +0 -280
- package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.flows.test.js +0 -613
- package/out/src/__tests/WalletPermissionsManager.flows.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.initialization.test.js +0 -227
- package/out/src/__tests/WalletPermissionsManager.initialization.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.pmodules.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.pmodules.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.pmodules.test.js +0 -735
- package/out/src/__tests/WalletPermissionsManager.pmodules.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.proxying.test.js +0 -585
- package/out/src/__tests/WalletPermissionsManager.proxying.test.js.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts +0 -2
- package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts.map +0 -1
- package/out/src/__tests/WalletPermissionsManager.tokens.test.js +0 -416
- package/out/src/__tests/WalletPermissionsManager.tokens.test.js.map +0 -1
- package/out/src/entropy/__tests/EntropyCollector.test.d.ts +0 -2
- package/out/src/entropy/__tests/EntropyCollector.test.d.ts.map +0 -1
- package/out/src/entropy/__tests/EntropyCollector.test.js +0 -137
- package/out/src/entropy/__tests/EntropyCollector.test.js.map +0 -1
- package/out/src/monitor/__test/MonitorDaemon.man.test.d.ts +0 -2
- package/out/src/monitor/__test/MonitorDaemon.man.test.d.ts.map +0 -1
- package/out/src/monitor/__test/MonitorDaemon.man.test.js +0 -41
- package/out/src/monitor/__test/MonitorDaemon.man.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js +0 -257
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js +0 -161
- package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js +0 -214
- package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js +0 -92
- package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.d.ts +0 -2
- package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.d.ts.map +0 -1
- package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js +0 -139
- package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js.map +0 -1
- package/out/src/sdk/__test/CertificateLifeCycle.test.d.ts +0 -2
- package/out/src/sdk/__test/CertificateLifeCycle.test.d.ts.map +0 -1
- package/out/src/sdk/__test/CertificateLifeCycle.test.js +0 -62
- package/out/src/sdk/__test/CertificateLifeCycle.test.js.map +0 -1
- package/out/src/sdk/__test/PrivilegedKeyManager.test.d.ts +0 -2
- package/out/src/sdk/__test/PrivilegedKeyManager.test.d.ts.map +0 -1
- package/out/src/sdk/__test/PrivilegedKeyManager.test.js +0 -647
- package/out/src/sdk/__test/PrivilegedKeyManager.test.js.map +0 -1
- package/out/src/sdk/__test/WalletError.test.d.ts +0 -2
- package/out/src/sdk/__test/WalletError.test.d.ts.map +0 -1
- package/out/src/sdk/__test/WalletError.test.js +0 -255
- package/out/src/sdk/__test/WalletError.test.js.map +0 -1
- package/out/src/sdk/__test/validationHelpers.test.d.ts +0 -2
- package/out/src/sdk/__test/validationHelpers.test.d.ts.map +0 -1
- package/out/src/sdk/__test/validationHelpers.test.js +0 -20
- package/out/src/sdk/__test/validationHelpers.test.js.map +0 -1
- package/out/src/services/__tests/ARC.man.test.d.ts +0 -2
- package/out/src/services/__tests/ARC.man.test.d.ts.map +0 -1
- package/out/src/services/__tests/ARC.man.test.js +0 -104
- package/out/src/services/__tests/ARC.man.test.js.map +0 -1
- package/out/src/services/__tests/ARC.timeout.man.test.d.ts +0 -2
- package/out/src/services/__tests/ARC.timeout.man.test.d.ts.map +0 -1
- package/out/src/services/__tests/ARC.timeout.man.test.js +0 -74
- package/out/src/services/__tests/ARC.timeout.man.test.js.map +0 -1
- package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts +0 -2
- package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts.map +0 -1
- package/out/src/services/__tests/ArcGorillaPool.man.test.js +0 -93
- package/out/src/services/__tests/ArcGorillaPool.man.test.js.map +0 -1
- package/out/src/services/__tests/arcServices.test.d.ts +0 -2
- package/out/src/services/__tests/arcServices.test.d.ts.map +0 -1
- package/out/src/services/__tests/arcServices.test.js +0 -7
- package/out/src/services/__tests/arcServices.test.js.map +0 -1
- package/out/src/services/__tests/bitrails.test.d.ts +0 -2
- package/out/src/services/__tests/bitrails.test.d.ts.map +0 -1
- package/out/src/services/__tests/bitrails.test.js +0 -60
- package/out/src/services/__tests/bitrails.test.js.map +0 -1
- package/out/src/services/__tests/getFiatExchangeRate.test.d.ts +0 -2
- package/out/src/services/__tests/getFiatExchangeRate.test.d.ts.map +0 -1
- package/out/src/services/__tests/getFiatExchangeRate.test.js +0 -181
- package/out/src/services/__tests/getFiatExchangeRate.test.js.map +0 -1
- package/out/src/services/__tests/getMerklePath.test.d.ts +0 -2
- package/out/src/services/__tests/getMerklePath.test.d.ts.map +0 -1
- package/out/src/services/__tests/getMerklePath.test.js +0 -24
- package/out/src/services/__tests/getMerklePath.test.js.map +0 -1
- package/out/src/services/__tests/getRawTx.test.d.ts +0 -2
- package/out/src/services/__tests/getRawTx.test.d.ts.map +0 -1
- package/out/src/services/__tests/getRawTx.test.js +0 -16
- package/out/src/services/__tests/getRawTx.test.js.map +0 -1
- package/out/src/services/__tests/postBeef.test.d.ts +0 -2
- package/out/src/services/__tests/postBeef.test.d.ts.map +0 -1
- package/out/src/services/__tests/postBeef.test.js +0 -101
- package/out/src/services/__tests/postBeef.test.js.map +0 -1
- package/out/src/services/__tests/verifyBeef.test.d.ts +0 -2
- package/out/src/services/__tests/verifyBeef.test.d.ts.map +0 -1
- package/out/src/services/__tests/verifyBeef.test.js +0 -80
- package/out/src/services/__tests/verifyBeef.test.js.map +0 -1
- package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.d.ts +0 -2
- package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js +0 -61
- package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js.map +0 -1
- package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.d.ts +0 -2
- package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js +0 -61
- package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js +0 -57
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js +0 -41
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js +0 -109
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js +0 -88
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.js +0 -39
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +0 -76
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js +0 -44
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js +0 -165
- package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts +0 -12
- package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js +0 -66
- package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js +0 -109
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +0 -55
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js +0 -255
- package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js +0 -56
- package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.js +0 -69
- package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.d.ts +0 -2
- package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js +0 -51
- package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js.map +0 -1
- package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts +0 -2
- package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts.map +0 -1
- package/out/src/services/providers/__tests/ArcSSEClient.test.js +0 -256
- package/out/src/services/providers/__tests/ArcSSEClient.test.js.map +0 -1
- package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts +0 -2
- package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts.map +0 -1
- package/out/src/services/providers/__tests/WhatsOnChain.test.js +0 -191
- package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +0 -1
- package/out/src/services/providers/__tests/exchangeRates.test.d.ts +0 -2
- package/out/src/services/providers/__tests/exchangeRates.test.d.ts.map +0 -1
- package/out/src/services/providers/__tests/exchangeRates.test.js +0 -23
- package/out/src/services/providers/__tests/exchangeRates.test.js.map +0 -1
- package/out/src/storage/__test/StorageIdb.test.d.ts +0 -2
- package/out/src/storage/__test/StorageIdb.test.d.ts.map +0 -1
- package/out/src/storage/__test/StorageIdb.test.js +0 -44
- package/out/src/storage/__test/StorageIdb.test.js.map +0 -1
- package/out/src/storage/__test/WalletStorageManager.test.d.ts +0 -2
- package/out/src/storage/__test/WalletStorageManager.test.d.ts.map +0 -1
- package/out/src/storage/__test/WalletStorageManager.test.js +0 -254
- package/out/src/storage/__test/WalletStorageManager.test.js.map +0 -1
- package/out/src/storage/__test/adminStats.man.test.d.ts +0 -2
- package/out/src/storage/__test/adminStats.man.test.d.ts.map +0 -1
- package/out/src/storage/__test/adminStats.man.test.js +0 -78
- package/out/src/storage/__test/adminStats.man.test.js.map +0 -1
- package/out/src/storage/__test/findStaleMerkleRoots.test.d.ts +0 -2
- package/out/src/storage/__test/findStaleMerkleRoots.test.d.ts.map +0 -1
- package/out/src/storage/__test/findStaleMerkleRoots.test.js +0 -41
- package/out/src/storage/__test/findStaleMerkleRoots.test.js.map +0 -1
- package/out/src/storage/__test/findStaleMerkleRootsKnex.test.d.ts +0 -2
- package/out/src/storage/__test/findStaleMerkleRootsKnex.test.d.ts.map +0 -1
- package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js +0 -73
- package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js.map +0 -1
- package/out/src/storage/__test/getBeefForTransaction.test.d.ts +0 -2
- package/out/src/storage/__test/getBeefForTransaction.test.d.ts.map +0 -1
- package/out/src/storage/__test/getBeefForTransaction.test.js +0 -347
- package/out/src/storage/__test/getBeefForTransaction.test.js.map +0 -1
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.d.ts +0 -2
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.d.ts.map +0 -1
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +0 -1111
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +0 -1
- package/out/src/storage/methods/__test/offsetKey.test.d.ts +0 -2
- package/out/src/storage/methods/__test/offsetKey.test.d.ts.map +0 -1
- package/out/src/storage/methods/__test/offsetKey.test.js +0 -229
- package/out/src/storage/methods/__test/offsetKey.test.js.map +0 -1
- package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts +0 -2
- package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts.map +0 -1
- package/out/src/storage/remoting/__test/StorageClient.man.test.js +0 -487
- package/out/src/storage/remoting/__test/StorageClient.man.test.js.map +0 -1
- package/out/src/storage/remoting/__test/StorageClient.test.d.ts +0 -2
- package/out/src/storage/remoting/__test/StorageClient.test.d.ts.map +0 -1
- package/out/src/storage/remoting/__test/StorageClient.test.js +0 -119
- package/out/src/storage/remoting/__test/StorageClient.test.js.map +0 -1
- package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.d.ts +0 -2
- package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.d.ts.map +0 -1
- package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.js +0 -268
- package/out/src/storage/remoting/__tests__/entityValidationHelpers.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js +0 -301
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.js +0 -308
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.js +0 -316
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js +0 -228
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js +0 -191
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js +0 -226
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/OutputTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/OutputTests.test.js +0 -413
- package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js +0 -331
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +0 -474
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js +0 -234
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +0 -539
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js +0 -304
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js +0 -170
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.js +0 -81
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.js.map +0 -1
- package/out/src/storage/schema/entities/__tests/usersTests.test.d.ts +0 -2
- package/out/src/storage/schema/entities/__tests/usersTests.test.d.ts.map +0 -1
- package/out/src/storage/schema/entities/__tests/usersTests.test.js +0 -277
- package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +0 -1
- package/out/src/utility/__tests/utilityHelpers.noBuffer.test.d.ts +0 -2
- package/out/src/utility/__tests/utilityHelpers.noBuffer.test.d.ts.map +0 -1
- package/out/src/utility/__tests/utilityHelpers.noBuffer.test.js +0 -107
- package/out/src/utility/__tests/utilityHelpers.noBuffer.test.js.map +0 -1
- package/out/src/wab-client/__tests/WABClient.man.test.d.ts +0 -2
- package/out/src/wab-client/__tests/WABClient.man.test.d.ts.map +0 -1
- package/out/src/wab-client/__tests/WABClient.man.test.js +0 -52
- package/out/src/wab-client/__tests/WABClient.man.test.js.map +0 -1
|
@@ -61,6 +61,54 @@ const BASKET_MAP = {
|
|
|
61
61
|
* the old token UTXO and outputs a new one (or none, if fully revoked).
|
|
62
62
|
*/
|
|
63
63
|
class WalletPermissionsManager {
|
|
64
|
+
/** A reference to the BRC-100 wallet instance. */
|
|
65
|
+
underlying;
|
|
66
|
+
/** The "admin" domain or FQDN that is implicitly allowed to do everything. */
|
|
67
|
+
adminOriginator;
|
|
68
|
+
/**
|
|
69
|
+
* Event callbacks that external code can subscribe to, e.g. to show a UI prompt
|
|
70
|
+
* or log events. Each event can have multiple handlers.
|
|
71
|
+
*/
|
|
72
|
+
callbacks = {
|
|
73
|
+
onProtocolPermissionRequested: [],
|
|
74
|
+
onBasketAccessRequested: [],
|
|
75
|
+
onCertificateAccessRequested: [],
|
|
76
|
+
onSpendingAuthorizationRequested: [],
|
|
77
|
+
onGroupedPermissionRequested: [],
|
|
78
|
+
onCounterpartyPermissionRequested: []
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* We queue parallel requests for the same resource so that only one
|
|
82
|
+
* user prompt is created for a single resource. If multiple calls come
|
|
83
|
+
* in at once for the same "protocol:domain:privileged:counterparty" etc.,
|
|
84
|
+
* they get merged.
|
|
85
|
+
*
|
|
86
|
+
* The key is a string derived from the operation; the value is an object with a reference to the
|
|
87
|
+
* associated request and an array of pending promise resolve/reject pairs, one for each active
|
|
88
|
+
* operation that's waiting on the particular resource described by the key.
|
|
89
|
+
*/
|
|
90
|
+
activeRequests = new Map();
|
|
91
|
+
/** Cache recently confirmed permissions to avoid repeated lookups. */
|
|
92
|
+
permissionCache = new Map();
|
|
93
|
+
recentGrants = new Map();
|
|
94
|
+
manifestCache = new Map();
|
|
95
|
+
manifestFetchInProgress = new Map();
|
|
96
|
+
static MANIFEST_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
97
|
+
groupedPermissionFlowTail = new Map();
|
|
98
|
+
pactEstablishedCache = new Map();
|
|
99
|
+
/** How long a cached permission remains valid (5 minutes). */
|
|
100
|
+
static CACHE_TTL_MS = 5 * 60 * 1000;
|
|
101
|
+
/** Window during which freshly granted permissions are auto-allowed (except spending). */
|
|
102
|
+
static RECENT_GRANT_COVER_MS = 15 * 1000;
|
|
103
|
+
/** Default ports used when normalizing originator values. */
|
|
104
|
+
static DEFAULT_PORTS = {
|
|
105
|
+
'http:': '80',
|
|
106
|
+
'https:': '443'
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Configuration that determines whether to skip or apply various checks and encryption.
|
|
110
|
+
*/
|
|
111
|
+
config;
|
|
64
112
|
/**
|
|
65
113
|
* Constructs a new Permissions Manager instance.
|
|
66
114
|
*
|
|
@@ -69,36 +117,6 @@ class WalletPermissionsManager {
|
|
|
69
117
|
* @param config A set of boolean flags controlling how strictly permissions are enforced
|
|
70
118
|
*/
|
|
71
119
|
constructor(underlyingWallet, adminOriginator, config = {}) {
|
|
72
|
-
/**
|
|
73
|
-
* Event callbacks that external code can subscribe to, e.g. to show a UI prompt
|
|
74
|
-
* or log events. Each event can have multiple handlers.
|
|
75
|
-
*/
|
|
76
|
-
this.callbacks = {
|
|
77
|
-
onProtocolPermissionRequested: [],
|
|
78
|
-
onBasketAccessRequested: [],
|
|
79
|
-
onCertificateAccessRequested: [],
|
|
80
|
-
onSpendingAuthorizationRequested: [],
|
|
81
|
-
onGroupedPermissionRequested: [],
|
|
82
|
-
onCounterpartyPermissionRequested: []
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* We queue parallel requests for the same resource so that only one
|
|
86
|
-
* user prompt is created for a single resource. If multiple calls come
|
|
87
|
-
* in at once for the same "protocol:domain:privileged:counterparty" etc.,
|
|
88
|
-
* they get merged.
|
|
89
|
-
*
|
|
90
|
-
* The key is a string derived from the operation; the value is an object with a reference to the
|
|
91
|
-
* associated request and an array of pending promise resolve/reject pairs, one for each active
|
|
92
|
-
* operation that's waiting on the particular resource described by the key.
|
|
93
|
-
*/
|
|
94
|
-
this.activeRequests = new Map();
|
|
95
|
-
/** Cache recently confirmed permissions to avoid repeated lookups. */
|
|
96
|
-
this.permissionCache = new Map();
|
|
97
|
-
this.recentGrants = new Map();
|
|
98
|
-
this.manifestCache = new Map();
|
|
99
|
-
this.manifestFetchInProgress = new Map();
|
|
100
|
-
this.groupedPermissionFlowTail = new Map();
|
|
101
|
-
this.pactEstablishedCache = new Map();
|
|
102
120
|
this.underlying = underlyingWallet;
|
|
103
121
|
this.adminOriginator = this.normalizeOriginator(adminOriginator) || adminOriginator;
|
|
104
122
|
// Default all config options to true unless specified
|
|
@@ -142,13 +160,12 @@ class WalletPermissionsManager {
|
|
|
142
160
|
* @returns The transformed response, or null if not a P-basket/protocol (caller should continue normal flow)
|
|
143
161
|
*/
|
|
144
162
|
async delegateToPModuleIfNeeded(basketOrProtocolName, method, args, originator, underlyingCall) {
|
|
145
|
-
var _a;
|
|
146
163
|
// Check if this is a P-protocol/basket
|
|
147
164
|
if (!basketOrProtocolName.startsWith('p ')) {
|
|
148
165
|
return null; // If not, caller should continue normal flow
|
|
149
166
|
}
|
|
150
167
|
const schemeID = basketOrProtocolName.split(' ')[1];
|
|
151
|
-
const module =
|
|
168
|
+
const module = this.config.permissionModules?.[schemeID];
|
|
152
169
|
if (module == null) {
|
|
153
170
|
throw new Error(`Unsupported P-module scheme: p ${schemeID}`);
|
|
154
171
|
}
|
|
@@ -170,10 +187,9 @@ class WalletPermissionsManager {
|
|
|
170
187
|
* Adds a permission module for the given schemeID if needed, throwing if unsupported.
|
|
171
188
|
*/
|
|
172
189
|
addPModuleByScheme(schemeID, kind, pModulesByScheme) {
|
|
173
|
-
var _a;
|
|
174
190
|
if (pModulesByScheme.has(schemeID))
|
|
175
191
|
return;
|
|
176
|
-
const module =
|
|
192
|
+
const module = this.config.permissionModules?.[schemeID];
|
|
177
193
|
if (module == null) {
|
|
178
194
|
throw new Error(`Unsupported P-${kind} scheme: p ${schemeID}`);
|
|
179
195
|
}
|
|
@@ -439,8 +455,7 @@ class WalletPermissionsManager {
|
|
|
439
455
|
}
|
|
440
456
|
const grantedProtocols = params.granted.protocolPermissions || [];
|
|
441
457
|
const protocolTokens = await this.mapWithConcurrency(grantedProtocols, 8, async (p) => {
|
|
442
|
-
|
|
443
|
-
const counterparty = ((_b = (_a = p.protocolID) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : 0) === 1 ? '' : p.counterparty || 'self';
|
|
458
|
+
const counterparty = (p.protocolID?.[0] ?? 0) === 1 ? '' : p.counterparty || 'self';
|
|
444
459
|
const token = await this.findProtocolToken(originator, false, p.protocolID, counterparty, true, originLookupValues);
|
|
445
460
|
return { p, token, counterparty };
|
|
446
461
|
});
|
|
@@ -513,17 +528,16 @@ class WalletPermissionsManager {
|
|
|
513
528
|
* Throws an error on the first mismatch.
|
|
514
529
|
*/
|
|
515
530
|
validateGrantedPermissionsSubset(granted, requested) {
|
|
516
|
-
var _a, _b, _c;
|
|
517
531
|
if ((granted.spendingAuthorization != null) && (requested.spendingAuthorization == null)) {
|
|
518
532
|
throw new Error('Granted spending authorization was not part of the original request.');
|
|
519
533
|
}
|
|
520
|
-
if (
|
|
534
|
+
if (granted.protocolPermissions?.some(g => (requested.protocolPermissions?.find(r => deepEqual(r, g))) == null)) {
|
|
521
535
|
throw new Error('Granted protocol permissions are not a subset of the original request.');
|
|
522
536
|
}
|
|
523
|
-
if (
|
|
537
|
+
if (granted.basketAccess?.some(g => (requested.basketAccess?.find(r => deepEqual(r, g))) == null)) {
|
|
524
538
|
throw new Error('Granted basket access permissions are not a subset of the original request.');
|
|
525
539
|
}
|
|
526
|
-
if (
|
|
540
|
+
if (granted.certificateAccess?.some(g => (requested.certificateAccess?.find(r => deepEqual(r, g))) == null)) {
|
|
527
541
|
throw new Error('Granted certificate access permissions are not a subset of the original request.');
|
|
528
542
|
}
|
|
529
543
|
}
|
|
@@ -553,7 +567,6 @@ class WalletPermissionsManager {
|
|
|
553
567
|
this.activeRequests.delete(requestID);
|
|
554
568
|
}
|
|
555
569
|
async grantCounterpartyPermission(params) {
|
|
556
|
-
var _a;
|
|
557
570
|
const matching = this.activeRequests.get(params.requestID);
|
|
558
571
|
if (matching == null) {
|
|
559
572
|
throw new Error('Request ID not found.');
|
|
@@ -570,7 +583,7 @@ class WalletPermissionsManager {
|
|
|
570
583
|
return p.protocolID[1];
|
|
571
584
|
return undefined;
|
|
572
585
|
};
|
|
573
|
-
if (
|
|
586
|
+
if (params.granted.protocols?.some(g => {
|
|
574
587
|
const gName = getProtoName(g);
|
|
575
588
|
if (!gName)
|
|
576
589
|
return true;
|
|
@@ -798,7 +811,7 @@ class WalletPermissionsManager {
|
|
|
798
811
|
return true;
|
|
799
812
|
}
|
|
800
813
|
const token = await this.findSpendingToken(originator, lookupValues);
|
|
801
|
-
if (token
|
|
814
|
+
if (token?.authorizedAmount) {
|
|
802
815
|
// Check how much has been spent so far
|
|
803
816
|
const spentSoFar = await this.querySpentSince(token);
|
|
804
817
|
if (spentSoFar + satoshis <= token.authorizedAmount) {
|
|
@@ -918,23 +931,22 @@ class WalletPermissionsManager {
|
|
|
918
931
|
};
|
|
919
932
|
const validProtocols = raw.protocols
|
|
920
933
|
.map((p) => {
|
|
921
|
-
var _a, _b;
|
|
922
934
|
const protocolName = getCI(p, 'protocolName');
|
|
923
935
|
if (typeof protocolName === 'string') {
|
|
924
936
|
return {
|
|
925
937
|
protocolName,
|
|
926
938
|
protocolID: [2, protocolName],
|
|
927
|
-
description: typeof
|
|
939
|
+
description: typeof p?.description === 'string' ? p.description : undefined
|
|
928
940
|
};
|
|
929
941
|
}
|
|
930
|
-
const protocolIdRaw =
|
|
942
|
+
const protocolIdRaw = getCI(p, 'protocolID') ?? getCI(p, 'protocolId') ?? getCI(p, 'protocolid');
|
|
931
943
|
const parsed = parseProtocolId(protocolIdRaw);
|
|
932
944
|
if (!parsed)
|
|
933
945
|
return null;
|
|
934
946
|
return {
|
|
935
947
|
protocolName: parsed,
|
|
936
948
|
protocolID: [2, parsed],
|
|
937
|
-
description: typeof
|
|
949
|
+
description: typeof p?.description === 'string' ? p.description : undefined
|
|
938
950
|
};
|
|
939
951
|
})
|
|
940
952
|
.filter(Boolean);
|
|
@@ -963,9 +975,9 @@ class WalletPermissionsManager {
|
|
|
963
975
|
const response = await fetch(`${proto}://${originator}/manifest.json`);
|
|
964
976
|
if (response.ok) {
|
|
965
977
|
const manifest = await response.json();
|
|
966
|
-
const namespace =
|
|
967
|
-
const groupPermissions =
|
|
968
|
-
const counterpartyPermissionsDeclared = this.validateCounterpartyPermissions(namespace
|
|
978
|
+
const namespace = manifest?.metanet || manifest?.babbage;
|
|
979
|
+
const groupPermissions = namespace?.groupPermissions || null;
|
|
980
|
+
const counterpartyPermissionsDeclared = this.validateCounterpartyPermissions(namespace?.counterpartyPermissions);
|
|
969
981
|
this.manifestCache.set(originator, {
|
|
970
982
|
groupPermissions,
|
|
971
983
|
counterpartyPermissions: counterpartyPermissionsDeclared,
|
|
@@ -1012,7 +1024,6 @@ class WalletPermissionsManager {
|
|
|
1012
1024
|
})(),
|
|
1013
1025
|
(async () => {
|
|
1014
1026
|
const protocolChecks = await Promise.all((groupPermissions.protocolPermissions || []).map(async (p) => {
|
|
1015
|
-
var _a;
|
|
1016
1027
|
if (p.counterparty === '')
|
|
1017
1028
|
return null;
|
|
1018
1029
|
const [level] = p.protocolID || [0];
|
|
@@ -1023,7 +1034,7 @@ class WalletPermissionsManager {
|
|
|
1023
1034
|
originator,
|
|
1024
1035
|
privileged: false,
|
|
1025
1036
|
protocolID: p.protocolID,
|
|
1026
|
-
counterparty:
|
|
1037
|
+
counterparty: p.counterparty ?? 'self'
|
|
1027
1038
|
});
|
|
1028
1039
|
return hasPerm ? null : p;
|
|
1029
1040
|
}));
|
|
@@ -1062,11 +1073,10 @@ class WalletPermissionsManager {
|
|
|
1062
1073
|
return permissionsToRequest;
|
|
1063
1074
|
}
|
|
1064
1075
|
hasAnyPermissionsToRequest(permissions) {
|
|
1065
|
-
var _a, _b, _c, _d, _e, _f;
|
|
1066
1076
|
return !!(permissions.spendingAuthorization ||
|
|
1067
|
-
(
|
|
1068
|
-
(
|
|
1069
|
-
(
|
|
1077
|
+
(permissions.protocolPermissions?.length ?? 0) > 0 ||
|
|
1078
|
+
(permissions.basketAccess?.length ?? 0) > 0 ||
|
|
1079
|
+
(permissions.certificateAccess?.length ?? 0) > 0);
|
|
1070
1080
|
}
|
|
1071
1081
|
hasGroupedPermissionRequestedHandlers() {
|
|
1072
1082
|
const handlers = this.callbacks.onGroupedPermissionRequested || [];
|
|
@@ -1077,7 +1087,6 @@ class WalletPermissionsManager {
|
|
|
1077
1087
|
return handlers.some(h => typeof h === 'function');
|
|
1078
1088
|
}
|
|
1079
1089
|
async hasPactEstablished(originator, counterparty) {
|
|
1080
|
-
var _a;
|
|
1081
1090
|
if (counterparty === 'self' || counterparty === 'anyone') {
|
|
1082
1091
|
return true;
|
|
1083
1092
|
}
|
|
@@ -1086,7 +1095,7 @@ class WalletPermissionsManager {
|
|
|
1086
1095
|
return true;
|
|
1087
1096
|
}
|
|
1088
1097
|
const { counterpartyPermissions } = await this.fetchManifestPermissions(originator);
|
|
1089
|
-
if (!
|
|
1098
|
+
if (!counterpartyPermissions?.protocols?.length) {
|
|
1090
1099
|
return true;
|
|
1091
1100
|
}
|
|
1092
1101
|
const firstProtocol = counterpartyPermissions.protocols[0];
|
|
@@ -1107,7 +1116,6 @@ class WalletPermissionsManager {
|
|
|
1107
1116
|
this.pactEstablishedCache.set(cacheKey, Date.now());
|
|
1108
1117
|
}
|
|
1109
1118
|
async maybeRequestPact(currentRequest) {
|
|
1110
|
-
var _a;
|
|
1111
1119
|
if (!this.config.seekGroupedPermission) {
|
|
1112
1120
|
return null;
|
|
1113
1121
|
}
|
|
@@ -1133,7 +1141,7 @@ class WalletPermissionsManager {
|
|
|
1133
1141
|
return null;
|
|
1134
1142
|
}
|
|
1135
1143
|
const { counterpartyPermissions } = await this.fetchManifestPermissions(originator);
|
|
1136
|
-
if (!
|
|
1144
|
+
if (!counterpartyPermissions?.protocols?.length) {
|
|
1137
1145
|
return null;
|
|
1138
1146
|
}
|
|
1139
1147
|
if (!this.isProtocolInCounterpartyPermissions(currentRequest.protocolID, counterpartyPermissions)) {
|
|
@@ -1201,7 +1209,6 @@ class WalletPermissionsManager {
|
|
|
1201
1209
|
}
|
|
1202
1210
|
}
|
|
1203
1211
|
async maybeRequestPeerGroupedLevel2ProtocolPermissions(currentRequest) {
|
|
1204
|
-
var _a, _b;
|
|
1205
1212
|
if (!this.config.seekGroupedPermission) {
|
|
1206
1213
|
return null;
|
|
1207
1214
|
}
|
|
@@ -1216,8 +1223,8 @@ class WalletPermissionsManager {
|
|
|
1216
1223
|
return null;
|
|
1217
1224
|
}
|
|
1218
1225
|
const originator = currentRequest.originator;
|
|
1219
|
-
const privileged =
|
|
1220
|
-
const counterparty =
|
|
1226
|
+
const privileged = currentRequest.privileged ?? false;
|
|
1227
|
+
const counterparty = currentRequest.counterparty ?? 'self';
|
|
1221
1228
|
const groupPermissions = await this.fetchManifestGroupPermissions(originator);
|
|
1222
1229
|
if (groupPermissions == null) {
|
|
1223
1230
|
return null;
|
|
@@ -1230,7 +1237,7 @@ class WalletPermissionsManager {
|
|
|
1230
1237
|
return cp;
|
|
1231
1238
|
};
|
|
1232
1239
|
const manifestLevel2ForThisPeer = (groupPermissions.protocolPermissions || [])
|
|
1233
|
-
.filter(p =>
|
|
1240
|
+
.filter(p => (p.protocolID?.[0] ?? 0) === 2)
|
|
1234
1241
|
.map(p => ({
|
|
1235
1242
|
protocolID: p.protocolID,
|
|
1236
1243
|
counterparty: normalizeManifestCounterparty(p.counterparty),
|
|
@@ -1283,7 +1290,7 @@ class WalletPermissionsManager {
|
|
|
1283
1290
|
return await fn();
|
|
1284
1291
|
}
|
|
1285
1292
|
finally {
|
|
1286
|
-
release
|
|
1293
|
+
release?.();
|
|
1287
1294
|
currentTail.finally(() => {
|
|
1288
1295
|
if (this.groupedPermissionFlowTail.get(originator) === currentTail) {
|
|
1289
1296
|
this.groupedPermissionFlowTail.delete(originator);
|
|
@@ -1292,14 +1299,13 @@ class WalletPermissionsManager {
|
|
|
1292
1299
|
}
|
|
1293
1300
|
}
|
|
1294
1301
|
async checkSpecificPermissionAfterGroupFlow(request) {
|
|
1295
|
-
var _a, _b, _c;
|
|
1296
1302
|
switch (request.type) {
|
|
1297
1303
|
case 'protocol':
|
|
1298
1304
|
return await this.hasProtocolPermission({
|
|
1299
1305
|
originator: request.originator,
|
|
1300
|
-
privileged:
|
|
1306
|
+
privileged: request.privileged ?? false,
|
|
1301
1307
|
protocolID: request.protocolID,
|
|
1302
|
-
counterparty:
|
|
1308
|
+
counterparty: request.counterparty ?? 'self'
|
|
1303
1309
|
});
|
|
1304
1310
|
case 'basket':
|
|
1305
1311
|
return await this.hasBasketAccess({
|
|
@@ -1309,7 +1315,7 @@ class WalletPermissionsManager {
|
|
|
1309
1315
|
case 'certificate':
|
|
1310
1316
|
return await this.hasCertificateAccess({
|
|
1311
1317
|
originator: request.originator,
|
|
1312
|
-
privileged:
|
|
1318
|
+
privileged: request.privileged ?? false,
|
|
1313
1319
|
verifier: request.certificate.verifier,
|
|
1314
1320
|
certType: request.certificate.certType,
|
|
1315
1321
|
fields: request.certificate.fields
|
|
@@ -1324,7 +1330,6 @@ class WalletPermissionsManager {
|
|
|
1324
1330
|
}
|
|
1325
1331
|
}
|
|
1326
1332
|
isRequestIncludedInGroupPermissions(request, groupPermissions) {
|
|
1327
|
-
var _a, _b, _c, _d;
|
|
1328
1333
|
switch (request.type) {
|
|
1329
1334
|
case 'protocol': {
|
|
1330
1335
|
if (request.privileged)
|
|
@@ -1332,24 +1337,23 @@ class WalletPermissionsManager {
|
|
|
1332
1337
|
const pid = request.protocolID;
|
|
1333
1338
|
if (pid == null)
|
|
1334
1339
|
return false;
|
|
1335
|
-
const cp =
|
|
1336
|
-
return !!
|
|
1337
|
-
var _a;
|
|
1340
|
+
const cp = request.counterparty ?? 'self';
|
|
1341
|
+
return !!groupPermissions.protocolPermissions?.some(p => {
|
|
1338
1342
|
if (p.counterparty === '')
|
|
1339
1343
|
return false;
|
|
1340
1344
|
const [level] = p.protocolID || [0];
|
|
1341
1345
|
if (level === 2 && (p.counterparty === undefined || p.counterparty === null)) {
|
|
1342
1346
|
return false;
|
|
1343
1347
|
}
|
|
1344
|
-
const manifestCp = level === 1 ? '' : (
|
|
1348
|
+
const manifestCp = level === 1 ? '' : (p.counterparty ?? 'self');
|
|
1345
1349
|
return deepEqual(p.protocolID, pid) && manifestCp === cp;
|
|
1346
|
-
})
|
|
1350
|
+
});
|
|
1347
1351
|
}
|
|
1348
1352
|
case 'basket': {
|
|
1349
1353
|
const basket = request.basket;
|
|
1350
1354
|
if (!basket)
|
|
1351
1355
|
return false;
|
|
1352
|
-
return !!
|
|
1356
|
+
return !!groupPermissions.basketAccess?.some(b => b.basket === basket);
|
|
1353
1357
|
}
|
|
1354
1358
|
case 'certificate': {
|
|
1355
1359
|
if (request.privileged)
|
|
@@ -1357,7 +1361,7 @@ class WalletPermissionsManager {
|
|
|
1357
1361
|
const cert = request.certificate;
|
|
1358
1362
|
if (cert == null)
|
|
1359
1363
|
return false;
|
|
1360
|
-
return !!
|
|
1364
|
+
return !!groupPermissions.certificateAccess?.some(c => {
|
|
1361
1365
|
const fieldsA = new Set(c.fields || []);
|
|
1362
1366
|
const fieldsB = new Set(cert.fields || []);
|
|
1363
1367
|
if (fieldsA.size !== fieldsB.size)
|
|
@@ -1366,7 +1370,7 @@ class WalletPermissionsManager {
|
|
|
1366
1370
|
if (!fieldsB.has(f))
|
|
1367
1371
|
return false;
|
|
1368
1372
|
return c.type === cert.certType && c.verifierPublicKey === cert.verifier;
|
|
1369
|
-
})
|
|
1373
|
+
});
|
|
1370
1374
|
}
|
|
1371
1375
|
case 'spending':
|
|
1372
1376
|
return groupPermissions.spendingAuthorization != null;
|
|
@@ -1400,8 +1404,6 @@ class WalletPermissionsManager {
|
|
|
1400
1404
|
* a new one and fires the onGroupedPermissionRequested event.
|
|
1401
1405
|
*/
|
|
1402
1406
|
async joinOrCreateGroupedRequest(key, originator, permissionsToRequest, displayOriginator) {
|
|
1403
|
-
var _a;
|
|
1404
|
-
var _b;
|
|
1405
1407
|
const existing = this.activeRequests.get(key);
|
|
1406
1408
|
if (existing == null) {
|
|
1407
1409
|
const permPromise = new Promise((resolve, reject) => {
|
|
@@ -1419,7 +1421,7 @@ class WalletPermissionsManager {
|
|
|
1419
1421
|
}
|
|
1420
1422
|
else {
|
|
1421
1423
|
const existingRequest = existing.request;
|
|
1422
|
-
|
|
1424
|
+
existingRequest.permissions.protocolPermissions ??= [];
|
|
1423
1425
|
for (const p of permissionsToRequest.protocolPermissions || []) {
|
|
1424
1426
|
if (!existingRequest.permissions.protocolPermissions.some(x => deepEqual(x, p))) {
|
|
1425
1427
|
existingRequest.permissions.protocolPermissions.push(p);
|
|
@@ -1438,14 +1440,13 @@ class WalletPermissionsManager {
|
|
|
1438
1440
|
* and return a promise that resolves once permission is granted or rejects if denied.
|
|
1439
1441
|
*/
|
|
1440
1442
|
async requestPermissionFlow(r) {
|
|
1441
|
-
var _a, _b, _c, _d;
|
|
1442
1443
|
const normalizedOriginator = this.normalizeOriginator(r.originator) || r.originator;
|
|
1443
1444
|
const preparedRequest = {
|
|
1444
1445
|
...r,
|
|
1445
1446
|
originator: normalizedOriginator,
|
|
1446
|
-
displayOriginator:
|
|
1447
|
+
displayOriginator: r.displayOriginator ?? r.previousToken?.rawOriginator ?? r.originator
|
|
1447
1448
|
};
|
|
1448
|
-
if (preparedRequest.type === 'protocol' &&
|
|
1449
|
+
if (preparedRequest.type === 'protocol' && preparedRequest.protocolID?.[0] === 1) {
|
|
1449
1450
|
preparedRequest.counterparty = '';
|
|
1450
1451
|
}
|
|
1451
1452
|
const key = this.buildActiveRequestKey(preparedRequest);
|
|
@@ -1520,12 +1521,11 @@ class WalletPermissionsManager {
|
|
|
1520
1521
|
}
|
|
1521
1522
|
/** Fires the appropriate onXXXRequested event based on the request type. */
|
|
1522
1523
|
async firePermissionRequestEvent(request, key) {
|
|
1523
|
-
var _a;
|
|
1524
1524
|
switch (request.type) {
|
|
1525
1525
|
case 'protocol':
|
|
1526
1526
|
await this.callEvent('onProtocolPermissionRequested', {
|
|
1527
1527
|
...request,
|
|
1528
|
-
counterparty:
|
|
1528
|
+
counterparty: request.protocolID?.[0] === 1 ? undefined : request.counterparty,
|
|
1529
1529
|
requestID: key
|
|
1530
1530
|
});
|
|
1531
1531
|
break;
|
|
@@ -1540,6 +1540,27 @@ class WalletPermissionsManager {
|
|
|
1540
1540
|
break;
|
|
1541
1541
|
}
|
|
1542
1542
|
}
|
|
1543
|
+
/* ---------------------------------------------------------------------
|
|
1544
|
+
* 4) SEARCH / DECODE / DECRYPT ON-CHAIN TOKENS (PushDrop Scripts)
|
|
1545
|
+
* --------------------------------------------------------------------- */
|
|
1546
|
+
/**
|
|
1547
|
+
* We will use a administrative "permission token encryption" protocol to store fields
|
|
1548
|
+
* in each permission's PushDrop script. This ensures that only the user's wallet
|
|
1549
|
+
* can decrypt them. In practice, this data is not super sensitive, but we still
|
|
1550
|
+
* follow the principle of least exposure.
|
|
1551
|
+
*/
|
|
1552
|
+
static PERM_TOKEN_ENCRYPTION_PROTOCOL = [
|
|
1553
|
+
2,
|
|
1554
|
+
'admin permission token encryption'
|
|
1555
|
+
];
|
|
1556
|
+
/**
|
|
1557
|
+
* Similarly, we will use a "metadata encryption" protocol to preserve the confidentiality
|
|
1558
|
+
* of transaction descriptions and input/output descriptions from lower storage layers.
|
|
1559
|
+
*/
|
|
1560
|
+
static METADATA_ENCRYPTION_PROTOCOL = [
|
|
1561
|
+
2,
|
|
1562
|
+
'admin metadata encryption'
|
|
1563
|
+
];
|
|
1543
1564
|
/** We always use `keyID="1"` and `counterparty="self"` for these encryption ops. */
|
|
1544
1565
|
async encryptPermissionTokenField(plaintext) {
|
|
1545
1566
|
const data = typeof plaintext === 'string' ? sdk_1.Utils.toArray(plaintext, 'utf8') : plaintext;
|
|
@@ -1621,7 +1642,7 @@ class WalletPermissionsManager {
|
|
|
1621
1642
|
}
|
|
1622
1643
|
/** Normalizes a txid string to lowercase. */
|
|
1623
1644
|
normalizeTxid(txid) {
|
|
1624
|
-
return (txid
|
|
1645
|
+
return (txid ?? '').toLowerCase();
|
|
1625
1646
|
}
|
|
1626
1647
|
/** Reverses a 32-byte hex txid (for endian normalization). */
|
|
1627
1648
|
reverseHexTxid(txid) {
|
|
@@ -1652,9 +1673,15 @@ class WalletPermissionsManager {
|
|
|
1652
1673
|
*/
|
|
1653
1674
|
findInputIndexForToken(tx, token) {
|
|
1654
1675
|
return tx.inputs.findIndex((input) => {
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1676
|
+
const txidCandidate = input?.sourceTXID ??
|
|
1677
|
+
input?.sourceTxid ??
|
|
1678
|
+
input?.sourceTxId ??
|
|
1679
|
+
input?.prevTxId ??
|
|
1680
|
+
input?.prevTxid ??
|
|
1681
|
+
input?.prevTXID ??
|
|
1682
|
+
input?.txid ??
|
|
1683
|
+
input?.txID;
|
|
1684
|
+
const voutCandidate = input?.sourceOutputIndex ?? input?.sourceOutput ?? input?.outputIndex ?? input?.vout ?? input?.prevOutIndex;
|
|
1658
1685
|
if (typeof txidCandidate === 'string' && typeof voutCandidate === 'number') {
|
|
1659
1686
|
const cand = this.normalizeTxid(txidCandidate);
|
|
1660
1687
|
if (cand === this.normalizeTxid(token.txid) && voutCandidate === token.outputIndex)
|
|
@@ -1662,14 +1689,14 @@ class WalletPermissionsManager {
|
|
|
1662
1689
|
if (cand === this.reverseHexTxid(token.txid) && voutCandidate === token.outputIndex)
|
|
1663
1690
|
return true;
|
|
1664
1691
|
}
|
|
1665
|
-
const outpointCandidate =
|
|
1692
|
+
const outpointCandidate = input?.outpoint ?? input?.sourceOutpoint ?? input?.prevOutpoint;
|
|
1666
1693
|
return typeof outpointCandidate === 'string' && this.tokenMatchesOutpointString(outpointCandidate, token);
|
|
1667
1694
|
});
|
|
1668
1695
|
}
|
|
1669
1696
|
/** Looks for a DPACP permission token matching origin/domain, privileged, protocol, cpty. */
|
|
1670
1697
|
async findProtocolToken(originator, privileged, protocolID, counterparty, includeExpired, originatorLookupValues) {
|
|
1671
1698
|
const [secLevel, protoName] = protocolID;
|
|
1672
|
-
const originsToTry =
|
|
1699
|
+
const originsToTry = originatorLookupValues?.length ? originatorLookupValues : [originator];
|
|
1673
1700
|
for (const originTag of originsToTry) {
|
|
1674
1701
|
const tags = [
|
|
1675
1702
|
`originator ${originTag}`,
|
|
@@ -1690,7 +1717,7 @@ class WalletPermissionsManager {
|
|
|
1690
1717
|
const [txid, outputIndex] = this.parseOutpoint(out.outpoint);
|
|
1691
1718
|
const tx = sdk_1.Transaction.fromBEEF(result.BEEF, txid);
|
|
1692
1719
|
const dec = sdk_1.PushDrop.decode(tx.outputs[outputIndex].lockingScript);
|
|
1693
|
-
if (
|
|
1720
|
+
if (dec?.fields == null || dec.fields.length < 6)
|
|
1694
1721
|
continue;
|
|
1695
1722
|
const f = await this.decryptProtocolTokenFields(dec.fields);
|
|
1696
1723
|
if (this.normalizeOriginator(f.domainDecoded) !== originator)
|
|
@@ -1724,7 +1751,7 @@ class WalletPermissionsManager {
|
|
|
1724
1751
|
/** Finds ALL DPACP permission tokens matching origin/domain, privileged, protocol, cpty. Never filters by expiry. */
|
|
1725
1752
|
async findAllProtocolTokens(originator, privileged, protocolID, counterparty, originatorLookupValues) {
|
|
1726
1753
|
const [secLevel, protoName] = protocolID;
|
|
1727
|
-
const originsToTry =
|
|
1754
|
+
const originsToTry = originatorLookupValues?.length ? originatorLookupValues : [originator];
|
|
1728
1755
|
const matches = [];
|
|
1729
1756
|
const seen = new Set();
|
|
1730
1757
|
for (const originTag of originsToTry) {
|
|
@@ -1749,7 +1776,7 @@ class WalletPermissionsManager {
|
|
|
1749
1776
|
const [txid, vout] = this.parseOutpoint(out.outpoint);
|
|
1750
1777
|
const tx = sdk_1.Transaction.fromBEEF(result.BEEF, txid);
|
|
1751
1778
|
const dec = sdk_1.PushDrop.decode(tx.outputs[vout].lockingScript);
|
|
1752
|
-
if (
|
|
1779
|
+
if (dec?.fields == null || dec.fields.length < 6)
|
|
1753
1780
|
continue;
|
|
1754
1781
|
const f = await this.decryptProtocolTokenFields(dec.fields);
|
|
1755
1782
|
if (this.normalizeOriginator(f.domainDecoded) !== originator)
|
|
@@ -1781,7 +1808,7 @@ class WalletPermissionsManager {
|
|
|
1781
1808
|
}
|
|
1782
1809
|
/** Looks for a DBAP token matching (originator, basket). */
|
|
1783
1810
|
async findBasketToken(originator, basket, includeExpired, originatorLookupValues) {
|
|
1784
|
-
const originsToTry =
|
|
1811
|
+
const originsToTry = originatorLookupValues?.length ? originatorLookupValues : [originator];
|
|
1785
1812
|
for (const originTag of originsToTry) {
|
|
1786
1813
|
const result = await this.underlying.listOutputs({
|
|
1787
1814
|
basket: BASKET_MAP.basket,
|
|
@@ -1793,7 +1820,7 @@ class WalletPermissionsManager {
|
|
|
1793
1820
|
const [txid, outputIndex] = this.parseOutpoint(out.outpoint);
|
|
1794
1821
|
const tx = sdk_1.Transaction.fromBEEF(result.BEEF, txid);
|
|
1795
1822
|
const dec = sdk_1.PushDrop.decode(tx.outputs[outputIndex].lockingScript);
|
|
1796
|
-
if (!
|
|
1823
|
+
if (!dec?.fields || dec.fields.length < 3)
|
|
1797
1824
|
continue;
|
|
1798
1825
|
const domainDecoded = sdk_1.Utils.toUTF8(await this.decryptPermissionTokenField(dec.fields[0]));
|
|
1799
1826
|
if (this.normalizeOriginator(domainDecoded) !== originator)
|
|
@@ -1821,7 +1848,7 @@ class WalletPermissionsManager {
|
|
|
1821
1848
|
}
|
|
1822
1849
|
/** Looks for a DCAP token matching (origin, privileged, verifier, certType, fields subset). */
|
|
1823
1850
|
async findCertificateToken(originator, privileged, verifier, certType, fields, includeExpired, originatorLookupValues) {
|
|
1824
|
-
const originsToTry =
|
|
1851
|
+
const originsToTry = originatorLookupValues?.length ? originatorLookupValues : [originator];
|
|
1825
1852
|
for (const originTag of originsToTry) {
|
|
1826
1853
|
const result = await this.underlying.listOutputs({
|
|
1827
1854
|
basket: BASKET_MAP.certificate,
|
|
@@ -1833,7 +1860,7 @@ class WalletPermissionsManager {
|
|
|
1833
1860
|
const [txid, outputIndex] = this.parseOutpoint(out.outpoint);
|
|
1834
1861
|
const tx = sdk_1.Transaction.fromBEEF(result.BEEF, txid);
|
|
1835
1862
|
const dec = sdk_1.PushDrop.decode(tx.outputs[outputIndex].lockingScript);
|
|
1836
|
-
if (!
|
|
1863
|
+
if (!dec?.fields || dec.fields.length < 6)
|
|
1837
1864
|
continue;
|
|
1838
1865
|
const [domainRaw, expiryRaw, privRaw, typeRaw, fieldsRaw, verifierRaw] = dec.fields;
|
|
1839
1866
|
const domainDecoded = sdk_1.Utils.toUTF8(await this.decryptPermissionTokenField(domainRaw));
|
|
@@ -1872,7 +1899,7 @@ class WalletPermissionsManager {
|
|
|
1872
1899
|
}
|
|
1873
1900
|
/** Looks for a DSAP token matching origin, returning the first one found. */
|
|
1874
1901
|
async findSpendingToken(originator, originatorLookupValues) {
|
|
1875
|
-
const originsToTry =
|
|
1902
|
+
const originsToTry = originatorLookupValues?.length ? originatorLookupValues : [originator];
|
|
1876
1903
|
for (const originTag of originsToTry) {
|
|
1877
1904
|
const result = await this.underlying.listOutputs({
|
|
1878
1905
|
basket: BASKET_MAP.spending,
|
|
@@ -1884,7 +1911,7 @@ class WalletPermissionsManager {
|
|
|
1884
1911
|
const [txid, outputIndexStr] = out.outpoint.split('.');
|
|
1885
1912
|
const tx = sdk_1.Transaction.fromBEEF(result.BEEF, txid);
|
|
1886
1913
|
const dec = sdk_1.PushDrop.decode(tx.outputs[Number(outputIndexStr)].lockingScript);
|
|
1887
|
-
if (!
|
|
1914
|
+
if (!dec?.fields || dec.fields.length < 2)
|
|
1888
1915
|
continue;
|
|
1889
1916
|
const domainRaw = dec.fields[0];
|
|
1890
1917
|
const amtRaw = dec.fields[1];
|
|
@@ -2075,7 +2102,7 @@ class WalletPermissionsManager {
|
|
|
2075
2102
|
signAndProcess: false
|
|
2076
2103
|
}
|
|
2077
2104
|
}, this.adminOriginator);
|
|
2078
|
-
if (!
|
|
2105
|
+
if (!signableTransaction?.reference || !signableTransaction.tx) {
|
|
2079
2106
|
throw new Error('Failed to create signable transaction');
|
|
2080
2107
|
}
|
|
2081
2108
|
const partialTx = sdk_1.Transaction.fromAtomicBEEF(signableTransaction.tx);
|
|
@@ -2097,8 +2124,7 @@ class WalletPermissionsManager {
|
|
|
2097
2124
|
});
|
|
2098
2125
|
}
|
|
2099
2126
|
async coalescePermissionTokens(oldTokens, newScript, opts) {
|
|
2100
|
-
|
|
2101
|
-
if (!(oldTokens === null || oldTokens === void 0 ? void 0 : oldTokens.length))
|
|
2127
|
+
if (!oldTokens?.length)
|
|
2102
2128
|
throw new Error('No permission tokens to coalesce');
|
|
2103
2129
|
if (oldTokens.length < 2)
|
|
2104
2130
|
throw new Error('Need at least 2 tokens to coalesce');
|
|
@@ -2109,7 +2135,7 @@ class WalletPermissionsManager {
|
|
|
2109
2135
|
inputBeef.mergeBeef(sdk_1.Beef.fromBinary(token.tx));
|
|
2110
2136
|
}
|
|
2111
2137
|
const { signableTransaction } = await this.createAction({
|
|
2112
|
-
description:
|
|
2138
|
+
description: opts?.description ?? `Coalesce ${oldTokens.length} permission tokens`,
|
|
2113
2139
|
inputBEEF: inputBeef.toBinary(),
|
|
2114
2140
|
inputs: oldTokens.map((t, i) => ({
|
|
2115
2141
|
outpoint: `${t.txid}.${t.outputIndex}`,
|
|
@@ -2121,8 +2147,8 @@ class WalletPermissionsManager {
|
|
|
2121
2147
|
lockingScript: newScript.toHex(),
|
|
2122
2148
|
satoshis: 1,
|
|
2123
2149
|
outputDescription: 'Renewed permission token',
|
|
2124
|
-
...(
|
|
2125
|
-
...((
|
|
2150
|
+
...(opts?.basket ? { basket: opts.basket } : {}),
|
|
2151
|
+
...((opts?.tags == null) ? {} : { tags: opts.tags })
|
|
2126
2152
|
}
|
|
2127
2153
|
],
|
|
2128
2154
|
options: {
|
|
@@ -2131,7 +2157,7 @@ class WalletPermissionsManager {
|
|
|
2131
2157
|
signAndProcess: false
|
|
2132
2158
|
}
|
|
2133
2159
|
}, this.adminOriginator);
|
|
2134
|
-
if (!
|
|
2160
|
+
if (!signableTransaction?.reference || !signableTransaction.tx) {
|
|
2135
2161
|
throw new Error('Failed to create signable transaction');
|
|
2136
2162
|
}
|
|
2137
2163
|
// 2) Sign each input - each token needs its own unlocker with the correct locking script
|
|
@@ -2226,11 +2252,10 @@ class WalletPermissionsManager {
|
|
|
2226
2252
|
* (protocol / basket / certificate / spending).
|
|
2227
2253
|
*/
|
|
2228
2254
|
async buildPushdropFields(r, expiry, amount) {
|
|
2229
|
-
var _a, _b;
|
|
2230
2255
|
switch (r.type) {
|
|
2231
2256
|
case 'protocol': {
|
|
2232
2257
|
const [secLevel, protoName] = r.protocolID;
|
|
2233
|
-
const counterparty = secLevel === 2 ? (
|
|
2258
|
+
const counterparty = secLevel === 2 ? (r.counterparty ?? 'self') : '';
|
|
2234
2259
|
return [
|
|
2235
2260
|
await this.encryptPermissionTokenField(r.originator), // domain
|
|
2236
2261
|
await this.encryptPermissionTokenField(String(expiry)), // expiry
|
|
@@ -2260,7 +2285,7 @@ class WalletPermissionsManager {
|
|
|
2260
2285
|
}
|
|
2261
2286
|
case 'spending': {
|
|
2262
2287
|
// DSAP
|
|
2263
|
-
const authAmt = amount
|
|
2288
|
+
const authAmt = amount ?? (r.spending?.satoshis || 0);
|
|
2264
2289
|
return [
|
|
2265
2290
|
await this.encryptPermissionTokenField(r.originator),
|
|
2266
2291
|
await this.encryptPermissionTokenField(String(authAmt))
|
|
@@ -2273,13 +2298,12 @@ class WalletPermissionsManager {
|
|
|
2273
2298
|
* origin, basket, privileged, protocol name, etc.
|
|
2274
2299
|
*/
|
|
2275
2300
|
buildTagsForRequest(r) {
|
|
2276
|
-
var _a;
|
|
2277
2301
|
const tags = [`originator ${r.originator}`];
|
|
2278
2302
|
switch (r.type) {
|
|
2279
2303
|
case 'protocol': {
|
|
2280
2304
|
tags.push(`privileged ${!!r.privileged}`, `protocolName ${r.protocolID[1]}`, `protocolSecurityLevel ${r.protocolID[0]}`);
|
|
2281
2305
|
if (r.protocolID[0] === 2) {
|
|
2282
|
-
tags.push(`counterparty ${
|
|
2306
|
+
tags.push(`counterparty ${r.counterparty ?? 'self'}`);
|
|
2283
2307
|
}
|
|
2284
2308
|
break;
|
|
2285
2309
|
}
|
|
@@ -2344,7 +2368,7 @@ class WalletPermissionsManager {
|
|
|
2344
2368
|
const [txid, outputIndex] = this.parseOutpoint(out.outpoint);
|
|
2345
2369
|
const tx = sdk_1.Transaction.fromBEEF(result.BEEF, txid);
|
|
2346
2370
|
const dec = sdk_1.PushDrop.decode(tx.outputs[outputIndex].lockingScript);
|
|
2347
|
-
if (!
|
|
2371
|
+
if (!dec?.fields || dec.fields.length < 6)
|
|
2348
2372
|
continue;
|
|
2349
2373
|
const f = await this.decryptProtocolTokenFields(dec.fields);
|
|
2350
2374
|
const normalizedDomain = this.normalizeOriginator(f.domainDecoded);
|
|
@@ -2374,7 +2398,7 @@ class WalletPermissionsManager {
|
|
|
2374
2398
|
});
|
|
2375
2399
|
return true;
|
|
2376
2400
|
}
|
|
2377
|
-
catch
|
|
2401
|
+
catch {
|
|
2378
2402
|
return false;
|
|
2379
2403
|
}
|
|
2380
2404
|
}
|
|
@@ -2412,7 +2436,7 @@ class WalletPermissionsManager {
|
|
|
2412
2436
|
const [txid, outputIndex] = this.parseOutpoint(out.outpoint);
|
|
2413
2437
|
const tx = sdk_1.Transaction.fromBEEF(result.BEEF, txid);
|
|
2414
2438
|
const dec = sdk_1.PushDrop.decode(tx.outputs[outputIndex].lockingScript);
|
|
2415
|
-
if (!
|
|
2439
|
+
if (!dec?.fields || dec.fields.length < 3)
|
|
2416
2440
|
continue;
|
|
2417
2441
|
const [domainRaw, expiryRaw, basketRaw] = dec.fields;
|
|
2418
2442
|
const domainDecoded = sdk_1.Utils.toUTF8(await this.decryptPermissionTokenField(domainRaw));
|
|
@@ -2450,7 +2474,7 @@ class WalletPermissionsManager {
|
|
|
2450
2474
|
});
|
|
2451
2475
|
return true;
|
|
2452
2476
|
}
|
|
2453
|
-
catch
|
|
2477
|
+
catch {
|
|
2454
2478
|
return false;
|
|
2455
2479
|
}
|
|
2456
2480
|
}
|
|
@@ -2475,7 +2499,7 @@ class WalletPermissionsManager {
|
|
|
2475
2499
|
const [txid, outputIndexStr] = out.outpoint.split('.');
|
|
2476
2500
|
const tx = sdk_1.Transaction.fromBEEF(result.BEEF, txid);
|
|
2477
2501
|
const dec = sdk_1.PushDrop.decode(tx.outputs[Number(outputIndexStr)].lockingScript);
|
|
2478
|
-
if (!
|
|
2502
|
+
if (!dec?.fields || dec.fields.length < 2)
|
|
2479
2503
|
continue;
|
|
2480
2504
|
const [domainRaw, amtRaw] = dec.fields;
|
|
2481
2505
|
const domainDecoded = sdk_1.Utils.toUTF8(await this.decryptPermissionTokenField(domainRaw));
|
|
@@ -2507,7 +2531,7 @@ class WalletPermissionsManager {
|
|
|
2507
2531
|
});
|
|
2508
2532
|
return true;
|
|
2509
2533
|
}
|
|
2510
|
-
catch
|
|
2534
|
+
catch {
|
|
2511
2535
|
return false;
|
|
2512
2536
|
}
|
|
2513
2537
|
}
|
|
@@ -2546,7 +2570,7 @@ class WalletPermissionsManager {
|
|
|
2546
2570
|
const [txid, outputIndex] = this.parseOutpoint(out.outpoint);
|
|
2547
2571
|
const tx = sdk_1.Transaction.fromBEEF(result.BEEF, txid);
|
|
2548
2572
|
const dec = sdk_1.PushDrop.decode(tx.outputs[outputIndex].lockingScript);
|
|
2549
|
-
if (!
|
|
2573
|
+
if (!dec?.fields || dec.fields.length < 6)
|
|
2550
2574
|
continue;
|
|
2551
2575
|
const [domainRaw, expiryRaw, privRaw, typeRaw, fieldsRaw, verifierRaw] = dec.fields;
|
|
2552
2576
|
const domainDecoded = sdk_1.Utils.toUTF8(await this.decryptPermissionTokenField(domainRaw));
|
|
@@ -2585,7 +2609,7 @@ class WalletPermissionsManager {
|
|
|
2585
2609
|
});
|
|
2586
2610
|
return true;
|
|
2587
2611
|
}
|
|
2588
|
-
catch
|
|
2612
|
+
catch {
|
|
2589
2613
|
return false;
|
|
2590
2614
|
}
|
|
2591
2615
|
}
|
|
@@ -2649,7 +2673,7 @@ class WalletPermissionsManager {
|
|
|
2649
2673
|
signAndProcess: false
|
|
2650
2674
|
}
|
|
2651
2675
|
}, this.adminOriginator);
|
|
2652
|
-
if (!
|
|
2676
|
+
if (!signableTransaction?.reference || !signableTransaction.tx) {
|
|
2653
2677
|
throw new Error('Failed to create signable transaction');
|
|
2654
2678
|
}
|
|
2655
2679
|
const tx = sdk_1.Transaction.fromAtomicBEEF(signableTransaction.tx);
|
|
@@ -2936,7 +2960,6 @@ class WalletPermissionsManager {
|
|
|
2936
2960
|
return await this.decryptListActionsMetadata(results);
|
|
2937
2961
|
}
|
|
2938
2962
|
async internalizeAction(...args) {
|
|
2939
|
-
var _a;
|
|
2940
2963
|
const [requestArgs, originator] = args;
|
|
2941
2964
|
// 1) Identify unique P-modules involved (one per schemeID) from both baskets and labels
|
|
2942
2965
|
const pModulesByScheme = new Map();
|
|
@@ -3001,7 +3024,7 @@ class WalletPermissionsManager {
|
|
|
3001
3024
|
// Encrypt custom instructions for p basket outputs
|
|
3002
3025
|
for (const outIndex in transformedArgs.outputs) {
|
|
3003
3026
|
const out = transformedArgs.outputs[outIndex];
|
|
3004
|
-
if (out.protocol === 'basket insertion' &&
|
|
3027
|
+
if (out.protocol === 'basket insertion' && out.insertionRemittance?.customInstructions) {
|
|
3005
3028
|
out.insertionRemittance.customInstructions = await this.maybeEncryptMetadata(out.insertionRemittance.customInstructions);
|
|
3006
3029
|
}
|
|
3007
3030
|
}
|
|
@@ -3075,6 +3098,7 @@ class WalletPermissionsManager {
|
|
|
3075
3098
|
protocolID: requestArgs.protocolID,
|
|
3076
3099
|
counterparty: requestArgs.counterparty || 'self',
|
|
3077
3100
|
reason: requestArgs.privilegedReason,
|
|
3101
|
+
seekPermission: requestArgs.seekPermission,
|
|
3078
3102
|
usageType: 'publicKey'
|
|
3079
3103
|
});
|
|
3080
3104
|
}
|
|
@@ -3086,6 +3110,7 @@ class WalletPermissionsManager {
|
|
|
3086
3110
|
protocolID: [1, 'identity key retrieval'],
|
|
3087
3111
|
counterparty: 'self',
|
|
3088
3112
|
reason: requestArgs.privilegedReason,
|
|
3113
|
+
seekPermission: requestArgs.seekPermission,
|
|
3089
3114
|
usageType: 'identityKey'
|
|
3090
3115
|
});
|
|
3091
3116
|
}
|
|
@@ -3493,13 +3518,12 @@ class WalletPermissionsManager {
|
|
|
3493
3518
|
}
|
|
3494
3519
|
return port ? `${baseHost}:${port}` : baseHost;
|
|
3495
3520
|
}
|
|
3496
|
-
catch
|
|
3521
|
+
catch {
|
|
3497
3522
|
// Fall back to a conservative lowercase trim if URL parsing fails.
|
|
3498
3523
|
return trimmed.toLowerCase();
|
|
3499
3524
|
}
|
|
3500
3525
|
}
|
|
3501
3526
|
isWhitelistedCounterpartyProtocol(counterparty, protocolID) {
|
|
3502
|
-
var _a;
|
|
3503
3527
|
const whitelist = this.config.whitelistedCounterparties;
|
|
3504
3528
|
if (whitelist == null)
|
|
3505
3529
|
return false;
|
|
@@ -3508,10 +3532,10 @@ class WalletPermissionsManager {
|
|
|
3508
3532
|
const protocols = whitelist[counterparty] || whitelist[counterparty.toLowerCase()] || whitelist[counterparty.toUpperCase()];
|
|
3509
3533
|
if (!protocols || protocols.length === 0)
|
|
3510
3534
|
return false;
|
|
3511
|
-
const protoName = (
|
|
3535
|
+
const protoName = (protocolID?.[1] ?? '').toString().toLowerCase();
|
|
3512
3536
|
if (!protoName)
|
|
3513
3537
|
return false;
|
|
3514
|
-
return protocols.some(p => (p
|
|
3538
|
+
return protocols.some(p => (p ?? '').toString().toLowerCase() === protoName);
|
|
3515
3539
|
}
|
|
3516
3540
|
/**
|
|
3517
3541
|
* Produces a normalized originator value along with the set of legacy
|
|
@@ -3519,7 +3543,7 @@ class WalletPermissionsManager {
|
|
|
3519
3543
|
* permission tokens (for backwards compatibility).
|
|
3520
3544
|
*/
|
|
3521
3545
|
prepareOriginator(originator) {
|
|
3522
|
-
const trimmed = originator
|
|
3546
|
+
const trimmed = originator?.trim();
|
|
3523
3547
|
if (!trimmed) {
|
|
3524
3548
|
throw new Error('Originator is required for permission checks.');
|
|
3525
3549
|
}
|
|
@@ -3534,7 +3558,7 @@ class WalletPermissionsManager {
|
|
|
3534
3558
|
buildOriginatorLookupValues(...origins) {
|
|
3535
3559
|
const variants = new Set();
|
|
3536
3560
|
for (const origin of origins) {
|
|
3537
|
-
const trimmed = origin
|
|
3561
|
+
const trimmed = origin?.trim();
|
|
3538
3562
|
if (trimmed) {
|
|
3539
3563
|
variants.add(trimmed);
|
|
3540
3564
|
}
|
|
@@ -3546,58 +3570,25 @@ class WalletPermissionsManager {
|
|
|
3546
3570
|
* do not produce multiple user prompts.
|
|
3547
3571
|
*/
|
|
3548
3572
|
buildRequestKey(r) {
|
|
3549
|
-
var _a, _b, _c, _d, _e;
|
|
3550
3573
|
const normalizedOriginator = this.normalizeOriginator(r.originator);
|
|
3551
3574
|
switch (r.type) {
|
|
3552
3575
|
case 'protocol':
|
|
3553
|
-
return `proto:${normalizedOriginator}:${!!r.privileged}:${
|
|
3576
|
+
return `proto:${normalizedOriginator}:${!!r.privileged}:${r.protocolID?.join(',')}:${r.counterparty}`;
|
|
3554
3577
|
case 'basket':
|
|
3555
3578
|
return `basket:${normalizedOriginator}:${r.basket}`;
|
|
3556
3579
|
case 'certificate':
|
|
3557
|
-
return `cert:${normalizedOriginator}:${!!r.privileged}:${
|
|
3580
|
+
return `cert:${normalizedOriginator}:${!!r.privileged}:${r.certificate?.verifier}:${r.certificate?.certType}:${r.certificate?.fields.join('|')}`;
|
|
3558
3581
|
case 'spending':
|
|
3559
|
-
return `spend:${normalizedOriginator}:${
|
|
3582
|
+
return `spend:${normalizedOriginator}:${r.spending?.satoshis}`;
|
|
3560
3583
|
}
|
|
3561
3584
|
}
|
|
3562
3585
|
buildActiveRequestKey(r) {
|
|
3563
|
-
var _a;
|
|
3564
3586
|
const base = this.buildRequestKey(r);
|
|
3565
3587
|
if (r.type === 'protocol' || r.type === 'basket' || r.type === 'certificate') {
|
|
3566
|
-
return `${base}:${
|
|
3588
|
+
return `${base}:${r.usageType ?? ''}`;
|
|
3567
3589
|
}
|
|
3568
3590
|
return base;
|
|
3569
3591
|
}
|
|
3570
3592
|
}
|
|
3571
3593
|
exports.WalletPermissionsManager = WalletPermissionsManager;
|
|
3572
|
-
WalletPermissionsManager.MANIFEST_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
3573
|
-
/** How long a cached permission remains valid (5 minutes). */
|
|
3574
|
-
WalletPermissionsManager.CACHE_TTL_MS = 5 * 60 * 1000;
|
|
3575
|
-
/** Window during which freshly granted permissions are auto-allowed (except spending). */
|
|
3576
|
-
WalletPermissionsManager.RECENT_GRANT_COVER_MS = 15 * 1000;
|
|
3577
|
-
/** Default ports used when normalizing originator values. */
|
|
3578
|
-
WalletPermissionsManager.DEFAULT_PORTS = {
|
|
3579
|
-
'http:': '80',
|
|
3580
|
-
'https:': '443'
|
|
3581
|
-
};
|
|
3582
|
-
/* ---------------------------------------------------------------------
|
|
3583
|
-
* 4) SEARCH / DECODE / DECRYPT ON-CHAIN TOKENS (PushDrop Scripts)
|
|
3584
|
-
* --------------------------------------------------------------------- */
|
|
3585
|
-
/**
|
|
3586
|
-
* We will use a administrative "permission token encryption" protocol to store fields
|
|
3587
|
-
* in each permission's PushDrop script. This ensures that only the user's wallet
|
|
3588
|
-
* can decrypt them. In practice, this data is not super sensitive, but we still
|
|
3589
|
-
* follow the principle of least exposure.
|
|
3590
|
-
*/
|
|
3591
|
-
WalletPermissionsManager.PERM_TOKEN_ENCRYPTION_PROTOCOL = [
|
|
3592
|
-
2,
|
|
3593
|
-
'admin permission token encryption'
|
|
3594
|
-
];
|
|
3595
|
-
/**
|
|
3596
|
-
* Similarly, we will use a "metadata encryption" protocol to preserve the confidentiality
|
|
3597
|
-
* of transaction descriptions and input/output descriptions from lower storage layers.
|
|
3598
|
-
*/
|
|
3599
|
-
WalletPermissionsManager.METADATA_ENCRYPTION_PROTOCOL = [
|
|
3600
|
-
2,
|
|
3601
|
-
'admin metadata encryption'
|
|
3602
|
-
];
|
|
3603
3594
|
//# sourceMappingURL=WalletPermissionsManager.js.map
|