@grexx/grexxlinter 0.2.1111 → 0.2.1118

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.
@@ -1,63 +1,75 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/job.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/job.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" : "job"
27
+ "_type": {
28
+ "const": "job"
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
- "jobSteps" : {
45
- "items" : {
46
- "$ref" : "jobStep.schema.json"
44
+ "jobSteps": {
45
+ "items": {
46
+ "$ref": "jobStep.schema.json"
47
47
  },
48
- "type" : "array"
48
+ "type": "array"
49
49
  },
50
- "metaCaseToOtap" : {
51
- "type" : "boolean"
50
+ "metaCaseToOtap": {
51
+ "type": "boolean"
52
52
  },
53
- "name" : {
54
- "$ref" : "common.schema.json#/$defs/multilanguageStringStructure"
53
+ "name": {
54
+ "$ref": "common.schema.json#/$defs/multilanguageStringStructure"
55
55
  },
56
- "ourProductId" : {
57
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
56
+ "ourProductId": {
57
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
58
+ },
59
+ "_labels": {
60
+ "type": "array",
61
+ "items": {
62
+ "type": "string",
63
+ "minLength": 1
64
+ },
65
+ "uniqueItems": true,
66
+ "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."
58
67
  }
59
68
  },
60
- "required" : [ "_type", "_uid" ],
61
- "title" : "job",
62
- "type" : "object"
63
- }
69
+ "required": [
70
+ "_type",
71
+ "_uid"
72
+ ],
73
+ "title": "job",
74
+ "type": "object"
75
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://grexx.net/studio-next/schemas/labelRegistry.schema.json",
4
+ "title": "labelRegistry",
5
+ "$comment": "Hand-maintained \u2014 L2 does not define labelRegistry. Lives in packages/schemas/custom/ and is overlaid into extended/ by scripts/extend.mjs. Studio-only: one `labelRegistry.yaml` per platform at the repo root, holding the known-label vocabulary and each label's colour. It is NOT authoritative over what labels exist \u2014 a YAML file may carry a `_labels` entry with no registry row (it renders in the default colour). The registry exists so a label's colour is consistent everywhere, so assigning offers autocomplete instead of free typing, and so a rename has one place to happen. Entries deliberately carry no `_uid`: they must not surface as browsable studio objects in the deep-object index.",
6
+ "type": "object",
7
+ "properties": {
8
+ "_type": {
9
+ "const": "labelRegistry"
10
+ },
11
+ "_id": {
12
+ "type": "string"
13
+ },
14
+ "_uid": {
15
+ "type": "string"
16
+ },
17
+ "labels": {
18
+ "type": "array",
19
+ "description": "The known labels, in display order. `name` is the canonical casing that assignment writes into a file's `_labels`.",
20
+ "items": {
21
+ "$ref": "#/$defs/labelDefinition"
22
+ }
23
+ }
24
+ },
25
+ "required": [
26
+ "_type"
27
+ ],
28
+ "$defs": {
29
+ "labelDefinition": {
30
+ "type": "object",
31
+ "properties": {
32
+ "name": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "description": "Canonical label text, as written into each object's `_labels`."
36
+ },
37
+ "color": {
38
+ "enum": [
39
+ "iris",
40
+ "magenta",
41
+ "tang",
42
+ "pine",
43
+ "teal",
44
+ "orange",
45
+ "chili",
46
+ "mapping",
47
+ "sand",
48
+ "outer"
49
+ ],
50
+ "description": "One of the fixed Grexx Brandguide colours (section \"03 \u2014 Kleuren\"), named as the guide names it. Mirrors LABEL_COLORS in @studio/ui \u2014 keep the two in sync. A free hex is deliberately not allowed: labels must stay on the brand palette. Omitted = the default (outer / Outer Space). Pre-brandguide names (purple/blue/green/amber/red/navy/slate) are still READ correctly by asLabelColor's legacy alias map, but are no longer valid to write."
51
+ },
52
+ "description": {
53
+ "type": "string",
54
+ "description": "Optional note on what the label is for; surfaced as pill hover text."
55
+ }
56
+ },
57
+ "required": [
58
+ "name"
59
+ ]
60
+ }
61
+ }
62
+ }
@@ -78,6 +78,15 @@
78
78
  },
79
79
  "ourProductId": {
80
80
  "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
81
+ },
82
+ "_labels": {
83
+ "type": "array",
84
+ "items": {
85
+ "type": "string",
86
+ "minLength": 1
87
+ },
88
+ "uniqueItems": true,
89
+ "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."
81
90
  }
82
91
  },
