@nielspeter/eess-ts 0.2.1 → 0.4.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 +73 -31
- 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 +134 -30
- 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 +393 -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 +181 -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 +173 -26
- 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 +12 -3
- 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 +242 -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 +105 -29
- 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 +3 -2
- package/dist/cli/commands/baseline.d.ts.map +1 -1
- package/dist/cli/commands/baseline.js +68 -6
- 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 +241 -45
- 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 +60 -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 +98 -33
- 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 +21 -29
- package/dist/cli/load-rules.js.map +1 -1
- package/dist/cli/resolve-config.d.ts.map +1 -1
- package/dist/cli/resolve-config.js +24 -24
- 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 +293 -0
- package/dist/cli/rule-file-findings.js.map +1 -0
- package/dist/cli/watch.d.ts +20 -7
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +39 -14
- 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 +38 -17
- 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 +10 -0
- 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 +17 -4
- 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 +109 -92
- 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 +96 -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 +56 -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 +119 -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 +382 -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 +54 -0
- package/dist/core/exclusion-comments.d.ts.map +1 -0
- package/dist/core/exclusion-comments.js +310 -0
- package/dist/core/exclusion-comments.js.map +1 -0
- package/dist/core/execute-rule.d.ts +150 -0
- package/dist/core/execute-rule.d.ts.map +1 -0
- package/dist/core/execute-rule.js +580 -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/line-index.d.ts +3 -0
- package/dist/core/line-index.d.ts.map +1 -0
- package/dist/core/line-index.js +229 -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 +592 -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 +214 -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 +54 -0
- package/dist/core/path-universe.d.ts.map +1 -0
- package/dist/core/path-universe.js +65 -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 +24 -0
- package/dist/core/project.js.map +1 -1
- package/dist/core/rule-builder.d.ts +282 -0
- package/dist/core/rule-builder.d.ts.map +1 -0
- package/dist/core/rule-builder.js +445 -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 +126 -0
- package/dist/core/rule-declaration.js.map +1 -0
- package/dist/core/terminal-builder.d.ts +625 -0
- package/dist/core/terminal-builder.d.ts.map +1 -0
- package/dist/core/terminal-builder.js +787 -0
- package/dist/core/terminal-builder.js.map +1 -0
- package/dist/core/terminal-execution.d.ts +23 -0
- package/dist/core/terminal-execution.d.ts.map +1 -0
- package/dist/core/terminal-execution.js +71 -0
- package/dist/core/terminal-execution.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/index.js +1 -1
- package/dist/graphql/index.js.map +1 -1
- package/dist/graphql/resolver-rule-builder.d.ts +98 -23
- package/dist/graphql/resolver-rule-builder.d.ts.map +1 -1
- package/dist/graphql/resolver-rule-builder.js +151 -21
- 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 +81 -12
- package/dist/graphql/schema-loader.js.map +1 -1
- package/dist/graphql/schema-rule-builder.d.ts +57 -20
- package/dist/graphql/schema-rule-builder.d.ts.map +1 -1
- package/dist/graphql/schema-rule-builder.js +101 -25
- 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 +19 -0
- package/dist/helpers/baseline-generator.d.ts.map +1 -0
- package/dist/helpers/baseline-generator.js +18 -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 +122 -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 +48 -47
- 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 +44 -0
- package/dist/helpers/diff-aware.d.ts.map +1 -0
- package/dist/helpers/diff-aware.js +84 -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 +114 -20
- 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 +56 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -13
- 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 +28 -6
- package/dist/models/arch-function.d.ts.map +1 -1
- package/dist/models/arch-function.js +106 -3
- package/dist/models/arch-function.js.map +1 -1
- package/dist/models/arch-jsx-element.js +2 -2
- 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/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 +22 -15
- package/dist/presets/agent-guardrails.d.ts.map +1 -1
- package/dist/presets/agent-guardrails.js +124 -19
- package/dist/presets/agent-guardrails.js.map +1 -1
- package/dist/presets/boundaries.d.ts +45 -2
- 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 +22 -2
- 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 +7 -5
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +9 -3
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/layered.d.ts +46 -2
- 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 +80 -9
- 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 +270 -2
- package/dist/presets/shared.d.ts.map +1 -1
- package/dist/presets/shared.js +338 -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 +33 -6
- 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 +39 -9
- package/dist/rules/metrics.js.map +1 -1
- package/dist/smells/duplicate-bodies.d.ts +58 -5
- package/dist/smells/duplicate-bodies.d.ts.map +1 -1
- package/dist/smells/duplicate-bodies.js +137 -56
- package/dist/smells/duplicate-bodies.js.map +1 -1
- package/dist/smells/fingerprint.d.ts +8 -1
- package/dist/smells/fingerprint.d.ts.map +1 -1
- package/dist/smells/fingerprint.js +21 -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 +27 -0
- package/dist/smells/similar-pairs.d.ts.map +1 -0
- package/dist/smells/similar-pairs.js +52 -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 +111 -14
- package/dist/smells/smell-builder.js.map +1 -1
- 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 +64 -16
- package/dist/tsconfig/tsconfig-builder.js.map +1 -1
- package/package.json +3 -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,74 +1,240 @@
|
|
|
1
1
|
import picomatch from 'picomatch';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { candidatesFor, matchedCandidate } from '../core/import-candidates.js';
|
|
3
|
+
import { recordEdgeCoverage } from '@nielspeter/eess';
|
|
4
|
+
import { globAnyOf } from '@nielspeter/eess';
|
|
5
|
+
import { edgeTypeOnlyRemedy, edgeDiscriminator, edgeValuePhrase, edgeTypeOnlyNoun, edgeStream, edgeVerb, edgesOf, FORWARD_EDGE_KINDS, } from '../core/module-edges.js';
|
|
6
|
+
import { splitGlobArgs } from '../core/import-options.js';
|
|
7
|
+
import { rootOf } from '../core/project-relative.js';
|
|
8
|
+
import { byCodepoint } from '@nielspeter/eess';
|
|
4
9
|
/**
|
|
5
|
-
*
|
|
10
|
+
* Which edge kinds a forward dependency condition reports on.
|
|
11
|
+
*
|
|
12
|
+
* **An exhaustive `Record`, not an allowlist filter** (plan 0071 §3). "Each site
|
|
13
|
+
* filters to the kinds it handles" is fail-open for a sixth kind: one added in a
|
|
14
|
+
* later release would be silently excluded everywhere, which is the same false
|
|
15
|
+
* green this release closes. A full `Record<ModuleEdgeKind, boolean>` makes a new
|
|
16
|
+
* union member a compile error here.
|
|
17
|
+
*
|
|
18
|
+
* `require` is **false at every site**. The kind exists so a 4-way branch cannot
|
|
19
|
+
* mark a CJS runtime dependency as erased, not to enforce CJS — that is a
|
|
20
|
+
* different upgrade story, whose reds land in interop and generated `.d.ts` where
|
|
21
|
+
* the remedy is usually "nothing you can do". The trade is a known false
|
|
22
|
+
* negative over a mislabelled true positive, and it is stated in
|
|
23
|
+
* `docs/standard-rules.md` and `docs/modules.md` rather than sold as coverage.
|
|
24
|
+
*/
|
|
25
|
+
const DEPENDENCY_KINDS = FORWARD_EDGE_KINDS;
|
|
26
|
+
/**
|
|
27
|
+
* Which kinds `onlyHaveTypeImportsFrom` reports on.
|
|
28
|
+
*
|
|
29
|
+
* Excludes `dynamic` on ADR-009 rule 2: the condition's remedy is "make the
|
|
30
|
+
* dependency erased", and there is **no** way to do that for `await import(…)`.
|
|
31
|
+
* A finding whose remedy cannot be followed is not a finding.
|
|
32
|
+
*
|
|
33
|
+
* Keeps `reexport`, where a remedy does exist but is not purely local — see
|
|
34
|
+
* {@link edgeTypeOnlyRemedy}. Excludes `type-expression` because it is already
|
|
35
|
+
* erased and can never violate a type-only rule, so the row is unreachable
|
|
36
|
+
* rather than a judgement.
|
|
37
|
+
*/
|
|
38
|
+
const TYPE_IMPORT_KINDS = {
|
|
39
|
+
import: true,
|
|
40
|
+
reexport: true,
|
|
41
|
+
dynamic: false,
|
|
42
|
+
'type-expression': false,
|
|
43
|
+
require: false,
|
|
44
|
+
};
|
|
45
|
+
/** The strings this edge's globs may be matched against, primary first. */
|
|
46
|
+
function edgeCandidates(edge, sourceFile) {
|
|
47
|
+
// The IMPORTING file's root. In a workspace the target may live in another
|
|
48
|
+
// package, whose absolute path is not under this root — then no relative
|
|
49
|
+
// candidate is produced and matching falls back to the absolute form, which
|
|
50
|
+
// is the honest answer: `'src/shared/**'` written in one package means that
|
|
51
|
+
// package's `src/shared`.
|
|
52
|
+
return candidatesFor(edge.specifier, edge.resolvedPath, rootOf(sourceFile));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Create a violation for one module edge.
|
|
56
|
+
*
|
|
57
|
+
* `line` comes from the edge, which is the **statement** line — the same value
|
|
58
|
+
* `decl.getStartLineNumber()` produced before this release for `kind ===
|
|
59
|
+
* 'import'`, so no existing finding moves.
|
|
6
60
|
*/
|
|
7
|
-
function
|
|
8
|
-
|
|
9
|
-
|
|
61
|
+
function edgeViolation(sourceFile, edge, message, context) {
|
|
62
|
+
return {
|
|
63
|
+
rule: context.rule,
|
|
64
|
+
element: sourceFile.getBaseName(),
|
|
65
|
+
file: sourceFile.getFilePath(),
|
|
66
|
+
line: edge.line,
|
|
67
|
+
message,
|
|
68
|
+
because: context.because,
|
|
69
|
+
// `identity` — the canonical form that supersedes `element::message` in the
|
|
70
|
+
// baseline hash. [ts-archunit Bug 0028](https://github.com/nielspeter/ts-archunit/blob/main/bugs/fixed/0028-two-findings-in-one-file-can-share-a-baseline-identity.md).
|
|
71
|
+
//
|
|
72
|
+
// The message carries the basename and the resolved target and nothing else, so
|
|
73
|
+
// two edges from one file to one module are byte-identical and share a hash.
|
|
74
|
+
// Measured on this repo's own barrel after v0.28.0 made barrels
|
|
75
|
+
// dependency-bearing: `src/index.ts` produced **114 findings and 87 identities —
|
|
76
|
+
// 26 colliding groups, 46.5% of findings sharing**. You could not accept one and
|
|
77
|
+
// keep failing on its sibling, and a re-export added later was silently
|
|
78
|
+
// pre-accepted by an entry written before it existed.
|
|
79
|
+
//
|
|
80
|
+
// **`names` is the discriminator, and the line is not.** Measured, adding `names`
|
|
81
|
+
// takes those 114 edges to 114 distinct identities; adding the line does too, and
|
|
82
|
+
// is rejected for the reason `baseline.ts` already excludes it — an accepted
|
|
83
|
+
// violation has to survive its code moving. A sample colliding pair shows why
|
|
84
|
+
// names work: same file, same target, same kind, `[project, workspace,
|
|
85
|
+
// resetProjectCache]` against `[ArchProject]`.
|
|
86
|
+
//
|
|
87
|
+
// This is `ModuleEdge.names`' first production consumer. Until now its only
|
|
88
|
+
// reader was the runtime independence test, which is a fair criticism of a field
|
|
89
|
+
// that costs a per-kind rule to compute.
|
|
90
|
+
//
|
|
91
|
+
// **A residual, stated.** For `kind === 'import'` `names` is the INWARD name, so
|
|
92
|
+
// `import { X } from 'm'` and `import { X as Y } from 'm'` in one file both carry
|
|
93
|
+
// `['X']` and still share an identity. Separating them needs the local binding,
|
|
94
|
+
// which `ModuleEdge` deliberately does not carry — the same reason
|
|
95
|
+
// `notHaveAliasedImports` was never routed through the edge walk. That shape is
|
|
96
|
+
// legal and unusual; the shape this fixes is the barrel, where re-exports use the
|
|
97
|
+
// OUTWARD name and aliases therefore differ. Measured: 26 colliding groups on this
|
|
98
|
+
// repo's barrel go to 0, and the aliased-import pair is what remains.
|
|
99
|
+
identity: [
|
|
100
|
+
// The FULL PATH, not the basename — [bug 0063](https://github.com/nielspeter/ts-archunit/blob/main/bugs/fixed/0063-a-dependency-identity-collides-across-files-sharing-a-basename.md).
|
|
101
|
+
//
|
|
102
|
+
// Every other component here is a property of the EDGE, so the basename was the only
|
|
103
|
+
// thing identifying the file, and it does not: two sibling folders each with an
|
|
104
|
+
// `index.ts` importing the same target produced ONE identity for TWO violations, and
|
|
105
|
+
// one baseline entry accepted both. Measured `findings=2 distinctHashes=1`, on the
|
|
106
|
+
// commonest layout there is. `ArchViolation.identity` requires uniqueness per finding
|
|
107
|
+
// within a rule, in those words.
|
|
108
|
+
//
|
|
109
|
+
// An absolute path is not a new bet: `edgeCandidates(...)[0]` below is already the
|
|
110
|
+
// resolved absolute path of the TARGET, and `hashViolation` normalises the repository
|
|
111
|
+
// root out of identity text (`src/core/identity-root.ts`) with a root that defaults to
|
|
112
|
+
// `discoverIdentityRoot`.
|
|
113
|
+
sourceFile.getFilePath(),
|
|
114
|
+
edge.kind,
|
|
115
|
+
// No root here: `[0]` is the primary candidate either way, and this string
|
|
116
|
+
// is a baseline identity — feeding it anything new would rewrite every
|
|
117
|
+
// existing dependency entry for no gain.
|
|
118
|
+
edgeCandidates(edge, sourceFile)[0],
|
|
119
|
+
// See `edgeDiscriminator`. This family HAS reported `dynamic` and
|
|
120
|
+
// `type-expression` all along, so the collision was live here — and it was live in
|
|
121
|
+
// the slice family too, for the `import`/`reexport` spellings that carry no names.
|
|
122
|
+
//
|
|
123
|
+
// **Nothing moves.** The first edge of each `kind::specifier` group emits `''`,
|
|
124
|
+
// which is byte-for-byte what the pre-ordinal formula produced; only the second and
|
|
125
|
+
// later siblings gain `#n`, and those groups had one hash for two findings before.
|
|
126
|
+
// Measured against `main` across all seven `import`/`reexport` spellings plus
|
|
127
|
+
// `dynamic` and `type-expression`: zero diff.
|
|
128
|
+
edgeDiscriminator(edge),
|
|
129
|
+
].join('::'),
|
|
130
|
+
};
|
|
10
131
|
}
|
|
11
132
|
/**
|
|
12
|
-
* Create a violation for a source file with a specific offending
|
|
13
|
-
* (an `import … from` or an `export … from` re-export).
|
|
133
|
+
* Create a violation for a source file with a specific offending import.
|
|
14
134
|
*/
|
|
15
|
-
function importViolation(sourceFile, importDecl, message, context
|
|
135
|
+
function importViolation(sourceFile, importDecl, message, context,
|
|
136
|
+
/**
|
|
137
|
+
* What distinguishes this finding from a sibling, WITHOUT the file — the caller knows,
|
|
138
|
+
* this function adds the path.
|
|
139
|
+
*
|
|
140
|
+
* [ts-archunit Bug 0063](https://github.com/nielspeter/ts-archunit/blob/main/bugs/fixed/0063-a-dependency-identity-collides-across-files-sharing-a-basename.md)'s
|
|
141
|
+
* third mechanism, and the one my own corrected scope got wrong twice. This constructor
|
|
142
|
+
* set no identity, so findings fell back to `element::message` — and for
|
|
143
|
+
* `notHaveAliasedImports` the message is `"<basename> aliases \"x\" as \"y\""`, identical
|
|
144
|
+
* for two sibling files aliasing the same import. I had asserted it was unaffected on the
|
|
145
|
+
* ground that the message "names the specifier"; it names the *alias*, which is equally
|
|
146
|
+
* shared. The control row written to pin the scope disproved it instead.
|
|
147
|
+
*/
|
|
148
|
+
subject) {
|
|
16
149
|
return {
|
|
17
150
|
rule: context.rule,
|
|
18
151
|
element: sourceFile.getBaseName(),
|
|
19
152
|
file: sourceFile.getFilePath(),
|
|
20
153
|
line: importDecl.getStartLineNumber(),
|
|
154
|
+
// The path, then what the caller says distinguishes it. Not the message: a message is
|
|
155
|
+
// prose and may be reworded, which is the whole reason `identity` exists.
|
|
156
|
+
identity: `${sourceFile.getFilePath()}::${subject}`,
|
|
21
157
|
message,
|
|
22
158
|
because: context.because,
|
|
23
159
|
};
|
|
24
160
|
}
|
|
25
161
|
export function onlyImportFrom(...args) {
|
|
26
|
-
|
|
27
|
-
// eess-exclude eess/adr005-no-type-assertions: tuple-union rest param — TS cannot narrow [string[], ImportOptions] | string[] to string[] from Array.isArray(args[0])
|
|
28
|
-
const globs = Array.isArray(args[0]) ? args[0] : args;
|
|
29
|
-
// eess-exclude eess/adr005-no-type-assertions: tuple-union rest param — args[1] is ImportOptions only in the [globs, options] overload
|
|
30
|
-
const options = Array.isArray(args[0]) && args.length > 1 ? args[1] : undefined;
|
|
162
|
+
const { globs, options } = splitGlobArgs(args);
|
|
31
163
|
const ignoreType = options?.ignoreTypeImports === true;
|
|
32
164
|
const matchers = globs.map((g) => picomatch(g));
|
|
33
165
|
const quotedGlobs = globs.map((g) => `"${g}"`).join(', ');
|
|
34
166
|
return {
|
|
167
|
+
// Declared so the glob is visible to `explain`, `doctor` and 0069's glob model
|
|
168
|
+
// (plan 0073). `globAnyOf` because the variadic family is `matchers.some`, so the
|
|
169
|
+
// set is dead only when every glob in it is — `all` here would read a set with one
|
|
170
|
+
// live glob as dead, which is the 0.18.1 withdrawal in the other direction
|
|
171
|
+
// (`glob-site.ts:185`).
|
|
172
|
+
//
|
|
173
|
+
// `import-target` has no path-universe views by design (`path-universe.ts:72`), so
|
|
174
|
+
// declaring changes no verdict — a bare specifier legitimately matches no project
|
|
175
|
+
// path, which is what bug 0014 was fixed to support.
|
|
176
|
+
globs: globAnyOf(globs, 'import-target'),
|
|
35
177
|
description: `only import from ${quotedGlobs}`,
|
|
36
178
|
evaluate(sourceFiles, context) {
|
|
37
179
|
const violations = [];
|
|
180
|
+
// Bug 0015: an allowlist constrains EDGES, so a subject with none passes
|
|
181
|
+
// however broken the allowlist. Counted after the same filters the check
|
|
182
|
+
// applies — including `ignoreType`, since an edge this rule skips is an
|
|
183
|
+
// edge it did not test.
|
|
184
|
+
let tested = 0;
|
|
185
|
+
// Counted separately so the disclosure can name the right cause: a subject
|
|
186
|
+
// whose imports were all filtered by `ignoreTypeImports` is NOT a
|
|
187
|
+
// dependency-free module, and saying so sends the reader to a folder full
|
|
188
|
+
// of imports to look for the ones the tool says are missing.
|
|
189
|
+
let seen = 0;
|
|
38
190
|
for (const sf of sourceFiles) {
|
|
39
|
-
for (const
|
|
40
|
-
if (
|
|
191
|
+
for (const edge of edgesOf(sf)) {
|
|
192
|
+
if (!DEPENDENCY_KINDS[edge.kind])
|
|
193
|
+
continue;
|
|
194
|
+
seen++;
|
|
195
|
+
if (ignoreType && edge.typeOnly)
|
|
41
196
|
continue;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
197
|
+
tested++;
|
|
198
|
+
const candidates = edgeCandidates(edge, sf);
|
|
199
|
+
const importPath = candidates[0];
|
|
200
|
+
if (matchedCandidate(candidates, matchers) === undefined) {
|
|
201
|
+
violations.push(edgeViolation(sf, edge, `${sf.getBaseName()} ${edgeVerb(edge.kind)} "${importPath}" which does not match any of [${globs.join(', ')}]`, context));
|
|
45
202
|
}
|
|
46
203
|
}
|
|
47
204
|
}
|
|
205
|
+
recordEdgeCoverage(context.rule, sourceFiles.length, tested, seen > 0 ? 'all-filtered' : 'no-edges');
|
|
48
206
|
return violations;
|
|
49
207
|
},
|
|
50
208
|
};
|
|
51
209
|
}
|
|
52
210
|
export function notImportFrom(...args) {
|
|
53
|
-
|
|
54
|
-
// eess-exclude eess/adr005-no-type-assertions: tuple-union rest param — TS cannot narrow [string[], ImportOptions] | string[] to string[] from Array.isArray(args[0])
|
|
55
|
-
const globs = Array.isArray(args[0]) ? args[0] : args;
|
|
56
|
-
// eess-exclude eess/adr005-no-type-assertions: tuple-union rest param — args[1] is ImportOptions only in the [globs, options] overload
|
|
57
|
-
const options = Array.isArray(args[0]) && args.length > 1 ? args[1] : undefined;
|
|
211
|
+
const { globs, options } = splitGlobArgs(args);
|
|
58
212
|
const ignoreType = options?.ignoreTypeImports === true;
|
|
59
213
|
const matchers = globs.map((g) => picomatch(g));
|
|
60
214
|
const quotedGlobs = globs.map((g) => `"${g}"`).join(', ');
|
|
61
215
|
return {
|
|
216
|
+
// Declared so the glob is visible to `explain`, `doctor` and 0069's glob model
|
|
217
|
+
// (plan 0073). `globAnyOf` because the variadic family is `matchers.some`, so the
|
|
218
|
+
// set is dead only when every glob in it is — `all` here would read a set with one
|
|
219
|
+
// live glob as dead, which is the 0.18.1 withdrawal in the other direction
|
|
220
|
+
// (`glob-site.ts:185`).
|
|
221
|
+
//
|
|
222
|
+
// `import-target` has no path-universe views by design (`path-universe.ts:72`), so
|
|
223
|
+
// declaring changes no verdict — a bare specifier legitimately matches no project
|
|
224
|
+
// path, which is what bug 0014 was fixed to support.
|
|
225
|
+
globs: globAnyOf(globs, 'import-target'),
|
|
62
226
|
description: `not import from ${quotedGlobs}`,
|
|
63
227
|
evaluate(sourceFiles, context) {
|
|
64
228
|
const violations = [];
|
|
65
229
|
for (const sf of sourceFiles) {
|
|
66
|
-
for (const
|
|
67
|
-
if (
|
|
230
|
+
for (const edge of edgesOf(sf)) {
|
|
231
|
+
if (!DEPENDENCY_KINDS[edge.kind])
|
|
68
232
|
continue;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
233
|
+
if (ignoreType && edge.typeOnly)
|
|
234
|
+
continue;
|
|
235
|
+
const importPath = matchedCandidate(edgeCandidates(edge, sf), matchers);
|
|
236
|
+
if (importPath !== undefined) {
|
|
237
|
+
violations.push(edgeViolation(sf, edge, `${sf.getBaseName()} ${edgeVerb(edge.kind)} "${importPath}" which matches forbidden [${globs.join(', ')}]`, context));
|
|
72
238
|
}
|
|
73
239
|
}
|
|
74
240
|
}
|
|
@@ -77,31 +243,76 @@ export function notImportFrom(...args) {
|
|
|
77
243
|
};
|
|
78
244
|
}
|
|
79
245
|
export function dependOn(...args) {
|
|
80
|
-
|
|
81
|
-
// eess-exclude eess/adr005-no-type-assertions: tuple-union rest param — TS cannot narrow [string[], ImportOptions] | string[] to string[] from Array.isArray(args[0])
|
|
82
|
-
const globs = Array.isArray(args[0]) ? args[0] : args;
|
|
83
|
-
// eess-exclude eess/adr005-no-type-assertions: tuple-union rest param — args[1] is ImportOptions only in the [globs, options] overload
|
|
84
|
-
const options = Array.isArray(args[0]) && args.length > 1 ? args[1] : undefined;
|
|
246
|
+
const { globs, options } = splitGlobArgs(args);
|
|
85
247
|
const ignoreType = options?.ignoreTypeImports === true;
|
|
86
248
|
const matchers = globs.map((g) => picomatch(g));
|
|
87
249
|
const quotedGlobs = globs.map((g) => `"${g}"`).join(', ');
|
|
88
250
|
return {
|
|
251
|
+
// Declared so the glob is visible to `explain`, `doctor` and 0069's glob model
|
|
252
|
+
// (plan 0073). `globAnyOf` because the variadic family is `matchers.some`, so the
|
|
253
|
+
// set is dead only when every glob in it is — `all` here would read a set with one
|
|
254
|
+
// live glob as dead, which is the 0.18.1 withdrawal in the other direction
|
|
255
|
+
// (`glob-site.ts:185`).
|
|
256
|
+
//
|
|
257
|
+
// `import-target` has no path-universe views by design (`path-universe.ts:72`), so
|
|
258
|
+
// declaring changes no verdict — a bare specifier legitimately matches no project
|
|
259
|
+
// path, which is what bug 0014 was fixed to support.
|
|
260
|
+
globs: globAnyOf(globs, 'import-target'),
|
|
89
261
|
description: globs.length === 1 ? `depend on ${quotedGlobs}` : `depend on at least one of ${quotedGlobs}`,
|
|
90
262
|
evaluate(sourceFiles, context) {
|
|
91
263
|
const violations = [];
|
|
92
264
|
for (const sf of sourceFiles) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
265
|
+
// A `for … of` over `edgeStream`, not `edgesOf(sf).some(...)`.
|
|
266
|
+
//
|
|
267
|
+
// `edgesOf` builds and RESOLVES every edge in the file before returning, so
|
|
268
|
+
// `.some()` on its result pays a `getSymbol()` per literal even when the
|
|
269
|
+
// first one answers the question — 100 checker calls on a 100-import file
|
|
270
|
+
// where the pre-0.28.0 code made 1. Spreading the generator
|
|
271
|
+
// (`[...edgeStream(sf)].some(...)`) has the same defect and looks lazy, so
|
|
272
|
+
// the loop is written out.
|
|
273
|
+
let hasMatch = false;
|
|
274
|
+
for (const edge of edgeStream(sf)) {
|
|
275
|
+
if (!DEPENDENCY_KINDS[edge.kind])
|
|
276
|
+
continue;
|
|
277
|
+
// `typeOnly` means something DIFFERENT per kind on this one condition,
|
|
278
|
+
// and that asymmetry is deliberate (plan 0071 §3).
|
|
279
|
+
//
|
|
280
|
+
// For `import`, behaviour is exactly as before: an `import type` of the
|
|
281
|
+
// target SATISFIES `dependOn`, and `{ ignoreTypeImports: true }` is the
|
|
282
|
+
// shipped opt-in that makes it fail. Requiring runtime here would be a
|
|
283
|
+
// green→red change to a contract that already has an opt-out — a docs
|
|
284
|
+
// gap, not a behaviour gap.
|
|
285
|
+
//
|
|
286
|
+
// For the new kinds it must require runtime, or this release CREATES a
|
|
287
|
+
// false green: `export type { SecurityConfig } from './security.js'`
|
|
288
|
+
// would satisfy `dependOn('**/security/**')` while the server installs
|
|
289
|
+
// nothing. Measured against `docs/modules.md`'s own teaching example, a
|
|
290
|
+
// naive widening turns a real violation into a pass — and on the
|
|
291
|
+
// baseline side that reads as "the violation was fixed".
|
|
292
|
+
if (edge.kind === 'import' ? ignoreType && edge.typeOnly : edge.typeOnly)
|
|
293
|
+
continue;
|
|
294
|
+
if (matchedCandidate(edgeCandidates(edge, sf), matchers) !== undefined) {
|
|
295
|
+
hasMatch = true;
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
99
299
|
if (!hasMatch) {
|
|
100
300
|
violations.push({
|
|
101
301
|
rule: context.rule,
|
|
102
302
|
element: sf.getBaseName(),
|
|
103
303
|
file: sf.getFilePath(),
|
|
104
304
|
line: 1,
|
|
305
|
+
// An identity, ADDED rather than corrected — bug 0063's worse half. This finding
|
|
306
|
+
// had none, so it fell back to `element::message`; the element is a basename and
|
|
307
|
+
// the message never names the file, so two sibling folders each with an
|
|
308
|
+
// `index.ts` were one finding to the baseline. Measured
|
|
309
|
+
// `findings=2 distinct=1`, with nothing in the identity to blame because there
|
|
310
|
+
// was no identity.
|
|
311
|
+
//
|
|
312
|
+
// The globs are part of it because this finding is about a REQUIREMENT not met,
|
|
313
|
+
// not about an edge: the same file failing two different `dependOn` rules is two
|
|
314
|
+
// findings, and `rule` alone would not separate them if one rule carried both.
|
|
315
|
+
identity: `${sf.getFilePath()}::depends-on::${[...globs].sort(byCodepoint).join(',')}`,
|
|
105
316
|
message: `${sf.getBaseName()} does not import from any path matching [${globs.join(', ')}]`,
|
|
106
317
|
because: context.because,
|
|
107
318
|
});
|
|
@@ -136,7 +347,10 @@ export function notHaveAliasedImports() {
|
|
|
136
347
|
for (const specifier of decl.getNamedImports()) {
|
|
137
348
|
const alias = specifier.getAliasNode();
|
|
138
349
|
if (alias) {
|
|
139
|
-
violations.push(importViolation(sf, decl, `${sf.getBaseName()} aliases "${specifier.getName()}" as "${alias.getText()}"`, context
|
|
350
|
+
violations.push(importViolation(sf, decl, `${sf.getBaseName()} aliases "${specifier.getName()}" as "${alias.getText()}"`, context,
|
|
351
|
+
// The aliased name and the alias — the two things that make one aliased
|
|
352
|
+
// specifier different from another in the same file.
|
|
353
|
+
`aliased::${specifier.getName()}::${alias.getText()}`));
|
|
140
354
|
}
|
|
141
355
|
}
|
|
142
356
|
}
|
|
@@ -159,17 +373,57 @@ export function onlyHaveTypeImportsFrom(...globs) {
|
|
|
159
373
|
const matchers = globs.map((g) => picomatch(g));
|
|
160
374
|
const quotedGlobs = globs.map((g) => `"${g}"`).join(', ');
|
|
161
375
|
return {
|
|
376
|
+
// Declared so the glob is visible to `explain`, `doctor` and 0069's glob model
|
|
377
|
+
// (plan 0073). `globAnyOf` because the variadic family is `matchers.some`, so the
|
|
378
|
+
// set is dead only when every glob in it is — `all` here would read a set with one
|
|
379
|
+
// live glob as dead, which is the 0.18.1 withdrawal in the other direction
|
|
380
|
+
// (`glob-site.ts:185`).
|
|
381
|
+
//
|
|
382
|
+
// `import-target` has no path-universe views by design (`path-universe.ts:72`), so
|
|
383
|
+
// declaring changes no verdict — a bare specifier legitimately matches no project
|
|
384
|
+
// path, which is what bug 0014 was fixed to support.
|
|
385
|
+
globs: globAnyOf(globs, 'import-target'),
|
|
162
386
|
description: `only have type imports from ${quotedGlobs}`,
|
|
163
387
|
evaluate(sourceFiles, context) {
|
|
164
388
|
const violations = [];
|
|
389
|
+
// Bug 0015: same shape — the allowlist scopes which imports must be
|
|
390
|
+
// type-only, so a subject with no matching import tests nothing.
|
|
391
|
+
let tested = 0;
|
|
392
|
+
// Same distinction as `onlyImportFrom`, for the other reason: here an edge
|
|
393
|
+
// is out of scope because the GLOB did not name it, and that is the case
|
|
394
|
+
// worth surfacing — the glob may be a typo.
|
|
395
|
+
let seen = 0;
|
|
165
396
|
for (const sf of sourceFiles) {
|
|
166
|
-
for (const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
397
|
+
for (const edge of edgesOf(sf)) {
|
|
398
|
+
if (!TYPE_IMPORT_KINDS[edge.kind])
|
|
399
|
+
continue;
|
|
400
|
+
seen++;
|
|
401
|
+
const importPath = matchedCandidate(edgeCandidates(edge, sf), matchers);
|
|
402
|
+
// In scope only when the allowlist matched it: an edge the glob does
|
|
403
|
+
// not name is one this rule never had an opinion about.
|
|
404
|
+
if (importPath !== undefined)
|
|
405
|
+
tested++;
|
|
406
|
+
if (importPath !== undefined && !edge.typeOnly) {
|
|
407
|
+
const violation = edgeViolation(sf, edge, `${sf.getBaseName()} has ${edgeValuePhrase(edge.kind)} "${importPath}" which should be a type-only ${edgeTypeOnlyNoun(edge.kind)}`, context);
|
|
408
|
+
// A producer-set `suggestion` WINS over the rule author's, because
|
|
409
|
+
// `execute-rule.ts` resolves `v.suggestion ?? meta?.suggestion`. So it
|
|
410
|
+
// is set only for the kinds this release introduces, where no remedy
|
|
411
|
+
// existed before and a per-kind one is strictly better.
|
|
412
|
+
//
|
|
413
|
+
// NOT for `kind === 'import'`. Doing so replaced the shipped
|
|
414
|
+
// `layered/type-imports-only` remedy — which offers "or move the value
|
|
415
|
+
// you need into a layer this one is allowed to depend on", the only
|
|
416
|
+
// followable action when the value is needed at runtime — with a
|
|
417
|
+
// one-option remedy, and silently discarded any consumer's own
|
|
418
|
+
// `.rule({ suggestion })`. Invisible to the message-identity guards
|
|
419
|
+
// because `suggestion` is not hashed.
|
|
420
|
+
violations.push(edge.kind === 'import'
|
|
421
|
+
? violation
|
|
422
|
+
: { ...violation, suggestion: edgeTypeOnlyRemedy(edge) });
|
|
170
423
|
}
|
|
171
424
|
}
|
|
172
425
|
}
|
|
426
|
+
recordEdgeCoverage(context.rule, sourceFiles.length, tested, seen > 0 ? 'none-matched' : 'no-edges');
|
|
173
427
|
return violations;
|
|
174
428
|
},
|
|
175
429
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../src/conditions/dependency.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AAIjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GAErB,MAAM,gCAAgC,CAAA;AAKvC;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAuB;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAA;IACpD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAA;AAC3E,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CACtB,UAAsB,EACtB,UAA0B,EAC1B,OAAe,EACf,OAAyB;IAEzB,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE;QACjC,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE;QAC9B,IAAI,EAAE,UAAU,CAAC,kBAAkB,EAAE;QACrC,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAA;AACH,CAAC;AAcD,MAAM,UAAU,cAAc,CAC5B,GAAG,IAA0C;IAE7C,4FAA4F;IAC5F,sKAAsK;IACtK,MAAM,KAAK,GAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,IAAiB,CAAA;IAC7E,uIAAuI;IACvI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAmB,CAAC,CAAC,CAAC,SAAS,CAAA;IAClG,MAAM,UAAU,GAAG,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzD,OAAO;QACL,WAAW,EAAE,oBAAoB,WAAW,EAAE;QAC9C,QAAQ,CAAC,WAAyB,EAAE,OAAyB;YAC3D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC1C,IAAI,UAAU,IAAI,oBAAoB,CAAC,IAAI,CAAC;wBAAE,SAAQ;oBACtD,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;oBAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;wBACzC,UAAU,CAAC,IAAI,CACb,eAAe,CACb,EAAE,EACF,IAAI,EACJ,GAAG,EAAE,CAAC,WAAW,EAAE,aAAa,UAAU,kCAAkC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC/F,OAAO,CACR,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAcD,MAAM,UAAU,aAAa,CAC3B,GAAG,IAA0C;IAE7C,4FAA4F;IAC5F,sKAAsK;IACtK,MAAM,KAAK,GAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,IAAiB,CAAA;IAC7E,uIAAuI;IACvI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAmB,CAAC,CAAC,CAAC,SAAS,CAAA;IAClG,MAAM,UAAU,GAAG,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzD,OAAO;QACL,WAAW,EAAE,mBAAmB,WAAW,EAAE;QAC7C,QAAQ,CAAC,WAAyB,EAAE,OAAyB;YAC3D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC1C,IAAI,UAAU,IAAI,oBAAoB,CAAC,IAAI,CAAC;wBAAE,SAAQ;oBACtD,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;oBAC9C,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;wBACxC,UAAU,CAAC,IAAI,CACb,eAAe,CACb,EAAE,EACF,IAAI,EACJ,GAAG,EAAE,CAAC,WAAW,EAAE,aAAa,UAAU,8BAA8B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC3F,OAAO,CACR,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAmBD,MAAM,UAAU,QAAQ,CAAC,GAAG,IAA0C;IACpE,4FAA4F;IAC5F,sKAAsK;IACtK,MAAM,KAAK,GAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,IAAiB,CAAA;IAC7E,uIAAuI;IACvI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAmB,CAAC,CAAC,CAAC,SAAS,CAAA;IAClG,MAAM,UAAU,GAAG,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzD,OAAO;QACL,WAAW,EACT,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC,CAAC,6BAA6B,WAAW,EAAE;QAC9F,QAAQ,CAAC,WAAyB,EAAE,OAAyB;YAC3D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACpD,IAAI,UAAU,IAAI,oBAAoB,CAAC,IAAI,CAAC;wBAAE,OAAO,KAAK,CAAA;oBAC1D,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;oBAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAA;gBACF,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE;wBACzB,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;wBACtB,IAAI,EAAE,CAAC;wBACP,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,4CAA4C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBAC3F,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,WAAW,EAAE,0BAA0B;QACvC,QAAQ,CAAC,WAAyB,EAAE,OAAyB;YAC3D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,qBAAqB,EAAE,EAAE,CAAC;oBAC9C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;wBAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,EAAE,CAAA;wBACtC,IAAI,KAAK,EAAE,CAAC;4BACV,UAAU,CAAC,IAAI,CACb,eAAe,CACb,EAAE,EACF,IAAI,EACJ,GAAG,EAAE,CAAC,WAAW,EAAE,aAAa,SAAS,CAAC,OAAO,EAAE,SAAS,KAAK,CAAC,OAAO,EAAE,GAAG,EAC9E,OAAO,CACR,CACF,CAAA;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAG,KAAe;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzD,OAAO;QACL,WAAW,EAAE,+BAA+B,WAAW,EAAE;QACzD,QAAQ,CAAC,WAAyB,EAAE,OAAyB;YAC3D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,qBAAqB,EAAE,EAAE,CAAC;oBAC9C,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;oBAC1C,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;wBACnE,UAAU,CAAC,IAAI,CACb,eAAe,CACb,EAAE,EACF,IAAI,EACJ,GAAG,EAAE,CAAC,WAAW,EAAE,6BAA6B,UAAU,sCAAsC,EAChG,OAAO,CACR,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../src/conditions/dependency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/conditions/exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAGnE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,SAAS,CAAC,UAAU,CAAC,CAoB5D;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,SAAS,CAAC,UAAU,CAAC,CAoBzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/conditions/exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAGnE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,SAAS,CAAC,UAAU,CAAC,CAoB5D;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,SAAS,CAAC,UAAU,CAAC,CAoBzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAuCjE"}
|
|
@@ -91,6 +91,16 @@ export function haveMaxExports(max) {
|
|
|
91
91
|
line: 1,
|
|
92
92
|
message: `${sf.getBaseName()} has ${String(count)} named export(s), exceeding the limit of ${String(max)}`,
|
|
93
93
|
because: context.because,
|
|
94
|
+
// Hand-built rather than through `metricViolation`, because this
|
|
95
|
+
// site has no `Node` to derive an element name from — it reports
|
|
96
|
+
// against the file. Same two fields, same contract (bug 0012).
|
|
97
|
+
identity: `${sf.getFilePath()}::${sf.getBaseName()}::named-exports`,
|
|
98
|
+
measured: count,
|
|
99
|
+
// Stamped by hand because this is the one metric finding that does not
|
|
100
|
+
// go through `metricViolation` (there is no `Node` to derive from), and
|
|
101
|
+
// the unit must not depend on which constructor a producer happened to
|
|
102
|
+
// use — bug 0171.
|
|
103
|
+
measuredUnit: 'named-exports',
|
|
94
104
|
});
|
|
95
105
|
}
|
|
96
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/conditions/exports.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,WAAW,EAAE,2BAA2B;QACxC,QAAQ,CAAC,QAAsB,EAAE,OAAyB;YACxD,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,EAAE,CAAC,sBAAsB,EAAE,EAAE,CAAC;oBAChC,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE;wBACzB,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;wBACtB,IAAI,EAAE,CAAC;wBACP,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,uBAAuB;wBACnD,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,WAAW,EAAE,uBAAuB;QACpC,QAAQ,CAAC,QAAsB,EAAE,OAAyB;YACxD,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,CAAC;oBACjC,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE;wBACzB,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;wBACtB,IAAI,EAAE,CAAC;wBACP,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,iCAAiC;wBAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,2DAA2D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3F,CAAC;IACD,OAAO;QACL,WAAW,EAAE,gBAAgB,MAAM,CAAC,GAAG,CAAC,YAAY;QACpD,QAAQ,CAAC,QAAsB,EAAE,OAAyB;YACxD,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,SAAS,GAAG,EAAE,CAAC,uBAAuB,EAAE,CAAA;gBAC9C,8CAA8C;gBAC9C,IAAI,KAAK,GAAG,CAAC,CAAA;gBACb,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnC,IAAI,GAAG,KAAK,SAAS;wBAAE,KAAK,EAAE,CAAA;gBAChC,CAAC;gBACD,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;oBAChB,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE;wBACzB,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;wBACtB,IAAI,EAAE,CAAC;wBACP,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,QAAQ,MAAM,CAAC,KAAK,CAAC,4CAA4C,MAAM,CAAC,GAAG,CAAC,EAAE;wBAC1G,OAAO,EAAE,OAAO,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/conditions/exports.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/conditions/function.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/conditions/function.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAInE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAqC9D;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,CAkBlD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAAC,YAAY,CAAC,CAMpD;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,CAMjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CASzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAMnF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAyBtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAOpF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CASlE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAmBpE"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import picomatch from 'picomatch';
|
|
2
|
+
import { globNode } from '@nielspeter/eess';
|
|
3
|
+
import { marksAssertsCardinality } from '@nielspeter/eess';
|
|
2
4
|
/**
|
|
3
5
|
* Helper to create a per-element condition for ArchFunction.
|
|
4
6
|
*/
|
|
5
|
-
function functionCondition(description, predicate, messageFn) {
|
|
7
|
+
function functionCondition(description, predicate, messageFn, globs) {
|
|
6
8
|
return {
|
|
9
|
+
// Threaded through the helper rather than spread onto its result, so a path
|
|
10
|
+
// condition added later gets the parameter in its face (plan 0073). Undefined
|
|
11
|
+
// for the name/type conditions, whose `RegExp` is not a path glob at all.
|
|
12
|
+
globs,
|
|
7
13
|
description,
|
|
8
14
|
evaluate(elements, context) {
|
|
9
15
|
const violations = [];
|
|
@@ -36,8 +42,12 @@ function functionCondition(description, predicate, messageFn) {
|
|
|
36
42
|
* .because('use shared parseOrder() utility instead')
|
|
37
43
|
*/
|
|
38
44
|
export function notExist() {
|
|
39
|
-
|
|
45
|
+
// Satisfied by an EMPTY selection — registered rather than tagged, because a
|
|
46
|
+
// symbol keyed on this object is readable off it and forgeable (bug 0050).
|
|
47
|
+
return marksAssertsCardinality({
|
|
40
48
|
description: 'not exist',
|
|
49
|
+
// Zero subjects is this condition's PASSING state, so an empty selection
|
|
50
|
+
// and an unsatisfiable selector glob are both correct here (plan 0074).
|
|
41
51
|
evaluate(elements, context) {
|
|
42
52
|
return elements.map((fn) => ({
|
|
43
53
|
rule: context.rule,
|
|
@@ -48,7 +58,7 @@ export function notExist() {
|
|
|
48
58
|
because: context.because,
|
|
49
59
|
}));
|
|
50
60
|
},
|
|
51
|
-
};
|
|
61
|
+
});
|
|
52
62
|
}
|
|
53
63
|
/**
|
|
54
64
|
* Functions must be exported from their module.
|
|
@@ -145,7 +155,7 @@ export function haveReturnTypeMatching(matcher) {
|
|
|
145
155
|
*/
|
|
146
156
|
export function resideInFile(glob) {
|
|
147
157
|
const isMatch = picomatch(glob);
|
|
148
|
-
return functionCondition(`reside in file matching '${glob}'`, (fn) => isMatch(fn.getSourceFile().getFilePath()), (fn) => `${fn.getName() ?? '<anonymous>'} resides in '${fn.getSourceFile().getFilePath()}' which does not match '${glob}'
|
|
158
|
+
return functionCondition(`reside in file matching '${glob}'`, (fn) => isMatch(fn.getSourceFile().getFilePath()), (fn) => `${fn.getName() ?? '<anonymous>'} resides in '${fn.getSourceFile().getFilePath()}' which does not match '${glob}'`, globNode({ glob, kind: 'file-path' }));
|
|
149
159
|
}
|
|
150
160
|
/**
|
|
151
161
|
* Functions must reside in a folder matching the glob.
|
|
@@ -162,6 +172,10 @@ export function resideInFolder(glob) {
|
|
|
162
172
|
const filePath = fn.getSourceFile().getFilePath();
|
|
163
173
|
const folder = filePath.substring(0, filePath.lastIndexOf('/'));
|
|
164
174
|
return `${fn.getName() ?? '<anonymous>'} resides in folder '${folder}' which does not match '${glob}'`;
|
|
165
|
-
}
|
|
175
|
+
},
|
|
176
|
+
// `parent-dir`, not `file-path` — the glob is matched against the immediate
|
|
177
|
+
// parent directory, so it is the twin of `identity.ts:98` and needs the same
|
|
178
|
+
// kind. A `file-path` kind here would be checked against the wrong universe.
|
|
179
|
+
globNode({ glob, kind: 'parent-dir' }));
|
|
166
180
|
}
|
|
167
181
|
//# sourceMappingURL=function.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/conditions/function.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/conditions/function.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Node } from 'ts-morph';
|
|
2
2
|
import type { Condition } from '@nielspeter/eess';
|
|
3
|
+
import type { DeclaredGlobs } from '@nielspeter/eess';
|
|
3
4
|
/**
|
|
4
5
|
* Create a condition that checks each element individually.
|
|
5
6
|
*
|
|
@@ -10,5 +11,5 @@ import type { Condition } from '@nielspeter/eess';
|
|
|
10
11
|
* @param predicate - Returns true if element satisfies the condition
|
|
11
12
|
* @param messageFn - Produces a violation message for a failing element
|
|
12
13
|
*/
|
|
13
|
-
export declare function elementCondition<T extends Node>(description: string, predicate: (element: T) => boolean, messageFn: (element: T) => string): Condition<T>;
|
|
14
|
+
export declare function elementCondition<T extends Node>(description: string, predicate: (element: T) => boolean, messageFn: (element: T) => string, globs?: DeclaredGlobs): Condition<T>;
|
|
14
15
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/conditions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/conditions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAIrD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,IAAI,EAC7C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,EAClC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,EACjC,KAAK,CAAC,EAAE,aAAa,GACpB,SAAS,CAAC,CAAC,CAAC,CAgBd"}
|