@bsv/wallet-toolbox 1.6.3 → 1.6.5

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 (266) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/docs/client.md +402 -313
  3. package/docs/monitor.md +4 -4
  4. package/docs/services.md +118 -133
  5. package/docs/wallet.md +402 -313
  6. package/mobile/out/src/monitor/Monitor.d.ts +3 -3
  7. package/mobile/out/src/monitor/Monitor.d.ts.map +1 -1
  8. package/mobile/out/src/monitor/Monitor.js.map +1 -1
  9. package/mobile/out/src/sdk/WalletServices.interfaces.d.ts +88 -2
  10. package/mobile/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  11. package/mobile/out/src/services/Services.js +1 -1
  12. package/mobile/out/src/services/Services.js.map +1 -1
  13. package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +3 -3
  14. package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  15. package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  16. package/mobile/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts +1 -6
  17. package/mobile/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts.map +1 -1
  18. package/mobile/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts +1 -1
  19. package/mobile/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
  20. package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +2 -2
  21. package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  22. package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +33 -16
  23. package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  24. package/mobile/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts +1 -1
  25. package/mobile/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts.map +1 -1
  26. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +1 -1
  27. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  28. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js +15 -11
  29. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  30. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts +2 -2
  31. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  32. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +4 -4
  33. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  34. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +1 -1
  35. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  36. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  37. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +2 -3
  38. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  39. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts +2 -1
  40. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  41. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +3 -1
  42. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  43. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +1 -1
  44. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  45. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +2 -2
  46. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  47. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +4 -5
  48. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  49. package/mobile/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts +2 -1
  50. package/mobile/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  51. package/mobile/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +2 -1
  52. package/mobile/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  53. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +7 -7
  54. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  55. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +42 -5
  56. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  57. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -7
  58. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  59. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +63 -130
  60. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  61. package/mobile/out/src/services/chaintracker/chaintracks/index.client.d.ts +0 -3
  62. package/mobile/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +1 -1
  63. package/mobile/out/src/services/chaintracker/chaintracks/index.client.js +0 -3
  64. package/mobile/out/src/services/chaintracker/chaintracks/index.client.js.map +1 -1
  65. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -1
  66. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  67. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +19 -7
  68. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  69. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts +1 -1
  70. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  71. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  72. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +2 -2
  73. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  74. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +2 -2
  75. package/mobile/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  76. package/mobile/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  77. package/mobile/out/src/services/chaintracker/chaintracks/util/HeightRange.js +4 -1
  78. package/mobile/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  79. package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  80. package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +26 -11
  81. package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  82. package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts +2 -1
  83. package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  84. package/mobile/out/src/services/createDefaultWalletServicesOptions.js +19 -17
  85. package/mobile/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  86. package/mobile/package-lock.json +2 -2
  87. package/mobile/package.json +1 -1
  88. package/out/src/monitor/Monitor.d.ts +3 -3
  89. package/out/src/monitor/Monitor.d.ts.map +1 -1
  90. package/out/src/monitor/Monitor.js.map +1 -1
  91. package/out/src/sdk/WalletServices.interfaces.d.ts +88 -2
  92. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  93. package/out/src/services/Services.js +1 -1
  94. package/out/src/services/Services.js.map +1 -1
  95. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +3 -3
  96. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  97. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  98. package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts +1 -6
  99. package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts.map +1 -1
  100. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts +1 -1
  101. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
  102. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +2 -2
  103. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
  104. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +33 -16
  105. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  106. package/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts +1 -1
  107. package/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts.map +1 -1
  108. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +1 -1
  109. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  110. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +15 -11
  111. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  112. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts +2 -2
  113. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
  114. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +4 -4
  115. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  116. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +1 -1
  117. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
  118. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
  119. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +2 -3
  120. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
  121. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
  122. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +1 -1
  123. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
  124. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts +2 -1
  125. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
  126. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +3 -1
  127. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  128. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +1 -1
  129. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
  130. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
  131. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +3 -3
  132. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
  133. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +2 -2
  134. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  135. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +4 -5
  136. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  137. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js +1 -1
  138. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js.map +1 -1
  139. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.test.js +1 -1
  140. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.test.js.map +1 -1
  141. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts +2 -1
  142. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
  143. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +2 -1
  144. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  145. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
  146. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +4 -3
  147. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
  148. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +7 -7
  149. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
  150. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +42 -5
  151. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  152. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +91 -0
  153. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -0
  154. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +448 -0
  155. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -0
  156. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -29
  157. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  158. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +61 -137
  159. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  160. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -7
  161. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  162. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +63 -130
  163. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  164. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts +2 -0
  165. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts.map +1 -0
  166. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js +81 -0
  167. package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js.map +1 -0
  168. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +12 -1
  169. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +1 -1
  170. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts +2 -0
  171. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts.map +1 -0
  172. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +50 -0
  173. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +1 -0
  174. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +12 -0
  175. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -0
  176. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +83 -0
  177. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -0
  178. package/out/src/services/chaintracker/chaintracks/index.all.d.ts +3 -0
  179. package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
  180. package/out/src/services/chaintracker/chaintracks/index.all.js +3 -0
  181. package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
  182. package/out/src/services/chaintracker/chaintracks/index.client.d.ts +0 -3
  183. package/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +1 -1
  184. package/out/src/services/chaintracker/chaintracks/index.client.js +0 -3
  185. package/out/src/services/chaintracker/chaintracks/index.client.js.map +1 -1
  186. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -1
  187. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  188. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +19 -7
  189. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  190. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts +1 -1
  191. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  192. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  193. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +2 -2
  194. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
  195. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +2 -2
  196. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
  197. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
  198. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +4 -1
  199. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
  200. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
  201. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +26 -11
  202. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  203. package/out/src/services/createDefaultWalletServicesOptions.d.ts +2 -1
  204. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  205. package/out/src/services/createDefaultWalletServicesOptions.js +19 -17
  206. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  207. package/out/src/services/providers/__tests/exchangeRates.test.d.ts +2 -0
  208. package/out/src/services/providers/__tests/exchangeRates.test.d.ts.map +1 -0
  209. package/out/src/services/providers/__tests/exchangeRates.test.js +19 -0
  210. package/out/src/services/providers/__tests/exchangeRates.test.js.map +1 -0
  211. package/out/test/Wallet/support/operations.man.test.js +1 -1
  212. package/out/test/Wallet/support/operations.man.test.js.map +1 -1
  213. package/out/tsconfig.all.tsbuildinfo +1 -1
  214. package/package.json +1 -1
  215. package/src/monitor/Monitor.ts +3 -3
  216. package/src/sdk/WalletServices.interfaces.ts +88 -1
  217. package/src/services/Services.ts +1 -1
  218. package/src/services/chaintracker/ChaintracksChainTracker.ts +3 -2
  219. package/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.ts +1 -7
  220. package/src/services/chaintracker/chaintracks/Api/BulkStorageApi.ts +1 -1
  221. package/src/services/chaintracker/chaintracks/Api/ChaintracksApi.ts +2 -2
  222. package/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.ts +39 -14
  223. package/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.ts +1 -1
  224. package/src/services/chaintracker/chaintracks/Chaintracks.ts +16 -11
  225. package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.ts +4 -5
  226. package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.ts +1 -1
  227. package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.ts +2 -3
  228. package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.ts +1 -0
  229. package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.ts +3 -1
  230. package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.ts +1 -1
  231. package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.ts +10 -3
  232. package/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.ts +6 -4
  233. package/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.ts +1 -1
  234. package/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.test.ts +1 -1
  235. package/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.ts +2 -1
  236. package/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.ts +4 -3
  237. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.ts +60 -11
  238. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.ts +557 -0
  239. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.ts +80 -179
  240. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.ts +63 -133
  241. package/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.ts +102 -0
  242. package/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.ts +14 -1
  243. package/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.ts +61 -0
  244. package/src/services/chaintracker/chaintracks/createIdbChaintracks.ts +111 -0
  245. package/src/services/chaintracker/chaintracks/index.all.ts +4 -0
  246. package/src/services/chaintracker/chaintracks/index.client.ts +0 -3
  247. package/src/services/chaintracker/chaintracks/util/BulkFileDataManager.ts +20 -11
  248. package/src/services/chaintracker/chaintracks/util/BulkFilesReader.ts +1 -1
  249. package/src/services/chaintracker/chaintracks/util/BulkHeaderFile.ts +3 -3
  250. package/src/services/chaintracker/chaintracks/util/HeightRange.ts +4 -1
  251. package/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.ts +26 -11
  252. package/src/services/createDefaultWalletServicesOptions.ts +25 -18
  253. package/src/services/providers/__tests/exchangeRates.test.ts +18 -0
  254. package/test/Wallet/support/operations.man.test.ts +1 -1
  255. package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +0 -30
  256. package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +0 -1
  257. package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksService.js +0 -149
  258. package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +0 -1
  259. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +0 -23
  260. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +0 -1
  261. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +0 -57
  262. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +0 -1
  263. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +0 -16
  264. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +0 -1
  265. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +0 -53
  266. package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/wallet-toolbox",
