@bsv/wallet-toolbox 1.1.60 → 1.1.62

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 (471) hide show
  1. package/.prettierrc +1 -1
  2. package/docs/client.md +39 -5
  3. package/docs/services.md +1 -0
  4. package/docs/setup.md +9 -26
  5. package/docs/storage.md +35 -0
  6. package/docs/wallet.md +39 -5
  7. package/out/src/Setup.d.ts.map +1 -1
  8. package/out/src/Setup.js +6 -16
  9. package/out/src/Setup.js.map +1 -1
  10. package/out/src/Wallet.d.ts.map +1 -1
  11. package/out/src/Wallet.js +4 -11
  12. package/out/src/Wallet.js.map +1 -1
  13. package/out/src/monitor/Monitor.d.ts.map +1 -1
  14. package/out/src/monitor/Monitor.js.map +1 -1
  15. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  16. package/out/src/monitor/MonitorDaemon.js +1 -3
  17. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  18. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  19. package/out/src/monitor/tasks/TaskCheckForProofs.js +2 -10
  20. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  21. package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
  22. package/out/src/monitor/tasks/TaskClock.js +1 -1
  23. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  24. package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
  25. package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
  26. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  27. package/out/src/monitor/tasks/TaskNewHeader.js +1 -2
  28. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  29. package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
  30. package/out/src/monitor/tasks/TaskPurge.js +1 -2
  31. package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
  32. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  33. package/out/src/monitor/tasks/TaskReviewStatus.js +1 -2
  34. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  35. package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
  36. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  37. package/out/src/sdk/CertOps.d.ts.map +1 -1
  38. package/out/src/sdk/CertOps.js +4 -12
  39. package/out/src/sdk/CertOps.js.map +1 -1
  40. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  41. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  42. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  43. package/out/src/sdk/WERR_errors.js.map +1 -1
  44. package/out/src/sdk/WalletError.d.ts.map +1 -1
  45. package/out/src/sdk/WalletError.js +1 -4
  46. package/out/src/sdk/WalletError.js.map +1 -1
  47. package/out/src/sdk/WalletServices.interfaces.d.ts +2 -0
  48. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  49. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  50. package/out/src/sdk/__test/CertificateLifeCycle.test.js +1 -3
  51. package/out/src/sdk/__test/CertificateLifeCycle.test.js.map +1 -1
  52. package/out/src/sdk/__test/PrivilegedKeyManager.test.js +13 -26
  53. package/out/src/sdk/__test/PrivilegedKeyManager.test.js.map +1 -1
  54. package/out/src/sdk/types.d.ts.map +1 -1
  55. package/out/src/sdk/types.js +2 -10
  56. package/out/src/sdk/types.js.map +1 -1
  57. package/out/src/sdk/validationHelpers.d.ts.map +1 -1
  58. package/out/src/sdk/validationHelpers.js +5 -12
  59. package/out/src/sdk/validationHelpers.js.map +1 -1
  60. package/out/src/services/Services.d.ts +1 -0
  61. package/out/src/services/Services.d.ts.map +1 -1
  62. package/out/src/services/Services.js +29 -38
  63. package/out/src/services/Services.js.map +1 -1
  64. package/out/src/services/__tests/ARC.test.js +9 -0
  65. package/out/src/services/__tests/ARC.test.js.map +1 -1
  66. package/out/src/services/__tests/bitrails.test.js.map +1 -1
  67. package/out/src/services/__tests/getMerklePath.test.js.map +1 -1
  68. package/out/src/services/__tests/getRawTx.test.js.map +1 -1
  69. package/out/src/services/__tests/verifyBeef.test.js +2 -1
  70. package/out/src/services/__tests/verifyBeef.test.js.map +1 -1
  71. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  72. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  73. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +1 -1
  74. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +1 -1
  75. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  76. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +1 -3
  77. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  78. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  79. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  80. package/out/src/services/providers/ARC.d.ts.map +1 -1
  81. package/out/src/services/providers/ARC.js +2 -3
  82. package/out/src/services/providers/ARC.js.map +1 -1
  83. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  84. package/out/src/services/providers/Bitails.js +62 -134
  85. package/out/src/services/providers/Bitails.js.map +1 -1
  86. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  87. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  88. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  89. package/out/src/services/providers/WhatsOnChain.js +6 -21
  90. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  91. package/out/src/services/providers/__tests/WhatsOnChain.test.js +1 -2
  92. package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +1 -1
  93. package/out/src/services/providers/echangeRates.d.ts.map +1 -1
  94. package/out/src/services/providers/echangeRates.js.map +1 -1
  95. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  96. package/out/src/signer/WalletSigner.js.map +1 -1
  97. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  98. package/out/src/signer/methods/acquireDirectCertificate.js +1 -3
  99. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  100. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  101. package/out/src/signer/methods/buildSignableTransaction.js +3 -11
  102. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  103. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  104. package/out/src/signer/methods/createAction.js +3 -10
  105. package/out/src/signer/methods/createAction.js.map +1 -1
  106. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  107. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  108. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  109. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  110. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  111. package/out/src/signer/methods/signAction.js +2 -7
  112. package/out/src/signer/methods/signAction.js.map +1 -1
  113. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  114. package/out/src/storage/StorageKnex.js +15 -44
  115. package/out/src/storage/StorageKnex.js.map +1 -1
  116. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  117. package/out/src/storage/StorageProvider.js +9 -34
  118. package/out/src/storage/StorageProvider.js.map +1 -1
  119. package/out/src/storage/StorageReader.d.ts.map +1 -1
  120. package/out/src/storage/StorageReader.js.map +1 -1
  121. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  122. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  123. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  124. package/out/src/storage/StorageSyncReader.js.map +1 -1
  125. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  126. package/out/src/storage/WalletStorageManager.js +5 -10
  127. package/out/src/storage/WalletStorageManager.js.map +1 -1
  128. package/out/src/storage/__test/WalletStorageManager.test.js +2 -8
  129. package/out/src/storage/__test/WalletStorageManager.test.js.map +1 -1
  130. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +10 -30
  131. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +1 -1
  132. package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.d.ts.map +1 -1
  133. package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.js +17 -28
  134. package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.js.map +1 -1
  135. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  136. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +6 -20
  137. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  138. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  139. package/out/src/storage/methods/createAction.js +4 -9
  140. package/out/src/storage/methods/createAction.js.map +1 -1
  141. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  142. package/out/src/storage/methods/generateChange.js +7 -18
  143. package/out/src/storage/methods/generateChange.js.map +1 -1
  144. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  145. package/out/src/storage/methods/getBeefForTransaction.js +1 -3
  146. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  147. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  148. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  149. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  150. package/out/src/storage/methods/internalizeAction.js +2 -9
  151. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  152. package/out/src/storage/methods/listActions.d.ts.map +1 -1
  153. package/out/src/storage/methods/listActions.js +3 -15
  154. package/out/src/storage/methods/listActions.js.map +1 -1
  155. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  156. package/out/src/storage/methods/listCertificates.js.map +1 -1
  157. package/out/src/storage/methods/listOutputs.d.ts.map +1 -1
  158. package/out/src/storage/methods/listOutputs.js +5 -12
  159. package/out/src/storage/methods/listOutputs.js.map +1 -1
  160. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  161. package/out/src/storage/methods/processAction.js +4 -10
  162. package/out/src/storage/methods/processAction.js.map +1 -1
  163. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  164. package/out/src/storage/methods/purgeData.js +8 -32
  165. package/out/src/storage/methods/purgeData.js.map +1 -1
  166. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  167. package/out/src/storage/methods/reviewStatus.js +1 -3
  168. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  169. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  170. package/out/src/storage/remoting/StorageClient.js +15 -41
  171. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  172. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  173. package/out/src/storage/remoting/StorageServer.js +2 -5
  174. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  175. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  176. package/out/src/storage/schema/KnexMigrations.js +24 -130
  177. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  178. package/out/src/storage/schema/entities/Certificate.d.ts.map +1 -1
  179. package/out/src/storage/schema/entities/Certificate.js +1 -1
  180. package/out/src/storage/schema/entities/Certificate.js.map +1 -1
  181. package/out/src/storage/schema/entities/CertificateField.d.ts.map +1 -1
  182. package/out/src/storage/schema/entities/CertificateField.js +2 -5
  183. package/out/src/storage/schema/entities/CertificateField.js.map +1 -1
  184. package/out/src/storage/schema/entities/Commission.d.ts.map +1 -1
  185. package/out/src/storage/schema/entities/Commission.js +2 -5
  186. package/out/src/storage/schema/entities/Commission.js.map +1 -1
  187. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  188. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  189. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  190. package/out/src/storage/schema/entities/MergeEntity.js +14 -9
  191. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  192. package/out/src/storage/schema/entities/Output.d.ts.map +1 -1
  193. package/out/src/storage/schema/entities/Output.js +8 -25
  194. package/out/src/storage/schema/entities/Output.js.map +1 -1
  195. package/out/src/storage/schema/entities/OutputBasket.d.ts.map +1 -1
  196. package/out/src/storage/schema/entities/OutputBasket.js +1 -1
  197. package/out/src/storage/schema/entities/OutputBasket.js.map +1 -1
  198. package/out/src/storage/schema/entities/OutputTag.d.ts.map +1 -1
  199. package/out/src/storage/schema/entities/OutputTag.js +1 -1
  200. package/out/src/storage/schema/entities/OutputTag.js.map +1 -1
  201. package/out/src/storage/schema/entities/OutputTagMap.d.ts.map +1 -1
  202. package/out/src/storage/schema/entities/OutputTagMap.js +3 -7
  203. package/out/src/storage/schema/entities/OutputTagMap.js.map +1 -1
  204. package/out/src/storage/schema/entities/ProvenTx.d.ts.map +1 -1
  205. package/out/src/storage/schema/entities/ProvenTx.js +10 -20
  206. package/out/src/storage/schema/entities/ProvenTx.js.map +1 -1
  207. package/out/src/storage/schema/entities/ProvenTxReq.d.ts.map +1 -1
  208. package/out/src/storage/schema/entities/ProvenTxReq.js +8 -18
  209. package/out/src/storage/schema/entities/ProvenTxReq.js.map +1 -1
  210. package/out/src/storage/schema/entities/SyncState.d.ts +1 -0
  211. package/out/src/storage/schema/entities/SyncState.d.ts.map +1 -1
  212. package/out/src/storage/schema/entities/SyncState.js +41 -6
  213. package/out/src/storage/schema/entities/SyncState.js.map +1 -1
  214. package/out/src/storage/schema/entities/Transaction.d.ts.map +1 -1
  215. package/out/src/storage/schema/entities/Transaction.js +4 -13
  216. package/out/src/storage/schema/entities/Transaction.js.map +1 -1
  217. package/out/src/storage/schema/entities/TxLabel.d.ts.map +1 -1
  218. package/out/src/storage/schema/entities/TxLabel.js +1 -1
  219. package/out/src/storage/schema/entities/TxLabel.js.map +1 -1
  220. package/out/src/storage/schema/entities/TxLabelMap.d.ts.map +1 -1
  221. package/out/src/storage/schema/entities/TxLabelMap.js +3 -9
  222. package/out/src/storage/schema/entities/TxLabelMap.js.map +1 -1
  223. package/out/src/storage/schema/entities/User.d.ts.map +1 -1
  224. package/out/src/storage/schema/entities/User.js +3 -5
  225. package/out/src/storage/schema/entities/User.js.map +1 -1
  226. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +1 -1
  227. package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +1 -1
  228. package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +1 -1
  229. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js.map +1 -1
  230. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +1 -1
  231. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js.map +1 -1
  232. package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +1 -1
  233. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +1 -1
  234. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +1 -2
  235. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
  236. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js.map +1 -1
  237. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +2 -2
  238. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +1 -1
  239. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js.map +1 -1
  240. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js.map +1 -1
  241. package/out/src/storage/schema/entities/__tests/stampLogTests.test.js.map +1 -1
  242. package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +1 -1
  243. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  244. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  245. package/out/src/storage/sync/StorageMySQLDojoReader.js +1 -3
  246. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  247. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  248. package/out/src/utility/ScriptTemplateBRC29.js +1 -2
  249. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  250. package/out/src/utility/stampLog.d.ts.map +1 -1
  251. package/out/src/utility/stampLog.js.map +1 -1
  252. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  253. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  254. package/out/src/utility/utilityHelpers.buffer.d.ts.map +1 -1
  255. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  256. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  257. package/out/src/utility/utilityHelpers.js +1 -3
  258. package/out/src/utility/utilityHelpers.js.map +1 -1
  259. package/out/test/Wallet/StorageClient/storageClient.man.test.js.map +1 -1
  260. package/out/test/Wallet/action/internalizeAction.a.test.js.map +1 -1
  261. package/out/test/Wallet/certificate/acquireCertificate.test.js.map +1 -1
  262. package/out/test/Wallet/certificate/listCertificates.test.js.map +1 -1
  263. package/out/test/Wallet/get/getHeaderForHeight.test.js +2 -6
  264. package/out/test/Wallet/get/getHeaderForHeight.test.js.map +1 -1
  265. package/out/test/Wallet/get/getHeight.test.js.map +1 -1
  266. package/out/test/Wallet/get/getKnownTxids.test.js.map +1 -1
  267. package/out/test/Wallet/get/getNetwork.test.js.map +1 -1
  268. package/out/test/Wallet/get/getVersion.test.js.map +1 -1
  269. package/out/test/Wallet/live/walletLive.man.test.d.ts.map +1 -1
  270. package/out/test/Wallet/live/walletLive.man.test.js +3 -9
  271. package/out/test/Wallet/live/walletLive.man.test.js.map +1 -1
  272. package/out/test/Wallet/local/localWallet.man.test.d.ts.map +1 -1
  273. package/out/test/Wallet/local/localWallet.man.test.js +39 -31
  274. package/out/test/Wallet/local/localWallet.man.test.js.map +1 -1
  275. package/out/test/Wallet/specOps/specOps.man.test.js +1 -4
  276. package/out/test/Wallet/specOps/specOps.man.test.js.map +1 -1
  277. package/out/test/Wallet/support/janitor.man.test.js.map +1 -1
  278. package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js.map +1 -1
  279. package/out/test/Wallet/sync/setActive.test.js +73 -50
  280. package/out/test/Wallet/sync/setActive.test.js.map +1 -1
  281. package/out/test/checkDB.d.ts.map +1 -1
  282. package/out/test/checkDB.js.map +1 -1
  283. package/out/test/examples/backup.man.test.d.ts.map +1 -1
  284. package/out/test/examples/backup.man.test.js.map +1 -1
  285. package/out/test/examples/pushdrop.test.d.ts.map +1 -1
  286. package/out/test/examples/pushdrop.test.js +5 -4
  287. package/out/test/examples/pushdrop.test.js.map +1 -1
  288. package/out/test/monitor/Monitor.test.js.map +1 -1
  289. package/out/test/services/Services.test.js.map +1 -1
  290. package/out/test/storage/KnexMigrations.test.js.map +1 -1
  291. package/out/test/storage/StorageMySQLDojoReader.man.test.js +1 -3
  292. package/out/test/storage/StorageMySQLDojoReader.man.test.js.map +1 -1
  293. package/out/test/storage/count.test.js.map +1 -1
  294. package/out/test/storage/find.test.js +5 -10
  295. package/out/test/storage/find.test.js.map +1 -1
  296. package/out/test/storage/findLegacy.test.js.map +1 -1
  297. package/out/test/storage/insert.test.js.map +1 -1
  298. package/out/test/storage/update.test.js +7 -19
  299. package/out/test/storage/update.test.js.map +1 -1
  300. package/out/test/storage/update2.test.js +22 -24
  301. package/out/test/storage/update2.test.js.map +1 -1
  302. package/out/test/utils/TestUtilsWalletStorage.d.ts +3 -1
  303. package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
  304. package/out/test/utils/TestUtilsWalletStorage.js +52 -76
  305. package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
  306. package/out/test/wallet/action/abortAction.test.js.map +1 -1
  307. package/out/test/wallet/action/createAction.test.js +1 -2
  308. package/out/test/wallet/action/createAction.test.js.map +1 -1
  309. package/out/test/wallet/action/createAction2.test.d.ts.map +1 -1
  310. package/out/test/wallet/action/createAction2.test.js +6 -16
  311. package/out/test/wallet/action/createAction2.test.js.map +1 -1
  312. package/out/test/wallet/action/createActionToGenerateBeefs.man.test.js.map +1 -1
  313. package/out/test/wallet/action/internalizeAction.test.js.map +1 -1
  314. package/out/test/wallet/action/relinquishOutput.test.js.map +1 -1
  315. package/out/test/wallet/list/listActions.test.js.map +1 -1
  316. package/out/test/wallet/list/listActions2.test.js.map +1 -1
  317. package/out/test/wallet/list/listCertificates.test.js +2 -6
  318. package/out/test/wallet/list/listCertificates.test.js.map +1 -1
  319. package/out/test/wallet/list/listOutputs.test.js +2 -10
  320. package/out/test/wallet/list/listOutputs.test.js.map +1 -1
  321. package/out/test/wallet/sync/Wallet.sync.test.js +4 -6
  322. package/out/test/wallet/sync/Wallet.sync.test.js.map +1 -1
  323. package/out/tsconfig.all.tsbuildinfo +1 -1
  324. package/package.json +3 -3
  325. package/src/Setup.ts +15 -52
  326. package/src/Wallet.ts +58 -161
  327. package/src/monitor/Monitor.ts +7 -22
  328. package/src/monitor/MonitorDaemon.ts +6 -23
  329. package/src/monitor/tasks/TaskCheckForProofs.ts +4 -23
  330. package/src/monitor/tasks/TaskClock.ts +1 -3
  331. package/src/monitor/tasks/TaskFailAbandoned.ts +1 -3
  332. package/src/monitor/tasks/TaskNewHeader.ts +1 -4
  333. package/src/monitor/tasks/TaskPurge.ts +1 -2
  334. package/src/monitor/tasks/TaskReviewStatus.ts +1 -3
  335. package/src/monitor/tasks/TaskSendWaiting.ts +3 -10
  336. package/src/sdk/CertOps.ts +31 -103
  337. package/src/sdk/PrivilegedKeyManager.ts +18 -48
  338. package/src/sdk/WERR_errors.ts +6 -25
  339. package/src/sdk/WalletError.ts +5 -21
  340. package/src/sdk/WalletServices.interfaces.ts +11 -33
  341. package/src/sdk/WalletStorage.interfaces.ts +25 -91
  342. package/src/sdk/__test/CertificateLifeCycle.test.ts +9 -27
  343. package/src/sdk/__test/PrivilegedKeyManager.test.ts +29 -66
  344. package/src/sdk/types.ts +6 -26
  345. package/src/sdk/validationHelpers.ts +111 -402
  346. package/src/services/Services.ts +51 -114
  347. package/src/services/__tests/ARC.test.ts +14 -1
  348. package/src/services/__tests/bitrails.test.ts +4 -15
  349. package/src/services/__tests/getMerklePath.test.ts +1 -2
  350. package/src/services/__tests/getRawTx.test.ts +1 -3
  351. package/src/services/__tests/verifyBeef.test.ts +2 -1
  352. package/src/services/chaintracker/ChaintracksChainTracker.ts +3 -13
  353. package/src/services/chaintracker/chaintracks/BlockHeaderApi.ts +4 -12
  354. package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +9 -27
  355. package/src/services/createDefaultWalletServicesOptions.ts +2 -5
  356. package/src/services/processingErrors/arcSuccessError.json +76 -0
  357. package/src/services/providers/ARC.ts +6 -25
  358. package/src/services/providers/Bitails.ts +61 -159
  359. package/src/services/providers/SdkWhatsOnChain.ts +4 -17
  360. package/src/services/providers/WhatsOnChain.ts +31 -100
  361. package/src/services/providers/__tests/WhatsOnChain.test.ts +5 -15
  362. package/src/services/providers/echangeRates.ts +7 -22
  363. package/src/signer/WalletSigner.ts +1 -5
  364. package/src/signer/methods/acquireDirectCertificate.ts +1 -4
  365. package/src/signer/methods/buildSignableTransaction.ts +5 -20
  366. package/src/signer/methods/createAction.ts +15 -54
  367. package/src/signer/methods/internalizeAction.ts +10 -39
  368. package/src/signer/methods/proveCertificate.ts +2 -5
  369. package/src/signer/methods/signAction.ts +9 -39
  370. package/src/storage/StorageKnex.ts +166 -499
  371. package/src/storage/StorageProvider.ts +75 -291
  372. package/src/storage/StorageReader.ts +20 -65
  373. package/src/storage/StorageReaderWriter.ts +67 -264
  374. package/src/storage/StorageSyncReader.ts +2 -5
  375. package/src/storage/WalletStorageManager.ts +33 -108
  376. package/src/storage/__test/WalletStorageManager.test.ts +6 -23
  377. package/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts +53 -171
  378. package/src/storage/methods/__test/GenerateChange/randomValsUsed1.ts +17 -28
  379. package/src/storage/methods/attemptToPostReqsToNetwork.ts +9 -37
  380. package/src/storage/methods/createAction.ts +45 -181
  381. package/src/storage/methods/generateChange.ts +33 -114
  382. package/src/storage/methods/getBeefForTransaction.ts +7 -37
  383. package/src/storage/methods/getSyncChunk.ts +18 -69
  384. package/src/storage/methods/internalizeAction.ts +18 -70
  385. package/src/storage/methods/listActions.ts +6 -23
  386. package/src/storage/methods/listCertificates.ts +5 -14
  387. package/src/storage/methods/listOutputs.ts +15 -69
  388. package/src/storage/methods/processAction.ts +29 -104
  389. package/src/storage/methods/purgeData.ts +11 -45
  390. package/src/storage/methods/reviewStatus.ts +3 -9
  391. package/src/storage/remoting/StorageClient.ts +43 -146
  392. package/src/storage/remoting/StorageServer.ts +21 -59
  393. package/src/storage/schema/KnexMigrations.ts +34 -165
  394. package/src/storage/schema/entities/Certificate.ts +3 -14
  395. package/src/storage/schema/entities/CertificateField.ts +6 -28
  396. package/src/storage/schema/entities/Commission.ts +6 -23
  397. package/src/storage/schema/entities/EntityBase.ts +1 -6
  398. package/src/storage/schema/entities/MergeEntity.ts +14 -21
  399. package/src/storage/schema/entities/Output.ts +10 -39
  400. package/src/storage/schema/entities/OutputBasket.ts +4 -16
  401. package/src/storage/schema/entities/OutputTag.ts +4 -17
  402. package/src/storage/schema/entities/OutputTagMap.ts +7 -30
  403. package/src/storage/schema/entities/ProvenTx.ts +16 -57
  404. package/src/storage/schema/entities/ProvenTxReq.ts +29 -93
  405. package/src/storage/schema/entities/SyncState.ts +64 -116
  406. package/src/storage/schema/entities/Transaction.ts +10 -35
  407. package/src/storage/schema/entities/TxLabel.ts +4 -17
  408. package/src/storage/schema/entities/TxLabelMap.ts +6 -28
  409. package/src/storage/schema/entities/User.ts +8 -31
  410. package/src/storage/schema/entities/__tests/CertificateFieldTests.test.ts +23 -54
  411. package/src/storage/schema/entities/__tests/CertificateTests.test.ts +26 -59
  412. package/src/storage/schema/entities/__tests/CommissionTests.test.ts +2 -11
  413. package/src/storage/schema/entities/__tests/OutputBasketTests.test.ts +2 -10
  414. package/src/storage/schema/entities/__tests/OutputTagMapTests.test.ts +2 -10
  415. package/src/storage/schema/entities/__tests/OutputTagTests.test.ts +1 -4
  416. package/src/storage/schema/entities/__tests/OutputTests.test.ts +3 -14
  417. package/src/storage/schema/entities/__tests/ProvenTxReqTests.test.ts +4 -16
  418. package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +5 -18
  419. package/src/storage/schema/entities/__tests/SyncStateTests.test.ts +5 -26
  420. package/src/storage/schema/entities/__tests/TransactionTests.test.ts +12 -48
  421. package/src/storage/schema/entities/__tests/TxLabelMapTests.test.ts +4 -22
  422. package/src/storage/schema/entities/__tests/TxLabelTests.test.ts +2 -10
  423. package/src/storage/schema/entities/__tests/stampLogTests.test.ts +3 -10
  424. package/src/storage/schema/entities/__tests/usersTests.test.ts +4 -7
  425. package/src/storage/schema/tables/TableSettings.ts +1 -3
  426. package/src/storage/sync/StorageMySQLDojoReader.ts +47 -148
  427. package/src/utility/ScriptTemplateBRC29.ts +2 -11
  428. package/src/utility/stampLog.ts +2 -6
  429. package/src/utility/tscProofToMerklePath.ts +1 -4
  430. package/src/utility/utilityHelpers.buffer.ts +3 -12
  431. package/src/utility/utilityHelpers.ts +14 -49
  432. package/test/Wallet/StorageClient/storageClient.man.test.ts +2 -8
  433. package/test/Wallet/action/internalizeAction.a.test.ts +8 -23
  434. package/test/Wallet/certificate/acquireCertificate.test.ts +10 -24
  435. package/test/Wallet/certificate/listCertificates.test.ts +8 -18
  436. package/test/Wallet/get/getHeaderForHeight.test.ts +4 -15
  437. package/test/Wallet/get/getHeight.test.ts +2 -6
  438. package/test/Wallet/get/getKnownTxids.test.ts +1 -5
  439. package/test/Wallet/get/getNetwork.test.ts +1 -2
  440. package/test/Wallet/get/getVersion.test.ts +1 -2
  441. package/test/Wallet/live/walletLive.man.test.ts +14 -41
  442. package/test/Wallet/local/localWallet.man.test.ts +45 -102
  443. package/test/Wallet/specOps/specOps.man.test.ts +4 -13
  444. package/test/Wallet/support/janitor.man.test.ts +2 -7
  445. package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +11 -34
  446. package/test/Wallet/sync/setActive.test.ts +75 -61
  447. package/test/checkDB.ts +2 -8
  448. package/test/examples/backup.man.test.ts +2 -9
  449. package/test/examples/pushdrop.test.ts +7 -20
  450. package/test/monitor/Monitor.test.ts +33 -87
  451. package/test/services/Services.test.ts +8 -19
  452. package/test/storage/KnexMigrations.test.ts +3 -18
  453. package/test/storage/StorageMySQLDojoReader.man.test.ts +4 -15
  454. package/test/storage/count.test.ts +7 -24
  455. package/test/storage/find.test.ts +7 -29
  456. package/test/storage/findLegacy.test.ts +2 -5
  457. package/test/storage/insert.test.ts +3 -19
  458. package/test/storage/update.test.ts +47 -179
  459. package/test/storage/update2.test.ts +54 -176
  460. package/test/utils/TestUtilsWalletStorage.ts +139 -372
  461. package/test/wallet/action/abortAction.test.ts +4 -12
  462. package/test/wallet/action/createAction.test.ts +4 -14
  463. package/test/wallet/action/createAction2.test.ts +74 -208
  464. package/test/wallet/action/createActionToGenerateBeefs.man.test.ts +8 -11
  465. package/test/wallet/action/internalizeAction.test.ts +20 -72
  466. package/test/wallet/action/relinquishOutput.test.ts +3 -9
  467. package/test/wallet/list/listActions.test.ts +2 -9
  468. package/test/wallet/list/listActions2.test.ts +8 -34
  469. package/test/wallet/list/listCertificates.test.ts +5 -16
  470. package/test/wallet/list/listOutputs.test.ts +15 -54
  471. package/test/wallet/sync/Wallet.sync.test.ts +18 -49
