@tasenor/common-node 1.9.16

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 (326) hide show
  1. package/.eslintrc.js +4 -0
  2. package/LICENSE +21 -0
  3. package/dist/tasenor-common-node/src/cli.d.ts +81 -0
  4. package/dist/tasenor-common-node/src/cli.js +242 -0
  5. package/dist/tasenor-common-node/src/cli.js.map +1 -0
  6. package/dist/tasenor-common-node/src/commands/account.d.ts +12 -0
  7. package/dist/tasenor-common-node/src/commands/account.js +58 -0
  8. package/dist/tasenor-common-node/src/commands/account.js.map +1 -0
  9. package/dist/tasenor-common-node/src/commands/balance.d.ts +11 -0
  10. package/dist/tasenor-common-node/src/commands/balance.js +117 -0
  11. package/dist/tasenor-common-node/src/commands/balance.js.map +1 -0
  12. package/dist/tasenor-common-node/src/commands/db.d.ts +14 -0
  13. package/dist/tasenor-common-node/src/commands/db.js +69 -0
  14. package/dist/tasenor-common-node/src/commands/db.js.map +1 -0
  15. package/dist/tasenor-common-node/src/commands/entry.d.ts +13 -0
  16. package/dist/tasenor-common-node/src/commands/entry.js +106 -0
  17. package/dist/tasenor-common-node/src/commands/entry.js.map +1 -0
  18. package/dist/tasenor-common-node/src/commands/import.d.ts +17 -0
  19. package/dist/tasenor-common-node/src/commands/import.js +140 -0
  20. package/dist/tasenor-common-node/src/commands/import.js.map +1 -0
  21. package/dist/tasenor-common-node/src/commands/importer.d.ts +13 -0
  22. package/dist/tasenor-common-node/src/commands/importer.js +71 -0
  23. package/dist/tasenor-common-node/src/commands/importer.js.map +1 -0
  24. package/dist/tasenor-common-node/src/commands/index.d.ts +191 -0
  25. package/dist/tasenor-common-node/src/commands/index.js +482 -0
  26. package/dist/tasenor-common-node/src/commands/index.js.map +1 -0
  27. package/dist/tasenor-common-node/src/commands/period.d.ts +12 -0
  28. package/dist/tasenor-common-node/src/commands/period.js +48 -0
  29. package/dist/tasenor-common-node/src/commands/period.js.map +1 -0
  30. package/dist/tasenor-common-node/src/commands/plugin.d.ts +15 -0
  31. package/dist/tasenor-common-node/src/commands/plugin.js +78 -0
  32. package/dist/tasenor-common-node/src/commands/plugin.js.map +1 -0
  33. package/dist/tasenor-common-node/src/commands/report.d.ts +11 -0
  34. package/dist/tasenor-common-node/src/commands/report.js +96 -0
  35. package/dist/tasenor-common-node/src/commands/report.js.map +1 -0
  36. package/dist/tasenor-common-node/src/commands/settings.d.ts +10 -0
  37. package/dist/tasenor-common-node/src/commands/settings.js +64 -0
  38. package/dist/tasenor-common-node/src/commands/settings.js.map +1 -0
  39. package/dist/tasenor-common-node/src/commands/stock.d.ts +8 -0
  40. package/dist/tasenor-common-node/src/commands/stock.js +73 -0
  41. package/dist/tasenor-common-node/src/commands/stock.js.map +1 -0
  42. package/dist/tasenor-common-node/src/commands/tag.d.ts +13 -0
  43. package/dist/tasenor-common-node/src/commands/tag.js +89 -0
  44. package/dist/tasenor-common-node/src/commands/tag.js.map +1 -0
  45. package/dist/tasenor-common-node/src/commands/tx.d.ts +12 -0
  46. package/dist/tasenor-common-node/src/commands/tx.js +81 -0
  47. package/dist/tasenor-common-node/src/commands/tx.js.map +1 -0
  48. package/dist/tasenor-common-node/src/commands/user.d.ts +12 -0
  49. package/dist/tasenor-common-node/src/commands/user.js +52 -0
  50. package/dist/tasenor-common-node/src/commands/user.js.map +1 -0
  51. package/dist/tasenor-common-node/src/database/BookkeeperImporter.d.ts +77 -0
  52. package/dist/tasenor-common-node/src/database/BookkeeperImporter.js +343 -0
  53. package/dist/tasenor-common-node/src/database/BookkeeperImporter.js.map +1 -0
  54. package/dist/tasenor-common-node/src/database/DB.d.ts +51 -0
  55. package/dist/tasenor-common-node/src/database/DB.js +354 -0
  56. package/dist/tasenor-common-node/src/database/DB.js.map +1 -0
  57. package/dist/tasenor-common-node/src/database/index.d.ts +7 -0
  58. package/dist/tasenor-common-node/src/database/index.js +8 -0
  59. package/dist/tasenor-common-node/src/database/index.js.map +1 -0
  60. package/dist/tasenor-common-node/src/doccer.d.ts +29 -0
  61. package/dist/tasenor-common-node/src/doccer.js +30 -0
  62. package/dist/tasenor-common-node/src/doccer.js.map +1 -0
  63. package/dist/tasenor-common-node/src/error.d.ts +30 -0
  64. package/dist/tasenor-common-node/src/error.js +35 -0
  65. package/dist/tasenor-common-node/src/error.js.map +1 -0
  66. package/dist/tasenor-common-node/src/export/Exporter.d.ts +69 -0
  67. package/dist/tasenor-common-node/src/export/Exporter.js +123 -0
  68. package/dist/tasenor-common-node/src/export/Exporter.js.map +1 -0
  69. package/dist/tasenor-common-node/src/export/TasenorExporter.d.ts +55 -0
  70. package/dist/tasenor-common-node/src/export/TasenorExporter.js +135 -0
  71. package/dist/tasenor-common-node/src/export/TasenorExporter.js.map +1 -0
  72. package/dist/tasenor-common-node/src/export/TilitinExporter.d.ts +71 -0
  73. package/dist/tasenor-common-node/src/export/TilitinExporter.js +290 -0
  74. package/dist/tasenor-common-node/src/export/TilitinExporter.js.map +1 -0
  75. package/dist/tasenor-common-node/src/export/index.d.ts +8 -0
  76. package/dist/tasenor-common-node/src/export/index.js +9 -0
  77. package/dist/tasenor-common-node/src/export/index.js.map +1 -0
  78. package/dist/tasenor-common-node/src/import/TextFileProcessHandler.d.ts +104 -0
  79. package/dist/tasenor-common-node/src/import/TextFileProcessHandler.js +354 -0
  80. package/dist/tasenor-common-node/src/import/TextFileProcessHandler.js.map +1 -0
  81. package/dist/tasenor-common-node/src/import/TransactionImportConnector.d.ts +38 -0
  82. package/dist/tasenor-common-node/src/import/TransactionImportConnector.js +27 -0
  83. package/dist/tasenor-common-node/src/import/TransactionImportConnector.js.map +1 -0
  84. package/dist/tasenor-common-node/src/import/TransactionImportHandler.d.ts +173 -0
  85. package/dist/tasenor-common-node/src/import/TransactionImportHandler.js +733 -0
  86. package/dist/tasenor-common-node/src/import/TransactionImportHandler.js.map +1 -0
  87. package/dist/tasenor-common-node/src/import/TransactionRules.d.ts +238 -0
  88. package/dist/tasenor-common-node/src/import/TransactionRules.js +522 -0
  89. package/dist/tasenor-common-node/src/import/TransactionRules.js.map +1 -0
  90. package/dist/tasenor-common-node/src/import/TransactionUI.d.ts +181 -0
  91. package/dist/tasenor-common-node/src/import/TransactionUI.js +482 -0
  92. package/dist/tasenor-common-node/src/import/TransactionUI.js.map +1 -0
  93. package/dist/tasenor-common-node/src/import/TransferAnalyzer.d.ts +324 -0
  94. package/dist/tasenor-common-node/src/import/TransferAnalyzer.js +1379 -0
  95. package/dist/tasenor-common-node/src/import/TransferAnalyzer.js.map +1 -0
  96. package/dist/tasenor-common-node/src/import/index.d.ts +11 -0
  97. package/dist/tasenor-common-node/src/import/index.js +12 -0
  98. package/dist/tasenor-common-node/src/import/index.js.map +1 -0
  99. package/dist/tasenor-common-node/src/index.d.ts +12 -0
  100. package/dist/tasenor-common-node/src/index.js +13 -0
  101. package/dist/tasenor-common-node/src/index.js.map +1 -0
  102. package/dist/tasenor-common-node/src/net/crypto.d.ts +33 -0
  103. package/dist/tasenor-common-node/src/net/crypto.js +63 -0
  104. package/dist/tasenor-common-node/src/net/crypto.js.map +1 -0
  105. package/dist/tasenor-common-node/src/net/git.d.ts +49 -0
  106. package/dist/tasenor-common-node/src/net/git.js +137 -0
  107. package/dist/tasenor-common-node/src/net/git.js.map +1 -0
  108. package/dist/tasenor-common-node/src/net/index.d.ts +10 -0
  109. package/dist/tasenor-common-node/src/net/index.js +11 -0
  110. package/dist/tasenor-common-node/src/net/index.js.map +1 -0
  111. package/dist/tasenor-common-node/src/net/middleware.d.ts +61 -0
  112. package/dist/tasenor-common-node/src/net/middleware.js +220 -0
  113. package/dist/tasenor-common-node/src/net/middleware.js.map +1 -0
  114. package/dist/tasenor-common-node/src/net/tokens.d.ts +50 -0
  115. package/dist/tasenor-common-node/src/net/tokens.js +141 -0
  116. package/dist/tasenor-common-node/src/net/tokens.js.map +1 -0
  117. package/dist/tasenor-common-node/src/net/vault.d.ts +67 -0
  118. package/dist/tasenor-common-node/src/net/vault.js +145 -0
  119. package/dist/tasenor-common-node/src/net/vault.js.map +1 -0
  120. package/dist/tasenor-common-node/src/plugins/BackendPlugin.d.ts +91 -0
  121. package/dist/tasenor-common-node/src/plugins/BackendPlugin.js +165 -0
  122. package/dist/tasenor-common-node/src/plugins/BackendPlugin.js.map +1 -0
  123. package/dist/tasenor-common-node/src/plugins/DataPlugin.d.ts +13 -0
  124. package/dist/tasenor-common-node/src/plugins/DataPlugin.js +26 -0
  125. package/dist/tasenor-common-node/src/plugins/DataPlugin.js.map +1 -0
  126. package/dist/tasenor-common-node/src/plugins/ImportPlugin.d.ts +188 -0
  127. package/dist/tasenor-common-node/src/plugins/ImportPlugin.js +204 -0
  128. package/dist/tasenor-common-node/src/plugins/ImportPlugin.js.map +1 -0
  129. package/dist/tasenor-common-node/src/plugins/ReportPlugin.d.ts +132 -0
  130. package/dist/tasenor-common-node/src/plugins/ReportPlugin.js +393 -0
  131. package/dist/tasenor-common-node/src/plugins/ReportPlugin.js.map +1 -0
  132. package/dist/tasenor-common-node/src/plugins/SchemePlugin.d.ts +34 -0
  133. package/dist/tasenor-common-node/src/plugins/SchemePlugin.js +47 -0
  134. package/dist/tasenor-common-node/src/plugins/SchemePlugin.js.map +1 -0
  135. package/dist/tasenor-common-node/src/plugins/ServicePlugin.d.ts +80 -0
  136. package/dist/tasenor-common-node/src/plugins/ServicePlugin.js +168 -0
  137. package/dist/tasenor-common-node/src/plugins/ServicePlugin.js.map +1 -0
  138. package/dist/tasenor-common-node/src/plugins/ToolPlugin.d.ts +27 -0
  139. package/dist/tasenor-common-node/src/plugins/ToolPlugin.js +37 -0
  140. package/dist/tasenor-common-node/src/plugins/ToolPlugin.js.map +1 -0
  141. package/dist/tasenor-common-node/src/plugins/index.d.ts +13 -0
  142. package/dist/tasenor-common-node/src/plugins/index.js +14 -0
  143. package/dist/tasenor-common-node/src/plugins/index.js.map +1 -0
  144. package/dist/tasenor-common-node/src/plugins/plugins.d.ts +101 -0
  145. package/dist/tasenor-common-node/src/plugins/plugins.js +292 -0
  146. package/dist/tasenor-common-node/src/plugins/plugins.js.map +1 -0
  147. package/dist/tasenor-common-node/src/process/Process.d.ts +108 -0
  148. package/dist/tasenor-common-node/src/process/Process.js +335 -0
  149. package/dist/tasenor-common-node/src/process/Process.js.map +1 -0
  150. package/dist/tasenor-common-node/src/process/ProcessConnector.d.ts +24 -0
  151. package/dist/tasenor-common-node/src/process/ProcessConnector.js +28 -0
  152. package/dist/tasenor-common-node/src/process/ProcessConnector.js.map +1 -0
  153. package/dist/tasenor-common-node/src/process/ProcessFile.d.ts +69 -0
  154. package/dist/tasenor-common-node/src/process/ProcessFile.js +145 -0
  155. package/dist/tasenor-common-node/src/process/ProcessFile.js.map +1 -0
  156. package/dist/tasenor-common-node/src/process/ProcessHandler.d.ts +60 -0
  157. package/dist/tasenor-common-node/src/process/ProcessHandler.js +73 -0
  158. package/dist/tasenor-common-node/src/process/ProcessHandler.js.map +1 -0
  159. package/dist/tasenor-common-node/src/process/ProcessStep.d.ts +52 -0
  160. package/dist/tasenor-common-node/src/process/ProcessStep.js +78 -0
  161. package/dist/tasenor-common-node/src/process/ProcessStep.js.map +1 -0
  162. package/dist/tasenor-common-node/src/process/ProcessingSystem.d.ts +60 -0
  163. package/dist/tasenor-common-node/src/process/ProcessingSystem.js +182 -0
  164. package/dist/tasenor-common-node/src/process/ProcessingSystem.js.map +1 -0
  165. package/dist/tasenor-common-node/src/process/index.d.ts +11 -0
  166. package/dist/tasenor-common-node/src/process/index.js +12 -0
  167. package/dist/tasenor-common-node/src/process/index.js.map +1 -0
  168. package/dist/tasenor-common-node/src/reports/conversions.d.ts +8 -0
  169. package/dist/tasenor-common-node/src/reports/conversions.js +47 -0
  170. package/dist/tasenor-common-node/src/reports/conversions.js.map +1 -0
  171. package/dist/tasenor-common-node/src/reports/index.d.ts +6 -0
  172. package/dist/tasenor-common-node/src/reports/index.js +7 -0
  173. package/dist/tasenor-common-node/src/reports/index.js.map +1 -0
  174. package/dist/tasenor-common-node/src/server/ISPDemoServer.d.ts +43 -0
  175. package/dist/tasenor-common-node/src/server/ISPDemoServer.js +112 -0
  176. package/dist/tasenor-common-node/src/server/ISPDemoServer.js.map +1 -0
  177. package/dist/tasenor-common-node/src/server/api.d.ts +15 -0
  178. package/dist/tasenor-common-node/src/server/api.js +27 -0
  179. package/dist/tasenor-common-node/src/server/api.js.map +1 -0
  180. package/dist/tasenor-common-node/src/server/index.d.ts +7 -0
  181. package/dist/tasenor-common-node/src/server/index.js +8 -0
  182. package/dist/tasenor-common-node/src/server/index.js.map +1 -0
  183. package/dist/tasenor-common-node/src/server/router.d.ts +5 -0
  184. package/dist/tasenor-common-node/src/server/router.js +37 -0
  185. package/dist/tasenor-common-node/src/server/router.js.map +1 -0
  186. package/dist/tasenor-common-node/src/system.d.ts +27 -0
  187. package/dist/tasenor-common-node/src/system.js +95 -0
  188. package/dist/tasenor-common-node/src/system.js.map +1 -0
  189. package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.d.ts +21 -0
  190. package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.js +33 -0
  191. package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.js.map +1 -0
  192. package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.d.ts +24 -0
  193. package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.js +68 -0
  194. package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.js.map +1 -0
  195. package/dist/tasenor-common-node/src/testing/UnitTester.d.ts +64 -0
  196. package/dist/tasenor-common-node/src/testing/UnitTester.js +199 -0
  197. package/dist/tasenor-common-node/src/testing/UnitTester.js.map +1 -0
  198. package/dist/tasenor-common-node/src/testing/index.d.ts +4 -0
  199. package/dist/tasenor-common-node/src/testing/index.js +5 -0
  200. package/dist/tasenor-common-node/src/testing/index.js.map +1 -0
  201. package/dist/tasenor-common-node/src/testing/test-handlers.d.ts +13 -0
  202. package/dist/tasenor-common-node/src/testing/test-handlers.js +52 -0
  203. package/dist/tasenor-common-node/src/testing/test-handlers.js.map +1 -0
  204. package/dist/tasenor-common-node/tests/TransactionRules.spec.d.ts +1 -0
  205. package/dist/tasenor-common-node/tests/TransactionRules.spec.js +64 -0
  206. package/dist/tasenor-common-node/tests/TransactionRules.spec.js.map +1 -0
  207. package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.d.ts +1 -0
  208. package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.js +80 -0
  209. package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.js.map +1 -0
  210. package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.d.ts +1 -0
  211. package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.js +342 -0
  212. package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.js.map +1 -0
  213. package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.d.ts +1 -0
  214. package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.js +174 -0
  215. package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.js.map +1 -0
  216. package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.d.ts +1 -0
  217. package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.js +175 -0
  218. package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.js.map +1 -0
  219. package/dist/tasenor-common-node/tests/password.spec.d.ts +1 -0
  220. package/dist/tasenor-common-node/tests/password.spec.js +8 -0
  221. package/dist/tasenor-common-node/tests/password.spec.js.map +1 -0
  222. package/dist/tasenor-common-node/tests/tokens.spec.d.ts +1 -0
  223. package/dist/tasenor-common-node/tests/tokens.spec.js +49 -0
  224. package/dist/tasenor-common-node/tests/tokens.spec.js.map +1 -0
  225. package/dist/tasenor-common-node/tests/vault.spec.d.ts +1 -0
  226. package/dist/tasenor-common-node/tests/vault.spec.js +19 -0
  227. package/dist/tasenor-common-node/tests/vault.spec.js.map +1 -0
  228. package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.d.ts +11 -0
  229. package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.js +30 -0
  230. package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.js.map +1 -0
  231. package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.d.ts +5 -0
  232. package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.js +350 -0
  233. package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.js.map +1 -0
  234. package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.d.ts +23 -0
  235. package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.js +83 -0
  236. package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.js.map +1 -0
  237. package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.d.ts +28 -0
  238. package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.js +340 -0
  239. package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.js.map +1 -0
  240. package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.d.ts +11 -0
  241. package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.js +39 -0
  242. package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.js.map +1 -0
  243. package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.d.ts +17 -0
  244. package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.js +66 -0
  245. package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.js.map +1 -0
  246. package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.d.ts +13 -0
  247. package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.js +241 -0
  248. package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.js.map +1 -0
  249. package/jest.config.js +1 -0
  250. package/package.json +62 -0
  251. package/src/cli.ts +267 -0
  252. package/src/commands/account.ts +69 -0
  253. package/src/commands/balance.ts +131 -0
  254. package/src/commands/db.ts +84 -0
  255. package/src/commands/entry.ts +117 -0
  256. package/src/commands/import.ts +160 -0
  257. package/src/commands/importer.ts +84 -0
  258. package/src/commands/index.ts +534 -0
  259. package/src/commands/period.ts +59 -0
  260. package/src/commands/plugin.ts +95 -0
  261. package/src/commands/report.ts +113 -0
  262. package/src/commands/settings.ts +75 -0
  263. package/src/commands/stock.ts +80 -0
  264. package/src/commands/tag.ts +102 -0
  265. package/src/commands/tx.ts +93 -0
  266. package/src/commands/user.ts +65 -0
  267. package/src/database/BookkeeperImporter.ts +358 -0
  268. package/src/database/DB.ts +396 -0
  269. package/src/database/index.ts +7 -0
  270. package/src/doccer.ts +29 -0
  271. package/src/error.ts +32 -0
  272. package/src/export/Exporter.ts +136 -0
  273. package/src/export/TasenorExporter.ts +144 -0
  274. package/src/export/TilitinExporter.ts +302 -0
  275. package/src/export/index.ts +8 -0
  276. package/src/import/TextFileProcessHandler.ts +384 -0
  277. package/src/import/TransactionImportConnector.ts +65 -0
  278. package/src/import/TransactionImportHandler.ts +819 -0
  279. package/src/import/TransactionRules.ts +570 -0
  280. package/src/import/TransactionUI.ts +520 -0
  281. package/src/import/TransferAnalyzer.ts +1450 -0
  282. package/src/import/index.ts +11 -0
  283. package/src/index.ts +12 -0
  284. package/src/net/crypto.ts +69 -0
  285. package/src/net/git.ts +151 -0
  286. package/src/net/index.ts +10 -0
  287. package/src/net/middleware.ts +261 -0
  288. package/src/net/tokens.ts +140 -0
  289. package/src/net/vault.ts +161 -0
  290. package/src/plugins/BackendPlugin.ts +188 -0
  291. package/src/plugins/DataPlugin.ts +29 -0
  292. package/src/plugins/ImportPlugin.ts +211 -0
  293. package/src/plugins/ReportPlugin.ts +443 -0
  294. package/src/plugins/SchemePlugin.ts +56 -0
  295. package/src/plugins/ServicePlugin.ts +188 -0
  296. package/src/plugins/ToolPlugin.ts +44 -0
  297. package/src/plugins/index.ts +13 -0
  298. package/src/plugins/plugins.ts +345 -0
  299. package/src/process/Process.ts +368 -0
  300. package/src/process/ProcessConnector.ts +45 -0
  301. package/src/process/ProcessFile.ts +169 -0
  302. package/src/process/ProcessHandler.ts +94 -0
  303. package/src/process/ProcessStep.ts +100 -0
  304. package/src/process/ProcessingSystem.ts +202 -0
  305. package/src/process/index.ts +11 -0
  306. package/src/reports/conversions.ts +52 -0
  307. package/src/reports/index.ts +6 -0
  308. package/src/server/ISPDemoServer.ts +122 -0
  309. package/src/server/api.ts +37 -0
  310. package/src/server/index.ts +7 -0
  311. package/src/server/router.ts +60 -0
  312. package/src/system.ts +96 -0
  313. package/src/testing/ProcessingSystemMock.ts +45 -0
  314. package/src/testing/UnitTestImportConnector.ts +86 -0
  315. package/src/testing/UnitTester.ts +231 -0
  316. package/src/testing/index.ts +4 -0
  317. package/src/testing/test-handlers.ts +55 -0
  318. package/tests/TransactionRules.spec.ts +73 -0
  319. package/tests/TransferAnalyzer-account-address.spec.ts +87 -0
  320. package/tests/TransferAnalyzer-buying-and-selling.spec.ts +354 -0
  321. package/tests/TransferAnalyzer-loans.spec.ts +197 -0
  322. package/tests/TransferAnalyzer-multiple-null-amounts.spec.ts +181 -0
  323. package/tests/password.spec.ts +8 -0
  324. package/tests/tokens.spec.ts +52 -0
  325. package/tests/vault.spec.ts +20 -0
  326. package/tsconfig.json +13 -0
