@bopen-io/wallet-toolbox 2.1.21-parity-fix.2 → 2.6.2-brc153.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 (1207) hide show
  1. package/CHANGELOG.md +232 -6
  2. package/LICENSE.txt +58 -0
  3. package/README.md +236 -47
  4. package/docs/README.md +3 -1
  5. package/docs/action-batch-planning.md +220 -0
  6. package/docs/authentication-observability.md +106 -0
  7. package/docs/client.md +55 -14
  8. package/docs/managed-change-policy.md +79 -0
  9. package/docs/monitor.md +3 -2
  10. package/docs/setup.md +24 -4
  11. package/docs/storage.md +16 -6
  12. package/docs/wallet.md +55 -14
  13. package/out/src/CWIStyleWalletManager.d.ts +122 -12
  14. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  15. package/out/src/CWIStyleWalletManager.js +1006 -461
  16. package/out/src/CWIStyleWalletManager.js.map +1 -1
  17. package/out/src/Setup.d.ts +13 -6
  18. package/out/src/Setup.d.ts.map +1 -1
  19. package/out/src/Setup.js +15 -16
  20. package/out/src/Setup.js.map +1 -1
  21. package/out/src/SetupClient.d.ts +8 -6
  22. package/out/src/SetupClient.d.ts.map +1 -1
  23. package/out/src/SetupClient.js +11 -12
  24. package/out/src/SetupClient.js.map +1 -1
  25. package/out/src/SetupWallet.d.ts +6 -0
  26. package/out/src/SetupWallet.d.ts.map +1 -1
  27. package/out/src/ShamirWalletManager.d.ts +5 -5
  28. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  29. package/out/src/ShamirWalletManager.js +16 -9
  30. package/out/src/ShamirWalletManager.js.map +1 -1
  31. package/out/src/SimpleWalletManager.d.ts +12 -2
  32. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  33. package/out/src/SimpleWalletManager.js +73 -31
  34. package/out/src/SimpleWalletManager.js.map +1 -1
  35. package/out/src/Wallet.d.ts +88 -14
  36. package/out/src/Wallet.d.ts.map +1 -1
  37. package/out/src/Wallet.js +410 -249
  38. package/out/src/Wallet.js.map +1 -1
  39. package/out/src/WalletAuthenticationManager.d.ts +31 -7
  40. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  41. package/out/src/WalletAuthenticationManager.js +219 -35
  42. package/out/src/WalletAuthenticationManager.js.map +1 -1
  43. package/out/src/WalletLogger.d.ts.map +1 -1
  44. package/out/src/WalletLogger.js +45 -32
  45. package/out/src/WalletLogger.js.map +1 -1
  46. package/out/src/WalletPermissionsManager.d.ts +163 -19
  47. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  48. package/out/src/WalletPermissionsManager.js +1232 -1180
  49. package/out/src/WalletPermissionsManager.js.map +1 -1
  50. package/out/src/WalletSettingsManager.d.ts +2 -2
  51. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  52. package/out/src/WalletSettingsManager.js +3 -0
  53. package/out/src/WalletSettingsManager.js.map +1 -1
  54. package/out/src/entropy/EntropyCollector.d.ts +1 -1
  55. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  56. package/out/src/entropy/EntropyCollector.js +18 -20
  57. package/out/src/entropy/EntropyCollector.js.map +1 -1
  58. package/out/src/fundWalletP2PKH.d.ts +2 -2
  59. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  60. package/out/src/fundWalletP2PKH.js +15 -15
  61. package/out/src/fundWalletP2PKH.js.map +1 -1
  62. package/out/src/index.all.d.ts +2 -0
  63. package/out/src/index.all.d.ts.map +1 -1
  64. package/out/src/index.all.js +2 -0
  65. package/out/src/index.all.js.map +1 -1
  66. package/out/src/index.client.d.ts +2 -0
  67. package/out/src/index.client.d.ts.map +1 -1
  68. package/out/src/index.client.js +2 -0
  69. package/out/src/index.client.js.map +1 -1
  70. package/out/src/index.mobile.d.ts +3 -0
  71. package/out/src/index.mobile.d.ts.map +1 -1
  72. package/out/src/index.mobile.js +3 -0
  73. package/out/src/index.mobile.js.map +1 -1
  74. package/out/src/mockchain/MockChainMigrations.d.ts +3 -3
  75. package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
  76. package/out/src/mockchain/MockChainMigrations.js +1 -1
  77. package/out/src/mockchain/MockChainMigrations.js.map +1 -1
  78. package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
  79. package/out/src/mockchain/MockChainStorage.js +9 -8
  80. package/out/src/mockchain/MockChainStorage.js.map +1 -1
  81. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  82. package/out/src/mockchain/MockChainTracker.js +12 -10
  83. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  84. package/out/src/mockchain/MockMiner.d.ts.map +1 -1
  85. package/out/src/mockchain/MockMiner.js +5 -5
  86. package/out/src/mockchain/MockMiner.js.map +1 -1
  87. package/out/src/mockchain/MockServices.d.ts +13 -0
  88. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  89. package/out/src/mockchain/MockServices.js +232 -283
  90. package/out/src/mockchain/MockServices.js.map +1 -1
  91. package/out/src/mockchain/merkleTree.d.ts.map +1 -1
  92. package/out/src/mockchain/merkleTree.js +61 -57
  93. package/out/src/mockchain/merkleTree.js.map +1 -1
  94. package/out/src/monitor/Monitor.d.ts +24 -4
  95. package/out/src/monitor/Monitor.d.ts.map +1 -1
  96. package/out/src/monitor/Monitor.js +158 -148
  97. package/out/src/monitor/Monitor.js.map +1 -1
  98. package/out/src/monitor/MonitorDaemon.d.ts +5 -2
  99. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  100. package/out/src/monitor/MonitorDaemon.js +79 -69
  101. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  102. package/out/src/monitor/index.all.js.map +1 -1
  103. package/out/src/monitor/tasks/TaskArcSSE.d.ts +12 -5
  104. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  105. package/out/src/monitor/tasks/TaskArcSSE.js +143 -135
  106. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  107. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +6 -4
  108. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  109. package/out/src/monitor/tasks/TaskCheckForProofs.js +141 -129
  110. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  111. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +63 -3
  112. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  113. package/out/src/monitor/tasks/TaskCheckNoSends.js +103 -13
  114. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  115. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts +13 -0
  116. package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts.map +1 -0
  117. package/out/src/monitor/tasks/TaskCleanupActionBatches.js +24 -0
  118. package/out/src/monitor/tasks/TaskCleanupActionBatches.js.map +1 -0
  119. package/out/src/monitor/tasks/TaskClock.d.ts +2 -2
  120. package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
  121. package/out/src/monitor/tasks/TaskClock.js +4 -3
  122. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  123. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts +1 -1
  124. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  125. package/out/src/monitor/tasks/TaskFailAbandoned.js +2 -1
  126. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  127. package/out/src/monitor/tasks/TaskMineBlock.d.ts +4 -2
  128. package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
  129. package/out/src/monitor/tasks/TaskMineBlock.js +5 -2
  130. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
  131. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts +1 -1
  132. package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
  133. package/out/src/monitor/tasks/TaskMonitorCallHistory.js +3 -2
  134. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  135. package/out/src/monitor/tasks/TaskNewHeader.d.ts +5 -4
  136. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  137. package/out/src/monitor/tasks/TaskNewHeader.js +22 -8
  138. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  139. package/out/src/monitor/tasks/TaskPurge.d.ts +4 -2
  140. package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
  141. package/out/src/monitor/tasks/TaskPurge.js +9 -5
  142. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  143. package/out/src/monitor/tasks/TaskReorg.d.ts +1 -1
  144. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  145. package/out/src/monitor/tasks/TaskReorg.js +6 -4
  146. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  147. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +4 -2
  148. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  149. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +22 -17
  150. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  151. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +4 -2
  152. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  153. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +12 -5
  154. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  155. package/out/src/monitor/tasks/TaskReviewStatus.d.ts +4 -2
  156. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  157. package/out/src/monitor/tasks/TaskReviewStatus.js +16 -7
  158. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  159. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -2
  160. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  161. package/out/src/monitor/tasks/TaskReviewUtxos.js +8 -2
  162. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  163. package/out/src/monitor/tasks/TaskSendWaiting.d.ts +4 -1
  164. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  165. package/out/src/monitor/tasks/TaskSendWaiting.js +63 -50
  166. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  167. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +2 -2
  168. package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
  169. package/out/src/monitor/tasks/TaskSyncWhenIdle.js +4 -6
  170. package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
  171. package/out/src/monitor/tasks/TaskUnFail.d.ts +4 -2
  172. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  173. package/out/src/monitor/tasks/TaskUnFail.js +13 -67
  174. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  175. package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
  176. package/out/src/monitor/tasks/WalletMonitorTask.js +10 -5
  177. package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
  178. package/out/src/monitor/tasks/index.all.d.ts +1 -0
  179. package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
  180. package/out/src/monitor/tasks/index.all.js +1 -0
  181. package/out/src/monitor/tasks/index.all.js.map +1 -1
  182. package/out/src/sdk/ActionBatch.interfaces.d.ts +159 -0
  183. package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -0
  184. package/out/src/sdk/ActionBatch.interfaces.js +3 -0
  185. package/out/src/sdk/ActionBatch.interfaces.js.map +1 -0
  186. package/out/src/sdk/CertOpsWallet.d.ts +3 -3
  187. package/out/src/sdk/CertOpsWallet.d.ts.map +1 -1
  188. package/out/src/sdk/PrivilegedKeyManager.d.ts +3 -3
  189. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  190. package/out/src/sdk/PrivilegedKeyManager.js +75 -50
  191. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  192. package/out/src/sdk/WERR_errors.d.ts +3 -3
  193. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  194. package/out/src/sdk/WERR_errors.js +29 -14
  195. package/out/src/sdk/WERR_errors.js.map +1 -1
  196. package/out/src/sdk/WalletError.d.ts +4 -1
  197. package/out/src/sdk/WalletError.d.ts.map +1 -1
  198. package/out/src/sdk/WalletError.js +63 -58
  199. package/out/src/sdk/WalletError.js.map +1 -1
  200. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  201. package/out/src/sdk/WalletErrorFromJson.js +1 -3
  202. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  203. package/out/src/sdk/WalletServices.interfaces.d.ts +45 -20
  204. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  205. package/out/src/sdk/WalletStorage.interfaces.d.ts +92 -64
  206. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  207. package/out/src/sdk/index.d.ts +1 -0
  208. package/out/src/sdk/index.d.ts.map +1 -1
  209. package/out/src/sdk/index.js +1 -0
  210. package/out/src/sdk/index.js.map +1 -1
  211. package/out/src/sdk/types.d.ts +14 -5
  212. package/out/src/sdk/types.d.ts.map +1 -1
  213. package/out/src/sdk/types.js +13 -4
  214. package/out/src/sdk/types.js.map +1 -1
  215. package/out/src/services/ServiceCollection.d.ts +6 -6
  216. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  217. package/out/src/services/ServiceCollection.js +14 -9
  218. package/out/src/services/ServiceCollection.js.map +1 -1
  219. package/out/src/services/Services.d.ts +16 -2
  220. package/out/src/services/Services.d.ts.map +1 -1
  221. package/out/src/services/Services.js +320 -241
  222. package/out/src/services/Services.js.map +1 -1
  223. package/out/src/services/chaintracker/BHServiceClient.d.ts +7 -7
  224. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  225. package/out/src/services/chaintracker/BHServiceClient.js +22 -16
  226. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  227. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +5 -1
  228. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  229. package/out/src/services/chaintracker/ChaintracksChainTracker.js +61 -19
  230. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +8 -6
  232. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +1 -1
  234. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts +1 -1
  236. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +11 -0
  238. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +29 -10
  240. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +369 -259
  242. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  243. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +6 -1
  244. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +39 -44
  246. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +3 -3
  248. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +24 -15
  250. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +64 -0
  252. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -0
  253. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +318 -0
  254. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -0
  255. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +9 -2
  257. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  258. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts +1 -2
  259. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  260. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +10 -3
  261. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  262. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  264. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts +27 -0
  265. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -0
  266. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +64 -0
  267. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -0
  268. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +6 -5
  270. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  272. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +3 -1
  273. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  274. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +4 -2
  276. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  277. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +24 -0
  278. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -0
  279. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +68 -0
  280. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -0
  281. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts +2 -2
  282. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +3 -10
  284. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  285. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +13 -0
  286. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  287. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +50 -10
  288. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +4 -3
  291. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +14 -4
  293. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +120 -143
  295. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +22 -8
  297. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +106 -54
  299. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  300. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  301. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +12 -17
  302. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +3 -3
  304. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  305. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +15 -14
  306. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  307. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +3 -0
  308. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  309. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +85 -66
  310. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  311. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +4 -0
  312. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  313. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +128 -101
  314. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  315. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +6 -2
  316. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  317. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +170 -158
  318. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  319. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.d.ts.map +1 -1
  320. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js +0 -21
  321. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.js.map +1 -1
  322. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +9 -2
  323. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  324. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +142 -92
  325. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  326. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +58 -0
  327. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
  328. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +143 -28
  329. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  330. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts +18 -0
  331. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts.map +1 -0
  332. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js +24 -0
  333. package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js.map +1 -0
  334. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +2 -3
  335. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  336. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +4 -22
  337. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  338. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -4
  339. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  340. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +14 -29
  341. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  342. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -3
  343. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  344. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +4 -22
  345. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  346. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +2 -1
  347. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  348. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +3 -15
  349. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  350. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +2 -2
  351. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  352. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +3 -15
  353. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  354. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +2 -1
  355. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  356. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +3 -15
  357. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  358. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +6 -1
  359. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
  360. package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
  361. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
  362. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +8 -1
  363. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  364. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +282 -252
  365. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  366. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  367. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +12 -7
  368. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  369. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  370. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +53 -29
  371. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  372. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +5 -5
  373. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  374. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +34 -11
  375. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  376. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +8 -1
  377. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  378. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +54 -13
  379. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  380. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +10 -12
  381. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  382. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +30 -34
  383. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  384. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  385. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +28 -18
  386. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  387. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +2 -2
  388. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  389. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +4 -6
  390. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  391. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +2 -12
  392. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  393. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +72 -63
  394. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  395. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
  396. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +4 -2
  397. package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
  398. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  399. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +9 -10
  400. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  401. package/out/src/services/createDefaultWalletServicesOptions.d.ts +33 -1
  402. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  403. package/out/src/services/createDefaultWalletServicesOptions.js +94 -15
  404. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  405. package/out/src/services/networkConfig.d.ts +18 -0
  406. package/out/src/services/networkConfig.d.ts.map +1 -0
  407. package/out/src/services/networkConfig.js +92 -0
  408. package/out/src/services/networkConfig.js.map +1 -0
  409. package/out/src/services/providers/ARC.d.ts +8 -0
  410. package/out/src/services/providers/ARC.d.ts.map +1 -1
  411. package/out/src/services/providers/ARC.js +167 -92
  412. package/out/src/services/providers/ARC.js.map +1 -1
  413. package/out/src/services/providers/ArcSSEClient.d.ts +1 -0
  414. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  415. package/out/src/services/providers/ArcSSEClient.js +21 -17
  416. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  417. package/out/src/services/providers/Arcade.d.ts +77 -0
  418. package/out/src/services/providers/Arcade.d.ts.map +1 -0
  419. package/out/src/services/providers/Arcade.js +356 -0
  420. package/out/src/services/providers/Arcade.js.map +1 -0
  421. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  422. package/out/src/services/providers/Bitails.js +128 -103
  423. package/out/src/services/providers/Bitails.js.map +1 -1
  424. package/out/src/services/providers/SdkWhatsOnChain.d.ts +1 -1
  425. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  426. package/out/src/services/providers/SdkWhatsOnChain.js +18 -3
  427. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  428. package/out/src/services/providers/WhatsOnChain.d.ts +10 -2
  429. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  430. package/out/src/services/providers/WhatsOnChain.js +145 -236
  431. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  432. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  433. package/out/src/services/providers/exchangeRates.js +4 -4
  434. package/out/src/services/providers/exchangeRates.js.map +1 -1
  435. package/out/src/services/providers/getBeefForTxid.d.ts +1 -1
  436. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  437. package/out/src/services/providers/getBeefForTxid.js +2 -1
  438. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  439. package/out/src/services/providers/whatsOnChainHelpers.d.ts +68 -0
  440. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -0
  441. package/out/src/services/providers/whatsOnChainHelpers.js +147 -0
  442. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -0
  443. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  444. package/out/src/signer/WalletSigner.js +4 -1
  445. package/out/src/signer/WalletSigner.js.map +1 -1
  446. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +29 -0
  447. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -0
  448. package/out/src/signer/actionBatch/ActionBatchPlanner.js +346 -0
  449. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -0
  450. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +33 -0
  451. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -0
  452. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +869 -0
  453. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -0
  454. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +11 -0
  455. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -0
  456. package/out/src/signer/actionBatch/actionBatchBootstrap.js +38 -0
  457. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -0
  458. package/out/src/signer/methods/acquireDirectCertificate.js +2 -3
  459. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  460. package/out/src/signer/methods/buildSignableTransaction.d.ts +54 -0
  461. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  462. package/out/src/signer/methods/buildSignableTransaction.js +215 -100
  463. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  464. package/out/src/signer/methods/completeSignedTransaction.d.ts +3 -7
  465. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  466. package/out/src/signer/methods/completeSignedTransaction.js +78 -80
  467. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  468. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  469. package/out/src/signer/methods/createAction.js +81 -41
  470. package/out/src/signer/methods/createAction.js.map +1 -1
  471. package/out/src/signer/methods/internalizeAction.d.ts +16 -5
  472. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  473. package/out/src/signer/methods/internalizeAction.js +34 -18
  474. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  475. package/out/src/signer/methods/proveCertificate.js +1 -1
  476. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  477. package/out/src/signer/methods/resultBeef.d.ts +4 -0
  478. package/out/src/signer/methods/resultBeef.d.ts.map +1 -0
  479. package/out/src/signer/methods/resultBeef.js +12 -0
  480. package/out/src/signer/methods/resultBeef.js.map +1 -0
  481. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  482. package/out/src/signer/methods/signAction.js +42 -15
  483. package/out/src/signer/methods/signAction.js.map +1 -1
  484. package/out/src/signer/methods/verifyUnlockScripts.d.ts +17 -0
  485. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -0
  486. package/out/src/signer/methods/verifyUnlockScripts.js +373 -0
  487. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -0
  488. package/out/src/storage/StorageIdb.d.ts +51 -6
  489. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  490. package/out/src/storage/StorageIdb.js +929 -1324
  491. package/out/src/storage/StorageIdb.js.map +1 -1
  492. package/out/src/storage/StorageKnex.d.ts +51 -3
  493. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  494. package/out/src/storage/StorageKnex.js +751 -314
  495. package/out/src/storage/StorageKnex.js.map +1 -1
  496. package/out/src/storage/StorageProvider.d.ts +117 -2
  497. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  498. package/out/src/storage/StorageProvider.js +735 -254
  499. package/out/src/storage/StorageProvider.js.map +1 -1
  500. package/out/src/storage/StorageReader.d.ts +13 -5
  501. package/out/src/storage/StorageReader.d.ts.map +1 -1
  502. package/out/src/storage/StorageReader.js +21 -15
  503. package/out/src/storage/StorageReader.js.map +1 -1
  504. package/out/src/storage/StorageReaderWriter.d.ts +0 -1
  505. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  506. package/out/src/storage/StorageReaderWriter.js +32 -35
  507. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  508. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  509. package/out/src/storage/StorageSyncReader.js +6 -4
  510. package/out/src/storage/StorageSyncReader.js.map +1 -1
  511. package/out/src/storage/WalletStorageManager.d.ts +13 -0
  512. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  513. package/out/src/storage/WalletStorageManager.js +179 -103
  514. package/out/src/storage/WalletStorageManager.js.map +1 -1
  515. package/out/src/storage/adminServer/adminServer.d.ts +80 -1
  516. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  517. package/out/src/storage/adminServer/adminServer.js +90 -72
  518. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  519. package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
  520. package/out/src/storage/adminServer/adminUi.js.map +1 -1
  521. package/out/src/storage/idbHelpers.d.ts +44 -0
  522. package/out/src/storage/idbHelpers.d.ts.map +1 -0
  523. package/out/src/storage/idbHelpers.js +395 -0
  524. package/out/src/storage/idbHelpers.js.map +1 -0
  525. package/out/src/storage/index.all.d.ts +6 -0
  526. package/out/src/storage/index.all.d.ts.map +1 -1
  527. package/out/src/storage/index.all.js +6 -0
  528. package/out/src/storage/index.all.js.map +1 -1
  529. package/out/src/storage/index.client.d.ts +4 -0
  530. package/out/src/storage/index.client.d.ts.map +1 -1
  531. package/out/src/storage/index.client.js +4 -0
  532. package/out/src/storage/index.client.js.map +1 -1
  533. package/out/src/storage/index.mobile.d.ts +3 -0
  534. package/out/src/storage/index.mobile.d.ts.map +1 -1
  535. package/out/src/storage/index.mobile.js +3 -0
  536. package/out/src/storage/index.mobile.js.map +1 -1
  537. package/out/src/storage/methods/ListActionsSpecOp.d.ts +6 -1
  538. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  539. package/out/src/storage/methods/ListActionsSpecOp.js +75 -9
  540. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  541. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +2 -0
  542. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  543. package/out/src/storage/methods/ListOutputsSpecOp.js +43 -29
  544. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  545. package/out/src/storage/methods/actionBatch.d.ts +15 -0
  546. package/out/src/storage/methods/actionBatch.d.ts.map +1 -0
  547. package/out/src/storage/methods/actionBatch.js +725 -0
  548. package/out/src/storage/methods/actionBatch.js.map +1 -0
  549. package/out/src/storage/methods/actionBatchBlobs.d.ts +15 -0
  550. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -0
  551. package/out/src/storage/methods/actionBatchBlobs.js +184 -0
  552. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -0
  553. package/out/src/storage/methods/actionBatchValidation.d.ts +17 -0
  554. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -0
  555. package/out/src/storage/methods/actionBatchValidation.js +416 -0
  556. package/out/src/storage/methods/actionBatchValidation.js.map +1 -0
  557. package/out/src/storage/methods/actionPlanning.d.ts +26 -0
  558. package/out/src/storage/methods/actionPlanning.d.ts.map +1 -0
  559. package/out/src/storage/methods/actionPlanning.js +103 -0
  560. package/out/src/storage/methods/actionPlanning.js.map +1 -0
  561. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +63 -1
  562. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  563. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +245 -92
  564. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  565. package/out/src/storage/methods/availableManagedChange.d.ts +11 -0
  566. package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -0
  567. package/out/src/storage/methods/availableManagedChange.js +25 -0
  568. package/out/src/storage/methods/availableManagedChange.js.map +1 -0
  569. package/out/src/storage/methods/createAction.d.ts +1 -1
  570. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  571. package/out/src/storage/methods/createAction.js +783 -416
  572. package/out/src/storage/methods/createAction.js.map +1 -1
  573. package/out/src/storage/methods/generateChange.d.ts +2 -2
  574. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  575. package/out/src/storage/methods/generateChange.js +188 -127
  576. package/out/src/storage/methods/generateChange.js.map +1 -1
  577. package/out/src/storage/methods/getBeefForTransaction.d.ts +7 -0
  578. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  579. package/out/src/storage/methods/getBeefForTransaction.js +291 -63
  580. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  581. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  582. package/out/src/storage/methods/getSyncChunk.js +11 -8
  583. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  584. package/out/src/storage/methods/internalizeAction.d.ts +77 -6
  585. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  586. package/out/src/storage/methods/internalizeAction.js +372 -139
  587. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  588. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  589. package/out/src/storage/methods/listActionsIdb.js +87 -110
  590. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  591. package/out/src/storage/methods/listActionsKnex.d.ts +1 -1
  592. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  593. package/out/src/storage/methods/listActionsKnex.js +97 -118
  594. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  595. package/out/src/storage/methods/listCertificates.d.ts +2 -2
  596. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  597. package/out/src/storage/methods/listCertificates.js +8 -8
  598. package/out/src/storage/methods/listCertificates.js.map +1 -1
  599. package/out/src/storage/methods/listOutputsIdb.d.ts +1 -1
  600. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  601. package/out/src/storage/methods/listOutputsIdb.js +144 -150
  602. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  603. package/out/src/storage/methods/listOutputsKnex.d.ts +2 -2
  604. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  605. package/out/src/storage/methods/listOutputsKnex.js +217 -246
  606. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  607. package/out/src/storage/methods/managedChange.d.ts +26 -0
  608. package/out/src/storage/methods/managedChange.d.ts.map +1 -0
  609. package/out/src/storage/methods/managedChange.js +42 -0
  610. package/out/src/storage/methods/managedChange.js.map +1 -0
  611. package/out/src/storage/methods/offsetKey.d.ts +1 -1
  612. package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
  613. package/out/src/storage/methods/offsetKey.js +3 -6
  614. package/out/src/storage/methods/offsetKey.js.map +1 -1
  615. package/out/src/storage/methods/processAction.d.ts +2 -11
  616. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  617. package/out/src/storage/methods/processAction.js +173 -106
  618. package/out/src/storage/methods/processAction.js.map +1 -1
  619. package/out/src/storage/methods/purgeData.d.ts +1 -1
  620. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  621. package/out/src/storage/methods/purgeData.js +169 -172
  622. package/out/src/storage/methods/purgeData.js.map +1 -1
  623. package/out/src/storage/methods/purgeDataIdb.d.ts +1 -1
  624. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
  625. package/out/src/storage/methods/purgeDataIdb.js +2 -2
  626. package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
  627. package/out/src/storage/methods/reviewStatus.d.ts +4 -3
  628. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  629. package/out/src/storage/methods/reviewStatus.js +54 -14
  630. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  631. package/out/src/storage/methods/reviewStatusIdb.d.ts +3 -3
  632. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  633. package/out/src/storage/methods/reviewStatusIdb.js +54 -13
  634. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  635. package/out/src/storage/methods/utils.Buffer.d.ts.map +1 -1
  636. package/out/src/storage/methods/utils.Buffer.js.map +1 -1
  637. package/out/src/storage/methods/utils.d.ts.map +1 -1
  638. package/out/src/storage/methods/utils.js +7 -1
  639. package/out/src/storage/methods/utils.js.map +1 -1
  640. package/out/src/storage/portable/index.d.ts +55 -0
  641. package/out/src/storage/portable/index.d.ts.map +1 -0
  642. package/out/src/storage/portable/index.js +872 -0
  643. package/out/src/storage/portable/index.js.map +1 -0
  644. package/out/src/storage/remoting/BinaryJson.d.ts +10 -0
  645. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -0
  646. package/out/src/storage/remoting/BinaryJson.js +218 -0
  647. package/out/src/storage/remoting/BinaryJson.js.map +1 -0
  648. package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts +12 -0
  649. package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts.map +1 -0
  650. package/out/src/storage/remoting/KnexPaymentReplayStore.js +46 -0
  651. package/out/src/storage/remoting/KnexPaymentReplayStore.js.map +1 -0
  652. package/out/src/storage/remoting/KnexSessionManager.d.ts +57 -0
  653. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -0
  654. package/out/src/storage/remoting/KnexSessionManager.js +256 -0
  655. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -0
  656. package/out/src/storage/remoting/RateLimitPolicy.d.ts +10 -0
  657. package/out/src/storage/remoting/RateLimitPolicy.d.ts.map +1 -0
  658. package/out/src/storage/remoting/RateLimitPolicy.js +37 -0
  659. package/out/src/storage/remoting/RateLimitPolicy.js.map +1 -0
  660. package/out/src/storage/remoting/StorageClient.d.ts +7 -271
  661. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  662. package/out/src/storage/remoting/StorageClient.js +87 -458
  663. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  664. package/out/src/storage/remoting/StorageClientBase.d.ts +318 -0
  665. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -0
  666. package/out/src/storage/remoting/StorageClientBase.js +474 -0
  667. package/out/src/storage/remoting/StorageClientBase.js.map +1 -0
  668. package/out/src/storage/remoting/StorageMobile.d.ts +8 -276
  669. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  670. package/out/src/storage/remoting/StorageMobile.js +43 -435
  671. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  672. package/out/src/storage/remoting/StorageServer.d.ts +106 -9
  673. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  674. package/out/src/storage/remoting/StorageServer.js +628 -225
  675. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  676. package/out/src/storage/remoting/edgePolicy.d.ts +84 -0
  677. package/out/src/storage/remoting/edgePolicy.d.ts.map +1 -0
  678. package/out/src/storage/remoting/edgePolicy.js +570 -0
  679. package/out/src/storage/remoting/edgePolicy.js.map +1 -0
  680. package/out/src/storage/remoting/entityValidationHelpers.d.ts +29 -0
  681. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -0
  682. package/out/src/storage/remoting/entityValidationHelpers.js +108 -0
  683. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -0
  684. package/out/src/storage/schema/KnexMigrations.d.ts +7 -3
  685. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  686. package/out/src/storage/schema/KnexMigrations.js +173 -11
  687. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  688. package/out/src/storage/schema/StorageIdbSchema.d.ts +27 -1
  689. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  690. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  691. package/out/src/storage/schema/entities/EntityBase.js +1 -0
  692. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  693. package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
  694. package/out/src/storage/schema/entities/EntityCertificate.js +5 -4
  695. package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
  696. package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
  697. package/out/src/storage/schema/entities/EntityCertificateField.js +5 -7
  698. package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
  699. package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
  700. package/out/src/storage/schema/entities/EntityCommission.js +6 -8
  701. package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
  702. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  703. package/out/src/storage/schema/entities/EntityOutput.js +21 -24
  704. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  705. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  706. package/out/src/storage/schema/entities/EntityOutputBasket.js +7 -7
  707. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  708. package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
  709. package/out/src/storage/schema/entities/EntityOutputTag.js +2 -2
  710. package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
  711. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
  712. package/out/src/storage/schema/entities/EntityOutputTagMap.js +4 -6
  713. package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
  714. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +8 -4
  715. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  716. package/out/src/storage/schema/entities/EntityProvenTx.js +77 -64
  717. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  718. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +11 -2
  719. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
  720. package/out/src/storage/schema/entities/EntityProvenTxReq.js +122 -74
  721. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  722. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  723. package/out/src/storage/schema/entities/EntitySyncState.js +40 -45
  724. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  725. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  726. package/out/src/storage/schema/entities/EntityTransaction.js +30 -31
  727. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  728. package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
  729. package/out/src/storage/schema/entities/EntityTxLabel.js +2 -2
  730. package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
  731. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
  732. package/out/src/storage/schema/entities/EntityTxLabelMap.js +4 -6
  733. package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
  734. package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
  735. package/out/src/storage/schema/entities/EntityUser.js +3 -3
  736. package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
  737. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  738. package/out/src/storage/schema/entities/MergeEntity.js +17 -18
  739. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  740. package/out/src/storage/schema/tables/TableActionBatch.d.ts +26 -0
  741. package/out/src/storage/schema/tables/TableActionBatch.d.ts.map +1 -0
  742. package/out/src/storage/schema/tables/TableActionBatch.js +3 -0
  743. package/out/src/storage/schema/tables/TableActionBatch.js.map +1 -0
  744. package/out/src/storage/schema/tables/TableAuthSession.d.ts +20 -0
  745. package/out/src/storage/schema/tables/TableAuthSession.d.ts.map +1 -0
  746. package/out/src/storage/schema/tables/TableAuthSession.js +15 -0
  747. package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -0
  748. package/out/src/storage/schema/tables/TableCertificate.d.ts +2 -1
  749. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  750. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  751. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  752. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  753. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  754. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  755. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  756. package/out/src/storage/schema/tables/TableOutput.d.ts +3 -2
  757. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  758. package/out/src/storage/schema/tables/TableOutput.js +1 -1
  759. package/out/src/storage/schema/tables/TableOutput.js.map +1 -1
  760. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  761. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  762. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  763. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  764. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  765. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  766. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  767. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  768. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +24 -1
  769. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  770. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  771. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  772. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  773. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  774. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  775. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  776. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  777. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  778. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  779. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  780. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  781. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  782. package/out/src/storage/schema/tables/index.d.ts +2 -0
  783. package/out/src/storage/schema/tables/index.d.ts.map +1 -1
  784. package/out/src/storage/schema/tables/index.js +2 -0
  785. package/out/src/storage/schema/tables/index.js.map +1 -1
  786. package/out/src/storage/storageProviderHelpers.d.ts +35 -0
  787. package/out/src/storage/storageProviderHelpers.d.ts.map +1 -0
  788. package/out/src/storage/storageProviderHelpers.js +106 -0
  789. package/out/src/storage/storageProviderHelpers.js.map +1 -0
  790. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +4 -2
  791. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  792. package/out/src/storage/sync/StorageMySQLDojoReader.js +65 -46
  793. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  794. package/out/src/utility/Format.d.ts.map +1 -1
  795. package/out/src/utility/Format.js +15 -49
  796. package/out/src/utility/Format.js.map +1 -1
  797. package/out/src/utility/ScriptTemplateBRC29.d.ts +3 -2
  798. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  799. package/out/src/utility/ScriptTemplateBRC29.js +22 -11
  800. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  801. package/out/src/utility/actionBatchDigest.d.ts +9 -0
  802. package/out/src/utility/actionBatchDigest.d.ts.map +1 -0
  803. package/out/src/utility/actionBatchDigest.js +86 -0
  804. package/out/src/utility/actionBatchDigest.js.map +1 -0
  805. package/out/src/utility/actionBatchPack.d.ts +16 -0
  806. package/out/src/utility/actionBatchPack.d.ts.map +1 -0
  807. package/out/src/utility/actionBatchPack.js +220 -0
  808. package/out/src/utility/actionBatchPack.js.map +1 -0
  809. package/out/src/utility/aggregateResults.d.ts +1 -1
  810. package/out/src/utility/aggregateResults.d.ts.map +1 -1
  811. package/out/src/utility/aggregateResults.js +2 -2
  812. package/out/src/utility/aggregateResults.js.map +1 -1
  813. package/out/src/utility/beefForTxids.d.ts +9 -0
  814. package/out/src/utility/beefForTxids.d.ts.map +1 -0
  815. package/out/src/utility/beefForTxids.js +35 -0
  816. package/out/src/utility/beefForTxids.js.map +1 -0
  817. package/out/src/utility/brc114ActionTimeLabels.d.ts +2 -2
  818. package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
  819. package/out/src/utility/brc114ActionTimeLabels.js +31 -28
  820. package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
  821. package/out/src/utility/brc153ReferenceLabels.d.ts +23 -0
  822. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -0
  823. package/out/src/utility/brc153ReferenceLabels.js +51 -0
  824. package/out/src/utility/brc153ReferenceLabels.js.map +1 -0
  825. package/out/src/utility/formatUnknown.d.ts +6 -0
  826. package/out/src/utility/formatUnknown.d.ts.map +1 -0
  827. package/out/src/utility/formatUnknown.js +39 -0
  828. package/out/src/utility/formatUnknown.js.map +1 -0
  829. package/out/src/utility/hashWasm.d.ts +5 -0
  830. package/out/src/utility/hashWasm.d.ts.map +1 -0
  831. package/out/src/utility/hashWasm.js +15 -0
  832. package/out/src/utility/hashWasm.js.map +1 -0
  833. package/out/src/utility/identityUtils.d.ts +12 -6
  834. package/out/src/utility/identityUtils.d.ts.map +1 -1
  835. package/out/src/utility/identityUtils.js +82 -38
  836. package/out/src/utility/identityUtils.js.map +1 -1
  837. package/out/src/utility/index.all.d.ts +2 -0
  838. package/out/src/utility/index.all.d.ts.map +1 -1
  839. package/out/src/utility/index.all.js +2 -0
  840. package/out/src/utility/index.all.js.map +1 -1
  841. package/out/src/utility/index.client.d.ts +2 -0
  842. package/out/src/utility/index.client.d.ts.map +1 -1
  843. package/out/src/utility/index.client.js +2 -0
  844. package/out/src/utility/index.client.js.map +1 -1
  845. package/out/src/utility/parseTxScriptOffsets.d.ts +5 -5
  846. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  847. package/out/src/utility/parseTxScriptOffsets.js +1 -1
  848. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  849. package/out/src/utility/stampLog.d.ts.map +1 -1
  850. package/out/src/utility/stampLog.js +53 -44
  851. package/out/src/utility/stampLog.js.map +1 -1
  852. package/out/src/utility/traceContext.d.ts +13 -0
  853. package/out/src/utility/traceContext.d.ts.map +1 -0
  854. package/out/src/utility/traceContext.js +34 -0
  855. package/out/src/utility/traceContext.js.map +1 -0
  856. package/out/src/utility/tscProofToMerklePath.js +1 -1
  857. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  858. package/out/src/utility/utilityHelpers.buffer.d.ts +5 -3
  859. package/out/src/utility/utilityHelpers.buffer.d.ts.map +1 -1
  860. package/out/src/utility/utilityHelpers.buffer.js +3 -3
  861. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  862. package/out/src/utility/utilityHelpers.d.ts +3 -4
  863. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  864. package/out/src/utility/utilityHelpers.js +24 -16
  865. package/out/src/utility/utilityHelpers.js.map +1 -1
  866. package/out/src/utility/utilityHelpers.noBuffer.d.ts +7 -3
  867. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  868. package/out/src/utility/utilityHelpers.noBuffer.js +7 -8
  869. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  870. package/out/src/wab-client/WABClient.d.ts +36 -90
  871. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  872. package/out/src/wab-client/WABClient.js +103 -150
  873. package/out/src/wab-client/WABClient.js.map +1 -1
  874. package/out/src/wab-client/WABTransport.d.ts +81 -0
  875. package/out/src/wab-client/WABTransport.d.ts.map +1 -0
  876. package/out/src/wab-client/WABTransport.js +420 -0
  877. package/out/src/wab-client/WABTransport.js.map +1 -0
  878. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +10 -10
  879. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  880. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +16 -21
  881. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  882. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js +1 -4
  883. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
  884. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js +1 -4
  885. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
  886. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts +2 -1
  887. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
  888. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +14 -3
  889. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
  890. package/package.json +89 -36
  891. package/license.md +0 -28
  892. package/out/src/__tests/CWIStyleWalletManager.test.d.ts +0 -2
  893. package/out/src/__tests/CWIStyleWalletManager.test.d.ts.map +0 -1
  894. package/out/src/__tests/CWIStyleWalletManager.test.js +0 -809
  895. package/out/src/__tests/CWIStyleWalletManager.test.js.map +0 -1
  896. package/out/src/__tests/ShamirWalletManager.test.d.ts +0 -2
  897. package/out/src/__tests/ShamirWalletManager.test.d.ts.map +0 -1
  898. package/out/src/__tests/ShamirWalletManager.test.js +0 -299
  899. package/out/src/__tests/ShamirWalletManager.test.js.map +0 -1
  900. package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts +0 -2
  901. package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts.map +0 -1
  902. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js +0 -373
  903. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js.map +0 -1
  904. package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts +0 -2
  905. package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts.map +0 -1
  906. package/out/src/__tests/WalletPermissionsManager.checks.test.js +0 -642
  907. package/out/src/__tests/WalletPermissionsManager.checks.test.js.map +0 -1
  908. package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts +0 -2
  909. package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts.map +0 -1
  910. package/out/src/__tests/WalletPermissionsManager.encryption.test.js +0 -335
  911. package/out/src/__tests/WalletPermissionsManager.encryption.test.js.map +0 -1
  912. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +0 -87
  913. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +0 -1
  914. package/out/src/__tests/WalletPermissionsManager.fixtures.js +0 -290
  915. package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +0 -1
  916. package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts +0 -2
  917. package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts.map +0 -1
  918. package/out/src/__tests/WalletPermissionsManager.flows.test.js +0 -613
  919. package/out/src/__tests/WalletPermissionsManager.flows.test.js.map +0 -1
  920. package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts +0 -2
  921. package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts.map +0 -1
  922. package/out/src/__tests/WalletPermissionsManager.initialization.test.js +0 -227
  923. package/out/src/__tests/WalletPermissionsManager.initialization.test.js.map +0 -1
  924. package/out/src/__tests/WalletPermissionsManager.pmodules.test.d.ts +0 -2
  925. package/out/src/__tests/WalletPermissionsManager.pmodules.test.d.ts.map +0 -1
  926. package/out/src/__tests/WalletPermissionsManager.pmodules.test.js +0 -735
  927. package/out/src/__tests/WalletPermissionsManager.pmodules.test.js.map +0 -1
  928. package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts +0 -2
  929. package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts.map +0 -1
  930. package/out/src/__tests/WalletPermissionsManager.proxying.test.js +0 -584
  931. package/out/src/__tests/WalletPermissionsManager.proxying.test.js.map +0 -1
  932. package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts +0 -2
  933. package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts.map +0 -1
  934. package/out/src/__tests/WalletPermissionsManager.tokens.test.js +0 -415
  935. package/out/src/__tests/WalletPermissionsManager.tokens.test.js.map +0 -1
  936. package/out/src/entropy/__tests/EntropyCollector.test.d.ts +0 -2
  937. package/out/src/entropy/__tests/EntropyCollector.test.d.ts.map +0 -1
  938. package/out/src/entropy/__tests/EntropyCollector.test.js +0 -137
  939. package/out/src/entropy/__tests/EntropyCollector.test.js.map +0 -1
  940. package/out/src/monitor/__test/MonitorDaemon.man.test.d.ts +0 -2
  941. package/out/src/monitor/__test/MonitorDaemon.man.test.d.ts.map +0 -1
  942. package/out/src/monitor/__test/MonitorDaemon.man.test.js +0 -41
  943. package/out/src/monitor/__test/MonitorDaemon.man.test.js.map +0 -1
  944. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts +0 -2
  945. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts.map +0 -1
  946. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js +0 -257
  947. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js.map +0 -1
  948. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.d.ts +0 -2
  949. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.d.ts.map +0 -1
  950. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js +0 -161
  951. package/out/src/monitor/tasks/__tests/TaskReviewDoubleSpends.test.js.map +0 -1
  952. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.d.ts +0 -2
  953. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.d.ts.map +0 -1
  954. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js +0 -214
  955. package/out/src/monitor/tasks/__tests/TaskReviewProvenTxs.test.js.map +0 -1
  956. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.d.ts +0 -2
  957. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.d.ts.map +0 -1
  958. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js +0 -92
  959. package/out/src/monitor/tasks/__tests/TaskReviewUtxos.test.js.map +0 -1
  960. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.d.ts +0 -2
  961. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.d.ts.map +0 -1
  962. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js +0 -139
  963. package/out/src/monitor/tasks/__tests/TaskSendWaiting.test.js.map +0 -1
  964. package/out/src/sdk/__test/CertificateLifeCycle.test.d.ts +0 -2
  965. package/out/src/sdk/__test/CertificateLifeCycle.test.d.ts.map +0 -1
  966. package/out/src/sdk/__test/CertificateLifeCycle.test.js +0 -62
  967. package/out/src/sdk/__test/CertificateLifeCycle.test.js.map +0 -1
  968. package/out/src/sdk/__test/PrivilegedKeyManager.test.d.ts +0 -2
  969. package/out/src/sdk/__test/PrivilegedKeyManager.test.d.ts.map +0 -1
  970. package/out/src/sdk/__test/PrivilegedKeyManager.test.js +0 -647
  971. package/out/src/sdk/__test/PrivilegedKeyManager.test.js.map +0 -1
  972. package/out/src/sdk/__test/WalletError.test.d.ts +0 -2
  973. package/out/src/sdk/__test/WalletError.test.d.ts.map +0 -1
  974. package/out/src/sdk/__test/WalletError.test.js +0 -255
  975. package/out/src/sdk/__test/WalletError.test.js.map +0 -1
  976. package/out/src/sdk/__test/validationHelpers.test.d.ts +0 -2
  977. package/out/src/sdk/__test/validationHelpers.test.d.ts.map +0 -1
  978. package/out/src/sdk/__test/validationHelpers.test.js +0 -20
  979. package/out/src/sdk/__test/validationHelpers.test.js.map +0 -1
  980. package/out/src/services/__tests/ARC.man.test.d.ts +0 -2
  981. package/out/src/services/__tests/ARC.man.test.d.ts.map +0 -1
  982. package/out/src/services/__tests/ARC.man.test.js +0 -104
  983. package/out/src/services/__tests/ARC.man.test.js.map +0 -1
  984. package/out/src/services/__tests/ARC.timeout.man.test.d.ts +0 -2
  985. package/out/src/services/__tests/ARC.timeout.man.test.d.ts.map +0 -1
  986. package/out/src/services/__tests/ARC.timeout.man.test.js +0 -74
  987. package/out/src/services/__tests/ARC.timeout.man.test.js.map +0 -1
  988. package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts +0 -2
  989. package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts.map +0 -1
  990. package/out/src/services/__tests/ArcGorillaPool.man.test.js +0 -93
  991. package/out/src/services/__tests/ArcGorillaPool.man.test.js.map +0 -1
  992. package/out/src/services/__tests/arcServices.test.d.ts +0 -2
  993. package/out/src/services/__tests/arcServices.test.d.ts.map +0 -1
  994. package/out/src/services/__tests/arcServices.test.js +0 -7
  995. package/out/src/services/__tests/arcServices.test.js.map +0 -1
  996. package/out/src/services/__tests/bitrails.test.d.ts +0 -2
  997. package/out/src/services/__tests/bitrails.test.d.ts.map +0 -1
  998. package/out/src/services/__tests/bitrails.test.js +0 -59
  999. package/out/src/services/__tests/bitrails.test.js.map +0 -1
  1000. package/out/src/services/__tests/getFiatExchangeRate.test.d.ts +0 -2
  1001. package/out/src/services/__tests/getFiatExchangeRate.test.d.ts.map +0 -1
  1002. package/out/src/services/__tests/getFiatExchangeRate.test.js +0 -156
  1003. package/out/src/services/__tests/getFiatExchangeRate.test.js.map +0 -1
  1004. package/out/src/services/__tests/getMerklePath.test.d.ts +0 -2
  1005. package/out/src/services/__tests/getMerklePath.test.d.ts.map +0 -1
  1006. package/out/src/services/__tests/getMerklePath.test.js +0 -16
  1007. package/out/src/services/__tests/getMerklePath.test.js.map +0 -1
  1008. package/out/src/services/__tests/getRawTx.test.d.ts +0 -2
  1009. package/out/src/services/__tests/getRawTx.test.d.ts.map +0 -1
  1010. package/out/src/services/__tests/getRawTx.test.js +0 -16
  1011. package/out/src/services/__tests/getRawTx.test.js.map +0 -1
  1012. package/out/src/services/__tests/postBeef.test.d.ts +0 -2
  1013. package/out/src/services/__tests/postBeef.test.d.ts.map +0 -1
  1014. package/out/src/services/__tests/postBeef.test.js +0 -101
  1015. package/out/src/services/__tests/postBeef.test.js.map +0 -1
  1016. package/out/src/services/__tests/verifyBeef.test.d.ts +0 -2
  1017. package/out/src/services/__tests/verifyBeef.test.d.ts.map +0 -1
  1018. package/out/src/services/__tests/verifyBeef.test.js +0 -43
  1019. package/out/src/services/__tests/verifyBeef.test.js.map +0 -1
  1020. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.d.ts +0 -2
  1021. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.d.ts.map +0 -1
  1022. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js +0 -25
  1023. package/out/src/services/chaintracker/__tests/ChaintracksChainTracker.test.js.map +0 -1
  1024. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.d.ts +0 -2
  1025. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.d.ts.map +0 -1
  1026. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js +0 -27
  1027. package/out/src/services/chaintracker/__tests/ChaintracksServiceClient.test.js.map +0 -1
  1028. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.d.ts +0 -2
  1029. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.d.ts.map +0 -1
  1030. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js +0 -56
  1031. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js.map +0 -1
  1032. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.d.ts +0 -2
  1033. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.d.ts.map +0 -1
  1034. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js +0 -40
  1035. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.js.map +0 -1
  1036. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.d.ts +0 -2
  1037. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.d.ts.map +0 -1
  1038. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js +0 -108
  1039. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js.map +0 -1
  1040. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts +0 -2
  1041. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts.map +0 -1
  1042. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js +0 -87
  1043. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js.map +0 -1
  1044. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.d.ts +0 -2
  1045. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.d.ts.map +0 -1
  1046. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.js +0 -39
  1047. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.js.map +0 -1
  1048. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.d.ts +0 -2
  1049. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.d.ts.map +0 -1
  1050. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +0 -75
  1051. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +0 -1
  1052. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.d.ts +0 -2
  1053. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.d.ts.map +0 -1
  1054. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js +0 -43
  1055. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksCDN.man.test.js.map +0 -1
  1056. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.d.ts +0 -2
  1057. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.d.ts.map +0 -1
  1058. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js +0 -164
  1059. package/out/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.js.map +0 -1
  1060. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts +0 -12
  1061. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.d.ts.map +0 -1
  1062. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js +0 -69
  1063. package/out/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.js.map +0 -1
  1064. package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts +0 -2
  1065. package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts.map +0 -1
  1066. package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js +0 -109
  1067. package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js.map +0 -1
  1068. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts +0 -2
  1069. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts.map +0 -1
  1070. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +0 -54
  1071. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +0 -1
  1072. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.d.ts +0 -2
  1073. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.d.ts.map +0 -1
  1074. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js +0 -255
  1075. package/out/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.js.map +0 -1
  1076. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.d.ts +0 -2
  1077. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.d.ts.map +0 -1
  1078. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js +0 -56
  1079. package/out/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.js.map +0 -1
  1080. package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.d.ts +0 -2
  1081. package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.d.ts.map +0 -1
  1082. package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.js +0 -69
  1083. package/out/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.js.map +0 -1
  1084. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.d.ts +0 -2
  1085. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.d.ts.map +0 -1
  1086. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js +0 -51
  1087. package/out/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.js.map +0 -1
  1088. package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts +0 -2
  1089. package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts.map +0 -1
  1090. package/out/src/services/providers/__tests/ArcSSEClient.test.js +0 -256
  1091. package/out/src/services/providers/__tests/ArcSSEClient.test.js.map +0 -1
  1092. package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts +0 -2
  1093. package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts.map +0 -1
  1094. package/out/src/services/providers/__tests/WhatsOnChain.test.js +0 -191
  1095. package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +0 -1
  1096. package/out/src/services/providers/__tests/exchangeRates.test.d.ts +0 -2
  1097. package/out/src/services/providers/__tests/exchangeRates.test.d.ts.map +0 -1
  1098. package/out/src/services/providers/__tests/exchangeRates.test.js +0 -23
  1099. package/out/src/services/providers/__tests/exchangeRates.test.js.map +0 -1
  1100. package/out/src/storage/__test/StorageIdb.test.d.ts +0 -2
  1101. package/out/src/storage/__test/StorageIdb.test.d.ts.map +0 -1
  1102. package/out/src/storage/__test/StorageIdb.test.js +0 -44
  1103. package/out/src/storage/__test/StorageIdb.test.js.map +0 -1
  1104. package/out/src/storage/__test/WalletStorageManager.test.d.ts +0 -2
  1105. package/out/src/storage/__test/WalletStorageManager.test.d.ts.map +0 -1
  1106. package/out/src/storage/__test/WalletStorageManager.test.js +0 -254
  1107. package/out/src/storage/__test/WalletStorageManager.test.js.map +0 -1
  1108. package/out/src/storage/__test/adminStats.man.test.d.ts +0 -2
  1109. package/out/src/storage/__test/adminStats.man.test.d.ts.map +0 -1
  1110. package/out/src/storage/__test/adminStats.man.test.js +0 -78
  1111. package/out/src/storage/__test/adminStats.man.test.js.map +0 -1
  1112. package/out/src/storage/__test/findStaleMerkleRoots.test.d.ts +0 -2
  1113. package/out/src/storage/__test/findStaleMerkleRoots.test.d.ts.map +0 -1
  1114. package/out/src/storage/__test/findStaleMerkleRoots.test.js +0 -41
  1115. package/out/src/storage/__test/findStaleMerkleRoots.test.js.map +0 -1
  1116. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.d.ts +0 -2
  1117. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.d.ts.map +0 -1
  1118. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js +0 -73
  1119. package/out/src/storage/__test/findStaleMerkleRootsKnex.test.js.map +0 -1
  1120. package/out/src/storage/__test/getBeefForTransaction.test.d.ts +0 -2
  1121. package/out/src/storage/__test/getBeefForTransaction.test.d.ts.map +0 -1
  1122. package/out/src/storage/__test/getBeefForTransaction.test.js +0 -347
  1123. package/out/src/storage/__test/getBeefForTransaction.test.js.map +0 -1
  1124. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.d.ts +0 -2
  1125. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.d.ts.map +0 -1
  1126. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +0 -1111
  1127. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +0 -1
  1128. package/out/src/storage/methods/__test/offsetKey.test.d.ts +0 -2
  1129. package/out/src/storage/methods/__test/offsetKey.test.d.ts.map +0 -1
  1130. package/out/src/storage/methods/__test/offsetKey.test.js +0 -229
  1131. package/out/src/storage/methods/__test/offsetKey.test.js.map +0 -1
  1132. package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts +0 -2
  1133. package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts.map +0 -1
  1134. package/out/src/storage/remoting/__test/StorageClient.man.test.js +0 -487
  1135. package/out/src/storage/remoting/__test/StorageClient.man.test.js.map +0 -1
  1136. package/out/src/storage/remoting/__test/StorageClient.test.d.ts +0 -2
  1137. package/out/src/storage/remoting/__test/StorageClient.test.d.ts.map +0 -1
  1138. package/out/src/storage/remoting/__test/StorageClient.test.js +0 -119
  1139. package/out/src/storage/remoting/__test/StorageClient.test.js.map +0 -1
  1140. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.d.ts +0 -2
  1141. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.d.ts.map +0 -1
  1142. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js +0 -301
  1143. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +0 -1
  1144. package/out/src/storage/schema/entities/__tests/CertificateTests.test.d.ts +0 -2
  1145. package/out/src/storage/schema/entities/__tests/CertificateTests.test.d.ts.map +0 -1
  1146. package/out/src/storage/schema/entities/__tests/CertificateTests.test.js +0 -308
  1147. package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +0 -1
  1148. package/out/src/storage/schema/entities/__tests/CommissionTests.test.d.ts +0 -2
  1149. package/out/src/storage/schema/entities/__tests/CommissionTests.test.d.ts.map +0 -1
  1150. package/out/src/storage/schema/entities/__tests/CommissionTests.test.js +0 -316
  1151. package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +0 -1
  1152. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.d.ts +0 -2
  1153. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.d.ts.map +0 -1
  1154. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js +0 -228
  1155. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js.map +0 -1
  1156. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.d.ts +0 -2
  1157. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.d.ts.map +0 -1
  1158. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js +0 -191
  1159. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +0 -1
  1160. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.d.ts +0 -2
  1161. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.d.ts.map +0 -1
  1162. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js +0 -226
  1163. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js.map +0 -1
  1164. package/out/src/storage/schema/entities/__tests/OutputTests.test.d.ts +0 -2
  1165. package/out/src/storage/schema/entities/__tests/OutputTests.test.d.ts.map +0 -1
  1166. package/out/src/storage/schema/entities/__tests/OutputTests.test.js +0 -413
  1167. package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +0 -1
  1168. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.d.ts +0 -2
  1169. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.d.ts.map +0 -1
  1170. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js +0 -299
  1171. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +0 -1
  1172. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.d.ts +0 -2
  1173. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.d.ts.map +0 -1
  1174. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +0 -474
  1175. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +0 -1
  1176. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.d.ts +0 -2
  1177. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.d.ts.map +0 -1
  1178. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js +0 -234
  1179. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js.map +0 -1
  1180. package/out/src/storage/schema/entities/__tests/TransactionTests.test.d.ts +0 -2
  1181. package/out/src/storage/schema/entities/__tests/TransactionTests.test.d.ts.map +0 -1
  1182. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +0 -539
  1183. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +0 -1
  1184. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.d.ts +0 -2
  1185. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.d.ts.map +0 -1
  1186. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js +0 -304
  1187. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js.map +0 -1
  1188. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.d.ts +0 -2
  1189. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.d.ts.map +0 -1
  1190. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js +0 -170
  1191. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js.map +0 -1
  1192. package/out/src/storage/schema/entities/__tests/stampLogTests.test.d.ts +0 -2
  1193. package/out/src/storage/schema/entities/__tests/stampLogTests.test.d.ts.map +0 -1
  1194. package/out/src/storage/schema/entities/__tests/stampLogTests.test.js +0 -81
  1195. package/out/src/storage/schema/entities/__tests/stampLogTests.test.js.map +0 -1
  1196. package/out/src/storage/schema/entities/__tests/usersTests.test.d.ts +0 -2
  1197. package/out/src/storage/schema/entities/__tests/usersTests.test.d.ts.map +0 -1
  1198. package/out/src/storage/schema/entities/__tests/usersTests.test.js +0 -277
  1199. package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +0 -1
  1200. package/out/src/utility/__tests/utilityHelpers.noBuffer.test.d.ts +0 -2
  1201. package/out/src/utility/__tests/utilityHelpers.noBuffer.test.d.ts.map +0 -1
  1202. package/out/src/utility/__tests/utilityHelpers.noBuffer.test.js +0 -107
  1203. package/out/src/utility/__tests/utilityHelpers.noBuffer.test.js.map +0 -1
  1204. package/out/src/wab-client/__tests/WABClient.man.test.d.ts +0 -2
  1205. package/out/src/wab-client/__tests/WABClient.man.test.d.ts.map +0 -1
  1206. package/out/src/wab-client/__tests/WABClient.man.test.js +0 -52
  1207. package/out/src/wab-client/__tests/WABClient.man.test.js.map +0 -1
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StorageIdb = void 0;
4
4
  const idb_1 = require("idb");
