@bsv/wallet-toolbox 2.12.0 → 2.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/CHANGELOG.md +350 -1
  2. package/README.md +556 -6
  3. package/docs/README.md +8 -1
  4. package/docs/client.md +13057 -4632
  5. package/docs/identity-verification.md +196 -0
  6. package/docs/monitor.md +505 -190
  7. package/docs/services.md +4013 -1153
  8. package/docs/setup.md +98 -58
  9. package/docs/storage.md +5780 -1609
  10. package/docs/sync-transfer.md +144 -0
  11. package/docs/wallet.md +10155 -10871
  12. package/out/src/CWIStyleWalletManager.d.ts +6 -8
  13. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  14. package/out/src/CWIStyleWalletManager.js +170 -125
  15. package/out/src/CWIStyleWalletManager.js.map +1 -1
  16. package/out/src/Setup.d.ts +2 -0
  17. package/out/src/Setup.d.ts.map +1 -1
  18. package/out/src/Setup.js +3 -2
  19. package/out/src/Setup.js.map +1 -1
  20. package/out/src/ShamirWalletManager.d.ts.map +1 -1
  21. package/out/src/ShamirWalletManager.js +34 -19
  22. package/out/src/ShamirWalletManager.js.map +1 -1
  23. package/out/src/SimpleWalletManager.d.ts.map +1 -1
  24. package/out/src/SimpleWalletManager.js +7 -6
  25. package/out/src/SimpleWalletManager.js.map +1 -1
  26. package/out/src/Wallet.d.ts +50 -11
  27. package/out/src/Wallet.d.ts.map +1 -1
  28. package/out/src/Wallet.js +183 -107
  29. package/out/src/Wallet.js.map +1 -1
  30. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  31. package/out/src/WalletAuthenticationManager.js +282 -26
  32. package/out/src/WalletAuthenticationManager.js.map +1 -1
  33. package/out/src/WalletLogger.js +1 -1
  34. package/out/src/WalletLogger.js.map +1 -1
  35. package/out/src/WalletPermissionsManager.d.ts +30 -17
  36. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  37. package/out/src/WalletPermissionsManager.js +540 -312
  38. package/out/src/WalletPermissionsManager.js.map +1 -1
  39. package/out/src/WalletSettingsManager.d.ts +3 -2
  40. package/out/src/WalletSettingsManager.d.ts.map +1 -1
  41. package/out/src/WalletSettingsManager.js +141 -6
  42. package/out/src/WalletSettingsManager.js.map +1 -1
  43. package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
  44. package/out/src/entropy/EntropyCollector.js +3 -2
  45. package/out/src/entropy/EntropyCollector.js.map +1 -1
  46. package/out/src/fundWalletP2PKH.d.ts.map +1 -1
  47. package/out/src/fundWalletP2PKH.js +143 -44
  48. package/out/src/fundWalletP2PKH.js.map +1 -1
  49. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
  50. package/out/src/mockchain/MockChainTracker.js +5 -5
  51. package/out/src/mockchain/MockChainTracker.js.map +1 -1
  52. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  53. package/out/src/mockchain/MockServices.js +32 -8
  54. package/out/src/mockchain/MockServices.js.map +1 -1
  55. package/out/src/monitor/Monitor.d.ts +17 -0
  56. package/out/src/monitor/Monitor.d.ts.map +1 -1
  57. package/out/src/monitor/Monitor.js +206 -42
  58. package/out/src/monitor/Monitor.js.map +1 -1
  59. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  60. package/out/src/monitor/MonitorDaemon.js +64 -16
  61. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  62. package/out/src/monitor/monitorValidation.d.ts +12 -0
  63. package/out/src/monitor/monitorValidation.d.ts.map +1 -0
  64. package/out/src/monitor/monitorValidation.js +133 -0
  65. package/out/src/monitor/monitorValidation.js.map +1 -0
  66. package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -0
  67. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  68. package/out/src/monitor/tasks/TaskArcSSE.js +28 -12
  69. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  70. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
  71. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  72. package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
  73. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  74. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  75. package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
  76. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  77. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  78. package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
  79. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  80. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  81. package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
  82. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  83. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -1
  84. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +9 -3
  85. package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -1
  86. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  87. package/out/src/monitor/tasks/TaskReorg.js +4 -4
  88. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  89. package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
  90. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +17 -7
  91. package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
  92. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
  93. package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
  94. package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
  95. package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
  96. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -4
  97. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  98. package/out/src/monitor/tasks/TaskReviewUtxos.js +41 -13
  99. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  100. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  101. package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
  102. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  103. package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
  104. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  105. package/out/src/monitor/tasks/TaskUnFail.js +26 -8
  106. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  107. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  108. package/out/src/sdk/PrivilegedKeyManager.js +3 -2
  109. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  110. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  111. package/out/src/sdk/WalletErrorFromJson.js +112 -2
  112. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  113. package/out/src/sdk/WalletServices.interfaces.d.ts +23 -1
  114. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  115. package/out/src/sdk/WalletStorage.interfaces.d.ts +49 -3
  116. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  117. package/out/src/services/ServiceCollection.js +2 -2
  118. package/out/src/services/ServiceCollection.js.map +1 -1
  119. package/out/src/services/Services.d.ts +5 -0
  120. package/out/src/services/Services.d.ts.map +1 -1
  121. package/out/src/services/Services.js +276 -110
  122. package/out/src/services/Services.js.map +1 -1
  123. package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
  124. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  125. package/out/src/services/chaintracker/BHServiceClient.js +267 -66
  126. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  127. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
  128. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  129. package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
  130. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  131. package/out/src/services/chaintracker/LocalChainTracker.d.ts +26 -0
  132. package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -1
  133. package/out/src/services/chaintracker/LocalChainTracker.js +180 -10
  134. package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -1
  135. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  136. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
  137. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  138. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
  139. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  140. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +7 -0
  141. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  142. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +2 -0
  143. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
  144. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
  145. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  146. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +19 -0
  147. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  148. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +237 -61
  149. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  150. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
  151. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  152. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
  153. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  154. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
  155. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  156. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +346 -30
  157. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  158. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
  159. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  160. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +375 -43
  161. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  162. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  163. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
  164. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  165. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
  166. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
  167. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  168. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
  169. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
  170. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
  171. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
  172. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
  173. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
  174. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  175. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
  176. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  177. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
  178. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  179. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
  180. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  181. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  182. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
  183. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
  185. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
  187. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  188. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
  189. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
  190. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
  191. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
  192. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
  193. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
  194. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  195. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
  196. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  197. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
  198. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  199. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
  200. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  201. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
  202. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  203. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
  204. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
  205. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
  206. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
  207. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  208. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
  209. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  210. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
  211. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  212. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
  213. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  214. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
  215. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  216. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +225 -24
  217. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  218. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
  219. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  220. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
  221. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  222. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -0
  223. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  224. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +225 -86
  225. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  226. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
  227. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  228. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
  229. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  230. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -2
  231. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
  232. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  233. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  234. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  235. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  236. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  237. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  238. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  239. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
  240. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  241. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
  242. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
  243. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
  244. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
  245. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
  246. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
  247. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +18 -0
  248. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
  249. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +204 -14
  250. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
  251. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
  252. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  253. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +486 -82
  254. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  255. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
  256. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
  257. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
  258. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -1
  259. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +12 -2
  260. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -1
  261. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  262. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
  263. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  264. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +1 -0
  265. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  266. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
  267. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  268. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +7 -0
  269. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  270. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +90 -24
  271. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  272. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
  273. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
  274. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
  275. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
  276. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +9 -0
  277. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -1
  278. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +100 -14
  279. package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -1
  280. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  281. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  282. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +2 -0
  283. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
  284. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +104 -8
  285. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
  286. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +1 -0
  287. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -1
  288. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +79 -15
  289. package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -1
  290. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
  291. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
  292. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
  293. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
  294. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +6 -1
  295. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  296. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +311 -93
  297. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  298. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
  299. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
  300. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
  301. package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
  302. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  303. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  304. package/out/src/services/classifyOutputUtxo.d.ts.map +1 -1
  305. package/out/src/services/classifyOutputUtxo.js +19 -10
  306. package/out/src/services/classifyOutputUtxo.js.map +1 -1
  307. package/out/src/services/fiatRateValidation.d.ts +12 -0
  308. package/out/src/services/fiatRateValidation.d.ts.map +1 -0
  309. package/out/src/services/fiatRateValidation.js +138 -0
  310. package/out/src/services/fiatRateValidation.js.map +1 -0
  311. package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
  312. package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
  313. package/out/src/services/getCanonicalMerklePath.js +90 -0
  314. package/out/src/services/getCanonicalMerklePath.js.map +1 -0
  315. package/out/src/services/providers/ARC.d.ts +3 -16
  316. package/out/src/services/providers/ARC.d.ts.map +1 -1
  317. package/out/src/services/providers/ARC.js +36 -37
  318. package/out/src/services/providers/ARC.js.map +1 -1
  319. package/out/src/services/providers/ArcSSEClient.d.ts +25 -19
  320. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
  321. package/out/src/services/providers/ArcSSEClient.js +352 -85
  322. package/out/src/services/providers/ArcSSEClient.js.map +1 -1
  323. package/out/src/services/providers/Arcade.d.ts +1 -0
  324. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  325. package/out/src/services/providers/Arcade.js +56 -41
  326. package/out/src/services/providers/Arcade.js.map +1 -1
  327. package/out/src/services/providers/Bitails.d.ts +3 -0
  328. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  329. package/out/src/services/providers/Bitails.js +79 -12
  330. package/out/src/services/providers/Bitails.js.map +1 -1
  331. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  332. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  333. package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
  334. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  335. package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
  336. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  337. package/out/src/services/providers/WhatsOnChain.js +221 -69
  338. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  339. package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
  340. package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
  341. package/out/src/services/providers/arcProviderConfig.js +83 -0
  342. package/out/src/services/providers/arcProviderConfig.js.map +1 -0
  343. package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
  344. package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
  345. package/out/src/services/providers/arcTxDataValidation.js +92 -0
  346. package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
  347. package/out/src/services/providers/exchangeRates.d.ts +3 -3
  348. package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
  349. package/out/src/services/providers/exchangeRates.js +153 -226
  350. package/out/src/services/providers/exchangeRates.js.map +1 -1
  351. package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
  352. package/out/src/services/providers/getBeefForTxid.js.map +1 -1
  353. package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
  354. package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
  355. package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
  356. package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
  357. package/out/src/services/validateMerklePathResult.d.ts +30 -0
  358. package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
  359. package/out/src/services/validateMerklePathResult.js +272 -0
  360. package/out/src/services/validateMerklePathResult.js.map +1 -0
  361. package/out/src/services/validatePostBeefResult.d.ts +17 -0
  362. package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
  363. package/out/src/services/validatePostBeefResult.js +334 -0
  364. package/out/src/services/validatePostBeefResult.js.map +1 -0
  365. package/out/src/services/validateRawTxResult.d.ts +6 -0
  366. package/out/src/services/validateRawTxResult.d.ts.map +1 -0
  367. package/out/src/services/validateRawTxResult.js +77 -0
  368. package/out/src/services/validateRawTxResult.js.map +1 -0
  369. package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
  370. package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
  371. package/out/src/services/validateScriptHashHistoryResult.js +99 -0
  372. package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
  373. package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
  374. package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
  375. package/out/src/services/validateStatusForTxidsResult.js +181 -0
  376. package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
  377. package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
  378. package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
  379. package/out/src/services/validateUtxoStatusResult.js +126 -0
  380. package/out/src/services/validateUtxoStatusResult.js.map +1 -0
  381. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
  382. package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
  383. package/out/src/signer/actionBatch/ActionBatchPlanner.js +4 -3
  384. package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
  385. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +6 -5
  386. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  387. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +70 -76
  388. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  389. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
  390. package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
  391. package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
  392. package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
  393. package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
  394. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  395. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  396. package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
  397. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  398. package/out/src/signer/methods/buildSignableTransaction.js +6 -11
  399. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  400. package/out/src/signer/methods/createAction.d.ts +4 -3
  401. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  402. package/out/src/signer/methods/createAction.js +4 -2
  403. package/out/src/signer/methods/createAction.js.map +1 -1
  404. package/out/src/signer/methods/createNoSendExpiryAction.d.ts +3 -3
  405. package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -1
  406. package/out/src/signer/methods/createNoSendExpiryAction.js +9 -4
  407. package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -1
  408. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  409. package/out/src/signer/methods/internalizeAction.js +2 -2
  410. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  411. package/out/src/signer/methods/proveCertificate.d.ts +3 -2
  412. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  413. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  414. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  415. package/out/src/signer/methods/signAction.js +3 -2
  416. package/out/src/signer/methods/signAction.js.map +1 -1
  417. package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
  418. package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
  419. package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
  420. package/out/src/storage/StorageIdb.d.ts +6 -3
  421. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  422. package/out/src/storage/StorageIdb.js +70 -42
  423. package/out/src/storage/StorageIdb.js.map +1 -1
  424. package/out/src/storage/StorageKnex.d.ts +8 -4
  425. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  426. package/out/src/storage/StorageKnex.js +185 -92
  427. package/out/src/storage/StorageKnex.js.map +1 -1
  428. package/out/src/storage/StorageProvider.d.ts +19 -9
  429. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  430. package/out/src/storage/StorageProvider.js +237 -138
  431. package/out/src/storage/StorageProvider.js.map +1 -1
  432. package/out/src/storage/StorageReader.d.ts +7 -1
  433. package/out/src/storage/StorageReader.d.ts.map +1 -1
  434. package/out/src/storage/StorageReader.js +17 -42
  435. package/out/src/storage/StorageReader.js.map +1 -1
  436. package/out/src/storage/StorageReaderWriter.d.ts +2 -0
  437. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  438. package/out/src/storage/StorageReaderWriter.js +63 -38
  439. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  440. package/out/src/storage/StorageSyncReader.d.ts +1 -1
  441. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  442. package/out/src/storage/StorageSyncReader.js +3 -36
  443. package/out/src/storage/StorageSyncReader.js.map +1 -1
  444. package/out/src/storage/WalletStorageManager.d.ts +9 -7
  445. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  446. package/out/src/storage/WalletStorageManager.js +71 -65
  447. package/out/src/storage/WalletStorageManager.js.map +1 -1
  448. package/out/src/storage/adminServer/adminServer.d.ts +1 -1
  449. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  450. package/out/src/storage/adminServer/adminServer.js +16 -44
  451. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  452. package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
  453. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  454. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  455. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
  456. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  457. package/out/src/storage/methods/ListOutputsSpecOp.js +1 -0
  458. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  459. package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
  460. package/out/src/storage/methods/actionBatch.js +3 -2
  461. package/out/src/storage/methods/actionBatch.js.map +1 -1
  462. package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
  463. package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
  464. package/out/src/storage/methods/actionBatchBlobs.js +40 -22
  465. package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
  466. package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
  467. package/out/src/storage/methods/actionBatchValidation.js +22 -30
  468. package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
  469. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
  470. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  471. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +57 -44
  472. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  473. package/out/src/storage/methods/createAction.d.ts +7 -6
  474. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  475. package/out/src/storage/methods/createAction.js +7 -5
  476. package/out/src/storage/methods/createAction.js.map +1 -1
  477. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  478. package/out/src/storage/methods/generateChange.js +12 -11
  479. package/out/src/storage/methods/generateChange.js.map +1 -1
  480. package/out/src/storage/methods/getBeefForTransaction.js +5 -7
  481. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  482. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  483. package/out/src/storage/methods/getSyncChunk.js +42 -11
  484. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  485. package/out/src/storage/methods/internalizeAction.d.ts +3 -3
  486. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  487. package/out/src/storage/methods/internalizeAction.js +134 -129
  488. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  489. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  490. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  491. package/out/src/storage/methods/listActionsIdb.js +2 -2
  492. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  493. package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
  494. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  495. package/out/src/storage/methods/listActionsKnex.js +10 -9
  496. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  497. package/out/src/storage/methods/listCertificates.d.ts +3 -2
  498. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  499. package/out/src/storage/methods/listCertificates.js.map +1 -1
  500. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  501. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  502. package/out/src/storage/methods/listOutputsIdb.js +11 -11
  503. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  504. package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
  505. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  506. package/out/src/storage/methods/listOutputsKnex.js +15 -23
  507. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  508. package/out/src/storage/methods/noSendExpiry.d.ts +3 -3
  509. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
  510. package/out/src/storage/methods/noSendExpiry.js +10 -8
  511. package/out/src/storage/methods/noSendExpiry.js.map +1 -1
  512. package/out/src/storage/methods/preparedBeef.d.ts.map +1 -1
  513. package/out/src/storage/methods/preparedBeef.js +13 -14
  514. package/out/src/storage/methods/preparedBeef.js.map +1 -1
  515. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  516. package/out/src/storage/methods/processAction.js +37 -6
  517. package/out/src/storage/methods/processAction.js.map +1 -1
  518. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +1 -1
  519. package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -1
  520. package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -1
  521. package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
  522. package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
  523. package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
  524. package/out/src/storage/methods/reviewUtxoOutputs.d.ts +1 -0
  525. package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -1
  526. package/out/src/storage/methods/reviewUtxoOutputs.js +51 -4
  527. package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -1
  528. package/out/src/storage/methods/validateSyncProof.d.ts +10 -2
  529. package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
  530. package/out/src/storage/methods/validateSyncProof.js +27 -4
  531. package/out/src/storage/methods/validateSyncProof.js.map +1 -1
  532. package/out/src/storage/portable/index.d.ts.map +1 -1
  533. package/out/src/storage/portable/index.js +21 -13
  534. package/out/src/storage/portable/index.js.map +1 -1
  535. package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
  536. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
  537. package/out/src/storage/remoting/BinaryJson.js +94 -8
  538. package/out/src/storage/remoting/BinaryJson.js.map +1 -1
  539. package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
  540. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
  541. package/out/src/storage/remoting/KnexSessionManager.js +222 -30
  542. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
  543. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
  544. package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
  545. package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
  546. package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
  547. package/out/src/storage/remoting/StorageClient.d.ts +6 -1
  548. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  549. package/out/src/storage/remoting/StorageClient.js +65 -8
  550. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  551. package/out/src/storage/remoting/StorageClientBase.d.ts +53 -10
  552. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  553. package/out/src/storage/remoting/StorageClientBase.js +304 -9
  554. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  555. package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
  556. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  557. package/out/src/storage/remoting/StorageMobile.js +13 -11
  558. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  559. package/out/src/storage/remoting/StorageServer.d.ts +10 -1
  560. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  561. package/out/src/storage/remoting/StorageServer.js +206 -21
  562. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  563. package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
  564. package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
  565. package/out/src/storage/remoting/SyncTransfer.js +153 -0
  566. package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
  567. package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
  568. package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
  569. package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
  570. package/out/src/storage/remoting/syncChunkBinary.d.ts +4 -0
  571. package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
  572. package/out/src/storage/remoting/syncChunkBinary.js +38 -0
  573. package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
  574. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
  575. package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
  576. package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
  577. package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
  578. package/out/src/storage/schema/KnexMigrations.d.ts +3 -0
  579. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  580. package/out/src/storage/schema/KnexMigrations.js +89 -2
  581. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  582. package/out/src/storage/schema/StorageIdbSchema.d.ts +1 -0
  583. package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
  584. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  585. package/out/src/storage/schema/entities/EntityOutput.js +11 -4
  586. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  587. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +2 -1
  588. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  589. package/out/src/storage/schema/entities/EntityProvenTx.js +95 -41
  590. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  591. package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
  592. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  593. package/out/src/storage/schema/entities/EntitySyncState.d.ts +3 -1
  594. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  595. package/out/src/storage/schema/entities/EntitySyncState.js +7 -1
  596. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  597. package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
  598. package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
  599. package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
  600. package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
  601. package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
  602. package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
  603. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
  604. package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
  605. package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
  606. package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
  607. package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
  608. package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
  609. package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
  610. package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
  611. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
  612. package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
  613. package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
  614. package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
  615. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
  616. package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
  617. package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
  618. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  619. package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
  620. package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
  621. package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
  622. package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
  623. package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
  624. package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
  625. package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
  626. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
  627. package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
  628. package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
  629. package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
  630. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  631. package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
  632. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  633. package/out/src/storage/sync/SyncPageBudget.d.ts +8 -0
  634. package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
  635. package/out/src/storage/sync/SyncPageBudget.js +24 -0
  636. package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
  637. package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
  638. package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
  639. package/out/src/storage/sync/syncCheckpoint.js +49 -0
  640. package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
  641. package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
  642. package/out/src/utility/actionBatchDigest.js +9 -7
  643. package/out/src/utility/actionBatchDigest.js.map +1 -1
  644. package/out/src/utility/actionBatchPack.d.ts.map +1 -1
  645. package/out/src/utility/actionBatchPack.js +7 -12
  646. package/out/src/utility/actionBatchPack.js.map +1 -1
  647. package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
  648. package/out/src/utility/brc153ReferenceLabels.js +4 -4
  649. package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
  650. package/out/src/utility/brc177NoSendExpiry.d.ts +2 -2
  651. package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -1
  652. package/out/src/utility/canonicalizeAtomicBeef.js +2 -2
  653. package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -1
  654. package/out/src/utility/exactActionSpend.d.ts +11 -0
  655. package/out/src/utility/exactActionSpend.d.ts.map +1 -0
  656. package/out/src/utility/exactActionSpend.js +11 -0
  657. package/out/src/utility/exactActionSpend.js.map +1 -0
  658. package/out/src/utility/identityUtils.d.ts +44 -4
  659. package/out/src/utility/identityUtils.d.ts.map +1 -1
  660. package/out/src/utility/identityUtils.js +376 -61
  661. package/out/src/utility/identityUtils.js.map +1 -1
  662. package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
  663. package/out/src/utility/parseTxScriptOffsets.js +1 -19
  664. package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
  665. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  666. package/out/src/utility/tscProofToMerklePath.js +35 -4
  667. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  668. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  669. package/out/src/utility/utilityHelpers.js +8 -6
  670. package/out/src/utility/utilityHelpers.js.map +1 -1
  671. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  672. package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
  673. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  674. package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
  675. package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
  676. package/out/src/utility/verifyOverlayOutput.js +22 -0
  677. package/out/src/utility/verifyOverlayOutput.js.map +1 -0
  678. package/out/src/utility/walletResultGuards.d.ts +14 -0
  679. package/out/src/utility/walletResultGuards.d.ts.map +1 -0
  680. package/out/src/utility/walletResultGuards.js +28 -0
  681. package/out/src/utility/walletResultGuards.js.map +1 -0
  682. package/out/src/wab-client/WABClient.d.ts +3 -17
  683. package/out/src/wab-client/WABClient.d.ts.map +1 -1
  684. package/out/src/wab-client/WABClient.js +30 -14
  685. package/out/src/wab-client/WABClient.js.map +1 -1
  686. package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
  687. package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
  688. package/out/src/wab-client/WABResponseValidation.js +321 -0
  689. package/out/src/wab-client/WABResponseValidation.js.map +1 -0
  690. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  691. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
  692. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  693. package/package.json +6 -5
