@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
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Implementation for process handling.
3
+ *
4
+ * @module tasenor-common-node/src/process
5
+ */
6
+ export * from './Process';
7
+ export * from './ProcessConnector';
8
+ export * from './ProcessFile';
9
+ export * from './ProcessingSystem';
10
+ export * from './ProcessStep';
11
+ export * from './ProcessHandler';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Implementation for process handling.
3
+ *
4
+ * @module tasenor-common-node/src/process
5
+ */
6
+ export * from './Process';
7
+ export * from './ProcessConnector';
8
+ export * from './ProcessFile';
9
+ export * from './ProcessingSystem';
10
+ export * from './ProcessStep';
11
+ export * from './ProcessHandler';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/process/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { ReportQueryParams } from '@dataplug/tasenor-common';
2
+ /**
3
+ * Convert report to CSV format.
4
+ * @param {Object} report
5
+ * @param {Object} options
6
+ * @param {String} options.lang Localize number using this language.
7
+ */
8
+ export declare function data2csv(report: any, options: ReportQueryParams): any;
@@ -0,0 +1,47 @@
1
+ import json2csv from 'json2csv';
2
+ import { sprintf } from 'sprintf-js';
3
+ /**
4
+ * Convert report to CSV format.
5
+ * @param {Object} report
6
+ * @param {Object} options
7
+ * @param {String} options.lang Localize number using this language.
8
+ */
9
+ export function data2csv(report, options) {
10
+ const csv = [];
11
+ const render = {
12
+ id: (column, entry) => entry.id,
13
+ name: (column, entry) => `${entry.isAccount ? entry.number + ' ' : ''}${entry.name}`,
14
+ text: (column, entry) => entry[column.name],
15
+ numeric: (column, entry) => (entry.amounts &&
16
+ !entry.hideTotal &&
17
+ entry.amounts[column.name] !== '' &&
18
+ !isNaN(entry.amounts[column.name]) &&
19
+ entry.amounts[column.name] !== undefined)
20
+ ? (entry.amounts[column.name] === null ? '—' : sprintf('%.2f', entry.amounts[column.name] / 100))
21
+ : ''
22
+ };
23
+ const { data, columns } = report;
24
+ let line = {};
25
+ if (!options.dropTitle) {
26
+ columns.forEach((column) => (line[column.name] = column.title));
27
+ csv.push(line);
28
+ }
29
+ data.forEach((entry) => {
30
+ if (entry.paragraphBreak) {
31
+ return;
32
+ }
33
+ line = {};
34
+ columns.forEach((column) => {
35
+ if (entry.pageBreak || entry.paragraphBreak) {
36
+ line[column.name] = '';
37
+ }
38
+ else {
39
+ line[column.name] = render[column.type](column, entry);
40
+ }
41
+ });
42
+ csv.push(line);
43
+ });
44
+ const fields = columns.map((c) => c.name);
45
+ return json2csv.parse(csv, { fields, header: false });
46
+ }
47
+ //# sourceMappingURL=conversions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversions.js","sourceRoot":"","sources":["../../../../src/reports/conversions.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAM,EAAE,OAA0B;IACzD,MAAM,GAAG,GAA6B,EAAE,CAAA;IAExC,MAAM,MAAM,GAAG;QACb,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE;QAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;QACpF,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3C,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO;YACxC,CAAC,KAAK,CAAC,SAAS;YAChB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;YACjC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;YACzC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACjG,CAAC,CAAC,EAAE;KACP,CAAA;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAChC,IAAI,IAAI,GAA2B,EAAE,CAAA;IACrC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;QACtB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC/D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACf;IAED,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,IAAI,KAAK,CAAC,cAAc,EAAE;YACxB,OAAM;SACP;QACD,IAAI,GAAG,EAAE,CAAA;QACT,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,cAAc,EAAE;gBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;aACvB;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;aACvD;QACH,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAEzC,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AACvD,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Utilities for report building and handling.
3
+ *
4
+ * @module tasenor-common-node/src/reports
5
+ */
6
+ export * from './conversions';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utilities for report building and handling.
3
+ *
4
+ * @module tasenor-common-node/src/reports
5
+ */
6
+ export * from './conversions';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/reports/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,eAAe,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { ID } from '@dataplug/tasenor-common';
2
+ import { ProcessHandler, ProcessConnector } from '../process';
3
+ /**
4
+ * Simple demo server for one or more handler.
5
+ *
6
+ * Usage:
7
+ * ```
8
+ * const handler1 = new MyCustomHandler('Custom 1')
9
+ * const handler2 = new MyCustomHandler('Custom 2')
10
+ * const server = new ISPDemoServer(PORT, DATABASE_URL, [handler1, handler2])
11
+ * server.start()
12
+ * ```
13
+ */
14
+ export declare class ISPDemoServer {
15
+ private app;
16
+ private server;
17
+ private port;
18
+ private db;
19
+ private handlers;
20
+ private connector;
21
+ private configDefaults;
22
+ /**
23
+ * Prepare settings.
24
+ *
25
+ * @param port
26
+ * @param databaseUrl
27
+ * @param handlers
28
+ * @param connector
29
+ */
30
+ constructor(port: number, databaseUrl: string, handlers: ProcessHandler[], connector?: ProcessConnector | null, configDefaults?: Record<string, unknown>);
31
+ /**
32
+ * Launch the demo server.
33
+ *
34
+ * @param reset If set, reset the database on boot.
35
+ */
36
+ start: (reset?: boolean) => Promise<void>;
37
+ /**
38
+ * Exit the server. If an error is given, raise also that error.
39
+ * @param err
40
+ */
41
+ stop: (err?: Error | undefined) => Promise<void>;
42
+ lastProcessID(): Promise<ID>;
43
+ }
@@ -0,0 +1,112 @@
1
+ import path from 'path';
2
+ import express from 'express';
3
+ import fs from 'fs';
4
+ import Knex from 'knex';
5
+ import cors from 'cors';
6
+ import { router } from './router';
7
+ import { defaultConnector, ProcessingSystem } from '../process';
8
+ /**
9
+ * Simple demo server for one or more handler.
10
+ *
11
+ * Usage:
12
+ * ```
13
+ * const handler1 = new MyCustomHandler('Custom 1')
14
+ * const handler2 = new MyCustomHandler('Custom 2')
15
+ * const server = new ISPDemoServer(PORT, DATABASE_URL, [handler1, handler2])
16
+ * server.start()
17
+ * ```
18
+ */
19
+ export class ISPDemoServer {
20
+ app = express();
21
+ server;
22
+ port;
23
+ db;
24
+ handlers;
25
+ connector;
26
+ configDefaults;
27
+ /**
28
+ * Prepare settings.
29
+ *
30
+ * @param port
31
+ * @param databaseUrl
32
+ * @param handlers
33
+ * @param connector
34
+ */
35
+ constructor(port, databaseUrl, handlers, connector = null, configDefaults = {}) {
36
+ this.port = port;
37
+ this.configDefaults = configDefaults;
38
+ let migrationsPath = path.normalize(path.join(__dirname, '/migrations/01_init.js'));
39
+ if (!fs.existsSync(migrationsPath)) {
40
+ migrationsPath = path.normalize(path.join(__dirname, '../../dist/migrations/01_init.js'));
41
+ }
42
+ if (!fs.existsSync(migrationsPath)) {
43
+ migrationsPath = path.normalize(path.join(__dirname, '../../../dist/migrations/01_init.js'));
44
+ }
45
+ if (!fs.existsSync(migrationsPath)) {
46
+ console.log(__dirname);
47
+ throw new Error(`Cannot find migrations file '${migrationsPath}'.`);
48
+ }
49
+ this.db = Knex({
50
+ client: 'pg',
51
+ connection: databaseUrl,
52
+ migrations: {
53
+ directory: path.dirname(migrationsPath)
54
+ }
55
+ });
56
+ this.handlers = handlers;
57
+ if (connector) {
58
+ this.connector = connector;
59
+ }
60
+ else {
61
+ this.connector = defaultConnector;
62
+ }
63
+ }
64
+ /**
65
+ * Launch the demo server.
66
+ *
67
+ * @param reset If set, reset the database on boot.
68
+ */
69
+ start = async (reset = false) => {
70
+ if (reset) {
71
+ await this.db.migrate.rollback();
72
+ }
73
+ await this.db.migrate.latest();
74
+ const systemCreator = () => {
75
+ const system = new ProcessingSystem(this.db, this.connector);
76
+ this.handlers.forEach(handler => system.register(handler));
77
+ return system;
78
+ };
79
+ this.app.use((req, res, next) => { res.locals.server = this; next(); });
80
+ this.app.use((req, res, next) => { console.log(new Date(), req.method, req.url); next(); });
81
+ this.app.use(cors());
82
+ this.app.use(express.json({ limit: '1024MB' }));
83
+ this.app.use('/api/isp', router(this.db, systemCreator));
84
+ this.server = this.app.listen(this.port, () => {
85
+ console.log(new Date(), `Server started on port ${this.port}.`);
86
+ this.connector.initialize(this);
87
+ });
88
+ this.server.on('error', (msg) => {
89
+ console.error(new Date(), msg);
90
+ });
91
+ };
92
+ /**
93
+ * Exit the server. If an error is given, raise also that error.
94
+ * @param err
95
+ */
96
+ stop = async (err = undefined) => {
97
+ console.log(new Date(), 'Stopping the server.');
98
+ await this.server.close(() => {
99
+ if (err) {
100
+ throw err;
101
+ }
102
+ else {
103
+ process.exit();
104
+ }
105
+ });
106
+ };
107
+ async lastProcessID() {
108
+ const ids = await this.db('processes').max('id').first();
109
+ return ids ? ids.max : null;
110
+ }
111
+ }
112
+ //# sourceMappingURL=ISPDemoServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISPDemoServer.js","sourceRoot":"","sources":["../../../../src/server/ISPDemoServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAoC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAGjG;;;;;;;;;;GAUG;AACH,MAAM,OAAO,aAAa;IAChB,GAAG,GAAG,OAAO,EAAE,CAAA;IACf,MAAM,CAAQ;IACd,IAAI,CAAQ;IACZ,EAAE,CAAc;IAChB,QAAQ,CAAkB;IAC1B,SAAS,CAAkB;IAC3B,cAAc,CAAyB;IAE/C;;;;;;;OAOG;IACH,YAAY,IAAY,EAAE,WAAmB,EAAE,QAA0B,EAAE,YAAmC,IAAI,EAAE,iBAA0C,EAAE;QAC9J,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAA;QACnF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YAClC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC,CAAA;SAC1F;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YAClC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC,CAAA;SAC7F;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YAClC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,cAAc,IAAI,CAAC,CAAA;SACpE;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACb,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,WAAW;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;aACxC;SACF,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;SAC3B;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAA;SAClC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAiB,EAAE;QAEpD,IAAI,KAAK,EAAE;YACT,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;SACjC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;QAE9B,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YAC5D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;YAC1D,OAAO,MAAM,CAAA;QACf,CAAC,CAAA;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;QACtE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;QAC1F,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAA;QAExD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YAC5C,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,0BAA0B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;YAC/D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED;;;OAGG;IACI,IAAI,GAAG,KAAK,EAAE,MAAyB,SAAS,EAAiB,EAAE;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,sBAAsB,CAAC,CAAA;QAC/C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3B,IAAI,GAAG,EAAE;gBACP,MAAM,GAAG,CAAA;aACV;iBAAM;gBACL,OAAO,CAAC,IAAI,EAAE,CAAA;aACf;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;QACxD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7B,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { ProcessModelData, ID, ProcessModelDetailedData, ProcessStepModelData } from '@dataplug/tasenor-common';
2
+ import { KnexDatabase } from '../database';
3
+ export type ProcessApi = {
4
+ process: {
5
+ getAll: () => Promise<ProcessModelData[]>;
6
+ get: (id: ID) => Promise<ProcessModelDetailedData>;
7
+ getStep: (id: ID, step: number) => Promise<ProcessStepModelData>;
8
+ };
9
+ };
10
+ /**
11
+ * Data query API for processes.
12
+ * @param db
13
+ * @returns
14
+ */
15
+ export default function (db: KnexDatabase): ProcessApi;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Data query API for processes.
3
+ * @param db
4
+ * @returns
5
+ */
6
+ export default function (db) {
7
+ return {
8
+ process: {
9
+ getAll: async () => {
10
+ return db('processes').select('*').orderBy('created', 'desc');
11
+ },
12
+ get: async (id) => {
13
+ const data = await db('processes').select('*').where({ id }).first();
14
+ if (data) {
15
+ const steps = await db('process_steps').select('id', 'action', 'directions', 'number', 'started', 'finished').where({ processId: id }).orderBy('number');
16
+ data.steps = steps || [];
17
+ }
18
+ return data;
19
+ },
20
+ getStep: async (id, number) => {
21
+ const data = await db('process_steps').select('*').where({ processId: id, number }).first();
22
+ return data;
23
+ }
24
+ }
25
+ };
26
+ }
27
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/server/api.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,MAAM,CAAC,OAAO,WAAU,EAAgB;IACtC,OAAO;QACL,OAAO,EAAE;YACP,MAAM,EAAE,KAAK,IAAiC,EAAE;gBAC9C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAC/D,CAAC;YACD,GAAG,EAAE,KAAK,EAAE,EAAM,EAAqC,EAAE;gBACvD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;gBACpE,IAAI,IAAI,EAAE;oBACR,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;oBACxJ,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAA;iBACzB;gBACD,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,EAAM,EAAE,MAAc,EAAiC,EAAE;gBACvE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;gBAC3F,OAAO,IAAI,CAAA;YACb,CAAC;SACF;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Server related helpers.
3
+ *
4
+ * @module tasenor-common-node/src/server
5
+ */
6
+ export * from './router';
7
+ export * from './ISPDemoServer';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Server related helpers.
3
+ *
4
+ * @module tasenor-common-node/src/server
5
+ */
6
+ export * from './router';
7
+ export * from './ISPDemoServer';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { Request, Router } from 'express';
2
+ import { KnexDatabase } from '../database';
3
+ import { ProcessingSystem } from '../process';
4
+ export type ProcessingConfigurator = (req: Request) => ProcessingSystem;
5
+ export declare function router(db: KnexDatabase, configurator: ProcessingConfigurator): Router;
@@ -0,0 +1,37 @@
1
+ import express from 'express';
2
+ import apiCreator from './api';
3
+ export function router(db, configurator) {
4
+ const router = express.Router();
5
+ const api = apiCreator(db);
6
+ router.get('/', async (req, res) => {
7
+ return res.send(await api.process.getAll());
8
+ });
9
+ router.get('/:id', async (req, res) => {
10
+ return res.send(await api.process.get(parseInt(req.params.id)));
11
+ });
12
+ router.post('/', async (req, res) => {
13
+ const system = configurator(req);
14
+ const { files, config } = req.body;
15
+ const names = files.map(f => f.name);
16
+ const process = await system.createProcess(`Uploading files ${names.join(', ')}`, files, { ...res.locals.server.configDefaults, ...config });
17
+ if (process.canRun()) {
18
+ await process.run();
19
+ }
20
+ return res.send(await api.process.get(process.id));
21
+ });
22
+ router.post('/:id', async (req, res) => {
23
+ const system = configurator(req);
24
+ const { id } = req.params;
25
+ const process = await system.loadProcess(parseInt(id));
26
+ await process.input(req.body);
27
+ if (process.canRun()) {
28
+ await process.run();
29
+ }
30
+ res.sendStatus(204);
31
+ });
32
+ router.get('/:id/step/:number', async (req, res) => {
33
+ return res.send(await api.process.getStep(parseInt(req.params.id), parseInt(req.params.number)));
34
+ });
35
+ return router;
36
+ }
37
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../src/server/router.ts"],"names":[],"mappings":"AAAA,OAAO,OAA4B,MAAM,SAAS,CAAA;AAGlD,OAAO,UAAU,MAAM,OAAO,CAAA;AAG9B,MAAM,UAAU,MAAM,CAAC,EAAgB,EAAE,YAAoC;IAE3E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;IAE1B,MAAM,CAAC,GAAG,CAAC,GAAG,EACZ,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjB,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7C,CAAC,CACF,CAAA;IAED,MAAM,CAAC,GAAG,CAAC,MAAM,EACf,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjB,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACjE,CAAC,CACF,CAAA;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,EACb,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;QAChC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CACxC,mBAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACrC,KAAK,EACL,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,MAAM,EAAE,CACnD,CAAA;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE;YACpB,MAAM,OAAO,CAAC,GAAG,EAAE,CAAA;SACpB;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEJ,MAAM,CAAC,IAAI,CAAC,MAAM,EAChB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;QAChC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;QACzB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;QACtD,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE;YACpB,MAAM,OAAO,CAAC,GAAG,EAAE,CAAA;SACpB;QACD,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACrB,CAAC,CACF,CAAA;IAED,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAC5B,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjB,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAClG,CAAC,CACF,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Helper to execute system command as a promise.
3
+ * @param command A command.
4
+ * @param quiet If set, do not output.
5
+ * @returns Srandard output if successfully executed.
6
+ */
7
+ export declare function system(command: string, quiet?: boolean): Promise<string>;
8
+ /**
9
+ * A system call showing real time output of stdout.
10
+ * @param command
11
+ * @param quiet
12
+ * @returns
13
+ */
14
+ export declare function systemPiped(command: string, quiet?: boolean, ignoreError?: boolean): Promise<string | null>;
15
+ /**
16
+ * Check if the current environment is not development environment.
17
+ */
18
+ export declare function isProduction(): boolean;
19
+ /**
20
+ * Check and return the operating environment.
21
+ * @returns
22
+ */
23
+ export declare function nodeEnv(): string;
24
+ /**
25
+ * Check if the current environment is development environment.
26
+ */
27
+ export declare function isDevelopment(): boolean;
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Server operating system related functions.
3
+ *
4
+ * @module tasenor-common-node/src/system
5
+ */
6
+ import { exec, spawn } from 'child_process';
7
+ import { log, error, note } from '@dataplug/tasenor-common';
8
+ /**
9
+ * Helper to execute system command as a promise.
10
+ * @param command A command.
11
+ * @param quiet If set, do not output.
12
+ * @returns Srandard output if successfully executed.
13
+ */
14
+ export async function system(command, quiet = false) {
15
+ if (!quiet) {
16
+ log(`Running system command: ${command}`);
17
+ }
18
+ return new Promise((resolve, reject) => {
19
+ exec(command, { maxBuffer: 1024 * 1024 * 500 }, (err, stdout, stderr) => {
20
+ if (err) {
21
+ if (!quiet)
22
+ error(err);
23
+ return reject(err);
24
+ }
25
+ if (stderr && !quiet) {
26
+ note(`${stderr}`);
27
+ }
28
+ if (stdout && !quiet) {
29
+ log(`${stdout}`);
30
+ }
31
+ resolve(stdout);
32
+ });
33
+ });
34
+ }
35
+ /**
36
+ * A system call showing real time output of stdout.
37
+ * @param command
38
+ * @param quiet
39
+ * @returns
40
+ */
41
+ export async function systemPiped(command, quiet = false, ignoreError = false) {
42
+ if (!quiet) {
43
+ log(`Running system command: ${command}`);
44
+ }
45
+ return new Promise((resolve, reject) => {
46
+ let out = '';
47
+ const proc = spawn(command, { shell: true });
48
+ proc.stdout.on('data', (data) => {
49
+ out += data;
50
+ if (!quiet)
51
+ process.stdout.write(data);
52
+ });
53
+ proc.stderr.on('data', (data) => {
54
+ if (!quiet)
55
+ process.stderr.write(data);
56
+ });
57
+ proc.on('close', (code) => {
58
+ if (code) {
59
+ if (ignoreError) {
60
+ resolve(null);
61
+ }
62
+ else {
63
+ reject(new Error(`Call '${command}' failed with code ${code}.`));
64
+ }
65
+ }
66
+ else {
67
+ resolve(out);
68
+ }
69
+ });
70
+ });
71
+ }
72
+ /**
73
+ * Check if the current environment is not development environment.
74
+ */
75
+ export function isProduction() {
76
+ return !isDevelopment();
77
+ }
78
+ /**
79
+ * Check and return the operating environment.
80
+ * @returns
81
+ */
82
+ export function nodeEnv() {
83
+ const env = process.env.NODE_ENV || 'production';
84
+ if (!['development', 'staging', 'production'].includes(env)) {
85
+ throw new Error(`Invalid NODE_ENV ${env}.`);
86
+ }
87
+ return env;
88
+ }
89
+ /**
90
+ * Check if the current environment is development environment.
91
+ */
92
+ export function isDevelopment() {
93
+ return nodeEnv() === 'development';
94
+ }
95
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { ID, ProcessConfig, ProcessName } from '@dataplug/tasenor-common';
2
+ import { KnexDatabase, Process, ProcessConnector, ProcessFileData, ProcessHandler, ProcessHandlerMap, ProcessStep } from '..';
3
+ /**
4
+ * Processing system mock for unit testing.
5
+ */
6
+ export declare class SystemMock {
7
+ db: KnexDatabase;
8
+ handlers: ProcessHandlerMap;
9
+ connector: ProcessConnector;
10
+ logger: {
11
+ info: (...msg: any[]) => void;
12
+ error: (...msg: any[]) => void;
13
+ };
14
+ constructor();
15
+ getTranslation(text: string, language: string): Promise<string>;
16
+ register(handler: ProcessHandler): void;
17
+ createProcess(name: ProcessName, filed: ProcessFileData[], config: ProcessConfig): Promise<Process>;
18
+ checkFinishAndFindDirections(handler: ProcessHandler, step: ProcessStep): Promise<void>;
19
+ getHandler(name: string): ProcessHandler;
20
+ loadProcess(id: ID): Promise<Process>;
21
+ }
@@ -0,0 +1,33 @@
1
+ import { UnitTestImportConnector } from './UnitTestImportConnector';
2
+ import { Process, ProcessFile } from '..';
3
+ /**
4
+ * Processing system mock for unit testing.
5
+ */
6
+ export class SystemMock {
7
+ db;
8
+ handlers = {};
9
+ connector;
10
+ logger;
11
+ constructor() {
12
+ this.connector = new UnitTestImportConnector();
13
+ }
14
+ async getTranslation(text, language) {
15
+ return this.connector.getTranslation(text, language);
16
+ }
17
+ register(handler) {
18
+ //
19
+ }
20
+ async createProcess(name, filed, config) {
21
+ return new Process(this, name, config);
22
+ }
23
+ async checkFinishAndFindDirections(handler, step) {
24
+ //
25
+ }
26
+ getHandler(name) {
27
+ return this.handlers[name];
28
+ }
29
+ async loadProcess(id) {
30
+ return this.createProcess('dummy', [new ProcessFile({ name: 'file', encoding: 'utf-8', data: 'Hello' })], {});
31
+ }
32
+ }
33
+ //# sourceMappingURL=ProcessingSystemMock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessingSystemMock.js","sourceRoot":"","sources":["../../../../src/testing/ProcessingSystemMock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAgB,OAAO,EAAoB,WAAW,EAAmE,MAAM,IAAI,CAAA;AAE1I;;GAEG;AACH,MAAM,OAAO,UAAU;IACrB,EAAE,CAAc;IAChB,QAAQ,GAAsB,EAAE,CAAA;IAChC,SAAS,CAAkB;IAC3B,MAAM,CAGL;IAED;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,uBAAuB,EAAE,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,QAAgB;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IAED,QAAQ,CAAC,OAAuB;QAC9B,EAAE;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAiB,EAAE,KAAwB,EAAE,MAAqB;QACpF,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,OAAuB,EAAE,IAAiB;QAC3E,EAAE;IACJ,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAM;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC/G,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import { AccountAddress, AccountNumber, Asset, AssetExchange, AssetTransfer, AssetType, BalanceBookkeeping, Currency, StockValueData, TradeableAsset, ImportState, ProcessConfig, Directions, ID } from '@dataplug/tasenor-common';
2
+ import { TransactionImportConnector, ISPDemoServer } from '..';
3
+ /**
4
+ * A connector mock for unit testing.
5
+ */
6
+ export declare class UnitTestImportConnector implements TransactionImportConnector {
7
+ private balance;
8
+ private number;
9
+ initialize(server: ISPDemoServer): Promise<void>;
10
+ addMoney(address: AccountAddress, number: AccountNumber, amount: number): void;
11
+ initializeBalances(time: Date, balances: BalanceBookkeeping, config: ProcessConfig): Promise<void>;
12
+ getAccountCanditates(): Promise<AccountNumber[]>;
13
+ getStock(time: Date, account: AccountNumber, symbol: TradeableAsset): Promise<StockValueData>;
14
+ getVAT(time: Date, transfer: AssetTransfer, currency: Currency): Promise<null | number>;
15
+ getRate(time: Date, type: AssetType, asset: Asset, currency: Currency, exchange?: AssetExchange | null): Promise<number>;
16
+ getTranslation(text: string, language: string): Promise<string>;
17
+ applyResult(): Promise<Record<string, unknown>>;
18
+ resultExists(processId: ID, args: unknown): Promise<boolean>;
19
+ success(res: ImportState): Promise<void>;
20
+ fail(res: ImportState): Promise<void>;
21
+ waiting(res: ImportState, directions: Directions): Promise<void>;
22
+ run(): Promise<void>;
23
+ rollback(processId: ID): Promise<boolean>;
24
+ }