5
+ const idbHelpers_1 = require("./idbHelpers");
5
6
  const utilityHelpers_1 = require("../utility/utilityHelpers");
6
7
  const StorageProvider_1 = require("./StorageProvider");
7
8
  const listActionsIdb_1 = require("./methods/listActionsIdb");
@@ -9,32 +10,58 @@ const listOutputsIdb_1 = require("./methods/listOutputsIdb");
9
10
  const reviewStatusIdb_1 = require("./methods/reviewStatusIdb");
10
11
  const purgeDataIdb_1 = require("./methods/purgeDataIdb");
11
12
  const WERR_errors_1 = require("../sdk/WERR_errors");
13
+ const managedChange_1 = require("./methods/managedChange");
14
+ const actionPlanning_1 = require("./methods/actionPlanning");
15
+ /**
16
+ * Shared cursor-scan loop used by all `filterXxx` methods of StorageIdb.
17
+ *
18
+ * Walks `cursor` forward, applying `since`, a caller-supplied `matches`
19
+ * predicate, paging (offset / limit), and an async `accept` callback for
20
+ * records that pass all filters. Returns the number of accepted records.
21
+ *
22
+ * Implemented as a module-level helper (not a class method) so that
23
+ * profiling/instrumentation that wraps class-prototype methods cannot
24
+ * intercept or mutate its `matches` / `accept` callbacks.
25
+ */
26
+ async function scanCursor(
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ cursor, since, offset, limit, matches, accept) {
29
+ let skipped = 0;
30
+ let count = 0;
31
+ for (; cursor != null; cursor = await cursor.continue()) {
32
+ const r = cursor.value;
33
+ if (since != null && since > r.updated_at)
34
+ continue;
35
+ if (!(await matches(r)))
36
+ continue;
37
+ if (skipped < offset) {
38
+ skipped++;
39
+ continue;
40
+ }
41
+ accept(r);
42
+ count++;
43
+ if ((limit ?? 0) > 0 && count >= limit)
44
+ break;
45
+ }
46
+ return count;
47
+ }
12
48
  /**
13
49
  * This class implements the `StorageProvider` interface using IndexedDB,
14
50
  * via the promises wrapper package `idb`.
15
51
  */
