@bsv/wallet-toolbox 1.1.59 → 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.d.ts.map +1 -0
- package/out/test/wallet/action/abortAction.test.js.map +1 -0
- package/out/test/wallet/action/createAction.test.d.ts.map +1 -0
- package/out/test/{Wallet → wallet}/action/createAction.test.js +1 -2
- package/out/test/wallet/action/createAction.test.js.map +1 -0
- package/out/test/{Wallet → wallet}/action/createAction2.test.d.ts.map +1 -1
- package/out/test/{Wallet → wallet}/action/createAction2.test.js +6 -16
- package/out/test/wallet/action/createAction2.test.js.map +1 -0
- package/out/test/wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +1 -0
- package/out/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.js.map +1 -1
- package/out/test/wallet/action/internalizeAction.test.d.ts.map +1 -0
- package/out/test/wallet/action/internalizeAction.test.js.map +1 -0
- package/out/test/wallet/action/relinquishOutput.test.d.ts.map +1 -0
- package/out/test/{Wallet → wallet}/action/relinquishOutput.test.js.map +1 -1
- package/out/test/wallet/construct/Wallet.constructor.test.d.ts.map +1 -0
- package/out/test/{Wallet → wallet}/construct/Wallet.constructor.test.js.map +1 -1
- package/out/test/wallet/list/listActions.test.d.ts.map +1 -0
- package/out/test/wallet/list/listActions.test.js.map +1 -0
- package/out/test/wallet/list/listActions2.test.d.ts.map +1 -0
- package/out/test/wallet/list/listActions2.test.js.map +1 -0
- package/out/test/wallet/list/listCertificates.test.d.ts.map +1 -0
- package/out/test/{Wallet → wallet}/list/listCertificates.test.js +2 -6
- package/out/test/wallet/list/listCertificates.test.js.map +1 -0
- package/out/test/wallet/list/listOutputs.test.d.ts.map +1 -0
- package/out/test/{Wallet → wallet}/list/listOutputs.test.js +2 -10
- package/out/test/wallet/list/listOutputs.test.js.map +1 -0
- package/out/test/wallet/sync/Wallet.sync.test.d.ts.map +1 -0
- package/out/test/{Wallet → wallet}/sync/Wallet.sync.test.js +4 -6
- package/out/test/wallet/sync/Wallet.sync.test.js.map +1 -0
- 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 → wallet}/action/abortAction.test.ts +4 -12
- package/test/{Wallet → wallet}/action/createAction.test.ts +4 -14
- package/test/{Wallet → wallet}/action/createAction2.test.ts +74 -208
- package/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.ts +8 -11
- package/test/{Wallet → wallet}/action/internalizeAction.test.ts +20 -72
- package/test/{Wallet → wallet}/action/relinquishOutput.test.ts +3 -9
- package/test/{Wallet → wallet}/list/listActions.test.ts +2 -9
- package/test/{Wallet → wallet}/list/listActions2.test.ts +8 -34
- package/test/{Wallet → wallet}/list/listCertificates.test.ts +5 -16
- package/test/{Wallet → wallet}/list/listOutputs.test.ts +15 -54
- package/test/{Wallet → wallet}/sync/Wallet.sync.test.ts +18 -49
- package/out/src/sdk/StorageSyncReader.d.ts +0 -121
- package/out/src/sdk/StorageSyncReader.d.ts.map +0 -1
- package/out/src/sdk/StorageSyncReader.js +0 -3
- package/out/src/sdk/StorageSyncReader.js.map +0 -1
- package/out/src/sdk/StorageSyncReaderWriter.d.ts +0 -89
- package/out/src/sdk/StorageSyncReaderWriter.d.ts.map +0 -1
- package/out/src/sdk/StorageSyncReaderWriter.js +0 -3
- package/out/src/sdk/StorageSyncReaderWriter.js.map +0 -1
- package/out/test/Wallet/action/abortAction.test.d.ts.map +0 -1
- package/out/test/Wallet/action/abortAction.test.js.map +0 -1
- package/out/test/Wallet/action/createAction.test.d.ts.map +0 -1
- package/out/test/Wallet/action/createAction.test.js.map +0 -1
- package/out/test/Wallet/action/createAction2.test.js.map +0 -1
- package/out/test/Wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +0 -1
- package/out/test/Wallet/action/internalizeAction.test.d.ts.map +0 -1
- package/out/test/Wallet/action/internalizeAction.test.js.map +0 -1
- package/out/test/Wallet/action/relinquishOutput.test.d.ts.map +0 -1
- package/out/test/Wallet/construct/Wallet.constructor.test.d.ts.map +0 -1
- package/out/test/Wallet/list/listActions.test.d.ts.map +0 -1
- package/out/test/Wallet/list/listActions.test.js.map +0 -1
- package/out/test/Wallet/list/listActions2.test.d.ts.map +0 -1
- package/out/test/Wallet/list/listActions2.test.js.map +0 -1
- package/out/test/Wallet/list/listCertificates.test.d.ts.map +0 -1
- package/out/test/Wallet/list/listCertificates.test.js.map +0 -1
- package/out/test/Wallet/list/listOutputs.test.d.ts.map +0 -1
- package/out/test/Wallet/list/listOutputs.test.js.map +0 -1
- package/out/test/Wallet/sync/Wallet.sync.test.d.ts.map +0 -1
- package/out/test/Wallet/sync/Wallet.sync.test.js.map +0 -1
- /package/out/test/{Wallet → wallet}/action/abortAction.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/action/abortAction.test.js +0 -0
- /package/out/test/{Wallet → wallet}/action/createAction.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/action/createAction2.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.js +0 -0
- /package/out/test/{Wallet → wallet}/action/internalizeAction.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/action/internalizeAction.test.js +0 -0
- /package/out/test/{Wallet → wallet}/action/relinquishOutput.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/action/relinquishOutput.test.js +0 -0
- /package/out/test/{Wallet → wallet}/construct/Wallet.constructor.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/construct/Wallet.constructor.test.js +0 -0
- /package/out/test/{Wallet → wallet}/list/listActions.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/list/listActions.test.js +0 -0
- /package/out/test/{Wallet → wallet}/list/listActions2.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/list/listActions2.test.js +0 -0
- /package/out/test/{Wallet → wallet}/list/listCertificates.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/list/listOutputs.test.d.ts +0 -0
- /package/out/test/{Wallet → wallet}/sync/Wallet.sync.test.d.ts +0 -0
- /package/test/{Wallet → wallet}/construct/Wallet.constructor.test.ts +0 -0
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ListActionsArgs,
|
|
3
|
-
ListActionsResult,
|
|
4
|
-
ListOutputsArgs,
|
|
5
|
-
ListOutputsResult
|
|
6
|
-
} from '@bsv/sdk'
|
|
1
|
+
import { ListActionsArgs, ListActionsResult, ListOutputsArgs, ListOutputsResult } from '@bsv/sdk'
|
|
7
2
|
import { sdk, verifyOne, verifyOneOrNone, verifyTruthy } from '../index.all'
|
|
8
3
|
import {
|
|
9
4
|
KnexMigrations,
|
|
@@ -44,29 +39,20 @@ export interface StorageKnexOptions extends StorageProviderOptions {
|
|
|
44
39
|
knex: Knex
|
|
45
40
|
}
|
|
46
41
|
|
|
47
|
-
export class StorageKnex
|
|
48
|
-
extends StorageProvider
|
|
49
|
-
implements sdk.WalletStorageProvider
|
|
50
|
-
{
|
|
42
|
+
export class StorageKnex extends StorageProvider implements sdk.WalletStorageProvider {
|
|
51
43
|
knex: Knex
|
|
52
44
|
|
|
53
45
|
constructor(options: StorageKnexOptions) {
|
|
54
46
|
super(options)
|
|
55
|
-
if (!options.knex)
|
|
56
|
-
throw new sdk.WERR_INVALID_PARAMETER('options.knex', `valid`)
|
|
47
|
+
if (!options.knex) throw new sdk.WERR_INVALID_PARAMETER('options.knex', `valid`)
|
|
57
48
|
this.knex = options.knex
|
|
58
49
|
}
|
|
59
50
|
|
|
60
51
|
async readSettings(): Promise<TableSettings> {
|
|
61
|
-
return this.validateEntity(
|
|
62
|
-
verifyOne(await this.toDb(undefined)<TableSettings>('settings'))
|
|
63
|
-
)
|
|
52
|
+
return this.validateEntity(verifyOne(await this.toDb(undefined)<TableSettings>('settings')))
|
|
64
53
|
}
|
|
65
54
|
|
|
66
|
-
override async getProvenOrRawTx(
|
|
67
|
-
txid: string,
|
|
68
|
-
trx?: sdk.TrxToken
|
|
69
|
-
): Promise<sdk.ProvenOrRawTx> {
|
|
55
|
+
override async getProvenOrRawTx(txid: string, trx?: sdk.TrxToken): Promise<sdk.ProvenOrRawTx> {
|
|
70
56
|
const k = this.toDb(trx)
|
|
71
57
|
const r: sdk.ProvenOrRawTx = {
|
|
72
58
|
proven: undefined,
|
|
@@ -74,21 +60,12 @@ export class StorageKnex
|
|
|
74
60
|
inputBEEF: undefined
|
|
75
61
|
}
|
|
76
62
|
|
|
77
|
-
r.proven = verifyOneOrNone(
|
|
78
|
-
await this.findProvenTxs({ partial: { txid: txid } })
|
|
79
|
-
)
|
|
63
|
+
r.proven = verifyOneOrNone(await this.findProvenTxs({ partial: { txid: txid } }))
|
|
80
64
|
if (!r.proven) {
|
|
81
65
|
const reqRawTx = verifyOneOrNone(
|
|
82
66
|
await k('proven_tx_reqs')
|
|
83
67
|
.where('txid', txid)
|
|
84
|
-
.whereIn('status', [
|
|
85
|
-
'unsent',
|
|
86
|
-
'unmined',
|
|
87
|
-
'unconfirmed',
|
|
88
|
-
'sending',
|
|
89
|
-
'nosend',
|
|
90
|
-
'completed'
|
|
91
|
-
])
|
|
68
|
+
.whereIn('status', ['unsent', 'unmined', 'unconfirmed', 'sending', 'nosend', 'completed'])
|
|
92
69
|
.select('rawTx', 'inputBEEF')
|
|
93
70
|
)
|
|
94
71
|
if (reqRawTx) {
|
|
@@ -100,8 +77,7 @@ export class StorageKnex
|
|
|
100
77
|
}
|
|
101
78
|
|
|
102
79
|
dbTypeSubstring(source: string, fromOffset: number, forLength?: number) {
|
|
103
|
-
if (this.dbtype === 'MySQL')
|
|
104
|
-
return `substring(${source} from ${fromOffset} for ${forLength!})`
|
|
80
|
+
if (this.dbtype === 'MySQL') return `substring(${source} from ${fromOffset} for ${forLength!})`
|
|
105
81
|
return `substr(${source}, ${fromOffset}, ${forLength})`
|
|
106
82
|
}
|
|
107
83
|
|
|
@@ -119,8 +95,7 @@ export class StorageKnex
|
|
|
119
95
|
let rs: { rawTx: Buffer | null }[] = await this.toDb(trx).raw(
|
|
120
96
|
`select ${this.dbTypeSubstring('rawTx', offset! + 1, length)} as rawTx from proven_txs where txid = '${txid}'`
|
|
121
97
|
)
|
|
122
|
-
if (this.dbtype === 'MySQL')
|
|
123
|
-
rs = (rs as unknown as { rawTx: Buffer | null }[][])[0]
|
|
98
|
+
if (this.dbtype === 'MySQL') rs = (rs as unknown as { rawTx: Buffer | null }[][])[0]
|
|
124
99
|
const r = verifyOneOrNone(rs)
|
|
125
100
|
if (r && r.rawTx) {
|
|
126
101
|
rawTx = Array.from(r.rawTx)
|
|
@@ -128,8 +103,7 @@ export class StorageKnex
|
|
|
128
103
|
let rs: { rawTx: Buffer | null }[] = await this.toDb(trx).raw(
|
|
129
104
|
`select ${this.dbTypeSubstring('rawTx', offset! + 1, length)} as rawTx from proven_tx_reqs where txid = '${txid}' and status in ('unsent', 'nosend', 'sending', 'unmined', 'completed')`
|
|
130
105
|
)
|
|
131
|
-
if (this.dbtype === 'MySQL')
|
|
132
|
-
rs = (rs as unknown as { rawTx: Buffer | null }[][])[0]
|
|
106
|
+
if (this.dbtype === 'MySQL') rs = (rs as unknown as { rawTx: Buffer | null }[][])[0]
|
|
133
107
|
const r = verifyOneOrNone(rs)
|
|
134
108
|
if (r && r.rawTx) {
|
|
135
109
|
rawTx = Array.from(r.rawTx)
|
|
@@ -143,141 +117,104 @@ export class StorageKnex
|
|
|
143
117
|
return rawTx
|
|
144
118
|
}
|
|
145
119
|
|
|
146
|
-
getProvenTxsForUserQuery(
|
|
147
|
-
args: sdk.FindForUserSincePagedArgs
|
|
148
|
-
): Knex.QueryBuilder {
|
|
120
|
+
getProvenTxsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
|
|
149
121
|
const k = this.toDb(args.trx)
|
|
150
122
|
let q = k('proven_txs').where(function () {
|
|
151
123
|
this.whereExists(
|
|
152
124
|
k
|
|
153
125
|
.select('*')
|
|
154
126
|
.from('transactions')
|
|
155
|
-
.whereRaw(
|
|
156
|
-
`proven_txs.provenTxId = transactions.provenTxId and transactions.userId = ${args.userId}`
|
|
157
|
-
)
|
|
127
|
+
.whereRaw(`proven_txs.provenTxId = transactions.provenTxId and transactions.userId = ${args.userId}`)
|
|
158
128
|
)
|
|
159
129
|
})
|
|
160
130
|
if (args.paged) {
|
|
161
131
|
q = q.limit(args.paged.limit)
|
|
162
132
|
q = q.offset(args.paged.offset || 0)
|
|
163
133
|
}
|
|
164
|
-
if (args.since)
|
|
165
|
-
q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
134
|
+
if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
166
135
|
return q
|
|
167
136
|
}
|
|
168
|
-
override async getProvenTxsForUser(
|
|
169
|
-
args: sdk.FindForUserSincePagedArgs
|
|
170
|
-
): Promise<TableProvenTx[]> {
|
|
137
|
+
override async getProvenTxsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableProvenTx[]> {
|
|
171
138
|
const q = this.getProvenTxsForUserQuery(args)
|
|
172
139
|
const rs = await q
|
|
173
140
|
return this.validateEntities(rs)
|
|
174
141
|
}
|
|
175
142
|
|
|
176
|
-
getProvenTxReqsForUserQuery(
|
|
177
|
-
args: sdk.FindForUserSincePagedArgs
|
|
178
|
-
): Knex.QueryBuilder {
|
|
143
|
+
getProvenTxReqsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
|
|
179
144
|
const k = this.toDb(args.trx)
|
|
180
145
|
let q = k('proven_tx_reqs').where(function () {
|
|
181
146
|
this.whereExists(
|
|
182
147
|
k
|
|
183
148
|
.select('*')
|
|
184
149
|
.from('transactions')
|
|
185
|
-
.whereRaw(
|
|
186
|
-
`proven_tx_reqs.txid = transactions.txid and transactions.userId = ${args.userId}`
|
|
187
|
-
)
|
|
150
|
+
.whereRaw(`proven_tx_reqs.txid = transactions.txid and transactions.userId = ${args.userId}`)
|
|
188
151
|
)
|
|
189
152
|
})
|
|
190
153
|
if (args.paged) {
|
|
191
154
|
q = q.limit(args.paged.limit)
|
|
192
155
|
q = q.offset(args.paged.offset || 0)
|
|
193
156
|
}
|
|
194
|
-
if (args.since)
|
|
195
|
-
q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
157
|
+
if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
196
158
|
return q
|
|
197
159
|
}
|
|
198
|
-
override async getProvenTxReqsForUser(
|
|
199
|
-
args: sdk.FindForUserSincePagedArgs
|
|
200
|
-
): Promise<TableProvenTxReq[]> {
|
|
160
|
+
override async getProvenTxReqsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableProvenTxReq[]> {
|
|
201
161
|
const q = this.getProvenTxReqsForUserQuery(args)
|
|
202
162
|
const rs = await q
|
|
203
163
|
return this.validateEntities(rs, undefined, ['notified'])
|
|
204
164
|
}
|
|
205
165
|
|
|
206
|
-
getTxLabelMapsForUserQuery(
|
|
207
|
-
args: sdk.FindForUserSincePagedArgs
|
|
208
|
-
): Knex.QueryBuilder {
|
|
166
|
+
getTxLabelMapsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
|
|
209
167
|
const k = this.toDb(args.trx)
|
|
210
168
|
let q = k('tx_labels_map').whereExists(
|
|
211
169
|
k
|
|
212
170
|
.select('*')
|
|
213
171
|
.from('tx_labels')
|
|
214
|
-
.whereRaw(
|
|
215
|
-
`tx_labels.txLabelId = tx_labels_map.txLabelId and tx_labels.userId = ${args.userId}`
|
|
216
|
-
)
|
|
172
|
+
.whereRaw(`tx_labels.txLabelId = tx_labels_map.txLabelId and tx_labels.userId = ${args.userId}`)
|
|
217
173
|
)
|
|
218
|
-
if (args.since)
|
|
219
|
-
q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
174
|
+
if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
220
175
|
if (args.paged) {
|
|
221
176
|
q = q.limit(args.paged.limit)
|
|
222
177
|
q = q.offset(args.paged.offset || 0)
|
|
223
178
|
}
|
|
224
179
|
return q
|
|
225
180
|
}
|
|
226
|
-
override async getTxLabelMapsForUser(
|
|
227
|
-
args: sdk.FindForUserSincePagedArgs
|
|
228
|
-
): Promise<TableTxLabelMap[]> {
|
|
181
|
+
override async getTxLabelMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableTxLabelMap[]> {
|
|
229
182
|
const q = this.getTxLabelMapsForUserQuery(args)
|
|
230
183
|
const rs = await q
|
|
231
184
|
return this.validateEntities(rs, undefined, ['isDeleted'])
|
|
232
185
|
}
|
|
233
186
|
|
|
234
|
-
getOutputTagMapsForUserQuery(
|
|
235
|
-
args: sdk.FindForUserSincePagedArgs
|
|
236
|
-
): Knex.QueryBuilder {
|
|
187
|
+
getOutputTagMapsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
|
|
237
188
|
const k = this.toDb(args.trx)
|
|
238
189
|
let q = k('output_tags_map').whereExists(
|
|
239
190
|
k
|
|
240
191
|
.select('*')
|
|
241
192
|
.from('output_tags')
|
|
242
|
-
.whereRaw(
|
|
243
|
-
`output_tags.outputTagId = output_tags_map.outputTagId and output_tags.userId = ${args.userId}`
|
|
244
|
-
)
|
|
193
|
+
.whereRaw(`output_tags.outputTagId = output_tags_map.outputTagId and output_tags.userId = ${args.userId}`)
|
|
245
194
|
)
|
|
246
|
-
if (args.since)
|
|
247
|
-
q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
195
|
+
if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
248
196
|
if (args.paged) {
|
|
249
197
|
q = q.limit(args.paged.limit)
|
|
250
198
|
q = q.offset(args.paged.offset || 0)
|
|
251
199
|
}
|
|
252
200
|
return q
|
|
253
201
|
}
|
|
254
|
-
override async getOutputTagMapsForUser(
|
|
255
|
-
args: sdk.FindForUserSincePagedArgs
|
|
256
|
-
): Promise<TableOutputTagMap[]> {
|
|
202
|
+
override async getOutputTagMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableOutputTagMap[]> {
|
|
257
203
|
const q = this.getOutputTagMapsForUserQuery(args)
|
|
258
204
|
const rs = await q
|
|
259
205
|
return this.validateEntities(rs, undefined, ['isDeleted'])
|
|
260
206
|
}
|
|
261
207
|
|
|
262
|
-
override async listActions(
|
|
263
|
-
auth: sdk.AuthId,
|
|
264
|
-
vargs: sdk.ValidListActionsArgs
|
|
265
|
-
): Promise<ListActionsResult> {
|
|
208
|
+
override async listActions(auth: sdk.AuthId, vargs: sdk.ValidListActionsArgs): Promise<ListActionsResult> {
|
|
266
209
|
if (!auth.userId) throw new sdk.WERR_UNAUTHORIZED()
|
|
267
210
|
return await listActions(this, auth, vargs)
|
|
268
211
|
}
|
|
269
|
-
override async listOutputs(
|
|
270
|
-
auth: sdk.AuthId,
|
|
271
|
-
vargs: sdk.ValidListOutputsArgs
|
|
272
|
-
): Promise<ListOutputsResult> {
|
|
212
|
+
override async listOutputs(auth: sdk.AuthId, vargs: sdk.ValidListOutputsArgs): Promise<ListOutputsResult> {
|
|
273
213
|
if (!auth.userId) throw new sdk.WERR_UNAUTHORIZED()
|
|
274
214
|
return await listOutputs(this, auth, vargs)
|
|
275
215
|
}
|
|
276
216
|
|
|
277
|
-
override async insertProvenTx(
|
|
278
|
-
tx: TableProvenTx,
|
|
279
|
-
trx?: sdk.TrxToken
|
|
280
|
-
): Promise<number> {
|
|
217
|
+
override async insertProvenTx(tx: TableProvenTx, trx?: sdk.TrxToken): Promise<number> {
|
|
281
218
|
const e = await this.validateEntityForInsert(tx, trx)
|
|
282
219
|
if (e.provenTxId === 0) delete e.provenTxId
|
|
283
220
|
const [id] = await this.toDb(trx)<TableProvenTx>('proven_txs').insert(e)
|
|
@@ -285,22 +222,15 @@ export class StorageKnex
|
|
|
285
222
|
return tx.provenTxId
|
|
286
223
|
}
|
|
287
224
|
|
|
288
|
-
override async insertProvenTxReq(
|
|
289
|
-
tx: TableProvenTxReq,
|
|
290
|
-
trx?: sdk.TrxToken
|
|
291
|
-
): Promise<number> {
|
|
225
|
+
override async insertProvenTxReq(tx: TableProvenTxReq, trx?: sdk.TrxToken): Promise<number> {
|
|
292
226
|
const e = await this.validateEntityForInsert(tx, trx)
|
|
293
227
|
if (e.provenTxReqId === 0) delete e.provenTxReqId
|
|
294
|
-
const [id] =
|
|
295
|
-
await this.toDb(trx)<TableProvenTxReq>('proven_tx_reqs').insert(e)
|
|
228
|
+
const [id] = await this.toDb(trx)<TableProvenTxReq>('proven_tx_reqs').insert(e)
|
|
296
229
|
tx.provenTxReqId = id
|
|
297
230
|
return tx.provenTxReqId
|
|
298
231
|
}
|
|
299
232
|
|
|
300
|
-
override async insertUser(
|
|
301
|
-
user: TableUser,
|
|
302
|
-
trx?: sdk.TrxToken
|
|
303
|
-
): Promise<number> {
|
|
233
|
+
override async insertUser(user: TableUser, trx?: sdk.TrxToken): Promise<number> {
|
|
304
234
|
const e = await this.validateEntityForInsert(user, trx)
|
|
305
235
|
if (e.userId === 0) delete e.userId
|
|
306
236
|
const [id] = await this.toDb(trx)<TableUser>('users').insert(e)
|
|
@@ -308,31 +238,18 @@ export class StorageKnex
|
|
|
308
238
|
return user.userId
|
|
309
239
|
}
|
|
310
240
|
|
|
311
|
-
override async insertCertificateAuth(
|
|
312
|
-
auth
|
|
313
|
-
certificate: TableCertificateX
|
|
314
|
-
): Promise<number> {
|
|
315
|
-
if (
|
|
316
|
-
!auth.userId ||
|
|
317
|
-
(certificate.userId && certificate.userId !== auth.userId)
|
|
318
|
-
)
|
|
319
|
-
throw new sdk.WERR_UNAUTHORIZED()
|
|
241
|
+
override async insertCertificateAuth(auth: sdk.AuthId, certificate: TableCertificateX): Promise<number> {
|
|
242
|
+
if (!auth.userId || (certificate.userId && certificate.userId !== auth.userId)) throw new sdk.WERR_UNAUTHORIZED()
|
|
320
243
|
certificate.userId = auth.userId
|
|
321
244
|
return await this.insertCertificate(certificate)
|
|
322
245
|
}
|
|
323
246
|
|
|
324
|
-
override async insertCertificate(
|
|
325
|
-
certificate
|
|
326
|
-
trx?: sdk.TrxToken
|
|
327
|
-
): Promise<number> {
|
|
328
|
-
const e = await this.validateEntityForInsert(certificate, trx, undefined, [
|
|
329
|
-
'isDeleted'
|
|
330
|
-
])
|
|
247
|
+
override async insertCertificate(certificate: TableCertificateX, trx?: sdk.TrxToken): Promise<number> {
|
|
248
|
+
const e = await this.validateEntityForInsert(certificate, trx, undefined, ['isDeleted'])
|
|
331
249
|
const fields = e.fields
|
|
332
250
|
if (e.fields) delete e.fields
|
|
333
251
|
if (e.certificateId === 0) delete e.certificateId
|
|
334
|
-
const [id] =
|
|
335
|
-
await this.toDb(trx)<TableCertificate>('certificates').insert(e)
|
|
252
|
+
const [id] = await this.toDb(trx)<TableCertificate>('certificates').insert(e)
|
|
336
253
|
certificate.certificateId = id
|
|
337
254
|
|
|
338
255
|
if (fields) {
|
|
@@ -346,44 +263,28 @@ export class StorageKnex
|
|
|
346
263
|
return certificate.certificateId
|
|
347
264
|
}
|
|
348
265
|
|
|
349
|
-
override async insertCertificateField(
|
|
350
|
-
certificateField: TableCertificateField,
|
|
351
|
-
trx?: sdk.TrxToken
|
|
352
|
-
): Promise<void> {
|
|
266
|
+
override async insertCertificateField(certificateField: TableCertificateField, trx?: sdk.TrxToken): Promise<void> {
|
|
353
267
|
const e = await this.validateEntityForInsert(certificateField, trx)
|
|
354
268
|
await this.toDb(trx)<TableCertificate>('certificate_fields').insert(e)
|
|
355
269
|
}
|
|
356
270
|
|
|
357
|
-
override async insertOutputBasket(
|
|
358
|
-
basket
|
|
359
|
-
trx?: sdk.TrxToken
|
|
360
|
-
): Promise<number> {
|
|
361
|
-
const e = await this.validateEntityForInsert(basket, trx, undefined, [
|
|
362
|
-
'isDeleted'
|
|
363
|
-
])
|
|
271
|
+
override async insertOutputBasket(basket: TableOutputBasket, trx?: sdk.TrxToken): Promise<number> {
|
|
272
|
+
const e = await this.validateEntityForInsert(basket, trx, undefined, ['isDeleted'])
|
|
364
273
|
if (e.basketId === 0) delete e.basketId
|
|
365
|
-
const [id] =
|
|
366
|
-
await this.toDb(trx)<TableOutputBasket>('output_baskets').insert(e)
|
|
274
|
+
const [id] = await this.toDb(trx)<TableOutputBasket>('output_baskets').insert(e)
|
|
367
275
|
basket.basketId = id
|
|
368
276
|
return basket.basketId
|
|
369
277
|
}
|
|
370
278
|
|
|
371
|
-
override async insertTransaction(
|
|
372
|
-
tx: TableTransaction,
|
|
373
|
-
trx?: sdk.TrxToken
|
|
374
|
-
): Promise<number> {
|
|
279
|
+
override async insertTransaction(tx: TableTransaction, trx?: sdk.TrxToken): Promise<number> {
|
|
375
280
|
const e = await this.validateEntityForInsert(tx, trx)
|
|
376
281
|
if (e.transactionId === 0) delete e.transactionId
|
|
377
|
-
const [id] =
|
|
378
|
-
await this.toDb(trx)<TableTransaction>('transactions').insert(e)
|
|
282
|
+
const [id] = await this.toDb(trx)<TableTransaction>('transactions').insert(e)
|
|
379
283
|
tx.transactionId = id
|
|
380
284
|
return tx.transactionId
|
|
381
285
|
}
|
|
382
286
|
|
|
383
|
-
override async insertCommission(
|
|
384
|
-
commission: TableCommission,
|
|
385
|
-
trx?: sdk.TrxToken
|
|
386
|
-
): Promise<number> {
|
|
287
|
+
override async insertCommission(commission: TableCommission, trx?: sdk.TrxToken): Promise<number> {
|
|
387
288
|
const e = await this.validateEntityForInsert(commission, trx)
|
|
388
289
|
if (e.commissionId === 0) delete e.commissionId
|
|
389
290
|
const [id] = await this.toDb(trx)<TableCommission>('commissions').insert(e)
|
|
@@ -391,10 +292,7 @@ export class StorageKnex
|
|
|
391
292
|
return commission.commissionId
|
|
392
293
|
}
|
|
393
294
|
|
|
394
|
-
override async insertOutput(
|
|
395
|
-
output: TableOutput,
|
|
396
|
-
trx?: sdk.TrxToken
|
|
397
|
-
): Promise<number> {
|
|
295
|
+
override async insertOutput(output: TableOutput, trx?: sdk.TrxToken): Promise<number> {
|
|
398
296
|
const e = await this.validateEntityForInsert(output, trx)
|
|
399
297
|
if (e.outputId === 0) delete e.outputId
|
|
400
298
|
const [id] = await this.toDb(trx)<TableOutput>('outputs').insert(e)
|
|
@@ -402,76 +300,42 @@ export class StorageKnex
|
|
|
402
300
|
return output.outputId
|
|
403
301
|
}
|
|
404
302
|
|
|
405
|
-
override async insertOutputTag(
|
|
406
|
-
tag
|
|
407
|
-
trx?: sdk.TrxToken
|
|
408
|
-
): Promise<number> {
|
|
409
|
-
const e = await this.validateEntityForInsert(tag, trx, undefined, [
|
|
410
|
-
'isDeleted'
|
|
411
|
-
])
|
|
303
|
+
override async insertOutputTag(tag: TableOutputTag, trx?: sdk.TrxToken): Promise<number> {
|
|
304
|
+
const e = await this.validateEntityForInsert(tag, trx, undefined, ['isDeleted'])
|
|
412
305
|
if (e.outputTagId === 0) delete e.outputTagId
|
|
413
306
|
const [id] = await this.toDb(trx)<TableOutputTag>('output_tags').insert(e)
|
|
414
307
|
tag.outputTagId = id
|
|
415
308
|
return tag.outputTagId
|
|
416
309
|
}
|
|
417
310
|
|
|
418
|
-
override async insertOutputTagMap(
|
|
419
|
-
tagMap
|
|
420
|
-
|
|
421
|
-
): Promise<void> {
|
|
422
|
-
const e = await this.validateEntityForInsert(tagMap, trx, undefined, [
|
|
423
|
-
'isDeleted'
|
|
424
|
-
])
|
|
425
|
-
const [id] =
|
|
426
|
-
await this.toDb(trx)<TableOutputTagMap>('output_tags_map').insert(e)
|
|
311
|
+
override async insertOutputTagMap(tagMap: TableOutputTagMap, trx?: sdk.TrxToken): Promise<void> {
|
|
312
|
+
const e = await this.validateEntityForInsert(tagMap, trx, undefined, ['isDeleted'])
|
|
313
|
+
const [id] = await this.toDb(trx)<TableOutputTagMap>('output_tags_map').insert(e)
|
|
427
314
|
}
|
|
428
315
|
|
|
429
|
-
override async insertTxLabel(
|
|
430
|
-
label
|
|
431
|
-
trx?: sdk.TrxToken
|
|
432
|
-
): Promise<number> {
|
|
433
|
-
const e = await this.validateEntityForInsert(label, trx, undefined, [
|
|
434
|
-
'isDeleted'
|
|
435
|
-
])
|
|
316
|
+
override async insertTxLabel(label: TableTxLabel, trx?: sdk.TrxToken): Promise<number> {
|
|
317
|
+
const e = await this.validateEntityForInsert(label, trx, undefined, ['isDeleted'])
|
|
436
318
|
if (e.txLabelId === 0) delete e.txLabelId
|
|
437
319
|
const [id] = await this.toDb(trx)<TableTxLabel>('tx_labels').insert(e)
|
|
438
320
|
label.txLabelId = id
|
|
439
321
|
return label.txLabelId
|
|
440
322
|
}
|
|
441
323
|
|
|
442
|
-
override async insertTxLabelMap(
|
|
443
|
-
labelMap
|
|
444
|
-
|
|
445
|
-
): Promise<void> {
|
|
446
|
-
const e = await this.validateEntityForInsert(labelMap, trx, undefined, [
|
|
447
|
-
'isDeleted'
|
|
448
|
-
])
|
|
449
|
-
const [id] =
|
|
450
|
-
await this.toDb(trx)<TableTxLabelMap>('tx_labels_map').insert(e)
|
|
324
|
+
override async insertTxLabelMap(labelMap: TableTxLabelMap, trx?: sdk.TrxToken): Promise<void> {
|
|
325
|
+
const e = await this.validateEntityForInsert(labelMap, trx, undefined, ['isDeleted'])
|
|
326
|
+
const [id] = await this.toDb(trx)<TableTxLabelMap>('tx_labels_map').insert(e)
|
|
451
327
|
}
|
|
452
328
|
|
|
453
|
-
override async insertMonitorEvent(
|
|
454
|
-
event: TableMonitorEvent,
|
|
455
|
-
trx?: sdk.TrxToken
|
|
456
|
-
): Promise<number> {
|
|
329
|
+
override async insertMonitorEvent(event: TableMonitorEvent, trx?: sdk.TrxToken): Promise<number> {
|
|
457
330
|
const e = await this.validateEntityForInsert(event, trx)
|
|
458
331
|
if (e.id === 0) delete e.id
|
|
459
|
-
const [id] =
|
|
460
|
-
await this.toDb(trx)<TableMonitorEvent>('monitor_events').insert(e)
|
|
332
|
+
const [id] = await this.toDb(trx)<TableMonitorEvent>('monitor_events').insert(e)
|
|
461
333
|
event.id = id
|
|
462
334
|
return event.id
|
|
463
335
|
}
|
|
464
336
|
|
|
465
|
-
override async insertSyncState(
|
|
466
|
-
syncState
|
|
467
|
-
trx?: sdk.TrxToken
|
|
468
|
-
): Promise<number> {
|
|
469
|
-
const e = await this.validateEntityForInsert(
|
|
470
|
-
syncState,
|
|
471
|
-
trx,
|
|
472
|
-
['when'],
|
|
473
|
-
['init']
|
|
474
|
-
)
|
|
337
|
+
override async insertSyncState(syncState: TableSyncState, trx?: sdk.TrxToken): Promise<number> {
|
|
338
|
+
const e = await this.validateEntityForInsert(syncState, trx, ['when'], ['init'])
|
|
475
339
|
if (e.syncStateId === 0) delete e.syncStateId
|
|
476
340
|
const [id] = await this.toDb(trx)<TableSyncState>('sync_states').insert(e)
|
|
477
341
|
syncState.syncStateId = id
|
|
@@ -489,21 +353,13 @@ export class StorageKnex
|
|
|
489
353
|
.where({ certificateId, fieldName })
|
|
490
354
|
.update(this.validatePartialForUpdate(update))
|
|
491
355
|
}
|
|
492
|
-
override async updateCertificate(
|
|
493
|
-
id: number,
|
|
494
|
-
update: Partial<TableCertificate>,
|
|
495
|
-
trx?: sdk.TrxToken
|
|
496
|
-
): Promise<number> {
|
|
356
|
+
override async updateCertificate(id: number, update: Partial<TableCertificate>, trx?: sdk.TrxToken): Promise<number> {
|
|
497
357
|
await this.verifyReadyForDatabaseAccess(trx)
|
|
498
358
|
return await this.toDb(trx)<TableCertificate>('certificates')
|
|
499
359
|
.where({ certificateId: id })
|
|
500
360
|
.update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
|
|
501
361
|
}
|
|
502
|
-
override async updateCommission(
|
|
503
|
-
id: number,
|
|
504
|
-
update: Partial<TableCommission>,
|
|
505
|
-
trx?: sdk.TrxToken
|
|
506
|
-
): Promise<number> {
|
|
362
|
+
override async updateCommission(id: number, update: Partial<TableCommission>, trx?: sdk.TrxToken): Promise<number> {
|
|
507
363
|
await this.verifyReadyForDatabaseAccess(trx)
|
|
508
364
|
return await this.toDb(trx)<TableCommission>('commissions')
|
|
509
365
|
.where({ commissionId: id })
|
|
@@ -519,11 +375,7 @@ export class StorageKnex
|
|
|
519
375
|
.where({ basketId: id })
|
|
520
376
|
.update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
|
|
521
377
|
}
|
|
522
|
-
override async updateOutput(
|
|
523
|
-
id: number,
|
|
524
|
-
update: Partial<TableOutput>,
|
|
525
|
-
trx?: sdk.TrxToken
|
|
526
|
-
): Promise<number> {
|
|
378
|
+
override async updateOutput(id: number, update: Partial<TableOutput>, trx?: sdk.TrxToken): Promise<number> {
|
|
527
379
|
await this.verifyReadyForDatabaseAccess(trx)
|
|
528
380
|
return await this.toDb(trx)<TableOutput>('outputs')
|
|
529
381
|
.where({ outputId: id })
|
|
@@ -540,11 +392,7 @@ export class StorageKnex
|
|
|
540
392
|
.where({ outputId, outputTagId: tagId })
|
|
541
393
|
.update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
|
|
542
394
|
}
|
|
543
|
-
override async updateOutputTag(
|
|
544
|
-
id: number,
|
|
545
|
-
update: Partial<TableOutputTag>,
|
|
546
|
-
trx?: sdk.TrxToken
|
|
547
|
-
): Promise<number> {
|
|
395
|
+
override async updateOutputTag(id: number, update: Partial<TableOutputTag>, trx?: sdk.TrxToken): Promise<number> {
|
|
548
396
|
await this.verifyReadyForDatabaseAccess(trx)
|
|
549
397
|
return await this.toDb(trx)<TableOutputTag>('output_tags')
|
|
550
398
|
.where({ outputTagId: id })
|
|
@@ -566,28 +414,17 @@ export class StorageKnex
|
|
|
566
414
|
.where({ provenTxReqId: id })
|
|
567
415
|
.update(this.validatePartialForUpdate(update))
|
|
568
416
|
} else {
|
|
569
|
-
throw new sdk.WERR_INVALID_PARAMETER(
|
|
570
|
-
'id',
|
|
571
|
-
'transactionId or array of transactionId'
|
|
572
|
-
)
|
|
417
|
+
throw new sdk.WERR_INVALID_PARAMETER('id', 'transactionId or array of transactionId')
|
|
573
418
|
}
|
|
574
419
|
return r
|
|
575
420
|
}
|
|
576
|
-
override async updateProvenTx(
|
|
577
|
-
id: number,
|
|
578
|
-
update: Partial<TableProvenTx>,
|
|
579
|
-
trx?: sdk.TrxToken
|
|
580
|
-
): Promise<number> {
|
|
421
|
+
override async updateProvenTx(id: number, update: Partial<TableProvenTx>, trx?: sdk.TrxToken): Promise<number> {
|
|
581
422
|
await this.verifyReadyForDatabaseAccess(trx)
|
|
582
423
|
return await this.toDb(trx)<TableProvenTx>('proven_txs')
|
|
583
424
|
.where({ provenTxId: id })
|
|
584
425
|
.update(this.validatePartialForUpdate(update))
|
|
585
426
|
}
|
|
586
|
-
override async updateSyncState(
|
|
587
|
-
id: number,
|
|
588
|
-
update: Partial<TableSyncState>,
|
|
589
|
-
trx?: sdk.TrxToken
|
|
590
|
-
): Promise<number> {
|
|
427
|
+
override async updateSyncState(id: number, update: Partial<TableSyncState>, trx?: sdk.TrxToken): Promise<number> {
|
|
591
428
|
await this.verifyReadyForDatabaseAccess(trx)
|
|
592
429
|
return await this.toDb(trx)<TableSyncState>('sync_states')
|
|
593
430
|
.where({ syncStateId: id })
|
|
@@ -609,10 +446,7 @@ export class StorageKnex
|
|
|
609
446
|
.where({ transactionId: id })
|
|
610
447
|
.update(await this.validatePartialForUpdate(update))
|
|
611
448
|
} else {
|
|
612
|
-
throw new sdk.WERR_INVALID_PARAMETER(
|
|
613
|
-
'id',
|
|
614
|
-
'transactionId or array of transactionId'
|
|
615
|
-
)
|
|
449
|
+
throw new sdk.WERR_INVALID_PARAMETER('id', 'transactionId or array of transactionId')
|
|
616
450
|
}
|
|
617
451
|
return r
|
|
618
452
|
}
|
|
@@ -627,25 +461,15 @@ export class StorageKnex
|
|
|
627
461
|
.where({ transactionId, txLabelId })
|
|
628
462
|
.update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
|
|
629
463
|
}
|
|
630
|
-
override async updateTxLabel(
|
|
631
|
-
id: number,
|
|
632
|
-
update: Partial<TableTxLabel>,
|
|
633
|
-
trx?: sdk.TrxToken
|
|
634
|
-
): Promise<number> {
|
|
464
|
+
override async updateTxLabel(id: number, update: Partial<TableTxLabel>, trx?: sdk.TrxToken): Promise<number> {
|
|
635
465
|
await this.verifyReadyForDatabaseAccess(trx)
|
|
636
466
|
return await this.toDb(trx)<TableTxLabel>('tx_labels')
|
|
637
467
|
.where({ txLabelId: id })
|
|
638
468
|
.update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
|
|
639
469
|
}
|
|
640
|
-
override async updateUser(
|
|
641
|
-
id: number,
|
|
642
|
-
update: Partial<TableUser>,
|
|
643
|
-
trx?: sdk.TrxToken
|
|
644
|
-
): Promise<number> {
|
|
470
|
+
override async updateUser(id: number, update: Partial<TableUser>, trx?: sdk.TrxToken): Promise<number> {
|
|
645
471
|
await this.verifyReadyForDatabaseAccess(trx)
|
|
646
|
-
return await this.toDb(trx)<TableUser>('users')
|
|
647
|
-
.where({ userId: id })
|
|
648
|
-
.update(this.validatePartialForUpdate(update))
|
|
472
|
+
return await this.toDb(trx)<TableUser>('users').where({ userId: id }).update(this.validatePartialForUpdate(update))
|
|
649
473
|
}
|
|
650
474
|
override async updateMonitorEvent(
|
|
651
475
|
id: number,
|
|
@@ -658,15 +482,10 @@ export class StorageKnex
|
|
|
658
482
|
.update(this.validatePartialForUpdate(update))
|
|
659
483
|
}
|
|
660
484
|
|
|
661
|
-
setupQuery<T extends object>(
|
|
662
|
-
table: string,
|
|
663
|
-
args: sdk.FindPartialSincePagedArgs<T>
|
|
664
|
-
): Knex.QueryBuilder {
|
|
485
|
+
setupQuery<T extends object>(table: string, args: sdk.FindPartialSincePagedArgs<T>): Knex.QueryBuilder {
|
|
665
486
|
let q = this.toDb(args.trx)<T>(table)
|
|
666
|
-
if (args.partial && Object.keys(args.partial).length > 0)
|
|
667
|
-
|
|
668
|
-
if (args.since)
|
|
669
|
-
q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
487
|
+
if (args.partial && Object.keys(args.partial).length > 0) q.where(args.partial)
|
|
488
|
+
if (args.since) q.where('updated_at', '>=', this.validateDateForWhere(args.since))
|
|
670
489
|
if (args.paged) {
|
|
671
490
|
q.limit(args.paged.limit)
|
|
672
491
|
q.offset(args.paged.offset || 0)
|
|
@@ -674,15 +493,12 @@ export class StorageKnex
|
|
|
674
493
|
return q
|
|
675
494
|
}
|
|
676
495
|
|
|
677
|
-
findCertificateFieldsQuery(
|
|
678
|
-
args: sdk.FindCertificateFieldsArgs
|
|
679
|
-
): Knex.QueryBuilder {
|
|
496
|
+
findCertificateFieldsQuery(args: sdk.FindCertificateFieldsArgs): Knex.QueryBuilder {
|
|
680
497
|
return this.setupQuery('certificate_fields', args)
|
|
681
498
|
}
|
|
682
499
|
findCertificatesQuery(args: sdk.FindCertificatesArgs): Knex.QueryBuilder {
|
|
683
500
|
const q = this.setupQuery('certificates', args)
|
|
684
|
-
if (args.certifiers && args.certifiers.length > 0)
|
|
685
|
-
q.whereIn('certifier', args.certifiers)
|
|
501
|
+
if (args.certifiers && args.certifiers.length > 0) q.whereIn('certifier', args.certifiers)
|
|
686
502
|
if (args.types && args.types.length > 0) q.whereIn('type', args.types)
|
|
687
503
|
return q
|
|
688
504
|
}
|
|
@@ -697,10 +513,7 @@ export class StorageKnex
|
|
|
697
513
|
findOutputBasketsQuery(args: sdk.FindOutputBasketsArgs): Knex.QueryBuilder {
|
|
698
514
|
return this.setupQuery('output_baskets', args)
|
|
699
515
|
}
|
|
700
|
-
findOutputsQuery(
|
|
701
|
-
args: sdk.FindOutputsArgs,
|
|
702
|
-
count?: boolean
|
|
703
|
-
): Knex.QueryBuilder {
|
|
516
|
+
findOutputsQuery(args: sdk.FindOutputsArgs, count?: boolean): Knex.QueryBuilder {
|
|
704
517
|
if (args.partial.lockingScript)
|
|
705
518
|
throw new sdk.WERR_INVALID_PARAMETER(
|
|
706
519
|
'args.partial.lockingScript',
|
|
@@ -720,8 +533,7 @@ export class StorageKnex
|
|
|
720
533
|
}
|
|
721
534
|
findOutputTagMapsQuery(args: sdk.FindOutputTagMapsArgs): Knex.QueryBuilder {
|
|
722
535
|
const q = this.setupQuery('output_tags_map', args)
|
|
723
|
-
if (args.tagIds && args.tagIds.length > 0)
|
|
724
|
-
q.whereIn('outputTagId', args.tagIds)
|
|
536
|
+
if (args.tagIds && args.tagIds.length > 0) q.whereIn('outputTagId', args.tagIds)
|
|
725
537
|
return q
|
|
726
538
|
}
|
|
727
539
|
findOutputTagsQuery(args: sdk.FindOutputTagsArgs): Knex.QueryBuilder {
|
|
@@ -759,10 +571,7 @@ export class StorageKnex
|
|
|
759
571
|
findSyncStatesQuery(args: sdk.FindSyncStatesArgs): Knex.QueryBuilder {
|
|
760
572
|
return this.setupQuery('sync_states', args)
|
|
761
573
|
}
|
|
762
|
-
findTransactionsQuery(
|
|
763
|
-
args: sdk.FindTransactionsArgs,
|
|
764
|
-
count?: boolean
|
|
765
|
-
): Knex.QueryBuilder {
|
|
574
|
+
findTransactionsQuery(args: sdk.FindTransactionsArgs, count?: boolean): Knex.QueryBuilder {
|
|
766
575
|
if (args.partial.rawTx)
|
|
767
576
|
throw new sdk.WERR_INVALID_PARAMETER(
|
|
768
577
|
'args.partial.rawTx',
|
|
@@ -776,17 +585,14 @@ export class StorageKnex
|
|
|
776
585
|
const q = this.setupQuery('transactions', args)
|
|
777
586
|
if (args.status && args.status.length > 0) q.whereIn('status', args.status)
|
|
778
587
|
if (args.noRawTx && !count) {
|
|
779
|
-
const columns = transactionColumnsWithoutRawTx.map(
|
|
780
|
-
c => `transactions.${c}`
|
|
781
|
-
)
|
|
588
|
+
const columns = transactionColumnsWithoutRawTx.map(c => `transactions.${c}`)
|
|
782
589
|
q.select(columns)
|
|
783
590
|
}
|
|
784
591
|
return q
|
|
785
592
|
}
|
|
786
593
|
findTxLabelMapsQuery(args: sdk.FindTxLabelMapsArgs): Knex.QueryBuilder {
|
|
787
594
|
const q = this.setupQuery('tx_labels_map', args)
|
|
788
|
-
if (args.labelIds && args.labelIds.length > 0)
|
|
789
|
-
q.whereIn('txLabelId', args.labelIds)
|
|
595
|
+
if (args.labelIds && args.labelIds.length > 0) q.whereIn('txLabelId', args.labelIds)
|
|
790
596
|
return q
|
|
791
597
|
}
|
|
792
598
|
findTxLabelsQuery(args: sdk.FindTxLabelsArgs): Knex.QueryBuilder {
|
|
@@ -799,15 +605,8 @@ export class StorageKnex
|
|
|
799
605
|
return this.setupQuery('monitor_events', args)
|
|
800
606
|
}
|
|
801
607
|
|
|
802
|
-
override async findCertificatesAuth(
|
|
803
|
-
auth
|
|
804
|
-
args: sdk.FindCertificatesArgs
|
|
805
|
-
): Promise<TableCertificateX[]> {
|
|
806
|
-
if (
|
|
807
|
-
!auth.userId ||
|
|
808
|
-
(args.partial.userId && args.partial.userId !== auth.userId)
|
|
809
|
-
)
|
|
810
|
-
throw new sdk.WERR_UNAUTHORIZED()
|
|
608
|
+
override async findCertificatesAuth(auth: sdk.AuthId, args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]> {
|
|
609
|
+
if (!auth.userId || (args.partial.userId && args.partial.userId !== auth.userId)) throw new sdk.WERR_UNAUTHORIZED()
|
|
811
610
|
args.partial.userId = auth.userId
|
|
812
611
|
return await this.findCertificates(args)
|
|
813
612
|
}
|
|
@@ -815,35 +614,20 @@ export class StorageKnex
|
|
|
815
614
|
auth: sdk.AuthId,
|
|
816
615
|
args: sdk.FindOutputBasketsArgs
|
|
817
616
|
): Promise<TableOutputBasket[]> {
|
|
818
|
-
if (
|
|
819
|
-
!auth.userId ||
|
|
820
|
-
(args.partial.userId && args.partial.userId !== auth.userId)
|
|
821
|
-
)
|
|
822
|
-
throw new sdk.WERR_UNAUTHORIZED()
|
|
617
|
+
if (!auth.userId || (args.partial.userId && args.partial.userId !== auth.userId)) throw new sdk.WERR_UNAUTHORIZED()
|
|
823
618
|
args.partial.userId = auth.userId
|
|
824
619
|
return await this.findOutputBaskets(args)
|
|
825
620
|
}
|
|
826
|
-
override async findOutputsAuth(
|
|
827
|
-
auth
|
|
828
|
-
args: sdk.FindOutputsArgs
|
|
829
|
-
): Promise<TableOutput[]> {
|
|
830
|
-
if (
|
|
831
|
-
!auth.userId ||
|
|
832
|
-
(args.partial.userId && args.partial.userId !== auth.userId)
|
|
833
|
-
)
|
|
834
|
-
throw new sdk.WERR_UNAUTHORIZED()
|
|
621
|
+
override async findOutputsAuth(auth: sdk.AuthId, args: sdk.FindOutputsArgs): Promise<TableOutput[]> {
|
|
622
|
+
if (!auth.userId || (args.partial.userId && args.partial.userId !== auth.userId)) throw new sdk.WERR_UNAUTHORIZED()
|
|
835
623
|
args.partial.userId = auth.userId
|
|
836
624
|
return await this.findOutputs(args)
|
|
837
625
|
}
|
|
838
626
|
|
|
839
|
-
override async findCertificateFields(
|
|
840
|
-
args: sdk.FindCertificateFieldsArgs
|
|
841
|
-
): Promise<TableCertificateField[]> {
|
|
627
|
+
override async findCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<TableCertificateField[]> {
|
|
842
628
|
return this.validateEntities(await this.findCertificateFieldsQuery(args))
|
|
843
629
|
}
|
|
844
|
-
override async findCertificates(
|
|
845
|
-
args: sdk.FindCertificatesArgs
|
|
846
|
-
): Promise<TableCertificateX[]> {
|
|
630
|
+
override async findCertificates(args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]> {
|
|
847
631
|
const q = this.findCertificatesQuery(args)
|
|
848
632
|
let r: TableCertificateX[] = await q
|
|
849
633
|
r = this.validateEntities(r, undefined, ['isDeleted'])
|
|
@@ -859,23 +643,17 @@ export class StorageKnex
|
|
|
859
643
|
}
|
|
860
644
|
return r
|
|
861
645
|
}
|
|
862
|
-
override async findCommissions(
|
|
863
|
-
args: sdk.FindCommissionsArgs
|
|
864
|
-
): Promise<TableCommission[]> {
|
|
646
|
+
override async findCommissions(args: sdk.FindCommissionsArgs): Promise<TableCommission[]> {
|
|
865
647
|
const q = this.findCommissionsQuery(args)
|
|
866
648
|
const r = await q
|
|
867
649
|
return this.validateEntities(r, undefined, ['isRedeemed'])
|
|
868
650
|
}
|
|
869
|
-
override async findOutputBaskets(
|
|
870
|
-
args: sdk.FindOutputBasketsArgs
|
|
871
|
-
): Promise<TableOutputBasket[]> {
|
|
651
|
+
override async findOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<TableOutputBasket[]> {
|
|
872
652
|
const q = this.findOutputBasketsQuery(args)
|
|
873
653
|
const r = await q
|
|
874
654
|
return this.validateEntities(r, undefined, ['isDeleted'])
|
|
875
655
|
}
|
|
876
|
-
override async findOutputs(
|
|
877
|
-
args: sdk.FindOutputsArgs
|
|
878
|
-
): Promise<TableOutput[]> {
|
|
656
|
+
override async findOutputs(args: sdk.FindOutputsArgs): Promise<TableOutput[]> {
|
|
879
657
|
const q = this.findOutputsQuery(args)
|
|
880
658
|
const r = await q
|
|
881
659
|
if (!args.noScript) {
|
|
@@ -885,44 +663,32 @@ export class StorageKnex
|
|
|
885
663
|
}
|
|
886
664
|
return this.validateEntities(r, undefined, ['spendable', 'change'])
|
|
887
665
|
}
|
|
888
|
-
override async findOutputTagMaps(
|
|
889
|
-
args: sdk.FindOutputTagMapsArgs
|
|
890
|
-
): Promise<TableOutputTagMap[]> {
|
|
666
|
+
override async findOutputTagMaps(args: sdk.FindOutputTagMapsArgs): Promise<TableOutputTagMap[]> {
|
|
891
667
|
const q = this.findOutputTagMapsQuery(args)
|
|
892
668
|
const r = await q
|
|
893
669
|
return this.validateEntities(r, undefined, ['isDeleted'])
|
|
894
670
|
}
|
|
895
|
-
override async findOutputTags(
|
|
896
|
-
args: sdk.FindOutputTagsArgs
|
|
897
|
-
): Promise<TableOutputTag[]> {
|
|
671
|
+
override async findOutputTags(args: sdk.FindOutputTagsArgs): Promise<TableOutputTag[]> {
|
|
898
672
|
const q = this.findOutputTagsQuery(args)
|
|
899
673
|
const r = await q
|
|
900
674
|
return this.validateEntities(r, undefined, ['isDeleted'])
|
|
901
675
|
}
|
|
902
|
-
override async findProvenTxReqs(
|
|
903
|
-
args: sdk.FindProvenTxReqsArgs
|
|
904
|
-
): Promise<TableProvenTxReq[]> {
|
|
676
|
+
override async findProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<TableProvenTxReq[]> {
|
|
905
677
|
const q = this.findProvenTxReqsQuery(args)
|
|
906
678
|
const r = await q
|
|
907
679
|
return this.validateEntities(r, undefined, ['notified'])
|
|
908
680
|
}
|
|
909
|
-
override async findProvenTxs(
|
|
910
|
-
args: sdk.FindProvenTxsArgs
|
|
911
|
-
): Promise<TableProvenTx[]> {
|
|
681
|
+
override async findProvenTxs(args: sdk.FindProvenTxsArgs): Promise<TableProvenTx[]> {
|
|
912
682
|
const q = this.findProvenTxsQuery(args)
|
|
913
683
|
const r = await q
|
|
914
684
|
return this.validateEntities(r)
|
|
915
685
|
}
|
|
916
|
-
override async findSyncStates(
|
|
917
|
-
args: sdk.FindSyncStatesArgs
|
|
918
|
-
): Promise<TableSyncState[]> {
|
|
686
|
+
override async findSyncStates(args: sdk.FindSyncStatesArgs): Promise<TableSyncState[]> {
|
|
919
687
|
const q = this.findSyncStatesQuery(args)
|
|
920
688
|
const r = await q
|
|
921
689
|
return this.validateEntities(r, ['when'], ['init'])
|
|
922
690
|
}
|
|
923
|
-
override async findTransactions(
|
|
924
|
-
args: sdk.FindTransactionsArgs
|
|
925
|
-
): Promise<TableTransaction[]> {
|
|
691
|
+
override async findTransactions(args: sdk.FindTransactionsArgs): Promise<TableTransaction[]> {
|
|
926
692
|
const q = this.findTransactionsQuery(args)
|
|
927
693
|
const r = await q
|
|
928
694
|
if (!args.noRawTx) {
|
|
@@ -932,16 +698,12 @@ export class StorageKnex
|
|
|
932
698
|
}
|
|
933
699
|
return this.validateEntities(r, undefined, ['isOutgoing'])
|
|
934
700
|
}
|
|
935
|
-
override async findTxLabelMaps(
|
|
936
|
-
args: sdk.FindTxLabelMapsArgs
|
|
937
|
-
): Promise<TableTxLabelMap[]> {
|
|
701
|
+
override async findTxLabelMaps(args: sdk.FindTxLabelMapsArgs): Promise<TableTxLabelMap[]> {
|
|
938
702
|
const q = this.findTxLabelMapsQuery(args)
|
|
939
703
|
const r = await q
|
|
940
704
|
return this.validateEntities(r, undefined, ['isDeleted'])
|
|
941
705
|
}
|
|
942
|
-
override async findTxLabels(
|
|
943
|
-
args: sdk.FindTxLabelsArgs
|
|
944
|
-
): Promise<TableTxLabel[]> {
|
|
706
|
+
override async findTxLabels(args: sdk.FindTxLabelsArgs): Promise<TableTxLabel[]> {
|
|
945
707
|
const q = this.findTxLabelsQuery(args)
|
|
946
708
|
const r = await q
|
|
947
709
|
return this.validateEntities(r, undefined, ['isDeleted'])
|
|
@@ -951,76 +713,52 @@ export class StorageKnex
|
|
|
951
713
|
const r = await q
|
|
952
714
|
return this.validateEntities(r)
|
|
953
715
|
}
|
|
954
|
-
override async findMonitorEvents(
|
|
955
|
-
args: sdk.FindMonitorEventsArgs
|
|
956
|
-
): Promise<TableMonitorEvent[]> {
|
|
716
|
+
override async findMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<TableMonitorEvent[]> {
|
|
957
717
|
const q = this.findMonitorEventsQuery(args)
|
|
958
718
|
const r = await q
|
|
959
719
|
return this.validateEntities(r, ['when'], undefined)
|
|
960
720
|
}
|
|
961
721
|
|
|
962
|
-
async getCount<T extends object>(
|
|
963
|
-
q: Knex.QueryBuilder<T, T[]>
|
|
964
|
-
): Promise<number> {
|
|
722
|
+
async getCount<T extends object>(q: Knex.QueryBuilder<T, T[]>): Promise<number> {
|
|
965
723
|
q.count()
|
|
966
724
|
const r = await q
|
|
967
725
|
return r[0]['count(*)']
|
|
968
726
|
}
|
|
969
727
|
|
|
970
|
-
override async countCertificateFields(
|
|
971
|
-
args: sdk.FindCertificateFieldsArgs
|
|
972
|
-
): Promise<number> {
|
|
728
|
+
override async countCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<number> {
|
|
973
729
|
return await this.getCount(this.findCertificateFieldsQuery(args))
|
|
974
730
|
}
|
|
975
|
-
override async countCertificates(
|
|
976
|
-
args: sdk.FindCertificatesArgs
|
|
977
|
-
): Promise<number> {
|
|
731
|
+
override async countCertificates(args: sdk.FindCertificatesArgs): Promise<number> {
|
|
978
732
|
return await this.getCount(this.findCertificatesQuery(args))
|
|
979
733
|
}
|
|
980
|
-
override async countCommissions(
|
|
981
|
-
args: sdk.FindCommissionsArgs
|
|
982
|
-
): Promise<number> {
|
|
734
|
+
override async countCommissions(args: sdk.FindCommissionsArgs): Promise<number> {
|
|
983
735
|
return await this.getCount(this.findCommissionsQuery(args))
|
|
984
736
|
}
|
|
985
|
-
override async countOutputBaskets(
|
|
986
|
-
args: sdk.FindOutputBasketsArgs
|
|
987
|
-
): Promise<number> {
|
|
737
|
+
override async countOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<number> {
|
|
988
738
|
return await this.getCount(this.findOutputBasketsQuery(args))
|
|
989
739
|
}
|
|
990
740
|
override async countOutputs(args: sdk.FindOutputsArgs): Promise<number> {
|
|
991
741
|
return await this.getCount(this.findOutputsQuery(args, true))
|
|
992
742
|
}
|
|
993
|
-
override async countOutputTagMaps(
|
|
994
|
-
args: sdk.FindOutputTagMapsArgs
|
|
995
|
-
): Promise<number> {
|
|
743
|
+
override async countOutputTagMaps(args: sdk.FindOutputTagMapsArgs): Promise<number> {
|
|
996
744
|
return await this.getCount(this.findOutputTagMapsQuery(args))
|
|
997
745
|
}
|
|
998
|
-
override async countOutputTags(
|
|
999
|
-
args: sdk.FindOutputTagsArgs
|
|
1000
|
-
): Promise<number> {
|
|
746
|
+
override async countOutputTags(args: sdk.FindOutputTagsArgs): Promise<number> {
|
|
1001
747
|
return await this.getCount(this.findOutputTagsQuery(args))
|
|
1002
748
|
}
|
|
1003
|
-
override async countProvenTxReqs(
|
|
1004
|
-
args: sdk.FindProvenTxReqsArgs
|
|
1005
|
-
): Promise<number> {
|
|
749
|
+
override async countProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<number> {
|
|
1006
750
|
return await this.getCount(this.findProvenTxReqsQuery(args))
|
|
1007
751
|
}
|
|
1008
752
|
override async countProvenTxs(args: sdk.FindProvenTxsArgs): Promise<number> {
|
|
1009
753
|
return await this.getCount(this.findProvenTxsQuery(args))
|
|
1010
754
|
}
|
|
1011
|
-
override async countSyncStates(
|
|
1012
|
-
args: sdk.FindSyncStatesArgs
|
|
1013
|
-
): Promise<number> {
|
|
755
|
+
override async countSyncStates(args: sdk.FindSyncStatesArgs): Promise<number> {
|
|
1014
756
|
return await this.getCount(this.findSyncStatesQuery(args))
|
|
1015
757
|
}
|
|
1016
|
-
override async countTransactions(
|
|
1017
|
-
args: sdk.FindTransactionsArgs
|
|
1018
|
-
): Promise<number> {
|
|
758
|
+
override async countTransactions(args: sdk.FindTransactionsArgs): Promise<number> {
|
|
1019
759
|
return await this.getCount(this.findTransactionsQuery(args, true))
|
|
1020
760
|
}
|
|
1021
|
-
override async countTxLabelMaps(
|
|
1022
|
-
args: sdk.FindTxLabelMapsArgs
|
|
1023
|
-
): Promise<number> {
|
|
761
|
+
override async countTxLabelMaps(args: sdk.FindTxLabelMapsArgs): Promise<number> {
|
|
1024
762
|
return await this.getCount(this.findTxLabelMapsQuery(args))
|
|
1025
763
|
}
|
|
1026
764
|
override async countTxLabels(args: sdk.FindTxLabelsArgs): Promise<number> {
|
|
@@ -1029,9 +767,7 @@ export class StorageKnex
|
|
|
1029
767
|
override async countUsers(args: sdk.FindUsersArgs): Promise<number> {
|
|
1030
768
|
return await this.getCount(this.findUsersQuery(args))
|
|
1031
769
|
}
|
|
1032
|
-
override async countMonitorEvents(
|
|
1033
|
-
args: sdk.FindMonitorEventsArgs
|
|
1034
|
-
): Promise<number> {
|
|
770
|
+
override async countMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<number> {
|
|
1035
771
|
return await this.getCount(this.findMonitorEventsQuery(args))
|
|
1036
772
|
}
|
|
1037
773
|
|
|
@@ -1039,17 +775,9 @@ export class StorageKnex
|
|
|
1039
775
|
await this.knex?.destroy()
|
|
1040
776
|
}
|
|
1041
777
|
|
|
1042
|
-
override async migrate(
|
|
1043
|
-
storageName: string,
|
|
1044
|
-
storageIdentityKey: string
|
|
1045
|
-
): Promise<string> {
|
|
778
|
+
override async migrate(storageName: string, storageIdentityKey: string): Promise<string> {
|
|
1046
779
|
const config = {
|
|
1047
|
-
migrationSource: new KnexMigrations(
|
|
1048
|
-
this.chain,
|
|
1049
|
-
storageName,
|
|
1050
|
-
storageIdentityKey,
|
|
1051
|
-
1024
|
|
1052
|
-
)
|
|
780
|
+
migrationSource: new KnexMigrations(this.chain, storageName, storageIdentityKey, 1024)
|
|
1053
781
|
}
|
|
1054
782
|
await this.knex.migrate.latest(config)
|
|
1055
783
|
const version = await this.knex.migrate.currentVersion(config)
|
|
@@ -1072,10 +800,7 @@ export class StorageKnex
|
|
|
1072
800
|
}
|
|
1073
801
|
}
|
|
1074
802
|
|
|
1075
|
-
override async transaction<T>(
|
|
1076
|
-
scope: (trx: sdk.TrxToken) => Promise<T>,
|
|
1077
|
-
trx?: sdk.TrxToken
|
|
1078
|
-
): Promise<T> {
|
|
803
|
+
override async transaction<T>(scope: (trx: sdk.TrxToken) => Promise<T>, trx?: sdk.TrxToken): Promise<T> {
|
|
1079
804
|
if (trx) return await scope(trx)
|
|
1080
805
|
|
|
1081
806
|
return await this.knex.transaction<T>(async knextrx => {
|
|
@@ -1095,29 +820,18 @@ export class StorageKnex
|
|
|
1095
820
|
return db
|
|
1096
821
|
}
|
|
1097
822
|
|
|
1098
|
-
async validateRawTransaction(
|
|
1099
|
-
t: TableTransaction,
|
|
1100
|
-
trx?: sdk.TrxToken
|
|
1101
|
-
): Promise<void> {
|
|
823
|
+
async validateRawTransaction(t: TableTransaction, trx?: sdk.TrxToken): Promise<void> {
|
|
1102
824
|
// if there is no txid or there is a rawTransaction return what we have.
|
|
1103
825
|
if (t.rawTx || !t.txid) return
|
|
1104
826
|
|
|
1105
827
|
// rawTransaction is missing, see if we moved it ...
|
|
1106
828
|
|
|
1107
|
-
const rawTx = await this.getRawTxOfKnownValidTransaction(
|
|
1108
|
-
t.txid,
|
|
1109
|
-
undefined,
|
|
1110
|
-
undefined,
|
|
1111
|
-
trx
|
|
1112
|
-
)
|
|
829
|
+
const rawTx = await this.getRawTxOfKnownValidTransaction(t.txid, undefined, undefined, trx)
|
|
1113
830
|
if (!rawTx) return
|
|
1114
831
|
t.rawTx = rawTx
|
|
1115
832
|
}
|
|
1116
833
|
|
|
1117
|
-
async validateOutputScript(
|
|
1118
|
-
o: TableOutput,
|
|
1119
|
-
trx?: sdk.TrxToken
|
|
1120
|
-
): Promise<void> {
|
|
834
|
+
async validateOutputScript(o: TableOutput, trx?: sdk.TrxToken): Promise<void> {
|
|
1121
835
|
// without offset and length values return what we have (make no changes)
|
|
1122
836
|
if (!o.scriptLength || !o.scriptOffset || !o.txid) return
|
|
1123
837
|
// if there is an outputScript and its length is the expected length return what we have.
|
|
@@ -1125,12 +839,7 @@ export class StorageKnex
|
|
|
1125
839
|
|
|
1126
840
|
// outputScript is missing or has incorrect length...
|
|
1127
841
|
|
|
1128
|
-
const script = await this.getRawTxOfKnownValidTransaction(
|
|
1129
|
-
o.txid,
|
|
1130
|
-
o.scriptOffset,
|
|
1131
|
-
o.scriptLength,
|
|
1132
|
-
trx
|
|
1133
|
-
)
|
|
842
|
+
const script = await this.getRawTxOfKnownValidTransaction(o.txid, o.scriptOffset, o.scriptLength, trx)
|
|
1134
843
|
if (!script) return
|
|
1135
844
|
o.lockingScript = script
|
|
1136
845
|
}
|
|
@@ -1171,10 +880,7 @@ export class StorageKnex
|
|
|
1171
880
|
dateFields?: string[],
|
|
1172
881
|
booleanFields?: string[]
|
|
1173
882
|
): Partial<T> {
|
|
1174
|
-
if (!this.dbtype)
|
|
1175
|
-
throw new sdk.WERR_INTERNAL(
|
|
1176
|
-
'must call verifyReadyForDatabaseAccess first'
|
|
1177
|
-
)
|
|
883
|
+
if (!this.dbtype) throw new sdk.WERR_INTERNAL('must call verifyReadyForDatabaseAccess first')
|
|
1178
884
|
const v: any = update
|
|
1179
885
|
if (v.created_at) v.created_at = this.validateEntityDate(v.created_at)
|
|
1180
886
|
if (v.updated_at) v.updated_at = this.validateEntityDate(v.updated_at)
|
|
@@ -1193,10 +899,7 @@ export class StorageKnex
|
|
|
1193
899
|
}
|
|
1194
900
|
for (const key of Object.keys(v)) {
|
|
1195
901
|
const val = v[key]
|
|
1196
|
-
if (
|
|
1197
|
-
Array.isArray(val) &&
|
|
1198
|
-
(val.length === 0 || typeof val[0] === 'number')
|
|
1199
|
-
) {
|
|
902
|
+
if (Array.isArray(val) && (val.length === 0 || typeof val[0] === 'number')) {
|
|
1200
903
|
v[key] = Buffer.from(val)
|
|
1201
904
|
} else if (val === undefined) {
|
|
1202
905
|
v[key] = null
|
|
@@ -1234,10 +937,7 @@ export class StorageKnex
|
|
|
1234
937
|
}
|
|
1235
938
|
for (const key of Object.keys(v)) {
|
|
1236
939
|
const val = v[key]
|
|
1237
|
-
if (
|
|
1238
|
-
Array.isArray(val) &&
|
|
1239
|
-
(val.length === 0 || typeof val[0] === 'number')
|
|
1240
|
-
) {
|
|
940
|
+
if (Array.isArray(val) && (val.length === 0 || typeof val[0] === 'number')) {
|
|
1241
941
|
v[key] = Buffer.from(val)
|
|
1242
942
|
} else if (val === undefined) {
|
|
1243
943
|
v[key] = null
|
|
@@ -1247,10 +947,7 @@ export class StorageKnex
|
|
|
1247
947
|
return v
|
|
1248
948
|
}
|
|
1249
949
|
|
|
1250
|
-
override async getLabelsForTransactionId(
|
|
1251
|
-
transactionId?: number,
|
|
1252
|
-
trx?: sdk.TrxToken
|
|
1253
|
-
): Promise<TableTxLabel[]> {
|
|
950
|
+
override async getLabelsForTransactionId(transactionId?: number, trx?: sdk.TrxToken): Promise<TableTxLabel[]> {
|
|
1254
951
|
if (transactionId === undefined) return []
|
|
1255
952
|
const labels = await this.toDb(trx)<TableTxLabel>('tx_labels')
|
|
1256
953
|
.join('tx_labels_map', 'tx_labels_map.txLabelId', 'tx_labels.txLabelId')
|
|
@@ -1267,41 +964,27 @@ export class StorageKnex
|
|
|
1267
964
|
trx?: sdk.TrxToken
|
|
1268
965
|
): Promise<TableOutputX> {
|
|
1269
966
|
const ox = o as TableOutputX
|
|
1270
|
-
if (includeBasket && ox.basketId)
|
|
1271
|
-
ox.basket = await this.findOutputBasketById(o.basketId!, trx)
|
|
967
|
+
if (includeBasket && ox.basketId) ox.basket = await this.findOutputBasketById(o.basketId!, trx)
|
|
1272
968
|
if (includeTags) {
|
|
1273
969
|
ox.tags = await this.getTagsForOutputId(o.outputId)
|
|
1274
970
|
}
|
|
1275
971
|
return o
|
|
1276
972
|
}
|
|
1277
973
|
|
|
1278
|
-
override async getTagsForOutputId(
|
|
1279
|
-
outputId: number,
|
|
1280
|
-
trx?: sdk.TrxToken
|
|
1281
|
-
): Promise<TableOutputTag[]> {
|
|
974
|
+
override async getTagsForOutputId(outputId: number, trx?: sdk.TrxToken): Promise<TableOutputTag[]> {
|
|
1282
975
|
const tags = await this.toDb(trx)<TableOutputTag>('output_tags')
|
|
1283
|
-
.join(
|
|
1284
|
-
'output_tags_map',
|
|
1285
|
-
'output_tags_map.outputTagId',
|
|
1286
|
-
'output_tags.outputTagId'
|
|
1287
|
-
)
|
|
976
|
+
.join('output_tags_map', 'output_tags_map.outputTagId', 'output_tags.outputTagId')
|
|
1288
977
|
.where('output_tags_map.outputId', outputId)
|
|
1289
978
|
.whereNot('output_tags_map.isDeleted', true)
|
|
1290
979
|
.whereNot('output_tags.isDeleted', true)
|
|
1291
980
|
return this.validateEntities(tags, undefined, ['isDeleted'])
|
|
1292
981
|
}
|
|
1293
982
|
|
|
1294
|
-
override async purgeData(
|
|
1295
|
-
params: sdk.PurgeParams,
|
|
1296
|
-
trx?: sdk.TrxToken
|
|
1297
|
-
): Promise<sdk.PurgeResults> {
|
|
983
|
+
override async purgeData(params: sdk.PurgeParams, trx?: sdk.TrxToken): Promise<sdk.PurgeResults> {
|
|
1298
984
|
return await purgeData(this, params, trx)
|
|
1299
985
|
}
|
|
1300
986
|
|
|
1301
|
-
override async reviewStatus(args: {
|
|
1302
|
-
agedLimit: Date
|
|
1303
|
-
trx?: sdk.TrxToken
|
|
1304
|
-
}): Promise<{ log: string }> {
|
|
987
|
+
override async reviewStatus(args: { agedLimit: Date; trx?: sdk.TrxToken }): Promise<{ log: string }> {
|
|
1305
988
|
return await reviewStatus(this, args)
|
|
1306
989
|
}
|
|
1307
990
|
|
|
@@ -1310,18 +993,12 @@ export class StorageKnex
|
|
|
1310
993
|
*
|
|
1311
994
|
* Transactionally allocate the output such that
|
|
1312
995
|
*/
|
|
1313
|
-
async countChangeInputs(
|
|
1314
|
-
userId: number,
|
|
1315
|
-
basketId: number,
|
|
1316
|
-
excludeSending: boolean
|
|
1317
|
-
): Promise<number> {
|
|
996
|
+
async countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number> {
|
|
1318
997
|
const status: sdk.TransactionStatus[] = ['completed', 'unproven']
|
|
1319
998
|
if (!excludeSending) status.push('sending')
|
|
1320
999
|
const statusText = status.map(s => `'${s}'`).join(',')
|
|
1321
1000
|
const txStatusCondition = `(SELECT status FROM transactions WHERE outputs.transactionId = transactions.transactionId) in (${statusText})`
|
|
1322
|
-
let q = this.knex<TableOutput>('outputs')
|
|
1323
|
-
.where({ userId, spendable: true, basketId })
|
|
1324
|
-
.whereRaw(txStatusCondition)
|
|
1001
|
+
let q = this.knex<TableOutput>('outputs').where({ userId, spendable: true, basketId }).whereRaw(txStatusCondition)
|
|
1325
1002
|
const count = await this.getCount(q)
|
|
1326
1003
|
return count
|
|
1327
1004
|
}
|
|
@@ -1343,22 +1020,21 @@ export class StorageKnex
|
|
|
1343
1020
|
if (!excludeSending) status.push('sending')
|
|
1344
1021
|
const statusText = status.map(s => `'${s}'`).join(',')
|
|
1345
1022
|
|
|
1346
|
-
const r: TableOutput | undefined = await this.knex.transaction(
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
}
|
|
1023
|
+
const r: TableOutput | undefined = await this.knex.transaction(async trx => {
|
|
1024
|
+
const txStatusCondition = `AND (SELECT status FROM transactions WHERE outputs.transactionId = transactions.transactionId) in (${statusText})`
|
|
1025
|
+
|
|
1026
|
+
let outputId: number | undefined
|
|
1027
|
+
const setOutputId = async (rawQuery: string): Promise<void> => {
|
|
1028
|
+
let oidr = await trx.raw(rawQuery)
|
|
1029
|
+
outputId = undefined
|
|
1030
|
+
if (!oidr['outputId'] && oidr.length > 0) oidr = oidr[0]
|
|
1031
|
+
if (!oidr['outputId'] && oidr.length > 0) oidr = oidr[0]
|
|
1032
|
+
if (oidr['outputId']) outputId = Number(oidr['outputId'])
|
|
1033
|
+
}
|
|
1358
1034
|
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1035
|
+
if (exactSatoshis !== undefined) {
|
|
1036
|
+
// Find outputId of output that with exactSatoshis
|
|
1037
|
+
await setOutputId(`
|
|
1362
1038
|
SELECT outputId
|
|
1363
1039
|
FROM outputs
|
|
1364
1040
|
WHERE userId = ${userId}
|
|
@@ -1368,11 +1044,11 @@ export class StorageKnex
|
|
|
1368
1044
|
AND satoshis = ${exactSatoshis}
|
|
1369
1045
|
LIMIT 1;
|
|
1370
1046
|
`)
|
|
1371
|
-
|
|
1047
|
+
}
|
|
1372
1048
|
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1049
|
+
if (outputId === undefined) {
|
|
1050
|
+
// Find outputId of output that would at least fund targetSatoshis
|
|
1051
|
+
await setOutputId(`
|
|
1376
1052
|
SELECT outputId
|
|
1377
1053
|
FROM outputs
|
|
1378
1054
|
WHERE userId = ${userId}
|
|
@@ -1390,11 +1066,11 @@ export class StorageKnex
|
|
|
1390
1066
|
)
|
|
1391
1067
|
LIMIT 1;
|
|
1392
1068
|
`)
|
|
1393
|
-
|
|
1069
|
+
}
|
|
1394
1070
|
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1071
|
+
if (outputId === undefined) {
|
|
1072
|
+
// Find outputId of output that would add the most fund targetSatoshis
|
|
1073
|
+
await setOutputId(`
|
|
1398
1074
|
SELECT outputId
|
|
1399
1075
|
FROM outputs
|
|
1400
1076
|
WHERE userId = ${userId}
|
|
@@ -1412,23 +1088,22 @@ export class StorageKnex
|
|
|
1412
1088
|
)
|
|
1413
1089
|
LIMIT 1;
|
|
1414
1090
|
`)
|
|
1415
|
-
|
|
1091
|
+
}
|
|
1416
1092
|
|
|
1417
|
-
|
|
1093
|
+
if (outputId === undefined) return undefined
|
|
1418
1094
|
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1095
|
+
await this.updateOutput(
|
|
1096
|
+
outputId,
|
|
1097
|
+
{
|
|
1098
|
+
spendable: false,
|
|
1099
|
+
spentBy: transactionId
|
|
1100
|
+
},
|
|
1101
|
+
trx
|
|
1102
|
+
)
|
|
1427
1103
|
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
)
|
|
1104
|
+
const r = verifyTruthy(await this.findOutputById(outputId, trx))
|
|
1105
|
+
return r
|
|
1106
|
+
})
|
|
1432
1107
|
|
|
1433
1108
|
return r
|
|
1434
1109
|
}
|
|
@@ -1437,11 +1112,7 @@ export class StorageKnex
|
|
|
1437
1112
|
* Helper to force uniform behavior across database engines.
|
|
1438
1113
|
* Use to process all individual records with time stamps retreived from database.
|
|
1439
1114
|
*/
|
|
1440
|
-
validateEntity<T extends sdk.EntityTimeStamp>(
|
|
1441
|
-
entity: T,
|
|
1442
|
-
dateFields?: string[],
|
|
1443
|
-
booleanFields?: string[]
|
|
1444
|
-
): T {
|
|
1115
|
+
validateEntity<T extends sdk.EntityTimeStamp>(entity: T, dateFields?: string[], booleanFields?: string[]): T {
|
|
1445
1116
|
entity.created_at = this.validateDate(entity.created_at)
|
|
1446
1117
|
entity.updated_at = this.validateDate(entity.updated_at)
|
|
1447
1118
|
if (dateFields) {
|
|
@@ -1470,11 +1141,7 @@ export class StorageKnex
|
|
|
1470
1141
|
* Use to process all arrays of records with time stamps retreived from database.
|
|
1471
1142
|
* @returns input `entities` array with contained values validated.
|
|
1472
1143
|
*/
|
|
1473
|
-
validateEntities<T extends sdk.EntityTimeStamp>(
|
|
1474
|
-
entities: T[],
|
|
1475
|
-
dateFields?: string[],
|
|
1476
|
-
booleanFields?: string[]
|
|
1477
|
-
): T[] {
|
|
1144
|
+
validateEntities<T extends sdk.EntityTimeStamp>(entities: T[], dateFields?: string[], booleanFields?: string[]): T[] {
|
|
1478
1145
|
for (let i = 0; i < entities.length; i++) {
|
|
1479
1146
|
entities[i] = this.validateEntity(entities[i], dateFields, booleanFields)
|
|
1480
1147
|
}
|