@bsv/wallet-toolbox 1.1.59 → 1.1.61

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 (527) 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/bitrails.test.js.map +1 -1
  65. package/out/src/services/__tests/getMerklePath.test.js.map +1 -1
  66. package/out/src/services/__tests/getRawTx.test.js.map +1 -1
  67. package/out/src/services/__tests/verifyBeef.test.js +2 -1
  68. package/out/src/services/__tests/verifyBeef.test.js.map +1 -1
  69. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  70. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  71. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +1 -1
  72. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +1 -1
  73. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  74. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +1 -3
  75. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  76. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  77. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  78. package/out/src/services/providers/ARC.d.ts.map +1 -1
  79. package/out/src/services/providers/ARC.js +1 -2
  80. package/out/src/services/providers/ARC.js.map +1 -1
  81. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  82. package/out/src/services/providers/Bitails.js +62 -134
  83. package/out/src/services/providers/Bitails.js.map +1 -1
  84. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  85. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  86. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  87. package/out/src/services/providers/WhatsOnChain.js +6 -21
  88. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  89. package/out/src/services/providers/__tests/WhatsOnChain.test.js +1 -2
  90. package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +1 -1
  91. package/out/src/services/providers/echangeRates.d.ts.map +1 -1
  92. package/out/src/services/providers/echangeRates.js.map +1 -1
  93. package/out/src/signer/WalletSigner.d.ts.map +1 -1
  94. package/out/src/signer/WalletSigner.js.map +1 -1
  95. package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
  96. package/out/src/signer/methods/acquireDirectCertificate.js +1 -3
  97. package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
  98. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  99. package/out/src/signer/methods/buildSignableTransaction.js +3 -11
  100. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  101. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  102. package/out/src/signer/methods/createAction.js +3 -10
  103. package/out/src/signer/methods/createAction.js.map +1 -1
  104. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  105. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  106. package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
  107. package/out/src/signer/methods/proveCertificate.js.map +1 -1
  108. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  109. package/out/src/signer/methods/signAction.js +2 -7
  110. package/out/src/signer/methods/signAction.js.map +1 -1
  111. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  112. package/out/src/storage/StorageKnex.js +15 -44
  113. package/out/src/storage/StorageKnex.js.map +1 -1
  114. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  115. package/out/src/storage/StorageProvider.js +9 -34
  116. package/out/src/storage/StorageProvider.js.map +1 -1
  117. package/out/src/storage/StorageReader.d.ts.map +1 -1
  118. package/out/src/storage/StorageReader.js.map +1 -1
  119. package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
  120. package/out/src/storage/StorageReaderWriter.js.map +1 -1
  121. package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
  122. package/out/src/storage/StorageSyncReader.js.map +1 -1
  123. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  124. package/out/src/storage/WalletStorageManager.js +5 -10
  125. package/out/src/storage/WalletStorageManager.js.map +1 -1
  126. package/out/src/storage/__test/WalletStorageManager.test.js +2 -8
  127. package/out/src/storage/__test/WalletStorageManager.test.js.map +1 -1
  128. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +10 -30
  129. package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +1 -1
  130. package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.d.ts.map +1 -1
  131. package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.js +17 -28
  132. package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.js.map +1 -1
  133. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  134. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +6 -20
  135. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  136. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  137. package/out/src/storage/methods/createAction.js +4 -9
  138. package/out/src/storage/methods/createAction.js.map +1 -1
  139. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  140. package/out/src/storage/methods/generateChange.js +7 -18
  141. package/out/src/storage/methods/generateChange.js.map +1 -1
  142. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  143. package/out/src/storage/methods/getBeefForTransaction.js +1 -3
  144. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  145. package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
  146. package/out/src/storage/methods/getSyncChunk.js.map +1 -1
  147. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  148. package/out/src/storage/methods/internalizeAction.js +2 -9
  149. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  150. package/out/src/storage/methods/listActions.d.ts.map +1 -1
  151. package/out/src/storage/methods/listActions.js +3 -15
  152. package/out/src/storage/methods/listActions.js.map +1 -1
  153. package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
  154. package/out/src/storage/methods/listCertificates.js.map +1 -1
  155. package/out/src/storage/methods/listOutputs.d.ts.map +1 -1
  156. package/out/src/storage/methods/listOutputs.js +4 -11
  157. package/out/src/storage/methods/listOutputs.js.map +1 -1
  158. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  159. package/out/src/storage/methods/processAction.js +4 -10
  160. package/out/src/storage/methods/processAction.js.map +1 -1
  161. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  162. package/out/src/storage/methods/purgeData.js +8 -32
  163. package/out/src/storage/methods/purgeData.js.map +1 -1
  164. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  165. package/out/src/storage/methods/reviewStatus.js +1 -3
  166. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  167. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  168. package/out/src/storage/remoting/StorageClient.js +15 -41
  169. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  170. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  171. package/out/src/storage/remoting/StorageServer.js +2 -5
  172. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  173. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  174. package/out/src/storage/schema/KnexMigrations.js +24 -130
  175. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  176. package/out/src/storage/schema/entities/Certificate.d.ts.map +1 -1
  177. package/out/src/storage/schema/entities/Certificate.js +1 -1
  178. package/out/src/storage/schema/entities/Certificate.js.map +1 -1
  179. package/out/src/storage/schema/entities/CertificateField.d.ts.map +1 -1
  180. package/out/src/storage/schema/entities/CertificateField.js +2 -5
  181. package/out/src/storage/schema/entities/CertificateField.js.map +1 -1
  182. package/out/src/storage/schema/entities/Commission.d.ts.map +1 -1
  183. package/out/src/storage/schema/entities/Commission.js +2 -5
  184. package/out/src/storage/schema/entities/Commission.js.map +1 -1
  185. package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
  186. package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
  187. package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
  188. package/out/src/storage/schema/entities/MergeEntity.js +14 -9
  189. package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
  190. package/out/src/storage/schema/entities/Output.d.ts.map +1 -1
  191. package/out/src/storage/schema/entities/Output.js +8 -25
  192. package/out/src/storage/schema/entities/Output.js.map +1 -1
  193. package/out/src/storage/schema/entities/OutputBasket.d.ts.map +1 -1
  194. package/out/src/storage/schema/entities/OutputBasket.js +1 -1
  195. package/out/src/storage/schema/entities/OutputBasket.js.map +1 -1
  196. package/out/src/storage/schema/entities/OutputTag.d.ts.map +1 -1
  197. package/out/src/storage/schema/entities/OutputTag.js +1 -1
  198. package/out/src/storage/schema/entities/OutputTag.js.map +1 -1
  199. package/out/src/storage/schema/entities/OutputTagMap.d.ts.map +1 -1
  200. package/out/src/storage/schema/entities/OutputTagMap.js +3 -7
  201. package/out/src/storage/schema/entities/OutputTagMap.js.map +1 -1
  202. package/out/src/storage/schema/entities/ProvenTx.d.ts.map +1 -1
  203. package/out/src/storage/schema/entities/ProvenTx.js +10 -20
  204. package/out/src/storage/schema/entities/ProvenTx.js.map +1 -1
  205. package/out/src/storage/schema/entities/ProvenTxReq.d.ts.map +1 -1
  206. package/out/src/storage/schema/entities/ProvenTxReq.js +8 -18
  207. package/out/src/storage/schema/entities/ProvenTxReq.js.map +1 -1
  208. package/out/src/storage/schema/entities/SyncState.d.ts +1 -0
  209. package/out/src/storage/schema/entities/SyncState.d.ts.map +1 -1
  210. package/out/src/storage/schema/entities/SyncState.js +41 -6
  211. package/out/src/storage/schema/entities/SyncState.js.map +1 -1
  212. package/out/src/storage/schema/entities/Transaction.d.ts.map +1 -1
  213. package/out/src/storage/schema/entities/Transaction.js +4 -13
  214. package/out/src/storage/schema/entities/Transaction.js.map +1 -1
  215. package/out/src/storage/schema/entities/TxLabel.d.ts.map +1 -1
  216. package/out/src/storage/schema/entities/TxLabel.js +1 -1
  217. package/out/src/storage/schema/entities/TxLabel.js.map +1 -1
  218. package/out/src/storage/schema/entities/TxLabelMap.d.ts.map +1 -1
  219. package/out/src/storage/schema/entities/TxLabelMap.js +3 -9
  220. package/out/src/storage/schema/entities/TxLabelMap.js.map +1 -1
  221. package/out/src/storage/schema/entities/User.d.ts.map +1 -1
  222. package/out/src/storage/schema/entities/User.js +3 -5
  223. package/out/src/storage/schema/entities/User.js.map +1 -1
  224. package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +1 -1
  225. package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +1 -1
  226. package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +1 -1
  227. package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js.map +1 -1
  228. package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +1 -1
  229. package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js.map +1 -1
  230. package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +1 -1
  231. package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +1 -1
  232. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +1 -2
  233. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
  234. package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js.map +1 -1
  235. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +2 -2
  236. package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +1 -1
  237. package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js.map +1 -1
  238. package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js.map +1 -1
  239. package/out/src/storage/schema/entities/__tests/stampLogTests.test.js.map +1 -1
  240. package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +1 -1
  241. package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
  242. package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
  243. package/out/src/storage/sync/StorageMySQLDojoReader.js +1 -3
  244. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  245. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
  246. package/out/src/utility/ScriptTemplateBRC29.js +1 -2
  247. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
  248. package/out/src/utility/stampLog.d.ts.map +1 -1
  249. package/out/src/utility/stampLog.js.map +1 -1
  250. package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
  251. package/out/src/utility/tscProofToMerklePath.js.map +1 -1
  252. package/out/src/utility/utilityHelpers.buffer.d.ts.map +1 -1
  253. package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
  254. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  255. package/out/src/utility/utilityHelpers.js +1 -3
  256. package/out/src/utility/utilityHelpers.js.map +1 -1
  257. package/out/test/Wallet/StorageClient/storageClient.man.test.js.map +1 -1
  258. package/out/test/Wallet/action/internalizeAction.a.test.js.map +1 -1
  259. package/out/test/Wallet/certificate/acquireCertificate.test.js.map +1 -1
  260. package/out/test/Wallet/certificate/listCertificates.test.js.map +1 -1
  261. package/out/test/Wallet/get/getHeaderForHeight.test.js +2 -6
  262. package/out/test/Wallet/get/getHeaderForHeight.test.js.map +1 -1
  263. package/out/test/Wallet/get/getHeight.test.js.map +1 -1
  264. package/out/test/Wallet/get/getKnownTxids.test.js.map +1 -1
  265. package/out/test/Wallet/get/getNetwork.test.js.map +1 -1
  266. package/out/test/Wallet/get/getVersion.test.js.map +1 -1
  267. package/out/test/Wallet/live/walletLive.man.test.d.ts.map +1 -1
  268. package/out/test/Wallet/live/walletLive.man.test.js +3 -9
  269. package/out/test/Wallet/live/walletLive.man.test.js.map +1 -1
  270. package/out/test/Wallet/local/localWallet.man.test.d.ts.map +1 -1
  271. package/out/test/Wallet/local/localWallet.man.test.js +15 -22
  272. package/out/test/Wallet/local/localWallet.man.test.js.map +1 -1
  273. package/out/test/Wallet/specOps/specOps.man.test.js +1 -4
  274. package/out/test/Wallet/specOps/specOps.man.test.js.map +1 -1
  275. package/out/test/Wallet/support/janitor.man.test.js.map +1 -1
  276. package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js.map +1 -1
  277. package/out/test/Wallet/sync/setActive.test.js +73 -50
  278. package/out/test/Wallet/sync/setActive.test.js.map +1 -1
  279. package/out/test/checkDB.d.ts.map +1 -1
  280. package/out/test/checkDB.js.map +1 -1
  281. package/out/test/examples/backup.man.test.d.ts.map +1 -1
  282. package/out/test/examples/backup.man.test.js.map +1 -1
  283. package/out/test/examples/pushdrop.test.d.ts.map +1 -1
  284. package/out/test/examples/pushdrop.test.js +5 -4
  285. package/out/test/examples/pushdrop.test.js.map +1 -1
  286. package/out/test/monitor/Monitor.test.js.map +1 -1
  287. package/out/test/services/Services.test.js.map +1 -1
  288. package/out/test/storage/KnexMigrations.test.js.map +1 -1
  289. package/out/test/storage/StorageMySQLDojoReader.man.test.js +1 -3
  290. package/out/test/storage/StorageMySQLDojoReader.man.test.js.map +1 -1
  291. package/out/test/storage/count.test.js.map +1 -1
  292. package/out/test/storage/find.test.js +5 -10
  293. package/out/test/storage/find.test.js.map +1 -1
  294. package/out/test/storage/findLegacy.test.js.map +1 -1
  295. package/out/test/storage/insert.test.js.map +1 -1
  296. package/out/test/storage/update.test.js +7 -19
  297. package/out/test/storage/update.test.js.map +1 -1
  298. package/out/test/storage/update2.test.js +22 -24
  299. package/out/test/storage/update2.test.js.map +1 -1
  300. package/out/test/utils/TestUtilsWalletStorage.d.ts +3 -1
  301. package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
  302. package/out/test/utils/TestUtilsWalletStorage.js +52 -76
  303. package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
  304. package/out/test/wallet/action/abortAction.test.d.ts.map +1 -0
  305. package/out/test/wallet/action/abortAction.test.js.map +1 -0
  306. package/out/test/wallet/action/createAction.test.d.ts.map +1 -0
  307. package/out/test/{Wallet → wallet}/action/createAction.test.js +1 -2
  308. package/out/test/wallet/action/createAction.test.js.map +1 -0
  309. package/out/test/{Wallet → wallet}/action/createAction2.test.d.ts.map +1 -1
  310. package/out/test/{Wallet → wallet}/action/createAction2.test.js +6 -16
  311. package/out/test/wallet/action/createAction2.test.js.map +1 -0
  312. package/out/test/wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +1 -0
  313. package/out/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.js.map +1 -1
  314. package/out/test/wallet/action/internalizeAction.test.d.ts.map +1 -0
  315. package/out/test/wallet/action/internalizeAction.test.js.map +1 -0
  316. package/out/test/wallet/action/relinquishOutput.test.d.ts.map +1 -0
  317. package/out/test/{Wallet → wallet}/action/relinquishOutput.test.js.map +1 -1
  318. package/out/test/wallet/construct/Wallet.constructor.test.d.ts.map +1 -0
  319. package/out/test/{Wallet → wallet}/construct/Wallet.constructor.test.js.map +1 -1
  320. package/out/test/wallet/list/listActions.test.d.ts.map +1 -0
  321. package/out/test/wallet/list/listActions.test.js.map +1 -0
  322. package/out/test/wallet/list/listActions2.test.d.ts.map +1 -0
  323. package/out/test/wallet/list/listActions2.test.js.map +1 -0
  324. package/out/test/wallet/list/listCertificates.test.d.ts.map +1 -0
  325. package/out/test/{Wallet → wallet}/list/listCertificates.test.js +2 -6
  326. package/out/test/wallet/list/listCertificates.test.js.map +1 -0
  327. package/out/test/wallet/list/listOutputs.test.d.ts.map +1 -0
  328. package/out/test/{Wallet → wallet}/list/listOutputs.test.js +2 -10
  329. package/out/test/wallet/list/listOutputs.test.js.map +1 -0
  330. package/out/test/wallet/sync/Wallet.sync.test.d.ts.map +1 -0
  331. package/out/test/{Wallet → wallet}/sync/Wallet.sync.test.js +4 -6
  332. package/out/test/wallet/sync/Wallet.sync.test.js.map +1 -0
  333. package/out/tsconfig.all.tsbuildinfo +1 -1
  334. package/package.json +3 -3
  335. package/src/Setup.ts +15 -52
  336. package/src/Wallet.ts +58 -161
  337. package/src/monitor/Monitor.ts +7 -22
  338. package/src/monitor/MonitorDaemon.ts +6 -23
  339. package/src/monitor/tasks/TaskCheckForProofs.ts +4 -23
  340. package/src/monitor/tasks/TaskClock.ts +1 -3
  341. package/src/monitor/tasks/TaskFailAbandoned.ts +1 -3
  342. package/src/monitor/tasks/TaskNewHeader.ts +1 -4
  343. package/src/monitor/tasks/TaskPurge.ts +1 -2
  344. package/src/monitor/tasks/TaskReviewStatus.ts +1 -3
  345. package/src/monitor/tasks/TaskSendWaiting.ts +3 -10
  346. package/src/sdk/CertOps.ts +31 -103
  347. package/src/sdk/PrivilegedKeyManager.ts +18 -48
  348. package/src/sdk/WERR_errors.ts +6 -25
  349. package/src/sdk/WalletError.ts +5 -21
  350. package/src/sdk/WalletServices.interfaces.ts +11 -33
  351. package/src/sdk/WalletStorage.interfaces.ts +25 -91
  352. package/src/sdk/__test/CertificateLifeCycle.test.ts +9 -27
  353. package/src/sdk/__test/PrivilegedKeyManager.test.ts +29 -66
  354. package/src/sdk/types.ts +6 -26
  355. package/src/sdk/validationHelpers.ts +111 -402
  356. package/src/services/Services.ts +51 -114
  357. package/src/services/__tests/bitrails.test.ts +4 -15
  358. package/src/services/__tests/getMerklePath.test.ts +1 -2
  359. package/src/services/__tests/getRawTx.test.ts +1 -3
  360. package/src/services/__tests/verifyBeef.test.ts +2 -1
  361. package/src/services/chaintracker/ChaintracksChainTracker.ts +3 -13
  362. package/src/services/chaintracker/chaintracks/BlockHeaderApi.ts +4 -12
  363. package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +9 -27
  364. package/src/services/createDefaultWalletServicesOptions.ts +2 -5
  365. package/src/services/providers/ARC.ts +5 -24
  366. package/src/services/providers/Bitails.ts +61 -159
  367. package/src/services/providers/SdkWhatsOnChain.ts +4 -17
  368. package/src/services/providers/WhatsOnChain.ts +31 -100
  369. package/src/services/providers/__tests/WhatsOnChain.test.ts +5 -15
  370. package/src/services/providers/echangeRates.ts +7 -22
  371. package/src/signer/WalletSigner.ts +1 -5
  372. package/src/signer/methods/acquireDirectCertificate.ts +1 -4
  373. package/src/signer/methods/buildSignableTransaction.ts +5 -20
  374. package/src/signer/methods/createAction.ts +15 -54
  375. package/src/signer/methods/internalizeAction.ts +10 -39
  376. package/src/signer/methods/proveCertificate.ts +2 -5
  377. package/src/signer/methods/signAction.ts +9 -39
  378. package/src/storage/StorageKnex.ts +166 -499
  379. package/src/storage/StorageProvider.ts +75 -291
  380. package/src/storage/StorageReader.ts +20 -65
  381. package/src/storage/StorageReaderWriter.ts +67 -264
  382. package/src/storage/StorageSyncReader.ts +2 -5
  383. package/src/storage/WalletStorageManager.ts +33 -108
  384. package/src/storage/__test/WalletStorageManager.test.ts +6 -23
  385. package/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts +53 -171
  386. package/src/storage/methods/__test/GenerateChange/randomValsUsed1.ts +17 -28
  387. package/src/storage/methods/attemptToPostReqsToNetwork.ts +9 -37
  388. package/src/storage/methods/createAction.ts +45 -181
  389. package/src/storage/methods/generateChange.ts +33 -114
  390. package/src/storage/methods/getBeefForTransaction.ts +7 -37
  391. package/src/storage/methods/getSyncChunk.ts +18 -69
  392. package/src/storage/methods/internalizeAction.ts +18 -70
  393. package/src/storage/methods/listActions.ts +6 -23
  394. package/src/storage/methods/listCertificates.ts +5 -14
  395. package/src/storage/methods/listOutputs.ts +14 -68
  396. package/src/storage/methods/processAction.ts +29 -104
  397. package/src/storage/methods/purgeData.ts +11 -45
  398. package/src/storage/methods/reviewStatus.ts +3 -9
  399. package/src/storage/remoting/StorageClient.ts +43 -146
  400. package/src/storage/remoting/StorageServer.ts +21 -59
  401. package/src/storage/schema/KnexMigrations.ts +34 -165
  402. package/src/storage/schema/entities/Certificate.ts +3 -14
  403. package/src/storage/schema/entities/CertificateField.ts +6 -28
  404. package/src/storage/schema/entities/Commission.ts +6 -23
  405. package/src/storage/schema/entities/EntityBase.ts +1 -6
  406. package/src/storage/schema/entities/MergeEntity.ts +14 -21
  407. package/src/storage/schema/entities/Output.ts +10 -39
  408. package/src/storage/schema/entities/OutputBasket.ts +4 -16
  409. package/src/storage/schema/entities/OutputTag.ts +4 -17
  410. package/src/storage/schema/entities/OutputTagMap.ts +7 -30
  411. package/src/storage/schema/entities/ProvenTx.ts +16 -57
  412. package/src/storage/schema/entities/ProvenTxReq.ts +29 -93
  413. package/src/storage/schema/entities/SyncState.ts +64 -116
  414. package/src/storage/schema/entities/Transaction.ts +10 -35
  415. package/src/storage/schema/entities/TxLabel.ts +4 -17
  416. package/src/storage/schema/entities/TxLabelMap.ts +6 -28
  417. package/src/storage/schema/entities/User.ts +8 -31
  418. package/src/storage/schema/entities/__tests/CertificateFieldTests.test.ts +23 -54
  419. package/src/storage/schema/entities/__tests/CertificateTests.test.ts +26 -59
  420. package/src/storage/schema/entities/__tests/CommissionTests.test.ts +2 -11
  421. package/src/storage/schema/entities/__tests/OutputBasketTests.test.ts +2 -10
  422. package/src/storage/schema/entities/__tests/OutputTagMapTests.test.ts +2 -10
  423. package/src/storage/schema/entities/__tests/OutputTagTests.test.ts +1 -4
  424. package/src/storage/schema/entities/__tests/OutputTests.test.ts +3 -14
  425. package/src/storage/schema/entities/__tests/ProvenTxReqTests.test.ts +4 -16
  426. package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +5 -18
  427. package/src/storage/schema/entities/__tests/SyncStateTests.test.ts +5 -26
  428. package/src/storage/schema/entities/__tests/TransactionTests.test.ts +12 -48
  429. package/src/storage/schema/entities/__tests/TxLabelMapTests.test.ts +4 -22
  430. package/src/storage/schema/entities/__tests/TxLabelTests.test.ts +2 -10
  431. package/src/storage/schema/entities/__tests/stampLogTests.test.ts +3 -10
  432. package/src/storage/schema/entities/__tests/usersTests.test.ts +4 -7
  433. package/src/storage/schema/tables/TableSettings.ts +1 -3
  434. package/src/storage/sync/StorageMySQLDojoReader.ts +47 -148
  435. package/src/utility/ScriptTemplateBRC29.ts +2 -11
  436. package/src/utility/stampLog.ts +2 -6
  437. package/src/utility/tscProofToMerklePath.ts +1 -4
  438. package/src/utility/utilityHelpers.buffer.ts +3 -12
  439. package/src/utility/utilityHelpers.ts +14 -49
  440. package/test/Wallet/StorageClient/storageClient.man.test.ts +2 -8
  441. package/test/Wallet/action/internalizeAction.a.test.ts +8 -23
  442. package/test/Wallet/certificate/acquireCertificate.test.ts +10 -24
  443. package/test/Wallet/certificate/listCertificates.test.ts +8 -18
  444. package/test/Wallet/get/getHeaderForHeight.test.ts +4 -15
  445. package/test/Wallet/get/getHeight.test.ts +2 -6
  446. package/test/Wallet/get/getKnownTxids.test.ts +1 -5
  447. package/test/Wallet/get/getNetwork.test.ts +1 -2
  448. package/test/Wallet/get/getVersion.test.ts +1 -2
  449. package/test/Wallet/live/walletLive.man.test.ts +14 -41
  450. package/test/Wallet/local/localWallet.man.test.ts +26 -99
  451. package/test/Wallet/specOps/specOps.man.test.ts +4 -13
  452. package/test/Wallet/support/janitor.man.test.ts +2 -7
  453. package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +11 -34
  454. package/test/Wallet/sync/setActive.test.ts +75 -61
  455. package/test/checkDB.ts +2 -8
  456. package/test/examples/backup.man.test.ts +2 -9
  457. package/test/examples/pushdrop.test.ts +7 -20
  458. package/test/monitor/Monitor.test.ts +33 -87
  459. package/test/services/Services.test.ts +8 -19
  460. package/test/storage/KnexMigrations.test.ts +3 -18
  461. package/test/storage/StorageMySQLDojoReader.man.test.ts +4 -15
  462. package/test/storage/count.test.ts +7 -24
  463. package/test/storage/find.test.ts +7 -29
  464. package/test/storage/findLegacy.test.ts +2 -5
  465. package/test/storage/insert.test.ts +3 -19
  466. package/test/storage/update.test.ts +47 -179
  467. package/test/storage/update2.test.ts +54 -176
  468. package/test/utils/TestUtilsWalletStorage.ts +139 -372
  469. package/test/{Wallet → wallet}/action/abortAction.test.ts +4 -12
  470. package/test/{Wallet → wallet}/action/createAction.test.ts +4 -14
  471. package/test/{Wallet → wallet}/action/createAction2.test.ts +74 -208
  472. package/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.ts +8 -11
  473. package/test/{Wallet → wallet}/action/internalizeAction.test.ts +20 -72
  474. package/test/{Wallet → wallet}/action/relinquishOutput.test.ts +3 -9
  475. package/test/{Wallet → wallet}/list/listActions.test.ts +2 -9
  476. package/test/{Wallet → wallet}/list/listActions2.test.ts +8 -34
  477. package/test/{Wallet → wallet}/list/listCertificates.test.ts +5 -16
  478. package/test/{Wallet → wallet}/list/listOutputs.test.ts +15 -54
  479. package/test/{Wallet → wallet}/sync/Wallet.sync.test.ts +18 -49
  480. package/out/src/sdk/StorageSyncReader.d.ts +0 -121
  481. package/out/src/sdk/StorageSyncReader.d.ts.map +0 -1
  482. package/out/src/sdk/StorageSyncReader.js +0 -3
  483. package/out/src/sdk/StorageSyncReader.js.map +0 -1
  484. package/out/src/sdk/StorageSyncReaderWriter.d.ts +0 -89
  485. package/out/src/sdk/StorageSyncReaderWriter.d.ts.map +0 -1
  486. package/out/src/sdk/StorageSyncReaderWriter.js +0 -3
  487. package/out/src/sdk/StorageSyncReaderWriter.js.map +0 -1
  488. package/out/test/Wallet/action/abortAction.test.d.ts.map +0 -1
  489. package/out/test/Wallet/action/abortAction.test.js.map +0 -1
  490. package/out/test/Wallet/action/createAction.test.d.ts.map +0 -1
  491. package/out/test/Wallet/action/createAction.test.js.map +0 -1
  492. package/out/test/Wallet/action/createAction2.test.js.map +0 -1
  493. package/out/test/Wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +0 -1
  494. package/out/test/Wallet/action/internalizeAction.test.d.ts.map +0 -1
  495. package/out/test/Wallet/action/internalizeAction.test.js.map +0 -1
  496. package/out/test/Wallet/action/relinquishOutput.test.d.ts.map +0 -1
  497. package/out/test/Wallet/construct/Wallet.constructor.test.d.ts.map +0 -1
  498. package/out/test/Wallet/list/listActions.test.d.ts.map +0 -1
  499. package/out/test/Wallet/list/listActions.test.js.map +0 -1
  500. package/out/test/Wallet/list/listActions2.test.d.ts.map +0 -1
  501. package/out/test/Wallet/list/listActions2.test.js.map +0 -1
  502. package/out/test/Wallet/list/listCertificates.test.d.ts.map +0 -1
  503. package/out/test/Wallet/list/listCertificates.test.js.map +0 -1
  504. package/out/test/Wallet/list/listOutputs.test.d.ts.map +0 -1
  505. package/out/test/Wallet/list/listOutputs.test.js.map +0 -1
  506. package/out/test/Wallet/sync/Wallet.sync.test.d.ts.map +0 -1
  507. package/out/test/Wallet/sync/Wallet.sync.test.js.map +0 -1
  508. /package/out/test/{Wallet → wallet}/action/abortAction.test.d.ts +0 -0
  509. /package/out/test/{Wallet → wallet}/action/abortAction.test.js +0 -0
  510. /package/out/test/{Wallet → wallet}/action/createAction.test.d.ts +0 -0
  511. /package/out/test/{Wallet → wallet}/action/createAction2.test.d.ts +0 -0
  512. /package/out/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.d.ts +0 -0
  513. /package/out/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.js +0 -0
  514. /package/out/test/{Wallet → wallet}/action/internalizeAction.test.d.ts +0 -0
  515. /package/out/test/{Wallet → wallet}/action/internalizeAction.test.js +0 -0
  516. /package/out/test/{Wallet → wallet}/action/relinquishOutput.test.d.ts +0 -0
  517. /package/out/test/{Wallet → wallet}/action/relinquishOutput.test.js +0 -0
  518. /package/out/test/{Wallet → wallet}/construct/Wallet.constructor.test.d.ts +0 -0
  519. /package/out/test/{Wallet → wallet}/construct/Wallet.constructor.test.js +0 -0
  520. /package/out/test/{Wallet → wallet}/list/listActions.test.d.ts +0 -0
  521. /package/out/test/{Wallet → wallet}/list/listActions.test.js +0 -0
  522. /package/out/test/{Wallet → wallet}/list/listActions2.test.d.ts +0 -0
  523. /package/out/test/{Wallet → wallet}/list/listActions2.test.js +0 -0
  524. /package/out/test/{Wallet → wallet}/list/listCertificates.test.d.ts +0 -0
  525. /package/out/test/{Wallet → wallet}/list/listOutputs.test.d.ts +0 -0
  526. /package/out/test/{Wallet → wallet}/sync/Wallet.sync.test.d.ts +0 -0
  527. /package/test/{Wallet → wallet}/construct/Wallet.constructor.test.ts +0 -0