16
52
  class StorageIdb extends StorageProvider_1.StorageProvider {
53
+ dbName;
54
+ db;
17
55
  constructor(options) {
18
56
  super(options);
19
- this.allStores = [
20
- 'certificates',
21
- 'certificate_fields',
22
- 'commissions',
23
- 'monitor_events',
24
- 'outputs',
25
- 'output_baskets',
26
- 'output_tags',
27
- 'output_tags_map',
28
- 'proven_txs',
29
- 'proven_tx_reqs',
30
- 'sync_states',
31
- 'transactions',
32
- 'tx_labels',
33
- 'tx_labels_map',
34
- 'users'
35
- ];
36
57
  this.dbName = `wallet-toolbox-${this.chain}net`;
37
58
  }
59
+ supportsActionBatchPersistence() {
60
+ return true;
61
+ }
62
+ requiresActionBatchCleanupBeforeCreateAction() {
63
+ return false;
64
+ }
38
65
  /**
39
66
  * This method must be called at least once before any other method accesses the database,
40
67
  * and each time the schema may have updated.
@@ -61,7 +88,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
61
88
  * @returns
62
89
  */
63
90
  async verifyDB(storageName, storageIdentityKey) {
64
- if (this.db)
91
+ if (this.db != null)
65
92
  return this.db;
66
93
  this.db = await this.initDB(storageName, storageIdentityKey);
67
94
  this._settings = (await this.db.getAll('settings'))[0];
@@ -73,15 +100,15 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
73
100
  * or a Knex.Transaction as appropriate.
74
101
  */
75
102
  toDbTrx(stores, mode, trx) {
76
- if (trx) {
103
+ if (trx != null) {
77
104
  const t = trx;
78
105
  return t;
79
106
  }
80
107
  else {
81
- if (!this.db)
108
+ if (this.db == null)
82
109
  throw new Error('not initialized');
83
110
  const db = this.db;
84
- const trx = db.transaction(stores || this.allStores, mode || 'readwrite');
111
+ const trx = db.transaction(stores.length > 0 ? stores : this.allStores, mode);
85
112
  this.whenLastAccess = new Date();
86
113
  return trx;
87
114
  }
@@ -95,158 +122,29 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
95
122
  *
96
123
  * @param trx
97
124
  */
98
- async readSettings(trx) {
125
+ async readSettings(_trx) {
99
126
  await this.verifyDB();
100
127
  return this._settings;
101
128
  }
102
129
  async initDB(storageName, storageIdentityKey) {
103
130
  const chain = this.chain;
104
131
  const maxOutputScript = 1024;
105
- const db = await (0, idb_1.openDB)(this.dbName, 1, {
106
- upgrade(db, oldVersion, newVersion, transaction) {
107
- if (!db.objectStoreNames.contains('proven_txs')) {
108
- // proven_txs object store
109
- const provenTxsStore = db.createObjectStore('proven_txs', {
110
- keyPath: 'provenTxId',
111
- autoIncrement: true
112
- });
113
- provenTxsStore.createIndex('txid', 'txid', { unique: true });
114
- }
115
- if (!db.objectStoreNames.contains('proven_tx_reqs')) {
116
- // proven_tx_reqs object store
117
- const provenTxReqsStore = db.createObjectStore('proven_tx_reqs', {
118
- keyPath: 'provenTxReqId',
119
- autoIncrement: true
120
- });
121
- provenTxReqsStore.createIndex('provenTxId', 'provenTxId');
122
- provenTxReqsStore.createIndex('txid', 'txid', { unique: true });
123
- provenTxReqsStore.createIndex('status', 'status');
124
- provenTxReqsStore.createIndex('batch', 'batch');
125
- }
126
- if (!db.objectStoreNames.contains('users')) {
127
- const users = db.createObjectStore('users', {
128
- keyPath: 'userId',
129
- autoIncrement: true
130
- });
131
- users.createIndex('identityKey', 'identityKey', { unique: true });
132
- }
133
- if (!db.objectStoreNames.contains('certificates')) {
134
- // certificates object store
135
- const certificatesStore = db.createObjectStore('certificates', {
136
- keyPath: 'certificateId',
137
- autoIncrement: true
138
- });
139
- certificatesStore.createIndex('userId', 'userId');
140
- certificatesStore.createIndex('userId_type_certifier_serialNumber', ['userId', 'type', 'certifier', 'serialNumber'], { unique: true });
141
- }
142
- if (!db.objectStoreNames.contains('certificate_fields')) {
143
- // certificate_fields object store
144
- const certificateFieldsStore = db.createObjectStore('certificate_fields', {
145
- keyPath: ['certificateId', 'fieldName'] // Composite key
146
- });
147
- certificateFieldsStore.createIndex('userId', 'userId');
148
- certificateFieldsStore.createIndex('certificateId', 'certificateId');
149
- }
150
- if (!db.objectStoreNames.contains('output_baskets')) {
151
- // output_baskets object store
152
- const outputBasketsStore = db.createObjectStore('output_baskets', {
153
- keyPath: 'basketId',
154
- autoIncrement: true
155
- });
156
- outputBasketsStore.createIndex('userId', 'userId');
157
- outputBasketsStore.createIndex('name_userId', ['name', 'userId'], { unique: true });
158
- }
159
- if (!db.objectStoreNames.contains('transactions')) {
160
- // transactions object store
161
- const transactionsStore = db.createObjectStore('transactions', {
162
- keyPath: 'transactionId',
163
- autoIncrement: true
164
- });
165
- transactionsStore.createIndex('userId', 'userId');
166
- transactionsStore.createIndex('status', 'status');
167
- transactionsStore.createIndex('status_userId', ['status', 'userId']);
168
- transactionsStore.createIndex('provenTxId', 'provenTxId');
169
- transactionsStore.createIndex('reference', 'reference', { unique: true });
170
- }
171
- if (!db.objectStoreNames.contains('commissions')) {
172
- // commissions object store
173
- const commissionsStore = db.createObjectStore('commissions', {
174
- keyPath: 'commissionId',
175
- autoIncrement: true
176
- });
177
- commissionsStore.createIndex('userId', 'userId');
178
- commissionsStore.createIndex('transactionId', 'transactionId', { unique: true });
179
- }
180
- if (!db.objectStoreNames.contains('outputs')) {
181
- // outputs object store
182
- const outputsStore = db.createObjectStore('outputs', {
183
- keyPath: 'outputId',
184
- autoIncrement: true
185
- });
186
- outputsStore.createIndex('userId', 'userId');
187
- outputsStore.createIndex('transactionId', 'transactionId');
188
- outputsStore.createIndex('basketId', 'basketId');
189
- outputsStore.createIndex('spentBy', 'spentBy');
190
- outputsStore.createIndex('transactionId_vout_userId', ['transactionId', 'vout', 'userId'], { unique: true });
191
- }
192
- if (!db.objectStoreNames.contains('output_tags')) {
193
- // output_tags object store
194
- const outputTagsStore = db.createObjectStore('output_tags', {
195
- keyPath: 'outputTagId',
196
- autoIncrement: true
197
- });
198
- outputTagsStore.createIndex('userId', 'userId');
199
- outputTagsStore.createIndex('tag_userId', ['tag', 'userId'], { unique: true });
200
- }
201
- if (!db.objectStoreNames.contains('output_tags_map')) {
202
- // output_tags_map object store
203
- const outputTagsMapStore = db.createObjectStore('output_tags_map', {
204
- keyPath: ['outputTagId', 'outputId']
205
- });
206
- outputTagsMapStore.createIndex('outputTagId', 'outputTagId');
207
- outputTagsMapStore.createIndex('outputId', 'outputId');
208
- }
209
- if (!db.objectStoreNames.contains('tx_labels')) {
210
- // tx_labels object store
211
- const txLabelsStore = db.createObjectStore('tx_labels', {
212
- keyPath: 'txLabelId',
213
- autoIncrement: true
214
- });
215
- txLabelsStore.createIndex('userId', 'userId');
216
- txLabelsStore.createIndex('label_userId', ['label', 'userId'], { unique: true });
132
+ const db = await (0, idb_1.openDB)(this.dbName, 3, {
133
+ upgrade(db, _oldVersion, _newVersion, transaction) {
134
+ (0, idbHelpers_1.upgradeAllStoresV1)(db);
135
+ (0, idbHelpers_1.upgradeActionBatchStoresV2)(db);
136
+ const outputs = transaction.objectStore('outputs');
137
+ if (!outputs.indexNames.contains('userId_basketId')) {
138
+ outputs.createIndex('userId_basketId', ['userId', 'basketId']);
217
139
  }
218
- if (!db.objectStoreNames.contains('tx_labels_map')) {
219
- // tx_labels_map object store
220
- const txLabelsMapStore = db.createObjectStore('tx_labels_map', {
221
- keyPath: ['txLabelId', 'transactionId']
222
- });
223
- txLabelsMapStore.createIndex('txLabelId', 'txLabelId');
224
- txLabelsMapStore.createIndex('transactionId', 'transactionId');
225
- }
226
- if (!db.objectStoreNames.contains('monitor_events')) {
227
- // monitor_events object store
228
- const monitorEventsStore = db.createObjectStore('monitor_events', {
229
- keyPath: 'id',
230
- autoIncrement: true
231
- });
232
- }
233
- if (!db.objectStoreNames.contains('sync_states')) {
234
- // sync_states object store
235
- const syncStatesStore = db.createObjectStore('sync_states', {
236
- keyPath: 'syncStateId',
237
- autoIncrement: true
238
- });
239
- syncStatesStore.createIndex('userId', 'userId');
240
- syncStatesStore.createIndex('refNum', 'refNum', { unique: true });
241
- syncStatesStore.createIndex('status', 'status');
140
+ if (!outputs.indexNames.contains('txid_vout_userId')) {
141
+ outputs.createIndex('txid_vout_userId', ['txid', 'vout', 'userId'], { unique: true });
242
142
  }
243
143
  if (!db.objectStoreNames.contains('settings')) {
244
- if (!storageName || !storageIdentityKey) {
144
+ if (storageName == null || storageName === '' || storageIdentityKey == null || storageIdentityKey === '') {
245
145
  throw new WERR_errors_1.WERR_INVALID_OPERATION('migrate must be called before first access');
246
146
  }
247
- const settings = db.createObjectStore('settings', {
248
- keyPath: 'storageIdentityKey'
249
- });
147
+ const settings = db.createObjectStore('settings', { keyPath: 'storageIdentityKey' });
250
148
  const s = {
251
149
  created_at: new Date(),
252
150
  updated_at: new Date(),
@@ -256,7 +154,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
256
154
  dbtype: 'IndexedDB',
257
155
  maxOutputScript
258
156
  };
259
- settings.put(s);
157
+ void settings.put(s);
260
158
  }
261
159
  }
262
160
  });
@@ -278,7 +176,8 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
278
176
  * 3. Find an output that comes as close to funding as possible (targetSatoshis).
279
177
  * 4. Return undefined if no output is found.
280
178
  *
281
- * Outputs must belong to userId and basketId and have spendable true.
179
+ * Outputs must belong to userId and basketId and satisfy the wallet-managed
180
+ * BRC-29 change policy.
282
181
  * Their corresponding transaction must have status of 'completed', 'unproven', or 'sending' (if excludeSending is false).
283
182
  *
284
183
  * @param userId
@@ -290,13 +189,13 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
290
189
  * @returns next funding output to add to transaction or undefined if there are none.
291
190
  */
292
191
  async allocateChangeInput(userId, basketId, targetSatoshis, exactSatoshis, excludeSending, transactionId) {
293
- const dbTrx = this.toDbTrx(['outputs', 'transactions', 'proven_txs', 'proven_tx_reqs'], 'readwrite');
192
+ const dbTrx = this.toDbTrx(['outputs', 'transactions', 'proven_txs', 'proven_tx_reqs', 'action_batch_outputs'], 'readwrite');
294
193
  try {
295
194
  const txStatus = ['completed', 'unproven'];
296
195
  if (!excludeSending)
297
196
  txStatus.push('sending');
298
197
  const args = {
299
- partial: { userId, basketId, spendable: true },
198
+ partial: { userId, basketId, spendable: true, ...managedChange_1.managedChangeOutputFields },
300
199
  txStatus,
301
200
  // Skip per-output script hydration during the candidate scan — we only need
302
201
  // the locking script for the one we actually pick below. Matches Knex's
@@ -304,36 +203,16 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
304
203
  noScript: true,
305
204
  trx: dbTrx
306
205
  };
307
- const outputs = await this.findOutputs(args);
308
- let output;
309
- let scores = [];
310
- for (const o of outputs) {
311
- if (exactSatoshis && o.satoshis === exactSatoshis) {
312
- output = o;
313
- break;
314
- }
315
- const score = o.satoshis - targetSatoshis;
316
- scores.push({ output: o, score });
317
- }
318
- if (!output) {
319
- // sort scores increasing by score property
320
- scores = scores.sort((a, b) => a.score - b.score);
321
- // find the first score that is greater than or equal to 0
322
- const o = scores.find(s => s.score >= 0);
323
- if (o) {
324
- // stage 2 satisfied (minimally funded)
325
- output = o.output;
326
- }
327
- else if (scores.length > 0) {
328
- // stage 3 satisfied (minimally under-funded)
329
- output = scores.slice(-1)[0].output;
330
- }
331
- else {
332
- // no available funding outputs
333
- output = undefined;
334
- }
335
- }
336
- if (output) {
206
+ const reservationStore = dbTrx.objectStore('action_batch_outputs');
207
+ if (reservationStore.get == null)
208
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs store does not support get');
209
+ const outputs = [];
210
+ for (const candidate of (await this.findOutputs(args)).filter(managedChange_1.isAutoSpendableChangeOutput)) {
211
+ if ((await reservationStore.get(candidate.outputId)) == null)
212
+ outputs.push(candidate);
213
+ }
214
+ const output = (0, actionPlanning_1.selectCanonicalChange)(outputs, targetSatoshis, exactSatoshis);
215
+ if (output != null) {
337
216
  // mark output as spent by transactionId
338
217
  await this.updateOutput(output.outputId, { spendable: false, spentBy: transactionId }, dbTrx);
339
218
  // Hydrate the locking script for the chosen output. Identical to Knex canon at
@@ -353,50 +232,76 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
353
232
  rawTx: undefined,
354
233
  inputBEEF: undefined
355
234
  };
356
- r.proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid: txid }, trx }));
357
- if (!r.proven) {
358
- const req = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid: txid }, trx }));
359
- if (req && ['unsent', 'unmined', 'unconfirmed', 'sending', 'nosend', 'completed'].includes(req.status)) {
235
+ r.proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
236
+ if (r.proven == null) {
237
+ const req = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid }, trx }));
238
+ if (req != null && ['unsent', 'unmined', 'unconfirmed', 'sending', 'nosend', 'completed'].includes(req.status)) {
360
239
  r.rawTx = req.rawTx;
361
240
  r.inputBEEF = req.inputBEEF;
362
241
  }
363
242
  }
364
243
  return r;
365
244
  }
245
+ async getProvenOrRawTxs(txids, trx) {
246
+ const results = new Map();
247
+ const unique = [...new Set(txids)];
248
+ if (unique.length === 0)
249
+ return results;
250
+ const dbTrx = this.toDbTrx(['proven_txs', 'proven_tx_reqs'], 'readonly', trx);
251
+ const provenIndex = dbTrx.objectStore('proven_txs').index('txid');
252
+ const requestIndex = dbTrx.objectStore('proven_tx_reqs').index('txid');
253
+ const usableStatuses = new Set(['unsent', 'unmined', 'unconfirmed', 'sending', 'nosend', 'completed']);
254
+ await Promise.all(unique.map(async (txid) => {
255
+ const proven = await provenIndex.get(txid);
256
+ if (proven != null) {
257
+ results.set(txid, { proven: this.validateEntity(proven), rawTx: undefined, inputBEEF: undefined });
258
+ return;
259
+ }
260
+ const request = await requestIndex.get(txid);
261
+ if (request != null && usableStatuses.has(request.status)) {
262
+ const validated = this.validateEntity(request);
263
+ results.set(txid, {
264
+ proven: undefined,
265
+ rawTx: Array.from(validated.rawTx),
266
+ inputBEEF: validated.inputBEEF == null ? undefined : Array.from(validated.inputBEEF)
267
+ });
268
+ return;
269
+ }
270
+ results.set(txid, { proven: undefined, rawTx: undefined, inputBEEF: undefined });
271
+ }));
272
+ if (trx == null)
273
+ await dbTrx.done;
274
+ return results;
275
+ }
366
276
  async getRawTxOfKnownValidTransaction(txid, offset, length, trx) {
367
- if (!txid)
277
+ if (txid == null || txid === '')
368
278
  return undefined;
369
279
  if (!this.isAvailable())
370
280
  await this.makeAvailable();
371
- let rawTx = undefined;
372
281
  const sliceRequested = offset !== undefined && length !== undefined && Number.isInteger(offset) && Number.isInteger(length);
373
282
  // Slice path uses an extended status set that includes 'unfail' — matches Knex
374
283
  // canon at StorageKnex.ts:131. The non-slice path continues to delegate to
375
284
  // getProvenOrRawTx which uses the narrower set.
376
- if (sliceRequested) {
377
- const proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
378
- if (proven) {
379
- rawTx = proven.rawTx;
380
- }
381
- else {
382
- const req = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid }, trx }));
383
- if (req && ['unsent', 'nosend', 'sending', 'unmined', 'completed', 'unfail'].includes(req.status)) {
384
- rawTx = req.rawTx;
385
- }
386
- }
387
- }
388
- else {
389
- const r = await this.getProvenOrRawTx(txid, trx);
390
- if (r.proven)
391
- rawTx = r.proven.rawTx;
392
- else
393
- rawTx = r.rawTx;
394
- }
395
- if (rawTx && sliceRequested) {
396
- rawTx = rawTx.slice(offset, offset + length);
285
+ const rawTx = sliceRequested ? await this.getRawTxForSlice(txid, trx) : await this.getRawTxFull(txid, trx);
286
+ if (rawTx != null && sliceRequested) {
287
+ return rawTx.slice(offset, offset + length);
397
288
  }
398
289
  return rawTx;
399
290
  }
291
+ async getRawTxForSlice(txid, trx) {
292
+ const proven = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxs({ partial: { txid }, trx }));
293
+ if (proven != null)
294
+ return proven.rawTx;
295
+ const req = (0, utilityHelpers_1.verifyOneOrNone)(await this.findProvenTxReqs({ partial: { txid }, trx }));
296
+ const validStatuses = ['unsent', 'nosend', 'sending', 'unmined', 'completed', 'unfail'];
297
+ if (req != null && validStatuses.includes(req.status))
298
+ return req.rawTx;
299
+ return undefined;
300
+ }
301
+ async getRawTxFull(txid, trx) {
302
+ const r = await this.getProvenOrRawTx(txid, trx);
303
+ return r.proven != null ? r.proven.rawTx : r.rawTx;
304
+ }
400
305
  async getLabelsForTransactionId(transactionId, trx) {
401
306
  const maps = await this.findTxLabelMaps({ partial: { transactionId, isDeleted: false }, trx });
402
307
  const labelIds = maps.map(m => m.txLabelId);
@@ -406,10 +311,12 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
406
311
  // Knex/Bun drop it via JOIN; we must do the same silently or we'd break the whole
407
312
  // listActions response. Skip + log so persistent orphans still produce a signal.
408
313
  const label = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTxLabels({ partial: { txLabelId, isDeleted: false }, trx }));
