@tasenor/common-node 1.9.31 → 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 (200) hide show
  1. package/package.json +2 -2
  2. package/dist/migrations/01_init.js +0 -60
  3. package/dist/src/cli.d.ts +0 -81
  4. package/dist/src/cli.js +0 -242
  5. package/dist/src/cli.js.map +0 -1
  6. package/dist/src/commands/account.d.ts +0 -12
  7. package/dist/src/commands/account.js +0 -58
  8. package/dist/src/commands/account.js.map +0 -1
  9. package/dist/src/commands/balance.d.ts +0 -11
  10. package/dist/src/commands/balance.js +0 -117
  11. package/dist/src/commands/balance.js.map +0 -1
  12. package/dist/src/commands/db.d.ts +0 -14
  13. package/dist/src/commands/db.js +0 -69
  14. package/dist/src/commands/db.js.map +0 -1
  15. package/dist/src/commands/entry.d.ts +0 -13
  16. package/dist/src/commands/entry.js +0 -106
  17. package/dist/src/commands/entry.js.map +0 -1
  18. package/dist/src/commands/import.d.ts +0 -17
  19. package/dist/src/commands/import.js +0 -140
  20. package/dist/src/commands/import.js.map +0 -1
  21. package/dist/src/commands/importer.d.ts +0 -13
  22. package/dist/src/commands/importer.js +0 -71
  23. package/dist/src/commands/importer.js.map +0 -1
  24. package/dist/src/commands/index.d.ts +0 -191
  25. package/dist/src/commands/index.js +0 -482
  26. package/dist/src/commands/index.js.map +0 -1
  27. package/dist/src/commands/period.d.ts +0 -12
  28. package/dist/src/commands/period.js +0 -48
  29. package/dist/src/commands/period.js.map +0 -1
  30. package/dist/src/commands/plugin.d.ts +0 -15
  31. package/dist/src/commands/plugin.js +0 -78
  32. package/dist/src/commands/plugin.js.map +0 -1
  33. package/dist/src/commands/report.d.ts +0 -11
  34. package/dist/src/commands/report.js +0 -96
  35. package/dist/src/commands/report.js.map +0 -1
  36. package/dist/src/commands/settings.d.ts +0 -10
  37. package/dist/src/commands/settings.js +0 -64
  38. package/dist/src/commands/settings.js.map +0 -1
  39. package/dist/src/commands/stock.d.ts +0 -8
  40. package/dist/src/commands/stock.js +0 -73
  41. package/dist/src/commands/stock.js.map +0 -1
  42. package/dist/src/commands/tag.d.ts +0 -13
  43. package/dist/src/commands/tag.js +0 -89
  44. package/dist/src/commands/tag.js.map +0 -1
  45. package/dist/src/commands/tx.d.ts +0 -12
  46. package/dist/src/commands/tx.js +0 -81
  47. package/dist/src/commands/tx.js.map +0 -1
  48. package/dist/src/commands/user.d.ts +0 -12
  49. package/dist/src/commands/user.js +0 -52
  50. package/dist/src/commands/user.js.map +0 -1
  51. package/dist/src/database/BookkeeperImporter.d.ts +0 -77
  52. package/dist/src/database/BookkeeperImporter.js +0 -343
  53. package/dist/src/database/BookkeeperImporter.js.map +0 -1
  54. package/dist/src/database/DB.d.ts +0 -51
  55. package/dist/src/database/DB.js +0 -354
  56. package/dist/src/database/DB.js.map +0 -1
  57. package/dist/src/database/index.d.ts +0 -7
  58. package/dist/src/database/index.js +0 -8
  59. package/dist/src/database/index.js.map +0 -1
  60. package/dist/src/doccer.d.ts +0 -29
  61. package/dist/src/doccer.js +0 -30
  62. package/dist/src/doccer.js.map +0 -1
  63. package/dist/src/error.d.ts +0 -30
  64. package/dist/src/error.js +0 -35
  65. package/dist/src/error.js.map +0 -1
  66. package/dist/src/export/Exporter.d.ts +0 -69
  67. package/dist/src/export/Exporter.js +0 -123
  68. package/dist/src/export/Exporter.js.map +0 -1
  69. package/dist/src/export/TasenorExporter.d.ts +0 -55
  70. package/dist/src/export/TasenorExporter.js +0 -135
  71. package/dist/src/export/TasenorExporter.js.map +0 -1
  72. package/dist/src/export/TilitinExporter.d.ts +0 -71
  73. package/dist/src/export/TilitinExporter.js +0 -290
  74. package/dist/src/export/TilitinExporter.js.map +0 -1
  75. package/dist/src/export/index.d.ts +0 -8
  76. package/dist/src/export/index.js +0 -9
  77. package/dist/src/export/index.js.map +0 -1
  78. package/dist/src/import/TextFileProcessHandler.d.ts +0 -104
  79. package/dist/src/import/TextFileProcessHandler.js +0 -354
  80. package/dist/src/import/TextFileProcessHandler.js.map +0 -1
  81. package/dist/src/import/TransactionImportConnector.d.ts +0 -38
  82. package/dist/src/import/TransactionImportConnector.js +0 -27
  83. package/dist/src/import/TransactionImportConnector.js.map +0 -1
  84. package/dist/src/import/TransactionImportHandler.d.ts +0 -173
  85. package/dist/src/import/TransactionImportHandler.js +0 -733
  86. package/dist/src/import/TransactionImportHandler.js.map +0 -1
  87. package/dist/src/import/TransactionRules.d.ts +0 -238
  88. package/dist/src/import/TransactionRules.js +0 -522
  89. package/dist/src/import/TransactionRules.js.map +0 -1
  90. package/dist/src/import/TransactionUI.d.ts +0 -181
  91. package/dist/src/import/TransactionUI.js +0 -482
  92. package/dist/src/import/TransactionUI.js.map +0 -1
  93. package/dist/src/import/TransferAnalyzer.d.ts +0 -324
  94. package/dist/src/import/TransferAnalyzer.js +0 -1379
  95. package/dist/src/import/TransferAnalyzer.js.map +0 -1
  96. package/dist/src/import/index.d.ts +0 -11
  97. package/dist/src/import/index.js +0 -12
  98. package/dist/src/import/index.js.map +0 -1
  99. package/dist/src/index.d.ts +0 -11
  100. package/dist/src/index.js +0 -12
  101. package/dist/src/index.js.map +0 -1
  102. package/dist/src/net/crypto.d.ts +0 -33
  103. package/dist/src/net/crypto.js +0 -63
  104. package/dist/src/net/crypto.js.map +0 -1
  105. package/dist/src/net/git.d.ts +0 -49
  106. package/dist/src/net/git.js +0 -137
  107. package/dist/src/net/git.js.map +0 -1
  108. package/dist/src/net/index.d.ts +0 -10
  109. package/dist/src/net/index.js +0 -11
  110. package/dist/src/net/index.js.map +0 -1
  111. package/dist/src/net/middleware.d.ts +0 -61
  112. package/dist/src/net/middleware.js +0 -220
  113. package/dist/src/net/middleware.js.map +0 -1
  114. package/dist/src/net/tokens.d.ts +0 -50
  115. package/dist/src/net/tokens.js +0 -141
  116. package/dist/src/net/tokens.js.map +0 -1
  117. package/dist/src/net/vault.d.ts +0 -67
  118. package/dist/src/net/vault.js +0 -145
  119. package/dist/src/net/vault.js.map +0 -1
  120. package/dist/src/plugins/BackendPlugin.d.ts +0 -91
  121. package/dist/src/plugins/BackendPlugin.js +0 -165
  122. package/dist/src/plugins/BackendPlugin.js.map +0 -1
  123. package/dist/src/plugins/DataPlugin.d.ts +0 -13
  124. package/dist/src/plugins/DataPlugin.js +0 -26
  125. package/dist/src/plugins/DataPlugin.js.map +0 -1
  126. package/dist/src/plugins/ImportPlugin.d.ts +0 -188
  127. package/dist/src/plugins/ImportPlugin.js +0 -204
  128. package/dist/src/plugins/ImportPlugin.js.map +0 -1
  129. package/dist/src/plugins/ReportPlugin.d.ts +0 -132
  130. package/dist/src/plugins/ReportPlugin.js +0 -393
  131. package/dist/src/plugins/ReportPlugin.js.map +0 -1
  132. package/dist/src/plugins/SchemePlugin.d.ts +0 -34
  133. package/dist/src/plugins/SchemePlugin.js +0 -47
  134. package/dist/src/plugins/SchemePlugin.js.map +0 -1
  135. package/dist/src/plugins/ServicePlugin.d.ts +0 -80
  136. package/dist/src/plugins/ServicePlugin.js +0 -168
  137. package/dist/src/plugins/ServicePlugin.js.map +0 -1
  138. package/dist/src/plugins/ToolPlugin.d.ts +0 -27
  139. package/dist/src/plugins/ToolPlugin.js +0 -37
  140. package/dist/src/plugins/ToolPlugin.js.map +0 -1
  141. package/dist/src/plugins/index.d.ts +0 -13
  142. package/dist/src/plugins/index.js +0 -14
  143. package/dist/src/plugins/index.js.map +0 -1
  144. package/dist/src/plugins/plugins.d.ts +0 -101
  145. package/dist/src/plugins/plugins.js +0 -292
  146. package/dist/src/plugins/plugins.js.map +0 -1
  147. package/dist/src/process/Process.d.ts +0 -108
  148. package/dist/src/process/Process.js +0 -335
  149. package/dist/src/process/Process.js.map +0 -1
  150. package/dist/src/process/ProcessConnector.d.ts +0 -24
  151. package/dist/src/process/ProcessConnector.js +0 -28
  152. package/dist/src/process/ProcessConnector.js.map +0 -1
  153. package/dist/src/process/ProcessFile.d.ts +0 -69
  154. package/dist/src/process/ProcessFile.js +0 -145
  155. package/dist/src/process/ProcessFile.js.map +0 -1
  156. package/dist/src/process/ProcessHandler.d.ts +0 -60
  157. package/dist/src/process/ProcessHandler.js +0 -73
  158. package/dist/src/process/ProcessHandler.js.map +0 -1
  159. package/dist/src/process/ProcessStep.d.ts +0 -52
  160. package/dist/src/process/ProcessStep.js +0 -78
  161. package/dist/src/process/ProcessStep.js.map +0 -1
  162. package/dist/src/process/ProcessingSystem.d.ts +0 -60
  163. package/dist/src/process/ProcessingSystem.js +0 -182
  164. package/dist/src/process/ProcessingSystem.js.map +0 -1
  165. package/dist/src/process/index.d.ts +0 -11
  166. package/dist/src/process/index.js +0 -12
  167. package/dist/src/process/index.js.map +0 -1
  168. package/dist/src/reports/conversions.d.ts +0 -8
  169. package/dist/src/reports/conversions.js +0 -47
  170. package/dist/src/reports/conversions.js.map +0 -1
  171. package/dist/src/reports/index.d.ts +0 -6
  172. package/dist/src/reports/index.js +0 -7
  173. package/dist/src/reports/index.js.map +0 -1
  174. package/dist/src/server/ISPDemoServer.d.ts +0 -43
  175. package/dist/src/server/ISPDemoServer.js +0 -112
  176. package/dist/src/server/ISPDemoServer.js.map +0 -1
  177. package/dist/src/server/api.d.ts +0 -15
  178. package/dist/src/server/api.js +0 -27
  179. package/dist/src/server/api.js.map +0 -1
  180. package/dist/src/server/index.d.ts +0 -7
  181. package/dist/src/server/index.js +0 -8
  182. package/dist/src/server/index.js.map +0 -1
  183. package/dist/src/server/router.d.ts +0 -5
  184. package/dist/src/server/router.js +0 -37
  185. package/dist/src/server/router.js.map +0 -1
  186. package/dist/src/system.d.ts +0 -27
  187. package/dist/src/system.js +0 -95
  188. package/dist/src/system.js.map +0 -1
  189. package/dist/tests/TransactionRules.spec.d.ts +0 -1
  190. package/dist/tests/TransactionRules.spec.js +0 -64
  191. package/dist/tests/TransactionRules.spec.js.map +0 -1
  192. package/dist/tests/password.spec.d.ts +0 -1
  193. package/dist/tests/password.spec.js +0 -8
  194. package/dist/tests/password.spec.js.map +0 -1
  195. package/dist/tests/tokens.spec.d.ts +0 -1
  196. package/dist/tests/tokens.spec.js +0 -49
  197. package/dist/tests/tokens.spec.js.map +0 -1
  198. package/dist/tests/vault.spec.d.ts +0 -1
  199. package/dist/tests/vault.spec.js +0 -19
  200. package/dist/tests/vault.spec.js.map +0 -1
