@bsv/wallet-toolbox 2.4.4 → 2.4.20

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 (632) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/LICENSE.txt +58 -0
  3. package/README.md +98 -36
  4. package/docs/action-batch-planning.md +117 -14
  5. package/docs/client.md +1535 -4125
  6. package/docs/monitor.md +34 -137
  7. package/docs/services.md +296 -602
  8. package/docs/setup.md +48 -28
  9. package/docs/storage.md +358 -1901
  10. package/docs/wallet.md +10316 -5665
  11. package/out/src/CWIStyleWalletManager.d.ts +11 -2
  12. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  13. package/out/src/CWIStyleWalletManager.js +118 -87
  14. package/out/src/CWIStyleWalletManager.js.map +1 -1
  15. package/out/src/Setup.d.ts +7 -0
  16. package/out/src/Setup.d.ts.map +1 -1
  17. package/out/src/Setup.js +10 -11
  18. package/out/src/Setup.js.map +1 -1
  19. package/out/src/SetupClient.d.ts +2 -0
  20. package/out/src/SetupClient.d.ts.map +1 -1
  21. package/out/src/SetupClient.js +8 -9
  22. package/out/src/SetupClient.js.map +1 -1
  23. package/out/src/SetupWallet.d.ts +6 -0
  24. package/out/src/SetupWallet.d.ts.map +1 -1
  25. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  26. package/out/src/ShamirWalletManager.js.map +1 -1
  27. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  28. package/out/src/SimpleWalletManager.js +2 -5
  29. package/out/src/SimpleWalletManager.js.map +1 -1
  30. package/out/src/Wallet.d.ts +28 -10
  31. package/out/src/Wallet.d.ts.map +1 -1
  32. package/out/src/Wallet.js +146 -125
  33. package/out/src/Wallet.js.map +1 -1
  34. package/out/src/WalletAuthenticationManager.d.ts +11 -1
  35. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  36. package/out/src/WalletAuthenticationManager.js +7 -6
  37. package/out/src/WalletAuthenticationManager.js.map +1 -1
  38. package/out/src/WalletLogger.d.ts.map +1 -1
  39. package/out/src/WalletLogger.js +33 -30
  40. package/out/src/WalletLogger.js.map +1 -1
  41. package/out/src/WalletPermissionsManager.d.ts +22 -1
  42. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  43. package/out/src/WalletPermissionsManager.js +392 -267
  44. package/out/src/WalletPermissionsManager.js.map +1 -1
  45. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  46. package/out/src/WalletSettingsManager.js.map +1 -1
  47. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  48. package/out/src/entropy/EntropyCollector.js +6 -8
  49. package/out/src/entropy/EntropyCollector.js.map +1 -1
  50. package/out/src/fundWalletP2PKH.js.map +1 -1
  51. package/out/src/index.all.js.map +1 -1
  52. package/out/src/index.client.js.map +1 -1
  53. package/out/src/index.mobile.d.ts +1 -0
  54. package/out/src/index.mobile.d.ts.map +1 -1
  55. package/out/src/index.mobile.js +1 -0
  56. package/out/src/index.mobile.js.map +1 -1
  57. package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
  58. package/out/src/mockchain/MockChainMigrations.js.map +1 -1
  59. package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
  60. package/out/src/mockchain/MockChainStorage.js.map +1 -1
  61. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  62. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  63. package/out/src/mockchain/MockMiner.d.ts.map +1 -1
  64. package/out/src/mockchain/MockMiner.js.map +1 -1
  65. package/out/src/mockchain/MockServices.d.ts +4 -0
  66. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  67. package/out/src/mockchain/MockServices.js +69 -74
  68. package/out/src/mockchain/MockServices.js.map +1 -1
  69. package/out/src/mockchain/merkleTree.d.ts.map +1 -1
  70. package/out/src/mockchain/merkleTree.js +51 -56
  71. package/out/src/mockchain/merkleTree.js.map +1 -1
  72. package/out/src/monitor/Monitor.d.ts +4 -0
  73. package/out/src/monitor/Monitor.d.ts.map +1 -1
  74. package/out/src/monitor/Monitor.js +56 -54
  75. package/out/src/monitor/Monitor.js.map +1 -1
  76. package/out/src/monitor/MonitorDaemon.d.ts +3 -0
  77. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  78. package/out/src/monitor/MonitorDaemon.js +65 -56
  79. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  80. package/out/src/monitor/index.all.js.map +1 -1
  81. package/out/src/monitor/tasks/TaskArcSSE.d.ts +5 -0
  82. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  83. package/out/src/monitor/tasks/TaskArcSSE.js +86 -77
  84. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  85. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +4 -2
  86. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  87. package/out/src/monitor/tasks/TaskCheckForProofs.js +132 -131
  88. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  89. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +3 -1
  90. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  91. package/out/src/monitor/tasks/TaskCheckNoSends.js +3 -1
  92. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  93. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts.map +1 -1
  94. package/out/src/monitor/tasks/TaskCleanupActionBatches.js.map +1 -1
  95. package/out/src/monitor/tasks/TaskClock.d.ts +1 -1
  96. package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
  97. package/out/src/monitor/tasks/TaskClock.js +1 -1
  98. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  99. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  100. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  101. package/out/src/monitor/tasks/TaskMineBlock.d.ts +3 -1
  102. package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
  103. package/out/src/monitor/tasks/TaskMineBlock.js +3 -1
  104. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
  105. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
  106. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  107. package/out/src/monitor/tasks/TaskNewHeader.d.ts +4 -3
  108. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  109. package/out/src/monitor/tasks/TaskNewHeader.js +4 -3
  110. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  111. package/out/src/monitor/tasks/TaskPurge.d.ts +3 -1
  112. package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
  113. package/out/src/monitor/tasks/TaskPurge.js +3 -1
  114. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  115. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  116. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  117. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +3 -1
  118. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  119. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +3 -1
  120. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  121. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +3 -1
  122. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  123. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +3 -1
  124. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  125. package/out/src/monitor/tasks/TaskReviewStatus.d.ts +3 -1
  126. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  127. package/out/src/monitor/tasks/TaskReviewStatus.js +3 -1
  128. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  129. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +3 -1
  130. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  131. package/out/src/monitor/tasks/TaskReviewUtxos.js +3 -1
  132. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  133. package/out/src/monitor/tasks/TaskSendWaiting.d.ts +3 -0
  134. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  135. package/out/src/monitor/tasks/TaskSendWaiting.js +53 -46
  136. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  137. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +1 -1
  138. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
  139. package/out/src/monitor/tasks/TaskSyncWhenIdle.js +1 -1
  140. package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
  141. package/out/src/monitor/tasks/TaskUnFail.d.ts +3 -1
  142. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  143. package/out/src/monitor/tasks/TaskUnFail.js +3 -1
  144. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  145. package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
  146. package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
  147. package/out/src/sdk/ActionBatch.interfaces.d.ts +56 -2
  148. package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -1
  149. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  150. package/out/src/sdk/PrivilegedKeyManager.js +3 -3
  151. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  152. package/out/src/sdk/WERR_errors.d.ts +1 -1
  153. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  154. package/out/src/sdk/WERR_errors.js +2 -2
  155. package/out/src/sdk/WERR_errors.js.map +1 -1
  156. package/out/src/sdk/WalletError.d.ts +3 -0
  157. package/out/src/sdk/WalletError.d.ts.map +1 -1
  158. package/out/src/sdk/WalletError.js +53 -56
  159. package/out/src/sdk/WalletError.js.map +1 -1
  160. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  161. package/out/src/sdk/WalletServices.interfaces.d.ts +3 -1
  162. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  163. package/out/src/sdk/WalletStorage.interfaces.d.ts +5 -1
  164. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  165. package/out/src/sdk/types.js.map +1 -1
  166. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  167. package/out/src/services/ServiceCollection.js.map +1 -1
  168. package/out/src/services/Services.d.ts +8 -2
  169. package/out/src/services/Services.d.ts.map +1 -1
  170. package/out/src/services/Services.js +86 -44
  171. package/out/src/services/Services.js.map +1 -1
  172. package/out/src/services/chaintracker/BHServiceClient.d.ts +7 -7
  173. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  174. package/out/src/services/chaintracker/BHServiceClient.js +9 -9
  175. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  176. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +4 -1
  177. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  178. package/out/src/services/chaintracker/ChaintracksChainTracker.js +42 -6
  179. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  180. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +4 -4
  181. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  182. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +1 -1
  183. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +3 -0
  185. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +45 -40
  187. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  188. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +5 -0
  189. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  190. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +25 -18
  191. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  192. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +3 -3
  193. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  194. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +6 -7
  195. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  196. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  197. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  198. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  199. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  201. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  202. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  204. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +0 -1
  206. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  208. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  209. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  210. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  211. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  212. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  213. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts +2 -2
  214. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  215. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +2 -2
  216. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  217. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  219. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  221. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +12 -2
  222. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  223. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +110 -103
  224. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  225. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +8 -0
  226. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  227. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +58 -48
  228. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  229. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +3 -0
  234. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +55 -54
  236. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +4 -0
  238. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +97 -72
  240. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +5 -0
  242. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +145 -136
  244. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +4 -0
  246. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +92 -68
  248. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +43 -0
  250. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +76 -0
  252. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts +18 -0
  254. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts.map +1 -0
  255. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js +24 -0
  256. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js.map +1 -0
  257. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +2 -3
  258. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +4 -22
  260. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -4
  262. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +12 -25
  264. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  265. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -3
  266. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +4 -22
  268. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +2 -1
  270. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +3 -15
  272. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +2 -2
  274. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +3 -15
  276. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  277. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +2 -1
  278. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +3 -15
  280. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +1 -1
  282. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  284. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -0
  285. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  286. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +64 -61
  287. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  288. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  291. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +4 -3
  292. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  295. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  297. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +8 -10
  298. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  299. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +14 -24
  300. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  301. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  302. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  304. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  305. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +1 -11
  306. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  307. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +20 -49
  308. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  309. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
  310. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +4 -2
  311. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
  312. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  313. package/out/src/services/createDefaultWalletServicesOptions.d.ts +23 -14
  314. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  315. package/out/src/services/createDefaultWalletServicesOptions.js +1 -14
  316. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  317. package/out/src/services/networkConfig.js.map +1 -1
  318. package/out/src/services/providers/ARC.d.ts +4 -0
  319. package/out/src/services/providers/ARC.d.ts.map +1 -1
  320. package/out/src/services/providers/ARC.js +96 -83
  321. package/out/src/services/providers/ARC.js.map +1 -1
  322. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  323. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  324. package/out/src/services/providers/Arcade.d.ts +4 -0
  325. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  326. package/out/src/services/providers/Arcade.js +118 -92
  327. package/out/src/services/providers/Arcade.js.map +1 -1
  328. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  329. package/out/src/services/providers/Bitails.js +107 -86
  330. package/out/src/services/providers/Bitails.js.map +1 -1
  331. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  332. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  333. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  334. package/out/src/services/providers/WhatsOnChain.js +19 -6
  335. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  336. package/out/src/services/providers/exchangeRates.js +1 -1
  337. package/out/src/services/providers/exchangeRates.js.map +1 -1
  338. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  339. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  340. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  341. package/out/src/signer/WalletSigner.js.map +1 -1
  342. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  343. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  344. package/out/src/signer/actionBatch/ActionBatchPlanner.js +68 -35
  345. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  346. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  347. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +217 -41
  348. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  349. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +11 -0
  350. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -0
  351. package/out/src/signer/actionBatch/actionBatchBootstrap.js +38 -0
  352. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -0
  353. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  354. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  355. package/out/src/signer/methods/buildSignableTransaction.js +95 -106
  356. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  357. package/out/src/signer/methods/completeSignedTransaction.d.ts +3 -7
  358. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  359. package/out/src/signer/methods/completeSignedTransaction.js +14 -57
  360. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  361. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  362. package/out/src/signer/methods/createAction.js +47 -20
  363. package/out/src/signer/methods/createAction.js.map +1 -1
  364. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  365. package/out/src/signer/methods/internalizeAction.js +4 -4
  366. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  367. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  368. package/out/src/signer/methods/resultBeef.js.map +1 -1
  369. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  370. package/out/src/signer/methods/signAction.js +29 -4
  371. package/out/src/signer/methods/signAction.js.map +1 -1
  372. package/out/src/signer/methods/verifyUnlockScripts.d.ts +17 -0
  373. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -0
  374. package/out/src/signer/methods/verifyUnlockScripts.js +137 -0
  375. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -0
  376. package/out/src/storage/StorageIdb.d.ts +5 -3
  377. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  378. package/out/src/storage/StorageIdb.js +80 -27
  379. package/out/src/storage/StorageIdb.js.map +1 -1
  380. package/out/src/storage/StorageKnex.d.ts +10 -1
  381. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  382. package/out/src/storage/StorageKnex.js +118 -9
  383. package/out/src/storage/StorageKnex.js.map +1 -1
  384. package/out/src/storage/StorageProvider.d.ts +41 -13
  385. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  386. package/out/src/storage/StorageProvider.js +241 -158
  387. package/out/src/storage/StorageProvider.js.map +1 -1
  388. package/out/src/storage/StorageReader.d.ts +13 -5
  389. package/out/src/storage/StorageReader.d.ts.map +1 -1
  390. package/out/src/storage/StorageReader.js +3 -0
  391. package/out/src/storage/StorageReader.js.map +1 -1
  392. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  393. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  394. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  395. package/out/src/storage/StorageSyncReader.js.map +1 -1
  396. package/out/src/storage/WalletStorageManager.d.ts +2 -0
  397. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  398. package/out/src/storage/WalletStorageManager.js +25 -6
  399. package/out/src/storage/WalletStorageManager.js.map +1 -1
  400. package/out/src/storage/adminServer/adminServer.d.ts +79 -0
  401. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  402. package/out/src/storage/adminServer/adminServer.js +47 -16
  403. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  404. package/out/src/storage/adminServer/adminUi.js.map +1 -1
  405. package/out/src/storage/idbHelpers.js.map +1 -1
  406. package/out/src/storage/index.all.js.map +1 -1
  407. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  408. package/out/src/storage/methods/ListActionsSpecOp.js +48 -71
  409. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  410. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  411. package/out/src/storage/methods/ListOutputsSpecOp.js +29 -27
  412. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  413. package/out/src/storage/methods/actionBatch.d.ts +2 -1
  414. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  415. package/out/src/storage/methods/actionBatch.js +143 -50
  416. package/out/src/storage/methods/actionBatch.js.map +1 -1
  417. package/out/src/storage/methods/actionBatchBlobs.d.ts +6 -3
  418. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  419. package/out/src/storage/methods/actionBatchBlobs.js +77 -14
  420. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  421. package/out/src/storage/methods/actionBatchValidation.d.ts +6 -4
  422. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  423. package/out/src/storage/methods/actionBatchValidation.js +261 -155
  424. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  425. package/out/src/storage/methods/actionPlanning.js.map +1 -1
  426. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +0 -21
  427. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  428. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +43 -51
  429. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  430. package/out/src/storage/methods/createAction.d.ts +1 -1
  431. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  432. package/out/src/storage/methods/createAction.js +57 -38
  433. package/out/src/storage/methods/createAction.js.map +1 -1
  434. package/out/src/storage/methods/generateChange.d.ts +2 -2
  435. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  436. package/out/src/storage/methods/generateChange.js +66 -38
  437. package/out/src/storage/methods/generateChange.js.map +1 -1
  438. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  439. package/out/src/storage/methods/getBeefForTransaction.js +48 -42
  440. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  441. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  442. package/out/src/storage/methods/getSyncChunk.js +8 -6
  443. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  444. package/out/src/storage/methods/internalizeAction.js +145 -121
  445. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  446. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  447. package/out/src/storage/methods/listActionsKnex.js +1 -1
  448. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  449. package/out/src/storage/methods/listCertificates.d.ts +1 -1
  450. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  451. package/out/src/storage/methods/listCertificates.js +1 -1
  452. package/out/src/storage/methods/listCertificates.js.map +1 -1
  453. package/out/src/storage/methods/listOutputsIdb.d.ts +1 -1
  454. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  455. package/out/src/storage/methods/listOutputsIdb.js +133 -152
  456. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  457. package/out/src/storage/methods/listOutputsKnex.d.ts +1 -1
  458. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  459. package/out/src/storage/methods/listOutputsKnex.js +213 -254
  460. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  461. package/out/src/storage/methods/managedChange.d.ts +3 -3
  462. package/out/src/storage/methods/managedChange.d.ts.map +1 -1
  463. package/out/src/storage/methods/managedChange.js +1 -2
  464. package/out/src/storage/methods/managedChange.js.map +1 -1
  465. package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
  466. package/out/src/storage/methods/offsetKey.js +0 -1
  467. package/out/src/storage/methods/offsetKey.js.map +1 -1
  468. package/out/src/storage/methods/processAction.d.ts +2 -0
  469. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  470. package/out/src/storage/methods/processAction.js +8 -8
  471. package/out/src/storage/methods/processAction.js.map +1 -1
  472. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  473. package/out/src/storage/methods/purgeData.js +157 -179
  474. package/out/src/storage/methods/purgeData.js.map +1 -1
  475. package/out/src/storage/methods/purgeDataIdb.d.ts +1 -1
  476. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
  477. package/out/src/storage/methods/purgeDataIdb.js +1 -1
  478. package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
  479. package/out/src/storage/methods/reviewStatus.js +6 -6
  480. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  481. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  482. package/out/src/storage/methods/utils.Buffer.js.map +1 -1
  483. package/out/src/storage/methods/utils.js.map +1 -1
  484. package/out/src/storage/portable/index.js +2 -2
  485. package/out/src/storage/portable/index.js.map +1 -1
  486. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  487. package/out/src/storage/remoting/BinaryJson.js +84 -38
  488. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  489. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  490. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  491. package/out/src/storage/remoting/RateLimitPolicy.d.ts +10 -0
  492. package/out/src/storage/remoting/RateLimitPolicy.d.ts.map +1 -0
  493. package/out/src/storage/remoting/RateLimitPolicy.js +37 -0
  494. package/out/src/storage/remoting/RateLimitPolicy.js.map +1 -0
  495. package/out/src/storage/remoting/StorageClient.d.ts +2 -0
  496. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  497. package/out/src/storage/remoting/StorageClient.js +82 -50
  498. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  499. package/out/src/storage/remoting/StorageClientBase.d.ts +15 -5
  500. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  501. package/out/src/storage/remoting/StorageClientBase.js +61 -3
  502. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  503. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  504. package/out/src/storage/remoting/StorageMobile.js +34 -22
  505. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  506. package/out/src/storage/remoting/StorageServer.d.ts +52 -1
  507. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  508. package/out/src/storage/remoting/StorageServer.js +340 -201
  509. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  510. package/out/src/storage/remoting/edgePolicy.d.ts +57 -0
  511. package/out/src/storage/remoting/edgePolicy.d.ts.map +1 -0
  512. package/out/src/storage/remoting/edgePolicy.js +387 -0
  513. package/out/src/storage/remoting/edgePolicy.js.map +1 -0
  514. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  515. package/out/src/storage/remoting/entityValidationHelpers.js +22 -5
  516. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  517. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  518. package/out/src/storage/schema/KnexMigrations.js +12 -0
  519. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  520. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  521. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  522. package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
  523. package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
  524. package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
  525. package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
  526. package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
  527. package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
  528. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  529. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  530. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  531. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  532. package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
  533. package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
  534. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
  535. package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
  536. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -0
  537. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  538. package/out/src/storage/schema/entities/EntityProvenTx.js +46 -36
  539. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  540. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +2 -2
  541. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
  542. package/out/src/storage/schema/entities/EntityProvenTxReq.js +12 -10
  543. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  544. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  545. package/out/src/storage/schema/entities/EntitySyncState.js +25 -34
  546. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  547. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  548. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  549. package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
  550. package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
  551. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
  552. package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
  553. package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
  554. package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
  555. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  556. package/out/src/storage/schema/entities/MergeEntity.js +9 -14
  557. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  558. package/out/src/storage/schema/tables/TableActionBatch.d.ts +3 -1
  559. package/out/src/storage/schema/tables/TableActionBatch.d.ts.map +1 -1
  560. package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -1
  561. package/out/src/storage/storageProviderHelpers.js.map +1 -1
  562. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +3 -0
  563. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  564. package/out/src/storage/sync/StorageMySQLDojoReader.js +30 -16
  565. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  566. package/out/src/utility/Format.d.ts.map +1 -1
  567. package/out/src/utility/Format.js +2 -2
  568. package/out/src/utility/Format.js.map +1 -1
  569. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  570. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  571. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  572. package/out/src/utility/actionBatchDigest.js +41 -3
  573. package/out/src/utility/actionBatchDigest.js.map +1 -1
  574. package/out/src/utility/actionBatchPack.d.ts +16 -0
  575. package/out/src/utility/actionBatchPack.d.ts.map +1 -0
  576. package/out/src/utility/actionBatchPack.js +220 -0
  577. package/out/src/utility/actionBatchPack.js.map +1 -0
  578. package/out/src/utility/aggregateResults.d.ts.map +1 -1
  579. package/out/src/utility/aggregateResults.js.map +1 -1
  580. package/out/src/utility/beefForTxids.js.map +1 -1
  581. package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
  582. package/out/src/utility/brc114ActionTimeLabels.js +26 -30
  583. package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
  584. package/out/src/utility/formatUnknown.d.ts +6 -0
  585. package/out/src/utility/formatUnknown.d.ts.map +1 -0
  586. package/out/src/utility/formatUnknown.js +39 -0
  587. package/out/src/utility/formatUnknown.js.map +1 -0
  588. package/out/src/utility/hashWasm.d.ts +5 -0
  589. package/out/src/utility/hashWasm.d.ts.map +1 -0
  590. package/out/src/utility/hashWasm.js +15 -0
  591. package/out/src/utility/hashWasm.js.map +1 -0
  592. package/out/src/utility/identityUtils.d.ts.map +1 -1
  593. package/out/src/utility/identityUtils.js +2 -4
  594. package/out/src/utility/identityUtils.js.map +1 -1
  595. package/out/src/utility/parseTxScriptOffsets.d.ts +1 -1
  596. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  597. package/out/src/utility/parseTxScriptOffsets.js +1 -1
  598. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  599. package/out/src/utility/stampLog.d.ts.map +1 -1
  600. package/out/src/utility/stampLog.js +49 -42
  601. package/out/src/utility/stampLog.js.map +1 -1
  602. package/out/src/utility/traceContext.d.ts +13 -0
  603. package/out/src/utility/traceContext.d.ts.map +1 -0
  604. package/out/src/utility/traceContext.js +34 -0
  605. package/out/src/utility/traceContext.js.map +1 -0
  606. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  607. package/out/src/utility/tscProofToMerklePath.js +1 -1
  608. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  609. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  610. package/out/src/utility/utilityHelpers.d.ts +2 -2
  611. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  612. package/out/src/utility/utilityHelpers.js +8 -4
  613. package/out/src/utility/utilityHelpers.js.map +1 -1
  614. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  615. package/out/src/utility/utilityHelpers.noBuffer.js +1 -2
  616. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  617. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  618. package/out/src/wab-client/WABClient.js +1 -1
  619. package/out/src/wab-client/WABClient.js.map +1 -1
  620. package/out/src/wab-client/WABTransport.d.ts +33 -5
  621. package/out/src/wab-client/WABTransport.d.ts.map +1 -1
  622. package/out/src/wab-client/WABTransport.js +240 -120
  623. package/out/src/wab-client/WABTransport.js.map +1 -1
  624. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  625. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  626. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
  627. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
  628. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
  629. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +1 -1
  630. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
  631. package/package.json +57 -21
  632. package/license.md +0 -28