409
- if (label)
314
+ if (label != null) {
410
315
  labels.push(label);
411
- else
412
- console.debug(`[StorageIdb] orphan tx_labels_map row skipped: transactionId=${transactionId} txLabelId=${txLabelId}`);
316
+ }
317
+ else {
318
+ console.debug(`[StorageIdb] orphan tx_labels_map row skipped: transactionId=${String(transactionId)} txLabelId=${txLabelId}`);
319
+ }
413
320
  }
414
321
  return labels;
415
322
  }
@@ -419,20 +326,22 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
419
326
  const tags = [];
420
327
  for (const outputTagId of tagIds) {
421
328
  const tag = (0, utilityHelpers_1.verifyOneOrNone)(await this.findOutputTags({ partial: { outputTagId, isDeleted: false }, trx }));
422
- if (tag)
329
+ if (tag != null) {
423
330
  tags.push(tag);
424
- else
331
+ }
332
+ else {
425
333
  console.debug(`[StorageIdb] orphan output_tags_map row skipped: outputId=${outputId} outputTagId=${outputTagId}`);
334
+ }
426
335
  }
427
336
  return tags;
428
337
  }
429
338
  async listActions(auth, vargs) {
430
- if (!auth.userId)
339
+ if (auth.userId == null)
431
340
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
432
341
  return await (0, listActionsIdb_1.listActionsIdb)(this, auth, vargs);
433
342
  }
434
343
  async listOutputs(auth, vargs) {
435
- if (!auth.userId)
344
+ if (auth.userId == null)
436
345
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
437
346
  return await (0, listOutputsIdb_1.listOutputsIdb)(this, auth, vargs);
438
347
  }
@@ -440,33 +349,83 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
440
349
  const txStatus = ['completed', 'unproven'];
441
350
  if (!excludeSending)
442
351
  txStatus.push('sending');
443
- const args = { partial: { userId, basketId }, txStatus };
444
- let count = 0;
352
+ const args = {
353
+ partial: { userId, basketId, spendable: true, ...managedChange_1.managedChangeOutputFields },
354
+ txStatus,
355
+ noScript: true
356
+ };
357
+ const outputIds = [];
445
358
  await this.filterOutputs(args, r => {
446
- count++;
359
+ if ((0, managedChange_1.isAutoSpendableChangeOutput)(r))
360
+ outputIds.push(r.outputId);
447
361
  });
448
- return count;
362
+ const reserved = await this.findReservedActionBatchOutputIds(outputIds);
363
+ return outputIds.length - reserved.length;
364
+ }
365
+ async findTransactionStatusesByIds(userId, transactionIds, trx) {
366
+ const statuses = new Map();
367
+ if (transactionIds.length === 0)
368
+ return statuses;
369
+ const dbTrx = this.toDbTrx(['transactions'], 'readonly', trx);
370
+ const store = dbTrx.objectStore('transactions');
371
+ for (const transactionId of new Set(transactionIds)) {
372
+ const transaction = await store.get(transactionId);
373
+ if (transaction?.userId === userId)
374
+ statuses.set(transactionId, transaction.status);
375
+ }
376
+ if (trx == null)
377
+ await dbTrx.done;
378
+ return statuses;
379
+ }
380
+ async findOutputsByOutpointsInternal(userId, outpoints, trx, noScript = false) {
381
+ const byOutpoint = {};
382
+ if (outpoints.length === 0)
383
+ return byOutpoint;
384
+ const dbTrx = this.toDbTrx(noScript ? ['outputs'] : ['outputs', 'proven_txs', 'proven_tx_reqs'], 'readonly', trx);
385
+ const index = dbTrx.objectStore('outputs').index('txid_vout_userId');
386
+ const unique = [...new Map(outpoints.map(outpoint => [`${outpoint.txid}.${outpoint.vout}`, outpoint])).values()];
387
+ const rows = await Promise.all(unique.map(async (outpoint) => await index.get([outpoint.txid, outpoint.vout, userId])));
388
+ for (const row of rows) {
389
+ if (row == null)
390
+ continue;
391
+ if (!noScript)
392
+ await this.validateOutputScript(row, dbTrx);
393
+ byOutpoint[`${String(row.txid)}.${row.vout}`] = this.validateEntity(row);
394
+ }
395
+ if (trx == null)
396
+ await dbTrx.done;
397
+ return byOutpoint;
398
+ }
399
+ async findOutputsByOutpoints(userId, outpoints, trx) {
400
+ return await this.findOutputsByOutpointsInternal(userId, outpoints, trx);
401
+ }
402
+ async findOutputsByOutpointsForUpdate(userId, outpoints, trx, noScript = false) {
403
+ return await this.findOutputsByOutpointsInternal(userId, outpoints, trx, noScript);
449
404
  }
450
405
  async findCertificatesAuth(auth, args) {
451
- if (!auth.userId || (args.partial.userId && args.partial.userId !== auth.userId))
406
+ if (auth.userId == null ||
407
+ (args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
452
408
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
453
409
  args.partial.userId = auth.userId;
454
410
  return await this.findCertificates(args);
455
411
  }
456
412
  async findOutputBasketsAuth(auth, args) {
457
- if (!auth.userId || (args.partial.userId && args.partial.userId !== auth.userId))
413
+ if (auth.userId == null ||
414
+ (args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
458
415
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
459
416
  args.partial.userId = auth.userId;
460
417
  return await this.findOutputBaskets(args);
461
418
  }
462
419
  async findOutputsAuth(auth, args) {
463
- if (!auth.userId || (args.partial.userId && args.partial.userId !== auth.userId))
420
+ if (auth.userId == null ||
421
+ (args.partial.userId != null && args.partial.userId !== 0 && args.partial.userId !== auth.userId))
464
422
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
465
423
  args.partial.userId = auth.userId;
466
424
  return await this.findOutputs(args);
467
425
  }
468
426
  async insertCertificateAuth(auth, certificate) {
469
- if (!auth.userId || (certificate.userId && certificate.userId !== auth.userId))
427
+ if (auth.userId == null ||
428
+ (certificate.userId != null && certificate.userId !== 0 && certificate.userId !== auth.userId))
470
429
  throw new WERR_errors_1.WERR_UNAUTHORIZED();
471
430
  certificate.userId = auth.userId;
472
431
  return await this.insertCertificate(certificate);
@@ -485,70 +444,45 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
485
444
  * you need IS NULL semantics (only meaningful for nullable columns).
486
445
  */
487
446
  assertNoUndefinedInPartial(partial) {
488
- if (!partial)
447
+ if (partial == null)
489
448
  return;
490
449
  for (const k of Object.keys(partial)) {
491
450
  if (partial[k] === undefined) {
492
- throw new WERR_errors_1.WERR_INVALID_PARAMETER(`args.partial.${k}`, `not undefined. Passing undefined as a filter value is not supported — omit the key to skip filtering. Matches Knex semantics.`);
451
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(`args.partial.${k}`, 'not undefined. Passing undefined as a filter value is not supported — omit the key to skip filtering. Matches Knex semantics.');
493
452
  }
494
453
  }
495
454
  }
496
455
  async filterOutputTagMaps(args, filtered, userId) {
497
- var _a, _b, _c, _d;
498
456
  this.assertNoUndefinedInPartial(args.partial);
499
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
500
- let skipped = 0;
501
- let count = 0;
502
457
  const dbTrx = this.toDbTrx(['output_tags_map', 'output_tags'], 'readonly', args.trx);
458
+ const store = dbTrx.objectStore('output_tags_map');
459
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
503
460
  let cursor;
504
- if (((_b = args.partial) === null || _b === void 0 ? void 0 : _b.outputTagId) !== undefined) {
505
- cursor = await dbTrx.objectStore('output_tags_map').index('outputTagId').openCursor(args.partial.outputTagId);
461
+ if (args.partial?.outputTagId !== undefined) {
462
+ cursor = await store.index('outputTagId').openCursor(args.partial.outputTagId);
506
463
  }
507
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.outputId) !== undefined) {
508
- cursor = await dbTrx.objectStore('output_tags_map').index('outputId').openCursor(args.partial.outputId);
464
+ else if (args.partial?.outputId !== undefined) {
465
+ cursor = await store.index('outputId').openCursor(args.partial.outputId);
509
466
  }
510
467
  else {
511
- cursor = await dbTrx.objectStore('output_tags_map').openCursor();
512
- }
513
- let firstTime = true;
514
- while (cursor) {
515
- if (!firstTime)
516
- cursor = await cursor.continue();
517
- if (!cursor)
518
- break;
519
- firstTime = false;
520
- const r = cursor.value;
521
- if (args.since && args.since > r.updated_at)
522
- continue;
523
- if (args.tagIds && !args.tagIds.includes(r.outputTagId))
524
- continue;
525
- if (args.partial) {
526
- if (args.partial.outputTagId !== undefined && r.outputTagId !== args.partial.outputTagId)
527
- continue;
528
- if (args.partial.outputId !== undefined && r.outputId !== args.partial.outputId)
529
- continue;
530
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
531
- continue;
532
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
533
- continue;
534
- if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
535
- continue;
536
- }
468
+ cursor = await store.openCursor();
469
+ }
470
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
471
+ if (args.tagIds != null && !args.tagIds.includes(r.outputTagId))
472
+ return false;
473
+ if (!(0, idbHelpers_1.matchesOutputTagMapPartial)(r, args.partial))
474
+ return false;
537
475
  if (userId !== undefined) {
538
- const tagsForUser = await this.countOutputTags({ partial: { userId, outputTagId: r.outputTagId }, trx: dbTrx });
476
+ const tagsForUser = await this.countOutputTags({
477
+ partial: { userId, outputTagId: r.outputTagId },
478
+ trx: dbTrx
479
+ });
539
480
  if (tagsForUser === 0)
540
- continue;
541
- }
542
- if (skipped < offset) {
543
- skipped++;
544
- continue;
481
+ return false;
545
482
  }
546
- filtered(r);
547
- count++;
548
- if (((_d = args.paged) === null || _d === void 0 ? void 0 : _d.limit) && count >= args.paged.limit)
549
- break;
550
- }
551
- if (!args.trx)
483
+ return true;
484
+ }, filtered);
485
+ if (args.trx == null)
552
486
  await dbTrx.done;
553
487
  }
554
488
  async findOutputTagMaps(args) {
@@ -558,93 +492,53 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
558
492
  });
559
493
  return results;
560
494
  }
495
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
496
+ async openProvenTxReqsCursor(
497
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
498
+ store,
499
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
500
+ partial, direction
501
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
502
+ ) {
503
+ if (partial?.provenTxReqId != null && partial.provenTxReqId !== 0)
504
+ return store.openCursor(partial.provenTxReqId, direction);
505
+ if (partial?.provenTxId !== undefined)
506
+ return store.index('provenTxId').openCursor(partial.provenTxId, direction);
507
+ if (partial?.txid !== undefined)
508
+ return store.index('txid').openCursor(partial.txid, direction);
509
+ if (partial?.status !== undefined)
510
+ return store.index('status').openCursor(partial.status, direction);
511
+ if (partial?.batch !== undefined)
512
+ return store.index('batch').openCursor(partial.batch, direction);
513
+ return store.openCursor(null, direction);
514
+ }
561
515
  async filterProvenTxReqs(args, filtered, userId) {
562
- var _a, _b, _c, _d, _e, _f, _g;
563
516
  this.assertNoUndefinedInPartial(args.partial);
564
- if (args.partial.rawTx)
565
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx', `undefined. ProvenTxReqs may not be found by rawTx value.`);
566
- if (args.partial.inputBEEF)
567
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.inputBEEF', `undefined. ProvenTxReqs may not be found by inputBEEF value.`);
568
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
569
- let skipped = 0;
570
- let count = 0;
571
- const dbTrx = this.toDbTrx(['proven_tx_reqs', 'transactions'], 'readonly', args.trx);
572
- const direction = args.orderDescending ? 'prev' : 'next';
573
- let cursor;
574
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.provenTxReqId) {
575
- cursor = await dbTrx.objectStore('proven_tx_reqs').openCursor(args.partial.provenTxReqId, direction);
576
- }
577
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.provenTxId) !== undefined) {
578
- cursor = await dbTrx
579
- .objectStore('proven_tx_reqs')
580
- .index('provenTxId')
581
- .openCursor(args.partial.provenTxId, direction);
517
+ if (args.partial.rawTx != null) {
518
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx', 'undefined. ProvenTxReqs may not be found by rawTx value.');
582
519
  }
583
- else if (((_d = args.partial) === null || _d === void 0 ? void 0 : _d.txid) !== undefined) {
584
- cursor = await dbTrx.objectStore('proven_tx_reqs').index('txid').openCursor(args.partial.txid, direction);
520
+ if (args.partial.inputBEEF != null) {
521
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.inputBEEF', 'undefined. ProvenTxReqs may not be found by inputBEEF value.');
585
522
  }
586
- else if (((_e = args.partial) === null || _e === void 0 ? void 0 : _e.status) !== undefined) {
587
- cursor = await dbTrx.objectStore('proven_tx_reqs').index('status').openCursor(args.partial.status, direction);
588
- }
589
- else if (((_f = args.partial) === null || _f === void 0 ? void 0 : _f.batch) !== undefined) {
590
- cursor = await dbTrx.objectStore('proven_tx_reqs').index('batch').openCursor(args.partial.batch, direction);
591
- }
592
- else {
593
- cursor = await dbTrx.objectStore('proven_tx_reqs').openCursor(null, direction);
594
- }
595
- let firstTime = true;
596
- while (cursor) {
597
- if (!firstTime)
598
- cursor = await cursor.continue();
599
- if (!cursor)
600
- break;
601
- firstTime = false;
602
- const r = cursor.value;
603
- if (args.since && args.since > r.updated_at)
604
- continue;
605
- if (args.partial) {
606
- if (args.partial.provenTxReqId !== undefined && r.provenTxReqId !== args.partial.provenTxReqId)
607
- continue;
608
- if (args.partial.provenTxId !== undefined && r.provenTxId !== args.partial.provenTxId)
609
- continue;
610
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
611
- continue;
612
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
613
- continue;
614
- if (args.partial.status !== undefined && r.status !== args.partial.status)
615
- continue;
616
- if (args.partial.attempts !== undefined && r.attempts !== args.partial.attempts)
617
- continue;
618
- if (args.partial.notified !== undefined && r.notified !== args.partial.notified)
619
- continue;
620
- if (args.partial.txid !== undefined && r.txid !== args.partial.txid)
621
- continue;
622
- if (args.partial.batch !== undefined && r.batch !== args.partial.batch)
623
- continue;
624
- if (args.partial.history !== undefined && r.history !== args.partial.history)
625
- continue;
626
- if (args.partial.notify !== undefined && r.notify !== args.partial.notify)
627
- continue;
628
- }
629
- if (args.status && args.status.length > 0 && !args.status.includes(r.status))
630
- continue;
631
- if (args.txids && args.txids.length > 0 && !args.txids.includes(r.txid))
632
- continue;
523
+ const dbTrx = this.toDbTrx(['proven_tx_reqs', 'transactions'], 'readonly', args.trx);
524
+ const direction = args.orderDescending === true ? 'prev' : 'next';
525
+ const store = dbTrx.objectStore('proven_tx_reqs');
526
+ const cursor = await this.openProvenTxReqsCursor(store, args.partial, direction);
527
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
528
+ if (!(0, idbHelpers_1.matchesProvenTxReqPartial)(r, args.partial))
529
+ return false;
530
+ if (args.status != null && args.status.length > 0 && !args.status.includes(r.status))
531
+ return false;
532
+ if (args.txids != null && args.txids.length > 0 && !args.txids.includes(r.txid))
533
+ return false;
633
534
  if (userId !== undefined) {
634
535
  const txsForUser = await this.countTransactions({ partial: { userId, txid: r.txid }, trx: dbTrx });
635
536
  if (txsForUser === 0)
636
- continue;
637
- }
638
- if (skipped < offset) {
639
- skipped++;
640
- continue;
537
+ return false;
641
538
  }
642
- filtered(r);
643
- count++;
644
- if (((_g = args.paged) === null || _g === void 0 ? void 0 : _g.limit) && count >= args.paged.limit)
645
- break;
646
- }
647
- if (!args.trx)
539
+ return true;
540
+ }, filtered);
541
+ if (args.trx == null)
648
542
  await dbTrx.done;
