@bsv/wallet-toolbox 2.4.1 → 2.4.2

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 (139) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +41 -0
  3. package/docs/client.md +417 -173
  4. package/docs/services.md +51 -26
  5. package/docs/storage.md +367 -76
  6. package/docs/wallet.md +384 -140
  7. package/out/src/Wallet.d.ts +1 -1
  8. package/out/src/Wallet.d.ts.map +1 -1
  9. package/out/src/Wallet.js +8 -7
  10. package/out/src/Wallet.js.map +1 -1
  11. package/out/src/WalletPermissionsManager.d.ts +18 -0
  12. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  13. package/out/src/WalletPermissionsManager.js +56 -9
  14. package/out/src/WalletPermissionsManager.js.map +1 -1
  15. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  16. package/out/src/monitor/tasks/TaskArcSSE.js +11 -7
  17. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  18. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  19. package/out/src/monitor/tasks/TaskCheckForProofs.js +10 -10
  20. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  21. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  22. package/out/src/monitor/tasks/TaskReviewStatus.js +7 -2
  23. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  24. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  25. package/out/src/monitor/tasks/TaskUnFail.js +2 -57
  26. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  27. package/out/src/sdk/WalletServices.interfaces.d.ts +1 -0
  28. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  29. package/out/src/sdk/WalletStorage.interfaces.d.ts +10 -4
  30. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  31. package/out/src/sdk/types.d.ts +1 -1
  32. package/out/src/sdk/types.d.ts.map +1 -1
  33. package/out/src/services/Services.d.ts.map +1 -1
  34. package/out/src/services/Services.js +39 -19
  35. package/out/src/services/Services.js.map +1 -1
  36. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  37. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +4 -0
  38. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  39. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  40. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +2 -0
  41. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  42. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  43. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +2 -1
  44. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  45. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  46. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +1 -0
  47. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  48. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  49. package/out/src/services/createDefaultWalletServicesOptions.js +17 -3
  50. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  51. package/out/src/services/networkConfig.d.ts +29 -0
  52. package/out/src/services/networkConfig.d.ts.map +1 -0
  53. package/out/src/services/networkConfig.js +54 -0
  54. package/out/src/services/networkConfig.js.map +1 -0
  55. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  56. package/out/src/services/providers/Arcade.js +6 -2
  57. package/out/src/services/providers/Arcade.js.map +1 -1
  58. package/out/src/services/providers/SdkWhatsOnChain.d.ts +1 -1
  59. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  60. package/out/src/services/providers/SdkWhatsOnChain.js +12 -4
  61. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  62. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  63. package/out/src/signer/methods/buildSignableTransaction.js +3 -1
  64. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  65. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  66. package/out/src/signer/methods/completeSignedTransaction.js +5 -3
  67. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  68. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  69. package/out/src/signer/methods/createAction.js +12 -5
  70. package/out/src/signer/methods/createAction.js.map +1 -1
  71. package/out/src/signer/methods/resultBeef.d.ts +4 -0
  72. package/out/src/signer/methods/resultBeef.d.ts.map +1 -0
  73. package/out/src/signer/methods/resultBeef.js +12 -0
  74. package/out/src/signer/methods/resultBeef.js.map +1 -0
  75. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  76. package/out/src/signer/methods/signAction.js +6 -1
  77. package/out/src/signer/methods/signAction.js.map +1 -1
  78. package/out/src/storage/StorageProvider.d.ts +17 -0
  79. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  80. package/out/src/storage/StorageProvider.js +206 -13
  81. package/out/src/storage/StorageProvider.js.map +1 -1
  82. package/out/src/storage/index.all.d.ts +1 -0
  83. package/out/src/storage/index.all.d.ts.map +1 -1
  84. package/out/src/storage/index.all.js +1 -0
  85. package/out/src/storage/index.all.js.map +1 -1
  86. package/out/src/storage/methods/createAction.js +17 -4
  87. package/out/src/storage/methods/createAction.js.map +1 -1
  88. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  89. package/out/src/storage/methods/getBeefForTransaction.js +47 -24
  90. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  91. package/out/src/storage/methods/internalizeAction.js +3 -3
  92. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  93. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  94. package/out/src/storage/methods/processAction.js +5 -4
  95. package/out/src/storage/methods/processAction.js.map +1 -1
  96. package/out/src/storage/remoting/BinaryJson.d.ts +10 -0
  97. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -0
  98. package/out/src/storage/remoting/BinaryJson.js +172 -0
  99. package/out/src/storage/remoting/BinaryJson.js.map +1 -0
  100. package/out/src/storage/remoting/KnexSessionManager.d.ts +37 -0
  101. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -0
  102. package/out/src/storage/remoting/KnexSessionManager.js +198 -0
  103. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -0
  104. package/out/src/storage/remoting/StorageClient.d.ts +2 -2
  105. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  106. package/out/src/storage/remoting/StorageClient.js +14 -5
  107. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  108. package/out/src/storage/remoting/StorageClientBase.d.ts +11 -1
  109. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  110. package/out/src/storage/remoting/StorageClientBase.js +4 -1
  111. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  112. package/out/src/storage/remoting/StorageMobile.d.ts +2 -2
  113. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  114. package/out/src/storage/remoting/StorageMobile.js +14 -5
  115. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  116. package/out/src/storage/remoting/StorageServer.d.ts +10 -0
  117. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  118. package/out/src/storage/remoting/StorageServer.js +48 -21
  119. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  120. package/out/src/storage/schema/KnexMigrations.d.ts +2 -0
  121. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  122. package/out/src/storage/schema/KnexMigrations.js +34 -1
  123. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  124. package/out/src/storage/schema/tables/TableAuthSession.d.ts +20 -0
  125. package/out/src/storage/schema/tables/TableAuthSession.d.ts.map +1 -0
  126. package/out/src/storage/schema/tables/TableAuthSession.js +15 -0
  127. package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -0
  128. package/out/src/storage/schema/tables/index.d.ts +1 -0
  129. package/out/src/storage/schema/tables/index.d.ts.map +1 -1
  130. package/out/src/storage/schema/tables/index.js +1 -0
  131. package/out/src/storage/schema/tables/index.js.map +1 -1
  132. package/out/src/storage/storageProviderHelpers.d.ts +5 -4
  133. package/out/src/storage/storageProviderHelpers.d.ts.map +1 -1
  134. package/out/src/storage/storageProviderHelpers.js +7 -6
  135. package/out/src/storage/storageProviderHelpers.js.map +1 -1
  136. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  137. package/out/src/utility/utilityHelpers.js +2 -0
  138. package/out/src/utility/utilityHelpers.js.map +1 -1
  139. package/package.json +5 -4
