@cyberismo/assets 0.0.11 → 0.0.12

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 (41) hide show
  1. package/dist/index.js +130 -22
  2. package/dist/schemas.d.ts +267 -210
  3. package/dist/static/defaultGraphView/.schema +7 -0
  4. package/dist/static/defaultGraphView/parameterSchema.json +22 -0
  5. package/dist/static/defaultGraphView/view.lp.hbs +0 -0
  6. package/dist/static/defaultReport/parameterSchema.json +4 -4
  7. package/package.json +2 -2
  8. package/src/calculations/common/queryLanguage.lp +8 -1
  9. package/src/exportPdfReport/index.adoc.hbs +25 -6
  10. package/src/exportPdfReport/query.lp.hbs +112 -2
  11. package/src/hub/moduleList.json +34 -0
  12. package/src/schema/cardBaseSchema.json +4 -4
  13. package/src/schema/cardTreeDirectorySchema.json +179 -179
  14. package/src/schema/cardsConfigSchema.json +16 -4
  15. package/src/schema/csvSchema.json +3 -3
  16. package/src/schema/dotSchema.json +3 -3
  17. package/src/schema/hubSchema.json +58 -0
  18. package/src/schema/macros/createCardsMacroSchema.json +3 -3
  19. package/src/schema/macros/graphMacroBaseSchema.json +3 -3
  20. package/src/schema/macros/imageMacroSchema.json +3 -3
  21. package/src/schema/macros/includeMacroSchema.json +3 -3
  22. package/src/schema/macros/percentageMacroSchema.json +3 -3
  23. package/src/schema/macros/reportMacroBaseSchema.json +3 -3
  24. package/src/schema/macros/scoreCardMacroSchema.json +3 -3
  25. package/src/schema/macros/vegaLiteMacroSchema.json +8 -8
  26. package/src/schema/macros/vegaMacroSchema.json +10 -10
  27. package/src/schema/macros/xrefMacroSchema.json +3 -3
  28. package/src/schema/resources/cardTypeSchema.json +4 -4
  29. package/src/schema/resources/fieldTypeSchema.json +4 -4
  30. package/src/schema/resources/graphModelSchema.json +3 -3
  31. package/src/schema/resources/graphViewSchema.json +3 -3
  32. package/src/schema/resources/linkTypeSchema.json +4 -4
  33. package/src/schema/resources/reportSchema.json +3 -3
  34. package/src/schema/resources/templateSchema.json +4 -4
  35. package/src/schema/resources/workflowSchema.json +4 -4
  36. package/src/schema/schema.json +4 -4
  37. package/src/schemas.ts +2 -0
  38. package/src/static/defaultGraphView/.schema +7 -0
  39. package/src/static/defaultGraphView/parameterSchema.json +22 -0
  40. package/src/static/defaultGraphView/view.lp.hbs +0 -0
  41. package/src/static/defaultReport/parameterSchema.json +4 -4
@@ -132,18 +132,21 @@ childResult(Key, (Key, Field, Value), Field) :-
132
132
  resultField((Key, Field, Value), "value", Value, "shortText") :-
133
133
  childResult(Key, (Key, Field, Value), Field),
134
134
  field(Key, Field, Value),
135
+ not resultField(Key, Field, Value, "list"),
135
136
  dataType(Key, Field, "list").
136
137
 
137
138
  resultField((Key, Field, Value), "index", Index, "integer") :-
138
139
  childResult(Key, (Key, Field, Value), Field),
139
140
  field(Key, Field, Value),
140
141
  dataType(Key, Field, "list"),
142
+ not resultField(Key, Field, Value, "list"),
141
143
  field((Field, Value), "index", Index).
142
144
 
143
145
  resultField((Key, Field, Value), "displayName", EnumDisplayValue, "shortText") :-
144
146
  childResult(Key, (Key, Field, Value), Field),
145
147
  field(Key, Field, Value),
146
148
  dataType(Key, Field, "list"),