@@ -1,69 +0,0 @@
1
- import { log } from '@tasenor/common';
2
- import fs from 'fs';
3
- import { Command } from '.';
4
- class DbCommand extends Command {
5
- addArguments(parser) {
6
- const sub = parser.add_subparsers();
7
- const ls = sub.add_parser('ls', { help: 'List all databases' });
8
- ls.set_defaults({ subCommand: 'ls' });
9
- const create = sub.add_parser('create', { help: 'Create a database' });
10
- create.set_defaults({ subCommand: 'create' });
11
- create.add_argument('scheme', { help: 'Bookkeeping scheme plugin code' });
12
- create.add_argument('databaseName', { help: 'Name of the new database' });
13
- create.add_argument('companyName', { nargs: '?', help: 'Name of the company (optional)' });
14
- create.add_argument('companyCode', { nargs: '?', help: 'Registration code of the company (optional)' });
15
- create.add_argument('language', { nargs: '?', help: 'Database language (optional)' });
16
- create.add_argument('currency', { nargs: '?', help: 'Currency (optional)' });
17
- const rm = sub.add_parser('rm', { help: 'Delete a database' });
18
- rm.set_defaults({ subCommand: 'rm' });
19
- rm.add_argument('databaseName', { help: 'Name of the database' });
20
- const upload = sub.add_parser('upload', { help: 'Upload a database' });
21
- upload.set_defaults({ subCommand: 'upload' });
22
- upload.add_argument('path', { help: 'Path to the file to upload' });
23
- const download = sub.add_parser('download', { help: 'Download a database' });
24
- download.set_defaults({ subCommand: 'download' });
25
- download.add_argument('databaseName', { help: 'Name of the database' });
26
- download.add_argument('path', { help: 'Path to the file to save' });
27
- }
28
- async ls() {
29
- const resp = await this.get('/db');
30
- this.out('db', resp);
31
- }
32
- print(data) {
33
- for (const db of data) {
34
- console.log(db.name);
35
- }
36
- }
37
- async rm() {
38
- const { databaseName } = this.args;
39
- await this.delete(`/db/${databaseName}`);
40
- log(`Database ${databaseName} deleted successfully.`);
41
- }
42
- async create() {
43
- const { scheme, databaseName, companyName, companyCode, language, currency } = this.args;
44
- const settings = {
45
- language, currency
46
- };
47
- const params = { scheme, databaseName, companyName, companyCode, settings };
48
- await this.post('/db', params);
49
- log(`Database ${databaseName} created successfully.`);
50
- }
51
- async upload() {
52
- const { path } = this.args;
53
- if (!path || !fs.existsSync(this.str(path))) {
54
- throw new Error(`File path ${path} does not exist.`);
55
- }
56
- await this.postUpload('/db/upload', path);
57
- log(`Database ${path} uploaded successfully.`);
58
- }
59
- async download() {
60
- const { path, databaseName } = this.args;
61
- await this.getDownload(`/db/${databaseName}/download`, this.str(path));
62
- log(`Database ${databaseName} downloaded successfully and saved to ${path}.`);
63
- }
64
- async run() {
65
- await this.runBy('subCommand');
66
- }
67
- }
68
- export default DbCommand;
69
- //# sourceMappingURL=db.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/commands/db.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { Command } from '.';
2
- import { ArgumentParser } from 'argparse';
3
- import { EntryModelData } from '@tasenor/common';
4
- declare class EntryCommand extends Command {
5
- addArguments(parser: ArgumentParser): void;
6
- filter(): Promise<EntryModelData[]>;
7
- ls(): Promise<void>;
8
- print(data: EntryModelData[]): void;
9
- edit(): Promise<void>;
10
- rm(): Promise<void>;
11
- run(): Promise<void>;
12
- }
13
- export default EntryCommand;
@@ -1,106 +0,0 @@
1
- /* eslint-disable camelcase */
2
- import { sprintf } from 'sprintf-js';
3
- import { Command } from '.';
4
- import { log } from '@tasenor/common';
5
- class EntryCommand extends Command {
6
- addArguments(parser) {
7
- const sub = parser.add_subparsers();
8
- const ls = sub.add_parser('ls', { help: 'Find entries matching the filter' });
9
- ls.set_defaults({ subCommand: 'ls' });
10
- ls.add_argument('--account', { help: 'Match to this account number', required: false });
11
- ls.add_argument('--text', { help: 'Match to this exact description', required: false });
12
- ls.add_argument('--period', { help: 'Match to period with this date/year/id', required: false });
13
- ls.add_argument('db', { help: 'Name of the database' });
14
- const edit = sub.add_parser('edit', { help: 'Change entries matching the filter' });
15
- edit.set_defaults({ subCommand: 'edit' });
16
- edit.add_argument('--account', { help: 'Match to this account number', required: false });
17
- edit.add_argument('--text', { help: 'Match to this exact description', required: false });
18
- edit.add_argument('--period', { help: 'Match to period with this date/year/id', required: false });
19
- edit.add_argument('db', { help: 'Name of the database' });
20
- edit.add_argument('data', { help: 'JSON data for patching the entry' });
21
- const rm = sub.add_parser('rm', { help: 'Remove entries matching the filter' });
22
- rm.set_defaults({ subCommand: 'rm' });
23
- rm.add_argument('--account', { help: 'Match to this account number', required: false });
24
- rm.add_argument('--text', { help: 'Match to this exact description', required: false });
25
- rm.add_argument('--period', { help: 'Match to period with this date/year/id', required: false });
26
- rm.add_argument('--all', { help: 'Delete the whole transaction that includes the matching line.', action: 'store_true', required: false });
27
- rm.add_argument('db', { help: 'Name of the database' });
28
- }
29
- async filter() {
30
- const { db, account, text, period } = this.args;
31
- await this.readAccounts(db);
32
- const query = [];
33
- if (account) {
34
- const id = await this.accountId(db, account);
35
- query.push(`account_id=${id}`);
36
- }
37
- if (text) {
38
- query.push(`text=${encodeURIComponent(text)}`);
39
- }
40
- if (period) {
41
- const id = await this.periodId(db, period);
42
- query.push(`period_id=${id}`);
43
- }
44
- return this.get(`/db/${db}/entry${query.length ? '?' + query.join('&') : ''}`);
45
- }
46
- async ls() {
47
- const resp = await this.filter();
48
- this.out('entry', resp);
49
- }
50
- print(data) {
51
- for (const entry of data) {
52
- const { id, account_id, debit, amount, description } = entry;
53
- console.log(`#${id} ${this.accountsById[account_id || -1].number} ${this.accountsById[account_id || -1].name}`);
54
- console.log(' ', sprintf('%.2f', debit ? amount / 100 : amount / -100), '\t', description);
55
- if (entry.data && Object.keys(entry.data).length) {
56
- console.log(' ', JSON.stringify(entry.data));
57
- }
58
- }
59
- }
60
- async edit() {
61
- const { db, data } = this.args;
62
- const params = await this.jsonData(data);
63
- for (const key of Object.keys(params)) {
64
- switch (key) {
65
- case 'data':
66
- case 'description':
67
- break;
68
- case 'account':
69
- params.account_id = await this.accountId(db, `${params[key]}`);
70
- delete params.account;
71
- break;
72
- default:
73
- throw new Error(`No handler yet for entry data '${key}'.`);
74
- }
75
- }
76
- const resp = await this.filter();
77
- for (const entry of resp) {
78
- const newParams = { ...params, data: Object.assign({}, entry.data, params.data) };
79
- log(`Changing entry #${entry.id} to have ${JSON.stringify(newParams)}`);
80
- await this.patch(`/db/${db}/entry/${entry.id}`, newParams);
81
- }
82
- }
83
- async rm() {
84
- const { db } = this.args;
85
- const resp = await this.filter();
86
- if (this.args.all) {
87
- const docIds = new Set();
88
- for (const entry of resp) {
89
- docIds.add(entry.document_id);
90
- }
91
- for (const id of docIds) {
92
- await this.delete(`/db/${db}/document/${id}`);
93
- }
94
- }
95
- else {
96
- for (const entry of resp) {
97
- await this.delete(`/db/${db}/entry/${entry.id}`);
98
- }
99
- }
100
- }
101
- async run() {
102
- await this.runBy('subCommand');
103
- }
104
- }
105
- export default EntryCommand;
106
- //# sourceMappingURL=entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../src/commands/entry.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { Command } from '.';
2
- import { ArgumentParser } from 'argparse';
3
- import { ProcessModelData } from '@tasenor/common';
4
- type ProcessPostResponse = {
5
- processId: number;
6
- step: number;
7
- status: string;
8
- };
9
- declare class ImportCommand extends Command {
10
- addArguments(parser: ArgumentParser): void;
11
- ls(): Promise<void>;
12
- show(): Promise<void>;
13
- create(): Promise<void>;
14
- print(data: ProcessModelData[] | ProcessPostResponse): void;
15
- run(): Promise<void>;
16
- }
17
- export default ImportCommand;
@@ -1,140 +0,0 @@
1
- /* eslint-disable camelcase */
2
- import fs from 'fs';
3
- import mime from 'mime-types';
4
- import { Command } from '.';
5
- import { error, log } from '@tasenor/common';
6
- class ImportCommand extends Command {
7
- addArguments(parser) {
8
- const sub = parser.add_subparsers();
9
- const ls = sub.add_parser('ls', { help: 'List all imports' });
10
- ls.set_defaults({ subCommand: 'ls' });
11
- ls.add_argument('db', { help: 'Name of the database' });
12
- ls.add_argument('name', { help: 'Name of the importer' });
13
- const show = sub.add_parser('show', { help: 'Display import process in detail' });
14
- show.set_defaults({ subCommand: 'show' });
15
- show.add_argument('db', { help: 'Name of the database' });
16
- show.add_argument('name', { help: 'Name of the importer' });
17
- show.add_argument('id', { help: 'Import number' });
18
- const create = sub.add_parser('create', { help: 'Import a file' });
19
- create.set_defaults({ subCommand: 'create' });
20
- create.add_argument('--first', { help: 'First date of the allowed period YYYY-MM-DD', default: '1900-01-01' });
21
- create.add_argument('--last', { help: 'Final date of the allowed period YYYY-MM-DD', default: '2999-12-31' });
22
- create.add_argument('--answers', { help: 'Answer file', required: false });
23
- create.add_argument('db', { help: 'Name of the database' });
24
- create.add_argument('name', { help: 'Name of the importer' });
25
- create.add_argument('file', { help: 'Path to the file(s) to import', nargs: '+' });
26
- }
27
- async ls() {
28
- const { db, name } = this.args;
29
- const importer = await this.importer(db, name);
30
- const resp = await this.get(`/db/${db}/import/${importer.id}`);
31
- this.out('import', resp);
32
- }
33
- async show() {
34
- const { db, name, id } = this.args;
35
- const importer = await this.importer(db, name);
36
- const resp = await this.get(`/db/${db}/import/${importer.id}/process/${id}`);
37
- const steps = [];
38
- for (const step of resp.steps) {
39
- const resp = await this.get(`/db/${db}/import/${importer.id}/process/${id}/step/${step.number}`);
40
- steps.push({ ...step, state: resp.state });
41
- }
42
- for (const step of steps) {
43
- if (step.directions && step.directions.element) {
44
- const element = step.directions.element;
45
- if (element.config) {
46
- element.config = '* * * config * * *';
47
- }
48
- }
49
- }
50
- if (this.args.json) {
51
- this.out('import', steps);
52
- }
53
- else {
54
- for (const step of steps) {
55
- const state = step.state;
56
- console.log();
57
- console.log(`Step #${step.number}`);
58
- console.log('Action:', step.action);
59
- console.log('Direction:', step.directions && step.directions.type);
60
- console.log('State:');
61
- console.log(` Files: ${Object.keys(state.files).join(', ')}`);
62
- console.log(` Stage: ${state.stage}`);
63
- if (state.output) {
64
- console.log(' Output:', state.output);
65
- }
66
- if (state.segments) {
67
- console.log(` Segments: ${Object.keys(state.segments).join(', ')}`);
68
- }
69
- if (state.result !== undefined) {
70
- console.log(' Results:');
71
- Object.keys(state.result).forEach(segmentId => {
72
- console.log(`=== ${segmentId} ===`);
73
- const result = state.result;
74
- console.dir(result[segmentId], { depth: null });
75
- });
76
- }
77
- // console.log()
78
- // console.log(step.state)
79
- // console.log()
80
- }
81
- }
82
- }
83
- async create() {
84
- const { db, name, file, answers, first, last } = this.args;
85
- const importer = await this.importer(db, name);
86
- const encoding = 'base64';
87
- const files = [];
88
- for (const filePath of (file || [])) {
89
- const data = fs.readFileSync(filePath).toString(encoding);
90
- files.push({
91
- name: filePath,
92
- encoding,
93
- type: mime.lookup(filePath),
94
- data
95
- });
96
- }
97
- const answersArg = answers ? await this.jsonData(answers) : null;
98
- const resp = await this.post(`/db/${db}/importer/${importer.id}`, {
99
- firstDate: first,
100
- lastDate: last,
101
- files
102
- });
103
- this.out('import', resp);
104
- if (answersArg) {
105
- log(`Uploading answers to process #${resp.processId}`);
106
- const resp2 = await this.post(`/db/${db}/import/${importer.id}/process/${resp.processId}`, {
107
- answer: answersArg
108
- });
109
- this.out('import', resp2);
110
- }
111
- }
112
- print(data) {
113
- if ('processId' in data && 'step' in data) {
114
- log(`Process ID: ${data.processId}, Step: ${data.step}, ${data.status}`);
115
- return;
116
- }
117
- if ('processId' in data && 'status' in data && data.length === undefined) {
118
- if (data.status === 'CRASHED') {
119
- error(`Process ID: ${data.processId}, ${data.status}`);
120
- }
121
- else {
122
- log(`Process ID: ${data.processId}, ${data.status}`);
123
- }
124
- return;
125
- }
126
- for (const imp of data.sort((a, b) => (a.id || 0) - (b.id || 0))) {
127
- const { id, name, status, error } = imp;
128
- console.log(`#${id} ${name} ${status}`);
129
- if (error) {
130
- console.log(' ', error);
131
- }
132
- console.log();
133
- }
134
- }
135
- async run() {
136
- await this.runBy('subCommand');
137
- }
138
- }
139
- export default ImportCommand;
140
- //# sourceMappingURL=import.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { ImporterModelData } from '@tasenor/common';
2
- import { Command } from '.';
3
- import { ArgumentParser } from 'argparse';
4
- declare class ImporterCommand extends Command {
5
- addArguments(parser: ArgumentParser): void;
6
- ls(): Promise<void>;
7
- print(data: ImporterModelData[]): void;
8
- create(): Promise<void>;
9
- set(): Promise<void>;
10
- config(): Promise<void>;
11
- run(): Promise<void>;
12
- }
13
- export default ImporterCommand;
@@ -1,71 +0,0 @@
1
- /* eslint-disable camelcase */
2
- import { log } from '@tasenor/common';
3
- import { Command } from '.';
4
- class ImporterCommand extends Command {
5
- addArguments(parser) {
6
- const sub = parser.add_subparsers();
7
- const ls = sub.add_parser('ls', { help: 'List all importers' });
8
- ls.set_defaults({ subCommand: 'ls' });
9
- ls.add_argument('db', { help: 'Name of the database' });
10
- const create = sub.add_parser('create', { help: 'Create an importer' });
11
- create.set_defaults({ subCommand: 'create' });
12
- create.add_argument('db', { help: 'Name of the database' });
13
- create.add_argument('name', { help: 'Name of the importer' });
14
- create.add_argument('plugin', { help: 'Code of the import handler plugin' });
15
- const set = sub.add_parser('set', { help: 'Set configuration variable for an importer' });
16
- set.set_defaults({ subCommand: 'set' });
17
- set.add_argument('db', { help: 'Name of the database' });
18
- set.add_argument('name', { help: 'The name of the importer' });
19
- set.add_argument('variable', { help: 'Name of the configuration variable' });
20
- set.add_argument('value', { help: 'Value for the configuration variable' });
21
- const config = sub.add_parser('config', { help: 'Set whole configuration for an importer' });
22
- config.set_defaults({ subCommand: 'config' });
23
- config.add_argument('db', { help: 'Name of the database' });
24
- config.add_argument('name', { help: 'The name of the importer' });
25
- config.add_argument('config', { help: 'JSON data or @filepath for configuration' });
26
- }
27
- async ls() {
28
- const { db } = this.args;
29
- const resp = await this.get(`/db/${db}/importer`);
30
- this.out('importer', resp);
31
- }
32
- print(data) {
33
- for (const importer of data.sort((a, b) => (a.id || 0) - (b.id || 0))) {
34
- const { id, name, config } = importer;
35
- console.log(`#${id} ${name}`);
36
- if (config.rules) {
37
- config.rules = '...skipped...';
38
- }
39
- console.dir(config, { depth: null });
40
- console.log();
41
- }
42
- }
43
- async create() {
44
- const { db, name, plugin } = this.args;
45
- await this.plugin(plugin);
46
- const code = this.str(plugin);
47
- await this.post(`/db/${db}/importer`, { name, config: { handlers: [code] } });
48
- log(`Importer ${name} created successfully.`);
49
- }
50
- async set() {
51
- const { db, name, variable, value } = this.args;
52
- const importer = await this.importer(db, name);
53
- const variableArg = this.str(variable);
54
- const valueArg = this.value(value);
55
- await this.patch(`/db/${db}/importer/${importer.id}`, { config: { [variableArg]: valueArg } });
56
- const newImporter = await this.get(`/db/${db}/importer/${importer.id}`);
57
- log(`Variable ${variableArg} set to ${JSON.stringify(newImporter.config[variableArg])}`);
58
- }
59
- async config() {
60
- const { db, name, config } = this.args;
61
- const importer = await this.importer(db, name);
62
- const configArg = await this.jsonData(config);
63
- await this.patch(`/db/${db}/importer/${importer.id}`, { config: configArg });
64
- log(`Updated configuration for importer ${name}`);
65
- }
66
- async run() {
67
- await this.runBy('subCommand');
68
- }
69
- }
70
- export default ImporterCommand;
71
- //# sourceMappingURL=importer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"importer.js","sourceRoot":"","sources":["../../../src/commands/importer.ts"],"names":[],"mappings":"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"}