@nielspeter/eess-ts 0.2.0 → 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 +87 -34
- 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 -14
- 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,10 +1,29 @@
|
|
|
1
|
-
import { RuleBuilder } from '
|
|
1
|
+
import { RuleBuilder } from '../core/rule-builder.js';
|
|
2
2
|
import { functionContain, functionNotContain, functionUseInsteadOf, functionNotHaveEmptyBody, } from '../conditions/body-analysis-function.js';
|
|
3
|
+
import { createElementCache, SOLE_POPULATION } from '../core/element-cache.js';
|
|
3
4
|
import { collectFunctions } from '../models/arch-function.js';
|
|
4
5
|
import { followPattern as followPatternCondition } from '../conditions/pattern.js';
|
|
5
6
|
import { notExist as fnNotExist, beExported as fnBeExported, beAsync as fnBeAsync, haveNameMatching as fnConditionHaveNameMatching, acceptParameterOfType as fnAcceptParameterOfType, notAcceptParameterOfType as fnNotAcceptParameterOfType, haveReturnTypeMatching as fnHaveReturnTypeMatching, resideInFile as fnConditionResideInFile, resideInFolder as fnConditionResideInFolder, } from '../conditions/function.js';
|
|
6
7
|
import { haveNameMatching as identityHaveNameMatching, haveNameStartingWith as identityHaveNameStartingWith, haveNameEndingWith as identityHaveNameEndingWith, resideInFile as identityResideInFile, resideInFolder as identityResideInFolder, areExported as identityAreExported, areNotExported as identityAreNotExported, } from '../predicates/identity.js';
|
|
7
8
|
import { arePublic as fnArePublic, areProtected as fnAreProtected, arePrivate as fnArePrivate, areAsync as fnAreAsync, areNotAsync as fnAreNotAsync, haveParameterCount as fnHaveParameterCount, haveParameterCountGreaterThan as fnHaveParameterCountGreaterThan, haveParameterCountLessThan as fnHaveParameterCountLessThan, haveParameterNamed as fnHaveParameterNamed, haveReturnType as fnHaveReturnType, haveRestParameter as fnHaveRestParameter, haveOptionalParameter as fnHaveOptionalParameter, haveParameterOfType as fnHaveParameterOfType, haveParameterNameMatching as fnHaveParameterNameMatching, } from '../predicates/function.js';
|
|
9
|
+
/** One collection per (project, collection options), shared by every rule (plan 0075). */
|
|
10
|
+
const cache = createElementCache();
|
|
11
|
+
/**
|
|
12
|
+
* A canonical key for a collection-options object.
|
|
13
|
+
*
|
|
14
|
+
* Derived from the object's own entries, sorted — **not** `JSON.stringify`,
|
|
15
|
+
* which is key-order dependent, and not a hand-written list of the two fields,
|
|
16
|
+
* which would silently drop a third field added later and serve the wrong
|
|
17
|
+
* population under a colliding key.
|
|
18
|
+
*/
|
|
19
|
+
function optionsKey(options) {
|
|
20
|
+
if (options === undefined)
|
|
21
|
+
return SOLE_POPULATION;
|
|
22
|
+
return Object.entries(options)
|
|
23
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
24
|
+
.map(([name, value]) => `${name}=${String(value)}`)
|
|
25
|
+
.join('|');
|
|
26
|
+
}
|
|
8
27
|
/**
|
|
9
28
|
* Rule builder for function-level architecture rules.
|
|
10
29
|
*
|
|
@@ -36,8 +55,20 @@ import { arePublic as fnArePublic, areProtected as fnAreProtected, arePrivate as
|
|
|
36
55
|
* ```
|
|
37
56
|
*/
|
|
38
57
|
export class FunctionRuleBuilder extends RuleBuilder {
|
|
58
|
+
_collectionOptions;
|
|
59
|
+
constructor(project, _collectionOptions) {
|
|
60
|
+
super(project);
|
|
61
|
+
this._collectionOptions = _collectionOptions;
|
|
62
|
+
}
|
|
39
63
|
getElements() {
|
|
40
|
-
|
|
64
|
+
// _collectionOptions survives `.should()` forks via RuleBuilder.fork()'s
|
|
65
|
+
// shallowClone in TerminalBuilder.copy — verified by the named-selection test.
|
|
66
|
+
//
|
|
67
|
+
// The options are part of the cache key, not just the collection call:
|
|
68
|
+
// `functions(p)` and `functions(p, COLLECT_ALL)` are DIFFERENT populations
|
|
69
|
+
// of the same project, so a project-only key would serve one the other's
|
|
70
|
+
// elements (plan 0075).
|
|
71
|
+
return cache.get(this.project, optionsKey(this._collectionOptions), () => this.project.getSourceFiles().flatMap((sf) => collectFunctions(sf, this._collectionOptions)));
|
|
41
72
|
}
|
|
42
73
|
// --- Identity predicates (delegated to plan 0003 generics) ---
|
|
43
74
|
/**
|
|
@@ -51,11 +82,25 @@ export class FunctionRuleBuilder extends RuleBuilder {
|
|
|
51
82
|
}
|
|
52
83
|
return this.addPredicate(identityHaveNameMatching(pattern));
|
|
53
84
|
}
|
|
54
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Narrows the selection to functions that have a name starting with `prefix`.
|
|
87
|
+
*
|
|
88
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
89
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
90
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
91
|
+
* rule pass having asserted nothing.
|
|
92
|
+
*/
|
|
55
93
|
haveNameStartingWith(prefix) {
|
|
56
94
|
return this.addPredicate(identityHaveNameStartingWith(prefix));
|
|
57
95
|
}
|
|
58
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* Narrows the selection to functions that have a name ending with `suffix`.
|
|
98
|
+
*
|
|
99
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
100
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
101
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
102
|
+
* rule pass having asserted nothing.
|
|
103
|
+
*/
|
|
59
104
|
haveNameEndingWith(suffix) {
|
|
60
105
|
return this.addPredicate(identityHaveNameEndingWith(suffix));
|
|
61
106
|
}
|
|
@@ -79,79 +124,181 @@ export class FunctionRuleBuilder extends RuleBuilder {
|
|
|
79
124
|
}
|
|
80
125
|
return this.addPredicate(identityResideInFolder(glob));
|
|
81
126
|
}
|
|
82
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* Narrows the selection to functions that are exported.
|
|
129
|
+
*
|
|
130
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
131
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
132
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
133
|
+
* rule pass having asserted nothing.
|
|
134
|
+
*/
|
|
83
135
|
areExported() {
|
|
84
136
|
return this.addPredicate(identityAreExported());
|
|
85
137
|
}
|
|
86
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* Narrows the selection to functions that are not exported.
|
|
140
|
+
*
|
|
141
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
142
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
143
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
144
|
+
* rule pass having asserted nothing.
|
|
145
|
+
*/
|
|
87
146
|
areNotExported() {
|
|
88
147
|
return this.addPredicate(identityAreNotExported());
|
|
89
148
|
}
|
|
90
149
|
// --- Visibility predicates (plan 0032) ---
|
|
91
150
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
151
|
+
* Narrows the selection to functions that are public.
|
|
152
|
+
*
|
|
153
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
154
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
155
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
156
|
+
* rule pass having asserted nothing.
|
|
94
157
|
*/
|
|
95
158
|
arePublic() {
|
|
96
159
|
return this.addPredicate(fnArePublic());
|
|
97
160
|
}
|
|
98
|
-
/**
|
|
161
|
+
/**
|
|
162
|
+
* Narrows the selection to functions that are protected.
|
|
163
|
+
*
|
|
164
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
165
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
166
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
167
|
+
* rule pass having asserted nothing.
|
|
168
|
+
*/
|
|
99
169
|
areProtected() {
|
|
100
170
|
return this.addPredicate(fnAreProtected());
|
|
101
171
|
}
|
|
102
|
-
/**
|
|
172
|
+
/**
|
|
173
|
+
* Narrows the selection to functions that are private.
|
|
174
|
+
*
|
|
175
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
176
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
177
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
178
|
+
* rule pass having asserted nothing.
|
|
179
|
+
*/
|
|
103
180
|
arePrivate() {
|
|
104
181
|
return this.addPredicate(fnArePrivate());
|
|
105
182
|
}
|
|
106
183
|
// --- Function-specific predicates ---
|
|
107
|
-
/**
|
|
184
|
+
/**
|
|
185
|
+
* Narrows the selection to functions that are async.
|
|
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
|
+
*/
|
|
108
192
|
areAsync() {
|
|
109
193
|
return this.addPredicate(fnAreAsync());
|
|
110
194
|
}
|
|
111
|
-
/**
|
|
195
|
+
/**
|
|
196
|
+
* Narrows the selection to functions that are not async.
|
|
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
|
+
*/
|
|
112
203
|
areNotAsync() {
|
|
113
204
|
return this.addPredicate(fnAreNotAsync());
|
|
114
205
|
}
|
|
115
|
-
/**
|
|
206
|
+
/**
|
|
207
|
+
* Narrows the selection to functions that have exactly `n` parameters.
|
|
208
|
+
*
|
|
209
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
210
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
211
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
212
|
+
* rule pass having asserted nothing.
|
|
213
|
+
*/
|
|
116
214
|
haveParameterCount(n) {
|
|
117
215
|
return this.addPredicate(fnHaveParameterCount(n));
|
|
118
216
|
}
|
|
119
|
-
/**
|
|
217
|
+
/**
|
|
218
|
+
* Narrows the selection to functions that have more than `n` parameters.
|
|
219
|
+
*
|
|
220
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
221
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
222
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
223
|
+
* rule pass having asserted nothing.
|
|
224
|
+
*/
|
|
120
225
|
haveParameterCountGreaterThan(n) {
|
|
121
226
|
return this.addPredicate(fnHaveParameterCountGreaterThan(n));
|
|
122
227
|
}
|
|
123
|
-
/**
|
|
228
|
+
/**
|
|
229
|
+
* Narrows the selection to functions that have fewer than `n` parameters.
|
|
230
|
+
*
|
|
231
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
232
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
233
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
234
|
+
* rule pass having asserted nothing.
|
|
235
|
+
*/
|
|
124
236
|
haveParameterCountLessThan(n) {
|
|
125
237
|
return this.addPredicate(fnHaveParameterCountLessThan(n));
|
|
126
238
|
}
|
|
127
|
-
/**
|
|
239
|
+
/**
|
|
240
|
+
* Narrows the selection to functions that have a parameter named `name`.
|
|
241
|
+
*
|
|
242
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
243
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
244
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
245
|
+
* rule pass having asserted nothing.
|
|
246
|
+
*/
|
|
128
247
|
haveParameterNamed(name) {
|
|
129
248
|
return this.addPredicate(fnHaveParameterNamed(name));
|
|
130
249
|
}
|
|
131
250
|
/**
|
|
132
|
-
*
|
|
133
|
-
*
|
|
251
|
+
* Narrows the selection to functions that have a return type matching `pattern`.
|
|
252
|
+
*
|
|
253
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
254
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
255
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
256
|
+
* rule pass having asserted nothing.
|
|
134
257
|
*/
|
|
135
258
|
haveReturnType(pattern) {
|
|
136
259
|
return this.addPredicate(fnHaveReturnType(pattern));
|
|
137
260
|
}
|
|
138
|
-
/**
|
|
261
|
+
/**
|
|
262
|
+
* Narrows the selection to functions that have a rest parameter.
|
|
263
|
+
*
|
|
264
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
265
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
266
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
267
|
+
* rule pass having asserted nothing.
|
|
268
|
+
*/
|
|
139
269
|
haveRestParameter() {
|
|
140
270
|
return this.addPredicate(fnHaveRestParameter());
|
|
141
271
|
}
|
|
142
|
-
/**
|
|
272
|
+
/**
|
|
273
|
+
* Narrows the selection to functions that have an optional parameter.
|
|
274
|
+
*
|
|
275
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
276
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
277
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
278
|
+
* rule pass having asserted nothing.
|
|
279
|
+
*/
|
|
143
280
|
haveOptionalParameter() {
|
|
144
281
|
return this.addPredicate(fnHaveOptionalParameter());
|
|
145
282
|
}
|
|
146
283
|
/**
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
284
|
+
* Narrows the selection to functions that have parameter `index` of a type matching `matcher`.
|
|
285
|
+
*
|
|
286
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
287
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
288
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
289
|
+
* rule pass having asserted nothing.
|
|
150
290
|
*/
|
|
151
291
|
haveParameterOfType(index, matcher) {
|
|
152
292
|
return this.addPredicate(fnHaveParameterOfType(index, matcher));
|
|
153
293
|
}
|
|
154
|
-
/**
|
|
294
|
+
/**
|
|
295
|
+
* Narrows the selection to functions that have a parameter name matching `pattern`.
|
|
296
|
+
*
|
|
297
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
298
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
299
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
300
|
+
* rule pass having asserted nothing.
|
|
301
|
+
*/
|
|
155
302
|
haveParameterNameMatching(pattern) {
|
|
156
303
|
return this.addPredicate(fnHaveParameterNameMatching(pattern));
|
|
157
304
|
}
|
|
@@ -281,7 +428,7 @@ export class FunctionRuleBuilder extends RuleBuilder {
|
|
|
281
428
|
* .check()
|
|
282
429
|
* ```
|
|
283
430
|
*/
|
|
284
|
-
export function functions(p) {
|
|
285
|
-
return new FunctionRuleBuilder(p);
|
|
431
|
+
export function functions(p, options) {
|
|
432
|
+
return new FunctionRuleBuilder(p, options);
|
|
286
433
|
}
|
|
287
434
|
//# sourceMappingURL=function-rule-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-rule-builder.js","sourceRoot":"","sources":["../../src/builders/function-rule-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"function-rule-builder.js","sourceRoot":"","sources":["../../src/builders/function-rule-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ArchProject } from '../core/project.js';
|
|
2
|
-
import { RuleBuilder } from '
|
|
2
|
+
import { RuleBuilder } from '../core/rule-builder.js';
|
|
3
3
|
import type { ArchJsxElement } from '../models/arch-jsx-element.js';
|
|
4
4
|
/**
|
|
5
5
|
* Rule builder for JSX element architecture rules.
|
|
@@ -35,32 +35,88 @@ import type { ArchJsxElement } from '../models/arch-jsx-element.js';
|
|
|
35
35
|
* .check()
|
|
36
36
|
* ```
|
|
37
37
|
*/
|
|
38
|
-
export declare class JsxRuleBuilder extends RuleBuilder<ArchJsxElement
|
|
38
|
+
export declare class JsxRuleBuilder extends RuleBuilder<ArchJsxElement> {
|
|
39
39
|
protected getElements(): ArchJsxElement[];
|
|
40
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Narrows the selection to JSX elements that have a name matching `pattern`.
|
|
42
|
+
*
|
|
43
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
44
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
45
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
46
|
+
* rule pass having asserted nothing.
|
|
47
|
+
*/
|
|
41
48
|
haveNameMatching(pattern: RegExp | string): this;
|
|
42
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Narrows the selection to JSX elements that have a name starting with `prefix`.
|
|
51
|
+
*
|
|
52
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
53
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
54
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
55
|
+
* rule pass having asserted nothing.
|
|
56
|
+
*/
|
|
43
57
|
haveNameStartingWith(prefix: string): this;
|
|
44
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Narrows the selection to JSX elements that have a name ending with `suffix`.
|
|
60
|
+
*
|
|
61
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
62
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
63
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
64
|
+
* rule pass having asserted nothing.
|
|
65
|
+
*/
|
|
45
66
|
haveNameEndingWith(suffix: string): this;
|
|
46
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Narrows the selection to JSX elements that reside in a file matching `glob`.
|
|
69
|
+
*
|
|
70
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
71
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
72
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
73
|
+
* rule pass having asserted nothing.
|
|
74
|
+
*/
|
|
47
75
|
resideInFile(glob: string): this;
|
|
48
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Narrows the selection to JSX elements that reside in a folder matching `glob`.
|
|
78
|
+
*
|
|
79
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
80
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
81
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
82
|
+
* rule pass having asserted nothing.
|
|
83
|
+
*/
|
|
49
84
|
resideInFolder(glob: string): this;
|
|
50
85
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
86
|
+
* Narrows the selection to JSX elements that are the HTML elements named in `tags`.
|
|
87
|
+
*
|
|
88
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
89
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
90
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
91
|
+
* rule pass having asserted nothing.
|
|
53
92
|
*/
|
|
54
93
|
areHtmlElements(...tags: string[]): this;
|
|
55
94
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
95
|
+
* Narrows the selection to JSX elements that are the components named in `names`.
|
|
96
|
+
*
|
|
97
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
98
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
99
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
100
|
+
* rule pass having asserted nothing.
|
|
59
101
|
*/
|
|
60
102
|
areComponents(...names: string[]): this;
|
|
61
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* Narrows the selection to JSX elements that have the attribute `name`.
|
|
105
|
+
*
|
|
106
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
107
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
108
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
109
|
+
* rule pass having asserted nothing.
|
|
110
|
+
*/
|
|
62
111
|
withAttribute(name: string): this;
|
|
63
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Narrows the selection to JSX elements that have attribute `name` with a value matching `value`.
|
|
114
|
+
*
|
|
115
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
116
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
117
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
118
|
+
* rule pass having asserted nothing.
|
|
119
|
+
*/
|
|
64
120
|
withAttributeMatching(name: string, value: string | RegExp): this;
|
|
65
121
|
/**
|
|
66
122
|
* The filtered JSX element set must be empty.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-rule-builder.d.ts","sourceRoot":"","sources":["../../src/builders/jsx-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"jsx-rule-builder.d.ts","sourceRoot":"","sources":["../../src/builders/jsx-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AA2BnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,cAAe,SAAQ,WAAW,CAAC,cAAc,CAAC;IAC7D,SAAS,CAAC,WAAW,IAAI,cAAc,EAAE;IAQzC;;;;;;;OAOG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIhD;;;;;;;OAOG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI1C;;;;;;;OAOG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC;;;;;;;OAOG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;;;;OAOG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMlC;;;;;;;OAOG;IACH,eAAe,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAIxC;;;;;;;OAOG;IACH,aAAa,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIvC;;;;;;;OAOG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;;;;OAOG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMjE;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIjE;;OAEG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAGrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,cAAc,CAE1D"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { RuleBuilder } from '
|
|
1
|
+
import { RuleBuilder } from '../core/rule-builder.js';
|
|
2
|
+
import { createElementCache, SOLE_POPULATION } from '../core/element-cache.js';
|
|
2
3
|
import { collectJsxElements } from '../models/arch-jsx-element.js';
|
|
3
4
|
import { haveNameMatching as identityHaveNameMatching, haveNameStartingWith as identityHaveNameStartingWith, haveNameEndingWith as identityHaveNameEndingWith, resideInFile as identityResideInFile, resideInFolder as identityResideInFolder, } from '../predicates/identity.js';
|
|
4
5
|
import { areHtmlElements as jsxAreHtmlElements, areComponents as jsxAreComponents, withAttribute as jsxWithAttribute, withAttributeMatching as jsxWithAttributeMatching, } from '../predicates/jsx.js';
|
|
5
6
|
import { notExist as jsxNotExist, haveAttribute as conditionHaveAttribute, notHaveAttribute as conditionNotHaveAttribute, haveAttributeMatching as conditionHaveAttributeMatching, notHaveAttributeMatching as conditionNotHaveAttributeMatching, } from '../conditions/jsx.js';
|
|
7
|
+
/** One collection per project, shared by every rule built from it (plan 0075). */
|
|
8
|
+
const cache = createElementCache();
|
|
6
9
|
/**
|
|
7
10
|
* Rule builder for JSX element architecture rules.
|
|
8
11
|
*
|
|
@@ -39,50 +42,106 @@ import { notExist as jsxNotExist, haveAttribute as conditionHaveAttribute, notHa
|
|
|
39
42
|
*/
|
|
40
43
|
export class JsxRuleBuilder extends RuleBuilder {
|
|
41
44
|
getElements() {
|
|
42
|
-
return this.project.getSourceFiles().flatMap(collectJsxElements);
|
|
45
|
+
return cache.get(this.project, SOLE_POPULATION, () => this.project.getSourceFiles().flatMap(collectJsxElements));
|
|
43
46
|
}
|
|
44
47
|
// --- Identity predicates (predicate-only, following CallRuleBuilder pattern) ---
|
|
45
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Narrows the selection to JSX elements that have a name matching `pattern`.
|
|
50
|
+
*
|
|
51
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
52
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
53
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
54
|
+
* rule pass having asserted nothing.
|
|
55
|
+
*/
|
|
46
56
|
haveNameMatching(pattern) {
|
|
47
57
|
return this.addPredicate(identityHaveNameMatching(pattern));
|
|
48
58
|
}
|
|
49
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Narrows the selection to JSX elements that have a name starting with `prefix`.
|
|
61
|
+
*
|
|
62
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
63
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
64
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
65
|
+
* rule pass having asserted nothing.
|
|
66
|
+
*/
|
|
50
67
|
haveNameStartingWith(prefix) {
|
|
51
68
|
return this.addPredicate(identityHaveNameStartingWith(prefix));
|
|
52
69
|
}
|
|
53
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Narrows the selection to JSX elements that have a name ending with `suffix`.
|
|
72
|
+
*
|
|
73
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
74
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
75
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
76
|
+
* rule pass having asserted nothing.
|
|
77
|
+
*/
|
|
54
78
|
haveNameEndingWith(suffix) {
|
|
55
79
|
return this.addPredicate(identityHaveNameEndingWith(suffix));
|
|
56
80
|
}
|
|
57
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* Narrows the selection to JSX elements that reside in a file matching `glob`.
|
|
83
|
+
*
|
|
84
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
85
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
86
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
87
|
+
* rule pass having asserted nothing.
|
|
88
|
+
*/
|
|
58
89
|
resideInFile(glob) {
|
|
59
90
|
return this.addPredicate(identityResideInFile(glob));
|
|
60
91
|
}
|
|
61
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Narrows the selection to JSX elements that reside in a folder matching `glob`.
|
|
94
|
+
*
|
|
95
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
96
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
97
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
98
|
+
* rule pass having asserted nothing.
|
|
99
|
+
*/
|
|
62
100
|
resideInFolder(glob) {
|
|
63
101
|
return this.addPredicate(identityResideInFolder(glob));
|
|
64
102
|
}
|
|
65
103
|
// --- JSX-specific predicates ---
|
|
66
104
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
105
|
+
* Narrows the selection to JSX elements that are the HTML elements named in `tags`.
|
|
106
|
+
*
|
|
107
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
108
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
109
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
110
|
+
* rule pass having asserted nothing.
|
|
69
111
|
*/
|
|
70
112
|
areHtmlElements(...tags) {
|
|
71
113
|
return this.addPredicate(jsxAreHtmlElements(...tags));
|
|
72
114
|
}
|
|
73
115
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
116
|
+
* Narrows the selection to JSX elements that are the components named in `names`.
|
|
117
|
+
*
|
|
118
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
119
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
120
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
121
|
+
* rule pass having asserted nothing.
|
|
77
122
|
*/
|
|
78
123
|
areComponents(...names) {
|
|
79
124
|
return this.addPredicate(jsxAreComponents(...names));
|
|
80
125
|
}
|
|
81
|
-
/**
|
|
126
|
+
/**
|
|
127
|
+
* Narrows the selection to JSX elements that have the attribute `name`.
|
|
128
|
+
*
|
|
129
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
130
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
131
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
132
|
+
* rule pass having asserted nothing.
|
|
133
|
+
*/
|
|
82
134
|
withAttribute(name) {
|
|
83
135
|
return this.addPredicate(jsxWithAttribute(name));
|
|
84
136
|
}
|
|
85
|
-
/**
|
|
137
|
+
/**
|
|
138
|
+
* Narrows the selection to JSX elements that have attribute `name` with a value matching `value`.
|
|
139
|
+
*
|
|
140
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
141
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
142
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
143
|
+
* rule pass having asserted nothing.
|
|
144
|
+
*/
|
|
86
145
|
withAttributeMatching(name, value) {
|
|
87
146
|
return this.addPredicate(jsxWithAttributeMatching(name, value));
|
|
88
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-rule-builder.js","sourceRoot":"","sources":["../../src/builders/jsx-rule-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"jsx-rule-builder.js","sourceRoot":"","sources":["../../src/builders/jsx-rule-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SourceFile } from 'ts-morph';
|
|
2
|
-
import { RuleBuilder } from '
|
|
2
|
+
import { RuleBuilder } from '../core/rule-builder.js';
|
|
3
3
|
import type { ArchProject } from '../core/project.js';
|
|
4
4
|
import type { ImportOptions } from '../core/import-options.js';
|
|
5
5
|
import type { ExpressionMatcher } from '../helpers/matchers.js';
|
|
@@ -17,7 +17,7 @@ import type { ModuleBodyOptions } from '../helpers/body-traversal.js';
|
|
|
17
17
|
* .because('domain must not depend on infrastructure')
|
|
18
18
|
* .check()
|
|
19
19
|
*/
|
|
20
|
-
export declare class ModuleRuleBuilder extends RuleBuilder<SourceFile
|
|
20
|
+
export declare class ModuleRuleBuilder extends RuleBuilder<SourceFile> {
|
|
21
21
|
protected getElements(): SourceFile[];
|
|
22
22
|
/**
|
|
23
23
|
* Filter modules whose file name matches the given regex.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-rule-builder.d.ts","sourceRoot":"","sources":["../../src/builders/module-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"module-rule-builder.d.ts","sourceRoot":"","sources":["../../src/builders/module-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAiBrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAM9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAqBrE;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,UAAU,CAAC;IAC5D,SAAS,CAAC,WAAW,IAAI,UAAU,EAAE;IAWrC;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQhD;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOhC;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASlC;;;OAGG;IACH,UAAU,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIpC;;;OAGG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAIpE;;;OAGG;IACH,aAAa,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAOvC;;;;OAIG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAOvE;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMpC;;;OAGG;IACH,cAAc,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIxC;;;OAGG;IACH,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAIxE;;;OAGG;IACH,sBAAsB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIhD;;;OAGG;IACH,iCAAiC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAIhF;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAI7B;;OAEG;IACH,uBAAuB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD;;OAEG;IACH,QAAQ,IAAI,IAAI;IAMhB;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAItE;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAIzE;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAMhG;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;;OAGG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMjC;;;OAGG;IACH,iBAAiB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAI3C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;OAIG;IACH,mBAAmB,IAAI,IAAI;CAG5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAEzD"}
|