149
+ not resultField(Key, Field, Value, "list"),
147
150
  field((Field, Value), "enumDisplayValue", EnumDisplayValue).
148
151
 
149
152
  % enum
@@ -159,11 +162,12 @@ resultField((Key, Field), "value", Value, "shortText") :-
159
162
 
160
163
  resultField((Key, Field), "index", Index, "integer") :-
161
164
  childObject(Key, (Key, Field), Field),
162
- resultField(Key, Field, _, _),
165
+ resultField(Key, Field, Value, _),
163
166
  field((Field, Value), "index", Index).
164
167
 
165
168
  resultField((Key, Field), "displayValue", EnumDisplayValue, "shortText") :-
166
169
  childObject(Key, (Key, Field), Field),
170
+ resultField(Key, Field, Value, _),
167
171
  field((Field, Value), "enumDisplayValue", EnumDisplayValue).
168
172
 
169
173
 
@@ -175,18 +179,21 @@ childObject(Key, (Key, Field), Field) :-
175
179
  resultField((Key, Field), "value", Value, "shortText") :-
176
180
  childObject(Key, (Key, Field), Field),
177
181
  field(Key, Field, Value),
182
+ not resultField(Key, Field, Value, "enum"),
178
183
  dataType(Key, Field, "enum").
179
184
 
180
185
  resultField((Key, Field), "index", Index, "integer") :-
181
186
  childObject(Key, (Key, Field), Field),
182
187
  field(Key, Field, Value),
183
188
  dataType(Key, Field, "enum"),
189
+ not resultField(Key, Field, Value, "enum"),
184
190
  field((Field, Value), "index", Index).
185
191
 
186
192
  resultField((Key, Field), "displayValue", EnumDisplayValue, "shortText") :-
187
193
  childObject(Key, (Key, Field), Field),
188
194
  field(Key, Field, Value),
189
195
  dataType(Key, Field, "enum"),
196
+ not resultField(Key, Field, Value, "enum"),
190
197
  field((Field, Value), "enumDisplayValue", EnumDisplayValue).
191
198
 
192
199
  % Allow specifying up to 3 fields at the same time
@@ -18,12 +18,31 @@ toc::[]
18
18
  "levelOffset": "{{this.levelOffset}}",
19
19
  "title": "only"
20
20
  {{/include}}
