@bsv/wallet-toolbox 2.13.0 → 2.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (659) hide show
  1. package/CHANGELOG.md +283 -1
  2. package/README.md +403 -5
  3. package/docs/README.md +8 -1
  4. package/docs/client.md +13057 -4632
  5. package/docs/identity-verification.md +196 -0
  6. package/docs/monitor.md +505 -190
  7. package/docs/services.md +4013 -1153
  8. package/docs/setup.md +98 -58
  9. package/docs/storage.md +5780 -1609
  10. package/docs/wallet.md +10155 -10871
  11. package/out/src/CWIStyleWalletManager.d.ts +6 -8
  12. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  13. package/out/src/CWIStyleWalletManager.js +170 -125
  14. package/out/src/CWIStyleWalletManager.js.map +1 -1
  15. package/out/src/Setup.d.ts +2 -0
  16. package/out/src/Setup.d.ts.map +1 -1
  17. package/out/src/Setup.js +3 -2
  18. package/out/src/Setup.js.map +1 -1
  19. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  20. package/out/src/ShamirWalletManager.js +34 -19
  21. package/out/src/ShamirWalletManager.js.map +1 -1
  22. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  23. package/out/src/SimpleWalletManager.js +7 -6
  24. package/out/src/SimpleWalletManager.js.map +1 -1
  25. package/out/src/Wallet.d.ts +50 -11
  26. package/out/src/Wallet.d.ts.map +1 -1
  27. package/out/src/Wallet.js +183 -107
  28. package/out/src/Wallet.js.map +1 -1
  29. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  30. package/out/src/WalletAuthenticationManager.js +282 -26
  31. package/out/src/WalletAuthenticationManager.js.map +1 -1
  32. package/out/src/WalletLogger.js +1 -1
  33. package/out/src/WalletLogger.js.map +1 -1
  34. package/out/src/WalletPermissionsManager.d.ts +30 -17
  35. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  36. package/out/src/WalletPermissionsManager.js +540 -312
  37. package/out/src/WalletPermissionsManager.js.map +1 -1
  38. package/out/src/WalletSettingsManager.d.ts +3 -2
  39. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  40. package/out/src/WalletSettingsManager.js +141 -6
  41. package/out/src/WalletSettingsManager.js.map +1 -1
  42. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  43. package/out/src/entropy/EntropyCollector.js +3 -2
  44. package/out/src/entropy/EntropyCollector.js.map +1 -1
  45. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  46. package/out/src/fundWalletP2PKH.js +143 -44
  47. package/out/src/fundWalletP2PKH.js.map +1 -1
  48. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  49. package/out/src/mockchain/MockChainTracker.js +5 -5
  50. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  51. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  52. package/out/src/mockchain/MockServices.js +32 -8
  53. package/out/src/mockchain/MockServices.js.map +1 -1
  54. package/out/src/monitor/Monitor.d.ts +17 -0
  55. package/out/src/monitor/Monitor.d.ts.map +1 -1
  56. package/out/src/monitor/Monitor.js +206 -42
  57. package/out/src/monitor/Monitor.js.map +1 -1
  58. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  59. package/out/src/monitor/MonitorDaemon.js +64 -16
  60. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  61. package/out/src/monitor/monitorValidation.d.ts +12 -0
  62. package/out/src/monitor/monitorValidation.d.ts.map +1 -0
  63. package/out/src/monitor/monitorValidation.js +133 -0
  64. package/out/src/monitor/monitorValidation.js.map +1 -0
  65. package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -0
  66. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  67. package/out/src/monitor/tasks/TaskArcSSE.js +28 -12
  68. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  69. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
  70. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  71. package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
  72. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  73. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  74. package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
  75. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  76. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  77. package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
  78. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  79. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  80. package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
  81. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  82. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -1
  83. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +9 -3
  84. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -1
  85. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  86. package/out/src/monitor/tasks/TaskReorg.js +4 -4
  87. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  88. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  89. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +17 -7
  90. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  91. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
  92. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  93. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
  94. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  95. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -4
  96. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  97. package/out/src/monitor/tasks/TaskReviewUtxos.js +41 -13
  98. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  99. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  100. package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
  101. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  102. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
  103. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  104. package/out/src/monitor/tasks/TaskUnFail.js +26 -8
  105. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  106. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  107. package/out/src/sdk/PrivilegedKeyManager.js +3 -2
  108. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  109. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  110. package/out/src/sdk/WalletErrorFromJson.js +112 -2
  111. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  112. package/out/src/sdk/WalletServices.interfaces.d.ts +17 -1
  113. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  114. package/out/src/services/Services.d.ts +4 -0
  115. package/out/src/services/Services.d.ts.map +1 -1
  116. package/out/src/services/Services.js +260 -117
  117. package/out/src/services/Services.js.map +1 -1
  118. package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
  119. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  120. package/out/src/services/chaintracker/BHServiceClient.js +267 -66
  121. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  122. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
  123. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  124. package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
  125. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  126. package/out/src/services/chaintracker/LocalChainTracker.d.ts +26 -0
  127. package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -1
  128. package/out/src/services/chaintracker/LocalChainTracker.js +180 -10
  129. package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -1
  130. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  131. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
  132. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  133. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
  134. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  135. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +7 -0
  136. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  137. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +2 -0
  138. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  139. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
  140. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  141. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +19 -0
  142. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  143. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +237 -61
  144. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  145. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
  146. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  147. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
  148. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  149. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
  150. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  151. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +346 -30
  152. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  153. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
  154. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  155. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +375 -43
  156. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  157. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  158. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
  159. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  160. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  161. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
  162. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  163. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  164. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  165. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
  166. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
  167. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
  168. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
  169. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  170. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
  171. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  172. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
  173. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  174. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
  175. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  176. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  177. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
  178. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  179. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
  180. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  181. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
  182. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  183. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
  185. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
  187. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  188. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
  189. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  190. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
  191. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  192. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
  193. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  194. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
  195. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  196. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
  197. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  198. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
  199. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
  201. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  202. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
  204. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
  206. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
  208. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  209. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
  210. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  211. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +225 -24
  212. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  213. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
  214. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  215. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
  216. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  217. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -0
  218. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  219. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +225 -86
  220. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  221. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
  222. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  223. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
  224. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  225. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -2
  226. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  227. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  229. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  231. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  234. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
  235. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  236. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
  238. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  240. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
  241. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  242. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +18 -0
  243. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +204 -14
  245. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
  246. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
  247. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  248. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +486 -82
  249. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  250. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
  252. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -1
  254. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +12 -2
  255. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  257. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
  258. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +1 -0
  260. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
  262. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  263. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +7 -0
  264. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  265. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +90 -24
  266. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  267. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
  268. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  269. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
  270. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  271. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +9 -0
  272. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -1
  273. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +100 -14
  274. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -1
  275. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  276. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  277. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +2 -0
  278. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
  279. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +104 -8
  280. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +1 -0
  282. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -1
  283. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +79 -15
  284. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -1
  285. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
  286. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  287. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
  288. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  289. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +6 -1
  290. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  291. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +311 -93
  292. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  293. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
  294. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
  295. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
  296. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
  297. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  299. package/out/src/services/classifyOutputUtxo.d.ts.map +1 -1
  300. package/out/src/services/classifyOutputUtxo.js +19 -10
  301. package/out/src/services/classifyOutputUtxo.js.map +1 -1
  302. package/out/src/services/fiatRateValidation.d.ts +12 -0
  303. package/out/src/services/fiatRateValidation.d.ts.map +1 -0
  304. package/out/src/services/fiatRateValidation.js +138 -0
  305. package/out/src/services/fiatRateValidation.js.map +1 -0
  306. package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
  307. package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
  308. package/out/src/services/getCanonicalMerklePath.js +90 -0
  309. package/out/src/services/getCanonicalMerklePath.js.map +1 -0
  310. package/out/src/services/providers/ARC.d.ts +3 -16
  311. package/out/src/services/providers/ARC.d.ts.map +1 -1
  312. package/out/src/services/providers/ARC.js +36 -37
  313. package/out/src/services/providers/ARC.js.map +1 -1
  314. package/out/src/services/providers/ArcSSEClient.d.ts +25 -19
  315. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  316. package/out/src/services/providers/ArcSSEClient.js +352 -85
  317. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  318. package/out/src/services/providers/Arcade.d.ts +1 -0
  319. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  320. package/out/src/services/providers/Arcade.js +56 -41
  321. package/out/src/services/providers/Arcade.js.map +1 -1
  322. package/out/src/services/providers/Bitails.d.ts +3 -0
  323. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  324. package/out/src/services/providers/Bitails.js +79 -12
  325. package/out/src/services/providers/Bitails.js.map +1 -1
  326. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  327. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  328. package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
  329. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  330. package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
  331. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  332. package/out/src/services/providers/WhatsOnChain.js +221 -69
  333. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  334. package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
  335. package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
  336. package/out/src/services/providers/arcProviderConfig.js +83 -0
  337. package/out/src/services/providers/arcProviderConfig.js.map +1 -0
  338. package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
  339. package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
  340. package/out/src/services/providers/arcTxDataValidation.js +92 -0
  341. package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
  342. package/out/src/services/providers/exchangeRates.d.ts +3 -3
  343. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  344. package/out/src/services/providers/exchangeRates.js +153 -226
  345. package/out/src/services/providers/exchangeRates.js.map +1 -1
  346. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  347. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  348. package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
  349. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
  350. package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
  351. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  352. package/out/src/services/validateMerklePathResult.d.ts +30 -0
  353. package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
  354. package/out/src/services/validateMerklePathResult.js +272 -0
  355. package/out/src/services/validateMerklePathResult.js.map +1 -0
  356. package/out/src/services/validatePostBeefResult.d.ts +17 -0
  357. package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
  358. package/out/src/services/validatePostBeefResult.js +334 -0
  359. package/out/src/services/validatePostBeefResult.js.map +1 -0
  360. package/out/src/services/validateRawTxResult.d.ts +6 -0
  361. package/out/src/services/validateRawTxResult.d.ts.map +1 -0
  362. package/out/src/services/validateRawTxResult.js +77 -0
  363. package/out/src/services/validateRawTxResult.js.map +1 -0
  364. package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
  365. package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
  366. package/out/src/services/validateScriptHashHistoryResult.js +99 -0
  367. package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
  368. package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
  369. package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
  370. package/out/src/services/validateStatusForTxidsResult.js +181 -0
  371. package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
  372. package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
  373. package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
  374. package/out/src/services/validateUtxoStatusResult.js +126 -0
  375. package/out/src/services/validateUtxoStatusResult.js.map +1 -0
  376. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  377. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  378. package/out/src/signer/actionBatch/ActionBatchPlanner.js +4 -3
  379. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  380. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +6 -5
  381. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  382. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +70 -76
  383. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  384. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
  385. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
  386. package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
  387. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
  388. package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
  389. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  390. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  391. package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
  392. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  393. package/out/src/signer/methods/buildSignableTransaction.js +6 -11
  394. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  395. package/out/src/signer/methods/createAction.d.ts +4 -3
  396. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  397. package/out/src/signer/methods/createAction.js +4 -2
  398. package/out/src/signer/methods/createAction.js.map +1 -1
  399. package/out/src/signer/methods/createNoSendExpiryAction.d.ts +3 -3
  400. package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -1
  401. package/out/src/signer/methods/createNoSendExpiryAction.js +9 -4
  402. package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -1
  403. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  404. package/out/src/signer/methods/internalizeAction.js +2 -2
  405. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  406. package/out/src/signer/methods/proveCertificate.d.ts +3 -2
  407. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  408. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  409. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  410. package/out/src/signer/methods/signAction.js +3 -2
  411. package/out/src/signer/methods/signAction.js.map +1 -1
  412. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
  413. package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
  414. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
  415. package/out/src/storage/StorageIdb.d.ts +5 -3
  416. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  417. package/out/src/storage/StorageIdb.js +15 -20
  418. package/out/src/storage/StorageIdb.js.map +1 -1
  419. package/out/src/storage/StorageKnex.d.ts +5 -3
  420. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  421. package/out/src/storage/StorageKnex.js +143 -93
  422. package/out/src/storage/StorageKnex.js.map +1 -1
  423. package/out/src/storage/StorageProvider.d.ts +19 -9
  424. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  425. package/out/src/storage/StorageProvider.js +229 -145
  426. package/out/src/storage/StorageProvider.js.map +1 -1
  427. package/out/src/storage/StorageReader.d.ts +1 -1
  428. package/out/src/storage/StorageReader.d.ts.map +1 -1
  429. package/out/src/storage/StorageReader.js +9 -42
  430. package/out/src/storage/StorageReader.js.map +1 -1
  431. package/out/src/storage/StorageReaderWriter.d.ts +1 -0
  432. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  433. package/out/src/storage/StorageReaderWriter.js +37 -36
  434. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  435. package/out/src/storage/StorageSyncReader.d.ts +1 -1
  436. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  437. package/out/src/storage/StorageSyncReader.js +3 -36
  438. package/out/src/storage/StorageSyncReader.js.map +1 -1
  439. package/out/src/storage/WalletStorageManager.d.ts +8 -7
  440. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  441. package/out/src/storage/WalletStorageManager.js +38 -65
  442. package/out/src/storage/WalletStorageManager.js.map +1 -1
  443. package/out/src/storage/adminServer/adminServer.d.ts +1 -1
  444. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  445. package/out/src/storage/adminServer/adminServer.js +16 -44
  446. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  447. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  448. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  449. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  450. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
  451. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  452. package/out/src/storage/methods/ListOutputsSpecOp.js +1 -0
  453. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  454. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  455. package/out/src/storage/methods/actionBatch.js +3 -2
  456. package/out/src/storage/methods/actionBatch.js.map +1 -1
  457. package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
  458. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  459. package/out/src/storage/methods/actionBatchBlobs.js +40 -22
  460. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  461. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  462. package/out/src/storage/methods/actionBatchValidation.js +22 -30
  463. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  464. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
  465. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  466. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +57 -44
  467. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  468. package/out/src/storage/methods/createAction.d.ts +7 -6
  469. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  470. package/out/src/storage/methods/createAction.js +7 -5
  471. package/out/src/storage/methods/createAction.js.map +1 -1
  472. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  473. package/out/src/storage/methods/generateChange.js +12 -11
  474. package/out/src/storage/methods/generateChange.js.map +1 -1
  475. package/out/src/storage/methods/getBeefForTransaction.js +5 -7
  476. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  477. package/out/src/storage/methods/internalizeAction.d.ts +3 -3
  478. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  479. package/out/src/storage/methods/internalizeAction.js +134 -129
  480. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  481. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  482. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  483. package/out/src/storage/methods/listActionsIdb.js +2 -2
  484. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  485. package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
  486. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  487. package/out/src/storage/methods/listActionsKnex.js +10 -9
  488. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  489. package/out/src/storage/methods/listCertificates.d.ts +3 -2
  490. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  491. package/out/src/storage/methods/listCertificates.js.map +1 -1
  492. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  493. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  494. package/out/src/storage/methods/listOutputsIdb.js +11 -11
  495. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  496. package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
  497. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  498. package/out/src/storage/methods/listOutputsKnex.js +15 -23
  499. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  500. package/out/src/storage/methods/noSendExpiry.d.ts +3 -3
  501. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
  502. package/out/src/storage/methods/noSendExpiry.js +10 -8
  503. package/out/src/storage/methods/noSendExpiry.js.map +1 -1
  504. package/out/src/storage/methods/preparedBeef.d.ts.map +1 -1
  505. package/out/src/storage/methods/preparedBeef.js +13 -14
  506. package/out/src/storage/methods/preparedBeef.js.map +1 -1
  507. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  508. package/out/src/storage/methods/processAction.js +37 -6
  509. package/out/src/storage/methods/processAction.js.map +1 -1
  510. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +1 -1
  511. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -1
  512. package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -1
  513. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  514. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  515. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  516. package/out/src/storage/methods/reviewUtxoOutputs.d.ts +1 -0
  517. package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -1
  518. package/out/src/storage/methods/reviewUtxoOutputs.js +51 -4
  519. package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -1
  520. package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
  521. package/out/src/storage/methods/validateSyncProof.js +3 -3
  522. package/out/src/storage/methods/validateSyncProof.js.map +1 -1
  523. package/out/src/storage/portable/index.d.ts.map +1 -1
  524. package/out/src/storage/portable/index.js +21 -13
  525. package/out/src/storage/portable/index.js.map +1 -1
  526. package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
  527. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  528. package/out/src/storage/remoting/BinaryJson.js +37 -0
  529. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  530. package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
  531. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  532. package/out/src/storage/remoting/KnexSessionManager.js +222 -30
  533. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  534. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -1
  535. package/out/src/storage/remoting/KnexSyncTransferStore.js +3 -4
  536. package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -1
  537. package/out/src/storage/remoting/StorageClient.d.ts +6 -1
  538. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  539. package/out/src/storage/remoting/StorageClient.js +63 -6
  540. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  541. package/out/src/storage/remoting/StorageClientBase.d.ts +23 -6
  542. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  543. package/out/src/storage/remoting/StorageClientBase.js +148 -19
  544. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  545. package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
  546. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  547. package/out/src/storage/remoting/StorageMobile.js +11 -9
  548. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  549. package/out/src/storage/remoting/StorageServer.d.ts +5 -1
  550. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  551. package/out/src/storage/remoting/StorageServer.js +95 -19
  552. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  553. package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -1
  554. package/out/src/storage/remoting/SyncTransfer.js +3 -2
  555. package/out/src/storage/remoting/SyncTransfer.js.map +1 -1
  556. package/out/src/storage/schema/KnexMigrations.d.ts +1 -0
  557. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  558. package/out/src/storage/schema/KnexMigrations.js +28 -6
  559. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  560. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  561. package/out/src/storage/schema/entities/EntityOutput.js +11 -4
  562. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  563. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +2 -1
  564. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  565. package/out/src/storage/schema/entities/EntityProvenTx.js +93 -39
  566. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  567. package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
  568. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  569. package/out/src/storage/schema/entities/EntitySyncState.js +1 -1
  570. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  571. package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
  572. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  573. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  574. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  575. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  576. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  577. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  578. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  579. package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
  580. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  581. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  582. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  583. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  584. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  585. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  586. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  587. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  588. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  589. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
  590. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  591. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  592. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  593. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  594. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  595. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  596. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  597. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
  598. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  599. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  600. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  601. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  602. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  603. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  604. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  605. package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
  606. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  607. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  608. package/out/src/utility/actionBatchDigest.js +9 -7
  609. package/out/src/utility/actionBatchDigest.js.map +1 -1
  610. package/out/src/utility/actionBatchPack.d.ts.map +1 -1
  611. package/out/src/utility/actionBatchPack.js +7 -12
  612. package/out/src/utility/actionBatchPack.js.map +1 -1
  613. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  614. package/out/src/utility/brc153ReferenceLabels.js +4 -4
  615. package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
  616. package/out/src/utility/brc177NoSendExpiry.d.ts +2 -2
  617. package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -1
  618. package/out/src/utility/canonicalizeAtomicBeef.js +2 -2
  619. package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -1
  620. package/out/src/utility/exactActionSpend.d.ts +11 -0
  621. package/out/src/utility/exactActionSpend.d.ts.map +1 -0
  622. package/out/src/utility/exactActionSpend.js +11 -0
  623. package/out/src/utility/exactActionSpend.js.map +1 -0
  624. package/out/src/utility/identityUtils.d.ts +44 -4
  625. package/out/src/utility/identityUtils.d.ts.map +1 -1
  626. package/out/src/utility/identityUtils.js +376 -61
  627. package/out/src/utility/identityUtils.js.map +1 -1
  628. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  629. package/out/src/utility/parseTxScriptOffsets.js +1 -19
  630. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  631. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  632. package/out/src/utility/tscProofToMerklePath.js +35 -4
  633. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  634. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  635. package/out/src/utility/utilityHelpers.js +8 -6
  636. package/out/src/utility/utilityHelpers.js.map +1 -1
  637. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  638. package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
  639. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  640. package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
  641. package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
  642. package/out/src/utility/verifyOverlayOutput.js +22 -0
  643. package/out/src/utility/verifyOverlayOutput.js.map +1 -0
  644. package/out/src/utility/walletResultGuards.d.ts +14 -0
  645. package/out/src/utility/walletResultGuards.d.ts.map +1 -0
  646. package/out/src/utility/walletResultGuards.js +28 -0
  647. package/out/src/utility/walletResultGuards.js.map +1 -0
  648. package/out/src/wab-client/WABClient.d.ts +3 -17
  649. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  650. package/out/src/wab-client/WABClient.js +30 -14
  651. package/out/src/wab-client/WABClient.js.map +1 -1
  652. package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
  653. package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
  654. package/out/src/wab-client/WABResponseValidation.js +321 -0
  655. package/out/src/wab-client/WABResponseValidation.js.map +1 -0
  656. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  657. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
  658. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  659. package/package.json +5 -5
