@bsv/wallet-toolbox 2.12.0 → 2.13.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 (693) hide show
  1. package/CHANGELOG.md +350 -1
  2. package/README.md +556 -6
  3. package/docs/README.md +8 -1
  4. package/docs/client.md +13057 -4632
  5. package/docs/identity-verification.md +196 -0
  6. package/docs/monitor.md +505 -190
  7. package/docs/services.md +4013 -1153
  8. package/docs/setup.md +98 -58
  9. package/docs/storage.md +5780 -1609
  10. package/docs/sync-transfer.md +144 -0
  11. package/docs/wallet.md +10155 -10871
  12. package/out/src/CWIStyleWalletManager.d.ts +6 -8
  13. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  14. package/out/src/CWIStyleWalletManager.js +170 -125
  15. package/out/src/CWIStyleWalletManager.js.map +1 -1
  16. package/out/src/Setup.d.ts +2 -0
  17. package/out/src/Setup.d.ts.map +1 -1
  18. package/out/src/Setup.js +3 -2
  19. package/out/src/Setup.js.map +1 -1
  20. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  21. package/out/src/ShamirWalletManager.js +34 -19
  22. package/out/src/ShamirWalletManager.js.map +1 -1
  23. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  24. package/out/src/SimpleWalletManager.js +7 -6
  25. package/out/src/SimpleWalletManager.js.map +1 -1
  26. package/out/src/Wallet.d.ts +50 -11
  27. package/out/src/Wallet.d.ts.map +1 -1
  28. package/out/src/Wallet.js +183 -107
  29. package/out/src/Wallet.js.map +1 -1
  30. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  31. package/out/src/WalletAuthenticationManager.js +282 -26
  32. package/out/src/WalletAuthenticationManager.js.map +1 -1
  33. package/out/src/WalletLogger.js +1 -1
  34. package/out/src/WalletLogger.js.map +1 -1
  35. package/out/src/WalletPermissionsManager.d.ts +30 -17
  36. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  37. package/out/src/WalletPermissionsManager.js +540 -312
  38. package/out/src/WalletPermissionsManager.js.map +1 -1
  39. package/out/src/WalletSettingsManager.d.ts +3 -2
  40. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  41. package/out/src/WalletSettingsManager.js +141 -6
  42. package/out/src/WalletSettingsManager.js.map +1 -1
  43. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  44. package/out/src/entropy/EntropyCollector.js +3 -2
  45. package/out/src/entropy/EntropyCollector.js.map +1 -1
  46. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  47. package/out/src/fundWalletP2PKH.js +143 -44
  48. package/out/src/fundWalletP2PKH.js.map +1 -1
  49. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  50. package/out/src/mockchain/MockChainTracker.js +5 -5
  51. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  52. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  53. package/out/src/mockchain/MockServices.js +32 -8
  54. package/out/src/mockchain/MockServices.js.map +1 -1
  55. package/out/src/monitor/Monitor.d.ts +17 -0
  56. package/out/src/monitor/Monitor.d.ts.map +1 -1
  57. package/out/src/monitor/Monitor.js +206 -42
  58. package/out/src/monitor/Monitor.js.map +1 -1
  59. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  60. package/out/src/monitor/MonitorDaemon.js +64 -16
  61. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  62. package/out/src/monitor/monitorValidation.d.ts +12 -0
  63. package/out/src/monitor/monitorValidation.d.ts.map +1 -0
  64. package/out/src/monitor/monitorValidation.js +133 -0
  65. package/out/src/monitor/monitorValidation.js.map +1 -0
  66. package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -0
  67. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  68. package/out/src/monitor/tasks/TaskArcSSE.js +28 -12
  69. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  70. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
  71. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  72. package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
  73. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  74. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  75. package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
  76. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  77. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  78. package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
  79. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  80. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  81. package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
  82. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  83. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -1
  84. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +9 -3
  85. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -1
  86. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  87. package/out/src/monitor/tasks/TaskReorg.js +4 -4
  88. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  89. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  90. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +17 -7
  91. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  92. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
  93. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  94. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
  95. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  96. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -4
  97. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  98. package/out/src/monitor/tasks/TaskReviewUtxos.js +41 -13
  99. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  100. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  101. package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
  102. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  103. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
  104. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  105. package/out/src/monitor/tasks/TaskUnFail.js +26 -8
  106. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  107. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  108. package/out/src/sdk/PrivilegedKeyManager.js +3 -2
  109. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  110. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  111. package/out/src/sdk/WalletErrorFromJson.js +112 -2
  112. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  113. package/out/src/sdk/WalletServices.interfaces.d.ts +23 -1
  114. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  115. package/out/src/sdk/WalletStorage.interfaces.d.ts +49 -3
  116. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  117. package/out/src/services/ServiceCollection.js +2 -2
  118. package/out/src/services/ServiceCollection.js.map +1 -1
  119. package/out/src/services/Services.d.ts +5 -0
  120. package/out/src/services/Services.d.ts.map +1 -1
  121. package/out/src/services/Services.js +276 -110
  122. package/out/src/services/Services.js.map +1 -1
  123. package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
  124. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  125. package/out/src/services/chaintracker/BHServiceClient.js +267 -66
  126. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  127. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
  128. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  129. package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
  130. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  131. package/out/src/services/chaintracker/LocalChainTracker.d.ts +26 -0
  132. package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -1
  133. package/out/src/services/chaintracker/LocalChainTracker.js +180 -10
  134. package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -1
  135. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  136. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
  137. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  138. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
  139. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  140. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +7 -0
  141. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  142. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +2 -0
  143. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  144. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
  145. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  146. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +19 -0
  147. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  148. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +237 -61
  149. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  150. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
  151. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  152. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
  153. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  154. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
  155. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  156. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +346 -30
  157. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  158. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
  159. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  160. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +375 -43
  161. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  162. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  163. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
  164. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  165. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  166. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
  167. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  168. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  169. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  170. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
  171. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
  172. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
  173. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
  174. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  175. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
  176. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  177. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
  178. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  179. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
  180. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  181. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  182. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
  183. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
  185. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
  187. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  188. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  189. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
  190. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  191. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
  192. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  193. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
  194. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  195. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
  196. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  197. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
  198. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  199. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  201. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
  202. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
  204. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
  206. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  208. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
  209. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  210. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
  211. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  212. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
  213. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  214. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
  215. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  216. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +225 -24
  217. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
  219. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
  221. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  222. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -0
  223. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  224. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +225 -86
  225. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  226. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
  227. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
  229. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -2
  231. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  234. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  236. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  238. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
  240. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  242. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
  243. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
  246. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +18 -0
  248. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +204 -14
  250. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
  252. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +486 -82
  254. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  255. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
  257. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  258. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +12 -2
  260. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  262. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
  263. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  264. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +1 -0
  265. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  266. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
  267. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  268. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +7 -0
  269. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  270. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +90 -24
  271. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  272. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
  273. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  274. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
  275. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  276. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +9 -0
  277. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -1
  278. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +100 -14
  279. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -1
  280. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  282. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +2 -0
  283. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
  284. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +104 -8
  285. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
  286. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +1 -0
  287. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -1
  288. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +79 -15
  289. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
  291. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
  293. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +6 -1
  295. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +311 -93
  297. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
  299. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
  300. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
  301. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
  302. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  304. package/out/src/services/classifyOutputUtxo.d.ts.map +1 -1
  305. package/out/src/services/classifyOutputUtxo.js +19 -10
  306. package/out/src/services/classifyOutputUtxo.js.map +1 -1
  307. package/out/src/services/fiatRateValidation.d.ts +12 -0
  308. package/out/src/services/fiatRateValidation.d.ts.map +1 -0
  309. package/out/src/services/fiatRateValidation.js +138 -0
  310. package/out/src/services/fiatRateValidation.js.map +1 -0
  311. package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
  312. package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
  313. package/out/src/services/getCanonicalMerklePath.js +90 -0
  314. package/out/src/services/getCanonicalMerklePath.js.map +1 -0
  315. package/out/src/services/providers/ARC.d.ts +3 -16
  316. package/out/src/services/providers/ARC.d.ts.map +1 -1
  317. package/out/src/services/providers/ARC.js +36 -37
  318. package/out/src/services/providers/ARC.js.map +1 -1
  319. package/out/src/services/providers/ArcSSEClient.d.ts +25 -19
  320. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  321. package/out/src/services/providers/ArcSSEClient.js +352 -85
  322. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  323. package/out/src/services/providers/Arcade.d.ts +1 -0
  324. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  325. package/out/src/services/providers/Arcade.js +56 -41
  326. package/out/src/services/providers/Arcade.js.map +1 -1
  327. package/out/src/services/providers/Bitails.d.ts +3 -0
  328. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  329. package/out/src/services/providers/Bitails.js +79 -12
  330. package/out/src/services/providers/Bitails.js.map +1 -1
  331. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  332. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  333. package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
  334. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  335. package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
  336. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  337. package/out/src/services/providers/WhatsOnChain.js +221 -69
  338. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  339. package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
  340. package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
  341. package/out/src/services/providers/arcProviderConfig.js +83 -0
  342. package/out/src/services/providers/arcProviderConfig.js.map +1 -0
  343. package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
  344. package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
  345. package/out/src/services/providers/arcTxDataValidation.js +92 -0
  346. package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
  347. package/out/src/services/providers/exchangeRates.d.ts +3 -3
  348. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  349. package/out/src/services/providers/exchangeRates.js +153 -226
  350. package/out/src/services/providers/exchangeRates.js.map +1 -1
  351. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  352. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  353. package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
  354. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
  355. package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
  356. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  357. package/out/src/services/validateMerklePathResult.d.ts +30 -0
  358. package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
  359. package/out/src/services/validateMerklePathResult.js +272 -0
  360. package/out/src/services/validateMerklePathResult.js.map +1 -0
  361. package/out/src/services/validatePostBeefResult.d.ts +17 -0
  362. package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
  363. package/out/src/services/validatePostBeefResult.js +334 -0
  364. package/out/src/services/validatePostBeefResult.js.map +1 -0
  365. package/out/src/services/validateRawTxResult.d.ts +6 -0
  366. package/out/src/services/validateRawTxResult.d.ts.map +1 -0
  367. package/out/src/services/validateRawTxResult.js +77 -0
  368. package/out/src/services/validateRawTxResult.js.map +1 -0
  369. package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
  370. package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
  371. package/out/src/services/validateScriptHashHistoryResult.js +99 -0
  372. package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
  373. package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
  374. package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
  375. package/out/src/services/validateStatusForTxidsResult.js +181 -0
  376. package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
  377. package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
  378. package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
  379. package/out/src/services/validateUtxoStatusResult.js +126 -0
  380. package/out/src/services/validateUtxoStatusResult.js.map +1 -0
  381. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  382. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  383. package/out/src/signer/actionBatch/ActionBatchPlanner.js +4 -3
  384. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  385. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +6 -5
  386. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  387. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +70 -76
  388. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  389. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
  390. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
  391. package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
  392. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
  393. package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
  394. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  395. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  396. package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
  397. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  398. package/out/src/signer/methods/buildSignableTransaction.js +6 -11
  399. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  400. package/out/src/signer/methods/createAction.d.ts +4 -3
  401. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  402. package/out/src/signer/methods/createAction.js +4 -2
  403. package/out/src/signer/methods/createAction.js.map +1 -1
  404. package/out/src/signer/methods/createNoSendExpiryAction.d.ts +3 -3
  405. package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -1
  406. package/out/src/signer/methods/createNoSendExpiryAction.js +9 -4
  407. package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -1
  408. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  409. package/out/src/signer/methods/internalizeAction.js +2 -2
  410. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  411. package/out/src/signer/methods/proveCertificate.d.ts +3 -2
  412. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  413. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  414. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  415. package/out/src/signer/methods/signAction.js +3 -2
  416. package/out/src/signer/methods/signAction.js.map +1 -1
  417. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
  418. package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
  419. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
  420. package/out/src/storage/StorageIdb.d.ts +6 -3
  421. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  422. package/out/src/storage/StorageIdb.js +70 -42
  423. package/out/src/storage/StorageIdb.js.map +1 -1
  424. package/out/src/storage/StorageKnex.d.ts +8 -4
  425. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  426. package/out/src/storage/StorageKnex.js +185 -92
  427. package/out/src/storage/StorageKnex.js.map +1 -1
  428. package/out/src/storage/StorageProvider.d.ts +19 -9
  429. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  430. package/out/src/storage/StorageProvider.js +237 -138
  431. package/out/src/storage/StorageProvider.js.map +1 -1
  432. package/out/src/storage/StorageReader.d.ts +7 -1
  433. package/out/src/storage/StorageReader.d.ts.map +1 -1
  434. package/out/src/storage/StorageReader.js +17 -42
  435. package/out/src/storage/StorageReader.js.map +1 -1
  436. package/out/src/storage/StorageReaderWriter.d.ts +2 -0
  437. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  438. package/out/src/storage/StorageReaderWriter.js +63 -38
  439. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  440. package/out/src/storage/StorageSyncReader.d.ts +1 -1
  441. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  442. package/out/src/storage/StorageSyncReader.js +3 -36
  443. package/out/src/storage/StorageSyncReader.js.map +1 -1
  444. package/out/src/storage/WalletStorageManager.d.ts +9 -7
  445. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  446. package/out/src/storage/WalletStorageManager.js +71 -65
  447. package/out/src/storage/WalletStorageManager.js.map +1 -1
  448. package/out/src/storage/adminServer/adminServer.d.ts +1 -1
  449. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  450. package/out/src/storage/adminServer/adminServer.js +16 -44
  451. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  452. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  453. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  454. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  455. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
  456. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  457. package/out/src/storage/methods/ListOutputsSpecOp.js +1 -0
  458. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  459. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  460. package/out/src/storage/methods/actionBatch.js +3 -2
  461. package/out/src/storage/methods/actionBatch.js.map +1 -1
  462. package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
  463. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  464. package/out/src/storage/methods/actionBatchBlobs.js +40 -22
  465. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  466. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  467. package/out/src/storage/methods/actionBatchValidation.js +22 -30
  468. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  469. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
  470. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  471. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +57 -44
  472. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  473. package/out/src/storage/methods/createAction.d.ts +7 -6
  474. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  475. package/out/src/storage/methods/createAction.js +7 -5
  476. package/out/src/storage/methods/createAction.js.map +1 -1
  477. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  478. package/out/src/storage/methods/generateChange.js +12 -11
  479. package/out/src/storage/methods/generateChange.js.map +1 -1
  480. package/out/src/storage/methods/getBeefForTransaction.js +5 -7
  481. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  482. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  483. package/out/src/storage/methods/getSyncChunk.js +42 -11
  484. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  485. package/out/src/storage/methods/internalizeAction.d.ts +3 -3
  486. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  487. package/out/src/storage/methods/internalizeAction.js +134 -129
  488. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  489. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  490. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  491. package/out/src/storage/methods/listActionsIdb.js +2 -2
  492. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  493. package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
  494. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  495. package/out/src/storage/methods/listActionsKnex.js +10 -9
  496. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  497. package/out/src/storage/methods/listCertificates.d.ts +3 -2
  498. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  499. package/out/src/storage/methods/listCertificates.js.map +1 -1
  500. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  501. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  502. package/out/src/storage/methods/listOutputsIdb.js +11 -11
  503. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  504. package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
  505. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  506. package/out/src/storage/methods/listOutputsKnex.js +15 -23
  507. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  508. package/out/src/storage/methods/noSendExpiry.d.ts +3 -3
  509. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
  510. package/out/src/storage/methods/noSendExpiry.js +10 -8
  511. package/out/src/storage/methods/noSendExpiry.js.map +1 -1
  512. package/out/src/storage/methods/preparedBeef.d.ts.map +1 -1
  513. package/out/src/storage/methods/preparedBeef.js +13 -14
  514. package/out/src/storage/methods/preparedBeef.js.map +1 -1
  515. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  516. package/out/src/storage/methods/processAction.js +37 -6
  517. package/out/src/storage/methods/processAction.js.map +1 -1
  518. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +1 -1
  519. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -1
  520. package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -1
  521. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  522. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  523. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  524. package/out/src/storage/methods/reviewUtxoOutputs.d.ts +1 -0
  525. package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -1
  526. package/out/src/storage/methods/reviewUtxoOutputs.js +51 -4
  527. package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -1
  528. package/out/src/storage/methods/validateSyncProof.d.ts +10 -2
  529. package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
  530. package/out/src/storage/methods/validateSyncProof.js +27 -4
  531. package/out/src/storage/methods/validateSyncProof.js.map +1 -1
  532. package/out/src/storage/portable/index.d.ts.map +1 -1
  533. package/out/src/storage/portable/index.js +21 -13
  534. package/out/src/storage/portable/index.js.map +1 -1
  535. package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
  536. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  537. package/out/src/storage/remoting/BinaryJson.js +94 -8
  538. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  539. package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
  540. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  541. package/out/src/storage/remoting/KnexSessionManager.js +222 -30
  542. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  543. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
  544. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
  545. package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
  546. package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
  547. package/out/src/storage/remoting/StorageClient.d.ts +6 -1
  548. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  549. package/out/src/storage/remoting/StorageClient.js +65 -8
  550. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  551. package/out/src/storage/remoting/StorageClientBase.d.ts +53 -10
  552. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  553. package/out/src/storage/remoting/StorageClientBase.js +304 -9
  554. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  555. package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
  556. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  557. package/out/src/storage/remoting/StorageMobile.js +13 -11
  558. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  559. package/out/src/storage/remoting/StorageServer.d.ts +10 -1
  560. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  561. package/out/src/storage/remoting/StorageServer.js +206 -21
  562. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  563. package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
  564. package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
  565. package/out/src/storage/remoting/SyncTransfer.js +153 -0
  566. package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
  567. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  568. package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
  569. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  570. package/out/src/storage/remoting/syncChunkBinary.d.ts +4 -0
  571. package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
  572. package/out/src/storage/remoting/syncChunkBinary.js +38 -0
  573. package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
  574. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
  575. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
  576. package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
  577. package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
  578. package/out/src/storage/schema/KnexMigrations.d.ts +3 -0
  579. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  580. package/out/src/storage/schema/KnexMigrations.js +89 -2
  581. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  582. package/out/src/storage/schema/StorageIdbSchema.d.ts +1 -0
  583. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  584. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  585. package/out/src/storage/schema/entities/EntityOutput.js +11 -4
  586. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  587. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +2 -1
  588. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  589. package/out/src/storage/schema/entities/EntityProvenTx.js +95 -41
  590. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  591. package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
  592. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  593. package/out/src/storage/schema/entities/EntitySyncState.d.ts +3 -1
  594. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  595. package/out/src/storage/schema/entities/EntitySyncState.js +7 -1
  596. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  597. package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
  598. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  599. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  600. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  601. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  602. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  603. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  604. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  605. package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
  606. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  607. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  608. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  609. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  610. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  611. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  612. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  613. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  614. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  615. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
  616. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  617. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  618. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  619. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  620. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  621. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  622. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  623. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
  624. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  625. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  626. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  627. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  628. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  629. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  630. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  631. package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
  632. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  633. package/out/src/storage/sync/SyncPageBudget.d.ts +8 -0
  634. package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
  635. package/out/src/storage/sync/SyncPageBudget.js +24 -0
  636. package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
  637. package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
  638. package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
  639. package/out/src/storage/sync/syncCheckpoint.js +49 -0
  640. package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
  641. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  642. package/out/src/utility/actionBatchDigest.js +9 -7
  643. package/out/src/utility/actionBatchDigest.js.map +1 -1
  644. package/out/src/utility/actionBatchPack.d.ts.map +1 -1
  645. package/out/src/utility/actionBatchPack.js +7 -12
  646. package/out/src/utility/actionBatchPack.js.map +1 -1
  647. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  648. package/out/src/utility/brc153ReferenceLabels.js +4 -4
  649. package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
  650. package/out/src/utility/brc177NoSendExpiry.d.ts +2 -2
  651. package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -1
  652. package/out/src/utility/canonicalizeAtomicBeef.js +2 -2
  653. package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -1
  654. package/out/src/utility/exactActionSpend.d.ts +11 -0
  655. package/out/src/utility/exactActionSpend.d.ts.map +1 -0
  656. package/out/src/utility/exactActionSpend.js +11 -0
  657. package/out/src/utility/exactActionSpend.js.map +1 -0
  658. package/out/src/utility/identityUtils.d.ts +44 -4
  659. package/out/src/utility/identityUtils.d.ts.map +1 -1
  660. package/out/src/utility/identityUtils.js +376 -61
  661. package/out/src/utility/identityUtils.js.map +1 -1
  662. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  663. package/out/src/utility/parseTxScriptOffsets.js +1 -19
  664. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  665. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  666. package/out/src/utility/tscProofToMerklePath.js +35 -4
  667. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  668. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  669. package/out/src/utility/utilityHelpers.js +8 -6
  670. package/out/src/utility/utilityHelpers.js.map +1 -1
  671. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  672. package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
  673. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  674. package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
  675. package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
  676. package/out/src/utility/verifyOverlayOutput.js +22 -0
  677. package/out/src/utility/verifyOverlayOutput.js.map +1 -0
  678. package/out/src/utility/walletResultGuards.d.ts +14 -0
  679. package/out/src/utility/walletResultGuards.d.ts.map +1 -0
  680. package/out/src/utility/walletResultGuards.js +28 -0
  681. package/out/src/utility/walletResultGuards.js.map +1 -0
  682. package/out/src/wab-client/WABClient.d.ts +3 -17
  683. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  684. package/out/src/wab-client/WABClient.js +30 -14
  685. package/out/src/wab-client/WABClient.js.map +1 -1
  686. package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
  687. package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
  688. package/out/src/wab-client/WABResponseValidation.js +321 -0
  689. package/out/src/wab-client/WABResponseValidation.js.map +1 -0
  690. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  691. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
  692. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  693. package/package.json +6 -5