package/CHANGELOG.md CHANGED
@@ -6,6 +6,39 @@ attention to changes that materially alter behavior or extend functionality.
6
6
 
7
7
  ## wallet-toolbox (unreleased)
8
8
 
9
+ - Release prep for `2.4.2`: transaction-pipeline, BEEF fetching, and binary transport
10
+ performance improvements described below, published in lockstep for Node, browser, and mobile.
11
+ - Transaction pipeline performance: reuse parsed BEEF through `createAction`/`signAction`, retain
12
+ typed bytes internally until persistence compatibility boundaries, and avoid reparsing Atomic
13
+ BEEF during internalization and broadcast preparation.
14
+ - Fetch independent BEEF ancestor frontiers and allocated-change proofs with bounded concurrency,
15
+ deterministic merge order, Set-based deduplication, and configurable `maxConcurrency`.
16
+ - Negotiate compact base64 JSON-RPC binary values across Node, browser, and mobile clients while
17
+ preserving numeric-array requests and responses for old servers and clients. A 1 MiB payload is
18
+ 62.7% smaller on the wire than legacy byte-array JSON.
19
+ - Treat non-finite ancestor-fetch concurrency values as the safe default instead of silently
20
+ returning incomplete BEEF, reject malformed binary JSON base64, and decode deeply nested JSON
21
+ iteratively so hostile input cannot overflow the JavaScript call stack.
22
+ - Keep binary JSON-RPC requests in the legacy numeric-array format by default so rolling deployments
23
+ cannot route a negotiated request to an older server instance. Homogeneous endpoints can opt in to
24
+ compact requests with `StorageClientOptions.binaryRequests`; compact responses remain negotiated.
25
+
26
+ - Release prep for `2.4.2`: add a Knex-backed async BRC-103 session manager,
27
+ the shared-session schema migration, and `StorageServer.sessionManager`
28
+ injection so authenticated requests can move safely between replicas without
29
+ sticky routing. Session writes reject stale cross-replica state, expire after
30
+ a configurable TTL, and support explicit pruning. Also add an opt-out that
31
+ skips both per-RPC logging and request-parameter serialization, and add a
32
+ `monitor_events.created_at` index for production proof-latency correlation.
33
+ Declare the runtime `body-parser` and `dotenv` imports explicitly;
34
+ `auth-express-middleware@2.1.1` likewise declares its `mime-types` runtime
35
+ import so strict package managers do not fail when loading the built packages.
36
+
37
+ - Release prep for `2.4.2`: proof completion now discovers every local
38
+ transaction row sharing the proven txid, repairs notification-set drift from
39
+ concurrent multi-user `internalizeAction` calls, and idempotently completes
40
+ any local copy omitted by a last-writer-wins notification update.
41
+
9
42
  - Release prep for `2.4.1`: define one managed-change policy across Knex and IndexedDB allocation,