@@ -11,6 +11,34 @@ exports.WocHeadersLiveListener_test = WocHeadersLiveListener_test;
11
11
  const ws_1 = __importDefault(require("ws"));
12
12
  const WhatsOnChain_1 = require("../../../providers/WhatsOnChain");
13
13
  const utilityHelpers_1 = require("../../../../utility/utilityHelpers");
14
+ const safeDiagnostic_1 = require("../util/safeDiagnostic");
15
+ const MAX_WEBSOCKET_MESSAGE_BYTES = 1024 * 1024;
16
+ const MAX_BULK_HEADERS_PER_CONNECTION = 100000;
17
+ const MAX_IDLE_WAIT_MSECS = 60 * 60 * 1000;
18
+ const WEBSOCKET_HANDSHAKE_TIMEOUT_MSECS = 30000;
19
+ function safeProviderMessage(value) {
20
+ return (0, safeDiagnostic_1.safeDiagnostic)(value);
21
+ }
22
+ function requirePositiveInteger(value, name, maximum) {
23
+ if (!Number.isSafeInteger(value) || value < 1 || value > maximum) {
24
+ throw new Error(`${name} must be a positive safe integer no greater than ${maximum}.`);
25
+ }
26
+ }
27
+ function serializedData(rawData) {
28
+ const serialized = rawData.toString();
29
+ if (new TextEncoder().encode(serialized).length > MAX_WEBSOCKET_MESSAGE_BYTES) {
30
+ throw new Error(`WhatsOnChain WebSocket message exceeds ${MAX_WEBSOCKET_MESSAGE_BYTES} bytes.`);
31
+ }
32
+ return serialized;
33
+ }
34
+ function websocketOptions() {
35
+ return {
36
+ followRedirects: false,
37
+ handshakeTimeout: WEBSOCKET_HANDSHAKE_TIMEOUT_MSECS,
38
+ maxPayload: MAX_WEBSOCKET_MESSAGE_BYTES,
39
+ perMessageDeflate: false
40
+ };
41
+ }
14
42
  function createStopHandler(markOk, isOpen, markClosed, close, markDone) {
15
43
  return () => {
16
44
  markOk();
@@ -38,19 +66,27 @@ function processHeaderMessage(data, state, ws, toHeight, enqueue, error, logger)
38
66
  return;
39
67
  }
40
68
  if (data.connect) {
41
- logger(json);
69
+ logger('WhatsOnChain WebSocket connected.');
42
70
  return;
43
71
  }
44
72
  if (!data.pub) {
45
- error(42, `unknown data ${json}`);
73
+ error(42, 'unknown WhatsOnChain data frame');
46
74
  return;
47
75
  }
48
76
  const wocHeader = data.pub.data;
49
77
  if (!wocHeader)
50
78
  return;
51
79
  const header = (0, WhatsOnChain_1.convertWocToBlockHeaderHex)(wocHeader);
80
+ if (header.height !== state.nextHeight) {
81
+ throw new Error(`expected header height ${state.nextHeight}, got ${header.height}`);
82
+ }
83
+ if (state.lastHash != null && header.previousHash !== state.lastHash) {
84
+ throw new Error(`header ${header.height} does not extend the preceding WebSocket header`);
85
+ }
52
86
  enqueue(header);
53
87
  state.count++;
88
+ state.nextHeight++;
89
+ state.lastHash = header.hash;
54
90
  if (header.height < toHeight)
55
91
  return;
56
92
  state.ok = true;
@@ -58,11 +94,12 @@ function processHeaderMessage(data, state, ws, toHeight, enqueue, error, logger)
58
94
  ws.close();
59
95
  }