@@ -7,6 +7,7 @@ exports.binaryJsonReviver = binaryJsonReviver;
7
7
  exports.decodeBinaryJsonValue = decodeBinaryJsonValue;
8
8
  exports.stringifyJsonRpc = stringifyJsonRpc;
9
9
  exports.parseJsonRpc = parseJsonRpc;
10
+ exports.validateJsonRpcResponse = validateJsonRpcResponse;
10
11
  exports.BINARY_ENCODING_HEADER = 'X-BSV-Binary-Encoding';
11
12
  exports.BINARY_REQUEST_ENCODING_HEADER = 'X-BSV-Binary-Request-Encoding';
12
13
  exports.BINARY_ENCODING = 'base64';
@@ -178,6 +179,23 @@ function binaryJsonReviver(_key, value) {
178
179
  return Object.fromEntries(value.entries);
179
180
  return value;
180
181
  }
182
+ function collectDecodedChildren(current, replacements, stack) {
183
+ if (Array.isArray(current)) {
184
+ // Numeric byte arrays are common in sync responses. Avoid allocating an
185
+ // entry tuple and invoking a JSON reviver for every byte.
186
+ for (let index = 0; index < current.length; index++) {
187
+ const child = current[index];
188
+ if (child != null && typeof child === 'object') {
189
+ collectDecodedChild(String(index), child, replacements, stack);
190
+ }
191
+ }
192
+ }
193
+ else {
194
+ for (const [key, child] of Object.entries(current)) {
195
+ collectDecodedChild(key, child, replacements, stack);
196
+ }
197
+ }
198
+ }
181
199
  function decodeBinaryJsonValue(value) {
182
200
  if (isTaggedBinary(value))
183
201
  return fromBase64(value.data);
@@ -193,9 +211,7 @@ function decodeBinaryJsonValue(value) {
193
211
  if (current == null)
194
212
  continue;
195
213
  const replacements = [];
196
- for (const [key, child] of Object.entries(current)) {
197
- collectDecodedChild(key, child, replacements, stack);
198
- }
214
+ collectDecodedChildren(current, replacements, stack);
199
215
  if (replacements.length > 0)
200
216
  defineOwnValues(current, replacements);
201
217
  }
@@ -208,11 +224,81 @@ const JSON_RPC_REPLACERS = new Map([
208
224
  function stringifyJsonRpc(value, binary) {
209
225
  return JSON.stringify(value, JSON_RPC_REPLACERS.get(binary));
210
226
  }
211
- const JSON_RPC_REVIVERS = new Map([
212
- [true, binaryJsonReviver],
213
- [false, undefined]
214
- ]);
227
+ function pushJsonChildren(frame, stack) {
228
+ const push = (key, child) => {
229
+ if (child != null && typeof child === 'object') {
230
+ stack.push({ value: child, holder: frame.value, key, visited: false });
231
+ }
232
+ };
233
+ if (Array.isArray(frame.value)) {
234
+ for (let index = frame.value.length - 1; index >= 0; index--) {
235
+ const child = frame.value[index];
236
+ if (child != null && typeof child === 'object')
237
+ push(String(index), child);
238
+ }
239
+ }
240
+ else {
241
+ const entries = Object.entries(frame.value);
242
+ for (let index = entries.length - 1; index >= 0; index--)
243
+ push(...entries[index]);
244
+ }
245
+ }
215
246
  function parseJsonRpc(text, binary = false) {
216
- return JSON.parse(text, JSON_RPC_REVIVERS.get(binary));
247
+ const value = JSON.parse(text);
248
+ if (!binary || value == null || typeof value !== 'object')
249
+ return value;
250
+ // Match the exported reviver's bottom-up semantics, including escaped
251
+ // marker collisions and duplicate entry validation, without a callback per
252
+ // scalar byte or recursion proportional to remote JSON nesting depth.
253
+ const root = { value };
254
+ const stack = [{ value, holder: root, key: 'value', visited: false }];
255
+ while (stack.length > 0) {
256
+ const frame = stack.pop();
257
+ if (frame.visited) {
258
+ const decoded = binaryJsonReviver(frame.key, frame.value);
259
+ if (decoded !== frame.value)
260
+ defineOwnValues(frame.holder, [[frame.key, decoded]]);
261
+ continue;
262
+ }
263
+ stack.push({ ...frame, visited: true });
264
+ pushJsonChildren(frame, stack);
265
+ }
266
+ return root.value;
267
+ }
268
+ /** Require one exact response for the request that produced it. */
269
+ function validateJsonRpcResponse(value, expectedId) {
270
+ if (value == null || typeof value !== 'object' || Array.isArray(value)) {
271
+ throw new Error('Wallet storage returned an invalid JSON-RPC response');
272
+ }
273
+ const prototype = Object.getPrototypeOf(value);
274
+ const properties = Object.getOwnPropertyDescriptors(value);
275
+ const keys = Object.keys(properties);
276
+ if ((prototype !== Object.prototype && prototype !== null) ||
277
+ Object.getOwnPropertySymbols(value).length !== 0 ||
278
+ Object.values(properties).some(property => property.get != null || property.set != null) ||
279
+ keys.some(key => key !== 'jsonrpc' && key !== 'id' && key !== 'result' && key !== 'error') ||
280
+ keys.length !== 3 ||
281
+ properties.jsonrpc?.value !== '2.0' ||
282
+ properties.id?.value !== expectedId ||
283
+ !Number.isSafeInteger(expectedId) ||
284
+ expectedId < 1 ||
285
+ Object.prototype.hasOwnProperty.call(properties, 'result') ===
286
+ Object.prototype.hasOwnProperty.call(properties, 'error')) {
287
+ throw new Error('Wallet storage returned an invalid JSON-RPC response');
288
+ }
289
+ if (Object.prototype.hasOwnProperty.call(properties, 'error')) {
290
+ const error = properties.error.value;
291
+ if (error == null || typeof error !== 'object' || Array.isArray(error)) {
292
+ throw new Error('Wallet storage returned an invalid JSON-RPC response');
293
+ }
294
+ const errorPrototype = Object.getPrototypeOf(error);
295
+ const errorProperties = Object.getOwnPropertyDescriptors(error);
296
+ if ((errorPrototype !== Object.prototype && errorPrototype !== null) ||
297
+ Object.getOwnPropertySymbols(error).length !== 0 ||
298
+ Object.values(errorProperties).some(property => property.get != null || property.set != null)) {
299
+ throw new Error('Wallet storage returned an invalid JSON-RPC response');
300
+ }
301
+ }
302
+ return value;
217
303
  }
218
304
  //# sourceMappingURL=BinaryJson.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryJson.js","sourceRoot":"","sources":["../../../../src/storage/remoting/BinaryJson.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BinaryJson.js","sourceRoot":"","sources":["../../../../src/storage/remoting/BinaryJson.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  import { AsyncSessionManager, PeerSession } from '@bsv/sdk';
2
2
  import { Knex } from 'knex';
3
3
  export declare const AUTH_SESSION_TABLE = "auth_sessions";
4
+ export declare const AUTH_MESSAGE_NONCE_TABLE = "auth_message_nonces";
4
5
  export declare const DEFAULT_AUTH_SESSION_TTL_MS: number;
5
6
  export declare const DEFAULT_AUTH_SESSION_TOUCH_INTERVAL_MS: number;
7
+ export declare const DEFAULT_MAX_AUTH_MESSAGE_NONCES_PER_SESSION = 100000;
8
+ export declare const DEFAULT_MAX_INITIAL_REQUEST_NONCES = 100000;
9
+ export declare const DEFAULT_MAX_INITIAL_REQUEST_NONCES_PER_IDENTITY = 100000;
6
10
  export interface KnexSessionManagerOptions {
7
11
  /** Session lifetime since its most recent authenticated use. Default: 24 hours. */
8
12
  ttlMs?: number;
@@ -12,6 +16,16 @@ export interface KnexSessionManagerOptions {
12
16
  * immediately. Default: 1 minute (or one quarter of ttlMs when shorter).
13
17
  */
14
18
  touchIntervalMs?: number;
19
+ /** Maximum one-time signed message nonces retained per active session. */
20
+ maxMessageNoncesPerSession?: number;
21
+ /** Maximum unsigned initial-request replay claims retained across all identities. */
22
+ maxInitialRequestNonces?: number;
23
+ /**
24
+ * Maximum unsigned initial-request replay claims retained per identity.
25
+ * The oldest claim is evicted at capacity so unauthenticated traffic cannot
26
+ * permanently disable new handshakes. Default: 100,000.
27
+ */
28
+ maxInitialRequestNoncesPerIdentity?: number;
15
29
  /** Testable clock source. Defaults to `Date.now`. */
16
30
  now?: () => number;
17
31
  }
@@ -19,14 +33,18 @@ export interface KnexSessionManagerOptions {
19
33
  * Shared BRC-103 session storage for horizontally scaled StorageServer nodes.
20
34
  *
21
35
  * Every instance must use the same Knex database. The wallet-toolbox migration
22
- * creates the required `auth_sessions` table. Writes are monotonic by
23
- * `PeerSession.lastUpdate`, preventing a delayed request on one replica from
36
+ * creates the required `auth_sessions` and `auth_message_nonces` tables. The
37
+ * nonce table atomically rejects replay across replicas. Writes are monotonic
38
+ * by `PeerSession.lastUpdate`, preventing a delayed request on one replica from
24
39
  * replacing newer session state written by another replica.
25
40
  */
26
41
  export declare class KnexSessionManager implements AsyncSessionManager {
27
42
  private readonly knex;
28
43
  private readonly ttlMs;
29
44
  private readonly touchIntervalMs;
45
+ private readonly maxMessageNoncesPerSession;
46
+ private readonly maxInitialRequestNonces;
47
+ private readonly maxInitialRequestNoncesPerIdentity;
30
48
  private readonly now;
31
49
  /** Rows associated with session objects returned by this manager. */
32
50
  private readonly persistedRows;
@@ -36,9 +54,14 @@ export declare class KnexSessionManager implements AsyncSessionManager {
36
54
  getSession(identifier: string): Promise<PeerSession | undefined>;
37
55
  removeSession(session: PeerSession): Promise<void>;
38
56
  hasSession(identifier: string): Promise<boolean>;
57
+ /** Atomically reject reuse of a signed BRC-103 message nonce across replicas. */
58
+ claimMessageNonce(sessionNonce: string, messageNonce: string): Promise<boolean>;
59
+ /** Atomically reject replayed unsigned initial requests across replicas. */
60
+ claimInitialRequestNonce(identityKey: string, initialNonce: string): Promise<boolean>;
39
61
  /** Delete expired rows. Call from an operator-controlled maintenance task. */
40
62
  pruneExpiredSessions(): Promise<number>;
41
63
  private activeSessions;
64
+ private evictOldestInitialRequestClaims;
42
65
  private persistSession;
43
66
  private validatePersistentSession;
44
67
  /**
@@ -53,5 +76,6 @@ export declare class KnexSessionManager implements AsyncSessionManager {
53
76
  private updateIfCurrentOrNewer;
54
77
  private mergeNullableBoolean;
55
78
  private toTableAuthSession;
79
+ private currentTime;
56
80
  }
57
81
  //# sourceMappingURL=KnexSessionManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KnexSessionManager.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/KnexSessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,eAAO,MAAM,kBAAkB,kBAAkB,CAAA;AACjD,eAAO,MAAM,2BAA2B,QAAsB,CAAA;AAC9D,eAAO,MAAM,sCAAsC,QAAY,CAAA;AAG/D,MAAM,WAAW,yBAAyB;IACxC,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAO/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IANlC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+C;IAE7E,YAA8B,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,yBAA8B,EAchF;IAEK,UAAU,CAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;IAEK,aAAa,CAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;IAEK,UAAU,CAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAYtE;IAEK,aAAa,CAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBxD;IAEK,UAAU,CAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtD;IAED,8EAA8E;IACxE,oBAAoB,IAAK,OAAO,CAAC,MAAM,CAAC,CAI7C;IAED,OAAO,CAAC,cAAc;YAKR,cAAc;IAyC5B,OAAO,CAAC,yBAAyB;IASjC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,aAAa;YAMP,sBAAsB;IAwBpC,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,kBAAkB;CAiB3B"}
1
+ {"version":3,"file":"KnexSessionManager.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/KnexSessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,eAAO,MAAM,kBAAkB,kBAAkB,CAAA;AACjD,eAAO,MAAM,wBAAwB,wBAAwB,CAAA;AAC7D,eAAO,MAAM,2BAA2B,QAAsB,CAAA;AAC9D,eAAO,MAAM,sCAAsC,QAAY,CAAA;AAC/D,eAAO,MAAM,2CAA2C,SAAU,CAAA;AAClE,eAAO,MAAM,kCAAkC,SAAU,CAAA;AACzD,eAAO,MAAM,+CAA+C,SAAU,CAAA;AAGtE,MAAM,WAAW,yBAAyB;IACxC,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,qFAAqF;IACrF,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC;;;;OAIG;IACH,kCAAkC,CAAC,EAAE,MAAM,CAAA;IAC3C,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAW1D,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAQ;IACnD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAAQ;IAC3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+C;IAE7E,YACmB,IAAI,EAAE,IAAI,EAC3B,OAAO,GAAE,yBAA8B,EA8BxC;IAEK,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpD;IAEK,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvD;IAEK,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAoBrE;IAEK,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvD;IAEK,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMrD;IAED,iFAAiF;IAC3E,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoCpF;IAED,4EAA4E;IACtE,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyD1F;IAED,8EAA8E;IACxE,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAsB5C;IAED,OAAO,CAAC,cAAc;YAIR,+BAA+B;YAiC/B,cAAc;IAyC5B,OAAO,CAAC,yBAAyB;IASjC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,aAAa;YAMP,sBAAsB;IAwBpC,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,WAAW;CAOpB"}
@@ -1,29 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KnexSessionManager = exports.DEFAULT_AUTH_SESSION_TOUCH_INTERVAL_MS = exports.DEFAULT_AUTH_SESSION_TTL_MS = exports.AUTH_SESSION_TABLE = void 0;
3
+ exports.KnexSessionManager = exports.DEFAULT_MAX_INITIAL_REQUEST_NONCES_PER_IDENTITY = exports.DEFAULT_MAX_INITIAL_REQUEST_NONCES = exports.DEFAULT_MAX_AUTH_MESSAGE_NONCES_PER_SESSION = exports.DEFAULT_AUTH_SESSION_TOUCH_INTERVAL_MS = exports.DEFAULT_AUTH_SESSION_TTL_MS = exports.AUTH_MESSAGE_NONCE_TABLE = exports.AUTH_SESSION_TABLE = void 0;
4
4
  const TableAuthSession_1 = require("../schema/tables/TableAuthSession");
5
5
  exports.AUTH_SESSION_TABLE = 'auth_sessions';
6
+ exports.AUTH_MESSAGE_NONCE_TABLE = 'auth_message_nonces';
6
7
  exports.DEFAULT_AUTH_SESSION_TTL_MS = 24 * 60 * 60 * 1000;
7
8
  exports.DEFAULT_AUTH_SESSION_TOUCH_INTERVAL_MS = 60 * 1000;
9
+ exports.DEFAULT_MAX_AUTH_MESSAGE_NONCES_PER_SESSION = 100_000;
10
+ exports.DEFAULT_MAX_INITIAL_REQUEST_NONCES = 100_000;
11
+ exports.DEFAULT_MAX_INITIAL_REQUEST_NONCES_PER_IDENTITY = 100_000;
8
12
  /**
9
13
  * Shared BRC-103 session storage for horizontally scaled StorageServer nodes.
10
14
  *
11
15
  * Every instance must use the same Knex database. The wallet-toolbox migration
12
- * creates the required `auth_sessions` table. Writes are monotonic by
13
- * `PeerSession.lastUpdate`, preventing a delayed request on one replica from
16
+ * creates the required `auth_sessions` and `auth_message_nonces` tables. The
17
+ * nonce table atomically rejects replay across replicas. Writes are monotonic
18
+ * by `PeerSession.lastUpdate`, preventing a delayed request on one replica from
14
19
  * replacing newer session state written by another replica.
15
20
  */
16
21
  class KnexSessionManager {
17
22
  knex;
18
23
  ttlMs;
19
24
  touchIntervalMs;
25
+ maxMessageNoncesPerSession;
26
+ maxInitialRequestNonces;
27
+ maxInitialRequestNoncesPerIdentity;
20
28
  now;
21
29
  /** Rows associated with session objects returned by this manager. */
22
30
  persistedRows = new WeakMap();
23
31
  constructor(knex, options = {}) {
24
32
  this.knex = knex;
25
33
  this.ttlMs = options.ttlMs ?? exports.DEFAULT_AUTH_SESSION_TTL_MS;
26
- this.touchIntervalMs = options.touchIntervalMs ?? Math.min(exports.DEFAULT_AUTH_SESSION_TOUCH_INTERVAL_MS, Math.max(1, Math.floor(this.ttlMs / 4)));
34
+ this.touchIntervalMs =
35
+ options.touchIntervalMs ??
36
+ Math.min(exports.DEFAULT_AUTH_SESSION_TOUCH_INTERVAL_MS, Math.max(1, Math.floor(this.ttlMs / 4)));
37
+ this.maxMessageNoncesPerSession = options.maxMessageNoncesPerSession ?? exports.DEFAULT_MAX_AUTH_MESSAGE_NONCES_PER_SESSION;
38
+ this.maxInitialRequestNonces = options.maxInitialRequestNonces ?? exports.DEFAULT_MAX_INITIAL_REQUEST_NONCES;
39
+ this.maxInitialRequestNoncesPerIdentity =
40
+ options.maxInitialRequestNoncesPerIdentity ?? exports.DEFAULT_MAX_INITIAL_REQUEST_NONCES_PER_IDENTITY;
27
41
  this.now = options.now ?? Date.now;
28
42
  if (!Number.isSafeInteger(this.ttlMs) || this.ttlMs <= 0) {
29
43
  throw new TypeError('KnexSessionManager ttlMs must be a positive safe integer.');
@@ -31,6 +45,18 @@ class KnexSessionManager {
31
45
  if (!Number.isSafeInteger(this.touchIntervalMs) || this.touchIntervalMs < 0) {
32
46
  throw new TypeError('KnexSessionManager touchIntervalMs must be a non-negative safe integer.');
33
47
  }
48
+ if (!Number.isSafeInteger(this.maxMessageNoncesPerSession) || this.maxMessageNoncesPerSession < 1) {
49
+ throw new TypeError('KnexSessionManager maxMessageNoncesPerSession must be a positive safe integer.');
50
+ }
51
+ if (!Number.isSafeInteger(this.maxInitialRequestNonces) || this.maxInitialRequestNonces < 1) {
52
+ throw new TypeError('KnexSessionManager maxInitialRequestNonces must be a positive safe integer.');
53
+ }
54
+ if (!Number.isSafeInteger(this.maxInitialRequestNoncesPerIdentity) || this.maxInitialRequestNoncesPerIdentity < 1) {
55
+ throw new TypeError('KnexSessionManager maxInitialRequestNoncesPerIdentity must be a positive safe integer.');
56
+ }
57
+ if (typeof this.now !== 'function') {
58
+ throw new TypeError('KnexSessionManager now must be a function.');
59
+ }
34
60
  }
35
61
  async addSession(session) {
36
62
  await this.persistSession(session, false);
@@ -39,13 +65,21 @@ class KnexSessionManager {
39
65
  await this.persistSession(session, true);
40
66
  }
41
67
  async getSession(identifier) {
42
- const byNonce = await this.activeSessions()
43
- .where({ sessionNonce: identifier })
44
- .first();
68
+ const byNonce = await this.activeSessions().where({ sessionNonce: identifier }).first();
45
69
  if (byNonce != null)
46
70
  return this.sessionForRow(byNonce);
47
71
  const byIdentity = await this.activeSessions()
48
72
  .where({ peerIdentityKey: identifier })
73
+ .orderBy('isAuthenticated', 'desc')
74
+ .orderByRaw('CASE WHEN ?? = ? AND COALESCE(??, ?) <> ? THEN ? ELSE ? END DESC', [
75
+ 'certificatesRequired',
76
+ true,
77
+ 'certificatesValidated',
78
+ false,
79
+ true,
80
+ 0,
81
+ 1
82
+ ])
49
83
  .orderBy('lastUpdate', 'desc')
50
84
  .orderBy('sessionNonce', 'desc')
51
85
  .first();
@@ -56,17 +90,15 @@ class KnexSessionManager {
56
90
  return;
57
91
  if (!Number.isSafeInteger(session.lastUpdate) || session.lastUpdate < 0)
58
92
  return;
59
- await this.knex(exports.AUTH_SESSION_TABLE)
93
+ const removed = await this.knex(exports.AUTH_SESSION_TABLE)
60
94
  .where({ sessionNonce: session.sessionNonce })
61
95
  .where(function () {
62
96
  // Knex query builders are thenable, but these calls only build the
63
97
  // surrounding delete predicate; they do not start standalone queries.
64
98
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
65
- this.where('lastUpdate', '<', session.lastUpdate)
66
- .orWhere(function () {
99
+ this.where('lastUpdate', '<', session.lastUpdate).orWhere(function () {
67
100
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
68
- this.where('lastUpdate', '=', session.lastUpdate)
69
- .where('isAuthenticated', session.isAuthenticated);
101
+ this.where('lastUpdate', '=', session.lastUpdate).where('isAuthenticated', session.isAuthenticated);
70
102
  applyNullableMatch(this, 'peerNonce', session.peerNonce);
71
103
  applyNullableMatch(this, 'peerIdentityKey', session.peerIdentityKey);
72
104
  applyNullableMatch(this, 'certificatesRequired', session.certificatesRequired);
@@ -74,27 +106,167 @@ class KnexSessionManager {
74
106
  });
75
107
  })
76
108
  .delete();
109
+ if (removed > 0) {
110
+ await this.knex(exports.AUTH_MESSAGE_NONCE_TABLE).where({ sessionNonce: session.sessionNonce }).delete();
111
+ }
77
112
  }
78
113
  async hasSession(identifier) {
79
- const byNonce = await this.activeSessions()
80
- .where({ sessionNonce: identifier })
81
- .first('sessionNonce');
114
+ const byNonce = await this.activeSessions().where({ sessionNonce: identifier }).first('sessionNonce');
82
115
  if (byNonce != null)
83
116
  return true;
84
- const byIdentity = await this.activeSessions()
85
- .where({ peerIdentityKey: identifier })
86
- .first('sessionNonce');
117
+ const byIdentity = await this.activeSessions().where({ peerIdentityKey: identifier }).first('sessionNonce');
87
118
  return byIdentity != null;
88
119
  }
120
+ /** Atomically reject reuse of a signed BRC-103 message nonce across replicas. */
121
+ async claimMessageNonce(sessionNonce, messageNonce) {
122
+ validateNonceIdentifier(sessionNonce, 'sessionNonce');
123
+ validateNonceIdentifier(messageNonce, 'messageNonce');
124
+ const now = this.currentTime();
125
+ return await this.knex.transaction(async (trx) => {
126
+ const session = await trx(exports.AUTH_SESSION_TABLE)
127
+ .where({ sessionNonce })
128
+ .where('expiresAt', '>', now)
129
+ .first('sessionNonce', 'expiresAt');
130
+ if (session == null)
131
+ throw new Error(`Session not found for nonce: ${sessionNonce}`);
132
+ const existing = await trx(exports.AUTH_MESSAGE_NONCE_TABLE).where({ sessionNonce, messageNonce }).first('messageNonce');
133
+ if (existing != null)
134
+ return false;
135
+ const countRow = await trx(exports.AUTH_MESSAGE_NONCE_TABLE)
136
+ .where({ sessionNonce })
137
+ .count({ count: '*' })
138
+ .first();
139
+ const count = Number(countRow?.count ?? 0);
140
+ if (!Number.isSafeInteger(count) || count >= this.maxMessageNoncesPerSession) {
141
+ throw new Error('BRC-103 session message nonce capacity exhausted');
142
+ }
143
+ try {
144
+ await trx(exports.AUTH_MESSAGE_NONCE_TABLE).insert({
145
+ sessionNonce,
146
+ messageNonce,
147
+ expiresAt: Number(session.expiresAt)
148
+ });
149
+ return true;
150
+ }
151
+ catch (error) {
152
+ if (isDuplicateKeyError(error))
153
+ return false;
154
+ throw error;
155
+ }
156
+ });
157
+ }
158
+ /** Atomically reject replayed unsigned initial requests across replicas. */
159
+ async claimInitialRequestNonce(identityKey, initialNonce) {
160
+ validateNonceIdentifier(identityKey, 'identityKey', 66);
161
+ validateNonceIdentifier(initialNonce, 'initialNonce', 64);
162
+ const claimScope = `initial:${identityKey}`;
163
+ const now = this.currentTime();
164
+ const expiresAt = now + this.ttlMs;
165
+ if (!Number.isSafeInteger(expiresAt)) {
166
+ throw new TypeError('Initial-request replay expiry must be a safe integer');
167
+ }
168
+ return await this.knex.transaction(async (trx) => {
169
+ // Initial identities are attacker-selected. Prune all expired claims so
170
+ // cycling through identities cannot leave unbounded dead rows behind.
171
+ await trx(exports.AUTH_MESSAGE_NONCE_TABLE)
172
+ .where('sessionNonce', 'like', 'initial:%')
173
+ .where('expiresAt', '<=', now)
174
+ .delete();
175
+ const existing = await trx(exports.AUTH_MESSAGE_NONCE_TABLE)
176
+ .where({ sessionNonce: claimScope, messageNonce: initialNonce })
177
+ .first('messageNonce');
178
+ if (existing != null)
179
+ return false;
180
+ const countRow = await trx(exports.AUTH_MESSAGE_NONCE_TABLE)
181
+ .where({ sessionNonce: claimScope })
182
+ .count({ count: '*' })
183
+ .first();
184
+ const count = Number(countRow?.count ?? 0);
185
+ if (!Number.isSafeInteger(count) || count < 0) {
186
+ throw new Error('BRC-103 initial request nonce count is invalid');
187
+ }
188
+ const evictionCount = count - this.maxInitialRequestNoncesPerIdentity + 1;
189
+ if (evictionCount > 0) {
190
+ await this.evictOldestInitialRequestClaims(trx, evictionCount, claimScope);
191
+ }
192
+ const totalRow = await trx(exports.AUTH_MESSAGE_NONCE_TABLE)
193
+ .where('sessionNonce', 'like', 'initial:%')
194
+ .count({ count: '*' })
195
+ .first();
196
+ const total = Number(totalRow?.count ?? 0);
197
+ if (!Number.isSafeInteger(total) || total < 0) {
198
+ throw new Error('BRC-103 total initial request nonce count is invalid');
199
+ }
200
+ const globalEvictionCount = total - this.maxInitialRequestNonces + 1;
201
+ if (globalEvictionCount > 0) {
202
+ await this.evictOldestInitialRequestClaims(trx, globalEvictionCount);
203
+ }
204
+ try {
205
+ await trx(exports.AUTH_MESSAGE_NONCE_TABLE).insert({
206
+ sessionNonce: claimScope,
207
+ messageNonce: initialNonce,
208
+ expiresAt
209
+ });
210
+ return true;
211
+ }
212
+ catch (error) {
213
+ if (isDuplicateKeyError(error))
214
+ return false;
215
+ throw error;
216
+ }
217
+ });
218
+ }
89
219
  /** Delete expired rows. Call from an operator-controlled maintenance task. */
90
220
  async pruneExpiredSessions() {
91
- return await this.knex(exports.AUTH_SESSION_TABLE)
92
- .where('expiresAt', '<=', this.now())
93
- .delete();
221
+ const now = this.currentTime();
222
+ return await this.knex.transaction(async (trx) => {
223
+ const removedSessions = await trx(exports.AUTH_SESSION_TABLE).where('expiresAt', '<=', now).delete();
224
+ await trx(exports.AUTH_MESSAGE_NONCE_TABLE)
225
+ .where('sessionNonce', 'like', 'initial:%')
226
+ .where('expiresAt', '<=', now)
227
+ .delete();
228
+ // A signed nonce belongs to its session for the full lifetime of that
229
+ // session, including sliding TTL extensions. Delete only orphaned rows;
230
+ // their original expiresAt value must not reopen replay in an active
231
+ // session after it has been touched.
232
+ await trx(exports.AUTH_MESSAGE_NONCE_TABLE)
233
+ .whereNot('sessionNonce', 'like', 'initial:%')
234
+ .whereNotExists(trx(exports.AUTH_SESSION_TABLE)
235
+ .select(trx.raw('1'))
236
+ .whereRaw('?? = ??', [`${exports.AUTH_SESSION_TABLE}.sessionNonce`, `${exports.AUTH_MESSAGE_NONCE_TABLE}.sessionNonce`]))
237
+ .delete();
238
+ return removedSessions;
239
+ });
94
240
  }
95
241
  activeSessions() {
96
- return this.knex(exports.AUTH_SESSION_TABLE)
97
- .where('expiresAt', '>', this.now());
242
+ return this.knex(exports.AUTH_SESSION_TABLE).where('expiresAt', '>', this.currentTime());
243
+ }
244
+ async evictOldestInitialRequestClaims(trx, count, claimScope) {
245
+ // Keep batches below conservative SQL parameter limits when an operator
246
+ // lowers a configured cap beneath an already-populated table.
247
+ let remaining = count;
248
+ while (remaining > 0) {
249
+ const batchSize = Math.min(remaining, 250);
250
+ const query = trx(exports.AUTH_MESSAGE_NONCE_TABLE)
251
+ .orderBy('expiresAt', 'asc')
252
+ .orderBy('sessionNonce', 'asc')
253
+ .orderBy('messageNonce', 'asc')
254
+ .limit(batchSize)
255
+ .select('sessionNonce', 'messageNonce');
256
+ if (claimScope === undefined) {
257
+ query.where('sessionNonce', 'like', 'initial:%');
258
+ }
259
+ else {
260
+ query.where({ sessionNonce: claimScope });
261
+ }
262
+ const oldestClaims = await query;
263
+ if (oldestClaims.length === 0)
264
+ return;
265
+ await trx(exports.AUTH_MESSAGE_NONCE_TABLE)
266
+ .whereIn(['sessionNonce', 'messageNonce'], oldestClaims.map(claim => [claim.sessionNonce, claim.messageNonce]))
267
+ .delete();
268
+ remaining -= oldestClaims.length;
269
+ }
98
270
  }
99
271
  async persistSession(session, coalesceTouch) {
100
272
  this.validatePersistentSession(session);
@@ -163,12 +335,12 @@ class KnexSessionManager {
163
335
  const elapsed = Number(row.lastUpdate) - persistedLastUpdate;
164
336
  if (elapsed < 0 || elapsed >= this.touchIntervalMs)
165
337
  return false;
166
- if (Number(persisted.expiresAt) - this.now() <= this.touchIntervalMs)
338
+ if (Number(persisted.expiresAt) - this.currentTime() <= this.touchIntervalMs)
167
339
  return false;
168
- return nullableEqual(row.peerNonce, persisted.peerNonce) &&
340
+ return (nullableEqual(row.peerNonce, persisted.peerNonce) &&
169
341
  nullableEqual(row.peerIdentityKey, persisted.peerIdentityKey) &&
170
342
  nullableBooleanEqual(row.certificatesRequired, persisted.certificatesRequired) &&
171
- nullableBooleanEqual(row.certificatesValidated, persisted.certificatesValidated);
343
+ nullableBooleanEqual(row.certificatesValidated, persisted.certificatesValidated));
172
344
  }
173
345
  sessionForRow(row) {
174
346
  const session = (0, TableAuthSession_1.tableAuthSessionToPeerSession)(row);
@@ -188,7 +360,10 @@ class KnexSessionManager {
188
360
  // Authentication and certificate validation only advance during a
189
361
  // session. Merge those flags so two writes in the same millisecond
190
362
  // cannot downgrade stronger state merely because Date.now collided.
191
- isAuthenticated: this.knex.raw('case when ?? = 1 or ? = 1 then 1 else 0 end', ['isAuthenticated', row.isAuthenticated === true || row.isAuthenticated === 1 ? 1 : 0]),
363
+ isAuthenticated: this.knex.raw('case when ?? = 1 or ? = 1 then 1 else 0 end', [
364
+ 'isAuthenticated',
365
+ row.isAuthenticated === true || row.isAuthenticated === 1 ? 1 : 0
366
+ ]),
192
367
  certificatesRequired: this.mergeNullableBoolean('certificatesRequired', row.certificatesRequired),
193
368
  certificatesValidated: this.mergeNullableBoolean('certificatesValidated', row.certificatesValidated),
194
369
  lastUpdate: row.lastUpdate,
@@ -206,7 +381,12 @@ class KnexSessionManager {
206
381
  else {
207
382
  incoming = 0;
208
383
  }
209
- return this.knex.raw('case when ?? = 1 or ? = 1 then 1 when ?? is null and ? is null then null else 0 end', [column, incoming, column, incoming]);
384
+ return this.knex.raw('case when ?? = 1 or ? = 1 then 1 when ?? is null and ? is null then null else 0 end', [
385
+ column,
386
+ incoming,
387
+ column,
388
+ incoming
389
+ ]);
210
390
  }
211
391
  toTableAuthSession(session) {
212
392
  const expiresAt = session.lastUpdate + this.ttlMs;
@@ -224,6 +404,13 @@ class KnexSessionManager {
224
404
  expiresAt
225
405
  };
226
406
  }
407
+ currentTime() {
408
+ const value = this.now();
409
+ if (!Number.isSafeInteger(value) || value < 0) {
410
+ throw new TypeError('KnexSessionManager now must return a non-negative safe integer.');
411
+ }
412
+ return value;
413
+ }
227
414
  }
228
415
  exports.KnexSessionManager = KnexSessionManager;
229
416
  function applyNullableMatch(query, column, value) {
@@ -248,9 +435,14 @@ function isDuplicateKeyError(error) {
248
435
  if (typeof error !== 'object' || error == null)
249
436
  return false;
250
437
  const databaseError = error;
251
- return databaseError.code === 'SQLITE_CONSTRAINT_PRIMARYKEY' ||
438
+ return (databaseError.code === 'SQLITE_CONSTRAINT_PRIMARYKEY' ||
252
439
  databaseError.code === 'SQLITE_CONSTRAINT_UNIQUE' ||
253
440
  databaseError.code === 'ER_DUP_ENTRY' ||
254
- databaseError.errno === 1062;
441
+ databaseError.errno === 1062);
442
+ }
443
+ function validateNonceIdentifier(value, name, maxLength = 64) {
444
+ if (typeof value !== 'string' || value.length === 0 || value.length > maxLength) {
445
+ throw new TypeError(`${name} must be a non-empty string of at most ${maxLength} characters.`);
446
+ }
255
447
  }
256
448
  //# sourceMappingURL=KnexSessionManager.js.map