21
- [horizontal]
22
- {{#each this}}
23
- {{#if (isCustomField @key)}}
24
- {{@key}}:: {{formatValue this}}
25
- {{/if}}
26
- {{/each}}
21
+ [cols="1,4",frame=none,grid=none]
22
+ |===
23
+ | Card key | {{this.key}}
24
+ | Card type | {{#if this.cardTypeDisplayName}}{{this.cardTypeDisplayName}}{{else}}{{this.cardType}}{{/if}}
25
+ | Last modified | {{this.lastUpdated}}
26
+ {{#if this.labels}}
27
+ | Labels | {{#each this.labels}}{{this}}{{#unless @last}}, {{/unless}}{{/each}}
28
+ {{/if}}
29
+ {{#each this.fields}}
30
+ | {{fieldDisplayName}} | {{formatValue value}}
31
+ {{/each}}
32
+ |===
33
+ {empty} +
34
+ {{#if this.links}}
35
+ [discrete]
36
+ ==== Linked cards
37
+
38
+ [cols="1,4",frame=none,grid=none]
39
+ |===
40
+ {{#each this.links}}
41
+ | {{displayName}} | xref:{{this.key}}[{{this.title}}]{{#if this.linkDescription}} - {{this.linkDescription}}{{/if}}
42
+ {{/each}}
43
+ |===
44
+ {{/if}}
45
+ {empty} +
27
46
  {{#include}}
28
47
  "cardKey": "{{this.key}}",
29
48
  "levelOffset": "{{this.levelOffset}}",
@@ -40,8 +40,118 @@ treePath(Card, FullPath) :-
40
40
  % Sort by tree path (lexicographic ordering will give us depth-first)
41
41
  order(1, "results", 1, "treePath", "ASC").
42
42
 
43
- selectAll.
44
-
45
43
  % Map level to levelOffset and add tree path for sorting
46
44
  field(Card, "levelOffset", Level) :- cardLevel(Card, Level), result(Card).
47
45
  field(Card, "treePath", Path) :- treePath(Card, Path), result(Card).
46
+
47
+ % Add fields structure similar to card query
48
+ % a helper term for display names
49
+ displayName(Card, (Card, Field), DisplayName) :-
50
+ field(Card, Field, _),
51
+ fieldType(Field),
52
+ field(Field, "displayName", DisplayName),
53
+ field(Card, "cardType", CardType),
54
+ not field((CardType, Field), "displayName", _).
55
+
56
+ displayName(Card, (Card, Field), DisplayName) :-
57
+ field(Card, "cardType", CardType),
58
+ fieldType(Field),
59
+ field((CardType, Field), "displayName", DisplayName).
60
+
61
+ % the second level includes metadata for the always visible and optionally visible fields
62
+ field((Card, Field), "key", Field) :-
63
+ customField(CardType, Field),
64
+ field(Card, "cardType", CardType),
65
+ result(Card).
66
+
67
+ resultField((Card, Field), "visibility", "always") :-
68
+ alwaysVisibleField(CardType, Field),
69
+ field(Card, "cardType", CardType),
70
+ result(Card).
71
+
72
+ resultField((Card, Field), "visibility", "optional") :-
73
+ optionallyVisibleField(CardType, Field),
74
+ field(Card, "cardType", CardType),
75
+ result(Card).
76
+
77
+ resultField((Card, Field), "index", Index) :-
78
+ alwaysVisibleField(CardType, Field),
79
+ field((CardType, Field), "index", Index),
80
+ field(Card, "cardType", CardType),
81
+ result(Card).
82
+
83
+ resultField((Card, Field), "index", Index) :-
84
+ optionallyVisibleField(CardType, Field),
85
+ field((CardType, Field), "index", Index),
86
+ field(Card, "cardType", CardType),
87
+ result(Card).
88
+
89
+ resultField((Card, Field), "fieldDisplayName", DisplayName, "shortText") :-
90
+ childResult(Card, (Card, Field), "fields"),
91
+ result(Card),
92
+ displayName(Card, (Card, Field), DisplayName).
93
+
94
+ resultField((Card, Field), "fieldDescription", Description, "shortText") :-
95
+ childResult(Card, (Card, Field), "fields"),
96
+ result(Card),
97
+ field(Field, "description", Description).
98
+
99
+ % add value
100
+ dataType((Card, Field), "value", DataType) :-
101
+ childResult(Card, (Card, Field), "fields"),
102
+ result(Card),
103
+ field(Card, Field, Value),
104
+ dataType(Card, Field, DataType).
105
+
106
+ % add value
107
+ field((Card, Field), "value", Value) :-
108
+ childResult(Card, (Card, Field), "fields"),
109
+ field(Card, Field, Value).
110
+
111
+ resultField(((Card, Field), "value"), "displayValue", EnumDisplayValue, "shortText") :-
112
+ childResult(Card, (Card, Field), "fields"),
113
+ dataType(Card, Field, "enum"),
114
+ field((Card, Field), "value", Value),
115
+ field((Field, Value), "enumDisplayValue", EnumDisplayValue).
116
+
117
+ resultField(((Card, Field), "value", Value), "displayValue", EnumDisplayValue, "shortText") :-
118
+ childResult(Card, (Card, Field), "fields"),
119
+ dataType(Card, Field, "list"),
120
+ field(Card, Field, Value),
121
+ field((Field, Value), "enumDisplayValue", EnumDisplayValue).
122
+
123
+ % add cardTypeDisplayName
124
+ resultField(Card, "cardTypeDisplayName", DisplayName, "shortText") :-
125
+ result(Card),
126
+ field(Card, "cardType", CardType),
127
+ field(CardType, "displayName", DisplayName).
128
+
129
+ % select only non-custom fields
130
+ select(1, "cardType").
131
+ select(1, "cardTypeDisplayName").
132
+ select(1, "key").
133
+ select(1, "lastUpdated").
134
+ select(1, "links").
135
+ select(1, "labels").
136
+ select(1, "levelOffset").
137
+ select(1, "treePath").
138
+
139
+ % Fields
140
+ select(2, "fields", "key").
141
+ select(2, "fields", "value").
142
+
143
+ childResultCollection(Card, "fields") :-
144
+ result(Card).
145
+
146
+ childResult(Card, (Card, Field), "fields") :-
147
+ alwaysVisibleField(CardType, Field),
148
+ field(Card, "cardType", CardType),
149
+ result(Card).
150
+
151
+ childResult(Card, (Card, Field), "fields") :-
152
+ optionallyVisibleField(CardType, Field),
153
+ field(Card, "cardType", CardType),
154
+ result(Card).
155
+
156
+ order(2, "fields", 1, "visibility", "ASC").
157
+ order(2, "fields", 2, "index", "ASC").
@@ -0,0 +1,34 @@
1
+ {
2
+ "description": "Cyberismo default hub",
3
+ "displayName": "Cyberismo default hub",
4
+ "modules": [
5
+ {
6
+ "name": "base",
7
+ "displayName": "Base module",
8
+ "category": "essentials",
9
+ "location": "git@github.com:CyberismoCom/module-base.git",
10
+ "documentationLocation": "https://github.com/CyberismoCom/module-base/blob/main/README.adoc"
11
+ },
12
+ {
13
+ "name": "eucra",
14
+ "displayName": "Cyberismo EU Cyber Resilience Act",
15
+ "category": "essentials",
16
+ "location": "git@github.com:CyberismoCom/module-eu-cra.git",
17
+ "documentationLocation": "https://github.com/CyberismoCom/module-eu-cra/blob/main/README.adoc"
18
+ },
19
+ {
20
+ "name": "ismsa",
21
+ "displayName": "ISMS Essentials",
22
+ "category": "essentials",
23
+ "location": "git@github.com:CyberismoCom/module-isms-essentials.git",
24
+ "documentationLocation": "https://github.com/CyberismoCom/module-isms-essentials/blob/main/README.adoc"
25
+ },
26
+ {
27
+ "name": "secdeva",
28
+ "displayName": "Secure development essentials",
29
+ "category": "essentials",
30
+ "location": "git@github.com:CyberismoCom/module-secure-development-essentials.git",
31
+ "documentationLocation": "https://github.com/CyberismoCom/module-secure-development-essentials/blob/main/README.adoc"
32
+ }
33
+ ]
34
+ }
@@ -1,9 +1,7 @@
1
1
  {
2
- "title": "Card",
3
2
  "$id": "cardBaseSchema",
4
- "description": "Cards represent different types of tickets, issues and documents. All cards must be valid against this parent schema.",
5
- "type": "object",
6
3
  "additionalProperties": true,
4
+ "description": "Cards represent different types of tickets, issues and documents. All cards must be valid against this parent schema.",
7
5
  "properties": {
8
6
  "cardType": {
9
7
  "type": "string",
@@ -72,5 +70,7 @@
72
70
  "description": "Card key from which this card has been instantiated"
73
71
  }
74
72
  },
75
- "required": ["title", "cardType", "workflowState", "rank"]
73
+ "required": ["title", "cardType", "workflowState", "rank"],
74
+ "title": "Card",
75
+ "type": "object"
76
76
  }
@@ -1,182 +1,4 @@
1
1
  {
2
- "title": "Card directory tree schema",
3
- "$id": "cardTreeDirectorySchema",
4
- "description": "This schema represents the directory structure of a card tree, using the format of https://github.com/jpoehnelt/directory-schema-validator",
5
- "type": "object",
6
- "properties": {
7
- "directories": {
8
- "type": "object",
9
- "properties": {
10
- ".cards": {
11
- "description": "Configuration for the card tree",
12
- "type": "object",
13
- "properties": {
14
- "files": {
15
- "type": "object",
16
- "additionalProperties": false
17
- },
18
- "directories": {
19
- "type": "object",
20
- "additionalProperties": false,
21
- "properties": {
22
- "modules": {
23
- "$ref": "#/$defs/cardModuleSchema"
24
- },
25
- "local": {
26
- "type": "object",
27
- "properties": {
28
- "files": {
29
- "type": "object",
30
- "additionalProperties": false,
31
- "properties": {
32
- ".schema": {},
33
- "cardsConfig.json": {}
34
- },
35
- "required": [".schema", "cardsConfig.json"]
36
- },
37
- "directories": {
38
- "type": "object",
39
- "additionalProperties": false,
40
- "properties": {
41
- "calculations": {
42
- "$ref": "#/$defs/calculationResourceSchema"
43
- },
44
- "cardTypes": {
45
- "$ref": "#/$defs/cardTypeResourceSchema"
46
- },
47
- "fieldTypes": {
48
- "$ref": "#/$defs/fieldTypeResourceSchema"
49
- },
50
- "graphViews": {
51
- "$ref": "#/$defs/graphViewResourceSchema"
52
- },
53
- "graphModels": {
54
- "$ref": "#/$defs/graphModelResourceSchema"
55
- },
56
- "linkTypes": {
57
- "$ref": "#/$defs/linkTypeResourceSchema"
58
- },
59
- "reports": {
60
- "$ref": "#/$defs/reportResourceSchema"
61
- },
62
- "templates": {
63
- "$ref": "#/$defs/templatesResourceSchema"
64
- },
65
- "workflows": {
66
- "$ref": "#/$defs/workflowResourceSchema"
67
- }
68
- }
69
- }
70
- }
71
- }
72
- },
73
- "required": ["local"]
74
- }
75
- }
76
- },
77
- "cardRoot": {
78
- "description": "The contents of the card tree. Each subdirectory contains a top level card. The name of the directory is the card key.",
79
- "type": "object",
80
- "properties": {
81
- "files": {
82
- "type": "object",
83
- "additionalProperties": false,
84
- "properties": {
85
- ".gitkeep": {},
86
- ".schema": {}
87
- }
88
- },
89
- "directories": {
90
- "type": "object",
91
- "additionalProperties": false,
92
- "patternProperties": {
93
- "^[a-z]+_[0-9a-z]+$": {
94
- "$ref": "#/$defs/cardDirectorySchema#"
95
- }
96
- }
97
- }
98
- }
99
- },
100
- ".calc": {
101
- "description": "Temporary files for calculations.",
102
- "type": "object",
103
- "properties": {
104
- "directories": {
105
- "type": "object",
106
- "properties": {
107
- "resources": {
108
- "description": "Schema of the .calc resource folder",
109
- "type": "object",
110
- "properties": {
111
- "files": {
112
- "type": "object",
113
- "additionalProperties": false,
114
- "patternProperties": {
115
- "^.+\\.lp$": {
116
- "type": "object"
117
- }
118
- }
119
- }
120
- }
121
- },
122
- "cards": {
123
- "description": "Directory that contains separate logic program files for each card",
124
- "type": "object",
125
- "properties": {
126
- "files": {
127
- "type": "object",
128
- "additionalProperties": false,
129
- "patternProperties": {
130
- "^.+\\.lp$": {
131
- "type": "object"
132
- }
133
- }
134
- }
135
- }
136
- }
137
- },
138
- "additionalProperties": false
139
- },
140
- "files": {
141
- "type": "object",
142
- "properties": {
143
- "base.lp": {
144
- "description": "A logic program that contains basic common definitions that are the same in all cards projects",
145
- "type": "object"
146
- },
147
- "calculations.lp": {
148
- "description": "A logic program that only includes all the logic programs from modules, including the calculations from the local content",
149
- "type": "object"
150
- },
151
- "cardTree.lp": {
152
- "description": "A logic program that only includes all the card-specific logic programs",
153
- "type": "object"
154
- },
155
- "resourceImports.lp": {
156
- "description": "A logic program that only includes all the logic programs generated from resources",
157
- "type": "object"
158
- },
159
- "main.lp": {
160
- "description": "The main logic program",
161
- "type": "object"
162
- },
163
- "modules.lp": {
164
- "description": "",
165
- "type": "object"
166
- },
167
- "queryLanguage.lp": {
168
- "description": "A logic program that defines the Cyberismo query language",
169
- "type": "object"
170
- }
171
- },
172
- "additionalProperties": true
173
- }
174
- }
175
- }
176
- },
177
- "required": [".cards", "cardRoot"]
178
- }
179
- },
180
2
  "$defs": {
181
3
  "cardModuleSchema": {
182
4
  "description": "The schema for modules. Each module is in a named directory containing 'cardTypes', 'templates' and 'workflows'. ",
@@ -659,5 +481,183 @@
659
481
  }
660
482
  ]
661
483
  }
662
- }
484
+ },
485
+ "$id": "cardTreeDirectorySchema",
486
+ "description": "This schema represents the directory structure of a card tree, using the format of https://github.com/jpoehnelt/directory-schema-validator",
487
+ "properties": {
488
+ "directories": {
489
+ "type": "object",
490
+ "properties": {
491
+ ".cards": {
492
+ "description": "Configuration for the card tree",
493
+ "type": "object",
494
+ "properties": {
495
+ "files": {
496
+ "type": "object",
497
+ "additionalProperties": false
498
+ },
499
+ "directories": {
500
+ "type": "object",
501
+ "additionalProperties": false,
502
+ "properties": {
503
+ "modules": {
504
+ "$ref": "#/$defs/cardModuleSchema"
505
+ },
506
+ "local": {
507
+ "type": "object",
508
+ "properties": {
509
+ "files": {
510
+ "type": "object",
511
+ "additionalProperties": false,
512
+ "properties": {
513
+ ".schema": {},
514
+ "cardsConfig.json": {}
515
+ },
516
+ "required": [".schema", "cardsConfig.json"]
517
+ },
518
+ "directories": {
519
+ "type": "object",
520
+ "additionalProperties": false,
521
+ "properties": {
522
+ "calculations": {
523
+ "$ref": "#/$defs/calculationResourceSchema"
524
+ },
525
+ "cardTypes": {
526
+ "$ref": "#/$defs/cardTypeResourceSchema"
527
+ },
528
+ "fieldTypes": {
529
+ "$ref": "#/$defs/fieldTypeResourceSchema"
530
+ },
531
+ "graphViews": {
532
+ "$ref": "#/$defs/graphViewResourceSchema"
533
+ },
534
+ "graphModels": {
535
+ "$ref": "#/$defs/graphModelResourceSchema"
536
+ },
537
+ "linkTypes": {
538
+ "$ref": "#/$defs/linkTypeResourceSchema"
539
+ },
540
+ "reports": {
541
+ "$ref": "#/$defs/reportResourceSchema"
542
+ },
543
+ "templates": {
544
+ "$ref": "#/$defs/templatesResourceSchema"
545
+ },
546
+ "workflows": {
547
+ "$ref": "#/$defs/workflowResourceSchema"
548
+ }
549
+ }
550
+ }
551
+ }
552
+ }
553
+ },
554
+ "required": ["local"]
555
+ }
556
+ }
557
+ },
558
+ "cardRoot": {
559
+ "description": "The contents of the card tree. Each subdirectory contains a top level card. The name of the directory is the card key.",
560
+ "type": "object",
561
+ "properties": {
562
+ "files": {
563
+ "type": "object",
564
+ "additionalProperties": false,
565
+ "properties": {
566
+ ".gitkeep": {},
567
+ ".schema": {}
568
+ }
569
+ },
570
+ "directories": {
571
+ "type": "object",
572
+ "additionalProperties": false,
573
+ "patternProperties": {
574
+ "^[a-z]+_[0-9a-z]+$": {
575
+ "$ref": "#/$defs/cardDirectorySchema#"
576
+ }
577
+ }
578
+ }
579
+ }
580
+ },
581
+ ".calc": {
582
+ "description": "Temporary files for calculations.",
583
+ "type": "object",
584
+ "properties": {
585
+ "directories": {
586
+ "type": "object",
587
+ "properties": {
588
+ "resources": {
589
+ "description": "Schema of the .calc resource folder",
590
+ "type": "object",
591
+ "properties": {
592
+ "files": {
593
+ "type": "object",
594
+ "additionalProperties": false,
595
+ "patternProperties": {
596
+ "^.+\\.lp$": {
597
+ "type": "object"
598
+ }
599
+ }
600
+ }
601
+ }
602
+ },
603
+ "cards": {
604
+ "description": "Directory that contains separate logic program files for each card",
605
+ "type": "object",
606
+ "properties": {
607
+ "files": {
608
+ "type": "object",
609
+ "additionalProperties": false,
610
+ "patternProperties": {
611
+ "^.+\\.lp$": {
612
+ "type": "object"
613
+ }
614
+ }
615
+ }
616
+ }
617
+ }
618
+ },
619
+ "additionalProperties": false
620
+ },
621
+ "files": {
622
+ "type": "object",
623
+ "properties": {
624
+ "base.lp": {
625
+ "description": "A logic program that contains basic common definitions that are the same in all cards projects",
626
+ "type": "object"
627
+ },
628
+ "calculations.lp": {
629
+ "description": "A logic program that only includes all the logic programs from modules, including the calculations from the local content",
630
+ "type": "object"
631
+ },
632
+ "cardTree.lp": {
633
+ "description": "A logic program that only includes all the card-specific logic programs",
634
+ "type": "object"
635
+ },
636
+ "resourceImports.lp": {
637
+ "description": "A logic program that only includes all the logic programs generated from resources",
638
+ "type": "object"
639
+ },
640
+ "main.lp": {
641
+ "description": "The main logic program",
642
+ "type": "object"
643
+ },
644
+ "modules.lp": {
645
+ "description": "",
646
+ "type": "object"
647
+ },
648
+ "queryLanguage.lp": {
649
+ "description": "A logic program that defines the Cyberismo query language",
650
+ "type": "object"
651
+ }
652
+ },
653
+ "additionalProperties": true
654
+ }
655
+ }
656
+ }
657
+ },
658
+ "required": [".cards", "cardRoot"]
659
+ }
660
+ },
661
+ "title": "Card directory tree schema",
662
+ "type": "object"
663
663
  }
@@ -1,9 +1,7 @@
1
1
  {
2
- "title": "CardsConfig",
3
2
  "$id": "cardsConfigSchema",
4
- "description": "General configuration settings for the card tree.",
5
- "type": "object",
6
3
  "additionalProperties": false,
4
+ "description": "General configuration settings for the card tree.",
7
5
  "properties": {
8
6
  "cardKeyPrefix": {
9
7
  "type": "string",
@@ -18,6 +16,18 @@
18
16
  "minLength": 1,
19
17
  "pattern": "^[A-Za-z ._-]+$"
20
18
  },
19
+ "hubs": {
20
+ "description": "List of hubs from where to fetch module information",
21
+ "type": "array",
22
+ "items": {
23
+ "type": "object",
24
+ "properties": {
25
+ "location": {
26
+ "type": "string"
27
+ }
28
+ }
29
+ }
30
+ },
21
31
  "modules": {
22
32
  "description": "List of modules that have been included in the project",
23
33
  "type": "array",
@@ -45,5 +55,7 @@
45
55
  }
46
56
  }
47
57
  },
48
- "required": ["cardKeyPrefix"]
58
+ "required": ["cardKeyPrefix"],
59
+ "title": "CardsConfig",
60
+ "type": "object"
49
61
  }