package/.eslintrc.js ADDED
@@ -0,0 +1,4 @@
1
+ module.exports = {
2
+ root: true,
3
+ extends: ['tasenor']
4
+ }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Tommi Ronkainen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,81 @@
1
+ import * as FormData from 'form-data';
2
+ import { HttpMethod, Url, Value, TokenPair, Token, HttpResponse } from '@dataplug/tasenor-common';
3
+ import { Command, CommandArgumentDefault, CommandArguments } from './commands';
4
+ /**
5
+ * Ask a question on the console and return answer.
6
+ * @param question
7
+ * @returns
8
+ */
9
+ declare function ask(question: string): Promise<string>;
10
+ /**
11
+ * Exit hook that needs to be called if used functions in this library.
12
+ */
13
+ declare function exit(): void;
14
+ /**
15
+ * An interface for accessing API.
16
+ */
17
+ export declare class CLIRunner {
18
+ user: string;
19
+ password: string;
20
+ api: Url;
21
+ uiApi: Url;
22
+ token: Token;
23
+ commands: Record<string, Command>;
24
+ originalArgs: string[];
25
+ args: CommandArguments;
26
+ /**
27
+ * Execute HTTP request.
28
+ * @param method
29
+ * @param url
30
+ * @returns
31
+ */
32
+ request(method: HttpMethod, url: string, data: Value | undefined | FormData): Promise<HttpResponse>;
33
+ /**
34
+ * Execute HTTP request against UI API.
35
+ * @param method
36
+ * @param url
37
+ * @returns
38
+ */
39
+ requestUi(method: HttpMethod, url: string, data: Value | undefined | FormData): Promise<HttpResponse>;
40
+ /**
41
+ * Execute request with optional retries.
42
+ * @param caller
43
+ * @param fullUrl
44
+ * @param data
45
+ * @returns
46
+ */
47
+ doRequest(caller: any, fullUrl: any, data: any): Promise<import("@dataplug/tasenor-common").HttpSuccessResponse<Value>>;
48
+ /**
49
+ * Log in if we don't have access token yet.
50
+ */
51
+ login(): Promise<void>;
52
+ /**
53
+ * Set up the API.
54
+ * @param tokens
55
+ */
56
+ configureApi(api: Url, tokens?: TokenPair | undefined): void;
57
+ }
58
+ /**
59
+ * A class implementing dynamic collection of commands that are automatically looked up when called.
60
+ */
61
+ export declare class CLI extends CLIRunner {
62
+ /**
63
+ * Scan commands and instantiate them to the collection.
64
+ * @param paths
65
+ */
66
+ constructor();
67
+ /**
68
+ * Insert defaults for the arguments.
69
+ * @param args
70
+ */
71
+ addDefaults(defaults: CommandArgumentDefault[]): void;
72
+ /**
73
+ * Parse and execute the command.
74
+ */
75
+ run(defaults?: CommandArgumentDefault[], explicitArgs?: string[]): Promise<void>;
76
+ }
77
+ export declare const cli: {
78
+ ask: typeof ask;
79
+ exit: typeof exit;
80
+ };
81
+ export {};
@@ -0,0 +1,242 @@
1
+ /* eslint-disable camelcase */
2
+ /**
3
+ * Command line interface utilities.
4
+ *
5
+ * @module tasenor-common-node/src/cli
6
+ */
7
+ import * as readline from 'readline';
8
+ import { ArgumentParser } from 'argparse';
9
+ import { net, log, mute, waitPromise, note } from '@dataplug/tasenor-common';
10
+ import clone from 'clone';
11
+ import DbCommand from './commands/db';
12
+ import AccountCommand from './commands/account';
13
+ import BalanceCommand from './commands/balance';
14
+ import EntryCommand from './commands/entry';
15
+ import ImportCommand from './commands/import';
16
+ import PeriodCommand from './commands/period';
17
+ import ImporterCommand from './commands/importer';
18
+ import PluginCommand from './commands/plugin';
19
+ import ReportCommand from './commands/report';
20
+ import SettingsCommand from './commands/settings';
21
+ import StockCommand from './commands/stock';
22
+ import TagCommand from './commands/tag';
23
+ import TxCommand from './commands/tx';
24
+ import UserCommand from './commands/user';
25
+ let readlineInterface;
26
+ /**
27
+ * Ask a question on the console and return answer.
28
+ * @param question
29
+ * @returns
30
+ */
31
+ function ask(question) {
32
+ if (!readlineInterface) {
33
+ readlineInterface = readline.createInterface({
34
+ input: process.stdin,
35
+ output: process.stdout
36
+ });
37
+ }
38
+ return new Promise((resolve) => {
39
+ readlineInterface.question(question ? `${question} ` : '>', (text) => { resolve(text); });
40
+ });
41
+ }
42
+ /**
43
+ * Exit hook that needs to be called if used functions in this library.
44
+ */
45
+ function exit() {
46
+ if (readlineInterface)
47
+ readlineInterface.close();
48
+ }
49
+ /**
50
+ * An interface for accessing API.
51
+ */
52
+ export class CLIRunner {
53
+ user;
54
+ password;
55
+ api;
56
+ uiApi;
57
+ token;
58
+ commands;
59
+ originalArgs;
60
+ args;
61
+ /**
62
+ * Execute HTTP request.
63
+ * @param method
64
+ * @param url
65
+ * @returns
66
+ */
67
+ async request(method, url, data) {
68
+ const caller = net[method];
69
+ const fullUrl = url.startsWith('/') ? `${this.api}${url}` : `${this.api}/${url}`;
70
+ return this.doRequest(caller, fullUrl, data);
71
+ }
72
+ /**
73
+ * Execute HTTP request against UI API.
74
+ * @param method
75
+ * @param url
76
+ * @returns
77
+ */
78
+ async requestUi(method, url, data) {
79
+ const caller = net[method];
80
+ const fullUrl = url.startsWith('/') ? `${this.uiApi}${url}` : `${this.uiApi}/${url}`;
81
+ return this.doRequest(caller, fullUrl, data);
82
+ }
83
+ /**
84
+ * Execute request with optional retries.
85
+ * @param caller
86
+ * @param fullUrl
87
+ * @param data
88
+ * @returns
89
+ */
90
+ async doRequest(caller, fullUrl, data) {
91
+ let result = null;
92
+ let error;
93
+ const max = this.args.retry || 0;
94
+ for (let i = -1; i < max; i++) {
95
+ try {
96
+ result = await caller(fullUrl, data);
97
+ if (result && result.success) {
98
+ return result;
99
+ }
100
+ error = new Error(JSON.stringify(result));
101
+ }
102
+ catch (err) {
103
+ error = err;
104
+ }
105
+ const delay = (i + 1) * 5;
106
+ note(`Waiting for ${delay} seconds`);
107
+ await waitPromise(delay * 1000);
108
+ }
109
+ throw error;
110
+ }
111
+ /**
112
+ * Log in if we don't have access token yet.
113
+ */
114
+ async login() {
115
+ if (this.token)
116
+ return;
117
+ log(`Logging in to ${this.api} as ${this.user}`);
118
+ const resp = await this.request('POST', '/auth', { user: this.user, password: this.password });
119
+ if (resp.success && resp.data && resp.data instanceof Object) {
120
+ if ('token' in resp.data && 'refresh' in resp.data) {
121
+ const { token, refresh } = resp.data;
122
+ this.configureApi(this.api, { token, refresh });
123
+ this.configureApi(this.uiApi, { token, refresh });
124
+ this.token = token;
125
+ }
126
+ }
127
+ }
128
+ /**
129
+ * Set up the API.
130
+ * @param tokens
131
+ */
132
+ configureApi(api, tokens = undefined) {
133
+ net.configure({ sites: { [api]: {} } });
134
+ if (tokens) {
135
+ net.setConf(api, 'token', tokens.token);
136
+ net.setConf(api, 'refreshToken', tokens.refresh);
137
+ }
138
+ }
139
+ }
140
+ /**
141
+ * A class implementing dynamic collection of commands that are automatically looked up when called.
142
+ */
143
+ export class CLI extends CLIRunner {
144
+ /**
145
+ * Scan commands and instantiate them to the collection.
146
+ * @param paths
147
+ */
148
+ constructor() {
149
+ super();
150
+ this.commands = {
151
+ account: new AccountCommand(this),
152
+ db: new DbCommand(this),
153
+ balance: new BalanceCommand(this),
154
+ entry: new EntryCommand(this),
155
+ import: new ImportCommand(this),
156
+ importer: new ImporterCommand(this),
157
+ period: new PeriodCommand(this),
158
+ plugin: new PluginCommand(this),
159
+ report: new ReportCommand(this),
160
+ settings: new SettingsCommand(this),
161
+ stock: new StockCommand(this),
162
+ tag: new TagCommand(this),
163
+ tx: new TxCommand(this),
164
+ user: new UserCommand(this)
165
+ };
166
+ }
167
+ /**
168
+ * Insert defaults for the arguments.
169
+ * @param args
170
+ */
171
+ addDefaults(defaults) {
172
+ for (const def of defaults) {
173
+ const { name, envName, defaultValue } = def;
174
+ if (this.args[name] === undefined) {
175
+ this.args[name] = process.env[envName] || defaultValue;
176
+ }
177
+ }
178
+ }
179
+ /**
180
+ * Parse and execute the command.
181
+ */
182
+ async run(defaults = [], explicitArgs = []) {
183
+ // Helper to extract arguments.
184
+ const pop = (args, name) => {
185
+ const ret = args[name];
186
+ delete args[name];
187
+ if (!ret)
188
+ return '';
189
+ return typeof ret === 'string' ? ret : ret[0];
190
+ };
191
+ const parser = new ArgumentParser({
192
+ description: 'Tasenor command line tool'
193
+ });
194
+ parser.add_argument('command', { help: 'Command handling the operation', choices: Object.keys(this.commands) });
195
+ parser.add_argument('--debug', '-d', { help: 'If set, show logs for requests etc', action: 'store_true', required: false });
196
+ parser.add_argument('--json', { help: 'If set, show output as JSON', action: 'store_true', required: false });
197
+ parser.add_argument('--verbose', '-v', { help: 'If set, show more comprehensive output', action: 'store_true', required: false });
198
+ parser.add_argument('--user', { help: 'User email for logging in (use USERNAME env by default)', type: String, required: false });
199
+ parser.add_argument('--password', { help: 'User password for logging in (use PASSWORD env by default)', type: String, required: false });
200
+ parser.add_argument('--api', { help: 'The server base URL providing Bookkeeper API (use API env by default)', type: String, required: false });
201
+ parser.add_argument('--ui-api', { help: 'The server base URL providing Bookkeeper UI API (use UI_API env by default)', type: String, required: false });
202
+ parser.add_argument('--retry', { help: 'If given, retry this many times if network call fails', type: Number, required: false });
203
+ // Set up args.
204
+ this.originalArgs = explicitArgs.length ? clone(explicitArgs) : clone(process.argv.splice(2));
205
+ // Find the command and add its arguments.
206
+ let cmd;
207
+ for (let i = 0; i < this.originalArgs.length; i++) {
208
+ if (this.commands[this.originalArgs[i]]) {
209
+ cmd = this.commands[this.originalArgs[i]];
210
+ break;
211
+ }
212
+ }
213
+ if (cmd) {
214
+ cmd.addArguments(parser);
215
+ }
216
+ // Collect and fix arguments.
217
+ this.args = parser.parse_args(this.originalArgs);
218
+ cmd?.setArgs(this.args);
219
+ this.addDefaults(defaults);
220
+ this.user = pop(this.args, 'user');
221
+ this.password = pop(this.args, 'password');
222
+ this.api = pop(this.args, 'api');
223
+ this.uiApi = pop(this.args, 'ui_api');
224
+ delete this.args.command;
225
+ if (!this.args.debug) {
226
+ mute();
227
+ }
228
+ // Configure net APIs.
229
+ if (this.api) {
230
+ this.configureApi(this.api);
231
+ }
232
+ if (this.uiApi) {
233
+ this.configureApi(this.uiApi);
234
+ }
235
+ cmd && await cmd.run();
236
+ }
237
+ }
238
+ export const cli = {
239
+ ask,
240
+ exit
241
+ };
242
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { AccountModelData } from '@dataplug/tasenor-common';
2
+ import { Command } from '.';
3
+ import { ArgumentParser } from 'argparse';
4
+ declare class AccountCommand extends Command {
5
+ addArguments(parser: ArgumentParser): void;
6
+ ls(): Promise<void>;
7
+ print(data: AccountModelData[]): void;
8
+ rm(): Promise<void>;
9
+ create(): Promise<void>;
10
+ run(): Promise<void>;
11
+ }
12
+ export default AccountCommand;
@@ -0,0 +1,58 @@
1
+ /* eslint-disable camelcase */
2
+ import { log } from '@dataplug/tasenor-common';
3
+ import { Command } from '.';
4
+ class AccountCommand extends Command {
5
+ addArguments(parser) {
6
+ const sub = parser.add_subparsers();
7
+ const ls = sub.add_parser('ls', { help: 'List all accounts' });
8
+ ls.set_defaults({ subCommand: 'ls' });
9
+ ls.add_argument('db', { help: 'Name of the database' });
10
+ const rm = sub.add_parser('rm', { help: 'Delete an account' });
11
+ rm.set_defaults({ subCommand: 'rm' });
12
+ rm.add_argument('db', { help: 'Name of the database' });
13
+ rm.add_argument('id', { help: 'ID of the account' });
14
+ const create = sub.add_parser('create', { help: 'Create an account' });
15
+ create.set_defaults({ subCommand: 'create' });
16
+ create.add_argument('db', { help: 'Name of the database' });
17
+ create.add_argument('language', { help: 'Account language' });
18
+ create.add_argument('currency', { help: 'Account currency' });
19
+ create.add_argument('type', { help: 'Account type' });
20
+ create.add_argument('number', { help: 'Account number' });
21
+ create.add_argument('name', { help: 'Account name' });
22
+ create.add_argument('data', { help: 'Additional account data in JSON format', nargs: '?' });
23
+ }
24
+ async ls() {
25
+ const { db } = this.args;
26
+ const resp = await this.get(`/db/${db}/account`);
27
+ this.out('account', resp);
28
+ }
29
+ print(data) {
30
+ for (const account of data.sort((a, b) => (a.id || 0) - (b.id || 0))) {
31
+ const { id, number, name, type, language, currency, data } = account;
32
+ console.log(`#${id} [${language} ${currency} ${type}] ${number} ${name} ${Object.keys(data).length ? JSON.stringify(data) : ''}`);
33
+ }
34
+ }
35
+ async rm() {
36
+ const { db, id } = this.args;
37
+ await this.delete(`/db/${db}/account/${id}`);
38
+ log(`Account ${id} deleted successfully.`);
39
+ }
40
+ async create() {
41
+ const { db, number, name, type, language, currency, data } = this.args;
42
+ const params = {
43
+ number,
44
+ name,
45
+ type,
46
+ language,
47
+ currency,
48
+ data: data ? await this.jsonData(data) : {}
49
+ };
50
+ await this.post(`/db/${db}/account`, params);
51
+ log(`Account ${number} ${name} created successfully.`);
52
+ }
53
+ async run() {
54
+ await this.runBy('subCommand');
55
+ }
56
+ }
57
+ export default AccountCommand;
58
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/commands/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Command } from '.';
2
+ import { ArgumentParser } from 'argparse';
3
+ import { AccountNumber } from '@dataplug/tasenor-common';
4
+ declare class BalanceCommand extends Command {
5
+ addArguments(parser: ArgumentParser): void;
6
+ ls(): Promise<void>;
7
+ print(data: Record<AccountNumber, number>): void;
8
+ create(): Promise<void>;
9
+ run(): Promise<void>;
10
+ }
11
+ export default BalanceCommand;
@@ -0,0 +1,117 @@
1
+ /* eslint-disable camelcase */
2
+ import { sprintf } from 'sprintf-js';
3
+ import { Command } from '.';
4
+ import { log, warning } from '@dataplug/tasenor-common';
5
+ import clone from 'clone';
6
+ class BalanceCommand extends Command {
7
+ addArguments(parser) {
8
+ const sub = parser.add_subparsers();
9
+ const ls = sub.add_parser('ls', { help: 'List account balances' });
10
+ ls.set_defaults({ subCommand: 'ls' });
11
+ ls.add_argument('db', { help: 'Name of the database' });
12
+ ls.add_argument('period', { help: 'Period year, date or ID' });
13
+ const create = sub.add_parser('create', { help: 'Initialize account balances' });
14
+ create.set_defaults({ subCommand: 'create' });
15
+ create.add_argument('--force', '-f', { action: 'store_true', help: 'If given, allow invalid entries to be created', required: false });
16
+ create.add_argument('--map', { help: 'Remap account numbers using JSON or @filepath mapping', required: false });
17
+ create.add_argument('--stock', { nargs: '*', help: 'Define initial stock using JSON or @filepath mapping', required: false });
18
+ create.add_argument('--text', { help: 'A description for the transaction', required: false });
19
+ create.add_argument('db', { help: 'Name of the database' });
20
+ create.add_argument('data', { help: 'A JSON data or @filepath for balances' });
21
+ }
22
+ async ls() {
23
+ const { db, period, verbose } = this.args;
24
+ const periodId = await this.periodId(db, period);
25
+ const resp = await this.get(`/db/${db}/period/${periodId}`);
26
+ await this.readAccounts(db);
27
+ if (!verbose && resp.balances) {
28
+ this.out('balance', resp.balances.reduce((prev, cur) => ({ ...prev, [cur.number]: cur.total }), {}));
29
+ return;
30
+ }
31
+ this.out('balance', resp);
32
+ }
33
+ print(data) {
34
+ Object.keys(data).sort().forEach(number => {
35
+ console.log(number, this.accounts[number].name, '\t', sprintf('%.2f', data[number] / 100));
36
+ });
37
+ }
38
+ async create() {
39
+ const { db, data, map, stock, text, force } = this.args;
40
+ if (!db) {
41
+ throw new Error(`Invalid database argument ${JSON.stringify(db)}`);
42
+ }
43
+ const dataArg = await this.jsonData(data);
44
+ const mapArg = (map ? await this.jsonData(map) : {});
45
+ const period = await this.singlePeriod(db);
46
+ const stockArg = await this.jsonData(stock);
47
+ // Check if the DB is clean.
48
+ const docs = await this.get(`/db/${db}/document`);
49
+ if (docs.filter(d => d.number !== 0).length && !force) {
50
+ throw new Error('There are already non-initial transactions in the database and cannot be initialized anymore.');
51
+ }
52
+ // Ensure zero balance.
53
+ const sum = Object.values(dataArg).reduce((prev, cur) => prev + cur, 0);
54
+ if (sum) {
55
+ if (force) {
56
+ warning(`Initial balance total must be zero. Got ${sum} from ${JSON.stringify(dataArg)}.`);
57
+ }
58
+ else {
59
+ throw new Error(`Initial balance total must be zero. Got ${sum} from ${JSON.stringify(dataArg)}.`);
60
+ }
61
+ }
62
+ // Ensure all accounts are valid.
63
+ for (const account of Object.keys(dataArg)) {
64
+ // Zero balance accounts not needed.
65
+ if (!dataArg[account]) {
66
+ continue;
67
+ }
68
+ await this.accountId(db, mapArg[account] || account);
69
+ }
70
+ // Create initial doc.
71
+ const document = (docs.length > 0)
72
+ ? docs[0]
73
+ : await this.post(`/db/${db}/document`, {
74
+ period_id: period.id,
75
+ date: this.date(period.start_date),
76
+ number: 0
77
+ });
78
+ log(`Created a document #${document.id} on ${period.start_date}.`);
79
+ // Create entries.
80
+ const description = this.str(text) || 'Initial balance';
81
+ for (const account of Object.keys(dataArg)) {
82
+ const destAccount = mapArg[account] || account;
83
+ // Skip zeroes.
84
+ if (!dataArg[account]) {
85
+ log(`Skipping an entry ${destAccount} ${description} ${sprintf('%.2f', 0)}.`);
86
+ continue;
87
+ }
88
+ const entry = {
89
+ document_id: document.id,
90
+ account_id: await this.accountId(db, destAccount),
91
+ debit: dataArg[account] >= 0 ? 1 : 0,
92
+ amount: Math.abs(dataArg[account]),
93
+ description
94
+ };
95
+ // Add stock if given.
96
+ if (stockArg[destAccount]) {
97
+ entry.data = {
98
+ stock: {
99
+ set: clone(stockArg[destAccount])
100
+ }
101
+ };
102
+ delete stockArg[destAccount];
103
+ }
104
+ // Add data if known.
105
+ const out = await this.post(`/db/${db}/entry`, entry);
106
+ log(`Created an entry #${out.id} for ${destAccount} ${description} ${sprintf('%.2f', dataArg[account] / 100)}${entry.data ? ' ' + JSON.stringify(entry.data) : ''}.`);
107
+ }
108
+ if (Object.keys(stockArg).length) {
109
+ throw new Error(`Unused initial stocks for accounts ${Object.keys(stockArg).join(', ')}`);
110
+ }
111
+ }
112
+ async run() {
113
+ await this.runBy('subCommand');
114
+ }
115
+ }
116
+ export default BalanceCommand;
117
+ //# sourceMappingURL=balance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../../src/commands/balance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { DatabaseModelData } from '@dataplug/tasenor-common';
2
+ import { ArgumentParser } from 'argparse';
3
+ import { Command } from '.';
4
+ declare class DbCommand extends Command {
5
+ addArguments(parser: ArgumentParser): void;
6
+ ls(): Promise<void>;
7
+ print(data: DatabaseModelData[]): void;
8
+ rm(): Promise<void>;
9
+ create(): Promise<void>;
10
+ upload(): Promise<void>;
11
+ download(): Promise<void>;
12
+ run(): Promise<void>;
13
+ }
14
+ export default DbCommand;