@grexx/grexxlinter 0.2.2667 → 0.2.2716
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/cli.js +1 -1
- package/package.json +1 -1
- package/schemas/.coverage.json +0 -153
- package/schemas/common.schema.json +7 -0
- package/schemas/customThrow.behavior.json +0 -3
- package/schemas/customThrow.schema.json +1 -2
- package/schemas/formfield.schema.json +0 -17
- package/schemas/gridActivity.behavior.json +150 -0
- package/schemas/gridColumn.behavior.json +46 -0
- package/schemas/mapping.behavior.json +1 -1
- package/schemas/mapping.schema.json +83 -24
- package/schemas/navigation.schema.json +3 -3
- package/schemas/rootMenuItem.schema.json +89 -0
- package/schemas/widget.behavior.json +170 -0
package/cli.js
CHANGED
|
@@ -15769,7 +15769,7 @@ function lintFiles(files, ctx, settings) {
|
|
|
15769
15769
|
// src/cli.ts
|
|
15770
15770
|
var PARALLEL_THRESHOLD = 200;
|
|
15771
15771
|
var MAX_WORKERS = 8;
|
|
15772
|
-
var VERSION = "0.2.
|
|
15772
|
+
var VERSION = "0.2.2716";
|
|
15773
15773
|
function isNewer(latest, current) {
|
|
15774
15774
|
const a = latest.split(".").map(Number);
|
|
15775
15775
|
const b = current.split(".").map(Number);
|
package/package.json
CHANGED
package/schemas/.coverage.json
CHANGED
|
@@ -8997,37 +8997,6 @@
|
|
|
8997
8997
|
}
|
|
8998
8998
|
]
|
|
8999
8999
|
},
|
|
9000
|
-
"currency": {
|
|
9001
|
-
"baseline": "MAY",
|
|
9002
|
-
"clauses": [
|
|
9003
|
-
{
|
|
9004
|
-
"modality": "MUST",
|
|
9005
|
-
"when": {
|
|
9006
|
-
"op": "cmp",
|
|
9007
|
-
"field": "type",
|
|
9008
|
-
"fieldName": "Typed - Type",
|
|
9009
|
-
"operator": "==",
|
|
9010
|
-
"value": "singlecurrencymoney",
|
|
9011
|
-
"valueIsField": false,
|
|
9012
|
-
"isEmpty": false
|
|
9013
|
-
},
|
|
9014
|
-
"covered": true
|
|
9015
|
-
},
|
|
9016
|
-
{
|
|
9017
|
-
"modality": "MAY",
|
|
9018
|
-
"when": {
|
|
9019
|
-
"op": "cmp",
|
|
9020
|
-
"field": "type",
|
|
9021
|
-
"fieldName": "Typed - Type",
|
|
9022
|
-
"operator": "==",
|
|
9023
|
-
"value": "singlecurrencymoney",
|
|
9024
|
-
"valueIsField": false,
|
|
9025
|
-
"isEmpty": false
|
|
9026
|
-
},
|
|
9027
|
-
"covered": true
|
|
9028
|
-
}
|
|
9029
|
-
]
|
|
9030
|
-
},
|
|
9031
9000
|
"column": {
|
|
9032
9001
|
"baseline": "MUST_NOT",
|
|
9033
9002
|
"clauses": [
|
|
@@ -12861,128 +12830,6 @@
|
|
|
12861
12830
|
"mapping": {
|
|
12862
12831
|
"schema": "mapping.schema.json",
|
|
12863
12832
|
"fields": {
|
|
12864
|
-
"fromAttribute": {
|
|
12865
|
-
"baseline": "MUST_NOT",
|
|
12866
|
-
"clauses": [
|
|
12867
|
-
{
|
|
12868
|
-
"modality": "MUST",
|
|
12869
|
-
"when": {
|
|
12870
|
-
"op": "cmp",
|
|
12871
|
-
"field": "fromAttributeType",
|
|
12872
|
-
"fieldName": "From attribute type",
|
|
12873
|
-
"operator": "==",
|
|
12874
|
-
"value": "casedata",
|
|
12875
|
-
"valueIsField": false,
|
|
12876
|
-
"isEmpty": false
|
|
12877
|
-
},
|
|
12878
|
-
"covered": true
|
|
12879
|
-
},
|
|
12880
|
-
{
|
|
12881
|
-
"modality": "MUST",
|
|
12882
|
-
"when": {
|
|
12883
|
-
"op": "cmp",
|
|
12884
|
-
"field": "fromAttributeType",
|
|
12885
|
-
"fieldName": "From attribute type",
|
|
12886
|
-
"operator": "==",
|
|
12887
|
-
"value": "taskout",
|
|
12888
|
-
"valueIsField": false,
|
|
12889
|
-
"isEmpty": false
|
|
12890
|
-
},
|
|
12891
|
-
"covered": true
|
|
12892
|
-
},
|
|
12893
|
-
{
|
|
12894
|
-
"modality": "MUST_NOT",
|
|
12895
|
-
"when": {
|
|
12896
|
-
"op": "cmp",
|
|
12897
|
-
"field": "fromAttributeType",
|
|
12898
|
-
"fieldName": "From attribute type",
|
|
12899
|
-
"operator": "==",
|
|
12900
|
-
"value": "casemetadata",
|
|
12901
|
-
"valueIsField": false,
|
|
12902
|
-
"isEmpty": false
|
|
12903
|
-
},
|
|
12904
|
-
"covered": true
|
|
12905
|
-
},
|
|
12906
|
-
{
|
|
12907
|
-
"modality": "MUST_NOT",
|
|
12908
|
-
"when": {
|
|
12909
|
-
"op": "cmp",
|
|
12910
|
-
"field": "fromAttributeType",
|
|
12911
|
-
"fieldName": "From attribute type",
|
|
12912
|
-
"operator": "==",
|
|
12913
|
-
"value": "dataset",
|
|
12914
|
-
"valueIsField": false,
|
|
12915
|
-
"isEmpty": false
|
|
12916
|
-
},
|
|
12917
|
-
"covered": true
|
|
12918
|
-
},
|
|
12919
|
-
{
|
|
12920
|
-
"modality": "MUST_NOT",
|
|
12921
|
-
"when": {
|
|
12922
|
-
"op": "cmp",
|
|
12923
|
-
"field": "fromAttributeType",
|
|
12924
|
-
"fieldName": "From attribute type",
|
|
12925
|
-
"operator": "==",
|
|
12926
|
-
"value": "inlineTemplate",
|
|
12927
|
-
"valueIsField": false,
|
|
12928
|
-
"isEmpty": false
|
|
12929
|
-
},
|
|
12930
|
-
"covered": true
|
|
12931
|
-
},
|
|
12932
|
-
{
|
|
12933
|
-
"modality": "MUST_NOT",
|
|
12934
|
-
"when": {
|
|
12935
|
-
"op": "cmp",
|
|
12936
|
-
"field": "fromAttributeType",
|
|
12937
|
-
"fieldName": "From attribute type",
|
|
12938
|
-
"operator": "==",
|
|
12939
|
-
"value": "newcasemetadata",
|
|
12940
|
-
"valueIsField": false,
|
|
12941
|
-
"isEmpty": false
|
|
12942
|
-
},
|
|
12943
|
-
"covered": true
|
|
12944
|
-
},
|
|
12945
|
-
{
|
|
12946
|
-
"modality": "MUST_NOT",
|
|
12947
|
-
"when": {
|
|
12948
|
-
"op": "cmp",
|
|
12949
|
-
"field": "fromAttributeType",
|
|
12950
|
-
"fieldName": "From attribute type",
|
|
12951
|
-
"operator": "==",
|
|
12952
|
-
"value": "value",
|
|
12953
|
-
"valueIsField": false,
|
|
12954
|
-
"isEmpty": false
|
|
12955
|
-
},
|
|
12956
|
-
"covered": true
|
|
12957
|
-
},
|
|
12958
|
-
{
|
|
12959
|
-
"modality": "MAY",
|
|
12960
|
-
"when": {
|
|
12961
|
-
"op": "cmp",
|
|
12962
|
-
"field": "fromAttributeType",
|
|
12963
|
-
"fieldName": "From attribute type",
|
|
12964
|
-
"operator": "==",
|
|
12965
|
-
"value": "casedata",
|
|
12966
|
-
"valueIsField": false,
|
|
12967
|
-
"isEmpty": false
|
|
12968
|
-
},
|
|
12969
|
-
"covered": true
|
|
12970
|
-
},
|
|
12971
|
-
{
|
|
12972
|
-
"modality": "MAY",
|
|
12973
|
-
"when": {
|
|
12974
|
-
"op": "cmp",
|
|
12975
|
-
"field": "fromAttributeType",
|
|
12976
|
-
"fieldName": "From attribute type",
|
|
12977
|
-
"operator": "==",
|
|
12978
|
-
"value": "taskout",
|
|
12979
|
-
"valueIsField": false,
|
|
12980
|
-
"isEmpty": false
|
|
12981
|
-
},
|
|
12982
|
-
"covered": true
|
|
12983
|
-
}
|
|
12984
|
-
]
|
|
12985
|
-
},
|
|
12986
12833
|
"fromInlineTemplate": {
|
|
12987
12834
|
"baseline": "MUST_NOT",
|
|
12988
12835
|
"clauses": [
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
"$ref" : "#/$defs/inlineReference"
|
|
9
9
|
}, {
|
|
10
10
|
"$ref" : "#/$defs/localReference"
|
|
11
|
+
}, {
|
|
12
|
+
"$ref" : "#/$defs/dependencyReference"
|
|
11
13
|
}, {
|
|
12
14
|
"description" : "Raw case-ID (e.g. 1:5085:123 or 1:5085:123:1).",
|
|
13
15
|
"pattern" : "^\\d+:\\d+:\\d+(:\\d+)?$",
|
|
@@ -24,6 +26,11 @@
|
|
|
24
26
|
"type" : "string"
|
|
25
27
|
} ]
|
|
26
28
|
},
|
|
29
|
+
"dependencyReference" : {
|
|
30
|
+
"description" : "Reference to an object in an imported dependency: <dep-name>:<uuid>, dep-name as declared in studio.deps.yaml.",
|
|
31
|
+
"pattern" : "^[a-z0-9][a-z0-9._-]*:[0-9a-f-]+$",
|
|
32
|
+
"type" : "string"
|
|
33
|
+
},
|
|
27
34
|
"fileDataObject" : {
|
|
28
35
|
"additionalProperties" : true,
|
|
29
36
|
"description" : "Serialized file/binary data attached to a definition.",
|
|
@@ -299,23 +299,6 @@
|
|
|
299
299
|
"title": "formfield",
|
|
300
300
|
"type": "object",
|
|
301
301
|
"allOf": [
|
|
302
|
-
{
|
|
303
|
-
"if": {
|
|
304
|
-
"properties": {
|
|
305
|
-
"type": {
|
|
306
|
-
"const": "singlecurrencymoney"
|
|
307
|
-
}
|
|
308
|
-
},
|
|
309
|
-
"required": [
|
|
310
|
-
"type"
|
|
311
|
-
]
|
|
312
|
-
},
|
|
313
|
-
"then": {
|
|
314
|
-
"required": [
|
|
315
|
-
"currency"
|
|
316
|
-
]
|
|
317
|
-
}
|
|
318
|
-
},
|
|
319
302
|
{
|
|
320
303
|
"if": {
|
|
321
304
|
"properties": {
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
{
|
|
2
|
+
"activity": {
|
|
3
|
+
"requiredWhen": [
|
|
4
|
+
{
|
|
5
|
+
"op": "cmp",
|
|
6
|
+
"field": "enabled",
|
|
7
|
+
"operator": "==",
|
|
8
|
+
"value": "true"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"type": {
|
|
13
|
+
"requiredWhen": [
|
|
14
|
+
{
|
|
15
|
+
"op": "cmp",
|
|
16
|
+
"field": "enabled",
|
|
17
|
+
"operator": "==",
|
|
18
|
+
"value": "true"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"icon": {
|
|
23
|
+
"forbiddenWhen": [
|
|
24
|
+
{
|
|
25
|
+
"op": "cmp",
|
|
26
|
+
"field": "type",
|
|
27
|
+
"operator": "in",
|
|
28
|
+
"value": "[\"inlineAdd\",\"inlineEdit\"]"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"useActivityTitle": {
|
|
33
|
+
"forbiddenWhen": [
|
|
34
|
+
{
|
|
35
|
+
"op": "cmp",
|
|
36
|
+
"field": "type",
|
|
37
|
+
"operator": "in",
|
|
38
|
+
"value": "[\"inlineAdd\",\"inlineEdit\"]"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"labelWhen": [
|
|
42
|
+
{
|
|
43
|
+
"when": {
|
|
44
|
+
"op": "and",
|
|
45
|
+
"items": [
|
|
46
|
+
{
|
|
47
|
+
"op": "cmp",
|
|
48
|
+
"field": "type",
|
|
49
|
+
"operator": "in",
|
|
50
|
+
"value": "[\"singleInline\",\"quickInline\"]"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"op": "cmp",
|
|
54
|
+
"field": "icon",
|
|
55
|
+
"operator": "!==",
|
|
56
|
+
"value": "",
|
|
57
|
+
"isEmpty": true
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"label": "Use activity label as tooltip"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"title": {
|
|
66
|
+
"forbiddenWhen": [
|
|
67
|
+
{
|
|
68
|
+
"op": "cmp",
|
|
69
|
+
"field": "type",
|
|
70
|
+
"operator": "in",
|
|
71
|
+
"value": "[\"inlineAdd\",\"inlineEdit\"]"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"labelWhen": [
|
|
75
|
+
{
|
|
76
|
+
"when": {
|
|
77
|
+
"op": "and",
|
|
78
|
+
"items": [
|
|
79
|
+
{
|
|
80
|
+
"op": "cmp",
|
|
81
|
+
"field": "type",
|
|
82
|
+
"operator": "in",
|
|
83
|
+
"value": "[\"singleInline\",\"quickInline\"]"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"op": "cmp",
|
|
87
|
+
"field": "icon",
|
|
88
|
+
"operator": "!==",
|
|
89
|
+
"value": "",
|
|
90
|
+
"isEmpty": true
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"label": "Tooltip"
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
"messageWhen": [
|
|
98
|
+
{
|
|
99
|
+
"when": {
|
|
100
|
+
"op": "cmp",
|
|
101
|
+
"field": "useActivityTitle",
|
|
102
|
+
"operator": "==",
|
|
103
|
+
"value": "true"
|
|
104
|
+
},
|
|
105
|
+
"message": "The activity's own name is used while the box above is ticked; this takes over as soon as it is not"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"when": {
|
|
109
|
+
"op": "and",
|
|
110
|
+
"items": [
|
|
111
|
+
{
|
|
112
|
+
"op": "cmp",
|
|
113
|
+
"field": "type",
|
|
114
|
+
"operator": "in",
|
|
115
|
+
"value": "[\"singleInline\",\"quickInline\"]"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"op": "cmp",
|
|
119
|
+
"field": "icon",
|
|
120
|
+
"operator": "!==",
|
|
121
|
+
"value": "",
|
|
122
|
+
"isEmpty": true
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"message": "The icon is drawn on its own, with this as its hover text"
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
"whenDoneRefreshType": {
|
|
131
|
+
"forbiddenWhen": [
|
|
132
|
+
{
|
|
133
|
+
"op": "cmp",
|
|
134
|
+
"field": "type",
|
|
135
|
+
"operator": "in",
|
|
136
|
+
"value": "[\"inlineAdd\",\"inlineEdit\"]"
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"breaker": {
|
|
141
|
+
"forbiddenWhen": [
|
|
142
|
+
{
|
|
143
|
+
"op": "cmp",
|
|
144
|
+
"field": "type",
|
|
145
|
+
"operator": "in",
|
|
146
|
+
"value": "[\"singleInline\",\"quickInline\",\"inlineAdd\",\"inlineEdit\"]"
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"clickHandlerColumnCase": {
|
|
3
|
+
"baseline": "MUST_NOT",
|
|
4
|
+
"enabledWhen": [
|
|
5
|
+
{
|
|
6
|
+
"op": "cmp",
|
|
7
|
+
"field": "clickHandler",
|
|
8
|
+
"operator": "notin",
|
|
9
|
+
"value": "[\"\",\"none\"]"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"aggregationOperation": {
|
|
14
|
+
"baseline": "MUST_NOT",
|
|
15
|
+
"enabledWhen": [
|
|
16
|
+
{
|
|
17
|
+
"op": "cmp",
|
|
18
|
+
"field": "usesCases",
|
|
19
|
+
"operator": "==",
|
|
20
|
+
"value": "true"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"aggregationStatic": {
|
|
25
|
+
"baseline": "MUST_NOT",
|
|
26
|
+
"enabledWhen": [
|
|
27
|
+
{
|
|
28
|
+
"op": "and",
|
|
29
|
+
"items": [
|
|
30
|
+
{
|
|
31
|
+
"op": "cmp",
|
|
32
|
+
"field": "usesCases",
|
|
33
|
+
"operator": "==",
|
|
34
|
+
"value": "true"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"op": "cmp",
|
|
38
|
+
"field": "aggregationOperation",
|
|
39
|
+
"operator": "notin",
|
|
40
|
+
"value": "[\"\",\"none\"]"
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -134,8 +134,10 @@
|
|
|
134
134
|
],
|
|
135
135
|
"title": "mapping",
|
|
136
136
|
"type": "object",
|
|
137
|
+
"$comment": "Hand-maintained overlay (deep-merged by scripts/extend.mjs into extended/mapping.schema.json). `fromAttribute` is forced to MAY in overrides.json so the rule pipeline emits no branch for it, and the whole conditional is stated here instead. Why it cannot be additive: rules/mapping.json gives the field a MUST_NOT baseline whose allow-set is requiredWhen (casedata, taskout) only, so every other fromAttributeType lands in the generated `else` as `fromAttribute: false`. Adding a `required` on top of that `false` is unsatisfiable, and `schema-overrides/` concatenates allOf — it cannot delete the generated branch. taskOutFormField is a real, widely-used source the manager export does not model: the form logic it derives from (form Edit mapping v2) never names it, so the field fell to the baseline and every mapping that reads a task-out formfield linted as a forbidden-field. Keep the two lists below in step with rules/mapping.json's requiredWhen/forbiddenWhen after an export:rules run. Conditionals generated by packages/schemas/scripts/extend.mjs from rules/mapping.json.",
|
|
137
138
|
"allOf": [
|
|
138
139
|
{
|
|
140
|
+
"$comment": "fromAttribute is required for the source types that name an attribute to read. casedata/taskout come from the export; taskOutFormField is the hand-added one.",
|
|
139
141
|
"if": {
|
|
140
142
|
"anyOf": [
|
|
141
143
|
{
|
|
@@ -157,11 +159,82 @@
|
|
|
157
159
|
"required": [
|
|
158
160
|
"fromAttributeType"
|
|
159
161
|
]
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"properties": {
|
|
165
|
+
"fromAttributeType": {
|
|
166
|
+
"const": "taskOutFormField"
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
"required": [
|
|
170
|
+
"fromAttributeType"
|
|
171
|
+
]
|
|
160
172
|
}
|
|
161
173
|
]
|
|
162
174
|
},
|
|
163
|
-
"then": {
|
|
164
|
-
|
|
175
|
+
"then": {
|
|
176
|
+
"required": [
|
|
177
|
+
"fromAttribute"
|
|
178
|
+
]
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"$comment": "The source types that carry their value elsewhere (fromValue, a template, a dataset) must not also name an attribute. Mirrors rules/mapping.json forbiddenWhen.",
|
|
183
|
+
"if": {
|
|
184
|
+
"anyOf": [
|
|
185
|
+
{
|
|
186
|
+
"properties": {
|
|
187
|
+
"fromAttributeType": {
|
|
188
|
+
"const": "casemetadata"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"required": [
|
|
192
|
+
"fromAttributeType"
|
|
193
|
+
]
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"properties": {
|
|
197
|
+
"fromAttributeType": {
|
|
198
|
+
"const": "dataset"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"required": [
|
|
202
|
+
"fromAttributeType"
|
|
203
|
+
]
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"properties": {
|
|
207
|
+
"fromAttributeType": {
|
|
208
|
+
"const": "inlineTemplate"
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
"required": [
|
|
212
|
+
"fromAttributeType"
|
|
213
|
+
]
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"properties": {
|
|
217
|
+
"fromAttributeType": {
|
|
218
|
+
"const": "newcasemetadata"
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"required": [
|
|
222
|
+
"fromAttributeType"
|
|
223
|
+
]
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"properties": {
|
|
227
|
+
"fromAttributeType": {
|
|
228
|
+
"const": "value"
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
"required": [
|
|
232
|
+
"fromAttributeType"
|
|
233
|
+
]
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
},
|
|
237
|
+
"then": {
|
|
165
238
|
"properties": {
|
|
166
239
|
"fromAttribute": false
|
|
167
240
|
}
|
|
@@ -287,7 +360,7 @@
|
|
|
287
360
|
"if": {
|
|
288
361
|
"properties": {
|
|
289
362
|
"fromAttributeType": {
|
|
290
|
-
"const": "
|
|
363
|
+
"const": "inlineTemplate"
|
|
291
364
|
}
|
|
292
365
|
},
|
|
293
366
|
"required": [
|
|
@@ -296,18 +369,15 @@
|
|
|
296
369
|
},
|
|
297
370
|
"then": {
|
|
298
371
|
"required": [
|
|
299
|
-
"
|
|
300
|
-
]
|
|
301
|
-
"properties": {
|
|
302
|
-
"fromInlineTemplate": false
|
|
303
|
-
}
|
|
372
|
+
"fromInlineTemplate"
|
|
373
|
+
]
|
|
304
374
|
}
|
|
305
375
|
},
|
|
306
376
|
{
|
|
307
377
|
"if": {
|
|
308
378
|
"properties": {
|
|
309
379
|
"fromAttributeType": {
|
|
310
|
-
"const": "
|
|
380
|
+
"const": "casedata"
|
|
311
381
|
}
|
|
312
382
|
},
|
|
313
383
|
"required": [
|
|
@@ -315,9 +385,6 @@
|
|
|
315
385
|
]
|
|
316
386
|
},
|
|
317
387
|
"then": {
|
|
318
|
-
"required": [
|
|
319
|
-
"fromAttribute"
|
|
320
|
-
],
|
|
321
388
|
"properties": {
|
|
322
389
|
"fromInlineTemplate": false
|
|
323
390
|
}
|
|
@@ -336,7 +403,6 @@
|
|
|
336
403
|
},
|
|
337
404
|
"then": {
|
|
338
405
|
"properties": {
|
|
339
|
-
"fromAttribute": false,
|
|
340
406
|
"fromInlineTemplate": false
|
|
341
407
|
}
|
|
342
408
|
}
|
|
@@ -354,7 +420,6 @@
|
|
|
354
420
|
},
|
|
355
421
|
"then": {
|
|
356
422
|
"properties": {
|
|
357
|
-
"fromAttribute": false,
|
|
358
423
|
"fromInlineTemplate": false
|
|
359
424
|
}
|
|
360
425
|
}
|
|
@@ -363,7 +428,7 @@
|
|
|
363
428
|
"if": {
|
|
364
429
|
"properties": {
|
|
365
430
|
"fromAttributeType": {
|
|
366
|
-
"const": "
|
|
431
|
+
"const": "newcasemetadata"
|
|
367
432
|
}
|
|
368
433
|
},
|
|
369
434
|
"required": [
|
|
@@ -371,11 +436,8 @@
|
|
|
371
436
|
]
|
|
372
437
|
},
|
|
373
438
|
"then": {
|
|
374
|
-
"required": [
|
|
375
|
-
"fromInlineTemplate"
|
|
376
|
-
],
|
|
377
439
|
"properties": {
|
|
378
|
-
"
|
|
440
|
+
"fromInlineTemplate": false
|
|
379
441
|
}
|
|
380
442
|
}
|
|
381
443
|
},
|
|
@@ -383,7 +445,7 @@
|
|
|
383
445
|
"if": {
|
|
384
446
|
"properties": {
|
|
385
447
|
"fromAttributeType": {
|
|
386
|
-
"const": "
|
|
448
|
+
"const": "taskout"
|
|
387
449
|
}
|
|
388
450
|
},
|
|
389
451
|
"required": [
|
|
@@ -392,7 +454,6 @@
|
|
|
392
454
|
},
|
|
393
455
|
"then": {
|
|
394
456
|
"properties": {
|
|
395
|
-
"fromAttribute": false,
|
|
396
457
|
"fromInlineTemplate": false
|
|
397
458
|
}
|
|
398
459
|
}
|
|
@@ -410,7 +471,6 @@
|
|
|
410
471
|
},
|
|
411
472
|
"then": {
|
|
412
473
|
"properties": {
|
|
413
|
-
"fromAttribute": false,
|
|
414
474
|
"fromInlineTemplate": false
|
|
415
475
|
}
|
|
416
476
|
}
|
|
@@ -466,6 +526,5 @@
|
|
|
466
526
|
]
|
|
467
527
|
}
|
|
468
528
|
}
|
|
469
|
-
]
|
|
470
|
-
"$comment": "Conditionals generated by packages/schemas/scripts/extend.mjs from rules/mapping.json."
|
|
529
|
+
]
|
|
471
530
|
}
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"$ref": "common.schema.json#/$defs/caseIdOrFileReference"
|
|
61
61
|
},
|
|
62
62
|
"rootMenuItem": {
|
|
63
|
-
"$ref": "
|
|
63
|
+
"$ref": "rootMenuItem.schema.json"
|
|
64
64
|
},
|
|
65
65
|
"type": {
|
|
66
66
|
"type": "string"
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
],
|
|
86
86
|
"title": "navigation",
|
|
87
87
|
"type": "object",
|
|
88
|
+
"$comment": "Hand-maintained overlay (deep-merged by scripts/extend.mjs into extended/navigation.schema.json). Repoints rootMenuItem at custom/rootMenuItem.schema.json — menuItem with only _type/_uid required — because a root menu item is a container with no entry of its own. L2 refs menuItem here, whose `required: [type]` and type=menu ⇒ text|icon branch do not apply to the root. The overlay merge replaces the $ref string; it cannot delete keys, which is why the relaxed variant is a separate schema rather than an inline restatement. Conditionals generated by packages/schemas/scripts/extend.mjs from rules/navigation.json.",
|
|
88
89
|
"allOf": [
|
|
89
90
|
{
|
|
90
91
|
"if": {
|
|
@@ -118,6 +119,5 @@
|
|
|
118
119
|
}
|
|
119
120
|
}
|
|
120
121
|
}
|
|
121
|
-
]
|
|
122
|
-
"$comment": "Conditionals generated by packages/schemas/scripts/extend.mjs from rules/navigation.json."
|
|
122
|
+
]
|
|
123
123
|
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://grexx.net/studio-next/schemas/rootMenuItem.schema.json",
|
|
4
|
+
"title": "rootMenuItem",
|
|
5
|
+
"$comment": "Hand-maintained (packages/schemas/custom/, overlaid into extended/ by scripts/extend.mjs). A navigation's rootMenuItem is a menuItem structurally, but it is a container, not an entry: it carries no type/text/icon/href of its own, only the menuItems beneath it. menuItem.schema.json requires `type` and, for type=menu/link, text-or-icon — so referencing it directly made every real navigation lint as required-field. Here only _type and _uid are required and no conditional applies; the nested menuItems are still validated against menuItem in full. Each property REFERENCES menuItem's own definition, so shapes never fork — only this name list has to track a new menuItem property.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"_type",
|
|
10
|
+
"_uid"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"_id": {
|
|
14
|
+
"$ref": "menuItem.schema.json#/properties/_id"
|
|
15
|
+
},
|
|
16
|
+
"_interfaceID": {
|
|
17
|
+
"$ref": "menuItem.schema.json#/properties/_interfaceID"
|
|
18
|
+
},
|
|
19
|
+
"_isInterface": {
|
|
20
|
+
"$ref": "menuItem.schema.json#/properties/_isInterface"
|
|
21
|
+
},
|
|
22
|
+
"_knownIDs": {
|
|
23
|
+
"$ref": "menuItem.schema.json#/properties/_knownIDs"
|
|
24
|
+
},
|
|
25
|
+
"_origin": {
|
|
26
|
+
"$ref": "menuItem.schema.json#/properties/_origin"
|
|
27
|
+
},
|
|
28
|
+
"_src": {
|
|
29
|
+
"$ref": "menuItem.schema.json#/properties/_src"
|
|
30
|
+
},
|
|
31
|
+
"_type": {
|
|
32
|
+
"$ref": "menuItem.schema.json#/properties/_type"
|
|
33
|
+
},
|
|
34
|
+
"_uid": {
|
|
35
|
+
"$ref": "menuItem.schema.json#/properties/_uid"
|
|
36
|
+
},
|
|
37
|
+
"condition": {
|
|
38
|
+
"$ref": "menuItem.schema.json#/properties/condition"
|
|
39
|
+
},
|
|
40
|
+
"cssClass": {
|
|
41
|
+
"$ref": "menuItem.schema.json#/properties/cssClass"
|
|
42
|
+
},
|
|
43
|
+
"description": {
|
|
44
|
+
"$ref": "menuItem.schema.json#/properties/description"
|
|
45
|
+
},
|
|
46
|
+
"dummyUnused": {
|
|
47
|
+
"$ref": "menuItem.schema.json#/properties/dummyUnused"
|
|
48
|
+
},
|
|
49
|
+
"href": {
|
|
50
|
+
"$ref": "menuItem.schema.json#/properties/href"
|
|
51
|
+
},
|
|
52
|
+
"icon": {
|
|
53
|
+
"$ref": "menuItem.schema.json#/properties/icon"
|
|
54
|
+
},
|
|
55
|
+
"inactive": {
|
|
56
|
+
"$ref": "menuItem.schema.json#/properties/inactive"
|
|
57
|
+
},
|
|
58
|
+
"interfaceStudioProduct": {
|
|
59
|
+
"$ref": "menuItem.schema.json#/properties/interfaceStudioProduct"
|
|
60
|
+
},
|
|
61
|
+
"menuItems": {
|
|
62
|
+
"$ref": "menuItem.schema.json#/properties/menuItems"
|
|
63
|
+
},
|
|
64
|
+
"metaCaseToOtap": {
|
|
65
|
+
"$ref": "menuItem.schema.json#/properties/metaCaseToOtap"
|
|
66
|
+
},
|
|
67
|
+
"name": {
|
|
68
|
+
"$ref": "menuItem.schema.json#/properties/name"
|
|
69
|
+
},
|
|
70
|
+
"ourProductId": {
|
|
71
|
+
"$ref": "menuItem.schema.json#/properties/ourProductId"
|
|
72
|
+
},
|
|
73
|
+
"rights": {
|
|
74
|
+
"$ref": "menuItem.schema.json#/properties/rights"
|
|
75
|
+
},
|
|
76
|
+
"subtext": {
|
|
77
|
+
"$ref": "menuItem.schema.json#/properties/subtext"
|
|
78
|
+
},
|
|
79
|
+
"template": {
|
|
80
|
+
"$ref": "menuItem.schema.json#/properties/template"
|
|
81
|
+
},
|
|
82
|
+
"text": {
|
|
83
|
+
"$ref": "menuItem.schema.json#/properties/text"
|
|
84
|
+
},
|
|
85
|
+
"type": {
|
|
86
|
+
"$ref": "menuItem.schema.json#/properties/type"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -2762,5 +2762,175 @@
|
|
|
2762
2762
|
},
|
|
2763
2763
|
"viewCalculated": {
|
|
2764
2764
|
"baseline": "MUST_NOT"
|
|
2765
|
+
},
|
|
2766
|
+
"showHeader": {
|
|
2767
|
+
"forbiddenWhen": [
|
|
2768
|
+
{
|
|
2769
|
+
"op": "cmp",
|
|
2770
|
+
"field": "widgetType",
|
|
2771
|
+
"operator": "==",
|
|
2772
|
+
"value": "grid-v2"
|
|
2773
|
+
}
|
|
2774
|
+
]
|
|
2775
|
+
},
|
|
2776
|
+
"title": {
|
|
2777
|
+
"forbiddenWhen": [
|
|
2778
|
+
{
|
|
2779
|
+
"op": "cmp",
|
|
2780
|
+
"field": "widgetType",
|
|
2781
|
+
"operator": "==",
|
|
2782
|
+
"value": "grid-v2"
|
|
2783
|
+
},
|
|
2784
|
+
{
|
|
2785
|
+
"op": "cmp",
|
|
2786
|
+
"field": "showHeader",
|
|
2787
|
+
"operator": "==",
|
|
2788
|
+
"value": "false"
|
|
2789
|
+
}
|
|
2790
|
+
]
|
|
2791
|
+
},
|
|
2792
|
+
"showToolbar": {
|
|
2793
|
+
"forbiddenWhen": [
|
|
2794
|
+
{
|
|
2795
|
+
"op": "cmp",
|
|
2796
|
+
"field": "widgetType",
|
|
2797
|
+
"operator": "==",
|
|
2798
|
+
"value": "grid-v2"
|
|
2799
|
+
}
|
|
2800
|
+
]
|
|
2801
|
+
},
|
|
2802
|
+
"showSimpleSearch": {
|
|
2803
|
+
"forbiddenWhen": [
|
|
2804
|
+
{
|
|
2805
|
+
"op": "cmp",
|
|
2806
|
+
"field": "widgetType",
|
|
2807
|
+
"operator": "==",
|
|
2808
|
+
"value": "grid-v2"
|
|
2809
|
+
},
|
|
2810
|
+
{
|
|
2811
|
+
"op": "cmp",
|
|
2812
|
+
"field": "showToolbar",
|
|
2813
|
+
"operator": "==",
|
|
2814
|
+
"value": "false"
|
|
2815
|
+
}
|
|
2816
|
+
]
|
|
2817
|
+
},
|
|
2818
|
+
"showAdvancedSearch": {
|
|
2819
|
+
"forbiddenWhen": [
|
|
2820
|
+
{
|
|
2821
|
+
"op": "cmp",
|
|
2822
|
+
"field": "widgetType",
|
|
2823
|
+
"operator": "==",
|
|
2824
|
+
"value": "grid-v2"
|
|
2825
|
+
},
|
|
2826
|
+
{
|
|
2827
|
+
"op": "cmp",
|
|
2828
|
+
"field": "showToolbar",
|
|
2829
|
+
"operator": "==",
|
|
2830
|
+
"value": "false"
|
|
2831
|
+
},
|
|
2832
|
+
{
|
|
2833
|
+
"op": "cmp",
|
|
2834
|
+
"field": "showSimpleSearch",
|
|
2835
|
+
"operator": "==",
|
|
2836
|
+
"value": "false"
|
|
2837
|
+
}
|
|
2838
|
+
]
|
|
2839
|
+
},
|
|
2840
|
+
"showLinenumbers": {
|
|
2841
|
+
"forbiddenWhen": [
|
|
2842
|
+
{
|
|
2843
|
+
"op": "cmp",
|
|
2844
|
+
"field": "widgetType",
|
|
2845
|
+
"operator": "==",
|
|
2846
|
+
"value": "grid-v2"
|
|
2847
|
+
}
|
|
2848
|
+
]
|
|
2849
|
+
},
|
|
2850
|
+
"showFooter": {
|
|
2851
|
+
"forbiddenWhen": [
|
|
2852
|
+
{
|
|
2853
|
+
"op": "cmp",
|
|
2854
|
+
"field": "widgetType",
|
|
2855
|
+
"operator": "==",
|
|
2856
|
+
"value": "grid-v2"
|
|
2857
|
+
}
|
|
2858
|
+
]
|
|
2859
|
+
},
|
|
2860
|
+
"orderColumn": {
|
|
2861
|
+
"forbiddenWhen": [
|
|
2862
|
+
{
|
|
2863
|
+
"op": "cmp",
|
|
2864
|
+
"field": "widgetType",
|
|
2865
|
+
"operator": "==",
|
|
2866
|
+
"value": "grid-v2"
|
|
2867
|
+
}
|
|
2868
|
+
]
|
|
2869
|
+
},
|
|
2870
|
+
"viewToOpen": {
|
|
2871
|
+
"baseline": "MUST_NOT",
|
|
2872
|
+
"requiredWhen": [
|
|
2873
|
+
{
|
|
2874
|
+
"op": "cmp",
|
|
2875
|
+
"field": "clickHandler",
|
|
2876
|
+
"operator": "==",
|
|
2877
|
+
"value": "viewHandler"
|
|
2878
|
+
}
|
|
2879
|
+
]
|
|
2880
|
+
},
|
|
2881
|
+
"customViewModalClasses": {
|
|
2882
|
+
"baseline": "MUST_NOT",
|
|
2883
|
+
"enabledWhen": [
|
|
2884
|
+
{
|
|
2885
|
+
"op": "cmp",
|
|
2886
|
+
"field": "clickHandler",
|
|
2887
|
+
"operator": "==",
|
|
2888
|
+
"value": "viewHandler"
|
|
2889
|
+
}
|
|
2890
|
+
]
|
|
2891
|
+
},
|
|
2892
|
+
"clickHandlerColumnCase": {
|
|
2893
|
+
"baseline": "MUST_NOT",
|
|
2894
|
+
"enabledWhen": [
|
|
2895
|
+
{
|
|
2896
|
+
"op": "cmp",
|
|
2897
|
+
"field": "clickHandler",
|
|
2898
|
+
"operator": "notin",
|
|
2899
|
+
"value": "[\"\",\"none\"]"
|
|
2900
|
+
}
|
|
2901
|
+
]
|
|
2902
|
+
},
|
|
2903
|
+
"gridAggregationRowType": {
|
|
2904
|
+
"baseline": "MUST_NOT",
|
|
2905
|
+
"enabledWhen": [
|
|
2906
|
+
{
|
|
2907
|
+
"op": "cmp",
|
|
2908
|
+
"field": "usesCases",
|
|
2909
|
+
"operator": "==",
|
|
2910
|
+
"value": "true"
|
|
2911
|
+
}
|
|
2912
|
+
]
|
|
2913
|
+
},
|
|
2914
|
+
"gridAggregationRowPosition": {
|
|
2915
|
+
"baseline": "MUST_NOT",
|
|
2916
|
+
"enabledWhen": [
|
|
2917
|
+
{
|
|
2918
|
+
"op": "and",
|
|
2919
|
+
"items": [
|
|
2920
|
+
{
|
|
2921
|
+
"op": "cmp",
|
|
2922
|
+
"field": "usesCases",
|
|
2923
|
+
"operator": "==",
|
|
2924
|
+
"value": "true"
|
|
2925
|
+
},
|
|
2926
|
+
{
|
|
2927
|
+
"op": "cmp",
|
|
2928
|
+
"field": "gridAggregationRowType",
|
|
2929
|
+
"operator": "notin",
|
|
2930
|
+
"value": "[\"\",\"none\"]"
|
|
2931
|
+
}
|
|
2932
|
+
]
|
|
2933
|
+
}
|
|
2934
|
+
]
|
|
2765
2935
|
}
|
|
2766
2936
|
}
|