@tasenor/common-node 1.9.30 → 1.9.32

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 (248) hide show
  1. package/package.json +2 -2
  2. package/dist/migrations/01_init.js +0 -60
  3. package/dist/tasenor-common-node/src/cli.d.ts +0 -81
  4. package/dist/tasenor-common-node/src/cli.js +0 -242
  5. package/dist/tasenor-common-node/src/cli.js.map +0 -1
  6. package/dist/tasenor-common-node/src/commands/account.d.ts +0 -12
  7. package/dist/tasenor-common-node/src/commands/account.js +0 -58
  8. package/dist/tasenor-common-node/src/commands/account.js.map +0 -1
  9. package/dist/tasenor-common-node/src/commands/balance.d.ts +0 -11
  10. package/dist/tasenor-common-node/src/commands/balance.js +0 -117
  11. package/dist/tasenor-common-node/src/commands/balance.js.map +0 -1
  12. package/dist/tasenor-common-node/src/commands/db.d.ts +0 -14
  13. package/dist/tasenor-common-node/src/commands/db.js +0 -69
  14. package/dist/tasenor-common-node/src/commands/db.js.map +0 -1
  15. package/dist/tasenor-common-node/src/commands/entry.d.ts +0 -13
  16. package/dist/tasenor-common-node/src/commands/entry.js +0 -106
  17. package/dist/tasenor-common-node/src/commands/entry.js.map +0 -1
  18. package/dist/tasenor-common-node/src/commands/import.d.ts +0 -17
  19. package/dist/tasenor-common-node/src/commands/import.js +0 -140
  20. package/dist/tasenor-common-node/src/commands/import.js.map +0 -1
  21. package/dist/tasenor-common-node/src/commands/importer.d.ts +0 -13
  22. package/dist/tasenor-common-node/src/commands/importer.js +0 -71
  23. package/dist/tasenor-common-node/src/commands/importer.js.map +0 -1
  24. package/dist/tasenor-common-node/src/commands/index.d.ts +0 -191
  25. package/dist/tasenor-common-node/src/commands/index.js +0 -482
  26. package/dist/tasenor-common-node/src/commands/index.js.map +0 -1
  27. package/dist/tasenor-common-node/src/commands/period.d.ts +0 -12
  28. package/dist/tasenor-common-node/src/commands/period.js +0 -48
  29. package/dist/tasenor-common-node/src/commands/period.js.map +0 -1
  30. package/dist/tasenor-common-node/src/commands/plugin.d.ts +0 -15
  31. package/dist/tasenor-common-node/src/commands/plugin.js +0 -78
  32. package/dist/tasenor-common-node/src/commands/plugin.js.map +0 -1
  33. package/dist/tasenor-common-node/src/commands/report.d.ts +0 -11
  34. package/dist/tasenor-common-node/src/commands/report.js +0 -96
  35. package/dist/tasenor-common-node/src/commands/report.js.map +0 -1
  36. package/dist/tasenor-common-node/src/commands/settings.d.ts +0 -10
  37. package/dist/tasenor-common-node/src/commands/settings.js +0 -64
  38. package/dist/tasenor-common-node/src/commands/settings.js.map +0 -1
  39. package/dist/tasenor-common-node/src/commands/stock.d.ts +0 -8
  40. package/dist/tasenor-common-node/src/commands/stock.js +0 -73
  41. package/dist/tasenor-common-node/src/commands/stock.js.map +0 -1
  42. package/dist/tasenor-common-node/src/commands/tag.d.ts +0 -13
  43. package/dist/tasenor-common-node/src/commands/tag.js +0 -89
  44. package/dist/tasenor-common-node/src/commands/tag.js.map +0 -1
  45. package/dist/tasenor-common-node/src/commands/tx.d.ts +0 -12
  46. package/dist/tasenor-common-node/src/commands/tx.js +0 -81
  47. package/dist/tasenor-common-node/src/commands/tx.js.map +0 -1
  48. package/dist/tasenor-common-node/src/commands/user.d.ts +0 -12
  49. package/dist/tasenor-common-node/src/commands/user.js +0 -52
  50. package/dist/tasenor-common-node/src/commands/user.js.map +0 -1
  51. package/dist/tasenor-common-node/src/database/BookkeeperImporter.d.ts +0 -77
  52. package/dist/tasenor-common-node/src/database/BookkeeperImporter.js +0 -343
  53. package/dist/tasenor-common-node/src/database/BookkeeperImporter.js.map +0 -1
  54. package/dist/tasenor-common-node/src/database/DB.d.ts +0 -51
  55. package/dist/tasenor-common-node/src/database/DB.js +0 -354
  56. package/dist/tasenor-common-node/src/database/DB.js.map +0 -1
  57. package/dist/tasenor-common-node/src/database/index.d.ts +0 -7
  58. package/dist/tasenor-common-node/src/database/index.js +0 -8
  59. package/dist/tasenor-common-node/src/database/index.js.map +0 -1
  60. package/dist/tasenor-common-node/src/doccer.d.ts +0 -29
  61. package/dist/tasenor-common-node/src/doccer.js +0 -30
  62. package/dist/tasenor-common-node/src/doccer.js.map +0 -1
  63. package/dist/tasenor-common-node/src/error.d.ts +0 -30
  64. package/dist/tasenor-common-node/src/error.js +0 -35
  65. package/dist/tasenor-common-node/src/error.js.map +0 -1
  66. package/dist/tasenor-common-node/src/export/Exporter.d.ts +0 -69
  67. package/dist/tasenor-common-node/src/export/Exporter.js +0 -123
  68. package/dist/tasenor-common-node/src/export/Exporter.js.map +0 -1
  69. package/dist/tasenor-common-node/src/export/TasenorExporter.d.ts +0 -55
  70. package/dist/tasenor-common-node/src/export/TasenorExporter.js +0 -135
  71. package/dist/tasenor-common-node/src/export/TasenorExporter.js.map +0 -1
  72. package/dist/tasenor-common-node/src/export/TilitinExporter.d.ts +0 -71
  73. package/dist/tasenor-common-node/src/export/TilitinExporter.js +0 -290
  74. package/dist/tasenor-common-node/src/export/TilitinExporter.js.map +0 -1
  75. package/dist/tasenor-common-node/src/export/index.d.ts +0 -8
  76. package/dist/tasenor-common-node/src/export/index.js +0 -9
  77. package/dist/tasenor-common-node/src/export/index.js.map +0 -1
  78. package/dist/tasenor-common-node/src/import/TextFileProcessHandler.d.ts +0 -104
  79. package/dist/tasenor-common-node/src/import/TextFileProcessHandler.js +0 -354
  80. package/dist/tasenor-common-node/src/import/TextFileProcessHandler.js.map +0 -1
  81. package/dist/tasenor-common-node/src/import/TransactionImportConnector.d.ts +0 -38
  82. package/dist/tasenor-common-node/src/import/TransactionImportConnector.js +0 -27
  83. package/dist/tasenor-common-node/src/import/TransactionImportConnector.js.map +0 -1
  84. package/dist/tasenor-common-node/src/import/TransactionImportHandler.d.ts +0 -173
  85. package/dist/tasenor-common-node/src/import/TransactionImportHandler.js +0 -733
  86. package/dist/tasenor-common-node/src/import/TransactionImportHandler.js.map +0 -1
  87. package/dist/tasenor-common-node/src/import/TransactionRules.d.ts +0 -238
  88. package/dist/tasenor-common-node/src/import/TransactionRules.js +0 -522
  89. package/dist/tasenor-common-node/src/import/TransactionRules.js.map +0 -1
  90. package/dist/tasenor-common-node/src/import/TransactionUI.d.ts +0 -181
  91. package/dist/tasenor-common-node/src/import/TransactionUI.js +0 -482
  92. package/dist/tasenor-common-node/src/import/TransactionUI.js.map +0 -1
  93. package/dist/tasenor-common-node/src/import/TransferAnalyzer.d.ts +0 -324
  94. package/dist/tasenor-common-node/src/import/TransferAnalyzer.js +0 -1379
  95. package/dist/tasenor-common-node/src/import/TransferAnalyzer.js.map +0 -1
  96. package/dist/tasenor-common-node/src/import/index.d.ts +0 -11
  97. package/dist/tasenor-common-node/src/import/index.js +0 -12
  98. package/dist/tasenor-common-node/src/import/index.js.map +0 -1
  99. package/dist/tasenor-common-node/src/index.d.ts +0 -12
  100. package/dist/tasenor-common-node/src/index.js +0 -13
  101. package/dist/tasenor-common-node/src/index.js.map +0 -1
  102. package/dist/tasenor-common-node/src/net/crypto.d.ts +0 -33
  103. package/dist/tasenor-common-node/src/net/crypto.js +0 -63
  104. package/dist/tasenor-common-node/src/net/crypto.js.map +0 -1
  105. package/dist/tasenor-common-node/src/net/git.d.ts +0 -49
  106. package/dist/tasenor-common-node/src/net/git.js +0 -137
  107. package/dist/tasenor-common-node/src/net/git.js.map +0 -1
  108. package/dist/tasenor-common-node/src/net/index.d.ts +0 -10
  109. package/dist/tasenor-common-node/src/net/index.js +0 -11
  110. package/dist/tasenor-common-node/src/net/index.js.map +0 -1
  111. package/dist/tasenor-common-node/src/net/middleware.d.ts +0 -61
  112. package/dist/tasenor-common-node/src/net/middleware.js +0 -220
  113. package/dist/tasenor-common-node/src/net/middleware.js.map +0 -1
  114. package/dist/tasenor-common-node/src/net/tokens.d.ts +0 -50
  115. package/dist/tasenor-common-node/src/net/tokens.js +0 -141
  116. package/dist/tasenor-common-node/src/net/tokens.js.map +0 -1
  117. package/dist/tasenor-common-node/src/net/vault.d.ts +0 -67
  118. package/dist/tasenor-common-node/src/net/vault.js +0 -145
  119. package/dist/tasenor-common-node/src/net/vault.js.map +0 -1
  120. package/dist/tasenor-common-node/src/plugins/BackendPlugin.d.ts +0 -91
  121. package/dist/tasenor-common-node/src/plugins/BackendPlugin.js +0 -165
  122. package/dist/tasenor-common-node/src/plugins/BackendPlugin.js.map +0 -1
  123. package/dist/tasenor-common-node/src/plugins/DataPlugin.d.ts +0 -13
  124. package/dist/tasenor-common-node/src/plugins/DataPlugin.js +0 -26
  125. package/dist/tasenor-common-node/src/plugins/DataPlugin.js.map +0 -1
  126. package/dist/tasenor-common-node/src/plugins/ImportPlugin.d.ts +0 -188
  127. package/dist/tasenor-common-node/src/plugins/ImportPlugin.js +0 -204
  128. package/dist/tasenor-common-node/src/plugins/ImportPlugin.js.map +0 -1
  129. package/dist/tasenor-common-node/src/plugins/ReportPlugin.d.ts +0 -132
  130. package/dist/tasenor-common-node/src/plugins/ReportPlugin.js +0 -393
  131. package/dist/tasenor-common-node/src/plugins/ReportPlugin.js.map +0 -1
  132. package/dist/tasenor-common-node/src/plugins/SchemePlugin.d.ts +0 -34
  133. package/dist/tasenor-common-node/src/plugins/SchemePlugin.js +0 -47
  134. package/dist/tasenor-common-node/src/plugins/SchemePlugin.js.map +0 -1
  135. package/dist/tasenor-common-node/src/plugins/ServicePlugin.d.ts +0 -80
  136. package/dist/tasenor-common-node/src/plugins/ServicePlugin.js +0 -168
  137. package/dist/tasenor-common-node/src/plugins/ServicePlugin.js.map +0 -1
  138. package/dist/tasenor-common-node/src/plugins/ToolPlugin.d.ts +0 -27
  139. package/dist/tasenor-common-node/src/plugins/ToolPlugin.js +0 -37
  140. package/dist/tasenor-common-node/src/plugins/ToolPlugin.js.map +0 -1
  141. package/dist/tasenor-common-node/src/plugins/index.d.ts +0 -13
  142. package/dist/tasenor-common-node/src/plugins/index.js +0 -14
  143. package/dist/tasenor-common-node/src/plugins/index.js.map +0 -1
  144. package/dist/tasenor-common-node/src/plugins/plugins.d.ts +0 -101
  145. package/dist/tasenor-common-node/src/plugins/plugins.js +0 -292
  146. package/dist/tasenor-common-node/src/plugins/plugins.js.map +0 -1
  147. package/dist/tasenor-common-node/src/process/Process.d.ts +0 -108
  148. package/dist/tasenor-common-node/src/process/Process.js +0 -335
  149. package/dist/tasenor-common-node/src/process/Process.js.map +0 -1
  150. package/dist/tasenor-common-node/src/process/ProcessConnector.d.ts +0 -24
  151. package/dist/tasenor-common-node/src/process/ProcessConnector.js +0 -28
  152. package/dist/tasenor-common-node/src/process/ProcessConnector.js.map +0 -1
  153. package/dist/tasenor-common-node/src/process/ProcessFile.d.ts +0 -69
  154. package/dist/tasenor-common-node/src/process/ProcessFile.js +0 -145
  155. package/dist/tasenor-common-node/src/process/ProcessFile.js.map +0 -1
  156. package/dist/tasenor-common-node/src/process/ProcessHandler.d.ts +0 -60
  157. package/dist/tasenor-common-node/src/process/ProcessHandler.js +0 -73
  158. package/dist/tasenor-common-node/src/process/ProcessHandler.js.map +0 -1
  159. package/dist/tasenor-common-node/src/process/ProcessStep.d.ts +0 -52
  160. package/dist/tasenor-common-node/src/process/ProcessStep.js +0 -78
  161. package/dist/tasenor-common-node/src/process/ProcessStep.js.map +0 -1
  162. package/dist/tasenor-common-node/src/process/ProcessingSystem.d.ts +0 -60
  163. package/dist/tasenor-common-node/src/process/ProcessingSystem.js +0 -182
  164. package/dist/tasenor-common-node/src/process/ProcessingSystem.js.map +0 -1
  165. package/dist/tasenor-common-node/src/process/index.d.ts +0 -11
  166. package/dist/tasenor-common-node/src/process/index.js +0 -12
  167. package/dist/tasenor-common-node/src/process/index.js.map +0 -1
  168. package/dist/tasenor-common-node/src/reports/conversions.d.ts +0 -8
  169. package/dist/tasenor-common-node/src/reports/conversions.js +0 -47
  170. package/dist/tasenor-common-node/src/reports/conversions.js.map +0 -1
  171. package/dist/tasenor-common-node/src/reports/index.d.ts +0 -6
  172. package/dist/tasenor-common-node/src/reports/index.js +0 -7
  173. package/dist/tasenor-common-node/src/reports/index.js.map +0 -1
  174. package/dist/tasenor-common-node/src/server/ISPDemoServer.d.ts +0 -43
  175. package/dist/tasenor-common-node/src/server/ISPDemoServer.js +0 -112
  176. package/dist/tasenor-common-node/src/server/ISPDemoServer.js.map +0 -1
  177. package/dist/tasenor-common-node/src/server/api.d.ts +0 -15
  178. package/dist/tasenor-common-node/src/server/api.js +0 -27
  179. package/dist/tasenor-common-node/src/server/api.js.map +0 -1
  180. package/dist/tasenor-common-node/src/server/index.d.ts +0 -7
  181. package/dist/tasenor-common-node/src/server/index.js +0 -8
  182. package/dist/tasenor-common-node/src/server/index.js.map +0 -1
  183. package/dist/tasenor-common-node/src/server/router.d.ts +0 -5
  184. package/dist/tasenor-common-node/src/server/router.js +0 -37
  185. package/dist/tasenor-common-node/src/server/router.js.map +0 -1
  186. package/dist/tasenor-common-node/src/system.d.ts +0 -27
  187. package/dist/tasenor-common-node/src/system.js +0 -95
  188. package/dist/tasenor-common-node/src/system.js.map +0 -1
  189. package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.d.ts +0 -21
  190. package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.js +0 -33
  191. package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.js.map +0 -1
  192. package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.d.ts +0 -24
  193. package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.js +0 -68
  194. package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.js.map +0 -1
  195. package/dist/tasenor-common-node/src/testing/UnitTester.d.ts +0 -64
  196. package/dist/tasenor-common-node/src/testing/UnitTester.js +0 -199
  197. package/dist/tasenor-common-node/src/testing/UnitTester.js.map +0 -1
  198. package/dist/tasenor-common-node/src/testing/index.d.ts +0 -4
  199. package/dist/tasenor-common-node/src/testing/index.js +0 -5
  200. package/dist/tasenor-common-node/src/testing/index.js.map +0 -1
  201. package/dist/tasenor-common-node/src/testing/test-handlers.d.ts +0 -13
  202. package/dist/tasenor-common-node/src/testing/test-handlers.js +0 -44
  203. package/dist/tasenor-common-node/src/testing/test-handlers.js.map +0 -1
  204. package/dist/tasenor-common-node/tests/TransactionRules.spec.d.ts +0 -1
  205. package/dist/tasenor-common-node/tests/TransactionRules.spec.js +0 -64
  206. package/dist/tasenor-common-node/tests/TransactionRules.spec.js.map +0 -1
  207. package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.d.ts +0 -1
  208. package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.js +0 -80
  209. package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.js.map +0 -1
  210. package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.d.ts +0 -1
  211. package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.js +0 -342
  212. package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.js.map +0 -1
  213. package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.d.ts +0 -1
  214. package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.js +0 -174
  215. package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.js.map +0 -1
  216. package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.d.ts +0 -1
  217. package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.js +0 -175
  218. package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.js.map +0 -1
  219. package/dist/tasenor-common-node/tests/password.spec.d.ts +0 -1
  220. package/dist/tasenor-common-node/tests/password.spec.js +0 -8
  221. package/dist/tasenor-common-node/tests/password.spec.js.map +0 -1
  222. package/dist/tasenor-common-node/tests/tokens.spec.d.ts +0 -1
  223. package/dist/tasenor-common-node/tests/tokens.spec.js +0 -49
  224. package/dist/tasenor-common-node/tests/tokens.spec.js.map +0 -1
  225. package/dist/tasenor-common-node/tests/vault.spec.d.ts +0 -1
  226. package/dist/tasenor-common-node/tests/vault.spec.js +0 -19
  227. package/dist/tasenor-common-node/tests/vault.spec.js.map +0 -1
  228. package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.d.ts +0 -11
  229. package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.js +0 -30
  230. package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.js.map +0 -1
  231. package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.d.ts +0 -5
  232. package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.js +0 -350
  233. package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.js.map +0 -1
  234. package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.d.ts +0 -23
  235. package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.js +0 -83
  236. package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.js.map +0 -1
  237. package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.d.ts +0 -28
  238. package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.js +0 -340
  239. package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.js.map +0 -1
  240. package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.d.ts +0 -11
  241. package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.js +0 -39
  242. package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.js.map +0 -1
  243. package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.d.ts +0 -17
  244. package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.js +0 -66
  245. package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.js.map +0 -1
  246. package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.d.ts +0 -13
  247. package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.js +0 -241
  248. package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.js.map +0 -1
