@cyberismo/data-handler 0.0.2

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 (306) hide show
  1. package/LICENSE +702 -0
  2. package/dist/card-metadata-updater.d.ts +33 -0
  3. package/dist/card-metadata-updater.js +121 -0
  4. package/dist/card-metadata-updater.js.map +1 -0
  5. package/dist/command-handler.d.ts +96 -0
  6. package/dist/command-handler.js +557 -0
  7. package/dist/command-handler.js.map +1 -0
  8. package/dist/command-manager.d.ts +43 -0
  9. package/dist/command-manager.js +73 -0
  10. package/dist/command-manager.js.map +1 -0
  11. package/dist/commands/calculate.d.ts +86 -0
  12. package/dist/commands/calculate.js +444 -0
  13. package/dist/commands/calculate.js.map +1 -0
  14. package/dist/commands/create.d.ts +114 -0
  15. package/dist/commands/create.js +389 -0
  16. package/dist/commands/create.js.map +1 -0
  17. package/dist/commands/edit.d.ts +37 -0
  18. package/dist/commands/edit.js +99 -0
  19. package/dist/commands/edit.js.map +1 -0
  20. package/dist/commands/export-site.d.ts +45 -0
  21. package/dist/commands/export-site.js +301 -0
  22. package/dist/commands/export-site.js.map +1 -0
  23. package/dist/commands/export.d.ts +53 -0
  24. package/dist/commands/export.js +251 -0
  25. package/dist/commands/export.js.map +1 -0
  26. package/dist/commands/import.d.ts +53 -0
  27. package/dist/commands/import.js +133 -0
  28. package/dist/commands/import.js.map +1 -0
  29. package/dist/commands/index.d.ts +26 -0
  30. package/dist/commands/index.js +27 -0
  31. package/dist/commands/index.js.map +1 -0
  32. package/dist/commands/move.d.ts +55 -0
  33. package/dist/commands/move.js +341 -0
  34. package/dist/commands/move.js.map +1 -0
  35. package/dist/commands/remove.d.ts +38 -0
  36. package/dist/commands/remove.js +192 -0
  37. package/dist/commands/remove.js.map +1 -0
  38. package/dist/commands/rename.d.ts +46 -0
  39. package/dist/commands/rename.js +289 -0
  40. package/dist/commands/rename.js.map +1 -0
  41. package/dist/commands/show.d.ts +124 -0
  42. package/dist/commands/show.js +345 -0
  43. package/dist/commands/show.js.map +1 -0
  44. package/dist/commands/transition.d.ts +27 -0
  45. package/dist/commands/transition.js +92 -0
  46. package/dist/commands/transition.js.map +1 -0
  47. package/dist/commands/update.d.ts +29 -0
  48. package/dist/commands/update.js +64 -0
  49. package/dist/commands/update.js.map +1 -0
  50. package/dist/commands/validate.d.ts +143 -0
  51. package/dist/commands/validate.js +689 -0
  52. package/dist/commands/validate.js.map +1 -0
  53. package/dist/containers/card-container.d.ts +44 -0
  54. package/dist/containers/card-container.js +282 -0
  55. package/dist/containers/card-container.js.map +1 -0
  56. package/dist/containers/project/project-paths.d.ts +46 -0
  57. package/dist/containers/project/project-paths.js +105 -0
  58. package/dist/containers/project/project-paths.js.map +1 -0
  59. package/dist/containers/project/resource-collector.d.ts +86 -0
  60. package/dist/containers/project/resource-collector.js +331 -0
  61. package/dist/containers/project/resource-collector.js.map +1 -0
  62. package/dist/containers/project.d.ts +351 -0
  63. package/dist/containers/project.js +896 -0
  64. package/dist/containers/project.js.map +1 -0
  65. package/dist/containers/template.d.ts +108 -0
  66. package/dist/containers/template.js +433 -0
  67. package/dist/containers/template.js.map +1 -0
  68. package/dist/exceptions/index.d.ts +19 -0
  69. package/dist/exceptions/index.js +26 -0
  70. package/dist/exceptions/index.js.map +1 -0
  71. package/dist/index.d.ts +16 -0
  72. package/dist/index.js +15 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/interfaces/adoc.d.ts +12 -0
  75. package/dist/interfaces/adoc.js +13 -0
  76. package/dist/interfaces/adoc.js.map +1 -0
  77. package/dist/interfaces/macros.d.ts +45 -0
  78. package/dist/interfaces/macros.js +13 -0
  79. package/dist/interfaces/macros.js.map +1 -0
  80. package/dist/interfaces/project-interfaces.d.ts +121 -0
  81. package/dist/interfaces/project-interfaces.js +21 -0
  82. package/dist/interfaces/project-interfaces.js.map +1 -0
  83. package/dist/interfaces/request-status-interfaces.d.ts +28 -0
  84. package/dist/interfaces/request-status-interfaces.js +20 -0
  85. package/dist/interfaces/request-status-interfaces.js.map +1 -0
  86. package/dist/interfaces/resource-interfaces.d.ts +117 -0
  87. package/dist/interfaces/resource-interfaces.js +20 -0
  88. package/dist/interfaces/resource-interfaces.js.map +1 -0
  89. package/dist/macros/base-macro.d.ts +31 -0
  90. package/dist/macros/base-macro.js +126 -0
  91. package/dist/macros/base-macro.js.map +1 -0
  92. package/dist/macros/common.d.ts +17 -0
  93. package/dist/macros/common.js +23 -0
  94. package/dist/macros/common.js.map +1 -0
  95. package/dist/macros/createCards/index.d.ts +36 -0
  96. package/dist/macros/createCards/index.js +35 -0
  97. package/dist/macros/createCards/index.js.map +1 -0
  98. package/dist/macros/createCards/metadata.d.ts +14 -0
  99. package/dist/macros/createCards/metadata.js +18 -0
  100. package/dist/macros/createCards/metadata.js.map +1 -0
  101. package/dist/macros/graph/index.d.ts +29 -0
  102. package/dist/macros/graph/index.js +91 -0
  103. package/dist/macros/graph/index.js.map +1 -0
  104. package/dist/macros/graph/metadata.d.ts +14 -0
  105. package/dist/macros/graph/metadata.js +18 -0
  106. package/dist/macros/graph/metadata.js.map +1 -0
  107. package/dist/macros/index.d.ts +93 -0
  108. package/dist/macros/index.js +237 -0
  109. package/dist/macros/index.js.map +1 -0
  110. package/dist/macros/report/index.d.ts +26 -0
  111. package/dist/macros/report/index.js +70 -0
  112. package/dist/macros/report/index.js.map +1 -0
  113. package/dist/macros/report/metadata.d.ts +14 -0
  114. package/dist/macros/report/metadata.js +18 -0
  115. package/dist/macros/report/metadata.js.map +1 -0
  116. package/dist/macros/scoreCard/index.d.ts +30 -0
  117. package/dist/macros/scoreCard/index.js +38 -0
  118. package/dist/macros/scoreCard/index.js.map +1 -0
  119. package/dist/macros/scoreCard/metadata.d.ts +14 -0
  120. package/dist/macros/scoreCard/metadata.js +18 -0
  121. package/dist/macros/scoreCard/metadata.js.map +1 -0
  122. package/dist/macros/task-queue.d.ts +46 -0
  123. package/dist/macros/task-queue.js +69 -0
  124. package/dist/macros/task-queue.js.map +1 -0
  125. package/dist/module-manager.d.ts +62 -0
  126. package/dist/module-manager.js +350 -0
  127. package/dist/module-manager.js.map +1 -0
  128. package/dist/permissions/action-guard.d.ts +28 -0
  129. package/dist/permissions/action-guard.js +61 -0
  130. package/dist/permissions/action-guard.js.map +1 -0
  131. package/dist/project-settings.d.ts +42 -0
  132. package/dist/project-settings.js +120 -0
  133. package/dist/project-settings.js.map +1 -0
  134. package/dist/resources/array-handler.d.ts +28 -0
  135. package/dist/resources/array-handler.js +116 -0
  136. package/dist/resources/array-handler.js.map +1 -0
  137. package/dist/resources/card-type-resource.d.ts +72 -0
  138. package/dist/resources/card-type-resource.js +334 -0
  139. package/dist/resources/card-type-resource.js.map +1 -0
  140. package/dist/resources/create-defaults.d.ts +81 -0
  141. package/dist/resources/create-defaults.js +184 -0
  142. package/dist/resources/create-defaults.js.map +1 -0
  143. package/dist/resources/field-type-resource.d.ts +88 -0
  144. package/dist/resources/field-type-resource.js +411 -0
  145. package/dist/resources/field-type-resource.js.map +1 -0
  146. package/dist/resources/file-resource.d.ts +50 -0
  147. package/dist/resources/file-resource.js +301 -0
  148. package/dist/resources/file-resource.js.map +1 -0
  149. package/dist/resources/folder-resource.d.ts +66 -0
  150. package/dist/resources/folder-resource.js +100 -0
  151. package/dist/resources/folder-resource.js.map +1 -0
  152. package/dist/resources/graph-model-resource.d.ts +78 -0
  153. package/dist/resources/graph-model-resource.js +164 -0
  154. package/dist/resources/graph-model-resource.js.map +1 -0
  155. package/dist/resources/graph-view-resource.d.ts +78 -0
  156. package/dist/resources/graph-view-resource.js +163 -0
  157. package/dist/resources/graph-view-resource.js.map +1 -0
  158. package/dist/resources/link-type-resource.d.ts +62 -0
  159. package/dist/resources/link-type-resource.js +150 -0
  160. package/dist/resources/link-type-resource.js.map +1 -0
  161. package/dist/resources/report-resource.d.ts +77 -0
  162. package/dist/resources/report-resource.js +171 -0
  163. package/dist/resources/report-resource.js.map +1 -0
  164. package/dist/resources/resource-object.d.ts +108 -0
  165. package/dist/resources/resource-object.js +147 -0
  166. package/dist/resources/resource-object.js.map +1 -0
  167. package/dist/resources/template-resource.d.ts +82 -0
  168. package/dist/resources/template-resource.js +173 -0
  169. package/dist/resources/template-resource.js.map +1 -0
  170. package/dist/resources/workflow-resource.d.ts +67 -0
  171. package/dist/resources/workflow-resource.js +156 -0
  172. package/dist/resources/workflow-resource.js.map +1 -0
  173. package/dist/types/queries.d.ts +142 -0
  174. package/dist/types/queries.js +16 -0
  175. package/dist/types/queries.js.map +1 -0
  176. package/dist/utils/card-utils.d.ts +34 -0
  177. package/dist/utils/card-utils.js +78 -0
  178. package/dist/utils/card-utils.js.map +1 -0
  179. package/dist/utils/clingo-fact-builder.d.ts +58 -0
  180. package/dist/utils/clingo-fact-builder.js +126 -0
  181. package/dist/utils/clingo-fact-builder.js.map +1 -0
  182. package/dist/utils/clingo-facts.d.ts +97 -0
  183. package/dist/utils/clingo-facts.js +352 -0
  184. package/dist/utils/clingo-facts.js.map +1 -0
  185. package/dist/utils/clingo-parser.d.ts +59 -0
  186. package/dist/utils/clingo-parser.js +403 -0
  187. package/dist/utils/clingo-parser.js.map +1 -0
  188. package/dist/utils/clingo-program-builder.d.ts +39 -0
  189. package/dist/utils/clingo-program-builder.js +57 -0
  190. package/dist/utils/clingo-program-builder.js.map +1 -0
  191. package/dist/utils/common-utils.d.ts +24 -0
  192. package/dist/utils/common-utils.js +47 -0
  193. package/dist/utils/common-utils.js.map +1 -0
  194. package/dist/utils/constants.d.ts +18 -0
  195. package/dist/utils/constants.js +27 -0
  196. package/dist/utils/constants.js.map +1 -0
  197. package/dist/utils/csv.d.ts +18 -0
  198. package/dist/utils/csv.js +45 -0
  199. package/dist/utils/csv.js.map +1 -0
  200. package/dist/utils/file-utils.d.ts +69 -0
  201. package/dist/utils/file-utils.js +158 -0
  202. package/dist/utils/file-utils.js.map +1 -0
  203. package/dist/utils/json.d.ts +61 -0
  204. package/dist/utils/json.js +108 -0
  205. package/dist/utils/json.js.map +1 -0
  206. package/dist/utils/lexorank.d.ts +59 -0
  207. package/dist/utils/lexorank.js +159 -0
  208. package/dist/utils/lexorank.js.map +1 -0
  209. package/dist/utils/log-utils.d.ts +40 -0
  210. package/dist/utils/log-utils.js +109 -0
  211. package/dist/utils/log-utils.js.map +1 -0
  212. package/dist/utils/random.d.ts +19 -0
  213. package/dist/utils/random.js +34 -0
  214. package/dist/utils/random.js.map +1 -0
  215. package/dist/utils/resource-utils.d.ts +45 -0
  216. package/dist/utils/resource-utils.js +137 -0
  217. package/dist/utils/resource-utils.js.map +1 -0
  218. package/dist/utils/sanitize-svg.d.ts +18 -0
  219. package/dist/utils/sanitize-svg.js +38 -0
  220. package/dist/utils/sanitize-svg.js.map +1 -0
  221. package/dist/utils/user-preferences.d.ts +64 -0
  222. package/dist/utils/user-preferences.js +106 -0
  223. package/dist/utils/user-preferences.js.map +1 -0
  224. package/dist/utils/validate.d.ts +26 -0
  225. package/dist/utils/validate.js +53 -0
  226. package/dist/utils/validate.js.map +1 -0
  227. package/dist/utils/value-utils.d.ts +58 -0
  228. package/dist/utils/value-utils.js +181 -0
  229. package/dist/utils/value-utils.js.map +1 -0
  230. package/package.json +67 -0
  231. package/src/card-metadata-updater.ts +182 -0
  232. package/src/command-handler.ts +686 -0
  233. package/src/command-manager.ts +99 -0
  234. package/src/commands/calculate.ts +591 -0
  235. package/src/commands/create.ts +559 -0
  236. package/src/commands/edit.ts +123 -0
  237. package/src/commands/export-site.ts +356 -0
  238. package/src/commands/export.ts +315 -0
  239. package/src/commands/import.ts +169 -0
  240. package/src/commands/index.ts +42 -0
  241. package/src/commands/move.ts +451 -0
  242. package/src/commands/remove.ts +244 -0
  243. package/src/commands/rename.ts +378 -0
  244. package/src/commands/show.ts +442 -0
  245. package/src/commands/transition.ts +127 -0
  246. package/src/commands/update.ts +76 -0
  247. package/src/commands/validate.ts +962 -0
  248. package/src/containers/card-container.ts +378 -0
  249. package/src/containers/project/project-paths.ts +127 -0
  250. package/src/containers/project/resource-collector.ts +379 -0
  251. package/src/containers/project.ts +1135 -0
  252. package/src/containers/template.ts +573 -0
  253. package/src/exceptions/index.ts +29 -0
  254. package/src/index.ts +33 -0
  255. package/src/interfaces/adoc.ts +18 -0
  256. package/src/interfaces/macros.ts +54 -0
  257. package/src/interfaces/project-interfaces.ts +208 -0
  258. package/src/interfaces/request-status-interfaces.ts +30 -0
  259. package/src/interfaces/resource-interfaces.ts +179 -0
  260. package/src/macros/base-macro.ts +176 -0
  261. package/src/macros/common.ts +24 -0
  262. package/src/macros/createCards/index.ts +57 -0
  263. package/src/macros/createCards/metadata.ts +21 -0
  264. package/src/macros/graph/index.ts +130 -0
  265. package/src/macros/graph/metadata.ts +21 -0
  266. package/src/macros/index.ts +321 -0
  267. package/src/macros/report/index.ts +88 -0
  268. package/src/macros/report/metadata.ts +21 -0
  269. package/src/macros/scoreCard/index.ts +55 -0
  270. package/src/macros/scoreCard/metadata.ts +21 -0
  271. package/src/macros/task-queue.ts +79 -0
  272. package/src/module-manager.ts +443 -0
  273. package/src/permissions/action-guard.ts +77 -0
  274. package/src/project-settings.ts +140 -0
  275. package/src/resources/array-handler.ts +141 -0
  276. package/src/resources/card-type-resource.ts +455 -0
  277. package/src/resources/create-defaults.ts +216 -0
  278. package/src/resources/field-type-resource.ts +533 -0
  279. package/src/resources/file-resource.ts +433 -0
  280. package/src/resources/folder-resource.ts +140 -0
  281. package/src/resources/graph-model-resource.ts +205 -0
  282. package/src/resources/graph-view-resource.ts +199 -0
  283. package/src/resources/link-type-resource.ts +191 -0
  284. package/src/resources/report-resource.ts +224 -0
  285. package/src/resources/resource-object.ts +246 -0
  286. package/src/resources/template-resource.ts +210 -0
  287. package/src/resources/workflow-resource.ts +205 -0
  288. package/src/types/queries.ts +149 -0
  289. package/src/utils/card-utils.ts +83 -0
  290. package/src/utils/clingo-fact-builder.ts +167 -0
  291. package/src/utils/clingo-facts.ts +550 -0
  292. package/src/utils/clingo-parser.ts +519 -0
  293. package/src/utils/clingo-program-builder.ts +71 -0
  294. package/src/utils/common-utils.ts +54 -0
  295. package/src/utils/constants.ts +32 -0
  296. package/src/utils/csv.ts +53 -0
  297. package/src/utils/file-utils.ts +182 -0
  298. package/src/utils/json.ts +118 -0
  299. package/src/utils/lexorank.ts +180 -0
  300. package/src/utils/log-utils.ts +127 -0
  301. package/src/utils/random.ts +37 -0
  302. package/src/utils/resource-utils.ts +180 -0
  303. package/src/utils/sanitize-svg.ts +46 -0
  304. package/src/utils/user-preferences.ts +126 -0
  305. package/src/utils/validate.ts +66 -0
  306. package/src/utils/value-utils.ts +189 -0
