@nielspeter/eess-ts 0.2.1 → 0.5.0
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 +61 -35
- package/dist/builders/call-rule-builder.d.ts +66 -26
- package/dist/builders/call-rule-builder.d.ts.map +1 -1
- package/dist/builders/call-rule-builder.js +75 -32
- package/dist/builders/call-rule-builder.js.map +1 -1
- package/dist/builders/class-rule-builder.d.ts +125 -26
- package/dist/builders/class-rule-builder.d.ts.map +1 -1
- package/dist/builders/class-rule-builder.js +141 -55
- package/dist/builders/class-rule-builder.js.map +1 -1
- package/dist/builders/correspondence-builder.d.ts +287 -0
- package/dist/builders/correspondence-builder.d.ts.map +1 -0
- package/dist/builders/correspondence-builder.js +385 -0
- package/dist/builders/correspondence-builder.js.map +1 -0
- package/dist/builders/correspondence-findings.d.ts +104 -0
- package/dist/builders/correspondence-findings.d.ts.map +1 -0
- package/dist/builders/correspondence-findings.js +301 -0
- package/dist/builders/correspondence-findings.js.map +1 -0
- package/dist/builders/cross-layer-builder.d.ts +99 -16
- package/dist/builders/cross-layer-builder.d.ts.map +1 -1
- package/dist/builders/cross-layer-builder.js +182 -35
- package/dist/builders/cross-layer-builder.js.map +1 -1
- package/dist/builders/function-rule-builder.d.ts +144 -25
- package/dist/builders/function-rule-builder.d.ts.map +1 -1
- package/dist/builders/function-rule-builder.js +177 -39
- package/dist/builders/function-rule-builder.js.map +1 -1
- package/dist/builders/jsx-rule-builder.d.ts +70 -14
- package/dist/builders/jsx-rule-builder.d.ts.map +1 -1
- package/dist/builders/jsx-rule-builder.js +73 -14
- package/dist/builders/jsx-rule-builder.js.map +1 -1
- package/dist/builders/module-rule-builder.d.ts +2 -2
- package/dist/builders/module-rule-builder.d.ts.map +1 -1
- package/dist/builders/module-rule-builder.js +16 -19
- package/dist/builders/module-rule-builder.js.map +1 -1
- package/dist/builders/scoped-function-rule-builder.d.ts +11 -0
- package/dist/builders/scoped-function-rule-builder.d.ts.map +1 -1
- package/dist/builders/scoped-function-rule-builder.js +12 -0
- package/dist/builders/scoped-function-rule-builder.js.map +1 -1
- package/dist/builders/slice-discovery-message.d.ts +36 -0
- package/dist/builders/slice-discovery-message.d.ts.map +1 -0
- package/dist/builders/slice-discovery-message.js +181 -0
- package/dist/builders/slice-discovery-message.js.map +1 -0
- package/dist/builders/slice-rule-builder.d.ts +151 -12
- package/dist/builders/slice-rule-builder.d.ts.map +1 -1
- package/dist/builders/slice-rule-builder.js +243 -35
- package/dist/builders/slice-rule-builder.js.map +1 -1
- package/dist/builders/type-rule-builder.d.ts +95 -24
- package/dist/builders/type-rule-builder.d.ts.map +1 -1
- package/dist/builders/type-rule-builder.js +109 -42
- package/dist/builders/type-rule-builder.js.map +1 -1
- package/dist/{helpers → builders}/within.d.ts +2 -2
- package/dist/builders/within.d.ts.map +1 -0
- package/dist/{helpers → builders}/within.js +1 -1
- package/dist/builders/within.js.map +1 -0
- package/dist/cli/commands/baseline.d.ts +8 -3
- package/dist/cli/commands/baseline.d.ts.map +1 -1
- package/dist/cli/commands/baseline.js +111 -7
- package/dist/cli/commands/baseline.js.map +1 -1
- package/dist/cli/commands/check.d.ts +7 -2
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +385 -47
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +29 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +224 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/explain.d.ts +2 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +19 -10
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/init.d.ts +9 -3
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +162 -137
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/import-rule-module.d.ts +29 -0
- package/dist/cli/import-rule-module.d.ts.map +1 -0
- package/dist/cli/import-rule-module.js +47 -0
- package/dist/cli/import-rule-module.js.map +1 -0
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +101 -43
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/load-rules.d.ts +6 -11
- package/dist/cli/load-rules.d.ts.map +1 -1
- package/dist/cli/load-rules.js +25 -32
- package/dist/cli/load-rules.js.map +1 -1
- package/dist/cli/resolve-config.d.ts +0 -8
- package/dist/cli/resolve-config.d.ts.map +1 -1
- package/dist/cli/resolve-config.js +25 -55
- package/dist/cli/resolve-config.js.map +1 -1
- package/dist/cli/rule-file-findings.d.ts +178 -0
- package/dist/cli/rule-file-findings.d.ts.map +1 -0
- package/dist/cli/rule-file-findings.js +351 -0
- package/dist/cli/rule-file-findings.js.map +1 -0
- package/dist/cli/watch.d.ts +17 -34
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +14 -129
- package/dist/cli/watch.js.map +1 -1
- package/dist/conditions/body-analysis-function.d.ts.map +1 -1
- package/dist/conditions/body-analysis-function.js +16 -7
- package/dist/conditions/body-analysis-function.js.map +1 -1
- package/dist/conditions/body-analysis-module.d.ts.map +1 -1
- package/dist/conditions/body-analysis-module.js +14 -9
- package/dist/conditions/body-analysis-module.js.map +1 -1
- package/dist/conditions/body-analysis.d.ts.map +1 -1
- package/dist/conditions/body-analysis.js +16 -7
- package/dist/conditions/body-analysis.js.map +1 -1
- package/dist/conditions/call.d.ts.map +1 -1
- package/dist/conditions/call.js +41 -19
- package/dist/conditions/call.js.map +1 -1
- package/dist/conditions/catch-analysis.d.ts +2 -1
- package/dist/conditions/catch-analysis.d.ts.map +1 -1
- package/dist/conditions/catch-analysis.js.map +1 -1
- package/dist/conditions/cross-layer.d.ts +2 -10
- package/dist/conditions/cross-layer.d.ts.map +1 -1
- package/dist/conditions/cross-layer.js +227 -23
- package/dist/conditions/cross-layer.js.map +1 -1
- package/dist/conditions/dependency.d.ts +35 -6
- package/dist/conditions/dependency.d.ts.map +1 -1
- package/dist/conditions/dependency.js +299 -45
- package/dist/conditions/dependency.js.map +1 -1
- package/dist/conditions/exports.d.ts.map +1 -1
- package/dist/conditions/exports.js +41 -37
- package/dist/conditions/exports.js.map +1 -1
- package/dist/conditions/function.d.ts.map +1 -1
- package/dist/conditions/function.js +19 -5
- package/dist/conditions/function.js.map +1 -1
- package/dist/conditions/helpers.d.ts +2 -1
- package/dist/conditions/helpers.d.ts.map +1 -1
- package/dist/conditions/helpers.js +4 -1
- package/dist/conditions/helpers.js.map +1 -1
- package/dist/conditions/jsx.d.ts.map +1 -1
- package/dist/conditions/jsx.js +7 -2
- package/dist/conditions/jsx.js.map +1 -1
- package/dist/conditions/match-identity.d.ts +43 -0
- package/dist/conditions/match-identity.d.ts.map +1 -0
- package/dist/conditions/match-identity.js +43 -0
- package/dist/conditions/match-identity.js.map +1 -0
- package/dist/conditions/members.d.ts.map +1 -1
- package/dist/conditions/members.js +20 -6
- package/dist/conditions/members.js.map +1 -1
- package/dist/conditions/reverse-dependency.d.ts +18 -5
- package/dist/conditions/reverse-dependency.d.ts.map +1 -1
- package/dist/conditions/reverse-dependency.js +155 -93
- package/dist/conditions/reverse-dependency.js.map +1 -1
- package/dist/conditions/slice.d.ts +86 -2
- package/dist/conditions/slice.d.ts.map +1 -1
- package/dist/conditions/slice.js +234 -53
- package/dist/conditions/slice.js.map +1 -1
- package/dist/conditions/structural.d.ts.map +1 -1
- package/dist/conditions/structural.js +16 -4
- package/dist/conditions/structural.js.map +1 -1
- package/dist/core/check-all.d.ts +19 -0
- package/dist/core/check-all.d.ts.map +1 -0
- package/dist/core/check-all.js +150 -0
- package/dist/core/check-all.js.map +1 -0
- package/dist/core/combinators.d.ts +48 -0
- package/dist/core/combinators.d.ts.map +1 -0
- package/dist/core/combinators.js +49 -0
- package/dist/core/combinators.js.map +1 -0
- package/dist/core/descendant-cache.d.ts +36 -0
- package/dist/core/descendant-cache.d.ts.map +1 -0
- package/dist/core/descendant-cache.js +117 -0
- package/dist/core/descendant-cache.js.map +1 -0
- package/dist/core/diagnose.d.ts +234 -0
- package/dist/core/diagnose.d.ts.map +1 -0
- package/dist/core/diagnose.js +390 -0
- package/dist/core/diagnose.js.map +1 -0
- package/dist/core/disk-set.d.ts +48 -0
- package/dist/core/disk-set.d.ts.map +1 -0
- package/dist/core/disk-set.js +218 -0
- package/dist/core/disk-set.js.map +1 -0
- package/dist/core/element-cache.d.ts +75 -0
- package/dist/core/element-cache.d.ts.map +1 -0
- package/dist/core/element-cache.js +32 -0
- package/dist/core/element-cache.js.map +1 -0
- package/dist/core/empty-project-advice.d.ts +75 -0
- package/dist/core/empty-project-advice.d.ts.map +1 -0
- package/dist/core/empty-project-advice.js +61 -0
- package/dist/core/empty-project-advice.js.map +1 -0
- package/dist/core/exclusion-comments.d.ts +19 -0
- package/dist/core/exclusion-comments.d.ts.map +1 -0
- package/dist/core/exclusion-comments.js +7 -0
- package/dist/core/exclusion-comments.js.map +1 -0
- package/dist/core/execute-rule.d.ts +158 -0
- package/dist/core/execute-rule.d.ts.map +1 -0
- package/dist/core/execute-rule.js +666 -0
- package/dist/core/execute-rule.js.map +1 -0
- package/dist/core/glob-diagnosis.d.ts +78 -0
- package/dist/core/glob-diagnosis.d.ts.map +1 -0
- package/dist/core/glob-diagnosis.js +134 -0
- package/dist/core/glob-diagnosis.js.map +1 -0
- package/dist/core/glob-evaluator.d.ts +48 -0
- package/dist/core/glob-evaluator.d.ts.map +1 -0
- package/dist/core/glob-evaluator.js +89 -0
- package/dist/core/glob-evaluator.js.map +1 -0
- package/dist/core/import-candidates.d.ts +60 -0
- package/dist/core/import-candidates.d.ts.map +1 -0
- package/dist/core/import-candidates.js +93 -0
- package/dist/core/import-candidates.js.map +1 -0
- package/dist/core/import-options.d.ts +55 -2
- package/dist/core/import-options.d.ts.map +1 -1
- package/dist/core/import-options.js +64 -0
- package/dist/core/import-options.js.map +1 -1
- package/dist/core/invalidate-on-modify.d.ts +20 -0
- package/dist/core/invalidate-on-modify.d.ts.map +1 -0
- package/dist/core/invalidate-on-modify.js +26 -0
- package/dist/core/invalidate-on-modify.js.map +1 -0
- package/dist/core/line-index.d.ts +3 -0
- package/dist/core/line-index.d.ts.map +1 -0
- package/dist/core/line-index.js +227 -0
- package/dist/core/line-index.js.map +1 -0
- package/dist/core/metric-violation.d.ts +86 -0
- package/dist/core/metric-violation.d.ts.map +1 -0
- package/dist/core/metric-violation.js +132 -0
- package/dist/core/metric-violation.js.map +1 -0
- package/dist/core/module-edges.d.ts +361 -0
- package/dist/core/module-edges.d.ts.map +1 -0
- package/dist/core/module-edges.js +593 -0
- package/dist/core/module-edges.js.map +1 -0
- package/dist/core/object-literal-functions.d.ts +42 -0
- package/dist/core/object-literal-functions.d.ts.map +1 -0
- package/dist/core/object-literal-functions.js +75 -0
- package/dist/core/object-literal-functions.js.map +1 -0
- package/dist/core/orphan-exclusions.d.ts +44 -0
- package/dist/core/orphan-exclusions.d.ts.map +1 -0
- package/dist/core/orphan-exclusions.js +224 -0
- package/dist/core/orphan-exclusions.js.map +1 -0
- package/dist/core/pair-condition.d.ts +32 -3
- package/dist/core/pair-condition.d.ts.map +1 -1
- package/dist/core/path-universe.d.ts +22 -0
- package/dist/core/path-universe.d.ts.map +1 -0
- package/dist/core/path-universe.js +45 -0
- package/dist/core/path-universe.js.map +1 -0
- package/dist/core/per-root-compiler-options.d.ts +20 -0
- package/dist/core/per-root-compiler-options.d.ts.map +1 -0
- package/dist/core/per-root-compiler-options.js +57 -0
- package/dist/core/per-root-compiler-options.js.map +1 -0
- package/dist/core/project-relative.d.ts +98 -0
- package/dist/core/project-relative.d.ts.map +1 -0
- package/dist/core/project-relative.js +185 -0
- package/dist/core/project-relative.js.map +1 -0
- package/dist/core/project.d.ts +7 -1
- package/dist/core/project.d.ts.map +1 -1
- package/dist/core/project.js +29 -4
- package/dist/core/project.js.map +1 -1
- package/dist/core/rule-builder.d.ts +303 -0
- package/dist/core/rule-builder.d.ts.map +1 -0
- package/dist/core/rule-builder.js +463 -0
- package/dist/core/rule-builder.js.map +1 -0
- package/dist/core/rule-declaration.d.ts +32 -0
- package/dist/core/rule-declaration.d.ts.map +1 -0
- package/dist/core/rule-declaration.js +88 -0
- package/dist/core/rule-declaration.js.map +1 -0
- package/dist/core/terminal-builder.d.ts +629 -0
- package/dist/core/terminal-builder.d.ts.map +1 -0
- package/dist/core/terminal-builder.js +807 -0
- package/dist/core/terminal-builder.js.map +1 -0
- package/dist/core/terminal-execution.d.ts +39 -0
- package/dist/core/terminal-execution.d.ts.map +1 -0
- package/dist/core/terminal-execution.js +103 -0
- package/dist/core/terminal-execution.js.map +1 -0
- package/dist/core/ts-comment-mask.d.ts +2 -0
- package/dist/core/ts-comment-mask.d.ts.map +1 -0
- package/dist/core/ts-comment-mask.js +102 -0
- package/dist/core/ts-comment-mask.js.map +1 -0
- package/dist/core/vacuity-diagnosis.d.ts +103 -0
- package/dist/core/vacuity-diagnosis.d.ts.map +1 -0
- package/dist/core/vacuity-diagnosis.js +415 -0
- package/dist/core/vacuity-diagnosis.js.map +1 -0
- package/dist/core/violation.d.ts +16 -11
- package/dist/core/violation.d.ts.map +1 -1
- package/dist/core/violation.js +33 -13
- package/dist/core/violation.js.map +1 -1
- package/dist/graphql/graphql-rule-builder.d.ts +95 -0
- package/dist/graphql/graphql-rule-builder.d.ts.map +1 -0
- package/dist/graphql/graphql-rule-builder.js +127 -0
- package/dist/graphql/graphql-rule-builder.js.map +1 -0
- package/dist/graphql/index.d.ts +1 -0
- package/dist/graphql/index.d.ts.map +1 -1
- package/dist/graphql/index.js +2 -1
- package/dist/graphql/index.js.map +1 -1
- package/dist/graphql/resolver-rule-builder.d.ts +44 -23
- package/dist/graphql/resolver-rule-builder.d.ts.map +1 -1
- package/dist/graphql/resolver-rule-builder.js +80 -72
- package/dist/graphql/resolver-rule-builder.js.map +1 -1
- package/dist/graphql/schema-loader.d.ts +21 -0
- package/dist/graphql/schema-loader.d.ts.map +1 -1
- package/dist/graphql/schema-loader.js +82 -12
- package/dist/graphql/schema-loader.js.map +1 -1
- package/dist/graphql/schema-predicates.d.ts.map +1 -1
- package/dist/graphql/schema-predicates.js +17 -12
- package/dist/graphql/schema-predicates.js.map +1 -1
- package/dist/graphql/schema-rule-builder.d.ts +15 -24
- package/dist/graphql/schema-rule-builder.d.ts.map +1 -1
- package/dist/graphql/schema-rule-builder.js +39 -77
- package/dist/graphql/schema-rule-builder.js.map +1 -1
- package/dist/helpers/baseline-diagnostics.d.ts +45 -0
- package/dist/helpers/baseline-diagnostics.d.ts.map +1 -0
- package/dist/helpers/baseline-diagnostics.js +168 -0
- package/dist/helpers/baseline-diagnostics.js.map +1 -0
- package/dist/helpers/baseline-generator.d.ts +28 -0
- package/dist/helpers/baseline-generator.d.ts.map +1 -0
- package/dist/helpers/baseline-generator.js +27 -0
- package/dist/helpers/baseline-generator.js.map +1 -0
- package/dist/helpers/baseline.d.ts +336 -0
- package/dist/helpers/baseline.d.ts.map +1 -0
- package/dist/helpers/baseline.js +664 -0
- package/dist/helpers/baseline.js.map +1 -0
- package/dist/helpers/body-traversal.d.ts +27 -2
- package/dist/helpers/body-traversal.d.ts.map +1 -1
- package/dist/helpers/body-traversal.js +135 -16
- package/dist/helpers/body-traversal.js.map +1 -1
- package/dist/helpers/callback-extractor.d.ts.map +1 -1
- package/dist/helpers/callback-extractor.js +53 -84
- package/dist/helpers/callback-extractor.js.map +1 -1
- package/dist/helpers/complexity.d.ts +13 -5
- package/dist/helpers/complexity.d.ts.map +1 -1
- package/dist/helpers/complexity.js +15 -6
- package/dist/helpers/complexity.js.map +1 -1
- package/dist/helpers/diff-aware.d.ts +16 -0
- package/dist/helpers/diff-aware.d.ts.map +1 -0
- package/dist/helpers/diff-aware.js +16 -0
- package/dist/helpers/diff-aware.js.map +1 -0
- package/dist/helpers/matchers.d.ts +68 -7
- package/dist/helpers/matchers.d.ts.map +1 -1
- package/dist/helpers/matchers.js +164 -86
- package/dist/helpers/matchers.js.map +1 -1
- package/dist/helpers/slice-graph.d.ts +100 -8
- package/dist/helpers/slice-graph.d.ts.map +1 -1
- package/dist/helpers/slice-graph.js +126 -34
- package/dist/helpers/slice-graph.js.map +1 -1
- package/dist/helpers/tarjan.d.ts +0 -14
- package/dist/helpers/tarjan.d.ts.map +1 -1
- package/dist/helpers/tarjan.js +29 -16
- package/dist/helpers/tarjan.js.map +1 -1
- package/dist/index.d.ts +55 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +67 -15
- package/dist/index.js.map +1 -1
- package/dist/models/arch-call.d.ts +3 -2
- package/dist/models/arch-call.d.ts.map +1 -1
- package/dist/models/arch-call.js.map +1 -1
- package/dist/models/arch-function.d.ts +54 -8
- package/dist/models/arch-function.d.ts.map +1 -1
- package/dist/models/arch-function.js +145 -8
- package/dist/models/arch-function.js.map +1 -1
- package/dist/models/arch-jsx-element.d.ts.map +1 -1
- package/dist/models/arch-jsx-element.js +18 -19
- package/dist/models/arch-jsx-element.js.map +1 -1
- package/dist/models/slice.d.ts +33 -9
- package/dist/models/slice.d.ts.map +1 -1
- package/dist/models/slice.js +129 -19
- package/dist/models/slice.js.map +1 -1
- package/dist/predicates/call.d.ts.map +1 -1
- package/dist/predicates/call.js +5 -0
- package/dist/predicates/call.js.map +1 -1
- package/dist/predicates/identity.d.ts +21 -0
- package/dist/predicates/identity.d.ts.map +1 -1
- package/dist/predicates/identity.js +75 -3
- package/dist/predicates/identity.js.map +1 -1
- package/dist/predicates/index.d.ts +1 -1
- package/dist/predicates/index.d.ts.map +1 -1
- package/dist/predicates/index.js +1 -1
- package/dist/predicates/index.js.map +1 -1
- package/dist/predicates/jsx.d.ts.map +1 -1
- package/dist/predicates/jsx.js +2 -1
- package/dist/predicates/jsx.js.map +1 -1
- package/dist/predicates/metrics.d.ts +4 -2
- package/dist/predicates/metrics.d.ts.map +1 -1
- package/dist/predicates/metrics.js +4 -2
- package/dist/predicates/metrics.js.map +1 -1
- package/dist/predicates/module.d.ts +4 -12
- package/dist/predicates/module.d.ts.map +1 -1
- package/dist/predicates/module.js +57 -37
- package/dist/predicates/module.js.map +1 -1
- package/dist/presets/agent-guardrails.d.ts +49 -16
- package/dist/presets/agent-guardrails.d.ts.map +1 -1
- package/dist/presets/agent-guardrails.js +308 -19
- package/dist/presets/agent-guardrails.js.map +1 -1
- package/dist/presets/boundaries.d.ts +46 -3
- package/dist/presets/boundaries.d.ts.map +1 -1
- package/dist/presets/boundaries.js +132 -23
- package/dist/presets/boundaries.js.map +1 -1
- package/dist/presets/data-layer.d.ts +23 -3
- package/dist/presets/data-layer.d.ts.map +1 -1
- package/dist/presets/data-layer.js +58 -16
- package/dist/presets/data-layer.js.map +1 -1
- package/dist/presets/index.d.ts +10 -5
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +19 -3
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/layered.d.ts +47 -3
- package/dist/presets/layered.d.ts.map +1 -1
- package/dist/presets/layered.js +66 -29
- package/dist/presets/layered.js.map +1 -1
- package/dist/presets/recommended.d.ts +81 -10
- package/dist/presets/recommended.d.ts.map +1 -1
- package/dist/presets/recommended.js +25 -23
- package/dist/presets/recommended.js.map +1 -1
- package/dist/presets/shared.d.ts +267 -2
- package/dist/presets/shared.d.ts.map +1 -1
- package/dist/presets/shared.js +367 -4
- package/dist/presets/shared.js.map +1 -1
- package/dist/rules/code-quality.d.ts.map +1 -1
- package/dist/rules/code-quality.js +15 -6
- package/dist/rules/code-quality.js.map +1 -1
- package/dist/rules/hygiene.d.ts +1 -1
- package/dist/rules/hygiene.js +1 -1
- package/dist/rules/metrics-function.d.ts +2 -1
- package/dist/rules/metrics-function.d.ts.map +1 -1
- package/dist/rules/metrics-function.js +63 -39
- package/dist/rules/metrics-function.js.map +1 -1
- package/dist/rules/metrics.d.ts +2 -1
- package/dist/rules/metrics.d.ts.map +1 -1
- package/dist/rules/metrics.js +80 -47
- package/dist/rules/metrics.js.map +1 -1
- package/dist/smells/clusters.d.ts +78 -0
- package/dist/smells/clusters.d.ts.map +1 -0
- package/dist/smells/clusters.js +124 -0
- package/dist/smells/clusters.js.map +1 -0
- package/dist/smells/duplicate-bodies.d.ts +92 -5
- package/dist/smells/duplicate-bodies.d.ts.map +1 -1
- package/dist/smells/duplicate-bodies.js +203 -73
- package/dist/smells/duplicate-bodies.js.map +1 -1
- package/dist/smells/duplicate-report.d.ts +90 -0
- package/dist/smells/duplicate-report.d.ts.map +1 -0
- package/dist/smells/duplicate-report.js +344 -0
- package/dist/smells/duplicate-report.js.map +1 -0
- package/dist/smells/fingerprint.d.ts +20 -1
- package/dist/smells/fingerprint.d.ts.map +1 -1
- package/dist/smells/fingerprint.js +27 -3
- package/dist/smells/fingerprint.js.map +1 -1
- package/dist/smells/inconsistent-siblings.d.ts +128 -7
- package/dist/smells/inconsistent-siblings.d.ts.map +1 -1
- package/dist/smells/inconsistent-siblings.js +288 -86
- package/dist/smells/inconsistent-siblings.js.map +1 -1
- package/dist/smells/sibling-files.d.ts +47 -0
- package/dist/smells/sibling-files.d.ts.map +1 -0
- package/dist/smells/sibling-files.js +104 -0
- package/dist/smells/sibling-files.js.map +1 -0
- package/dist/smells/similar-pairs.d.ts +28 -0
- package/dist/smells/similar-pairs.d.ts.map +1 -0
- package/dist/smells/similar-pairs.js +134 -0
- package/dist/smells/similar-pairs.js.map +1 -0
- package/dist/smells/smell-builder.d.ts +57 -12
- package/dist/smells/smell-builder.d.ts.map +1 -1
- package/dist/smells/smell-builder.js +112 -14
- package/dist/smells/smell-builder.js.map +1 -1
- package/dist/smells/variation.d.ts +47 -0
- package/dist/smells/variation.d.ts.map +1 -0
- package/dist/smells/variation.js +90 -0
- package/dist/smells/variation.js.map +1 -0
- package/dist/tsconfig/index.d.ts +19 -0
- package/dist/tsconfig/index.d.ts.map +1 -0
- package/dist/tsconfig/index.js +20 -0
- package/dist/tsconfig/index.js.map +1 -0
- package/dist/tsconfig/tsconfig-builder.d.ts +42 -9
- package/dist/tsconfig/tsconfig-builder.d.ts.map +1 -1
- package/dist/tsconfig/tsconfig-builder.js +65 -16
- package/dist/tsconfig/tsconfig-builder.js.map +1 -1
- package/package.json +4 -2
- package/dist/core/module-dependencies.d.ts +0 -28
- package/dist/core/module-dependencies.d.ts.map +0 -1
- package/dist/core/module-dependencies.js +0 -35
- package/dist/core/module-dependencies.js.map +0 -1
- package/dist/helpers/within.d.ts.map +0 -1
- package/dist/helpers/within.js.map +0 -1
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { RuleBuilder } from '
|
|
1
|
+
import { RuleBuilder } from '../core/rule-builder.js';
|
|
2
2
|
import { areInterfaces, areTypeAliases, haveProperty, havePropertyOfType, extendType, } from '../predicates/type.js';
|
|
3
3
|
import { havePropertyType } from '../conditions/type-level.js';
|
|
4
4
|
import { havePropertyNamed as memberHavePropertyNamed, notHavePropertyNamed as memberNotHavePropertyNamed, havePropertyMatching as memberHavePropertyMatching, notHavePropertyMatching as memberNotHavePropertyMatching, haveOnlyReadonlyProperties as memberHaveOnlyReadonlyProperties, maxProperties as memberMaxProperties, } from '../conditions/members.js';
|
|
5
5
|
import { beExported as conditionBeExported, notExist as conditionNotExist, haveNameMatching as conditionHaveNameMatching, resideInFile as conditionResideInFile, resideInFolder as conditionResideInFolder, } from '../conditions/structural.js';
|
|
6
|
+
import { createElementCache, SOLE_POPULATION } from '../core/element-cache.js';
|
|
6
7
|
import { haveNameMatching as identityHaveNameMatching, resideInFile as identityResideInFile, resideInFolder as identityResideInFolder, areExported as identityAreExported, areNotExported as identityAreNotExported, } from '../predicates/identity.js';
|
|
8
|
+
/** One collection per project, shared by every rule built from it (plan 0075). */
|
|
9
|
+
const cache = createElementCache();
|
|
7
10
|
/**
|
|
8
11
|
* Rule builder for interface and type alias declarations.
|
|
9
12
|
*
|
|
@@ -26,58 +29,93 @@ export class TypeRuleBuilder extends RuleBuilder {
|
|
|
26
29
|
* from all source files in the project.
|
|
27
30
|
*/
|
|
28
31
|
getElements() {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
return cache.get(this.project, SOLE_POPULATION, () => {
|
|
33
|
+
const elements = [];
|
|
34
|
+
for (const sf of this.project.getSourceFiles()) {
|
|
35
|
+
elements.push(...sf.getInterfaces());
|
|
36
|
+
elements.push(...sf.getTypeAliases());
|
|
37
|
+
}
|
|
38
|
+
return elements;
|
|
39
|
+
});
|
|
35
40
|
}
|
|
36
41
|
// --- Type-specific predicates ---
|
|
37
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Narrows the selection to types that are interfaces.
|
|
44
|
+
*
|
|
45
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
46
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
47
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
48
|
+
* rule pass having asserted nothing.
|
|
49
|
+
*/
|
|
38
50
|
areInterfaces() {
|
|
39
51
|
return this.addPredicate(areInterfaces());
|
|
40
52
|
}
|
|
41
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Narrows the selection to types that are type aliases.
|
|
55
|
+
*
|
|
56
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
57
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
58
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
59
|
+
* rule pass having asserted nothing.
|
|
60
|
+
*/
|
|
42
61
|
areTypeAliases() {
|
|
43
62
|
return this.addPredicate(areTypeAliases());
|
|
44
63
|
}
|
|
45
64
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
65
|
+
* Narrows the selection to types that have a property named `name`.
|
|
66
|
+
*
|
|
67
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
68
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
69
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
70
|
+
* rule pass having asserted nothing.
|
|
48
71
|
*/
|
|
49
72
|
haveProperty(name) {
|
|
50
73
|
return this.addPredicate(haveProperty(name));
|
|
51
74
|
}
|
|
52
75
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
76
|
+
* Narrows the selection to types that have property `name` of a type matching `matcher`.
|
|
77
|
+
*
|
|
78
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
79
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
80
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
81
|
+
* rule pass having asserted nothing.
|
|
55
82
|
*/
|
|
56
83
|
havePropertyOfType(name, matcher) {
|
|
57
84
|
return this.addPredicate(havePropertyOfType(name, matcher));
|
|
58
85
|
}
|
|
59
86
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
87
|
+
* Narrows the selection to types that extend the type `name`.
|
|
88
|
+
*
|
|
89
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
90
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
91
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
92
|
+
* rule pass having asserted nothing.
|
|
63
93
|
*/
|
|
64
94
|
extendType(name) {
|
|
65
95
|
return this.addPredicate(extendType(name));
|
|
66
96
|
}
|
|
67
97
|
// --- Type-specific conditions ---
|
|
68
98
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
99
|
+
* Asserts that the selected types have property `name` of a type matching `matcher`.
|
|
100
|
+
*
|
|
101
|
+
* **Condition only** — this is the assertion, so it belongs after `.should()`.
|
|
72
102
|
*/
|
|
73
103
|
havePropertyType(name, matcher) {
|
|
74
104
|
return this.addCondition(havePropertyType(name, matcher));
|
|
75
105
|
}
|
|
76
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* Asserts that the selected types are exported.
|
|
108
|
+
*
|
|
109
|
+
* **Condition only** — this is the assertion, so it belongs after `.should()`.
|
|
110
|
+
*/
|
|
77
111
|
beExported() {
|
|
78
112
|
return this.addCondition(conditionBeExported());
|
|
79
113
|
}
|
|
80
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* Asserts that the selected types do not exist.
|
|
116
|
+
*
|
|
117
|
+
* **Condition only** — this is the assertion, so it belongs after `.should()`.
|
|
118
|
+
*/
|
|
81
119
|
notExist() {
|
|
82
120
|
return this.addCondition(conditionNotExist());
|
|
83
121
|
}
|
|
@@ -86,27 +124,51 @@ export class TypeRuleBuilder extends RuleBuilder {
|
|
|
86
124
|
return this.addCondition(conditionHaveNameMatching(pattern));
|
|
87
125
|
}
|
|
88
126
|
// --- Member property conditions (plan 0030) ---
|
|
89
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* Asserts that the selected types have a property named by each of `names`.
|
|
129
|
+
*
|
|
130
|
+
* **Condition only** — this is the assertion, so it belongs after `.should()`.
|
|
131
|
+
*/
|
|
90
132
|
havePropertyNamed(...names) {
|
|
91
133
|
return this.addCondition(memberHavePropertyNamed(...names));
|
|
92
134
|
}
|
|
93
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* Asserts that the selected types do not have a property named by any of `names`.
|
|
137
|
+
*
|
|
138
|
+
* **Condition only** — this is the assertion, so it belongs after `.should()`.
|
|
139
|
+
*/
|
|
94
140
|
notHavePropertyNamed(...names) {
|
|
95
141
|
return this.addCondition(memberNotHavePropertyNamed(...names));
|
|
96
142
|
}
|
|
97
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* Asserts that the selected types have a property matching `pattern`.
|
|
145
|
+
*
|
|
146
|
+
* **Condition only** — this is the assertion, so it belongs after `.should()`.
|
|
147
|
+
*/
|
|
98
148
|
havePropertyMatching(pattern) {
|
|
99
149
|
return this.addCondition(memberHavePropertyMatching(pattern));
|
|
100
150
|
}
|
|
101
|
-
/**
|
|
151
|
+
/**
|
|
152
|
+
* Asserts that the selected types do not have a property matching `pattern`.
|
|
153
|
+
*
|
|
154
|
+
* **Condition only** — this is the assertion, so it belongs after `.should()`.
|
|
155
|
+
*/
|
|
102
156
|
notHavePropertyMatching(pattern) {
|
|
103
157
|
return this.addCondition(memberNotHavePropertyMatching(pattern));
|
|
104
158
|
}
|
|
105
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* Asserts that the selected types have only readonly properties.
|
|
161
|
+
*
|
|
162
|
+
* **Condition only** — this is the assertion, so it belongs after `.should()`.
|
|
163
|
+
*/
|
|
106
164
|
haveOnlyReadonlyProperties() {
|
|
107
165
|
return this.addCondition(memberHaveOnlyReadonlyProperties());
|
|
108
166
|
}
|
|
109
|
-
/**
|
|
167
|
+
/**
|
|
168
|
+
* Asserts that the selected types have at most `max` properties.
|
|
169
|
+
*
|
|
170
|
+
* **Condition only** — this is the assertion, so it belongs after `.should()`.
|
|
171
|
+
*/
|
|
110
172
|
maxProperties(max) {
|
|
111
173
|
return this.addCondition(memberMaxProperties(max));
|
|
112
174
|
}
|
|
@@ -116,17 +178,28 @@ export class TypeRuleBuilder extends RuleBuilder {
|
|
|
116
178
|
* After `.should()`: assert matched types have names matching the pattern.
|
|
117
179
|
*/
|
|
118
180
|
haveNameMatching(pattern) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
return this.addCondition(conditionHaveNameMatching(regex));
|
|
122
|
-
}
|
|
123
|
-
return this.addPredicate(identityHaveNameMatching(pattern));
|
|
181
|
+
const regex = typeof pattern === 'string' ? new RegExp(pattern) : pattern;
|
|
182
|
+
return this.dualUse(conditionHaveNameMatching(regex), identityHaveNameMatching(pattern));
|
|
124
183
|
}
|
|
125
|
-
/**
|
|
184
|
+
/**
|
|
185
|
+
* Narrows the selection to types that are exported.
|
|
186
|
+
*
|
|
187
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
188
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
189
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
190
|
+
* rule pass having asserted nothing.
|
|
191
|
+
*/
|
|
126
192
|
areExported() {
|
|
127
193
|
return this.addPredicate(identityAreExported());
|
|
128
194
|
}
|
|
129
|
-
/**
|
|
195
|
+
/**
|
|
196
|
+
* Narrows the selection to types that are not exported.
|
|
197
|
+
*
|
|
198
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
199
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
200
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
201
|
+
* rule pass having asserted nothing.
|
|
202
|
+
*/
|
|
130
203
|
areNotExported() {
|
|
131
204
|
return this.addPredicate(identityAreNotExported());
|
|
132
205
|
}
|
|
@@ -135,20 +208,14 @@ export class TypeRuleBuilder extends RuleBuilder {
|
|
|
135
208
|
* After `.should()`: assert types reside in a file matching the glob.
|
|
136
209
|
*/
|
|
137
210
|
resideInFile(glob) {
|
|
138
|
-
|
|
139
|
-
return this.addCondition(conditionResideInFile(glob));
|
|
140
|
-
}
|
|
141
|
-
return this.addPredicate(identityResideInFile(glob));
|
|
211
|
+
return this.dualUse(conditionResideInFile(glob), identityResideInFile(glob));
|
|
142
212
|
}
|
|
143
213
|
/**
|
|
144
214
|
* After `.that()`: filter types in a folder matching the glob.
|
|
145
215
|
* After `.should()`: assert types reside in a folder matching the glob.
|
|
146
216
|
*/
|
|
147
217
|
resideInFolder(glob) {
|
|
148
|
-
|
|
149
|
-
return this.addCondition(conditionResideInFolder(glob));
|
|
150
|
-
}
|
|
151
|
-
return this.addPredicate(identityResideInFolder(glob));
|
|
218
|
+
return this.dualUse(conditionResideInFolder(glob), identityResideInFolder(glob));
|
|
152
219
|
}
|
|
153
220
|
}
|
|
154
221
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-rule-builder.js","sourceRoot":"","sources":["../../src/builders/type-rule-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"type-rule-builder.js","sourceRoot":"","sources":["../../src/builders/type-rule-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CallRuleBuilder } from '
|
|
2
|
-
import { ScopedFunctionRuleBuilder } from '
|
|
1
|
+
import type { CallRuleBuilder } from './call-rule-builder.js';
|
|
2
|
+
import { ScopedFunctionRuleBuilder } from './scoped-function-rule-builder.js';
|
|
3
3
|
/**
|
|
4
4
|
* A scoped context that restricts entry points to elements found
|
|
5
5
|
* inside the callback arguments of matched call expressions.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"within.d.ts","sourceRoot":"","sources":["../../src/builders/within.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAE7E;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,SAAS,IAAI,yBAAyB,CAAA;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,SAAS,EAAE,eAAe,GAAG,aAAa,CAMhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"within.js","sourceRoot":"","sources":["../../src/builders/within.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAiB7E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,MAAM,CAAC,SAA0B;IAC/C,OAAO;QACL,SAAS;YACP,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAA;QACjD,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
interface BaselineArgs {
|
|
2
2
|
ruleFiles: string[];
|
|
3
3
|
output: string;
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
6
6
|
* Generate a baseline file from current rule violations.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* Loads per rule file and gates each builder, then hands what survives to
|
|
9
|
+
* `generateBaseline`. It used to say "wraps existing APIs: collectViolations +
|
|
10
|
+
* generateBaseline" and no longer calls `collectViolations` — that helper is
|
|
11
|
+
* still exported and still ungated, which is a stated residual, not this
|
|
12
|
+
* command's route.
|
|
9
13
|
*/
|
|
10
|
-
export declare function runBaseline(args: BaselineArgs): Promise<
|
|
14
|
+
export declare function runBaseline(args: BaselineArgs): Promise<number>;
|
|
15
|
+
export {};
|
|
11
16
|
//# sourceMappingURL=baseline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/baseline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/baseline.ts"],"names":[],"mappings":"AAUA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAgHrE"}
|
|
@@ -1,16 +1,120 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { formatBaselineDelta, generateBaseline } from '../../helpers/baseline.js';
|
|
2
|
+
import { finishPreset } from '@nielspeter/eess';
|
|
3
3
|
import { loadRuleFiles } from '../load-rules.js';
|
|
4
|
+
import { attributeToRuleFile, failureOrViolations, ruleFileContributedNoRules, } from '../rule-file-findings.js';
|
|
4
5
|
/**
|
|
5
6
|
* Generate a baseline file from current rule violations.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
+
* Loads per rule file and gates each builder, then hands what survives to
|
|
9
|
+
* `generateBaseline`. It used to say "wraps existing APIs: collectViolations +
|
|
10
|
+
* generateBaseline" and no longer calls `collectViolations` — that helper is
|
|
11
|
+
* still exported and still ungated, which is a stated residual, not this
|
|
12
|
+
* command's route.
|
|
8
13
|
*/
|
|
9
14
|
export async function runBaseline(args) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
// Per-file parity with runCheck: a user rule file that self-executes a
|
|
16
|
+
// throwing `.check()` at import surfaces its own violations without discarding
|
|
17
|
+
// the other files' rules. (Presets no longer throw at import — returning form.)
|
|
18
|
+
const violations = [];
|
|
19
|
+
const total = args.ruleFiles.length;
|
|
20
|
+
for (const file of args.ruleFiles) {
|
|
21
|
+
// Same two boundaries as `runCheck`, for the same reason (bug 0025). Here it
|
|
22
|
+
// matters twice over: a rethrow left NO baseline file at all, so one
|
|
23
|
+
// malformed rule made the whole command unusable rather than producing a
|
|
24
|
+
// partial baseline the user could finish.
|
|
25
|
+
let builders;
|
|
26
|
+
try {
|
|
27
|
+
builders = await loadRuleFiles([file]);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
violations.push(...failureOrViolations(file, error, total));
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Parity with `runCheck` and `--fix`: a rule file that loads and exports `[]`
|
|
34
|
+
// enforces nothing, and a baseline is a persisted verdict. Measured before
|
|
35
|
+
// this guard, `eess-ts baseline` over exactly that file wrote a baseline and
|
|
36
|
+
// exited 0 while `check` reddened — the disagreement
|
|
37
|
+
// `ruleFileContributedNoRules` exists to end.
|
|
38
|
+
if (builders.length === 0) {
|
|
39
|
+
violations.push(ruleFileContributedNoRules(file));
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
for (const builder of builders) {
|
|
43
|
+
try {
|
|
44
|
+
// Same attribution as `runCheck` (bug 0026): the findings this command
|
|
45
|
+
// REFUSES to baseline are printed for the user to fix, and "which rule
|
|
46
|
+
// file" is the first thing they need.
|
|
47
|
+
// **The evidence gate, here too** — plan 0263 Phase 2, added after a
|
|
48
|
+
// product review measured this door minting an artifact from nothing:
|
|
49
|
+
// `eess-ts baseline` over a rule file exporting `{ violations: () => [] }`
|
|
50
|
+
// wrote a baseline and exited 0. A baseline is a persisted verdict, so
|
|
51
|
+
// accepting one from a builder that certified nothing is worse than
|
|
52
|
+
// passing silently.
|
|
53
|
+
//
|
|
54
|
+
// The gate runs per builder, where the rule file is known, exactly as in
|
|
55
|
+
// `runCheck`. Its finding carries `bypassFilters`, so `refused` below
|
|
56
|
+
// catches it: the baseline is still written for what COULD be accepted,
|
|
57
|
+
// the finding is printed with its rule file, and the command exits 1.
|
|
58
|
+
//
|
|
59
|
+
// **`collectViolations` is deliberately untouched, and that is a stated
|
|
60
|
+
// residual.** It is public API (`packages/ts/src/index.ts`), documented
|
|
61
|
+
// as not throwing, and typed to accept `{ violations: () => ArchViolation[] }`
|
|
62
|
+
// — a bare array, by signature. Tightening it would move the break to
|
|
63
|
+
// adopters' compilers without closing the runtime hole for JS callers,
|
|
64
|
+
// and throwing from it would break the contract its own docstring makes.
|
|
65
|
+
// So the gate sits here, at the command that mints the artifact. An
|
|
66
|
+
// adopter calling `collectViolations` + `generateBaseline` by hand still
|
|
67
|
+
// bypasses it; closing that is a public-API decision, not a wiring one.
|
|
68
|
+
violations.push(...attributeToRuleFile(finishPreset(builder.violations(), { report: 'return' }), file));
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
violations.push(...failureOrViolations(file, error, total));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const delta = generateBaseline(violations, args.output);
|
|
76
|
+
// Report what was actually WRITTEN, not what was collected. Config-level findings
|
|
77
|
+
// are deliberately not baselineable (they report that a rule enforces nothing), so
|
|
78
|
+
// printing the pre-filter count told users they had accepted findings that CI would
|
|
79
|
+
// still fail on, with no hint why.
|
|
80
|
+
// The header below says "whose verdict cannot be checked", not "that enforces
|
|
81
|
+
// nothing". Both were true of the vacuity findings that used to be the only
|
|
82
|
+
// members of this set; only the first is true of `emitter/no-receipt`, which
|
|
83
|
+
// this phase routes here. Measured: a hand-rolled builder returning two real
|
|
84
|
+
// violations has both baselined and is then told it "enforces nothing" — the
|
|
85
|
+
// rule enforced something, it just handed back no evidence that it had. That
|
|
86
|
+
// sends the reader looking for a dead selector that is not there, which is
|
|
87
|
+
// ADR-009 rule 2's failure (an adopter review caught it).
|
|
88
|
+
const refused = violations.filter((v) => v.bypassFilters === true);
|
|
89
|
+
// The delta first: it is the number the 0.28.0 upgrade recipe depends on, and a
|
|
90
|
+
// reader who stops after one line should have read the one that matters (plan
|
|
91
|
+
// 0071). The count comes from `delta`, not recomputed here: this used to be
|
|
92
|
+
// `violations.length - refused.length`, which is the same number derived a
|
|
93
|
+
// second way, and two derivations of one fact in two files drift. The
|
|
94
|
+
// cross-check lives in the test instead, against the entry count of the file
|
|
95
|
+
// that was actually written.
|
|
96
|
+
process.stdout.write(`${formatBaselineDelta(delta)}\n`);
|
|
14
97
|
process.stdout.write(`Written to: ${args.output}\n`);
|
|
98
|
+
if (refused.length > 0) {
|
|
99
|
+
process.stdout.write(`\n${String(refused.length)} finding(s) could NOT be baselined — each reports a rule ` +
|
|
100
|
+
`whose verdict cannot be checked, so accepting it would hide the gap. Fix these:\n`);
|
|
101
|
+
for (const violation of refused) {
|
|
102
|
+
// The rule file first when there is one. Attributing the finding
|
|
103
|
+
// (bug 0026) is pointless if the command that prints it drops the field:
|
|
104
|
+
// "which rule file" is the first thing the reader needs, and with two
|
|
105
|
+
// files holding the same vacuous rule the description alone is the same
|
|
106
|
+
// sentence twice.
|
|
107
|
+
const where = violation.file === '' ? '' : `${violation.file}: `;
|
|
108
|
+
process.stdout.write(` - ${where}${violation.rule}: ${violation.message}\n`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Non-zero when something could not be baselined, for the same reason
|
|
112
|
+
// `doctor` exits non-zero: an agent reads `exit 0` as "nothing to do", and
|
|
113
|
+
// this command sits on the documented 0.23.0 upgrade path. Exiting 0 here
|
|
114
|
+
// meant `npm run arch:baseline` reported the blocker, succeeded, got
|
|
115
|
+
// committed, and the next `arch` job failed on findings the baseline was
|
|
116
|
+
// supposed to have covered. The file is still written — the findings that
|
|
117
|
+
// COULD be baselined are recorded, so re-running after the fix is cheap.
|
|
118
|
+
return refused.length > 0 ? 1 : 0;
|
|
15
119
|
}
|
|
16
120
|
//# sourceMappingURL=baseline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../../src/cli/commands/baseline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../../src/cli/commands/baseline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OutputFormat } from '@nielspeter/eess';
|
|
2
|
-
|
|
2
|
+
interface CheckArgs {
|
|
3
3
|
ruleFiles: string[];
|
|
4
4
|
baseline?: string;
|
|
5
5
|
changed: boolean;
|
|
@@ -15,7 +15,12 @@ export interface CheckArgs {
|
|
|
15
15
|
/**
|
|
16
16
|
* Run architecture rules from the specified rule files.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* Unified pipeline (plan 0060): collect `.violations()` across every builder
|
|
19
|
+
* (each stamped with its severity), apply baseline/diff, report ONCE, and set
|
|
20
|
+
* the exit code from the error-severity count. Warns are reported but do not
|
|
21
|
+
* fail. A rule file that throws `ArchRuleError` on import (a bare self-executing
|
|
22
|
+
* preset call) is handled by a best-effort catch — error-severity only.
|
|
19
23
|
*/
|
|
20
24
|
export declare function runCheck(args: CheckArgs): Promise<number>;
|
|
25
|
+
export {};
|
|
21
26
|
//# sourceMappingURL=check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAmBpD,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,YAAY,GAAG,MAAM,CAAA;IAC7B,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,uEAAuE;IACvE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B/D"}
|