649
543
  }
650
544
  async findProvenTxReqs(args) {
@@ -655,70 +549,40 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
655
549
  return results;
656
550
  }
657
551
  async filterProvenTxs(args, filtered, userId) {
658
- var _a, _b, _c, _d;
659
552
  this.assertNoUndefinedInPartial(args.partial);
660
- if (args.partial.rawTx)
661
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx', `undefined. ProvenTxs may not be found by rawTx value.`);
662
- if (args.partial.merklePath)
663
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.merklePath', `undefined. ProvenTxs may not be found by merklePath value.`);
664
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
665
- let skipped = 0;
666
- let count = 0;
553
+ if (args.partial.rawTx != null) {
554
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx', 'undefined. ProvenTxs may not be found by rawTx value.');
555
+ }
556
+ if (args.partial.merklePath != null) {
557
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.merklePath', 'undefined. ProvenTxs may not be found by merklePath value.');
558
+ }
667
559
  const dbTrx = this.toDbTrx(['proven_txs', 'transactions'], 'readonly', args.trx);
668
- const direction = args.orderDescending ? 'prev' : 'next';
560
+ const direction = args.orderDescending === true ? 'prev' : 'next';
561
+ const store = dbTrx.objectStore('proven_txs');
562
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
669
563
  let cursor;
670
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.provenTxId) {
671
- cursor = await dbTrx.objectStore('proven_txs').openCursor(args.partial.provenTxId, direction);
564
+ if (args.partial?.provenTxId != null && args.partial.provenTxId > 0) {
565
+ cursor = await store.openCursor(args.partial.provenTxId, direction);
672
566
  }
673
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.txid) !== undefined) {
674
- cursor = await dbTrx.objectStore('proven_txs').index('txid').openCursor(args.partial.txid, direction);
567
+ else if (args.partial?.txid !== undefined) {
568
+ cursor = await store.index('txid').openCursor(args.partial.txid, direction);
675
569
  }
676
570
  else {
677
- cursor = await dbTrx.objectStore('proven_txs').openCursor(null, direction);
678
- }
679
- let firstTime = true;
680
- while (cursor) {
681
- if (!firstTime)
682
- cursor = await cursor.continue();
683
- if (!cursor)
684
- break;
685
- firstTime = false;
686
- const r = cursor.value;
687
- if (args.since && args.since > r.updated_at)
688
- continue;
689
- if (args.partial) {
690
- if (args.partial.provenTxId !== undefined && r.provenTxId !== args.partial.provenTxId)
691
- continue;
692
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
693
- continue;
694
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
695
- continue;
696
- if (args.partial.txid !== undefined && r.txid !== args.partial.txid)
697
- continue;
698
- if (args.partial.height !== undefined && r.height !== args.partial.height)
699
- continue;
700
- if (args.partial.index !== undefined && r.index !== args.partial.index)
701
- continue;
702
- if (args.partial.blockHash !== undefined && r.blockHash !== args.partial.blockHash)
703
- continue;
704
- if (args.partial.merkleRoot !== undefined && r.merkleRoot !== args.partial.merkleRoot)
705
- continue;
706
- }
571
+ cursor = await store.openCursor(null, direction);
572
+ }
573
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
574
+ if (!(0, idbHelpers_1.matchesProvenTxPartial)(r, args.partial))
575
+ return false;
576
+ if (args.txids != null && args.txids.length > 0 && !args.txids.includes(r.txid))
577
+ return false;
707
578
  if (userId !== undefined) {
708
- const count = await this.countTransactions({ partial: { userId, provenTxId: r.provenTxId }, trx: dbTrx });
709
- if (count === 0)
710
- continue;
711
- }
712
- if (skipped < offset) {
713
- skipped++;
714
- continue;
579
+ const txCount = await this.countTransactions({ partial: { userId, provenTxId: r.provenTxId }, trx: dbTrx });
580
+ if (txCount === 0)
581
+ return false;
715
582
  }
716
- filtered(r);
717
- count++;
718
- if (((_d = args.paged) === null || _d === void 0 ? void 0 : _d.limit) && count >= args.paged.limit)
719
- break;
720
- }
721
- if (!args.trx)
583
+ return true;
584
+ }, filtered);
585
+ if (args.trx == null)
722
586
  await dbTrx.done;
723
587
  }
724
588
  async findProvenTxs(args) {
@@ -729,59 +593,31 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
729
593
  return results;
730
594
  }
731
595
  async filterTxLabelMaps(args, filtered, userId) {
732
- var _a, _b, _c, _d;
733
596
  this.assertNoUndefinedInPartial(args.partial);
734
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
735
- let skipped = 0;
736
- let count = 0;
737
597
  const dbTrx = this.toDbTrx(['tx_labels_map', 'tx_labels'], 'readonly', args.trx);
598
+ const store = dbTrx.objectStore('tx_labels_map');
599
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
738
600
  let cursor;
739
- if (((_b = args.partial) === null || _b === void 0 ? void 0 : _b.transactionId) !== undefined) {
740
- cursor = await dbTrx.objectStore('tx_labels_map').index('transactionId').openCursor(args.partial.transactionId);
601
+ if (args.partial?.transactionId !== undefined) {
602
+ cursor = await store.index('transactionId').openCursor(args.partial.transactionId);
741
603
  }
742
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.txLabelId) !== undefined) {
743
- cursor = await dbTrx.objectStore('tx_labels_map').index('txLabelId').openCursor(args.partial.txLabelId);
604
+ else if (args.partial?.txLabelId !== undefined) {
605
+ cursor = await store.index('txLabelId').openCursor(args.partial.txLabelId);
744
606
  }
745
607
  else {
746
- cursor = await dbTrx.objectStore('tx_labels_map').openCursor();
747
- }
748
- let firstTime = true;
749
- while (cursor) {
750
- if (!firstTime)
751
- cursor = await cursor.continue();
752
- if (!cursor)
753
- break;
754
- firstTime = false;
755
- const r = cursor.value;
756
- if (args.since && args.since > r.updated_at)
757
- continue;
758
- if (args.partial) {
759
- if (args.partial.txLabelId !== undefined && r.txLabelId !== args.partial.txLabelId)
760
- continue;
761
- if (args.partial.transactionId !== undefined && r.transactionId !== args.partial.transactionId)
762
- continue;
763
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
764
- continue;
765
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
766
- continue;
767
- if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
768
- continue;
769
- }
608
+ cursor = await store.openCursor();
609
+ }
610
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
611
+ if (!(0, idbHelpers_1.matchesTxLabelMapPartial)(r, args.partial))
612
+ return false;
770
613
  if (userId !== undefined) {
771
- const count = await this.countTxLabels({ partial: { userId, txLabelId: r.txLabelId }, trx: dbTrx });
772
- if (count === 0)
773
- continue;
774
- }
775
- if (skipped < offset) {
776
- skipped++;
777
- continue;
614
+ const labelCount = await this.countTxLabels({ partial: { userId, txLabelId: r.txLabelId }, trx: dbTrx });
615
+ if (labelCount === 0)
616
+ return false;
778
617
  }
779
- filtered(r);
780
- count++;
781
- if (((_d = args.paged) === null || _d === void 0 ? void 0 : _d.limit) && count >= args.paged.limit)
782
- break;
783
- }
784
- if (!args.trx)
618
+ return true;
619
+ }, filtered);
620
+ if (args.trx == null)
785
621
  await dbTrx.done;
786
622
  }
787
623
  async findTxLabelMaps(args) {
@@ -822,10 +658,10 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
822
658
  async insertCertificate(certificate, trx) {
823
659
  const e = await this.validateEntityForInsert(certificate, trx, undefined, ['isDeleted']);
824
660
  // Strip non-schema runtime fields before insert. Matches Knex canon.
825
- if (e.logger)
661
+ if (e.logger != null)
826
662
  delete e.logger;
827
663
  const fields = e.fields;
828
- if (e.fields)
664
+ if (e.fields != null)
829
665
  delete e.fields;
830
666
  if (e.certificateId === 0)
831
667
  delete e.certificateId;
@@ -834,7 +670,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
834
670
  try {
835
671
  const id = Number(await store.add(e));
836
672
  certificate.certificateId = id;
837
- if (fields) {
673
+ if (fields != null) {
838
674
  for (const field of fields) {
839
675
  field.certificateId = certificate.certificateId;
840
676
  field.userId = certificate.userId;
@@ -843,7 +679,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
843
679
  }
844
680
  }
845
681
  finally {
846
- if (!trx)
682
+ if (trx == null)
847
683
  await dbTrx.done;
848
684
  }
849
685
  return certificate.certificateId;
@@ -856,7 +692,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
856
692
  await store.add(e);
857
693
  }
858
694
  finally {
859
- if (!trx)
695
+ if (trx == null)
860
696
  await dbTrx.done;
861
697
  }
862
698
  }
@@ -871,7 +707,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
871
707
  commission.commissionId = id;
872
708
  }
873
709
  finally {
874
- if (!trx)
710
+ if (trx == null)
875
711
  await dbTrx.done;
876
712
  }
877
713
  return commission.commissionId;
@@ -887,7 +723,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
887
723
  event.id = id;
888
724
  }
889
725
  finally {
890
- if (!trx)
726
+ if (trx == null)
891
727
  await dbTrx.done;
892
728
  }
893
729
  return event.id;
@@ -903,7 +739,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
903
739
  output.outputId = id;
904
740
  }
905
741
  finally {
906
- if (!trx)
742
+ if (trx == null)
907
743
  await dbTrx.done;
908
744
  }
909
745
  return output.outputId;
@@ -919,7 +755,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
919
755
  basket.basketId = id;
920
756
  }
921
757
  finally {
922
- if (!trx)
758
+ if (trx == null)
923
759
  await dbTrx.done;
924
760
  }
925
761
  return basket.basketId;
@@ -935,7 +771,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
935
771
  tag.outputTagId = id;
936
772
  }
937
773
  finally {
938
- if (!trx)
774
+ if (trx == null)
939
775
  await dbTrx.done;
940
776
  }
941
777
  return tag.outputTagId;
@@ -948,7 +784,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
948
784
  await store.add(e);
949
785
  }
950
786
  finally {
951
- if (!trx)
787
+ if (trx == null)
952
788
  await dbTrx.done;
953
789
  }
954
790
  }
@@ -963,7 +799,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
963
799
  tx.provenTxId = id;
964
800
  }
965
801
  finally {
966
- if (!trx)
802
+ if (trx == null)
967
803
  await dbTrx.done;
968
804
  }
969
805
  return tx.provenTxId;
@@ -979,7 +815,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
979
815
  tx.provenTxReqId = id;
980
816
  }
981
817
  finally {
982
- if (!trx)
818
+ if (trx == null)
983
819
  await dbTrx.done;
984
820
  }
985
821
  return tx.provenTxReqId;
@@ -995,7 +831,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
995
831
  syncState.syncStateId = id;
996
832
  }
997
833
  finally {
998
- if (!trx)
834
+ if (trx == null)
999
835
  await dbTrx.done;
1000
836
  }
1001
837
  return syncState.syncStateId;
@@ -1011,7 +847,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1011
847
  tx.transactionId = id;
1012
848
  }
1013
849
  finally {
1014
- if (!trx)
850
+ if (trx == null)
1015
851
  await dbTrx.done;
1016
852
  }
1017
853
  return tx.transactionId;
@@ -1027,7 +863,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1027
863
  label.txLabelId = id;
1028
864
  }
1029
865
  finally {
1030
- if (!trx)
866
+ if (trx == null)
1031
867
  await dbTrx.done;
1032
868
  }
1033
869
  return label.txLabelId;
@@ -1040,7 +876,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1040
876
  await store.add(e);
1041
877
  }
1042
878
  finally {
1043
- if (!trx)
879
+ if (trx == null)
1044
880
  await dbTrx.done;
1045
881
  }
1046
882
  }
@@ -1055,14 +891,15 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1055
891
  user.userId = id;
1056
892
  }
1057
893
  finally {
1058
- if (!trx)
894
+ if (trx == null)
1059
895
  await dbTrx.done;
1060
896
  }
1061
897
  return user.userId;
1062
898
  }
1063
899
  async updateIdb(id, update, keyProp, storeName, trx) {
1064
- if (update[keyProp] !== undefined && (Array.isArray(id) || update[keyProp] !== id)) {
1065
- throw new WERR_errors_1.WERR_INVALID_PARAMETER(`update.${keyProp}`, `undefined`);
900
+ const indexedUpdate = update;
901
+ if (indexedUpdate[keyProp] !== undefined && (Array.isArray(id) || indexedUpdate[keyProp] !== id)) {
902
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(`update.${keyProp}`, 'undefined');
1066
903
  }
1067
904
  const u = this.validatePartialForUpdate(update);
1068
905
  const dbTrx = this.toDbTrx([storeName], 'readwrite', trx);
@@ -1074,30 +911,34 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1074
911
  const e = await store.get(i);
1075
912
  // Match Knex/Bun semantics: missing rows produce a 0-row result, not an error.
1076
913
  // Caller receives the true updated count and can decide how to react.
1077
- if (!e)
914
+ if (e == null)
1078
915
  continue;
1079
916
  const v = {
1080
917
  ...e,
1081
918
  ...u
1082
919
  };
1083
920
  const uid = await store.put(v);
1084
- if (uid !== i)
1085
- throw new WERR_errors_1.WERR_INTERNAL(`updated id ${uid} does not match original ${id}`);
921
+ if (uid !== i) {
922
+ const uidText = typeof uid === 'object' ? JSON.stringify(uid) : String(uid);
923
+ throw new WERR_errors_1.WERR_INTERNAL(`updated id ${uidText} does not match original ${String(id)}`);
924
+ }
1086
925
  updated++;
1087
926
  }
1088
927
  }
1089
928
  finally {
1090
- if (!trx)
929
+ if (trx == null)
1091
930
  await dbTrx.done;
1092
931
  }
1093
932
  return updated;
1094
933
  }
