@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.
- package/.eslintrc.js +4 -0
- package/LICENSE +21 -0
- package/dist/tasenor-common-node/src/cli.d.ts +81 -0
- package/dist/tasenor-common-node/src/cli.js +242 -0
- package/dist/tasenor-common-node/src/cli.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/account.d.ts +12 -0
- package/dist/tasenor-common-node/src/commands/account.js +58 -0
- package/dist/tasenor-common-node/src/commands/account.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/balance.d.ts +11 -0
- package/dist/tasenor-common-node/src/commands/balance.js +117 -0
- package/dist/tasenor-common-node/src/commands/balance.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/db.d.ts +14 -0
- package/dist/tasenor-common-node/src/commands/db.js +69 -0
- package/dist/tasenor-common-node/src/commands/db.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/entry.d.ts +13 -0
- package/dist/tasenor-common-node/src/commands/entry.js +106 -0
- package/dist/tasenor-common-node/src/commands/entry.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/import.d.ts +17 -0
- package/dist/tasenor-common-node/src/commands/import.js +140 -0
- package/dist/tasenor-common-node/src/commands/import.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/importer.d.ts +13 -0
- package/dist/tasenor-common-node/src/commands/importer.js +71 -0
- package/dist/tasenor-common-node/src/commands/importer.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/index.d.ts +191 -0
- package/dist/tasenor-common-node/src/commands/index.js +482 -0
- package/dist/tasenor-common-node/src/commands/index.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/period.d.ts +12 -0
- package/dist/tasenor-common-node/src/commands/period.js +48 -0
- package/dist/tasenor-common-node/src/commands/period.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/plugin.d.ts +15 -0
- package/dist/tasenor-common-node/src/commands/plugin.js +78 -0
- package/dist/tasenor-common-node/src/commands/plugin.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/report.d.ts +11 -0
- package/dist/tasenor-common-node/src/commands/report.js +96 -0
- package/dist/tasenor-common-node/src/commands/report.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/settings.d.ts +10 -0
- package/dist/tasenor-common-node/src/commands/settings.js +64 -0
- package/dist/tasenor-common-node/src/commands/settings.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/stock.d.ts +8 -0
- package/dist/tasenor-common-node/src/commands/stock.js +73 -0
- package/dist/tasenor-common-node/src/commands/stock.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/tag.d.ts +13 -0
- package/dist/tasenor-common-node/src/commands/tag.js +89 -0
- package/dist/tasenor-common-node/src/commands/tag.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/tx.d.ts +12 -0
- package/dist/tasenor-common-node/src/commands/tx.js +81 -0
- package/dist/tasenor-common-node/src/commands/tx.js.map +1 -0
- package/dist/tasenor-common-node/src/commands/user.d.ts +12 -0
- package/dist/tasenor-common-node/src/commands/user.js +52 -0
- package/dist/tasenor-common-node/src/commands/user.js.map +1 -0
- package/dist/tasenor-common-node/src/database/BookkeeperImporter.d.ts +77 -0
- package/dist/tasenor-common-node/src/database/BookkeeperImporter.js +343 -0
- package/dist/tasenor-common-node/src/database/BookkeeperImporter.js.map +1 -0
- package/dist/tasenor-common-node/src/database/DB.d.ts +51 -0
- package/dist/tasenor-common-node/src/database/DB.js +354 -0
- package/dist/tasenor-common-node/src/database/DB.js.map +1 -0
- package/dist/tasenor-common-node/src/database/index.d.ts +7 -0
- package/dist/tasenor-common-node/src/database/index.js +8 -0
- package/dist/tasenor-common-node/src/database/index.js.map +1 -0
- package/dist/tasenor-common-node/src/doccer.d.ts +29 -0
- package/dist/tasenor-common-node/src/doccer.js +30 -0
- package/dist/tasenor-common-node/src/doccer.js.map +1 -0
- package/dist/tasenor-common-node/src/error.d.ts +30 -0
- package/dist/tasenor-common-node/src/error.js +35 -0
- package/dist/tasenor-common-node/src/error.js.map +1 -0
- package/dist/tasenor-common-node/src/export/Exporter.d.ts +69 -0
- package/dist/tasenor-common-node/src/export/Exporter.js +123 -0
- package/dist/tasenor-common-node/src/export/Exporter.js.map +1 -0
- package/dist/tasenor-common-node/src/export/TasenorExporter.d.ts +55 -0
- package/dist/tasenor-common-node/src/export/TasenorExporter.js +135 -0
- package/dist/tasenor-common-node/src/export/TasenorExporter.js.map +1 -0
- package/dist/tasenor-common-node/src/export/TilitinExporter.d.ts +71 -0
- package/dist/tasenor-common-node/src/export/TilitinExporter.js +290 -0
- package/dist/tasenor-common-node/src/export/TilitinExporter.js.map +1 -0
- package/dist/tasenor-common-node/src/export/index.d.ts +8 -0
- package/dist/tasenor-common-node/src/export/index.js +9 -0
- package/dist/tasenor-common-node/src/export/index.js.map +1 -0
- package/dist/tasenor-common-node/src/import/TextFileProcessHandler.d.ts +104 -0
- package/dist/tasenor-common-node/src/import/TextFileProcessHandler.js +354 -0
- package/dist/tasenor-common-node/src/import/TextFileProcessHandler.js.map +1 -0
- package/dist/tasenor-common-node/src/import/TransactionImportConnector.d.ts +38 -0
- package/dist/tasenor-common-node/src/import/TransactionImportConnector.js +27 -0
- package/dist/tasenor-common-node/src/import/TransactionImportConnector.js.map +1 -0
- package/dist/tasenor-common-node/src/import/TransactionImportHandler.d.ts +173 -0
- package/dist/tasenor-common-node/src/import/TransactionImportHandler.js +733 -0
- package/dist/tasenor-common-node/src/import/TransactionImportHandler.js.map +1 -0
- package/dist/tasenor-common-node/src/import/TransactionRules.d.ts +238 -0
- package/dist/tasenor-common-node/src/import/TransactionRules.js +522 -0
- package/dist/tasenor-common-node/src/import/TransactionRules.js.map +1 -0
- package/dist/tasenor-common-node/src/import/TransactionUI.d.ts +181 -0
- package/dist/tasenor-common-node/src/import/TransactionUI.js +482 -0
- package/dist/tasenor-common-node/src/import/TransactionUI.js.map +1 -0
- package/dist/tasenor-common-node/src/import/TransferAnalyzer.d.ts +324 -0
- package/dist/tasenor-common-node/src/import/TransferAnalyzer.js +1379 -0
- package/dist/tasenor-common-node/src/import/TransferAnalyzer.js.map +1 -0
- package/dist/tasenor-common-node/src/import/index.d.ts +11 -0
- package/dist/tasenor-common-node/src/import/index.js +12 -0
- package/dist/tasenor-common-node/src/import/index.js.map +1 -0
- package/dist/tasenor-common-node/src/index.d.ts +12 -0
- package/dist/tasenor-common-node/src/index.js +13 -0
- package/dist/tasenor-common-node/src/index.js.map +1 -0
- package/dist/tasenor-common-node/src/net/crypto.d.ts +33 -0
- package/dist/tasenor-common-node/src/net/crypto.js +63 -0
- package/dist/tasenor-common-node/src/net/crypto.js.map +1 -0
- package/dist/tasenor-common-node/src/net/git.d.ts +49 -0
- package/dist/tasenor-common-node/src/net/git.js +137 -0
- package/dist/tasenor-common-node/src/net/git.js.map +1 -0
- package/dist/tasenor-common-node/src/net/index.d.ts +10 -0
- package/dist/tasenor-common-node/src/net/index.js +11 -0
- package/dist/tasenor-common-node/src/net/index.js.map +1 -0
- package/dist/tasenor-common-node/src/net/middleware.d.ts +61 -0
- package/dist/tasenor-common-node/src/net/middleware.js +220 -0
- package/dist/tasenor-common-node/src/net/middleware.js.map +1 -0
- package/dist/tasenor-common-node/src/net/tokens.d.ts +50 -0
- package/dist/tasenor-common-node/src/net/tokens.js +141 -0
- package/dist/tasenor-common-node/src/net/tokens.js.map +1 -0
- package/dist/tasenor-common-node/src/net/vault.d.ts +67 -0
- package/dist/tasenor-common-node/src/net/vault.js +145 -0
- package/dist/tasenor-common-node/src/net/vault.js.map +1 -0
- package/dist/tasenor-common-node/src/plugins/BackendPlugin.d.ts +91 -0
- package/dist/tasenor-common-node/src/plugins/BackendPlugin.js +165 -0
- package/dist/tasenor-common-node/src/plugins/BackendPlugin.js.map +1 -0
- package/dist/tasenor-common-node/src/plugins/DataPlugin.d.ts +13 -0
- package/dist/tasenor-common-node/src/plugins/DataPlugin.js +26 -0
- package/dist/tasenor-common-node/src/plugins/DataPlugin.js.map +1 -0
- package/dist/tasenor-common-node/src/plugins/ImportPlugin.d.ts +188 -0
- package/dist/tasenor-common-node/src/plugins/ImportPlugin.js +204 -0
- package/dist/tasenor-common-node/src/plugins/ImportPlugin.js.map +1 -0
- package/dist/tasenor-common-node/src/plugins/ReportPlugin.d.ts +132 -0
- package/dist/tasenor-common-node/src/plugins/ReportPlugin.js +393 -0
- package/dist/tasenor-common-node/src/plugins/ReportPlugin.js.map +1 -0
- package/dist/tasenor-common-node/src/plugins/SchemePlugin.d.ts +34 -0
- package/dist/tasenor-common-node/src/plugins/SchemePlugin.js +47 -0
- package/dist/tasenor-common-node/src/plugins/SchemePlugin.js.map +1 -0
- package/dist/tasenor-common-node/src/plugins/ServicePlugin.d.ts +80 -0
- package/dist/tasenor-common-node/src/plugins/ServicePlugin.js +168 -0
- package/dist/tasenor-common-node/src/plugins/ServicePlugin.js.map +1 -0
- package/dist/tasenor-common-node/src/plugins/ToolPlugin.d.ts +27 -0
- package/dist/tasenor-common-node/src/plugins/ToolPlugin.js +37 -0
- package/dist/tasenor-common-node/src/plugins/ToolPlugin.js.map +1 -0
- package/dist/tasenor-common-node/src/plugins/index.d.ts +13 -0
- package/dist/tasenor-common-node/src/plugins/index.js +14 -0
- package/dist/tasenor-common-node/src/plugins/index.js.map +1 -0
- package/dist/tasenor-common-node/src/plugins/plugins.d.ts +101 -0
- package/dist/tasenor-common-node/src/plugins/plugins.js +292 -0
- package/dist/tasenor-common-node/src/plugins/plugins.js.map +1 -0
- package/dist/tasenor-common-node/src/process/Process.d.ts +108 -0
- package/dist/tasenor-common-node/src/process/Process.js +335 -0
- package/dist/tasenor-common-node/src/process/Process.js.map +1 -0
- package/dist/tasenor-common-node/src/process/ProcessConnector.d.ts +24 -0
- package/dist/tasenor-common-node/src/process/ProcessConnector.js +28 -0
- package/dist/tasenor-common-node/src/process/ProcessConnector.js.map +1 -0
- package/dist/tasenor-common-node/src/process/ProcessFile.d.ts +69 -0
- package/dist/tasenor-common-node/src/process/ProcessFile.js +145 -0
- package/dist/tasenor-common-node/src/process/ProcessFile.js.map +1 -0
- package/dist/tasenor-common-node/src/process/ProcessHandler.d.ts +60 -0
- package/dist/tasenor-common-node/src/process/ProcessHandler.js +73 -0
- package/dist/tasenor-common-node/src/process/ProcessHandler.js.map +1 -0
- package/dist/tasenor-common-node/src/process/ProcessStep.d.ts +52 -0
- package/dist/tasenor-common-node/src/process/ProcessStep.js +78 -0
- package/dist/tasenor-common-node/src/process/ProcessStep.js.map +1 -0
- package/dist/tasenor-common-node/src/process/ProcessingSystem.d.ts +60 -0
- package/dist/tasenor-common-node/src/process/ProcessingSystem.js +182 -0
- package/dist/tasenor-common-node/src/process/ProcessingSystem.js.map +1 -0
- package/dist/tasenor-common-node/src/process/index.d.ts +11 -0
- package/dist/tasenor-common-node/src/process/index.js +12 -0
- package/dist/tasenor-common-node/src/process/index.js.map +1 -0
- package/dist/tasenor-common-node/src/reports/conversions.d.ts +8 -0
- package/dist/tasenor-common-node/src/reports/conversions.js +47 -0
- package/dist/tasenor-common-node/src/reports/conversions.js.map +1 -0
- package/dist/tasenor-common-node/src/reports/index.d.ts +6 -0
- package/dist/tasenor-common-node/src/reports/index.js +7 -0
- package/dist/tasenor-common-node/src/reports/index.js.map +1 -0
- package/dist/tasenor-common-node/src/server/ISPDemoServer.d.ts +43 -0
- package/dist/tasenor-common-node/src/server/ISPDemoServer.js +112 -0
- package/dist/tasenor-common-node/src/server/ISPDemoServer.js.map +1 -0
- package/dist/tasenor-common-node/src/server/api.d.ts +15 -0
- package/dist/tasenor-common-node/src/server/api.js +27 -0
- package/dist/tasenor-common-node/src/server/api.js.map +1 -0
- package/dist/tasenor-common-node/src/server/index.d.ts +7 -0
- package/dist/tasenor-common-node/src/server/index.js +8 -0
- package/dist/tasenor-common-node/src/server/index.js.map +1 -0
- package/dist/tasenor-common-node/src/server/router.d.ts +5 -0
- package/dist/tasenor-common-node/src/server/router.js +37 -0
- package/dist/tasenor-common-node/src/server/router.js.map +1 -0
- package/dist/tasenor-common-node/src/system.d.ts +27 -0
- package/dist/tasenor-common-node/src/system.js +95 -0
- package/dist/tasenor-common-node/src/system.js.map +1 -0
- package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.d.ts +21 -0
- package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.js +33 -0
- package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.js.map +1 -0
- package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.d.ts +24 -0
- package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.js +68 -0
- package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.js.map +1 -0
- package/dist/tasenor-common-node/src/testing/UnitTester.d.ts +64 -0
- package/dist/tasenor-common-node/src/testing/UnitTester.js +199 -0
- package/dist/tasenor-common-node/src/testing/UnitTester.js.map +1 -0
- package/dist/tasenor-common-node/src/testing/index.d.ts +4 -0
- package/dist/tasenor-common-node/src/testing/index.js +5 -0
- package/dist/tasenor-common-node/src/testing/index.js.map +1 -0
- package/dist/tasenor-common-node/src/testing/test-handlers.d.ts +13 -0
- package/dist/tasenor-common-node/src/testing/test-handlers.js +52 -0
- package/dist/tasenor-common-node/src/testing/test-handlers.js.map +1 -0
- package/dist/tasenor-common-node/tests/TransactionRules.spec.d.ts +1 -0
- package/dist/tasenor-common-node/tests/TransactionRules.spec.js +64 -0
- package/dist/tasenor-common-node/tests/TransactionRules.spec.js.map +1 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.d.ts +1 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.js +80 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.js.map +1 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.d.ts +1 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.js +342 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.js.map +1 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.d.ts +1 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.js +174 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.js.map +1 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.d.ts +1 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.js +175 -0
- package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.js.map +1 -0
- package/dist/tasenor-common-node/tests/password.spec.d.ts +1 -0
- package/dist/tasenor-common-node/tests/password.spec.js +8 -0
- package/dist/tasenor-common-node/tests/password.spec.js.map +1 -0
- package/dist/tasenor-common-node/tests/tokens.spec.d.ts +1 -0
- package/dist/tasenor-common-node/tests/tokens.spec.js +49 -0
- package/dist/tasenor-common-node/tests/tokens.spec.js.map +1 -0
- package/dist/tasenor-common-node/tests/vault.spec.d.ts +1 -0
- package/dist/tasenor-common-node/tests/vault.spec.js +19 -0
- package/dist/tasenor-common-node/tests/vault.spec.js.map +1 -0
- package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.d.ts +11 -0
- package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.js +30 -0
- package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.js.map +1 -0
- package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.d.ts +5 -0
- package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.js +350 -0
- package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.js.map +1 -0
- package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.d.ts +23 -0
- package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.js +83 -0
- package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.js.map +1 -0
- package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.d.ts +28 -0
- package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.js +340 -0
- package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.js.map +1 -0
- package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.d.ts +11 -0
- package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.js +39 -0
- package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.js.map +1 -0
- package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.d.ts +17 -0
- package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.js +66 -0
- package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.js.map +1 -0
- package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.d.ts +13 -0
- package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.js +241 -0
- package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.js.map +1 -0
- package/jest.config.js +1 -0
- package/package.json +62 -0
- package/src/cli.ts +267 -0
- package/src/commands/account.ts +69 -0
- package/src/commands/balance.ts +131 -0
- package/src/commands/db.ts +84 -0
- package/src/commands/entry.ts +117 -0
- package/src/commands/import.ts +160 -0
- package/src/commands/importer.ts +84 -0
- package/src/commands/index.ts +534 -0
- package/src/commands/period.ts +59 -0
- package/src/commands/plugin.ts +95 -0
- package/src/commands/report.ts +113 -0
- package/src/commands/settings.ts +75 -0
- package/src/commands/stock.ts +80 -0
- package/src/commands/tag.ts +102 -0
- package/src/commands/tx.ts +93 -0
- package/src/commands/user.ts +65 -0
- package/src/database/BookkeeperImporter.ts +358 -0
- package/src/database/DB.ts +396 -0
- package/src/database/index.ts +7 -0
- package/src/doccer.ts +29 -0
- package/src/error.ts +32 -0
- package/src/export/Exporter.ts +136 -0
- package/src/export/TasenorExporter.ts +144 -0
- package/src/export/TilitinExporter.ts +302 -0
- package/src/export/index.ts +8 -0
- package/src/import/TextFileProcessHandler.ts +384 -0
- package/src/import/TransactionImportConnector.ts +65 -0
- package/src/import/TransactionImportHandler.ts +819 -0
- package/src/import/TransactionRules.ts +570 -0
- package/src/import/TransactionUI.ts +520 -0
- package/src/import/TransferAnalyzer.ts +1450 -0
- package/src/import/index.ts +11 -0
- package/src/index.ts +12 -0
- package/src/net/crypto.ts +69 -0
- package/src/net/git.ts +151 -0
- package/src/net/index.ts +10 -0
- package/src/net/middleware.ts +261 -0
- package/src/net/tokens.ts +140 -0
- package/src/net/vault.ts +161 -0
- package/src/plugins/BackendPlugin.ts +188 -0
- package/src/plugins/DataPlugin.ts +29 -0
- package/src/plugins/ImportPlugin.ts +211 -0
- package/src/plugins/ReportPlugin.ts +443 -0
- package/src/plugins/SchemePlugin.ts +56 -0
- package/src/plugins/ServicePlugin.ts +188 -0
- package/src/plugins/ToolPlugin.ts +44 -0
- package/src/plugins/index.ts +13 -0
- package/src/plugins/plugins.ts +345 -0
- package/src/process/Process.ts +368 -0
- package/src/process/ProcessConnector.ts +45 -0
- package/src/process/ProcessFile.ts +169 -0
- package/src/process/ProcessHandler.ts +94 -0
- package/src/process/ProcessStep.ts +100 -0
- package/src/process/ProcessingSystem.ts +202 -0
- package/src/process/index.ts +11 -0
- package/src/reports/conversions.ts +52 -0
- package/src/reports/index.ts +6 -0
- package/src/server/ISPDemoServer.ts +122 -0
- package/src/server/api.ts +37 -0
- package/src/server/index.ts +7 -0
- package/src/server/router.ts +60 -0
- package/src/system.ts +96 -0
- package/src/testing/ProcessingSystemMock.ts +45 -0
- package/src/testing/UnitTestImportConnector.ts +86 -0
- package/src/testing/UnitTester.ts +231 -0
- package/src/testing/index.ts +4 -0
- package/src/testing/test-handlers.ts +55 -0
- package/tests/TransactionRules.spec.ts +73 -0
- package/tests/TransferAnalyzer-account-address.spec.ts +87 -0
- package/tests/TransferAnalyzer-buying-and-selling.spec.ts +354 -0
- package/tests/TransferAnalyzer-loans.spec.ts +197 -0
- package/tests/TransferAnalyzer-multiple-null-amounts.spec.ts +181 -0
- package/tests/password.spec.ts +8 -0
- package/tests/tokens.spec.ts +52 -0
- package/tests/vault.spec.ts +20 -0
- package/tsconfig.json +13 -0
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import { data2csv } from '..';
|
|
4
|
+
import dayjs from 'dayjs';
|
|
5
|
+
import quarterOfYear from 'dayjs/plugin/quarterOfYear';
|
|
6
|
+
import { BackendPlugin } from './BackendPlugin';
|
|
7
|
+
dayjs.extend(quarterOfYear);
|
|
8
|
+
/**
|
|
9
|
+
* A plugin providing one or more reports.
|
|
10
|
+
*/
|
|
11
|
+
export class ReportPlugin extends BackendPlugin {
|
|
12
|
+
formats;
|
|
13
|
+
// Is set, allow this report only on DBs having those accounting schemes.
|
|
14
|
+
schemes;
|
|
15
|
+
constructor(...formats) {
|
|
16
|
+
super();
|
|
17
|
+
this.formats = formats;
|
|
18
|
+
this.schemes = undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Read in report struture file.
|
|
22
|
+
*/
|
|
23
|
+
getReportStructure(id, lang) {
|
|
24
|
+
const path = this.filePath(`${id}-${lang}.tsv`);
|
|
25
|
+
if (fs.existsSync(path)) {
|
|
26
|
+
return fs.readFileSync(path).toString('utf-8');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get the list of supported languages.
|
|
31
|
+
*/
|
|
32
|
+
getLanguages() {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if the given report is provided by this plugin.
|
|
37
|
+
* @param id
|
|
38
|
+
*/
|
|
39
|
+
hasReport(id) {
|
|
40
|
+
return this.formats.includes(id);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get the list of report IDs.
|
|
44
|
+
*/
|
|
45
|
+
getFormats(scheme = undefined) {
|
|
46
|
+
if (this.schemes === undefined || scheme === undefined || this.schemes.has(scheme)) {
|
|
47
|
+
return this.formats;
|
|
48
|
+
}
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Return UI option definitions for the given report.
|
|
53
|
+
* @param id
|
|
54
|
+
*/
|
|
55
|
+
getReportOptions(id) {
|
|
56
|
+
return {};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Convert time stamp or Date to date string YYYY-MM-DD.
|
|
60
|
+
* @param {Number} timestamp
|
|
61
|
+
*/
|
|
62
|
+
time2str(timestamp) {
|
|
63
|
+
if (timestamp === null) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
if (timestamp instanceof Date) {
|
|
67
|
+
timestamp = timestamp.toISOString();
|
|
68
|
+
}
|
|
69
|
+
return timestamp.substr(0, 10);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Construct rendering information from report flags
|
|
73
|
+
* @param flags
|
|
74
|
+
* @returns
|
|
75
|
+
*/
|
|
76
|
+
flags2item(flags) {
|
|
77
|
+
const item = {};
|
|
78
|
+
flags.forEach(flag => {
|
|
79
|
+
if (flag) {
|
|
80
|
+
switch (flag) {
|
|
81
|
+
case 'NEW_PAGE':
|
|
82
|
+
break;
|
|
83
|
+
case 'BREAK':
|
|
84
|
+
item.break = true;
|
|
85
|
+
break;
|
|
86
|
+
case 'BOLD':
|
|
87
|
+
item.bold = true;
|
|
88
|
+
break;
|
|
89
|
+
case 'ITALIC':
|
|
90
|
+
item.italic = true;
|
|
91
|
+
break;
|
|
92
|
+
case 'DETAILS':
|
|
93
|
+
item.accountDetails = true;
|
|
94
|
+
break;
|
|
95
|
+
case 'HIDE_TOTAL':
|
|
96
|
+
item.hideTotal = true;
|
|
97
|
+
break;
|
|
98
|
+
case 'REQUIRED':
|
|
99
|
+
item.required = true;
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
throw new Error(`Cannot recognize report format flag '${flag}'.`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return item;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Construct column definitions for the report.
|
|
110
|
+
* @param id
|
|
111
|
+
* @param entries
|
|
112
|
+
* @param options
|
|
113
|
+
*/
|
|
114
|
+
async getColumns(id, entries, options, settings) {
|
|
115
|
+
if (!options.periods) {
|
|
116
|
+
throw new Error(`Need periods to define columns ${JSON.stringify(options)}`);
|
|
117
|
+
}
|
|
118
|
+
const columns = options.periods.map((period) => {
|
|
119
|
+
return {
|
|
120
|
+
type: 'numeric',
|
|
121
|
+
name: 'period' + period.id,
|
|
122
|
+
title: this.columnTitle(id, period, options)
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
columns.unshift({
|
|
126
|
+
name: 'title',
|
|
127
|
+
title: '',
|
|
128
|
+
type: 'name'
|
|
129
|
+
});
|
|
130
|
+
return columns;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Construct a title for a column.
|
|
134
|
+
* @param id
|
|
135
|
+
* @param period
|
|
136
|
+
* @param options
|
|
137
|
+
*/
|
|
138
|
+
columnTitle(id, period, options) {
|
|
139
|
+
throw new Error(`Report plugin ${this.constructor.name} does not implement columnTitle().`);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Force some options, if needed.
|
|
143
|
+
* @returns
|
|
144
|
+
*/
|
|
145
|
+
forceOptions(options) {
|
|
146
|
+
return {
|
|
147
|
+
negateAssetAndProfit: false,
|
|
148
|
+
addPreviousPeriod: false // A flag to define if the previous period should be displayed for comparison.
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Construct a SQL for the report query.
|
|
153
|
+
* @param db
|
|
154
|
+
* @param options
|
|
155
|
+
* @returns A knex query prepared.
|
|
156
|
+
*/
|
|
157
|
+
async constructSqlQuery(db, options, settings) {
|
|
158
|
+
// Construct value negator.
|
|
159
|
+
let negateSql = '(CASE debit WHEN true THEN 1 ELSE -1 END)';
|
|
160
|
+
if (options.negateAssetAndProfit) {
|
|
161
|
+
negateSql += " * (CASE WHEN account.type IN ('ASSET', 'PROFIT') THEN 1 ELSE -1 END)";
|
|
162
|
+
}
|
|
163
|
+
// Find periods.
|
|
164
|
+
const periodIds = [options.periodId];
|
|
165
|
+
if (options.addPreviousPeriod) {
|
|
166
|
+
const recentPeriods = await db.select('*').from('period').where('id', '<=', options.periodId).orderBy('end_date', 'desc').limit(2);
|
|
167
|
+
if (recentPeriods.length > 1) {
|
|
168
|
+
periodIds.push(recentPeriods[1].id);
|
|
169
|
+
}
|
|
170
|
+
options.periods = recentPeriods; // Save periods for further reference.
|
|
171
|
+
}
|
|
172
|
+
// Build a query basics.
|
|
173
|
+
let sqlQuery = db.select('document.period_id AS periodId', 'document.number AS documentId', 'document.date', 'account.name', 'account.type', 'account.number', db.raw(`CAST(ROUND(${negateSql} * entry.amount * 100) AS BIGINT) AS amount`), 'entry.description')
|
|
174
|
+
.from('entry')
|
|
175
|
+
.leftJoin('account', 'account.id', 'entry.account_id')
|
|
176
|
+
.leftJoin('document', 'document.id', 'entry.document_id')
|
|
177
|
+
.whereIn('document.period_id', periodIds);
|
|
178
|
+
// Limit by account, if given.
|
|
179
|
+
if (options.accountId) {
|
|
180
|
+
sqlQuery = sqlQuery.andWhere('account.id', '=', options.accountId);
|
|
181
|
+
}
|
|
182
|
+
// Tune ordering.
|
|
183
|
+
sqlQuery = (sqlQuery
|
|
184
|
+
.orderBy('document.date')
|
|
185
|
+
.orderBy('document.number')
|
|
186
|
+
.orderBy('document.id')
|
|
187
|
+
.orderBy('entry.row_number'));
|
|
188
|
+
return sqlQuery;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Construct a report data for the report.
|
|
192
|
+
* @param db
|
|
193
|
+
* @param id
|
|
194
|
+
* @param options
|
|
195
|
+
*
|
|
196
|
+
* Resulting entries on data is an array of objects containing:
|
|
197
|
+
* * `tab` Zero originating indentation number.
|
|
198
|
+
* * `error` If true, this row has an error.
|
|
199
|
+
* * `required` If true, this is always shown.
|
|
200
|
+
* * `hideTotal` if true, do not show total.
|
|
201
|
+
* * `bold` if true, show in bold.
|
|
202
|
+
* * `italic` if true, show in italic.
|
|
203
|
+
* * `bigger` if true, show in bigger font.
|
|
204
|
+
* * `fullWidth` if set, the content in column index defined here is expanded to cover all columns.
|
|
205
|
+
* * `useRemainingColumns` if set, extend this column index to use all the rest columns in the row.
|
|
206
|
+
* * `accountDetails` if true, after this are summarized accounts under this entry.
|
|
207
|
+
* * `isAccount` if true, this is an account entry.
|
|
208
|
+
* * `needLocalization` if set, value should be localized, i.e. translated via Localization component in ui.
|
|
209
|
+
* * `name` Title of the entry.
|
|
210
|
+
* * `number` Account number if the entry is an account.
|
|
211
|
+
* * `amounts` An object with entry for each column mapping name of the columnt to the value to display.
|
|
212
|
+
*/
|
|
213
|
+
async renderReport(db, id, options = {}) {
|
|
214
|
+
// Add report forced options.
|
|
215
|
+
Object.assign(options, this.forceOptions(options));
|
|
216
|
+
// Collect settings.
|
|
217
|
+
const settings = (await db('settings').where('name', 'like', `${this.code}.%`).orWhere({ name: 'companyName' }).orWhere({ name: 'companyCode' })).reduce((prev, cur) => ({ ...prev, [cur.name]: cur.value }), {});
|
|
218
|
+
// Find tags.
|
|
219
|
+
const settingName = `${this.code}.tagTypes`;
|
|
220
|
+
if (options.byTags && settings[settingName]) {
|
|
221
|
+
const tags = await db('tags').select('id', 'tag', 'name', 'type', 'order').from('tags').whereIn('type', settings[settingName]).orderBy('order');
|
|
222
|
+
settings.tags = tags;
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
settings.tags = [];
|
|
226
|
+
}
|
|
227
|
+
// Find the formatting text description, if it exist.
|
|
228
|
+
options.format = this.getReportStructure(id, options.lang || 'en');
|
|
229
|
+
// Prepare query.
|
|
230
|
+
const q = await this.constructSqlQuery(db, options, settings);
|
|
231
|
+
let entries = await q;
|
|
232
|
+
// Process big ints.
|
|
233
|
+
for (const entry of entries) {
|
|
234
|
+
entry.amount = parseInt(entry.amount);
|
|
235
|
+
}
|
|
236
|
+
// Apply query filtering.
|
|
237
|
+
entries = this.doFiltering(id, entries, options, settings);
|
|
238
|
+
// We have now relevant entries collected. Use plugin features next.
|
|
239
|
+
const columns = await this.getColumns(id, entries, options, settings);
|
|
240
|
+
let data = this.preProcess(id, entries, options, settings, columns);
|
|
241
|
+
data = this.postProcess(id, data, options, settings, columns);
|
|
242
|
+
const report = {
|
|
243
|
+
format: id,
|
|
244
|
+
columns,
|
|
245
|
+
meta: {
|
|
246
|
+
businessName: settings.companyName,
|
|
247
|
+
businessId: settings.companyCode
|
|
248
|
+
},
|
|
249
|
+
data
|
|
250
|
+
};
|
|
251
|
+
// Do the final conversion, if necessary.
|
|
252
|
+
if (options.csv) {
|
|
253
|
+
return data2csv(report, options);
|
|
254
|
+
}
|
|
255
|
+
return report;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Filter out entries not matching to the report selected parameters.
|
|
259
|
+
* @param id
|
|
260
|
+
* @param entries
|
|
261
|
+
* @param options
|
|
262
|
+
* @param settings
|
|
263
|
+
*/
|
|
264
|
+
doFiltering(id, entries, options, settings) {
|
|
265
|
+
let filter = (entry) => true;
|
|
266
|
+
if (options.quarter1) {
|
|
267
|
+
filter = (entry) => dayjs(entry.date).quarter() <= 1;
|
|
268
|
+
}
|
|
269
|
+
if (options.quarter2) {
|
|
270
|
+
filter = (entry) => dayjs(entry.date).quarter() <= 2;
|
|
271
|
+
}
|
|
272
|
+
if (options.quarter3) {
|
|
273
|
+
filter = (entry) => dayjs(entry.date).quarter() <= 3;
|
|
274
|
+
}
|
|
275
|
+
return entries.filter(filter);
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* This function converts the list of relevant entries to the column report data.
|
|
279
|
+
* @param id
|
|
280
|
+
* @param entries
|
|
281
|
+
* @param options
|
|
282
|
+
* @param columns
|
|
283
|
+
*/
|
|
284
|
+
preProcess(id, entries, options, settings, columns) {
|
|
285
|
+
throw new Error(`Report plugin ${this.constructor.name} does not implement preProcess().`);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Do post processing for report data before sending it.
|
|
289
|
+
* @param id Report type.
|
|
290
|
+
* @param data Calculated report data
|
|
291
|
+
* @param options Report options.
|
|
292
|
+
* @param settings System settings.
|
|
293
|
+
* @param columns Column definitions.
|
|
294
|
+
* @returns
|
|
295
|
+
*/
|
|
296
|
+
postProcess(id, data, options, settings, columns) {
|
|
297
|
+
return data;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* A helper to combine final report from pre-processed material for reports using text description.
|
|
301
|
+
* @param accountNumbers A set of all account numbers found.
|
|
302
|
+
* @param accountNames A mapping from account numbers to their names.
|
|
303
|
+
* @param columnNames A list of column names.
|
|
304
|
+
* @param format A text description of the report.
|
|
305
|
+
* @param totals A mapping from account numbers their total balance.
|
|
306
|
+
* @returns
|
|
307
|
+
*/
|
|
308
|
+
parseAndCombineReport(accountNumbers, accountNames, columns, format, totals) {
|
|
309
|
+
const columnNames = columns.filter((col) => col.type === 'numeric').map((col) => col.name);
|
|
310
|
+
// Parse report and construct format.
|
|
311
|
+
const allAccounts = Array.from(accountNumbers).sort();
|
|
312
|
+
const ret = [];
|
|
313
|
+
format.split('\n').forEach((line) => {
|
|
314
|
+
if (/^#/.test(line)) {
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
let [numbers, text, flags] = line.split('\t');
|
|
318
|
+
numbers = numbers.split(' ');
|
|
319
|
+
flags = flags ? new Set(flags.trim().split(/\s+/)) : new Set();
|
|
320
|
+
const tab = text ? text.replace(/^(_*).*/, '$1').length : 0;
|
|
321
|
+
text = text ? text.replace(/^_+/, '') : '';
|
|
322
|
+
if (flags.has('NEW_PAGE')) {
|
|
323
|
+
ret.push({ pageBreak: true });
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
if (flags.has('BREAK')) {
|
|
327
|
+
ret.push({ paragraphBreak: true });
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
// Split the line and reset variables.
|
|
331
|
+
const amounts = {};
|
|
332
|
+
columnNames.forEach((column) => (amounts[column] = null));
|
|
333
|
+
let unused = true;
|
|
334
|
+
const item = { tab, ...this.flags2item(flags) };
|
|
335
|
+
// Collect all totals inside any of the account number ranges.
|
|
336
|
+
for (let i = 0; i < numbers.length; i++) {
|
|
337
|
+
const parts = numbers[i].split('-');
|
|
338
|
+
const from = parts[0];
|
|
339
|
+
const to = parts[1];
|
|
340
|
+
columnNames.forEach((column) => {
|
|
341
|
+
allAccounts.forEach((number) => {
|
|
342
|
+
if (number >= from && number < to) {
|
|
343
|
+
unused = false;
|
|
344
|
+
if (totals[column][number] !== undefined) {
|
|
345
|
+
amounts[column] += totals[column][number];
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
// If we actually show details we can skip this entry and fill details below.
|
|
352
|
+
if (!item.accountDetails) {
|
|
353
|
+
if (item.required || !unused) {
|
|
354
|
+
item.name = text;
|
|
355
|
+
item.amounts = amounts;
|
|
356
|
+
ret.push(item);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// Fill in account details for the entries wanting it.
|
|
360
|
+
if (item.accountDetails) {
|
|
361
|
+
for (let i = 0; i < numbers.length; i++) {
|
|
362
|
+
const parts = numbers[i].split('-');
|
|
363
|
+
const from = parts[0];
|
|
364
|
+
const to = parts[1];
|
|
365
|
+
allAccounts.forEach((number) => {
|
|
366
|
+
if (number >= from && number < to) {
|
|
367
|
+
const item = { tab, ...this.flags2item(flags) };
|
|
368
|
+
item.isAccount = true;
|
|
369
|
+
delete item.accountDetails;
|
|
370
|
+
item.name = accountNames[number];
|
|
371
|
+
item.number = number;
|
|
372
|
+
item.amounts = {};
|
|
373
|
+
columnNames.forEach((column) => {
|
|
374
|
+
if (!item.amounts) {
|
|
375
|
+
item.amounts = {};
|
|
376
|
+
}
|
|
377
|
+
if (totals[column][number] === undefined) {
|
|
378
|
+
item.amounts[column] = null;
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
item.amounts[column] = totals[column][number] + 0;
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
ret.push(item);
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
return ret;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=ReportPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/ReportPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Currency, Language, SchemeName, TsvFilePath } from '@dataplug/tasenor-common';
|
|
2
|
+
import { BackendPlugin } from './BackendPlugin';
|
|
3
|
+
/**
|
|
4
|
+
* A plugin providing one or more accounting schemes.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SchemePlugin extends BackendPlugin {
|
|
7
|
+
private schemes;
|
|
8
|
+
constructor(...schemes: SchemeName[]);
|
|
9
|
+
/**
|
|
10
|
+
* Check if this plugin has the given scheme.
|
|
11
|
+
* @param code
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
hasScheme(code: any): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Get the paths to the accounting scheme .tsv files by its code name.
|
|
17
|
+
* @param code
|
|
18
|
+
*/
|
|
19
|
+
getSchemePaths(code: any, languae: any): TsvFilePath[];
|
|
20
|
+
/**
|
|
21
|
+
* Get the default settings for the new database.
|
|
22
|
+
* @param code
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
getSchemeDefaults(code: any): Record<string, unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Supported currencies.
|
|
28
|
+
*/
|
|
29
|
+
supportedCurrencies(): Currency[];
|
|
30
|
+
/**
|
|
31
|
+
* Supported languages.
|
|
32
|
+
*/
|
|
33
|
+
supportedLanguages(): Language[];
|
|
34
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { BackendPlugin } from './BackendPlugin';
|
|
2
|
+
/**
|
|
3
|
+
* A plugin providing one or more accounting schemes.
|
|
4
|
+
*/
|
|
5
|
+
export class SchemePlugin extends BackendPlugin {
|
|
6
|
+
schemes;
|
|
7
|
+
constructor(...schemes) {
|
|
8
|
+
super();
|
|
9
|
+
this.schemes = new Set(schemes);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Check if this plugin has the given scheme.
|
|
13
|
+
* @param code
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
hasScheme(code) {
|
|
17
|
+
return this.schemes.has(code);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get the paths to the accounting scheme .tsv files by its code name.
|
|
21
|
+
* @param code
|
|
22
|
+
*/
|
|
23
|
+
getSchemePaths(code, languae) {
|
|
24
|
+
throw new Error(`A class ${this.constructor.name} does not implement getScheme().`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the default settings for the new database.
|
|
28
|
+
* @param code
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
getSchemeDefaults(code) {
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Supported currencies.
|
|
36
|
+
*/
|
|
37
|
+
supportedCurrencies() {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Supported languages.
|
|
42
|
+
*/
|
|
43
|
+
supportedLanguages() {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=SchemePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemePlugin.js","sourceRoot":"","sources":["../../../../src/plugins/SchemePlugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,aAAa;IAErC,OAAO,CAAiB;IAEhC,YAAY,GAAG,OAAqB;QAClC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,IAAI;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,OAAO;QAC1B,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,kCAAkC,CAAC,CAAA;IACrF,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,IAAI;QACpB,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;CACF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { PluginService, PluginServiceResponse } from '@dataplug/tasenor-common';
|
|
2
|
+
import { BackendPlugin } from './BackendPlugin';
|
|
3
|
+
import { KnexDatabase } from '..';
|
|
4
|
+
export type ServicePluginRequestOptions = {
|
|
5
|
+
rateLimitDelay?: number;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* An API end point provider.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ServicePlugin extends BackendPlugin {
|
|
11
|
+
private services;
|
|
12
|
+
constructor(...services: any[]);
|
|
13
|
+
getServices(): PluginService[];
|
|
14
|
+
/**
|
|
15
|
+
* A query executor called by the back end for API request.
|
|
16
|
+
* @param best The currently best solution found.
|
|
17
|
+
* @param db Knex database.
|
|
18
|
+
* @param service Name of the service to called.
|
|
19
|
+
* @param query Query parameters.
|
|
20
|
+
* This calls the actual query function, handles errors and finally modifies `best` if found a solution.
|
|
21
|
+
*/
|
|
22
|
+
executeQuery(best: unknown, db: KnexDatabase, service: PluginService, query: Record<string, unknown>): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Perform the actual query.
|
|
25
|
+
*
|
|
26
|
+
* @param db Knex database.
|
|
27
|
+
* @param service Name of the service to called.
|
|
28
|
+
* @param query Query parameters.
|
|
29
|
+
*/
|
|
30
|
+
query(db: KnexDatabase, settings: Record<string, unknown>, service: PluginService, query: unknown): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Combine result of the service query.
|
|
33
|
+
*
|
|
34
|
+
* @param old Currently found solution.
|
|
35
|
+
* @param latest The solution given by this plugin.
|
|
36
|
+
*
|
|
37
|
+
* By default, any 2xx status result will override the current result.
|
|
38
|
+
* Any error result will override initial 404 result.
|
|
39
|
+
* Otherwise the latest is ignored.
|
|
40
|
+
*/
|
|
41
|
+
addResult(old: any, latest: any): void;
|
|
42
|
+
/**
|
|
43
|
+
* Check if the current solution is sufficient.
|
|
44
|
+
* By default, any status 2xx is sufficient.
|
|
45
|
+
*/
|
|
46
|
+
isAdequate(solution: any): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Execute query to the third party service,
|
|
49
|
+
* @param service
|
|
50
|
+
* @param method
|
|
51
|
+
* @param url
|
|
52
|
+
* @param params
|
|
53
|
+
* @returns Result body.
|
|
54
|
+
*/
|
|
55
|
+
request(service: any, method: any, url: any, params: any, headers?: {}): Promise<PluginServiceResponse>;
|
|
56
|
+
/**
|
|
57
|
+
* Pick meaningful keys unique from the headers for using as a key, whe storing result to teh cache.
|
|
58
|
+
* @param service
|
|
59
|
+
* @param header
|
|
60
|
+
* By default, no header is used as cache key.
|
|
61
|
+
*/
|
|
62
|
+
cacheHeadersKey(service: any, header: any): {};
|
|
63
|
+
/**
|
|
64
|
+
* Pick meaningful keys unique from the query parameters for using as a key, whe storing result to teh cache.
|
|
65
|
+
* @param service
|
|
66
|
+
* @param params
|
|
67
|
+
* By default, all parameters are used as cache key.
|
|
68
|
+
*/
|
|
69
|
+
cacheParamsKey(service: any, params: any): any;
|
|
70
|
+
/**
|
|
71
|
+
* Execute query to the third party service,
|
|
72
|
+
* @param db
|
|
73
|
+
* @param service
|
|
74
|
+
* @param method
|
|
75
|
+
* @param url
|
|
76
|
+
* @param params
|
|
77
|
+
* @returns Result body.
|
|
78
|
+
*/
|
|
79
|
+
cachedRequest(db: KnexDatabase | null, service: any, method: any, url: any, params: any, headers?: {}, options?: ServicePluginRequestOptions): Promise<any>;
|
|
80
|
+
}
|