@nielspeter/eess-ts 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -34
- package/dist/builders/call-rule-builder.d.ts +66 -26
- package/dist/builders/call-rule-builder.d.ts.map +1 -1
- package/dist/builders/call-rule-builder.js +73 -31
- package/dist/builders/call-rule-builder.js.map +1 -1
- package/dist/builders/class-rule-builder.d.ts +125 -26
- package/dist/builders/class-rule-builder.d.ts.map +1 -1
- package/dist/builders/class-rule-builder.js +134 -30
- package/dist/builders/class-rule-builder.js.map +1 -1
- package/dist/builders/correspondence-builder.d.ts +287 -0
- package/dist/builders/correspondence-builder.d.ts.map +1 -0
- package/dist/builders/correspondence-builder.js +393 -0
- package/dist/builders/correspondence-builder.js.map +1 -0
- package/dist/builders/correspondence-findings.d.ts +104 -0
- package/dist/builders/correspondence-findings.d.ts.map +1 -0
- package/dist/builders/correspondence-findings.js +301 -0
- package/dist/builders/correspondence-findings.js.map +1 -0
- package/dist/builders/cross-layer-builder.d.ts +99 -16
- package/dist/builders/cross-layer-builder.d.ts.map +1 -1
- package/dist/builders/cross-layer-builder.js +181 -35
- package/dist/builders/cross-layer-builder.js.map +1 -1
- package/dist/builders/function-rule-builder.d.ts +144 -25
- package/dist/builders/function-rule-builder.d.ts.map +1 -1
- package/dist/builders/function-rule-builder.js +173 -26
- package/dist/builders/function-rule-builder.js.map +1 -1
- package/dist/builders/jsx-rule-builder.d.ts +70 -14
- package/dist/builders/jsx-rule-builder.d.ts.map +1 -1
- package/dist/builders/jsx-rule-builder.js +73 -14
- package/dist/builders/jsx-rule-builder.js.map +1 -1
- package/dist/builders/module-rule-builder.d.ts +2 -2
- package/dist/builders/module-rule-builder.d.ts.map +1 -1
- package/dist/builders/module-rule-builder.js +12 -3
- package/dist/builders/module-rule-builder.js.map +1 -1
- package/dist/builders/scoped-function-rule-builder.d.ts +11 -0
- package/dist/builders/scoped-function-rule-builder.d.ts.map +1 -1
- package/dist/builders/scoped-function-rule-builder.js +12 -0
- package/dist/builders/scoped-function-rule-builder.js.map +1 -1
- package/dist/builders/slice-discovery-message.d.ts +36 -0
- package/dist/builders/slice-discovery-message.d.ts.map +1 -0
- package/dist/builders/slice-discovery-message.js +181 -0
- package/dist/builders/slice-discovery-message.js.map +1 -0
- package/dist/builders/slice-rule-builder.d.ts +151 -12
- package/dist/builders/slice-rule-builder.d.ts.map +1 -1
- package/dist/builders/slice-rule-builder.js +242 -35
- package/dist/builders/slice-rule-builder.js.map +1 -1
- package/dist/builders/type-rule-builder.d.ts +95 -24
- package/dist/builders/type-rule-builder.d.ts.map +1 -1
- package/dist/builders/type-rule-builder.js +105 -29
- package/dist/builders/type-rule-builder.js.map +1 -1
- package/dist/{helpers → builders}/within.d.ts +2 -2
- package/dist/builders/within.d.ts.map +1 -0
- package/dist/{helpers → builders}/within.js +1 -1
- package/dist/builders/within.js.map +1 -0
- package/dist/cli/commands/baseline.d.ts +3 -2
- package/dist/cli/commands/baseline.d.ts.map +1 -1
- package/dist/cli/commands/baseline.js +68 -6
- package/dist/cli/commands/baseline.js.map +1 -1
- package/dist/cli/commands/check.d.ts +7 -2
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +241 -45
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +29 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +224 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/explain.d.ts +2 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +19 -10
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/init.d.ts +9 -3
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +162 -137
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/import-rule-module.d.ts +29 -0
- package/dist/cli/import-rule-module.d.ts.map +1 -0
- package/dist/cli/import-rule-module.js +60 -0
- package/dist/cli/import-rule-module.js.map +1 -0
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +98 -33
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/load-rules.d.ts +6 -11
- package/dist/cli/load-rules.d.ts.map +1 -1
- package/dist/cli/load-rules.js +21 -29
- package/dist/cli/load-rules.js.map +1 -1
- package/dist/cli/resolve-config.d.ts.map +1 -1
- package/dist/cli/resolve-config.js +24 -14
- package/dist/cli/resolve-config.js.map +1 -1
- package/dist/cli/rule-file-findings.d.ts +178 -0
- package/dist/cli/rule-file-findings.d.ts.map +1 -0
- package/dist/cli/rule-file-findings.js +293 -0
- package/dist/cli/rule-file-findings.js.map +1 -0
- package/dist/cli/watch.d.ts +20 -7
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +39 -14
- package/dist/cli/watch.js.map +1 -1
- package/dist/conditions/body-analysis-function.d.ts.map +1 -1
- package/dist/conditions/body-analysis-function.js +16 -7
- package/dist/conditions/body-analysis-function.js.map +1 -1
- package/dist/conditions/body-analysis-module.d.ts.map +1 -1
- package/dist/conditions/body-analysis-module.js +14 -9
- package/dist/conditions/body-analysis-module.js.map +1 -1
- package/dist/conditions/body-analysis.d.ts.map +1 -1
- package/dist/conditions/body-analysis.js +16 -7
- package/dist/conditions/body-analysis.js.map +1 -1
- package/dist/conditions/call.d.ts.map +1 -1
- package/dist/conditions/call.js +38 -17
- package/dist/conditions/call.js.map +1 -1
- package/dist/conditions/catch-analysis.d.ts +2 -1
- package/dist/conditions/catch-analysis.d.ts.map +1 -1
- package/dist/conditions/catch-analysis.js.map +1 -1
- package/dist/conditions/cross-layer.d.ts +2 -10
- package/dist/conditions/cross-layer.d.ts.map +1 -1
- package/dist/conditions/cross-layer.js +227 -23
- package/dist/conditions/cross-layer.js.map +1 -1
- package/dist/conditions/dependency.d.ts +35 -6
- package/dist/conditions/dependency.d.ts.map +1 -1
- package/dist/conditions/dependency.js +299 -45
- package/dist/conditions/dependency.js.map +1 -1
- package/dist/conditions/exports.d.ts.map +1 -1
- package/dist/conditions/exports.js +10 -0
- package/dist/conditions/exports.js.map +1 -1
- package/dist/conditions/function.d.ts.map +1 -1
- package/dist/conditions/function.js +19 -5
- package/dist/conditions/function.js.map +1 -1
- package/dist/conditions/helpers.d.ts +2 -1
- package/dist/conditions/helpers.d.ts.map +1 -1
- package/dist/conditions/helpers.js +4 -1
- package/dist/conditions/helpers.js.map +1 -1
- package/dist/conditions/jsx.d.ts.map +1 -1
- package/dist/conditions/jsx.js +7 -2
- package/dist/conditions/jsx.js.map +1 -1
- package/dist/conditions/match-identity.d.ts +43 -0
- package/dist/conditions/match-identity.d.ts.map +1 -0
- package/dist/conditions/match-identity.js +43 -0
- package/dist/conditions/match-identity.js.map +1 -0
- package/dist/conditions/members.d.ts.map +1 -1
- package/dist/conditions/members.js +17 -4
- package/dist/conditions/members.js.map +1 -1
- package/dist/conditions/reverse-dependency.d.ts +18 -5
- package/dist/conditions/reverse-dependency.d.ts.map +1 -1
- package/dist/conditions/reverse-dependency.js +109 -92
- package/dist/conditions/reverse-dependency.js.map +1 -1
- package/dist/conditions/slice.d.ts +86 -2
- package/dist/conditions/slice.d.ts.map +1 -1
- package/dist/conditions/slice.js +234 -53
- package/dist/conditions/slice.js.map +1 -1
- package/dist/conditions/structural.d.ts.map +1 -1
- package/dist/conditions/structural.js +16 -4
- package/dist/conditions/structural.js.map +1 -1
- package/dist/core/check-all.d.ts +19 -0
- package/dist/core/check-all.d.ts.map +1 -0
- package/dist/core/check-all.js +96 -0
- package/dist/core/check-all.js.map +1 -0
- package/dist/core/combinators.d.ts +48 -0
- package/dist/core/combinators.d.ts.map +1 -0
- package/dist/core/combinators.js +56 -0
- package/dist/core/combinators.js.map +1 -0
- package/dist/core/descendant-cache.d.ts +36 -0
- package/dist/core/descendant-cache.d.ts.map +1 -0
- package/dist/core/descendant-cache.js +119 -0
- package/dist/core/descendant-cache.js.map +1 -0
- package/dist/core/diagnose.d.ts +234 -0
- package/dist/core/diagnose.d.ts.map +1 -0
- package/dist/core/diagnose.js +382 -0
- package/dist/core/diagnose.js.map +1 -0
- package/dist/core/disk-set.d.ts +48 -0
- package/dist/core/disk-set.d.ts.map +1 -0
- package/dist/core/disk-set.js +218 -0
- package/dist/core/disk-set.js.map +1 -0
- package/dist/core/element-cache.d.ts +75 -0
- package/dist/core/element-cache.d.ts.map +1 -0
- package/dist/core/element-cache.js +32 -0
- package/dist/core/element-cache.js.map +1 -0
- package/dist/core/empty-project-advice.d.ts +75 -0
- package/dist/core/empty-project-advice.d.ts.map +1 -0
- package/dist/core/empty-project-advice.js +61 -0
- package/dist/core/empty-project-advice.js.map +1 -0
- package/dist/core/exclusion-comments.d.ts +54 -0
- package/dist/core/exclusion-comments.d.ts.map +1 -0
- package/dist/core/exclusion-comments.js +310 -0
- package/dist/core/exclusion-comments.js.map +1 -0
- package/dist/core/execute-rule.d.ts +150 -0
- package/dist/core/execute-rule.d.ts.map +1 -0
- package/dist/core/execute-rule.js +580 -0
- package/dist/core/execute-rule.js.map +1 -0
- package/dist/core/glob-diagnosis.d.ts +78 -0
- package/dist/core/glob-diagnosis.d.ts.map +1 -0
- package/dist/core/glob-diagnosis.js +134 -0
- package/dist/core/glob-diagnosis.js.map +1 -0
- package/dist/core/glob-evaluator.d.ts +48 -0
- package/dist/core/glob-evaluator.d.ts.map +1 -0
- package/dist/core/glob-evaluator.js +89 -0
- package/dist/core/glob-evaluator.js.map +1 -0
- package/dist/core/import-candidates.d.ts +60 -0
- package/dist/core/import-candidates.d.ts.map +1 -0
- package/dist/core/import-candidates.js +93 -0
- package/dist/core/import-candidates.js.map +1 -0
- package/dist/core/import-options.d.ts +55 -2
- package/dist/core/import-options.d.ts.map +1 -1
- package/dist/core/import-options.js +64 -0
- package/dist/core/import-options.js.map +1 -1
- package/dist/core/line-index.d.ts +3 -0
- package/dist/core/line-index.d.ts.map +1 -0
- package/dist/core/line-index.js +229 -0
- package/dist/core/line-index.js.map +1 -0
- package/dist/core/metric-violation.d.ts +86 -0
- package/dist/core/metric-violation.d.ts.map +1 -0
- package/dist/core/metric-violation.js +132 -0
- package/dist/core/metric-violation.js.map +1 -0
- package/dist/core/module-edges.d.ts +361 -0
- package/dist/core/module-edges.d.ts.map +1 -0
- package/dist/core/module-edges.js +592 -0
- package/dist/core/module-edges.js.map +1 -0
- package/dist/core/object-literal-functions.d.ts +42 -0
- package/dist/core/object-literal-functions.d.ts.map +1 -0
- package/dist/core/object-literal-functions.js +75 -0
- package/dist/core/object-literal-functions.js.map +1 -0
- package/dist/core/orphan-exclusions.d.ts +44 -0
- package/dist/core/orphan-exclusions.d.ts.map +1 -0
- package/dist/core/orphan-exclusions.js +214 -0
- package/dist/core/orphan-exclusions.js.map +1 -0
- package/dist/core/pair-condition.d.ts +32 -3
- package/dist/core/pair-condition.d.ts.map +1 -1
- package/dist/core/path-universe.d.ts +54 -0
- package/dist/core/path-universe.d.ts.map +1 -0
- package/dist/core/path-universe.js +65 -0
- package/dist/core/path-universe.js.map +1 -0
- package/dist/core/per-root-compiler-options.d.ts +20 -0
- package/dist/core/per-root-compiler-options.d.ts.map +1 -0
- package/dist/core/per-root-compiler-options.js +57 -0
- package/dist/core/per-root-compiler-options.js.map +1 -0
- package/dist/core/project-relative.d.ts +98 -0
- package/dist/core/project-relative.d.ts.map +1 -0
- package/dist/core/project-relative.js +185 -0
- package/dist/core/project-relative.js.map +1 -0
- package/dist/core/project.d.ts +7 -1
- package/dist/core/project.d.ts.map +1 -1
- package/dist/core/project.js +24 -0
- package/dist/core/project.js.map +1 -1
- package/dist/core/rule-builder.d.ts +282 -0
- package/dist/core/rule-builder.d.ts.map +1 -0
- package/dist/core/rule-builder.js +445 -0
- package/dist/core/rule-builder.js.map +1 -0
- package/dist/core/rule-declaration.d.ts +32 -0
- package/dist/core/rule-declaration.d.ts.map +1 -0
- package/dist/core/rule-declaration.js +126 -0
- package/dist/core/rule-declaration.js.map +1 -0
- package/dist/core/terminal-builder.d.ts +625 -0
- package/dist/core/terminal-builder.d.ts.map +1 -0
- package/dist/core/terminal-builder.js +787 -0
- package/dist/core/terminal-builder.js.map +1 -0
- package/dist/core/terminal-execution.d.ts +23 -0
- package/dist/core/terminal-execution.d.ts.map +1 -0
- package/dist/core/terminal-execution.js +71 -0
- package/dist/core/terminal-execution.js.map +1 -0
- package/dist/core/vacuity-diagnosis.d.ts +103 -0
- package/dist/core/vacuity-diagnosis.d.ts.map +1 -0
- package/dist/core/vacuity-diagnosis.js +415 -0
- package/dist/core/vacuity-diagnosis.js.map +1 -0
- package/dist/core/violation.d.ts +16 -11
- package/dist/core/violation.d.ts.map +1 -1
- package/dist/core/violation.js +33 -13
- package/dist/core/violation.js.map +1 -1
- package/dist/graphql/index.js +1 -1
- package/dist/graphql/index.js.map +1 -1
- package/dist/graphql/resolver-rule-builder.d.ts +98 -23
- package/dist/graphql/resolver-rule-builder.d.ts.map +1 -1
- package/dist/graphql/resolver-rule-builder.js +151 -21
- package/dist/graphql/resolver-rule-builder.js.map +1 -1
- package/dist/graphql/schema-loader.d.ts +21 -0
- package/dist/graphql/schema-loader.d.ts.map +1 -1
- package/dist/graphql/schema-loader.js +81 -12
- package/dist/graphql/schema-loader.js.map +1 -1
- package/dist/graphql/schema-rule-builder.d.ts +57 -20
- package/dist/graphql/schema-rule-builder.d.ts.map +1 -1
- package/dist/graphql/schema-rule-builder.js +101 -25
- package/dist/graphql/schema-rule-builder.js.map +1 -1
- package/dist/helpers/baseline-diagnostics.d.ts +45 -0
- package/dist/helpers/baseline-diagnostics.d.ts.map +1 -0
- package/dist/helpers/baseline-diagnostics.js +168 -0
- package/dist/helpers/baseline-diagnostics.js.map +1 -0
- package/dist/helpers/baseline-generator.d.ts +19 -0
- package/dist/helpers/baseline-generator.d.ts.map +1 -0
- package/dist/helpers/baseline-generator.js +18 -0
- package/dist/helpers/baseline-generator.js.map +1 -0
- package/dist/helpers/baseline.d.ts +336 -0
- package/dist/helpers/baseline.d.ts.map +1 -0
- package/dist/helpers/baseline.js +664 -0
- package/dist/helpers/baseline.js.map +1 -0
- package/dist/helpers/body-traversal.d.ts +27 -2
- package/dist/helpers/body-traversal.d.ts.map +1 -1
- package/dist/helpers/body-traversal.js +122 -16
- package/dist/helpers/body-traversal.js.map +1 -1
- package/dist/helpers/callback-extractor.d.ts.map +1 -1
- package/dist/helpers/callback-extractor.js +48 -47
- package/dist/helpers/callback-extractor.js.map +1 -1
- package/dist/helpers/complexity.d.ts +13 -5
- package/dist/helpers/complexity.d.ts.map +1 -1
- package/dist/helpers/complexity.js +15 -6
- package/dist/helpers/complexity.js.map +1 -1
- package/dist/helpers/diff-aware.d.ts +44 -0
- package/dist/helpers/diff-aware.d.ts.map +1 -0
- package/dist/helpers/diff-aware.js +84 -0
- package/dist/helpers/diff-aware.js.map +1 -0
- package/dist/helpers/matchers.d.ts +68 -7
- package/dist/helpers/matchers.d.ts.map +1 -1
- package/dist/helpers/matchers.js +114 -20
- package/dist/helpers/matchers.js.map +1 -1
- package/dist/helpers/slice-graph.d.ts +100 -8
- package/dist/helpers/slice-graph.d.ts.map +1 -1
- package/dist/helpers/slice-graph.js +126 -34
- package/dist/helpers/slice-graph.js.map +1 -1
- package/dist/helpers/tarjan.d.ts +0 -14
- package/dist/helpers/tarjan.d.ts.map +1 -1
- package/dist/helpers/tarjan.js +29 -16
- package/dist/helpers/tarjan.js.map +1 -1
- package/dist/index.d.ts +56 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -13
- package/dist/index.js.map +1 -1
- package/dist/models/arch-call.d.ts +3 -2
- package/dist/models/arch-call.d.ts.map +1 -1
- package/dist/models/arch-call.js.map +1 -1
- package/dist/models/arch-function.d.ts +28 -6
- package/dist/models/arch-function.d.ts.map +1 -1
- package/dist/models/arch-function.js +106 -3
- package/dist/models/arch-function.js.map +1 -1
- package/dist/models/arch-jsx-element.js +2 -2
- package/dist/models/arch-jsx-element.js.map +1 -1
- package/dist/models/slice.d.ts +33 -9
- package/dist/models/slice.d.ts.map +1 -1
- package/dist/models/slice.js +129 -19
- package/dist/models/slice.js.map +1 -1
- package/dist/predicates/call.d.ts.map +1 -1
- package/dist/predicates/call.js +5 -0
- package/dist/predicates/call.js.map +1 -1
- package/dist/predicates/identity.d.ts +21 -0
- package/dist/predicates/identity.d.ts.map +1 -1
- package/dist/predicates/identity.js +75 -3
- package/dist/predicates/identity.js.map +1 -1
- package/dist/predicates/index.d.ts +1 -1
- package/dist/predicates/index.d.ts.map +1 -1
- package/dist/predicates/index.js +1 -1
- package/dist/predicates/index.js.map +1 -1
- package/dist/predicates/metrics.d.ts +4 -2
- package/dist/predicates/metrics.d.ts.map +1 -1
- package/dist/predicates/metrics.js +4 -2
- package/dist/predicates/metrics.js.map +1 -1
- package/dist/predicates/module.d.ts +4 -12
- package/dist/predicates/module.d.ts.map +1 -1
- package/dist/predicates/module.js +57 -37
- package/dist/predicates/module.js.map +1 -1
- package/dist/presets/agent-guardrails.d.ts +22 -15
- package/dist/presets/agent-guardrails.d.ts.map +1 -1
- package/dist/presets/agent-guardrails.js +124 -19
- package/dist/presets/agent-guardrails.js.map +1 -1
- package/dist/presets/boundaries.d.ts +45 -2
- package/dist/presets/boundaries.d.ts.map +1 -1
- package/dist/presets/boundaries.js +132 -23
- package/dist/presets/boundaries.js.map +1 -1
- package/dist/presets/data-layer.d.ts +22 -2
- package/dist/presets/data-layer.d.ts.map +1 -1
- package/dist/presets/data-layer.js +58 -16
- package/dist/presets/data-layer.js.map +1 -1
- package/dist/presets/index.d.ts +7 -5
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +9 -3
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/layered.d.ts +46 -2
- package/dist/presets/layered.d.ts.map +1 -1
- package/dist/presets/layered.js +66 -29
- package/dist/presets/layered.js.map +1 -1
- package/dist/presets/recommended.d.ts +80 -9
- package/dist/presets/recommended.d.ts.map +1 -1
- package/dist/presets/recommended.js +25 -23
- package/dist/presets/recommended.js.map +1 -1
- package/dist/presets/shared.d.ts +270 -2
- package/dist/presets/shared.d.ts.map +1 -1
- package/dist/presets/shared.js +338 -4
- package/dist/presets/shared.js.map +1 -1
- package/dist/rules/code-quality.d.ts.map +1 -1
- package/dist/rules/code-quality.js +15 -6
- package/dist/rules/code-quality.js.map +1 -1
- package/dist/rules/hygiene.d.ts +1 -1
- package/dist/rules/hygiene.js +1 -1
- package/dist/rules/metrics-function.d.ts +2 -1
- package/dist/rules/metrics-function.d.ts.map +1 -1
- package/dist/rules/metrics-function.js +33 -6
- package/dist/rules/metrics-function.js.map +1 -1
- package/dist/rules/metrics.d.ts +2 -1
- package/dist/rules/metrics.d.ts.map +1 -1
- package/dist/rules/metrics.js +39 -9
- package/dist/rules/metrics.js.map +1 -1
- package/dist/smells/duplicate-bodies.d.ts +58 -5
- package/dist/smells/duplicate-bodies.d.ts.map +1 -1
- package/dist/smells/duplicate-bodies.js +137 -56
- package/dist/smells/duplicate-bodies.js.map +1 -1
- package/dist/smells/fingerprint.d.ts +8 -1
- package/dist/smells/fingerprint.d.ts.map +1 -1
- package/dist/smells/fingerprint.js +21 -3
- package/dist/smells/fingerprint.js.map +1 -1
- package/dist/smells/inconsistent-siblings.d.ts +128 -7
- package/dist/smells/inconsistent-siblings.d.ts.map +1 -1
- package/dist/smells/inconsistent-siblings.js +288 -86
- package/dist/smells/inconsistent-siblings.js.map +1 -1
- package/dist/smells/sibling-files.d.ts +47 -0
- package/dist/smells/sibling-files.d.ts.map +1 -0
- package/dist/smells/sibling-files.js +104 -0
- package/dist/smells/sibling-files.js.map +1 -0
- package/dist/smells/similar-pairs.d.ts +27 -0
- package/dist/smells/similar-pairs.d.ts.map +1 -0
- package/dist/smells/similar-pairs.js +52 -0
- package/dist/smells/similar-pairs.js.map +1 -0
- package/dist/smells/smell-builder.d.ts +57 -12
- package/dist/smells/smell-builder.d.ts.map +1 -1
- package/dist/smells/smell-builder.js +111 -14
- package/dist/smells/smell-builder.js.map +1 -1
- package/dist/tsconfig/index.d.ts +19 -0
- package/dist/tsconfig/index.d.ts.map +1 -0
- package/dist/tsconfig/index.js +20 -0
- package/dist/tsconfig/index.js.map +1 -0
- package/dist/tsconfig/tsconfig-builder.d.ts +42 -9
- package/dist/tsconfig/tsconfig-builder.d.ts.map +1 -1
- package/dist/tsconfig/tsconfig-builder.js +64 -16
- package/dist/tsconfig/tsconfig-builder.js.map +1 -1
- package/package.json +3 -2
- package/dist/core/module-dependencies.d.ts +0 -28
- package/dist/core/module-dependencies.d.ts.map +0 -1
- package/dist/core/module-dependencies.js +0 -35
- package/dist/core/module-dependencies.js.map +0 -1
- package/dist/helpers/within.d.ts.map +0 -1
- package/dist/helpers/within.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vacuity-diagnosis.js","sourceRoot":"","sources":["../../src/core/vacuity-diagnosis.ts"],"names":[],"mappings":"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"}
|
package/dist/core/violation.d.ts
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { Node } from 'ts-morph';
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
2
|
+
import type { ArchViolation } from '@nielspeter/eess';
|
|
3
|
+
export declare function getElementName(node: Node): string;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* The structural name of the nearest ENCLOSING declaration — always an ancestor
|
|
6
|
+
* walk, never the node's own name.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* Split out of `getElementName`, which returns the node's own name when it has
|
|
9
|
+
* one and only walks ancestors otherwise. That difference is invisible until
|
|
10
|
+
* something needs "what encloses this?" rather than "what is this called?", and
|
|
11
|
+
* then it is a defect: a metric identity built on `getElementName` as if it were
|
|
12
|
+
* a scope left method-shorthand object-literal functions (`{ build() {} }`)
|
|
13
|
+
* unqualified, because a `MethodDeclaration` has its own name — so two factories
|
|
14
|
+
* each returning `{ build() {} }` shared one identity while the arrow spelling
|
|
15
|
+
* of the same code did not.
|
|
12
16
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
17
|
+
* Returns `undefined` when no named declaration encloses the node, which is a
|
|
18
|
+
* real answer — a literal passed as a call argument at module level has no scope
|
|
19
|
+
* — and not a value to substitute a kind name for.
|
|
15
20
|
*/
|
|
16
|
-
export declare function
|
|
21
|
+
export declare function enclosingScopeName(node: Node): string | undefined;
|
|
17
22
|
/**
|
|
18
23
|
* Get the absolute file path for a ts-morph Node.
|
|
19
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"violation.d.ts","sourceRoot":"","sources":["../../src/core/violation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"violation.d.ts","sourceRoot":"","sources":["../../src/core/violation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AA8ErD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAIjD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAsBjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GACA,aAAa,CAef"}
|
package/dist/core/violation.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { Node } from 'ts-morph';
|
|
2
2
|
import { generateCodeFrame } from '@nielspeter/eess';
|
|
3
|
+
/**
|
|
4
|
+
* The ts-morph half of violation construction — plan 0165 Phase 2.
|
|
5
|
+
*
|
|
6
|
+
* Everything here takes a `Node`, which is why it cannot live in the kernel:
|
|
7
|
+
* `@nielspeter/eess` is engine-independent by charter (ADR-007), and the five
|
|
8
|
+
* dialects that sit on it have no AST in common. The pure half — the
|
|
9
|
+
* `ArchViolation` shape itself, `severityFor`, `remedyRepeatsMessage`,
|
|
10
|
+
* `byCodepoint`, `subjectOf` and the identity-collision machinery — is the
|
|
11
|
+
* kernel's, and there is now exactly ONE copy of it at runtime rather than two.
|
|
12
|
+
* Two copies is not a tidiness complaint: Phase 1 measured a comment-suppression
|
|
13
|
+
* registry written by one and read by the other.
|
|
14
|
+
*/
|
|
3
15
|
/**
|
|
4
16
|
* Check if a node is a named declaration and return its name, or undefined.
|
|
5
17
|
* Constructors return "constructor" since they have no getName().
|
|
@@ -55,22 +67,30 @@ function isTopLevelDeclaration(node) {
|
|
|
55
67
|
Node.isEnumDeclaration(node) ||
|
|
56
68
|
Node.isFunctionDeclaration(node));
|
|
57
69
|
}
|
|
58
|
-
/**
|
|
59
|
-
* Extract a human-readable name from a ts-morph Node.
|
|
60
|
-
*
|
|
61
|
-
* If the node itself is a named declaration (class, function, method, etc.),
|
|
62
|
-
* returns its name directly. Otherwise, walks up the AST ancestors to find
|
|
63
|
-
* the nearest named declaration and builds a qualified name like
|
|
64
|
-
* "ClassName.methodName". This ensures that inner nodes (e.g., AsExpression,
|
|
65
|
-
* CallExpression) produce meaningful element names for `.excluding()` matching.
|
|
66
|
-
*
|
|
67
|
-
* Falls back to the node's kind name only if no named ancestor is found
|
|
68
|
-
* (e.g., top-level expressions in a module).
|
|
69
|
-
*/
|
|
70
70
|
export function getElementName(node) {
|
|
71
71
|
const directName = getNodeName(node);
|
|
72
72
|
if (directName !== undefined)
|
|
73
73
|
return directName;
|
|
74
|
+
return enclosingScopeName(node) ?? node.getKindName();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The structural name of the nearest ENCLOSING declaration — always an ancestor
|
|
78
|
+
* walk, never the node's own name.
|
|
79
|
+
*
|
|
80
|
+
* Split out of `getElementName`, which returns the node's own name when it has
|
|
81
|
+
* one and only walks ancestors otherwise. That difference is invisible until
|
|
82
|
+
* something needs "what encloses this?" rather than "what is this called?", and
|
|
83
|
+
* then it is a defect: a metric identity built on `getElementName` as if it were
|
|
84
|
+
* a scope left method-shorthand object-literal functions (`{ build() {} }`)
|
|
85
|
+
* unqualified, because a `MethodDeclaration` has its own name — so two factories
|
|
86
|
+
* each returning `{ build() {} }` shared one identity while the arrow spelling
|
|
87
|
+
* of the same code did not.
|
|
88
|
+
*
|
|
89
|
+
* Returns `undefined` when no named declaration encloses the node, which is a
|
|
90
|
+
* real answer — a literal passed as a call argument at module level has no scope
|
|
91
|
+
* — and not a value to substitute a kind name for.
|
|
92
|
+
*/
|
|
93
|
+
export function enclosingScopeName(node) {
|
|
74
94
|
// Walk up ancestors collecting structural names: method/constructor/accessor
|
|
75
95
|
// at the member level, class/function at the top level. Skips variables,
|
|
76
96
|
// properties, and expressions — those are implementation detail.
|
|
@@ -91,7 +111,7 @@ export function getElementName(node) {
|
|
|
91
111
|
}
|
|
92
112
|
current = current.getParent();
|
|
93
113
|
}
|
|
94
|
-
return parts.length > 0 ? parts.join('.') :
|
|
114
|
+
return parts.length > 0 ? parts.join('.') : undefined;
|
|
95
115
|
}
|
|
96
116
|
/**
|
|
97
117
|
* Get the absolute file path for a ts-morph Node.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"violation.js","sourceRoot":"","sources":["../../src/core/violation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"violation.js","sourceRoot":"","sources":["../../src/core/violation.ts"],"names":[],"mappings":"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"}
|
package/dist/graphql/index.js
CHANGED
|
@@ -77,7 +77,7 @@ export function resolvers(p, glob) {
|
|
|
77
77
|
const filePath = sf.getFilePath();
|
|
78
78
|
return picomatchFilter(filePath, glob, extractRootDir(p.tsConfigPath));
|
|
79
79
|
});
|
|
80
|
-
return new ResolverRuleBuilder(sourceFiles);
|
|
80
|
+
return new ResolverRuleBuilder(sourceFiles, glob, p);
|
|
81
81
|
}
|
|
82
82
|
// --- Re-exports ---
|
|
83
83
|
export { SchemaRuleBuilder } from './schema-rule-builder.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphql/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE,uBAAuB;AAEvB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,MAAM,CAAC,aAAmC,EAAE,IAAY;IACtE,MAAM,OAAO,GACX,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;IAChG,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAChD,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,UAAmB;IAC5D,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IACjD,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,SAAS,CAAC,CAAc,EAAE,IAAY;IACpD,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QACnD,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;QACjC,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphql/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE,uBAAuB;AAEvB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,MAAM,CAAC,aAAmC,EAAE,IAAY;IACtE,MAAM,OAAO,GACX,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;IAChG,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAChD,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,UAAmB;IAC5D,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IACjD,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,SAAS,CAAC,CAAc,EAAE,IAAY;IACpD,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QACnD,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;QACjC,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,mBAAmB,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,qBAAqB;AAErB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,iCAAiC;AACjC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAGrF,iCAAiC;AACjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAErF,0BAA0B;AAC1B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAU9F,2BAA2B;AAE3B,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,SAAS,cAAc,CAAC,YAAoB;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAA;AAEzD,SAAS,eAAe,CAAC,QAAgB,EAAE,IAAY,EAAE,OAAe;IACtE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACrD,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QACzB,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,OAAO,CAAC,YAAY,CAAC,CAAA;AAC9B,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import type { RuleDescription } from '@nielspeter/eess';
|
|
2
|
+
import type { CollectResult } from '../core/terminal-builder.js';
|
|
1
3
|
import type { SourceFile } from 'ts-morph';
|
|
2
|
-
import type { ArchViolation } from '../core/violation.js';
|
|
3
4
|
import type { Predicate } from '@nielspeter/eess';
|
|
4
|
-
import {
|
|
5
|
+
import type { ArchProject } from '../core/project.js';
|
|
6
|
+
import type { GlobNode } from '@nielspeter/eess';
|
|
7
|
+
import { TerminalBuilder } from '../core/terminal-builder.js';
|
|
5
8
|
import type { ExpressionMatcher } from '../helpers/matchers.js';
|
|
6
9
|
import type { ArchFunction } from '../models/arch-function.js';
|
|
7
10
|
/**
|
|
@@ -14,28 +17,40 @@ import type { ArchFunction } from '../models/arch-function.js';
|
|
|
14
17
|
* @param pattern - Regex or string to match against the resolved return type text
|
|
15
18
|
*/
|
|
16
19
|
export declare function resolveFieldReturning(pattern: RegExp | string): Predicate<ArchFunction>;
|
|
17
|
-
/**
|
|
18
|
-
* Fluent rule builder for GraphQL resolver architecture rules.
|
|
19
|
-
*
|
|
20
|
-
* Operates on TypeScript resolver files analyzed through the ArchFunction model.
|
|
21
|
-
* Reuses the body analysis engine from plan 0011 for conditions like contain/notContain.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```typescript
|
|
25
|
-
* resolvers(p, 'src/resolvers/**')
|
|
26
|
-
* .that()
|
|
27
|
-
* .resolveFieldReturning(/^[A-Z]/)
|
|
28
|
-
* .should()
|
|
29
|
-
* .contain(call('loader.load'))
|
|
30
|
-
* .because('prevent N+1 queries')
|
|
31
|
-
* .check()
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
20
|
export declare class ResolverRuleBuilder extends TerminalBuilder {
|
|
35
21
|
private readonly sourceFiles;
|
|
36
|
-
private readonly
|
|
37
|
-
private readonly
|
|
38
|
-
|
|
22
|
+
private readonly glob?;
|
|
23
|
+
private readonly project?;
|
|
24
|
+
private _predicates;
|
|
25
|
+
private _conditions;
|
|
26
|
+
/**
|
|
27
|
+
* @param sourceFiles - The resolver files, already filtered by `resolvers()`.
|
|
28
|
+
* @param glob - The glob they were filtered by, for diagnostics only.
|
|
29
|
+
*
|
|
30
|
+
* `glob` is **optional** because this class is re-exported from the public
|
|
31
|
+
* `./graphql` subpath, so its constructor is public API and a required
|
|
32
|
+
* second parameter would break anyone constructing it directly — which
|
|
33
|
+
* would make R2a a breaking release, and R2a is the one people install in
|
|
34
|
+
* order to measure before R3. `resolvers()` always passes it.
|
|
35
|
+
*
|
|
36
|
+
* Threading it at all is the point: `resolvers()` filters eagerly and hands
|
|
37
|
+
* this builder only the surviving files, so without the glob string no
|
|
38
|
+
* `globs()` could ever report `resolvers(p, 'src/reslvers/**')` — the rule
|
|
39
|
+
* would silently examine zero resolvers and pass.
|
|
40
|
+
*/
|
|
41
|
+
constructor(sourceFiles: SourceFile[], glob?: string | undefined, project?: ArchProject | undefined);
|
|
42
|
+
/** The project this rule was built against. See `RuleBuilder.getProject`. */
|
|
43
|
+
getProject(): ArchProject | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* The discovery glob, if `resolvers()` supplied it.
|
|
46
|
+
*
|
|
47
|
+
* `tsconfig-relative` is load-bearing, not cosmetic: it is what exempts this
|
|
48
|
+
* glob from the anchor check, because `resolvers(p, 'src/resolvers/**')` — the
|
|
49
|
+
* spelling in this class's own example — is correct as written. Declared
|
|
50
|
+
* `'absolute'` it would be reported unanchored, telling the author to break a
|
|
51
|
+
* working rule.
|
|
52
|
+
*/
|
|
53
|
+
globs(): readonly GlobNode[];
|
|
39
54
|
/**
|
|
40
55
|
* Filter to resolver functions for fields returning types matching the pattern.
|
|
41
56
|
*/
|
|
@@ -68,7 +83,67 @@ export declare class ResolverRuleBuilder extends TerminalBuilder {
|
|
|
68
83
|
* Assert: must NOT contain 'bad' AND must contain 'good'.
|
|
69
84
|
*/
|
|
70
85
|
useInsteadOf(bad: ExpressionMatcher, good: ExpressionMatcher): this;
|
|
71
|
-
|
|
86
|
+
/**
|
|
87
|
+
* An independent copy, carrying both lists.
|
|
88
|
+
*
|
|
89
|
+
* This builder does not extend `RuleBuilder`, so it does not inherit that
|
|
90
|
+
* class's override — and neither `that()` nor `should()` forked here at all,
|
|
91
|
+
* which made the bug 0016 leak worse on this hierarchy than on the main one:
|
|
92
|
+
* a held `schema()` selection accumulated every predicate and condition of
|
|
93
|
+
* every rule derived from it. `docs/graphql.md` teaches exactly that shape.
|
|
94
|
+
*/
|
|
95
|
+
protected copy(): this;
|
|
96
|
+
/**
|
|
97
|
+
* Whether this rule states an assertion at all — the assertion gate's question.
|
|
98
|
+
*
|
|
99
|
+
* True once a condition has been added.
|
|
100
|
+
*
|
|
101
|
+
* Overrides the `TerminalBuilder` default (`true`), whose JSDoc carries the
|
|
102
|
+
* contract and the reason this is public rather than protected.
|
|
103
|
+
*/
|
|
104
|
+
assertsSomething(): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* The remedy for this builder's assertion-less state, as one string.
|
|
107
|
+
*
|
|
108
|
+
* One channel, so `diagnose()`'s advice and the finding's own message cannot
|
|
109
|
+
* disagree. Overrides `TerminalBuilder`'s generic text with wording specific to
|
|
110
|
+
* what this builder is missing.
|
|
111
|
+
*/
|
|
112
|
+
assertionAdvice(): string;
|
|
113
|
+
/** Named by id or description, not 'unnamed' (plan 0070 §4). */
|
|
114
|
+
describeRule(): RuleDescription;
|
|
115
|
+
/**
|
|
116
|
+
* The set the conditions receive — plan 0096, and the ONE method both readers
|
|
117
|
+
* call.
|
|
118
|
+
*
|
|
119
|
+
* The first attempt at 0096 let `collectViolations()` and the evidence
|
|
120
|
+
* accessor derive this separately, and they disagreed inside one commit: this
|
|
121
|
+
* builder counted PRE-predicate while its sibling `SchemaRuleBuilder` counted
|
|
122
|
+
* post. Measured, a chain whose `.that()` selected nothing reported 14 units
|
|
123
|
+
* examined, handed its conditions 0, and passed green with `diagnose()`
|
|
124
|
+
* silent — the fail-open cell ADR-009 exists to close, inside the wave that
|
|
125
|
+
* closes it. Sharing the method is what makes "the preview derives from the
|
|
126
|
+
* same computation the gate uses" structural rather than a claim.
|
|
127
|
+
*/
|
|
128
|
+
private selected;
|
|
129
|
+
/** Units this rule examined — plan 0096. The selection, not what precedes it. */
|
|
130
|
+
/**
|
|
131
|
+
* This family counts resolvers — the resolver functions it selected.
|
|
132
|
+
*
|
|
133
|
+
* Plan 0099: `CollectResult.examined` is unit-typed per family (ADR-009 part
|
|
134
|
+
* 1), and the zero-examined message prints the noun. Inheriting the base
|
|
135
|
+
* `'subjects'` is a category error in a sentence whose whole job is naming what
|
|
136
|
+
* was and was not looked at.
|
|
137
|
+
*/
|
|
138
|
+
protected examinedUnitNoun(): string;
|
|
139
|
+
/**
|
|
140
|
+
* How many units this rule actually examined — ADR-010's evidence that a pass
|
|
141
|
+
* was constructed rather than defaulted.
|
|
142
|
+
*
|
|
143
|
+
* The resolvers this rule selected.
|
|
144
|
+
*/
|
|
145
|
+
examinedUnits(): number;
|
|
146
|
+
protected collectViolations(): CollectResult;
|
|
72
147
|
private getElements;
|
|
73
148
|
private buildRuleDescription;
|
|
74
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-rule-builder.d.ts","sourceRoot":"","sources":["../../src/graphql/resolver-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"resolver-rule-builder.d.ts","sourceRoot":"","sources":["../../src/graphql/resolver-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAS9D;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAYvF;AAqBD,qBAAa,mBAAoB,SAAQ,eAAe;IAoBpD,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IArB3B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,WAAW,CAAgC;IAEnD;;;;;;;;;;;;;;OAcG;gBAEgB,WAAW,EAAE,UAAU,EAAE,EACzB,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,WAAW,YAAA;IAKxC,6EAA6E;IAC7E,UAAU,IAAI,WAAW,GAAG,SAAS;IAIrC;;;;;;;;OAQG;IACM,KAAK,IAAI,SAAS,QAAQ,EAAE;IAarC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQrD;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,GAAG,IAAI,IAAI;IAIX;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMzC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAM5C;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAQnE;;;;;;;;OAQG;cACgB,IAAI,IAAI,IAAI;IAO/B;;;;;;;OAOG;IACM,gBAAgB,IAAI,OAAO;IAIpC;;;;;;OAMG;IACM,eAAe,IAAI,MAAM;IAOlC,gEAAgE;IACvD,YAAY,IAAI,eAAe;IAOxC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,QAAQ;IAQhB,iFAAiF;IAEjF;;;;;;;OAOG;cACgB,gBAAgB,IAAI,MAAM;IAI7C;;;;;OAKG;IACH,aAAa,IAAI,MAAM;IAIvB,SAAS,CAAC,iBAAiB,IAAI,aAAa;IAwB5C,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,oBAAoB;CAQ7B"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { globAnyOf, stampGlobs } from '@nielspeter/eess';
|
|
2
|
+
import { TerminalBuilder } from '../core/terminal-builder.js';
|
|
2
3
|
import { collectFunctions } from '../models/arch-function.js';
|
|
4
|
+
import { selectionMemo } from '@nielspeter/eess';
|
|
3
5
|
import { functionContain, functionNotContain, functionUseInsteadOf, } from '../conditions/body-analysis-function.js';
|
|
4
6
|
/**
|
|
5
7
|
* Predicate: filter to resolver functions for fields returning types matching the pattern.
|
|
@@ -40,21 +42,62 @@ export function resolveFieldReturning(pattern) {
|
|
|
40
42
|
* .check()
|
|
41
43
|
* ```
|
|
42
44
|
*/
|
|
45
|
+
const selectionOf = selectionMemo();
|
|
43
46
|
export class ResolverRuleBuilder extends TerminalBuilder {
|
|
44
47
|
sourceFiles;
|
|
48
|
+
glob;
|
|
49
|
+
project;
|
|
45
50
|
_predicates = [];
|
|
46
51
|
_conditions = [];
|
|
47
|
-
|
|
52
|
+
/**
|
|
53
|
+
* @param sourceFiles - The resolver files, already filtered by `resolvers()`.
|
|
54
|
+
* @param glob - The glob they were filtered by, for diagnostics only.
|
|
55
|
+
*
|
|
56
|
+
* `glob` is **optional** because this class is re-exported from the public
|
|
57
|
+
* `./graphql` subpath, so its constructor is public API and a required
|
|
58
|
+
* second parameter would break anyone constructing it directly — which
|
|
59
|
+
* would make R2a a breaking release, and R2a is the one people install in
|
|
60
|
+
* order to measure before R3. `resolvers()` always passes it.
|
|
61
|
+
*
|
|
62
|
+
* Threading it at all is the point: `resolvers()` filters eagerly and hands
|
|
63
|
+
* this builder only the surviving files, so without the glob string no
|
|
64
|
+
* `globs()` could ever report `resolvers(p, 'src/reslvers/**')` — the rule
|
|
65
|
+
* would silently examine zero resolvers and pass.
|
|
66
|
+
*/
|
|
67
|
+
constructor(sourceFiles, glob, project) {
|
|
48
68
|
super();
|
|
49
69
|
this.sourceFiles = sourceFiles;
|
|
70
|
+
this.glob = glob;
|
|
71
|
+
this.project = project;
|
|
72
|
+
}
|
|
73
|
+
/** The project this rule was built against. See `RuleBuilder.getProject`. */
|
|
74
|
+
getProject() {
|
|
75
|
+
return this.project;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The discovery glob, if `resolvers()` supplied it.
|
|
79
|
+
*
|
|
80
|
+
* `tsconfig-relative` is load-bearing, not cosmetic: it is what exempts this
|
|
81
|
+
* glob from the anchor check, because `resolvers(p, 'src/resolvers/**')` — the
|
|
82
|
+
* spelling in this class's own example — is correct as written. Declared
|
|
83
|
+
* `'absolute'` it would be reported unanchored, telling the author to break a
|
|
84
|
+
* working rule.
|
|
85
|
+
*/
|
|
86
|
+
globs() {
|
|
87
|
+
if (this.glob === undefined)
|
|
88
|
+
return [];
|
|
89
|
+
return [
|
|
90
|
+
stampGlobs(globAnyOf([this.glob], 'file-path', 'tsconfig-relative'), 'discovery', (g) => `resolvers(p, "${g.glob}")`),
|
|
91
|
+
];
|
|
50
92
|
}
|
|
51
93
|
// --- Predicate methods ---
|
|
52
94
|
/**
|
|
53
95
|
* Filter to resolver functions for fields returning types matching the pattern.
|
|
54
96
|
*/
|
|
55
97
|
resolveFieldReturning(pattern) {
|
|
56
|
-
this.
|
|
57
|
-
|
|
98
|
+
const next = this.copy();
|
|
99
|
+
next._predicates.push(resolveFieldReturning(pattern));
|
|
100
|
+
return next;
|
|
58
101
|
}
|
|
59
102
|
// --- Chain methods ---
|
|
60
103
|
/**
|
|
@@ -86,35 +129,114 @@ export class ResolverRuleBuilder extends TerminalBuilder {
|
|
|
86
129
|
* Assert that the resolver body contains at least one match.
|
|
87
130
|
*/
|
|
88
131
|
contain(matcher) {
|
|
89
|
-
this.
|
|
90
|
-
|
|
132
|
+
const next = this.copy();
|
|
133
|
+
next._conditions.push(functionContain(matcher));
|
|
134
|
+
return next;
|
|
91
135
|
}
|
|
92
136
|
/**
|
|
93
137
|
* Assert that the resolver body does NOT contain any match.
|
|
94
138
|
*/
|
|
95
139
|
notContain(matcher) {
|
|
96
|
-
this.
|
|
97
|
-
|
|
140
|
+
const next = this.copy();
|
|
141
|
+
next._conditions.push(functionNotContain(matcher));
|
|
142
|
+
return next;
|
|
98
143
|
}
|
|
99
144
|
/**
|
|
100
145
|
* Assert: must NOT contain 'bad' AND must contain 'good'.
|
|
101
146
|
*/
|
|
102
147
|
useInsteadOf(bad, good) {
|
|
103
|
-
this.
|
|
104
|
-
|
|
148
|
+
const next = this.copy();
|
|
149
|
+
next._conditions.push(functionUseInsteadOf(bad, good));
|
|
150
|
+
return next;
|
|
105
151
|
}
|
|
106
152
|
// --- Evaluation ---
|
|
153
|
+
/**
|
|
154
|
+
* An independent copy, carrying both lists.
|
|
155
|
+
*
|
|
156
|
+
* This builder does not extend `RuleBuilder`, so it does not inherit that
|
|
157
|
+
* class's override — and neither `that()` nor `should()` forked here at all,
|
|
158
|
+
* which made the bug 0016 leak worse on this hierarchy than on the main one:
|
|
159
|
+
* a held `schema()` selection accumulated every predicate and condition of
|
|
160
|
+
* every rule derived from it. `docs/graphql.md` teaches exactly that shape.
|
|
161
|
+
*/
|
|
162
|
+
copy() {
|
|
163
|
+
const clone = super.copy();
|
|
164
|
+
clone._predicates = [...this._predicates];
|
|
165
|
+
clone._conditions = [...this._conditions];
|
|
166
|
+
return clone;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Whether this rule states an assertion at all — the assertion gate's question.
|
|
170
|
+
*
|
|
171
|
+
* True once a condition has been added.
|
|
172
|
+
*
|
|
173
|
+
* Overrides the `TerminalBuilder` default (`true`), whose JSDoc carries the
|
|
174
|
+
* contract and the reason this is public rather than protected.
|
|
175
|
+
*/
|
|
176
|
+
assertsSomething() {
|
|
177
|
+
return this._conditions.length > 0;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* The remedy for this builder's assertion-less state, as one string.
|
|
181
|
+
*
|
|
182
|
+
* One channel, so `diagnose()`'s advice and the finding's own message cannot
|
|
183
|
+
* disagree. Overrides `TerminalBuilder`'s generic text with wording specific to
|
|
184
|
+
* what this builder is missing.
|
|
185
|
+
*/
|
|
186
|
+
assertionAdvice() {
|
|
187
|
+
return ('this rule has no condition, so it asserts nothing and can never fail. Add a ' +
|
|
188
|
+
'condition after .should(), e.g. contain(...), notContain(...) or useInsteadOf(...).');
|
|
189
|
+
}
|
|
190
|
+
/** Named by id or description, not 'unnamed' (plan 0070 §4). */
|
|
191
|
+
describeRule() {
|
|
192
|
+
return {
|
|
193
|
+
...super.describeRule(),
|
|
194
|
+
rule: this._metadata?.id ?? this.buildRuleDescription(),
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* The set the conditions receive — plan 0096, and the ONE method both readers
|
|
199
|
+
* call.
|
|
200
|
+
*
|
|
201
|
+
* The first attempt at 0096 let `collectViolations()` and the evidence
|
|
202
|
+
* accessor derive this separately, and they disagreed inside one commit: this
|
|
203
|
+
* builder counted PRE-predicate while its sibling `SchemaRuleBuilder` counted
|
|
204
|
+
* post. Measured, a chain whose `.that()` selected nothing reported 14 units
|
|
205
|
+
* examined, handed its conditions 0, and passed green with `diagnose()`
|
|
206
|
+
* silent — the fail-open cell ADR-009 exists to close, inside the wave that
|
|
207
|
+
* closes it. Sharing the method is what makes "the preview derives from the
|
|
208
|
+
* same computation the gate uses" structural rather than a claim.
|
|
209
|
+
*/
|
|
210
|
+
selected() {
|
|
211
|
+
return selectionOf(this, () => this.getElements().filter((element) => this._predicates.every((predicate) => predicate.test(element))));
|
|
212
|
+
}
|
|
213
|
+
/** Units this rule examined — plan 0096. The selection, not what precedes it. */
|
|
214
|
+
/**
|
|
215
|
+
* This family counts resolvers — the resolver functions it selected.
|
|
216
|
+
*
|
|
217
|
+
* Plan 0099: `CollectResult.examined` is unit-typed per family (ADR-009 part
|
|
218
|
+
* 1), and the zero-examined message prints the noun. Inheriting the base
|
|
219
|
+
* `'subjects'` is a category error in a sentence whose whole job is naming what
|
|
220
|
+
* was and was not looked at.
|
|
221
|
+
*/
|
|
222
|
+
examinedUnitNoun() {
|
|
223
|
+
return 'resolvers';
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* How many units this rule actually examined — ADR-010's evidence that a pass
|
|
227
|
+
* was constructed rather than defaulted.
|
|
228
|
+
*
|
|
229
|
+
* The resolvers this rule selected.
|
|
230
|
+
*/
|
|
231
|
+
examinedUnits() {
|
|
232
|
+
return this.selected().length;
|
|
233
|
+
}
|
|
107
234
|
collectViolations() {
|
|
108
|
-
const
|
|
109
|
-
const filtered = allElements.filter((element) => this._predicates.every((predicate) => predicate.test(element)));
|
|
235
|
+
const filtered = this.selected();
|
|
110
236
|
if (filtered.length === 0) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const ruleId = this._metadata?.id ?? 'unnamed';
|
|
115
|
-
console.warn(`[eess] Resolver rule '${ruleId}' has predicates but no conditions. ` +
|
|
116
|
-
`Did you forget to add a condition after .should()?`);
|
|
117
|
-
return [];
|
|
237
|
+
// Plan 0098: the early exit IS the zero-evidence case, stated rather than
|
|
238
|
+
// implied by an empty violation list.
|
|
239
|
+
return { violations: [], examined: 0 };
|
|
118
240
|
}
|
|
119
241
|
const context = {
|
|
120
242
|
rule: this.buildRuleDescription(),
|
|
@@ -127,10 +249,18 @@ export class ResolverRuleBuilder extends TerminalBuilder {
|
|
|
127
249
|
for (const condition of this._conditions) {
|
|
128
250
|
violations.push(...condition.evaluate(filtered, context));
|
|
129
251
|
}
|
|
130
|
-
return violations;
|
|
252
|
+
return { violations, examined: filtered.length };
|
|
131
253
|
}
|
|
132
254
|
getElements() {
|
|
133
|
-
|
|
255
|
+
// Object-literal collection is opt-in for `functions()`, where turning it on
|
|
256
|
+
// by default would flood every rule with inline callbacks. Here it is the
|
|
257
|
+
// opposite: a GraphQL resolver map IS an object literal
|
|
258
|
+
// (`{ Query: { assetCollection: async () => {} } }`), so without this the
|
|
259
|
+
// builder named `resolvers()` selects the helper functions that happen to
|
|
260
|
+
// sit beside the resolvers and none of the resolvers themselves — measured
|
|
261
|
+
// on a real schema as 60 subjects, 0 of them resolvers. Every rule written
|
|
262
|
+
// against it then passes on the wrong subjects (ADR-008).
|
|
263
|
+
return this.sourceFiles.flatMap((sf) => collectFunctions(sf, { includeObjectLiteralFunctions: true }));
|
|
134
264
|
}
|
|
135
265
|
buildRuleDescription() {
|
|
136
266
|
const predicateDesc = this._predicates.map((p) => p.description).join(' and ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-rule-builder.js","sourceRoot":"","sources":["../../src/graphql/resolver-rule-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolver-rule-builder.js","sourceRoot":"","sources":["../../src/graphql/resolver-rule-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,12 @@ export interface GraphQLArgumentLike {
|
|
|
50
50
|
export interface GraphQLTypeLike {
|
|
51
51
|
readonly toString: () => string;
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* GraphQL package interface — the subset of functions we use.
|
|
55
|
+
*/
|
|
56
|
+
interface GraphQLPackage {
|
|
57
|
+
buildSchema: (sdl: string) => GraphQLSchemaLike;
|
|
58
|
+
}
|
|
53
59
|
/**
|
|
54
60
|
* Load and parse .graphql files matching a glob pattern relative to a root directory.
|
|
55
61
|
*
|
|
@@ -72,4 +78,19 @@ export declare function loadSchemaFromSDL(sdl: string, sourcePath?: string): Loa
|
|
|
72
78
|
* Used by the runtime guard in the barrel export.
|
|
73
79
|
*/
|
|
74
80
|
export declare function isGraphQLAvailable(): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Replace how `graphql` is loaded. **Tests only** —
|
|
83
|
+
* [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):
|
|
84
|
+
* `vi.doMock('node:module', ...)` intercepts a Node builtin, which is not
|
|
85
|
+
* reliably isolated per-file under Vitest's worker-reuse defaults and failed
|
|
86
|
+
* intermittently under full-suite load. This seam replaces only this
|
|
87
|
+
* module's own loading step — nothing shared with any other file to race on.
|
|
88
|
+
*/
|
|
89
|
+
export declare function setGraphQLLoaderForTests(loader: () => GraphQLPackage): void;
|
|
90
|
+
/**
|
|
91
|
+
* Restore the real loader and clear the cached package. **Tests only** — see
|
|
92
|
+
* {@link setGraphQLLoaderForTests}.
|
|
93
|
+
*/
|
|
94
|
+
export declare function resetGraphQLLoaderForTests(): void;
|
|
95
|
+
export {};
|
|
75
96
|
//# sourceMappingURL=schema-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../../src/graphql/schema-loader.ts"],"names":[],"mappings":"AAKA;;;;;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;
|
|
1
|
+
{"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../../src/graphql/schema-loader.ts"],"names":[],"mappings":"AAKA;;;;;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;AA8ED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAwB9E;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"}
|