3
- "version": "1.6.3",
3
+ "version": "1.6.5",
4
4
  "description": "BRC100 conforming wallet, wallet storage and wallet signer components",
5
5
  "main": "./out/src/index.js",
6
6
  "types": "./out/src/index.d.ts",
@@ -16,12 +16,12 @@ import { TaskSendWaiting } from './tasks/TaskSendWaiting'
16
16
  import { TaskCheckNoSends } from './tasks/TaskCheckNoSends'
17
17
  import { TaskUnFail } from './tasks/TaskUnFail'
18
18
  import { Chain, ProvenTransactionStatus } from '../sdk/types'
19
- import { ChaintracksServiceClient } from '../services/chaintracker/chaintracks/ChaintracksServiceClient'
20
19
  import { ReviewActionResult } from '../sdk/WalletStorage.interfaces'
21
20
  import { WERR_BAD_REQUEST, WERR_INVALID_PARAMETER } from '../sdk/WERR_errors'
22
21
  import { WalletError } from '../sdk/WalletError'
23
22
  import { BlockHeader } from '../sdk/WalletServices.interfaces'
24
23
  import { Services } from '../services/Services'
24
+ import { ChaintracksClientApi } from '../services/chaintracker/chaintracks/Api/ChaintracksClientApi'
25
25
 
