@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,352 @@
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 { sep } from 'node:path';
13
+ import { ClingoFactBuilder, } from './clingo-fact-builder.js';
14
+ import { ClingoProgramBuilder } from './clingo-program-builder.js';
15
+ import { isPredefinedField } from './constants.js';
16
+ import { isTemplateCard } from '../utils/card-utils.js';
17
+ // eslint-disable-next-line @typescript-eslint/no-namespace
18
+ export var Facts;
19
+ (function (Facts) {
20
+ let Card;
21
+ (function (Card) {
22
+ Card["LABEL"] = "label";
23
+ Card["LINK"] = "userLink";
24
+ Card["PARENT"] = "parent";
25
+ })(Card = Facts.Card || (Facts.Card = {}));
26
+ let Common;
27
+ (function (Common) {
28
+ Common["FIELD"] = "field";
29
+ Common["MODULE"] = "module";
30
+ Common["PROJECT"] = "project";
31
+ })(Common = Facts.Common || (Facts.Common = {}));
32
+ let CardType;
33
+ (function (CardType) {
34
+ CardType["ALWAYS_VISIBLE_FIELD"] = "alwaysVisibleField";
35
+ CardType["CALCULATED_FIELD"] = "calculatedField";
36
+ CardType["CARD_TYPE"] = "cardType";
37
+ CardType["CUSTOM_FIELD"] = "customField";
38
+ CardType["OPTIONALLY_VISIBLE_FIELD"] = "optionallyVisibleField";
39
+ })(CardType = Facts.CardType || (Facts.CardType = {}));
40
+ let FieldType;
41
+ (function (FieldType) {
42
+ FieldType["ENUM_VALUE"] = "enumValue";
43
+ FieldType["FIELD_TYPE"] = "fieldType";
44
+ })(FieldType = Facts.FieldType || (Facts.FieldType = {}));
45
+ let LinkType;
46
+ (function (LinkType) {
47
+ LinkType["LINK_DESTINATION_CARD_TYPE"] = "linkDestinationCardType";
48
+ LinkType["LINK_SOURCE_CARD_TYPE"] = "linkSourceCardType";
49
+ LinkType["LINK_TYPE"] = "linkType";
50
+ })(LinkType = Facts.LinkType || (Facts.LinkType = {}));
51
+ let Report;
52
+ (function (Report) {
53
+ Report["REPORT"] = "report";
54
+ })(Report = Facts.Report || (Facts.Report = {}));
55
+ let Template;
56
+ (function (Template) {
57
+ Template["TEMPLATE"] = "template";
58
+ })(Template = Facts.Template || (Facts.Template = {}));
59
+ let Workflow;
60
+ (function (Workflow) {
61
+ Workflow["WORKFLOW"] = "workflow";
62
+ Workflow["WORKFLOW_STATE"] = "workflowState";
63
+ Workflow["WORKFLOW_TRANSITION"] = "workflowTransition";
64
+ })(Workflow = Facts.Workflow || (Facts.Workflow = {}));
65
+ })(Facts || (Facts = {}));
66
+ // Compares two index values.
67
+ function compareIndex(a, b) {
68
+ if (a === -1 && b === -1) {
69
+ return 0;
70
+ }
71
+ else if (a === -1) {
72
+ return 1;
73
+ }
74
+ else if (b === -1) {
75
+ return -1;
76
+ }
77
+ return a - b;
78
+ }
79
+ /**
80
+ * Creates Clingo facts for a workflow.
81
+ * @param workflow Workflow metadata
82
+ * @returns clingo facts as a string
83
+ */
84
+ export const createWorkflowFacts = (workflow) => {
85
+ const builder = new ClingoProgramBuilder().addFact(Facts.Workflow.WORKFLOW, workflow.name);
86
+ // add states
87
+ for (const state of workflow.states) {
88
+ if (state.category) {
89
+ builder.addFact(Facts.Workflow.WORKFLOW_STATE, workflow.name, state.name, state.category);
90
+ }
91
+ else {
92
+ builder.addFact(Facts.Workflow.WORKFLOW_STATE, workflow.name, state.name);
93
+ }
94
+ }
95
+ // add transitions
96
+ for (const transition of workflow.transitions) {
97
+ for (const from of transition.fromState) {
98
+ builder.addFact(Facts.Workflow.WORKFLOW_TRANSITION, workflow.name, transition.name, from, transition.toState);
99
+ }
100
+ if (transition.fromState.length === 0) {
101
+ builder.addFact(Facts.Workflow.WORKFLOW_TRANSITION, workflow.name, transition.name, '', transition.toState);
102
+ }
103
+ }
104
+ return builder.buildAll();
105
+ };
106
+ /**
107
+ * Creates Clingo facts for a card.
108
+ * @param card Card information
109
+ * @param project Project information
110
+ * @returns clingo facts as a string
111
+ */
112
+ export const createCardFacts = async (card, project) => {
113
+ // Small helper to deduce parent path
114
+ function parentPath(cardPath) {
115
+ const pathParts = cardPath.split(sep);
116
+ if (pathParts.at(pathParts.length - 2) === 'cardRoot') {
117
+ return '';
118
+ }
119
+ else {
120
+ return pathParts.at(pathParts.length - 3);
121
+ }
122
+ }
123
+ // Helper to deduce template parent path.
124
+ function parentPathFromTemplate(card) {
125
+ const cardPath = card.path;
126
+ const pathParts = cardPath.split(sep);
127
+ if (pathParts.length <= 6) {
128
+ // template or module template paths should have a minimum of seven parts.
129
+ return '';
130
+ }
131
+ if (isTemplateCard(card)) {
132
+ // Parent is a card
133
+ if (pathParts.at(pathParts.length - 4) === 'c') {
134
+ return pathParts.at(pathParts.length - 3);
135
+ }
136
+ // Parent is a template
137
+ const prefix = pathParts.at(pathParts.length - 5) === 'local'
138
+ ? project.projectPrefix
139
+ : pathParts.at(pathParts.length - 5);
140
+ const resourceType = pathParts.at(pathParts.length - 4);
141
+ const templateName = pathParts.at(pathParts.length - 3);
142
+ return `"${prefix}/${resourceType}/${templateName}"`;
143
+ }
144
+ }
145
+ const parentsPath = isTemplateCard(card)
146
+ ? parentPathFromTemplate(card)
147
+ : parentPath(card.path);
148
+ const builder = new ClingoProgramBuilder().addComment(card.key);
149
+ if (card.metadata) {
150
+ for (const [field, value] of Object.entries(card.metadata)) {
151
+ if (field === 'labels') {
152
+ for (const label of value) {
153
+ builder.addCustomFact(Facts.Card.LABEL, (b) => b.addLiteralArgument(card.key).addArgument(label));
154
+ }
155
+ }
156
+ else if (field === 'links') {
157
+ for (const link of value) {
158
+ builder.addCustomFact(Facts.Card.LINK, (b) => b
159
+ .addLiteralArguments(card.key, link.cardKey)
160
+ .addArguments(link.linkType, link.linkDescription ?? null));
161
+ }
162
+ }
163
+ else {
164
+ // Do not write null values
165
+ if (value == null) {
166
+ continue;
167
+ }
168
+ // field might be a non-custom field, which cannot use the fieldType method
169
+ let clingoValue = value.toString();
170
+ if (!isPredefinedField(field)) {
171
+ // field is a custom field, find it
172
+ const fieldType = await project.resource(field);
173
+ if (!fieldType) {
174
+ continue;
175
+ }
176
+ // if it's a list, let's generate multiple values
177
+ if (fieldType.dataType === 'list') {
178
+ if (!Array.isArray(value)) {
179
+ continue;
180
+ }
181
+ for (const listValue of value) {
182
+ builder.addCustomFact(Facts.Common.FIELD, (b) => b
183
+ .addLiteralArgument(card.key)
184
+ .addArguments(field, listValue.toString()));
185
+ }
186
+ continue;
187
+ }
188
+ clingoValue =
189
+ fieldType.dataType === 'integer'
190
+ ? value
191
+ : value.toString();
192
+ }
193
+ builder.addCustomFact(Facts.Common.FIELD, (b) => b.addLiteralArgument(card.key).addArguments(field, clingoValue));
194
+ }
195
+ }
196
+ }
197
+ if (parentsPath !== undefined && parentsPath !== '') {
198
+ builder.addCustomFact(Facts.Card.PARENT, (b) => b.addLiteralArguments(card.key, parentsPath));
199
+ }
200
+ return builder.buildAll();
201
+ };
202
+ /**
203
+ * Creates Clingo facts for a field type.
204
+ * @param fieldType Field type metadata
205
+ * @returns clingo facts as a string
206
+ */
207
+ export const createFieldTypeFacts = (fieldType) => {
208
+ const builder = new ClingoProgramBuilder();
209
+ builder.addFact(Facts.FieldType.FIELD_TYPE, fieldType.name);
210
+ if (fieldType.displayName)
211
+ builder.addFact(Facts.Common.FIELD, fieldType.name, 'displayName', fieldType.displayName);
212
+ if (fieldType.fieldDescription)
213
+ builder.addFact(Facts.Common.FIELD, fieldType.name, 'fieldDescription', fieldType.fieldDescription);
214
+ builder.addFact(Facts.Common.FIELD, fieldType.name, 'dataType', fieldType.dataType);
215
+ if (fieldType.enumValues) {
216
+ let index = 1;
217
+ for (const enumValue of fieldType.enumValues) {
218
+ builder.addFact(Facts.FieldType.ENUM_VALUE, fieldType.name, enumValue.enumValue);
219
+ builder.addCustomFact(Facts.Common.FIELD, (b) => b
220
+ .addArgument((key) => key.addArguments(fieldType.name, enumValue.enumValue))
221
+ .addArguments('index', index++));
222
+ const keyTuple = new ClingoFactBuilder('', '').addArguments(fieldType.name, enumValue.enumValue);
223
+ if (enumValue.enumDisplayValue)
224
+ builder.addCustomFact(Facts.Common.FIELD, (b) => b
225
+ .addArgument(keyTuple)
226
+ .addArguments('enumDisplayValue', enumValue.enumDisplayValue));
227
+ if (enumValue.enumDescription)
228
+ builder.addCustomFact(Facts.Common.FIELD, (b) => b
229
+ .addArgument(keyTuple)
230
+ .addArguments('enumDescription', enumValue.enumDescription));
231
+ }
232
+ }
233
+ return builder.buildAll();
234
+ };
235
+ /**
236
+ * Creates Clingo facts for a card type.
237
+ * @param cardType Card type metadata
238
+ * @returns clingo facts as a string
239
+ */
240
+ export const createCardTypeFacts = (cardType) => {
241
+ const builder = new ClingoProgramBuilder();
242
+ builder.addFact(Facts.CardType.CARD_TYPE, cardType.name);
243
+ builder.addFact(Facts.Common.FIELD, cardType.name, 'workflow', cardType.workflow);
244
+ const customFields = cardType.customFields.toSorted((a, b) => {
245
+ const aFirstIndex = cardType.alwaysVisibleFields.indexOf(a.name);
246
+ const bFirstIndex = cardType.alwaysVisibleFields.indexOf(b.name);
247
+ const aSecondIndex = cardType.optionallyVisibleFields.indexOf(a.name);
248
+ const bSecondIndex = cardType.optionallyVisibleFields.indexOf(b.name);
249
+ return compareIndex(aFirstIndex, bFirstIndex) === 0
250
+ ? compareIndex(aSecondIndex, bSecondIndex)
251
+ : compareIndex(aFirstIndex, bFirstIndex);
252
+ });
253
+ let index = 1;
254
+ for (const customField of customFields) {
255
+ builder.addFact(Facts.CardType.CUSTOM_FIELD, cardType.name, customField.name);
256
+ const keyTuple = new ClingoFactBuilder('', '').addArguments(cardType.name, customField.name);
257
+ if (customField.displayName) {
258
+ builder.addCustomFact(Facts.Common.FIELD, (b) => b.addArgument(keyTuple).addArguments('displayName', customField.displayName));
259
+ }
260
+ if (customField.isCalculated) {
261
+ builder.addFact(Facts.CardType.CALCULATED_FIELD, cardType.name, customField.name);
262
+ }
263
+ let visible = false;
264
+ if (cardType.alwaysVisibleFields.includes(customField.name)) {
265
+ builder.addFact(Facts.CardType.ALWAYS_VISIBLE_FIELD, cardType.name, customField.name);
266
+ visible = true;
267
+ }
268
+ if (cardType.optionallyVisibleFields.includes(customField.name)) {
269
+ builder.addFact(Facts.CardType.OPTIONALLY_VISIBLE_FIELD, cardType.name, customField.name);
270
+ visible = true;
271
+ }
272
+ if (visible) {
273
+ builder.addCustomFact(Facts.Common.FIELD, (b) => b
274
+ .addArgument((key) => key.addArguments(cardType.name, customField.name))
275
+ .addArguments('index', index++));
276
+ }
277
+ }
278
+ return builder.buildAll();
279
+ };
280
+ /**
281
+ * Creates Clingo facts for a link type.
282
+ * @param linkType Link type metadata
283
+ * @returns clingo facts as a string
284
+ */
285
+ export const createLinkTypeFacts = (linkType) => {
286
+ const builder = new ClingoProgramBuilder()
287
+ .addFact(Facts.LinkType.LINK_TYPE, linkType.name)
288
+ .addFact(Facts.Common.FIELD, linkType.name, 'outboundDisplayName', linkType.outboundDisplayName)
289
+ .addFact(Facts.Common.FIELD, linkType.name, 'inboundDisplayName', linkType.inboundDisplayName)
290
+ .addFact(Facts.Common.FIELD, linkType.name, 'enableLinkDescription', linkType.enableLinkDescription);
291
+ for (const sourceCardType of linkType.sourceCardTypes) {
292
+ builder.addFact(Facts.LinkType.LINK_SOURCE_CARD_TYPE, linkType.name, sourceCardType);
293
+ }
294
+ for (const destinationCardType of linkType.destinationCardTypes) {
295
+ builder.addFact(Facts.LinkType.LINK_DESTINATION_CARD_TYPE, linkType.name, destinationCardType);
296
+ }
297
+ return builder.buildAll();
298
+ };
299
+ /**
300
+ * Creates Clingo facts for a module.
301
+ * @param module Module metadata
302
+ * @returns clingo facts as a string
303
+ */
304
+ export const createModuleFacts = (module) => {
305
+ const builder = new ClingoProgramBuilder();
306
+ builder.addFact(Facts.Common.MODULE, module.cardKeyPrefix);
307
+ builder.addFact(Facts.Common.FIELD, module.cardKeyPrefix, 'name', module.name);
308
+ return builder.buildAll();
309
+ };
310
+ /**
311
+ * Creates Clingo facts for a project.
312
+ * @param projectPrefix Card prefix of the project
313
+ * @returns clingo facts as a string
314
+ */
315
+ export const createProjectFacts = (projectPrefix) => {
316
+ const builder = new ClingoProgramBuilder();
317
+ builder.addFact(Facts.Common.PROJECT, projectPrefix);
318
+ return builder.buildAll();
319
+ };
320
+ /**
321
+ * Creates Clingo facts for a report.
322
+ * @param report Report metadata
323
+ * @returns clingo facts as a string
324
+ */
325
+ export const createReportFacts = (report) => {
326
+ const builder = new ClingoProgramBuilder();
327
+ builder.addFact(Facts.Report.REPORT, report.name);
328
+ if (report.displayName)
329
+ builder.addFact(Facts.Common.FIELD, report.name, 'displayName', report.displayName);
330
+ if (report.description)
331
+ builder.addFact(Facts.Common.FIELD, report.name, 'description', report.description);
332
+ if (report.category)
333
+ builder.addFact(Facts.Common.FIELD, report.name, 'category', report.category);
334
+ return builder.buildAll();
335
+ };
336
+ /**
337
+ * Creates Clingo facts about template.
338
+ * @param template Template metadata
339
+ * @returns clingo facts as a string
340
+ */
341
+ export const createTemplateFacts = (template) => {
342
+ const builder = new ClingoProgramBuilder();
343
+ builder.addFact(Facts.Template.TEMPLATE, template.name);
344
+ if (template.displayName)
345
+ builder.addFact(Facts.Common.FIELD, template.name, 'displayName', template.displayName);
346
+ if (template.description)
347
+ builder.addFact(Facts.Common.FIELD, template.name, 'description', template.description);
348
+ if (template.category)
349
+ builder.addFact(Facts.Common.FIELD, template.name, 'category', template.category);
350
+ return builder.buildAll();
351
+ };
352
+ //# sourceMappingURL=clingo-facts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clingo-facts.js","sourceRoot":"","sources":["../../src/utils/clingo-facts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
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 type { BaseResult, ParseResult } from '../types/queries.js';
13
+ /**
14
+ * This function reverses the encoding made by the "encodeClingoValue" function
15
+ */
16
+ export declare function decodeClingoValue(value: string): string;
17
+ declare class ClingoParser {
18
+ private keywords;
19
+ private result;
20
+ private resultQueue;
21
+ private childResultQueue;
22
+ private tempResults;
23
+ private orderQueue;
24
+ private collections;
25
+ private reset;
26
+ /**
27
+ * Command handlers for each possible keyword
28
+ * All of them will get parameters as strings
29
+ * You can trust that clingo will always provide the correct number of parameters / types
30
+ */
31
+ private commandHandlers;
32
+ private getOrInitResult;
33
+ private sortByLevel;
34
+ private getComparableValue;
35
+ private applyResultProcessing;
36
+ /**
37
+ * This methods is responsible for converting clingo output to a parsed object
38
+ * @param input clingo input to parse
39
+ * @returns
40
+ */
41
+ parseInput(input: string): Promise<ParseResult<BaseResult>>;
42
+ /**
43
+ * This method finds the next keyword in a string after a specified point
44
+ * @param input The string which it being searched
45
+ * @param start The position from which to start the search from
46
+ * @returns
47
+ */
48
+ private findKeyword;
49
+ /**
50
+ * This method is a custom parser, which takes in the whole clingo output and parses the arguments.
51
+ * Note: Do not decode in this function. It will be handled on a higher level.
52
+ * As long as this function returns valid clingo, it has done it's responsibility
53
+ * @param input Clingo output
54
+ * @param position Position of the command being parsed inside the string
55
+ * @returns
56
+ */
57
+ private parseArguments;
58
+ }
59
+ export default ClingoParser;