@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.
- package/LICENSE +702 -0
- package/dist/card-metadata-updater.d.ts +33 -0
- package/dist/card-metadata-updater.js +121 -0
- package/dist/card-metadata-updater.js.map +1 -0
- package/dist/command-handler.d.ts +96 -0
- package/dist/command-handler.js +557 -0
- package/dist/command-handler.js.map +1 -0
- package/dist/command-manager.d.ts +43 -0
- package/dist/command-manager.js +73 -0
- package/dist/command-manager.js.map +1 -0
- package/dist/commands/calculate.d.ts +86 -0
- package/dist/commands/calculate.js +444 -0
- package/dist/commands/calculate.js.map +1 -0
- package/dist/commands/create.d.ts +114 -0
- package/dist/commands/create.js +389 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/edit.d.ts +37 -0
- package/dist/commands/edit.js +99 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/export-site.d.ts +45 -0
- package/dist/commands/export-site.js +301 -0
- package/dist/commands/export-site.js.map +1 -0
- package/dist/commands/export.d.ts +53 -0
- package/dist/commands/export.js +251 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +53 -0
- package/dist/commands/import.js +133 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/index.d.ts +26 -0
- package/dist/commands/index.js +27 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/move.d.ts +55 -0
- package/dist/commands/move.js +341 -0
- package/dist/commands/move.js.map +1 -0
- package/dist/commands/remove.d.ts +38 -0
- package/dist/commands/remove.js +192 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/rename.d.ts +46 -0
- package/dist/commands/rename.js +289 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/show.d.ts +124 -0
- package/dist/commands/show.js +345 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/transition.d.ts +27 -0
- package/dist/commands/transition.js +92 -0
- package/dist/commands/transition.js.map +1 -0
- package/dist/commands/update.d.ts +29 -0
- package/dist/commands/update.js +64 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.d.ts +143 -0
- package/dist/commands/validate.js +689 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/containers/card-container.d.ts +44 -0
- package/dist/containers/card-container.js +282 -0
- package/dist/containers/card-container.js.map +1 -0
- package/dist/containers/project/project-paths.d.ts +46 -0
- package/dist/containers/project/project-paths.js +105 -0
- package/dist/containers/project/project-paths.js.map +1 -0
- package/dist/containers/project/resource-collector.d.ts +86 -0
- package/dist/containers/project/resource-collector.js +331 -0
- package/dist/containers/project/resource-collector.js.map +1 -0
- package/dist/containers/project.d.ts +351 -0
- package/dist/containers/project.js +896 -0
- package/dist/containers/project.js.map +1 -0
- package/dist/containers/template.d.ts +108 -0
- package/dist/containers/template.js +433 -0
- package/dist/containers/template.js.map +1 -0
- package/dist/exceptions/index.d.ts +19 -0
- package/dist/exceptions/index.js +26 -0
- package/dist/exceptions/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/adoc.d.ts +12 -0
- package/dist/interfaces/adoc.js +13 -0
- package/dist/interfaces/adoc.js.map +1 -0
- package/dist/interfaces/macros.d.ts +45 -0
- package/dist/interfaces/macros.js +13 -0
- package/dist/interfaces/macros.js.map +1 -0
- package/dist/interfaces/project-interfaces.d.ts +121 -0
- package/dist/interfaces/project-interfaces.js +21 -0
- package/dist/interfaces/project-interfaces.js.map +1 -0
- package/dist/interfaces/request-status-interfaces.d.ts +28 -0
- package/dist/interfaces/request-status-interfaces.js +20 -0
- package/dist/interfaces/request-status-interfaces.js.map +1 -0
- package/dist/interfaces/resource-interfaces.d.ts +117 -0
- package/dist/interfaces/resource-interfaces.js +20 -0
- package/dist/interfaces/resource-interfaces.js.map +1 -0
- package/dist/macros/base-macro.d.ts +31 -0
- package/dist/macros/base-macro.js +126 -0
- package/dist/macros/base-macro.js.map +1 -0
- package/dist/macros/common.d.ts +17 -0
- package/dist/macros/common.js +23 -0
- package/dist/macros/common.js.map +1 -0
- package/dist/macros/createCards/index.d.ts +36 -0
- package/dist/macros/createCards/index.js +35 -0
- package/dist/macros/createCards/index.js.map +1 -0
- package/dist/macros/createCards/metadata.d.ts +14 -0
- package/dist/macros/createCards/metadata.js +18 -0
- package/dist/macros/createCards/metadata.js.map +1 -0
- package/dist/macros/graph/index.d.ts +29 -0
- package/dist/macros/graph/index.js +91 -0
- package/dist/macros/graph/index.js.map +1 -0
- package/dist/macros/graph/metadata.d.ts +14 -0
- package/dist/macros/graph/metadata.js +18 -0
- package/dist/macros/graph/metadata.js.map +1 -0
- package/dist/macros/index.d.ts +93 -0
- package/dist/macros/index.js +237 -0
- package/dist/macros/index.js.map +1 -0
- package/dist/macros/report/index.d.ts +26 -0
- package/dist/macros/report/index.js +70 -0
- package/dist/macros/report/index.js.map +1 -0
- package/dist/macros/report/metadata.d.ts +14 -0
- package/dist/macros/report/metadata.js +18 -0
- package/dist/macros/report/metadata.js.map +1 -0
- package/dist/macros/scoreCard/index.d.ts +30 -0
- package/dist/macros/scoreCard/index.js +38 -0
- package/dist/macros/scoreCard/index.js.map +1 -0
- package/dist/macros/scoreCard/metadata.d.ts +14 -0
- package/dist/macros/scoreCard/metadata.js +18 -0
- package/dist/macros/scoreCard/metadata.js.map +1 -0
- package/dist/macros/task-queue.d.ts +46 -0
- package/dist/macros/task-queue.js +69 -0
- package/dist/macros/task-queue.js.map +1 -0
- package/dist/module-manager.d.ts +62 -0
- package/dist/module-manager.js +350 -0
- package/dist/module-manager.js.map +1 -0
- package/dist/permissions/action-guard.d.ts +28 -0
- package/dist/permissions/action-guard.js +61 -0
- package/dist/permissions/action-guard.js.map +1 -0
- package/dist/project-settings.d.ts +42 -0
- package/dist/project-settings.js +120 -0
- package/dist/project-settings.js.map +1 -0
- package/dist/resources/array-handler.d.ts +28 -0
- package/dist/resources/array-handler.js +116 -0
- package/dist/resources/array-handler.js.map +1 -0
- package/dist/resources/card-type-resource.d.ts +72 -0
- package/dist/resources/card-type-resource.js +334 -0
- package/dist/resources/card-type-resource.js.map +1 -0
- package/dist/resources/create-defaults.d.ts +81 -0
- package/dist/resources/create-defaults.js +184 -0
- package/dist/resources/create-defaults.js.map +1 -0
- package/dist/resources/field-type-resource.d.ts +88 -0
- package/dist/resources/field-type-resource.js +411 -0
- package/dist/resources/field-type-resource.js.map +1 -0
- package/dist/resources/file-resource.d.ts +50 -0
- package/dist/resources/file-resource.js +301 -0
- package/dist/resources/file-resource.js.map +1 -0
- package/dist/resources/folder-resource.d.ts +66 -0
- package/dist/resources/folder-resource.js +100 -0
- package/dist/resources/folder-resource.js.map +1 -0
- package/dist/resources/graph-model-resource.d.ts +78 -0
- package/dist/resources/graph-model-resource.js +164 -0
- package/dist/resources/graph-model-resource.js.map +1 -0
- package/dist/resources/graph-view-resource.d.ts +78 -0
- package/dist/resources/graph-view-resource.js +163 -0
- package/dist/resources/graph-view-resource.js.map +1 -0
- package/dist/resources/link-type-resource.d.ts +62 -0
- package/dist/resources/link-type-resource.js +150 -0
- package/dist/resources/link-type-resource.js.map +1 -0
- package/dist/resources/report-resource.d.ts +77 -0
- package/dist/resources/report-resource.js +171 -0
- package/dist/resources/report-resource.js.map +1 -0
- package/dist/resources/resource-object.d.ts +108 -0
- package/dist/resources/resource-object.js +147 -0
- package/dist/resources/resource-object.js.map +1 -0
- package/dist/resources/template-resource.d.ts +82 -0
- package/dist/resources/template-resource.js +173 -0
- package/dist/resources/template-resource.js.map +1 -0
- package/dist/resources/workflow-resource.d.ts +67 -0
- package/dist/resources/workflow-resource.js +156 -0
- package/dist/resources/workflow-resource.js.map +1 -0
- package/dist/types/queries.d.ts +142 -0
- package/dist/types/queries.js +16 -0
- package/dist/types/queries.js.map +1 -0
- package/dist/utils/card-utils.d.ts +34 -0
- package/dist/utils/card-utils.js +78 -0
- package/dist/utils/card-utils.js.map +1 -0
- package/dist/utils/clingo-fact-builder.d.ts +58 -0
- package/dist/utils/clingo-fact-builder.js +126 -0
- package/dist/utils/clingo-fact-builder.js.map +1 -0
- package/dist/utils/clingo-facts.d.ts +97 -0
- package/dist/utils/clingo-facts.js +352 -0
- package/dist/utils/clingo-facts.js.map +1 -0
- package/dist/utils/clingo-parser.d.ts +59 -0
- package/dist/utils/clingo-parser.js +403 -0
- package/dist/utils/clingo-parser.js.map +1 -0
- package/dist/utils/clingo-program-builder.d.ts +39 -0
- package/dist/utils/clingo-program-builder.js +57 -0
- package/dist/utils/clingo-program-builder.js.map +1 -0
- package/dist/utils/common-utils.d.ts +24 -0
- package/dist/utils/common-utils.js +47 -0
- package/dist/utils/common-utils.js.map +1 -0
- package/dist/utils/constants.d.ts +18 -0
- package/dist/utils/constants.js +27 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/csv.d.ts +18 -0
- package/dist/utils/csv.js +45 -0
- package/dist/utils/csv.js.map +1 -0
- package/dist/utils/file-utils.d.ts +69 -0
- package/dist/utils/file-utils.js +158 -0
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/json.d.ts +61 -0
- package/dist/utils/json.js +108 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/lexorank.d.ts +59 -0
- package/dist/utils/lexorank.js +159 -0
- package/dist/utils/lexorank.js.map +1 -0
- package/dist/utils/log-utils.d.ts +40 -0
- package/dist/utils/log-utils.js +109 -0
- package/dist/utils/log-utils.js.map +1 -0
- package/dist/utils/random.d.ts +19 -0
- package/dist/utils/random.js +34 -0
- package/dist/utils/random.js.map +1 -0
- package/dist/utils/resource-utils.d.ts +45 -0
- package/dist/utils/resource-utils.js +137 -0
- package/dist/utils/resource-utils.js.map +1 -0
- package/dist/utils/sanitize-svg.d.ts +18 -0
- package/dist/utils/sanitize-svg.js +38 -0
- package/dist/utils/sanitize-svg.js.map +1 -0
- package/dist/utils/user-preferences.d.ts +64 -0
- package/dist/utils/user-preferences.js +106 -0
- package/dist/utils/user-preferences.js.map +1 -0
- package/dist/utils/validate.d.ts +26 -0
- package/dist/utils/validate.js +53 -0
- package/dist/utils/validate.js.map +1 -0
- package/dist/utils/value-utils.d.ts +58 -0
- package/dist/utils/value-utils.js +181 -0
- package/dist/utils/value-utils.js.map +1 -0
- package/package.json +67 -0
- package/src/card-metadata-updater.ts +182 -0
- package/src/command-handler.ts +686 -0
- package/src/command-manager.ts +99 -0
- package/src/commands/calculate.ts +591 -0
- package/src/commands/create.ts +559 -0
- package/src/commands/edit.ts +123 -0
- package/src/commands/export-site.ts +356 -0
- package/src/commands/export.ts +315 -0
- package/src/commands/import.ts +169 -0
- package/src/commands/index.ts +42 -0
- package/src/commands/move.ts +451 -0
- package/src/commands/remove.ts +244 -0
- package/src/commands/rename.ts +378 -0
- package/src/commands/show.ts +442 -0
- package/src/commands/transition.ts +127 -0
- package/src/commands/update.ts +76 -0
- package/src/commands/validate.ts +962 -0
- package/src/containers/card-container.ts +378 -0
- package/src/containers/project/project-paths.ts +127 -0
- package/src/containers/project/resource-collector.ts +379 -0
- package/src/containers/project.ts +1135 -0
- package/src/containers/template.ts +573 -0
- package/src/exceptions/index.ts +29 -0
- package/src/index.ts +33 -0
- package/src/interfaces/adoc.ts +18 -0
- package/src/interfaces/macros.ts +54 -0
- package/src/interfaces/project-interfaces.ts +208 -0
- package/src/interfaces/request-status-interfaces.ts +30 -0
- package/src/interfaces/resource-interfaces.ts +179 -0
- package/src/macros/base-macro.ts +176 -0
- package/src/macros/common.ts +24 -0
- package/src/macros/createCards/index.ts +57 -0
- package/src/macros/createCards/metadata.ts +21 -0
- package/src/macros/graph/index.ts +130 -0
- package/src/macros/graph/metadata.ts +21 -0
- package/src/macros/index.ts +321 -0
- package/src/macros/report/index.ts +88 -0
- package/src/macros/report/metadata.ts +21 -0
- package/src/macros/scoreCard/index.ts +55 -0
- package/src/macros/scoreCard/metadata.ts +21 -0
- package/src/macros/task-queue.ts +79 -0
- package/src/module-manager.ts +443 -0
- package/src/permissions/action-guard.ts +77 -0
- package/src/project-settings.ts +140 -0
- package/src/resources/array-handler.ts +141 -0
- package/src/resources/card-type-resource.ts +455 -0
- package/src/resources/create-defaults.ts +216 -0
- package/src/resources/field-type-resource.ts +533 -0
- package/src/resources/file-resource.ts +433 -0
- package/src/resources/folder-resource.ts +140 -0
- package/src/resources/graph-model-resource.ts +205 -0
- package/src/resources/graph-view-resource.ts +199 -0
- package/src/resources/link-type-resource.ts +191 -0
- package/src/resources/report-resource.ts +224 -0
- package/src/resources/resource-object.ts +246 -0
- package/src/resources/template-resource.ts +210 -0
- package/src/resources/workflow-resource.ts +205 -0
- package/src/types/queries.ts +149 -0
- package/src/utils/card-utils.ts +83 -0
- package/src/utils/clingo-fact-builder.ts +167 -0
- package/src/utils/clingo-facts.ts +550 -0
- package/src/utils/clingo-parser.ts +519 -0
- package/src/utils/clingo-program-builder.ts +71 -0
- package/src/utils/common-utils.ts +54 -0
- package/src/utils/constants.ts +32 -0
- package/src/utils/csv.ts +53 -0
- package/src/utils/file-utils.ts +182 -0
- package/src/utils/json.ts +118 -0
- package/src/utils/lexorank.ts +180 -0
- package/src/utils/log-utils.ts +127 -0
- package/src/utils/random.ts +37 -0
- package/src/utils/resource-utils.ts +180 -0
- package/src/utils/sanitize-svg.ts +46 -0
- package/src/utils/user-preferences.ts +126 -0
- package/src/utils/validate.ts +66 -0
- 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;
|