@grexx/grexxlinter 0.2.3000 → 0.2.3026

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
@@ -15828,7 +15828,7 @@ function lintFiles(files, ctx, settings) {
15828
15828
  // src/cli.ts
15829
15829
  var PARALLEL_THRESHOLD = 200;
15830
15830
  var MAX_WORKERS = 8;
15831
- var VERSION = "0.2.3000";
15831
+ var VERSION = "0.2.3026";
15832
15832
  function isNewer(latest, current) {
15833
15833
  const a = latest.split(".").map(Number);
15834
15834
  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.3000",
3
+ "version": "0.2.3026",
4
4
  "description": "Lint Grexx Studio casetype YAML against the studio JSON Schemas.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -257,6 +257,13 @@
257
257
  },
258
258
  "uniqueItems": true,
259
259
  "description": "Studio-only organisational labels, as plain strings. Assignable to a casetype, to the files inside a casetype (activity, view, form, attribute), and to platform-level assets. Root level only: the studio reads labels off the file root, never off a nested object. The platform-level registry (labelRegistry.yaml) supplies each label's colour and canonical casing but is not authoritative — a label may appear here without a registry entry."
260
+ },
261
+ "hasValidConfiguration": {
262
+ "type": "boolean"
263
+ },
264
+ "wasEverFullyConfigured": {
265
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
266
+ "type": "boolean"
260
267
  }
261
268
  },
262
269
  "required": [
@@ -70,6 +70,13 @@
70
70
  },
71
71
  "showProgress": {
72
72
  "type": "boolean"
73
+ },
74
+ "hasValidConfiguration": {
75
+ "type": "boolean"
76
+ },
77
+ "wasEverFullyConfigured": {
78
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
79
+ "type": "boolean"
73
80
  }
74
81
  },
