@nielspeter/eess-ts 0.2.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -35
- package/dist/builders/call-rule-builder.d.ts +66 -26
- package/dist/builders/call-rule-builder.d.ts.map +1 -1
- package/dist/builders/call-rule-builder.js +75 -32
- package/dist/builders/call-rule-builder.js.map +1 -1
- package/dist/builders/class-rule-builder.d.ts +125 -26
- package/dist/builders/class-rule-builder.d.ts.map +1 -1
- package/dist/builders/class-rule-builder.js +141 -55
- package/dist/builders/class-rule-builder.js.map +1 -1
- package/dist/builders/correspondence-builder.d.ts +287 -0
- package/dist/builders/correspondence-builder.d.ts.map +1 -0
- package/dist/builders/correspondence-builder.js +385 -0
- package/dist/builders/correspondence-builder.js.map +1 -0
- package/dist/builders/correspondence-findings.d.ts +104 -0
- package/dist/builders/correspondence-findings.d.ts.map +1 -0
- package/dist/builders/correspondence-findings.js +301 -0
- package/dist/builders/correspondence-findings.js.map +1 -0
- package/dist/builders/cross-layer-builder.d.ts +99 -16
- package/dist/builders/cross-layer-builder.d.ts.map +1 -1
- package/dist/builders/cross-layer-builder.js +182 -35
- package/dist/builders/cross-layer-builder.js.map +1 -1
- package/dist/builders/function-rule-builder.d.ts +144 -25
- package/dist/builders/function-rule-builder.d.ts.map +1 -1
- package/dist/builders/function-rule-builder.js +177 -39
- package/dist/builders/function-rule-builder.js.map +1 -1
- package/dist/builders/jsx-rule-builder.d.ts +70 -14
- package/dist/builders/jsx-rule-builder.d.ts.map +1 -1
- package/dist/builders/jsx-rule-builder.js +73 -14
- package/dist/builders/jsx-rule-builder.js.map +1 -1
- package/dist/builders/module-rule-builder.d.ts +2 -2
- package/dist/builders/module-rule-builder.d.ts.map +1 -1
- package/dist/builders/module-rule-builder.js +16 -19
- package/dist/builders/module-rule-builder.js.map +1 -1
- package/dist/builders/scoped-function-rule-builder.d.ts +11 -0
- package/dist/builders/scoped-function-rule-builder.d.ts.map +1 -1
- package/dist/builders/scoped-function-rule-builder.js +12 -0
- package/dist/builders/scoped-function-rule-builder.js.map +1 -1
- package/dist/builders/slice-discovery-message.d.ts +36 -0
- package/dist/builders/slice-discovery-message.d.ts.map +1 -0
- package/dist/builders/slice-discovery-message.js +181 -0
- package/dist/builders/slice-discovery-message.js.map +1 -0
- package/dist/builders/slice-rule-builder.d.ts +151 -12
- package/dist/builders/slice-rule-builder.d.ts.map +1 -1
- package/dist/builders/slice-rule-builder.js +243 -35
- package/dist/builders/slice-rule-builder.js.map +1 -1
- package/dist/builders/type-rule-builder.d.ts +95 -24
- package/dist/builders/type-rule-builder.d.ts.map +1 -1
- package/dist/builders/type-rule-builder.js +109 -42
- package/dist/builders/type-rule-builder.js.map +1 -1
- package/dist/{helpers → builders}/within.d.ts +2 -2
- package/dist/builders/within.d.ts.map +1 -0
- package/dist/{helpers → builders}/within.js +1 -1
- package/dist/builders/within.js.map +1 -0
- package/dist/cli/commands/baseline.d.ts +8 -3
- package/dist/cli/commands/baseline.d.ts.map +1 -1
- package/dist/cli/commands/baseline.js +111 -7
- package/dist/cli/commands/baseline.js.map +1 -1
- package/dist/cli/commands/check.d.ts +7 -2
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +385 -47
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +29 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +224 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/explain.d.ts +2 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +19 -10
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/init.d.ts +9 -3
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +162 -137
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/import-rule-module.d.ts +29 -0
- package/dist/cli/import-rule-module.d.ts.map +1 -0
- package/dist/cli/import-rule-module.js +47 -0
- package/dist/cli/import-rule-module.js.map +1 -0
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +101 -43
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/load-rules.d.ts +6 -11
- package/dist/cli/load-rules.d.ts.map +1 -1
- package/dist/cli/load-rules.js +25 -32
- package/dist/cli/load-rules.js.map +1 -1
- package/dist/cli/resolve-config.d.ts +0 -8
- package/dist/cli/resolve-config.d.ts.map +1 -1
- package/dist/cli/resolve-config.js +25 -55
- package/dist/cli/resolve-config.js.map +1 -1
- package/dist/cli/rule-file-findings.d.ts +178 -0
- package/dist/cli/rule-file-findings.d.ts.map +1 -0
- package/dist/cli/rule-file-findings.js +351 -0
- package/dist/cli/rule-file-findings.js.map +1 -0
- package/dist/cli/watch.d.ts +17 -34
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +14 -129
- package/dist/cli/watch.js.map +1 -1
- package/dist/conditions/body-analysis-function.d.ts.map +1 -1
- package/dist/conditions/body-analysis-function.js +16 -7
- package/dist/conditions/body-analysis-function.js.map +1 -1
- package/dist/conditions/body-analysis-module.d.ts.map +1 -1
- package/dist/conditions/body-analysis-module.js +14 -9
- package/dist/conditions/body-analysis-module.js.map +1 -1
- package/dist/conditions/body-analysis.d.ts.map +1 -1
- package/dist/conditions/body-analysis.js +16 -7
- package/dist/conditions/body-analysis.js.map +1 -1
- package/dist/conditions/call.d.ts.map +1 -1
- package/dist/conditions/call.js +41 -19
- package/dist/conditions/call.js.map +1 -1
- package/dist/conditions/catch-analysis.d.ts +2 -1
- package/dist/conditions/catch-analysis.d.ts.map +1 -1
- package/dist/conditions/catch-analysis.js.map +1 -1
- package/dist/conditions/cross-layer.d.ts +2 -10
- package/dist/conditions/cross-layer.d.ts.map +1 -1
- package/dist/conditions/cross-layer.js +227 -23
- package/dist/conditions/cross-layer.js.map +1 -1
- package/dist/conditions/dependency.d.ts +35 -6
- package/dist/conditions/dependency.d.ts.map +1 -1
- package/dist/conditions/dependency.js +299 -45
- package/dist/conditions/dependency.js.map +1 -1
- package/dist/conditions/exports.d.ts.map +1 -1
- package/dist/conditions/exports.js +41 -37
- package/dist/conditions/exports.js.map +1 -1
- package/dist/conditions/function.d.ts.map +1 -1
- package/dist/conditions/function.js +19 -5
- package/dist/conditions/function.js.map +1 -1
- package/dist/conditions/helpers.d.ts +2 -1
- package/dist/conditions/helpers.d.ts.map +1 -1
- package/dist/conditions/helpers.js +4 -1
- package/dist/conditions/helpers.js.map +1 -1
- package/dist/conditions/jsx.d.ts.map +1 -1
- package/dist/conditions/jsx.js +7 -2
- package/dist/conditions/jsx.js.map +1 -1
- package/dist/conditions/match-identity.d.ts +43 -0
- package/dist/conditions/match-identity.d.ts.map +1 -0
- package/dist/conditions/match-identity.js +43 -0
- package/dist/conditions/match-identity.js.map +1 -0
- package/dist/conditions/members.d.ts.map +1 -1
- package/dist/conditions/members.js +20 -6
- package/dist/conditions/members.js.map +1 -1
- package/dist/conditions/reverse-dependency.d.ts +18 -5
- package/dist/conditions/reverse-dependency.d.ts.map +1 -1
- package/dist/conditions/reverse-dependency.js +155 -93
- package/dist/conditions/reverse-dependency.js.map +1 -1
- package/dist/conditions/slice.d.ts +86 -2
- package/dist/conditions/slice.d.ts.map +1 -1
- package/dist/conditions/slice.js +234 -53
- package/dist/conditions/slice.js.map +1 -1
- package/dist/conditions/structural.d.ts.map +1 -1
- package/dist/conditions/structural.js +16 -4
- package/dist/conditions/structural.js.map +1 -1
- package/dist/core/check-all.d.ts +19 -0
- package/dist/core/check-all.d.ts.map +1 -0
- package/dist/core/check-all.js +150 -0
- package/dist/core/check-all.js.map +1 -0
- package/dist/core/combinators.d.ts +48 -0
- package/dist/core/combinators.d.ts.map +1 -0
- package/dist/core/combinators.js +49 -0
- package/dist/core/combinators.js.map +1 -0
- package/dist/core/descendant-cache.d.ts +36 -0
- package/dist/core/descendant-cache.d.ts.map +1 -0
- package/dist/core/descendant-cache.js +117 -0
- package/dist/core/descendant-cache.js.map +1 -0
- package/dist/core/diagnose.d.ts +234 -0
- package/dist/core/diagnose.d.ts.map +1 -0
- package/dist/core/diagnose.js +390 -0
- package/dist/core/diagnose.js.map +1 -0
- package/dist/core/disk-set.d.ts +48 -0
- package/dist/core/disk-set.d.ts.map +1 -0
- package/dist/core/disk-set.js +218 -0
- package/dist/core/disk-set.js.map +1 -0
- package/dist/core/element-cache.d.ts +75 -0
- package/dist/core/element-cache.d.ts.map +1 -0
- package/dist/core/element-cache.js +32 -0
- package/dist/core/element-cache.js.map +1 -0
- package/dist/core/empty-project-advice.d.ts +75 -0
- package/dist/core/empty-project-advice.d.ts.map +1 -0
- package/dist/core/empty-project-advice.js +61 -0
- package/dist/core/empty-project-advice.js.map +1 -0
- package/dist/core/exclusion-comments.d.ts +19 -0
- package/dist/core/exclusion-comments.d.ts.map +1 -0
- package/dist/core/exclusion-comments.js +7 -0
- package/dist/core/exclusion-comments.js.map +1 -0
- package/dist/core/execute-rule.d.ts +158 -0
- package/dist/core/execute-rule.d.ts.map +1 -0
- package/dist/core/execute-rule.js +666 -0
- package/dist/core/execute-rule.js.map +1 -0
- package/dist/core/glob-diagnosis.d.ts +78 -0
- package/dist/core/glob-diagnosis.d.ts.map +1 -0
- package/dist/core/glob-diagnosis.js +134 -0
- package/dist/core/glob-diagnosis.js.map +1 -0
- package/dist/core/glob-evaluator.d.ts +48 -0
- package/dist/core/glob-evaluator.d.ts.map +1 -0
- package/dist/core/glob-evaluator.js +89 -0
- package/dist/core/glob-evaluator.js.map +1 -0
- package/dist/core/import-candidates.d.ts +60 -0
- package/dist/core/import-candidates.d.ts.map +1 -0
- package/dist/core/import-candidates.js +93 -0
- package/dist/core/import-candidates.js.map +1 -0
- package/dist/core/import-options.d.ts +55 -2
- package/dist/core/import-options.d.ts.map +1 -1
- package/dist/core/import-options.js +64 -0
- package/dist/core/import-options.js.map +1 -1
- package/dist/core/invalidate-on-modify.d.ts +20 -0
- package/dist/core/invalidate-on-modify.d.ts.map +1 -0
- package/dist/core/invalidate-on-modify.js +26 -0
- package/dist/core/invalidate-on-modify.js.map +1 -0
- package/dist/core/line-index.d.ts +3 -0
- package/dist/core/line-index.d.ts.map +1 -0
- package/dist/core/line-index.js +227 -0
- package/dist/core/line-index.js.map +1 -0
- package/dist/core/metric-violation.d.ts +86 -0
- package/dist/core/metric-violation.d.ts.map +1 -0
- package/dist/core/metric-violation.js +132 -0
- package/dist/core/metric-violation.js.map +1 -0
- package/dist/core/module-edges.d.ts +361 -0
- package/dist/core/module-edges.d.ts.map +1 -0
- package/dist/core/module-edges.js +593 -0
- package/dist/core/module-edges.js.map +1 -0
- package/dist/core/object-literal-functions.d.ts +42 -0
- package/dist/core/object-literal-functions.d.ts.map +1 -0
- package/dist/core/object-literal-functions.js +75 -0
- package/dist/core/object-literal-functions.js.map +1 -0
- package/dist/core/orphan-exclusions.d.ts +44 -0
- package/dist/core/orphan-exclusions.d.ts.map +1 -0
- package/dist/core/orphan-exclusions.js +224 -0
- package/dist/core/orphan-exclusions.js.map +1 -0
- package/dist/core/pair-condition.d.ts +32 -3
- package/dist/core/pair-condition.d.ts.map +1 -1
- package/dist/core/path-universe.d.ts +22 -0
- package/dist/core/path-universe.d.ts.map +1 -0
- package/dist/core/path-universe.js +45 -0
- package/dist/core/path-universe.js.map +1 -0
- package/dist/core/per-root-compiler-options.d.ts +20 -0
- package/dist/core/per-root-compiler-options.d.ts.map +1 -0
- package/dist/core/per-root-compiler-options.js +57 -0
- package/dist/core/per-root-compiler-options.js.map +1 -0
- package/dist/core/project-relative.d.ts +98 -0
- package/dist/core/project-relative.d.ts.map +1 -0
- package/dist/core/project-relative.js +185 -0
- package/dist/core/project-relative.js.map +1 -0
- package/dist/core/project.d.ts +7 -1
- package/dist/core/project.d.ts.map +1 -1
- package/dist/core/project.js +29 -4
- package/dist/core/project.js.map +1 -1
- package/dist/core/rule-builder.d.ts +303 -0
- package/dist/core/rule-builder.d.ts.map +1 -0
- package/dist/core/rule-builder.js +463 -0
- package/dist/core/rule-builder.js.map +1 -0
- package/dist/core/rule-declaration.d.ts +32 -0
- package/dist/core/rule-declaration.d.ts.map +1 -0
- package/dist/core/rule-declaration.js +88 -0
- package/dist/core/rule-declaration.js.map +1 -0
- package/dist/core/terminal-builder.d.ts +629 -0
- package/dist/core/terminal-builder.d.ts.map +1 -0
- package/dist/core/terminal-builder.js +807 -0
- package/dist/core/terminal-builder.js.map +1 -0
- package/dist/core/terminal-execution.d.ts +39 -0
- package/dist/core/terminal-execution.d.ts.map +1 -0
- package/dist/core/terminal-execution.js +103 -0
- package/dist/core/terminal-execution.js.map +1 -0
- package/dist/core/ts-comment-mask.d.ts +2 -0
- package/dist/core/ts-comment-mask.d.ts.map +1 -0
- package/dist/core/ts-comment-mask.js +102 -0
- package/dist/core/ts-comment-mask.js.map +1 -0
- package/dist/core/vacuity-diagnosis.d.ts +103 -0
- package/dist/core/vacuity-diagnosis.d.ts.map +1 -0
- package/dist/core/vacuity-diagnosis.js +415 -0
- package/dist/core/vacuity-diagnosis.js.map +1 -0
- package/dist/core/violation.d.ts +16 -11
- package/dist/core/violation.d.ts.map +1 -1
- package/dist/core/violation.js +33 -13
- package/dist/core/violation.js.map +1 -1
- package/dist/graphql/graphql-rule-builder.d.ts +95 -0
- package/dist/graphql/graphql-rule-builder.d.ts.map +1 -0
- package/dist/graphql/graphql-rule-builder.js +127 -0
- package/dist/graphql/graphql-rule-builder.js.map +1 -0
- package/dist/graphql/index.d.ts +1 -0
- package/dist/graphql/index.d.ts.map +1 -1
- package/dist/graphql/index.js +2 -1
- package/dist/graphql/index.js.map +1 -1
- package/dist/graphql/resolver-rule-builder.d.ts +44 -23
- package/dist/graphql/resolver-rule-builder.d.ts.map +1 -1
- package/dist/graphql/resolver-rule-builder.js +80 -72
- package/dist/graphql/resolver-rule-builder.js.map +1 -1
- package/dist/graphql/schema-loader.d.ts +21 -0
- package/dist/graphql/schema-loader.d.ts.map +1 -1
- package/dist/graphql/schema-loader.js +82 -12
- package/dist/graphql/schema-loader.js.map +1 -1
- package/dist/graphql/schema-predicates.d.ts.map +1 -1
- package/dist/graphql/schema-predicates.js +17 -12
- package/dist/graphql/schema-predicates.js.map +1 -1
- package/dist/graphql/schema-rule-builder.d.ts +15 -24
- package/dist/graphql/schema-rule-builder.d.ts.map +1 -1
- package/dist/graphql/schema-rule-builder.js +39 -77
- package/dist/graphql/schema-rule-builder.js.map +1 -1
- package/dist/helpers/baseline-diagnostics.d.ts +45 -0
- package/dist/helpers/baseline-diagnostics.d.ts.map +1 -0
- package/dist/helpers/baseline-diagnostics.js +168 -0
- package/dist/helpers/baseline-diagnostics.js.map +1 -0
- package/dist/helpers/baseline-generator.d.ts +28 -0
- package/dist/helpers/baseline-generator.d.ts.map +1 -0
- package/dist/helpers/baseline-generator.js +27 -0
- package/dist/helpers/baseline-generator.js.map +1 -0
- package/dist/helpers/baseline.d.ts +336 -0
- package/dist/helpers/baseline.d.ts.map +1 -0
- package/dist/helpers/baseline.js +664 -0
- package/dist/helpers/baseline.js.map +1 -0
- package/dist/helpers/body-traversal.d.ts +27 -2
- package/dist/helpers/body-traversal.d.ts.map +1 -1
- package/dist/helpers/body-traversal.js +135 -16
- package/dist/helpers/body-traversal.js.map +1 -1
- package/dist/helpers/callback-extractor.d.ts.map +1 -1
- package/dist/helpers/callback-extractor.js +53 -84
- package/dist/helpers/callback-extractor.js.map +1 -1
- package/dist/helpers/complexity.d.ts +13 -5
- package/dist/helpers/complexity.d.ts.map +1 -1
- package/dist/helpers/complexity.js +15 -6
- package/dist/helpers/complexity.js.map +1 -1
- package/dist/helpers/diff-aware.d.ts +16 -0
- package/dist/helpers/diff-aware.d.ts.map +1 -0
- package/dist/helpers/diff-aware.js +16 -0
- package/dist/helpers/diff-aware.js.map +1 -0
- package/dist/helpers/matchers.d.ts +68 -7
- package/dist/helpers/matchers.d.ts.map +1 -1
- package/dist/helpers/matchers.js +164 -86
- package/dist/helpers/matchers.js.map +1 -1
- package/dist/helpers/slice-graph.d.ts +100 -8
- package/dist/helpers/slice-graph.d.ts.map +1 -1
- package/dist/helpers/slice-graph.js +126 -34
- package/dist/helpers/slice-graph.js.map +1 -1
- package/dist/helpers/tarjan.d.ts +0 -14
- package/dist/helpers/tarjan.d.ts.map +1 -1
- package/dist/helpers/tarjan.js +29 -16
- package/dist/helpers/tarjan.js.map +1 -1
- package/dist/index.d.ts +55 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +67 -15
- package/dist/index.js.map +1 -1
- package/dist/models/arch-call.d.ts +3 -2
- package/dist/models/arch-call.d.ts.map +1 -1
- package/dist/models/arch-call.js.map +1 -1
- package/dist/models/arch-function.d.ts +54 -8
- package/dist/models/arch-function.d.ts.map +1 -1
- package/dist/models/arch-function.js +145 -8
- package/dist/models/arch-function.js.map +1 -1
- package/dist/models/arch-jsx-element.d.ts.map +1 -1
- package/dist/models/arch-jsx-element.js +18 -19
- package/dist/models/arch-jsx-element.js.map +1 -1
- package/dist/models/slice.d.ts +33 -9
- package/dist/models/slice.d.ts.map +1 -1
- package/dist/models/slice.js +129 -19
- package/dist/models/slice.js.map +1 -1
- package/dist/predicates/call.d.ts.map +1 -1
- package/dist/predicates/call.js +5 -0
- package/dist/predicates/call.js.map +1 -1
- package/dist/predicates/identity.d.ts +21 -0
- package/dist/predicates/identity.d.ts.map +1 -1
- package/dist/predicates/identity.js +75 -3
- package/dist/predicates/identity.js.map +1 -1
- package/dist/predicates/index.d.ts +1 -1
- package/dist/predicates/index.d.ts.map +1 -1
- package/dist/predicates/index.js +1 -1
- package/dist/predicates/index.js.map +1 -1
- package/dist/predicates/jsx.d.ts.map +1 -1
- package/dist/predicates/jsx.js +2 -1
- package/dist/predicates/jsx.js.map +1 -1
- package/dist/predicates/metrics.d.ts +4 -2
- package/dist/predicates/metrics.d.ts.map +1 -1
- package/dist/predicates/metrics.js +4 -2
- package/dist/predicates/metrics.js.map +1 -1
- package/dist/predicates/module.d.ts +4 -12
- package/dist/predicates/module.d.ts.map +1 -1
- package/dist/predicates/module.js +57 -37
- package/dist/predicates/module.js.map +1 -1
- package/dist/presets/agent-guardrails.d.ts +49 -16
- package/dist/presets/agent-guardrails.d.ts.map +1 -1
- package/dist/presets/agent-guardrails.js +308 -19
- package/dist/presets/agent-guardrails.js.map +1 -1
- package/dist/presets/boundaries.d.ts +46 -3
- package/dist/presets/boundaries.d.ts.map +1 -1
- package/dist/presets/boundaries.js +132 -23
- package/dist/presets/boundaries.js.map +1 -1
- package/dist/presets/data-layer.d.ts +23 -3
- package/dist/presets/data-layer.d.ts.map +1 -1
- package/dist/presets/data-layer.js +58 -16
- package/dist/presets/data-layer.js.map +1 -1
- package/dist/presets/index.d.ts +10 -5
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +19 -3
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/layered.d.ts +47 -3
- package/dist/presets/layered.d.ts.map +1 -1
- package/dist/presets/layered.js +66 -29
- package/dist/presets/layered.js.map +1 -1
- package/dist/presets/recommended.d.ts +81 -10
- package/dist/presets/recommended.d.ts.map +1 -1
- package/dist/presets/recommended.js +25 -23
- package/dist/presets/recommended.js.map +1 -1
- package/dist/presets/shared.d.ts +267 -2
- package/dist/presets/shared.d.ts.map +1 -1
- package/dist/presets/shared.js +367 -4
- package/dist/presets/shared.js.map +1 -1
- package/dist/rules/code-quality.d.ts.map +1 -1
- package/dist/rules/code-quality.js +15 -6
- package/dist/rules/code-quality.js.map +1 -1
- package/dist/rules/hygiene.d.ts +1 -1
- package/dist/rules/hygiene.js +1 -1
- package/dist/rules/metrics-function.d.ts +2 -1
- package/dist/rules/metrics-function.d.ts.map +1 -1
- package/dist/rules/metrics-function.js +63 -39
- package/dist/rules/metrics-function.js.map +1 -1
- package/dist/rules/metrics.d.ts +2 -1
- package/dist/rules/metrics.d.ts.map +1 -1
- package/dist/rules/metrics.js +80 -47
- package/dist/rules/metrics.js.map +1 -1
- package/dist/smells/clusters.d.ts +78 -0
- package/dist/smells/clusters.d.ts.map +1 -0
- package/dist/smells/clusters.js +124 -0
- package/dist/smells/clusters.js.map +1 -0
- package/dist/smells/duplicate-bodies.d.ts +92 -5
- package/dist/smells/duplicate-bodies.d.ts.map +1 -1
- package/dist/smells/duplicate-bodies.js +203 -73
- package/dist/smells/duplicate-bodies.js.map +1 -1
- package/dist/smells/duplicate-report.d.ts +90 -0
- package/dist/smells/duplicate-report.d.ts.map +1 -0
- package/dist/smells/duplicate-report.js +344 -0
- package/dist/smells/duplicate-report.js.map +1 -0
- package/dist/smells/fingerprint.d.ts +20 -1
- package/dist/smells/fingerprint.d.ts.map +1 -1
- package/dist/smells/fingerprint.js +27 -3
- package/dist/smells/fingerprint.js.map +1 -1
- package/dist/smells/inconsistent-siblings.d.ts +128 -7
- package/dist/smells/inconsistent-siblings.d.ts.map +1 -1
- package/dist/smells/inconsistent-siblings.js +288 -86
- package/dist/smells/inconsistent-siblings.js.map +1 -1
- package/dist/smells/sibling-files.d.ts +47 -0
- package/dist/smells/sibling-files.d.ts.map +1 -0
- package/dist/smells/sibling-files.js +104 -0
- package/dist/smells/sibling-files.js.map +1 -0
- package/dist/smells/similar-pairs.d.ts +28 -0
- package/dist/smells/similar-pairs.d.ts.map +1 -0
- package/dist/smells/similar-pairs.js +134 -0
- package/dist/smells/similar-pairs.js.map +1 -0
- package/dist/smells/smell-builder.d.ts +57 -12
- package/dist/smells/smell-builder.d.ts.map +1 -1
- package/dist/smells/smell-builder.js +112 -14
- package/dist/smells/smell-builder.js.map +1 -1
- package/dist/smells/variation.d.ts +47 -0
- package/dist/smells/variation.d.ts.map +1 -0
- package/dist/smells/variation.js +90 -0
- package/dist/smells/variation.js.map +1 -0
- package/dist/tsconfig/index.d.ts +19 -0
- package/dist/tsconfig/index.d.ts.map +1 -0
- package/dist/tsconfig/index.js +20 -0
- package/dist/tsconfig/index.js.map +1 -0
- package/dist/tsconfig/tsconfig-builder.d.ts +42 -9
- package/dist/tsconfig/tsconfig-builder.d.ts.map +1 -1
- package/dist/tsconfig/tsconfig-builder.js +65 -16
- package/dist/tsconfig/tsconfig-builder.js.map +1 -1
- package/package.json +4 -2
- package/dist/core/module-dependencies.d.ts +0 -28
- package/dist/core/module-dependencies.d.ts.map +0 -1
- package/dist/core/module-dependencies.js +0 -35
- package/dist/core/module-dependencies.js.map +0 -1
- package/dist/helpers/within.d.ts.map +0 -1
- package/dist/helpers/within.js.map +0 -1
|
@@ -1,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
|
/**
|
|
@@ -45,17 +76,28 @@ export class FunctionRuleBuilder extends RuleBuilder {
|
|
|
45
76
|
* After `.should()`: assert matched functions have names matching the pattern.
|
|
46
77
|
*/
|
|
47
78
|
haveNameMatching(pattern) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return this.addCondition(fnConditionHaveNameMatching(regex));
|
|
51
|
-
}
|
|
52
|
-
return this.addPredicate(identityHaveNameMatching(pattern));
|
|
79
|
+
const regex = typeof pattern === 'string' ? new RegExp(pattern) : pattern;
|
|
80
|
+
return this.dualUse(fnConditionHaveNameMatching(regex), identityHaveNameMatching(pattern));
|
|
53
81
|
}
|
|
54
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Narrows the selection to functions that have a name starting with `prefix`.
|
|
84
|
+
*
|
|
85
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
86
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
87
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
88
|
+
* rule pass having asserted nothing.
|
|
89
|
+
*/
|
|
55
90
|
haveNameStartingWith(prefix) {
|
|
56
91
|
return this.addPredicate(identityHaveNameStartingWith(prefix));
|
|
57
92
|
}
|
|
58
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Narrows the selection to functions that have a name ending with `suffix`.
|
|
95
|
+
*
|
|
96
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
97
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
98
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
99
|
+
* rule pass having asserted nothing.
|
|
100
|
+
*/
|
|
59
101
|
haveNameEndingWith(suffix) {
|
|
60
102
|
return this.addPredicate(identityHaveNameEndingWith(suffix));
|
|
61
103
|
}
|
|
@@ -64,94 +106,190 @@ export class FunctionRuleBuilder extends RuleBuilder {
|
|
|
64
106
|
* After `.should()`: assert functions reside in a file matching the glob.
|
|
65
107
|
*/
|
|
66
108
|
resideInFile(glob) {
|
|
67
|
-
|
|
68
|
-
return this.addCondition(fnConditionResideInFile(glob));
|
|
69
|
-
}
|
|
70
|
-
return this.addPredicate(identityResideInFile(glob));
|
|
109
|
+
return this.dualUse(fnConditionResideInFile(glob), identityResideInFile(glob));
|
|
71
110
|
}
|
|
72
111
|
/**
|
|
73
112
|
* After `.that()`: filter functions in a folder matching the glob.
|
|
74
113
|
* After `.should()`: assert functions reside in a folder matching the glob.
|
|
75
114
|
*/
|
|
76
115
|
resideInFolder(glob) {
|
|
77
|
-
|
|
78
|
-
return this.addCondition(fnConditionResideInFolder(glob));
|
|
79
|
-
}
|
|
80
|
-
return this.addPredicate(identityResideInFolder(glob));
|
|
116
|
+
return this.dualUse(fnConditionResideInFolder(glob), identityResideInFolder(glob));
|
|
81
117
|
}
|
|
82
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* Narrows the selection to functions that are exported.
|
|
120
|
+
*
|
|
121
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
122
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
123
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
124
|
+
* rule pass having asserted nothing.
|
|
125
|
+
*/
|
|
83
126
|
areExported() {
|
|
84
127
|
return this.addPredicate(identityAreExported());
|
|
85
128
|
}
|
|
86
|
-
/**
|
|
129
|
+
/**
|
|
130
|
+
* Narrows the selection to functions that are not exported.
|
|
131
|
+
*
|
|
132
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
133
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
134
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
135
|
+
* rule pass having asserted nothing.
|
|
136
|
+
*/
|
|
87
137
|
areNotExported() {
|
|
88
138
|
return this.addPredicate(identityAreNotExported());
|
|
89
139
|
}
|
|
90
140
|
// --- Visibility predicates (plan 0032) ---
|
|
91
141
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
142
|
+
* Narrows the selection to functions that are public.
|
|
143
|
+
*
|
|
144
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
145
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
146
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
147
|
+
* rule pass having asserted nothing.
|
|
94
148
|
*/
|
|
95
149
|
arePublic() {
|
|
96
150
|
return this.addPredicate(fnArePublic());
|
|
97
151
|
}
|
|
98
|
-
/**
|
|
152
|
+
/**
|
|
153
|
+
* Narrows the selection to functions that are protected.
|
|
154
|
+
*
|
|
155
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
156
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
157
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
158
|
+
* rule pass having asserted nothing.
|
|
159
|
+
*/
|
|
99
160
|
areProtected() {
|
|
100
161
|
return this.addPredicate(fnAreProtected());
|
|
101
162
|
}
|
|
102
|
-
/**
|
|
163
|
+
/**
|
|
164
|
+
* Narrows the selection to functions that are private.
|
|
165
|
+
*
|
|
166
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
167
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
168
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
169
|
+
* rule pass having asserted nothing.
|
|
170
|
+
*/
|
|
103
171
|
arePrivate() {
|
|
104
172
|
return this.addPredicate(fnArePrivate());
|
|
105
173
|
}
|
|
106
174
|
// --- Function-specific predicates ---
|
|
107
|
-
/**
|
|
175
|
+
/**
|
|
176
|
+
* Narrows the selection to functions that are async.
|
|
177
|
+
*
|
|
178
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
179
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
180
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
181
|
+
* rule pass having asserted nothing.
|
|
182
|
+
*/
|
|
108
183
|
areAsync() {
|
|
109
184
|
return this.addPredicate(fnAreAsync());
|
|
110
185
|
}
|
|
111
|
-
/**
|
|
186
|
+
/**
|
|
187
|
+
* Narrows the selection to functions that are not async.
|
|
188
|
+
*
|
|
189
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
190
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
191
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
192
|
+
* rule pass having asserted nothing.
|
|
193
|
+
*/
|
|
112
194
|
areNotAsync() {
|
|
113
195
|
return this.addPredicate(fnAreNotAsync());
|
|
114
196
|
}
|
|
115
|
-
/**
|
|
197
|
+
/**
|
|
198
|
+
* Narrows the selection to functions that have exactly `n` parameters.
|
|
199
|
+
*
|
|
200
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
201
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
202
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
203
|
+
* rule pass having asserted nothing.
|
|
204
|
+
*/
|
|
116
205
|
haveParameterCount(n) {
|
|
117
206
|
return this.addPredicate(fnHaveParameterCount(n));
|
|
118
207
|
}
|
|
119
|
-
/**
|
|
208
|
+
/**
|
|
209
|
+
* Narrows the selection to functions that have more than `n` parameters.
|
|
210
|
+
*
|
|
211
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
212
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
213
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
214
|
+
* rule pass having asserted nothing.
|
|
215
|
+
*/
|
|
120
216
|
haveParameterCountGreaterThan(n) {
|
|
121
217
|
return this.addPredicate(fnHaveParameterCountGreaterThan(n));
|
|
122
218
|
}
|
|
123
|
-
/**
|
|
219
|
+
/**
|
|
220
|
+
* Narrows the selection to functions that have fewer than `n` parameters.
|
|
221
|
+
*
|
|
222
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
223
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
224
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
225
|
+
* rule pass having asserted nothing.
|
|
226
|
+
*/
|
|
124
227
|
haveParameterCountLessThan(n) {
|
|
125
228
|
return this.addPredicate(fnHaveParameterCountLessThan(n));
|
|
126
229
|
}
|
|
127
|
-
/**
|
|
230
|
+
/**
|
|
231
|
+
* Narrows the selection to functions that have a parameter named `name`.
|
|
232
|
+
*
|
|
233
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
234
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
235
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
236
|
+
* rule pass having asserted nothing.
|
|
237
|
+
*/
|
|
128
238
|
haveParameterNamed(name) {
|
|
129
239
|
return this.addPredicate(fnHaveParameterNamed(name));
|
|
130
240
|
}
|
|
131
241
|
/**
|
|
132
|
-
*
|
|
133
|
-
*
|
|
242
|
+
* Narrows the selection to functions that have a return type matching `pattern`.
|
|
243
|
+
*
|
|
244
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
245
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
246
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
247
|
+
* rule pass having asserted nothing.
|
|
134
248
|
*/
|
|
135
249
|
haveReturnType(pattern) {
|
|
136
250
|
return this.addPredicate(fnHaveReturnType(pattern));
|
|
137
251
|
}
|
|
138
|
-
/**
|
|
252
|
+
/**
|
|
253
|
+
* Narrows the selection to functions that have a rest parameter.
|
|
254
|
+
*
|
|
255
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
256
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
257
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
258
|
+
* rule pass having asserted nothing.
|
|
259
|
+
*/
|
|
139
260
|
haveRestParameter() {
|
|
140
261
|
return this.addPredicate(fnHaveRestParameter());
|
|
141
262
|
}
|
|
142
|
-
/**
|
|
263
|
+
/**
|
|
264
|
+
* Narrows the selection to functions that have an optional parameter.
|
|
265
|
+
*
|
|
266
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
267
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
268
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
269
|
+
* rule pass having asserted nothing.
|
|
270
|
+
*/
|
|
143
271
|
haveOptionalParameter() {
|
|
144
272
|
return this.addPredicate(fnHaveOptionalParameter());
|
|
145
273
|
}
|
|
146
274
|
/**
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
275
|
+
* Narrows the selection to functions that have parameter `index` of a type matching `matcher`.
|
|
276
|
+
*
|
|
277
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
278
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
279
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
280
|
+
* rule pass having asserted nothing.
|
|
150
281
|
*/
|
|
151
282
|
haveParameterOfType(index, matcher) {
|
|
152
283
|
return this.addPredicate(fnHaveParameterOfType(index, matcher));
|
|
153
284
|
}
|
|
154
|
-
/**
|
|
285
|
+
/**
|
|
286
|
+
* Narrows the selection to functions that have a parameter name matching `pattern`.
|
|
287
|
+
*
|
|
288
|
+
* **Predicate only**, unlike the dual-use methods on this builder: it never
|
|
289
|
+
* becomes an assertion. Written after `.should()` it still filters, and the
|
|
290
|
+
* assertion gate reports it as a misplaced predicate rather than letting the
|
|
291
|
+
* rule pass having asserted nothing.
|
|
292
|
+
*/
|
|
155
293
|
haveParameterNameMatching(pattern) {
|
|
156
294
|
return this.addPredicate(fnHaveParameterNameMatching(pattern));
|
|
157
295
|
}
|
|
@@ -281,7 +419,7 @@ export class FunctionRuleBuilder extends RuleBuilder {
|
|
|
281
419
|
* .check()
|
|
282
420
|
* ```
|
|
283
421
|
*/
|
|
284
|
-
export function functions(p) {
|
|
285
|
-
return new FunctionRuleBuilder(p);
|
|
422
|
+
export function functions(p, options) {
|
|
423
|
+
return new FunctionRuleBuilder(p, options);
|
|
286
424
|
}
|
|
287
425
|
//# 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.
|