@@ -6,6 +6,7 @@ const blockHeaderUtilities_1 = require("../util/blockHeaderUtilities");
6
6
  const HeightRange_1 = require("../util/HeightRange");
7
7
  const WERR_errors_1 = require("../../../../sdk/WERR_errors");
8
8
  const idb_1 = require("idb");
9
+ const BulkFileDataManager_1 = require("../util/BulkFileDataManager");
9
10
  function createInsertHeaderResult() {
10
11
  return {
11
12
  added: false,
@@ -65,6 +66,7 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
65
66
  * @returns number of deleted records
66
67
  */
67
68
  async deleteOlderLiveBlockHeaders(maxHeight) {
69
+ this.validateHeight(maxHeight, 'maxHeight');
68
70
  await this.makeAvailable();
69
71
  const trx = this.toDbTrxReadWrite(['live_headers']);
70
72
  const store = trx.objectStore('live_headers');
@@ -76,8 +78,10 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
76
78
  const headerIdsToDelete = new Set(headersToDelete.map(header => header.headerId));
77
79
  const deletedCount = headersToDelete.length;
78
80
  for (const id of headerIdsToDelete) {
79
- const headerToUpdate = await previousHeaderIdIndex.get(id);
80
- await store.put({ ...headerToUpdate, previousHeaderId: null });
81
+ const headersToUpdate = await previousHeaderIdIndex.getAll(id);
82
+ for (const headerToUpdate of headersToUpdate) {
83
+ await store.put({ ...headerToUpdate, previousHeaderId: null });
84
+ }
81
85
  }
82
86
  // Delete the headers
83
87
  for (const id of headerIdsToDelete) {
@@ -106,12 +110,14 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
106
110
  const trx = this.toDbTrxReadOnly(['live_headers']);
107
111
  const store = trx.objectStore('live_headers');
108
112
  const activeTipIndex = store.index('activeTip');
109
- let header = await activeTipIndex.get([1, 1]);
110
- header = this.repairStoredLiveHeader(header);
113
+ const headers = (await activeTipIndex.getAll([1, 1])).map(header => this.repairStoredLiveHeader(header));
111
114
  await trx.done;
112
- return header;
115
+ if (headers.length > 1)
116
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('multiple active chain tips exist in IndexedDB');
117
+ return headers[0];
113
118
  }
114
119
  async findLiveHeaderForBlockHash(hash) {
120
+ this.validateHash(hash);
115
121
  await this.makeAvailable();
116
122
  const trx = this.toDbTrxReadOnly(['live_headers']);
117
123
  const store = trx.objectStore('live_headers');
@@ -122,6 +128,9 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
122
128
  return header;
123
129
  }
124
130
  async findLiveHeaderForHeaderId(headerId) {
131
+ if (!Number.isSafeInteger(headerId) || headerId < 1) {
132
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('headerId', 'a positive safe integer');
133
+ }
125
134
  await this.makeAvailable();
126
135
  const trx = this.toDbTrxReadOnly(['live_headers']);
127
136
  const store = trx.objectStore('live_headers');
@@ -131,35 +140,37 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
131
140
  return header;
132
141
  }
133
142
  async findLiveHeaderForHeight(height) {
143
+ this.validateHeight(height);
134
144
  await this.makeAvailable();
135
145
  const trx = this.toDbTrxReadOnly(['live_headers']);
136
146
  const store = trx.objectStore('live_headers');
137
147
  const heightIndex = store.index('height');
138
- let header = await heightIndex.get(height);
139
- header = this.repairStoredLiveHeader(header);
148
+ const headers = (await heightIndex.getAll(height))
149
+ .map(header => this.repairStoredLiveHeader(header))
150
+ .filter(header => header.isActive);
140
151
  await trx.done;
141
- return header || null;
152
+ if (headers.length > 1)
153
+ throw new WERR_errors_1.WERR_INVALID_OPERATION(`multiple active headers exist at height ${height}`);
154
+ return headers[0] ?? null;
142
155
  }
143
156
  async findLiveHeaderForMerkleRoot(merkleRoot) {
157
+ this.validateHash(merkleRoot, 'merkleRoot');
144
158
  await this.makeAvailable();
145
159
  const trx = this.toDbTrxReadOnly(['live_headers']);
146
160
  const store = trx.objectStore('live_headers');
147
161
  const merkleRootIndex = store.index('merkleRoot');
148
- let header = await merkleRootIndex.get(merkleRoot);
149
- header = this.repairStoredLiveHeader(header);
162
+ const headers = (await merkleRootIndex.getAll(merkleRoot)).map(header => this.repairStoredLiveHeader(header));
150
163
  await trx.done;
151
- return header || null;
164
+ return headers.find(header => header.isActive) ?? headers[0] ?? null;
152
165
  }
153
166
  async findLiveHeightRange() {
154
167
  await this.makeAvailable();
155
168
  const trx = this.toDbTrxReadOnly(['live_headers']);
156
169
  const store = trx.objectStore('live_headers');
157
- const heightIndex = store.index('height');
158
- const minCursor = await heightIndex.openCursor(null, 'next');
159
- const minValue = minCursor?.value.height ?? null;
160
- const maxCursor = await heightIndex.openCursor(null, 'prev');
161
- const maxValue = maxCursor?.value.height ?? null;
162
- const range = minValue === null || maxValue === null ? HeightRange_1.HeightRange.empty : new HeightRange_1.HeightRange(minValue, maxValue);
170
+ const active = (await store.getAll()).map(header => this.repairStoredLiveHeader(header)).filter(h => h.isActive);
171
+ const range = active.length === 0
172
+ ? HeightRange_1.HeightRange.empty
173
+ : new HeightRange_1.HeightRange(Math.min(...active.map(header => header.height)), Math.max(...active.map(header => header.height)));
163
174
  await trx.done;
164
175
  return range;
165
176
  }
@@ -173,8 +184,11 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
173
184
  return maxValue;
174
185
  }
175
186
  async liveHeadersForBulk(count) {
187
+ if (!Number.isSafeInteger(count) || count < 1 || count > 100_000) {
188
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('count', 'an integer from 1 through 100000');
189
+ }
176
190
  await this.makeAvailable();
177
- const trx = this.toDbTrxReadWrite(['live_headers']);
191
+ const trx = this.toDbTrxReadOnly(['live_headers']);
178
192
  const store = trx.objectStore('live_headers');
179
193
  const heightIndex = store.index('height');
180
194
  let cursor = await heightIndex.openCursor(null, 'next');
@@ -191,17 +205,18 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
191
205
  return headers;
192
206
  }
193
207
  async getLiveHeaders(range) {
208
+ this.validateRange(range);
194
209
  if (range.isEmpty)
195
210
  return [];
196
211
  await this.makeAvailable();
197
- const trx = this.toDbTrxReadWrite(['live_headers']);
212
+ const trx = this.toDbTrxReadOnly(['live_headers']);
198
213
  const store = trx.objectStore('live_headers');
199
214
  const heightIndex = store.index('height');
200
- let cursor = await heightIndex.openCursor(null, 'next');
215
+ let cursor = await heightIndex.openCursor(IDBKeyRange.bound(range.minHeight, range.maxHeight), 'next');
201
216
  const headers = [];
202
217
  while (cursor != null) {
203
218
  const header = this.repairStoredLiveHeader(cursor.value);
204
- if (header != null && range.contains(header.height)) {
219
+ if (header?.isActive) {
205
220
  headers.push(header);
206
221
  }
207
222
  cursor = await cursor.continue();
@@ -237,12 +252,19 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
237
252
  async findActiveAncestor(trx, oneBack, result) {
238
253
  const store = trx.objectStore('live_headers');
239
254
  let activeAncestor = oneBack;
255
+ const visited = new Set();
240
256
  while (!activeAncestor.isActive) {
257
+ this.recordTraversalVisit(visited, activeAncestor, 'finding the active ancestor');
258
+ if (activeAncestor.previousHeaderId == null) {
259
+ result.noActiveAncestor = true;
260
+ return undefined;
261
+ }
241
262
  const previousHeader = this.repairStoredLiveHeader(await store.get(activeAncestor.previousHeaderId));
242
263
  if (previousHeader == null) {
243
264
  result.noActiveAncestor = true;
244
265
  return undefined;
245
266
  }
267
+ this.validateStoredParentLink(activeAncestor, previousHeader);
246
268
  activeAncestor = previousHeader;
247
269
  }
248
270
  return activeAncestor;
@@ -252,19 +274,46 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
252
274
  return;
253
275
  const store = trx.objectStore('live_headers');
254
276
  const activeTipIndex = store.index('activeTip');
255
- let headerToDeactivate = this.repairStoredLiveHeader(await activeTipIndex.get([1, 1]));
277
+ const activeTips = (await activeTipIndex.getAll([1, 1])).map(header => this.repairStoredLiveHeader(header));
278
+ if (activeTips.length !== 1) {
279
+ throw new WERR_errors_1.WERR_INVALID_OPERATION(`expected one active chain tip, found ${activeTips.length}`);
280
+ }
281
+ let headerToDeactivate = activeTips[0];
282
+ const deactivated = new Set();
256
283
  while (headerToDeactivate != null && headerToDeactivate.headerId !== activeAncestor.headerId) {
284
+ this.recordTraversalVisit(deactivated, headerToDeactivate, 'deactivating the prior active chain');
257
285
  result.deactivatedHeaders.push(headerToDeactivate);
258
286
  await store.put(this.prepareStoredLiveHeader({
259
287
  ...headerToDeactivate,
260
288
  isActive: false
261
289
  }));
262
- headerToDeactivate = this.repairStoredLiveHeader(await store.get(headerToDeactivate.previousHeaderId));
290
+ if (headerToDeactivate.previousHeaderId == null) {
291
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('active chain does not reach the selected reorganization ancestor');
292
+ }
293
+ const previousHeader = this.repairStoredLiveHeader(await store.get(headerToDeactivate.previousHeaderId));
294
+ if (previousHeader == null) {
295
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('active chain contains a missing parent header');
296
+ }
297
+ this.validateStoredParentLink(headerToDeactivate, previousHeader);
298
+ headerToDeactivate = previousHeader;
299
+ }
300
+ if (headerToDeactivate == null) {
301
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('active chain does not reach the selected reorganization ancestor');
263
302
  }
264
303
  let headerToActivate = oneBack;
304
+ const activated = new Set();
265
305
  while (headerToActivate.headerId !== activeAncestor.headerId) {
306
+ this.recordTraversalVisit(activated, headerToActivate, 'activating the replacement chain');
266
307
  await store.put(this.prepareStoredLiveHeader({ ...headerToActivate, isActive: true }));
267
- headerToActivate = this.repairStoredLiveHeader(await store.get(headerToActivate.previousHeaderId));
308
+ if (headerToActivate.previousHeaderId == null) {
309
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('replacement chain does not reach the selected reorganization ancestor');
310
+ }
311
+ const previousHeader = this.repairStoredLiveHeader(await store.get(headerToActivate.previousHeaderId));
312
+ if (previousHeader == null) {
313
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('replacement chain contains a missing parent header');
314
+ }
315
+ this.validateStoredParentLink(headerToActivate, previousHeader);
316
+ headerToActivate = previousHeader;
268
317
  }
269
318
  }
270
319
  async prepareActiveTip(trx, header, oneBack, result) {
@@ -280,124 +329,238 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
280
329
  return true;
281
330
  }
282
331
  async insertHeader(header) {
332
+ header = this.validateIncomingHeader(header);
283
333
  await this.makeAvailable();
284
334
  const trx = this.toDbTrxReadWrite(['live_headers']);
285
335
  const store = trx.objectStore('live_headers');
286
336
  const hashIndex = store.index('hash');
287
337
  const activeTipIndex = store.index('activeTip');
288
338
  const r = createInsertHeaderResult();
289
- // Check for duplicate
290
- if (await hashIndex.get(header.hash)) {
291
- r.dupe = true;
292
- await trx.done;
293
- return r;
294
- }
295
- // let all = await store.getAll()
296
- // console.log(`idb store length: ${all.length} last: ${all[all.length - 1]?.height}`)
297
- // let allHash = await hashIndex.getAll()
298
- // Find previous header
299
- const oneBack = this.repairStoredLiveHeader(await hashIndex.get(header.previousHash));
300
- if (oneBack == null) {
301
- if (await this.insertFirstHeader(trx, header, r)) {
339
+ try {
340
+ // Check for duplicate
341
+ if (await hashIndex.get(header.hash)) {
342
+ r.dupe = true;
302
343
  await trx.done;
303
344
  return r;
304
345
  }
305
- r.noPrev = true;
306
- await trx.done;
307
- return r;
308
- }
309
- if (oneBack.isActive && oneBack.isChainTip) {
310
- r.priorTip = oneBack;
311
- }
312
- else {
313
- r.priorTip = this.repairStoredLiveHeader(await activeTipIndex.get([1, 1]));
314
- }
315
- if (r.priorTip == null) {
316
- // No active chain tip found. This is a logic error in state of live headers.
317
- r.noTip = true;
318
- await trx.done;
319
- return r;
320
- }
321
- // We have an acceptable new live header...and live headers has an active chain tip.
322
- const chainWork = (0, blockHeaderUtilities_1.addWork)(oneBack.chainWork, (0, blockHeaderUtilities_1.convertBitsToWork)(header.bits));
323
- r.isActiveTip = (0, blockHeaderUtilities_1.isMoreWork)(chainWork, r.priorTip.chainWork);
324
- const newHeader = {
325
- ...header,
326
- headerId: 0,
327
- previousHeaderId: oneBack.headerId,
328
- chainWork,
329
- isChainTip: r.isActiveTip,
330
- isActive: r.isActiveTip
331
- };
332
- if (!(await this.prepareActiveTip(trx, header, oneBack, r))) {
346
+ // let all = await store.getAll()
347
+ // console.log(`idb store length: ${all.length} last: ${all[all.length - 1]?.height}`)
348
+ // let allHash = await hashIndex.getAll()
349
+ // Find previous header
350
+ const oneBack = this.repairStoredLiveHeader(await hashIndex.get(header.previousHash));
351
+ if (oneBack == null) {
352
+ if (await this.insertFirstHeader(trx, header, r)) {
353
+ await trx.done;
354
+ return r;
355
+ }
356
+ r.noPrev = true;
357
+ await trx.done;
358
+ return r;
359
+ }
360
+ if (oneBack.height + 1 !== header.height) {
361
+ r.badPrev = true;
362
+ await trx.done;
363
+ return r;
364
+ }
365
+ if (oneBack.isActive && oneBack.isChainTip) {
366
+ r.priorTip = oneBack;
367
+ }
368
+ else {
369
+ const activeTips = (await activeTipIndex.getAll([1, 1])).map(tip => this.repairStoredLiveHeader(tip));
370
+ if (activeTips.length > 1) {
371
+ trx.abort();
372
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('multiple active chain tips exist in IndexedDB');
373
+ }
374
+ r.priorTip = activeTips[0];
375
+ }
376
+ if (r.priorTip == null) {
377
+ // No active chain tip found. This is a logic error in state of live headers.
378
+ r.noTip = true;
379
+ await trx.done;
380
+ return r;
381
+ }
382
+ // We have an acceptable new live header...and live headers has an active chain tip.
383
+ const chainWork = (0, blockHeaderUtilities_1.addWork)(oneBack.chainWork, (0, blockHeaderUtilities_1.convertBitsToWork)(header.bits));
384
+ r.isActiveTip = (0, blockHeaderUtilities_1.isMoreWork)(chainWork, r.priorTip.chainWork);
385
+ const newHeader = {
386
+ ...header,
387
+ headerId: 0,
388
+ previousHeaderId: oneBack.headerId,
389
+ chainWork,
390
+ isChainTip: r.isActiveTip,
391
+ isActive: r.isActiveTip
392
+ };
393
+ if (!(await this.prepareActiveTip(trx, header, oneBack, r))) {
394
+ await trx.done;
395
+ return r;
396
+ }
397
+ if (oneBack.isChainTip) {
398
+ await store.put(this.prepareStoredLiveHeader({ ...oneBack, isChainTip: false }));
399
+ }
400
+ await store.put(this.prepareStoredLiveHeader(newHeader, true));
401
+ r.added = true;
402
+ // all = await store.getAll()
403
+ // console.log(`idb store length: ${all.length} last: ${all[all.length - 1]?.height}`)
404
+ if (r.added && r.isActiveTip) {
405
+ // this.pruneLiveBlockHeaders(newHeader.height)
406
+ }
333
407
  await trx.done;
334
408
  return r;
335
409
  }
336
- if (oneBack.isChainTip) {
337
- await store.put(this.prepareStoredLiveHeader({ ...oneBack, isChainTip: false }));
338
- }
339
- await store.put(this.prepareStoredLiveHeader(newHeader, true));
340
- r.added = true;
341
- // all = await store.getAll()
342
- // console.log(`idb store length: ${all.length} last: ${all[all.length - 1]?.height}`)
343
- if (r.added && r.isActiveTip) {
344
- // this.pruneLiveBlockHeaders(newHeader.height)
410
+ catch (error) {
411
+ try {
412
+ trx.abort();
413
+ }
414
+ catch {
415
+ // The transaction may already have aborted because an IndexedDB
416
+ // request failed. Either way, never mask the original failure.
417
+ }
418
+ await trx.done.catch(() => { });
419
+ throw error;
345
420
  }
346
- await trx.done;
347
- return r;
348
421
  }
349
422
  async deleteBulkFile(fileId) {
423
+ if (!Number.isSafeInteger(fileId) || fileId < 1) {
424
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('fileId', 'a positive safe integer');
425
+ }
350
426
  await this.makeAvailable();
351
427
  const trx = this.toDbTrxReadWrite(['bulk_headers']);
352
428
  const store = trx.objectStore('bulk_headers');
429
+ const existed = (await store.get(fileId)) != null;
353
430
  await store.delete(fileId);
354
431
  await trx.done;
355
- // return number of records affected
356
- return 1;
432
+ return existed ? 1 : 0;
357
433
  }
358
434
  async insertBulkFile(file) {
359
435
  await this.makeAvailable();
436
+ const canonical = (0, BulkFileDataManager_1.normalizeBulkHeaderFileInfo)(file, true);
437
+ if (canonical.chain !== this.chain)
438
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('file.chain', this.chain);
360
439
  const trx = this.toDbTrxReadWrite(['bulk_headers']);
361
440
  const store = trx.objectStore('bulk_headers');
362
- const fileObj = { ...file };
441
+ const fileObj = { ...canonical };
363
442
  delete fileObj['fileId'];
364
- file.fileId = Number(await store.put(fileObj));
443
+ const fileId = Number(await store.put(fileObj));
365
444
  await trx.done;
366
- return file.fileId;
445
+ return fileId;
367
446
  }
368
447
  async updateBulkFile(fileId, file) {
448
+ if (!Number.isSafeInteger(fileId) || fileId < 1) {
449
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('fileId', 'a positive safe integer');
450
+ }
369
451
  await this.makeAvailable();
452
+ const canonical = (0, BulkFileDataManager_1.normalizeBulkHeaderFileInfo)(file, true);
453
+ if (canonical.chain !== this.chain)
454
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('file.chain', this.chain);
455
+ if (canonical.fileId !== undefined && canonical.fileId !== fileId) {
456
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('file.fileId', 'undefined or equal to fileId');
457
+ }
370
458
  const trx = this.toDbTrxReadWrite(['bulk_headers']);
371
459
  const store = trx.objectStore('bulk_headers');
372
- file.fileId = fileId;
373
- await store.put(file);
460
+ await store.put({ ...canonical, fileId });
374
461
  await trx.done;
375
462
  // return number of records affected
376
463
  return 1;
377
464
  }
378
- async getBulkFiles() {
465
+ async replaceBulkFiles(files) {
466
+ const canonical = (0, BulkFileDataManager_1.normalizeBulkHeaderFileSequence)(files, true).map(value => {
467
+ if (value.chain !== this.chain)
468
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('file.chain', this.chain);
469
+ return value;
470
+ });
379
471
  await this.makeAvailable();
380
472
  const trx = this.toDbTrxReadWrite(['bulk_headers']);
381
473
  const store = trx.objectStore('bulk_headers');
382
- const files = await store.getAll();
474
+ try {
475
+ const current = await store.getAll();
476
+ const currentById = new Map();
477
+ for (const file of current) {
478
+ const value = (0, BulkFileDataManager_1.normalizeBulkHeaderFileInfo)(file, true);
479
+ if (value.fileId === undefined || currentById.has(value.fileId)) {
480
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('IndexedDB contains an invalid or duplicate bulk-file id');
481
+ }
482
+ currentById.set(value.fileId, value);
483
+ }
484
+ const retainedIds = new Set();
485
+ const committed = [];
486
+ for (const file of canonical) {
487
+ let fileId = file.fileId;
488
+ if (fileId !== undefined) {
489
+ const prior = currentById.get(fileId);
490
+ if (prior == null || retainedIds.has(fileId)) {
491
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('file.fileId', 'a unique id belonging to the current bulk-file set');
492
+ }
493
+ const stored = { ...file, data: file.data ?? prior.data, fileId };
494
+ await store.put(stored);
495
+ }
496
+ else {
497
+ const stored = { ...file };
498
+ delete stored.fileId;
499
+ fileId = Number(await store.add(stored));
500
+ if (!Number.isSafeInteger(fileId) || fileId < 1) {
501
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('IndexedDB returned an invalid bulk-file id');
502
+ }
503
+ }
504
+ retainedIds.add(fileId);
505
+ committed.push({ ...file, fileId });
506
+ }
507
+ for (const fileId of currentById.keys()) {
508
+ if (!retainedIds.has(fileId))
509
+ await store.delete(fileId);
510
+ }
511
+ await trx.done;
512
+ return committed;
513
+ }
514
+ catch (error) {
515
+ try {
516
+ trx.abort();
517
+ }
518
+ catch {
519
+ // The transaction may already have aborted. Preserve the first error.
520
+ }
521
+ await trx.done.catch(() => { });
522
+ throw error;
523
+ }
524
+ }
525
+ async getBulkFiles() {
526
+ await this.makeAvailable();
527
+ const trx = this.toDbTrxReadOnly(['bulk_headers']);
528
+ const store = trx.objectStore('bulk_headers');
529
+ const files = (await store.getAll()).map(file => (0, BulkFileDataManager_1.normalizeBulkHeaderFileInfo)(file, true));
383
530
  files.sort((a, b) => a.firstHeight - b.firstHeight);
384
531
  for (const file of files)
385
532
  file.data = undefined;
386
533
  return files;
387
534
  }
388
535
  async getBulkFileData(fileId, offset, length) {
389
- if (!Number.isInteger(fileId))
390
- throw new WERR_errors_1.WERR_INVALID_PARAMETER('fileId', 'a valid, integer bulk_files fileId');
536
+ if (!Number.isSafeInteger(fileId) || fileId < 1) {
537
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('fileId', 'a positive safe integer bulk_files fileId');
538
+ }
539
+ const hasOffset = offset !== undefined;
540
+ const hasLength = length !== undefined;
541
+ if (hasOffset !== hasLength) {
542
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset and length', 'both defined or both undefined');
543
+ }
544
+ if (hasOffset &&
545
+ (!Number.isSafeInteger(offset) ||
546
+ !Number.isSafeInteger(length) ||
547
+ offset < 0 ||
548
+ length < 0 ||
549
+ !Number.isSafeInteger(offset + length))) {
550
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset and length', 'non-negative safe integers with a safe sum');
551
+ }
391
552
  await this.makeAvailable();
392
- const trx = this.toDbTrxReadWrite(['bulk_headers']);
553
+ const trx = this.toDbTrxReadOnly(['bulk_headers']);
393
554
  const store = trx.objectStore('bulk_headers');
394
555
  const info = await store.get(fileId);
395
556
  if (info == null)
396
557
  throw new WERR_errors_1.WERR_INVALID_PARAMETER('fileId', `an existing record. ${fileId} not found`);
397
558
  let data;
398
- if (info.data == null)
559
+ if (info.data == null) {
560
+ await trx.done;
399
561
  return undefined;
400
- if (offset !== undefined && length !== undefined && Number.isInteger(offset) && Number.isInteger(length)) {
562
+ }
563
+ if (hasOffset) {
401
564
  data = info.data.slice(offset, offset + length);
402
565
  }
403
566
  else {
@@ -418,12 +581,16 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
418
581
  repairStoredLiveHeader(header) {
419
582
  if (header == null)
420
583
  return undefined;
584
+ if (![undefined, true, 1].includes(header.isActive) ||
585
+ ![undefined, true, 1].includes(header.isChainTip)) {
586
+ throw new WERR_errors_1.WERR_INVALID_OPERATION('IndexedDB contains a non-canonical live-header boolean');
587
+ }
421
588
  const h = {
422
589
  ...header,
423
- isActive: !!header.isActive,
424
- isChainTip: !!header.isChainTip
590
+ isActive: header.isActive === true || header.isActive === 1,
591
+ isChainTip: header.isChainTip === true || header.isChainTip === 1
425
592
  };
426
- return h;
593
+ return this.validateLiveHeaderRecord(h);
427
594
  }
428
595
  prepareStoredLiveHeader(header, forInsert) {
429
596
  const h = { ...header };
@@ -440,12 +607,14 @@ class ChaintracksStorageIdb extends ChaintracksStorageBase_1.ChaintracksStorageB
440
607
  return h;
441
608
  }
442
609
  async insertLiveHeader(header) {
610
+ await this.makeAvailable();
611
+ const canonical = this.validateLiveHeaderRecord(header, true);
443
612
  const trx = this.toDbTrxReadWrite(['live_headers']);
444
613
  const store = trx.objectStore('live_headers');
445
- const h = this.prepareStoredLiveHeader(header, true);
446
- header.headerId = Number(await store.add(h));
614
+ const h = this.prepareStoredLiveHeader(canonical, true);
615
+ canonical.headerId = Number(await store.add(h));
447
616
  await trx.done;
448
- return header;
617
+ return canonical;
449
618
  }
450
619
  async initDB() {
451
620
  const db = await (0, idb_1.openDB)(this.dbName, 1, {