@@ -0,0 +1,557 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2024
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU Affero General Public License version 3 as published by
6
+ the Free Software Foundation.
7
+ This program is distributed in the hope that it will be useful, but WITHOUT
8
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
+ FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
+ details. You should have received a copy of the GNU Affero General Public
11
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
+ */
13
+ import { dirname, join, resolve } from 'node:path';
14
+ import { execFileSync } from 'node:child_process';
15
+ import { fileURLToPath } from 'node:url';
16
+ import { readFileSync } from 'node:fs';
17
+ import { Create, Validate } from './commands/index.js';
18
+ import { CommandManager } from './command-manager.js';
19
+ import { Project } from './containers/project.js';
20
+ import { pathExists, resolveTilde } from './utils/file-utils.js';
21
+ import { errorFunction } from './utils/log-utils.js';
22
+ import { readJsonFile } from './utils/json.js';
23
+ import { resourceName } from './utils/resource-utils.js';
24
+ // Commands that this class supports.
25
+ // todo: Could be inside the `CommandHandler` ?
26
+ export var Cmd;
27
+ (function (Cmd) {
28
+ Cmd["add"] = "add";
29
+ Cmd["calc"] = "calc";
30
+ Cmd["create"] = "create";
31
+ Cmd["edit"] = "edit";
32
+ Cmd["export"] = "export";
33
+ Cmd["import"] = "import";
34
+ Cmd["move"] = "move";
35
+ Cmd["rank"] = "rank";
36
+ Cmd["remove"] = "remove";
37
+ Cmd["rename"] = "rename";
38
+ Cmd["report"] = "report";
39
+ Cmd["show"] = "show";
40
+ Cmd["start"] = "start";
41
+ Cmd["transition"] = "transition";
42
+ Cmd["update"] = "update";
43
+ Cmd["updateModules"] = "update-modules";
44
+ Cmd["validate"] = "validate";
45
+ })(Cmd || (Cmd = {}));
46
+ // To what format the content can be exported to.
47
+ export var ExportFormats;
48
+ (function (ExportFormats) {
49
+ ExportFormats["adoc"] = "adoc";
50
+ ExportFormats["html"] = "html";
51
+ ExportFormats["site"] = "site";
52
+ })(ExportFormats || (ExportFormats = {}));
53
+ export { CommandManager } from './command-manager.js';
54
+ /**
55
+ * Class that handles all CLI commands.
56
+ */
57
+ export class Commands {
58
+ commands;
59
+ projectPath;
60
+ validateCmd;
61
+ constructor() {
62
+ this.projectPath = '';
63
+ this.validateCmd = Validate.getInstance();
64
+ }
65
+ /**
66
+ * Executes one command for CLI.
67
+ *
68
+ * @note internal functions that this method calls, should return a Promise and throw on error.
69
+ * No internal trap harnesses; all exceptions from internal methods should be caught by this methods trap handler.
70
+ * If internal method has payload, the method should return requestStatus that can be directly returned from calling that function.
71
+ *
72
+ * @param command command to execute
73
+ * @param args arguments for the command
74
+ * @param options options for the command
75
+ * @returns request status; 200 if success; 400 in handled error; 500 in unknown error
76
+ */
77
+ async command(command, args, options) {
78
+ // Set project path and validate it.
79
+ const creatingNewProject = command === Cmd.create && args[0] === 'project';
80
+ if (!creatingNewProject) {
81
+ try {
82
+ await this.doSetProject(options.projectPath || '');
83
+ }
84
+ catch (error) {
85
+ return { statusCode: 400, message: errorFunction(error) };
86
+ }
87
+ }
88
+ else {
89
+ this.projectPath = options.projectPath || '';
90
+ }
91
+ return await this.doHandleCommand(command, args, options);
92
+ }
93
+ // Returns command 'target'.
94
+ // If name is resource name -> returns from <prefix/type/identifier> 'type' in singular form.
95
+ // If not, returns the input parameter.
96
+ commandType(type) {
97
+ const resource = resourceName(type);
98
+ return (resource.type.substring(0, resource.type.length - 1) ||
99
+ type);
100
+ }
101
+ // If 'type' is resource name, replaces original 'target' with 'type'
102
+ commandTarget(type, target) {
103
+ const resource = resourceName(type);
104
+ return resource.type ? type : target;
105
+ }
106
+ // Handles initializing the project so that it can be used in the class.
107
+ async doSetProject(path) {
108
+ this.projectPath = resolveTilde(await this.setProjectPath(path));
109
+ if (!Validate.validateFolder(this.projectPath)) {
110
+ let errorMessage = '';
111
+ if (path === '' || path === undefined) {
112
+ errorMessage = `No 'cardRoot' in the current folder`;
113
+ }
114
+ else {
115
+ errorMessage = `Input validation error: folder name '${path}' is invalid`;
116
+ }
117
+ throw new Error(errorMessage);
118
+ }
119
+ if (!pathExists(this.projectPath)) {
120
+ throw new Error(`Input validation error: cannot find project '${path}'`);
121
+ }
122
+ this.commands = await CommandManager.getInstance(this.projectPath);
123
+ if (!this.commands) {
124
+ throw new Error('Cannot get instance of CommandManager');
125
+ }
126
+ await this.commands.initialize();
127
+ }
128
+ // Handles actual command. Sets returns values correctly.
129
+ async doHandleCommand(command, args, options) {
130
+ try {
131
+ if (command === Cmd.add) {
132
+ const [template, cardType, cardKey] = args;
133
+ return await this.addCard(template, cardType, cardKey, options.repeat);
134
+ }
135
+ else if (command === Cmd.calc) {
136
+ const [command, cardKey] = args;
137
+ if (command === 'run') {
138
+ if (!cardKey) {
139
+ return { statusCode: 400, message: 'File path is missing' };
140
+ }
141
+ await this.generateLogicProgram();
142
+ return this.runLogicProgram(cardKey);
143
+ }
144
+ if (command === 'generate') {
145
+ return this.generateLogicProgram(cardKey);
146
+ }
147
+ }
148
+ else if (command === Cmd.create) {
149
+ const [type, ...rest] = args;
150
+ const target = this.commandType(type);
151
+ // If 'type' was used to deduce 'target', put the parameter back into the args.
152
+ if (target !== type) {
153
+ rest.unshift(type);
154
+ }
155
+ if (target === 'attachment') {
156
+ const [cardKey, attachment] = rest;
157
+ await this.commands?.createCmd.createAttachment(cardKey, attachment);
158
+ }
159
+ else if (target === 'card') {
160
+ const [template, parent] = rest;
161
+ return await this.createCard(template, parent);
162
+ }
163
+ else if (target === 'cardType') {
164
+ const [name, workflow] = rest;
165
+ await this.commands?.createCmd.createCardType(name, workflow);
166
+ }
167
+ else if (target === 'fieldType') {
168
+ const [name, datatype] = rest;
169
+ await this.commands?.createCmd.createFieldType(name, datatype);
170
+ }
171
+ else if (target === 'graphModel') {
172
+ const [name] = rest;
173
+ await this.commands?.createCmd.createGraphModel(name);
174
+ }
175
+ else if (target === 'graphView') {
176
+ const [name] = rest;
177
+ await this.commands?.createCmd.createGraphView(name);
178
+ }
179
+ else if (target == 'label') {
180
+ const [cardKey, label] = rest;
181
+ await this.commands?.createCmd.createLabel(cardKey, label);
182
+ }
183
+ else if (target === 'link') {
184
+ const [cardKey, destinationCardKey, linkType, linkDescription] = rest;
185
+ await this.commands?.createCmd.createLink(cardKey, destinationCardKey, linkType, linkDescription);
186
+ }
187
+ else if (target === 'linkType') {
188
+ const [name] = rest;
189
+ await this.commands?.createCmd.createLinkType(name);
190
+ }
191
+ else if (target === 'project') {
192
+ const [name, prefix] = rest;
193
+ await Create.createProject(resolveTilde(this.projectPath), prefix, name);
194
+ }
195
+ else if (target === 'report') {
196
+ const [name] = rest;
197
+ await this.commands?.createCmd.createReport(name);
198
+ }
199
+ else if (target === 'template') {
200
+ const [name, content] = rest;
201
+ await this.commands?.createCmd.createTemplate(name, content);
202
+ }
203
+ else if (target === 'workflow') {
204
+ const [name, content] = rest;
205
+ await this.commands?.createCmd.createWorkflow(name, content);
206
+ }
207
+ else {
208
+ throw new Error(`Unknown type to create: '${target}'`);
209
+ }
210
+ }
211
+ else if (command === Cmd.edit) {
212
+ const [cardKey] = args;
213
+ await this.commands?.editCmd.editCard(cardKey);
214
+ }
215
+ else if (command === Cmd.export) {
216
+ const [format, output, cardKey] = args;
217
+ await this.export(output, format, cardKey);
218
+ }
219
+ else if (command === Cmd.import) {
220
+ const target = args.splice(0, 1)[0];
221
+ if (target === 'module') {
222
+ const [source, branch, useCredentials] = args;
223
+ await this.import(source, branch, useCredentials && useCredentials === 'true' ? true : false);
224
+ }
225
+ if (target === 'csv') {
226
+ const [csvFile, cardKey] = args;
227
+ return await this.importCsv(csvFile, cardKey);
228
+ }
229
+ }
230
+ else if (command === Cmd.move) {
231
+ const [source, destination] = args;
232
+ await this.commands?.moveCmd.moveCard(source, destination);
233
+ }
234
+ else if (command === Cmd.rank) {
235
+ const target = args.splice(0, 1)[0];
236
+ if (target === 'card') {
237
+ const [card, before] = args;
238
+ if (before === 'first') {
239
+ await this.commands?.moveCmd.rankFirst(card);
240
+ }
241
+ else {
242
+ await this.commands?.moveCmd.rankCard(card, before);
243
+ }
244
+ }
245
+ else if (target === 'rebalance') {
246
+ const [cardKey] = args;
247
+ if (cardKey) {
248
+ await this.commands?.moveCmd.rebalanceChildren(cardKey);
249
+ }
250
+ else {
251
+ await this.commands?.moveCmd.rebalanceProject();
252
+ }
253
+ }
254
+ }
255
+ else if (command === Cmd.remove) {
256
+ const [type, target, ...rest] = args;
257
+ await this.remove(this.commandType(type), this.commandTarget(type, target), rest);
258
+ }
259
+ else if (command === Cmd.rename) {
260
+ const [to] = args;
261
+ await this.commands?.renameCmd.rename(to);
262
+ }
263
+ else if (command === Cmd.show) {
264
+ const [type, detail] = args;
265
+ options.projectPath = this.projectPath;
266
+ return this.show(this.commandType(type), this.commandTarget(type, detail), options);
267
+ }
268
+ else if (command === Cmd.report) {
269
+ const [parameters, outputPath] = args;
270
+ return this.runReport(parameters, outputPath);
271
+ }
272
+ else if (command === Cmd.start) {
273
+ return this.startApp(options.forceStart);
274
+ }
275
+ else if (command === Cmd.transition) {
276
+ const [cardKey, state] = args;
277
+ await this.commands?.transitionCmd.cardTransition(cardKey, {
278
+ name: state,
279
+ });
280
+ }
281
+ else if (command === Cmd.update) {
282
+ const [resource, operation, key, value, newValue] = args;
283
+ let parsedValue = '';
284
+ try {
285
+ parsedValue = JSON.parse(value);
286
+ }
287
+ catch {
288
+ parsedValue = value;
289
+ }
290
+ await this.commands?.updateCmd.updateValue(resource, operation, key, parsedValue, newValue ? JSON.parse(newValue) : undefined);
291
+ }
292
+ else if (command === Cmd.updateModules) {
293
+ await this.commands?.importCmd.updateAllModules();
294
+ }
295
+ else if (command === Cmd.validate) {
296
+ return this.validate();
297
+ }
298
+ else {
299
+ return { statusCode: 500, message: 'Unknown command' };
300
+ }
301
+ }
302
+ catch (e) {
303
+ return { statusCode: 400, message: errorFunction(e) };
304
+ }
305
+ return { statusCode: 200 };
306
+ }
307
+ /**
308
+ * Returns project path, if running operation within project folder.
309
+ * @param path Initial path from where the project path search is started.
310
+ */
311
+ async getProjectPath(path) {
312
+ return this.setProjectPath(path);
313
+ }
314
+ /**
315
+ * Returns project path, if running operation within project folder.
316
+ * Implementation will automatically look for valid project path starting from 'path' and moving upwards in the
317
+ * path until 'root' is reached.
318
+ * @param path Initial path from where the project path search is started.
319
+ * Returns valid project path (contains both .cards and cardRoot subfolders).
320
+ */
321
+ async setProjectPath(path) {
322
+ // Check that path is a project path; ie. contains both .cards and cardRoot subfolders.
323
+ function isProjectPath(path) {
324
+ const cardsPath = resolve(join(path, '.cards'));
325
+ const cardRootPath = resolve(join(path, 'cardRoot'));
326
+ return pathExists(cardsPath) && pathExists(cardRootPath);
327
+ }
328
+ if (!path) {
329
+ path = await Project.findProjectRoot(process.cwd());
330
+ if (path === '') {
331
+ console.error('No path defined with "-p" flag and could not find project. Sorry.');
332
+ process.exit(1);
333
+ }
334
+ }
335
+ path = resolveTilde(path);
336
+ return isProjectPath(path) ? path : '';
337
+ }
338
+ // Adds a new card to a template.
339
+ async addCard(templateName, cardTypeName, cardKey, repeat) {
340
+ const addedCards = await this.commands?.createCmd.addCards(cardTypeName, templateName, cardKey, repeat);
341
+ if (!addedCards || addedCards.length === 0) {
342
+ throw new Error('Failed to add cards');
343
+ }
344
+ const messageTxt = addedCards.length > 1
345
+ ? `${addedCards.length} cards were added to the template '${templateName} : ${JSON.stringify(addedCards)}'`
346
+ : `card '${addedCards[0]}' was added to the template '${templateName}'`;
347
+ return {
348
+ statusCode: 200,
349
+ affectsCards: addedCards,
350
+ message: messageTxt,
351
+ };
352
+ }
353
+ // Creates a new card to a project, or to a template.
354
+ async createCard(templateName, parentCardKey) {
355
+ const createdCards = await this.commands?.createCmd.createCard(templateName, parentCardKey);
356
+ return {
357
+ statusCode: 200,
358
+ affectsCards: createdCards?.map((card) => card.key),
359
+ message: `Created cards ${JSON.stringify(createdCards?.map((card) => card.key))}`,
360
+ };
361
+ }
362
+ // Exports whole or partial card tree to a given format.
363
+ async export(destination = 'output', format, parentCardKey) {
364
+ if (!this.commands) {
365
+ return { statusCode: 500 };
366
+ }
367
+ process.env.EXPORT_FORMAT = format;
368
+ let message = '';
369
+ if (format === 'adoc') {
370
+ message = await this.commands?.exportCmd.exportToADoc(destination, parentCardKey);
371
+ }
372
+ else if (format === 'html') {
373
+ message = await this.commands?.exportCmd.exportToHTML(destination, parentCardKey);
374
+ }
375
+ else if (format === 'site') {
376
+ message = await this.commands?.exportSiteCmd.exportToSite(destination, parentCardKey);
377
+ }
378
+ process.env.EXPORT_FORMAT = '';
379
+ return { statusCode: 200, message: message };
380
+ }
381
+ // Generates logic program for a card.
382
+ async generateLogicProgram(cardKey) {
383
+ try {
384
+ await this.commands?.calculateCmd.generate(cardKey);
385
+ return { statusCode: 200 };
386
+ }
387
+ catch (e) {
388
+ return { statusCode: 500, message: errorFunction(e) };
389
+ }
390
+ }
391
+ // Imports another project to the 'destination' project as a module.
392
+ async import(source, branch, useCredentials) {
393
+ return this.commands?.importCmd.importModule(source, this.projectPath, {
394
+ branch: branch,
395
+ private: useCredentials,
396
+ });
397
+ }
398
+ // Imports cards from a CSV file to a project.
399
+ async importCsv(filePath, parentCardKey) {
400
+ const cards = await this.commands?.importCmd.importCsv(filePath, parentCardKey);
401
+ return {
402
+ statusCode: 200,
403
+ message: `Imported cards:`,
404
+ payload: cards,
405
+ };
406
+ }
407
+ // Removes a card (single card, or parent card and children), or an attachment.
408
+ async remove(type, targetName, args) {
409
+ return await this.commands?.removeCmd.remove(type, targetName, ...args);
410
+ }
411
+ // Runs a given logic program along with the query-language
412
+ async runLogicProgram(filePath) {
413
+ try {
414
+ const res = await this.commands?.calculateCmd.runLogicProgram({
415
+ query: readFileSync(filePath, 'utf-8'),
416
+ });
417
+ return {
418
+ statusCode: 200,
419
+ payload: res,
420
+ };
421
+ }
422
+ catch (e) {
423
+ return { statusCode: 500, message: errorFunction(e) };
424
+ }
425
+ }
426
+ // Runs a report using Handlebars and the provided parameters.
427
+ async runReport(parametersPath, outputPath) {
428
+ const parametersFile = await readJsonFile(parametersPath);
429
+ // Validate the parameters file.
430
+ if (!parametersFile.name) {
431
+ return {
432
+ statusCode: 500,
433
+ message: 'The parameters file must include a "name" field (report name).',
434
+ };
435
+ }
436
+ if (!parametersFile.parameters) {
437
+ return {
438
+ statusCode: 500,
439
+ message: 'The parameters file must include a "parameters" field (report parameters).',
440
+ };
441
+ }
442
+ if (!parametersFile.parameters.cardKey) {
443
+ return {
444
+ statusCode: 500,
445
+ message: 'The parameters file must include a "cardKey" field included in the "parameters".',
446
+ };
447
+ }
448
+ const { name, parameters } = parametersFile;
449
+ let result = '';
450
+ try {
451
+ result = await this.commands?.showCmd.showReportResults(name, parameters.cardKey, parameters, outputPath);
452
+ }
453
+ catch (e) {
454
+ return { statusCode: 500, message: errorFunction(e) };
455
+ }
456
+ const message = !result && !outputPath ? 'No report results' : result;
457
+ return { statusCode: 200, message: message };
458
+ }
459
+ // Shows wanted resources from a project / template.
460
+ async show(type, typeDetail, options) {
461
+ const detail = typeDetail || '';
462
+ let promise;
463
+ switch (type) {
464
+ case 'attachments':
465
+ promise = this.commands.showCmd.showAttachments();
466
+ break;
467
+ case 'card':
468
+ {
469
+ const cardDetails = {
470
+ contentType: 'adoc',
471
+ content: options?.details,
472
+ metadata: true,
473
+ children: options?.details,
474
+ parent: options?.details,
475
+ attachments: true,
476
+ };
477
+ promise = this.commands.showCmd.showCardDetails(cardDetails, detail);
478
+ }
479
+ break;
480
+ case 'cards':
481
+ promise = this.commands.showCmd.showCards();
482
+ break;
483
+ case 'cardType':
484
+ case 'fieldType':
485
+ case 'graphView':
486
+ case 'graphModel':
487
+ case 'linkType':
488
+ case 'report':
489
+ case 'template':
490
+ case 'workflow':
491
+ promise = this.commands.showCmd.showResource(detail, options.showUse);
492
+ break;
493
+ case 'cardTypes':
494
+ case 'fieldTypes':
495
+ case 'graphModels':
496
+ case 'graphViews':
497
+ case 'linkTypes':
498
+ case 'reports':
499
+ case 'templates':
500
+ case 'workflows':
501
+ promise = this.commands.showCmd.showResources(type);
502
+ break;
503
+ case 'labels':
504
+ promise = this.commands.showCmd.showLabels();
505
+ break;
506
+ case 'module':
507
+ promise = this.commands.showCmd.showModule(detail);
508
+ break;
509
+ case 'modules':
510
+ promise = this.commands.showCmd.showModules();
511
+ break;
512
+ case 'project':
513
+ promise = this.commands.showCmd.showProject();
514
+ break;
515
+ case 'attachment': // fallthrough - not implemented yet
516
+ case 'link': // fallthrough - not implemented yet
517
+ case 'links': // fallthrough - not implemented yet
518
+ case 'label':
519
+ default:
520
+ throw new Error(`Unknown or not yet handled type ${type}`);
521
+ }
522
+ return { statusCode: 200, payload: await Promise.resolve(promise) };
523
+ }
524
+ // Starts the Cyberismo app by running npm start in the app project folder
525
+ async startApp(forceStart = false) {
526
+ // __dirname when running cards ends with /tools/data-handler/dist - use that to navigate to app path
527
+ const baseDir = dirname(fileURLToPath(import.meta.url));
528
+ const appPath = resolve(baseDir, '../../app');
529
+ // since current working directory changes, we need to resolve the project path
530
+ const projectPath = resolve(this.projectPath);
531
+ if (!forceStart) {
532
+ const validationErrors = await this.validateCmd.validate(projectPath);
533
+ if (validationErrors) {
534
+ return { statusCode: 400, message: validationErrors };
535
+ }
536
+ }
537
+ console.log('Running Cyberismo app on http://localhost:3000/');
538
+ console.log('Press Control+C to stop.');
539
+ const args = [`start`];
540
+ execFileSync(`npm`, args, {
541
+ shell: true,
542
+ cwd: appPath,
543
+ stdio: 'ignore',
544
+ env: { ...process.env, npm_config_project_path: projectPath },
545
+ });
546
+ return { statusCode: 200 };
547
+ }
548
+ // Validates that a given path conforms to schema. Validates both file/folder structure and file content.
549
+ async validate() {
550
+ const result = await this.validateCmd.validate(this.projectPath);
551
+ return {
552
+ statusCode: 200,
553
+ message: result.length ? result : 'Project structure validated',
554
+ };
555
+ }
556
+ }
557
+ //# sourceMappingURL=command-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-handler.js","sourceRoot":"","sources":["../src/command-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2024
4
+
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
6
+
7
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
8
+
9
+ You should have received a copy of the GNU Affero General Public
10
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
11
+ */
12
+ import { Calculate, Create, Edit, Export, ExportSite, Import, Move, Remove, Rename, Show, Transition, Update, Validate } from './commands/index.js';
13
+ import { Project } from './containers/project.js';
14
+ export declare class CommandManager {
15
+ private static instance;
16
+ project: Project;
17
+ calculateCmd: Calculate;
18
+ createCmd: Create;
19
+ editCmd: Edit;
20
+ exportSiteCmd: ExportSite;
21
+ exportCmd: Export;
22
+ importCmd: Import;
23
+ moveCmd: Move;
24
+ removeCmd: Remove;
25
+ renameCmd: Rename;
26
+ showCmd: Show;
27
+ transitionCmd: Transition;
28
+ updateCmd: Update;
29
+ validateCmd: Validate;
30
+ constructor(path: string);
31
+ /**
32
+ * Some commands needs initialization that cannot be performed inside constructor.
33
+ * Add such calls here.
34
+ */
35
+ initialize(): Promise<void>;
36
+ /**
37
+ * Either creates a new instance, or passes the current one.
38
+ * New instance is created, if path differs, or there is no previous instance.
39
+ * @param path Project path.
40
+ * @returns Instance of this class.
41
+ */
42
+ static getInstance(path: string): Promise<CommandManager>;
43
+ }