83
92
  "required": [
@@ -67,6 +67,15 @@
67
67
  },
68
68
  "uncollapsible": {
69
69
  "type": "boolean"
70
+ },
71
+ "_labels": {
72
+ "type": "array",
73
+ "items": {
74
+ "type": "string",
75
+ "minLength": 1
76
+ },
77
+ "uniqueItems": true,
78
+ "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."
70
79
  }
71
80
  },
72
81
  "required": [
@@ -100,6 +100,15 @@
100
100
  },
101
101
  "valueTemplate": {
102
102
  "$ref": "template/inlineTemplate.schema.json"
103
+ },
104
+ "_labels": {
105
+ "type": "array",
106
+ "items": {
107
+ "type": "string",
108
+ "minLength": 1
109
+ },
110
+ "uniqueItems": true,
111
+ "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."
103
112
  }
104
113
  },
105
114
  "required": [
@@ -214,6 +214,15 @@
214
214
  },
215
215
  "validation": {
216
216
  "type": "string"
217
+ },
218
+ "_labels": {
219
+ "type": "array",
220
+ "items": {
221
+ "type": "string",
222
+ "minLength": 1
223
+ },
224
+ "uniqueItems": true,
225
+ "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."
217
226
  }
218
227
  },
219
228
  "required": [
@@ -1,99 +1,111 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/plugin.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/plugin.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" : "plugin"
27
+ "_type": {
28
+ "const": "plugin"
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
- "datasets" : {
36
- "items" : {
37
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
35
+ "datasets": {
36
+ "items": {
37
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
38
38
  },
39
- "type" : "array"
39
+ "type": "array"
40
40
  },
41
- "definitionHTML" : {
42
- "type" : "string"
41
+ "definitionHTML": {
42
+ "type": "string"
43
43
  },
44
- "definitionJavascript" : {
45
- "type" : "string"
44
+ "definitionJavascript": {
45
+ "type": "string"
46
46
  },
47
- "definitionStylesheet" : {
48
- "type" : "string"
47
+ "definitionStylesheet": {
48
+ "type": "string"
49
49
  },
50
- "description" : {
51
- "$ref" : "template/inlineTemplate.schema.json"
50
+ "description": {
51
+ "$ref": "template/inlineTemplate.schema.json"
52
52
  },
53
- "enabled" : {
54
- "type" : "boolean"
53
+ "enabled": {
54
+ "type": "boolean"
55
55
  },
56
- "forms" : {
57
- "items" : {
58
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
56
+ "forms": {
57
+ "items": {
58
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
59
59
  },
60
- "type" : "array"
60
+ "type": "array"
61
61
  },
62
- "inactive" : {
63
- "type" : "boolean"
62
+ "inactive": {
63
+ "type": "boolean"
64
64
  },
65
- "interfaceStudioProduct" : {
66
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
65
+ "interfaceStudioProduct": {
66
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
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
- "pluginLibrary" : {
78
- "items" : {
79
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
77
+ "pluginLibrary": {
78
+ "items": {
79
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
80
80
  },
81
- "type" : "array"
81
+ "type": "array"
82
82
  },
83
- "type" : {
84
- "type" : "string"
83
+ "type": {
84
+ "type": "string"
85
85
  },
86
- "version" : {
87
- "type" : "string"
86
+ "version": {
87
+ "type": "string"
88
88
  },
89
- "views" : {
90
- "items" : {
91
- "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
89
+ "views": {
90
+ "items": {
91
+ "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
92
92
  },
93
- "type" : "array"
93
+ "type": "array"
94
+ },
95
+ "_labels": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "string",
99
+ "minLength": 1
100
+ },
101
+ "uniqueItems": true,
102
+ "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."
94
103
  }
95
104
  },
96
- "required" : [ "_type", "_uid" ],
97
- "title" : "plugin",
98
- "type" : "object"
99
- }
105
+ "required": [
106
+ "_type",
107
+ "_uid"
108
+ ],
109
+ "title": "plugin",
110
+ "type": "object"
111
+ }
@@ -64,6 +64,15 @@
64
64
  },
65
65
  "version": {
66
66
  "type": "string"
67
+ },
68
+ "_labels": {
69
+ "type": "array",
70
+ "items": {
71
+ "type": "string",
72
+ "minLength": 1
73
+ },
74
+ "uniqueItems": true,
75
+ "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."
67
76
  }
68
77
  },
69
78
  "required": [
@@ -101,6 +101,15 @@
101
101
  "type": "string"
102
102
  },
103
103
  "type": "array"
104
+ },
105
+ "_labels": {
106
+ "type": "array",
107
+ "items": {
108
+ "type": "string",
109
+ "minLength": 1
110
+ },
111
+ "uniqueItems": true,
112
+ "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."
104
113
  }
105
114
  },
106
115
  "required": [
@@ -55,6 +55,15 @@
55
55
  "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
56
56
  },
57
57
  "type": "array"
58
+ },
59
+ "_labels": {
60
+ "type": "array",
61
+ "items": {
62
+ "type": "string",
63
+ "minLength": 1
64
+ },
65
+ "uniqueItems": true,
66
+ "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."
58
67
  }
59
68
  },
60
69
  "required": [
@@ -1,63 +1,75 @@
1
1
  {
2
- "$id" : "https://grexx.net/studio-next/schemas/staticFile.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/staticFile.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" : "staticFile"
27
+ "_type": {
28
+ "const": "staticFile"
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
- "staticFile" : {
54
- "$ref" : "common.schema.json#/$defs/fileDataObject"
53
+ "staticFile": {
54
+ "$ref": "common.schema.json#/$defs/fileDataObject"
55
55
  },
56
- "staticFileHtml" : {
57
- "$ref" : "template/inlineTemplate.schema.json"
56
+ "staticFileHtml": {
57
+ "$ref": "template/inlineTemplate.schema.json"
58
+ },
59
+ "_labels": {
60
+ "type": "array",
61
+ "items": {
62
+ "type": "string",
63
+ "minLength": 1
64
+ },
65
+ "uniqueItems": true,
66
+ "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."
58
67
  }
59
68
  },
60
- "required" : [ "_type", "_uid" ],
61
- "title" : "staticFile",
62
- "type" : "object"
63
- }
69
+ "required": [
70
+ "_type",
71
+ "_uid"
72
+ ],
73
+ "title": "staticFile",
74
+ "type": "object"
75
+ }
@@ -61,6 +61,15 @@
61
61
  },
62
62
  "type": {
63
63
  "type": "string"
64
+ },
65
+ "_labels": {
66
+ "type": "array",
67
+ "items": {
68
+ "type": "string",
69
+ "minLength": 1
70
+ },
71
+ "uniqueItems": true,
72
+ "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."
64
73
  }
65
74
  },
66
75
  "required": [
@@ -61,6 +61,15 @@
61
61
  },
62
62
  "templateText": {
63
63
  "$ref": "template/inlineTemplate.schema.json"
64
+ },
65
+ "_labels": {
66
+ "type": "array",
67
+ "items": {
68
+ "type": "string",
69
+ "minLength": 1
70
+ },
71
+ "uniqueItems": true,
72
+ "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."
64
73
  }
65
74
  },
66
75
  "required": [