75
82
  "required": [
@@ -1,67 +1,80 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/conditionList.schema.json",
3
- "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties" : false,
5
- "properties" : {
6
- "_id" : {
7
- "type" : "string"
8
- },
9
- "_interfaceID" : {
10
- "type" : "string"
11
- },
12
- "_isInterface" : {
13
- "type" : "boolean"
14
- },
15
- "_knownIDs" : {
16
- "items" : {
17
- "type" : "string"
2
+ "$id": "https://grexx.net/studio-next/schemas/conditionList.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "_id": {
7
+ "type": "string"
8
+ },
9
+ "_interfaceID": {
10
+ "type": "string"
11
+ },
12
+ "_isInterface": {
13
+ "type": "boolean"
14
+ },
15
+ "_knownIDs": {
16
+ "items": {
17
+ "type": "string"
18
18
  },
19
- "type" : "array"
19
+ "type": "array"
20
20
  },
21
- "_origin" : {
22
- "type" : "string"
21
+ "_origin": {
22
+ "type": "string"
23
23
  },
24
- "_src" : {
25
- "type" : "string"
24
+ "_src": {
25
+ "type": "string"
26
26
  },
27
- "_type" : {
28
- "const" : "conditionList"
27
+ "_type": {
28
+ "const": "conditionList"
29
29
  },
30
- "_uid" : {
31
- "description" : "Deterministic UUID derived from case-ID.",
32
- "format" : "uuid",
33
- "type" : "string"
30
+ "_uid": {
31
+ "description": "Deterministic UUID derived from case-ID.",
32
+ "format": "uuid",
33
+ "type": "string"
34
34
  },
35
- "conditions" : {
36
- "items" : {
37
- "$ref" : "abstractCondition.schema.json"
35
+ "conditions": {
36
+ "items": {
37
+ "$ref": "abstractCondition.schema.json"
38
38
  },
39
- "type" : "array"
39
+ "type": "array"
40
+ },
41
+ "description": {
42
+ "$ref": "template/inlineTemplate.schema.json"
43
+ },
44
+ "inactive": {
45
+ "type": "boolean"
40
46
  },
41
- "description" : {
42
- "$ref" : "template/inlineTemplate.schema.json"
47
+ "interfaceStudioProduct": {
48
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
43
49
  },
44
- "inactive" : {
45
- "type" : "boolean"
50
+ "metaCaseToOtap": {
51
+ "type": "boolean"
46
52
  },
47
- "interfaceStudioProduct" : {
48
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
53
+ "negate": {
54
+ "type": "boolean"
49
55
  },
50
- "metaCaseToOtap" : {
51
- "type" : "boolean"
56
+ "ourProductId": {
57
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
52
58
  },
53
- "negate" : {
54
- "type" : "boolean"
59
+ "type": {
60
+ "enum": [
61
+ "AND",
62
+ "OR"
63
+ ],
64
+ "type": "string"
55
65
  },
56
- "ourProductId" : {
57
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
66
+ "hasValidConfiguration": {
67
+ "type": "boolean"
58
68
  },
59
- "type" : {
60
- "enum" : [ "AND", "OR" ],
61
- "type" : "string"
69
+ "wasEverFullyConfigured": {
70
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
71
+ "type": "boolean"
62
72
  }
63
73
  },
64
- "required" : [ "_type", "_uid" ],
65
- "title" : "conditionList",
66
- "type" : "object"
67
- }
74
+ "required": [
75
+ "_type",
76
+ "_uid"
77
+ ],
78
+ "title": "conditionList",
79
+ "type": "object"
80
+ }
@@ -69,6 +69,13 @@
69
69
  },
70
70
  "showProgress": {
71
71
  "type": "boolean"
72
+ },
73
+ "hasValidConfiguration": {
74
+ "type": "boolean"
75
+ },
76
+ "wasEverFullyConfigured": {
77
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
78
+ "type": "boolean"
72
79
  }
73
80
  },
74
81
  "required": [
@@ -273,56 +273,7 @@
273
273
  ]
274
274
  },
275
275
  "includedCasetype": {
276
- "baseline": "MAY",
277
- "enabledWhen": [
278
- {
279
- "op": "cmp",
280
- "field": "type",
281
- "fieldName": "Type",
282
- "operator": "==",
283
- "value": "cases",
284
- "valueIsField": false,
285
- "isEmpty": false
286
- }
287
- ],
288
- "forbiddenWhen": [
289
- {
290
- "op": "cmp",
291
- "field": "type",
292
- "fieldName": "Type",
293
- "operator": "==",
294
- "value": "all",
295
- "valueIsField": false,
296
- "isEmpty": false
297
- },
298
- {
299
- "op": "cmp",
300
- "field": "type",
301
- "fieldName": "Type",
302
- "operator": "==",
303
- "value": "multivalueAttribute",
304
- "valueIsField": false,
305
- "isEmpty": false
306
- },
307
- {
308
- "op": "cmp",
309
- "field": "type",
310
- "fieldName": "Type",
311
- "operator": "==",
312
- "value": "",
313
- "valueIsField": false,
314
- "isEmpty": true
315
- },
316
- {
317
- "op": "cmp",
318
- "field": "type",
319
- "fieldName": "Type",
320
- "operator": "!=",
321
- "value": "cases",
322
- "valueIsField": false,
323
- "isEmpty": false
324
- }
325
- ]
276
+ "baseline": "MAY"
326
277
  },
327
278
  "copiedCase": {
328
279
  "baseline": "MUST_NOT"
@@ -97,6 +97,13 @@
97
97
  },
98
98
  "vectorEmbeddingModel": {
99
99
  "type": "string"
100
+ },
101
+ "hasValidConfiguration": {
102
+ "type": "boolean"
103
+ },
104
+ "wasEverFullyConfigured": {
105
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
106
+ "type": "boolean"
100
107
  }
101
108
  },
102
109
  "required": [
@@ -147,6 +147,13 @@
147
147
  },
148
148
  "vectorSimilarityMeasure": {
149
149
  "type": "number"
150
+ },
151
+ "hasValidConfiguration": {
152
+ "type": "boolean"
153
+ },
154
+ "wasEverFullyConfigured": {
155
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
156
+ "type": "boolean"
150
157
  }
151
158
  },
152
159
  "required": [
@@ -76,6 +76,13 @@
76
76
  },
77
77
  "useCaseIDOnly": {
78
78
  "type": "boolean"
79
+ },
80
+ "hasValidConfiguration": {
81
+ "type": "boolean"
82
+ },
83
+ "wasEverFullyConfigured": {
84
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
85
+ "type": "boolean"
79
86
  }
80
87
  },
81
88
  "required": [
@@ -108,6 +108,13 @@
108
108
  },
109
109
  "value": {
110
110
  "$ref": "template/inlineTemplate.schema.json"
111
+ },
112
+ "hasValidConfiguration": {
113
+ "type": "boolean"
114
+ },
115
+ "wasEverFullyConfigured": {
116
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
117
+ "type": "boolean"
111
118
  }
112
119
  },
113
120
  "required": [
@@ -1,81 +1,91 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/formActionAi.schema.json",
3
- "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties" : false,
5
- "properties" : {
6
- "_id" : {
7
- "type" : "string"
8
- },
9
- "_interfaceID" : {
10
- "type" : "string"
11
- },
12
- "_isInterface" : {
13
- "type" : "boolean"
14
- },
15
- "_knownIDs" : {
16
- "items" : {
17
- "type" : "string"
2
+ "$id": "https://grexx.net/studio-next/schemas/formActionAi.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "_id": {
7
+ "type": "string"
8
+ },
9
+ "_interfaceID": {
10
+ "type": "string"
11
+ },
12
+ "_isInterface": {
13
+ "type": "boolean"
14
+ },
15
+ "_knownIDs": {
16
+ "items": {
17
+ "type": "string"
18
18
  },
19
- "type" : "array"
19
+ "type": "array"
20
20
  },
21
- "_origin" : {
22
- "type" : "string"
21
+ "_origin": {
22
+ "type": "string"
23
23
  },
24
- "_src" : {
25
- "type" : "string"
24
+ "_src": {
25
+ "type": "string"
26
26
  },
27
- "_type" : {
28
- "const" : "formActionAi"
27
+ "_type": {
28
+ "const": "formActionAi"
29
29
  },
30
- "_uid" : {
31
- "description" : "Deterministic UUID derived from case-ID.",
32
- "format" : "uuid",
33
- "type" : "string"
30
+ "_uid": {
31
+ "description": "Deterministic UUID derived from case-ID.",
32
+ "format": "uuid",
33
+ "type": "string"
34
34
  },
35
- "aiModel" : {
36
- "type" : "string"
35
+ "aiModel": {
36
+ "type": "string"
37
37
  },
38
- "description" : {
39
- "$ref" : "template/inlineTemplate.schema.json"
38
+ "description": {
39
+ "$ref": "template/inlineTemplate.schema.json"
40
40
  },
41
- "formField" : {
42
- "items" : {
43
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
41
+ "formField": {
42
+ "items": {
43
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
44
44
  },
45
- "type" : "array"
45
+ "type": "array"
46
46
  },
47
- "inactive" : {
48
- "type" : "boolean"
47
+ "inactive": {
48
+ "type": "boolean"
49
49
  },
50
- "interfaceStudioProduct" : {
51
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
50
+ "interfaceStudioProduct": {
51
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
52
52
  },
53
- "metaCaseToOtap" : {
54
- "type" : "boolean"
53
+ "metaCaseToOtap": {
54
+ "type": "boolean"
55
55
  },
56
- "model" : {
57
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
56
+ "model": {
57
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
58
58
  },
59
- "ourProductId" : {
60
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
59
+ "ourProductId": {
60
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
61
61
  },
62
- "progressTemplate" : {
63
- "$ref" : "template/inlineTemplate.schema.json"
62
+ "progressTemplate": {
63
+ "$ref": "template/inlineTemplate.schema.json"
64
64
  },
65
- "progressTitle" : {
66
- "$ref" : "common.schema.json#/$defs/multilanguageStringStructure"
65
+ "progressTitle": {
66
+ "$ref": "common.schema.json#/$defs/multilanguageStringStructure"
67
67
  },
68
- "prompt" : {
69
- "$ref" : "template/inlineTemplate.schema.json"
68
+ "prompt": {
69
+ "$ref": "template/inlineTemplate.schema.json"
70
70
  },
71
- "showProgress" : {
72
- "type" : "boolean"
71
+ "showProgress": {
72
+ "type": "boolean"
73
73
  },
74
- "type" : {
75
- "type" : "string"
74
+ "type": {
75
+ "type": "string"
76
+ },
77
+ "hasValidConfiguration": {
78
+ "type": "boolean"
79
+ },
80
+ "wasEverFullyConfigured": {
81
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
82
+ "type": "boolean"
76
83
  }
77
84
  },
78
- "required" : [ "_type", "_uid" ],
79
- "title" : "formActionAi",
80
- "type" : "object"
81
- }
85
+ "required": [
86
+ "_type",
87
+ "_uid"
88
+ ],
89
+ "title": "formActionAi",
90
+ "type": "object"
91
+ }
@@ -1,66 +1,76 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/formActionInlineJavascript.schema.json",
3
- "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties" : false,
5
- "properties" : {
6
- "_id" : {
7
- "type" : "string"
8
- },
9
- "_interfaceID" : {
10
- "type" : "string"
11
- },
12
- "_isInterface" : {
13
- "type" : "boolean"
14
- },
15
- "_knownIDs" : {
16
- "items" : {
17
- "type" : "string"
2
+ "$id": "https://grexx.net/studio-next/schemas/formActionInlineJavascript.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "_id": {
7
+ "type": "string"
8
+ },
9
+ "_interfaceID": {
10
+ "type": "string"
11
+ },
12
+ "_isInterface": {
13
+ "type": "boolean"
14
+ },
15
+ "_knownIDs": {
16
+ "items": {
17
+ "type": "string"
18
18
  },
19
- "type" : "array"
19
+ "type": "array"
20
20
  },
21
- "_origin" : {
22
- "type" : "string"
21
+ "_origin": {
22
+ "type": "string"
23
23
  },
24
- "_src" : {
25
- "type" : "string"
24
+ "_src": {
25
+ "type": "string"
26
26
  },
27
- "_type" : {
28
- "const" : "formActionInlineJavascript"
27
+ "_type": {
28
+ "const": "formActionInlineJavascript"
29
29
  },
30
- "_uid" : {
31
- "description" : "Deterministic UUID derived from case-ID.",
32
- "format" : "uuid",
33
- "type" : "string"
30
+ "_uid": {
31
+ "description": "Deterministic UUID derived from case-ID.",
32
+ "format": "uuid",
33
+ "type": "string"
34
34
  },
35
- "codeBlock" : {
36
- "type" : "string"
35
+ "codeBlock": {
36
+ "type": "string"
37
37
  },
38
- "description" : {
39
- "$ref" : "template/inlineTemplate.schema.json"
38
+ "description": {
39
+ "$ref": "template/inlineTemplate.schema.json"
40
40
  },
41
- "inactive" : {
42
- "type" : "boolean"
41
+ "inactive": {
42
+ "type": "boolean"
43
43
  },
44
- "interfaceStudioProduct" : {
45
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
44
+ "interfaceStudioProduct": {
45
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
46
46
  },
47
- "metaCaseToOtap" : {
48
- "type" : "boolean"
47
+ "metaCaseToOtap": {
48
+ "type": "boolean"
49
49
  },
50
- "ourProductId" : {
51
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
50
+ "ourProductId": {
51
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
52
52
  },
53
- "progressTemplate" : {
54
- "$ref" : "template/inlineTemplate.schema.json"
53
+ "progressTemplate": {
54
+ "$ref": "template/inlineTemplate.schema.json"
55
55
  },
56
- "progressTitle" : {
57
- "$ref" : "common.schema.json#/$defs/multilanguageStringStructure"
56
+ "progressTitle": {
57
+ "$ref": "common.schema.json#/$defs/multilanguageStringStructure"
58
58
  },
59
- "showProgress" : {
60
- "type" : "boolean"
59
+ "showProgress": {
60
+ "type": "boolean"
61
+ },
62
+ "hasValidConfiguration": {
63
+ "type": "boolean"
64
+ },
65
+ "wasEverFullyConfigured": {
66
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
67
+ "type": "boolean"
61
68
  }
62
69
  },
63
- "required" : [ "_type", "_uid" ],
64
- "title" : "formActionInlineJavascript",
65
- "type" : "object"
66
- }
70
+ "required": [
71
+ "_type",
72
+ "_uid"
73
+ ],
74
+ "title": "formActionInlineJavascript",
75
+ "type": "object"
76
+ }
@@ -1,84 +1,94 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/formButton.schema.json",
3
- "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties" : false,
5
- "properties" : {
6
- "_id" : {
7
- "type" : "string"
8
- },
9
- "_interfaceID" : {
10
- "type" : "string"
11
- },
12
- "_isInterface" : {
13
- "type" : "boolean"
14
- },
15
- "_knownIDs" : {
16
- "items" : {
17
- "type" : "string"
2
+ "$id": "https://grexx.net/studio-next/schemas/formButton.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "_id": {
7
+ "type": "string"
8
+ },
9
+ "_interfaceID": {
10
+ "type": "string"
11
+ },
12
+ "_isInterface": {
13
+ "type": "boolean"
14
+ },
15
+ "_knownIDs": {
16
+ "items": {
17
+ "type": "string"
18
18
  },
19
- "type" : "array"
19
+ "type": "array"
20
20
  },
21
- "_origin" : {
22
- "type" : "string"
21
+ "_origin": {
22
+ "type": "string"
23
23
  },
24
- "_src" : {
25
- "type" : "string"
24
+ "_src": {
25
+ "type": "string"
26
26
  },
27
- "_type" : {
28
- "const" : "formButton"
27
+ "_type": {
28
+ "const": "formButton"
29
29
  },
30
- "_uid" : {
31
- "description" : "Deterministic UUID derived from case-ID.",
32
- "format" : "uuid",
33
- "type" : "string"
30
+ "_uid": {
31
+ "description": "Deterministic UUID derived from case-ID.",
32
+ "format": "uuid",
33
+ "type": "string"
34
34
  },
35
- "backgroundColor" : {
36
- "type" : "string"
35
+ "backgroundColor": {
36
+ "type": "string"
37
37
  },
38
- "cssClass" : {
39
- "items" : {
40
- "type" : "string"
38
+ "cssClass": {
39
+ "items": {
40
+ "type": "string"
41
41
  },
42
- "type" : "array"
42
+ "type": "array"
43
43
  },
44
- "description" : {
45
- "$ref" : "template/inlineTemplate.schema.json"
44
+ "description": {
45
+ "$ref": "template/inlineTemplate.schema.json"
46
46
  },
47
- "disabled" : {
48
- "type" : "boolean"
47
+ "disabled": {
48
+ "type": "boolean"
49
49
  },
50
- "hide" : {
51
- "type" : "boolean"
50
+ "hide": {
51
+ "type": "boolean"
52
52
  },
53
- "inactive" : {
54
- "type" : "boolean"
53
+ "inactive": {
54
+ "type": "boolean"
55
55
  },
56
- "interfaceStudioProduct" : {
57
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
56
+ "interfaceStudioProduct": {
57
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
58
58
  },
59
- "label" : {
60
- "$ref" : "template/inlineTemplate.schema.json"
59
+ "label": {
60
+ "$ref": "template/inlineTemplate.schema.json"
61
61
  },
62
- "logic" : {
63
- "items" : {
64
- "$ref" : "abstractRule.schema.json"
62
+ "logic": {
63
+ "items": {
64
+ "$ref": "abstractRule.schema.json"
65
65
  },
66
- "type" : "array"
66
+ "type": "array"
67
67
  },
68
- "metaCaseToOtap" : {
69
- "type" : "boolean"
68
+ "metaCaseToOtap": {
69
+ "type": "boolean"
70
70
  },
71
- "name" : {
72
- "$ref" : "common.schema.json#/$defs/multilanguageStringStructure"
71
+ "name": {
72
+ "$ref": "common.schema.json#/$defs/multilanguageStringStructure"
73
73
  },
74
- "ourProductId" : {
75
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
74
+ "ourProductId": {
75
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
76
76
  },
77
- "width" : {
78
- "type" : "integer"
77
+ "width": {
78
+ "type": "integer"
79
+ },
80
+ "hasValidConfiguration": {
81
+ "type": "boolean"
82
+ },
83
+ "wasEverFullyConfigured": {
84
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
85
+ "type": "boolean"
79
86
  }
80
87
  },
81
- "required" : [ "_type", "_uid" ],
82
- "title" : "formButton",
83
- "type" : "object"
84
- }
88
+ "required": [
89
+ "_type",
90
+ "_uid"
91
+ ],
92
+ "title": "formButton",
93
+ "type": "object"
94
+ }
@@ -55,6 +55,13 @@
55
55
  "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
56
56
  },
57
57
  "type": "array"
58
+ },
59
+ "hasValidConfiguration": {
60
+ "type": "boolean"
61
+ },
62
+ "wasEverFullyConfigured": {
63
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
64
+ "type": "boolean"
58
65
  }
59
66
  },
60
67
  "required": [
@@ -70,6 +70,13 @@
70
70
  "$ref": "abstractRule.schema.json"
71
71
  },
72
72
  "type": "array"
73
+ },
74
+ "hasValidConfiguration": {
75
+ "type": "boolean"
76
+ },
77
+ "wasEverFullyConfigured": {
78
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
79
+ "type": "boolean"
73
80
  }
74
81
  },
75
82
  "required": [
@@ -126,6 +126,13 @@
126
126
  },
127
127
  "toKey": {
128
128
  "type": "string"
129
+ },
130
+ "hasValidConfiguration": {
131
+ "type": "boolean"
132
+ },
133
+ "wasEverFullyConfigured": {
134
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
135
+ "type": "boolean"
129
136
  }
130
137
  },
131
138
  "required": [
@@ -1,60 +1,70 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/notCondition.schema.json",
3
- "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties" : false,
5
- "properties" : {
6
- "_id" : {
7
- "type" : "string"
8
- },
9
- "_interfaceID" : {
10
- "type" : "string"
11
- },
12
- "_isInterface" : {
13
- "type" : "boolean"
14
- },
15
- "_knownIDs" : {
16
- "items" : {
17
- "type" : "string"
2
+ "$id": "https://grexx.net/studio-next/schemas/notCondition.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "_id": {
7
+ "type": "string"
8
+ },
9
+ "_interfaceID": {
10
+ "type": "string"
11
+ },
12
+ "_isInterface": {
13
+ "type": "boolean"
14
+ },
15
+ "_knownIDs": {
16
+ "items": {
17
+ "type": "string"
18
18
  },
19
- "type" : "array"
19
+ "type": "array"
20
+ },
21
+ "_origin": {
22
+ "type": "string"
23
+ },
24
+ "_src": {
25
+ "type": "string"
20
26
  },
21
- "_origin" : {
22
- "type" : "string"
27
+ "_type": {
28
+ "const": "notCondition"
23
29
  },
24
- "_src" : {
25
- "type" : "string"
30
+ "_uid": {
31
+ "description": "Deterministic UUID derived from case-ID.",
32
+ "format": "uuid",
33
+ "type": "string"
26
34
  },
27
- "_type" : {
28
- "const" : "notCondition"
35
+ "condition": {
36
+ "$ref": "abstractCondition.schema.json"
29
37
  },
30
- "_uid" : {
31
- "description" : "Deterministic UUID derived from case-ID.",
32
- "format" : "uuid",
33
- "type" : "string"
38
+ "description": {
39
+ "$ref": "template/inlineTemplate.schema.json"
34
40
  },
35
- "condition" : {
36
- "$ref" : "abstractCondition.schema.json"
41
+ "inactive": {
42
+ "type": "boolean"
37
43
  },
38
- "description" : {
39
- "$ref" : "template/inlineTemplate.schema.json"
44
+ "interfaceStudioProduct": {
45
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
40
46
  },
41
- "inactive" : {
42
- "type" : "boolean"
47
+ "metaCaseToOtap": {
48
+ "type": "boolean"
43
49
  },
44
- "interfaceStudioProduct" : {
45
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
50
+ "negate": {
51
+ "type": "boolean"
46
52
  },
47
- "metaCaseToOtap" : {
48
- "type" : "boolean"
53
+ "ourProductId": {
54
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
49
55
  },
50
- "negate" : {
51
- "type" : "boolean"
56
+ "hasValidConfiguration": {
57
+ "type": "boolean"
52
58
  },
53
- "ourProductId" : {
54
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
59
+ "wasEverFullyConfigured": {
60
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
61
+ "type": "boolean"
55
62
  }
56
63
  },
57
- "required" : [ "_type", "_uid" ],
58
- "title" : "notCondition",
59
- "type" : "object"
60
- }
64
+ "required": [
65
+ "_type",
66
+ "_uid"
67
+ ],
68
+ "title": "notCondition",
69
+ "type": "object"
70
+ }
@@ -1,75 +1,85 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/parallelBlock.schema.json",
3
- "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties" : false,
5
- "properties" : {
6
- "_id" : {
7
- "type" : "string"
8
- },
9
- "_interfaceID" : {
10
- "type" : "string"
11
- },
12
- "_isInterface" : {
13
- "type" : "boolean"
14
- },
15
- "_knownIDs" : {
16
- "items" : {
17
- "type" : "string"
2
+ "$id": "https://grexx.net/studio-next/schemas/parallelBlock.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "_id": {
7
+ "type": "string"
8
+ },
9
+ "_interfaceID": {
10
+ "type": "string"
11
+ },
12
+ "_isInterface": {
13
+ "type": "boolean"
14
+ },
15
+ "_knownIDs": {
16
+ "items": {
17
+ "type": "string"
18
18
  },
19
- "type" : "array"
19
+ "type": "array"
20
20
  },
21
- "_origin" : {
22
- "type" : "string"
21
+ "_origin": {
22
+ "type": "string"
23
23
  },
24
- "_src" : {
25
- "type" : "string"
24
+ "_src": {
25
+ "type": "string"
26
26
  },
27
- "_type" : {
28
- "const" : "parallelBlock"
27
+ "_type": {
28
+ "const": "parallelBlock"
29
29
  },
30
- "_uid" : {
31
- "description" : "Deterministic UUID derived from case-ID.",
32
- "format" : "uuid",
33
- "type" : "string"
30
+ "_uid": {
31
+ "description": "Deterministic UUID derived from case-ID.",
32
+ "format": "uuid",
33
+ "type": "string"
34
34
  },
35
- "description" : {
36
- "$ref" : "template/inlineTemplate.schema.json"
35
+ "description": {
36
+ "$ref": "template/inlineTemplate.schema.json"
37
37
  },
38
- "inactive" : {
39
- "type" : "boolean"
38
+ "inactive": {
39
+ "type": "boolean"
40
40
  },
41
- "interfaceStudioProduct" : {
42
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
41
+ "interfaceStudioProduct": {
42
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
43
43
  },
44
- "metaCaseToOtap" : {
45
- "type" : "boolean"
44
+ "metaCaseToOtap": {
45
+ "type": "boolean"
46
46
  },
47
- "name" : {
48
- "$ref" : "common.schema.json#/$defs/multilanguageStringStructure"
47
+ "name": {
48
+ "$ref": "common.schema.json#/$defs/multilanguageStringStructure"
49
49
  },
50
- "ourProductId" : {
51
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
50
+ "ourProductId": {
51
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
52
52
  },
53
- "parallelRules" : {
54
- "items" : {
55
- "$ref" : "ruleList.schema.json"
53
+ "parallelRules": {
54
+ "items": {
55
+ "$ref": "ruleList.schema.json"
56
56
  },
57
- "type" : "array"
57
+ "type": "array"
58
58
  },
59
- "progressTemplate" : {
60
- "$ref" : "template/inlineTemplate.schema.json"
59
+ "progressTemplate": {
60
+ "$ref": "template/inlineTemplate.schema.json"
61
61
  },
62
- "progressTitle" : {
63
- "$ref" : "common.schema.json#/$defs/multilanguageStringStructure"
62
+ "progressTitle": {
63
+ "$ref": "common.schema.json#/$defs/multilanguageStringStructure"
64
64
  },
65
- "showProgress" : {
66
- "type" : "boolean"
65
+ "showProgress": {
66
+ "type": "boolean"
67
67
  },
68
- "timeOutSeconds" : {
69
- "type" : "integer"
68
+ "timeOutSeconds": {
69
+ "type": "integer"
70
+ },
71
+ "hasValidConfiguration": {
72
+ "type": "boolean"
73
+ },
74
+ "wasEverFullyConfigured": {
75
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
76
+ "type": "boolean"
70
77
  }
71
78
  },
72
- "required" : [ "_type", "_uid" ],
73
- "title" : "parallelBlock",
74
- "type" : "object"
75
- }
79
+ "required": [
80
+ "_type",
81
+ "_uid"
82
+ ],
83
+ "title": "parallelBlock",
84
+ "type": "object"
85
+ }
@@ -83,6 +83,13 @@
83
83
  },
84
84
  "type": {
85
85
  "type": "string"
86
+ },
87
+ "hasValidConfiguration": {
88
+ "type": "boolean"
89
+ },
90
+ "wasEverFullyConfigured": {
91
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
92
+ "type": "boolean"
86
93
  }
87
94
  },
88
95
  "required": [
@@ -1,72 +1,82 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/ruleList.schema.json",
3
- "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties" : false,
5
- "properties" : {
6
- "_id" : {
7
- "type" : "string"
8
- },
9
- "_interfaceID" : {
10
- "type" : "string"
11
- },
12
- "_isInterface" : {
13
- "type" : "boolean"
14
- },
15
- "_knownIDs" : {
16
- "items" : {
17
- "type" : "string"
2
+ "$id": "https://grexx.net/studio-next/schemas/ruleList.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "_id": {
7
+ "type": "string"
8
+ },
9
+ "_interfaceID": {
10
+ "type": "string"
11
+ },
12
+ "_isInterface": {
13
+ "type": "boolean"
14
+ },
15
+ "_knownIDs": {
16
+ "items": {
17
+ "type": "string"
18
18
  },
19
- "type" : "array"
19
+ "type": "array"
20
20
  },
21
- "_origin" : {
22
- "type" : "string"
21
+ "_origin": {
22
+ "type": "string"
23
23
  },
24
- "_src" : {
25
- "type" : "string"
24
+ "_src": {
25
+ "type": "string"
26
26
  },
27
- "_type" : {
28
- "const" : "ruleList"
27
+ "_type": {
28
+ "const": "ruleList"
29
29
  },
30
- "_uid" : {
31
- "description" : "Deterministic UUID derived from case-ID.",
32
- "format" : "uuid",
33
- "type" : "string"
30
+ "_uid": {
31
+ "description": "Deterministic UUID derived from case-ID.",
32
+ "format": "uuid",
33
+ "type": "string"
34
34
  },
35
- "description" : {
36
- "$ref" : "template/inlineTemplate.schema.json"
35
+ "description": {
36
+ "$ref": "template/inlineTemplate.schema.json"
37
37
  },
38
- "inactive" : {
39
- "type" : "boolean"
38
+ "inactive": {
39
+ "type": "boolean"
40
40
  },
41
- "interfaceStudioProduct" : {
42
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
41
+ "interfaceStudioProduct": {
42
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
43
43
  },
44
- "metaCaseToOtap" : {
45
- "type" : "boolean"
44
+ "metaCaseToOtap": {
45
+ "type": "boolean"
46
46
  },
47
- "ourProductId" : {
48
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
47
+ "ourProductId": {
48
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
49
49
  },
50
- "progressTemplate" : {
51
- "$ref" : "template/inlineTemplate.schema.json"
50
+ "progressTemplate": {
51
+ "$ref": "template/inlineTemplate.schema.json"
52
52
  },
53
- "progressTitle" : {
54
- "$ref" : "common.schema.json#/$defs/multilanguageStringStructure"
53
+ "progressTitle": {
54
+ "$ref": "common.schema.json#/$defs/multilanguageStringStructure"
55
55
  },
56
- "rules" : {
57
- "items" : {
58
- "$ref" : "abstractRule.schema.json"
56
+ "rules": {
57
+ "items": {
58
+ "$ref": "abstractRule.schema.json"
59
59
  },
60
- "type" : "array"
60
+ "type": "array"
61
61
  },
62
- "showProgress" : {
63
- "type" : "boolean"
62
+ "showProgress": {
63
+ "type": "boolean"
64
64
  },
65
- "type" : {
66
- "type" : "string"
65
+ "type": {
66
+ "type": "string"
67
+ },
68
+ "hasValidConfiguration": {
69
+ "type": "boolean"
70
+ },
71
+ "wasEverFullyConfigured": {
72
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
73
+ "type": "boolean"
67
74
  }
68
75
  },
69
- "required" : [ "_type", "_uid" ],
70
- "title" : "ruleList",
71
- "type" : "object"
72
- }
76
+ "required": [
77
+ "_type",
78
+ "_uid"
79
+ ],
80
+ "title": "ruleList",
81
+ "type": "object"
82
+ }
@@ -184,6 +184,13 @@
184
184
  },
185
185
  "rightValue": {
186
186
  "type": "string"
187
+ },
188
+ "hasValidConfiguration": {
189
+ "type": "boolean"
190
+ },
191
+ "wasEverFullyConfigured": {
192
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
193
+ "type": "boolean"
187
194
  }
188
195
  },
189
196
  "required": [
@@ -112,6 +112,13 @@
112
112
  "submit"
113
113
  ],
114
114
  "type": "string"
115
+ },
116
+ "hasValidConfiguration": {
117
+ "type": "boolean"
118
+ },
119
+ "wasEverFullyConfigured": {
120
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
121
+ "type": "boolean"
115
122
  }
116
123
  },
117
124
  "required": [
@@ -67,6 +67,13 @@
67
67
  "$ref": "abstractRule.schema.json"
68
68
  },
69
69
  "type": "array"
70
+ },
71
+ "hasValidConfiguration": {
72
+ "type": "boolean"
73
+ },
74
+ "wasEverFullyConfigured": {
75
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
76
+ "type": "boolean"
70
77
  }
71
78
  },
72
79
  "required": [
@@ -67,6 +67,13 @@
67
67
  },
68
68
  "showProgress": {
69
69
  "type": "boolean"
70
+ },
71
+ "hasValidConfiguration": {
72
+ "type": "boolean"
73
+ },
74
+ "wasEverFullyConfigured": {
75
+ "$comment": "The designer bookkeeping pair — see README.md, \"Adding a rule by hand\".",
76
+ "type": "boolean"
70
77
  }
71
78
  },
72
79
  "required": [