@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.
Files changed (262) hide show
  1. package/docs/client.md +99 -59
  2. package/docs/storage.md +55 -75
  3. package/docs/wallet.md +99 -59
  4. package/mobile/out/src/Wallet.d.ts +1 -1
  5. package/mobile/out/src/Wallet.d.ts.map +1 -1
  6. package/mobile/out/src/Wallet.js +16 -6
  7. package/mobile/out/src/Wallet.js.map +1 -1
  8. package/mobile/out/src/monitor/Monitor.d.ts.map +1 -1
  9. package/mobile/out/src/monitor/Monitor.js +6 -4
  10. package/mobile/out/src/monitor/Monitor.js.map +1 -1
  11. package/mobile/out/src/monitor/tasks/TaskNewHeader.d.ts +1 -1
  12. package/mobile/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  13. package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.d.ts +12 -0
  14. package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.d.ts.map +1 -0
  15. package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.js +23 -0
  16. package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.js.map +1 -0
  17. package/mobile/out/src/sdk/WalletServices.interfaces.d.ts +2 -0
  18. package/mobile/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  19. package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts +19 -1
  20. package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  21. package/mobile/out/src/services/ServiceCollection.d.ts +38 -0
  22. package/mobile/out/src/services/ServiceCollection.d.ts.map +1 -1
  23. package/mobile/out/src/services/ServiceCollection.js +85 -0
  24. package/mobile/out/src/services/ServiceCollection.js.map +1 -1
  25. package/mobile/out/src/services/Services.d.ts +11 -2
  26. package/mobile/out/src/services/Services.d.ts.map +1 -1
  27. package/mobile/out/src/services/Services.js +159 -68
  28. package/mobile/out/src/services/Services.js.map +1 -1
  29. package/mobile/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -0
  30. package/mobile/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -0
  31. package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +1 -1
  32. package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  33. package/mobile/out/src/services/chaintracker/chaintracks/index.d.ts +1 -1
  34. package/mobile/out/src/services/chaintracker/chaintracks/index.d.ts.map +1 -1
  35. package/mobile/out/src/services/chaintracker/chaintracks/index.js +1 -1
  36. package/mobile/out/src/services/chaintracker/chaintracks/index.js.map +1 -1
  37. package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts +1 -0
  38. package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  39. package/mobile/out/src/services/createDefaultWalletServicesOptions.js +15 -1
  40. package/mobile/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  41. package/mobile/out/src/services/providers/ARC.d.ts +3 -2
  42. package/mobile/out/src/services/providers/ARC.d.ts.map +1 -1
  43. package/mobile/out/src/services/providers/ARC.js +5 -4
  44. package/mobile/out/src/services/providers/ARC.js.map +1 -1
  45. package/mobile/out/src/signer/methods/internalizeAction.d.ts +2 -2
  46. package/mobile/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  47. package/mobile/out/src/signer/methods/internalizeAction.js +3 -13
  48. package/mobile/out/src/signer/methods/internalizeAction.js.map +1 -1
  49. package/mobile/out/src/storage/StorageProvider.d.ts +5 -6
  50. package/mobile/out/src/storage/StorageProvider.d.ts.map +1 -1
  51. package/mobile/out/src/storage/StorageProvider.js +75 -101
  52. package/mobile/out/src/storage/StorageProvider.js.map +1 -1
  53. package/mobile/out/src/storage/WalletStorageManager.d.ts +2 -2
  54. package/mobile/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  55. package/mobile/out/src/storage/methods/createAction.d.ts.map +1 -1
  56. package/mobile/out/src/storage/methods/createAction.js +5 -1
  57. package/mobile/out/src/storage/methods/createAction.js.map +1 -1
  58. package/mobile/out/src/storage/methods/generateChange.d.ts +0 -24
  59. package/mobile/out/src/storage/methods/generateChange.d.ts.map +1 -1
  60. package/mobile/out/src/storage/methods/generateChange.js +2 -50
  61. package/mobile/out/src/storage/methods/generateChange.js.map +1 -1
  62. package/mobile/out/src/storage/methods/getBeefForTransaction.js +3 -2
  63. package/mobile/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  64. package/mobile/out/src/storage/methods/internalizeAction.d.ts +2 -10
  65. package/mobile/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  66. package/mobile/out/src/storage/methods/internalizeAction.js +17 -1
  67. package/mobile/out/src/storage/methods/internalizeAction.js.map +1 -1
  68. package/mobile/out/src/storage/methods/processAction.d.ts +16 -1
  69. package/mobile/out/src/storage/methods/processAction.d.ts.map +1 -1
  70. package/mobile/out/src/storage/methods/processAction.js +4 -1
  71. package/mobile/out/src/storage/methods/processAction.js.map +1 -1
  72. package/mobile/out/src/storage/methods/utils.d.ts +25 -0
  73. package/mobile/out/src/storage/methods/utils.d.ts.map +1 -0
  74. package/mobile/out/src/storage/methods/utils.js +53 -0
  75. package/mobile/out/src/storage/methods/utils.js.map +1 -0
  76. package/mobile/out/src/storage/remoting/StorageClient.d.ts +2 -2
  77. package/mobile/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  78. package/mobile/out/src/storage/remoting/StorageClient.js.map +1 -1
  79. package/mobile/out/src/storage/remoting/StorageMobile.d.ts +2 -2
  80. package/mobile/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  81. package/mobile/out/src/storage/remoting/StorageMobile.js.map +1 -1
  82. package/mobile/out/src/utility/utilityHelpers.d.ts +1 -1
  83. package/mobile/out/src/utility/utilityHelpers.d.ts.map +1 -1
  84. package/mobile/out/src/utility/utilityHelpers.js +3 -3
  85. package/mobile/out/src/utility/utilityHelpers.js.map +1 -1
  86. package/mobile/package-lock.json +7 -6
  87. package/mobile/package.json +2 -2
  88. package/out/src/Wallet.d.ts +1 -1
  89. package/out/src/Wallet.d.ts.map +1 -1
  90. package/out/src/Wallet.js +16 -6
  91. package/out/src/Wallet.js.map +1 -1
  92. package/out/src/monitor/Monitor.d.ts.map +1 -1
  93. package/out/src/monitor/Monitor.js +6 -4
  94. package/out/src/monitor/Monitor.js.map +1 -1
  95. package/out/src/monitor/tasks/TaskNewHeader.d.ts +1 -1
  96. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  97. package/out/src/monitor/tasks/TaskServiceCallHistory.d.ts +12 -0
  98. package/out/src/monitor/tasks/TaskServiceCallHistory.d.ts.map +1 -0
  99. package/out/src/monitor/tasks/TaskServiceCallHistory.js +23 -0
  100. package/out/src/monitor/tasks/TaskServiceCallHistory.js.map +1 -0
  101. package/out/src/sdk/WalletServices.interfaces.d.ts +2 -0
  102. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  103. package/out/src/sdk/WalletStorage.interfaces.d.ts +19 -1
  104. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  105. package/out/src/services/ServiceCollection.d.ts +38 -0
  106. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  107. package/out/src/services/ServiceCollection.js +85 -0
  108. package/out/src/services/ServiceCollection.js.map +1 -1
  109. package/out/src/services/Services.d.ts +11 -2
  110. package/out/src/services/Services.d.ts.map +1 -1
  111. package/out/src/services/Services.js +159 -68
  112. package/out/src/services/Services.js.map +1 -1
  113. package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts +2 -0
  114. package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts.map +1 -0
  115. package/out/src/services/__tests/ArcGorillaPool.man.test.js +93 -0
  116. package/out/src/services/__tests/ArcGorillaPool.man.test.js.map +1 -0
  117. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -0
  118. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -0
  119. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +1 -1
  120. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  121. package/out/src/services/chaintracker/chaintracks/index.d.ts +1 -1
  122. package/out/src/services/chaintracker/chaintracks/index.d.ts.map +1 -1
  123. package/out/src/services/chaintracker/chaintracks/index.js +1 -1
  124. package/out/src/services/chaintracker/chaintracks/index.js.map +1 -1
  125. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +144 -0
  126. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -0
  127. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +463 -0
  128. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -0
  129. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts +20 -0
  130. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -0
  131. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +31 -0
  132. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -0
  133. package/out/src/services/createDefaultWalletServicesOptions.d.ts +1 -0
  134. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  135. package/out/src/services/createDefaultWalletServicesOptions.js +15 -1
  136. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  137. package/out/src/services/providers/ARC.d.ts +3 -2
  138. package/out/src/services/providers/ARC.d.ts.map +1 -1
  139. package/out/src/services/providers/ARC.js +5 -4
  140. package/out/src/services/providers/ARC.js.map +1 -1
  141. package/out/src/signer/methods/internalizeAction.d.ts +2 -2
  142. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  143. package/out/src/signer/methods/internalizeAction.js +3 -13
  144. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  145. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  146. package/out/src/storage/StorageKnex.js +50 -2
  147. package/out/src/storage/StorageKnex.js.map +1 -1
  148. package/out/src/storage/StorageProvider.d.ts +5 -6
  149. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  150. package/out/src/storage/StorageProvider.js +75 -101
  151. package/out/src/storage/StorageProvider.js.map +1 -1
  152. package/out/src/storage/WalletStorageManager.d.ts +2 -2
  153. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  154. package/out/src/storage/__test/StorageIdb.test.js +1 -0
  155. package/out/src/storage/__test/StorageIdb.test.js.map +1 -1
  156. package/out/src/storage/__test/adminStats.man.test.js +2 -0
  157. package/out/src/storage/__test/adminStats.man.test.js.map +1 -1
  158. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  159. package/out/src/storage/methods/createAction.js +5 -1
  160. package/out/src/storage/methods/createAction.js.map +1 -1
  161. package/out/src/storage/methods/generateChange.d.ts +0 -24
  162. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  163. package/out/src/storage/methods/generateChange.js +2 -50
  164. package/out/src/storage/methods/generateChange.js.map +1 -1
  165. package/out/src/storage/methods/getBeefForTransaction.js +3 -2
  166. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  167. package/out/src/storage/methods/internalizeAction.d.ts +2 -10
  168. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  169. package/out/src/storage/methods/internalizeAction.js +17 -1
  170. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  171. package/out/src/storage/methods/processAction.d.ts +16 -1
  172. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  173. package/out/src/storage/methods/processAction.js +4 -1
  174. package/out/src/storage/methods/processAction.js.map +1 -1
  175. package/out/src/storage/methods/utils.Buffer.d.ts +21 -0
  176. package/out/src/storage/methods/utils.Buffer.d.ts.map +1 -0
  177. package/out/src/storage/methods/utils.Buffer.js +37 -0
  178. package/out/src/storage/methods/utils.Buffer.js.map +1 -0
  179. package/out/src/storage/methods/utils.d.ts +25 -0
  180. package/out/src/storage/methods/utils.d.ts.map +1 -0
  181. package/out/src/storage/methods/utils.js +53 -0
  182. package/out/src/storage/methods/utils.js.map +1 -0
  183. package/out/src/storage/remoting/StorageClient.d.ts +2 -2
  184. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  185. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  186. package/out/src/storage/remoting/StorageMobile.d.ts +2 -2
  187. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  188. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  189. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  190. package/out/src/storage/schema/KnexMigrations.js +12 -0
  191. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  192. package/out/src/utility/Format.d.ts +14 -0
  193. package/out/src/utility/Format.d.ts.map +1 -0
  194. package/out/src/utility/Format.js +167 -0
  195. package/out/src/utility/Format.js.map +1 -0
  196. package/out/src/utility/utilityHelpers.d.ts +1 -1
  197. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  198. package/out/src/utility/utilityHelpers.js +3 -3
  199. package/out/src/utility/utilityHelpers.js.map +1 -1
  200. package/out/test/Wallet/local/localWallet.man.test.js +12 -16
  201. package/out/test/Wallet/local/localWallet.man.test.js.map +1 -1
  202. package/out/test/Wallet/support/operations.man.test.js +105 -135
  203. package/out/test/Wallet/support/operations.man.test.js.map +1 -1
  204. package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.d.ts +2 -0
  205. package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.d.ts.map +1 -0
  206. package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.js +385 -0
  207. package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.js.map +1 -0
  208. package/out/test/storage/KnexMigrations.test.js +1 -1
  209. package/out/test/storage/KnexMigrations.test.js.map +1 -1
  210. package/out/test/utils/TestUtilsWalletStorage.d.ts +5 -0
  211. package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
  212. package/out/test/utils/TestUtilsWalletStorage.js +20 -0
  213. package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
  214. package/out/tsconfig.all.tsbuildinfo +1 -1
  215. package/package.json +2 -2
  216. package/src/Wallet.ts +25 -10
  217. package/src/monitor/Monitor.ts +6 -4
  218. package/src/monitor/tasks/TaskNewHeader.ts +1 -1
  219. package/src/monitor/tasks/TaskServiceCallHistory.ts +26 -0
  220. package/src/sdk/WalletServices.interfaces.ts +2 -0
  221. package/src/sdk/WalletStorage.interfaces.ts +21 -1
  222. package/src/services/ServiceCollection.ts +121 -0
  223. package/src/services/Services.ts +157 -71
  224. package/src/services/__tests/ArcGorillaPool.man.test.ts +108 -0
  225. package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +1 -1
  226. package/src/services/chaintracker/chaintracks/index.ts +1 -1
  227. package/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.ts +490 -0
  228. package/src/services/chaintracker/chaintracks/util/dirtyHashes.ts +29 -0
  229. package/src/services/createDefaultWalletServicesOptions.ts +16 -1
  230. package/src/services/providers/ARC.ts +8 -6
  231. package/src/signer/methods/internalizeAction.ts +6 -16
  232. package/src/storage/StorageKnex.ts +25 -1
  233. package/src/storage/StorageProvider.ts +44 -32
  234. package/src/storage/WalletStorageManager.ts +1 -1
  235. package/src/storage/__test/StorageIdb.test.ts +1 -0
  236. package/src/storage/__test/adminStats.man.test.ts +2 -0
  237. package/src/storage/methods/createAction.ts +5 -3
  238. package/src/storage/methods/generateChange.ts +1 -54
  239. package/src/storage/methods/getBeefForTransaction.ts +10 -2
  240. package/src/storage/methods/internalizeAction.ts +23 -14
  241. package/src/storage/methods/processAction.ts +5 -2
  242. package/src/storage/methods/utils.Buffer.ts +33 -0
  243. package/src/storage/methods/utils.ts +56 -0
  244. package/src/storage/remoting/StorageClient.ts +2 -2
  245. package/src/storage/remoting/StorageMobile.ts +2 -2
  246. package/src/storage/schema/KnexMigrations.ts +13 -0
  247. package/src/utility/Format.ts +133 -0
  248. package/src/utility/utilityHelpers.ts +2 -2
  249. package/test/Wallet/local/localWallet.man.test.ts +13 -16
  250. package/test/Wallet/support/operations.man.test.ts +118 -123
  251. package/test/Wallet/support/reqErrorReview.2025.05.06.man.test.ts +359 -0
  252. package/test/storage/KnexMigrations.test.ts +1 -1
  253. package/test/utils/TestUtilsWalletStorage.ts +23 -0
  254. package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +0 -1
  255. package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +0 -1
  256. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +0 -1
  257. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +0 -1
  258. /package/mobile/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.d.ts → Api/BlockHeaderApi.d.ts} +0 -0
  259. /package/mobile/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.js → Api/BlockHeaderApi.js} +0 -0
  260. /package/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.d.ts → Api/BlockHeaderApi.d.ts} +0 -0
  261. /package/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.js → Api/BlockHeaderApi.js} +0 -0
  262. /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.23",
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.4.24",
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 abortAction(
725
- args: AbortActionArgs,
724
+ async internalizeAction(
725
+ args: InternalizeActionArgs,
726
726
  originator?: OriginatorDomainNameStringUnder250Bytes
727
- ): Promise<AbortActionResult> {
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 internalizeAction(
736
- args: InternalizeActionArgs,
740
+ async abortAction(
741
+ args: AbortActionArgs,
737
742
  originator?: OriginatorDomainNameStringUnder250Bytes
738
- ): Promise<InternalizeActionResult> {
743
+ ): Promise<AbortActionResult> {
739
744
  sdk.validateOriginator(originator)
740
- const { auth, vargs } = this.validateAuthAndArgs(args, sdk.validateInternalizeActionArgs)
741
- const r = await internalizeAction(this, auth, args)
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
  */
@@ -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
- // No purging until invalid transactions are really invalid...
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
- // No purging until invalid transactions are really invalid...
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<InternalizeActionResult>
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
+ }