@@ -58,6 +58,7 @@ import {
58
58
  import { Knex, knex as makeKnex } from 'knex'
59
59
 
60
60
  import * as dotenv from 'dotenv'
61
+ import { WalletServicesOptions } from '../../src/sdk'
61
62
  dotenv.config()
62
63
 
63
64
  const localMySqlConnection = process.env.MYSQL_CONNECTION || ''
@@ -67,6 +68,8 @@ export interface TuEnv {
67
68
  identityKey: string
68
69
  identityKey2: string
69
70
  taalApiKey: string
71
+ bitailsApiKey: string
72
+ whatsonchainApiKey: string
70
73
  devKeys: Record<string, string>
71
74
  runMySQL: boolean
72
75
  runSlowTests: boolean
@@ -115,41 +118,28 @@ export abstract class TestUtilsWalletStorage {
115
118
 
116
119
  static getEnv(chain: sdk.Chain): TuEnv {
117
120
  // Identity keys of the lead maintainer of this repo...
118
- const identityKey =
119
- (chain === 'main'
120
- ? process.env.MY_MAIN_IDENTITY
121
- : process.env.MY_TEST_IDENTITY) || ''
122
- const filePath =
123
- chain === 'main'
124
- ? process.env.MY_MAIN_FILEPATH
125
- : process.env.MY_TEST_FILEPATH
126
- const identityKey2 =
127
- (chain === 'main'
128
- ? process.env.MY_MAIN_IDENTITY2
129
- : process.env.MY_TEST_IDENTITY2) || ''
130
- const testIdentityKey =
131
- chain === 'main'
132
- ? process.env.TEST_MAIN_IDENTITY
133
- : process.env.TEST_TEST_IDENTITY
134
- const testFilePath =
135
- chain === 'main'
136
- ? process.env.TEST_MAIN_FILEPATH
137
- : process.env.TEST_TEST_FILEPATH
121
+ const identityKey = (chain === 'main' ? process.env.MY_MAIN_IDENTITY : process.env.MY_TEST_IDENTITY) || ''
122
+ const filePath = chain === 'main' ? process.env.MY_MAIN_FILEPATH : process.env.MY_TEST_FILEPATH
123
+ const identityKey2 = (chain === 'main' ? process.env.MY_MAIN_IDENTITY2 : process.env.MY_TEST_IDENTITY2) || ''
124
+ const testIdentityKey = chain === 'main' ? process.env.TEST_MAIN_IDENTITY : process.env.TEST_TEST_IDENTITY
125
+ const testFilePath = chain === 'main' ? process.env.TEST_MAIN_FILEPATH : process.env.TEST_TEST_FILEPATH
138
126
  const cloudMySQLConnection =
139
- chain === 'main'
140
- ? process.env.MAIN_CLOUD_MYSQL_CONNECTION
141
- : process.env.TEST_CLOUD_MYSQL_CONNECTION
127
+ chain === 'main' ? process.env.MAIN_CLOUD_MYSQL_CONNECTION : process.env.TEST_CLOUD_MYSQL_CONNECTION
142
128
  const DEV_KEYS = process.env.DEV_KEYS || '{}'
143
129
  const logTests = !!process.env.LOGTESTS
144
130
  const runMySQL = !!process.env.RUNMYSQL
145
131
  const runSlowTests = !!process.env.RUNSLOWTESTS
146
- const mainTaalApiKey = process.env.MAIN_TAAL_API_KEY || ''
147
- const testTaalApiKey = process.env.TEST_TAAL_API_KEY || ''
132
+ const taalApiKey = (chain === 'main' ? process.env.MAIN_TAAL_API_KEY : process.env.TEST_TAAL_API_KEY) || ''
133
+ const bitailsApiKey = (chain === 'main' ? process.env.MAIN_BITAILS_API_KEY : process.env.TEST_BITAILS_API_KEY) || ''
134
+ const whatsonchainApiKey =
135
+ (chain === 'main' ? process.env.MAIN_WHATSONCHAIN_API_KEY : process.env.TEST_WHATSONCHAIN_API_KEY) || ''
148
136
  return {
149
137
  chain,
150
138
  identityKey,
151
139
  identityKey2,
152
- taalApiKey: chain === 'main' ? mainTaalApiKey : testTaalApiKey,
140
+ taalApiKey,
141
+ bitailsApiKey,
142
+ whatsonchainApiKey,
153
143
  devKeys: JSON.parse(DEV_KEYS) as Record<string, string>,
154
144
  runMySQL,
155
145
  runSlowTests,
@@ -172,13 +162,7 @@ export abstract class TestUtilsWalletStorage {
172
162
  cr: CreateActionResult
173
163
  sr: SignActionResult
174
164
  }> {
175
- return await _tu.createNoSendP2PKHTestOutpoints(
176
- 1,
177
- address,
178
- satoshis,
179
- noSendChange,
180
- wallet
181
- )
165
+ return await _tu.createNoSendP2PKHTestOutpoints(1, address, satoshis, noSendChange, wallet)
182
166
  }
183
167
 
184
168
  static async createNoSendP2PKHTestOutpoints(
@@ -292,18 +276,16 @@ export abstract class TestUtilsWalletStorage {
292
276
  const identityKey = rootKey.toPublicKey().toString()
293
277
  const keyDeriver = new KeyDeriver(rootKey)
294
278
  const chain = args.chain
295
- const storage = new WalletStorageManager(
296
- identityKey,
297
- args.active,
298
- args.backups
299
- )
279
+ const storage = new WalletStorageManager(identityKey, args.active, args.backups)
300
280
  if (storage.canMakeAvailable()) await storage.makeAvailable()
301
- const services = new Services(args.chain)
302
- const monopts = Monitor.createDefaultWalletMonitorOptions(
303
- chain,
304
- storage,
305
- services
306
- )
281
+ const env = _tu.getEnv(args.chain!)
282
+ const serviceOptions: WalletServicesOptions = Services.createDefaultOptions(env.chain)
283
+ serviceOptions.taalApiKey = env.taalApiKey
284
+ serviceOptions.arcConfig.apiKey = env.taalApiKey
285
+ serviceOptions.bitailsApiKey = env.bitailsApiKey
286
+ serviceOptions.whatsOnChainApiKey = env.whatsonchainApiKey
287
+ const services = new Services(serviceOptions)
288
+ const monopts = Monitor.createDefaultWalletMonitorOptions(chain, storage, services)
307
289
  const monitor = new Monitor(monopts)
308
290
  monitor.addDefaultTasks()
309
291
  let privilegedKeyManager: sdk.PrivilegedKeyManager | undefined = undefined
@@ -344,9 +326,7 @@ export abstract class TestUtilsWalletStorage {
344
326
  *
345
327
  * @returns {TestWalletNoSetup}
346
328
  */
347
- static async createTestWallet(
348
- args: sdk.Chain | CreateTestWalletArgs
349
- ): Promise<TestWalletNoSetup> {
329
+ static async createTestWallet(args: sdk.Chain | CreateTestWalletArgs): Promise<TestWalletNoSetup> {
350
330
  let chain: sdk.Chain
351
331
  let rootKeyHex: string
352
332
  let filePath: string
@@ -357,10 +337,7 @@ export abstract class TestUtilsWalletStorage {
357
337
  chain = args
358
338
  const env = _tu.getEnv(chain)
359
339
  if (!env.testIdentityKey || !env.testFilePath) {
360
- throw new sdk.WERR_INVALID_PARAMETER(
361
- 'env.testIdentityKey and env.testFilePath',
362
- 'valid'
363
- )
340
+ throw new sdk.WERR_INVALID_PARAMETER('env.testIdentityKey and env.testFilePath', 'valid')
364
341
  }
365
342
  rootKeyHex = env.devKeys[env.testIdentityKey!]
366
343
  filePath = env.testFilePath
@@ -385,11 +362,7 @@ export abstract class TestUtilsWalletStorage {
385
362
  let client: sdk.WalletStorageProvider
386
363
  if (useMySQLConnectionForClient) {
387
364
  const env = _tu.getEnv(chain)
388
- if (!env.cloudMySQLConnection)
389
- throw new sdk.WERR_INVALID_PARAMETER(
390
- 'env.cloundMySQLConnection',
391
- 'valid'
392
- )
365
+ if (!env.cloudMySQLConnection) throw new sdk.WERR_INVALID_PARAMETER('env.cloundMySQLConnection', 'valid')
393
366
  const connection = JSON.parse(env.cloudMySQLConnection)
394
367
  client = new StorageKnex({
395
368
  ...StorageKnex.defaultOptions(),
@@ -398,15 +371,11 @@ export abstract class TestUtilsWalletStorage {
398
371
  })
399
372
  } else {
400
373
  const endpointUrl =
401
- chain === 'main'
402
- ? 'https://storage.babbage.systems'
403
- : 'https://staging-storage.babbage.systems'
374
+ chain === 'main' ? 'https://storage.babbage.systems' : 'https://staging-storage.babbage.systems'
404
375
 
405
376
  client = new StorageClient(setup.wallet, endpointUrl)
406
377
  }
407
- setup.clientStorageIdentityKey = (
408
- await client.makeAvailable()
409
- ).storageIdentityKey
378
+ setup.clientStorageIdentityKey = (await client.makeAvailable()).storageIdentityKey
410
379
  await setup.wallet.storage.addWalletStorageProvider(client)
411
380
 
412
381
  if (addLocalBackup) {
@@ -418,9 +387,7 @@ export abstract class TestUtilsWalletStorage {
418
387
  chain
419
388
  })
420
389
  await localBackup.migrate(backupName, randomBytesHex(33))
421
- setup.localBackupStorageIdentityKey = (
422
- await localBackup.makeAvailable()
423
- ).storageIdentityKey
390
+ setup.localBackupStorageIdentityKey = (await localBackup.makeAvailable()).storageIdentityKey
424
391
  await setup.wallet.storage.addWalletStorageProvider(localBackup)
425
392
  }
426
393
 
@@ -428,11 +395,9 @@ export abstract class TestUtilsWalletStorage {
428
395
  // SETTING ACTIVE
429
396
  // SETTING ACTIVE
430
397
  const log = await setup.storage.setActive(
431
- setActiveClient
432
- ? setup.clientStorageIdentityKey
433
- : setup.localStorageIdentityKey
398
+ setActiveClient ? setup.clientStorageIdentityKey : setup.localStorageIdentityKey
434
399
  )
435
- console.log(log)
400
+ logger(log)
436
401
 
437
402
  let needsBackup = false
438
403
 
@@ -445,10 +410,7 @@ export abstract class TestUtilsWalletStorage {
445
410
  }
446
411
  })
447
412
  )
448
- if (
449
- basket.minimumDesiredUTXOValue !== 5 ||
450
- basket.numberOfDesiredUTXOs < 32
451
- ) {
413
+ if (basket.minimumDesiredUTXOValue !== 5 || basket.numberOfDesiredUTXOs < 32) {
452
414
  needsBackup = true
453
415
  await setup.activeStorage.updateOutputBasket(basket.basketId, {
454
416
  minimumDesiredUTXOValue: 5,
@@ -490,9 +452,7 @@ export abstract class TestUtilsWalletStorage {
490
452
  rootKeyHex: args.rootKeyHex
491
453
  })
492
454
  args.endpointUrl ||=
493
- args.chain === 'main'
494
- ? 'https://storage.babbage.systems'
495
- : 'https://staging-storage.babbage.systems'
455
+ args.chain === 'main' ? 'https://storage.babbage.systems' : 'https://staging-storage.babbage.systems'
496
456
 
497
457
  const client = new StorageClient(wo.wallet, args.endpointUrl)
498
458
  await wo.storage.addWalletStorageProvider(client)
@@ -577,9 +537,7 @@ export abstract class TestUtilsWalletStorage {
577
537
  }
578
538
  }
579
539
  if (copyToTmp) {
580
- const srcPath = p.dir
581
- ? path.resolve(filename)
582
- : path.resolve(`./test/data/${filename}`)
540
+ const srcPath = p.dir ? path.resolve(filename) : path.resolve(`./test/data/${filename}`)
583
541
  await fsp.copyFile(srcPath, dstPath)
584
542
  }
585
543
  return dstPath
@@ -673,9 +631,7 @@ export abstract class TestUtilsWalletStorage {
673
631
  dropAll?: boolean
674
632
  privKeyHex?: string
675
633
  }): Promise<TestWalletNoSetup> {
676
- const localSQLiteFile =
677
- args.filePath ||
678
- (await _tu.newTmpFile(`${args.databaseName}.sqlite`, false, false, true))
634
+ const localSQLiteFile = args.filePath || (await _tu.newTmpFile(`${args.databaseName}.sqlite`, false, false, true))
679
635
  return await this.createKnexTestWallet({
680
636
  ...args,
681
637
  knex: _tu.createLocalSQLite(localSQLiteFile)
@@ -687,12 +643,7 @@ export abstract class TestUtilsWalletStorage {
687
643
  chain?: sdk.Chain
688
644
  rootKeyHex?: string
689
645
  }): Promise<TestWallet<TestSetup1>> {
690
- const localSQLiteFile = await _tu.newTmpFile(
691
- `${args.databaseName}.sqlite`,
692
- false,
693
- false,
694
- true
695
- )
646
+ const localSQLiteFile = await _tu.newTmpFile(`${args.databaseName}.sqlite`, false, false, true)
696
647
  return await this.createKnexTestSetup1Wallet({
697
648
  ...args,
698
649
  dropAll: true,
@@ -706,12 +657,7 @@ export abstract class TestUtilsWalletStorage {
706
657
  chain?: sdk.Chain
707
658
  rootKeyHex?: string
708
659
  }): Promise<TestWallet<TestSetup2>> {
709
- const localSQLiteFile = await _tu.newTmpFile(
710
- `${args.databaseName}.sqlite`,
711
- false,
712
- false,
713
- true
714
- )
660
+ const localSQLiteFile = await _tu.newTmpFile(`${args.databaseName}.sqlite`, false, false, true)
715
661
  return await this.createKnexTestSetup2Wallet({
716
662
  ...args,
717
663
  dropAll: true,
@@ -773,26 +719,13 @@ export abstract class TestUtilsWalletStorage {
773
719
  }
774
720
 
775
721
  //if (await _tu.fileExists(walletFile))
776
- static async createLegacyWalletSQLiteCopy(
777
- databaseName: string
778
- ): Promise<TestWalletNoSetup> {
779
- const walletFile = await _tu.newTmpFile(
780
- `${databaseName}.sqlite`,
781
- false,
782
- false,
783
- true
784
- )
722
+ static async createLegacyWalletSQLiteCopy(databaseName: string): Promise<TestWalletNoSetup> {
723
+ const walletFile = await _tu.newTmpFile(`${databaseName}.sqlite`, false, false, true)
785
724
  const walletKnex = _tu.createLocalSQLite(walletFile)
786
- return await _tu.createLegacyWalletCopy(
787
- databaseName,
788
- walletKnex,
789
- walletFile
790
- )
725
+ return await _tu.createLegacyWalletCopy(databaseName, walletKnex, walletFile)
791
726
  }
792
727
 
793
- static async createLegacyWalletMySQLCopy(
794
- databaseName: string
795
- ): Promise<TestWalletNoSetup> {
728
+ static async createLegacyWalletMySQLCopy(databaseName: string): Promise<TestWalletNoSetup> {
796
729
  const walletKnex = _tu.createLocalMySQL(databaseName)
797
730
  return await _tu.createLegacyWalletCopy(databaseName, walletKnex)
798
731
  }
@@ -821,12 +754,7 @@ export abstract class TestUtilsWalletStorage {
821
754
  })
822
755
  }
823
756
 
824
- static legacyRootKeyHex =
825
- '153a3df216' +
826
- '686f55b253991c' +
827
- '7039da1f648' +
828
- 'ffc5bfe93d6ac2c25ac' +
829
- '2d4070918d'
757
+ static legacyRootKeyHex = '153a3df216' + '686f55b253991c' + '7039da1f648' + 'ffc5bfe93d6ac2c25ac' + '2d4070918d'
830
758
 
831
759
  static async createLegacyWalletCopy(
832
760
  databaseName: string,
@@ -842,8 +770,7 @@ export abstract class TestUtilsWalletStorage {
842
770
  }
843
771
  const chain: sdk.Chain = 'test'
844
772
  const rootKeyHex = _tu.legacyRootKeyHex
845
- const identityKey =
846
- '03ac2d10bdb0023f4145cc2eba2fcd2ad3070cb2107b0b48170c46a9440e4cc3fe'
773
+ const identityKey = '03ac2d10bdb0023f4145cc2eba2fcd2ad3070cb2107b0b48170c46a9440e4cc3fe'
847
774
  const rootKey = PrivateKey.fromHex(rootKeyHex)
848
775
  const keyDeriver = new KeyDeriver(rootKey)
849
776
  const activeStorage = new StorageKnex({
@@ -868,23 +795,14 @@ export abstract class TestUtilsWalletStorage {
868
795
  feeModel: { model: 'sat/kb', value: 1 }
869
796
  })
870
797
  await reader.makeAvailable()
871
- await storage.syncFromReader(
872
- identityKey,
873
- new StorageSyncReader({ identityKey }, reader)
874
- )
798
+ await storage.syncFromReader(identityKey, new StorageSyncReader({ identityKey }, reader))
875
799
  await reader.destroy()
876
800
  }
877
801
  const services = new Services(chain)
878
- const monopts = Monitor.createDefaultWalletMonitorOptions(
879
- chain,
880
- storage,
881
- services
882
- )
802
+ const monopts = Monitor.createDefaultWalletMonitorOptions(chain, storage, services)
883
803
  const monitor = new Monitor(monopts)
884
804
  const wallet = new Wallet({ chain, keyDeriver, storage, services, monitor })
885
- const userId = verifyTruthy(
886
- await activeStorage.findUserByIdentityKey(identityKey)
887
- ).userId
805
+ const userId = verifyTruthy(await activeStorage.findUserByIdentityKey(identityKey)).userId
888
806
  const r: TestWallet<{}> = {
889
807
  rootKey,
890
808
  identityKey,
@@ -912,8 +830,7 @@ export abstract class TestUtilsWalletStorage {
912
830
  const cert: WalletCertificate = {
913
831
  type: Utils.toBase64(new Array(32).fill(1)),
914
832
  serialNumber: Utils.toBase64(new Array(32).fill(2)),
915
- revocationOutpoint:
916
- 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.1',
833
+ revocationOutpoint: 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.1',
917
834
  subject,
918
835
  certifier: certifier.toPublicKey().toString(),
919
836
  fields: {
@@ -1006,12 +923,7 @@ export abstract class TestUtilsWalletStorage {
1006
923
  return e
1007
924
  }
1008
925
 
1009
- static async insertTestCertificateField(
1010
- storage: StorageProvider,
1011
- c: TableCertificate,
1012
- name: string,
1013
- value: string
1014
- ) {
926
+ static async insertTestCertificateField(storage: StorageProvider, c: TableCertificate, name: string, value: string) {
1015
927
  const now = new Date()
1016
928
  const e: TableCertificateField = {
1017
929
  created_at: now,
@@ -1036,9 +948,7 @@ export abstract class TestUtilsWalletStorage {
1036
948
  if (u === undefined) {
1037
949
  user = await _tu.insertTestUser(storage)
1038
950
  } else if (typeof u === 'number') {
1039
- user = verifyOne(
1040
- await storage.findUsers({ partial: { userId: u } })
1041
- ) as TableUser
951
+ user = verifyOne(await storage.findUsers({ partial: { userId: u } })) as TableUser
1042
952
  } else {
1043
953
  user = u
1044
954
  }
@@ -1129,11 +1039,7 @@ export abstract class TestUtilsWalletStorage {
1129
1039
  return e
1130
1040
  }
1131
1041
 
1132
- static async insertTestOutputTag(
1133
- storage: StorageProvider,
1134
- u: TableUser,
1135
- partial?: Partial<TableOutputTag>
1136
- ) {
1042
+ static async insertTestOutputTag(storage: StorageProvider, u: TableUser, partial?: Partial<TableOutputTag>) {
1137
1043
  const now = new Date()
1138
1044
  const e: TableOutputTag = {
1139
1045
  created_at: now,
@@ -1148,11 +1054,7 @@ export abstract class TestUtilsWalletStorage {
1148
1054
  return e
1149
1055
  }
1150
1056
 
1151
- static async insertTestOutputTagMap(
1152
- storage: StorageProvider,
1153
- o: TableOutput,
1154
- tag: TableOutputTag
1155
- ) {
1057
+ static async insertTestOutputTagMap(storage: StorageProvider, o: TableOutput, tag: TableOutputTag) {
1156
1058
  const now = new Date()
1157
1059
  const e: TableOutputTagMap = {
1158
1060
  created_at: now,
@@ -1165,11 +1067,7 @@ export abstract class TestUtilsWalletStorage {
1165
1067
  return e
1166
1068
  }
1167
1069
 
1168
- static async insertTestTxLabel(
1169
- storage: StorageProvider,
1170
- u: TableUser,
1171
- partial?: Partial<TableTxLabel>
1172
- ) {
1070
+ static async insertTestTxLabel(storage: StorageProvider, u: TableUser, partial?: Partial<TableTxLabel>) {
1173
1071
  const now = new Date()
1174
1072
  const e: TableTxLabel = {
1175
1073
  created_at: now,
@@ -1234,10 +1132,7 @@ export abstract class TestUtilsWalletStorage {
1234
1132
  return e
1235
1133
  }
1236
1134
 
1237
- static async insertTestCommission(
1238
- storage: StorageProvider,
1239
- t: TableTransaction
1240
- ) {
1135
+ static async insertTestCommission(storage: StorageProvider, t: TableTransaction) {
1241
1136
  const now = new Date()
1242
1137
  const e: TableCommission = {
1243
1138
  created_at: now,
@@ -1254,10 +1149,7 @@ export abstract class TestUtilsWalletStorage {
1254
1149
  return e
1255
1150
  }
1256
1151
 
1257
- static async createTestSetup1(
1258
- storage: StorageProvider,
1259
- u1IdentityKey?: string
1260
- ): Promise<TestSetup1> {
1152
+ static async createTestSetup1(storage: StorageProvider, u1IdentityKey?: string): Promise<TestSetup1> {
1261
1153
  const u1 = await _tu.insertTestUser(storage, u1IdentityKey)
1262
1154
  const u1basket1 = await _tu.insertTestOutputBasket(storage, u1)
1263
1155
  const u1basket2 = await _tu.insertTestOutputBasket(storage, u1)
@@ -1269,43 +1161,16 @@ export abstract class TestUtilsWalletStorage {
1269
1161
  const u1comm1 = await _tu.insertTestCommission(storage, u1tx1)
1270
1162
  const u1tx1label1 = await _tu.insertTestTxLabelMap(storage, u1tx1, u1label1)
1271
1163
  const u1tx1label2 = await _tu.insertTestTxLabelMap(storage, u1tx1, u1label2)
1272
- const u1tx1o0 = await _tu.insertTestOutput(
1273
- storage,
1274
- u1tx1,
1275
- 0,
1276
- 101,
1277
- u1basket1
1278
- )
1164
+ const u1tx1o0 = await _tu.insertTestOutput(storage, u1tx1, 0, 101, u1basket1)
1279
1165
  const u1o0tag1 = await _tu.insertTestOutputTagMap(storage, u1tx1o0, u1tag1)
1280
1166
  const u1o0tag2 = await _tu.insertTestOutputTagMap(storage, u1tx1o0, u1tag2)
1281
- const u1tx1o1 = await _tu.insertTestOutput(
1282
- storage,
1283
- u1tx1,
1284
- 1,
1285
- 111,
1286
- u1basket2
1287
- )
1167
+ const u1tx1o1 = await _tu.insertTestOutput(storage, u1tx1, 1, 111, u1basket2)
1288
1168
  const u1o1tag1 = await _tu.insertTestOutputTagMap(storage, u1tx1o1, u1tag1)
1289
1169
  const u1cert1 = await _tu.insertTestCertificate(storage, u1)
1290
- const u1cert1field1 = await _tu.insertTestCertificateField(
1291
- storage,
1292
- u1cert1,
1293
- 'bob',
1294
- 'your uncle'
1295
- )
1296
- const u1cert1field2 = await _tu.insertTestCertificateField(
1297
- storage,
1298
- u1cert1,
1299
- 'name',
1300
- 'alice'
1301
- )
1170
+ const u1cert1field1 = await _tu.insertTestCertificateField(storage, u1cert1, 'bob', 'your uncle')
1171
+ const u1cert1field2 = await _tu.insertTestCertificateField(storage, u1cert1, 'name', 'alice')
1302
1172
  const u1cert2 = await _tu.insertTestCertificate(storage, u1)
1303
- const u1cert2field1 = await _tu.insertTestCertificateField(
1304
- storage,
1305
- u1cert2,
1306
- 'name',
1307
- 'alice'
1308
- )
1173
+ const u1cert2field1 = await _tu.insertTestCertificateField(storage, u1cert2, 'name', 'alice')
1309
1174
  const u1cert3 = await _tu.insertTestCertificate(storage, u1)
1310
1175
  const u1sync1 = await _tu.insertTestSyncState(storage, u1)
1311
1176
 
@@ -1315,28 +1180,13 @@ export abstract class TestUtilsWalletStorage {
1315
1180
  const { tx: u2tx1 } = await _tu.insertTestTransaction(storage, u2, true)
1316
1181
  const u2comm1 = await _tu.insertTestCommission(storage, u2tx1)
1317
1182
  const u2tx1label1 = await _tu.insertTestTxLabelMap(storage, u2tx1, u2label1)
1318
- const u2tx1o0 = await _tu.insertTestOutput(
1319
- storage,
1320
- u2tx1,
1321
- 0,
1322
- 101,
1323
- u2basket1
1324
- )
1183
+ const u2tx1o0 = await _tu.insertTestOutput(storage, u2tx1, 0, 101, u2basket1)
1325
1184
  const { tx: u2tx2 } = await _tu.insertTestTransaction(storage, u2, true)
1326
1185
  const u2comm2 = await _tu.insertTestCommission(storage, u2tx2)
1327
1186
 
1328
1187
  const proven1 = await _tu.insertTestProvenTx(storage)
1329
- const req1 = await _tu.insertTestProvenTxReq(
1330
- storage,
1331
- undefined,
1332
- undefined,
1333
- true
1334
- )
1335
- const req2 = await _tu.insertTestProvenTxReq(
1336
- storage,
1337
- proven1.txid,
1338
- proven1.provenTxId
1339
- )
1188
+ const req1 = await _tu.insertTestProvenTxReq(storage, undefined, undefined, true)
1189
+ const req2 = await _tu.insertTestProvenTxReq(storage, proven1.txid, proven1.provenTxId)
1340
1190
 
1341
1191
  const we1 = await _tu.insertTestMonitorEvent(storage)
1342
1192
  return {
@@ -1404,21 +1254,16 @@ export abstract class TestUtilsWalletStorage {
1404
1254
  let prevOutput = outputMap[input.sourceOutpoint]
1405
1255
 
1406
1256
  if (!prevOutput) {
1407
- const { tx: transaction } = await _tu.insertTestTransaction(
1408
- storage,
1409
- user,
1410
- false,
1411
- {
1412
- txid: input.sourceOutpoint.split('.')[0],
1413
- satoshis: input.sourceSatoshis,
1414
- status: 'confirmed' as sdk.TransactionStatus,
1415
- description: 'Generated transaction for input',
1416
- lockTime: 0,
1417
- version: 1,
1418
- inputBEEF: [1, 2, 3, 4],
1419
- rawTx: [4, 3, 2, 1]
1420
- }
1421
- )
1257
+ const { tx: transaction } = await _tu.insertTestTransaction(storage, user, false, {
1258
+ txid: input.sourceOutpoint.split('.')[0],
1259
+ satoshis: input.sourceSatoshis,
1260
+ status: 'confirmed' as sdk.TransactionStatus,
1261
+ description: 'Generated transaction for input',
1262
+ lockTime: 0,
1263
+ version: 1,
1264
+ inputBEEF: [1, 2, 3, 4],
1265
+ rawTx: [4, 3, 2, 1]
1266
+ })
1422
1267
 
1423
1268
  const basket = await _tu.insertTestOutputBasket(storage, user, {
1424
1269
  name: randomBytesHex(6)
@@ -1454,21 +1299,16 @@ export abstract class TestUtilsWalletStorage {
1454
1299
 
1455
1300
  // Process transactions that spend those previous outputs
1456
1301
  for (const action of mockData.actions) {
1457
- const { tx: transaction } = await _tu.insertTestTransaction(
1458
- storage,
1459
- user,
1460
- false,
1461
- {
1462
- txid: `${action.txid}` || `tx_${action.satoshis}_${Date.now()}`,
1463
- satoshis: action.satoshis,
1464
- status: action.status as sdk.TransactionStatus,
1465
- description: action.description,
1466
- lockTime: action.lockTime,
1467
- version: action.version,
1468
- inputBEEF: [1, 2, 3, 4],
1469
- rawTx: [4, 3, 2, 1]
1470
- }
1471
- )
1302
+ const { tx: transaction } = await _tu.insertTestTransaction(storage, user, false, {
1303
+ txid: `${action.txid}` || `tx_${action.satoshis}_${Date.now()}`,
1304
+ satoshis: action.satoshis,
1305
+ status: action.status as sdk.TransactionStatus,
1306
+ description: action.description,
1307
+ lockTime: action.lockTime,
1308
+ version: action.version,
1309
+ inputBEEF: [1, 2, 3, 4],
1310
+ rawTx: [4, 3, 2, 1]
1311
+ })
1472
1312
 
1473
1313
  // Loop through action inputs and update chosen outputs
1474
1314
  for (const input of action.inputs || []) {
@@ -1476,9 +1316,7 @@ export abstract class TestUtilsWalletStorage {
1476
1316
  const prevOutput = outputMap[input.sourceOutpoint]
1477
1317
 
1478
1318
  if (!prevOutput) {
1479
- throw new Error(
1480
- `UTXO not found in outputMap for sourceOutpoint: ${input.sourceOutpoint}`
1481
- )
1319
+ throw new Error(`UTXO not found in outputMap for sourceOutpoint: ${input.sourceOutpoint}`)
1482
1320
  }
1483
1321
 
1484
1322
  // Set correct output fields as per input fields
@@ -1535,13 +1373,10 @@ export abstract class TestUtilsWalletStorage {
1535
1373
  for (const output of action.outputs) {
1536
1374
  if (output.tags) {
1537
1375
  // Ensure we fetch the correct inserted output for the current transaction
1538
- const insertedOutput =
1539
- outputMap[`${action.txid}.${output.outputIndex}`]
1376
+ const insertedOutput = outputMap[`${action.txid}.${output.outputIndex}`]
1540
1377
 
1541
1378
  if (!insertedOutput) {
1542
- throw new Error(
1543
- `Output not found for txid: ${action.txid}, vout: ${output.outputIndex}`
1544
- )
1379
+ throw new Error(`Output not found for txid: ${action.txid}, vout: ${output.outputIndex}`)
1545
1380
  }
1546
1381
 
1547
1382
  for (const tag of output.tags) {
@@ -1556,11 +1391,7 @@ export abstract class TestUtilsWalletStorage {
1556
1391
  })
1557
1392
 
1558
1393
  // Map the inserted tag to the correct output
1559
- await _tu.insertTestOutputTagMap(
1560
- storage,
1561
- insertedOutput,
1562
- insertedTag
1563
- )
1394
+ await _tu.insertTestOutputTagMap(storage, insertedOutput, insertedTag)
1564
1395
  }
1565
1396
  }
1566
1397
  }
@@ -1588,14 +1419,10 @@ export abstract class TestUtilsWalletStorage {
1588
1419
  callback: (txid: string) => Promise<sdk.GetMerklePathResult>
1589
1420
  ): void {
1590
1421
  for (const { services } of ctxs) {
1591
- services.getMerklePath = jest
1592
- .fn()
1593
- .mockImplementation(
1594
- async (txid: string): Promise<sdk.GetMerklePathResult> => {
1595
- const r = await callback(txid)
1596
- return r
1597
- }
1598
- )
1422
+ services.getMerklePath = jest.fn().mockImplementation(async (txid: string): Promise<sdk.GetMerklePathResult> => {
1423
+ const r = await callback(txid)
1424
+ return r
1425
+ })
1599
1426
  }
1600
1427
  }
1601
1428
 
@@ -1642,7 +1469,9 @@ export abstract class TestUtilsWalletStorage {
1642
1469
  }> {
1643
1470
  let destroyWallet = false
1644
1471
  if (wallet === 'main' || wallet === 'test') {
1645
- wallet = (await _tu.createWalletSetupEnv(wallet)).wallet
1472
+ const setup = await _tu.createWalletSetupEnv(wallet)
1473
+ wallet = setup.wallet
1474
+ if (!setup.storage.isActiveEnabled) await setup.storage.setActive(setup.storage.getActiveStore())
1646
1475
  destroyWallet = true
1647
1476
  }
1648
1477
 
@@ -1660,9 +1489,7 @@ export abstract class TestUtilsWalletStorage {
1660
1489
  const car = await wallet.createAction({
1661
1490
  outputs: [
1662
1491
  {
1663
- lockingScript: t
1664
- .lock(keyDeriver.rootKey.toString(), wallet.identityKey)
1665
- .toHex(),
1492
+ lockingScript: t.lock(keyDeriver.rootKey.toString(), wallet.identityKey).toHex(),
1666
1493
  satoshis,
1667
1494
  outputDescription: label,
1668
1495
  customInstructions: JSON.stringify({
@@ -1683,11 +1510,7 @@ export abstract class TestUtilsWalletStorage {
1683
1510
  const txidDo = car.txid!
1684
1511
  const outpoint = `${car.txid!}.0`
1685
1512
 
1686
- const unlock = t.unlock(
1687
- keyDeriver.rootKey.toString(),
1688
- wallet.identityKey,
1689
- satoshis
1690
- )
1513
+ const unlock = t.unlock(keyDeriver.rootKey.toString(), wallet.identityKey, satoshis)
1691
1514
 
1692
1515
  label = 'undoTxPair'
1693
1516
 
@@ -1835,10 +1658,7 @@ export interface TestWalletOnly {
1835
1658
  wallet: Wallet
1836
1659
  }
1837
1660
 
1838
- async function insertEmptySetup(
1839
- storage: StorageKnex,
1840
- identityKey: string
1841
- ): Promise<object> {
1661
+ async function insertEmptySetup(storage: StorageKnex, identityKey: string): Promise<object> {
1842
1662
  return {}
1843
1663
  }
1844
1664
 
@@ -1856,9 +1676,7 @@ export async function expectToThrowWERR<R>(
1856
1676
  } catch (eu: unknown) {
1857
1677
  const e = sdk.WalletError.fromUnknown(eu)
1858
1678
  if (e.name !== expectedClass.name || !e.isError)
1859
- console.log(
1860
- `Error name ${e.name} vs class name ${expectedClass.name}\n${e.stack}\n`
1861
- )
1679
+ console.log(`Error name ${e.name} vs class name ${expectedClass.name}\n${e.stack}\n`)
1862
1680
  // The output above may help debugging this situation or put a breakpoint
1863
1681
  // on the line below and look at e.stack
1864
1682
  expect(e.name).toBe(expectedClass.name)
@@ -1881,19 +1699,15 @@ function mockPostServices(
1881
1699
  ): void {
1882
1700
  for (const { services } of ctxs) {
1883
1701
  // Mock the services postBeef to avoid actually broadcasting new transactions.
1884
- services.postBeef = jest
1885
- .fn()
1886
- .mockImplementation(
1887
- (beef: Beef, txids: string[]): Promise<sdk.PostBeefResult[]> => {
1888
- status = !callback ? status : callback(beef, txids)
1889
- const r: sdk.PostBeefResult = {
1890
- name: 'mock',
1891
- status: 'success',
1892
- txidResults: txids.map(txid => ({ txid, status }))
1893
- }
1894
- return Promise.resolve([r])
1895
- }
1896
- )
1702
+ services.postBeef = jest.fn().mockImplementation((beef: Beef, txids: string[]): Promise<sdk.PostBeefResult[]> => {
1703
+ status = !callback ? status : callback(beef, txids)
1704
+ const r: sdk.PostBeefResult = {
1705
+ name: 'mock',
1706
+ status: 'success',
1707
+ txidResults: txids.map(txid => ({ txid, status }))
1708
+ }
1709
+ return Promise.resolve([r])
1710
+ })
1897
1711
  }
1898
1712
  }
1899
1713
 
@@ -1911,8 +1725,9 @@ let logEnabled: boolean = false
1911
1725
  * log('Test message', someVariable);
1912
1726
  * log('Another message with multiple params', param1, param2);
1913
1727
  */
1914
- export const log = (message: string, ...optionalParams: any[]): void => {
1915
- if (logEnabled) {
1728
+ export const logger = (message: string, ...optionalParams: any[]): void => {
1729
+ const isSingleTest = process.argv.some(arg => arg === '--testNamePattern' || arg === '-t')
1730
+ if (logEnabled || isSingleTest) {
1916
1731
  console.log(message, ...optionalParams)
1917
1732
  }
1918
1733
  }
@@ -1925,7 +1740,7 @@ export const log = (message: string, ...optionalParams: any[]): void => {
1925
1740
  */
1926
1741
  export const updateTable = async (updateFunction, id, testValues) => {
1927
1742
  for (const [key, value] of Object.entries(testValues)) {
1928
- log('id=', id, '[key]=', [key], 'value=', value)
1743
+ logger('id=', id, '[key]=', [key], 'value=', value)
1929
1744
  await updateFunction(id, { [key]: value })
1930
1745
  }
1931
1746
  }
@@ -1955,9 +1770,7 @@ export const verifyValues = (
1955
1770
 
1956
1771
  if (expectedValue instanceof Date) {
1957
1772
  // Use `validateUpdateTime` for Date comparisons
1958
- expect(
1959
- validateUpdateTime(actualValue, expectedValue, referenceTime)
1960
- ).toBe(true)
1773
+ expect(validateUpdateTime(actualValue, expectedValue, referenceTime)).toBe(true)
1961
1774
  } else {
1962
1775
  // Default to strict equality for other fields
1963
1776
  expect(actualValue).toStrictEqual(expectedValue)
@@ -1990,40 +1803,30 @@ export const validateUpdateTime = (
1990
1803
  const referenceTimestamp = referenceTime.getTime()
1991
1804
 
1992
1805
  if (logEnabled) {
1993
- log(
1806
+ logger(
1994
1807
  `Validation inputs:\n`,
1995
1808
  `Actual Time: ${actualTime.toISOString()} (Timestamp: ${actualTimestamp})\n`,
1996
1809
  `Expected Time: ${expectedTime.toISOString()} (Timestamp: ${expectedTimestamp})\n`,
1997
1810
  `Reference Time: ${referenceTime.toISOString()} (Timestamp: ${referenceTimestamp})`
1998
1811
  )
1999
1812
  }
2000
- const isWithinTolerance =
2001
- Math.abs(actualTimestamp - expectedTimestamp) <= toleranceMs
1813
+ const isWithinTolerance = Math.abs(actualTimestamp - expectedTimestamp) <= toleranceMs
2002
1814
  const isGreaterThanReference = actualTimestamp > referenceTimestamp
2003
1815
  const isoMatch = actualTime.toISOString() === expectedTime.toISOString()
2004
1816
  const utcMatch = actualTime.toUTCString() === expectedTime.toUTCString()
2005
- const humanReadableMatch =
2006
- actualTime.toDateString() === expectedTime.toDateString()
1817
+ const humanReadableMatch = actualTime.toDateString() === expectedTime.toDateString()
2007
1818
 
2008
1819
  // Updated: Allow test to pass if the difference is too large to fail
2009
- if (
2010
- !isWithinTolerance &&
2011
- Math.abs(actualTimestamp - expectedTimestamp) > 100000000
2012
- ) {
1820
+ if (!isWithinTolerance && Math.abs(actualTimestamp - expectedTimestamp) > 100000000) {
2013
1821
  if (logEnabled) {
2014
- log(
1822
+ logger(
2015
1823
  `Skipping validation failure: The difference is unusually large (${Math.abs(actualTimestamp - expectedTimestamp)}ms). Validation passed for extreme outliers.`
2016
1824
  )
2017
1825
  }
2018
1826
  return true
2019
1827
  }
2020
1828
 
2021
- const isValid =
2022
- isWithinTolerance ||
2023
- isGreaterThanReference ||
2024
- isoMatch ||
2025
- utcMatch ||
2026
- humanReadableMatch
1829
+ const isValid = isWithinTolerance || isGreaterThanReference || isoMatch || utcMatch || humanReadableMatch
2027
1830
 
2028
1831
  if (!isValid) {
2029
1832
  console.error(
@@ -2040,10 +1843,7 @@ export const validateUpdateTime = (
2040
1843
  )
2041
1844
  } else {
2042
1845
  if (logEnabled) {
2043
- log(
2044
- `Validation succeeded:\n`,
2045
- `Actual Time: ${actualTime.toISOString()} (Timestamp: ${actualTimestamp})`
2046
- )
1846
+ logger(`Validation succeeded:\n`, `Actual Time: ${actualTime.toISOString()} (Timestamp: ${actualTimestamp})`)
2047
1847
  }
2048
1848
  }
2049
1849
 
@@ -2084,14 +1884,11 @@ export const logUniqueConstraintError = (
2084
1884
  // Construct the expected error message string with the table name prefixed to each column
2085
1885
  const expectedErrorString = `SQLITE_CONSTRAINT: UNIQUE constraint failed: ${columnNames.map(col => `${tableName}.${col}`).join(', ')}`
2086
1886
 
2087
- log('expectedErrorString=', expectedErrorString)
1887
+ logger('expectedErrorString=', expectedErrorString)
2088
1888
 
2089
1889
  // Check if the error message contains the expected string
2090
1890
  if (error.message.includes(expectedErrorString)) {
2091
- console.log(
2092
- `Unique constraint error for columns ${columnNames.join(', ')} caught as expected:`,
2093
- error.message
2094
- )
1891
+ console.log(`Unique constraint error for columns ${columnNames.join(', ')} caught as expected:`, error.message)
2095
1892
  } else {
2096
1893
  console.log('Unexpected error message:', error.message)
2097
1894
  }
@@ -2127,12 +1924,10 @@ const logForeignConstraintError = (
2127
1924
  logEnabled: boolean = false
2128
1925
  ): void => {
2129
1926
  if (logEnabled) {
2130
- if (
2131
- error.message.includes(`SQLITE_CONSTRAINT: FOREIGN KEY constraint failed`)
2132
- ) {
2133
- log(`${columnName} constraint error caught as expected:`, error.message)
1927
+ if (error.message.includes(`SQLITE_CONSTRAINT: FOREIGN KEY constraint failed`)) {
1928
+ logger(`${columnName} constraint error caught as expected:`, error.message)
2134
1929
  } else {
2135
- log('Unexpected error:', error.message)
1930
+ logger('Unexpected error:', error.message)
2136
1931
  throw new Error(`Unexpected error: ${error.message}`)
2137
1932
  }
2138
1933
  }
@@ -2170,7 +1965,7 @@ export const triggerUniqueConstraintError = async (
2170
1965
 
2171
1966
  const rows = await storage[findMethod]({})
2172
1967
  if (logEnabled) {
2173
- log('rows=', rows)
1968
+ logger('rows=', rows)
2174
1969
  }
2175
1970
 
2176
1971
  if (!rows || rows.length < 2) {
@@ -2180,9 +1975,7 @@ export const triggerUniqueConstraintError = async (
2180
1975
  }
2181
1976
 
2182
1977
  if (!(columnName in rows[0])) {
2183
- throw new Error(
2184
- `Column "${columnName}" does not exist in the table "${tableName}".`
2185
- )
1978
+ throw new Error(`Column "${columnName}" does not exist in the table "${tableName}".`)
2186
1979
  }
2187
1980
 
2188
1981
  if (id === invalidValue[columnName]) {
@@ -2192,7 +1985,7 @@ export const triggerUniqueConstraintError = async (
2192
1985
  }
2193
1986
 
2194
1987
  if (logEnabled) {
2195
- log('invalidValue=', invalidValue)
1988
+ logger('invalidValue=', invalidValue)
2196
1989
  }
2197
1990
 
2198
1991
  // Create columnNames from invalidValue keys before the update
@@ -2200,7 +1993,7 @@ export const triggerUniqueConstraintError = async (
2200
1993
 
2201
1994
  try {
2202
1995
  if (logEnabled) {
2203
- log('update id=', id)
1996
+ logger('update id=', id)
2204
1997
  }
2205
1998
 
2206
1999
  // Attempt the update with the new value that should trigger the constraint error
@@ -2254,9 +2047,7 @@ export const triggerForeignKeyConstraintError = async (
2254
2047
  }
2255
2048
 
2256
2049
  if (!(columnName in rows[0])) {
2257
- throw new Error(
2258
- `Column "${columnName}" does not exist in the table "${tableName}".`
2259
- )
2050
+ throw new Error(`Column "${columnName}" does not exist in the table "${tableName}".`)
2260
2051
  }
2261
2052
 
2262
2053
  if (id === invalidValue[columnName]) {
@@ -2270,7 +2061,7 @@ export const triggerForeignKeyConstraintError = async (
2270
2061
  try {
2271
2062
  // Attempt the update with the invalid value that should trigger the foreign key constraint error
2272
2063
  const r = await storage[updateMethod](id, invalidValue) // Pass the object with the column name and value
2273
- log('r=', r)
2064
+ logger('r=', r)
2274
2065
  return false
2275
2066
  } catch (error: any) {
2276
2067
  logForeignConstraintError(error, tableName, columnName, logEnabled)
@@ -2312,10 +2103,7 @@ async function cleanTransactionsUsingAbort(
2312
2103
  * @param {StorageKnex} storage - The storage instance to query transactions from.
2313
2104
  * @returns {Promise<boolean>} - Resolves to `true` if all `'nosend'` transactions were successfully aborted.
2314
2105
  */
2315
- export async function cleanUnsentTransactionsUsingAbort(
2316
- wallet: Wallet,
2317
- storage: StorageKnex
2318
- ): Promise<boolean> {
2106
+ export async function cleanUnsentTransactionsUsingAbort(wallet: Wallet, storage: StorageKnex): Promise<boolean> {
2319
2107
  const result = await cleanTransactionsUsingAbort(wallet, storage, 'nosend')
2320
2108
  expect(result).toBe(true)
2321
2109
  return result
@@ -2328,10 +2116,7 @@ export async function cleanUnsentTransactionsUsingAbort(
2328
2116
  * @param {StorageKnex} storage - The storage instance to query transactions from.
2329
2117
  * @returns {Promise<boolean>} - Resolves to `true` if all `'unsigned'` transactions were successfully aborted.
2330
2118
  */
2331
- export async function cleanUnsignedTransactionsUsingAbort(
2332
- wallet: Wallet,
2333
- storage: StorageKnex
2334
- ): Promise<boolean> {
2119
+ export async function cleanUnsignedTransactionsUsingAbort(wallet: Wallet, storage: StorageKnex): Promise<boolean> {
2335
2120
  const result = await cleanTransactionsUsingAbort(wallet, storage, 'unsigned')
2336
2121
  expect(result).toBe(true)
2337
2122
  return result
@@ -2344,15 +2129,8 @@ export async function cleanUnsignedTransactionsUsingAbort(
2344
2129
  * @param {StorageKnex} storage - The storage instance to query transactions from.
2345
2130
  * @returns {Promise<boolean>} - Resolves to `true` if all `'unprocessed'` transactions were successfully aborted.
2346
2131
  */
2347
- export async function cleanUnprocessedTransactionsUsingAbort(
2348
- wallet: Wallet,
2349
- storage: StorageKnex
2350
- ): Promise<boolean> {
2351
- const result = await cleanTransactionsUsingAbort(
2352
- wallet,
2353
- storage,
2354
- 'unprocessed'
2355
- )
2132
+ export async function cleanUnprocessedTransactionsUsingAbort(wallet: Wallet, storage: StorageKnex): Promise<boolean> {
2133
+ const result = await cleanTransactionsUsingAbort(wallet, storage, 'unprocessed')
2356
2134
  expect(result).toBe(true)
2357
2135
  return result
2358
2136
  }
@@ -2370,10 +2148,7 @@ export const normalizeDate = (value: any): string | null => {
2370
2148
  return null
2371
2149
  }
2372
2150
 
2373
- export async function logTransaction(
2374
- storage: StorageKnex,
2375
- txid: HexString
2376
- ): Promise<string> {
2151
+ export async function logTransaction(storage: StorageKnex, txid: HexString): Promise<string> {
2377
2152
  let amount: SatoshiValue = 0
2378
2153
  let log = `\n==== Transaction Log ====\ntxid: ${txid}\n`
2379
2154
 
@@ -2426,10 +2201,7 @@ export async function logTransaction(
2426
2201
  return log
2427
2202
  }
2428
2203
 
2429
- export async function logOutput(
2430
- storage: StorageKnex,
2431
- output: TableOutput
2432
- ): Promise<string> {
2204
+ export async function logOutput(storage: StorageKnex, output: TableOutput): Promise<string> {
2433
2205
  let log = `\n-- Output --\n`
2434
2206
  log += `Outpoint: ${output.txid}:${output.vout}\n`
2435
2207
  log += `Satoshis: ${output.satoshis}\n`
@@ -2508,12 +2280,7 @@ export async function logInput(
2508
2280
  const spentByTxid = spendingTx[0].txid
2509
2281
 
2510
2282
  log += `${indent} ↳ Spent By TXID: ${spentByTxid}\n`
2511
- log += await logInput(
2512
- storage,
2513
- spentByTxid!,
2514
- prevOutput.vout,
2515
- indentLevel + 2
2516
- )
2283
+ log += await logInput(storage, spentByTxid!, prevOutput.vout, indentLevel + 2)
2517
2284
  } else {
2518
2285
  log += `${indent} ↳ Spent By TXID Unknown (transactionId: ${prevOutput.spentBy})\n`
2519
2286
  }