26
26
  export type MonitorStorage = WalletStorageManager
27
27
 
@@ -32,7 +32,7 @@ export interface MonitorOptions {
32
32
 
33
33
  storage: MonitorStorage
34
34
 
35
- chaintracks: ChaintracksServiceClient
35
+ chaintracks: ChaintracksClientApi
36
36
 
37
37
  /**
38
38
  * How many msecs to wait after each getMerkleProof service request.
@@ -80,7 +80,7 @@ export class Monitor {
80
80
  services: Services
81
81
  chain: Chain
82
82
  storage: MonitorStorage
83
- chaintracks: ChaintracksServiceClient
83
+ chaintracks: ChaintracksClientApi
84
84
  onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void>
85
85
  onTransactionProven?: (txStatus: ProvenTransactionStatus) => Promise<void>
86
86
 
@@ -3,6 +3,7 @@ import { Chain, ReqHistoryNote } from './types'
3
3
  import { WalletError } from './WalletError'
4
4
  import { TableOutput } from '../storage/schema/tables/TableOutput'
5
5
  import { ChaintracksServiceClient } from '../services/chaintracker/chaintracks/ChaintracksServiceClient'
6
+ import { ChaintracksClientApi } from '../services/chaintracker/chaintracks/Api/ChaintracksClientApi'
6
7
  /**
7
8
  * Defines standard interfaces to access functionality implemented by external transaction processing services.
8
9
  */
@@ -192,21 +193,107 @@ export interface FiatExchangeRates {
192
193
  }
193
194
 
194
195
  export interface WalletServicesOptions {
196
+ /**
197
+ * 'main' or 'test': which BSV chain to use
198
+ */
195
199
  chain: Chain
200
+ /**
201
+ * As of 2025-08-31 the `taalApiKey` is unused for default configured services.
202
+ * See `arcConfig` instead.
203
+ */
196
204
  taalApiKey?: string
205
+ /**
206
+ * Api key for use accessing Bitails API at
207
+ * mainnet: `https://api.bitails.io/`
208
+ * testnet: `https://test-api.bitails.io/`
209
+ */
197
210
  bitailsApiKey?: string
211
+ /**
212
+ * Api key for use accessing WhatsOnChain API at
213
+ * mainnet: `https://api.whatsonchain.com/v1/bsv/main`
214
+ * testnet: `https://api.whatsonchain.com/v1/bsv/test`
215
+ */
198
216
  whatsOnChainApiKey?: string
217
+ /**
218
+ * The initial approximate BSV/USD exchange rate.
219
+ */
199
220
  bsvExchangeRate: BsvExchangeRate
221
+ /**
222
+ * Update interval for BSV/USD exchange rate.
223
+ * Default is 15 minutes.
224
+ */
200
225
  bsvUpdateMsecs: number
226
+ /**
227
+ * The initial approximate fiat exchange rates with USD as base.
228
+ */
201
229
  fiatExchangeRates: FiatExchangeRates
230
+ /**
231
+ * Update interval for Fiat exchange rates.
232
+ * Default is 24 hours.
233
+ */
202
234
  fiatUpdateMsecs: number
235
+ /**
236
+ * MAPI callbacks are deprecated at this time.
237
+ */
203
238
  disableMapiCallback?: boolean
239
+ /**
240
+ * API key for use accessing fiat exchange rates API at
241
+ * `http://api.exchangeratesapi.io/v1/latest?access_key=${key}`
242
+ *
243
+ * Obtain your own api key here:
244
+ * https://manage.exchangeratesapi.io/signup/free
245
+ */
204
246
  exchangeratesapiKey?: string
247
+ /**
248
+ * Due to the default use of a free exchangeratesapiKey with low usage limits,
249
+ * the `ChaintracksService` can act as a request rate multiplier.
250
+ *
251
+ * By default the following endpoint is used:
252
+ * `https://mainnet-chaintracks.babbage.systems/getFiatExchangeRates`
253
+ */
205
254
  chaintracksFiatExchangeRatesUrl?: string
206
- chaintracks?: ChaintracksServiceClient
255
+ /**
256
+ * Optional Chaintracks client API instance.
257
+ * Default is a new instance of ChaintracksServiceClient configured to use:
258
+ * mainnet: `https://mainnet-chaintracks.babbage.systems`
259
+ * testnet: `https://testnet-chaintracks.babbage.systems`
260
+ */
261
+ chaintracks?: ChaintracksClientApi
262
+ /**
263
+ * TAAL ARC service provider endpoit to use
264
+ * Default is:
265
+ * mainnet: `https://arc.taal.com`
266
+ * testnet: `https://arc-test.taal.com`
267
+ */
207
268
  arcUrl: string
269
+ /**
270
+ * TAAL ARC service configuration options.
271
+ *
272
+ * apiKey Default value is undefined.
273
+ *
274
+ * deploymentId Default value: `wallet-toolbox-${randomBytesHex(16)}`.
275
+ *
276
+ * callbackUrl Default is undefined.
277
+ * callbackToken Default is undefined.
278
+ */
208
279
  arcConfig: ArcConfig
280
+ /**
281
+ * GorillaPool ARC service provider endpoit to use
282
+ * Default is:
283
+ * mainnet: `https://arc.gorillapool.io`
284
+ * testnet: undefined
285
+ */
209
286
  arcGorillaPoolUrl?: string
287
+ /**
288
+ * GorillaPool ARC service configuration options.
289
+ *
290
+ * apiKey Default is undefined.
291
+ *
292
+ * deploymentId Default value: `wallet-toolbox-${randomBytesHex(16)}`.
293
+ *
294
+ * callbackUrl Default is undefined.
295
+ * callbackToken Default is undefined.
296
+ */
210
297
  arcGorillaPoolConfig?: ArcConfig
211
298
  }
212
299
 
@@ -69,7 +69,7 @@ export class Services implements WalletServices {
69
69
  this.arcGorillaPool = new ARC(this.options.arcGorillaPoolUrl, this.options.arcGorillaPoolConfig, 'arcGorillaPool')
70
70
  }
71
71
 
72
- this.bitails = new Bitails(this.chain)
72
+ this.bitails = new Bitails(this.chain, { apiKey: this.options.bitailsApiKey })
73
73
 
74
74
  //prettier-ignore
75
75
  this.getMerklePathServices = new ServiceCollection<GetMerklePathService>('getMerklePath')
@@ -5,17 +5,18 @@ import { WalletError } from '../../sdk/WalletError'
5
5
  import { wait } from '../../utility/utilityHelpers'
6
6
  import { WERR_INTERNAL } from '../../sdk/WERR_errors'
7
7
  import { BlockHeader } from '../../sdk/WalletServices.interfaces'
8
+ import { ChaintracksClientApi } from './chaintracks/Api/ChaintracksClientApi'
8
9
 
9
10
  export interface ChaintracksChainTrackerOptions {
10
11
  maxRetries?: number
11
12
  }
12
13
 
13
14
  export class ChaintracksChainTracker implements ChainTracker {
14
- chaintracks: ChaintracksServiceClient
15
+ chaintracks: ChaintracksClientApi
15
16
  cache: Record<number, string>
16
17
  options: ChaintracksChainTrackerOptions
17
18
 
18
- constructor(chain?: Chain, chaintracks?: ChaintracksServiceClient, options?: ChaintracksChainTrackerOptions) {
19
+ constructor(chain?: Chain, chaintracks?: ChaintracksClientApi, options?: ChaintracksChainTrackerOptions) {
19
20
  chain ||= 'main'
20
21
  this.chaintracks =
21
22
  chaintracks ??
@@ -16,12 +16,6 @@ export interface BulkIngestorBaseOptions {
16
16
  * available bulk block header resources.
17
17
  */
18
18
  jsonResource: string | undefined
19
-
20
- /**
21
- * If true, and the bulk ingestor supports it, bypass the live database
22
- * up to `liveHeightThreshold` of available headers remaining.
23
- */
24
- bypassLiveEnabled: boolean
25
19
  }
26
20
 
27
21
  export interface BulkIngestorApi {
@@ -76,7 +70,7 @@ export interface BulkIngestorApi {
76
70
  * Components requiring asynchronous setup can override base class implementation.
77
71
  * @param storage
78
72
  */
79
- setStorage(storage: ChaintracksStorageApi): Promise<void>
73
+ setStorage(storage: ChaintracksStorageApi, log: (...args: any[]) => void): Promise<void>
80
74
 
81
75
  storage(): ChaintracksStorageApi
82
76
  }
@@ -88,5 +88,5 @@ export interface BulkStorageApi {
88
88
  * Components requiring asynchronous setup can override base class implementation.
89
89
  * @param storage
90
90
  */
91
- setStorage(storage: ChaintracksStorageApi): Promise<void>
91
+ setStorage(storage: ChaintracksStorageApi, log: (...args: any[]) => void): Promise<void>
92
92
  }
@@ -17,9 +17,9 @@ export interface ChaintracksOptions {
17
17
  */
18
18
  addLiveRecursionLimit: number
19
19
  /**
20
- * Event logging level
20
+ * Optional logging method
21
21
  */
22
- logging: undefined | 'all'
22
+ logging?: (...args: any[]) => void
23
23
  /**
24
24
  * If true, this chaintracks instance will only service read requests for existing data.
25
25
  * Shared storage only requires one readonly false instance to manage and update storage.
@@ -1,5 +1,5 @@
1
1
  import { HeightRange } from '../util/HeightRange'
2
- import { BlockHeader, LiveBlockHeader } from './BlockHeaderApi'
2
+ import { BaseBlockHeader, BlockHeader, LiveBlockHeader } from './BlockHeaderApi'
3
3
  import { Chain } from '../../../../sdk/types'
4
4
  import { BulkHeaderFileInfo } from '../util/BulkHeaderFile'
5
5
  import { BulkFileDataManager } from '../util/BulkFileDataManager'
@@ -52,6 +52,8 @@ export interface ChaintracksStorageBaseOptions {
52
52
  }
53
53
 
54
54
  export interface ChaintracksStorageQueryApi {
55
+ log: (...args: any[]) => void
56
+
55
57
  /**
56
58
  * Returns the active chain tip header
57
59
  * Throws an error if there is no tip.
@@ -108,16 +110,40 @@ export interface ChaintracksStorageQueryApi {
108
110
  isMerkleRootActive(merkleRoot: string): Promise<boolean>
109
111
 
110
112
  /**
111
- * Adds headers in 80 byte serialized format to a buffer.
112
- * Only adds active headers.
113
- * Buffer length divided by 80 is the actual number returned.
113
+ * Returns serialized headers as a Uint8Array.
114
+ * Only adds bulk and active live headers.
114
115
  *
115
- * This function supports the ChaintracksClientApi
116
+ * @param height is the minimum header height to return, must be >= zero.
117
+ * @param count height + count - 1 is the maximum header height to return.
118
+ * @returns serialized headers as a Uint8Array.
119
+ */
120
+ getHeadersUint8Array(height: number, count: number): Promise<Uint8Array>
121
+
122
+ /**
123
+ * Returns an array of deserialized headers.
124
+ * Only adds bulk and active live headers.
116
125
  *
117
- * @param height of first header, must be >= zero.
118
- * @param count of headers, maximum
126
+ * @param height is the minimum header height to return, must be >= zero.
127
+ * @param count height + count - 1 is the maximum header height to return.
128
+ * @returns array of deserialized headers
119
129
  */
120
- getHeaders(height: number, count: number): Promise<number[]>
130
+ getHeaders(height: number, count: number): Promise<BaseBlockHeader[]>
131
+
132
+ /**
133
+ * Returns active `LiveBlockHeaders` with height in the given range.
134
+ *
135
+ * @param range
136
+ * @returns array of active `LiveBlockHeaders`
137
+ */
138
+ getLiveHeaders(range: HeightRange): Promise<LiveBlockHeader[]>
139
+
140
+ /**
141
+ * Returns serialized bulk headers in the given range.
142
+ *
143
+ * @param range
144
+ * @returns serialized headers as a Uint8Array.
145
+ */
146
+ getBulkHeaders(range: HeightRange): Promise<Uint8Array>
121
147
 
122
148
  /**
123
149
  * Returns block header for a given block height on active chain.
@@ -161,7 +187,7 @@ export interface ChaintracksStorageQueryApi {
161
187
  /**
162
188
  * @returns The current minimum and maximum height active LiveBlockHeaders in the "live" database.
163
189
  */
164
- findLiveHeightRange(): Promise<{ minHeight: number; maxHeight: number }>
190
+ findLiveHeightRange(): Promise<HeightRange>
165
191
 
166
192
  /**
167
193
  * @returns The maximum headerId value used by existing records or -1 if there are none.
@@ -257,6 +283,8 @@ export interface ChaintracksStorageBulkFileApi {
257
283
  }
258
284
 
259
285
  export interface ChaintracksStorageIngestApi {
286
+ log: (...args: any[]) => void
287
+
260
288
  /**
261
289
  * Attempts to insert a block header into the chain.
262
290
  *
@@ -340,14 +368,11 @@ export interface ChaintracksStorageIngestApi {
340
368
  * Release all resources. Makes the instance unusable.
341
369
  */
342
370
  destroy(): Promise<void>
343
-
344
- /**
345
- * @returns min, max height range in live database or empty (0, -1)
346
- */
347
- getLiveHeightRange(): Promise<HeightRange>
348
371
  }
349
372
 
350
373
  export interface ChaintracksStorageApi extends ChaintracksStorageQueryApi, ChaintracksStorageIngestApi {
374
+ log: (...args: any[]) => void
375
+
351
376
  bulkManager: BulkFileDataManager
352
377
 
353
378
  /**
@@ -15,7 +15,7 @@ export interface LiveIngestorApi {
15
15
  * Components requiring asynchronous setup can override base class implementation.
16
16
  * @param storage
17
17
  */
18
- setStorage(storage: ChaintracksStorageApi): Promise<void>
18
+ setStorage(storage: ChaintracksStorageApi, log: (...args: any[]) => void): Promise<void>
19
19
 
20
20
  storage(): ChaintracksStorageApi
21
21
 
@@ -23,7 +23,7 @@ export class Chaintracks implements ChaintracksManagementApi {
23
23
  bulkIngestors: [],
24
24
  liveIngestors: [],
25
25
  addLiveRecursionLimit: 36,
26
- logging: 'all',
26
+ logging: (...args) => console.log(new Date().toISOString(), ...args),
27
27
  readonly: false
28
28
  }
29
29
  }
@@ -71,7 +71,9 @@ export class Chaintracks implements ChaintracksManagementApi {
71
71
 
72
72
  this.addLiveRecursionLimit = options.addLiveRecursionLimit
73
73
 
74
- if (options.logging === 'all') this.log = (...args) => console.log(new Date().toISOString(), ...args)
74
+ if (options.logging) this.log = options.logging
75
+ this.storage.log = this.log
76
+
75
77
  this.log(`New ChaintracksBase Instance Constructed ${options.chain}Net`)
76
78
  }
77
79
 
@@ -94,7 +96,7 @@ export class Chaintracks implements ChaintracksManagementApi {
94
96
  const presentHeight = await bulk.getPresentHeight()
95
97
  if (presentHeight) presentHeights.push(presentHeight)
96
98
  } catch (uerr: unknown) {
97
- console.log(uerr)
99
+ console.error(uerr)
98
100
  }
99
101
  }
100
102
  const presentHeight = presentHeights.length ? Math.max(...presentHeights) : undefined
@@ -157,8 +159,8 @@ export class Chaintracks implements ChaintracksManagementApi {
157
159
  if (this.available) return
158
160
  // Make sure database schema exists and is updated...
159
161
  await this.storage.migrateLatest()
160
- for (const bulkIn of this.bulkIngestors) await bulkIn.setStorage(this.storage)
161
- for (const liveIn of this.liveIngestors) await liveIn.setStorage(this.storage)
162
+ for (const bulkIn of this.bulkIngestors) await bulkIn.setStorage(this.storage, this.log)
163
+ for (const liveIn of this.liveIngestors) await liveIn.setStorage(this.storage, this.log)
162
164
 
163
165
  // Start all live ingestors to push new headers onto liveHeaders... each long running.
164
166
  for (const liveIngestor of this.liveIngestors) this.promises.push(liveIngestor.startListening(this.liveHeaders))
@@ -221,7 +223,7 @@ export class Chaintracks implements ChaintracksManagementApi {
221
223
  return this.lock.withReadLock(async () => this.findHeaderForBlockHashNoLock(hash))
222
224
  }
223
225
 
224
- async findHeaderForBlockHashNoLock(hash: string): Promise<BlockHeader | undefined> {
226
+ private async findHeaderForBlockHashNoLock(hash: string): Promise<BlockHeader | undefined> {
225
227
  return (await this.storage.findLiveHeaderForBlockHash(hash)) || undefined
226
228
  }
227
229
 
@@ -238,7 +240,7 @@ export class Chaintracks implements ChaintracksManagementApi {
238
240
  }
239
241
 
240
242
  private async getInfoNoLock(): Promise<ChaintracksInfoApi> {
241
- const liveRange = await this.storage.getLiveHeightRange()
243
+ const liveRange = await this.storage.findLiveHeightRange()
242
244
  const info: ChaintracksInfoApi = {
243
245
  chain: this.chain,
244
246
  heightBulk: liveRange.minHeight - 1,
@@ -253,7 +255,7 @@ export class Chaintracks implements ChaintracksManagementApi {
253
255
 
254
256
  async getHeaders(height: number, count: number): Promise<string> {
255
257
  await this.makeAvailable()
256
- return this.lock.withReadLock(async () => asString(await this.storage.getHeaders(height, count)))
258
+ return this.lock.withReadLock(async () => asString(await this.storage.getHeadersUint8Array(height, count)))
257
259
  }
258
260
 
259
261
  async findChainTipHeader(): Promise<BlockHeader> {
@@ -339,7 +341,7 @@ export class Chaintracks implements ChaintracksManagementApi {
339
341
  break
340
342
  }
341
343
  } catch (uerr: unknown) {
342
- console.log(uerr)
344
+ console.error(uerr)
343
345
  }
344
346
  }
345
347
  if (bulkDone) break
@@ -472,6 +474,7 @@ export class Chaintracks implements ChaintracksManagementApi {
472
474
  // Process a "live" block header...
473
475
  let recursions = this.addLiveRecursionLimit
474
476
  for (; !needSyncCheck && !this.stopMainThread; ) {
477
+ //console.log(`Processing liveHeader: height: ${header.height} hash: ${header.hash} ${new Date().toISOString()}`)
475
478
  const ihr = await this.addLiveHeader(header)
476
479
  if (this.invalidInsertHeaderResult(ihr)) {
477
480
  this.log(`Ignoring liveHeader ${header.height} ${header.hash} due to invalid insert result.`)
@@ -550,11 +553,13 @@ export class Chaintracks implements ChaintracksManagementApi {
550
553
  liveHeaderDupes = 0
551
554
  }
552
555
  const updated = await this.storage.getAvailableHeightRanges()
553
- this.log(`${count} live headers added: bulk ${updated.bulk}, live ${updated.live}`)
556
+ this.log(`After adding ${count} live headers
557
+ After live: bulk ${updated.bulk}, live ${updated.live}
558
+ `)
554
559
  count = 0
555
560
  }
556
561
  if (!this.subscriberCallbacksEnabled) {
557
- const live = await this.storage.getLiveHeightRange()
562
+ const live = await this.storage.findLiveHeightRange()
558
563
  if (!live.isEmpty) {
559
564
  this.subscriberCallbacksEnabled = true
560
565
  this.log(`listening at height of ${live.maxHeight}`)
@@ -17,27 +17,26 @@ export abstract class BulkIngestorBase implements BulkIngestorApi {
17
17
  static createBulkIngestorBaseOptions(chain: Chain) {
18
18
  const options: BulkIngestorBaseOptions = {
19
19
  chain,
20
- jsonResource: `${chain}NetBlockHeaders.json`,
21
- bypassLiveEnabled: true
20
+ jsonResource: `${chain}NetBlockHeaders.json`
22
21
  }
23
22
  return options
24
23
  }
25
24
 
26
25
  chain: Chain
27
26
  jsonFilename: string
28
- bypassLiveEnabled: boolean
27
+ log: (...args: any[]) => void = () => {}
29
28
 
30
29
  constructor(options: BulkIngestorBaseOptions) {
31
30
  if (!options.jsonResource) throw new Error('The jsonFilename options property is required.')
32
31
  this.chain = options.chain
33
32
  this.jsonFilename = options.jsonResource
34
- this.bypassLiveEnabled = options.bypassLiveEnabled
35
33
  }
36
34
 
37
35
  private storageEngine: ChaintracksStorageBase | undefined
38
36
 
39
- async setStorage(storage: ChaintracksStorageBase): Promise<void> {
37
+ async setStorage(storage: ChaintracksStorageBase, log: (...args: any[]) => void): Promise<void> {
40
38
  this.storageEngine = storage
39
+ this.log = log
41
40
  }
42
41
 
43
42
  async shutdown(): Promise<void> {}
@@ -167,7 +167,7 @@ export class BulkIngestorCDN extends BulkIngestorBase {
167
167
  for (const u of r.updated) {
168
168
  log += ` updated: ${u.fileName}, fileId=${u.fileId}\n`
169
169
  }
170
- console.log(log)
170
+ this.log(log)
171
171
 
172
172
  return priorLiveHeaders
173
173
  }
@@ -1,5 +1,4 @@
1
1
  import { Chain } from '../../../../sdk'
2
- import { logger } from '../../../../utility/utilityHelpers'
3
2
  import { BlockHeader } from '../Api/BlockHeaderApi'
4
3
  import { BulkIngestorBaseOptions } from '../Api/BulkIngestorApi'
5
4
  import { ChaintracksFetchApi } from '../Api/ChaintracksFetchApi'
@@ -78,7 +77,7 @@ export class BulkIngestorWhatsOnChainCdn extends BulkIngestorBase {
78
77
 
79
78
  override async getPresentHeight(): Promise<number | undefined> {
80
79
  const presentHeight = await this.woc.getChainTipHeight()
81
- logger(`presentHeight=${presentHeight}`)
80
+ this.log(`presentHeight=${presentHeight}`)
82
81
  return presentHeight
83
82
  }
84
83
 
@@ -104,7 +103,7 @@ export class BulkIngestorWhatsOnChainCdn extends BulkIngestorBase {
104
103
  }
105
104
  }
106
105
  } catch (e) {
107
- logger(`Errors during WhatsOnChain ingestion:\n${e}`)
106
+ this.log(`Errors during WhatsOnChain ingestion:\n${e}`)
108
107
  }
109
108
 
110
109
  const liveHeaders = await this.storage().addBulkHeaders(oldHeaders, bulkRange, priorLiveHeaders)
@@ -62,6 +62,7 @@ export class BulkIngestorWhatsOnChainWs extends BulkIngestorBase {
62
62
  error,
63
63
  this.stopOldListenersToken,
64
64
  this.chain,
65
+ this.log,
65
66
  this.idleWait
66
67
  )
67
68
 
@@ -23,6 +23,7 @@ export abstract class LiveIngestorBase implements LiveIngestorApi {
23
23
  }
24
24
 
25
25
  chain: Chain
26
+ log: (...args: any[]) => void = () => {}
26
27
 
27
28
  constructor(options: LiveIngestorBaseOptions) {
28
29
  this.chain = options.chain
@@ -40,8 +41,9 @@ export abstract class LiveIngestorBase implements LiveIngestorApi {
40
41
  * Allocate resources.
41
42
  * @param storage coordinating storage engine.
42
43
  */
43
- async setStorage(storage: ChaintracksStorageApi): Promise<void> {
44
+ async setStorage(storage: ChaintracksStorageApi, log: (...args: any[]) => void): Promise<void> {
44
45
  this.storageEngine = storage
46
+ this.log = log
45
47
  }
46
48
 
47
49
  /**
@@ -91,7 +91,7 @@ export class LiveIngestorWhatsOnChainPoll extends LiveIngestorBase {
91
91
  await wait(1000)
92
92
  }
93
93
  }
94
- console.log(`LiveIngestorWhatsOnChainPoll stopped`)
94
+ this.log(`LiveIngestorWhatsOnChainPoll stopped`)
95
95
  }
96
96
 
97
97
  stopListening(): void {
@@ -40,11 +40,18 @@ export class LiveIngestorWhatsOnChainWs extends LiveIngestorBase {
40
40
  }
41
41
 
42
42
  for (;;) {
43
- const ok = await WocHeadersLiveListener(enqueue, error, this.stopNewListenersToken, this.chain, this.idleWait)
43
+ const ok = await WocHeadersLiveListener(
44
+ enqueue,
45
+ error,
46
+ this.stopNewListenersToken,
47
+ this.chain,
48
+ this.log,
49
+ this.idleWait
50
+ )
44
51
 
45
52
  if (!ok || errors.length > 0) {
46
- console.log(`WhatsOnChain live ingestor ok=${ok} error count=${errors.length}`)
47
- for (const e of errors) console.log(`WhatsOnChain error code=${e.code} count=${e.count} message=${e.message}`)
53
+ this.log(`WhatsOnChain live ingestor ok=${ok} error count=${errors.length}`)
54
+ for (const e of errors) this.log(`WhatsOnChain error code=${e.code} count=${e.count} message=${e.message}`)
48
55
  }
49
56
 
50
57
  if (ok) break
@@ -4,8 +4,6 @@ import { wait } from '../../../../utility/utilityHelpers'
4
4
  import { Chain } from '../../../../sdk/types'
5
5
  import { BlockHeader } from '../../../../sdk/WalletServices.interfaces'
6
6
 
7
- const logger = console.log.bind(console)
8
-
9
7
  export type StopListenerToken = { stop: (() => void) | undefined }
10
8
 
11
9
  async function getWhatsOnChainTipHeight(chain: Chain = 'main', apiKey?: string): Promise<number> {
@@ -31,7 +29,8 @@ export async function WocHeadersBulkListener(
31
29
  enqueue: (header: BlockHeader) => void,
32
30
  error: (code: number, message: string) => boolean,
33
31
  stop: StopListenerToken,
34
- chain: Chain = 'main',
32
+ chain: Chain,
33
+ logger: (...args: any[]) => void = () => {},
35
34
  idleWait = 5000
36
35
  ): Promise<boolean> {
37
36
  //logger(`WocHeadersBulkListener from ${fromHeight} to ${toHeight} on ${chain} chain`)
@@ -243,6 +242,7 @@ export async function WocHeadersBulkListener_test(): Promise<void> {
243
242
  },
244
243
  stop,
245
244
  chain,
245
+ console.log.bind(console),
246
246
  5000
247
247
  ))
248
248
  ) {
@@ -267,7 +267,8 @@ export async function WocHeadersLiveListener(
267
267
  enqueue: (header: BlockHeader) => void,
268
268
  error: (code: number, message: string) => boolean,
269
269
  stop: StopListenerToken,
270
- chain: Chain = 'main',
270
+ chain: Chain,
271
+ logger: (...args: any[]) => void,
271
272
  idleWait = 100000
272
273
  ): Promise<boolean> {
273
274
  let count = 0
@@ -425,6 +426,7 @@ export async function WocHeadersLiveListener_test(): Promise<void> {
425
426
  },
426
427
  stop,
427
428
  chain,
429
+ console.log.bind(console),
428
430
  100000
429
431
  ))
430
432
  ) {
@@ -44,7 +44,7 @@ async function testUpdateLocalCache(chain: Chain, test: string) {
44
44
  const knexOptions = ChaintracksStorageKnex.createStorageKnexOptions(chain, makeKnex(localSqlite))
45
45
  const storage = new ChaintracksStorageKnex(knexOptions)
46
46
  const before = await storage.getAvailableHeightRanges()
47
- await cdn.setStorage(storage)
47
+ await cdn.setStorage(storage, console.log)
48
48
 
49
49
  const range = new HeightRange(0, 9900000)
50
50
  const liveHeaders = await cdn.fetchHeaders(before, range, range, [])
@@ -73,7 +73,7 @@ describe('WhatsOnChainServices tests', () => {
73
73
  errorsNew.push({ code, message })
74
74
  return true
75
75
  }
76
- const okNew = await WocHeadersLiveListener(eh, errh, stopNewListenersToken, chain)
76
+ const okNew = await WocHeadersLiveListener(eh, errh, stopNewListenersToken, chain, console.log.bind(console))
77
77
  if (errorsNew.length > 0) console.log(JSON.stringify(errorsNew))
78
78
  expect(errorsNew.length).toBe(0)
79
79
  expect(okNew).toBe(true)
@@ -27,6 +27,7 @@ export abstract class BulkStorageBase implements BulkStorageApi {
27
27
 
28
28
  chain: Chain
29
29
  fs: ChaintracksFsApi
30
+ log: (...args: any[]) => void = () => {}
30
31
 
31
32
  constructor(options: BulkStorageBaseOptions) {
32
33
  this.chain = options.chain
@@ -50,7 +51,7 @@ export abstract class BulkStorageBase implements BulkStorageApi {
50
51
  return new HeightRange(0, await this.getMaxHeight())
51
52
  }
52
53
 
53
- async setStorage(storage: ChaintracksStorageBase): Promise<void> {}
54
+ async setStorage(storage: ChaintracksStorageBase, log: (...args: any[]) => void): Promise<void> {}
54
55
 
55
56
  async exportBulkHeaders(rootFolder: string, jsonFilename: string, maxPerFile: number): Promise<void> {
56
57
  const info: BulkHeaderFilesInfo = {