@@ -1,9 +1,4 @@
1
- import {
2
- ListActionsArgs,
3
- ListActionsResult,
4
- ListOutputsArgs,
5
- ListOutputsResult
6
- } from '@bsv/sdk'
1
+ import { ListActionsArgs, ListActionsResult, ListOutputsArgs, ListOutputsResult } from '@bsv/sdk'
7
2
  import { sdk, verifyOne, verifyOneOrNone, verifyTruthy } from '../index.all'
8
3
  import {
9
4
  KnexMigrations,
@@ -44,29 +39,20 @@ export interface StorageKnexOptions extends StorageProviderOptions {
44
39
  knex: Knex
45
40
  }
46
41
 
47
- export class StorageKnex
48
- extends StorageProvider
49
- implements sdk.WalletStorageProvider
50
- {
42
+ export class StorageKnex extends StorageProvider implements sdk.WalletStorageProvider {
51
43
  knex: Knex
52
44
 
53
45
  constructor(options: StorageKnexOptions) {
54
46
  super(options)
55
- if (!options.knex)
56
- throw new sdk.WERR_INVALID_PARAMETER('options.knex', `valid`)
47
+ if (!options.knex) throw new sdk.WERR_INVALID_PARAMETER('options.knex', `valid`)
57
48
  this.knex = options.knex
58
49
  }
59
50
 
60
51
  async readSettings(): Promise<TableSettings> {
61
- return this.validateEntity(
62
- verifyOne(await this.toDb(undefined)<TableSettings>('settings'))
63
- )
52
+ return this.validateEntity(verifyOne(await this.toDb(undefined)<TableSettings>('settings')))
64
53
  }
65
54
 
66
- override async getProvenOrRawTx(
67
- txid: string,
68
- trx?: sdk.TrxToken
69
- ): Promise<sdk.ProvenOrRawTx> {
55
+ override async getProvenOrRawTx(txid: string, trx?: sdk.TrxToken): Promise<sdk.ProvenOrRawTx> {
70
56
  const k = this.toDb(trx)
71
57
  const r: sdk.ProvenOrRawTx = {
72
58
  proven: undefined,
@@ -74,21 +60,12 @@ export class StorageKnex
74
60
  inputBEEF: undefined
75
61
  }
76
62
 
77
- r.proven = verifyOneOrNone(
78
- await this.findProvenTxs({ partial: { txid: txid } })
79
- )
63
+ r.proven = verifyOneOrNone(await this.findProvenTxs({ partial: { txid: txid } }))
80
64
  if (!r.proven) {
81
65
  const reqRawTx = verifyOneOrNone(
82
66
  await k('proven_tx_reqs')
83
67
  .where('txid', txid)
84
- .whereIn('status', [
85
- 'unsent',
86
- 'unmined',
87
- 'unconfirmed',
88
- 'sending',
89
- 'nosend',
90
- 'completed'
91
- ])
68
+ .whereIn('status', ['unsent', 'unmined', 'unconfirmed', 'sending', 'nosend', 'completed'])
92
69
  .select('rawTx', 'inputBEEF')
93
70
  )
94
71
  if (reqRawTx) {
@@ -100,8 +77,7 @@ export class StorageKnex
100
77
  }
101
78
 
102
79
  dbTypeSubstring(source: string, fromOffset: number, forLength?: number) {
103
- if (this.dbtype === 'MySQL')
104
- return `substring(${source} from ${fromOffset} for ${forLength!})`
80
+ if (this.dbtype === 'MySQL') return `substring(${source} from ${fromOffset} for ${forLength!})`
105
81
  return `substr(${source}, ${fromOffset}, ${forLength})`
106
82
  }
107
83
 
@@ -119,8 +95,7 @@ export class StorageKnex
119
95
  let rs: { rawTx: Buffer | null }[] = await this.toDb(trx).raw(
120
96
  `select ${this.dbTypeSubstring('rawTx', offset! + 1, length)} as rawTx from proven_txs where txid = '${txid}'`
121
97
  )
122
- if (this.dbtype === 'MySQL')
123
- rs = (rs as unknown as { rawTx: Buffer | null }[][])[0]
98
+ if (this.dbtype === 'MySQL') rs = (rs as unknown as { rawTx: Buffer | null }[][])[0]
124
99
  const r = verifyOneOrNone(rs)
125
100
  if (r && r.rawTx) {
126
101
  rawTx = Array.from(r.rawTx)
@@ -128,8 +103,7 @@ export class StorageKnex
128
103
  let rs: { rawTx: Buffer | null }[] = await this.toDb(trx).raw(
129
104
  `select ${this.dbTypeSubstring('rawTx', offset! + 1, length)} as rawTx from proven_tx_reqs where txid = '${txid}' and status in ('unsent', 'nosend', 'sending', 'unmined', 'completed')`
130
105
  )
131
- if (this.dbtype === 'MySQL')
132
- rs = (rs as unknown as { rawTx: Buffer | null }[][])[0]
106
+ if (this.dbtype === 'MySQL') rs = (rs as unknown as { rawTx: Buffer | null }[][])[0]
133
107
  const r = verifyOneOrNone(rs)
134
108
  if (r && r.rawTx) {
135
109
  rawTx = Array.from(r.rawTx)
@@ -143,141 +117,104 @@ export class StorageKnex
143
117
  return rawTx
144
118
  }
145
119
 
146
- getProvenTxsForUserQuery(
147
- args: sdk.FindForUserSincePagedArgs
148
- ): Knex.QueryBuilder {
120
+ getProvenTxsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
149
121
  const k = this.toDb(args.trx)
150
122
  let q = k('proven_txs').where(function () {
151
123
  this.whereExists(
152
124
  k
153
125
  .select('*')
154
126
  .from('transactions')
155
- .whereRaw(
156
- `proven_txs.provenTxId = transactions.provenTxId and transactions.userId = ${args.userId}`
157
- )
127
+ .whereRaw(`proven_txs.provenTxId = transactions.provenTxId and transactions.userId = ${args.userId}`)
158
128
  )
159
129
  })
160
130
  if (args.paged) {
161
131
  q = q.limit(args.paged.limit)
162
132
  q = q.offset(args.paged.offset || 0)
163
133
  }
164
- if (args.since)
165
- q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
134
+ if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
166
135
  return q
167
136
  }
168
- override async getProvenTxsForUser(
169
- args: sdk.FindForUserSincePagedArgs
170
- ): Promise<TableProvenTx[]> {
137
+ override async getProvenTxsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableProvenTx[]> {
171
138
  const q = this.getProvenTxsForUserQuery(args)
172
139
  const rs = await q
173
140
  return this.validateEntities(rs)
174
141
  }
175
142
 
176
- getProvenTxReqsForUserQuery(
177
- args: sdk.FindForUserSincePagedArgs
178
- ): Knex.QueryBuilder {
143
+ getProvenTxReqsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
179
144
  const k = this.toDb(args.trx)
180
145
  let q = k('proven_tx_reqs').where(function () {
181
146
  this.whereExists(
182
147
  k
183
148
  .select('*')
184
149
  .from('transactions')
185
- .whereRaw(
186
- `proven_tx_reqs.txid = transactions.txid and transactions.userId = ${args.userId}`
187
- )
150
+ .whereRaw(`proven_tx_reqs.txid = transactions.txid and transactions.userId = ${args.userId}`)
188
151
  )
189
152
  })
190
153
  if (args.paged) {
191
154
  q = q.limit(args.paged.limit)
192
155
  q = q.offset(args.paged.offset || 0)
193
156
  }
194
- if (args.since)
195
- q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
157
+ if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
196
158
  return q
197
159
  }
198
- override async getProvenTxReqsForUser(
199
- args: sdk.FindForUserSincePagedArgs
200
- ): Promise<TableProvenTxReq[]> {
160
+ override async getProvenTxReqsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableProvenTxReq[]> {
201
161
  const q = this.getProvenTxReqsForUserQuery(args)
202
162
  const rs = await q
203
163
  return this.validateEntities(rs, undefined, ['notified'])
204
164
  }
205
165
 
206
- getTxLabelMapsForUserQuery(
207
- args: sdk.FindForUserSincePagedArgs
208
- ): Knex.QueryBuilder {
166
+ getTxLabelMapsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
209
167
  const k = this.toDb(args.trx)
210
168
  let q = k('tx_labels_map').whereExists(
211
169
  k
212
170
  .select('*')
213
171
  .from('tx_labels')
214
- .whereRaw(
215
- `tx_labels.txLabelId = tx_labels_map.txLabelId and tx_labels.userId = ${args.userId}`
216
- )
172
+ .whereRaw(`tx_labels.txLabelId = tx_labels_map.txLabelId and tx_labels.userId = ${args.userId}`)
217
173
  )
218
- if (args.since)
219
- q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
174
+ if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
220
175
  if (args.paged) {
221
176
  q = q.limit(args.paged.limit)
222
177
  q = q.offset(args.paged.offset || 0)
223
178
  }
224
179
  return q
225
180
  }
226
- override async getTxLabelMapsForUser(
227
- args: sdk.FindForUserSincePagedArgs
228
- ): Promise<TableTxLabelMap[]> {
181
+ override async getTxLabelMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableTxLabelMap[]> {
229
182
  const q = this.getTxLabelMapsForUserQuery(args)
230
183
  const rs = await q
231
184
  return this.validateEntities(rs, undefined, ['isDeleted'])
232
185
  }
233
186
 
234
- getOutputTagMapsForUserQuery(
235
- args: sdk.FindForUserSincePagedArgs
236
- ): Knex.QueryBuilder {
187
+ getOutputTagMapsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder {
237
188
  const k = this.toDb(args.trx)
238
189
  let q = k('output_tags_map').whereExists(
239
190
  k
240
191
  .select('*')
241
192
  .from('output_tags')
242
- .whereRaw(
243
- `output_tags.outputTagId = output_tags_map.outputTagId and output_tags.userId = ${args.userId}`
244
- )
193
+ .whereRaw(`output_tags.outputTagId = output_tags_map.outputTagId and output_tags.userId = ${args.userId}`)
245
194
  )
246
- if (args.since)
247
- q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
195
+ if (args.since) q = q.where('updated_at', '>=', this.validateDateForWhere(args.since))
248
196
  if (args.paged) {
249
197
  q = q.limit(args.paged.limit)
250
198
  q = q.offset(args.paged.offset || 0)
251
199
  }
252
200
  return q
253
201
  }
254
- override async getOutputTagMapsForUser(
255
- args: sdk.FindForUserSincePagedArgs
256
- ): Promise<TableOutputTagMap[]> {
202
+ override async getOutputTagMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<TableOutputTagMap[]> {
257
203
  const q = this.getOutputTagMapsForUserQuery(args)
258
204
  const rs = await q
259
205
  return this.validateEntities(rs, undefined, ['isDeleted'])
260
206
  }
261
207
 
262
- override async listActions(
263
- auth: sdk.AuthId,
264
- vargs: sdk.ValidListActionsArgs
265
- ): Promise<ListActionsResult> {
208
+ override async listActions(auth: sdk.AuthId, vargs: sdk.ValidListActionsArgs): Promise<ListActionsResult> {
266
209
  if (!auth.userId) throw new sdk.WERR_UNAUTHORIZED()
267
210
  return await listActions(this, auth, vargs)
268
211
  }
269
- override async listOutputs(
270
- auth: sdk.AuthId,
271
- vargs: sdk.ValidListOutputsArgs
272
- ): Promise<ListOutputsResult> {
212
+ override async listOutputs(auth: sdk.AuthId, vargs: sdk.ValidListOutputsArgs): Promise<ListOutputsResult> {
273
213
  if (!auth.userId) throw new sdk.WERR_UNAUTHORIZED()
274
214
  return await listOutputs(this, auth, vargs)
275
215
  }
276
216
 
277
- override async insertProvenTx(
278
- tx: TableProvenTx,
279
- trx?: sdk.TrxToken
280
- ): Promise<number> {
217
+ override async insertProvenTx(tx: TableProvenTx, trx?: sdk.TrxToken): Promise<number> {
281
218
  const e = await this.validateEntityForInsert(tx, trx)
282
219
  if (e.provenTxId === 0) delete e.provenTxId
283
220
  const [id] = await this.toDb(trx)<TableProvenTx>('proven_txs').insert(e)
@@ -285,22 +222,15 @@ export class StorageKnex
285
222
  return tx.provenTxId
286
223
  }
287
224
 
288
- override async insertProvenTxReq(
289
- tx: TableProvenTxReq,
290
- trx?: sdk.TrxToken
291
- ): Promise<number> {
225
+ override async insertProvenTxReq(tx: TableProvenTxReq, trx?: sdk.TrxToken): Promise<number> {
292
226
  const e = await this.validateEntityForInsert(tx, trx)
293
227
  if (e.provenTxReqId === 0) delete e.provenTxReqId
294
- const [id] =
295
- await this.toDb(trx)<TableProvenTxReq>('proven_tx_reqs').insert(e)
228
+ const [id] = await this.toDb(trx)<TableProvenTxReq>('proven_tx_reqs').insert(e)
296
229
  tx.provenTxReqId = id
297
230
  return tx.provenTxReqId
298
231
  }
299
232
 
300
- override async insertUser(
301
- user: TableUser,
302
- trx?: sdk.TrxToken
303
- ): Promise<number> {
233
+ override async insertUser(user: TableUser, trx?: sdk.TrxToken): Promise<number> {
304
234
  const e = await this.validateEntityForInsert(user, trx)
305
235
  if (e.userId === 0) delete e.userId
306
236
  const [id] = await this.toDb(trx)<TableUser>('users').insert(e)
@@ -308,31 +238,18 @@ export class StorageKnex
308
238
  return user.userId
309
239
  }
310
240
 
311
- override async insertCertificateAuth(
312
- auth: sdk.AuthId,
313
- certificate: TableCertificateX
314
- ): Promise<number> {
315
- if (
316
- !auth.userId ||
317
- (certificate.userId && certificate.userId !== auth.userId)
318
- )
319
- throw new sdk.WERR_UNAUTHORIZED()
241
+ override async insertCertificateAuth(auth: sdk.AuthId, certificate: TableCertificateX): Promise<number> {
242
+ if (!auth.userId || (certificate.userId && certificate.userId !== auth.userId)) throw new sdk.WERR_UNAUTHORIZED()
320
243
  certificate.userId = auth.userId
321
244
  return await this.insertCertificate(certificate)
322
245
  }
323
246
 
324
- override async insertCertificate(
325
- certificate: TableCertificateX,
326
- trx?: sdk.TrxToken
327
- ): Promise<number> {
328
- const e = await this.validateEntityForInsert(certificate, trx, undefined, [
329
- 'isDeleted'
330
- ])
247
+ override async insertCertificate(certificate: TableCertificateX, trx?: sdk.TrxToken): Promise<number> {
248
+ const e = await this.validateEntityForInsert(certificate, trx, undefined, ['isDeleted'])
331
249
  const fields = e.fields
332
250
  if (e.fields) delete e.fields
333
251
  if (e.certificateId === 0) delete e.certificateId
334
- const [id] =
335
- await this.toDb(trx)<TableCertificate>('certificates').insert(e)
252
+ const [id] = await this.toDb(trx)<TableCertificate>('certificates').insert(e)
336
253
  certificate.certificateId = id
337
254
 
338
255
  if (fields) {
@@ -346,44 +263,28 @@ export class StorageKnex
346
263
  return certificate.certificateId
347
264
  }
348
265
 
349
- override async insertCertificateField(
350
- certificateField: TableCertificateField,
351
- trx?: sdk.TrxToken
352
- ): Promise<void> {
266
+ override async insertCertificateField(certificateField: TableCertificateField, trx?: sdk.TrxToken): Promise<void> {
353
267
  const e = await this.validateEntityForInsert(certificateField, trx)
354
268
  await this.toDb(trx)<TableCertificate>('certificate_fields').insert(e)
355
269
  }
356
270
 
357
- override async insertOutputBasket(
358
- basket: TableOutputBasket,
359
- trx?: sdk.TrxToken
360
- ): Promise<number> {
361
- const e = await this.validateEntityForInsert(basket, trx, undefined, [
362
- 'isDeleted'
363
- ])
271
+ override async insertOutputBasket(basket: TableOutputBasket, trx?: sdk.TrxToken): Promise<number> {
272
+ const e = await this.validateEntityForInsert(basket, trx, undefined, ['isDeleted'])
364
273
  if (e.basketId === 0) delete e.basketId
365
- const [id] =
366
- await this.toDb(trx)<TableOutputBasket>('output_baskets').insert(e)
274
+ const [id] = await this.toDb(trx)<TableOutputBasket>('output_baskets').insert(e)
367
275
  basket.basketId = id
368
276
  return basket.basketId
369
277
  }
370
278
 
371
- override async insertTransaction(
372
- tx: TableTransaction,
373
- trx?: sdk.TrxToken
374
- ): Promise<number> {
279
+ override async insertTransaction(tx: TableTransaction, trx?: sdk.TrxToken): Promise<number> {
375
280
  const e = await this.validateEntityForInsert(tx, trx)
376
281
  if (e.transactionId === 0) delete e.transactionId
377
- const [id] =
378
- await this.toDb(trx)<TableTransaction>('transactions').insert(e)
282
+ const [id] = await this.toDb(trx)<TableTransaction>('transactions').insert(e)
379
283
  tx.transactionId = id
380
284
  return tx.transactionId
381
285
  }
382
286
 
383
- override async insertCommission(
384
- commission: TableCommission,
385
- trx?: sdk.TrxToken
386
- ): Promise<number> {
287
+ override async insertCommission(commission: TableCommission, trx?: sdk.TrxToken): Promise<number> {
387
288
  const e = await this.validateEntityForInsert(commission, trx)
388
289
  if (e.commissionId === 0) delete e.commissionId
389
290
  const [id] = await this.toDb(trx)<TableCommission>('commissions').insert(e)
@@ -391,10 +292,7 @@ export class StorageKnex
391
292
  return commission.commissionId
392
293
  }
393
294
 
394
- override async insertOutput(
395
- output: TableOutput,
396
- trx?: sdk.TrxToken
397
- ): Promise<number> {
295
+ override async insertOutput(output: TableOutput, trx?: sdk.TrxToken): Promise<number> {
398
296
  const e = await this.validateEntityForInsert(output, trx)
399
297
  if (e.outputId === 0) delete e.outputId
400
298
  const [id] = await this.toDb(trx)<TableOutput>('outputs').insert(e)
@@ -402,76 +300,42 @@ export class StorageKnex
402
300
  return output.outputId
403
301
  }
404
302
 
405
- override async insertOutputTag(
406
- tag: TableOutputTag,
407
- trx?: sdk.TrxToken
408
- ): Promise<number> {
409
- const e = await this.validateEntityForInsert(tag, trx, undefined, [
410
- 'isDeleted'
411
- ])
303
+ override async insertOutputTag(tag: TableOutputTag, trx?: sdk.TrxToken): Promise<number> {
304
+ const e = await this.validateEntityForInsert(tag, trx, undefined, ['isDeleted'])
412
305
  if (e.outputTagId === 0) delete e.outputTagId
413
306
  const [id] = await this.toDb(trx)<TableOutputTag>('output_tags').insert(e)
414
307
  tag.outputTagId = id
415
308
  return tag.outputTagId
416
309
  }
417
310
 
418
- override async insertOutputTagMap(
419
- tagMap: TableOutputTagMap,
420
- trx?: sdk.TrxToken
421
- ): Promise<void> {
422
- const e = await this.validateEntityForInsert(tagMap, trx, undefined, [
423
- 'isDeleted'
424
- ])
425
- const [id] =
426
- await this.toDb(trx)<TableOutputTagMap>('output_tags_map').insert(e)
311
+ override async insertOutputTagMap(tagMap: TableOutputTagMap, trx?: sdk.TrxToken): Promise<void> {
312
+ const e = await this.validateEntityForInsert(tagMap, trx, undefined, ['isDeleted'])
313
+ const [id] = await this.toDb(trx)<TableOutputTagMap>('output_tags_map').insert(e)
427
314
  }
428
315
 
429
- override async insertTxLabel(
430
- label: TableTxLabel,
431
- trx?: sdk.TrxToken
432
- ): Promise<number> {
433
- const e = await this.validateEntityForInsert(label, trx, undefined, [
434
- 'isDeleted'
435
- ])
316
+ override async insertTxLabel(label: TableTxLabel, trx?: sdk.TrxToken): Promise<number> {
317
+ const e = await this.validateEntityForInsert(label, trx, undefined, ['isDeleted'])
436
318
  if (e.txLabelId === 0) delete e.txLabelId
437
319
  const [id] = await this.toDb(trx)<TableTxLabel>('tx_labels').insert(e)
438
320
  label.txLabelId = id
439
321
  return label.txLabelId
440
322
  }
441
323
 
442
- override async insertTxLabelMap(
443
- labelMap: TableTxLabelMap,
444
- trx?: sdk.TrxToken
445
- ): Promise<void> {
446
- const e = await this.validateEntityForInsert(labelMap, trx, undefined, [
447
- 'isDeleted'
448
- ])
449
- const [id] =
450
- await this.toDb(trx)<TableTxLabelMap>('tx_labels_map').insert(e)
324
+ override async insertTxLabelMap(labelMap: TableTxLabelMap, trx?: sdk.TrxToken): Promise<void> {
325
+ const e = await this.validateEntityForInsert(labelMap, trx, undefined, ['isDeleted'])
326
+ const [id] = await this.toDb(trx)<TableTxLabelMap>('tx_labels_map').insert(e)
451
327
  }
452
328
 
453
- override async insertMonitorEvent(
454
- event: TableMonitorEvent,
455
- trx?: sdk.TrxToken
456
- ): Promise<number> {
329
+ override async insertMonitorEvent(event: TableMonitorEvent, trx?: sdk.TrxToken): Promise<number> {
457
330
  const e = await this.validateEntityForInsert(event, trx)
458
331
  if (e.id === 0) delete e.id
459
- const [id] =
460
- await this.toDb(trx)<TableMonitorEvent>('monitor_events').insert(e)
332
+ const [id] = await this.toDb(trx)<TableMonitorEvent>('monitor_events').insert(e)
461
333
  event.id = id
462
334
  return event.id
463
335
  }
464
336
 
465
- override async insertSyncState(
466
- syncState: TableSyncState,
467
- trx?: sdk.TrxToken
468
- ): Promise<number> {
469
- const e = await this.validateEntityForInsert(
470
- syncState,
471
- trx,
472
- ['when'],
473
- ['init']
474
- )
337
+ override async insertSyncState(syncState: TableSyncState, trx?: sdk.TrxToken): Promise<number> {
338
+ const e = await this.validateEntityForInsert(syncState, trx, ['when'], ['init'])
475
339
  if (e.syncStateId === 0) delete e.syncStateId
476
340
  const [id] = await this.toDb(trx)<TableSyncState>('sync_states').insert(e)
477
341
  syncState.syncStateId = id
@@ -489,21 +353,13 @@ export class StorageKnex
489
353
  .where({ certificateId, fieldName })
490
354
  .update(this.validatePartialForUpdate(update))
491
355
  }
492
- override async updateCertificate(
493
- id: number,
494
- update: Partial<TableCertificate>,
495
- trx?: sdk.TrxToken
496
- ): Promise<number> {
356
+ override async updateCertificate(id: number, update: Partial<TableCertificate>, trx?: sdk.TrxToken): Promise<number> {
497
357
  await this.verifyReadyForDatabaseAccess(trx)
498
358
  return await this.toDb(trx)<TableCertificate>('certificates')
499
359
  .where({ certificateId: id })
500
360
  .update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
501
361
  }
502
- override async updateCommission(
503
- id: number,
504
- update: Partial<TableCommission>,
505
- trx?: sdk.TrxToken
506
- ): Promise<number> {
362
+ override async updateCommission(id: number, update: Partial<TableCommission>, trx?: sdk.TrxToken): Promise<number> {
507
363
  await this.verifyReadyForDatabaseAccess(trx)
508
364
  return await this.toDb(trx)<TableCommission>('commissions')
509
365
  .where({ commissionId: id })
@@ -519,11 +375,7 @@ export class StorageKnex
519
375
  .where({ basketId: id })
520
376
  .update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
521
377
  }
522
- override async updateOutput(
523
- id: number,
524
- update: Partial<TableOutput>,
525
- trx?: sdk.TrxToken
526
- ): Promise<number> {
378
+ override async updateOutput(id: number, update: Partial<TableOutput>, trx?: sdk.TrxToken): Promise<number> {
527
379
  await this.verifyReadyForDatabaseAccess(trx)
528
380
  return await this.toDb(trx)<TableOutput>('outputs')
529
381
  .where({ outputId: id })
@@ -540,11 +392,7 @@ export class StorageKnex
540
392
  .where({ outputId, outputTagId: tagId })
541
393
  .update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
542
394
  }
543
- override async updateOutputTag(
544
- id: number,
545
- update: Partial<TableOutputTag>,
546
- trx?: sdk.TrxToken
547
- ): Promise<number> {
395
+ override async updateOutputTag(id: number, update: Partial<TableOutputTag>, trx?: sdk.TrxToken): Promise<number> {
548
396
  await this.verifyReadyForDatabaseAccess(trx)
549
397
  return await this.toDb(trx)<TableOutputTag>('output_tags')
550
398
  .where({ outputTagId: id })
@@ -566,28 +414,17 @@ export class StorageKnex
566
414
  .where({ provenTxReqId: id })
567
415
  .update(this.validatePartialForUpdate(update))
568
416
  } else {
569
- throw new sdk.WERR_INVALID_PARAMETER(
570
- 'id',
571
- 'transactionId or array of transactionId'
572
- )
417
+ throw new sdk.WERR_INVALID_PARAMETER('id', 'transactionId or array of transactionId')
573
418
  }
574
419
  return r
575
420
  }
576
- override async updateProvenTx(
577
- id: number,
578
- update: Partial<TableProvenTx>,
579
- trx?: sdk.TrxToken
580
- ): Promise<number> {
421
+ override async updateProvenTx(id: number, update: Partial<TableProvenTx>, trx?: sdk.TrxToken): Promise<number> {
581
422
  await this.verifyReadyForDatabaseAccess(trx)
582
423
  return await this.toDb(trx)<TableProvenTx>('proven_txs')
583
424
  .where({ provenTxId: id })
584
425
  .update(this.validatePartialForUpdate(update))
585
426
  }
586
- override async updateSyncState(
587
- id: number,
588
- update: Partial<TableSyncState>,
589
- trx?: sdk.TrxToken
590
- ): Promise<number> {
427
+ override async updateSyncState(id: number, update: Partial<TableSyncState>, trx?: sdk.TrxToken): Promise<number> {
591
428
  await this.verifyReadyForDatabaseAccess(trx)
592
429
  return await this.toDb(trx)<TableSyncState>('sync_states')
593
430
  .where({ syncStateId: id })
@@ -609,10 +446,7 @@ export class StorageKnex
609
446
  .where({ transactionId: id })
610
447
  .update(await this.validatePartialForUpdate(update))
611
448
  } else {
612
- throw new sdk.WERR_INVALID_PARAMETER(
613
- 'id',
614
- 'transactionId or array of transactionId'
615
- )
449
+ throw new sdk.WERR_INVALID_PARAMETER('id', 'transactionId or array of transactionId')
616
450
  }
617
451
  return r
618
452
  }
@@ -627,25 +461,15 @@ export class StorageKnex
627
461
  .where({ transactionId, txLabelId })
628
462
  .update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
629
463
  }
630
- override async updateTxLabel(
631
- id: number,
632
- update: Partial<TableTxLabel>,
633
- trx?: sdk.TrxToken
634
- ): Promise<number> {
464
+ override async updateTxLabel(id: number, update: Partial<TableTxLabel>, trx?: sdk.TrxToken): Promise<number> {
635
465
  await this.verifyReadyForDatabaseAccess(trx)
636
466
  return await this.toDb(trx)<TableTxLabel>('tx_labels')
637
467
  .where({ txLabelId: id })
638
468
  .update(this.validatePartialForUpdate(update, undefined, ['isDeleted']))
639
469
  }
640
- override async updateUser(
641
- id: number,
642
- update: Partial<TableUser>,
643
- trx?: sdk.TrxToken
644
- ): Promise<number> {
470
+ override async updateUser(id: number, update: Partial<TableUser>, trx?: sdk.TrxToken): Promise<number> {
645
471
  await this.verifyReadyForDatabaseAccess(trx)
646
- return await this.toDb(trx)<TableUser>('users')
647
- .where({ userId: id })
648
- .update(this.validatePartialForUpdate(update))
472
+ return await this.toDb(trx)<TableUser>('users').where({ userId: id }).update(this.validatePartialForUpdate(update))
649
473
  }
650
474
  override async updateMonitorEvent(
651
475
  id: number,
@@ -658,15 +482,10 @@ export class StorageKnex
658
482
  .update(this.validatePartialForUpdate(update))
659
483
  }
660
484
 
661
- setupQuery<T extends object>(
662
- table: string,
663
- args: sdk.FindPartialSincePagedArgs<T>
664
- ): Knex.QueryBuilder {
485
+ setupQuery<T extends object>(table: string, args: sdk.FindPartialSincePagedArgs<T>): Knex.QueryBuilder {
665
486
  let q = this.toDb(args.trx)<T>(table)
666
- if (args.partial && Object.keys(args.partial).length > 0)
667
- q.where(args.partial)
668
- if (args.since)
669
- q.where('updated_at', '>=', this.validateDateForWhere(args.since))
487
+ if (args.partial && Object.keys(args.partial).length > 0) q.where(args.partial)
488
+ if (args.since) q.where('updated_at', '>=', this.validateDateForWhere(args.since))
670
489
  if (args.paged) {
671
490
  q.limit(args.paged.limit)
672
491
  q.offset(args.paged.offset || 0)
@@ -674,15 +493,12 @@ export class StorageKnex
674
493
  return q
675
494
  }
676
495
 
677
- findCertificateFieldsQuery(
678
- args: sdk.FindCertificateFieldsArgs
679
- ): Knex.QueryBuilder {
496
+ findCertificateFieldsQuery(args: sdk.FindCertificateFieldsArgs): Knex.QueryBuilder {
680
497
  return this.setupQuery('certificate_fields', args)
681
498
  }
682
499
  findCertificatesQuery(args: sdk.FindCertificatesArgs): Knex.QueryBuilder {
683
500
  const q = this.setupQuery('certificates', args)
684
- if (args.certifiers && args.certifiers.length > 0)
685
- q.whereIn('certifier', args.certifiers)
501
+ if (args.certifiers && args.certifiers.length > 0) q.whereIn('certifier', args.certifiers)
686
502
  if (args.types && args.types.length > 0) q.whereIn('type', args.types)
687
503
  return q
688
504
  }
@@ -697,10 +513,7 @@ export class StorageKnex
697
513
  findOutputBasketsQuery(args: sdk.FindOutputBasketsArgs): Knex.QueryBuilder {
698
514
  return this.setupQuery('output_baskets', args)
699
515
  }
700
- findOutputsQuery(
701
- args: sdk.FindOutputsArgs,
702
- count?: boolean
703
- ): Knex.QueryBuilder {
516
+ findOutputsQuery(args: sdk.FindOutputsArgs, count?: boolean): Knex.QueryBuilder {
704
517
  if (args.partial.lockingScript)
705
518
  throw new sdk.WERR_INVALID_PARAMETER(
706
519
  'args.partial.lockingScript',
@@ -720,8 +533,7 @@ export class StorageKnex
720
533
  }
721
534
  findOutputTagMapsQuery(args: sdk.FindOutputTagMapsArgs): Knex.QueryBuilder {
722
535
  const q = this.setupQuery('output_tags_map', args)
723
- if (args.tagIds && args.tagIds.length > 0)
724
- q.whereIn('outputTagId', args.tagIds)
536
+ if (args.tagIds && args.tagIds.length > 0) q.whereIn('outputTagId', args.tagIds)
725
537
  return q
726
538
  }
727
539
  findOutputTagsQuery(args: sdk.FindOutputTagsArgs): Knex.QueryBuilder {
@@ -759,10 +571,7 @@ export class StorageKnex
759
571
  findSyncStatesQuery(args: sdk.FindSyncStatesArgs): Knex.QueryBuilder {
760
572
  return this.setupQuery('sync_states', args)
761
573
  }
762
- findTransactionsQuery(
763
- args: sdk.FindTransactionsArgs,
764
- count?: boolean
765
- ): Knex.QueryBuilder {
574
+ findTransactionsQuery(args: sdk.FindTransactionsArgs, count?: boolean): Knex.QueryBuilder {
766
575
  if (args.partial.rawTx)
767
576
  throw new sdk.WERR_INVALID_PARAMETER(
768
577
  'args.partial.rawTx',
@@ -776,17 +585,14 @@ export class StorageKnex
776
585
  const q = this.setupQuery('transactions', args)
777
586
  if (args.status && args.status.length > 0) q.whereIn('status', args.status)
778
587
  if (args.noRawTx && !count) {
779
- const columns = transactionColumnsWithoutRawTx.map(
780
- c => `transactions.${c}`
781
- )
588
+ const columns = transactionColumnsWithoutRawTx.map(c => `transactions.${c}`)
782
589
  q.select(columns)
783
590
  }
784
591
  return q
785
592
  }
786
593
  findTxLabelMapsQuery(args: sdk.FindTxLabelMapsArgs): Knex.QueryBuilder {
787
594
  const q = this.setupQuery('tx_labels_map', args)
788
- if (args.labelIds && args.labelIds.length > 0)
789
- q.whereIn('txLabelId', args.labelIds)
595
+ if (args.labelIds && args.labelIds.length > 0) q.whereIn('txLabelId', args.labelIds)
790
596
  return q
791
597
  }
792
598
  findTxLabelsQuery(args: sdk.FindTxLabelsArgs): Knex.QueryBuilder {
@@ -799,15 +605,8 @@ export class StorageKnex
799
605
  return this.setupQuery('monitor_events', args)
800
606
  }
801
607
 
802
- override async findCertificatesAuth(
803
- auth: sdk.AuthId,
804
- args: sdk.FindCertificatesArgs
805
- ): Promise<TableCertificateX[]> {
806
- if (
807
- !auth.userId ||
808
- (args.partial.userId && args.partial.userId !== auth.userId)
809
- )
810
- throw new sdk.WERR_UNAUTHORIZED()
608
+ override async findCertificatesAuth(auth: sdk.AuthId, args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]> {
609
+ if (!auth.userId || (args.partial.userId && args.partial.userId !== auth.userId)) throw new sdk.WERR_UNAUTHORIZED()
811
610
  args.partial.userId = auth.userId
812
611
  return await this.findCertificates(args)
813
612
  }
@@ -815,35 +614,20 @@ export class StorageKnex
815
614
  auth: sdk.AuthId,
816
615
  args: sdk.FindOutputBasketsArgs
817
616
  ): Promise<TableOutputBasket[]> {
818
- if (
819
- !auth.userId ||
820
- (args.partial.userId && args.partial.userId !== auth.userId)
821
- )
822
- throw new sdk.WERR_UNAUTHORIZED()
617
+ if (!auth.userId || (args.partial.userId && args.partial.userId !== auth.userId)) throw new sdk.WERR_UNAUTHORIZED()
823
618
  args.partial.userId = auth.userId
824
619
  return await this.findOutputBaskets(args)
825
620
  }
826
- override async findOutputsAuth(
827
- auth: sdk.AuthId,
828
- args: sdk.FindOutputsArgs
829
- ): Promise<TableOutput[]> {
830
- if (
831
- !auth.userId ||
832
- (args.partial.userId && args.partial.userId !== auth.userId)
833
- )
834
- throw new sdk.WERR_UNAUTHORIZED()
621
+ override async findOutputsAuth(auth: sdk.AuthId, args: sdk.FindOutputsArgs): Promise<TableOutput[]> {
622
+ if (!auth.userId || (args.partial.userId && args.partial.userId !== auth.userId)) throw new sdk.WERR_UNAUTHORIZED()
835
623
  args.partial.userId = auth.userId
836
624
  return await this.findOutputs(args)
837
625
  }
838
626
 
839
- override async findCertificateFields(
840
- args: sdk.FindCertificateFieldsArgs
841
- ): Promise<TableCertificateField[]> {
627
+ override async findCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<TableCertificateField[]> {
842
628
  return this.validateEntities(await this.findCertificateFieldsQuery(args))
843
629
  }
844
- override async findCertificates(
845
- args: sdk.FindCertificatesArgs
846
- ): Promise<TableCertificateX[]> {
630
+ override async findCertificates(args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]> {
847
631
  const q = this.findCertificatesQuery(args)
848
632
  let r: TableCertificateX[] = await q
849
633
  r = this.validateEntities(r, undefined, ['isDeleted'])
@@ -859,23 +643,17 @@ export class StorageKnex
859
643
  }
860
644
  return r
861
645
  }
862
- override async findCommissions(
863
- args: sdk.FindCommissionsArgs
864
- ): Promise<TableCommission[]> {
646
+ override async findCommissions(args: sdk.FindCommissionsArgs): Promise<TableCommission[]> {
865
647
  const q = this.findCommissionsQuery(args)
866
648
  const r = await q
867
649
  return this.validateEntities(r, undefined, ['isRedeemed'])
868
650
  }
869
- override async findOutputBaskets(
870
- args: sdk.FindOutputBasketsArgs
871
- ): Promise<TableOutputBasket[]> {
651
+ override async findOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<TableOutputBasket[]> {
872
652
  const q = this.findOutputBasketsQuery(args)
873
653
  const r = await q
874
654
  return this.validateEntities(r, undefined, ['isDeleted'])
875
655
  }
876
- override async findOutputs(
877
- args: sdk.FindOutputsArgs
878
- ): Promise<TableOutput[]> {
656
+ override async findOutputs(args: sdk.FindOutputsArgs): Promise<TableOutput[]> {
879
657
  const q = this.findOutputsQuery(args)
880
658
  const r = await q
881
659
  if (!args.noScript) {
@@ -885,44 +663,32 @@ export class StorageKnex
885
663
  }
886
664
  return this.validateEntities(r, undefined, ['spendable', 'change'])
887
665
  }
888
- override async findOutputTagMaps(
889
- args: sdk.FindOutputTagMapsArgs
890
- ): Promise<TableOutputTagMap[]> {
666
+ override async findOutputTagMaps(args: sdk.FindOutputTagMapsArgs): Promise<TableOutputTagMap[]> {
891
667
  const q = this.findOutputTagMapsQuery(args)
892
668
  const r = await q
893
669
  return this.validateEntities(r, undefined, ['isDeleted'])
894
670
  }
895
- override async findOutputTags(
896
- args: sdk.FindOutputTagsArgs
897
- ): Promise<TableOutputTag[]> {
671
+ override async findOutputTags(args: sdk.FindOutputTagsArgs): Promise<TableOutputTag[]> {
898
672
  const q = this.findOutputTagsQuery(args)
899
673
  const r = await q
900
674
  return this.validateEntities(r, undefined, ['isDeleted'])
901
675
  }
902
- override async findProvenTxReqs(
903
- args: sdk.FindProvenTxReqsArgs
904
- ): Promise<TableProvenTxReq[]> {
676
+ override async findProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<TableProvenTxReq[]> {
905
677
  const q = this.findProvenTxReqsQuery(args)
906
678
  const r = await q
907
679
  return this.validateEntities(r, undefined, ['notified'])
908
680
  }
909
- override async findProvenTxs(
910
- args: sdk.FindProvenTxsArgs
911
- ): Promise<TableProvenTx[]> {
681
+ override async findProvenTxs(args: sdk.FindProvenTxsArgs): Promise<TableProvenTx[]> {
912
682
  const q = this.findProvenTxsQuery(args)
913
683
  const r = await q
914
684
  return this.validateEntities(r)
915
685
  }
916
- override async findSyncStates(
917
- args: sdk.FindSyncStatesArgs
918
- ): Promise<TableSyncState[]> {
686
+ override async findSyncStates(args: sdk.FindSyncStatesArgs): Promise<TableSyncState[]> {
919
687
  const q = this.findSyncStatesQuery(args)
920
688
  const r = await q
921
689
  return this.validateEntities(r, ['when'], ['init'])
922
690
  }
923
- override async findTransactions(
924
- args: sdk.FindTransactionsArgs
925
- ): Promise<TableTransaction[]> {
691
+ override async findTransactions(args: sdk.FindTransactionsArgs): Promise<TableTransaction[]> {
926
692
  const q = this.findTransactionsQuery(args)
927
693
  const r = await q
928
694
  if (!args.noRawTx) {
@@ -932,16 +698,12 @@ export class StorageKnex
932
698
  }
933
699
  return this.validateEntities(r, undefined, ['isOutgoing'])
934
700
  }
935
- override async findTxLabelMaps(
936
- args: sdk.FindTxLabelMapsArgs
937
- ): Promise<TableTxLabelMap[]> {
701
+ override async findTxLabelMaps(args: sdk.FindTxLabelMapsArgs): Promise<TableTxLabelMap[]> {
938
702
  const q = this.findTxLabelMapsQuery(args)
939
703
  const r = await q
940
704
  return this.validateEntities(r, undefined, ['isDeleted'])
941
705
  }
942
- override async findTxLabels(
943
- args: sdk.FindTxLabelsArgs
944
- ): Promise<TableTxLabel[]> {
706
+ override async findTxLabels(args: sdk.FindTxLabelsArgs): Promise<TableTxLabel[]> {
945
707
  const q = this.findTxLabelsQuery(args)
946
708
  const r = await q
947
709
  return this.validateEntities(r, undefined, ['isDeleted'])
@@ -951,76 +713,52 @@ export class StorageKnex
951
713
  const r = await q
952
714
  return this.validateEntities(r)
953
715
  }
954
- override async findMonitorEvents(
955
- args: sdk.FindMonitorEventsArgs
956
- ): Promise<TableMonitorEvent[]> {
716
+ override async findMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<TableMonitorEvent[]> {
957
717
  const q = this.findMonitorEventsQuery(args)
958
718
  const r = await q
959
719
  return this.validateEntities(r, ['when'], undefined)
960
720
  }
961
721
 
962
- async getCount<T extends object>(
963
- q: Knex.QueryBuilder<T, T[]>
964
- ): Promise<number> {
722
+ async getCount<T extends object>(q: Knex.QueryBuilder<T, T[]>): Promise<number> {
965
723
  q.count()
966
724
  const r = await q
967
725
  return r[0]['count(*)']
968
726
  }
969
727
 
970
- override async countCertificateFields(
971
- args: sdk.FindCertificateFieldsArgs
972
- ): Promise<number> {
728
+ override async countCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<number> {
973
729
  return await this.getCount(this.findCertificateFieldsQuery(args))
974
730
  }
975
- override async countCertificates(
976
- args: sdk.FindCertificatesArgs
977
- ): Promise<number> {
731
+ override async countCertificates(args: sdk.FindCertificatesArgs): Promise<number> {
978
732
  return await this.getCount(this.findCertificatesQuery(args))
979
733
  }
980
- override async countCommissions(
981
- args: sdk.FindCommissionsArgs
982
- ): Promise<number> {
734
+ override async countCommissions(args: sdk.FindCommissionsArgs): Promise<number> {
983
735
  return await this.getCount(this.findCommissionsQuery(args))
984
736
  }
985
- override async countOutputBaskets(
986
- args: sdk.FindOutputBasketsArgs
987
- ): Promise<number> {
737
+ override async countOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<number> {
988
738
  return await this.getCount(this.findOutputBasketsQuery(args))
989
739
  }
990
740
  override async countOutputs(args: sdk.FindOutputsArgs): Promise<number> {
991
741
  return await this.getCount(this.findOutputsQuery(args, true))
992
742
  }
993
- override async countOutputTagMaps(
994
- args: sdk.FindOutputTagMapsArgs
995
- ): Promise<number> {
743
+ override async countOutputTagMaps(args: sdk.FindOutputTagMapsArgs): Promise<number> {
996
744
  return await this.getCount(this.findOutputTagMapsQuery(args))
997
745
  }
998
- override async countOutputTags(
999
- args: sdk.FindOutputTagsArgs
1000
- ): Promise<number> {
746
+ override async countOutputTags(args: sdk.FindOutputTagsArgs): Promise<number> {
1001
747
  return await this.getCount(this.findOutputTagsQuery(args))
1002
748
  }
1003
- override async countProvenTxReqs(
1004
- args: sdk.FindProvenTxReqsArgs
1005
- ): Promise<number> {
749
+ override async countProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<number> {
1006
750
  return await this.getCount(this.findProvenTxReqsQuery(args))
1007
751
  }
1008
752
  override async countProvenTxs(args: sdk.FindProvenTxsArgs): Promise<number> {
1009
753
  return await this.getCount(this.findProvenTxsQuery(args))
1010
754
  }
1011
- override async countSyncStates(
1012
- args: sdk.FindSyncStatesArgs
1013
- ): Promise<number> {
755
+ override async countSyncStates(args: sdk.FindSyncStatesArgs): Promise<number> {
1014
756
  return await this.getCount(this.findSyncStatesQuery(args))
1015
757
  }
1016
- override async countTransactions(
1017
- args: sdk.FindTransactionsArgs
1018
- ): Promise<number> {
758
+ override async countTransactions(args: sdk.FindTransactionsArgs): Promise<number> {
1019
759
  return await this.getCount(this.findTransactionsQuery(args, true))
1020
760
  }
1021
- override async countTxLabelMaps(
1022
- args: sdk.FindTxLabelMapsArgs
1023
- ): Promise<number> {
761
+ override async countTxLabelMaps(args: sdk.FindTxLabelMapsArgs): Promise<number> {
1024
762
  return await this.getCount(this.findTxLabelMapsQuery(args))
1025
763
  }
1026
764
  override async countTxLabels(args: sdk.FindTxLabelsArgs): Promise<number> {
@@ -1029,9 +767,7 @@ export class StorageKnex
1029
767
  override async countUsers(args: sdk.FindUsersArgs): Promise<number> {
1030
768
  return await this.getCount(this.findUsersQuery(args))
1031
769
  }
1032
- override async countMonitorEvents(
1033
- args: sdk.FindMonitorEventsArgs
1034
- ): Promise<number> {
770
+ override async countMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<number> {
1035
771
  return await this.getCount(this.findMonitorEventsQuery(args))
1036
772
  }
1037
773
 
@@ -1039,17 +775,9 @@ export class StorageKnex
1039
775
  await this.knex?.destroy()
1040
776
  }
1041
777
 
1042
- override async migrate(
1043
- storageName: string,
1044
- storageIdentityKey: string
1045
- ): Promise<string> {
778
+ override async migrate(storageName: string, storageIdentityKey: string): Promise<string> {
1046
779
  const config = {
1047
- migrationSource: new KnexMigrations(
1048
- this.chain,
1049
- storageName,
1050
- storageIdentityKey,
1051
- 1024
1052
- )
780
+ migrationSource: new KnexMigrations(this.chain, storageName, storageIdentityKey, 1024)
1053
781
  }
1054
782
  await this.knex.migrate.latest(config)
1055
783
  const version = await this.knex.migrate.currentVersion(config)
@@ -1072,10 +800,7 @@ export class StorageKnex
1072
800
  }
1073
801
  }
1074
802
 
1075
- override async transaction<T>(
1076
- scope: (trx: sdk.TrxToken) => Promise<T>,
1077
- trx?: sdk.TrxToken
1078
- ): Promise<T> {
803
+ override async transaction<T>(scope: (trx: sdk.TrxToken) => Promise<T>, trx?: sdk.TrxToken): Promise<T> {
1079
804
  if (trx) return await scope(trx)
1080
805
 
1081
806
  return await this.knex.transaction<T>(async knextrx => {
@@ -1095,29 +820,18 @@ export class StorageKnex
1095
820
  return db
1096
821
  }
1097
822
 
1098
- async validateRawTransaction(
1099
- t: TableTransaction,
1100
- trx?: sdk.TrxToken
1101
- ): Promise<void> {
823
+ async validateRawTransaction(t: TableTransaction, trx?: sdk.TrxToken): Promise<void> {
1102
824
  // if there is no txid or there is a rawTransaction return what we have.
1103
825
  if (t.rawTx || !t.txid) return
1104
826
 
1105
827
  // rawTransaction is missing, see if we moved it ...
1106
828
 
1107
- const rawTx = await this.getRawTxOfKnownValidTransaction(
1108
- t.txid,
1109
- undefined,
1110
- undefined,
1111
- trx
1112
- )
829
+ const rawTx = await this.getRawTxOfKnownValidTransaction(t.txid, undefined, undefined, trx)
1113
830
  if (!rawTx) return
1114
831
  t.rawTx = rawTx
1115
832
  }
1116
833
 
1117
- async validateOutputScript(
1118
- o: TableOutput,
1119
- trx?: sdk.TrxToken
1120
- ): Promise<void> {
834
+ async validateOutputScript(o: TableOutput, trx?: sdk.TrxToken): Promise<void> {
1121
835
  // without offset and length values return what we have (make no changes)
1122
836
  if (!o.scriptLength || !o.scriptOffset || !o.txid) return
1123
837
  // if there is an outputScript and its length is the expected length return what we have.
@@ -1125,12 +839,7 @@ export class StorageKnex
1125
839
 
1126
840
  // outputScript is missing or has incorrect length...
1127
841
 
1128
- const script = await this.getRawTxOfKnownValidTransaction(
1129
- o.txid,
1130
- o.scriptOffset,
1131
- o.scriptLength,
1132
- trx
1133
- )
842
+ const script = await this.getRawTxOfKnownValidTransaction(o.txid, o.scriptOffset, o.scriptLength, trx)
1134
843
  if (!script) return
1135
844
  o.lockingScript = script
1136
845
  }
@@ -1171,10 +880,7 @@ export class StorageKnex
1171
880
  dateFields?: string[],
1172
881
  booleanFields?: string[]
1173
882
  ): Partial<T> {
1174
- if (!this.dbtype)
1175
- throw new sdk.WERR_INTERNAL(
1176
- 'must call verifyReadyForDatabaseAccess first'
1177
- )
883
+ if (!this.dbtype) throw new sdk.WERR_INTERNAL('must call verifyReadyForDatabaseAccess first')
1178
884
  const v: any = update
1179
885
  if (v.created_at) v.created_at = this.validateEntityDate(v.created_at)
1180
886
  if (v.updated_at) v.updated_at = this.validateEntityDate(v.updated_at)
@@ -1193,10 +899,7 @@ export class StorageKnex
1193
899
  }
1194
900
  for (const key of Object.keys(v)) {
1195
901
  const val = v[key]
1196
- if (
1197
- Array.isArray(val) &&
1198
- (val.length === 0 || typeof val[0] === 'number')
1199
- ) {
902
+ if (Array.isArray(val) && (val.length === 0 || typeof val[0] === 'number')) {
1200
903
  v[key] = Buffer.from(val)
1201
904
  } else if (val === undefined) {
1202
905
  v[key] = null
@@ -1234,10 +937,7 @@ export class StorageKnex
1234
937
  }
1235
938
  for (const key of Object.keys(v)) {
1236
939
  const val = v[key]
1237
- if (
1238
- Array.isArray(val) &&
1239
- (val.length === 0 || typeof val[0] === 'number')
1240
- ) {
940
+ if (Array.isArray(val) && (val.length === 0 || typeof val[0] === 'number')) {
1241
941
  v[key] = Buffer.from(val)
1242
942
  } else if (val === undefined) {
1243
943
  v[key] = null
@@ -1247,10 +947,7 @@ export class StorageKnex
1247
947
  return v
1248
948
  }
1249
949
 
1250
- override async getLabelsForTransactionId(
1251
- transactionId?: number,
1252
- trx?: sdk.TrxToken
1253
- ): Promise<TableTxLabel[]> {
950
+ override async getLabelsForTransactionId(transactionId?: number, trx?: sdk.TrxToken): Promise<TableTxLabel[]> {
1254
951
  if (transactionId === undefined) return []
1255
952
  const labels = await this.toDb(trx)<TableTxLabel>('tx_labels')
1256
953
  .join('tx_labels_map', 'tx_labels_map.txLabelId', 'tx_labels.txLabelId')
@@ -1267,41 +964,27 @@ export class StorageKnex
1267
964
  trx?: sdk.TrxToken
1268
965
  ): Promise<TableOutputX> {
1269
966
  const ox = o as TableOutputX
1270
- if (includeBasket && ox.basketId)
1271
- ox.basket = await this.findOutputBasketById(o.basketId!, trx)
967
+ if (includeBasket && ox.basketId) ox.basket = await this.findOutputBasketById(o.basketId!, trx)
1272
968
  if (includeTags) {
1273
969
  ox.tags = await this.getTagsForOutputId(o.outputId)
1274
970
  }
1275
971
  return o
1276
972
  }
1277
973
 
1278
- override async getTagsForOutputId(
1279
- outputId: number,
1280
- trx?: sdk.TrxToken
1281
- ): Promise<TableOutputTag[]> {
974
+ override async getTagsForOutputId(outputId: number, trx?: sdk.TrxToken): Promise<TableOutputTag[]> {
1282
975
  const tags = await this.toDb(trx)<TableOutputTag>('output_tags')
1283
- .join(
1284
- 'output_tags_map',
1285
- 'output_tags_map.outputTagId',
1286
- 'output_tags.outputTagId'
1287
- )
976
+ .join('output_tags_map', 'output_tags_map.outputTagId', 'output_tags.outputTagId')
1288
977
  .where('output_tags_map.outputId', outputId)
1289
978
  .whereNot('output_tags_map.isDeleted', true)
1290
979
  .whereNot('output_tags.isDeleted', true)
1291
980
  return this.validateEntities(tags, undefined, ['isDeleted'])
1292
981
  }
1293
982
 
1294
- override async purgeData(
1295
- params: sdk.PurgeParams,
1296
- trx?: sdk.TrxToken
1297
- ): Promise<sdk.PurgeResults> {
983
+ override async purgeData(params: sdk.PurgeParams, trx?: sdk.TrxToken): Promise<sdk.PurgeResults> {
1298
984
  return await purgeData(this, params, trx)
1299
985
  }
1300
986
 
1301
- override async reviewStatus(args: {
1302
- agedLimit: Date
1303
- trx?: sdk.TrxToken
1304
- }): Promise<{ log: string }> {
987
+ override async reviewStatus(args: { agedLimit: Date; trx?: sdk.TrxToken }): Promise<{ log: string }> {
1305
988
  return await reviewStatus(this, args)
1306
989
  }
1307
990
 
@@ -1310,18 +993,12 @@ export class StorageKnex
1310
993
  *
1311
994
  * Transactionally allocate the output such that
1312
995
  */
1313
- async countChangeInputs(
1314
- userId: number,
1315
- basketId: number,
1316
- excludeSending: boolean
1317
- ): Promise<number> {
996
+ async countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number> {
1318
997
  const status: sdk.TransactionStatus[] = ['completed', 'unproven']
1319
998
  if (!excludeSending) status.push('sending')
1320
999
  const statusText = status.map(s => `'${s}'`).join(',')
1321
1000
  const txStatusCondition = `(SELECT status FROM transactions WHERE outputs.transactionId = transactions.transactionId) in (${statusText})`
1322
- let q = this.knex<TableOutput>('outputs')
1323
- .where({ userId, spendable: true, basketId })
1324
- .whereRaw(txStatusCondition)
1001
+ let q = this.knex<TableOutput>('outputs').where({ userId, spendable: true, basketId }).whereRaw(txStatusCondition)
1325
1002
  const count = await this.getCount(q)
1326
1003
  return count
1327
1004
  }
@@ -1343,22 +1020,21 @@ export class StorageKnex
1343
1020
  if (!excludeSending) status.push('sending')
1344
1021
  const statusText = status.map(s => `'${s}'`).join(',')
1345
1022
 
1346
- const r: TableOutput | undefined = await this.knex.transaction(
1347
- async trx => {
1348
- const txStatusCondition = `AND (SELECT status FROM transactions WHERE outputs.transactionId = transactions.transactionId) in (${statusText})`
1349
-
1350
- let outputId: number | undefined
1351
- const setOutputId = async (rawQuery: string): Promise<void> => {
1352
- let oidr = await trx.raw(rawQuery)
1353
- outputId = undefined
1354
- if (!oidr['outputId'] && oidr.length > 0) oidr = oidr[0]
1355
- if (!oidr['outputId'] && oidr.length > 0) oidr = oidr[0]
1356
- if (oidr['outputId']) outputId = Number(oidr['outputId'])
1357
- }
1023
+ const r: TableOutput | undefined = await this.knex.transaction(async trx => {
1024
+ const txStatusCondition = `AND (SELECT status FROM transactions WHERE outputs.transactionId = transactions.transactionId) in (${statusText})`
1025
+
1026
+ let outputId: number | undefined
1027
+ const setOutputId = async (rawQuery: string): Promise<void> => {
1028
+ let oidr = await trx.raw(rawQuery)
1029
+ outputId = undefined
1030
+ if (!oidr['outputId'] && oidr.length > 0) oidr = oidr[0]
1031
+ if (!oidr['outputId'] && oidr.length > 0) oidr = oidr[0]
1032
+ if (oidr['outputId']) outputId = Number(oidr['outputId'])
1033
+ }
1358
1034
 
1359
- if (exactSatoshis !== undefined) {
1360
- // Find outputId of output that with exactSatoshis
1361
- await setOutputId(`
1035
+ if (exactSatoshis !== undefined) {
1036
+ // Find outputId of output that with exactSatoshis
1037
+ await setOutputId(`
1362
1038
  SELECT outputId
1363
1039
  FROM outputs
1364
1040
  WHERE userId = ${userId}
@@ -1368,11 +1044,11 @@ export class StorageKnex
1368
1044
  AND satoshis = ${exactSatoshis}
1369
1045
  LIMIT 1;
1370
1046
  `)
1371
- }
1047
+ }
1372
1048
 
1373
- if (outputId === undefined) {
1374
- // Find outputId of output that would at least fund targetSatoshis
1375
- await setOutputId(`
1049
+ if (outputId === undefined) {
1050
+ // Find outputId of output that would at least fund targetSatoshis
1051
+ await setOutputId(`
1376
1052
  SELECT outputId
1377
1053
  FROM outputs
1378
1054
  WHERE userId = ${userId}
@@ -1390,11 +1066,11 @@ export class StorageKnex
1390
1066
  )
1391
1067
  LIMIT 1;
1392
1068
  `)
1393
- }
1069
+ }
1394
1070
 
1395
- if (outputId === undefined) {
1396
- // Find outputId of output that would add the most fund targetSatoshis
1397
- await setOutputId(`
1071
+ if (outputId === undefined) {
1072
+ // Find outputId of output that would add the most fund targetSatoshis
1073
+ await setOutputId(`
1398
1074
  SELECT outputId
1399
1075
  FROM outputs
1400
1076
  WHERE userId = ${userId}
@@ -1412,23 +1088,22 @@ export class StorageKnex
1412
1088
  )
1413
1089
  LIMIT 1;
1414
1090
  `)
1415
- }
1091
+ }
1416
1092
 
1417
- if (outputId === undefined) return undefined
1093
+ if (outputId === undefined) return undefined
1418
1094
 
1419
- await this.updateOutput(
1420
- outputId,
1421
- {
1422
- spendable: false,
1423
- spentBy: transactionId
1424
- },
1425
- trx
1426
- )
1095
+ await this.updateOutput(
1096
+ outputId,
1097
+ {
1098
+ spendable: false,
1099
+ spentBy: transactionId
1100
+ },
1101
+ trx
1102
+ )
1427
1103
 
1428
- const r = verifyTruthy(await this.findOutputById(outputId, trx))
1429
- return r
1430
- }
1431
- )
1104
+ const r = verifyTruthy(await this.findOutputById(outputId, trx))
1105
+ return r
1106
+ })
1432
1107
 
1433
1108
  return r
1434
1109
  }
@@ -1437,11 +1112,7 @@ export class StorageKnex
1437
1112
  * Helper to force uniform behavior across database engines.
1438
1113
  * Use to process all individual records with time stamps retreived from database.
1439
1114
  */
1440
- validateEntity<T extends sdk.EntityTimeStamp>(
1441
- entity: T,
1442
- dateFields?: string[],
1443
- booleanFields?: string[]
1444
- ): T {
1115
+ validateEntity<T extends sdk.EntityTimeStamp>(entity: T, dateFields?: string[], booleanFields?: string[]): T {
1445
1116
  entity.created_at = this.validateDate(entity.created_at)
1446
1117
  entity.updated_at = this.validateDate(entity.updated_at)
1447
1118
  if (dateFields) {
@@ -1470,11 +1141,7 @@ export class StorageKnex
1470
1141
  * Use to process all arrays of records with time stamps retreived from database.
1471
1142
  * @returns input `entities` array with contained values validated.
1472
1143
  */
1473
- validateEntities<T extends sdk.EntityTimeStamp>(
1474
- entities: T[],
1475
- dateFields?: string[],
1476
- booleanFields?: string[]
1477
- ): T[] {
1144
+ validateEntities<T extends sdk.EntityTimeStamp>(entities: T[], dateFields?: string[], booleanFields?: string[]): T[] {
1478
1145
  for (let i = 0; i < entities.length; i++) {
1479
1146
  entities[i] = this.validateEntity(entities[i], dateFields, booleanFields)
1480
1147
  }