1095
934
  async updateIdbKey(key, update, keyProps, storeName, trx) {
1096
- if (key.length !== keyProps.length)
935
+ const indexedUpdate = update;
936
+ if (key.length !== keyProps.length) {
1097
937
  throw new WERR_errors_1.WERR_INTERNAL(`key.length ${key.length} !== keyProps.length ${keyProps.length}`);
938
+ }
1098
939
  for (let i = 0; i < key.length; i++) {
1099
- if (update[keyProps[i]] !== undefined && update[keyProps[i]] !== key[i]) {
1100
- throw new WERR_errors_1.WERR_INVALID_PARAMETER(`update.${keyProps[i]}`, `undefined`);
940
+ if (indexedUpdate[keyProps[i]] !== undefined && indexedUpdate[keyProps[i]] !== key[i]) {
941
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER(`update.${keyProps[i]}`, 'undefined');
1101
942
  }
1102
943
  }
1103
944
  const u = this.validatePartialForUpdate(update);
@@ -1105,8 +946,9 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1105
946
  const store = dbTrx.objectStore(storeName);
1106
947
  try {
1107
948
  const e = await store.get(key);
1108
- if (!e)
949
+ if (e == null) {
1109
950
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('key', `an existing record to update ${keyProps.join(',')} ${key.join(',')} not found`);
951
+ }
1110
952
  const v = {
1111
953
  ...e,
1112
954
  ...u
@@ -1114,77 +956,281 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1114
956
  const uid = await store.put(v);
1115
957
  for (let i = 0; i < key.length; i++) {
1116
958
  if (uid[i] !== key[i])
1117
- throw new WERR_errors_1.WERR_INTERNAL(`updated key ${uid[i]} does not match original ${key[i]}`);
959
+ throw new WERR_errors_1.WERR_INTERNAL(`updated key ${String(uid[i])} does not match original ${String(key[i])}`);
1118
960
  }
1119
961
  }
1120
962
  finally {
1121
- if (!trx)
963
+ if (trx == null)
1122
964
  await dbTrx.done;
1123
965
  }
1124
966
  return 1;
1125
967
  }
1126
968
  async updateCertificate(id, update, trx) {
1127
- return this.updateIdb(id, update, 'certificateId', 'certificates', trx);
969
+ return await this.updateIdb(id, update, 'certificateId', 'certificates', trx);
1128
970
  }
1129
971
  async updateCertificateField(certificateId, fieldName, update, trx) {
1130
- return this.updateIdbKey([certificateId, fieldName], update, ['certificateId', 'fieldName'], 'certificate_fields', trx);
972
+ return await this.updateIdbKey([certificateId, fieldName], update, ['certificateId', 'fieldName'], 'certificate_fields', trx);
1131
973
  }
1132
974
  async updateCommission(id, update, trx) {
1133
- return this.updateIdb(id, update, 'commissionId', 'commissions', trx);
975
+ return await this.updateIdb(id, update, 'commissionId', 'commissions', trx);
1134
976
  }
1135
977
  async updateMonitorEvent(id, update, trx) {
1136
- return this.updateIdb(id, update, 'id', 'monitor_events', trx);
978
+ return await this.updateIdb(id, update, 'id', 'monitor_events', trx);
1137
979
  }
1138
980
  async updateOutput(id, update, trx) {
1139
- return this.updateIdb(id, update, 'outputId', 'outputs', trx);
981
+ return await this.updateIdb(id, update, 'outputId', 'outputs', trx);
1140
982
  }
1141
983
  async updateOutputBasket(id, update, trx) {
1142
- return this.updateIdb(id, update, 'basketId', 'output_baskets', trx);
984
+ return await this.updateIdb(id, update, 'basketId', 'output_baskets', trx);
1143
985
  }
1144
986
  async updateOutputTag(id, update, trx) {
1145
- return this.updateIdb(id, update, 'outputTagId', 'output_tags', trx);
987
+ return await this.updateIdb(id, update, 'outputTagId', 'output_tags', trx);
1146
988
  }
1147
989
  async updateProvenTx(id, update, trx) {
1148
- return this.updateIdb(id, update, 'provenTxId', 'proven_txs', trx);
990
+ return await this.updateIdb(id, update, 'provenTxId', 'proven_txs', trx);
1149
991
  }
1150
992
  async updateProvenTxReq(id, update, trx) {
1151
- return this.updateIdb(id, update, 'provenTxReqId', 'proven_tx_reqs', trx);
993
+ return await this.updateIdb(id, update, 'provenTxReqId', 'proven_tx_reqs', trx);
1152
994
  }
1153
995
  async updateSyncState(id, update, trx) {
1154
- return this.updateIdb(id, update, 'syncStateId', 'sync_states', trx);
996
+ return await this.updateIdb(id, update, 'syncStateId', 'sync_states', trx);
1155
997
  }
1156
998
  async updateTransaction(id, update, trx) {
1157
- return this.updateIdb(id, update, 'transactionId', 'transactions', trx);
999
+ return await this.updateIdb(id, update, 'transactionId', 'transactions', trx);
1158
1000
  }
1159
1001
  async updateTxLabel(id, update, trx) {
1160
- return this.updateIdb(id, update, 'txLabelId', 'tx_labels', trx);
1002
+ return await this.updateIdb(id, update, 'txLabelId', 'tx_labels', trx);
1161
1003
  }
1162
1004
  async updateUser(id, update, trx) {
1163
- return this.updateIdb(id, update, 'userId', 'users', trx);
1005
+ return await this.updateIdb(id, update, 'userId', 'users', trx);
1164
1006
  }
1165
1007
  async updateOutputTagMap(outputId, tagId, update, trx) {
1166
- return this.updateIdbKey([tagId, outputId], update, ['outputTagId', 'outputId'], 'output_tags_map', trx);
1008
+ return await this.updateIdbKey([tagId, outputId], update, ['outputTagId', 'outputId'], 'output_tags_map', trx);
1167
1009
  }
1168
1010
  async updateTxLabelMap(transactionId, txLabelId, update, trx) {
1169
- return this.updateIdbKey([txLabelId, transactionId], update, ['txLabelId', 'transactionId'], 'tx_labels_map', trx);
1011
+ return await this.updateIdbKey([txLabelId, transactionId], update, ['txLabelId', 'transactionId'], 'tx_labels_map', trx);
1170
1012
  }
1171
1013
  //
1172
1014
  // StorageReader abstract methods
1173
1015
  //
1174
1016
  async destroy() {
1175
- if (this.db) {
1017
+ if (this.db != null) {
1176
1018
  this.db.close();
1177
1019
  }
1178
1020
  this.db = undefined;
1179
1021
  this._settings = undefined;
1180
1022
  }
1023
+ allStores = [
1024
+ 'action_batches',
1025
+ 'action_batch_outputs',
1026
+ 'action_batch_blobs',
1027
+ 'certificates',
1028
+ 'certificate_fields',
1029
+ 'commissions',
1030
+ 'monitor_events',
1031
+ 'outputs',
1032
+ 'output_baskets',
1033
+ 'output_tags',
1034
+ 'output_tags_map',
1035
+ 'proven_txs',
1036
+ 'proven_tx_reqs',
1037
+ 'sync_states',
1038
+ 'transactions',
1039
+ 'tx_labels',
1040
+ 'tx_labels_map',
1041
+ 'users'
1042
+ ];
1043
+ async insertActionBatch(batch, trx) {
1044
+ const tx = this.toDbTrx(['action_batches'], 'readwrite', trx);
1045
+ const { actionBatchId: _actionBatchId, ...withoutId } = batch;
1046
+ const entity = batch.actionBatchId === 0 ? withoutId : batch;
1047
+ const store = tx.objectStore('action_batches');
1048
+ if (store.add == null)
1049
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches store does not support add');
1050
+ const id = await store.add(entity);
1051
+ batch.actionBatchId = Number(id);
1052
+ if (trx == null)
1053
+ await tx.done;
1054
+ return Number(id);
1055
+ }
1056
+ async findActionBatch(userId, batchId, trx) {
1057
+ const tx = this.toDbTrx(['action_batches'], 'readonly', trx);
1058
+ const index = tx.objectStore('action_batches').index('userId_batchId');
1059
+ if (index.get == null)
1060
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches userId_batchId index does not support get');
1061
+ const batch = await index.get([userId, batchId]);
1062
+ if (trx == null)
1063
+ await tx.done;
1064
+ return batch;
1065
+ }
1066
+ async findExpiredActionBatches(now, trx) {
1067
+ const tx = this.toDbTrx(['action_batches'], 'readonly', trx);
1068
+ const store = tx.objectStore('action_batches');
1069
+ if (store.getAll == null)
1070
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches store does not support getAll');
1071
+ const rows = await store.getAll();
1072
+ if (trx == null)
1073
+ await tx.done;
1074
+ return rows.filter(r => (r.status === 'active' || r.status === 'prepared') &&
1075
+ (r.expiresAt.getTime() <= now.getTime() || r.hardExpiresAt.getTime() <= now.getTime()));
1076
+ }
1077
+ async updateActionBatch(actionBatchId, update, trx) {
1078
+ const tx = this.toDbTrx(['action_batches'], 'readwrite', trx);
1079
+ const store = tx.objectStore('action_batches');
1080
+ if (store.get == null || store.put == null) {
1081
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches store does not support get and put');
1082
+ }
1083
+ const batch = await store.get(actionBatchId);
1084
+ if (batch == null) {
1085
+ if (trx == null)
1086
+ await tx.done;
1087
+ return 0;
1088
+ }
1089
+ await store.put({ ...batch, ...update, updated_at: new Date() });
1090
+ if (trx == null)
1091
+ await tx.done;
1092
+ return 1;
1093
+ }
1094
+ async deleteActionBatch(actionBatchId, trx) {
1095
+ const tx = this.toDbTrx(['action_batches'], 'readwrite', trx);
1096
+ const store = tx.objectStore('action_batches');
1097
+ if (store.delete == null)
1098
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batches store does not support delete');
1099
+ await store.delete(actionBatchId);
1100
+ if (trx == null)
1101
+ await tx.done;
1102
+ }
1103
+ async reserveActionBatchOutputs(reservations, trx) {
1104
+ if (reservations.length === 0)
1105
+ return;
1106
+ const tx = this.toDbTrx(['action_batch_outputs'], 'readwrite', trx);
1107
+ const store = tx.objectStore('action_batch_outputs');
1108
+ if (store.add == null)
1109
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs store does not support add');
1110
+ for (const reservation of reservations)
1111
+ await store.add(reservation);
1112
+ if (trx == null)
1113
+ await tx.done;
1114
+ }
1115
+ async findActionBatchOutputIds(actionBatchId, trx) {
1116
+ const tx = this.toDbTrx(['action_batch_outputs'], 'readonly', trx);
1117
+ const index = tx.objectStore('action_batch_outputs').index('actionBatchId');
1118
+ if (index.getAll == null)
1119
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs index does not support getAll');
1120
+ const rows = await index.getAll(actionBatchId);
1121
+ if (trx == null)
1122
+ await tx.done;
1123
+ return rows.map(r => r.outputId);
1124
+ }
1125
+ async findReservedActionBatchOutputIds(outputIds, trx) {
1126
+ const tx = this.toDbTrx(['action_batch_outputs', 'action_batches'], 'readonly', trx);
1127
+ const store = tx.objectStore('action_batch_outputs');
1128
+ const batchStore = tx.objectStore('action_batches');
1129
+ if (store.get == null)
1130
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs store does not support get');
1131
+ const reserved = [];
1132
+ const now = Date.now();
1133
+ for (const outputId of outputIds) {
1134
+ const reservation = await store.get(outputId);
1135
+ if (reservation == null)
1136
+ continue;
1137
+ const batch = await batchStore.get(reservation.actionBatchId);
1138
+ if (batch != null &&
1139
+ (batch.status === 'active' || batch.status === 'prepared') &&
1140
+ batch.expiresAt.getTime() > now &&
1141
+ batch.hardExpiresAt.getTime() > now)
1142
+ reserved.push(outputId);
1143
+ }
1144
+ if (trx == null)
1145
+ await tx.done;
1146
+ return reserved;
1147
+ }
1148
+ async deleteActionBatchOutputReservations(actionBatchId, trx) {
1149
+ const tx = this.toDbTrx(['action_batch_outputs'], 'readwrite', trx);
1150
+ const store = tx.objectStore('action_batch_outputs');
1151
+ const index = store.index('actionBatchId');
1152
+ if (index.getAllKeys == null || store.delete == null) {
1153
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_outputs store does not support indexed deletion');
1154
+ }
1155
+ const keys = await index.getAllKeys(actionBatchId);
1156
+ for (const key of keys)
1157
+ await store.delete(key);
1158
+ if (trx == null)
1159
+ await tx.done;
1160
+ }
1161
+ async putActionBatchBlobRecord(blob, trx) {
1162
+ const tx = this.toDbTrx(['action_batch_blobs'], 'readwrite', trx);
1163
+ const store = tx.objectStore('action_batch_blobs');
1164
+ if (store.put == null)
1165
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support put');
1166
+ await store.put({
1167
+ ...blob,
1168
+ bytes: blob.bytes instanceof Uint8Array ? blob.bytes : Uint8Array.from(blob.bytes)
1169
+ });
1170
+ if (trx == null)
1171
+ await tx.done;
1172
+ }
1173
+ async findActionBatchBlobRecord(actionBatchId, digest, trx) {
1174
+ const tx = this.toDbTrx(['action_batch_blobs'], 'readonly', trx);
1175
+ const store = tx.objectStore('action_batch_blobs');
1176
+ if (store.get == null)
1177
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support get');
1178
+ const blob = await store.get([actionBatchId, digest]);
1179
+ if (trx == null)
1180
+ await tx.done;
1181
+ return blob;
1182
+ }
1183
+ async findActionBatchBlobRecords(actionBatchId, digests, trx) {
1184
+ const tx = this.toDbTrx(['action_batch_blobs'], 'readonly', trx);
1185
+ const store = tx.objectStore('action_batch_blobs');
1186
+ if (store.get == null)
1187
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support get');
1188
+ const blobs = [];
1189
+ for (const digest of new Set(digests)) {
1190
+ const blob = await store.get([actionBatchId, digest]);
1191
+ if (blob != null)
1192
+ blobs.push(blob);
1193
+ }
1194
+ if (trx == null)
1195
+ await tx.done;
1196
+ return blobs;
1197
+ }
1198
+ async putActionBatchBlobRecords(blobs, trx) {
1199
+ if (blobs.length === 0)
1200
+ return;
1201
+ const tx = this.toDbTrx(['action_batch_blobs'], 'readwrite', trx);
1202
+ const store = tx.objectStore('action_batch_blobs');
1203
+ if (store.put == null)
1204
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support put');
1205
+ for (const blob of blobs) {
1206
+ await store.put({
1207
+ ...blob,
1208
+ bytes: blob.bytes instanceof Uint8Array ? blob.bytes : Uint8Array.from(blob.bytes)
1209
+ });
1210
+ }
1211
+ if (trx == null)
1212
+ await tx.done;
1213
+ }
1214
+ async deleteActionBatchBlobRecords(actionBatchId, trx) {
1215
+ const tx = this.toDbTrx(['action_batch_blobs'], 'readwrite', trx);
1216
+ const store = tx.objectStore('action_batch_blobs');
1217
+ const index = store.index('actionBatchId');
1218
+ if (index.getAllKeys == null || store.delete == null) {
1219
+ throw new WERR_errors_1.WERR_INTERNAL('IndexedDB action_batch_blobs store does not support indexed deletion');
1220
+ }
1221
+ const keys = await index.getAllKeys(actionBatchId);
1222
+ for (const key of keys)
1223
+ await store.delete(key);
1224
+ if (trx == null)
1225
+ await tx.done;
1226
+ }
1181
1227
  /**
1182
1228
  * @param scope
1183
1229
  * @param trx
1184
1230
  * @returns
1185
1231
  */
1186
1232
  async transaction(scope, trx) {
1187
- if (trx)
1233
+ if (trx != null)
1188
1234
  return await scope(trx);
1189
1235
  const stores = this.allStores;
1190
1236
  const db = await this.verifyDB();
@@ -1201,61 +1247,22 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1201
1247
  }
1202
1248
  }
1203
1249
  async filterCertificateFields(args, filtered) {
1204
- var _a, _b, _c, _d;
1205
1250
  this.assertNoUndefinedInPartial(args.partial);
1206
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
1207
- let skipped = 0;
1208
- let count = 0;
1209
1251
  const dbTrx = this.toDbTrx(['certificate_fields'], 'readonly', args.trx);
1252
+ const store = dbTrx.objectStore('certificate_fields');
1253
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1210
1254
  let cursor;
1211
- if (((_b = args.partial) === null || _b === void 0 ? void 0 : _b.certificateId) !== undefined) {
1212
- cursor = await dbTrx
1213
- .objectStore('certificate_fields')
1214
- .index('certificateId')
1215
- .openCursor(args.partial.certificateId);
1255
+ if (args.partial?.certificateId !== undefined) {
1256
+ cursor = await store.index('certificateId').openCursor(args.partial.certificateId);
1216
1257
  }
1217
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.userId) !== undefined) {
1218
- cursor = await dbTrx.objectStore('certificate_fields').index('userId').openCursor(args.partial.userId);
1258
+ else if (args.partial?.userId !== undefined) {
1259
+ cursor = await store.index('userId').openCursor(args.partial.userId);
1219
1260
  }
1220
1261
  else {
1221
- cursor = await dbTrx.objectStore('certificate_fields').openCursor();
1222
- }
1223
- let firstTime = true;
1224
- while (cursor) {
1225
- if (!firstTime)
1226
- cursor = await cursor.continue();
1227
- if (!cursor)
1228
- break;
1229
- firstTime = false;
1230
- const r = cursor.value;
1231
- if (args.since && args.since > r.updated_at)
1232
- continue;
1233
- if (args.partial) {
1234
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
1235
- continue;
1236
- if (args.partial.certificateId !== undefined && r.certificateId !== args.partial.certificateId)
1237
- continue;
1238
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
1239
- continue;
1240
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
1241
- continue;
1242
- if (args.partial.fieldName !== undefined && r.fieldName !== args.partial.fieldName)
1243
- continue;
1244
- if (args.partial.fieldValue !== undefined && r.fieldValue !== args.partial.fieldValue)
1245
- continue;
1246
- if (args.partial.masterKey !== undefined && r.masterKey !== args.partial.masterKey)
1247
- continue;
1248
- }
1249
- if (skipped < offset) {
1250
- skipped++;
1251
- continue;
1252
- }
1253
- filtered(r);
1254
- count++;
1255
- if (((_d = args.paged) === null || _d === void 0 ? void 0 : _d.limit) && count >= args.paged.limit)
1256
- break;
1262
+ cursor = await store.openCursor();
1257
1263
  }
1258
- if (!args.trx)
1264
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesCertificateFieldPartial)(r, args.partial), filtered);
1265
+ if (args.trx == null)
1259
1266
  await dbTrx.done;
1260
1267
  }
1261
1268
  async findCertificateFields(args) {
@@ -1265,81 +1272,39 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1265
1272
  });
1266
1273
  return result;
1267
1274
  }
1268
- async filterCertificates(args, filtered) {
1269
- var _a, _b, _c, _d, _e, _f, _g;
1270
- this.assertNoUndefinedInPartial(args.partial);
1271
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
1272
- let skipped = 0;
1273
- let count = 0;
1274
- const dbTrx = this.toDbTrx(['certificates'], 'readonly', args.trx);
1275
- let cursor;
1276
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.certificateId) {
1277
- cursor = await dbTrx.objectStore('certificates').openCursor(args.partial.certificateId);
1278
- }
1279
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.userId) !== undefined) {
1280
- if (((_d = args.partial) === null || _d === void 0 ? void 0 : _d.type) && ((_e = args.partial) === null || _e === void 0 ? void 0 : _e.certifier) && ((_f = args.partial) === null || _f === void 0 ? void 0 : _f.serialNumber)) {
1281
- cursor = await dbTrx
1282
- .objectStore('certificates')
1275
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1276
+ async openCertificatesCursor(
1277
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1278
+ store,
1279
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1280
+ partial
1281
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1282
+ ) {
1283
+ if (partial?.certificateId != null && partial.certificateId !== 0)
1284
+ return store.openCursor(partial.certificateId);
1285
+ if (partial?.userId !== undefined) {
1286
+ if (partial?.type != null && partial?.certifier != null && partial?.serialNumber != null) {
1287
+ return store
1283
1288
  .index('userId_type_certifier_serialNumber')
1284
- .openCursor([args.partial.userId, args.partial.type, args.partial.certifier, args.partial.serialNumber]);
1285
- }
1286
- else {
1287
- cursor = await dbTrx.objectStore('certificates').index('userId').openCursor(args.partial.userId);
1288
- }
1289
- }
1290
- else {
1291
- cursor = await dbTrx.objectStore('certificates').openCursor();
1292
- }
1293
- let firstTime = true;
1294
- while (cursor) {
1295
- if (!firstTime)
1296
- cursor = await cursor.continue();
1297
- if (!cursor)
1298
- break;
1299
- firstTime = false;
1300
- const r = cursor.value;
1301
- if (args.since && args.since > r.updated_at)
1302
- continue;
1303
- if (args.certifiers && !args.certifiers.includes(r.certifier))
1304
- continue;
1305
- if (args.types && !args.types.includes(r.type))
1306
- continue;
1307
- if (args.partial) {
1308
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
1309
- continue;
1310
- if (args.partial.certificateId !== undefined && r.certificateId !== args.partial.certificateId)
1311
- continue;
1312
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
1313
- continue;
1314
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
1315
- continue;
1316
- if (args.partial.type !== undefined && r.type !== args.partial.type)
1317
- continue;
1318
- if (args.partial.serialNumber !== undefined && r.serialNumber !== args.partial.serialNumber)
1319
- continue;
1320
- if (args.partial.certifier !== undefined && r.certifier !== args.partial.certifier)
1321
- continue;
1322
- if (args.partial.subject !== undefined && r.subject !== args.partial.subject)
1323
- continue;
1324
- if (args.partial.verifier !== undefined && r.verifier !== args.partial.verifier)
1325
- continue;
1326
- if (args.partial.revocationOutpoint !== undefined && r.revocationOutpoint !== args.partial.revocationOutpoint)
1327
- continue;
1328
- if (args.partial.signature !== undefined && r.signature !== args.partial.signature)
1329
- continue;
1330
- if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
1331
- continue;
1332
- }
1333
- if (skipped < offset) {
1334
- skipped++;
1335
- continue;
1289
+ .openCursor([partial.userId, partial.type, partial.certifier, partial.serialNumber]);
1336
1290
  }
1337
- filtered(r);
1338
- count++;
1339
- if (((_g = args.paged) === null || _g === void 0 ? void 0 : _g.limit) && count >= args.paged.limit)
1340
- break;
1291
+ return store.index('userId').openCursor(partial.userId);
1341
1292
  }
1342
- if (!args.trx)
1293
+ return store.openCursor();
1294
+ }
1295
+ async filterCertificates(args, filtered) {
1296
+ this.assertNoUndefinedInPartial(args.partial);
1297
+ const dbTrx = this.toDbTrx(['certificates'], 'readonly', args.trx);
1298
+ const store = dbTrx.objectStore('certificates');
1299
+ const cursor = await this.openCertificatesCursor(store, args.partial);
1300
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => {
1301
+ if (args.certifiers != null && !args.certifiers.includes(r.certifier))
1302
+ return false;
1303
+ if (args.types != null && !args.types.includes(r.type))
1304
+ return false;
1305
+ return (0, idbHelpers_1.matchesCertificatePartial)(r, args.partial);
1306
+ }, filtered);
1307
+ if (args.trx == null)
1343
1308
  await dbTrx.done;
1344
1309
  }
1345
1310
  async findCertificates(args) {
@@ -1347,7 +1312,7 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1347
1312
  await this.filterCertificates(args, r => {
1348
1313
  result.push(this.validateEntity(r));
1349
1314
  });
1350
- if (args.includeFields) {
1315
+ if (args.includeFields === true) {
1351
1316
  for (const c of result) {
1352
1317
  const fields = await this.findCertificateFields({ partial: { certificateId: c.certificateId }, trx: args.trx });
1353
1318
  c.fields = fields;
@@ -1356,65 +1321,28 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1356
1321
  return result;
1357
1322
  }
1358
1323
  async filterCommissions(args, filtered) {
1359
- var _a, _b, _c, _d, _e;
1360
1324
  this.assertNoUndefinedInPartial(args.partial);
1361
- if (args.partial.lockingScript)
1362
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('partial.lockingScript', `undefined. Commissions may not be found by lockingScript value.`);
1363
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
1364
- let skipped = 0;
1365
- let count = 0;
1325
+ if (args.partial.lockingScript != null) {
1326
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('partial.lockingScript', 'undefined. Commissions may not be found by lockingScript value.');
1327
+ }
1366
1328
  const dbTrx = this.toDbTrx(['commissions'], 'readonly', args.trx);
1329
+ const store = dbTrx.objectStore('commissions');
1330
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1367
1331
  let cursor;
1368
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.commissionId) {
1369
- cursor = await dbTrx.objectStore('commissions').openCursor(args.partial.commissionId);
1332
+ if (args.partial?.commissionId != null && args.partial.commissionId !== 0) {
1333
+ cursor = await store.openCursor(args.partial.commissionId);
1370
1334
  }
1371
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.userId) !== undefined) {
1372
- cursor = await dbTrx.objectStore('commissions').index('userId').openCursor(args.partial.userId);
1335
+ else if (args.partial?.userId !== undefined) {
1336
+ cursor = await store.index('userId').openCursor(args.partial.userId);
1373
1337
  }
1374
- else if (((_d = args.partial) === null || _d === void 0 ? void 0 : _d.transactionId) !== undefined) {
1375
- cursor = await dbTrx.objectStore('commissions').index('transactionId').openCursor(args.partial.transactionId);
1338
+ else if (args.partial?.transactionId !== undefined) {
1339
+ cursor = await store.index('transactionId').openCursor(args.partial.transactionId);
1376
1340
  }
1377
1341
  else {
1378
- cursor = await dbTrx.objectStore('commissions').openCursor();
1379
- }
1380
- let firstTime = true;
1381
- while (cursor) {
1382
- if (!firstTime)
1383
- cursor = await cursor.continue();
1384
- if (!cursor)
1385
- break;
1386
- firstTime = false;
1387
- const r = cursor.value;
1388
- if (args.since && args.since > r.updated_at)
1389
- continue;
1390
- if (args.partial) {
1391
- if (args.partial.commissionId !== undefined && r.commissionId !== args.partial.commissionId)
1392
- continue;
1393
- if (args.partial.transactionId !== undefined && r.transactionId !== args.partial.transactionId)
1394
- continue;
1395
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
1396
- continue;
1397
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
1398
- continue;
1399
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
1400
- continue;
1401
- if (args.partial.satoshis !== undefined && r.satoshis !== args.partial.satoshis)
1402
- continue;
1403
- if (args.partial.keyOffset !== undefined && r.keyOffset !== args.partial.keyOffset)
1404
- continue;
1405
- if (args.partial.isRedeemed !== undefined && r.isRedeemed !== args.partial.isRedeemed)
1406
- continue;
1407
- }
1408
- if (skipped < offset) {
1409
- skipped++;
1410
- continue;
1411
- }
1412
- filtered(r);
1413
- count++;
1414
- if (((_e = args.paged) === null || _e === void 0 ? void 0 : _e.limit) && count >= args.paged.limit)
1415
- break;
1342
+ cursor = await store.openCursor();
1416
1343
  }
1417
- if (!args.trx)
1344
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesCommissionPartial)(r, args.partial), filtered);
1345
+ if (args.trx == null)
1418
1346
  await dbTrx.done;
1419
1347
  }
1420
1348
  async findCommissions(args) {
@@ -1425,352 +1353,186 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1425
1353
  return result;
1426
1354
  }
1427
1355
  async filterMonitorEvents(args, filtered) {
1428
- var _a, _b, _c;
1429
1356
  this.assertNoUndefinedInPartial(args.partial);
1430
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
1431
- let skipped = 0;
1432
- let count = 0;
1433
1357
  const dbTrx = this.toDbTrx(['monitor_events'], 'readonly', args.trx);
1358
+ const store = dbTrx.objectStore('monitor_events');
1359
+ const cursor = args.partial?.id != null && args.partial.id !== 0
1360
+ ? await store.openCursor(args.partial.id)
1361
+ : await store.openCursor();
1362
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesMonitorEventPartial)(r, args.partial), filtered);
1363
+ if (args.trx == null)
1364
+ await dbTrx.done;
1365
+ }
1366
+ async findMonitorEvents(args) {
1367
+ const result = [];
1368
+ await this.filterMonitorEvents(args, r => {
1369
+ result.push(this.validateEntity(r));
1370
+ });
1371
+ return result;
1372
+ }
1373
+ async filterOutputBaskets(args, filtered) {
1374
+ this.assertNoUndefinedInPartial(args.partial);
1375
+ const dbTrx = this.toDbTrx(['output_baskets'], 'readonly', args.trx);
1376
+ const store = dbTrx.objectStore('output_baskets');
1377
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1434
1378
  let cursor;
1435
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.id) {
1436
- cursor = await dbTrx.objectStore('monitor_events').openCursor(args.partial.id);
1379
+ if (args.partial?.basketId != null && args.partial.basketId !== 0) {
1380
+ cursor = await store.openCursor(args.partial.basketId);
1437
1381
  }
1438
- else {
1439
- cursor = await dbTrx.objectStore('monitor_events').openCursor();
1440
- }
1441
- let firstTime = true;
1442
- while (cursor) {
1443
- if (!firstTime)
1444
- cursor = await cursor.continue();
1445
- if (!cursor)
1446
- break;
1447
- firstTime = false;
1448
- const r = cursor.value;
1449
- if (args.since && args.since > r.updated_at)
1450
- continue;
1451
- if (args.partial) {
1452
- if (args.partial.id !== undefined && r.id !== args.partial.id)
1453
- continue;
1454
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
1455
- continue;
1456
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
1457
- continue;
1458
- if (args.partial.event !== undefined && r.event !== args.partial.event)
1459
- continue;
1460
- if (args.partial.details !== undefined && r.details !== args.partial.details)
1461
- continue;
1462
- }
1463
- if (skipped < offset) {
1464
- skipped++;
1465
- continue;
1466
- }
1467
- filtered(r);
1468
- count++;
1469
- if (((_c = args.paged) === null || _c === void 0 ? void 0 : _c.limit) && count >= args.paged.limit)
1470
- break;
1382
+ else if (args.partial?.userId !== undefined && args.partial?.name !== undefined) {
1383
+ cursor = await store.index('name_userId').openCursor([args.partial.name, args.partial.userId]);
1384
+ }
1385
+ else if (args.partial?.userId !== undefined) {
1386
+ cursor = await store.index('userId').openCursor(args.partial.userId);
1387
+ }
1388
+ else {
1389
+ cursor = await store.openCursor();
1471
1390
  }
1472
- if (!args.trx)
1391
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesOutputBasketPartial)(r, args.partial), filtered);
1392
+ if (args.trx == null)
1473
1393
  await dbTrx.done;
