@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 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../../src/plugins/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { ProcessFile } from './ProcessFile';
2
+ import { ProcessingSystem } from './ProcessingSystem';
3
+ import { ProcessStep } from './ProcessStep';
4
+ import { ProcessName, ProcessConfig, ProcessStatus, ID, ImportAction, ImportState } from '@dataplug/tasenor-common';
5
+ import { KnexDatabase } from '../database';
6
+ /**
7
+ * Overall description of the process.
8
+ */
9
+ export interface ProcessInfo {
10
+ name: ProcessName;
11
+ config: ProcessConfig;
12
+ complete: boolean;
13
+ successful: boolean | undefined;
14
+ currentStep: number | undefined;
15
+ status: ProcessStatus;
16
+ error?: string;
17
+ }
18
+ /**
19
+ * A complete description of the process state and steps taken.
20
+ */
21
+ export declare class Process {
22
+ system: ProcessingSystem;
23
+ id: ID;
24
+ name: ProcessName;
25
+ config: ProcessConfig;
26
+ complete: boolean;
27
+ successful: boolean | undefined;
28
+ currentStep: number | undefined;
29
+ status: ProcessStatus;
30
+ files: ProcessFile[];
31
+ steps: ProcessStep[];
32
+ error: string | undefined;
33
+ constructor(system: ProcessingSystem, name: ProcessName | null, config?: ProcessConfig);
34
+ toString(): string;
35
+ /**
36
+ * Get the loaded process information as JSON object.
37
+ * @returns
38
+ */
39
+ toJSON(): ProcessInfo;
40
+ /**
41
+ * Append a file to this process and link its ID.
42
+ * @param file
43
+ */
44
+ addFile(file: ProcessFile): void;
45
+ /**
46
+ * Append a step to this process and link its ID.
47
+ * @param step
48
+ */
49
+ addStep(step: ProcessStep): Promise<void>;
50
+ /**
51
+ * Load the current step if not yet loaded and return it.
52
+ */
53
+ getCurrentStep(): Promise<ProcessStep>;
54
+ /**
55
+ * Mark the current state as completed and create new additional step with the new state.
56
+ * @param state
57
+ */
58
+ proceedToState(action: ImportAction, state: ImportState): Promise<void>;
59
+ /**
60
+ * Get a reference to the database.
61
+ */
62
+ get db(): KnexDatabase;
63
+ /**
64
+ * Save the process info to the database.
65
+ */
66
+ save(): Promise<ID>;
67
+ /**
68
+ * Load the process data and its files. Note that current step is not yet loaded here, but when using getCurrentStep().
69
+ * @param id
70
+ */
71
+ load(id: ID): Promise<void>;
72
+ /**
73
+ * Load the step with the given number from the database.
74
+ * @param number
75
+ * @returns
76
+ */
77
+ loadStep(number: number): Promise<ProcessStep>;
78
+ /**
79
+ * Check if the process can be run.
80
+ */
81
+ canRun(): boolean;
82
+ /**
83
+ * Execute process as long as it is completed, failed or requires additional input.
84
+ */
85
+ run(): Promise<void>;
86
+ /**
87
+ * Record the error and mark the process as finished with an error.
88
+ * @param err
89
+ */
90
+ crashed(err: Error): Promise<void>;
91
+ /**
92
+ * Resolve the status of the process and update it to the database.
93
+ */
94
+ updateStatus(): Promise<void>;
95
+ /**
96
+ * Get the state of the current step of the process.
97
+ */
98
+ get state(): ImportState;
99
+ /**
100
+ * Handle external input coming in.
101
+ * @param action
102
+ */
103
+ input(action: ImportAction): Promise<void>;
104
+ /**
105
+ * Roll back the process.
106
+ */
107
+ rollback(): Promise<boolean>;
108
+ }
@@ -0,0 +1,335 @@
1
+ import clone from 'clone';
2
+ import { BadState, DatabaseError, InvalidArgument, isAskUI } from '../error';
3
+ import { ProcessFile } from './ProcessFile';
4
+ import { ProcessStep } from './ProcessStep';
5
+ import { Directions } from '@dataplug/tasenor-common';
6
+ /**
7
+ * A complete description of the process state and steps taken.
8
+ */
9
+ export class Process {
10
+ system;
11
+ id;
12
+ name;
13
+ config;
14
+ complete;
15
+ successful;
16
+ currentStep;
17
+ status;
18
+ files;
19
+ steps;
20
+ error;
21
+ constructor(system, name, config = {}) {
22
+ this.system = system;
23
+ this.id = null;
24
+ this.config = config;
25
+ this.name = name || '[no name]';
26
+ this.complete = false;
27
+ this.successful = undefined;
28
+ this.files = [];
29
+ this.steps = [];
30
+ this.currentStep = undefined;
31
+ this.status = 'INCOMPLETE';
32
+ }
33
+ toString() {
34
+ return `Process #${this.id} ${this.name}`;
35
+ }
36
+ /**
37
+ * Get the loaded process information as JSON object.
38
+ * @returns
39
+ */
40
+ toJSON() {
41
+ return {
42
+ name: this.name,
43
+ config: this.config,
44
+ complete: this.complete,
45
+ successful: this.successful,
46
+ currentStep: this.currentStep,
47
+ status: this.status,
48
+ error: this.error
49
+ };
50
+ }
51
+ /**
52
+ * Append a file to this process and link its ID.
53
+ * @param file
54
+ */
55
+ addFile(file) {
56
+ file.processId = this.id;
57
+ this.files.push(file);
58
+ }
59
+ /**
60
+ * Append a step to this process and link its ID.
61
+ * @param step
62
+ */
63
+ async addStep(step) {
64
+ step.processId = this.id;
65
+ step.process = this;
66
+ this.steps.push(step);
67
+ }
68
+ /**
69
+ * Load the current step if not yet loaded and return it.
70
+ */
71
+ async getCurrentStep() {
72
+ if (this.currentStep === null || this.currentStep === undefined) {
73
+ throw new BadState(`Process #${this.id} ${this.name} has invalid current step.`);
74
+ }
75
+ if (this.steps[this.currentStep]) {
76
+ return this.steps[this.currentStep];
77
+ }
78
+ return this.loadStep(this.currentStep);
79
+ }
80
+ /**
81
+ * Mark the current state as completed and create new additional step with the new state.
82
+ * @param state
83
+ */
84
+ async proceedToState(action, state) {
85
+ const current = await this.getCurrentStep();
86
+ const handler = this.system.getHandler(current.handler);
87
+ current.action = action;
88
+ current.finished = new Date();
89
+ current.save();
90
+ const nextStep = new ProcessStep({
91
+ number: current.number + 1,
92
+ state,
93
+ handler: handler.name
94
+ });
95
+ this.addStep(nextStep);
96
+ this.currentStep = (this.currentStep || 0) + 1;
97
+ this.system.logger.info(`Proceeding ${this} to new step ${this.currentStep}.`);
98
+ this.save();
99
+ await nextStep.save();
100
+ await this.system.checkFinishAndFindDirections(handler, nextStep);
101
+ }
102
+ /**
103
+ * Get a reference to the database.
104
+ */
105
+ get db() {
106
+ return this.system.db;
107
+ }
108
+ /**
109
+ * Save the process info to the database.
110
+ */
111
+ async save() {
112
+ if (this.id) {
113
+ await this.db('processes').update(this.toJSON()).where({ id: this.id });
114
+ return this.id;
115
+ }
116
+ else {
117
+ this.id = (await this.db('processes').insert(this.toJSON()).returning('id'))[0].id;
118
+ if (this.id)
119
+ return this.id;
120
+ throw new DatabaseError(`Saving process ${JSON.stringify(this.toJSON)} failed.`);
121
+ }
122
+ }
123
+ /**
124
+ * Load the process data and its files. Note that current step is not yet loaded here, but when using getCurrentStep().
125
+ * @param id
126
+ */
127
+ async load(id) {
128
+ // Load basic info.
129
+ const data = await this.db('processes').select('*').where({ id }).first();
130
+ if (!data) {
131
+ throw new InvalidArgument(`Cannot find process #${id}`);
132
+ }
133
+ Object.assign(this, data);
134
+ this.id = id;
135
+ // Load files.
136
+ this.files = (await this.db('process_files').select('*').where({ processId: this.id })).map(fileData => {
137
+ const file = new ProcessFile(fileData);
138
+ file.id = fileData.id;
139
+ return file;
140
+ });
141
+ // Load current step.
142
+ await this.getCurrentStep();
143
+ }
144
+ /**
145
+ * Load the step with the given number from the database.
146
+ * @param number
147
+ * @returns
148
+ */
149
+ async loadStep(number) {
150
+ if (!this.id) {
151
+ throw new BadState(`Cannot load steps, if the process have no ID ${JSON.stringify(this.toJSON())}.`);
152
+ }
153
+ if (this.currentStep === undefined) {
154
+ throw new BadState(`Cannot load any steps, since process have no current step ${JSON.stringify(this.toJSON())}.`);
155
+ }
156
+ const data = await this.db('process_steps').where({ processId: this.id, number }).first();
157
+ if (!data) {
158
+ throw new BadState(`Cannot find step ${this.currentStep} for process ${JSON.stringify(this.toJSON())}.`);
159
+ }
160
+ this.steps[this.currentStep] = new ProcessStep(data);
161
+ this.steps[this.currentStep].id = data.id;
162
+ this.steps[this.currentStep].process = this;
163
+ return this.steps[this.currentStep];
164
+ }
165
+ /**
166
+ * Check if the process can be run.
167
+ */
168
+ canRun() {
169
+ return !this.complete && (this.status === 'INCOMPLETE' || this.status === 'WAITING');
170
+ }
171
+ /**
172
+ * Execute process as long as it is completed, failed or requires additional input.
173
+ */
174
+ async run() {
175
+ let step;
176
+ let MAX_RUNS = 100;
177
+ while (true) {
178
+ MAX_RUNS--;
179
+ if (MAX_RUNS < 0) {
180
+ this.system.logger.error(`Maximum number of executions reached for the process ${this}.`);
181
+ break;
182
+ }
183
+ step = await this.getCurrentStep();
184
+ if (!step.directions) {
185
+ this.system.logger.info(`No new directions for the process ${this}.`);
186
+ break;
187
+ }
188
+ if (!step.directions.isImmediate()) {
189
+ this.system.logger.info(`Waiting for more input for the process ${this}.`);
190
+ await this.updateStatus();
191
+ break;
192
+ }
193
+ const handler = this.system.getHandler(step.handler);
194
+ const state = clone(step.state);
195
+ const action = clone(step.directions.action);
196
+ try {
197
+ if (action) {
198
+ const nextState = await handler.action(this, action, state, this.files);
199
+ await this.proceedToState(action, nextState);
200
+ }
201
+ else {
202
+ throw new BadState(`Process step ${step} has no action.`);
203
+ }
204
+ }
205
+ catch (err) {
206
+ return await this.crashed(err);
207
+ }
208
+ }
209
+ }
210
+ /**
211
+ * Record the error and mark the process as finished with an error.
212
+ * @param err
213
+ */
214
+ async crashed(err) {
215
+ if (isAskUI(err)) {
216
+ // Postpone the action we tried. Instead, create query for UI to add more configuration for later retry.
217
+ const directions = new Directions({
218
+ type: 'ui',
219
+ element: err.element
220
+ });
221
+ const step = await this.getCurrentStep();
222
+ step.directions = directions;
223
+ await step.save();
224
+ await this.updateStatus();
225
+ return;
226
+ }
227
+ this.system.logger.error(`Processing of ${this} failed:`, err);
228
+ if (this.currentStep !== undefined && this.currentStep !== null) {
229
+ const step = await this.loadStep(this.currentStep);
230
+ step.finished = new Date();
231
+ await step.save();
232
+ }
233
+ this.error = err.stack ? err.stack : `${err.name}: ${err.message}`;
234
+ await this.save();
235
+ await this.updateStatus();
236
+ }
237
+ /**
238
+ * Resolve the status of the process and update it to the database.
239
+ */
240
+ async updateStatus() {
241
+ let status = 'INCOMPLETE';
242
+ if (this.error) {
243
+ status = 'CRASHED';
244
+ }
245
+ else {
246
+ if (this.currentStep === null || this.currentStep === undefined) {
247
+ throw new BadState(`Cannot check status when there is no current step loaded for ${this}`);
248
+ }
249
+ const step = this.steps[this.currentStep];
250
+ if (step.finished) {
251
+ if (this.successful === true)
252
+ status = 'SUCCEEDED';
253
+ if (this.successful === false)
254
+ status = 'FAILED';
255
+ }
256
+ if (step.directions) {
257
+ status = step.directions.isImmediate() ? 'INCOMPLETE' : 'WAITING';
258
+ }
259
+ }
260
+ if (this.status !== status) {
261
+ this.system.logger.info(`Process ${this} is now ${status}`);
262
+ }
263
+ this.status = status;
264
+ await this.db('processes').update({ status }).where({ id: this.id });
265
+ let directions, state;
266
+ switch (status) {
267
+ case 'SUCCEEDED':
268
+ await this.system.connector.success(this.state);
269
+ break;
270
+ case 'CRASHED':
271
+ await this.system.connector.fail(this.error);
272
+ break;
273
+ case 'FAILED':
274
+ await this.system.connector.fail(this.state);
275
+ break;
276
+ default:
277
+ directions = this.currentStep ? this.steps[this.currentStep].directions : null;
278
+ state = this.currentStep ? this.steps[this.currentStep].state : null;
279
+ await this.system.connector.waiting(state, directions);
280
+ }
281
+ }
282
+ /**
283
+ * Get the state of the current step of the process.
284
+ */
285
+ get state() {
286
+ if (this.currentStep === null || this.currentStep === undefined) {
287
+ throw new BadState(`Cannot check state when there is no current step loaded for ${this}`);
288
+ }
289
+ const step = this.steps[this.currentStep];
290
+ return step.state;
291
+ }
292
+ /**
293
+ * Handle external input coming in.
294
+ * @param action
295
+ */
296
+ async input(action) {
297
+ this.system.logger.info(`Handling input ${JSON.stringify(action)} on process ${this}.`);
298
+ const step = await this.getCurrentStep();
299
+ const handler = this.system.getHandler(step.handler);
300
+ let nextState;
301
+ try {
302
+ nextState = await handler.action(this, action, clone(step.state), this.files);
303
+ }
304
+ catch (err) {
305
+ return this.crashed(err);
306
+ }
307
+ await this.proceedToState(action, nextState);
308
+ }
309
+ /**
310
+ * Roll back the process.
311
+ */
312
+ async rollback() {
313
+ if (this.currentStep === null || this.currentStep === undefined) {
314
+ throw new BadState('Cannot rollback when there is no current step.');
315
+ }
316
+ if (this.currentStep < 1) {
317
+ throw new BadState('Cannot rollback when there is only initial step in the process.');
318
+ }
319
+ const step = await this.getCurrentStep();
320
+ this.system.logger.info(`Attempt of rolling back '${step}' from '${this}'.`);
321
+ const handler = this.system.getHandler(step.handler);
322
+ await handler.rollback(this, this.state);
323
+ const current = await this.getCurrentStep();
324
+ current.action = { rollback: true };
325
+ current.finished = new Date();
326
+ current.save();
327
+ this.system.logger.info(`Proceeding ${this} to new step ${this.currentStep}.`);
328
+ this.save();
329
+ this.status = 'ROLLEDBACK';
330
+ await this.db('processes').update({ status: this.status }).where({ id: this.id });
331
+ this.system.logger.info(`Roll back of '${this}' successful.`);
332
+ return true;
333
+ }
334
+ }
335
+ //# sourceMappingURL=Process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Process.js","sourceRoot":"","sources":["../../../../src/process/Process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { ID } from '@dataplug/tasenor-common';
2
+ /**
3
+ * A connector interface for querying information, applying results and running various hooks.
4
+ */
5
+ export interface ProcessConnector {
6
+ initialize(server: unknown): Promise<void>;
7
+ getTranslation(text: string, language: string): Promise<string>;
8
+ resultExists(processId: ID, args: unknown): Promise<boolean>;
9
+ applyResult(processId: ID, args: unknown): Promise<Record<string, unknown>>;
10
+ rollback(processId: ID): Promise<boolean>;
11
+ success(state: unknown): Promise<void>;
12
+ waiting(state: unknown, directions: any): Promise<void>;
13
+ fail(state: unknown): Promise<void>;
14
+ }
15
+ export declare const defaultConnector: {
16
+ initialize(): Promise<void>;
17
+ resultExists(processId: ID, args: unknown): Promise<boolean>;
18
+ applyResult(): Promise<Record<string, unknown>>;
19
+ success(): Promise<void>;
20
+ waiting(): Promise<void>;
21
+ fail(): Promise<void>;
22
+ getTranslation(text: string): Promise<string>;
23
+ rollback(processId: ID): Promise<boolean>;
24
+ };
@@ -0,0 +1,28 @@
1
+ export const defaultConnector = {
2
+ async initialize() {
3
+ console.log(new Date(), 'Connector initialized.');
4
+ },
5
+ async resultExists(processId, args) {
6
+ return false;
7
+ },
8
+ async applyResult() {
9
+ console.log(new Date(), 'Result received.');
10
+ return {};
11
+ },
12
+ async success() {
13
+ console.log(new Date(), 'Process completed.');
14
+ },
15
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
16
+ async waiting() {
17
+ },
18
+ async fail() {
19
+ console.error(new Date(), 'Process failed.');
20
+ },
21
+ async getTranslation(text) {
22
+ return text;
23
+ },
24
+ async rollback(processId) {
25
+ return true;
26
+ }
27
+ };
28
+ //# sourceMappingURL=ProcessConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessConnector.js","sourceRoot":"","sources":["../../../../src/process/ProcessConnector.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK,CAAC,UAAU;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAA;IACnD,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,SAAa,EAAE,IAAa;QAC7C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,KAAK,CAAC,WAAW;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAA;QAC3C,OAAO,EAAE,CAAA;IACX,CAAC;IACD,KAAK,CAAC,OAAO;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAA;IAC/C,CAAC;IACD,gEAAgE;IAChE,KAAK,CAAC,OAAO;IACb,CAAC;IACD,KAAK,CAAC,IAAI;QACR,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAA;IAC9C,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,SAAa;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;CAEF,CAAA"}
@@ -0,0 +1,69 @@
1
+ import { ID, FileEncoding } from '@dataplug/tasenor-common';
2
+ import { KnexDatabase } from '../database';
3
+ /**
4
+ * A data structure containing input data for the process.
5
+ */
6
+ export interface ProcessFileData {
7
+ processId?: ID;
8
+ name: string;
9
+ type?: string;
10
+ encoding: FileEncoding;
11
+ data: string;
12
+ }
13
+ /**
14
+ * An instance of input data for processing.
15
+ */
16
+ export declare class ProcessFile {
17
+ id: ID;
18
+ processId: ID;
19
+ name: string;
20
+ type?: string;
21
+ encoding: FileEncoding;
22
+ data: string;
23
+ _decoded?: string;
24
+ constructor(obj: ProcessFileData);
25
+ toString(): string;
26
+ /**
27
+ * Get the loaded process information as JSON object.
28
+ * @returns
29
+ */
30
+ toJSON(): ProcessFileData;
31
+ /**
32
+ * Save the file to the database.
33
+ */
34
+ save(db: KnexDatabase): Promise<ID>;
35
+ /**
36
+ * Check if the first line of the text file matches to the regular expression.
37
+ * @param re
38
+ */
39
+ firstLineMatch(re: RegExp): boolean;
40
+ /**
41
+ * Check if the second line of the text file matches to the regular expression.
42
+ * @param re
43
+ */
44
+ secondLineMatch(re: RegExp): boolean;
45
+ /**
46
+ * Check if the third line of the text file matches to the regular expression.
47
+ * @param re
48
+ */
49
+ thirdLineMatch(re: RegExp): boolean;
50
+ /**
51
+ * Check if the file begins with the given string.
52
+ */
53
+ startsWith(s: string): boolean;
54
+ /**
55
+ * Find out if the content is binary or text.
56
+ *
57
+ * The mime type has to start with `text/`.
58
+ */
59
+ isTextFile(): boolean;
60
+ /**
61
+ * Convert chardet encoding to the supported buffer encoding
62
+ * "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex"
63
+ */
64
+ parseEncoding(encoding: string): 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'latin1' | 'binary' | 'hex';
65
+ /**
66
+ * Try to recognize the file content and decode if it is a recognizable text format.
67
+ */
68
+ decode(): string;
69
+ }