@bsv/wallet-toolbox-mobile 1.5.21 → 1.6.1

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 (438) hide show
  1. package/out/src/CWIStyleWalletManager.js +1 -1
  2. package/out/src/CWIStyleWalletManager.js.map +1 -1
  3. package/out/src/Setup.d.ts +267 -0
  4. package/out/src/Setup.d.ts.map +1 -0
  5. package/out/src/Setup.js +408 -0
  6. package/out/src/Setup.js.map +1 -0
  7. package/out/src/SetupClient.d.ts +9 -5
  8. package/out/src/SetupClient.d.ts.map +1 -1
  9. package/out/src/SetupClient.js +21 -15
  10. package/out/src/SetupClient.js.map +1 -1
  11. package/out/src/SetupWallet.d.ts +9 -6
  12. package/out/src/SetupWallet.d.ts.map +1 -1
  13. package/out/src/Wallet.d.ts +19 -15
  14. package/out/src/Wallet.d.ts.map +1 -1
  15. package/out/src/Wallet.js +59 -90
  16. package/out/src/Wallet.js.map +1 -1
  17. package/out/src/index.client.d.ts +11 -10
  18. package/out/src/index.client.d.ts.map +1 -1
  19. package/out/src/index.client.js +11 -10
  20. package/out/src/index.client.js.map +1 -1
  21. package/out/src/index.mobile.d.ts +11 -10
  22. package/out/src/index.mobile.d.ts.map +1 -1
  23. package/out/src/index.mobile.js +11 -10
  24. package/out/src/index.mobile.js.map +1 -1
  25. package/out/src/monitor/Monitor.d.ts +14 -12
  26. package/out/src/monitor/Monitor.d.ts.map +1 -1
  27. package/out/src/monitor/Monitor.js +11 -43
  28. package/out/src/monitor/Monitor.js.map +1 -1
  29. package/out/src/monitor/tasks/TaskCheckForProofs.js +3 -2
  30. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  31. package/out/src/monitor/tasks/TaskNewHeader.d.ts +16 -1
  32. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  33. package/out/src/monitor/tasks/TaskNewHeader.js +22 -1
  34. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  35. package/out/src/monitor/tasks/TaskSendWaiting.d.ts +1 -1
  36. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  37. package/out/src/monitor/tasks/TaskSendWaiting.js +5 -5
  38. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  39. package/out/src/sdk/WalletServices.interfaces.d.ts +1 -1
  40. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  41. package/out/src/sdk/validationHelpers.d.ts +4 -5
  42. package/out/src/sdk/validationHelpers.d.ts.map +1 -1
  43. package/out/src/sdk/validationHelpers.js +47 -47
  44. package/out/src/sdk/validationHelpers.js.map +1 -1
  45. package/out/src/services/Services.d.ts +25 -24
  46. package/out/src/services/Services.d.ts.map +1 -1
  47. package/out/src/services/Services.js +38 -35
  48. package/out/src/services/Services.js.map +1 -1
  49. package/out/src/services/chaintracker/BHServiceClient.d.ts +11 -6
  50. package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
  51. package/out/src/services/chaintracker/BHServiceClient.js +14 -3
  52. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  53. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +2 -2
  54. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  55. package/out/src/services/chaintracker/ChaintracksChainTracker.js +6 -4
  56. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  57. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +2 -45
  58. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
  59. package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
  60. package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts +75 -0
  61. package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts.map +1 -0
  62. package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.js +3 -0
  63. package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.js.map +1 -0
  64. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts +81 -0
  65. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -0
  66. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.js +3 -0
  67. package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.js.map +1 -0
  68. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +54 -0
  69. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -0
  70. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.js +3 -0
  71. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.js.map +1 -0
  72. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +163 -0
  73. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -0
  74. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.js +3 -0
  75. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.js.map +1 -0
  76. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +8 -0
  77. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -0
  78. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.js +3 -0
  79. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.js.map +1 -0
  80. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFsApi.d.ts +55 -0
  81. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFsApi.d.ts.map +1 -0
  82. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFsApi.js +3 -0
  83. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFsApi.js.map +1 -0
  84. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +317 -0
  85. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -0
  86. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.js +3 -0
  87. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.js.map +1 -0
  88. package/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts +19 -0
  89. package/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts.map +1 -0
  90. package/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.js +3 -0
  91. package/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.js.map +1 -0
  92. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +100 -0
  93. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -0
  94. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +515 -0
  95. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -0
  96. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +30 -0
  97. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -0
  98. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +149 -0
  99. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -0
  100. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +11 -9
  101. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  102. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +26 -15
  103. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  104. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts +60 -0
  105. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -0
  106. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +119 -0
  107. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -0
  108. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts +76 -0
  109. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -0
  110. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +115 -0
  111. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -0
  112. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts +13 -0
  113. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -0
  114. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js +20 -0
  115. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -0
  116. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +62 -0
  117. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -0
  118. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +60 -0
  119. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -0
  120. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +23 -0
  121. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -0
  122. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +57 -0
  123. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -0
  124. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts +61 -0
  125. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -0
  126. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +40 -0
  127. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -0
  128. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +51 -0
  129. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -0
  130. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +68 -0
  131. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -0
  132. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +16 -0
  133. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -0
  134. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +53 -0
  135. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -0
  136. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +171 -0
  137. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -0
  138. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +502 -0
  139. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -0
  140. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +88 -0
  141. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -0
  142. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +119 -0
  143. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -0
  144. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts +22 -0
  145. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -0
  146. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +67 -0
  147. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -0
  148. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +68 -0
  149. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -0
  150. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +253 -0
  151. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -0
  152. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +41 -0
  153. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -0
  154. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +325 -0
  155. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -0
  156. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +4 -0
  157. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -0
  158. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +24 -0
  159. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -0
  160. package/out/src/services/chaintracker/chaintracks/index.client.d.ts +31 -0
  161. package/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +1 -0
  162. package/out/src/services/chaintracker/chaintracks/index.client.js +69 -0
  163. package/out/src/services/chaintracker/chaintracks/index.client.js.map +1 -0
  164. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +142 -0
  165. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -0
  166. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +814 -0
  167. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -0
  168. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts +78 -0
  169. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -0
  170. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +261 -0
  171. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -0
  172. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +129 -0
  173. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -0
  174. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +145 -0
  175. package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -0
  176. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +10 -0
  177. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -0
  178. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +47 -0
  179. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -0
  180. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts +72 -0
  181. package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -0
  182. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +119 -0
  183. package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -0
  184. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +14 -0
  185. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -0
  186. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +88 -0
  187. package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -0
  188. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +41 -22
  189. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  190. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +125 -72
  191. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  192. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts +5 -0
  193. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -0
  194. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +385 -0
  195. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -0
  196. package/out/src/services/chaintracker/index.client.d.ts +4 -0
  197. package/out/src/services/chaintracker/index.client.d.ts.map +1 -0
  198. package/out/src/services/chaintracker/{index.js → index.client.js} +2 -2
  199. package/out/src/services/chaintracker/index.client.js.map +1 -0
  200. package/out/src/services/createDefaultWalletServicesOptions.d.ts +5 -4
  201. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  202. package/out/src/services/createDefaultWalletServicesOptions.js +4 -4
  203. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  204. package/out/src/services/providers/ARC.d.ts +3 -3
  205. package/out/src/services/providers/ARC.d.ts.map +1 -1
  206. package/out/src/services/providers/ARC.js +4 -3
  207. package/out/src/services/providers/ARC.js.map +1 -1
  208. package/out/src/services/providers/Bitails.d.ts +7 -6
  209. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  210. package/out/src/services/providers/Bitails.js +7 -5
  211. package/out/src/services/providers/Bitails.js.map +1 -1
  212. package/out/src/services/providers/WhatsOnChain.d.ts +76 -17
  213. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  214. package/out/src/services/providers/WhatsOnChain.js +241 -143
  215. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  216. package/out/src/services/providers/{echangeRates.d.ts → exchangeRates.d.ts} +4 -4
  217. package/out/src/services/providers/exchangeRates.d.ts.map +1 -0
  218. package/out/src/services/providers/{echangeRates.js → exchangeRates.js} +9 -9
  219. package/out/src/services/providers/exchangeRates.js.map +1 -0
  220. package/out/src/signer/WalletSigner.d.ts +3 -3
  221. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  222. package/out/src/signer/WalletSigner.js.map +1 -1
  223. package/out/src/signer/methods/acquireDirectCertificate.d.ts +4 -2
  224. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  225. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  226. package/out/src/signer/methods/buildSignableTransaction.d.ts +9 -3
  227. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  228. package/out/src/signer/methods/buildSignableTransaction.js +27 -11
  229. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  230. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  231. package/out/src/signer/methods/completeSignedTransaction.js +15 -13
  232. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  233. package/out/src/signer/methods/createAction.d.ts +5 -9
  234. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  235. package/out/src/signer/methods/createAction.js +6 -22
  236. package/out/src/signer/methods/createAction.js.map +1 -1
  237. package/out/src/signer/methods/internalizeAction.d.ts +3 -2
  238. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  239. package/out/src/signer/methods/internalizeAction.js +9 -8
  240. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  241. package/out/src/signer/methods/proveCertificate.d.ts +4 -2
  242. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  243. package/out/src/signer/methods/proveCertificate.js +2 -2
  244. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  245. package/out/src/signer/methods/signAction.d.ts +3 -3
  246. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  247. package/out/src/signer/methods/signAction.js +5 -5
  248. package/out/src/signer/methods/signAction.js.map +1 -1
  249. package/out/src/storage/StorageIdb.d.ts +106 -104
  250. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  251. package/out/src/storage/StorageIdb.js +27 -60
  252. package/out/src/storage/StorageIdb.js.map +1 -1
  253. package/out/src/storage/StorageKnex.d.ts +179 -0
  254. package/out/src/storage/StorageKnex.d.ts.map +1 -0
  255. package/out/src/storage/StorageKnex.js +1215 -0
  256. package/out/src/storage/StorageKnex.js.map +1 -0
  257. package/out/src/storage/StorageProvider.d.ts +56 -47
  258. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  259. package/out/src/storage/StorageProvider.js +44 -40
  260. package/out/src/storage/StorageProvider.js.map +1 -1
  261. package/out/src/storage/StorageReaderWriter.d.ts +78 -64
  262. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  263. package/out/src/storage/StorageReaderWriter.js +2 -2
  264. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  265. package/out/src/storage/methods/ListActionsSpecOp.d.ts +6 -4
  266. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  267. package/out/src/storage/methods/ListActionsSpecOp.js +3 -3
  268. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  269. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +6 -5
  270. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  271. package/out/src/storage/methods/ListOutputsSpecOp.js +11 -9
  272. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  273. package/out/src/storage/methods/createAction.d.ts +6 -4
  274. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  275. package/out/src/storage/methods/createAction.js +67 -43
  276. package/out/src/storage/methods/createAction.js.map +1 -1
  277. package/out/src/storage/methods/generateChange.d.ts +2 -2
  278. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  279. package/out/src/storage/methods/generateChange.js +27 -24
  280. package/out/src/storage/methods/generateChange.js.map +1 -1
  281. package/out/src/storage/methods/getBeefForTransaction.d.ts +3 -2
  282. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  283. package/out/src/storage/methods/getBeefForTransaction.js +10 -8
  284. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  285. package/out/src/storage/methods/getSyncChunk.d.ts +2 -2
  286. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  287. package/out/src/storage/methods/getSyncChunk.js +6 -5
  288. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  289. package/out/src/storage/methods/internalizeAction.d.ts +3 -2
  290. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  291. package/out/src/storage/methods/internalizeAction.js +21 -19
  292. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  293. package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
  294. package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
  295. package/out/src/storage/methods/listActionsIdb.js +5 -5
  296. package/out/src/storage/methods/listActionsIdb.js.map +1 -1
  297. package/out/src/storage/methods/listActionsKnex.d.ts +6 -0
  298. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -0
  299. package/out/src/storage/methods/listActionsKnex.js +198 -0
  300. package/out/src/storage/methods/listActionsKnex.js.map +1 -0
  301. package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
  302. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  303. package/out/src/storage/methods/listOutputsIdb.js +6 -5
  304. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  305. package/out/src/storage/methods/listOutputsKnex.d.ts +6 -0
  306. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -0
  307. package/out/src/storage/methods/listOutputsKnex.js +241 -0
  308. package/out/src/storage/methods/listOutputsKnex.js.map +1 -0
  309. package/out/src/storage/methods/processAction.d.ts +6 -3
  310. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  311. package/out/src/storage/methods/processAction.js +45 -40
  312. package/out/src/storage/methods/processAction.js.map +1 -1
  313. package/out/src/storage/methods/purgeData.d.ts +4 -0
  314. package/out/src/storage/methods/purgeData.d.ts.map +1 -0
  315. package/out/src/storage/methods/purgeData.js +207 -0
  316. package/out/src/storage/methods/purgeData.js.map +1 -0
  317. package/out/src/storage/methods/purgeDataIdb.d.ts +2 -2
  318. package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
  319. package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
  320. package/out/src/storage/methods/reviewStatus.d.ts +20 -0
  321. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -0
  322. package/out/src/storage/methods/reviewStatus.js +84 -0
  323. package/out/src/storage/methods/reviewStatus.js.map +1 -0
  324. package/out/src/storage/methods/utils.js +2 -2
  325. package/out/src/storage/methods/utils.js.map +1 -1
  326. package/out/src/storage/remoting/StorageClient.d.ts +35 -25
  327. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  328. package/out/src/storage/remoting/StorageClient.js +3 -3
  329. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  330. package/out/src/storage/remoting/StorageMobile.d.ts +35 -25
  331. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  332. package/out/src/storage/remoting/StorageMobile.js +3 -3
  333. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  334. package/out/src/storage/schema/KnexMigrations.d.ts +39 -0
  335. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -0
  336. package/out/src/storage/schema/KnexMigrations.js +410 -0
  337. package/out/src/storage/schema/KnexMigrations.js.map +1 -0
  338. package/out/src/storage/schema/entities/EntityBase.d.ts +4 -3
  339. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  340. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  341. package/out/src/storage/schema/entities/EntityCertificate.d.ts +6 -5
  342. package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
  343. package/out/src/storage/schema/entities/EntityCertificate.js +5 -5
  344. package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
  345. package/out/src/storage/schema/entities/EntityCertificateField.d.ts +6 -5
  346. package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
  347. package/out/src/storage/schema/entities/EntityCertificateField.js +6 -5
  348. package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
  349. package/out/src/storage/schema/entities/EntityCommission.d.ts +6 -5
  350. package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
  351. package/out/src/storage/schema/entities/EntityCommission.js +6 -6
  352. package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
  353. package/out/src/storage/schema/entities/EntityOutput.d.ts +8 -7
  354. package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
  355. package/out/src/storage/schema/entities/EntityOutput.js +6 -6
  356. package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
  357. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts +6 -5
  358. package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
  359. package/out/src/storage/schema/entities/EntityOutputBasket.js +6 -6
  360. package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
  361. package/out/src/storage/schema/entities/EntityOutputTag.d.ts +6 -5
  362. package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
  363. package/out/src/storage/schema/entities/EntityOutputTag.js +5 -5
  364. package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
  365. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts +6 -5
  366. package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
  367. package/out/src/storage/schema/entities/EntityOutputTagMap.js +8 -7
  368. package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
  369. package/out/src/storage/schema/entities/EntityProvenTx.d.ts +10 -7
  370. package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
  371. package/out/src/storage/schema/entities/EntityProvenTx.js +14 -12
  372. package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
  373. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +22 -18
  374. package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
  375. package/out/src/storage/schema/entities/EntityProvenTxReq.js +17 -15
  376. package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
  377. package/out/src/storage/schema/entities/EntitySyncState.d.ts +13 -11
  378. package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
  379. package/out/src/storage/schema/entities/EntitySyncState.js +39 -24
  380. package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
  381. package/out/src/storage/schema/entities/EntityTransaction.d.ts +13 -9
  382. package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
  383. package/out/src/storage/schema/entities/EntityTransaction.js +13 -13
  384. package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
  385. package/out/src/storage/schema/entities/EntityTxLabel.d.ts +6 -5
  386. package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
  387. package/out/src/storage/schema/entities/EntityTxLabel.js +5 -5
  388. package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
  389. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts +6 -5
  390. package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
  391. package/out/src/storage/schema/entities/EntityTxLabelMap.js +8 -7
  392. package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
  393. package/out/src/storage/schema/entities/EntityUser.d.ts +6 -5
  394. package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
  395. package/out/src/storage/schema/entities/EntityUser.js +8 -7
  396. package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
  397. package/out/src/storage/schema/entities/MergeEntity.d.ts +6 -5
  398. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  399. package/out/src/storage/schema/entities/MergeEntity.js +6 -5
  400. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  401. package/out/src/utility/ReaderUint8Array.d.ts +28 -0
  402. package/out/src/utility/ReaderUint8Array.d.ts.map +1 -0
  403. package/out/src/utility/ReaderUint8Array.js +166 -0
  404. package/out/src/utility/ReaderUint8Array.js.map +1 -0
  405. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  406. package/out/src/utility/ScriptTemplateBRC29.js +4 -4
  407. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  408. package/out/src/utility/utilityHelpers.d.ts +11 -4
  409. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  410. package/out/src/utility/utilityHelpers.js +30 -9
  411. package/out/src/utility/utilityHelpers.js.map +1 -1
  412. package/out/src/utility/utilityHelpers.noBuffer.d.ts +22 -5
  413. package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
  414. package/out/src/utility/utilityHelpers.noBuffer.js +50 -9
  415. package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
  416. package/out/test/utils/TestUtilsWalletStorage.d.ts +522 -0
  417. package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -0
  418. package/out/test/utils/TestUtilsWalletStorage.js +1956 -0
  419. package/out/test/utils/TestUtilsWalletStorage.js.map +1 -0
  420. package/out/tsconfig.mobile.tsbuildinfo +1 -1
  421. package/package.json +2 -2
  422. package/out/src/services/chaintracker/chaintracks/index.d.ts +0 -3
  423. package/out/src/services/chaintracker/chaintracks/index.d.ts.map +0 -1
  424. package/out/src/services/chaintracker/chaintracks/index.js +0 -19
  425. package/out/src/services/chaintracker/chaintracks/index.js.map +0 -1
  426. package/out/src/services/chaintracker/index.d.ts +0 -4
  427. package/out/src/services/chaintracker/index.d.ts.map +0 -1
  428. package/out/src/services/chaintracker/index.js.map +0 -1
  429. package/out/src/services/index.d.ts +0 -2
  430. package/out/src/services/index.d.ts.map +0 -1
  431. package/out/src/services/index.js +0 -18
  432. package/out/src/services/index.js.map +0 -1
  433. package/out/src/services/providers/echangeRates.d.ts.map +0 -1
  434. package/out/src/services/providers/echangeRates.js.map +0 -1
  435. package/out/src/utility/utilityHelpers.buffer.d.ts +0 -18
  436. package/out/src/utility/utilityHelpers.buffer.d.ts.map +0 -1
  437. package/out/src/utility/utilityHelpers.buffer.js +0 -45
  438. package/out/src/utility/utilityHelpers.buffer.js.map +0 -1
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BulkIngestorCDN = void 0;
4
+ const BulkIngestorBase_1 = require("./BulkIngestorBase");
5
+ const TestUtilsWalletStorage_1 = require("../../../../../test/utils/TestUtilsWalletStorage");
6
+ const sdk_1 = require("../../../../sdk");
7
+ const BulkFileDataManager_1 = require("../util/BulkFileDataManager");
8
+ class BulkIngestorCDN extends BulkIngestorBase_1.BulkIngestorBase {
9
+ /**
10
+ *
11
+ * @param chain
12
+ * @param localCachePath defaults to './data/bulk_cdn_headers/'
13
+ * @returns
14
+ */
15
+ static createBulkIngestorCDNOptions(chain, cdnUrl, fetch, maxPerFile) {
16
+ const options = {
17
+ ...BulkIngestorBase_1.BulkIngestorBase.createBulkIngestorBaseOptions(chain),
18
+ fetch,
19
+ jsonResource: `${chain}NetBlockHeaders.json`,
20
+ cdnUrl,
21
+ maxPerFile
22
+ };
23
+ return options;
24
+ }
25
+ constructor(options) {
26
+ super(options);
27
+ if (!options.jsonResource)
28
+ throw new Error('The jsonResource options property is required.');
29
+ if (!options.cdnUrl)
30
+ throw new Error('The cdnUrl options property is required.');
31
+ this.fetch = options.fetch;
32
+ this.jsonResource = options.jsonResource;
33
+ this.cdnUrl = options.cdnUrl;
34
+ this.maxPerFile = options.maxPerFile;
35
+ }
36
+ async getPresentHeight() {
37
+ return undefined;
38
+ }
39
+ getJsonHttpHeaders() {
40
+ const headers = {
41
+ Accept: 'application/json'
42
+ };
43
+ return headers;
44
+ }
45
+ /**
46
+ * A BulkFile CDN serves a JSON BulkHeaderFilesInfo resource which lists all the available binary bulk header files available and associated metadata.
47
+ *
48
+ * The term "CDN file" is used for a local bulk file that has a sourceUrl. (Not undefined)
49
+ * The term "incremental file" is used for the local bulk file that holds all the non-CDN bulk headers and must chain to the live headers if there are any.
50
+ *
51
+ * Bulk ingesting from a CDN happens in one of three contexts:
52
+ *
53
+ * 1. Cold Start: No local bulk or live headers.
54
+ * 2. Incremental: Available CDN files extend into an existing incremental file but not into the live headers.
55
+ * 3. Replace: Available CDN files extend into live headers.
56
+ *
57
+ * Context Cold Start:
58
+ * - The CDN files are selected in height order, starting at zero, always choosing the largest count less than the local maximum (maxPerFile).
59
+ *
60
+ * Context Incremental:
61
+ * - Last existing CDN file is updated if CDN now has a higher count.
62
+ * - Additional CDN files are added as in Cold Start.
63
+ * - The existing incremental file is truncated or deleted.
64
+ *
65
+ * Context Replace:
66
+ * - Existing live headers are truncated or deleted.
67
+ * - Proceed as context Incremental.
68
+ *
69
+ * @param before bulk and live range of headers before ingesting any new headers.
70
+ * @param fetchRange total range of header heights needed including live headers
71
+ * @param bulkRange range of missing bulk header heights required.
72
+ * @param priorLiveHeaders
73
+ * @returns
74
+ */
75
+ async fetchHeaders(before, fetchRange, bulkRange, priorLiveHeaders) {
76
+ const storage = this.storage();
77
+ const toUrl = (file) => this.fetch.pathJoin(this.cdnUrl, file);
78
+ const url = toUrl(this.jsonResource);
79
+ this.availableBulkFiles = await this.fetch.fetchJson(url);
80
+ if (!this.availableBulkFiles) {
81
+ throw new sdk_1.WERR_INVALID_PARAMETER(`${this.jsonResource}`, `a valid BulkHeaderFilesInfo JSON resource available from ${url}`);
82
+ }
83
+ this.selectedFiles = (0, BulkFileDataManager_1.selectBulkHeaderFiles)(this.availableBulkFiles.files, this.chain, this.maxPerFile || this.availableBulkFiles.headersPerFile);
84
+ for (const bf of this.selectedFiles) {
85
+ if (!bf.fileHash) {
86
+ throw new sdk_1.WERR_INVALID_PARAMETER(`fileHash`, `valid for alll files in ${this.jsonResource} from ${url}`);
87
+ }
88
+ if (!bf.chain || bf.chain !== this.chain) {
89
+ throw new sdk_1.WERR_INVALID_PARAMETER(`chain`, `"${this.chain}" for all files in ${this.jsonResource} from ${url}`);
90
+ }
91
+ if (!bf.sourceUrl || bf.sourceUrl !== this.cdnUrl)
92
+ bf.sourceUrl = this.cdnUrl;
93
+ }
94
+ let log = 'BulkIngestorCDN fetchHeaders log:\n';
95
+ log += ` url: ${url}\n`;
96
+ this.currentRange = await storage.bulkManager.getHeightRange();
97
+ log += ` bulk range before: ${this.currentRange}\n`;
98
+ const r = await storage.bulkManager.merge(this.selectedFiles);
99
+ this.currentRange = await storage.bulkManager.getHeightRange();
100
+ log += ` bulk range after: ${this.currentRange}\n`;
101
+ for (const u of r.unchanged) {
102
+ log += ` unchanged: ${u.fileName}, fileId=${u.fileId}\n`;
103
+ }
104
+ for (const i of r.inserted) {
105
+ log += ` inserted: ${i.fileName}, fileId=${i.fileId}\n`;
106
+ }
107
+ for (const u of r.updated) {
108
+ log += ` updated: ${u.fileName}, fileId=${u.fileId}\n`;
109
+ }
110
+ (0, TestUtilsWalletStorage_1.logger)(log);
111
+ return priorLiveHeaders;
112
+ }
113
+ }
114
+ exports.BulkIngestorCDN = BulkIngestorCDN;
115
+ //# sourceMappingURL=BulkIngestorCDN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkIngestorCDN.js","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Chain } from '../../../../sdk/types';
2
+ import { ChaintracksFetchApi } from '../Api/ChaintracksFetchApi';
3
+ import { BulkIngestorCDN, BulkIngestorCDNOptions } from './BulkIngestorCDN';
4
+ export declare class BulkIngestorCDNBabbage extends BulkIngestorCDN {
5
+ /**
6
+ *
7
+ * @param chain
8
+ * @param rootFolder defaults to './data/bulk_cdn_babbage_headers/'
9
+ * @returns
10
+ */
11
+ static createBulkIngestorCDNBabbageOptions(chain: Chain, fetch: ChaintracksFetchApi): BulkIngestorCDNOptions;
12
+ }
13
+ //# sourceMappingURL=BulkIngestorCDNBabbage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkIngestorCDNBabbage.d.ts","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE3E,qBAAa,sBAAuB,SAAQ,eAAe;IACzD;;;;;OAKG;IACH,MAAM,CAAC,mCAAmC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,GAAG,sBAAsB;CAM7G"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BulkIngestorCDNBabbage = void 0;
4
+ const BulkIngestorCDN_1 = require("./BulkIngestorCDN");
5
+ class BulkIngestorCDNBabbage extends BulkIngestorCDN_1.BulkIngestorCDN {
6
+ /**
7
+ *
8
+ * @param chain
9
+ * @param rootFolder defaults to './data/bulk_cdn_babbage_headers/'
10
+ * @returns
11
+ */
12
+ static createBulkIngestorCDNBabbageOptions(chain, fetch) {
13
+ const options = {
14
+ ...BulkIngestorCDN_1.BulkIngestorCDN.createBulkIngestorCDNOptions(chain, 'https://cdn.projectbabbage.com/blockheaders/', fetch)
15
+ };
16
+ return options;
17
+ }
18
+ }
19
+ exports.BulkIngestorCDNBabbage = BulkIngestorCDNBabbage;
20
+ //# sourceMappingURL=BulkIngestorCDNBabbage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkIngestorCDNBabbage.js","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.ts"],"names":[],"mappings":";;;AAEA,uDAA2E;AAE3E,MAAa,sBAAuB,SAAQ,iCAAe;IACzD;;;;;OAKG;IACH,MAAM,CAAC,mCAAmC,CAAC,KAAY,EAAE,KAA0B;QACjF,MAAM,OAAO,GAA2B;YACtC,GAAG,iCAAe,CAAC,4BAA4B,CAAC,KAAK,EAAE,8CAA8C,EAAE,KAAK,CAAC;SAC9G,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AAbD,wDAaC"}
@@ -0,0 +1,62 @@
1
+ import { Chain } from '../../../../sdk';
2
+ import { BlockHeader } from '../Api/BlockHeaderApi';
3
+ import { BulkIngestorBaseOptions } from '../Api/BulkIngestorApi';
4
+ import { ChaintracksFetchApi } from '../Api/ChaintracksFetchApi';
5
+ import { BulkIngestorBase } from './BulkIngestorBase';
6
+ import { HeightRange, HeightRanges } from '../util/HeightRange';
7
+ import { StopListenerToken } from './WhatsOnChainIngestorWs';
8
+ import { WhatsOnChainServices, WhatsOnChainServicesOptions } from './WhatsOnChainServices';
9
+ export interface BulkIngestorWhatsOnChainOptions extends BulkIngestorBaseOptions, WhatsOnChainServicesOptions {
10
+ /**
11
+ * Maximum msces of "normal" pause with no new data arriving.
12
+ */
13
+ idleWait: number | undefined;
14
+ /**
15
+ * Which chain is being tracked: main, test, or stn.
16
+ */
17
+ chain: Chain;
18
+ /**
19
+ * WhatsOnChain.com API Key
20
+ * https://docs.taal.com/introduction/get-an-api-key
21
+ * If unknown or empty, maximum request rate is limited.
22
+ * https://developers.whatsonchain.com/#rate-limits
23
+ */
24
+ apiKey?: string;
25
+ /**
26
+ * Request timeout for GETs to https://api.whatsonchain.com/v1/bsv
27
+ */
28
+ timeout: number;
29
+ /**
30
+ * User-Agent header value for requests to https://api.whatsonchain.com/v1/bsv
31
+ */
32
+ userAgent: string;
33
+ /**
34
+ * Enable WhatsOnChain client cache option.
35
+ */
36
+ enableCache: boolean;
37
+ /**
38
+ * How long chainInfo is considered still valid before updating (msecs).
39
+ */
40
+ chainInfoMsecs: number;
41
+ /**
42
+ *
43
+ */
44
+ fetch?: ChaintracksFetchApi;
45
+ }
46
+ export declare class BulkIngestorWhatsOnChainCdn extends BulkIngestorBase {
47
+ /**
48
+ *
49
+ * @param chain
50
+ * @param localCachePath defaults to './data/ingest_whatsonchain_headers'
51
+ * @returns
52
+ */
53
+ static createBulkIngestorWhatsOnChainOptions(chain: Chain): BulkIngestorWhatsOnChainOptions;
54
+ fetch: ChaintracksFetchApi;
55
+ idleWait: number;
56
+ woc: WhatsOnChainServices;
57
+ stopOldListenersToken: StopListenerToken;
58
+ constructor(options: BulkIngestorWhatsOnChainOptions);
59
+ getPresentHeight(): Promise<number | undefined>;
60
+ fetchHeaders(before: HeightRanges, fetchRange: HeightRange, bulkRange: HeightRange, priorLiveHeaders: BlockHeader[]): Promise<BlockHeader[]>;
61
+ }
62
+ //# sourceMappingURL=BulkIngestorWhatsOnChainCdn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkIngestorWhatsOnChainCdn.d.ts","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AAE1F,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB,EAAE,2BAA2B;IAC3G;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAA;CAC5B;AAED,qBAAa,2BAA4B,SAAQ,gBAAgB;IAC/D;;;;;OAKG;IACH,MAAM,CAAC,qCAAqC,CAAC,KAAK,EAAE,KAAK,GAAG,+BAA+B;IAS3F,KAAK,EAAE,mBAAmB,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,oBAAoB,CAAA;IACzB,qBAAqB,EAAE,iBAAiB,CAAsB;gBAElD,OAAO,EAAE,+BAA+B;IAOrC,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAMxD,YAAY,CAChB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,WAAW,EACtB,gBAAgB,EAAE,WAAW,EAAE,GAC9B,OAAO,CAAC,WAAW,EAAE,CAAC;CAwB1B"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BulkIngestorWhatsOnChainCdn = void 0;
4
+ const utilityHelpers_1 = require("../../../../utility/utilityHelpers");
5
+ const BulkIngestorBase_1 = require("./BulkIngestorBase");
6
+ const blockHeaderUtilities_1 = require("../util/blockHeaderUtilities");
7
+ const ChaintracksFetch_1 = require("../util/ChaintracksFetch");
8
+ const WhatsOnChainServices_1 = require("./WhatsOnChainServices");
9
+ class BulkIngestorWhatsOnChainCdn extends BulkIngestorBase_1.BulkIngestorBase {
10
+ /**
11
+ *
12
+ * @param chain
13
+ * @param localCachePath defaults to './data/ingest_whatsonchain_headers'
14
+ * @returns
15
+ */
16
+ static createBulkIngestorWhatsOnChainOptions(chain) {
17
+ const options = {
18
+ ...WhatsOnChainServices_1.WhatsOnChainServices.createWhatsOnChainServicesOptions(chain),
19
+ ...BulkIngestorBase_1.BulkIngestorBase.createBulkIngestorBaseOptions(chain),
20
+ idleWait: 5000
21
+ };
22
+ return options;
23
+ }
24
+ constructor(options) {
25
+ super(options);
26
+ this.stopOldListenersToken = { stop: undefined };
27
+ this.idleWait = options.idleWait || 5000;
28
+ this.woc = new WhatsOnChainServices_1.WhatsOnChainServices(options);
29
+ this.fetch = options.fetch || new ChaintracksFetch_1.ChaintracksFetch();
30
+ }
31
+ async getPresentHeight() {
32
+ const presentHeight = await this.woc.getChainTipHeight();
33
+ (0, utilityHelpers_1.logger)(`presentHeight=${presentHeight}`);
34
+ return presentHeight;
35
+ }
36
+ async fetchHeaders(before, fetchRange, bulkRange, priorLiveHeaders) {
37
+ const oldHeaders = [];
38
+ try {
39
+ const ranges = await this.woc.getHeaderByteFileLinks(fetchRange, this.fetch);
40
+ const headers = [];
41
+ for (const range of ranges) {
42
+ for (let height = range.range.minHeight; height <= range.range.maxHeight; height++) {
43
+ if (fetchRange.contains(height)) {
44
+ if (!range.data)
45
+ range.data = await this.fetch.download(this.fetch.pathJoin(range.sourceUrl, range.fileName));
46
+ const h = (0, blockHeaderUtilities_1.deserializeBlockHeader)(range.data, (height - range.range.minHeight) * 80, height);
47
+ oldHeaders.push(h);
48
+ }
49
+ }
50
+ }
51
+ }
52
+ catch (e) {
53
+ (0, utilityHelpers_1.logger)(`Errors during WhatsOnChain ingestion:\n${e}`);
54
+ }
55
+ const liveHeaders = await this.storage().addBulkHeaders(oldHeaders, bulkRange, priorLiveHeaders);
56
+ return liveHeaders;
57
+ }
58
+ }
59
+ exports.BulkIngestorWhatsOnChainCdn = BulkIngestorWhatsOnChainCdn;
60
+ //# sourceMappingURL=BulkIngestorWhatsOnChainCdn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkIngestorWhatsOnChainCdn.js","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.ts"],"names":[],"mappings":";;;AACA,uEAA2D;AAI3D,yDAAqD;AACrD,uEAAqE;AACrE,+DAA2D;AAG3D,iEAA0F;AAwC1F,MAAa,2BAA4B,SAAQ,mCAAgB;IAC/D;;;;;OAKG;IACH,MAAM,CAAC,qCAAqC,CAAC,KAAY;QACvD,MAAM,OAAO,GAAoC;YAC/C,GAAG,2CAAoB,CAAC,iCAAiC,CAAC,KAAK,CAAC;YAChE,GAAG,mCAAgB,CAAC,6BAA6B,CAAC,KAAK,CAAC;YACxD,QAAQ,EAAE,IAAI;SACf,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAOD,YAAY,OAAwC;QAClD,KAAK,CAAC,OAAO,CAAC,CAAA;QAHhB,0BAAqB,GAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;QAI5D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAA;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,2CAAoB,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,mCAAgB,EAAE,CAAA;IACtD,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;QACxD,IAAA,uBAAM,EAAC,iBAAiB,aAAa,EAAE,CAAC,CAAA;QACxC,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAAoB,EACpB,UAAuB,EACvB,SAAsB,EACtB,gBAA+B;QAE/B,MAAM,UAAU,GAAkB,EAAE,CAAA;QAEpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YAC5E,MAAM,OAAO,GAAkB,EAAE,CAAA;YACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,KAAK,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;oBACnF,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAChC,IAAI,CAAC,KAAK,CAAC,IAAI;4BACb,KAAK,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;wBAC9F,MAAM,CAAC,GAAG,IAAA,6CAAsB,EAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;wBAC3F,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACpB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAA,uBAAM,EAAC,0CAA0C,CAAC,EAAE,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;QAEhG,OAAO,WAAW,CAAA;IACpB,CAAC;CACF;AA/DD,kEA+DC"}
@@ -0,0 +1,23 @@
1
+ import { Chain } from '../../../../sdk';
2
+ import { BlockHeader } from '../Api/BlockHeaderApi';
3
+ import { BulkIngestorBase } from './BulkIngestorBase';
4
+ import { HeightRange, HeightRanges } from '../util/HeightRange';
5
+ import { BulkIngestorWhatsOnChainOptions } from './BulkIngestorWhatsOnChainCdn';
6
+ import { StopListenerToken } from './WhatsOnChainIngestorWs';
7
+ import { WhatsOnChainServices } from './WhatsOnChainServices';
8
+ export declare class BulkIngestorWhatsOnChainWs extends BulkIngestorBase {
9
+ /**
10
+ *
11
+ * @param chain
12
+ * @param localCachePath defaults to './data/ingest_whatsonchain_headers'
13
+ * @returns
14
+ */
15
+ static createBulkIngestorWhatsOnChainOptions(chain: Chain): BulkIngestorWhatsOnChainOptions;
16
+ idleWait: number;
17
+ woc: WhatsOnChainServices;
18
+ stopOldListenersToken: StopListenerToken;
19
+ constructor(options: BulkIngestorWhatsOnChainOptions);
20
+ getPresentHeight(): Promise<number | undefined>;
21
+ fetchHeaders(before: HeightRanges, fetchRange: HeightRange, bulkRange: HeightRange, priorLiveHeaders: BlockHeader[]): Promise<BlockHeader[]>;
22
+ }
23
+ //# sourceMappingURL=BulkIngestorWhatsOnChainWs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkIngestorWhatsOnChainWs.d.ts","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAA0B,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAgC,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE3F,qBAAa,0BAA2B,SAAQ,gBAAgB;IAC9D;;;;;OAKG;IACH,MAAM,CAAC,qCAAqC,CAAC,KAAK,EAAE,KAAK,GAAG,+BAA+B;IAS3F,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,oBAAoB,CAAA;IACzB,qBAAqB,EAAE,iBAAiB,CAAsB;gBAElD,OAAO,EAAE,+BAA+B;IAMrC,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAMxD,YAAY,CAChB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,WAAW,EACtB,gBAAgB,EAAE,WAAW,EAAE,GAC9B,OAAO,CAAC,WAAW,EAAE,CAAC;CAiC1B"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BulkIngestorWhatsOnChainWs = void 0;
4
+ const utilityHelpers_1 = require("../../../../utility/utilityHelpers");
5
+ const BulkIngestorBase_1 = require("./BulkIngestorBase");
6
+ const WhatsOnChainIngestorWs_1 = require("./WhatsOnChainIngestorWs");
7
+ const WhatsOnChainServices_1 = require("./WhatsOnChainServices");
8
+ class BulkIngestorWhatsOnChainWs extends BulkIngestorBase_1.BulkIngestorBase {
9
+ /**
10
+ *
11
+ * @param chain
12
+ * @param localCachePath defaults to './data/ingest_whatsonchain_headers'
13
+ * @returns
14
+ */
15
+ static createBulkIngestorWhatsOnChainOptions(chain) {
16
+ const options = {
17
+ ...WhatsOnChainServices_1.WhatsOnChainServices.createWhatsOnChainServicesOptions(chain),
18
+ ...BulkIngestorBase_1.BulkIngestorBase.createBulkIngestorBaseOptions(chain),
19
+ idleWait: 5000
20
+ };
21
+ return options;
22
+ }
23
+ constructor(options) {
24
+ super(options);
25
+ this.stopOldListenersToken = { stop: undefined };
26
+ this.idleWait = options.idleWait || 5000;
27
+ this.woc = new WhatsOnChainServices_1.WhatsOnChainServices(options);
28
+ }
29
+ async getPresentHeight() {
30
+ const presentHeight = await this.woc.getChainTipHeight();
31
+ (0, utilityHelpers_1.logger)(`presentHeight=${presentHeight}`);
32
+ return presentHeight;
33
+ }
34
+ async fetchHeaders(before, fetchRange, bulkRange, priorLiveHeaders) {
35
+ const oldHeaders = [];
36
+ const errors = [];
37
+ const enqueue = header => {
38
+ oldHeaders.push(header);
39
+ };
40
+ const error = (code, message) => {
41
+ errors.push({ code, message, count: errors.length });
42
+ return false;
43
+ };
44
+ const ok = await (0, WhatsOnChainIngestorWs_1.WocHeadersBulkListener)(fetchRange.minHeight, fetchRange.maxHeight, enqueue, error, this.stopOldListenersToken, this.chain, this.idleWait);
45
+ let liveHeaders = [];
46
+ if (ok) {
47
+ liveHeaders = await this.storage().addBulkHeaders(oldHeaders, bulkRange, priorLiveHeaders);
48
+ }
49
+ if (errors.length > 0) {
50
+ const errorMessages = errors.map(e => `(${e.code}) ${e.message} (${e.count})`).join('\n');
51
+ (0, utilityHelpers_1.logger)(`Errors during WhatsOnChain ingestion:\n${errorMessages}`);
52
+ }
53
+ return liveHeaders;
54
+ }
55
+ }
56
+ exports.BulkIngestorWhatsOnChainWs = BulkIngestorWhatsOnChainWs;
57
+ //# sourceMappingURL=BulkIngestorWhatsOnChainWs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkIngestorWhatsOnChainWs.js","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.ts"],"names":[],"mappings":";;;AACA,uEAA2D;AAE3D,yDAAqD;AAGrD,qEAAoF;AACpF,iEAA2F;AAE3F,MAAa,0BAA2B,SAAQ,mCAAgB;IAC9D;;;;;OAKG;IACH,MAAM,CAAC,qCAAqC,CAAC,KAAY;QACvD,MAAM,OAAO,GAAoC;YAC/C,GAAG,2CAAoB,CAAC,iCAAiC,CAAC,KAAK,CAAC;YAChE,GAAG,mCAAgB,CAAC,6BAA6B,CAAC,KAAK,CAAC;YACxD,QAAQ,EAAE,IAAI;SACf,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAMD,YAAY,OAAwC;QAClD,KAAK,CAAC,OAAO,CAAC,CAAA;QAHhB,0BAAqB,GAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;QAI5D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAA;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,2CAAoB,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;QACxD,IAAA,uBAAM,EAAC,iBAAiB,aAAa,EAAE,CAAC,CAAA;QACxC,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAAoB,EACpB,UAAuB,EACvB,SAAsB,EACtB,gBAA+B;QAE/B,MAAM,UAAU,GAAkB,EAAE,CAAA;QACpC,MAAM,MAAM,GAAuD,EAAE,CAAA;QACrE,MAAM,OAAO,GAAmB,MAAM,CAAC,EAAE;YACvC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACzB,CAAC,CAAA;QACD,MAAM,KAAK,GAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YACpD,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QAED,MAAM,EAAE,GAAG,MAAM,IAAA,+CAAsB,EACrC,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,SAAS,EACpB,OAAO,EACP,KAAK,EACL,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,CACd,CAAA;QAED,IAAI,WAAW,GAAkB,EAAE,CAAA;QACnC,IAAI,EAAE,EAAE,CAAC;YACP,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;QAC5F,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzF,IAAA,uBAAM,EAAC,0CAA0C,aAAa,EAAE,CAAC,CAAA;QACnE,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;CACF;AAtED,gEAsEC"}
@@ -0,0 +1,61 @@
1
+ import { Chain } from '../../../../sdk/types';
2
+ import { LiveIngestorApi } from '../Api/LiveIngestorApi';
3
+ import { ChaintracksStorageApi } from '../Api/ChaintracksStorageApi';
4
+ import { BlockHeader } from '../Api/BlockHeaderApi';
5
+ export interface LiveIngestorBaseOptions {
6
+ /**
7
+ * The target chain: "main" or "test"
8
+ */
9
+ chain: Chain;
10
+ }
11
+ /**
12
+ *
13
+ */
14
+ export declare abstract class LiveIngestorBase implements LiveIngestorApi {
15
+ static createLiveIngestorBaseOptions(chain: Chain): LiveIngestorBaseOptions;
16
+ chain: Chain;
17
+ constructor(options: LiveIngestorBaseOptions);
18
+ /**
19
+ * Release resources.
20
+ * Override if required.
21
+ */
22
+ shutdown(): Promise<void>;
23
+ private storageEngine?;
24
+ /**
25
+ * Allocate resources.
26
+ * @param storage coordinating storage engine.
27
+ */
28
+ setStorage(storage: ChaintracksStorageApi): Promise<void>;
29
+ /**
30
+ *
31
+ * @returns coordinating storage engine.
32
+ */
33
+ storage(): ChaintracksStorageApi;
34
+ /**
35
+ * Called to retrieve a missing block header,
36
+ * when the previousHash of a new header is unknown.
37
+ *
38
+ * @param hash block hash of missing header
39
+ */
40
+ abstract getHeaderByHash(hash: string): Promise<BlockHeader | undefined>;
41
+ /**
42
+ * Begin retrieving new block headers.
43
+ *
44
+ * New headers are pushed onto the liveHeaders array.
45
+ *
46
+ * Continue waiting for new headers.
47
+ *
48
+ * Return only when either `stopListening` or `shutdown` are called.
49
+ *
50
+ * Be prepared to resume listening after `stopListening` but not
51
+ * after `shutdown`.
52
+ *
53
+ * @param liveHeaders
54
+ */
55
+ abstract startListening(liveHeaders: BlockHeader[]): Promise<void>;
56
+ /**
57
+ * Causes `startListening` to stop listening for new block headers and return.
58
+ */
59
+ abstract stopListening(): void;
60
+ }
61
+ //# sourceMappingURL=LiveIngestorBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveIngestorBase.d.ts","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnD,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,KAAK,EAAE,KAAK,CAAA;CACb;AAED;;GAEG;AACH,8BAAsB,gBAAiB,YAAW,eAAe;IAC/D,MAAM,CAAC,6BAA6B,CAAC,KAAK,EAAE,KAAK;IAOjD,KAAK,EAAE,KAAK,CAAA;gBAEA,OAAO,EAAE,uBAAuB;IAI5C;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/B,OAAO,CAAC,aAAa,CAAC,CAAuB;IAE7C;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;OAGG;IACH,OAAO,IAAI,qBAAqB;IAKhC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAExE;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAElE;;OAEG;IACH,QAAQ,CAAC,aAAa,IAAI,IAAI;CAC/B"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LiveIngestorBase = void 0;
4
+ /**
5
+ *
6
+ */
7
+ class LiveIngestorBase {
8
+ static createLiveIngestorBaseOptions(chain) {
9
+ const options = {
10
+ chain
11
+ };
12
+ return options;
13
+ }
14
+ constructor(options) {
15
+ this.chain = options.chain;
16
+ }
17
+ /**
18
+ * Release resources.
19
+ * Override if required.
20
+ */
21
+ async shutdown() { }
22
+ /**
23
+ * Allocate resources.
24
+ * @param storage coordinating storage engine.
25
+ */
26
+ async setStorage(storage) {
27
+ this.storageEngine = storage;
28
+ }
29
+ /**
30
+ *
31
+ * @returns coordinating storage engine.
32
+ */
33
+ storage() {
34
+ if (!this.storageEngine)
35
+ throw new Error('storageEngine must be set.');
36
+ return this.storageEngine;
37
+ }
38
+ }
39
+ exports.LiveIngestorBase = LiveIngestorBase;
40
+ //# sourceMappingURL=LiveIngestorBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveIngestorBase.js","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.ts"],"names":[],"mappings":";;;AAaA;;GAEG;AACH,MAAsB,gBAAgB;IACpC,MAAM,CAAC,6BAA6B,CAAC,KAAY;QAC/C,MAAM,OAAO,GAA4B;YACvC,KAAK;SACN,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAID,YAAY,OAAgC;QAC1C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC5B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,KAAmB,CAAC;IAIlC;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,OAA8B;QAC7C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;IAC9B,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QACtE,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;CA8BF;AAnED,4CAmEC"}
@@ -0,0 +1,51 @@
1
+ import { BlockHeader, Chain } from '../../../../sdk';
2
+ import { LiveIngestorBase, LiveIngestorBaseOptions } from './LiveIngestorBase';
3
+ import { WhatsOnChainServices, WhatsOnChainServicesOptions } from './WhatsOnChainServices';
4
+ export interface LiveIngestorWhatsOnChainOptions extends LiveIngestorBaseOptions, WhatsOnChainServicesOptions {
5
+ /**
6
+ * Maximum msces of "normal" time with no ping received from connected WoC service.
7
+ */
8
+ idleWait: number | undefined;
9
+ /**
10
+ * Which chain is being tracked: main, test, or stn.
11
+ */
12
+ chain: Chain;
13
+ /**
14
+ * WhatsOnChain.com API Key
15
+ * https://docs.taal.com/introduction/get-an-api-key
16
+ * If unknown or empty, maximum request rate is limited.
17
+ * https://developers.whatsonchain.com/#rate-limits
18
+ */
19
+ apiKey?: string;
20
+ /**
21
+ * Request timeout for GETs to https://api.whatsonchain.com/v1/bsv
22
+ */
23
+ timeout: number;
24
+ /**
25
+ * User-Agent header value for requests to https://api.whatsonchain.com/v1/bsv
26
+ */
27
+ userAgent: string;
28
+ /**
29
+ * Enable WhatsOnChain client cache option.
30
+ */
31
+ enableCache: boolean;
32
+ /**
33
+ * How long chainInfo is considered still valid before updating (msecs).
34
+ */
35
+ chainInfoMsecs: number;
36
+ }
37
+ /**
38
+ * Reports new headers by polling periodically.
39
+ */
40
+ export declare class LiveIngestorWhatsOnChainPoll extends LiveIngestorBase {
41
+ static createLiveIngestorWhatsOnChainOptions(chain: Chain): LiveIngestorWhatsOnChainOptions;
42
+ idleWait: number;
43
+ woc: WhatsOnChainServices;
44
+ done: boolean;
45
+ constructor(options: LiveIngestorWhatsOnChainOptions);
46
+ getHeaderByHash(hash: string): Promise<BlockHeader | undefined>;
47
+ startListening(liveHeaders: BlockHeader[]): Promise<void>;
48
+ stopListening(): void;
49
+ shutdown(): Promise<void>;
50
+ }
51
+ //# sourceMappingURL=LiveIngestorWhatsOnChainPoll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveIngestorWhatsOnChainPoll.d.ts","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC9E,OAAO,EAGL,oBAAoB,EACpB,2BAA2B,EAE5B,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB,EAAE,2BAA2B;IAC3G;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,gBAAgB;IAChE,MAAM,CAAC,qCAAqC,CAAC,KAAK,EAAE,KAAK,GAAG,+BAA+B;IAS3F,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,oBAAoB,CAAA;IACzB,IAAI,EAAE,OAAO,CAAQ;gBAET,OAAO,EAAE,+BAA+B;IAM9C,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAK/D,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC/D,aAAa,IAAI,IAAI;IAIN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGzC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LiveIngestorWhatsOnChainPoll = void 0;
4
+ const utilityHelpers_1 = require("../../../../utility/utilityHelpers");
5
+ const LiveIngestorBase_1 = require("./LiveIngestorBase");
6
+ const WhatsOnChainServices_1 = require("./WhatsOnChainServices");
7
+ /**
8
+ * Reports new headers by polling periodically.
9
+ */
10
+ class LiveIngestorWhatsOnChainPoll extends LiveIngestorBase_1.LiveIngestorBase {
11
+ static createLiveIngestorWhatsOnChainOptions(chain) {
12
+ const options = {
13
+ ...WhatsOnChainServices_1.WhatsOnChainServices.createWhatsOnChainServicesOptions(chain),
14
+ ...LiveIngestorBase_1.LiveIngestorBase.createLiveIngestorBaseOptions(chain),
15
+ idleWait: 100000
16
+ };
17
+ return options;
18
+ }
19
+ constructor(options) {
20
+ super(options);
21
+ this.done = false;
22
+ this.idleWait = options.idleWait || 100000;
23
+ this.woc = new WhatsOnChainServices_1.WhatsOnChainServices(options);
24
+ }
25
+ async getHeaderByHash(hash) {
26
+ const header = await this.woc.getHeaderByHash(hash);
27
+ return header;
28
+ }
29
+ async startListening(liveHeaders) {
30
+ this.done = false;
31
+ let lastHeaders = [];
32
+ for (; !this.done;) {
33
+ const headers = await this.woc.getHeaders();
34
+ const newHeaders = headers.filter(h => !lastHeaders.some(lh => lh.hash === h.hash));
35
+ for (const h of newHeaders) {
36
+ const bits = typeof h.bits === 'string' ? parseInt(h.bits, 16) : h.bits;
37
+ if (!h.previousblockhash) {
38
+ h.previousblockhash = '0000000000000000000000000000000000000000000000000000000000000000'; // genesis
39
+ }
40
+ const bh = {
41
+ height: h.height,
42
+ hash: h.hash,
43
+ version: h.version,
44
+ previousHash: h.previousblockhash,
45
+ merkleRoot: h.merkleroot,
46
+ time: h.time,
47
+ bits,
48
+ nonce: h.nonce
49
+ };
50
+ liveHeaders.unshift(bh);
51
+ }
52
+ lastHeaders = headers;
53
+ for (let sec = 0; sec < 60 && !this.done; sec++) {
54
+ // Only wait a second at a time so we notice `done` sooner...
55
+ await (0, utilityHelpers_1.wait)(1000);
56
+ }
57
+ }
58
+ console.log(`LiveIngestorWhatsOnChainPoll stopped`);
59
+ }
60
+ stopListening() {
61
+ this.done = true;
62
+ }
63
+ async shutdown() {
64
+ this.stopListening();
65
+ }
66
+ }
67
+ exports.LiveIngestorWhatsOnChainPoll = LiveIngestorWhatsOnChainPoll;
68
+ //# sourceMappingURL=LiveIngestorWhatsOnChainPoll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveIngestorWhatsOnChainPoll.js","sourceRoot":"","sources":["../../../../../../../src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.ts"],"names":[],"mappings":";;;AACA,uEAAyD;AACzD,yDAA8E;AAC9E,iEAM+B;AAoC/B;;GAEG;AACH,MAAa,4BAA6B,SAAQ,mCAAgB;IAChE,MAAM,CAAC,qCAAqC,CAAC,KAAY;QACvD,MAAM,OAAO,GAAoC;YAC/C,GAAG,2CAAoB,CAAC,iCAAiC,CAAC,KAAK,CAAC;YAChE,GAAG,mCAAgB,CAAC,6BAA6B,CAAC,KAAK,CAAC;YACxD,QAAQ,EAAE,MAAM;SACjB,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAMD,YAAY,OAAwC;QAClD,KAAK,CAAC,OAAO,CAAC,CAAA;QAHhB,SAAI,GAAY,KAAK,CAAA;QAInB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAA;QAC1C,IAAI,CAAC,GAAG,GAAG,IAAI,2CAAoB,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACnD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAA0B;QAC7C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;QACjB,IAAI,WAAW,GAA0B,EAAE,CAAA;QAE3C,OAAO,CAAC,IAAI,CAAC,IAAI,GAAI,CAAC;YACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;YAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YAEnF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAW,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBAC/E,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;oBACzB,CAAC,CAAC,iBAAiB,GAAG,kEAAkE,CAAA,CAAC,UAAU;gBACrG,CAAC;gBACD,MAAM,EAAE,GAAgB;oBACtB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,YAAY,EAAE,CAAC,CAAC,iBAAiB;oBACjC,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI;oBACJ,KAAK,EAAE,CAAC,CAAC,KAAK;iBACf,CAAA;gBACD,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACzB,CAAC;YAED,WAAW,GAAG,OAAO,CAAA;YAErB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBAChD,6DAA6D;gBAC7D,MAAM,IAAA,qBAAI,EAAC,IAAI,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;IACrD,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEQ,KAAK,CAAC,QAAQ;QACrB,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;CACF;AArED,oEAqEC"}