1474
1394
  }
1475
- async findMonitorEvents(args) {
1395
+ async findOutputBaskets(args) {
1476
1396
  const result = [];
1477
- await this.filterMonitorEvents(args, r => {
1397
+ await this.filterOutputBaskets(args, r => {
1478
1398
  result.push(this.validateEntity(r));
1479
1399
  });
1480
1400
  return result;
1481
1401
  }
1482
- async filterOutputBaskets(args, filtered) {
1483
- var _a, _b, _c, _d, _e;
1484
- this.assertNoUndefinedInPartial(args.partial);
1485
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
1486
- let skipped = 0;
1487
- let count = 0;
1488
- const dbTrx = this.toDbTrx(['output_baskets'], 'readonly', args.trx);
1489
- let cursor;
1490
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.basketId) {
1491
- cursor = await dbTrx.objectStore('output_baskets').openCursor(args.partial.basketId);
1492
- }
1493
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.userId) !== undefined) {
1494
- if (((_d = args.partial) === null || _d === void 0 ? void 0 : _d.name) !== undefined) {
1495
- cursor = await dbTrx
1496
- .objectStore('output_baskets')
1497
- .index('name_userId')
1498
- .openCursor([args.partial.name, args.partial.userId]);
1499
- }
1500
- else {
1501
- cursor = await dbTrx.objectStore('output_baskets').index('userId').openCursor(args.partial.userId);
1402
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1403
+ async openOutputsCursor(
1404
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1405
+ store,
1406
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1407
+ partial, direction
1408
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1409
+ ) {
1410
+ if (partial?.outputId != null && partial.outputId !== 0)
1411
+ return store.openCursor(partial.outputId, direction);
1412
+ if (partial?.userId !== undefined) {
1413
+ if (partial?.transactionId != null && partial.transactionId !== 0 && partial?.vout !== undefined) {
1414
+ return store
1415
+ .index('transactionId_vout_userId')
1416
+ .openCursor([partial.transactionId, partial.vout, partial.userId], direction);
1502
1417
  }
1503
- }
1504
- else {
1505
- cursor = await dbTrx.objectStore('output_baskets').openCursor();
1506
- }
1507
- let firstTime = true;
1508
- while (cursor) {
1509
- if (!firstTime)
1510
- cursor = await cursor.continue();
1511
- if (!cursor)
1512
- break;
1513
- firstTime = false;
1514
- const r = cursor.value;
1515
- if (args.since && args.since > r.updated_at)
1516
- continue;
1517
- if (args.partial) {
1518
- if (args.partial.basketId !== undefined && r.basketId !== args.partial.basketId)
1519
- continue;
1520
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
1521
- continue;
1522
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
1523
- continue;
1524
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
1525
- continue;
1526
- if (args.partial.name !== undefined && r.name !== args.partial.name)
1527
- continue;
1528
- if (args.partial.numberOfDesiredUTXOs !== undefined &&
1529
- r.numberOfDesiredUTXOs !== args.partial.numberOfDesiredUTXOs)
1530
- continue;
1531
- if (args.partial.minimumDesiredUTXOValue !== undefined &&
1532
- r.numberOfDesiredSatoshis !== args.partial.minimumDesiredUTXOValue)
1533
- continue;
1534
- if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
1535
- continue;
1418
+ if (partial?.txid != null && partial.txid !== '' && partial?.vout !== undefined) {
1419
+ return store
1420
+ .index('txid_vout_userId')
1421
+ .openCursor([partial.txid, partial.vout, partial.userId], direction);
1536
1422
  }
1537
- if (skipped < offset) {
1538
- skipped++;
1539
- continue;
1423
+ if (partial?.basketId !== undefined) {
1424
+ return store.index('userId_basketId').openCursor([partial.userId, partial.basketId], direction);
1540
1425
  }
1541
- filtered(r);
1542
- count++;
1543
- if (((_e = args.paged) === null || _e === void 0 ? void 0 : _e.limit) && count >= args.paged.limit)
1544
- break;
1426
+ return store.index('userId').openCursor(partial.userId, direction);
1545
1427
  }
1546
- if (!args.trx)
1547
- await dbTrx.done;
1428
+ if (partial?.transactionId !== undefined)
1429
+ return store.index('transactionId').openCursor(partial.transactionId, direction);
1430
+ if (partial?.basketId !== undefined)
1431
+ return store.index('basketId').openCursor(partial.basketId, direction);
1432
+ if (partial?.spentBy !== undefined)
1433
+ return store.index('spentBy').openCursor(partial.spentBy, direction);
1434
+ return store.openCursor(null, direction);
1548
1435
  }
1549
- async findOutputBaskets(args) {
1550
- const result = [];
1551
- await this.filterOutputBaskets(args, r => {
1552
- result.push(this.validateEntity(r));
1553
- });
1554
- return result;
1436
+ async eligibleOutputTransactionIds(args, dbTrx) {
1437
+ if (args.txStatus == null)
1438
+ return undefined;
1439
+ const validTransactionIds = new Set();
1440
+ const transactions = dbTrx.objectStore('transactions');
1441
+ for (const status of args.txStatus) {
1442
+ const index = args.partial.userId === undefined
1443
+ ? transactions.index('status')
1444
+ : transactions.index('status_userId');
1445
+ const key = args.partial.userId === undefined ? status : [status, args.partial.userId];
1446
+ for (const transactionId of await index.getAllKeys(key))
1447
+ validTransactionIds.add(Number(transactionId));
1448
+ }
1449
+ return validTransactionIds;
1555
1450
  }
1556
1451
  async filterOutputs(args, filtered, tagIds, isQueryModeAll) {
1557
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
1558
1452
  this.assertNoUndefinedInPartial(args.partial);
1559
- // args.txStatus
1560
- // args.noScript
1561
- if (args.partial.lockingScript)
1562
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.lockingScript', `undefined. Outputs may not be found by lockingScript value.`);
1563
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
1564
- let skipped = 0;
1565
- let count = 0;
1453
+ if (args.partial.lockingScript != null) {
1454
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.lockingScript', 'undefined. Outputs may not be found by lockingScript value.');
1455
+ }
1566
1456
  const stores = ['outputs'];
1567
- if (tagIds && tagIds.length > 0) {
1457
+ if (tagIds != null && tagIds.length > 0)
1568
1458
  stores.push('output_tags_map');
1569
- }
1570
- if (args.txStatus) {
1459
+ if (args.txStatus != null)
1571
1460
  stores.push('transactions');
1572
- }
1573
1461
  const dbTrx = this.toDbTrx(stores, 'readonly', args.trx);
1574
- const direction = args.orderDescending ? 'prev' : 'next';
1575
- let cursor;
1576
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.outputId) {
1577
- cursor = await dbTrx.objectStore('outputs').openCursor(args.partial.outputId, direction);
1578
- }
1579
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.userId) !== undefined) {
1580
- if (((_d = args.partial) === null || _d === void 0 ? void 0 : _d.transactionId) && ((_e = args.partial) === null || _e === void 0 ? void 0 : _e.vout) !== undefined) {
1581
- cursor = await dbTrx
1582
- .objectStore('outputs')
1583
- .index('transactionId_vout_userId')
1584
- .openCursor([args.partial.transactionId, args.partial.vout, args.partial.userId], direction);
1585
- }
1586
- else {
1587
- cursor = await dbTrx.objectStore('outputs').index('userId').openCursor(args.partial.userId, direction);
1588
- }
1589
- }
1590
- else if (((_f = args.partial) === null || _f === void 0 ? void 0 : _f.transactionId) !== undefined) {
1591
- cursor = await dbTrx.objectStore('outputs').index('transactionId').openCursor(args.partial.transactionId, direction);
1592
- }
1593
- else if (((_g = args.partial) === null || _g === void 0 ? void 0 : _g.basketId) !== undefined) {
1594
- cursor = await dbTrx.objectStore('outputs').index('basketId').openCursor(args.partial.basketId, direction);
1595
- }
1596
- else if (((_h = args.partial) === null || _h === void 0 ? void 0 : _h.spentBy) !== undefined) {
1597
- cursor = await dbTrx.objectStore('outputs').index('spentBy').openCursor(args.partial.spentBy, direction);
1598
- }
1599
- else {
1600
- cursor = await dbTrx.objectStore('outputs').openCursor(null, direction);
1601
- }
1602
- let firstTime = true;
1603
- while (cursor) {
1604
- if (!firstTime)
1605
- cursor = await cursor.continue();
1606
- if (!cursor)
1607
- break;
1608
- firstTime = false;
1609
- const r = cursor.value;
1610
- if (args.since && args.since > r.updated_at)
1611
- continue;
1612
- if (args.partial) {
1613
- if (args.partial.outputId !== undefined && r.outputId !== args.partial.outputId)
1614
- continue;
1615
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
1616
- continue;
1617
- if (args.partial.transactionId !== undefined && r.transactionId !== args.partial.transactionId)
1618
- continue;
1619
- if (args.partial.basketId !== undefined && r.basketId !== args.partial.basketId)
1620
- continue;
1621
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
1622
- continue;
1623
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
1624
- continue;
1625
- if (args.partial.spendable !== undefined && r.spendable !== args.partial.spendable)
1626
- continue;
1627
- if (args.partial.change !== undefined && r.change !== args.partial.change)
1628
- continue;
1629
- if (args.partial.outputDescription !== undefined && r.outputDescription !== args.partial.outputDescription)
1630
- continue;
1631
- if (args.partial.vout !== undefined && r.vout !== args.partial.vout)
1632
- continue;
1633
- if (args.partial.satoshis !== undefined && r.satoshis !== args.partial.satoshis)
1634
- continue;
1635
- if (args.partial.providedBy !== undefined && r.providedBy !== args.partial.providedBy)
1636
- continue;
1637
- if (args.partial.purpose !== undefined && r.purpose !== args.partial.purpose)
1638
- continue;
1639
- if (args.partial.type !== undefined && r.type !== args.partial.type)
1640
- continue;
1641
- if (args.partial.txid !== undefined && r.txid !== args.partial.txid)
1642
- continue;
1643
- if (args.partial.senderIdentityKey !== undefined && r.senderIdentityKey !== args.partial.senderIdentityKey)
1644
- continue;
1645
- if (args.partial.derivationPrefix !== undefined && r.derivationPrefix !== args.partial.derivationPrefix)
1646
- continue;
1647
- if (args.partial.derivationSuffix !== undefined && r.derivationSuffix !== args.partial.derivationSuffix)
1648
- continue;
1649
- if (args.partial.customInstructions !== undefined && r.customInstructions !== args.partial.customInstructions)
1650
- continue;
1651
- if (args.partial.spentBy !== undefined && r.spentBy !== args.partial.spentBy)
1652
- continue;
1653
- if (args.partial.sequenceNumber !== undefined && r.sequenceNumber !== args.partial.sequenceNumber)
1654
- continue;
1655
- if (args.partial.scriptLength !== undefined && r.scriptLength !== args.partial.scriptLength)
1656
- continue;
1657
- if (args.partial.scriptOffset !== undefined && r.scriptOffset !== args.partial.scriptOffset)
1658
- continue;
1659
- }
1660
- if (args.txStatus !== undefined && args.txStatus.length > 0) {
1661
- const count = await this.countTransactions({
1662
- partial: { transactionId: r.transactionId },
1663
- status: args.txStatus,
1664
- trx: dbTrx
1665
- });
1666
- if (count === 0)
1667
- continue;
1668
- }
1669
- if (tagIds && tagIds.length > 0) {
1670
- let ids = [...tagIds];
1671
- await this.filterOutputTagMaps({ partial: { outputId: r.outputId }, trx: dbTrx }, tm => {
1672
- if (ids.length > 0) {
1673
- const i = ids.indexOf(tm.outputTagId);
1674
- if (i >= 0) {
1675
- if (isQueryModeAll) {
1676
- ids.splice(i, 1);
1677
- }
1678
- else {
1679
- ids = [];
1680
- }
1681
- }
1682
- }
1683
- });
1684
- if (ids.length > 0)
1685
- continue;
1686
- }
1687
- if (skipped < offset) {
1688
- skipped++;
1689
- continue;
1690
- }
1691
- if (args.noScript === true) {
1462
+ const direction = args.orderDescending === true ? 'prev' : 'next';
1463
+ const store = dbTrx.objectStore('outputs');
1464
+ const validTransactionIds = await this.eligibleOutputTransactionIds(args, dbTrx);
1465
+ const cursor = await this.openOutputsCursor(store, args.partial, direction);
1466
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
1467
+ if (!(0, idbHelpers_1.matchesOutputPartial)(r, args.partial))
1468
+ return false;
1469
+ if (validTransactionIds != null && !validTransactionIds.has(r.transactionId))
1470
+ return false;
1471
+ if (tagIds != null &&
1472
+ tagIds.length > 0 &&
1473
+ !(await this.outputMatchesTags(r.outputId, tagIds, isQueryModeAll, dbTrx)))
1474
+ return false;
1475
+ return true;
1476
+ }, r => {
1477
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1478
+ if (args.noScript === true)
1692
1479
  r.script = undefined;
1693
- }
1694
1480
  filtered(r);
1695
- count++;
1696
- if (((_j = args.paged) === null || _j === void 0 ? void 0 : _j.limit) && count >= args.paged.limit)
1697
- break;
1698
- }
1699
- if (!args.trx)
1481
+ });
1482
+ if (args.trx == null)
1700
1483
  await dbTrx.done;
1701
1484
  }
1485
+ async outputMatchesTags(outputId, tagIds, isQueryModeAll, dbTrx) {
1486
+ let ids = [...tagIds];
1487
+ await this.filterOutputTagMaps({ partial: { outputId }, trx: dbTrx }, tm => {
1488
+ if (ids.length > 0) {
1489
+ const i = ids.indexOf(tm.outputTagId);
1490
+ if (i >= 0) {
1491
+ if (isQueryModeAll === true) {
1492
+ ids.splice(i, 1);
1493
+ }
1494
+ else {
1495
+ ids = [];
1496
+ }
1497
+ }
1498
+ }
1499
+ });
1500
+ return ids.length === 0;
1501
+ }
1702
1502
  async findOutputs(args, tagIds, isQueryModeAll) {
1703
1503
  const results = [];
1704
1504
  await this.filterOutputs(args, r => {
1705
1505
  results.push(this.validateEntity(r));
1706
1506
  }, tagIds, isQueryModeAll);
1707
1507
  for (const o of results) {
1708
- // noScript skips the rawTx-slice re-hydration but does not wipe script already
1709
- // on the row — parity with Knex/Bun, which simply don't SELECT the column.
1710
- if (!args.noScript)
1508
+ if (args.noScript === true) {
1509
+ o.lockingScript = undefined;
1510
+ }
1511
+ else {
1711
1512
  await this.validateOutputScript(o, args.trx);
1513
+ }
1712
1514
  }
1713
1515
  return results;
1714
1516
  }
1715
1517
  async filterOutputTags(args, filtered) {
1716
- var _a, _b, _c, _d, _e;
1717
- this.assertNoUndefinedInPartial(args.partial);
1718
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
1719
- let skipped = 0;
1720
- let count = 0;
1721
1518
  const dbTrx = this.toDbTrx(['output_tags'], 'readonly', args.trx);
1519
+ const store = dbTrx.objectStore('output_tags');
1520
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1722
1521
  let cursor;
1723
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.outputTagId) {
1724
- cursor = await dbTrx.objectStore('output_tags').openCursor(args.partial.outputTagId);
1725
- }
1726
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.userId) !== undefined) {
1727
- if (((_d = args.partial) === null || _d === void 0 ? void 0 : _d.tag) !== undefined) {
1728
- cursor = await dbTrx
1729
- .objectStore('output_tags')
1730
- .index('tag_userId')
1731
- .openCursor([args.partial.tag, args.partial.userId]);
1732
- }
1733
- else {
1734
- cursor = await dbTrx.objectStore('output_tags').index('userId').openCursor(args.partial.userId);
1735
- }
1522
+ if (args.partial?.outputTagId != null && args.partial.outputTagId !== 0) {
1523
+ cursor = await store.openCursor(args.partial.outputTagId);
1524
+ }
1525
+ else if (args.partial?.userId !== undefined && args.partial?.tag !== undefined) {
1526
+ cursor = await store.index('tag_userId').openCursor([args.partial.tag, args.partial.userId]);
1527
+ }
1528
+ else if (args.partial?.userId !== undefined) {
1529
+ cursor = await store.index('userId').openCursor(args.partial.userId);
1736
1530
  }
1737
1531
  else {
1738
- cursor = await dbTrx.objectStore('output_tags').openCursor();
1739
- }
1740
- let firstTime = true;
1741
- while (cursor) {
1742
- if (!firstTime)
1743
- cursor = await cursor.continue();
1744
- if (!cursor)
1745
- break;
1746
- firstTime = false;
1747
- const r = cursor.value;
1748
- if (args.since && args.since > r.updated_at)
1749
- continue;
1750
- if (args.partial) {
1751
- if (args.partial.outputTagId !== undefined && r.outputTagId !== args.partial.outputTagId)
1752
- continue;
1753
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
1754
- continue;
1755
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
1756
- continue;
1757
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
1758
- continue;
1759
- if (args.partial.tag !== undefined && r.tag !== args.partial.tag)
1760
- continue;
1761
- if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
1762
- continue;
1763
- }
1764
- if (skipped < offset) {
1765
- skipped++;
1766
- continue;
1767
- }
1768
- filtered(r);
1769
- count++;
1770
- if (((_e = args.paged) === null || _e === void 0 ? void 0 : _e.limit) && count >= args.paged.limit)
1771
- break;
1532
+ cursor = await store.openCursor();
1772
1533
  }
1773
- if (!args.trx)
1534
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesOutputTagPartial)(r, args.partial), filtered);
1535
+ if (args.trx == null)
1774
1536
  await dbTrx.done;
1775
1537
  }
1776
1538
  async findOutputTags(args) {
@@ -1781,78 +1543,30 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1781
1543
  return result;
1782
1544
  }
1783
1545
  async filterSyncStates(args, filtered) {
1784
- var _a, _b, _c, _d, _e, _f, _g;
1785
- this.assertNoUndefinedInPartial(args.partial);
1786
- if (args.partial.syncMap)
1787
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.syncMap', `undefined. SyncStates may not be found by syncMap value.`);
1788
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
1789
- let skipped = 0;
1790
- let count = 0;
1546
+ if (args.partial.syncMap != null && args.partial.syncMap !== '') {
1547
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.syncMap', 'undefined. SyncStates may not be found by syncMap value.');
1548
+ }
1791
1549
  const dbTrx = this.toDbTrx(['sync_states'], 'readonly', args.trx);
1550
+ const store = dbTrx.objectStore('sync_states');
1551
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1792
1552
  let cursor;
1793
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.syncStateId) {
1794
- cursor = await dbTrx.objectStore('sync_states').openCursor(args.partial.syncStateId);
1553
+ if (args.partial?.syncStateId != null && args.partial.syncStateId !== 0) {
1554
+ cursor = await store.openCursor(args.partial.syncStateId);
1795
1555
  }
1796
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.userId) !== undefined) {
1797
- cursor = await dbTrx.objectStore('sync_states').index('userId').openCursor(args.partial.userId);
1556
+ else if (args.partial?.userId !== undefined) {
1557
+ cursor = await store.index('userId').openCursor(args.partial.userId);
1798
1558
  }
1799
- else if (((_d = args.partial) === null || _d === void 0 ? void 0 : _d.refNum) !== undefined) {
1800
- cursor = await dbTrx.objectStore('sync_states').index('refNum').openCursor(args.partial.refNum);
1559
+ else if (args.partial?.refNum !== undefined) {
1560
+ cursor = await store.index('refNum').openCursor(args.partial.refNum);
1801
1561
  }
1802
- else if (((_e = args.partial) === null || _e === void 0 ? void 0 : _e.status) !== undefined) {
1803
- cursor = await dbTrx.objectStore('sync_states').index('status').openCursor(args.partial.status);
1562
+ else if (args.partial?.status !== undefined) {
1563
+ cursor = await store.index('status').openCursor(args.partial.status);
1804
1564
  }
1805
1565
  else {
1806
- cursor = await dbTrx.objectStore('sync_states').openCursor();
1807
- }
1808
- let firstTime = true;
1809
- while (cursor) {
1810
- if (!firstTime)
1811
- cursor = await cursor.continue();
1812
- if (!cursor)
1813
- break;
1814
- firstTime = false;
1815
- const r = cursor.value;
1816
- if (args.since && args.since > r.updated_at)
1817
- continue;
1818
- if (args.partial) {
1819
- if (args.partial.syncStateId !== undefined && r.syncStateId !== args.partial.syncStateId)
1820
- continue;
1821
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
1822
- continue;
1823
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
1824
- continue;
1825
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
1826
- continue;
1827
- if (args.partial.storageIdentityKey !== undefined && r.storageIdentityKey !== args.partial.storageIdentityKey)
1828
- continue;
1829
- if (args.partial.storageName !== undefined && r.storageName !== args.partial.storageName)
1830
- continue;
1831
- if (args.partial.status !== undefined && r.status !== args.partial.status)
1832
- continue;
1833
- if (args.partial.init !== undefined && r.init !== args.partial.init)
1834
- continue;
1835
- if (args.partial.refNum !== undefined && r.refNum !== args.partial.refNum)
1836
- continue;
1837
- if (args.partial.when !== undefined && ((_f = r.when) === null || _f === void 0 ? void 0 : _f.getTime()) !== args.partial.when.getTime())
1838
- continue;
1839
- if (args.partial.satoshis !== undefined && r.satoshis !== args.partial.satoshis)
1840
- continue;
1841
- if (args.partial.errorLocal !== undefined && r.errorLocale !== args.partial.errorLocal)
1842
- continue;
1843
- if (args.partial.errorOther !== undefined && r.errorOther !== args.partial.errorOther)
1844
- continue;
1845
- }
1846
- if (skipped < offset) {
1847
- skipped++;
1848
- continue;
1849
- }
1850
- filtered(r);
1851
- count++;
1852
- if (((_g = args.paged) === null || _g === void 0 ? void 0 : _g.limit) && count >= args.paged.limit)
1853
- break;
1566
+ cursor = await store.openCursor();
1854
1567
  }
1855
- if (!args.trx)
1568
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesSyncStatePartial)(r, args.partial), filtered);
1569
+ if (args.trx == null)
1856
1570
  await dbTrx.done;
1857
1571
  }
1858
1572
  async findSyncStates(args) {
@@ -1862,125 +1576,78 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1862
1576
  });
1863
1577
  return result;
1864
1578
  }
