@oddessentials/repo-standards 1.2.1 → 2.0.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.
- package/README.md +79 -1
- package/dist/config/standards.csharp-dotnet.azure-devops.json +74 -6
- package/dist/config/standards.csharp-dotnet.github-actions.json +74 -6
- package/dist/config/standards.csharp-dotnet.json +74 -6
- package/dist/config/standards.go.azure-devops.json +74 -0
- package/dist/config/standards.go.github-actions.json +74 -0
- package/dist/config/standards.go.json +74 -0
- package/dist/config/standards.json +250 -32
- package/dist/config/standards.python.azure-devops.json +86 -18
- package/dist/config/standards.python.github-actions.json +86 -18
- package/dist/config/standards.python.json +86 -18
- package/dist/config/standards.rust.azure-devops.json +74 -0
- package/dist/config/standards.rust.github-actions.json +74 -0
- package/dist/config/standards.rust.json +74 -0
- package/dist/config/standards.typescript-js.azure-devops.json +90 -8
- package/dist/config/standards.typescript-js.github-actions.json +90 -8
- package/dist/config/standards.typescript-js.json +90 -8
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -41,6 +41,12 @@
|
|
|
41
41
|
"id": "linting",
|
|
42
42
|
"label": "Linting",
|
|
43
43
|
"stack": {
|
|
44
|
+
"bazelHints": {
|
|
45
|
+
"commands": [
|
|
46
|
+
"bazel build //... --aspects=@rules_rust//rust:defs.bzl%clippy_aspect --output_groups=clippy_checks"
|
|
47
|
+
],
|
|
48
|
+
"notes": "Example only; actual targets are repo-defined. rules_rust includes clippy_aspect for Bazel-native Clippy linting."
|
|
49
|
+
},
|
|
44
50
|
"exampleConfigFiles": [
|
|
45
51
|
"clippy.toml",
|
|
46
52
|
".clippy.toml"
|
|
@@ -73,6 +79,12 @@
|
|
|
73
79
|
"id": "unit-test-runner",
|
|
74
80
|
"label": "Unit Test Runner",
|
|
75
81
|
"stack": {
|
|
82
|
+
"bazelHints": {
|
|
83
|
+
"commands": [
|
|
84
|
+
"bazel test //..."
|
|
85
|
+
],
|
|
86
|
+
"notes": "rules_rust rust_test targets run cargo test under Bazel's hermetic environment."
|
|
87
|
+
},
|
|
76
88
|
"exampleConfigFiles": [
|
|
77
89
|
"Cargo.toml"
|
|
78
90
|
],
|
|
@@ -180,6 +192,12 @@
|
|
|
180
192
|
"id": "unit-test-reporter",
|
|
181
193
|
"label": "Unit Test Reporter / Coverage",
|
|
182
194
|
"stack": {
|
|
195
|
+
"bazelHints": {
|
|
196
|
+
"commands": [
|
|
197
|
+
"bazel coverage //..."
|
|
198
|
+
],
|
|
199
|
+
"notes": "Bazel coverage with rules_rust requires LLVM instrumentation. May need additional toolchain configuration."
|
|
200
|
+
},
|
|
183
201
|
"exampleConfigFiles": [
|
|
184
202
|
"Cargo.toml"
|
|
185
203
|
],
|
|
@@ -205,6 +223,13 @@
|
|
|
205
223
|
"id": "ci-quality-gates",
|
|
206
224
|
"label": "CI Quality Gates",
|
|
207
225
|
"stack": {
|
|
226
|
+
"bazelHints": {
|
|
227
|
+
"commands": [
|
|
228
|
+
"bazel build //...",
|
|
229
|
+
"bazel test //..."
|
|
230
|
+
],
|
|
231
|
+
"notes": "rules_rust provides rust_library, rust_test, and clippy_aspect for complete CI."
|
|
232
|
+
},
|
|
208
233
|
"exampleConfigFiles": [
|
|
209
234
|
".github/workflows/*",
|
|
210
235
|
"azure-pipelines.yml"
|
|
@@ -227,6 +252,12 @@
|
|
|
227
252
|
"id": "code-formatter",
|
|
228
253
|
"label": "Code Formatter",
|
|
229
254
|
"stack": {
|
|
255
|
+
"bazelHints": {
|
|
256
|
+
"commands": [
|
|
257
|
+
"bazel build //... --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect --output_groups=rustfmt_checks"
|
|
258
|
+
],
|
|
259
|
+
"notes": "rules_rust includes rustfmt_aspect for Bazel-native format checking."
|
|
260
|
+
},
|
|
230
261
|
"exampleConfigFiles": [
|
|
231
262
|
"rustfmt.toml",
|
|
232
263
|
".rustfmt.toml"
|
|
@@ -275,6 +306,12 @@
|
|
|
275
306
|
"id": "type-checking",
|
|
276
307
|
"label": "Type Checking",
|
|
277
308
|
"stack": {
|
|
309
|
+
"bazelHints": {
|
|
310
|
+
"commands": [
|
|
311
|
+
"bazel build //..."
|
|
312
|
+
],
|
|
313
|
+
"notes": "Rust type checking is inherent to compilation. bazel build with rules_rust enforces type safety."
|
|
314
|
+
},
|
|
278
315
|
"exampleConfigFiles": [
|
|
279
316
|
"Cargo.toml"
|
|
280
317
|
],
|
|
@@ -593,6 +630,43 @@
|
|
|
593
630
|
"github-actions"
|
|
594
631
|
],
|
|
595
632
|
"meta": {
|
|
633
|
+
"bazelIntegration": {
|
|
634
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
635
|
+
"ciContract": {
|
|
636
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
637
|
+
"deterministicFlags": [
|
|
638
|
+
"--nokeep_going",
|
|
639
|
+
"--test_output=errors"
|
|
640
|
+
],
|
|
641
|
+
"remoteCache": "Optional; not required for CI",
|
|
642
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
643
|
+
},
|
|
644
|
+
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
645
|
+
"detectionRules": {
|
|
646
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
647
|
+
"optionalMarkers": [
|
|
648
|
+
".bazelrc",
|
|
649
|
+
".bazelversion"
|
|
650
|
+
],
|
|
651
|
+
"rootMarkers": [
|
|
652
|
+
"MODULE.bazel",
|
|
653
|
+
"WORKSPACE.bazel",
|
|
654
|
+
"WORKSPACE"
|
|
655
|
+
]
|
|
656
|
+
},
|
|
657
|
+
"optOut": {
|
|
658
|
+
"configPath": "meta.bazelIntegration.enabled",
|
|
659
|
+
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
660
|
+
},
|
|
661
|
+
"targetConventions": {
|
|
662
|
+
"build": "bazel build //...",
|
|
663
|
+
"coverage": "bazel coverage //...",
|
|
664
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
665
|
+
"format": "bazel run //tools/format:check",
|
|
666
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
667
|
+
"test": "bazel test //..."
|
|
668
|
+
}
|
|
669
|
+
},
|
|
596
670
|
"complexityChecks": {
|
|
597
671
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
598
672
|
"enabledByDefault": true
|
|
@@ -35,27 +35,40 @@
|
|
|
35
35
|
"id": "linting",
|
|
36
36
|
"label": "Linting",
|
|
37
37
|
"stack": {
|
|
38
|
+
"anyOfFiles": [
|
|
39
|
+
"eslint.config.js",
|
|
40
|
+
"eslint.config.mjs",
|
|
41
|
+
"eslint.config.cjs",
|
|
42
|
+
".eslintrc.js",
|
|
43
|
+
".eslintrc.cjs",
|
|
44
|
+
".eslintrc.json",
|
|
45
|
+
".eslintrc.yaml",
|
|
46
|
+
".eslintrc.yml"
|
|
47
|
+
],
|
|
48
|
+
"bazelHints": {
|
|
49
|
+
"commands": [
|
|
50
|
+
"bazel test //... --aspects=//tools:lint.bzl%eslint_aspect --output_groups=report"
|
|
51
|
+
],
|
|
52
|
+
"notes": "Example only; actual targets are repo-defined. Wrap eslint via aspect_rules_lint or a custom sh_test rule.",
|
|
53
|
+
"recommendedTargets": [
|
|
54
|
+
"//tools/lint:lint"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
38
57
|
"exampleConfigFiles": [
|
|
39
|
-
".eslintrc.*"
|
|
58
|
+
".eslintrc.*",
|
|
59
|
+
"eslint.config.js"
|
|
40
60
|
],
|
|
41
61
|
"exampleTools": [
|
|
42
62
|
"eslint"
|
|
43
63
|
],
|
|
44
64
|
"notes": "Treat new lint errors as CI failures; keep existing issues as warnings until addressed.",
|
|
45
65
|
"optionalFiles": [
|
|
46
|
-
".eslintrc.js",
|
|
47
|
-
".eslintrc.cjs",
|
|
48
|
-
".eslintrc.json",
|
|
49
|
-
".eslintrc.yaml",
|
|
50
66
|
".prettierrc",
|
|
51
67
|
"prettier.config.js",
|
|
52
68
|
"prettier.config.cjs",
|
|
53
69
|
"prettier.config.json",
|
|
54
70
|
"prettier.config.yaml"
|
|
55
71
|
],
|
|
56
|
-
"requiredFiles": [
|
|
57
|
-
"eslint.config.js"
|
|
58
|
-
],
|
|
59
72
|
"requiredScripts": [
|
|
60
73
|
"lint"
|
|
61
74
|
],
|
|
@@ -72,6 +85,12 @@
|
|
|
72
85
|
"id": "unit-test-runner",
|
|
73
86
|
"label": "Unit Test Runner",
|
|
74
87
|
"stack": {
|
|
88
|
+
"bazelHints": {
|
|
89
|
+
"commands": [
|
|
90
|
+
"bazel test //..."
|
|
91
|
+
],
|
|
92
|
+
"notes": "Bazel discovers and runs all test targets. Use rules_js for Jest/Vitest integration."
|
|
93
|
+
},
|
|
75
94
|
"exampleConfigFiles": [
|
|
76
95
|
"jest.config.*"
|
|
77
96
|
],
|
|
@@ -170,6 +189,12 @@
|
|
|
170
189
|
"id": "unit-test-reporter",
|
|
171
190
|
"label": "Unit Test Reporter / Coverage",
|
|
172
191
|
"stack": {
|
|
192
|
+
"bazelHints": {
|
|
193
|
+
"commands": [
|
|
194
|
+
"bazel coverage //..."
|
|
195
|
+
],
|
|
196
|
+
"notes": "Bazel coverage collects coverage data from all test targets. Use --combined_report=lcov for aggregated reports."
|
|
197
|
+
},
|
|
173
198
|
"exampleConfigFiles": [
|
|
174
199
|
"jest.config.*"
|
|
175
200
|
],
|
|
@@ -191,6 +216,13 @@
|
|
|
191
216
|
"id": "ci-quality-gates",
|
|
192
217
|
"label": "CI Quality Gates",
|
|
193
218
|
"stack": {
|
|
219
|
+
"bazelHints": {
|
|
220
|
+
"commands": [
|
|
221
|
+
"bazel build //...",
|
|
222
|
+
"bazel test //..."
|
|
223
|
+
],
|
|
224
|
+
"notes": "Replace npm run ci with Bazel commands. All quality gates run as Bazel targets."
|
|
225
|
+
},
|
|
194
226
|
"exampleConfigFiles": [
|
|
195
227
|
".github/workflows/*",
|
|
196
228
|
"azure-pipelines.yml"
|
|
@@ -210,6 +242,13 @@
|
|
|
210
242
|
"id": "code-formatter",
|
|
211
243
|
"label": "Code Formatter",
|
|
212
244
|
"stack": {
|
|
245
|
+
"bazelHints": {
|
|
246
|
+
"commands": [
|
|
247
|
+
"bazel run //tools/format:check",
|
|
248
|
+
"bazel test //...:format_test"
|
|
249
|
+
],
|
|
250
|
+
"notes": "Wrap Prettier as a run target for formatting checks. Use aspect_rules_lint for format aspects."
|
|
251
|
+
},
|
|
213
252
|
"exampleConfigFiles": [
|
|
214
253
|
".prettierrc.*",
|
|
215
254
|
".prettierignore"
|
|
@@ -253,6 +292,12 @@
|
|
|
253
292
|
"id": "type-checking",
|
|
254
293
|
"label": "Type Checking",
|
|
255
294
|
"stack": {
|
|
295
|
+
"bazelHints": {
|
|
296
|
+
"commands": [
|
|
297
|
+
"bazel build //..."
|
|
298
|
+
],
|
|
299
|
+
"notes": "TypeScript type errors surface during bazel build with rules_ts. No separate typecheck step needed."
|
|
300
|
+
},
|
|
256
301
|
"exampleConfigFiles": [
|
|
257
302
|
"tsconfig.json"
|
|
258
303
|
],
|
|
@@ -549,6 +594,43 @@
|
|
|
549
594
|
"azure-devops"
|
|
550
595
|
],
|
|
551
596
|
"meta": {
|
|
597
|
+
"bazelIntegration": {
|
|
598
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
599
|
+
"ciContract": {
|
|
600
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
601
|
+
"deterministicFlags": [
|
|
602
|
+
"--nokeep_going",
|
|
603
|
+
"--test_output=errors"
|
|
604
|
+
],
|
|
605
|
+
"remoteCache": "Optional; not required for CI",
|
|
606
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
607
|
+
},
|
|
608
|
+
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
609
|
+
"detectionRules": {
|
|
610
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
611
|
+
"optionalMarkers": [
|
|
612
|
+
".bazelrc",
|
|
613
|
+
".bazelversion"
|
|
614
|
+
],
|
|
615
|
+
"rootMarkers": [
|
|
616
|
+
"MODULE.bazel",
|
|
617
|
+
"WORKSPACE.bazel",
|
|
618
|
+
"WORKSPACE"
|
|
619
|
+
]
|
|
620
|
+
},
|
|
621
|
+
"optOut": {
|
|
622
|
+
"configPath": "meta.bazelIntegration.enabled",
|
|
623
|
+
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
624
|
+
},
|
|
625
|
+
"targetConventions": {
|
|
626
|
+
"build": "bazel build //...",
|
|
627
|
+
"coverage": "bazel coverage //...",
|
|
628
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
629
|
+
"format": "bazel run //tools/format:check",
|
|
630
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
631
|
+
"test": "bazel test //..."
|
|
632
|
+
}
|
|
633
|
+
},
|
|
552
634
|
"complexityChecks": {
|
|
553
635
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
554
636
|
"enabledByDefault": true
|
|
@@ -35,27 +35,40 @@
|
|
|
35
35
|
"id": "linting",
|
|
36
36
|
"label": "Linting",
|
|
37
37
|
"stack": {
|
|
38
|
+
"anyOfFiles": [
|
|
39
|
+
"eslint.config.js",
|
|
40
|
+
"eslint.config.mjs",
|
|
41
|
+
"eslint.config.cjs",
|
|
42
|
+
".eslintrc.js",
|
|
43
|
+
".eslintrc.cjs",
|
|
44
|
+
".eslintrc.json",
|
|
45
|
+
".eslintrc.yaml",
|
|
46
|
+
".eslintrc.yml"
|
|
47
|
+
],
|
|
48
|
+
"bazelHints": {
|
|
49
|
+
"commands": [
|
|
50
|
+
"bazel test //... --aspects=//tools:lint.bzl%eslint_aspect --output_groups=report"
|
|
51
|
+
],
|
|
52
|
+
"notes": "Example only; actual targets are repo-defined. Wrap eslint via aspect_rules_lint or a custom sh_test rule.",
|
|
53
|
+
"recommendedTargets": [
|
|
54
|
+
"//tools/lint:lint"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
38
57
|
"exampleConfigFiles": [
|
|
39
|
-
".eslintrc.*"
|
|
58
|
+
".eslintrc.*",
|
|
59
|
+
"eslint.config.js"
|
|
40
60
|
],
|
|
41
61
|
"exampleTools": [
|
|
42
62
|
"eslint"
|
|
43
63
|
],
|
|
44
64
|
"notes": "Treat new lint errors as CI failures; keep existing issues as warnings until addressed.",
|
|
45
65
|
"optionalFiles": [
|
|
46
|
-
".eslintrc.js",
|
|
47
|
-
".eslintrc.cjs",
|
|
48
|
-
".eslintrc.json",
|
|
49
|
-
".eslintrc.yaml",
|
|
50
66
|
".prettierrc",
|
|
51
67
|
"prettier.config.js",
|
|
52
68
|
"prettier.config.cjs",
|
|
53
69
|
"prettier.config.json",
|
|
54
70
|
"prettier.config.yaml"
|
|
55
71
|
],
|
|
56
|
-
"requiredFiles": [
|
|
57
|
-
"eslint.config.js"
|
|
58
|
-
],
|
|
59
72
|
"requiredScripts": [
|
|
60
73
|
"lint"
|
|
61
74
|
],
|
|
@@ -72,6 +85,12 @@
|
|
|
72
85
|
"id": "unit-test-runner",
|
|
73
86
|
"label": "Unit Test Runner",
|
|
74
87
|
"stack": {
|
|
88
|
+
"bazelHints": {
|
|
89
|
+
"commands": [
|
|
90
|
+
"bazel test //..."
|
|
91
|
+
],
|
|
92
|
+
"notes": "Bazel discovers and runs all test targets. Use rules_js for Jest/Vitest integration."
|
|
93
|
+
},
|
|
75
94
|
"exampleConfigFiles": [
|
|
76
95
|
"jest.config.*"
|
|
77
96
|
],
|
|
@@ -170,6 +189,12 @@
|
|
|
170
189
|
"id": "unit-test-reporter",
|
|
171
190
|
"label": "Unit Test Reporter / Coverage",
|
|
172
191
|
"stack": {
|
|
192
|
+
"bazelHints": {
|
|
193
|
+
"commands": [
|
|
194
|
+
"bazel coverage //..."
|
|
195
|
+
],
|
|
196
|
+
"notes": "Bazel coverage collects coverage data from all test targets. Use --combined_report=lcov for aggregated reports."
|
|
197
|
+
},
|
|
173
198
|
"exampleConfigFiles": [
|
|
174
199
|
"jest.config.*"
|
|
175
200
|
],
|
|
@@ -191,6 +216,13 @@
|
|
|
191
216
|
"id": "ci-quality-gates",
|
|
192
217
|
"label": "CI Quality Gates",
|
|
193
218
|
"stack": {
|
|
219
|
+
"bazelHints": {
|
|
220
|
+
"commands": [
|
|
221
|
+
"bazel build //...",
|
|
222
|
+
"bazel test //..."
|
|
223
|
+
],
|
|
224
|
+
"notes": "Replace npm run ci with Bazel commands. All quality gates run as Bazel targets."
|
|
225
|
+
},
|
|
194
226
|
"exampleConfigFiles": [
|
|
195
227
|
".github/workflows/*",
|
|
196
228
|
"azure-pipelines.yml"
|
|
@@ -210,6 +242,13 @@
|
|
|
210
242
|
"id": "code-formatter",
|
|
211
243
|
"label": "Code Formatter",
|
|
212
244
|
"stack": {
|
|
245
|
+
"bazelHints": {
|
|
246
|
+
"commands": [
|
|
247
|
+
"bazel run //tools/format:check",
|
|
248
|
+
"bazel test //...:format_test"
|
|
249
|
+
],
|
|
250
|
+
"notes": "Wrap Prettier as a run target for formatting checks. Use aspect_rules_lint for format aspects."
|
|
251
|
+
},
|
|
213
252
|
"exampleConfigFiles": [
|
|
214
253
|
".prettierrc.*",
|
|
215
254
|
".prettierignore"
|
|
@@ -253,6 +292,12 @@
|
|
|
253
292
|
"id": "type-checking",
|
|
254
293
|
"label": "Type Checking",
|
|
255
294
|
"stack": {
|
|
295
|
+
"bazelHints": {
|
|
296
|
+
"commands": [
|
|
297
|
+
"bazel build //..."
|
|
298
|
+
],
|
|
299
|
+
"notes": "TypeScript type errors surface during bazel build with rules_ts. No separate typecheck step needed."
|
|
300
|
+
},
|
|
256
301
|
"exampleConfigFiles": [
|
|
257
302
|
"tsconfig.json"
|
|
258
303
|
],
|
|
@@ -549,6 +594,43 @@
|
|
|
549
594
|
"github-actions"
|
|
550
595
|
],
|
|
551
596
|
"meta": {
|
|
597
|
+
"bazelIntegration": {
|
|
598
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
599
|
+
"ciContract": {
|
|
600
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
601
|
+
"deterministicFlags": [
|
|
602
|
+
"--nokeep_going",
|
|
603
|
+
"--test_output=errors"
|
|
604
|
+
],
|
|
605
|
+
"remoteCache": "Optional; not required for CI",
|
|
606
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
607
|
+
},
|
|
608
|
+
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
609
|
+
"detectionRules": {
|
|
610
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
611
|
+
"optionalMarkers": [
|
|
612
|
+
".bazelrc",
|
|
613
|
+
".bazelversion"
|
|
614
|
+
],
|
|
615
|
+
"rootMarkers": [
|
|
616
|
+
"MODULE.bazel",
|
|
617
|
+
"WORKSPACE.bazel",
|
|
618
|
+
"WORKSPACE"
|
|
619
|
+
]
|
|
620
|
+
},
|
|
621
|
+
"optOut": {
|
|
622
|
+
"configPath": "meta.bazelIntegration.enabled",
|
|
623
|
+
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
624
|
+
},
|
|
625
|
+
"targetConventions": {
|
|
626
|
+
"build": "bazel build //...",
|
|
627
|
+
"coverage": "bazel coverage //...",
|
|
628
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
629
|
+
"format": "bazel run //tools/format:check",
|
|
630
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
631
|
+
"test": "bazel test //..."
|
|
632
|
+
}
|
|
633
|
+
},
|
|
552
634
|
"complexityChecks": {
|
|
553
635
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
554
636
|
"enabledByDefault": true
|
|
@@ -41,27 +41,40 @@
|
|
|
41
41
|
"id": "linting",
|
|
42
42
|
"label": "Linting",
|
|
43
43
|
"stack": {
|
|
44
|
+
"anyOfFiles": [
|
|
45
|
+
"eslint.config.js",
|
|
46
|
+
"eslint.config.mjs",
|
|
47
|
+
"eslint.config.cjs",
|
|
48
|
+
".eslintrc.js",
|
|
49
|
+
".eslintrc.cjs",
|
|
50
|
+
".eslintrc.json",
|
|
51
|
+
".eslintrc.yaml",
|
|
52
|
+
".eslintrc.yml"
|
|
53
|
+
],
|
|
54
|
+
"bazelHints": {
|
|
55
|
+
"commands": [
|
|
56
|
+
"bazel test //... --aspects=//tools:lint.bzl%eslint_aspect --output_groups=report"
|
|
57
|
+
],
|
|
58
|
+
"notes": "Example only; actual targets are repo-defined. Wrap eslint via aspect_rules_lint or a custom sh_test rule.",
|
|
59
|
+
"recommendedTargets": [
|
|
60
|
+
"//tools/lint:lint"
|
|
61
|
+
]
|
|
62
|
+
},
|
|
44
63
|
"exampleConfigFiles": [
|
|
45
|
-
".eslintrc.*"
|
|
64
|
+
".eslintrc.*",
|
|
65
|
+
"eslint.config.js"
|
|
46
66
|
],
|
|
47
67
|
"exampleTools": [
|
|
48
68
|
"eslint"
|
|
49
69
|
],
|
|
50
70
|
"notes": "Treat new lint errors as CI failures; keep existing issues as warnings until addressed.",
|
|
51
71
|
"optionalFiles": [
|
|
52
|
-
".eslintrc.js",
|
|
53
|
-
".eslintrc.cjs",
|
|
54
|
-
".eslintrc.json",
|
|
55
|
-
".eslintrc.yaml",
|
|
56
72
|
".prettierrc",
|
|
57
73
|
"prettier.config.js",
|
|
58
74
|
"prettier.config.cjs",
|
|
59
75
|
"prettier.config.json",
|
|
60
76
|
"prettier.config.yaml"
|
|
61
77
|
],
|
|
62
|
-
"requiredFiles": [
|
|
63
|
-
"eslint.config.js"
|
|
64
|
-
],
|
|
65
78
|
"requiredScripts": [
|
|
66
79
|
"lint"
|
|
67
80
|
],
|
|
@@ -81,6 +94,12 @@
|
|
|
81
94
|
"id": "unit-test-runner",
|
|
82
95
|
"label": "Unit Test Runner",
|
|
83
96
|
"stack": {
|
|
97
|
+
"bazelHints": {
|
|
98
|
+
"commands": [
|
|
99
|
+
"bazel test //..."
|
|
100
|
+
],
|
|
101
|
+
"notes": "Bazel discovers and runs all test targets. Use rules_js for Jest/Vitest integration."
|
|
102
|
+
},
|
|
84
103
|
"exampleConfigFiles": [
|
|
85
104
|
"jest.config.*"
|
|
86
105
|
],
|
|
@@ -191,6 +210,12 @@
|
|
|
191
210
|
"id": "unit-test-reporter",
|
|
192
211
|
"label": "Unit Test Reporter / Coverage",
|
|
193
212
|
"stack": {
|
|
213
|
+
"bazelHints": {
|
|
214
|
+
"commands": [
|
|
215
|
+
"bazel coverage //..."
|
|
216
|
+
],
|
|
217
|
+
"notes": "Bazel coverage collects coverage data from all test targets. Use --combined_report=lcov for aggregated reports."
|
|
218
|
+
},
|
|
194
219
|
"exampleConfigFiles": [
|
|
195
220
|
"jest.config.*"
|
|
196
221
|
],
|
|
@@ -215,6 +240,13 @@
|
|
|
215
240
|
"id": "ci-quality-gates",
|
|
216
241
|
"label": "CI Quality Gates",
|
|
217
242
|
"stack": {
|
|
243
|
+
"bazelHints": {
|
|
244
|
+
"commands": [
|
|
245
|
+
"bazel build //...",
|
|
246
|
+
"bazel test //..."
|
|
247
|
+
],
|
|
248
|
+
"notes": "Replace npm run ci with Bazel commands. All quality gates run as Bazel targets."
|
|
249
|
+
},
|
|
218
250
|
"exampleConfigFiles": [
|
|
219
251
|
".github/workflows/*",
|
|
220
252
|
"azure-pipelines.yml"
|
|
@@ -237,6 +269,13 @@
|
|
|
237
269
|
"id": "code-formatter",
|
|
238
270
|
"label": "Code Formatter",
|
|
239
271
|
"stack": {
|
|
272
|
+
"bazelHints": {
|
|
273
|
+
"commands": [
|
|
274
|
+
"bazel run //tools/format:check",
|
|
275
|
+
"bazel test //...:format_test"
|
|
276
|
+
],
|
|
277
|
+
"notes": "Wrap Prettier as a run target for formatting checks. Use aspect_rules_lint for format aspects."
|
|
278
|
+
},
|
|
240
279
|
"exampleConfigFiles": [
|
|
241
280
|
".prettierrc.*",
|
|
242
281
|
".prettierignore"
|
|
@@ -286,6 +325,12 @@
|
|
|
286
325
|
"id": "type-checking",
|
|
287
326
|
"label": "Type Checking",
|
|
288
327
|
"stack": {
|
|
328
|
+
"bazelHints": {
|
|
329
|
+
"commands": [
|
|
330
|
+
"bazel build //..."
|
|
331
|
+
],
|
|
332
|
+
"notes": "TypeScript type errors surface during bazel build with rules_ts. No separate typecheck step needed."
|
|
333
|
+
},
|
|
289
334
|
"exampleConfigFiles": [
|
|
290
335
|
"tsconfig.json"
|
|
291
336
|
],
|
|
@@ -618,6 +663,43 @@
|
|
|
618
663
|
"github-actions"
|
|
619
664
|
],
|
|
620
665
|
"meta": {
|
|
666
|
+
"bazelIntegration": {
|
|
667
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
668
|
+
"ciContract": {
|
|
669
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
670
|
+
"deterministicFlags": [
|
|
671
|
+
"--nokeep_going",
|
|
672
|
+
"--test_output=errors"
|
|
673
|
+
],
|
|
674
|
+
"remoteCache": "Optional; not required for CI",
|
|
675
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
676
|
+
},
|
|
677
|
+
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
678
|
+
"detectionRules": {
|
|
679
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
680
|
+
"optionalMarkers": [
|
|
681
|
+
".bazelrc",
|
|
682
|
+
".bazelversion"
|
|
683
|
+
],
|
|
684
|
+
"rootMarkers": [
|
|
685
|
+
"MODULE.bazel",
|
|
686
|
+
"WORKSPACE.bazel",
|
|
687
|
+
"WORKSPACE"
|
|
688
|
+
]
|
|
689
|
+
},
|
|
690
|
+
"optOut": {
|
|
691
|
+
"configPath": "meta.bazelIntegration.enabled",
|
|
692
|
+
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
693
|
+
},
|
|
694
|
+
"targetConventions": {
|
|
695
|
+
"build": "bazel build //...",
|
|
696
|
+
"coverage": "bazel coverage //...",
|
|
697
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
698
|
+
"format": "bazel run //tools/format:check",
|
|
699
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
700
|
+
"test": "bazel test //..."
|
|
701
|
+
}
|
|
702
|
+
},
|
|
621
703
|
"complexityChecks": {
|
|
622
704
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
623
705
|
"enabledByDefault": true
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bazel execution hints for individual checklist items.
|
|
3
|
+
* Commands are actual Bazel invocations (e.g., "bazel test //..."),
|
|
4
|
+
* NOT assumed pattern labels.
|
|
5
|
+
*/
|
|
6
|
+
export interface BazelHints {
|
|
7
|
+
/** Bazel commands to run (e.g., "bazel test //...", "bazel run //tools/lint") */
|
|
8
|
+
commands?: string[];
|
|
9
|
+
/** Recommended target conventions (documentation only, not assumed to exist) */
|
|
10
|
+
recommendedTargets?: string[];
|
|
11
|
+
/** Usage notes for this check in Bazel context */
|
|
12
|
+
notes?: string;
|
|
13
|
+
}
|
|
1
14
|
export type StackId = "typescript-js" | "csharp-dotnet" | "python" | "rust" | "go";
|
|
2
15
|
export type CiSystem = "azure-devops" | "github-actions";
|
|
3
16
|
export interface MasterJson {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GACf,eAAe,GACf,eAAe,GACf,QAAQ,GACR,MAAM,GACN,IAAI,CAAC;AACT,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,SAAS,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;CAChB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,OAAO,GACf,eAAe,GACf,eAAe,GACf,QAAQ,GACR,MAAM,GACN,IAAI,CAAC;AACT,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,SAAS,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;CAChB"}
|
package/package.json
CHANGED