10
43
  counting, default balance reporting, `balanceAndUtxos`, and `noSendChange`.
11
44
  Only complete BRC-29 signer metadata is eligible; custom rows remain visible
package/README.md CHANGED
@@ -81,6 +81,47 @@ for the default-basket invariant, automatic funding policy, and supported
81
81
 
82
82
  The codebase has detailed JSDoc annotations throughout — these will surface inline in editors like VS Code.
83
83
 
84
+ ### Horizontal Storage scaling
85
+
86
+ `StorageServer` uses an in-process BRC-103 session manager by default. Before
87
+ running multiple processes or replicas behind a non-sticky load balancer, use
88
+ the shared Knex implementation against the same migrated wallet database:
89
+
90
+ ```typescript
91
+ import {
92
+ KnexSessionManager,
93
+ StorageKnex,
94
+ StorageServer
95
+ } from '@bsv/wallet-toolbox'
96
+
97
+ const storage = new StorageKnex(storageOptions)
98
+ await storage.migrate(storageName, storageIdentityKey)
99
+ await storage.makeAvailable()
100
+
101
+ const sessionManager = new KnexSessionManager(storage.knex, {
102
+ ttlMs: 24 * 60 * 60 * 1000
103
+ })
104
+
105
+ const server = new StorageServer(storage, {
106
+ port: 3000,
107
+ wallet,
108
+ monetize: false,
109
+ sessionManager,
110
+ logRpcRequests: false
111
+ })
112
+ server.start()
113
+ ```
114
+
115
+ Every replica must share the same database and session TTL. Run
116
+ `sessionManager.pruneExpiredSessions()` from one scheduled maintenance worker;
117
+ reads exclude expired rows even before they are physically pruned. Once every
118
+ replica uses the shared manager, authenticated requests no longer require
119
+ client-IP or cookie affinity.
120
+
121
+ Run `StorageKnex.migrate(...)` before constructing the manager during an
122
+ upgrade. `makeAvailable()` validates and loads an already-migrated database; it
123
+ does not apply schema changes.
124
+
84
125
  ## Development
85
126
 
86
127
  ```bash