@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,354 @@
1
+ import { UnitTester } from '../src/testing'
2
+
3
+ test('Buying and selling', async () => {
4
+
5
+ const tester = new UnitTester()
6
+
7
+ tester.addMoney('trade.currency.EUR', 1000000)
8
+
9
+ await tester.test(
10
+ // Buy 1.5 ETH for 200€ and 1€ fee.
11
+ [
12
+ {
13
+ reason: 'trade',
14
+ type: 'currency',
15
+ asset: 'EUR',
16
+ amount: -200
17
+ },
18
+ {
19
+ reason: 'trade',
20
+ type: 'crypto',
21
+ asset: 'ETH',
22
+ amount: 1.5
23
+ },
24
+ {
25
+ reason: 'fee',
26
+ type: 'currency',
27
+ asset: 'EUR',
28
+ amount: 1
29
+ }
30
+ ], [[
31
+ {
32
+ account: 'trade.currency.EUR',
33
+ amount: -20100,
34
+ description: 'Buy +1.5 ETH',
35
+ },
36
+ {
37
+ account: 'trade.crypto.ETH',
38
+ amount: 20000,
39
+ data: {
40
+ stock: {
41
+ change: {
42
+ ETH: {
43
+ amount: 1.5,
44
+ value: 20000,
45
+ },
46
+ },
47
+ },
48
+ },
49
+ description: 'Buy +1.5 ETH',
50
+ },
51
+ {
52
+ account: 'fee.currency.EUR',
53
+ amount: 100,
54
+ description: 'Buy +1.5 ETH',
55
+ }
56
+ ]],
57
+ // Sell 1.5 ETH for 250€ and 1€ fee.
58
+ [
59
+ {
60
+ reason: 'trade',
61
+ type: 'currency',
62
+ asset: 'EUR',
63
+ amount: 251
64
+ },
65
+ {
66
+ reason: 'trade',
67
+ type: 'crypto',
68
+ asset: 'ETH',
69
+ amount: -1.5
70
+ },
71
+ {
72
+ reason: 'fee',
73
+ type: 'currency',
74
+ asset: 'EUR',
75
+ amount: 1
76
+ }
77
+ ], [[
78
+ {
79
+ account: 'trade.currency.EUR',
80
+ amount: 25000,
81
+ description: 'Sell -1.5 ETH',
82
+ },
83
+ {
84
+ account: 'trade.crypto.ETH',
85
+ amount: -20000,
86
+ data: {
87
+ stock: {
88
+ change: {
89
+ ETH: {
90
+ amount: -1.5,
91
+ value: -20000,
92
+ },
93
+ },
94
+ },
95
+ },
96
+ description: 'Sell -1.5 ETH',
97
+ },
98
+ {
99
+ account: 'fee.currency.EUR',
100
+ amount: 100,
101
+ description: 'Sell -1.5 ETH',
102
+ },
103
+ {
104
+ account: 'income.statement.TRADE_PROFIT_CRYPTO',
105
+ amount: -5100,
106
+ description: 'Sell -1.5 ETH',
107
+ }
108
+ ]],
109
+ // Buy 5 NAKD for 300€, no fee.
110
+ [
111
+ {
112
+ reason: 'trade',
113
+ type: 'currency',
114
+ asset: 'EUR',
115
+ amount: -300
116
+ },
117
+ {
118
+ reason: 'trade',
119
+ type: 'stock',
120
+ asset: 'NAKD',
121
+ amount: 5
122
+ }
123
+ ], [[
124
+ {
125
+ account: 'trade.currency.EUR',
126
+ amount: -30000,
127
+ description: 'Buy +5 NAKD',
128
+ },
129
+ {
130
+ account: 'trade.stock.NAKD',
131
+ amount: 30000,
132
+ data: {
133
+ stock: {
134
+ change: {
135
+ NAKD: {
136
+ amount: 5,
137
+ value: 30000,
138
+ },
139
+ },
140
+ },
141
+ },
142
+ description: 'Buy +5 NAKD',
143
+ },
144
+ ]],
145
+ // Sell 5 NAKD for 200€, no fee.
146
+ [
147
+ {
148
+ reason: 'trade',
149
+ type: 'currency',
150
+ asset: 'EUR',
151
+ amount: 200
152
+ },
153
+ {
154
+ reason: 'trade',
155
+ type: 'stock',
156
+ asset: 'NAKD',
157
+ amount: -5
158
+ }
159
+ ], [[
160
+ {
161
+ account: 'trade.currency.EUR',
162
+ amount: 20000,
163
+ description: 'Sell -5 NAKD',
164
+ },
165
+ {
166
+ account: 'trade.stock.NAKD',
167
+ amount: -30000,
168
+ data: {
169
+ stock: {
170
+ change: {
171
+ NAKD: {
172
+ amount: -5,
173
+ value: -30000,
174
+ },
175
+ },
176
+ },
177
+ },
178
+ description: 'Sell -5 NAKD',
179
+ },
180
+ {
181
+ account: 'expense.statement.TRADE_LOSS_STOCK',
182
+ amount: 10000,
183
+ description: 'Sell -5 NAKD',
184
+ },
185
+ ]]
186
+ )
187
+
188
+ expect(tester.get('trade.currency.EUR')).toBe(994900)
189
+ expect(tester.get('trade.stock.NAKD')).toBe(0)
190
+ expect(tester.get('expense.statement.TRADE_LOSS_STOCK')).toBe(10000)
191
+ expect(tester.get('trade.crypto.ETH')).toBe(0)
192
+ expect(tester.get('fee.currency.EUR')).toBe(200)
193
+ expect(tester.get('income.statement.TRADE_PROFIT_CRYPTO')).toBe(-5100)
194
+ })
195
+
196
+ test('Short selling', async () => {
197
+
198
+ const tester = new UnitTester()
199
+
200
+ tester.set('allowShortSelling', true)
201
+ tester.answer('segment0', 'hasBeenRenamed.stock.NAKD', false)
202
+
203
+ await tester.test(
204
+ // Short sell 100 NAKD for $1000 with $5 fee.
205
+ [
206
+ {
207
+ reason: 'trade',
208
+ type: 'currency',
209
+ asset: 'USD',
210
+ amount: 1000
211
+ },
212
+ {
213
+ reason: 'trade',
214
+ type: 'stock',
215
+ asset: 'NAKD',
216
+ amount: -100
217
+ },
218
+ {
219
+ reason: 'fee',
220
+ type: 'currency',
221
+ asset: 'USD',
222
+ amount: 5
223
+ }
224
+ ],
225
+ [[
226
+ {
227
+ account: 'trade.currency.USD',
228
+ amount: 99500,
229
+ data: {
230
+ currency: 'USD',
231
+ currencyValue: 99500,
232
+ rates: {
233
+ USD: 1,
234
+ },
235
+ },
236
+ description: 'Short selling -100 NAKD',
237
+ },
238
+ {
239
+ account: 'trade.short.NAKD',
240
+ amount: -100000,
241
+ data: {
242
+ currency: 'USD',
243
+ currencyValue: -100000,
244
+ rates: {
245
+ USD: 1,
246
+ },
247
+ stock: {
248
+ change: {
249
+ NAKD: {
250
+ amount: -100,
251
+ value: -100000,
252
+ },
253
+ },
254
+ },
255
+ },
256
+ description: 'Short selling -100 NAKD',
257
+ },
258
+ {
259
+ account: 'fee.currency.USD',
260
+ amount: 500,
261
+ data: {
262
+ currency: 'USD',
263
+ currencyValue: 500,
264
+ rates: {
265
+ USD: 1,
266
+ },
267
+ },
268
+ description: 'Short selling -100 NAKD',
269
+ },
270
+ ]], [
271
+ // Buy 100 NAKD back for $900 and $5 fee.
272
+ {
273
+ reason: 'trade',
274
+ type: 'currency',
275
+ asset: 'USD',
276
+ amount: -900
277
+ },
278
+ {
279
+ reason: 'trade',
280
+ type: 'stock',
281
+ asset: 'NAKD',
282
+ amount: 100
283
+ },
284
+ {
285
+ reason: 'fee',
286
+ type: 'currency',
287
+ asset: 'USD',
288
+ amount: 5
289
+ }
290
+ ], [[
291
+ {
292
+ account: 'trade.currency.USD',
293
+ amount: -90500,
294
+ data: {
295
+ currency: 'USD',
296
+ currencyValue: -90500,
297
+ rates: {
298
+ USD: 1,
299
+ },
300
+ },
301
+ description: 'Closing short position +100 NAKD',
302
+ },
303
+ {
304
+ account: 'trade.short.NAKD',
305
+ amount: 100000,
306
+ data: {
307
+ currency: 'USD',
308
+ currencyValue: 100000,
309
+ rates: {
310
+ USD: 1,
311
+ },
312
+ stock: {
313
+ change: {
314
+ NAKD: {
315
+ amount: 100,
316
+ value: 100000,
317
+ },
318
+ },
319
+ },
320
+ },
321
+ description: 'Closing short position +100 NAKD',
322
+ },
323
+ {
324
+ account: 'fee.currency.USD',
325
+ amount: 500,
326
+ data: {
327
+ currency: 'USD',
328
+ currencyValue: 500,
329
+ rates: {
330
+ USD: 1,
331
+ },
332
+ },
333
+ description: 'Closing short position +100 NAKD',
334
+ },
335
+ {
336
+ account: 'income.statement.TRADE_PROFIT_SHORT',
337
+ amount: -10000,
338
+ data: {
339
+ currency: 'USD',
340
+ currencyValue: -10000,
341
+ rates: {
342
+ USD: 1,
343
+ },
344
+ },
345
+ description: 'Closing short position +100 NAKD',
346
+ },
347
+ ]],
348
+ )
349
+
350
+ expect(tester.get('trade.currency.USD')).toBe(9000)
351
+ expect(tester.get('fee.currency.USD')).toBe(1000)
352
+ expect(tester.get('income.statement.TRADE_PROFIT_SHORT')).toBe(-10000)
353
+ expect(tester.get('trade.short.NAKD')).toBe(0)
354
+ })
@@ -0,0 +1,197 @@
1
+ import { UnitTester } from '../src/testing'
2
+
3
+ test('Use partly debt to buy assets', async () => {
4
+
5
+ const tester = new UnitTester()
6
+
7
+ tester.addMoney('trade.currency.EUR', 10000)
8
+ // Set up debt account.
9
+ tester.set('account.debt.currency.EUR', '8001')
10
+
11
+ await tester.test(
12
+ // Buy 2.0 ETH for 200€ when we have only 100€ on the account.
13
+ [
14
+ {
15
+ reason: 'trade',
16
+ type: 'currency',
17
+ asset: 'EUR',
18
+ amount: -200
19
+ },
20
+ {
21
+ reason: 'trade',
22
+ type: 'crypto',
23
+ asset: 'ETH',
24
+ amount: 2.0
25
+ },
26
+ ], [[
27
+ {
28
+ account: 'trade.currency.EUR',
29
+ amount: -10000,
30
+ description: 'Buy +2 ETH',
31
+ },
32
+ {
33
+ account: 'trade.crypto.ETH',
34
+ amount: 20000,
35
+ data: {
36
+ stock: {
37
+ change: {
38
+ ETH: {
39
+ amount: 2,
40
+ value: 20000,
41
+ },
42
+ },
43
+ },
44
+ },
45
+ description: 'Buy +2 ETH',
46
+ },
47
+ {
48
+ account: 'debt.currency.EUR',
49
+ amount: -10000,
50
+ description: 'Buy +2 ETH',
51
+ },
52
+ ]]
53
+ )
54
+
55
+ expect(tester.get('trade.currency.EUR')).toBe(0)
56
+ expect(tester.get('debt.currency.EUR')).toBe(-10000)
57
+ expect(tester.get('trade.crypto.ETH')).toBe(20000)
58
+ })
59
+
60
+ test('Use all debt to buy assets', async () => {
61
+
62
+ const tester = new UnitTester()
63
+
64
+ tester.addMoney('trade.currency.EUR', 0)
65
+ // Set up debt account.
66
+ tester.set('account.debt.currency.EUR', '8001')
67
+
68
+ await tester.test(
69
+ // Buy 2.0 ETH for 200€ when we have only 0€ on the account.
70
+ [
71
+ {
72
+ reason: 'trade',
73
+ type: 'currency',
74
+ asset: 'EUR',
75
+ amount: -200
76
+ },
77
+ {
78
+ reason: 'trade',
79
+ type: 'crypto',
80
+ asset: 'ETH',
81
+ amount: 2.0
82
+ },
83
+ ], [[
84
+ {
85
+ account: 'debt.currency.EUR',
86
+ amount: -20000,
87
+ description: 'Buy +2 ETH',
88
+ },
89
+ {
90
+ account: 'trade.crypto.ETH',
91
+ amount: 20000,
92
+ data: {
93
+ stock: {
94
+ change: {
95
+ ETH: {
96
+ amount: 2,
97
+ value: 20000,
98
+ },
99
+ },
100
+ },
101
+ },
102
+ description: 'Buy +2 ETH',
103
+ },
104
+ ]]
105
+ )
106
+
107
+ expect(tester.get('trade.currency.EUR')).toBe(0)
108
+ expect(tester.get('debt.currency.EUR')).toBe(-20000)
109
+ expect(tester.get('trade.crypto.ETH')).toBe(20000)
110
+ })
111
+
112
+ test('Pay back debt more than fully', async () => {
113
+
114
+ const tester = new UnitTester()
115
+
116
+ tester.set('account.debt.currency.EUR', '8001')
117
+ tester.addMoney('debt.currency.EUR', -10000)
118
+
119
+ await tester.test(
120
+ // Deposit 200€ to account having -100€ debt.
121
+ [
122
+ {
123
+ reason: 'deposit',
124
+ type: 'external',
125
+ asset: 'EUR',
126
+ amount: -200
127
+ },
128
+ {
129
+ reason: 'deposit',
130
+ type: 'currency',
131
+ asset: 'EUR',
132
+ amount: 200
133
+ }
134
+ ], [[
135
+ {
136
+ account: 'deposit.external.EUR',
137
+ amount: -20000,
138
+ description: 'Deposit to Coinbase service',
139
+ },
140
+ {
141
+ account: 'deposit.currency.EUR',
142
+ amount: 10000,
143
+ description: 'Deposit to Coinbase service',
144
+ },
145
+ {
146
+ account: 'debt.currency.EUR',
147
+ amount: 10000,
148
+ description: 'Deposit to Coinbase service',
149
+ }
150
+ ]]
151
+ )
152
+
153
+ expect(tester.get('deposit.external.EUR')).toBe(-20000)
154
+ expect(tester.get('deposit.currency.EUR')).toBe(10000)
155
+ expect(tester.get('debt.currency.EUR')).toBe(0)
156
+ })
157
+
158
+ test('Pay back partial debt', async () => {
159
+
160
+ const tester = new UnitTester()
161
+
162
+ tester.set('account.debt.currency.EUR', '8001')
163
+ tester.addMoney('debt.currency.EUR', -30000)
164
+
165
+ await tester.test(
166
+ // Deposit 200€ to account having -300€ debt.
167
+ [
168
+ {
169
+ reason: 'deposit',
170
+ type: 'external',
171
+ asset: 'EUR',
172
+ amount: -200
173
+ },
174
+ {
175
+ reason: 'deposit',
176
+ type: 'currency',
177
+ asset: 'EUR',
178
+ amount: 200
179
+ }
180
+ ], [[
181
+ {
182
+ account: 'deposit.external.EUR',
183
+ amount: -20000,
184
+ description: 'Deposit to Coinbase service',
185
+ },
186
+ {
187
+ account: 'debt.currency.EUR',
188
+ amount: 20000,
189
+ description: 'Deposit to Coinbase service',
190
+ }
191
+ ]]
192
+ )
193
+
194
+ expect(tester.get('deposit.external.EUR')).toBe(-20000)
195
+ expect(tester.get('deposit.currency.EUR')).toBe(0)
196
+ expect(tester.get('debt.currency.EUR')).toBe(-10000)
197
+ })
@@ -0,0 +1,181 @@
1
+ import { Asset } from '@dataplug/tasenor-common'
2
+ import { UnitTester } from '../src/testing'
3
+
4
+ test('Handle complex multipart dividend', async () => {
5
+
6
+ const tester = new UnitTester()
7
+
8
+ tester.set('account.dividend.currency.USD', '5000')
9
+ tester.set('account.income.statement.LISTED_CASH_DIVIDEND', '5001')
10
+ tester.set('account.tax.statement.WITHHOLDING_TAX', '6000')
11
+
12
+ await tester.test([
13
+ {
14
+ reason: 'dividend',
15
+ type: 'currency',
16
+ asset: 'USD',
17
+ amount: null,
18
+ data: {
19
+ text: 'CORR PRA(US21870U3041) Cash Dividend USD 0.460938 per Share (Ordinary Dividend)'
20
+ }
21
+ },
22
+ {
23
+ reason: 'income',
24
+ type: 'statement',
25
+ asset: 'LISTED_CASH_DIVIDEND',
26
+ data: {
27
+ text: 'CORR PRA(US21870U3041) Cash Dividend USD 0.460938 per Share (Ordinary Dividend)',
28
+ currency: 'USD',
29
+ currencyValue: -8712,
30
+ count: 189,
31
+ asset: 'CORR PRA' as Asset as Asset,
32
+ perAsset: 0.460938,
33
+ rates: {
34
+ USD: 0.8929
35
+ }
36
+ },
37
+ value: -7779
38
+ },
39
+ {
40
+ reason: 'dividend',
41
+ type: 'currency',
42
+ asset: 'USD',
43
+ amount: null,
44
+ data: {
45
+ text: 'CORR PRA(US21870U3041) Payment in Lieu of Dividend (Ordinary Dividend)'
46
+ }
47
+ },
48
+ {
49
+ reason: 'income',
50
+ type: 'statement',
51
+ asset: 'LISTED_CASH_DIVIDEND',
52
+ data: {
53
+ text: 'CORR PRA(US21870U3041) Payment in Lieu of Dividend (Ordinary Dividend)',
54
+ currency: 'USD',
55
+ currencyValue: -507,
56
+ count: 1,
57
+ asset: 'CORR PRA' as Asset as Asset,
58
+ perAsset: 5.07,
59
+ rates: {
60
+ USD: 0.8929
61
+ }
62
+ },
63
+ value: -453
64
+ },
65
+ {
66
+ reason: 'tax',
67
+ type: 'statement',
68
+ asset: 'WITHHOLDING_TAX',
69
+ data: {
70
+ text: 'CORR PRA(US21870U3041) Cash Dividend USD 0.460938 per Share - US Tax',
71
+ currency: 'USD',
72
+ currencyValue: 1307,
73
+ rates: {
74
+ USD: 0.8929
75
+ }
76
+ },
77
+ value: 1167
78
+ },
79
+ {
80
+ reason: 'tax',
81
+ type: 'statement',
82
+ asset: 'WITHHOLDING_TAX',
83
+ data: {
84
+ text: 'CORR PRA(US21870U3041) Payment in Lieu of Dividend - US Tax',
85
+ currency: 'USD',
86
+ currencyValue: 76,
87
+ rates: {
88
+ USD: 0.8929
89
+ }
90
+ },
91
+ value: 68
92
+ }
93
+ ],
94
+ [[
95
+ {
96
+ account: 'dividend.currency.USD',
97
+ amount: 6612,
98
+ data: {
99
+ currency: 'USD',
100
+ currencyValue: 7405,
101
+ rates: {
102
+ USD: 0.8929,
103
+ },
104
+ text: 'CORR PRA(US21870U3041) Cash Dividend USD 0.460938 per Share (Ordinary Dividend)',
105
+ },
106
+ description: 'Dividend CORR PRA',
107
+ },
108
+ {
109
+ account: 'income.statement.LISTED_CASH_DIVIDEND',
110
+ amount: -7779,
111
+ data: {
112
+ asset: 'CORR PRA' as Asset,
113
+ count: 189,
114
+ currency: 'USD',
115
+ currencyValue: -8712,
116
+ perAsset: 0.460938,
117
+ rates: {
118
+ USD: 0.8929,
119
+ },
120
+ text: 'CORR PRA(US21870U3041) Cash Dividend USD 0.460938 per Share (Ordinary Dividend)',
121
+ },
122
+ description: 'Dividend CORR PRA',
123
+ },
124
+ {
125
+ account: 'dividend.currency.USD',
126
+ amount: 385,
127
+ data: {
128
+ currency: 'USD',
129
+ currencyValue: 431,
130
+ rates: {
131
+ USD: 0.8929,
132
+ },
133
+ text: 'CORR PRA(US21870U3041) Payment in Lieu of Dividend (Ordinary Dividend)',
134
+ },
135
+ description: 'Dividend CORR PRA',
136
+ },
137
+ {
138
+ account: 'income.statement.LISTED_CASH_DIVIDEND',
139
+ amount: -453,
140
+ data: {
141
+ asset: 'CORR PRA' as Asset,
142
+ count: 1,
143
+ currency: 'USD',
144
+ currencyValue: -507,
145
+ perAsset: 5.07,
146
+ rates: {
147
+ USD: 0.8929,
148
+ },
149
+ text: 'CORR PRA(US21870U3041) Payment in Lieu of Dividend (Ordinary Dividend)',
150
+ },
151
+ description: 'Dividend CORR PRA',
152
+ },
153
+ {
154
+ account: 'tax.statement.WITHHOLDING_TAX',
155
+ amount: 1167,
156
+ data: {
157
+ currency: 'USD',
158
+ currencyValue: 1307,
159
+ rates: {
160
+ USD: 0.8929,
161
+ },
162
+ text: 'CORR PRA(US21870U3041) Cash Dividend USD 0.460938 per Share - US Tax',
163
+ },
164
+ description: 'Dividend CORR PRA',
165
+ },
166
+ {
167
+ account: 'tax.statement.WITHHOLDING_TAX',
168
+ amount: 68,
169
+ data: {
170
+ currency: 'USD',
171
+ currencyValue: 76,
172
+ rates: {
173
+ USD: 0.8929,
174
+ },
175
+ text: 'CORR PRA(US21870U3041) Payment in Lieu of Dividend - US Tax',
176
+ },
177
+ description: 'Dividend CORR PRA',
178
+ },
179
+ ]]
180
+ )
181
+ })