@terra-symposium/standards-quality 0.8.0 → 0.8.1

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,132 +1,172 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "title": "Terra quality configuration",
4
- "type": "object",
5
- "additionalProperties": false,
6
- "required": ["sourceRoots", "extensions"],
7
- "properties": {
8
- "$schema": { "type": "string" },
9
- "root": { "type": "string" },
10
- "sourceRoots": { "type": "array", "items": { "type": "string" } },
11
- "includeRoots": { "type": "array", "items": { "type": "string" } },
12
- "extensions": { "type": "array", "items": { "type": "string", "pattern": "^\\." } },
13
- "aliases": { "type": "object", "additionalProperties": { "type": "string" } },
14
- "frameworkEntryExports": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } },
15
- "externalPrefixes": { "type": "array", "items": { "type": "string" } },
16
- "skippedDirectories": { "type": "array", "items": { "type": "string" } },
17
- "skippedFiles": { "type": "array", "items": { "type": "string" } },
18
- "excludeTests": { "type": "boolean", "description": "Exclude files ending in .test.* and .spec.* from configured quality source scans." },
19
- "singleUse": {
20
- "type": "object",
21
- "properties": { "skippedDirectories": { "type": "array", "items": { "type": "string" } } },
22
- "additionalProperties": false
23
- },
24
- "renameExports": { "type": "boolean" },
25
- "protectedIdentifiers": { "type": "array", "items": { "type": "string" } },
26
- "enabledChecks": { "$ref": "#/$defs/toggles" },
27
- "autofix": { "$ref": "#/$defs/toggles" },
28
- "documentation": {
29
- "type": "object",
30
- "properties": {
31
- "required": {
32
- "type": "object",
33
- "properties": {
34
- "types": { "type": "boolean" },
35
- "functions": { "type": "boolean", "description": "Require TSDoc for named functions, including substantive descriptions for every parameter." },
36
- "exportedFunctions": { "type": "boolean", "description": "Require TSDoc for exported named functions, including substantive descriptions for every parameter." },
37
- "noInlineFunctions": { "type": "boolean" }
38
- },
39
- "additionalProperties": false
40
- }
41
- },
42
- "additionalProperties": false
43
- },
44
- "tailwindCanonical": {
45
- "type": "object",
46
- "required": ["stylesheet"],
47
- "properties": {
48
- "stylesheet": { "type": "string" },
49
- "sourceRoots": { "type": "array", "items": { "type": "string" } }
50
- },
51
- "additionalProperties": false
52
- },
53
- "security": {
54
- "type": "object",
55
- "properties": {
56
- "forbiddenTerms": { "type": "array", "items": { "type": "string" } },
57
- "forbiddenImports": { "type": "array", "items": { "type": "string" } },
58
- "clientRoots": { "type": "array", "items": { "type": "string" } },
59
- "allowProcessEnvRoots": { "type": "array", "items": { "type": "string" } }
60
- },
61
- "additionalProperties": false
62
- },
63
- "repeatedClasses": { "type": "object", "properties": { "minimumCount": { "type": "number" }, "extensions": { "type": "array", "items": { "type": "string" } }, "ignoredDirectories": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false },
64
- "regexDedup": { "type": "object", "properties": { "minimumCount": { "type": "number" }, "extensions": { "type": "array", "items": { "type": "string" } }, "ignoredFiles": { "type": "array", "items": { "type": "string" } }, "sharedModule": { "type": "string", "minLength": 1 } }, "additionalProperties": false },
65
- "uiPatterns": { "type": "object", "properties": { "forbidden": { "type": "array", "items": { "type": "string" } }, "ignoredFiles": { "type": "array", "items": { "type": "string" } }, "extensions": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false },
66
- "github": {
67
- "type": "object",
68
- "properties": {
69
- "repositories": { "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" } },
70
- "requiredFeatures": { "type": "array", "uniqueItems": true, "items": { "enum": ["dependencyGraph", "dependabotAlerts", "malwareAlerts", "securityUpdates", "versionUpdates", "groupedUpdates", "secretScanning", "pushProtection", "codeScanning"] } },
71
- "featureExemptions": { "type": "object", "propertyNames": { "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" }, "additionalProperties": { "type": "array", "uniqueItems": true, "items": { "enum": ["dependencyGraph", "dependabotAlerts", "malwareAlerts", "securityUpdates", "versionUpdates", "groupedUpdates", "secretScanning", "pushProtection", "codeScanning"] } } }
72
- },
73
- "additionalProperties": false
74
- },
75
- "enabledCommands": { "type": "object", "additionalProperties": { "type": "boolean" } },
76
- "enabledRecommendations": { "type": "object", "additionalProperties": { "type": "boolean" } },
77
- "qualityCommands": { "$ref": "#/$defs/commands" },
78
- "recommendationCommands": { "$ref": "#/$defs/commands" },
79
- "manualWarnings": { "enum": ["error", "warning"], "default": "error", "description": "Whether dead-code findings that require manual review block quality. Defaults to error." },
80
- "tsconfig": { "type": "string" },
81
- "oneLineImports": { "type": "boolean" },
82
- "prettierPrintWidth": { "type": "number" },
83
- "lintRoots": { "type": "array", "items": { "type": "string" } },
84
- "typecheckRoots": { "type": "array", "items": { "type": "string" } },
85
- "typecheckExtensions": { "type": "array", "items": { "type": "string" } },
86
- "typecheckCommand": {
87
- "type": "object",
88
- "required": ["command"],
89
- "properties": {
90
- "command": { "type": "string" },
91
- "args": { "type": "array", "items": { "type": "string" } }
92
- },
93
- "additionalProperties": false
94
- },
95
- "loadTesting": {
96
- "type": "object",
97
- "properties": {
98
- "enabled": { "type": "boolean" },
99
- "defaultBudget": { "$ref": "#/$defs/loadBudget" },
100
- "testBudgets": { "type": "object", "additionalProperties": { "$ref": "#/$defs/loadBudget" } },
101
- "operationBudgets": { "type": "object", "additionalProperties": { "$ref": "#/$defs/loadBudget" } }
102
- },
103
- "additionalProperties": false
104
- },
105
- "tools": { "type": "object", "additionalProperties": { "type": "string" } }
106
- },
107
- "$defs": {
108
- "toggles": { "type": "object", "additionalProperties": { "type": "boolean" } },
109
- "loadBudget": {
110
- "type": "object",
111
- "properties": {
112
- "warnMs": { "type": "number", "minimum": 0 },
113
- "failMs": { "type": "number", "minimum": 0 }
114
- },
115
- "additionalProperties": false,
116
- "anyOf": [{ "required": ["warnMs"] }, { "required": ["failMs"] }]
117
- },
118
- "commands": {
119
- "type": "array",
120
- "items": {
121
- "type": "object",
122
- "required": ["name", "command"],
123
- "properties": {
124
- "name": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
125
- "command": { "type": "string" },
126
- "args": { "type": "array", "items": { "type": "string" } }
127
- },
128
- "additionalProperties": false
129
- }
130
- }
131
- }
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Terra quality configuration",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["sourceRoots", "extensions"],
7
+ "properties": {
8
+ "$schema": { "type": "string" },
9
+ "root": { "type": "string" },
10
+ "sourceRoots": { "type": "array", "items": { "type": "string" } },
11
+ "includeRoots": { "type": "array", "items": { "type": "string" } },
12
+ "extensions": { "type": "array", "items": { "type": "string", "pattern": "^\\." } },
13
+ "aliases": { "type": "object", "additionalProperties": { "type": "string" } },
14
+ "frameworkEntryExports": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } },
15
+ "externalPrefixes": { "type": "array", "items": { "type": "string" } },
16
+ "skippedDirectories": { "type": "array", "items": { "type": "string" } },
17
+ "skippedFiles": { "type": "array", "items": { "type": "string" } },
18
+ "excludeTests": { "type": "boolean", "description": "Exclude files ending in .test.* and .spec.* from configured quality source scans." },
19
+ "singleUse": {
20
+ "type": "object",
21
+ "properties": { "skippedDirectories": { "type": "array", "items": { "type": "string" } } },
22
+ "additionalProperties": false
23
+ },
24
+ "renameExports": { "type": "boolean" },
25
+ "protectedIdentifiers": { "type": "array", "items": { "type": "string" } },
26
+ "enabledChecks": { "$ref": "#/$defs/toggles" },
27
+ "autofix": { "$ref": "#/$defs/toggles" },
28
+ "documentation": {
29
+ "type": "object",
30
+ "properties": {
31
+ "required": {
32
+ "type": "object",
33
+ "properties": {
34
+ "types": { "type": "boolean" },
35
+ "functions": { "type": "boolean", "description": "Require TSDoc for named functions, including substantive descriptions for every parameter." },
36
+ "exportedFunctions": { "type": "boolean", "description": "Require TSDoc for exported named functions, including substantive descriptions for every parameter." },
37
+ "noInlineFunctions": { "type": "boolean" }
38
+ },
39
+ "additionalProperties": false
40
+ }
41
+ },
42
+ "additionalProperties": false
43
+ },
44
+ "tailwindCanonical": {
45
+ "type": "object",
46
+ "required": ["stylesheet"],
47
+ "properties": {
48
+ "stylesheet": { "type": "string" },
49
+ "sourceRoots": { "type": "array", "items": { "type": "string" } }
50
+ },
51
+ "additionalProperties": false
52
+ },
53
+ "security": {
54
+ "type": "object",
55
+ "properties": {
56
+ "forbiddenTerms": { "type": "array", "items": { "type": "string" } },
57
+ "forbiddenImports": { "type": "array", "items": { "type": "string" } },
58
+ "clientRoots": { "type": "array", "items": { "type": "string" } },
59
+ "allowProcessEnvRoots": { "type": "array", "items": { "type": "string" } }
60
+ },
61
+ "additionalProperties": false
62
+ },
63
+ "repeatedClasses": {
64
+ "type": "object",
65
+ "properties": {
66
+ "minimumCount": { "type": "number" },
67
+ "extensions": { "type": "array", "items": { "type": "string" } },
68
+ "ignoredDirectories": { "type": "array", "items": { "type": "string" } }
69
+ },
70
+ "additionalProperties": false
71
+ },
72
+ "regexDedup": {
73
+ "type": "object",
74
+ "properties": {
75
+ "minimumCount": { "type": "number" },
76
+ "extensions": { "type": "array", "items": { "type": "string" } },
77
+ "ignoredFiles": { "type": "array", "items": { "type": "string" } },
78
+ "sharedModule": { "type": "string", "minLength": 1 }
79
+ },
80
+ "additionalProperties": false
81
+ },
82
+ "uiPatterns": {
83
+ "type": "object",
84
+ "properties": {
85
+ "forbidden": { "type": "array", "items": { "type": "string" } },
86
+ "ignoredFiles": { "type": "array", "items": { "type": "string" } },
87
+ "extensions": { "type": "array", "items": { "type": "string" } }
88
+ },
89
+ "additionalProperties": false
90
+ },
91
+ "github": {
92
+ "type": "object",
93
+ "properties": {
94
+ "repositories": { "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" } },
95
+ "requiredFeatures": {
96
+ "type": "array",
97
+ "uniqueItems": true,
98
+ "items": { "enum": ["dependencyGraph", "dependabotAlerts", "malwareAlerts", "securityUpdates", "versionUpdates", "groupedUpdates", "secretScanning", "pushProtection", "codeScanning"] }
99
+ },
100
+ "featureExemptions": {
101
+ "type": "object",
102
+ "propertyNames": { "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" },
103
+ "additionalProperties": {
104
+ "type": "array",
105
+ "uniqueItems": true,
106
+ "items": { "enum": ["dependencyGraph", "dependabotAlerts", "malwareAlerts", "securityUpdates", "versionUpdates", "groupedUpdates", "secretScanning", "pushProtection", "codeScanning"] }
107
+ }
108
+ }
109
+ },
110
+ "additionalProperties": false
111
+ },
112
+ "enabledCommands": { "type": "object", "additionalProperties": { "type": "boolean" } },
113
+ "enabledRecommendations": { "type": "object", "additionalProperties": { "type": "boolean" } },
114
+ "qualityCommands": {
115
+ "$ref": "#/$defs/commands",
116
+ "description": "Commands selected for the quality run. Terra Quality owns phase order and test grouping; array order is preserved within ordinary phases and within each test group."
117
+ },
118
+ "recommendationCommands": { "$ref": "#/$defs/commands" },
119
+ "manualWarnings": { "enum": ["error", "warning"], "default": "error", "description": "Whether dead-code findings that require manual review block quality. Defaults to error." },
120
+ "tsconfig": { "type": "string" },
121
+ "oneLineImports": { "type": "boolean" },
122
+ "prettierPrintWidth": { "type": "number" },
123
+ "lintRoots": { "type": "array", "items": { "type": "string" } },
124
+ "typecheckRoots": { "type": "array", "items": { "type": "string" } },
125
+ "typecheckExtensions": { "type": "array", "items": { "type": "string" } },
126
+ "typecheckCommand": {
127
+ "type": "object",
128
+ "required": ["command"],
129
+ "properties": {
130
+ "command": { "type": "string" },
131
+ "args": { "type": "array", "items": { "type": "string" } }
132
+ },
133
+ "additionalProperties": false
134
+ },
135
+ "loadTesting": {
136
+ "type": "object",
137
+ "properties": {
138
+ "enabled": { "type": "boolean" },
139
+ "defaultBudget": { "$ref": "#/$defs/loadBudget" },
140
+ "testBudgets": { "type": "object", "additionalProperties": { "$ref": "#/$defs/loadBudget" } },
141
+ "operationBudgets": { "type": "object", "additionalProperties": { "$ref": "#/$defs/loadBudget" } }
142
+ },
143
+ "additionalProperties": false
144
+ },
145
+ "tools": { "type": "object", "additionalProperties": { "type": "string" } }
146
+ },
147
+ "$defs": {
148
+ "toggles": { "type": "object", "additionalProperties": { "type": "boolean" } },
149
+ "loadBudget": {
150
+ "type": "object",
151
+ "properties": {
152
+ "warnMs": { "type": "number", "minimum": 0 },
153
+ "failMs": { "type": "number", "minimum": 0 }
154
+ },
155
+ "additionalProperties": false,
156
+ "anyOf": [{ "required": ["warnMs"] }, { "required": ["failMs"] }]
157
+ },
158
+ "commands": {
159
+ "type": "array",
160
+ "items": {
161
+ "type": "object",
162
+ "required": ["name", "command"],
163
+ "properties": {
164
+ "name": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
165
+ "command": { "type": "string" },
166
+ "args": { "type": "array", "items": { "type": "string" } }
167
+ },
168
+ "additionalProperties": false
169
+ }
170
+ }
171
+ }
132
172
  }