@bsv/wallet-toolbox 1.1.60 → 1.1.61
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/.prettierrc +1 -1
- package/docs/client.md +39 -5
- package/docs/services.md +1 -0
- package/docs/setup.md +9 -26
- package/docs/storage.md +35 -0
- package/docs/wallet.md +39 -5
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +6 -16
- package/out/src/Setup.js.map +1 -1
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +4 -11
- package/out/src/Wallet.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- 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 +1 -3
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +2 -10
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskClock.js +1 -1
- package/out/src/monitor/tasks/TaskClock.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
- 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 +1 -2
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.js +1 -2
- package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js +1 -2
- package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/sdk/CertOps.d.ts.map +1 -1
- package/out/src/sdk/CertOps.js +4 -12
- package/out/src/sdk/CertOps.js.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- 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 +1 -4
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +2 -0
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/__test/CertificateLifeCycle.test.js +1 -3
- package/out/src/sdk/__test/CertificateLifeCycle.test.js.map +1 -1
- package/out/src/sdk/__test/PrivilegedKeyManager.test.js +13 -26
- package/out/src/sdk/__test/PrivilegedKeyManager.test.js.map +1 -1
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +2 -10
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/sdk/validationHelpers.d.ts.map +1 -1
- package/out/src/sdk/validationHelpers.js +5 -12
- package/out/src/sdk/validationHelpers.js.map +1 -1
- package/out/src/services/Services.d.ts +1 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +29 -38
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/__tests/bitrails.test.js.map +1 -1
- package/out/src/services/__tests/getMerklePath.test.js.map +1 -1
- package/out/src/services/__tests/getRawTx.test.js.map +1 -1
- package/out/src/services/__tests/verifyBeef.test.js +2 -1
- package/out/src/services/__tests/verifyBeef.test.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +1 -3
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +1 -2
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +62 -134
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +6 -21
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/__tests/WhatsOnChain.test.js +1 -2
- package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +1 -1
- package/out/src/services/providers/echangeRates.d.ts.map +1 -1
- package/out/src/services/providers/echangeRates.js.map +1 -1
- package/out/src/signer/WalletSigner.d.ts.map +1 -1
- package/out/src/signer/WalletSigner.js.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js +1 -3
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +3 -11
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +3 -10
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- 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 +2 -7
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +15 -44
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +9 -34
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js.map +1 -1
- package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +5 -10
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/__test/WalletStorageManager.test.js +2 -8
- package/out/src/storage/__test/WalletStorageManager.test.js.map +1 -1
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +10 -30
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +1 -1
- package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.d.ts.map +1 -1
- package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.js +17 -28
- package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +6 -20
- 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 +4 -9
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +7 -18
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +1 -3
- 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.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +2 -9
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActions.d.ts.map +1 -1
- package/out/src/storage/methods/listActions.js +3 -15
- package/out/src/storage/methods/listActions.js.map +1 -1
- 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/listOutputs.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputs.js +4 -11
- package/out/src/storage/methods/listOutputs.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +4 -10
- 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 +8 -32
- package/out/src/storage/methods/purgeData.js.map +1 -1
- package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatus.js +1 -3
- package/out/src/storage/methods/reviewStatus.js.map +1 -1
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +15 -41
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +2 -5
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +24 -130
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/entities/Certificate.d.ts.map +1 -1
- package/out/src/storage/schema/entities/Certificate.js +1 -1
- package/out/src/storage/schema/entities/Certificate.js.map +1 -1
- package/out/src/storage/schema/entities/CertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/entities/CertificateField.js +2 -5
- package/out/src/storage/schema/entities/CertificateField.js.map +1 -1
- package/out/src/storage/schema/entities/Commission.d.ts.map +1 -1
- package/out/src/storage/schema/entities/Commission.js +2 -5
- package/out/src/storage/schema/entities/Commission.js.map +1 -1
- package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.js +14 -9
- package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
- package/out/src/storage/schema/entities/Output.d.ts.map +1 -1
- package/out/src/storage/schema/entities/Output.js +8 -25
- package/out/src/storage/schema/entities/Output.js.map +1 -1
- package/out/src/storage/schema/entities/OutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/entities/OutputBasket.js +1 -1
- package/out/src/storage/schema/entities/OutputBasket.js.map +1 -1
- package/out/src/storage/schema/entities/OutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/entities/OutputTag.js +1 -1
- package/out/src/storage/schema/entities/OutputTag.js.map +1 -1
- package/out/src/storage/schema/entities/OutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/OutputTagMap.js +3 -7
- package/out/src/storage/schema/entities/OutputTagMap.js.map +1 -1
- package/out/src/storage/schema/entities/ProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/ProvenTx.js +10 -20
- package/out/src/storage/schema/entities/ProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/ProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/entities/ProvenTxReq.js +8 -18
- package/out/src/storage/schema/entities/ProvenTxReq.js.map +1 -1
- package/out/src/storage/schema/entities/SyncState.d.ts +1 -0
- package/out/src/storage/schema/entities/SyncState.d.ts.map +1 -1
- package/out/src/storage/schema/entities/SyncState.js +41 -6
- package/out/src/storage/schema/entities/SyncState.js.map +1 -1
- package/out/src/storage/schema/entities/Transaction.d.ts.map +1 -1
- package/out/src/storage/schema/entities/Transaction.js +4 -13
- package/out/src/storage/schema/entities/Transaction.js.map +1 -1
- package/out/src/storage/schema/entities/TxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/entities/TxLabel.js +1 -1
- package/out/src/storage/schema/entities/TxLabel.js.map +1 -1
- package/out/src/storage/schema/entities/TxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/TxLabelMap.js +3 -9
- package/out/src/storage/schema/entities/TxLabelMap.js.map +1 -1
- package/out/src/storage/schema/entities/User.d.ts.map +1 -1
- package/out/src/storage/schema/entities/User.js +3 -5
- package/out/src/storage/schema/entities/User.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +1 -2
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +2 -2
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +1 -3
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.js +1 -2
- package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
- package/out/src/utility/stampLog.d.ts.map +1 -1
- package/out/src/utility/stampLog.js.map +1 -1
- package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
- package/out/src/utility/tscProofToMerklePath.js.map +1 -1
- package/out/src/utility/utilityHelpers.buffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +1 -3
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/test/Wallet/StorageClient/storageClient.man.test.js.map +1 -1
- package/out/test/Wallet/action/internalizeAction.a.test.js.map +1 -1
- package/out/test/Wallet/certificate/acquireCertificate.test.js.map +1 -1
- package/out/test/Wallet/certificate/listCertificates.test.js.map +1 -1
- package/out/test/Wallet/get/getHeaderForHeight.test.js +2 -6
- package/out/test/Wallet/get/getHeaderForHeight.test.js.map +1 -1
- package/out/test/Wallet/get/getHeight.test.js.map +1 -1
- package/out/test/Wallet/get/getKnownTxids.test.js.map +1 -1
- package/out/test/Wallet/get/getNetwork.test.js.map +1 -1
- package/out/test/Wallet/get/getVersion.test.js.map +1 -1
- package/out/test/Wallet/live/walletLive.man.test.d.ts.map +1 -1
- package/out/test/Wallet/live/walletLive.man.test.js +3 -9
- package/out/test/Wallet/live/walletLive.man.test.js.map +1 -1
- package/out/test/Wallet/local/localWallet.man.test.d.ts.map +1 -1
- package/out/test/Wallet/local/localWallet.man.test.js +15 -22
- package/out/test/Wallet/local/localWallet.man.test.js.map +1 -1
- package/out/test/Wallet/specOps/specOps.man.test.js +1 -4
- package/out/test/Wallet/specOps/specOps.man.test.js.map +1 -1
- package/out/test/Wallet/support/janitor.man.test.js.map +1 -1
- package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js.map +1 -1
- package/out/test/Wallet/sync/setActive.test.js +73 -50
- package/out/test/Wallet/sync/setActive.test.js.map +1 -1
- package/out/test/checkDB.d.ts.map +1 -1
- package/out/test/checkDB.js.map +1 -1
- package/out/test/examples/backup.man.test.d.ts.map +1 -1
- package/out/test/examples/backup.man.test.js.map +1 -1
- package/out/test/examples/pushdrop.test.d.ts.map +1 -1
- package/out/test/examples/pushdrop.test.js +5 -4
- package/out/test/examples/pushdrop.test.js.map +1 -1
- package/out/test/monitor/Monitor.test.js.map +1 -1
- package/out/test/services/Services.test.js.map +1 -1
- package/out/test/storage/KnexMigrations.test.js.map +1 -1
- package/out/test/storage/StorageMySQLDojoReader.man.test.js +1 -3
- package/out/test/storage/StorageMySQLDojoReader.man.test.js.map +1 -1
- package/out/test/storage/count.test.js.map +1 -1
- package/out/test/storage/find.test.js +5 -10
- package/out/test/storage/find.test.js.map +1 -1
- package/out/test/storage/findLegacy.test.js.map +1 -1
- package/out/test/storage/insert.test.js.map +1 -1
- package/out/test/storage/update.test.js +7 -19
- package/out/test/storage/update.test.js.map +1 -1
- package/out/test/storage/update2.test.js +22 -24
- package/out/test/storage/update2.test.js.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.d.ts +3 -1
- package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.js +52 -76
- package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
- package/out/test/wallet/action/abortAction.test.js.map +1 -1
- package/out/test/wallet/action/createAction.test.js +1 -2
- package/out/test/wallet/action/createAction.test.js.map +1 -1
- package/out/test/wallet/action/createAction2.test.d.ts.map +1 -1
- package/out/test/wallet/action/createAction2.test.js +6 -16
- package/out/test/wallet/action/createAction2.test.js.map +1 -1
- package/out/test/wallet/action/createActionToGenerateBeefs.man.test.js.map +1 -1
- package/out/test/wallet/action/internalizeAction.test.js.map +1 -1
- package/out/test/wallet/action/relinquishOutput.test.js.map +1 -1
- package/out/test/wallet/list/listActions.test.js.map +1 -1
- package/out/test/wallet/list/listActions2.test.js.map +1 -1
- package/out/test/wallet/list/listCertificates.test.js +2 -6
- package/out/test/wallet/list/listCertificates.test.js.map +1 -1
- package/out/test/wallet/list/listOutputs.test.js +2 -10
- package/out/test/wallet/list/listOutputs.test.js.map +1 -1
- package/out/test/wallet/sync/Wallet.sync.test.js +4 -6
- package/out/test/wallet/sync/Wallet.sync.test.js.map +1 -1
- package/out/tsconfig.all.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/Setup.ts +15 -52
- package/src/Wallet.ts +58 -161
- package/src/monitor/Monitor.ts +7 -22
- package/src/monitor/MonitorDaemon.ts +6 -23
- package/src/monitor/tasks/TaskCheckForProofs.ts +4 -23
- package/src/monitor/tasks/TaskClock.ts +1 -3
- package/src/monitor/tasks/TaskFailAbandoned.ts +1 -3
- package/src/monitor/tasks/TaskNewHeader.ts +1 -4
- package/src/monitor/tasks/TaskPurge.ts +1 -2
- package/src/monitor/tasks/TaskReviewStatus.ts +1 -3
- package/src/monitor/tasks/TaskSendWaiting.ts +3 -10
- package/src/sdk/CertOps.ts +31 -103
- package/src/sdk/PrivilegedKeyManager.ts +18 -48
- package/src/sdk/WERR_errors.ts +6 -25
- package/src/sdk/WalletError.ts +5 -21
- package/src/sdk/WalletServices.interfaces.ts +11 -33
- package/src/sdk/WalletStorage.interfaces.ts +25 -91
- package/src/sdk/__test/CertificateLifeCycle.test.ts +9 -27
- package/src/sdk/__test/PrivilegedKeyManager.test.ts +29 -66
- package/src/sdk/types.ts +6 -26
- package/src/sdk/validationHelpers.ts +111 -402
- package/src/services/Services.ts +51 -114
- package/src/services/__tests/bitrails.test.ts +4 -15
- package/src/services/__tests/getMerklePath.test.ts +1 -2
- package/src/services/__tests/getRawTx.test.ts +1 -3
- package/src/services/__tests/verifyBeef.test.ts +2 -1
- package/src/services/chaintracker/ChaintracksChainTracker.ts +3 -13
- package/src/services/chaintracker/chaintracks/BlockHeaderApi.ts +4 -12
- package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +9 -27
- package/src/services/createDefaultWalletServicesOptions.ts +2 -5
- package/src/services/providers/ARC.ts +5 -24
- package/src/services/providers/Bitails.ts +61 -159
- package/src/services/providers/SdkWhatsOnChain.ts +4 -17
- package/src/services/providers/WhatsOnChain.ts +31 -100
- package/src/services/providers/__tests/WhatsOnChain.test.ts +5 -15
- package/src/services/providers/echangeRates.ts +7 -22
- package/src/signer/WalletSigner.ts +1 -5
- package/src/signer/methods/acquireDirectCertificate.ts +1 -4
- package/src/signer/methods/buildSignableTransaction.ts +5 -20
- package/src/signer/methods/createAction.ts +15 -54
- package/src/signer/methods/internalizeAction.ts +10 -39
- package/src/signer/methods/proveCertificate.ts +2 -5
- package/src/signer/methods/signAction.ts +9 -39
- package/src/storage/StorageKnex.ts +166 -499
- package/src/storage/StorageProvider.ts +75 -291
- package/src/storage/StorageReader.ts +20 -65
- package/src/storage/StorageReaderWriter.ts +67 -264
- package/src/storage/StorageSyncReader.ts +2 -5
- package/src/storage/WalletStorageManager.ts +33 -108
- package/src/storage/__test/WalletStorageManager.test.ts +6 -23
- package/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts +53 -171
- package/src/storage/methods/__test/GenerateChange/randomValsUsed1.ts +17 -28
- package/src/storage/methods/attemptToPostReqsToNetwork.ts +9 -37
- package/src/storage/methods/createAction.ts +45 -181
- package/src/storage/methods/generateChange.ts +33 -114
- package/src/storage/methods/getBeefForTransaction.ts +7 -37
- package/src/storage/methods/getSyncChunk.ts +18 -69
- package/src/storage/methods/internalizeAction.ts +18 -70
- package/src/storage/methods/listActions.ts +6 -23
- package/src/storage/methods/listCertificates.ts +5 -14
- package/src/storage/methods/listOutputs.ts +14 -68
- package/src/storage/methods/processAction.ts +29 -104
- package/src/storage/methods/purgeData.ts +11 -45
- package/src/storage/methods/reviewStatus.ts +3 -9
- package/src/storage/remoting/StorageClient.ts +43 -146
- package/src/storage/remoting/StorageServer.ts +21 -59
- package/src/storage/schema/KnexMigrations.ts +34 -165
- package/src/storage/schema/entities/Certificate.ts +3 -14
- package/src/storage/schema/entities/CertificateField.ts +6 -28
- package/src/storage/schema/entities/Commission.ts +6 -23
- package/src/storage/schema/entities/EntityBase.ts +1 -6
- package/src/storage/schema/entities/MergeEntity.ts +14 -21
- package/src/storage/schema/entities/Output.ts +10 -39
- package/src/storage/schema/entities/OutputBasket.ts +4 -16
- package/src/storage/schema/entities/OutputTag.ts +4 -17
- package/src/storage/schema/entities/OutputTagMap.ts +7 -30
- package/src/storage/schema/entities/ProvenTx.ts +16 -57
- package/src/storage/schema/entities/ProvenTxReq.ts +29 -93
- package/src/storage/schema/entities/SyncState.ts +64 -116
- package/src/storage/schema/entities/Transaction.ts +10 -35
- package/src/storage/schema/entities/TxLabel.ts +4 -17
- package/src/storage/schema/entities/TxLabelMap.ts +6 -28
- package/src/storage/schema/entities/User.ts +8 -31
- package/src/storage/schema/entities/__tests/CertificateFieldTests.test.ts +23 -54
- package/src/storage/schema/entities/__tests/CertificateTests.test.ts +26 -59
- package/src/storage/schema/entities/__tests/CommissionTests.test.ts +2 -11
- package/src/storage/schema/entities/__tests/OutputBasketTests.test.ts +2 -10
- package/src/storage/schema/entities/__tests/OutputTagMapTests.test.ts +2 -10
- package/src/storage/schema/entities/__tests/OutputTagTests.test.ts +1 -4
- package/src/storage/schema/entities/__tests/OutputTests.test.ts +3 -14
- package/src/storage/schema/entities/__tests/ProvenTxReqTests.test.ts +4 -16
- package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +5 -18
- package/src/storage/schema/entities/__tests/SyncStateTests.test.ts +5 -26
- package/src/storage/schema/entities/__tests/TransactionTests.test.ts +12 -48
- package/src/storage/schema/entities/__tests/TxLabelMapTests.test.ts +4 -22
- package/src/storage/schema/entities/__tests/TxLabelTests.test.ts +2 -10
- package/src/storage/schema/entities/__tests/stampLogTests.test.ts +3 -10
- package/src/storage/schema/entities/__tests/usersTests.test.ts +4 -7
- package/src/storage/schema/tables/TableSettings.ts +1 -3
- package/src/storage/sync/StorageMySQLDojoReader.ts +47 -148
- package/src/utility/ScriptTemplateBRC29.ts +2 -11
- package/src/utility/stampLog.ts +2 -6
- package/src/utility/tscProofToMerklePath.ts +1 -4
- package/src/utility/utilityHelpers.buffer.ts +3 -12
- package/src/utility/utilityHelpers.ts +14 -49
- package/test/Wallet/StorageClient/storageClient.man.test.ts +2 -8
- package/test/Wallet/action/internalizeAction.a.test.ts +8 -23
- package/test/Wallet/certificate/acquireCertificate.test.ts +10 -24
- package/test/Wallet/certificate/listCertificates.test.ts +8 -18
- package/test/Wallet/get/getHeaderForHeight.test.ts +4 -15
- package/test/Wallet/get/getHeight.test.ts +2 -6
- package/test/Wallet/get/getKnownTxids.test.ts +1 -5
- package/test/Wallet/get/getNetwork.test.ts +1 -2
- package/test/Wallet/get/getVersion.test.ts +1 -2
- package/test/Wallet/live/walletLive.man.test.ts +14 -41
- package/test/Wallet/local/localWallet.man.test.ts +26 -99
- package/test/Wallet/specOps/specOps.man.test.ts +4 -13
- package/test/Wallet/support/janitor.man.test.ts +2 -7
- package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +11 -34
- package/test/Wallet/sync/setActive.test.ts +75 -61
- package/test/checkDB.ts +2 -8
- package/test/examples/backup.man.test.ts +2 -9
- package/test/examples/pushdrop.test.ts +7 -20
- package/test/monitor/Monitor.test.ts +33 -87
- package/test/services/Services.test.ts +8 -19
- package/test/storage/KnexMigrations.test.ts +3 -18
- package/test/storage/StorageMySQLDojoReader.man.test.ts +4 -15
- package/test/storage/count.test.ts +7 -24
- package/test/storage/find.test.ts +7 -29
- package/test/storage/findLegacy.test.ts +2 -5
- package/test/storage/insert.test.ts +3 -19
- package/test/storage/update.test.ts +47 -179
- package/test/storage/update2.test.ts +54 -176
- package/test/utils/TestUtilsWalletStorage.ts +139 -372
- package/test/wallet/action/abortAction.test.ts +4 -12
- package/test/wallet/action/createAction.test.ts +4 -14
- package/test/wallet/action/createAction2.test.ts +74 -208
- package/test/wallet/action/createActionToGenerateBeefs.man.test.ts +8 -11
- package/test/wallet/action/internalizeAction.test.ts +20 -72
- package/test/wallet/action/relinquishOutput.test.ts +3 -9
- package/test/wallet/list/listActions.test.ts +2 -9
- package/test/wallet/list/listActions2.test.ts +8 -34
- package/test/wallet/list/listCertificates.test.ts +5 -16
- package/test/wallet/list/listOutputs.test.ts +15 -54
- package/test/wallet/sync/Wallet.sync.test.ts +18 -49
|
@@ -46,16 +46,12 @@ export interface StorageMySQLDojoReaderOptions extends StorageReaderOptions {
|
|
|
46
46
|
knex: Knex
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
export class StorageMySQLDojoReader
|
|
50
|
-
extends StorageReader
|
|
51
|
-
implements sdk.WalletStorageSyncReader
|
|
52
|
-
{
|
|
49
|
+
export class StorageMySQLDojoReader extends StorageReader implements sdk.WalletStorageSyncReader {
|
|
53
50
|
knex: Knex
|
|
54
51
|
|
|
55
52
|
constructor(options: StorageMySQLDojoReaderOptions) {
|
|
56
53
|
super(options)
|
|
57
|
-
if (!options.knex)
|
|
58
|
-
throw new sdk.WERR_INVALID_PARAMETER('options.knex', `valid`)
|
|
54
|
+
if (!options.knex) throw new sdk.WERR_INVALID_PARAMETER('options.knex', `valid`)
|
|
59
55
|
this.knex = options.knex
|
|
60
56
|
}
|
|
61
57
|
|
|
@@ -63,10 +59,7 @@ export class StorageMySQLDojoReader
|
|
|
63
59
|
await this.knex?.destroy()
|
|
64
60
|
}
|
|
65
61
|
|
|
66
|
-
override async transaction<T>(
|
|
67
|
-
scope: (trx: sdk.TrxToken) => Promise<T>,
|
|
68
|
-
trx?: sdk.TrxToken
|
|
69
|
-
): Promise<T> {
|
|
62
|
+
override async transaction<T>(scope: (trx: sdk.TrxToken) => Promise<T>, trx?: sdk.TrxToken): Promise<T> {
|
|
70
63
|
if (trx) return await scope(trx)
|
|
71
64
|
|
|
72
65
|
return await this.knex.transaction<T>(async knextrx => {
|
|
@@ -94,23 +87,15 @@ export class StorageMySQLDojoReader
|
|
|
94
87
|
maxOutputScript: 256
|
|
95
88
|
}
|
|
96
89
|
if (r.storageName.startsWith('staging') && this.chain !== 'test')
|
|
97
|
-
throw new sdk.WERR_INVALID_PARAMETER(
|
|
98
|
-
'chain',
|
|
99
|
-
`in aggreement with storage chain ${r.storageName}`
|
|
100
|
-
)
|
|
90
|
+
throw new sdk.WERR_INVALID_PARAMETER('chain', `in aggreement with storage chain ${r.storageName}`)
|
|
101
91
|
this._settings = r
|
|
102
92
|
return r
|
|
103
93
|
}
|
|
104
94
|
|
|
105
|
-
setupQuery<T extends object>(
|
|
106
|
-
table: string,
|
|
107
|
-
args: sdk.FindPartialSincePagedArgs<T>
|
|
108
|
-
): Knex.QueryBuilder {
|
|
95
|
+
setupQuery<T extends object>(table: string, args: sdk.FindPartialSincePagedArgs<T>): Knex.QueryBuilder {
|
|
109
96
|
let q = this.toDb(args.trx)<T>(table)
|
|
110
|
-
if (args.partial && Object.keys(args.partial).length > 0)
|
|
111
|
-
|
|
112
|
-
if (args.since)
|
|
113
|
-
q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
97
|
+
if (args.partial && Object.keys(args.partial).length > 0) q.where(args.partial)
|
|
98
|
+
if (args.since) q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
114
99
|
if (args.paged) {
|
|
115
100
|
q.limit(args.paged.limit)
|
|
116
101
|
q.offset(args.paged.offset || 0)
|
|
@@ -121,9 +106,7 @@ export class StorageMySQLDojoReader
|
|
|
121
106
|
findOutputBasketsQuery(args: sdk.FindOutputBasketsArgs): Knex.QueryBuilder {
|
|
122
107
|
return this.setupQuery('output_baskets', args)
|
|
123
108
|
}
|
|
124
|
-
async findOutputBaskets(
|
|
125
|
-
args: sdk.FindOutputBasketsArgs
|
|
126
|
-
): Promise<TableOutputBasket[]> {
|
|
109
|
+
async findOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<TableOutputBasket[]> {
|
|
127
110
|
const q = this.findOutputBasketsQuery(args)
|
|
128
111
|
const ds = await q
|
|
129
112
|
const rs: TableOutputBasket[] = []
|
|
@@ -165,9 +148,7 @@ export class StorageMySQLDojoReader
|
|
|
165
148
|
findOutputTagsQuery(args: sdk.FindOutputTagsArgs): Knex.QueryBuilder {
|
|
166
149
|
return this.setupQuery('output_tags', args)
|
|
167
150
|
}
|
|
168
|
-
async findOutputTags(
|
|
169
|
-
args: sdk.FindOutputTagsArgs
|
|
170
|
-
): Promise<TableOutputTag[]> {
|
|
151
|
+
async findOutputTags(args: sdk.FindOutputTagsArgs): Promise<TableOutputTag[]> {
|
|
171
152
|
const q = this.findOutputTagsQuery(args)
|
|
172
153
|
const ds = await q
|
|
173
154
|
const rs: TableOutputTag[] = []
|
|
@@ -184,10 +165,7 @@ export class StorageMySQLDojoReader
|
|
|
184
165
|
}
|
|
185
166
|
return this.validateEntities(rs, undefined, ['isDeleted'])
|
|
186
167
|
}
|
|
187
|
-
findTransactionsQuery(
|
|
188
|
-
args: sdk.FindTransactionsArgs,
|
|
189
|
-
count?: boolean
|
|
190
|
-
): Knex.QueryBuilder {
|
|
168
|
+
findTransactionsQuery(args: sdk.FindTransactionsArgs, count?: boolean): Knex.QueryBuilder {
|
|
191
169
|
if (args.partial.rawTx)
|
|
192
170
|
throw new sdk.WERR_INVALID_PARAMETER(
|
|
193
171
|
'args.partial.rawTx',
|
|
@@ -201,16 +179,12 @@ export class StorageMySQLDojoReader
|
|
|
201
179
|
const q = this.setupQuery('transactions', args)
|
|
202
180
|
if (args.status && args.status.length > 0) q.whereIn('status', args.status)
|
|
203
181
|
if (args.noRawTx && !count) {
|
|
204
|
-
const columns = transactionColumnsWithoutRawTx.map(
|
|
205
|
-
c => `transactions.${c}`
|
|
206
|
-
)
|
|
182
|
+
const columns = transactionColumnsWithoutRawTx.map(c => `transactions.${c}`)
|
|
207
183
|
q.select(columns)
|
|
208
184
|
}
|
|
209
185
|
return q
|
|
210
186
|
}
|
|
211
|
-
async findTransactions(
|
|
212
|
-
args: sdk.FindTransactionsArgs
|
|
213
|
-
): Promise<TableTransaction[]> {
|
|
187
|
+
async findTransactions(args: sdk.FindTransactionsArgs): Promise<TableTransaction[]> {
|
|
214
188
|
const q = this.findTransactionsQuery(args)
|
|
215
189
|
const ds = await q
|
|
216
190
|
const rs: TableTransaction[] = []
|
|
@@ -244,9 +218,7 @@ export class StorageMySQLDojoReader
|
|
|
244
218
|
)
|
|
245
219
|
return this.setupQuery('commissions', args)
|
|
246
220
|
}
|
|
247
|
-
async findCommissions(
|
|
248
|
-
args: sdk.FindCommissionsArgs
|
|
249
|
-
): Promise<TableCommission[]> {
|
|
221
|
+
async findCommissions(args: sdk.FindCommissionsArgs): Promise<TableCommission[]> {
|
|
250
222
|
const q = this.findCommissionsQuery(args)
|
|
251
223
|
const ds = await q
|
|
252
224
|
const rs: TableCommission[] = []
|
|
@@ -270,10 +242,7 @@ export class StorageMySQLDojoReader
|
|
|
270
242
|
if (s.length > maxLen) s = s.slice(0, maxLen)
|
|
271
243
|
return s
|
|
272
244
|
}
|
|
273
|
-
findOutputsQuery(
|
|
274
|
-
args: sdk.FindOutputsArgs,
|
|
275
|
-
count?: boolean
|
|
276
|
-
): Knex.QueryBuilder {
|
|
245
|
+
findOutputsQuery(args: sdk.FindOutputsArgs, count?: boolean): Knex.QueryBuilder {
|
|
277
246
|
if (args.partial.lockingScript)
|
|
278
247
|
throw new sdk.WERR_INVALID_PARAMETER(
|
|
279
248
|
'args.partial.lockingScript',
|
|
@@ -327,14 +296,11 @@ export class StorageMySQLDojoReader
|
|
|
327
296
|
}
|
|
328
297
|
findCertificatesQuery(args: sdk.FindCertificatesArgs): Knex.QueryBuilder {
|
|
329
298
|
const q = this.setupQuery('certificates', args)
|
|
330
|
-
if (args.certifiers && args.certifiers.length > 0)
|
|
331
|
-
q.whereIn('certifier', args.certifiers)
|
|
299
|
+
if (args.certifiers && args.certifiers.length > 0) q.whereIn('certifier', args.certifiers)
|
|
332
300
|
if (args.types && args.types.length > 0) q.whereIn('type', args.types)
|
|
333
301
|
return q
|
|
334
302
|
}
|
|
335
|
-
async findCertificates(
|
|
336
|
-
args: sdk.FindCertificatesArgs
|
|
337
|
-
): Promise<TableCertificateX[]> {
|
|
303
|
+
async findCertificates(args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]> {
|
|
338
304
|
const q = this.findCertificatesQuery(args)
|
|
339
305
|
const ds = await q
|
|
340
306
|
const rs: TableCertificate[] = []
|
|
@@ -348,9 +314,7 @@ export class StorageMySQLDojoReader
|
|
|
348
314
|
serialNumber: verifyTruthy(d.serialNumber).trim(), // base64
|
|
349
315
|
certifier: verifyHexString(d.certifier),
|
|
350
316
|
subject: verifyHexString(d.subject),
|
|
351
|
-
revocationOutpoint: verifyTruthy(d.revocationOutpoint)
|
|
352
|
-
.trim()
|
|
353
|
-
.toLowerCase(),
|
|
317
|
+
revocationOutpoint: verifyTruthy(d.revocationOutpoint).trim().toLowerCase(),
|
|
354
318
|
signature: verifyHexString(d.signature),
|
|
355
319
|
verifier: verifyOptionalHexString(d.validationKey),
|
|
356
320
|
isDeleted: !!d.isDeleted
|
|
@@ -359,14 +323,10 @@ export class StorageMySQLDojoReader
|
|
|
359
323
|
}
|
|
360
324
|
return this.validateEntities(rs, undefined, ['isDeleted'])
|
|
361
325
|
}
|
|
362
|
-
findCertificateFieldsQuery(
|
|
363
|
-
args: sdk.FindCertificateFieldsArgs
|
|
364
|
-
): Knex.QueryBuilder {
|
|
326
|
+
findCertificateFieldsQuery(args: sdk.FindCertificateFieldsArgs): Knex.QueryBuilder {
|
|
365
327
|
return this.setupQuery('certificate_fields', args)
|
|
366
328
|
}
|
|
367
|
-
async findCertificateFields(
|
|
368
|
-
args: sdk.FindCertificateFieldsArgs
|
|
369
|
-
): Promise<TableCertificateField[]> {
|
|
329
|
+
async findCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<TableCertificateField[]> {
|
|
370
330
|
const q = this.findCertificateFieldsQuery(args)
|
|
371
331
|
const ds = await q
|
|
372
332
|
const rs: TableCertificateField[] = []
|
|
@@ -384,9 +344,7 @@ export class StorageMySQLDojoReader
|
|
|
384
344
|
}
|
|
385
345
|
return this.validateEntities(rs)
|
|
386
346
|
}
|
|
387
|
-
override async findSyncStates(
|
|
388
|
-
args: sdk.FindSyncStatesArgs
|
|
389
|
-
): Promise<TableSyncState[]> {
|
|
347
|
+
override async findSyncStates(args: sdk.FindSyncStatesArgs): Promise<TableSyncState[]> {
|
|
390
348
|
const q = this.setupQuery('sync_state', args)
|
|
391
349
|
const ds = await q
|
|
392
350
|
const rs: TableSyncState[] = []
|
|
@@ -430,18 +388,14 @@ export class StorageMySQLDojoReader
|
|
|
430
388
|
return this.validateEntities(rs)
|
|
431
389
|
}
|
|
432
390
|
|
|
433
|
-
getProvenTxsForUserQuery(
|
|
434
|
-
args: sdk.FindForUserSincePagedArgs
|
|
435
|
-
): Knex.QueryBuilder {
|
|
391
|
+
getProvenTxsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
|
|
436
392
|
const k = this.toDb(args.trx)
|
|
437
393
|
let q = k('proven_txs').where(function () {
|
|
438
394
|
this.whereExists(
|
|
439
395
|
k
|
|
440
396
|
.select('*')
|
|
441
397
|
.from('transactions')
|
|
442
|
-
.whereRaw(
|
|
443
|
-
`proven_txs.provenTxId = transactions.provenTxId and transactions.userId = ${args.userId}`
|
|
444
|
-
)
|
|
398
|
+
.whereRaw(`proven_txs.provenTxId = transactions.provenTxId and transactions.userId = ${args.userId}`)
|
|
445
399
|
)
|
|
446
400
|
})
|
|
447
401
|
if (args.paged) {
|
|
@@ -451,9 +405,7 @@ export class StorageMySQLDojoReader
|
|
|
451
405
|
if (args.since) q = q.where('updated_at', '>=', args.since)
|
|
452
406
|
return q
|
|
453
407
|
}
|
|
454
|
-
async getProvenTxsForUser(
|
|
455
|
-
args: sdk.FindForUserSincePagedArgs
|
|
456
|
-
): Promise<TableProvenTx[]> {
|
|
408
|
+
async getProvenTxsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableProvenTx[]> {
|
|
457
409
|
const q = this.getProvenTxsForUserQuery(args)
|
|
458
410
|
const ds = await q
|
|
459
411
|
const rs: TableProvenTx[] = []
|
|
@@ -482,18 +434,14 @@ export class StorageMySQLDojoReader
|
|
|
482
434
|
return this.validateEntities(rs)
|
|
483
435
|
}
|
|
484
436
|
|
|
485
|
-
getProvenTxReqsForUserQuery(
|
|
486
|
-
args: sdk.FindForUserSincePagedArgs
|
|
487
|
-
): Knex.QueryBuilder {
|
|
437
|
+
getProvenTxReqsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
|
|
488
438
|
const k = this.toDb(args.trx)
|
|
489
439
|
let q = k('proven_tx_reqs').where(function () {
|
|
490
440
|
this.whereExists(
|
|
491
441
|
k
|
|
492
442
|
.select('*')
|
|
493
443
|
.from('transactions')
|
|
494
|
-
.whereRaw(
|
|
495
|
-
`proven_tx_reqs.txid = transactions.txid and transactions.userId = ${args.userId}`
|
|
496
|
-
)
|
|
444
|
+
.whereRaw(`proven_tx_reqs.txid = transactions.txid and transactions.userId = ${args.userId}`)
|
|
497
445
|
)
|
|
498
446
|
})
|
|
499
447
|
if (args.paged) {
|
|
@@ -504,9 +452,7 @@ export class StorageMySQLDojoReader
|
|
|
504
452
|
return q
|
|
505
453
|
}
|
|
506
454
|
|
|
507
|
-
async getProvenTxReqsForUser(
|
|
508
|
-
args: sdk.FindForUserSincePagedArgs
|
|
509
|
-
): Promise<TableProvenTxReq[]> {
|
|
455
|
+
async getProvenTxReqsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableProvenTxReq[]> {
|
|
510
456
|
const q = this.getProvenTxReqsForUserQuery(args)
|
|
511
457
|
const ds = await q
|
|
512
458
|
const rs: TableProvenTxReq[] = []
|
|
@@ -531,20 +477,15 @@ export class StorageMySQLDojoReader
|
|
|
531
477
|
return this.validateEntities(rs, undefined, ['notified'])
|
|
532
478
|
}
|
|
533
479
|
|
|
534
|
-
getTxLabelMapsForUserQuery(
|
|
535
|
-
args: sdk.FindForUserSincePagedArgs
|
|
536
|
-
): Knex.QueryBuilder {
|
|
480
|
+
getTxLabelMapsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
|
|
537
481
|
const k = this.toDb(args.trx)
|
|
538
482
|
let q = k('tx_labels_map').whereExists(
|
|
539
483
|
k
|
|
540
484
|
.select('*')
|
|
541
485
|
.from('tx_labels')
|
|
542
|
-
.whereRaw(
|
|
543
|
-
`tx_labels.txLabelId = tx_labels_map.txLabelId and tx_labels.userId = ${args.userId}`
|
|
544
|
-
)
|
|
486
|
+
.whereRaw(`tx_labels.txLabelId = tx_labels_map.txLabelId and tx_labels.userId = ${args.userId}`)
|
|
545
487
|
)
|
|
546
|
-
if (args.since)
|
|
547
|
-
q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
488
|
+
if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
548
489
|
if (args.paged) {
|
|
549
490
|
q = q.limit(args.paged.limit)
|
|
550
491
|
q = q.offset(args.paged.offset || 0)
|
|
@@ -552,9 +493,7 @@ export class StorageMySQLDojoReader
|
|
|
552
493
|
return q
|
|
553
494
|
}
|
|
554
495
|
|
|
555
|
-
async getTxLabelMapsForUser(
|
|
556
|
-
args: sdk.FindForUserSincePagedArgs
|
|
557
|
-
): Promise<TableTxLabelMap[]> {
|
|
496
|
+
async getTxLabelMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableTxLabelMap[]> {
|
|
558
497
|
const q = this.getTxLabelMapsForUserQuery(args)
|
|
559
498
|
const ds = await q
|
|
560
499
|
const rs: TableTxLabelMap[] = []
|
|
@@ -571,20 +510,15 @@ export class StorageMySQLDojoReader
|
|
|
571
510
|
return this.validateEntities(rs, undefined, ['isDeleted'])
|
|
572
511
|
}
|
|
573
512
|
|
|
574
|
-
getOutputTagMapsForUserQuery(
|
|
575
|
-
args: sdk.FindForUserSincePagedArgs
|
|
576
|
-
): Knex.QueryBuilder {
|
|
513
|
+
getOutputTagMapsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
|
|
577
514
|
const k = this.toDb(args.trx)
|
|
578
515
|
let q = k('output_tags_map').whereExists(
|
|
579
516
|
k
|
|
580
517
|
.select('*')
|
|
581
518
|
.from('output_tags')
|
|
582
|
-
.whereRaw(
|
|
583
|
-
`output_tags.outputTagId = output_tags_map.outputTagId and output_tags.userId = ${args.userId}`
|
|
584
|
-
)
|
|
519
|
+
.whereRaw(`output_tags.outputTagId = output_tags_map.outputTagId and output_tags.userId = ${args.userId}`)
|
|
585
520
|
)
|
|
586
|
-
if (args.since)
|
|
587
|
-
q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
521
|
+
if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
588
522
|
if (args.paged) {
|
|
589
523
|
q = q.limit(args.paged.limit)
|
|
590
524
|
q = q.offset(args.paged.offset || 0)
|
|
@@ -592,9 +526,7 @@ export class StorageMySQLDojoReader
|
|
|
592
526
|
return q
|
|
593
527
|
}
|
|
594
528
|
|
|
595
|
-
async getOutputTagMapsForUser(
|
|
596
|
-
args: sdk.FindForUserSincePagedArgs
|
|
597
|
-
): Promise<TableOutputTagMap[]> {
|
|
529
|
+
async getOutputTagMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableOutputTagMap[]> {
|
|
598
530
|
const q = this.getOutputTagMapsForUserQuery(args)
|
|
599
531
|
const ds = await q
|
|
600
532
|
const rs: TableOutputTagMap[] = []
|
|
@@ -611,9 +543,7 @@ export class StorageMySQLDojoReader
|
|
|
611
543
|
return this.validateEntities(rs, undefined, ['isDeleted'])
|
|
612
544
|
}
|
|
613
545
|
|
|
614
|
-
override countCertificateFields(
|
|
615
|
-
args: sdk.FindCertificateFieldsArgs
|
|
616
|
-
): Promise<number> {
|
|
546
|
+
override countCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<number> {
|
|
617
547
|
throw new Error('Method not implemented.')
|
|
618
548
|
}
|
|
619
549
|
override countCertificates(args: sdk.FindCertificatesArgs): Promise<number> {
|
|
@@ -622,9 +552,7 @@ export class StorageMySQLDojoReader
|
|
|
622
552
|
override countCommissions(args: sdk.FindCommissionsArgs): Promise<number> {
|
|
623
553
|
throw new Error('Method not implemented.')
|
|
624
554
|
}
|
|
625
|
-
override countOutputBaskets(
|
|
626
|
-
args: sdk.FindOutputBasketsArgs
|
|
627
|
-
): Promise<number> {
|
|
555
|
+
override countOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<number> {
|
|
628
556
|
throw new Error('Method not implemented.')
|
|
629
557
|
}
|
|
630
558
|
override countOutputs(args: sdk.FindOutputsArgs): Promise<number> {
|
|
@@ -645,14 +573,10 @@ export class StorageMySQLDojoReader
|
|
|
645
573
|
override countUsers(args: sdk.FindUsersArgs): Promise<number> {
|
|
646
574
|
throw new Error('Method not implemented.')
|
|
647
575
|
}
|
|
648
|
-
override findMonitorEvents(
|
|
649
|
-
args: sdk.FindMonitorEventsArgs
|
|
650
|
-
): Promise<TableMonitorEvent[]> {
|
|
576
|
+
override findMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<TableMonitorEvent[]> {
|
|
651
577
|
throw new Error('Method not implemented.')
|
|
652
578
|
}
|
|
653
|
-
override countMonitorEvents(
|
|
654
|
-
args: sdk.FindMonitorEventsArgs
|
|
655
|
-
): Promise<number> {
|
|
579
|
+
override countMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<number> {
|
|
656
580
|
throw new Error('Method not implemented.')
|
|
657
581
|
}
|
|
658
582
|
|
|
@@ -660,11 +584,7 @@ export class StorageMySQLDojoReader
|
|
|
660
584
|
* Helper to force uniform behavior across database engines.
|
|
661
585
|
* Use to process all individual records with time stamps retreived from database.
|
|
662
586
|
*/
|
|
663
|
-
validateEntity<T extends sdk.EntityTimeStamp>(
|
|
664
|
-
entity: T,
|
|
665
|
-
dateFields?: string[],
|
|
666
|
-
booleanFields?: string[]
|
|
667
|
-
): T {
|
|
587
|
+
validateEntity<T extends sdk.EntityTimeStamp>(entity: T, dateFields?: string[], booleanFields?: string[]): T {
|
|
668
588
|
entity.created_at = this.validateDate(entity.created_at)
|
|
669
589
|
entity.updated_at = this.validateDate(entity.updated_at)
|
|
670
590
|
if (dateFields) {
|
|
@@ -693,11 +613,7 @@ export class StorageMySQLDojoReader
|
|
|
693
613
|
* Use to process all arrays of records with time stamps retreived from database.
|
|
694
614
|
* @returns input `entities` array with contained values validated.
|
|
695
615
|
*/
|
|
696
|
-
validateEntities<T extends sdk.EntityTimeStamp>(
|
|
697
|
-
entities: T[],
|
|
698
|
-
dateFields?: string[],
|
|
699
|
-
booleanFields?: string[]
|
|
700
|
-
): T[] {
|
|
616
|
+
validateEntities<T extends sdk.EntityTimeStamp>(entities: T[], dateFields?: string[], booleanFields?: string[]): T[] {
|
|
701
617
|
for (let i = 0; i < entities.length; i++) {
|
|
702
618
|
entities[i] = this.validateEntity(entities[i], dateFields, booleanFields)
|
|
703
619
|
}
|
|
@@ -706,8 +622,7 @@ export class StorageMySQLDojoReader
|
|
|
706
622
|
}
|
|
707
623
|
|
|
708
624
|
function deserializeTscMerkleProofNodes(nodes: Buffer): string[] {
|
|
709
|
-
if (!Buffer.isBuffer(nodes))
|
|
710
|
-
throw new sdk.WERR_INTERNAL('Buffer or string expected.')
|
|
625
|
+
if (!Buffer.isBuffer(nodes)) throw new sdk.WERR_INTERNAL('Buffer or string expected.')
|
|
711
626
|
const buffer = nodes
|
|
712
627
|
const ns: string[] = []
|
|
713
628
|
for (let offset = 0; offset < buffer.length; ) {
|
|
@@ -717,9 +632,7 @@ function deserializeTscMerkleProofNodes(nodes: Buffer): string[] {
|
|
|
717
632
|
ns.push(asString(buffer.subarray(offset, offset + 32)))
|
|
718
633
|
offset += 32
|
|
719
634
|
} else {
|
|
720
|
-
throw new sdk.WERR_BAD_REQUEST(
|
|
721
|
-
`node type byte ${flag} is not supported here.`
|
|
722
|
-
)
|
|
635
|
+
throw new sdk.WERR_BAD_REQUEST(`node type byte ${flag} is not supported here.`)
|
|
723
636
|
}
|
|
724
637
|
}
|
|
725
638
|
return ns
|
|
@@ -739,27 +652,16 @@ type DojoProvenTxReqStatusApi =
|
|
|
739
652
|
| 'invalid'
|
|
740
653
|
| 'doubleSpend'
|
|
741
654
|
|
|
742
|
-
function convertReqStatus(
|
|
743
|
-
status: DojoProvenTxReqStatusApi
|
|
744
|
-
): sdk.ProvenTxReqStatus {
|
|
655
|
+
function convertReqStatus(status: DojoProvenTxReqStatusApi): sdk.ProvenTxReqStatus {
|
|
745
656
|
return status
|
|
746
657
|
}
|
|
747
658
|
|
|
748
|
-
type DojoTransactionStatusApi =
|
|
749
|
-
| 'completed'
|
|
750
|
-
| 'failed'
|
|
751
|
-
| 'unprocessed'
|
|
752
|
-
| 'sending'
|
|
753
|
-
| 'unproven'
|
|
754
|
-
| 'unsigned'
|
|
755
|
-
| 'nosend'
|
|
659
|
+
type DojoTransactionStatusApi = 'completed' | 'failed' | 'unprocessed' | 'sending' | 'unproven' | 'unsigned' | 'nosend'
|
|
756
660
|
|
|
757
661
|
//type TransactionStatus =
|
|
758
662
|
// 'completed' | 'failed' | 'unprocessed' | 'sending' | 'unproven' | 'unsigned' | 'nosend'
|
|
759
663
|
|
|
760
|
-
function convertTxStatus(
|
|
761
|
-
status: DojoTransactionStatusApi
|
|
762
|
-
): sdk.TransactionStatus {
|
|
664
|
+
function convertTxStatus(status: DojoTransactionStatusApi): sdk.TransactionStatus {
|
|
763
665
|
return status
|
|
764
666
|
}
|
|
765
667
|
|
|
@@ -769,12 +671,9 @@ function nullToUndefined<T>(v: T): T | undefined {
|
|
|
769
671
|
return v
|
|
770
672
|
}
|
|
771
673
|
|
|
772
|
-
function verifyOptionalInteger(
|
|
773
|
-
v: number | null | undefined
|
|
774
|
-
): number | undefined {
|
|
674
|
+
function verifyOptionalInteger(v: number | null | undefined): number | undefined {
|
|
775
675
|
if (v === undefined || v === null) return undefined
|
|
776
|
-
if (typeof v !== 'number' || !Number.isInteger(v))
|
|
777
|
-
throw new sdk.WERR_INTERNAL('An integer is required.')
|
|
676
|
+
if (typeof v !== 'number' || !Number.isInteger(v)) throw new sdk.WERR_INTERNAL('An integer is required.')
|
|
778
677
|
return v
|
|
779
678
|
}
|
|
780
679
|
|
|
@@ -40,10 +40,7 @@ export class ScriptTemplateBRC29 implements ScriptTemplate {
|
|
|
40
40
|
|
|
41
41
|
getKeyDeriver(privKey: PrivateKey | HexString): KeyDeriverApi {
|
|
42
42
|
if (typeof privKey === 'string') privKey = PrivateKey.fromHex(privKey)
|
|
43
|
-
if (
|
|
44
|
-
!this.params.keyDeriver ||
|
|
45
|
-
this.params.keyDeriver.rootKey.toHex() !== privKey.toHex()
|
|
46
|
-
)
|
|
43
|
+
if (!this.params.keyDeriver || this.params.keyDeriver.rootKey.toHex() !== privKey.toHex())
|
|
47
44
|
return new KeyDeriver(privKey)
|
|
48
45
|
return this.params.keyDeriver
|
|
49
46
|
}
|
|
@@ -65,13 +62,7 @@ export class ScriptTemplateBRC29 implements ScriptTemplate {
|
|
|
65
62
|
const derivedPrivateKey = this.getKeyDeriver(unlockerPrivKey)
|
|
66
63
|
.derivePrivateKey(brc29ProtocolID, this.getKeyID(), lockerPubKey)
|
|
67
64
|
.toHex()
|
|
68
|
-
const r = this.p2pkh.unlock(
|
|
69
|
-
asBsvSdkPrivateKey(derivedPrivateKey),
|
|
70
|
-
'all',
|
|
71
|
-
false,
|
|
72
|
-
sourceSatoshis,
|
|
73
|
-
lockingScript
|
|
74
|
-
)
|
|
65
|
+
const r = this.p2pkh.unlock(asBsvSdkPrivateKey(derivedPrivateKey), 'all', false, sourceSatoshis, lockingScript)
|
|
75
66
|
return r
|
|
76
67
|
}
|
|
77
68
|
|
package/src/utility/stampLog.ts
CHANGED
|
@@ -4,13 +4,9 @@
|
|
|
4
4
|
* @param lineToAdd Content to add to line.
|
|
5
5
|
* @returns undefined or log extended by time stamped `lineToAdd` and new line.
|
|
6
6
|
*/
|
|
7
|
-
export function stampLog(
|
|
8
|
-
log: string | undefined | { log?: string },
|
|
9
|
-
lineToAdd: string
|
|
10
|
-
): string | undefined {
|
|
7
|
+
export function stampLog(log: string | undefined | { log?: string }, lineToAdd: string): string | undefined {
|
|
11
8
|
const add = `${new Date().toISOString()} ${lineToAdd}\n`
|
|
12
|
-
if (typeof log === 'object' && typeof log.log === 'string')
|
|
13
|
-
return (log.log = log.log + add)
|
|
9
|
+
if (typeof log === 'object' && typeof log.log === 'string') return (log.log = log.log + add)
|
|
14
10
|
if (typeof log === 'string') return log + add
|
|
15
11
|
return undefined
|
|
16
12
|
}
|
|
@@ -6,10 +6,7 @@ export interface TscMerkleProofApi {
|
|
|
6
6
|
nodes: string[]
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export function convertProofToMerklePath(
|
|
10
|
-
txid: string,
|
|
11
|
-
proof: TscMerkleProofApi
|
|
12
|
-
): MerklePath {
|
|
9
|
+
export function convertProofToMerklePath(txid: string, proof: TscMerkleProofApi): MerklePath {
|
|
13
10
|
const blockHeight = proof.height
|
|
14
11
|
const treeHeight = proof.nodes.length
|
|
15
12
|
type Leaf = {
|
|
@@ -5,10 +5,7 @@
|
|
|
5
5
|
* @returns input val if it is a Buffer or new Buffer from string val
|
|
6
6
|
* @publicbody
|
|
7
7
|
*/
|
|
8
|
-
export function asBuffer(
|
|
9
|
-
val: Buffer | string | number[],
|
|
10
|
-
encoding?: BufferEncoding
|
|
11
|
-
): Buffer {
|
|
8
|
+
export function asBuffer(val: Buffer | string | number[], encoding?: BufferEncoding): Buffer {
|
|
12
9
|
let b: Buffer
|
|
13
10
|
if (Buffer.isBuffer(val)) b = val
|
|
14
11
|
else if (typeof val === 'string') b = Buffer.from(val, encoding ?? 'hex')
|
|
@@ -23,18 +20,12 @@ export function asBuffer(
|
|
|
23
20
|
* @returns input val if it is a string; or if number[], first converted to Buffer then as Buffer; if Buffer encoded using `encoding`
|
|
24
21
|
* @publicbody
|
|
25
22
|
*/
|
|
26
|
-
export function asString(
|
|
27
|
-
val: Buffer | string | number[],
|
|
28
|
-
encoding?: BufferEncoding
|
|
29
|
-
): string {
|
|
23
|
+
export function asString(val: Buffer | string | number[], encoding?: BufferEncoding): string {
|
|
30
24
|
if (Array.isArray(val)) val = Buffer.from(val)
|
|
31
25
|
return Buffer.isBuffer(val) ? val.toString(encoding ?? 'hex') : val
|
|
32
26
|
}
|
|
33
27
|
|
|
34
|
-
export function asArray(
|
|
35
|
-
val: Buffer | string | number[],
|
|
36
|
-
encoding?: BufferEncoding
|
|
37
|
-
): number[] {
|
|
28
|
+
export function asArray(val: Buffer | string | number[], encoding?: BufferEncoding): number[] {
|
|
38
29
|
let a: number[]
|
|
39
30
|
if (Array.isArray(val)) a = val
|
|
40
31
|
else if (Buffer.isBuffer(val)) a = Array.from(val)
|
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
import { HexString, PubKeyHex, WalletInterface, WalletNetwork } from '@bsv/sdk'
|
|
2
|
-
import {
|
|
3
|
-
Beef,
|
|
4
|
-
Hash,
|
|
5
|
-
PrivateKey,
|
|
6
|
-
PublicKey,
|
|
7
|
-
Random,
|
|
8
|
-
Script,
|
|
9
|
-
Transaction,
|
|
10
|
-
Utils
|
|
11
|
-
} from '@bsv/sdk'
|
|
2
|
+
import { Beef, Hash, PrivateKey, PublicKey, Random, Script, Transaction, Utils } from '@bsv/sdk'
|
|
12
3
|
import { sdk } from '../index.client'
|
|
13
4
|
import { Chain } from '../sdk/types'
|
|
14
5
|
import { CertOpsWallet } from '../sdk'
|
|
15
6
|
|
|
16
|
-
export async function getIdentityKey(
|
|
17
|
-
wallet: CertOpsWallet
|
|
18
|
-
): Promise<PubKeyHex> {
|
|
7
|
+
export async function getIdentityKey(wallet: CertOpsWallet): Promise<PubKeyHex> {
|
|
19
8
|
return (await wallet.getPublicKey({ identityKey: true })).publicKey
|
|
20
9
|
}
|
|
21
10
|
|
|
@@ -23,10 +12,7 @@ export function toWalletNetwork(chain: Chain): WalletNetwork {
|
|
|
23
12
|
return chain === 'main' ? 'mainnet' : 'testnet'
|
|
24
13
|
}
|
|
25
14
|
|
|
26
|
-
export function makeAtomicBeef(
|
|
27
|
-
tx: Transaction,
|
|
28
|
-
beef: number[] | Beef
|
|
29
|
-
): number[] {
|
|
15
|
+
export function makeAtomicBeef(tx: Transaction, beef: number[] | Beef): number[] {
|
|
30
16
|
if (Array.isArray(beef)) beef = Beef.fromBinary(beef)
|
|
31
17
|
beef.mergeTransaction(tx)
|
|
32
18
|
return beef.toBinaryAtomic(tx.id('hex'))
|
|
@@ -37,9 +23,7 @@ export function makeAtomicBeef(
|
|
|
37
23
|
* If tx is already a Transaction, just return it.
|
|
38
24
|
* @publicbody
|
|
39
25
|
*/
|
|
40
|
-
export function asBsvSdkTx(
|
|
41
|
-
tx: HexString | number[] | Transaction
|
|
42
|
-
): Transaction {
|
|
26
|
+
export function asBsvSdkTx(tx: HexString | number[] | Transaction): Transaction {
|
|
43
27
|
if (Array.isArray(tx)) {
|
|
44
28
|
tx = Transaction.fromBinary(tx)
|
|
45
29
|
} else if (typeof tx === 'string') {
|
|
@@ -83,12 +67,8 @@ export function asBsvSdkPublickKey(pubKey: string): PublicKey {
|
|
|
83
67
|
*
|
|
84
68
|
* Verifies that a possibly optional value has a value.
|
|
85
69
|
*/
|
|
86
|
-
export function verifyTruthy<T>(
|
|
87
|
-
v
|
|
88
|
-
description?: string
|
|
89
|
-
): T {
|
|
90
|
-
if (!v)
|
|
91
|
-
throw new sdk.WERR_INTERNAL(description ?? 'A truthy value is required.')
|
|
70
|
+
export function verifyTruthy<T>(v: T | null | undefined, description?: string): T {
|
|
71
|
+
if (!v) throw new sdk.WERR_INTERNAL(description ?? 'A truthy value is required.')
|
|
92
72
|
return v
|
|
93
73
|
}
|
|
94
74
|
|
|
@@ -98,8 +78,7 @@ export function verifyTruthy<T>(
|
|
|
98
78
|
* Verifies that a hex string is trimmed and lower case.
|
|
99
79
|
*/
|
|
100
80
|
export function verifyHexString(v: string): string {
|
|
101
|
-
if (typeof v !== 'string')
|
|
102
|
-
throw new sdk.WERR_INTERNAL('A string is required.')
|
|
81
|
+
if (typeof v !== 'string') throw new sdk.WERR_INTERNAL('A string is required.')
|
|
103
82
|
v = v.trim().toLowerCase()
|
|
104
83
|
return v
|
|
105
84
|
}
|
|
@@ -120,8 +99,7 @@ export function verifyOptionalHexString(v?: string | null): string | undefined {
|
|
|
120
99
|
* Verifies that an optional or null number has a numeric value.
|
|
121
100
|
*/
|
|
122
101
|
export function verifyNumber(v: number | null | undefined): number {
|
|
123
|
-
if (typeof v !== 'number')
|
|
124
|
-
throw new sdk.WERR_INTERNAL('A number is required.')
|
|
102
|
+
if (typeof v !== 'number') throw new sdk.WERR_INTERNAL('A number is required.')
|
|
125
103
|
return v
|
|
126
104
|
}
|
|
127
105
|
|
|
@@ -131,8 +109,7 @@ export function verifyNumber(v: number | null | undefined): number {
|
|
|
131
109
|
* Verifies that an optional or null number has a numeric value.
|
|
132
110
|
*/
|
|
133
111
|
export function verifyInteger(v: number | null | undefined): number {
|
|
134
|
-
if (typeof v !== 'number' || !Number.isInteger(v))
|
|
135
|
-
throw new sdk.WERR_INTERNAL('An integer is required.')
|
|
112
|
+
if (typeof v !== 'number' || !Number.isInteger(v)) throw new sdk.WERR_INTERNAL('An integer is required.')
|
|
136
113
|
return v
|
|
137
114
|
}
|
|
138
115
|
|
|
@@ -143,8 +120,7 @@ export function verifyInteger(v: number | null | undefined): number {
|
|
|
143
120
|
*/
|
|
144
121
|
export function verifyId(id: number | undefined | null): number {
|
|
145
122
|
id = verifyInteger(id)
|
|
146
|
-
if (id < 1)
|
|
147
|
-
throw new sdk.WERR_INTERNAL(`id must be valid integer greater than zero.`)
|
|
123
|
+
if (id < 1) throw new sdk.WERR_INTERNAL(`id must be valid integer greater than zero.`)
|
|
148
124
|
return id
|
|
149
125
|
}
|
|
150
126
|
|
|
@@ -156,8 +132,7 @@ export function verifyId(id: number | undefined | null): number {
|
|
|
156
132
|
* @returns results[0] or undefined if length is zero.
|
|
157
133
|
*/
|
|
158
134
|
export function verifyOneOrNone<T>(results: T[]): T | undefined {
|
|
159
|
-
if (results.length > 1)
|
|
160
|
-
throw new sdk.WERR_BAD_REQUEST('Result must be unique.')
|
|
135
|
+
if (results.length > 1) throw new sdk.WERR_BAD_REQUEST('Result must be unique.')
|
|
161
136
|
return results[0]
|
|
162
137
|
}
|
|
163
138
|
|
|
@@ -169,10 +144,7 @@ export function verifyOneOrNone<T>(results: T[]): T | undefined {
|
|
|
169
144
|
* @returns results[0].
|
|
170
145
|
*/
|
|
171
146
|
export function verifyOne<T>(results: T[], errorDescrition?: string): T {
|
|
172
|
-
if (results.length !== 1)
|
|
173
|
-
throw new sdk.WERR_BAD_REQUEST(
|
|
174
|
-
errorDescrition ?? 'Result must exist and be unique.'
|
|
175
|
-
)
|
|
147
|
+
if (results.length !== 1) throw new sdk.WERR_BAD_REQUEST(errorDescrition ?? 'Result must exist and be unique.')
|
|
176
148
|
return results[0]
|
|
177
149
|
}
|
|
178
150
|
|
|
@@ -207,15 +179,8 @@ export function randomBytesBase64(count: number): string {
|
|
|
207
179
|
|
|
208
180
|
export function validateSecondsSinceEpoch(time: number): Date {
|
|
209
181
|
const date = new Date(time * 1000)
|
|
210
|
-
if (
|
|
211
|
-
|
|
212
|
-
time < 1600000000 ||
|
|
213
|
-
time > 100000000000
|
|
214
|
-
) {
|
|
215
|
-
throw new sdk.WERR_INVALID_PARAMETER(
|
|
216
|
-
'time',
|
|
217
|
-
`valid "since epoch" unix time`
|
|
218
|
-
)
|
|
182
|
+
if (date.getTime() / 1000 !== time || time < 1600000000 || time > 100000000000) {
|
|
183
|
+
throw new sdk.WERR_INVALID_PARAMETER('time', `valid "since epoch" unix time`)
|
|
219
184
|
}
|
|
220
185
|
return date
|
|
221
186
|
}
|