1579
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1580
+ async openTransactionsCursor(
1581
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1582
+ store,
1583
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1584
+ partial, direction
1585
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1586
+ ) {
1587
+ if (partial?.transactionId != null && partial.transactionId !== 0)
1588
+ return store.openCursor(partial.transactionId, direction);
1589
+ if (partial?.userId !== undefined) {
1590
+ if (partial?.status !== undefined) {
1591
+ return store.index('status_userId').openCursor([partial.status, partial.userId], direction);
1592
+ }
1593
+ return store.index('userId').openCursor(partial.userId, direction);
1594
+ }
1595
+ if (partial?.status !== undefined)
1596
+ return store.index('status').openCursor(partial.status, direction);
1597
+ if (partial?.provenTxId !== undefined)
1598
+ return store.index('provenTxId').openCursor(partial.provenTxId, direction);
1599
+ if (partial?.reference !== undefined)
1600
+ return store.index('reference').openCursor(partial.reference, direction);
1601
+ return store.openCursor(null, direction);
1602
+ }
1865
1603
  async filterTransactions(args, filtered, labelIds, isQueryModeAll) {
1866
- var _a, _b, _c, _d, _e, _f, _g, _h;
1867
- this.assertNoUndefinedInPartial(args.partial);
1868
- if (args.partial.rawTx)
1869
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx', `undefined. Transactions may not be found by rawTx value.`);
1870
- if (args.partial.inputBEEF)
1871
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.inputBEEF', `undefined. Transactions may not be found by inputBEEF value.`);
1872
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
1873
- let skipped = 0;
1874
- let count = 0;
1604
+ if (args.partial.rawTx != null) {
1605
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.rawTx', 'undefined. Transactions may not be found by rawTx value.');
1606
+ }
1607
+ if (args.partial.inputBEEF != null) {
1608
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.partial.inputBEEF', 'undefined. Transactions may not be found by inputBEEF value.');
1609
+ }
1875
1610
  const stores = ['transactions'];
1876
- if (labelIds && labelIds.length > 0) {
1611
+ if (labelIds != null && labelIds.length > 0)
1877
1612
  stores.push('tx_labels_map');
1878
- }
1879
1613
  const dbTrx = this.toDbTrx(stores, 'readonly', args.trx);
1880
- const direction = args.orderDescending ? 'prev' : 'next';
1881
- let cursor;
1882
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.transactionId) {
1883
- cursor = await dbTrx.objectStore('transactions').openCursor(args.partial.transactionId, direction);
1884
- }
1885
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.userId) !== undefined) {
1886
- if (((_d = args.partial) === null || _d === void 0 ? void 0 : _d.status) !== undefined) {
1887
- cursor = await dbTrx
1888
- .objectStore('transactions')
1889
- .index('status_userId')
1890
- .openCursor([args.partial.status, args.partial.userId], direction);
1891
- }
1892
- else {
1893
- cursor = await dbTrx.objectStore('transactions').index('userId').openCursor(args.partial.userId, direction);
1894
- }
1895
- }
1896
- else if (((_e = args.partial) === null || _e === void 0 ? void 0 : _e.status) !== undefined) {
1897
- cursor = await dbTrx.objectStore('transactions').index('status').openCursor(args.partial.status, direction);
1898
- }
1899
- else if (((_f = args.partial) === null || _f === void 0 ? void 0 : _f.provenTxId) !== undefined) {
1900
- cursor = await dbTrx
1901
- .objectStore('transactions')
1902
- .index('provenTxId')
1903
- .openCursor(args.partial.provenTxId, direction);
1904
- }
1905
- else if (((_g = args.partial) === null || _g === void 0 ? void 0 : _g.reference) !== undefined) {
1906
- cursor = await dbTrx.objectStore('transactions').index('reference').openCursor(args.partial.reference, direction);
1907
- }
1908
- else {
1909
- cursor = await dbTrx.objectStore('transactions').openCursor(null, direction);
1910
- }
1911
- let firstTime = true;
1912
- while (cursor) {
1913
- if (!firstTime)
1914
- cursor = await cursor.continue();
1915
- if (!cursor)
1916
- break;
1917
- firstTime = false;
1918
- const r = cursor.value;
1919
- if (args.since && args.since > r.updated_at)
1920
- continue;
1921
- if (args.from && r.created_at.getTime() < args.from.getTime())
1922
- continue;
1923
- if (args.to && r.created_at.getTime() >= args.to.getTime())
1924
- continue;
1925
- if (args.status && args.status.length > 0 && !args.status.includes(r.status))
1926
- continue;
1927
- if (args.partial) {
1928
- if (args.partial.transactionId !== undefined && r.transactionId !== args.partial.transactionId)
1929
- continue;
1930
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
1931
- continue;
1932
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
1933
- continue;
1934
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
1935
- continue;
1936
- if (args.partial.provenTxId !== undefined && r.provenTxId !== args.partial.provenTxId)
1937
- continue;
1938
- if (args.partial.status !== undefined && r.status !== args.partial.status)
1939
- continue;
1940
- if (args.partial.reference !== undefined && r.reference !== args.partial.reference)
1941
- continue;
1942
- if (args.partial.isOutgoing !== undefined && r.isOutgoing !== args.partial.isOutgoing)
1943
- continue;
1944
- if (args.partial.satoshis !== undefined && r.satoshis !== args.partial.satoshis)
1945
- continue;
1946
- if (args.partial.description !== undefined && r.description !== args.partial.description)
1947
- continue;
1948
- if (args.partial.version !== undefined && r.version !== args.partial.version)
1949
- continue;
1950
- if (args.partial.lockTime !== undefined && r.lockTime !== args.partial.lockTime)
1951
- continue;
1952
- if (args.partial.txid !== undefined && r.txid !== args.partial.txid)
1953
- continue;
1954
- }
1955
- if (labelIds && labelIds.length > 0) {
1956
- let ids = [...labelIds];
1957
- await this.filterTxLabelMaps({ partial: { transactionId: r.transactionId }, trx: dbTrx }, lm => {
1958
- if (ids.length > 0) {
1959
- const i = ids.indexOf(lm.txLabelId);
1960
- if (i >= 0) {
1961
- if (isQueryModeAll) {
1962
- ids.splice(i, 1);
1963
- }
1964
- else {
1965
- ids = [];
1966
- }
1967
- }
1614
+ const direction = args.orderDescending === true ? 'prev' : 'next';
1615
+ const store = dbTrx.objectStore('transactions');
1616
+ const cursor = await this.openTransactionsCursor(store, args.partial, direction);
1617
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, async (r) => {
1618
+ if (args.from != null && r.created_at.getTime() < args.from.getTime())
1619
+ return false;
1620
+ if (args.to != null && r.created_at.getTime() >= args.to.getTime())
1621
+ return false;
1622
+ if (args.status != null && !args.status.includes(r.status))
1623
+ return false;
1624
+ if (!(0, idbHelpers_1.matchesTransactionPartial)(r, args.partial))
1625
+ return false;
1626
+ if (labelIds != null &&
1627
+ labelIds.length > 0 &&
1628
+ !(await this.transactionMatchesLabels(r.transactionId, labelIds, isQueryModeAll, dbTrx)))
1629
+ return false;
1630
+ return true;
1631
+ }, filtered);
1632
+ if (args.trx == null)
1633
+ await dbTrx.done;
1634
+ }
1635
+ async transactionMatchesLabels(transactionId, labelIds, isQueryModeAll, dbTrx) {
1636
+ let ids = [...labelIds];
1637
+ await this.filterTxLabelMaps({ partial: { transactionId }, trx: dbTrx }, lm => {
1638
+ if (ids.length > 0) {
1639
+ const i = ids.indexOf(lm.txLabelId);
1640
+ if (i >= 0) {
1641
+ if (isQueryModeAll === true) {
1642
+ ids.splice(i, 1);
1968
1643
  }
1969
- });
1970
- if (ids.length > 0)
1971
- continue;
1972
- }
1973
- if (skipped < offset) {
1974
- skipped++;
1975
- continue;
1644
+ else {
1645
+ ids = [];
1646
+ }
1647
+ }
1976
1648
  }
1977
- filtered(r);
1978
- count++;
1979
- if (((_h = args.paged) === null || _h === void 0 ? void 0 : _h.limit) && count >= args.paged.limit)
1980
- break;
1981
- }
1982
- if (!args.trx)
1983
- await dbTrx.done;
1649
+ });
1650
+ return ids.length === 0;
1984
1651
  }
1985
1652
  async findTransactions(args, labelIds, isQueryModeAll) {
1986
1653
  const results = [];
@@ -1988,75 +1655,35 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
1988
1655
  results.push(this.validateEntity(r));
1989
1656
  }, labelIds, isQueryModeAll);
1990
1657
  for (const t of results) {
1991
- // noRawTx skips rawTx re-hydration but does not wipe inputBEEF — Knex's
1992
- // transactionColumnsWithoutRawTx only strips rawTx, and callers such as
1993
- // getReqsAndBeefToShareWithWorld legitimately need inputBEEF when noRawTx is set.
1994
- if (!args.noRawTx)
1995
- await this.validateRawTransaction(t, args.trx);
1996
- else
1658
+ if (args.noRawTx === true) {
1997
1659
  t.rawTx = undefined;
1660
+ t.inputBEEF = undefined;
1661
+ }
1662
+ else {
1663
+ await this.validateRawTransaction(t, args.trx);
1664
+ }
1998
1665
  }
1999
1666
  return results;
2000
1667
  }
2001
1668
  async filterTxLabels(args, filtered) {
2002
- var _a, _b, _c, _d, _e;
2003
- this.assertNoUndefinedInPartial(args.partial);
2004
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
2005
- let skipped = 0;
2006
- let count = 0;
2007
1669
  const dbTrx = this.toDbTrx(['tx_labels'], 'readonly', args.trx);
1670
+ const store = dbTrx.objectStore('tx_labels');
1671
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2008
1672
  let cursor;
2009
- if ((_b = args.partial) === null || _b === void 0 ? void 0 : _b.txLabelId) {
2010
- cursor = await dbTrx.objectStore('tx_labels').openCursor(args.partial.txLabelId);
2011
- }
2012
- else if (((_c = args.partial) === null || _c === void 0 ? void 0 : _c.userId) !== undefined) {
2013
- if (((_d = args.partial) === null || _d === void 0 ? void 0 : _d.label) !== undefined) {
2014
- cursor = await dbTrx
2015
- .objectStore('tx_labels')
2016
- .index('label_userId')
2017
- .openCursor([args.partial.label, args.partial.userId]);
2018
- }
2019
- else {
2020
- cursor = await dbTrx.objectStore('tx_labels').index('userId').openCursor(args.partial.userId);
2021
- }
1673
+ if (args.partial?.txLabelId != null && args.partial.txLabelId !== 0) {
1674
+ cursor = await store.openCursor(args.partial.txLabelId);
1675
+ }
1676
+ else if (args.partial?.userId !== undefined && args.partial?.label !== undefined) {
1677
+ cursor = await store.index('label_userId').openCursor([args.partial.label, args.partial.userId]);
1678
+ }
1679
+ else if (args.partial?.userId !== undefined) {
1680
+ cursor = await store.index('userId').openCursor(args.partial.userId);
2022
1681
  }
2023
1682
  else {
2024
- cursor = await dbTrx.objectStore('tx_labels').openCursor();
2025
- }
2026
- let firstTime = true;
2027
- while (cursor) {
2028
- if (!firstTime)
2029
- cursor = await cursor.continue();
2030
- if (!cursor)
2031
- break;
2032
- firstTime = false;
2033
- const r = cursor.value;
2034
- if (args.since && args.since > r.updated_at)
2035
- continue;
2036
- if (args.partial) {
2037
- if (args.partial.txLabelId !== undefined && r.txLabelId !== args.partial.txLabelId)
2038
- continue;
2039
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
2040
- continue;
2041
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
2042
- continue;
2043
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
2044
- continue;
2045
- if (args.partial.label !== undefined && r.label !== args.partial.label)
2046
- continue;
2047
- if (args.partial.isDeleted !== undefined && r.isDeleted !== args.partial.isDeleted)
2048
- continue;
2049
- }
2050
- if (skipped < offset) {
2051
- skipped++;
2052
- continue;
2053
- }
2054
- filtered(r);
2055
- count++;
2056
- if (((_e = args.paged) === null || _e === void 0 ? void 0 : _e.limit) && count >= args.paged.limit)
2057
- break;
1683
+ cursor = await store.openCursor();
2058
1684
  }
2059
- if (!args.trx)
1685
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => (0, idbHelpers_1.matchesTxLabelPartial)(r, args.partial), filtered);
1686
+ if (args.trx == null)
2060
1687
  await dbTrx.done;
2061
1688
  }
2062
1689
  async findTxLabels(args) {
@@ -2066,46 +1693,26 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
2066
1693
  });
2067
1694
  return result;
2068
1695
  }
1696
+ matchesUserPartial(r, partial) {
1697
+ if (partial == null)
1698
+ return true;
1699
+ if (partial.userId != null && partial.userId !== 0 && r.userId !== partial.userId)
1700
+ return false;
1701
+ if (partial.created_at != null && r.created_at.getTime() !== partial.created_at.getTime())
1702
+ return false;
1703
+ if (partial.updated_at != null && r.updated_at.getTime() !== partial.updated_at.getTime())
1704
+ return false;
1705
+ if (partial.identityKey != null && partial.identityKey !== '' && r.identityKey !== partial.identityKey)
1706
+ return false;
1707
+ if (partial.activeStorage != null && partial.activeStorage !== '' && r.activeStorage !== partial.activeStorage)
1708
+ return false;
1709
+ return true;
1710
+ }
2069
1711
  async filterUsers(args, filtered) {
2070
- var _a, _b;
2071
- this.assertNoUndefinedInPartial(args.partial);
2072
- const offset = ((_a = args.paged) === null || _a === void 0 ? void 0 : _a.offset) || 0;
2073
- let skipped = 0;
2074
- let count = 0;
2075
1712
  const dbTrx = this.toDbTrx(['users'], 'readonly', args.trx);
2076
- let cursor = await dbTrx.objectStore('users').openCursor();
2077
- let firstTime = true;
2078
- while (cursor) {
2079
- if (!firstTime)
2080
- cursor = await cursor.continue();
2081
- if (!cursor)
2082
- break;
2083
- firstTime = false;
2084
- const r = cursor.value;
2085
- if (args.since && args.since > r.updated_at)
2086
- continue;
2087
- if (args.partial) {
2088
- if (args.partial.userId !== undefined && r.userId !== args.partial.userId)
2089
- continue;
2090
- if (args.partial.created_at !== undefined && r.created_at.getTime() !== args.partial.created_at.getTime())
2091
- continue;
2092
- if (args.partial.updated_at !== undefined && r.updated_at.getTime() !== args.partial.updated_at.getTime())
2093
- continue;
2094
- if (args.partial.identityKey !== undefined && r.identityKey !== args.partial.identityKey)
2095
- continue;
2096
- if (args.partial.activeStorage !== undefined && r.activeStorage !== args.partial.activeStorage)
2097
- continue;
2098
- }
2099
- if (skipped < offset) {
2100
- skipped++;
2101
- continue;
2102
- }
2103
- filtered(r);
2104
- count++;
2105
- if (((_b = args.paged) === null || _b === void 0 ? void 0 : _b.limit) && count >= args.paged.limit)
2106
- break;
2107
- }
2108
- if (!args.trx)
1713
+ const cursor = await dbTrx.objectStore('users').openCursor();
1714
+ await scanCursor(cursor, args.since, args.paged?.offset ?? 0, args.paged?.limit, r => this.matchesUserPartial(r, args.partial), filtered);
1715
+ if (args.trx == null)
2109
1716
  await dbTrx.done;
2110
1717
  }
2111
1718
  async findUsers(args) {
@@ -2244,10 +1851,8 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
2244
1851
  }, args.userId);
2245
1852
  return results;
2246
1853
  }
2247
- async verifyReadyForDatabaseAccess(trx) {
2248
- if (!this._settings) {
2249
- this._settings = await this.readSettings();
2250
- }
1854
+ async verifyReadyForDatabaseAccess(_trx) {
1855
+ this._settings ??= await this.readSettings();
2251
1856
  return this._settings.dbtype;
2252
1857
  }
2253
1858
  /**
@@ -2257,18 +1862,30 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
2257
1862
  validateEntity(entity, dateFields, booleanFields) {
2258
1863
  entity.created_at = this.validateDate(entity.created_at);
2259
1864
  entity.updated_at = this.validateDate(entity.updated_at);
2260
- if (dateFields) {
2261
- for (const df of dateFields) {
2262
- if (entity[df])
2263
- entity[df] = this.validateDate(entity[df]);
2264
- }
1865
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1866
+ const e = entity;
1867
+ this.applyDateFields(e, dateFields);
1868
+ this.applyBooleanFields(e, booleanFields);
1869
+ this.normalizeEntityValues(e);
1870
+ return entity;
1871
+ }
1872
+ applyDateFields(entity, dateFields) {
1873
+ if (dateFields == null)
1874
+ return;
1875
+ for (const df of dateFields) {
1876
+ if (entity[df] != null)
1877
+ entity[df] = this.validateDate(entity[df]);
2265
1878
  }
2266
- if (booleanFields) {
2267
- for (const df of booleanFields) {
2268
- if (entity[df] !== undefined)
2269
- entity[df] = !!entity[df];
2270
- }
1879
+ }
1880
+ applyBooleanFields(entity, booleanFields) {
1881
+ if (booleanFields == null)
1882
+ return;
1883
+ for (const df of booleanFields) {
1884
+ if (entity[df] !== undefined)
1885
+ entity[df] = entity[df] !== 0 && entity[df] != null && entity[df] !== false;
2271
1886
  }
1887
+ }
1888
+ normalizeEntityValues(entity) {
2272
1889
  for (const key of Object.keys(entity)) {
2273
1890
  const val = entity[key];
2274
1891
  if (val === null) {
@@ -2278,7 +1895,6 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
2278
1895
  entity[key] = Array.from(val);
2279
1896
  }
2280
1897
  }
2281
- return entity;
2282
1898
  }
2283
1899
  /**
2284
1900
  * Helper to force uniform behavior across database engines.
@@ -2296,29 +1912,38 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
2296
1912
  * Use to process the update template for entities being updated.
2297
1913
  */
2298
1914
  validatePartialForUpdate(update, dateFields, booleanFields) {
2299
- if (!this.dbtype)
1915
+ if (this.dbtype == null)
2300
1916
  throw new WERR_errors_1.WERR_INTERNAL('must call verifyReadyForDatabaseAccess first');
2301
1917
  const v = { ...update };
2302
- if (v.created_at)
2303
- v.created_at = this.validateEntityDate(v.created_at);
2304
- if (v.updated_at)
2305
- v.updated_at = this.validateEntityDate(v.updated_at);
2306
- if (!v.created_at)
1918
+ v.created_at = v.created_at != null ? this.validateEntityDate(v.created_at) : undefined;
1919
+ if (v.created_at == null)
2307
1920
  delete v.created_at;
2308
- if (!v.updated_at)
2309
- v.updated_at = this.validateEntityDate(new Date());
2310
- if (dateFields) {
2311
- for (const df of dateFields) {
2312
- if (v[df])
2313
- v[df] = this.validateOptionalEntityDate(v[df]);
2314
- }
1921
+ v.updated_at = v.updated_at != null ? this.validateEntityDate(v.updated_at) : this.validateEntityDate(new Date());
1922
+ this.applyOptionalDateFields(v, dateFields);
1923
+ this.applyIntegerBooleanFields(update, booleanFields);
1924
+ this.normalizeForStorage(v);
1925
+ this.isDirty = true;
1926
+ return v;
1927
+ }
1928
+ applyOptionalDateFields(v, dateFields) {
1929
+ if (dateFields == null)
1930
+ return;
1931
+ for (const df of dateFields) {
1932
+ if (v[df] != null)
1933
+ v[df] = this.validateOptionalEntityDate(v[df]);
2315
1934
  }
2316
- if (booleanFields) {
2317
- for (const df of booleanFields) {
2318
- if (update[df] !== undefined)
2319
- update[df] = !!update[df] ? 1 : 0;
2320
- }
1935
+ }
1936
+ applyIntegerBooleanFields(update, booleanFields) {
1937
+ if (booleanFields == null)
1938
+ return;
1939
+ for (const df of booleanFields) {
1940
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1941
+ const u = update;
1942
+ if (u[df] !== undefined)
1943
+ u[df] = u[df] != null && u[df] !== false ? 1 : 0;
2321
1944
  }
1945
+ }
1946
+ normalizeForStorage(v) {
2322
1947
  for (const key of Object.keys(v)) {
2323
1948
  const val = v[key];
2324
1949
  if (Array.isArray(val) && (val.length === 0 || Number.isInteger(val[0]))) {
@@ -2328,8 +1953,6 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
2328
1953
  v[key] = undefined;
2329
1954
  }
2330
1955
  }
2331
- this.isDirty = true;
2332
- return v;
2333
1956
  }
2334
1957
  /**
2335
1958
  * Helper to force uniform behavior across database engines.
@@ -2338,47 +1961,29 @@ class StorageIdb extends StorageProvider_1.StorageProvider {
2338
1961
  async validateEntityForInsert(entity, trx, dateFields, booleanFields) {
2339
1962
  await this.verifyReadyForDatabaseAccess(trx);
2340
1963
  const v = { ...entity };
2341
- v.created_at = this.validateOptionalEntityDate(v.created_at, true);
2342
- v.updated_at = this.validateOptionalEntityDate(v.updated_at, true);
2343
- if (!v.created_at)
1964
+ v.created_at = this.validateOptionalEntityDate(v.created_at, true) ?? new Date();
1965
+ v.updated_at = this.validateOptionalEntityDate(v.updated_at, true) ?? new Date();
1966
+ if (v.created_at == null)
2344
1967
  delete v.created_at;
2345
- if (!v.updated_at)
1968
+ if (v.updated_at == null)
2346
1969
  delete v.updated_at;
2347
- if (dateFields) {
2348
- for (const df of dateFields) {
2349
- if (v[df])
2350
- v[df] = this.validateOptionalEntityDate(v[df]);
2351
- }
2352
- }
2353
- if (booleanFields) {
2354
- for (const df of booleanFields) {
2355
- if (entity[df] !== undefined)
2356
- entity[df] = !!entity[df] ? 1 : 0;
2357
- }
2358
- }
2359
- for (const key of Object.keys(v)) {
2360
- const val = v[key];
2361
- if (Array.isArray(val) && (val.length === 0 || Number.isInteger(val[0]))) {
2362
- v[key] = Uint8Array.from(val);
2363
- }
2364
- else if (val === null) {
2365
- v[key] = undefined;
2366
- }
2367
- }
1970
+ this.applyOptionalDateFields(v, dateFields);
1971
+ this.applyIntegerBooleanFields(entity, booleanFields);
1972
+ this.normalizeForStorage(v);
2368
1973
  this.isDirty = true;
2369
1974
  return v;
2370
1975
  }
2371
1976
  async validateRawTransaction(t, trx) {
2372
1977
  // if there is no txid or there is a rawTransaction return what we have.
2373
- if (t.rawTx || !t.txid)
1978
+ if (t.rawTx != null || t.txid == null || t.txid === '')
2374
1979
  return;
2375
1980
  // rawTransaction is missing, see if we moved it ...
2376
1981
  const rawTx = await this.getRawTxOfKnownValidTransaction(t.txid, undefined, undefined, trx);
2377
- if (!rawTx)
1982
+ if (rawTx == null)
2378
1983
  return;
2379
1984
  t.rawTx = rawTx;
2380
1985
  }
2381
- async adminStats(adminIdentityKey) {
1986
+ async adminStats(_adminIdentityKey) {
2382
1987
  throw new Error('Method intentionally not implemented for personal storage.');
2383
1988
  }
2384
1989
  }