@@ -1,354 +0,0 @@
1
- import * as csvParse from 'csv-parse';
2
- import { BadState, NotImplemented } from '../error';
3
- import { ProcessHandler } from '../process/ProcessHandler';
4
- import { isImportAction, isImportAnswerAction, isImportConfigureAction, isImportOpAction, Directions, isImportRetryAction } from '@tasenor/common';
5
- /**
6
- * Utility class to provide tools for implementing any text file based process handler.
7
- */
8
- export class TextFileProcessHandler extends ProcessHandler {
9
- importOptions = {
10
- parser: 'csv',
11
- numericFields: [],
12
- requiredFields: [],
13
- insignificantFields: [],
14
- sharedFields: [],
15
- textField: null,
16
- totalAmountField: null
17
- };
18
- /**
19
- * Split the file to lines and keep line numbers with the lines. Mark state type as initial state.
20
- * @param file
21
- * @returns
22
- */
23
- startingState(processFiles) {
24
- const files = {};
25
- for (const processFile of processFiles) {
26
- const original = processFile.decode();
27
- let lines;
28
- if (this.importOptions.custom) {
29
- // Use custom splitter if defined.
30
- lines = this.importOptions.custom.splitToLines(original).map((text, idx) => ({
31
- text,
32
- line: idx,
33
- columns: {}
34
- }));
35
- }
36
- else {
37
- // Otherwise just split from new lines.
38
- lines = original.replace(/\n+$/, '').split('\n').map((text, line) => ({
39
- text,
40
- line,
41
- columns: {}
42
- }));
43
- }
44
- files[processFile.name] = { lines };
45
- }
46
- return {
47
- stage: 'initial',
48
- files
49
- };
50
- }
51
- /**
52
- * Check the state type is matching to 'complete'.
53
- * @param state
54
- */
55
- checkCompletion(state) {
56
- if (state.stage === 'executed') {
57
- return true;
58
- }
59
- return undefined;
60
- }
61
- /**
62
- * A hook to check alternative directions from initial state.
63
- * @param state
64
- * @returns
65
- */
66
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
67
- async needInputForSegmentation(state, config) {
68
- return false;
69
- }
70
- /**
71
- * A hook to check alternative directions from segmented state.
72
- * @param state
73
- * @returns
74
- */
75
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
76
- async needInputForClassification(state, config) {
77
- return false;
78
- }
79
- /**
80
- * A hook to check alternative directions from classified state.
81
- * @param state
82
- * @returns
83
- */
84
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
85
- async needInputForAnalysis(state, config) {
86
- return false;
87
- }
88
- /**
89
- * A hook to check alternative directions from analyzed state.
90
- * @param state
91
- * @returns
92
- */
93
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
94
- async needInputForExecution(state, config) {
95
- return false;
96
- }
97
- /**
98
- * Run steps in order 'segmentation', 'classification', 'analysis', 'execution'.
99
- * @param state
100
- * @returns
101
- */
102
- async getDirections(state, config) {
103
- let input;
104
- let directions;
105
- switch (state.stage) {
106
- case 'initial':
107
- input = await this.needInputForSegmentation(state, config);
108
- if (input)
109
- return input;
110
- directions = new Directions({
111
- type: 'action',
112
- action: { op: 'segmentation' }
113
- });
114
- break;
115
- case 'segmented':
116
- input = await this.needInputForClassification(state, config);
117
- if (input)
118
- return input;
119
- directions = new Directions({
120
- type: 'action',
121
- action: { op: 'classification' }
122
- });
123
- break;
124
- case 'classified':
125
- input = await this.needInputForAnalysis(state, config);
126
- if (input)
127
- return input;
128
- directions = new Directions({
129
- type: 'action',
130
- action: { op: 'analysis' }
131
- });
132
- break;
133
- case 'analyzed':
134
- input = await this.needInputForExecution(state, config);
135
- if (input)
136
- return input;
137
- directions = new Directions({
138
- type: 'action',
139
- action: { op: 'execution' }
140
- });
141
- break;
142
- default:
143
- throw new BadState('Cannot find directions from the current state.');
144
- }
145
- return directions;
146
- }
147
- /**
148
- * Call subclass implementation for each action.
149
- * @param action
150
- * @param state
151
- * @param files
152
- */
153
- async action(process, action, state, files) {
154
- if (!isImportAction(action)) {
155
- throw new BadState(`Action is not import action ${JSON.stringify(action)}`);
156
- }
157
- if (isImportRetryAction(action)) {
158
- this.system.logger.info(`Executing 'retry' action on process #${process.id}.`);
159
- process.status = 'INCOMPLETE';
160
- process.error = undefined;
161
- await process.save();
162
- return state;
163
- }
164
- if (isImportOpAction(action)) {
165
- this.system.logger.info(`Executing '${action.op}' action on process #${process.id}.`);
166
- switch (action.op) {
167
- case 'analysis':
168
- case 'classification':
169
- case 'segmentation':
170
- case 'execution':
171
- return this[action.op](process, state, files, process.config);
172
- default:
173
- throw new BadState(`Cannot parse action ${JSON.stringify(action)}`);
174
- }
175
- }
176
- if (isImportConfigureAction(action)) {
177
- this.system.logger.info(`Updating 'configuration' on process #${process.id}.`);
178
- Object.assign(process.config, action.configure);
179
- await process.save();
180
- }
181
- if (isImportAnswerAction(action)) {
182
- this.system.logger.info(`Updating 'answers' on process #${process.id}.`);
183
- if (!process.config.answers) {
184
- process.config.answers = {};
185
- }
186
- const answers = process.config.answers;
187
- for (const segmentId of Object.keys(action.answer)) {
188
- answers[segmentId] = answers[segmentId] || {};
189
- for (const variable of Object.keys(action.answer[segmentId])) {
190
- answers[segmentId][variable] = action.answer[segmentId][variable];
191
- }
192
- }
193
- await process.save();
194
- }
195
- return state;
196
- }
197
- /**
198
- * This function must implement gathering of each line together that forms together one import activity.
199
- * @param state
200
- * @param files
201
- */
202
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
203
- async segmentation(process, state, files, config) {
204
- throw new NotImplemented(`A class ${this.constructor.name} does not implement segmentation().`);
205
- }
206
- /**
207
- * This function must implement gathering of each line together that forms together one import activity.
208
- * @param state
209
- * @param files
210
- */
211
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
212
- async classification(process, state, files, config) {
213
- throw new NotImplemented(`A class ${this.constructor.name} does not implement classification().`);
214
- }
215
- /**
216
- * This function must implement conversion from classified data to the actual executable operations.
217
- * @param state
218
- * @param files
219
- */
220
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
221
- async analysis(process, state, files, config) {
222
- throw new NotImplemented(`A class ${this.constructor.name} does not implement analysis().`);
223
- }
224
- /**
225
- * This function must implement applying the result in practice.
226
- * @param state
227
- * @param files
228
- */
229
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
230
- async execution(process, state, files, config) {
231
- throw new NotImplemented(`A class ${this.constructor.name} does not implement execution().`);
232
- }
233
- /**
234
- * Parse a single line of CSV.
235
- * @param line
236
- * @param options
237
- * @returns
238
- */
239
- async parseCsvLine(line, options = {}) {
240
- return new Promise((resolve, reject) => {
241
- csvParse.parse(line, {
242
- delimiter: options.columnSeparator || ',',
243
- skip_records_with_error: !!options.skipErrors
244
- }, function (err, out) {
245
- if (err) {
246
- reject(err);
247
- }
248
- else {
249
- resolve(out[0]);
250
- }
251
- });
252
- });
253
- }
254
- /**
255
- * Go through each file and each line and add CSV interpretation of the content to each line.
256
- * @param state
257
- * @param options
258
- * @returns The original state that has been modified by adding CSV parsed field `columns`.
259
- */
260
- async parseCSV(state, options = {}) {
261
- // Heading names per column.
262
- let headings = [];
263
- let dropLines = options.cutFromBeginning || 0;
264
- // Run loop over all files.
265
- let firstLine = true;
266
- for (const fileName of Object.keys(state.files)) {
267
- // Process each line from CSV.
268
- for (let n = 0; n < state.files[fileName].lines.length; n++) {
269
- if (dropLines) {
270
- dropLines--;
271
- continue;
272
- }
273
- const line = { ...state.files[fileName].lines[n] };
274
- const text = options.trimLines ? line.text.trim() : line.text;
275
- // Collect or define headings on the first line.
276
- if (firstLine) {
277
- firstLine = false;
278
- if (options.useFirstLineHeadings) {
279
- headings = await this.parseCsvLine(text, options);
280
- const headCount = {};
281
- for (let i = 0; i < headings.length; i++) {
282
- headCount[headings[i]] = headCount[headings[i]] || 0;
283
- headCount[headings[i]]++;
284
- if (headCount[headings[i]] > 1) {
285
- headings[i] = `${headings[i]}${headCount[headings[i]]}`;
286
- }
287
- }
288
- continue;
289
- }
290
- else {
291
- const size = (await this.parseCsvLine(text, options)).length;
292
- for (let i = 0; i < size; i++) {
293
- headings.push(`${i}`);
294
- }
295
- }
296
- }
297
- // Map each column to its heading name.
298
- const columns = {};
299
- const pieces = text.trim() !== '' ? await this.parseCsvLine(text, options) : null;
300
- if (pieces) {
301
- pieces.forEach((column, index) => {
302
- if (index < headings.length) {
303
- columns[headings[index]] = column;
304
- }
305
- else {
306
- columns['+'] = columns['+'] || '';
307
- columns['+'] += column + '\n';
308
- }
309
- });
310
- line.columns = columns;
311
- // Add it back with columns.
312
- state.files[fileName].lines[n] = line;
313
- }
314
- }
315
- }
316
- const newState = {
317
- ...state,
318
- stage: 'segmented'
319
- };
320
- return newState;
321
- }
322
- /**
323
- * Handler for pure custom handler.
324
- */
325
- async parseCustom(state, options) {
326
- for (const fileName of Object.keys(state.files)) {
327
- for (const line of state.files[fileName].lines) {
328
- line.columns = options.splitToColumns(line.text);
329
- }
330
- }
331
- const newState = {
332
- ...state,
333
- stage: 'segmented'
334
- };
335
- return newState;
336
- }
337
- /**
338
- * Split a string to fixed length fields given as name and length mapping.
339
- */
340
- parseFixedLength(src, offsets, conversions) {
341
- const ret = {};
342
- const keys = Object.keys(offsets);
343
- for (let n = 0, i = 0; i < keys.length; i++) {
344
- const column = src.substring(n, n + offsets[keys[i]]);
345
- ret[keys[i]] = column.trim();
346
- if (conversions[keys[i]]) {
347
- ret[keys[i]] = conversions[keys[i]](ret[keys[i]]);
348
- }
349
- n += offsets[keys[i]];
350
- }
351
- return ret;
352
- }
353
- }
354
- //# sourceMappingURL=TextFileProcessHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextFileProcessHandler.js","sourceRoot":"","sources":["../../../../src/import/TextFileProcessHandler.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- import { Asset, AssetType, AssetExchange, AccountNumber, TradeableAsset, StockValueData, Currency, AssetTransfer, BalanceBookkeeping, ProcessConfig, AccountAddress } from '@tasenor/common';
2
- import { ProcessConnector } from '../process';
3
- /**
4
- * An interface definition for linking generic import processor to the Bookkeeper.
5
- */
6
- export interface TransactionImportConnector extends ProcessConnector {
7
- /**
8
- * Set the balances at the given time stamp.
9
- * @param time
10
- * @param balances
11
- */
12
- initializeBalances(time: Date, balances: BalanceBookkeeping, config: ProcessConfig): Promise<void>;
13
- /**
14
- * Get the list of accounts that are canditates for holding matching transactions of the given account address.
15
- * @param asset
16
- */
17
- getAccountCanditates(addr: AccountAddress, config: ProcessConfig): Promise<AccountNumber[]>;
18
- /**
19
- * Get the preferred default account for the given account address.
20
- * @param addr
21
- */
22
- getRate(time: Date, type: AssetType, asset: Asset, currency: Currency, exchange: AssetExchange): Promise<number>;
23
- /**
24
- * Find out how many assets we have at the given time.
25
- * @param time
26
- * @param account
27
- * @param symbol
28
- */
29
- getStock(time: Date, account: AccountNumber, symbol: TradeableAsset): Promise<StockValueData>;
30
- /**
31
- * Find the VAT value for the transfer if any.
32
- * @param time
33
- * @param transfer
34
- * @param currency
35
- */
36
- getVAT(time: Date, transfer: AssetTransfer, currency: Currency): Promise<null | number>;
37
- }
38
- export declare function isTransactionImportConnector(o: unknown): o is TransactionImportConnector;
@@ -1,27 +0,0 @@
1
- export function isTransactionImportConnector(o) {
2
- if (typeof o !== 'object' || o === null) {
3
- return false;
4
- }
5
- let f = o.getRate;
6
- if (typeof f !== 'function') {
7
- return false;
8
- }
9
- f = o.getStock;
10
- if (typeof f !== 'function') {
11
- return false;
12
- }
13
- f = o.initializeBalances;
14
- if (typeof f !== 'function') {
15
- return false;
16
- }
17
- f = o.getAccountCanditates;
18
- if (typeof f !== 'function') {
19
- return false;
20
- }
21
- f = o.getVAT;
22
- if (typeof f !== 'function') {
23
- return false;
24
- }
25
- return true;
26
- }
27
- //# sourceMappingURL=TransactionImportConnector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransactionImportConnector.js","sourceRoot":"","sources":["../../../../src/import/TransactionImportConnector.ts"],"names":[],"mappings":"AAuCA,MAAM,UAAU,4BAA4B,CAAC,CAAU;IACrD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;QACvC,OAAO,KAAK,CAAA;KACb;IACD,IAAI,CAAC,GAAI,CAA6B,CAAC,OAAO,CAAA;IAC9C,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;QAC3B,OAAO,KAAK,CAAA;KACb;IACD,CAAC,GAAI,CAA6B,CAAC,QAAQ,CAAA;IAC3C,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;QAC3B,OAAO,KAAK,CAAA;KACb;IACD,CAAC,GAAI,CAA6B,CAAC,kBAAkB,CAAA;IACrD,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;QAC3B,OAAO,KAAK,CAAA;KACb;IACD,CAAC,GAAI,CAA6B,CAAC,oBAAoB,CAAA;IACvD,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;QAC3B,OAAO,KAAK,CAAA;KACb;IACD,CAAC,GAAI,CAA6B,CAAC,MAAM,CAAA;IACzC,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;QAC3B,OAAO,KAAK,CAAA;KACb;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,173 +0,0 @@
1
- import { AccountAddress, Asset, AssetExchange, AssetTransfer, AssetType, Currency, Language, TransactionDescription, AccountNumber, ProcessConfig, ImportStateText, TextFileLine, SegmentId, NO_SEGMENT, ImportSegment, Directions, ImportConfig, BalanceSummaryEntry } from '@tasenor/common';
2
- import { TransactionUI } from './TransactionUI';
3
- import { TransactionRules } from './TransactionRules';
4
- import { TextFileProcessHandler } from './TextFileProcessHandler';
5
- import { Process, ProcessFile } from '../process';
6
- /**
7
- * Core functionality for all transaction import handlers.
8
- */
9
- export declare class TransactionImportHandler extends TextFileProcessHandler {
10
- UI: TransactionUI;
11
- rules: TransactionRules;
12
- private analyzer;
13
- constructor(name: string);
14
- /**
15
- * By default, we don't support multifile.
16
- * @param file
17
- * @returns
18
- */
19
- canAppend(file: ProcessFile): boolean;
20
- /**
21
- * Get a single account balance.
22
- * @param addr
23
- */
24
- getBalance(addr: AccountAddress): number;
25
- /**
26
- * Get the translation for the text to the currently configured language.
27
- * @param text
28
- * @returns
29
- */
30
- getTranslation(text: string, language: Language | undefined): Promise<string>;
31
- /**
32
- * Get the account having matching asset in their code.
33
- * @param asset
34
- * @returns
35
- */
36
- getAccountCanditates(addr: AccountAddress, config: ProcessConfig): Promise<AccountNumber[]>;
37
- /**
38
- * Construct grouping for the line data with columns defined using sub class that can generate unique ID per transaction.
39
- * @param state
40
- */
41
- groupingById(state: ImportStateText<'segmented'>): Promise<ImportStateText<'segmented'>>;
42
- /**
43
- * Default parser for file data.
44
- */
45
- parse(state: ImportStateText<'initial'>, config?: ProcessConfig): Promise<ImportStateText<'segmented'>>;
46
- /**
47
- * Default segmentation is parsing CSV and then grouping by segment ID constructed for each line.
48
- * @param state
49
- * @param files
50
- * @returns
51
- */
52
- segmentationCSV(process: Process, state: ImportStateText<'initial'>, files: ProcessFile[]): Promise<ImportStateText<'segmented'>>;
53
- /**
54
- * Hook to do some post proccessing for segmentation process. Collects standard fields.
55
- * @param state
56
- * @returns
57
- */
58
- segmentationPostProcess(state: ImportStateText<'segmented'>): Promise<ImportStateText<'segmented'>>;
59
- segmentation(process: Process, state: ImportStateText<'initial'>, files: ProcessFile[]): Promise<ImportStateText<'segmented'>>;
60
- /**
61
- * Helper to dump segmentation results.
62
- */
63
- debugSegmentation(state: ImportStateText<'segmented'>): void;
64
- /**
65
- * Construct a hash for a text line usable as unique segment ID.
66
- * @param line
67
- */
68
- hash(line: TextFileLine, columns?: string[] | undefined): SegmentId;
69
- /**
70
- * Segmentation by ID can use this function to group lines by their ID. By default the hash is used.
71
- * @param line
72
- */
73
- segmentId(line: TextFileLine, columns?: string[] | undefined): SegmentId | typeof NO_SEGMENT;
74
- /**
75
- * Find out the timestamp from the line data if any.
76
- * @param line
77
- */
78
- time(line: TextFileLine): Date | undefined;
79
- /**
80
- * Default classification constructs lines belonging to each segment and asks subclass to classify them.
81
- *
82
- * @param state
83
- * @param files
84
- * @returns
85
- */
86
- classification(process: Process, state: ImportStateText<'segmented'>, files: ProcessFile[]): Promise<ImportStateText<'classified'>>;
87
- /**
88
- * Helper to dump classification results.
89
- */
90
- debugClassification(state: ImportStateText<'classified'>): void;
91
- /**
92
- * By default, use rules to classify.
93
- * @param lines
94
- */
95
- classifyLines(lines: TextFileLine[], config: ProcessConfig, segment: ImportSegment): Promise<TransactionDescription>;
96
- /**
97
- * Collect lines related to the segment.
98
- * @param state
99
- * @param segmentId
100
- */
101
- getLines(state: ImportStateText<'classified'>, segmentId: SegmentId): TextFileLine[] | null;
102
- /**
103
- * Check if all accounts are configured and if not, construct query UI for it.
104
- * @param state
105
- * @returns
106
- */
107
- needInputForAnalysis(state: ImportStateText<'classified'>, config: ProcessConfig): Promise<Directions | false>;
108
- /**
109
- * Study configured accounts and missing accounts and construct appropriate UI query for accounts.
110
- * @param missing
111
- * @param config
112
- * @returns
113
- */
114
- directionsForMissingAccounts(missing: Set<AccountAddress>, config: ProcessConfig): Promise<Directions | false>;
115
- /**
116
- * Insert custom segments based on answer collection, if necessary.
117
- */
118
- createCustomSegments(state: ImportStateText<'classified'>, config: ImportConfig): Promise<ImportStateText<'classified'>>;
119
- /**
120
- * Sort the segments by their date.
121
- * @param segments
122
- * @returns
123
- */
124
- sortSegments(segments: Record<string, ImportSegment>): ImportSegment[];
125
- /**
126
- * Convert transfers to the actual transactions with account numbers.
127
- * @param state
128
- * @param files
129
- */
130
- analysis(process: Process, state: ImportStateText<'classified'>, files: ProcessFile[], config: ProcessConfig): Promise<ImportStateText<'analyzed'>>;
131
- /**
132
- * Analyze and construct transaction details from a transaction description.
133
- * @param txs
134
- */
135
- analyze(txs: TransactionDescription, segment: ImportSegment, config: ProcessConfig, state: ImportStateText<'classified'>, debtAccounts: Record<AccountNumber, BalanceSummaryEntry>): Promise<TransactionDescription>;
136
- /**
137
- * Check if the resulting transactions needs to be recorded to loan account.
138
- */
139
- checkForLoan(result: TransactionDescription, debtAccounts: Record<AccountNumber, BalanceSummaryEntry>): Promise<TransactionDescription>;
140
- /**
141
- * Dump analysis results.
142
- * @param state
143
- */
144
- debugAnalysis(state: ImportStateText<'analyzed'>): void;
145
- /**
146
- * Apply the result using the connector.
147
- * @param state
148
- * @param files
149
- * @returns
150
- */
151
- execution(process: Process, state: ImportStateText<'analyzed'>, files: ProcessFile[]): Promise<ImportStateText<'executed'>>;
152
- /**
153
- * Ask VAT from connector.
154
- * @param time
155
- * @param reason
156
- * @param asset
157
- * @param currency
158
- */
159
- getVAT(time: Date, transfer: AssetTransfer, currency: Currency): Promise<null | number>;
160
- /**
161
- * Find the rate in the default currency for the asset.
162
- * If there is information about rates inside the files, this function could be overridden and
163
- * used for digging actual values. Those values can be collected during parse() call.
164
- * @param time
165
- * @param type
166
- * @param asset
167
- */
168
- getRate(time: Date, type: AssetType, asset: Asset, currency: Currency, exchange: AssetExchange): Promise<number>;
169
- /**
170
- * Remove transactions created.
171
- */
172
- rollback(process: Process, state: ImportStateText<'executed'>): Promise<ImportStateText<'rolledback'>>;
173
- }