@@ -10,6 +10,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.StorageServer = void 0;
13
+ const sdk_1 = require("@bsv/sdk");
13
14
  const express_1 = __importDefault(require("express"));
14
15
  const auth_express_middleware_1 = require("@bsv/auth-express-middleware");
15
16
  const payment_express_middleware_1 = require("@bsv/payment-express-middleware");
@@ -18,13 +19,19 @@ const WERR_errors_1 = require("../../sdk/WERR_errors");
18
19
  const entityValidationHelpers_1 = require("./entityValidationHelpers");
19
20
  const WalletError_1 = require("../../sdk/WalletError");
20
21
  const WalletLogger_1 = require("../../WalletLogger");
22
+ const traceContext_1 = require("../../utility/traceContext");
21
23
  const BinaryJson_1 = require("./BinaryJson");
24
+ const RateLimitPolicy_1 = require("./RateLimitPolicy");
25
+ const edgePolicy_1 = require("./edgePolicy");
26
+ const actionBatchPack_1 = require("../../utility/actionBatchPack");
27
+ const actionBatchBlobs_1 = require("../methods/actionBatchBlobs");
22
28
  const storageRpcMethods = new Set([
23
29
  'abortAction',
24
30
  'abortActionBatch',
25
31
  'adminStats',
26
32
  'beginActionBatch',
27
33
  'commitActionBatch',
34
+ 'commitActionBatchByDigest',
28
35
  'createAction',
29
36
  'destroy',
30
37
  'extendActionBatch',
@@ -59,6 +66,7 @@ const authIdRpcMethods = new Set([
59
66
  'abortActionBatch',
60
67
  'beginActionBatch',
61
68
  'commitActionBatch',
69
+ 'commitActionBatchByDigest',
62
70
  'createAction',
63
71
  'extendActionBatch',
64
72
  'findCertificatesAuth',
@@ -82,10 +90,22 @@ const actionBatchRpcMethods = new Set([
82
90
  'abortActionBatch',
83
91
  'beginActionBatch',
84
92
  'commitActionBatch',
93
+ 'commitActionBatchByDigest',
85
94
  'extendActionBatch',
86
95
  'prepareActionBatchCommit',
87
96
  'renewActionBatch'
88
97
  ]);
98
+ function requiredAuthenticatedIdentityKey(req) {
99
+ const identityKey = req.auth?.identityKey;
100
+ if (typeof identityKey !== 'string' || identityKey.trim() === '' || identityKey === 'unknown') {
101
+ throw new WERR_errors_1.WERR_UNAUTHORIZED('authenticated request identity is required');
102
+ }
103
+ return identityKey;
104
+ }
105
+ function firstRequestHeader(req, name) {
106
+ const value = req.headers[name.toLowerCase()];
107
+ return Array.isArray(value) ? value[0] : value;
108
+ }
89
109
  class StorageServer {
90
110
  app = (0, express_1.default)();
91
111
  port;
@@ -97,7 +117,15 @@ class StorageServer {
97
117
  makeLogger;
98
118
  sessionManager;
99
119
  rateLimitOptions;
120
+ preAuthRateLimitOptions;
121
+ trustProxy;
122
+ allowedOrigins;
123
+ maxConcurrentRequests;
124
+ httpPolicy;
125
+ securityHeadersPolicy;
100
126
  logRpcRequests;
127
+ telemetry;
128
+ telemetryConfig;
101
129
  constructor(storage, options) {
102
130
  this.storage = storage;
103
131
  this.port = options.port;
@@ -108,8 +136,24 @@ class StorageServer {
108
136
  this.makeLogger = options.makeLogger;
109
137
  this.sessionManager = options.sessionManager;
110
138
  this.rateLimitOptions = options.rateLimit;
139
+ this.preAuthRateLimitOptions = options.preAuthRateLimit;
140
+ this.trustProxy = options.trustProxy;
141
+ this.allowedOrigins = options.allowedOrigins;
142
+ this.maxConcurrentRequests = options.maxConcurrentRequests ?? 200;
143
+ this.httpPolicy = {
144
+ requestTimeoutMs: 2 * 60 * 1000,
145
+ headersTimeoutMs: 15_000,
146
+ keepAliveTimeoutMs: 5_000,
147
+ socketTimeoutMs: 2 * 60 * 1000,
148
+ maxRequestsPerSocket: 1_000,
149
+ ...options.http
150
+ };
151
+ this.securityHeadersPolicy = options.securityHeaders ?? {};
111
152
  this.logRpcRequests = options.logRpcRequests ?? true;
112
- if (options['logShortReqs']) {
153
+ this.telemetryConfig = options.telemetry;
154
+ this.telemetry = new sdk_1.Telemetry(options.telemetry);
155
+ const legacyLogShortReqs = options['logShortReqs'];
156
+ if (legacyLogShortReqs) {
113
157
  this.setupShortReqLogging();
114
158
  }
115
159
  this.setupRoutes();
@@ -125,54 +169,53 @@ class StorageServer {
125
169
  ts: new Date().toISOString(),
126
170
  url: req.originalUrl,
127
171
  ip: req.ip || req.socket.remoteAddress,
128
- ua: req.headers['user-agent'] || '-',
129
- headers: { ...req.headers } // shallow copy
172
+ ua: req.headers['user-agent'] || '-'
130
173
  };
131
- const traceContext = (req.headers['X-Cloud-Trace-Context'] || req.headers['x-cloud-trace-context'])?.split('/')[0];
174
+ const traceContext = firstRequestHeader(req, 'X-Cloud-Trace-Context')?.split('/')[0];
132
175
  if (traceContext) {
133
176
  logObj['logging.googleapis.com/trace'] = `projects/computing-with-integrity/traces/${traceContext}`;
134
177
  }
135
- const chunks = [];
136
- req.on('data', chunk => chunks.push(Buffer.from(chunk)));
137
- req.on('end', () => {
138
- const bodyBuffer = Buffer.concat(chunks);
139
- try {
140
- logObj.body = bodyBuffer.toString('utf8');
141
- }
142
- catch {
143
- logObj.body = bodyBuffer.toString('hex');
144
- logObj.bodyEncoding = 'hex';
145
- }
146
- console.log(JSON.stringify(logObj));
147
- });
178
+ // Request bodies and BSV auth/payment headers can contain sensitive
179
+ // material. Short-request logging records metadata only.
180
+ console.log(JSON.stringify(logObj));
148
181
  }
149
182
  next();
150
183
  });
151
184
  }
152
185
  setupRoutes() {
186
+ (0, RateLimitPolicy_1.configureTrustProxy)(this.app, this.trustProxy);
187
+ this.app.disable('x-powered-by');
188
+ this.app.use((0, edgePolicy_1.securityHeaders)({
189
+ environmentPrefix: 'WALLET_STORAGE',
190
+ ...this.securityHeadersPolicy
191
+ }));
192
+ this.app.use((0, edgePolicy_1.corsPolicy)({
193
+ environmentPrefix: 'WALLET_STORAGE',
194
+ allowedOrigins: this.allowedOrigins,
195
+ methods: ['GET', 'PUT', 'POST', 'OPTIONS']
196
+ }));
197
+ this.app.use((0, edgePolicy_1.concurrencyLimit)('WALLET_STORAGE', this.maxConcurrentRequests));
198
+ this.app.use((0, express_rate_limit_1.rateLimit)((0, RateLimitPolicy_1.rateLimitOptions)({ windowMs: 60_000, limit: 300 }, {
199
+ skip: (req) => req.method === 'GET' || req.method === 'HEAD' || req.method === 'OPTIONS',
200
+ ...this.preAuthRateLimitOptions
201
+ })));
202
+ if (this.telemetry.enabled) {
203
+ this.app.use(this.traceHttpRequest.bind(this));
204
+ }
153
205
  // Escape HTML-significant characters in JSON responses. This preserves the
154
206
  // decoded JSON value while keeping user-controlled strings inert even if a
155
207
  // consumer embeds a response in an HTML context.
156
208
  this.app.set('json escape', true);
157
- this.app.use(express_1.default.json({ limit: '30mb' }));
209
+ this.app.use(express_1.default.json({
210
+ limit: (0, edgePolicy_1.readBodyLimitBytes)('WALLET_STORAGE_JSON', 30 * 1024 * 1024)
211
+ }));
158
212
  // Authentication must see the exact binary body bytes, so parse octet
159
213
  // streams before the auth middleware just as JSON is parsed above.
160
- this.app.use(express_1.default.raw({ type: 'application/octet-stream', limit: '8mb' }));
161
- // This allows the API to be used everywhere when CORS is enforced
162
- this.app.use((req, res, next) => {
163
- res.header('Access-Control-Allow-Origin', '*');
164
- res.header('Access-Control-Allow-Headers', '*');
165
- res.header('Access-Control-Allow-Methods', '*');
166
- res.header('Access-Control-Expose-Headers', '*');
167
- res.header('Access-Control-Allow-Private-Network', 'true');
168
- if (req.method === 'OPTIONS') {
169
- // Handle CORS preflight requests to allow cross-origin POST/PUT requests
170
- res.sendStatus(200);
171
- }
172
- else {
173
- next();
174
- }
175
- });
214
+ this.app.use(express_1.default.raw({
215
+ type: 'application/octet-stream',
216
+ limit: (0, edgePolicy_1.readBodyLimitBytes)('WALLET_STORAGE_BINARY', 8 * 1024 * 1024)
217
+ }));
218
+ this.app.use(edgePolicy_1.bodyParserErrorHandler);
176
219
  this.app.get('/robots.txt', (req, res) => {
177
220
  res.type('text/plain');
178
221
  res.send('User-agent: *\nDisallow: /');
@@ -182,26 +225,58 @@ class StorageServer {
182
225
  res.send(`BRC-100 ${this.wallet.chain}Net Storage Provider.`);
183
226
  });
184
227
  const options = {
185
- wallet: this.wallet
228
+ wallet: this.wallet,
229
+ ...(this.telemetryConfig == null ? {} : { telemetry: this.telemetryConfig })
186
230
  };
187
231
  if (this.sessionManager != null)
188
232
  options.sessionManager = this.sessionManager;
189
233
  this.app.use((0, auth_express_middleware_1.createAuthMiddleware)(options));
190
- const authenticatedRateLimit = (0, express_rate_limit_1.rateLimit)({
191
- windowMs: 60_000,
192
- limit: 1_000,
193
- standardHeaders: 'draft-8',
194
- legacyHeaders: false,
195
- keyGenerator: (req) => req.auth.identityKey,
234
+ const authenticatedRateLimit = (0, express_rate_limit_1.rateLimit)((0, RateLimitPolicy_1.rateLimitOptions)({ windowMs: 60_000, limit: 1_000 }, {
235
+ keyGenerator: RateLimitPolicy_1.authenticatedIdentityKey,
196
236
  ...this.rateLimitOptions
197
- });
237
+ }));
238
+ this.app.use(authenticatedRateLimit);
198
239
  if (this.monetize) {
199
240
  this.app.use((0, payment_express_middleware_1.createPaymentMiddleware)({
200
241
  wallet: this.wallet,
201
242
  calculateRequestPrice: this.calculateRequestPrice || (() => 100)
202
243
  }));
203
244
  }
204
- this.app.put('/action-batch/:batchId/blob/:digest', authenticatedRateLimit, async (req, res) => {
245
+ this.app.put('/action-batch/:batchId/pack', async (req, res) => {
246
+ try {
247
+ const auth = await this.authenticatedAuth(req, true);
248
+ const batchId = String(req.params.batchId);
249
+ // Express types request bodies as `any`, and other body parsers can
250
+ // produce strings, arrays, or objects. Keep the runtime narrowing
251
+ // inline so both the transport and static data-flow analysis can see
252
+ // that only a real byte view reaches the binary pack decoder.
253
+ const rawBody = req.body;
254
+ if (typeof rawBody !== 'object' || rawBody === null || !(rawBody instanceof Uint8Array)) {
255
+ throw new TypeError('binary action batch body required');
256
+ }
257
+ // Re-wrap without copying. Besides normalizing Buffer subclasses,
258
+ // this makes the decoder's runtime type independent of req.body.
259
+ const body = new Uint8Array(rawBody.buffer, rawBody.byteOffset, rawBody.byteLength);
260
+ const requestedEncoding = req.header(actionBatchPack_1.ACTION_BATCH_PACK_ENCODING_HEADER) ?? 'identity';
261
+ const encoding = (0, actionBatchPack_1.supportedActionBatchPackEncodings)().find(candidate => candidate === requestedEncoding);
262
+ if (encoding == null)
263
+ throw new TypeError(`unsupported action batch pack encoding ${requestedEncoding}`);
264
+ const frame = await (0, actionBatchPack_1.decompressActionBatchPack)(body, encoding, actionBatchBlobs_1.ACTION_BATCH_MAX_PACK_BYTES);
265
+ const items = (0, actionBatchPack_1.decodeActionBatchPack)(frame, actionBatchBlobs_1.ACTION_BATCH_MAX_PACK_BYTES, actionBatchBlobs_1.ACTION_BATCH_MAX_PACK_ITEMS);
266
+ await this.storage.putActionBatchPack(auth, {
267
+ batchId,
268
+ items,
269
+ maxPackBytes: actionBatchBlobs_1.ACTION_BATCH_MAX_PACK_BYTES,
270
+ maxItems: actionBatchBlobs_1.ACTION_BATCH_MAX_PACK_ITEMS
271
+ });
272
+ res.status(200).json({ uploaded: true });
273
+ }
274
+ catch (error) {
275
+ const json = WalletError_1.WalletError.unknownToJson(error);
276
+ res.status(400).json(JSON.parse(json));
277
+ }
278
+ });
279
+ this.app.put('/action-batch/:batchId/blob/:digest', async (req, res) => {
205
280
  try {
206
281
  const auth = await this.authenticatedAuth(req, true);
207
282
  const batchId = String(req.params.batchId);
@@ -218,170 +293,229 @@ class StorageServer {
218
293
  }
219
294
  });
220
295
  // A single POST endpoint for JSON-RPC:
221
- this.app.post('/', authenticatedRateLimit, async (req, res) => {
222
- const useBinary = req.header(BinaryJson_1.BINARY_ENCODING_HEADER) === BinaryJson_1.BINARY_ENCODING;
223
- const requestUsesBinary = req.header(BinaryJson_1.BINARY_REQUEST_ENCODING_HEADER) === BinaryJson_1.BINARY_ENCODING;
224
- if (useBinary)
225
- res.set(BinaryJson_1.BINARY_ENCODING_HEADER, BinaryJson_1.BINARY_ENCODING);
226
- const { jsonrpc, method, id } = req.body;
227
- const params = (requestUsesBinary ? (0, BinaryJson_1.decodeBinaryJsonValue)(req.body.params) : req.body.params);
228
- const sendRpc = (payload, status = 200) => {
229
- res.set('X-Content-Type-Options', 'nosniff');
230
- // Normalize with the negotiated binary replacer, then let Express emit
231
- // the JSON response through its escaping-aware JSON sink.
232
- return res.status(status).json(JSON.parse((0, BinaryJson_1.stringifyJsonRpc)(payload, useBinary)));
233
- };
234
- // Basic JSON-RPC protocol checks:
235
- if (jsonrpc !== '2.0' || !method || typeof method !== 'string') {
236
- return sendRpc({ error: { code: -32600, message: 'Invalid Request' } }, 400);
237
- }
238
- let logObj;
239
- if (this.logRpcRequests) {
240
- logObj = {
241
- source: 'StorageServer POST handler',
242
- method,
243
- id,
244
- user: req.auth.identityKey,
245
- params: JSON.stringify(params || '').slice(0, 256)
246
- };
247
- const traceContext = (req.headers['X-Cloud-Trace-Context'] || req.headers['x-cloud-trace-context'])?.split('/')[0];
248
- if (traceContext) {
249
- logObj['logging.googleapis.com/trace'] = `projects/computing-with-integrity/traces/${traceContext}`;
250
- }
251
- console.log(JSON.stringify(logObj));
252
- }
253
- try {
254
- // Dispatch the method call:
255
- if (typeof this[method] === 'function') {
256
- // if you wanted to handle certain methods on the server class itself
257
- // e.g. this['someServerMethod'](params)
258
- throw new TypeError('Server method dispatch not used in this approach.');
259
- }
260
- else if (storageRpcMethods.has(method)) {
261
- const storageMethod = method === 'findOutputBaskets'
262
- ? 'findOutputBasketsAuth'
263
- : method;
264
- if (typeof this.storage[storageMethod] !== 'function') {
265
- return sendRpc({
266
- jsonrpc: '2.0',
267
- error: { code: -32601, message: `Method not found: ${method}` },
268
- id
269
- }, 400);
270
- }
271
- // method is on the walletStorage:
272
- // Find user
273
- switch (method) {
274
- case 'destroy': {
275
- if (logObj != null) {
276
- logObj.result = undefined;
277
- logObj.comment = 'IGNORED';
278
- console.log(JSON.stringify(logObj));
279
- }
280
- return sendRpc({ jsonrpc: '2.0', result: undefined, id });
281
- }
282
- case 'getSettings':
283
- /** */
284
- break;
285
- case 'findOrInsertUser':
286
- if (params[0] !== req.auth.identityKey) {
287
- throw new WERR_errors_1.WERR_UNAUTHORIZED('function may only access authenticated user.');
288
- }
289
- break;
290
- case 'adminStats':
291
- // Add check for admin user
292
- if (params[0] !== req.auth.identityKey) {
293
- throw new WERR_errors_1.WERR_UNAUTHORIZED('function may only access authenticated admin user.');
294
- }
295
- if (!this.adminIdentityKeys?.includes(req.auth.identityKey)) {
296
- throw new WERR_errors_1.WERR_UNAUTHORIZED('function may only be accessed by admin user.');
297
- }
298
- break;
299
- case 'processSyncChunk': {
300
- await this.validateParam0(params, req);
301
- // const args: RequestSyncChunkArgs = params[0]
302
- const r = params[1];
303
- (0, entityValidationHelpers_1.validateSyncChunkEntities)(r);
304
- break;
305
- }
306
- default:
307
- if (authIdRpcMethods.has(method)) {
308
- await this.bindAuthenticatedAuth(params, req, actionBatchRpcMethods.has(method));
309
- }
310
- else {
311
- await this.validateParam0(params, req);
312
- }
313
- break;
314
- }
315
- // If makeLogger is valid, setup and potentially initialize to return data
316
- let logger;
317
- if ((this.makeLogger != null) && typeof params[1] === 'object') {
318
- logger = this.makeLogger(params[1].logger);
319
- params[1].logger = logger;
320
- logger.group(`StorageSever ${method}`);
321
- const userId = params[0]?.userId;
322
- const identityKey = params[0]?.identityKey;
323
- if (userId)
324
- logger.log(`userId: ${userId}`);
325
- if (identityKey)
326
- logger.log(`identityKey: ${identityKey}`);
327
- }
328
- try {
329
- const result = await this.storage[storageMethod](...(params || []));
330
- if (logger != null) {
331
- logger.groupEnd();
332
- logger.flush?.();
333
- if (logger.isOrigin) {
334
- // Potentially only flush if isOrigin...
335
- }
336
- else if ((logger.logs != null) && typeof result === 'object') {
337
- // If not the start of logging, return logged data with result.
338
- result.log = { logs: logger.logs };
339
- }
340
- }
341
- return sendRpc({ jsonrpc: '2.0', result, id });
342
- }
343
- catch (error_) {
344
- (0, WalletLogger_1.logWalletError)(error_, logger, 'error executing requested method');
345
- logger?.flush?.();
346
- throw error_;
347
- }
348
- }
349
- else {
350
- // Unknown method
351
- return sendRpc({
352
- jsonrpc: '2.0',
353
- error: { code: -32601, message: `Method not found: ${method}` },
354
- id
355
- }, 400);
356
- }
296
+ this.app.post('/', this.handleRpcRequest.bind(this));
297
+ }
298
+ async handleRpcRequest(req, res) {
299
+ if (!this.telemetry.enabled)
300
+ return await this.handleRpcRequestCore(req, res);
301
+ return await this.telemetry.withSpan('wallet.storage.rpc', {
302
+ component: 'wallet-storage-server',
303
+ kind: 'server',
304
+ carrier: req,
305
+ attributes: {
306
+ 'rpc.system': 'wallet-storage',
307
+ 'rpc.method': typeof req.body?.method === 'string' ? req.body.method : 'invalid'
357
308
  }
358
- catch (error) {
359
- /**
360
- * Catch any thrown errors from the local walletStorage method.
361
- *
362
- * Convert errors to standard JSON object format that can be converted
363
- * back to WalletError derived objects on the client side and re-thrown.
364
- *
365
- * Uses WalletError.fromJson(<error object>) on the client side to re-create
366
- * an error object of the right class and properties.
367
- */
368
- const json = WalletError_1.WalletError.unknownToJson(error);
369
- return sendRpc({
309
+ }, async (span) => await this.handleRpcRequestCore(req, res, span));
310
+ }
311
+ async handleRpcRequestCore(req, res, rpcSpan) {
312
+ const useBinary = req.header(BinaryJson_1.BINARY_ENCODING_HEADER) === BinaryJson_1.BINARY_ENCODING;
313
+ const requestUsesBinary = req.header(BinaryJson_1.BINARY_REQUEST_ENCODING_HEADER) === BinaryJson_1.BINARY_ENCODING;
314
+ if (useBinary)
315
+ res.set(BinaryJson_1.BINARY_ENCODING_HEADER, BinaryJson_1.BINARY_ENCODING);
316
+ const { jsonrpc, method, id } = req.body;
317
+ const params = (requestUsesBinary ? (0, BinaryJson_1.decodeBinaryJsonValue)(req.body.params) : req.body.params);
318
+ if (jsonrpc !== '2.0' || !method || typeof method !== 'string') {
319
+ return this.sendRpc(res, useBinary, { error: { code: -32600, message: 'Invalid Request' } }, 400);
320
+ }
321
+ const logObj = this.createRpcLog(req, method, id, params);
322
+ try {
323
+ const dispatch = await this.dispatchRpcCall(method, params, req, logObj, rpcSpan);
324
+ if (!dispatch.found) {
325
+ return this.sendRpc(res, useBinary, {
370
326
  jsonrpc: '2.0',
371
- error: JSON.parse(json),
327
+ error: { code: -32601, message: `Method not found: ${method}` },
372
328
  id
373
- });
329
+ }, 400);
330
+ }
331
+ return this.sendRpc(res, useBinary, { jsonrpc: '2.0', result: dispatch.result, id });
332
+ }
333
+ catch (error) {
334
+ return this.sendRpcError(res, useBinary, id, error);
335
+ }
336
+ }
337
+ traceHttpRequest(req, res, next) {
338
+ const span = this.telemetry.startSpan('wallet.storage.http.request', {
339
+ component: 'wallet-storage-server',
340
+ kind: 'server',
341
+ parent: (0, traceContext_1.parseTraceparent)(req.headers.traceparent),
342
+ carrier: req,
343
+ attributes: {
344
+ 'http.request.method': req.method,
345
+ 'http.request.body_size': Number(req.headers['content-length'] ?? 0),
346
+ 'network.protocol': 'http'
374
347
  }
375
348
  });
349
+ span.bind(req);
350
+ let ended = false;
351
+ const end = (status) => {
352
+ if (ended)
353
+ return;
354
+ ended = true;
355
+ span.end({
356
+ status,
357
+ attributes: {
358
+ 'http.response.status_code': res.statusCode
359
+ }
360
+ });
361
+ };
362
+ res.once('finish', () => {
363
+ end(res.statusCode >= 500 ? 'error' : 'ok');
364
+ });
365
+ res.once('close', () => {
366
+ end(res.writableEnded ? 'ok' : 'cancelled');
367
+ });
368
+ next();
369
+ }
370
+ sendRpc(res, useBinary, payload, status = 200) {
371
+ res.set('X-Content-Type-Options', 'nosniff');
372
+ // Normalize with the negotiated binary replacer, then let Express emit
373
+ // the JSON response through its escaping-aware JSON sink.
374
+ return res.status(status).json(JSON.parse((0, BinaryJson_1.stringifyJsonRpc)(payload, useBinary)));
375
+ }
376
+ sendRpcError(res, useBinary, id, error) {
377
+ /**
378
+ * Convert errors to standard JSON object format that can be converted back
379
+ * to WalletError derived objects on the client side and re-thrown.
380
+ */
381
+ const json = WalletError_1.WalletError.unknownToJson(error);
382
+ return this.sendRpc(res, useBinary, {
383
+ jsonrpc: '2.0',
384
+ error: JSON.parse(json),
385
+ id
386
+ });
387
+ }
388
+ createRpcLog(req, method, id, params) {
389
+ if (!this.logRpcRequests)
390
+ return undefined;
391
+ const logObj = {
392
+ source: 'StorageServer POST handler',
393
+ method,
394
+ requestIdType: typeof id,
395
+ authenticated: requiredAuthenticatedIdentityKey(req) !== '',
396
+ parameterCount: Array.isArray(params) ? params.length : 0
397
+ };
398
+ const traceContext = this.telemetry.contextFor(req)?.traceId ??
399
+ (0, traceContext_1.parseTraceparent)(firstRequestHeader(req, 'traceparent'))?.traceId ??
400
+ firstRequestHeader(req, 'X-Cloud-Trace-Context')?.split('/')[0];
401
+ if (traceContext) {
402
+ logObj['logging.googleapis.com/trace'] = `projects/computing-with-integrity/traces/${traceContext}`;
403
+ }
404
+ console.log(JSON.stringify(logObj));
405
+ return logObj;
406
+ }
407
+ async dispatchRpcCall(method, params, req, logObj, rpcSpan) {
408
+ if (!storageRpcMethods.has(method))
409
+ return { found: false };
410
+ const storageMethod = method === 'findOutputBaskets' ? 'findOutputBasketsAuth' : method;
411
+ const storageHandler = this.storage[storageMethod];
412
+ if (typeof storageHandler !== 'function')
413
+ return { found: false };
414
+ const shouldInvoke = await this.traceRpcStep('wallet.storage.authorize', rpcSpan, async () => await this.authorizeRpcCall(method, params, req, logObj), { 'rpc.method': method });
415
+ if (!shouldInvoke)
416
+ return { found: true, result: undefined };
417
+ const logger = this.createRpcLogger(method, params);
418
+ try {
419
+ const result = await this.traceRpcStep('wallet.storage.handler', rpcSpan, async () => await storageHandler.call(this.storage, ...params), { 'rpc.method': method });
420
+ this.finishRpcLogging(logger, result);
421
+ return { found: true, result };
422
+ }
423
+ catch (error) {
424
+ (0, WalletLogger_1.logWalletError)(error, logger, 'error executing requested method');
425
+ logger?.flush?.();
426
+ throw error;
427
+ }
428
+ }
429
+ async traceRpcStep(name, parent, callback, attributes) {
430
+ if (parent == null)
431
+ return await callback();
432
+ return await this.telemetry.withSpan(name, {
433
+ component: 'wallet-storage-server',
434
+ kind: 'server',
435
+ parent: parent.context,
436
+ attributes
437
+ }, callback);
438
+ }
439
+ async authorizeRpcCall(method, params, req, logObj) {
440
+ switch (method) {
441
+ case 'destroy':
442
+ this.logIgnoredDestroy(logObj);
443
+ return false;
444
+ case 'getSettings':
445
+ return true;
446
+ case 'findOrInsertUser':
447
+ if (params[0] !== requiredAuthenticatedIdentityKey(req)) {
448
+ throw new WERR_errors_1.WERR_UNAUTHORIZED('function may only access authenticated user.');
449
+ }
450
+ return true;
451
+ case 'adminStats':
452
+ this.authorizeAdminStats(params, req);
453
+ return true;
454
+ case 'processSyncChunk':
455
+ await this.validateParam0(params, req);
456
+ (0, entityValidationHelpers_1.validateSyncChunkEntities)(params[1]);
457
+ return true;
458
+ default:
459
+ await this.authorizeStandardRpcCall(method, params, req);
460
+ return true;
461
+ }
462
+ }
463
+ logIgnoredDestroy(logObj) {
464
+ if (logObj == null)
465
+ return;
466
+ logObj.result = undefined;
467
+ logObj.comment = 'IGNORED';
468
+ console.log(JSON.stringify(logObj));
469
+ }
470
+ authorizeAdminStats(params, req) {
471
+ const identityKey = requiredAuthenticatedIdentityKey(req);
472
+ if (params[0] !== identityKey) {
473
+ throw new WERR_errors_1.WERR_UNAUTHORIZED('function may only access authenticated admin user.');
474
+ }
475
+ if (!this.adminIdentityKeys?.includes(identityKey)) {
476
+ throw new WERR_errors_1.WERR_UNAUTHORIZED('function may only be accessed by admin user.');
477
+ }
478
+ }
479
+ async authorizeStandardRpcCall(method, params, req) {
480
+ if (authIdRpcMethods.has(method)) {
481
+ await this.bindAuthenticatedAuth(params, req, actionBatchRpcMethods.has(method));
482
+ return;
483
+ }
484
+ await this.validateParam0(params, req);
485
+ }
486
+ createRpcLogger(method, params) {
487
+ if (this.makeLogger == null || params[1] == null || typeof params[1] !== 'object')
488
+ return undefined;
489
+ const logger = this.makeLogger(params[1].logger);
490
+ params[1].logger = logger;
491
+ logger.group(`StorageSever ${method}`);
492
+ const userId = params[0]?.userId;
493
+ const identityKey = params[0]?.identityKey;
494
+ if (userId)
495
+ logger.log(`userId: ${userId}`);
496
+ if (identityKey)
497
+ logger.log(`identityKey: ${identityKey}`);
498
+ return logger;
499
+ }
500
+ finishRpcLogging(logger, result) {
501
+ if (logger == null)
502
+ return;
503
+ logger.groupEnd();
504
+ logger.flush?.();
505
+ if (!logger.isOrigin && logger.logs != null && result != null && typeof result === 'object') {
506
+ // If this is not the start of logging, return logged data with the result.
507
+ result.log = { logs: logger.logs };
508
+ }
376
509
  }
377
510
  async authenticatedAuth(req, requireActive) {
378
- const { user } = await this.storage.findOrInsertUser(req.auth.identityKey);
511
+ const identityKey = requiredAuthenticatedIdentityKey(req);
512
+ const { user } = await this.storage.findOrInsertUser(identityKey);
379
513
  const isActive = user.activeStorage === this.storage.getSettings().storageIdentityKey;
380
514
  if (requireActive && !isActive) {
381
- throw new WERR_errors_1.WERR_NOT_ACTIVE('action batch methods require the authenticated user\'s active storage provider');
515
+ throw new WERR_errors_1.WERR_NOT_ACTIVE("action batch methods require the authenticated user's active storage provider");
382
516
  }
383
517
  return {
384
- identityKey: req.auth.identityKey,
518
+ identityKey,
385
519
  userId: user.userId,
386
520
  isActive
387
521
  };
@@ -390,7 +524,8 @@ class StorageServer {
390
524
  if (!Array.isArray(params))
391
525
  throw new WERR_errors_1.WERR_UNAUTHORIZED('authenticated RPC parameters are required');
392
526
  const claimed = typeof params[0] === 'object' && params[0] != null ? params[0] : {};
393
- if (claimed.identityKey != null && claimed.identityKey !== req.auth.identityKey) {
527
+ const identityKey = requiredAuthenticatedIdentityKey(req);
528
+ if (claimed.identityKey != null && claimed.identityKey !== identityKey) {
394
529
  throw new WERR_errors_1.WERR_UNAUTHORIZED('identityKey does not match authentication');
395
530
  }
396
531
  const auth = await this.authenticatedAuth(req, requireActive);
@@ -406,11 +541,12 @@ class StorageServer {
406
541
  if (typeof params[0] !== 'object' || !params[0]) {
407
542
  params[0] = {};
408
543
  }
409
- if (params[0].identityKey && params[0].identityKey !== req.auth.identityKey) {
544
+ const identityKey = requiredAuthenticatedIdentityKey(req);
545
+ if (params[0].identityKey && params[0].identityKey !== identityKey) {
410
546
  throw new WERR_errors_1.WERR_UNAUTHORIZED('identityKey does not match authentication');
411
547
  }
412
- // console.log('looking up user with identityKey:', req.auth.identityKey)
413
- const { user } = await this.storage.findOrInsertUser(req.auth.identityKey);
548
+ // console.log('looking up user with identityKey:', identityKey)
549
+ const { user } = await this.storage.findOrInsertUser(identityKey);
414
550
  params[0].reqAuthUserId = user.userId;
415
551
  if (params[0].identityKey || params[0].userId != null)
416
552
  params[0].userId = user.userId;
@@ -420,6 +556,7 @@ class StorageServer {
420
556
  this.server = this.app.listen(this.port, () => {
421
557
  console.log(`WalletStorageServer listening at http://localhost:${this.port}`);
422
558
  });
559
+ (0, edgePolicy_1.configureHttpServer)(this.server, 'WALLET_STORAGE', this.httpPolicy);
423
560
  }
424
561
  async close() {
425
562
  if (this.server) {
@@ -429,7 +566,9 @@ class StorageServer {
429
566
  }
430
567
  }
431
568
  /** @see {@link validateDate} */
432
- validateDate(date) { return (0, entityValidationHelpers_1.validateDate)(date); }
569
+ validateDate(date) {
570
+ return (0, entityValidationHelpers_1.validateDate)(date);
571
+ }
433
572
  /**
434
573
  * Helper to force uniform behavior across database engines.
435
574
  * Use to process all individual records with time stamps retreived from database.