@bsv/wallet-toolbox 1.3.23 → 1.3.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/client.md +99 -59
- package/docs/storage.md +55 -75
- package/docs/wallet.md +99 -59
- package/mobile/out/src/Wallet.d.ts +1 -1
- package/mobile/out/src/Wallet.d.ts.map +1 -1
- package/mobile/out/src/Wallet.js +16 -6
- package/mobile/out/src/Wallet.js.map +1 -1
- package/mobile/out/src/monitor/Monitor.d.ts.map +1 -1
- package/mobile/out/src/monitor/Monitor.js +6 -4
- package/mobile/out/src/monitor/Monitor.js.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskNewHeader.d.ts +1 -1
- package/mobile/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.d.ts +12 -0
- package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.d.ts.map +1 -0
- package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.js +23 -0
- package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.js.map +1 -0
- package/mobile/out/src/sdk/WalletServices.interfaces.d.ts +2 -0
- package/mobile/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts +19 -1
- package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/mobile/out/src/services/ServiceCollection.d.ts +38 -0
- package/mobile/out/src/services/ServiceCollection.d.ts.map +1 -1
- package/mobile/out/src/services/ServiceCollection.js +85 -0
- package/mobile/out/src/services/ServiceCollection.js.map +1 -1
- package/mobile/out/src/services/Services.d.ts +11 -2
- package/mobile/out/src/services/Services.d.ts.map +1 -1
- package/mobile/out/src/services/Services.js +159 -68
- package/mobile/out/src/services/Services.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.js +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.js.map +1 -1
- package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts +1 -0
- package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/mobile/out/src/services/createDefaultWalletServicesOptions.js +15 -1
- package/mobile/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/mobile/out/src/services/providers/ARC.d.ts +3 -2
- package/mobile/out/src/services/providers/ARC.d.ts.map +1 -1
- package/mobile/out/src/services/providers/ARC.js +5 -4
- package/mobile/out/src/services/providers/ARC.js.map +1 -1
- package/mobile/out/src/signer/methods/internalizeAction.d.ts +2 -2
- package/mobile/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/mobile/out/src/signer/methods/internalizeAction.js +3 -13
- package/mobile/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/mobile/out/src/storage/StorageProvider.d.ts +5 -6
- package/mobile/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/mobile/out/src/storage/StorageProvider.js +75 -101
- package/mobile/out/src/storage/StorageProvider.js.map +1 -1
- package/mobile/out/src/storage/WalletStorageManager.d.ts +2 -2
- package/mobile/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/createAction.js +5 -1
- package/mobile/out/src/storage/methods/createAction.js.map +1 -1
- package/mobile/out/src/storage/methods/generateChange.d.ts +0 -24
- package/mobile/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/generateChange.js +2 -50
- package/mobile/out/src/storage/methods/generateChange.js.map +1 -1
- package/mobile/out/src/storage/methods/getBeefForTransaction.js +3 -2
- package/mobile/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/mobile/out/src/storage/methods/internalizeAction.d.ts +2 -10
- package/mobile/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/internalizeAction.js +17 -1
- package/mobile/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/mobile/out/src/storage/methods/processAction.d.ts +16 -1
- package/mobile/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/processAction.js +4 -1
- package/mobile/out/src/storage/methods/processAction.js.map +1 -1
- package/mobile/out/src/storage/methods/utils.d.ts +25 -0
- package/mobile/out/src/storage/methods/utils.d.ts.map +1 -0
- package/mobile/out/src/storage/methods/utils.js +53 -0
- package/mobile/out/src/storage/methods/utils.js.map +1 -0
- package/mobile/out/src/storage/remoting/StorageClient.d.ts +2 -2
- package/mobile/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/mobile/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/mobile/out/src/storage/remoting/StorageMobile.d.ts +2 -2
- package/mobile/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/mobile/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/mobile/out/src/utility/utilityHelpers.d.ts +1 -1
- package/mobile/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/mobile/out/src/utility/utilityHelpers.js +3 -3
- package/mobile/out/src/utility/utilityHelpers.js.map +1 -1
- package/mobile/package-lock.json +7 -6
- package/mobile/package.json +2 -2
- package/out/src/Wallet.d.ts +1 -1
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +16 -6
- package/out/src/Wallet.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +6 -4
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskServiceCallHistory.d.ts +12 -0
- package/out/src/monitor/tasks/TaskServiceCallHistory.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskServiceCallHistory.js +23 -0
- package/out/src/monitor/tasks/TaskServiceCallHistory.js.map +1 -0
- 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 +19 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.d.ts +38 -0
- package/out/src/services/ServiceCollection.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.js +85 -0
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +11 -2
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +159 -68
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts +2 -0
- package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts.map +1 -0
- package/out/src/services/__tests/ArcGorillaPool.man.test.js +93 -0
- package/out/src/services/__tests/ArcGorillaPool.man.test.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/index.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.js +1 -1
- package/out/src/services/chaintracker/chaintracks/index.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +144 -0
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +463 -0
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts +20 -0
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +31 -0
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -0
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +1 -0
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +15 -1
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/providers/ARC.d.ts +3 -2
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +5 -4
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts +2 -2
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +3 -13
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +50 -2
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +5 -6
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +75 -101
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +2 -2
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/__test/StorageIdb.test.js +1 -0
- package/out/src/storage/__test/StorageIdb.test.js.map +1 -1
- package/out/src/storage/__test/adminStats.man.test.js +2 -0
- package/out/src/storage/__test/adminStats.man.test.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +5 -1
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +0 -24
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +2 -50
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +3 -2
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +2 -10
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +17 -1
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts +16 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +4 -1
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/utils.Buffer.d.ts +21 -0
- package/out/src/storage/methods/utils.Buffer.d.ts.map +1 -0
- package/out/src/storage/methods/utils.Buffer.js +37 -0
- package/out/src/storage/methods/utils.Buffer.js.map +1 -0
- package/out/src/storage/methods/utils.d.ts +25 -0
- package/out/src/storage/methods/utils.d.ts.map +1 -0
- package/out/src/storage/methods/utils.js +53 -0
- package/out/src/storage/methods/utils.js.map +1 -0
- package/out/src/storage/remoting/StorageClient.d.ts +2 -2
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts +2 -2
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +12 -0
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/utility/Format.d.ts +14 -0
- package/out/src/utility/Format.d.ts.map +1 -0
- package/out/src/utility/Format.js +167 -0
- package/out/src/utility/Format.js.map +1 -0
- package/out/src/utility/utilityHelpers.d.ts +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +3 -3
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/test/Wallet/local/localWallet.man.test.js +12 -16
- package/out/test/Wallet/local/localWallet.man.test.js.map +1 -1
- package/out/test/Wallet/support/operations.man.test.js +105 -135
- package/out/test/Wallet/support/operations.man.test.js.map +1 -1
- package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.d.ts +2 -0
- package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.d.ts.map +1 -0
- package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.js +385 -0
- package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.js.map +1 -0
- package/out/test/storage/KnexMigrations.test.js +1 -1
- package/out/test/storage/KnexMigrations.test.js.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.d.ts +5 -0
- package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.js +20 -0
- package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
- package/out/tsconfig.all.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/Wallet.ts +25 -10
- package/src/monitor/Monitor.ts +6 -4
- package/src/monitor/tasks/TaskNewHeader.ts +1 -1
- package/src/monitor/tasks/TaskServiceCallHistory.ts +26 -0
- package/src/sdk/WalletServices.interfaces.ts +2 -0
- package/src/sdk/WalletStorage.interfaces.ts +21 -1
- package/src/services/ServiceCollection.ts +121 -0
- package/src/services/Services.ts +157 -71
- package/src/services/__tests/ArcGorillaPool.man.test.ts +108 -0
- package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +1 -1
- package/src/services/chaintracker/chaintracks/index.ts +1 -1
- package/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.ts +490 -0
- package/src/services/chaintracker/chaintracks/util/dirtyHashes.ts +29 -0
- package/src/services/createDefaultWalletServicesOptions.ts +16 -1
- package/src/services/providers/ARC.ts +8 -6
- package/src/signer/methods/internalizeAction.ts +6 -16
- package/src/storage/StorageKnex.ts +25 -1
- package/src/storage/StorageProvider.ts +44 -32
- package/src/storage/WalletStorageManager.ts +1 -1
- package/src/storage/__test/StorageIdb.test.ts +1 -0
- package/src/storage/__test/adminStats.man.test.ts +2 -0
- package/src/storage/methods/createAction.ts +5 -3
- package/src/storage/methods/generateChange.ts +1 -54
- package/src/storage/methods/getBeefForTransaction.ts +10 -2
- package/src/storage/methods/internalizeAction.ts +23 -14
- package/src/storage/methods/processAction.ts +5 -2
- package/src/storage/methods/utils.Buffer.ts +33 -0
- package/src/storage/methods/utils.ts +56 -0
- package/src/storage/remoting/StorageClient.ts +2 -2
- package/src/storage/remoting/StorageMobile.ts +2 -2
- package/src/storage/schema/KnexMigrations.ts +13 -0
- package/src/utility/Format.ts +133 -0
- package/src/utility/utilityHelpers.ts +2 -2
- package/test/Wallet/local/localWallet.man.test.ts +13 -16
- package/test/Wallet/support/operations.man.test.ts +118 -123
- package/test/Wallet/support/reqErrorReview.2025.05.06.man.test.ts +359 -0
- package/test/storage/KnexMigrations.test.ts +1 -1
- package/test/utils/TestUtilsWalletStorage.ts +23 -0
- package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +0 -1
- package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +0 -1
- /package/mobile/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.d.ts → Api/BlockHeaderApi.d.ts} +0 -0
- /package/mobile/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.js → Api/BlockHeaderApi.js} +0 -0
- /package/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.d.ts → Api/BlockHeaderApi.d.ts} +0 -0
- /package/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.js → Api/BlockHeaderApi.js} +0 -0
- /package/src/services/chaintracker/chaintracks/{BlockHeaderApi.ts → Api/BlockHeaderApi.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bsv/wallet-toolbox",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.25",
|
|
4
4
|
"description": "BRC100 conforming wallet, wallet storage and wallet signer components",
|
|
5
5
|
"main": "./out/src/index.js",
|
|
6
6
|
"types": "./out/src/index.d.ts",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@bsv/auth-express-middleware": "^1.1.2",
|
|
34
34
|
"@bsv/payment-express-middleware": "^1.0.6",
|
|
35
|
-
"@bsv/sdk": "^1.
|
|
35
|
+
"@bsv/sdk": "^1.5.1",
|
|
36
36
|
"express": "^4.21.2",
|
|
37
37
|
"idb": "^8.0.2",
|
|
38
38
|
"knex": "^3.1.0",
|
package/src/Wallet.ts
CHANGED
|
@@ -721,24 +721,30 @@ export class Wallet implements WalletInterface, ProtoWallet {
|
|
|
721
721
|
return r
|
|
722
722
|
}
|
|
723
723
|
|
|
724
|
-
async
|
|
725
|
-
args:
|
|
724
|
+
async internalizeAction(
|
|
725
|
+
args: InternalizeActionArgs,
|
|
726
726
|
originator?: OriginatorDomainNameStringUnder250Bytes
|
|
727
|
-
): Promise<
|
|
727
|
+
): Promise<InternalizeActionResult> {
|
|
728
728
|
sdk.validateOriginator(originator)
|
|
729
|
+
const { auth, vargs } = this.validateAuthAndArgs(args, sdk.validateInternalizeActionArgs)
|
|
730
|
+
|
|
731
|
+
if (vargs.labels.indexOf(specOpThrowReviewActions) >= 0) throwDummyReviewActions()
|
|
732
|
+
|
|
733
|
+
const r = await internalizeAction(this, auth, args)
|
|
734
|
+
|
|
735
|
+
throwIfUnsuccessfulInternalizeAction(r)
|
|
729
736
|
|
|
730
|
-
const { auth } = this.validateAuthAndArgs(args, sdk.validateAbortActionArgs)
|
|
731
|
-
const r = await this.storage.abortAction(args)
|
|
732
737
|
return r
|
|
733
738
|
}
|
|
734
739
|
|
|
735
|
-
async
|
|
736
|
-
args:
|
|
740
|
+
async abortAction(
|
|
741
|
+
args: AbortActionArgs,
|
|
737
742
|
originator?: OriginatorDomainNameStringUnder250Bytes
|
|
738
|
-
): Promise<
|
|
743
|
+
): Promise<AbortActionResult> {
|
|
739
744
|
sdk.validateOriginator(originator)
|
|
740
|
-
|
|
741
|
-
const
|
|
745
|
+
|
|
746
|
+
const { auth } = this.validateAuthAndArgs(args, sdk.validateAbortActionArgs)
|
|
747
|
+
const r = await this.storage.abortAction(args)
|
|
742
748
|
return r
|
|
743
749
|
}
|
|
744
750
|
|
|
@@ -1000,6 +1006,15 @@ function throwIfAnyUnsuccessfulSignActions(r: SignActionResultX) {
|
|
|
1000
1006
|
throw new sdk.WERR_REVIEW_ACTIONS(ndrs, swrs, r.txid, r.tx)
|
|
1001
1007
|
}
|
|
1002
1008
|
|
|
1009
|
+
function throwIfUnsuccessfulInternalizeAction(r: sdk.StorageInternalizeActionResult) {
|
|
1010
|
+
const ndrs = r.notDelayedResults
|
|
1011
|
+
const swrs = r.sendWithResults
|
|
1012
|
+
|
|
1013
|
+
if (!ndrs || !swrs || swrs.every(r => r.status === 'unproven')) return
|
|
1014
|
+
|
|
1015
|
+
throw new sdk.WERR_REVIEW_ACTIONS(ndrs, swrs, r.txid)
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1003
1018
|
/**
|
|
1004
1019
|
* Throws a WERR_REVIEW_ACTIONS with a full set of properties to test data formats and propagation.
|
|
1005
1020
|
*/
|
package/src/monitor/Monitor.ts
CHANGED
|
@@ -13,6 +13,7 @@ import { TaskFailAbandoned } from './tasks/TaskFailAbandoned'
|
|
|
13
13
|
import { TaskCheckForProofs } from './tasks/TaskCheckForProofs'
|
|
14
14
|
import { TaskClock } from './tasks/TaskClock'
|
|
15
15
|
import { TaskNewHeader } from './tasks/TaskNewHeader'
|
|
16
|
+
import { TaskServiceCallHistory } from './tasks/TaskServiceCallHistory'
|
|
16
17
|
|
|
17
18
|
import { TaskSendWaiting } from './tasks/TaskSendWaiting'
|
|
18
19
|
import { TaskCheckNoSends } from './tasks/TaskCheckNoSends'
|
|
@@ -110,6 +111,7 @@ export class Monitor {
|
|
|
110
111
|
addAllTasksToOther(): void {
|
|
111
112
|
this._otherTasks.push(new TaskClock(this))
|
|
112
113
|
this._otherTasks.push(new TaskNewHeader(this))
|
|
114
|
+
this._otherTasks.push(new TaskServiceCallHistory(this))
|
|
113
115
|
this._otherTasks.push(new TaskPurge(this, this.defaultPurgeParams))
|
|
114
116
|
this._otherTasks.push(new TaskReviewStatus(this))
|
|
115
117
|
this._otherTasks.push(new TaskSendWaiting(this))
|
|
@@ -128,13 +130,13 @@ export class Monitor {
|
|
|
128
130
|
addDefaultTasks(): void {
|
|
129
131
|
this._tasks.push(new TaskClock(this))
|
|
130
132
|
this._tasks.push(new TaskNewHeader(this))
|
|
133
|
+
this._tasks.push(new TaskServiceCallHistory(this))
|
|
131
134
|
this._tasks.push(new TaskSendWaiting(this, 8 * this.oneSecond, 7 * this.oneSecond)) // Check every 8 seconds but must be 7 seconds old
|
|
132
135
|
this._tasks.push(new TaskCheckForProofs(this, 2 * this.oneHour)) // Every two hours if no block found
|
|
133
136
|
this._tasks.push(new TaskCheckNoSends(this))
|
|
134
137
|
this._tasks.push(new TaskFailAbandoned(this, 8 * this.oneMinute))
|
|
135
138
|
this._tasks.push(new TaskUnFail(this))
|
|
136
|
-
|
|
137
|
-
//this._tasks.push(new TaskPurge(this, this.defaultPurgeParams, 6 * this.oneHour))
|
|
139
|
+
this._tasks.push(new TaskPurge(this, this.defaultPurgeParams, 6 * this.oneHour))
|
|
138
140
|
this._tasks.push(new TaskReviewStatus(this))
|
|
139
141
|
}
|
|
140
142
|
|
|
@@ -145,13 +147,13 @@ export class Monitor {
|
|
|
145
147
|
addMultiUserTasks(): void {
|
|
146
148
|
this._tasks.push(new TaskClock(this))
|
|
147
149
|
this._tasks.push(new TaskNewHeader(this))
|
|
150
|
+
this._tasks.push(new TaskServiceCallHistory(this))
|
|
148
151
|
this._tasks.push(new TaskSendWaiting(this, 8 * this.oneSecond, 7 * this.oneSecond)) // Check every 8 seconds but must be 7 seconds old
|
|
149
152
|
this._tasks.push(new TaskCheckForProofs(this, 2 * this.oneHour)) // Every two hours if no block found
|
|
150
153
|
this._tasks.push(new TaskCheckNoSends(this))
|
|
151
154
|
this._tasks.push(new TaskFailAbandoned(this, 8 * this.oneMinute))
|
|
152
155
|
this._tasks.push(new TaskUnFail(this))
|
|
153
|
-
|
|
154
|
-
//this._tasks.push(new TaskPurge(this, this.defaultPurgeParams, 6 * this.oneHour))
|
|
156
|
+
this._tasks.push(new TaskPurge(this, this.defaultPurgeParams, 6 * this.oneHour))
|
|
155
157
|
this._tasks.push(new TaskReviewStatus(this))
|
|
156
158
|
}
|
|
157
159
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BlockHeader } from '../../services/chaintracker/chaintracks/BlockHeaderApi'
|
|
1
|
+
import { BlockHeader } from '../../services/chaintracker/chaintracks/Api/BlockHeaderApi'
|
|
2
2
|
import { Monitor } from '../Monitor'
|
|
3
3
|
import { WalletMonitorTask } from './WalletMonitorTask'
|
|
4
4
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TableMonitorEvent } from '../../storage/index.client'
|
|
2
|
+
import { Monitor } from '../Monitor'
|
|
3
|
+
import { WalletMonitorTask } from './WalletMonitorTask'
|
|
4
|
+
|
|
5
|
+
export class TaskServiceCallHistory extends WalletMonitorTask {
|
|
6
|
+
static taskName = 'ServiceCallHistory'
|
|
7
|
+
|
|
8
|
+
constructor(
|
|
9
|
+
monitor: Monitor,
|
|
10
|
+
public triggerMsecs = monitor.oneMinute * 12
|
|
11
|
+
) {
|
|
12
|
+
super(monitor, TaskServiceCallHistory.taskName)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
trigger(nowMsecsSinceEpoch: number): { run: boolean } {
|
|
16
|
+
return {
|
|
17
|
+
run: nowMsecsSinceEpoch > this.lastRunMsecsSinceEpoch + this.triggerMsecs
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async runTask(): Promise<string> {
|
|
22
|
+
const r = await this.monitor.services.getServicesCallHistory(true)
|
|
23
|
+
const log = JSON.stringify(r)
|
|
24
|
+
return log
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -200,6 +200,8 @@ export interface WalletServicesOptions {
|
|
|
200
200
|
chaintracks?: ChaintracksServiceClient
|
|
201
201
|
arcUrl: string
|
|
202
202
|
arcConfig: ArcConfig
|
|
203
|
+
arcGorillaPoolUrl?: string
|
|
204
|
+
arcGorillaPoolConfig?: ArcConfig
|
|
203
205
|
}
|
|
204
206
|
|
|
205
207
|
export interface GetStatusForTxidsResult {
|
|
@@ -155,7 +155,7 @@ export interface WalletStorageWriter extends WalletStorageReader {
|
|
|
155
155
|
abortAction(auth: AuthId, args: AbortActionArgs): Promise<AbortActionResult>
|
|
156
156
|
createAction(auth: AuthId, args: ValidCreateActionArgs): Promise<StorageCreateActionResult>
|
|
157
157
|
processAction(auth: AuthId, args: StorageProcessActionArgs): Promise<StorageProcessActionResults>
|
|
158
|
-
internalizeAction(auth: AuthId, args: InternalizeActionArgs): Promise<
|
|
158
|
+
internalizeAction(auth: AuthId, args: InternalizeActionArgs): Promise<StorageInternalizeActionResult>
|
|
159
159
|
|
|
160
160
|
insertCertificateAuth(auth: AuthId, certificate: TableCertificateX): Promise<number>
|
|
161
161
|
|
|
@@ -189,6 +189,11 @@ export interface FindSincePagedArgs {
|
|
|
189
189
|
since?: Date
|
|
190
190
|
paged?: Paged
|
|
191
191
|
trx?: TrxToken
|
|
192
|
+
/**
|
|
193
|
+
* Support for orderDescending is implemented in StorageKnex for basic table find methods,
|
|
194
|
+
* excluding certificate_fields table, map tables, and settings (singleton row table).
|
|
195
|
+
*/
|
|
196
|
+
orderDescending?: boolean
|
|
192
197
|
}
|
|
193
198
|
|
|
194
199
|
export interface FindForUserSincePagedArgs extends FindSincePagedArgs {
|
|
@@ -267,6 +272,20 @@ export interface StorageProcessActionArgs {
|
|
|
267
272
|
log?: string
|
|
268
273
|
}
|
|
269
274
|
|
|
275
|
+
export interface StorageInternalizeActionResult extends InternalizeActionResult {
|
|
276
|
+
/** true if internalizing outputs on an existing storage transaction */
|
|
277
|
+
isMerge: boolean
|
|
278
|
+
/** txid of transaction being internalized */
|
|
279
|
+
txid: string
|
|
280
|
+
/** net change in change balance for user due to this internalization */
|
|
281
|
+
satoshis: number
|
|
282
|
+
|
|
283
|
+
/** valid iff not isMerge and txid was unknown to storage and non-delayed broadcast was not success */
|
|
284
|
+
sendWithResults?: SendWithResult[]
|
|
285
|
+
/** valid iff not isMerge and txid was unknown to storage and non-delayed broadcast was not success */
|
|
286
|
+
notDelayedResults?: ReviewActionResult[]
|
|
287
|
+
}
|
|
288
|
+
|
|
270
289
|
/**
|
|
271
290
|
* Indicates status of a new Action following a `createAction` or `signAction` in immediate mode:
|
|
272
291
|
* When `acceptDelayedBroadcast` is falses.
|
|
@@ -333,6 +352,7 @@ export interface PurgeResults {
|
|
|
333
352
|
export interface StorageProvenOrReq {
|
|
334
353
|
proven?: TableProvenTx
|
|
335
354
|
req?: TableProvenTxReq
|
|
355
|
+
isNew?: boolean
|
|
336
356
|
}
|
|
337
357
|
|
|
338
358
|
/**
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
import { WalletError } from "../sdk/WalletError";
|
|
2
|
+
|
|
1
3
|
export class ServiceCollection<T> {
|
|
4
|
+
since: Date
|
|
2
5
|
services: { name: string; service: T }[]
|
|
3
6
|
_index: number
|
|
4
7
|
|
|
8
|
+
_callHistory: Record<string, ServiceCallHistory> = {}
|
|
9
|
+
|
|
5
10
|
constructor(services?: { name: string; service: T }[]) {
|
|
6
11
|
this.services = services || []
|
|
7
12
|
this._index = 0
|
|
13
|
+
this.since = new Date()
|
|
8
14
|
}
|
|
9
15
|
|
|
10
16
|
add(s: { name: string; service: T }): ServiceCollection<T> {
|
|
@@ -24,6 +30,23 @@ export class ServiceCollection<T> {
|
|
|
24
30
|
return this.services[this._index].service
|
|
25
31
|
}
|
|
26
32
|
|
|
33
|
+
get serviceToCall(): ServiceToCall<T> {
|
|
34
|
+
const i = this._index
|
|
35
|
+
const name = this.services[i].name
|
|
36
|
+
const service = this.services[i].service
|
|
37
|
+
const call = { name, when: new Date(), durationMsecs: 0, success: false, result: undefined, error: undefined }
|
|
38
|
+
return { name, service, call }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
get allServicesToCall(): ServiceToCall<T>[] {
|
|
42
|
+
const all: ServiceToCall<T>[] = []
|
|
43
|
+
for (let i = 0; i < this.services.length; i++) {
|
|
44
|
+
all.push(this.serviceToCall)
|
|
45
|
+
this.next()
|
|
46
|
+
}
|
|
47
|
+
return all
|
|
48
|
+
}
|
|
49
|
+
|
|
27
50
|
get allServices() {
|
|
28
51
|
return this.services.map(x => x.service)
|
|
29
52
|
}
|
|
@@ -47,4 +70,102 @@ export class ServiceCollection<T> {
|
|
|
47
70
|
clone(): ServiceCollection<T> {
|
|
48
71
|
return new ServiceCollection([...this.services])
|
|
49
72
|
}
|
|
73
|
+
|
|
74
|
+
_addServiceCall(name: string, call: ServiceCall): ServiceCallHistory {
|
|
75
|
+
let h = this._callHistory[name]
|
|
76
|
+
if (!h) {
|
|
77
|
+
h = { name, calls: [], count: 0, countError: 0, countFailure: 0, countSuccess: 0, since: this.since }
|
|
78
|
+
this._callHistory[name] = h
|
|
79
|
+
}
|
|
80
|
+
h.calls.push(call)
|
|
81
|
+
h.count++
|
|
82
|
+
h.calls = h.calls.slice(-32)
|
|
83
|
+
return h
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
addServiceCallSuccess(stc: ServiceToCall<T>, result?: string): void {
|
|
87
|
+
const call = stc.call
|
|
88
|
+
call.success = true
|
|
89
|
+
call.result = result
|
|
90
|
+
call.error = undefined
|
|
91
|
+
call.durationMsecs = new Date().getTime() - call.when.getTime()
|
|
92
|
+
this._addServiceCall(this.name, call).countSuccess++
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
addServiceCallFailure(stc: ServiceToCall<T>, result?: string): void {
|
|
96
|
+
const call = stc.call
|
|
97
|
+
call.success = false
|
|
98
|
+
call.result = result
|
|
99
|
+
call.error = undefined
|
|
100
|
+
call.durationMsecs = new Date().getTime() - call.when.getTime()
|
|
101
|
+
this._addServiceCall(this.name, call).countFailure++
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
addServiceCallError(stc: ServiceToCall<T>, error: WalletError): void {
|
|
105
|
+
const call = stc.call
|
|
106
|
+
call.success = false
|
|
107
|
+
call.result = undefined
|
|
108
|
+
call.error = error
|
|
109
|
+
call.durationMsecs = new Date().getTime() - call.when.getTime()
|
|
110
|
+
this._addServiceCall(this.name, call).countError++
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @returns A copy of current service call history
|
|
115
|
+
*/
|
|
116
|
+
getServiceCallHistory(reset?: boolean): Record<string, ServiceCallHistory> {
|
|
117
|
+
const histories: Record<string, ServiceCallHistory> = {}
|
|
118
|
+
for (const name of Object.keys(this._callHistory)) {
|
|
119
|
+
const h = this._callHistory[name]
|
|
120
|
+
histories[name] = {
|
|
121
|
+
name: h.name,
|
|
122
|
+
count: h.count,
|
|
123
|
+
countError: h.countError,
|
|
124
|
+
countFailure: h.countFailure,
|
|
125
|
+
countSuccess: h.countSuccess,
|
|
126
|
+
since: h.since,
|
|
127
|
+
calls: h.calls.map(c => ({
|
|
128
|
+
name: c.name,
|
|
129
|
+
when: c.when,
|
|
130
|
+
durationMsecs: c.durationMsecs,
|
|
131
|
+
success: c.success,
|
|
132
|
+
result: c.result,
|
|
133
|
+
error: c.error ? { message: c.error.message, code: c.error.code } : undefined
|
|
134
|
+
}))
|
|
135
|
+
}
|
|
136
|
+
if (reset) {
|
|
137
|
+
h.count = 0
|
|
138
|
+
h.countError = 0
|
|
139
|
+
h.countFailure = 0
|
|
140
|
+
h.countSuccess = 0
|
|
141
|
+
h.since = new Date()
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return histories
|
|
145
|
+
}
|
|
50
146
|
}
|
|
147
|
+
|
|
148
|
+
export interface ServiceCall {
|
|
149
|
+
name: string
|
|
150
|
+
when: Date
|
|
151
|
+
durationMsecs: number
|
|
152
|
+
success: boolean
|
|
153
|
+
result?: string
|
|
154
|
+
error?: { message: string, code: string }
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface ServiceCallHistory {
|
|
158
|
+
name: string
|
|
159
|
+
calls: ServiceCall[]
|
|
160
|
+
count: number
|
|
161
|
+
countSuccess: number
|
|
162
|
+
countFailure: number
|
|
163
|
+
countError: number
|
|
164
|
+
since: Date
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export interface ServiceToCall<T> {
|
|
168
|
+
name: string
|
|
169
|
+
service: T
|
|
170
|
+
call: ServiceCall
|
|
171
|
+
}
|