60
96
  function processBulkData(rawData, state, ws, toHeight, enqueue, error, logger) {
61
- if (rawData.length === 0) {
97
+ const serialized = serializedData(rawData);
98
+ if (serialized.length === 0) {
62
99
  state.ping++;
63
100
  return;
64
101
  }
65
- const data = JSON.parse(rawData);
102
+ const data = JSON.parse(serialized);
66
103
  switch (data.type || 0) {
67
104
  case 0:
68
105
  processHeaderMessage(data, state, ws, toHeight, enqueue, error, logger);
@@ -72,11 +109,11 @@ function processBulkData(rawData, state, ws, toHeight, enqueue, error, logger) {
72
109
  case 6:
73
110
  break;
74
111
  case 7:
75
- error(data.data.code, JSON.stringify(data.data));
112
+ error(Number.isSafeInteger(data.data?.code) ? data.data.code : -1, safeProviderMessage(JSON.stringify(data.data)));
76
113
  ws.close();
77
114
  break;
78
115
  default:
79
- error(42, `unknown rawData ${rawData}`);
116
+ error(42, 'unknown WhatsOnChain WebSocket frame type');
80
117
  ws.close();
81
118
  }
82
119
  }
@@ -95,6 +132,7 @@ async function WocHeadersBulkListener(...[fromHeight, toHeight, enqueue, error,
95
132
  const state = {
96
133
  done: false,
97
134
  count: 0,
135
+ nextHeight: fromHeight,
98
136
  ping: 0,
99
137
  ok: false,
100
138
  wsIsOpen: false
@@ -120,7 +158,16 @@ async function WocHeadersBulkListener(...[fromHeight, toHeight, enqueue, error,
120
158
  case 'mock':
121
159
  throw new Error(`WocHeadersBulkListener does not support '${chain}' chain.`);
122
160
  }
123
- const ws = new ws_1.default(webSocketUrl);
161
+ requirePositiveInteger(idleWait, 'idleWait', MAX_IDLE_WAIT_MSECS);
162
+ if (!Number.isSafeInteger(fromHeight) ||
163
+ !Number.isSafeInteger(toHeight) ||
164
+ fromHeight < 0 ||
165
+ toHeight < fromHeight ||
166
+ toHeight > 0x7fffffff ||
167
+ toHeight - fromHeight + 1 > MAX_BULK_HEADERS_PER_CONNECTION) {
168
+ throw new Error(`WhatsOnChain bulk range must contain at most ${MAX_BULK_HEADERS_PER_CONNECTION} non-negative heights.`);
169
+ }
170
+ const ws = new ws_1.default(webSocketUrl, websocketOptions());
124
171
  ws.onopen = function (_evt) {
125
172
  // This is required to trigger connect on server side.
126
173
  ws.send(JSON.stringify({}));
@@ -138,7 +185,7 @@ async function WocHeadersBulkListener(...[fromHeight, toHeight, enqueue, error,
138
185
  default:
139
186
  break;
140
187
  }
141
- const ignoreError = error(code, evt.message);
188
+ const ignoreError = error(code, safeProviderMessage(evt.message));
142
189
  if (!ignoreError)
143
190
  ws.close();
144
191
  };
@@ -148,7 +195,14 @@ async function WocHeadersBulkListener(...[fromHeight, toHeight, enqueue, error,
148
195
  state.done = true;
149
196
  };
150
197
  ws.onmessage = function (ev) {
151
- processBulkData(ev.data, state, ws, toHeight, enqueue, error, logger);
198
+ try {
199
+ processBulkData(ev.data, state, ws, toHeight, enqueue, error, logger);
200
+ }
201
+ catch (caught) {
202
+ error(-3, `invalid WhatsOnChain WebSocket message: ${safeProviderMessage(caught instanceof Error ? caught.message : caught)}`);
203
+ state.done = true;
204
+ ws.close();
205
+ }
152
206
  };
153
207
  // Allow this many wait repetitions for first header, then expect the headers to keep coming
154
208
  const firstHeaderCycles = 12;
@@ -229,7 +283,7 @@ async function WocHeadersBulkListener_test() {
229
283
  * @param idleWait without any input, after this many milliseconds, assume dead service and exit.
230
284
  * @returns true only if exit caused by `stop`
231
285
  */
232
- async function WocHeadersLiveListener(enqueue, error, stop, chain, _logger, _idleWait = 100000) {
286
+ async function WocHeadersLiveListener(enqueue, error, stop, chain, _logger, idleWait = 100000) {
233
287
  let _count = 0;
234
288
  let ok = false;
235
289
  let done = false;
@@ -256,14 +310,15 @@ async function WocHeadersLiveListener(enqueue, error, stop, chain, _logger, _idl
256
310
  case 'mock':
257
311
  throw new Error(`WocHeadersLiveListener does not support '${chain}' chain.`);
258
312
  }
313
+ requirePositiveInteger(idleWait, 'idleWait', MAX_IDLE_WAIT_MSECS);
259
314
  function processData(rawData) {
260
- const serializedData = rawData.toString();
261
- if (serializedData.length === 0) {
315
+ const serialized = serializedData(rawData);
316
+ if (serialized.length === 0) {
262
317
  // Ping
263
318
  return;
264
319
  }
265
320
  // rawData may be a Buffer...
266
- const data = JSON.parse(serializedData);
321
+ const data = JSON.parse(serialized);
267
322
  const json = JSON.stringify(data);
268
323
  switch (data.type || 0) {
269
324
  case 0:
@@ -283,7 +338,7 @@ async function WocHeadersLiveListener(enqueue, error, stop, chain, _logger, _idl
283
338
  _count++;
284
339
  }
285
340
  else {
286
- error(42, `unknown data ${json}`);
341
+ error(42, 'unknown WhatsOnChain data frame');
287
342
  }
288
343
  }
289
344
  }
@@ -297,15 +352,15 @@ async function WocHeadersLiveListener(enqueue, error, stop, chain, _logger, _idl
297
352
  case 7:
298
353
  // If you don't close after unsubscribe or end of headers, after a delay, this is received.
299
354
  // "{\"type\":7,\"data\":{\"code\":200,\"reason\":\"Data Delivered\"}}"
300
- error(data.data.code, JSON.stringify(data.data));
355
+ error(Number.isSafeInteger(data.data?.code) ? data.data.code : -1, safeProviderMessage(JSON.stringify(data.data)));
301
356
  ws.close();
302
357
  break;
303
358
  default:
304
- error(42, `unknown data ${json}`);
359
+ error(42, 'unknown WhatsOnChain WebSocket frame type');
305
360
  ws.close();
306
361
  }
307
362
  }
308
- const ws = new ws_1.default(webSocketUrl);
363
+ const ws = new ws_1.default(webSocketUrl, websocketOptions());
309
364
  ws.onopen = function (_evt) {
310
365
  // This is required to trigger connect on server side.
311
366
  ws.send(JSON.stringify({}));
@@ -323,7 +378,7 @@ async function WocHeadersLiveListener(enqueue, error, stop, chain, _logger, _idl
323
378
  default:
324
379
  break;
325
380
  }
326
- const ignoreError = error(code, evt.message);
381
+ const ignoreError = error(code, safeProviderMessage(evt.message));
327
382
  if (!ignoreError)
328
383
  ws.close();
329
384
  };
@@ -333,16 +388,30 @@ async function WocHeadersLiveListener(enqueue, error, stop, chain, _logger, _idl
333
388
  done = true;
334
389
  };
335
390
  ws.onmessage = function (ev) {
336
- processData(ev.data);
337
- msecsWithoutPing = 0;
391
+ try {
392
+ processData(ev.data);
393
+ msecsWithoutPing = 0;
394
+ }
395
+ catch (caught) {
396
+ error(-3, `invalid WhatsOnChain WebSocket message: ${safeProviderMessage(caught instanceof Error ? caught.message : caught)}`);
397
+ done = true;
398
+ ws.close();
399
+ }
338
400
  };
339
401
  const waitMsecs = 1000;
340
402
  let sinceLastSentPing = 0;
341
403
  while (!done) {
342
404
  await (0, utilityHelpers_1.wait)(waitMsecs);
405
+ if (done)
406
+ break;
343
407
  msecsWithoutPing += waitMsecs;
344
408
  sinceLastSentPing += waitMsecs;
345
- if (sinceLastSentPing > 10000) {
409
+ if (msecsWithoutPing >= idleWait) {
410
+ error(-2, 'unexpectedly went idle');
411
+ done = true;
412
+ ws.close();
413
+ }
414
+ else if (sinceLastSentPing > 10000 && wsIsOpen) {
346
415
  ws.send('ping');
347
416
  sinceLastSentPing = 0;
348
417
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WhatsOnChainIngestorWs.js","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WhatsOnChainIngestorWs.js","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,6 @@ export interface WhatsOnChainServicesOptions {
48
48
  minRequestIntervalMsecs?: number;
49
49
  }
50
50
  export declare class WhatsOnChainServices {
51
- options: WhatsOnChainServicesOptions;
52
51
  static createWhatsOnChainServicesOptions(chain: Chain): WhatsOnChainServicesOptions;
53
52
  static readonly chainInfo: Array<WocChainInfo | undefined>;
54
53
  static readonly chainInfoTime: Array<Date | undefined>;
@@ -58,6 +57,7 @@ export declare class WhatsOnChainServices {
58
57
  private static nextRequestMsecs;
59
58
  chain: Chain;
60
59
  woc: WhatsOnChain;
60
+ readonly options: WhatsOnChainServicesOptions;
61
61
  constructor(options: WhatsOnChainServicesOptions);
62
62
  getHeaderByHash(hash: string): Promise<BlockHeader | undefined>;
63
63
  getChainInfo(): Promise<WocChainInfo>;
@@ -99,5 +99,7 @@ export interface GetHeaderByteFileLinksResult {
99
99
  fileName: string;
100
100
  range: HeightRange;
101
101
  data: Uint8Array | undefined;
102
+ /** The URL came from a remote resource manifest and must remain public HTTPS. */
103
+ publicNetworkOnly: true;
102
104
  }
103
105
  //# sourceMappingURL=WhatsOnChainServices.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WhatsOnChainServices.d.ts","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WhatsOnChainServices.d.ts","sourceRoot":"","sources":["../../../../../../src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.ts"],"names":[],"mappings":"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"}
@@ -7,24 +7,76 @@ const WhatsOnChain_1 = require("../../../providers/WhatsOnChain");
7
7
  const ChaintracksFetch_1 = require("../util/ChaintracksFetch");
8
8
  const HeightRange_1 = require("../util/HeightRange");
9
9
  const utilityHelpers_1 = require("../../../../utility/utilityHelpers");
10
+ const safeDiagnostic_1 = require("../util/safeDiagnostic");
11
+ const MAX_BLOCK_HEIGHT = 0x7fffffff;
12
+ const MAX_RESOURCE_LINKS = 1024;
13
+ const MAX_RESOURCE_LINK_LENGTH = 4096;
14
+ const MAX_RECENT_HEADERS = 128;
15
+ function requirePlainDataRecord(value, name) {
16
+ if (value == null || typeof value !== 'object' || Array.isArray(value)) {
17
+ throw new Error(`${name} must be a plain data object.`);
18
+ }
19
+ const prototype = Object.getPrototypeOf(value);
20
+ if (prototype !== Object.prototype && prototype !== null) {
21
+ throw new Error(`${name} must be a plain data object.`);
22
+ }
23
+ const descriptors = Object.getOwnPropertyDescriptors(value);
24
+ if (Object.keys(descriptors).length > 64 || Object.values(descriptors).some(d => d.get != null || d.set != null)) {
25
+ throw new Error(`${name} must contain only bounded data properties.`);
26
+ }
27
+ }
28
+ function requireInteger(value, name, maximum = Number.MAX_SAFE_INTEGER) {
29
+ if (!Number.isSafeInteger(value) || value < 0 || value > maximum) {
30
+ throw new Error(`${name} must be a non-negative integer no greater than ${maximum}.`);
31
+ }
32
+ return value;
33
+ }
34
+ function requireFiniteNumber(value, name) {
35
+ if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
36
+ throw new Error(`${name} must be a finite non-negative number.`);
37
+ }
38
+ return value;
39
+ }
40
+ function requireString(value, name, pattern) {
41
+ if (typeof value !== 'string' ||
42
+ value.length > MAX_RESOURCE_LINK_LENGTH ||
43
+ (pattern != null && !pattern.test(value))) {
44
+ throw new Error(`${name} is invalid.`);
45
+ }
46
+ return value;
47
+ }
10
48
  function parseFileLink(file) {
11
- const url = new URL(file);
49
+ if (typeof file !== 'string' || file.length === 0 || file.length > MAX_RESOURCE_LINK_LENGTH)
50
+ return undefined;
51
+ let url;
52
+ try {
53
+ url = new URL(file);
54
+ }
55
+ catch {
56
+ return undefined;
57
+ }
58
+ if (url.protocol !== 'https:' || url.username !== '' || url.password !== '' || url.search !== '' || url.hash !== '') {
59
+ return undefined;
60
+ }
12
61
  const parts = url.pathname.split('/');
13
62
  const fileName = parts.pop();
14
63
  if (!fileName)
15
64
  return undefined;
16
- const sourceUrl = `${url.protocol}//${url.hostname}${parts.join('/')}`;
17
- const bits = fileName.split('_');
18
- if (bits.length === 1 && bits[0] === 'latest') {
65
+ const sourceUrl = `${url.origin}${parts.join('/')}`;
66
+ if (fileName === 'latest') {
19
67
  return { range: 'latest', sourceUrl, fileName };
20
68
  }
21
- if (bits.length === 3) {
22
- const fromHeight = Number.parseInt(bits[0], 10);
23
- const toHeight = Number.parseInt(bits[1], 10);
24
- if (Number.isInteger(fromHeight) && Number.isInteger(toHeight)) {
25
- return { range: { fromHeight, toHeight }, sourceUrl, fileName };
26
- }
27
- }
69
+ const match = /^([0-9]+)_([0-9]+)_headers(?:\.bin)?$/.exec(fileName);
70
+ if (match == null)
71
+ return undefined;
72
+ const fromHeight = Number(match[1]);
73
+ const toHeight = Number(match[2]);
74
+ if (Number.isSafeInteger(fromHeight) &&
75
+ Number.isSafeInteger(toHeight) &&
76
+ fromHeight >= 0 &&
77
+ toHeight >= fromHeight &&
78
+ toHeight <= MAX_BLOCK_HEIGHT)
79
+ return { range: { fromHeight, toHeight }, sourceUrl, fileName };
28
80
  return undefined;
29
81
  }
30
82
  async function resolveHeaderFileLink(parsed, currentRange, neededRange, fetch, link) {
@@ -32,7 +84,13 @@ async function resolveHeaderFileLink(parsed, currentRange, neededRange, fetch, l
32
84
  const range = new HeightRange_1.HeightRange(parsed.range.fromHeight, parsed.range.toHeight);
33
85
  const result = neededRange.intersect(range).isEmpty
34
86
  ? undefined
35
- : { sourceUrl: parsed.sourceUrl, fileName: parsed.fileName, range, data: undefined };
87
+ : {
88
+ sourceUrl: parsed.sourceUrl,
89
+ fileName: parsed.fileName,
90
+ range,
91
+ data: undefined,
92
+ publicNetworkOnly: true
93
+ };
36
94
  return { range, result };
37
95
  }
38
96
  if (currentRange == null)
@@ -40,15 +98,20 @@ async function resolveHeaderFileLink(parsed, currentRange, neededRange, fetch, l
40
98
  const fromHeight = currentRange.maxHeight + 1;
41
99
  if (neededRange.maxHeight < fromHeight)
42
100
  return { range: currentRange };
43
- const data = await fetch.download(link);
101
+ const maxBytes = (neededRange.maxHeight - fromHeight + 1) * 80;
102
+ if (!Number.isSafeInteger(maxBytes) || maxBytes < 80)
103
+ throw new Error('WhatsOnChain latest header range is invalid.');
104
+ const data = await fetch.download(link, maxBytes, { publicNetworkOnly: true });
105
+ if (data.length === 0 || data.length % 80 !== 0) {
106
+ throw new Error('WhatsOnChain latest header resource must contain a non-empty multiple of 80 bytes.');
107
+ }
44
108
  const range = new HeightRange_1.HeightRange(fromHeight, fromHeight + data.length / 80 - 1);
45
109
  const result = neededRange.intersect(range).isEmpty
46
110
  ? undefined
47
- : { sourceUrl: parsed.sourceUrl, fileName: parsed.fileName, range, data };
111
+ : { sourceUrl: parsed.sourceUrl, fileName: parsed.fileName, range, data, publicNetworkOnly: true };
48
112
  return { range, result };
49
113
  }
50
114
  class WhatsOnChainServices {
51
- options;
52
115
  static createWhatsOnChainServicesOptions(chain) {
53
116
  const options = {
54
117
  chain,
@@ -69,8 +132,45 @@ class WhatsOnChainServices {
69
132
  static nextRequestMsecs = 0;
70
133
  chain;
71
134
  woc;
135
+ options;
72
136
  constructor(options) {
73
- this.options = options;
137
+ if (options == null || typeof options !== 'object' || Array.isArray(options)) {
138
+ throw new Error('WhatsOnChain options must be a data object.');
139
+ }
140
+ const descriptors = Object.getOwnPropertyDescriptors(options);
141
+ if (Object.keys(descriptors).length > 64 || Object.values(descriptors).some(d => d.get != null || d.set != null)) {
142
+ throw new Error('WhatsOnChain options must contain only bounded data properties.');
143
+ }
144
+ if (!['main', 'test', 'stn', 'ttn', 'tstn'].includes(options.chain)) {
145
+ throw new Error('WhatsOnChain chain must be a supported non-mock network.');
146
+ }
147
+ if (options.apiKey !== undefined &&
148
+ (typeof options.apiKey !== 'string' || options.apiKey.length > 4096 || (0, safeDiagnostic_1.containsControlCharacter)(options.apiKey))) {
149
+ throw new Error('WhatsOnChain apiKey must be a string without control characters and no longer than 4096.');
150
+ }
151
+ if (!Number.isSafeInteger(options.timeout) || options.timeout < 1 || options.timeout > 60 * 60 * 1000) {
152
+ throw new Error('WhatsOnChain timeout must be an integer from 1 through 3600000.');
153
+ }
154
+ if (typeof options.userAgent !== 'string' ||
155
+ options.userAgent.length === 0 ||
156
+ options.userAgent.length > 256 ||
157
+ (0, safeDiagnostic_1.containsControlCharacter)(options.userAgent)) {
158
+ throw new Error('WhatsOnChain userAgent must contain 1 through 256 characters without control characters.');
159
+ }
160
+ if (typeof options.enableCache !== 'boolean')
161
+ throw new Error('WhatsOnChain enableCache must be a boolean.');
162
+ if (!Number.isSafeInteger(options.chainInfoMsecs) ||
163
+ options.chainInfoMsecs < 0 ||
164
+ options.chainInfoMsecs > 24 * 60 * 60 * 1000) {
165
+ throw new Error('WhatsOnChain chainInfoMsecs must be an integer from 0 through 86400000.');
166
+ }
167
+ const minRequestIntervalMsecs = options.minRequestIntervalMsecs ?? 350;
168
+ if (!Number.isSafeInteger(minRequestIntervalMsecs) ||
169
+ minRequestIntervalMsecs < 0 ||
170
+ minRequestIntervalMsecs > 60 * 1000) {
171
+ throw new Error('WhatsOnChain minRequestIntervalMsecs must be an integer from 0 through 60000.');
172
+ }
173
+ this.options = Object.freeze({ ...options, minRequestIntervalMsecs });
74
174
  const config = {
75
175
  apiKey: this.options.apiKey,
76
176
  timeout: this.options.timeout,
@@ -78,9 +178,9 @@ class WhatsOnChainServices {
78
178
  enableCache: this.options.enableCache,
79
179
  requestGate: async () => await this.waitForRateLimit()
80
180
  };
81
- this.chain = options.chain;
181
+ this.chain = this.options.chain;
82
182
  const chainInfoMsecs = WhatsOnChainServices.chainInfoMsecs;
83
- chainInfoMsecs[this.chain] = options.chainInfoMsecs;
183
+ chainInfoMsecs[this.chain] = this.options.chainInfoMsecs;
84
184
  this.woc = new WhatsOnChain_1.WhatsOnChain(this.chain, config);
85
185
  }
86
186
  async getHeaderByHash(hash) {
@@ -104,7 +204,7 @@ class WhatsOnChainServices {
104
204
  WhatsOnChainServices.chainInfoPromise[this.chain] = pending;
105
205
  }
106
206
  try {
107
- chainInfo[this.chain] = await pending;
207
+ chainInfo[this.chain] = { ...(await pending) };
108
208
  }
109
209
  finally {
110
210
  if (WhatsOnChainServices.chainInfoPromise[this.chain] === pending) {
@@ -115,7 +215,7 @@ class WhatsOnChainServices {
115
215
  }
116
216
  if (!chainInfo[this.chain])
117
217
  throw new Error('Unexpected failure to update chainInfo.');
118
- return chainInfo[this.chain];
218
+ return { ...chainInfo[this.chain] };
119
219
  }
120
220
  async getChainTipHeight() {
121
221
  return (await this.getChainInfo()).blocks;
@@ -131,18 +231,53 @@ class WhatsOnChainServices {
131
231
  fetch ||= new ChaintracksFetch_1.ChaintracksFetch();
132
232
  await this.waitForRateLimit();
133
233
  const headers = await fetch.fetchJson(`https://api.whatsonchain.com/v1/bsv/${this.chain}/block/headers`);
134
- return headers;
234
+ if (!Array.isArray(headers) ||
235
+ headers.length > MAX_RECENT_HEADERS ||
236
+ Object.keys(headers).length !== headers.length) {
237
+ throw new Error(`WhatsOnChain headers must be a dense array of at most ${MAX_RECENT_HEADERS} items.`);
238
+ }
239
+ return headers.map((header, index) => sanitizeWocGetHeadersHeader(header, index));
135
240
  }
136
241
  async getHeaderByteFileLinks(neededRange, fetch) {
242
+ if (neededRange.isEmpty)
243
+ return [];
244
+ requireInteger(neededRange.minHeight, 'neededRange.minHeight', MAX_BLOCK_HEIGHT);
245
+ requireInteger(neededRange.maxHeight, 'neededRange.maxHeight', MAX_BLOCK_HEIGHT);
137
246
  fetch ||= new ChaintracksFetch_1.ChaintracksFetch();
138
247
  await this.waitForRateLimit();
139
248
  const files = await fetch.fetchJson(`https://api.whatsonchain.com/v1/bsv/${this.chain}/block/headers/resources`);
249
+ requirePlainDataRecord(files, 'WhatsOnChain header resources');
250
+ if (!Array.isArray(files.files) ||
251
+ files.files.length > MAX_RESOURCE_LINKS ||
252
+ Object.keys(files.files).length !== files.files.length) {
253
+ throw new Error(`WhatsOnChain header resources must contain a dense files array of at most ${MAX_RESOURCE_LINKS} links.`);
254
+ }
140
255
  const r = [];
141
256
  let range;
257
+ let sawLatest = false;
142
258
  for (const link of files.files) {
259
+ if (typeof link !== 'string' || link.length === 0 || link.length > MAX_RESOURCE_LINK_LENGTH) {
260
+ throw new Error('WhatsOnChain returned an invalid header resource link.');
261
+ }
143
262
  const parsed = parseFileLink(link);
144
- if (parsed === undefined)
145
- continue; // parse error, return empty result
263
+ if (parsed === undefined) {
264
+ let location = 'malformed URL';
265
+ try {
266
+ const rejected = new URL(link);
267
+ location = `${rejected.origin}${rejected.pathname}`;
268
+ }
269
+ catch {
270
+ // Keep the non-sensitive generic location.
271
+ }
272
+ throw new Error(`WhatsOnChain returned an unsafe header resource link (${location}).`);
273
+ }
274
+ if (sawLatest)
275
+ throw new Error('WhatsOnChain returned a resource after its latest resource.');
276
+ if (parsed.range === 'latest')
277
+ sawLatest = true;
278
+ else if (range != null && parsed.range.fromHeight !== range.maxHeight + 1) {
279
+ throw new Error('WhatsOnChain returned non-contiguous or unordered header resources.');
280
+ }
146
281
  const resolved = await resolveHeaderFileLink(parsed, range, neededRange, fetch, link);
147
282
  range = resolved.range;
148
283
  if (resolved.result != null)
@@ -161,7 +296,7 @@ class WhatsOnChainServices {
161
296
  const delay = Math.max(0, WhatsOnChainServices.nextRequestMsecs - Date.now());
162
297
  if (delay > 0)
163
298
  await (0, utilityHelpers_1.wait)(delay);
164
- WhatsOnChainServices.nextRequestMsecs = Date.now() + (this.options.minRequestIntervalMsecs ?? 350);
299
+ WhatsOnChainServices.nextRequestMsecs = Date.now() + this.options.minRequestIntervalMsecs;
165
300
  }
166
301
  finally {
167
302
  release();
@@ -170,20 +305,32 @@ class WhatsOnChainServices {
170
305
  }
171
306
  exports.WhatsOnChainServices = WhatsOnChainServices;
172
307
  function wocGetHeadersHeaderToBlockHeader(h) {
173
- const bits = typeof h.bits === 'string' ? Number.parseInt(h.bits, 16) : h.bits;
174
- if (!h.previousblockhash) {
175
- h.previousblockhash = '0000000000000000000000000000000000000000000000000000000000000000'; // genesis
176
- }
177
- const bh = {
178
- height: h.height,
179
- hash: h.hash,
180
- version: h.version,
181
- previousHash: h.previousblockhash,
182
- merkleRoot: h.merkleroot,
183
- time: h.time,
184
- bits,
185
- nonce: h.nonce
308
+ return (0, WhatsOnChain_1.convertWocToBlockHeaderHex)(h);
309
+ }
310
+ function sanitizeWocGetHeadersHeader(value, index) {
311
+ requirePlainDataRecord(value, `WhatsOnChain header ${index}`);
312
+ const header = wocGetHeadersHeaderToBlockHeader(value);
313
+ const nextblockhash = value.nextblockhash == null || value.nextblockhash === ''
314
+ ? ''
315
+ : requireString(value.nextblockhash, `WhatsOnChain header ${index} nextblockhash`, /^[0-9a-fA-F]{64}$/).toLowerCase();
316
+ return {
317
+ hash: header.hash,
318
+ confirmations: requireInteger(value.confirmations, `WhatsOnChain header ${index} confirmations`),
319
+ size: requireInteger(value.size, `WhatsOnChain header ${index} size`),
320
+ height: header.height,
321
+ version: header.version,
322
+ versionHex: requireString(value.versionHex, `WhatsOnChain header ${index} versionHex`, /^[0-9a-fA-F]{8}$/),
323
+ merkleroot: header.merkleRoot,
324
+ time: header.time,
325
+ mediantime: requireInteger(value.mediantime, `WhatsOnChain header ${index} mediantime`, 0xffffffff),
326
+ nonce: header.nonce,
327
+ bits: header.bits.toString(16).padStart(8, '0'),
328
+ difficulty: requireFiniteNumber(value.difficulty, `WhatsOnChain header ${index} difficulty`),
329
+ chainwork: requireString(value.chainwork, `WhatsOnChain header ${index} chainwork`, /^[0-9a-fA-F]{64}$/).toLowerCase(),
330
+ previousblockhash: header.previousHash,
331
+ nextblockhash,
332
+ nTx: requireInteger(value.nTx, `WhatsOnChain header ${index} nTx`),
333
+ num_tx: requireInteger(value.num_tx, `WhatsOnChain header ${index} num_tx`)
186
334
  };
187
- return bh;
188
335
  }
189
336
  //# sourceMappingURL=WhatsOnChainServices.js.map