@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../../src/graphql/schema-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../../src/graphql/schema-loader.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;QAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KACrB,CAAC,CAAA;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,IAAI,qBAAqB,GAAG,SAAS,GAAG,IAAI,CAAA;IACxD,eAAe,IAAI,qBAAqB,GAAG,SAAS,GAAG,IAAI,CAAA;IAC3D,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAA;CAChC;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAA;CAChD;AAgFD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAyB9E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAGhF;AAgDD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAa5C;AAED;;;;;;;GAOG;AAEH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,cAAc,GAAG,IAAI,CAE3E;AAED;;;GAGG;AAEH,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD"}
|
|
@@ -1,26 +1,70 @@
|
|
|
1
|
+
import { ArchConfigError } from '@nielspeter/eess';
|
|
1
2
|
import { createRequire } from 'node:module';
|
|
2
3
|
import fs from 'node:fs';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import picomatch from 'picomatch';
|
|
5
|
-
// Cached reference to the graphql package
|
|
6
|
+
// Cached reference to the graphql package. Module-level state, swappable via
|
|
7
|
+
// setGraphQLLoaderForTests() below — safe only because Vitest gives each test
|
|
8
|
+
// FILE its own instance of this module (vitest.config.ts pins `isolate: true`
|
|
9
|
+
// and says why: bug 0080). A worker that reused this module across files
|
|
10
|
+
// would let one file's swapped loader leak into another's.
|
|
6
11
|
let cachedGraphQL;
|
|
7
12
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
13
|
+
* The actual loading step, indirected through a swappable reference (see
|
|
14
|
+
* {@link setGraphQLLoaderForTests}). Uses createRequire for synchronous
|
|
15
|
+
* loading since schema loading is synchronous.
|
|
16
|
+
*/
|
|
17
|
+
function defaultLoadGraphQL() {
|
|
18
|
+
const esmRequire = createRequire(import.meta.url);
|
|
19
|
+
// `createRequire` returns `any` for an optional peer dependency resolved at
|
|
20
|
+
// runtime, so there is no typed path here — the JS-interop boundary ADR-005
|
|
21
|
+
// allows. The `catch` below is the real guard: a missing or malformed
|
|
22
|
+
// `graphql` throws with an install instruction rather than failing later on a
|
|
23
|
+
// property access (bug 0049).
|
|
24
|
+
// Both ids on ONE directive: the two rule files declare this check under
|
|
25
|
+
// different names, and the grammar takes a comma-separated list. Stacking two
|
|
26
|
+
// single-line directives does not work — each covers exactly the next line, so
|
|
27
|
+
// the first would waive the second's comment rather than the cast.
|
|
28
|
+
// eess-exclude eess/adr005-no-type-assertions, adr005/no-as-cast-module: optional peer dep, no typed path
|
|
29
|
+
return esmRequire('graphql');
|
|
30
|
+
}
|
|
31
|
+
let loadGraphQL = defaultLoadGraphQL;
|
|
32
|
+
/**
|
|
33
|
+
* Load the graphql package synchronously. Throws a clear error describing why
|
|
34
|
+
* the package could not be used.
|
|
11
35
|
*/
|
|
12
36
|
function requireGraphQL() {
|
|
13
37
|
if (cachedGraphQL)
|
|
14
38
|
return cachedGraphQL;
|
|
15
39
|
try {
|
|
16
|
-
|
|
17
|
-
// eess-exclude eess/adr005-no-type-assertions: runtime require() of the optional 'graphql' peer dependency; its module shape is not statically known at this JS-interop boundary
|
|
18
|
-
cachedGraphQL = esmRequire('graphql');
|
|
40
|
+
cachedGraphQL = loadGraphQL();
|
|
19
41
|
return cachedGraphQL;
|
|
20
42
|
}
|
|
21
|
-
catch (
|
|
22
|
-
|
|
23
|
-
|
|
43
|
+
catch (cause) {
|
|
44
|
+
// The install instruction only answers "the `graphql` package itself is
|
|
45
|
+
// missing". Node's own MODULE_NOT_FOUND names the specifier it failed to
|
|
46
|
+
// resolve: requiring the missing top-level package throws
|
|
47
|
+
// "Cannot find module 'graphql'", while requiring an installed-but-corrupt
|
|
48
|
+
// package (one of ITS internal files missing) throws naming that internal
|
|
49
|
+
// file instead — same code, different specifier. Checking the message for
|
|
50
|
+
// the exact top-level specifier (verified against Node's actual output,
|
|
51
|
+
// see the fixture in tests/graphql/schema-loader-require-errors.test.ts)
|
|
52
|
+
// is what keeps a corrupt install from being told to run an install that
|
|
53
|
+
// cannot fix it. Every other cause — that corrupt-internal-file case, a
|
|
54
|
+
// version mismatch, a throw from `graphql`'s own module initialisation —
|
|
55
|
+
// used to be reported as "not installed" too, discarding the one line
|
|
56
|
+
// that would have told the reader what actually happened. Found by
|
|
57
|
+
// running `preset/recommended/no-silent-catch` over our own `src/` for
|
|
58
|
+
// the first time.
|
|
59
|
+
const notInstalled = cause instanceof Error &&
|
|
60
|
+
'code' in cause &&
|
|
61
|
+
cause.code === 'MODULE_NOT_FOUND' &&
|
|
62
|
+
/Cannot find module 'graphql'/.test(cause.message);
|
|
63
|
+
if (notInstalled) {
|
|
64
|
+
throw new ArchConfigError('requireGraphQL', '[eess-ts/graphql] The "graphql" package is required but not installed.\n' +
|
|
65
|
+
'Install it with: npm install graphql', { cause });
|
|
66
|
+
}
|
|
67
|
+
throw new ArchConfigError('requireGraphQL', `[eess-ts/graphql] The "graphql" package is installed but could not be loaded: ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
|
|
24
68
|
}
|
|
25
69
|
}
|
|
26
70
|
/**
|
|
@@ -37,7 +81,7 @@ export function loadSchemaFromGlob(rootDir, glob) {
|
|
|
37
81
|
// Find all .graphql files matching the glob
|
|
38
82
|
const graphqlFiles = findGraphqlFiles(resolvedRoot, matcher);
|
|
39
83
|
if (graphqlFiles.length === 0) {
|
|
40
|
-
throw new
|
|
84
|
+
throw new ArchConfigError('loadSchemaFromGlob', `[eess-ts/graphql] No .graphql files found matching "${glob}" in ${resolvedRoot}`);
|
|
41
85
|
}
|
|
42
86
|
// Read all files and collect SDL
|
|
43
87
|
const documents = [];
|
|
@@ -106,8 +150,34 @@ export function isGraphQLAvailable() {
|
|
|
106
150
|
return true;
|
|
107
151
|
}
|
|
108
152
|
catch (err) {
|
|
109
|
-
|
|
153
|
+
// `false` is the honest answer for BOTH "not installed" and "installed but
|
|
154
|
+
// broken". This is an availability PROBE — making it rethrow turned the
|
|
155
|
+
// barrel export's runtime guard into a crash. The distinction between the
|
|
156
|
+
// two causes is preserved and reported by `loadSchemaFromSDL`'s throw,
|
|
157
|
+
// which `schema-loader-require-errors.test.ts` pins.
|
|
158
|
+
void err;
|
|
110
159
|
return false;
|
|
111
160
|
}
|
|
112
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Replace how `graphql` is loaded. **Tests only** —
|
|
164
|
+
* [ts-archunit bug 0080](https://github.com/nielspeter/ts-archunit/blob/main/bugs/fixed/0080-a-node-module-mock-does-not-isolate-under-full-suite-concurrency.md):
|
|
165
|
+
* `vi.doMock('node:module', ...)` intercepts a Node builtin, which is not
|
|
166
|
+
* reliably isolated per-file under Vitest's worker-reuse defaults and failed
|
|
167
|
+
* intermittently under full-suite load. This seam replaces only this
|
|
168
|
+
* module's own loading step — nothing shared with any other file to race on.
|
|
169
|
+
*/
|
|
170
|
+
// eess-exclude eess/no-unused-exports: consumed by the test suite; the build tsconfig this gate reads excludes tests, so `src` is the only usage it can see
|
|
171
|
+
export function setGraphQLLoaderForTests(loader) {
|
|
172
|
+
loadGraphQL = loader;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Restore the real loader and clear the cached package. **Tests only** — see
|
|
176
|
+
* {@link setGraphQLLoaderForTests}.
|
|
177
|
+
*/
|
|
178
|
+
// eess-exclude eess/no-unused-exports: consumed by the test suite; the build tsconfig this gate reads excludes tests, so `src` is the only usage it can see
|
|
179
|
+
export function resetGraphQLLoaderForTests() {
|
|
180
|
+
loadGraphQL = defaultLoadGraphQL;
|
|
181
|
+
cachedGraphQL = undefined;
|
|
182
|
+
}
|
|
113
183
|
//# sourceMappingURL=schema-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-loader.js","sourceRoot":"","sources":["../../src/graphql/schema-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,SAAS,MAAM,WAAW,CAAA;AAmEjC,
|
|
1
|
+
{"version":3,"file":"schema-loader.js","sourceRoot":"","sources":["../../src/graphql/schema-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-predicates.d.ts","sourceRoot":"","sources":["../../src/graphql/schema-predicates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAEjF;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,8BAA8B;IAC9B,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAA;IAC1C,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACjC,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;
|
|
1
|
+
{"version":3,"file":"schema-predicates.d.ts","sourceRoot":"","sources":["../../src/graphql/schema-predicates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAEjF;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,8BAA8B;IAC9B,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAA;IAC1C,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACjC,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AAkBD;;GAEG;AACH,wBAAgB,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,CAElD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAAC,aAAa,CAAC,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,CAgB7E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,CAkBhF"}
|
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Filter to
|
|
2
|
+
* Filter to the FIELDS of one root type.
|
|
3
|
+
*
|
|
4
|
+
* `element.field !== undefined` is what makes this a field predicate rather
|
|
5
|
+
* than a type one: `getElements()` emits a type-level element per SDL type AND
|
|
6
|
+
* a field-level element per field, so without it `queries()` would also select
|
|
7
|
+
* the `Query` type itself — one extra subject that no field condition can say
|
|
8
|
+
* anything true about.
|
|
3
9
|
*/
|
|
4
|
-
|
|
10
|
+
function rootTypeFields(typeName, description) {
|
|
5
11
|
return {
|
|
6
|
-
description
|
|
7
|
-
test(element)
|
|
8
|
-
return element.typeName === 'Query' && element.field !== undefined;
|
|
9
|
-
},
|
|
12
|
+
description,
|
|
13
|
+
test: (element) => element.typeName === typeName && element.field !== undefined,
|
|
10
14
|
};
|
|
11
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Filter to only Query root type fields.
|
|
18
|
+
*/
|
|
19
|
+
export function queries() {
|
|
20
|
+
return rootTypeFields('Query', 'are queries');
|
|
21
|
+
}
|
|
12
22
|
/**
|
|
13
23
|
* Filter to only Mutation root type fields.
|
|
14
24
|
*/
|
|
15
25
|
export function mutations() {
|
|
16
|
-
return
|
|
17
|
-
description: 'are mutations',
|
|
18
|
-
test(element) {
|
|
19
|
-
return element.typeName === 'Mutation' && element.field !== undefined;
|
|
20
|
-
},
|
|
21
|
-
};
|
|
26
|
+
return rootTypeFields('Mutation', 'are mutations');
|
|
22
27
|
}
|
|
23
28
|
/**
|
|
24
29
|
* Filter to object types whose name matches the given pattern.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-predicates.js","sourceRoot":"","sources":["../../src/graphql/schema-predicates.ts"],"names":[],"mappings":"AAqBA
|
|
1
|
+
{"version":3,"file":"schema-predicates.js","sourceRoot":"","sources":["../../src/graphql/schema-predicates.ts"],"names":[],"mappings":"AAqBA;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAE,WAAmB;IAC3D,OAAO;QACL,WAAW;QACX,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;KAChF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,cAAc,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAwB;IACjD,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC3E,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,eAAe,IAAI,EAAE;YAClC,IAAI,CAAC,OAAsB;gBACzB,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;YACpE,CAAC;SACF,CAAA;IACH,CAAC;IACD,OAAO;QACL,WAAW,EAAE,eAAe,IAAI,EAAE;QAClC,IAAI,CAAC,OAAsB;YACzB,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACtE,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,QAAyB;IACpD,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC9E,OAAO;QACL,WAAW,EAAE,kBAAkB,IAAI,EAAE;QACrC,IAAI,CAAC,OAAsB;YACzB,IAAI,CAAC,OAAO,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAA;YAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC7C,2DAA2D;YAC3D,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACjD,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAA;YAC5B,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAC9B,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAA;YACzC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,SAAS,KAAK,QAAQ,CAAA;YAC/B,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACjC,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ArchViolation } from '../core/violation.js';
|
|
2
|
-
import { TerminalBuilder } from '@nielspeter/eess';
|
|
3
1
|
import type { LoadedSchema } from './schema-loader.js';
|
|
2
|
+
import type { SchemaElement } from './schema-predicates.js';
|
|
3
|
+
import { GraphqlRuleBuilder } from './graphql-rule-builder.js';
|
|
4
4
|
/**
|
|
5
5
|
* Fluent rule builder for GraphQL schema architecture rules.
|
|
6
6
|
*
|
|
@@ -16,10 +16,8 @@ import type { LoadedSchema } from './schema-loader.js';
|
|
|
16
16
|
* .check()
|
|
17
17
|
* ```
|
|
18
18
|
*/
|
|
19
|
-
export declare class SchemaRuleBuilder extends
|
|
19
|
+
export declare class SchemaRuleBuilder extends GraphqlRuleBuilder<SchemaElement> {
|
|
20
20
|
private readonly loaded;
|
|
21
|
-
private readonly _predicates;
|
|
22
|
-
private readonly _conditions;
|
|
23
21
|
constructor(loaded: LoadedSchema);
|
|
24
22
|
/**
|
|
25
23
|
* Filter to only Query root type fields.
|
|
@@ -37,22 +35,6 @@ export declare class SchemaRuleBuilder extends TerminalBuilder {
|
|
|
37
35
|
* Filter to fields returning a list of the given type.
|
|
38
36
|
*/
|
|
39
37
|
returnListOf(typeName: string | RegExp): this;
|
|
40
|
-
/**
|
|
41
|
-
* Begin the predicate phase. Purely a readability marker.
|
|
42
|
-
*/
|
|
43
|
-
that(): this;
|
|
44
|
-
/**
|
|
45
|
-
* Add another predicate (AND).
|
|
46
|
-
*/
|
|
47
|
-
and(): this;
|
|
48
|
-
/**
|
|
49
|
-
* Begin the condition phase.
|
|
50
|
-
*/
|
|
51
|
-
should(): this;
|
|
52
|
-
/**
|
|
53
|
-
* Add another condition (AND).
|
|
54
|
-
*/
|
|
55
|
-
andShould(): this;
|
|
56
38
|
/**
|
|
57
39
|
* Assert that types have all listed fields.
|
|
58
40
|
*/
|
|
@@ -67,8 +49,17 @@ export declare class SchemaRuleBuilder extends TerminalBuilder {
|
|
|
67
49
|
* @param resolverFileTexts - Map of file paths to source text
|
|
68
50
|
*/
|
|
69
51
|
haveMatchingResolver(resolverFileTexts: ReadonlyMap<string, string>): this;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
52
|
+
/**
|
|
53
|
+
* This family counts schema types — the SDL types it selected.
|
|
54
|
+
*
|
|
55
|
+
* Plan 0099: `CollectResult.examined` is unit-typed per family (ADR-009 part
|
|
56
|
+
* 1), and the zero-examined message prints the noun. Inheriting the base
|
|
57
|
+
* `'subjects'` is a category error in a sentence whose whole job is naming what
|
|
58
|
+
* was and was not looked at.
|
|
59
|
+
*/
|
|
60
|
+
protected examinedUnitNoun(): string;
|
|
61
|
+
protected descriptionSubject(): string;
|
|
62
|
+
protected conditionExamples(): string;
|
|
63
|
+
protected getElements(): SchemaElement[];
|
|
73
64
|
}
|
|
74
65
|
//# sourceMappingURL=schema-rule-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-rule-builder.d.ts","sourceRoot":"","sources":["../../src/graphql/schema-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"schema-rule-builder.d.ts","sourceRoot":"","sources":["../../src/graphql/schema-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA0C,MAAM,oBAAoB,CAAA;AAC9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAY3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAe9D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,aAAa,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAMjD;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM1C;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ7C;;OAEG;IACH,UAAU,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAMpC;;OAEG;IACH,UAAU,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAMpC;;;;OAIG;IACH,oBAAoB,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ1E;;;;;;;OAOG;cACgB,gBAAgB,IAAI,MAAM;cAI1B,kBAAkB,IAAI,MAAM;cAI5B,iBAAiB,IAAI,MAAM;cAI3B,WAAW,IAAI,aAAa,EAAE;CAoClD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TerminalBuilder } from '@nielspeter/eess';
|
|
2
1
|
import { queries as queriesPredicate, mutations as mutationsPredicate, typesNamed as typesNamedPredicate, returnListOf as returnListOfPredicate, } from './schema-predicates.js';
|
|
3
2
|
import { haveFields as haveFieldsCondition, acceptArgs as acceptArgsCondition, haveMatchingResolver as haveMatchingResolverCondition, } from './schema-conditions.js';
|
|
3
|
+
import { GraphqlRuleBuilder } from './graphql-rule-builder.js';
|
|
4
4
|
/**
|
|
5
5
|
* Structural type guard: check if a GraphQL type has `getFields()`.
|
|
6
6
|
* Only GraphQLObjectType, GraphQLInterfaceType, and GraphQLInputObjectType have getFields.
|
|
@@ -30,10 +30,8 @@ function isObjectType(type) {
|
|
|
30
30
|
* .check()
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
export class SchemaRuleBuilder extends
|
|
33
|
+
export class SchemaRuleBuilder extends GraphqlRuleBuilder {
|
|
34
34
|
loaded;
|
|
35
|
-
_predicates = [];
|
|
36
|
-
_conditions = [];
|
|
37
35
|
constructor(loaded) {
|
|
38
36
|
super();
|
|
39
37
|
this.loaded = loaded;
|
|
@@ -43,69 +41,50 @@ export class SchemaRuleBuilder extends TerminalBuilder {
|
|
|
43
41
|
* Filter to only Query root type fields.
|
|
44
42
|
*/
|
|
45
43
|
queries() {
|
|
46
|
-
this.
|
|
47
|
-
|
|
44
|
+
const next = this.copy();
|
|
45
|
+
next._predicates.push(queriesPredicate());
|
|
46
|
+
return next;
|
|
48
47
|
}
|
|
49
48
|
/**
|
|
50
49
|
* Filter to only Mutation root type fields.
|
|
51
50
|
*/
|
|
52
51
|
mutations() {
|
|
53
|
-
this.
|
|
54
|
-
|
|
52
|
+
const next = this.copy();
|
|
53
|
+
next._predicates.push(mutationsPredicate());
|
|
54
|
+
return next;
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Filter to object types matching the given name pattern.
|
|
58
58
|
*/
|
|
59
59
|
typesNamed(pattern) {
|
|
60
|
-
this.
|
|
61
|
-
|
|
60
|
+
const next = this.copy();
|
|
61
|
+
next._predicates.push(typesNamedPredicate(pattern));
|
|
62
|
+
return next;
|
|
62
63
|
}
|
|
63
64
|
/**
|
|
64
65
|
* Filter to fields returning a list of the given type.
|
|
65
66
|
*/
|
|
66
67
|
returnListOf(typeName) {
|
|
67
|
-
this.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// --- Chain methods ---
|
|
71
|
-
/**
|
|
72
|
-
* Begin the predicate phase. Purely a readability marker.
|
|
73
|
-
*/
|
|
74
|
-
that() {
|
|
75
|
-
return this;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Add another predicate (AND).
|
|
79
|
-
*/
|
|
80
|
-
and() {
|
|
81
|
-
return this;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Begin the condition phase.
|
|
85
|
-
*/
|
|
86
|
-
should() {
|
|
87
|
-
return this;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Add another condition (AND).
|
|
91
|
-
*/
|
|
92
|
-
andShould() {
|
|
93
|
-
return this;
|
|
68
|
+
const next = this.copy();
|
|
69
|
+
next._predicates.push(returnListOfPredicate(typeName));
|
|
70
|
+
return next;
|
|
94
71
|
}
|
|
95
72
|
// --- Condition methods ---
|
|
96
73
|
/**
|
|
97
74
|
* Assert that types have all listed fields.
|
|
98
75
|
*/
|
|
99
76
|
haveFields(...names) {
|
|
100
|
-
this.
|
|
101
|
-
|
|
77
|
+
const next = this.copy();
|
|
78
|
+
next._conditions.push(haveFieldsCondition(...names));
|
|
79
|
+
return next;
|
|
102
80
|
}
|
|
103
81
|
/**
|
|
104
82
|
* Assert that fields accept all listed arguments.
|
|
105
83
|
*/
|
|
106
84
|
acceptArgs(...names) {
|
|
107
|
-
this.
|
|
108
|
-
|
|
85
|
+
const next = this.copy();
|
|
86
|
+
next._conditions.push(acceptArgsCondition(...names));
|
|
87
|
+
return next;
|
|
109
88
|
}
|
|
110
89
|
/**
|
|
111
90
|
* Assert that schema fields have matching resolver implementations.
|
|
@@ -113,34 +92,27 @@ export class SchemaRuleBuilder extends TerminalBuilder {
|
|
|
113
92
|
* @param resolverFileTexts - Map of file paths to source text
|
|
114
93
|
*/
|
|
115
94
|
haveMatchingResolver(resolverFileTexts) {
|
|
116
|
-
this.
|
|
117
|
-
|
|
95
|
+
const next = this.copy();
|
|
96
|
+
next._conditions.push(haveMatchingResolverCondition(resolverFileTexts));
|
|
97
|
+
return next;
|
|
118
98
|
}
|
|
119
99
|
// --- Evaluation ---
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
suggestion: this._metadata?.suggestion,
|
|
137
|
-
docs: this._metadata?.docs,
|
|
138
|
-
};
|
|
139
|
-
const violations = [];
|
|
140
|
-
for (const condition of this._conditions) {
|
|
141
|
-
violations.push(...condition.evaluate(filtered, context));
|
|
142
|
-
}
|
|
143
|
-
return violations;
|
|
100
|
+
/**
|
|
101
|
+
* This family counts schema types — the SDL types it selected.
|
|
102
|
+
*
|
|
103
|
+
* Plan 0099: `CollectResult.examined` is unit-typed per family (ADR-009 part
|
|
104
|
+
* 1), and the zero-examined message prints the noun. Inheriting the base
|
|
105
|
+
* `'subjects'` is a category error in a sentence whose whole job is naming what
|
|
106
|
+
* was and was not looked at.
|
|
107
|
+
*/
|
|
108
|
+
examinedUnitNoun() {
|
|
109
|
+
return 'schema types';
|
|
110
|
+
}
|
|
111
|
+
descriptionSubject() {
|
|
112
|
+
return 'schema';
|
|
113
|
+
}
|
|
114
|
+
conditionExamples() {
|
|
115
|
+
return 'haveFields(...) or acceptArgs(...)';
|
|
144
116
|
}
|
|
145
117
|
getElements() {
|
|
146
118
|
const elements = [];
|
|
@@ -174,15 +146,5 @@ export class SchemaRuleBuilder extends TerminalBuilder {
|
|
|
174
146
|
}
|
|
175
147
|
return elements;
|
|
176
148
|
}
|
|
177
|
-
buildRuleDescription() {
|
|
178
|
-
const predicateDesc = this._predicates.map((p) => p.description).join(' and ');
|
|
179
|
-
const conditionDesc = this._conditions.map((c) => c.description).join(' and ');
|
|
180
|
-
const parts = ['schema'];
|
|
181
|
-
if (predicateDesc)
|
|
182
|
-
parts.push(`that ${predicateDesc}`);
|
|
183
|
-
if (conditionDesc)
|
|
184
|
-
parts.push(`should ${conditionDesc}`);
|
|
185
|
-
return parts.join(' ');
|
|
186
|
-
}
|
|
187
149
|
}
|
|
188
150
|
//# sourceMappingURL=schema-rule-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-rule-builder.js","sourceRoot":"","sources":["../../src/graphql/schema-rule-builder.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"schema-rule-builder.js","sourceRoot":"","sources":["../../src/graphql/schema-rule-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ArchViolation } from '@nielspeter/eess';
|
|
2
|
+
/**
|
|
3
|
+
* Why a baseline stopped matching — the diagnosis half of `Baseline`.
|
|
4
|
+
*
|
|
5
|
+
* `Baseline` answers "is this finding already accepted?", which is three short
|
|
6
|
+
* methods. Explaining why an accepted set suddenly matches nothing is a
|
|
7
|
+
* different job and five times the code, and keeping both in one class is what
|
|
8
|
+
* pushed it past its own size rule.
|
|
9
|
+
*
|
|
10
|
+
* These take an explicit {@link BaselineFacts} rather than the instance, so each
|
|
11
|
+
* diagnosis is callable — and testable — against a stated set of facts instead
|
|
12
|
+
* of a constructed object.
|
|
13
|
+
*/
|
|
14
|
+
export interface BaselineFacts {
|
|
15
|
+
readonly knownHashes: ReadonlySet<string>;
|
|
16
|
+
readonly knownSubjects: ReadonlyMap<string, string>;
|
|
17
|
+
readonly root: string;
|
|
18
|
+
readonly sourcePath: string | undefined;
|
|
19
|
+
readonly hashVersion: number;
|
|
20
|
+
isKnown(violation: ArchViolation): boolean;
|
|
21
|
+
hasEntry(violation: ArchViolation): boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare function descriptionChangeFinding(ctx: BaselineFacts, violations: ArchViolation[]): ArchViolation | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* A meta-finding for a baseline that is present, non-empty, and matched
|
|
26
|
+
* **nothing** in a run that produced findings it could have matched.
|
|
27
|
+
*
|
|
28
|
+
* Gated on the measurement, not on the version field. An earlier cut fired
|
|
29
|
+
* whenever `hashVersion` was older, which was wrong for most users: v2
|
|
30
|
+
* hashing is byte-identical to v1 for any violation whose fields contain no
|
|
31
|
+
* path, so the majority of existing baselines still match perfectly. Failing
|
|
32
|
+
* those with "its entries match nothing" was both a false red and a false
|
|
33
|
+
* statement — a derived value reported as a fact with nothing disagreeing
|
|
34
|
+
* with it, which is the ADR-009 rule 5 mistake this bug was about.
|
|
35
|
+
*
|
|
36
|
+
* `matched === 0` is the independently-derived signal, and it covers every
|
|
37
|
+
* cause at once: a v1 file, a root that resolved differently here than where
|
|
38
|
+
* the file was written, or a baseline for a different project entirely.
|
|
39
|
+
*
|
|
40
|
+
* Silent when the run produced nothing to match (`matchable === 0`) — an
|
|
41
|
+
* empty run is not evidence about the baseline. Carries `bypassFilters`
|
|
42
|
+
* because the filters are what it is reporting on (ADR-008; plan 0067).
|
|
43
|
+
*/
|
|
44
|
+
export declare function unmatchedBaselineFinding(ctx: BaselineFacts, matched: number, matchable: number): ArchViolation | undefined;
|
|
45
|
+
//# sourceMappingURL=baseline-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseline-diagnostics.d.ts","sourceRoot":"","sources":["../../src/helpers/baseline-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGrD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACzC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAA;IAC1C,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAA;CAC5C;AA0CD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,aAAa,EAAE,GAC1B,aAAa,GAAG,SAAS,CAkC3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,aAAa,GAAG,SAAS,CA6B3B"}
|