@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 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.2667";
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grexx/grexxlinter",
3
- "version": "0.2.2667",
3
+ "version": "0.2.2716",
4
4
  "description": "Lint Grexx Studio casetype YAML against the studio JSON Schemas.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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.",
@@ -48,8 +48,5 @@
48
48
  "isEmpty": false
49
49
  }
50
50
  ]
51
- },
52
- "messageType": {
53
- "baseline": "MUST"
54
51
  }
55
52
  }
@@ -73,8 +73,7 @@
73
73
  },
74
74
  "required": [
75
75
  "_type",
76
- "_uid",
77
- "messageType"
76
+ "_uid"
78
77
  ],
79
78
  "title": "customThrow",
80
79
  "type": "object",
@@ -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
+ }
@@ -3,7 +3,7 @@
3
3
  "baseline": "MUST_NOT"
4
4
  },
5
5
  "fromAttribute": {
6
- "baseline": "MUST_NOT",
6
+ "baseline": "MAY",
7
7
  "requiredWhen": [
8
8
  {
9
9
  "op": "cmp",
@@ -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
- "else": {
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": "casedata"
363
+ "const": "inlineTemplate"
291
364
  }
292
365
  },
293
366
  "required": [
@@ -296,18 +369,15 @@
296
369
  },
297
370
  "then": {
298
371
  "required": [
299
- "fromAttribute"
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": "taskout"
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": "inlineTemplate"
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
- "fromAttribute": false
440
+ "fromInlineTemplate": false
379
441
  }
380
442
  }
381
443
  },
@@ -383,7 +445,7 @@
383
445
  "if": {
384
446
  "properties": {
385
447
  "fromAttributeType": {
386
- "const": "newcasemetadata"
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": "menuItem.schema.json"
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
  }