@nielspeter/eess-ts 0.4.0 → 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/dist/builders/call-rule-builder.d.ts.map +1 -1
- package/dist/builders/call-rule-builder.js +2 -1
- package/dist/builders/call-rule-builder.js.map +1 -1
- package/dist/builders/class-rule-builder.d.ts.map +1 -1
- package/dist/builders/class-rule-builder.js +7 -25
- package/dist/builders/class-rule-builder.js.map +1 -1
- package/dist/builders/correspondence-builder.d.ts.map +1 -1
- package/dist/builders/correspondence-builder.js +6 -14
- package/dist/builders/correspondence-builder.js.map +1 -1
- package/dist/builders/cross-layer-builder.d.ts.map +1 -1
- package/dist/builders/cross-layer-builder.js +7 -6
- package/dist/builders/cross-layer-builder.js.map +1 -1
- package/dist/builders/function-rule-builder.d.ts.map +1 -1
- package/dist/builders/function-rule-builder.js +4 -13
- package/dist/builders/function-rule-builder.js.map +1 -1
- package/dist/builders/module-rule-builder.d.ts.map +1 -1
- package/dist/builders/module-rule-builder.js +4 -16
- package/dist/builders/module-rule-builder.js.map +1 -1
- package/dist/builders/slice-rule-builder.d.ts.map +1 -1
- package/dist/builders/slice-rule-builder.js +4 -3
- package/dist/builders/slice-rule-builder.js.map +1 -1
- package/dist/builders/type-rule-builder.d.ts.map +1 -1
- package/dist/builders/type-rule-builder.js +4 -13
- package/dist/builders/type-rule-builder.js.map +1 -1
- package/dist/cli/commands/baseline.d.ts +5 -1
- package/dist/cli/commands/baseline.d.ts.map +1 -1
- package/dist/cli/commands/baseline.js +47 -5
- package/dist/cli/commands/baseline.js.map +1 -1
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +155 -13
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/doctor.js +1 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/explain.js +1 -1
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/init.js +1 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/import-rule-module.d.ts.map +1 -1
- package/dist/cli/import-rule-module.js +1 -14
- package/dist/cli/import-rule-module.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/load-rules.d.ts.map +1 -1
- package/dist/cli/load-rules.js +5 -4
- 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 +18 -48
- package/dist/cli/resolve-config.js.map +1 -1
- package/dist/cli/rule-file-findings.d.ts.map +1 -1
- package/dist/cli/rule-file-findings.js +60 -2
- package/dist/cli/rule-file-findings.js.map +1 -1
- package/dist/cli/watch.d.ts +13 -43
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +8 -148
- package/dist/cli/watch.js.map +1 -1
- package/dist/conditions/call.d.ts.map +1 -1
- package/dist/conditions/call.js +4 -3
- package/dist/conditions/call.js.map +1 -1
- package/dist/conditions/cross-layer.js +2 -2
- package/dist/conditions/cross-layer.js.map +1 -1
- package/dist/conditions/dependency.js +2 -2
- package/dist/conditions/dependency.js.map +1 -1
- package/dist/conditions/exports.d.ts.map +1 -1
- package/dist/conditions/exports.js +31 -37
- package/dist/conditions/exports.js.map +1 -1
- package/dist/conditions/function.js +1 -1
- package/dist/conditions/function.js.map +1 -1
- package/dist/conditions/jsx.js +1 -1
- package/dist/conditions/jsx.js.map +1 -1
- package/dist/conditions/members.d.ts.map +1 -1
- package/dist/conditions/members.js +3 -2
- package/dist/conditions/members.js.map +1 -1
- package/dist/conditions/reverse-dependency.d.ts.map +1 -1
- package/dist/conditions/reverse-dependency.js +47 -2
- package/dist/conditions/reverse-dependency.js.map +1 -1
- package/dist/conditions/slice.js +1 -1
- package/dist/conditions/slice.js.map +1 -1
- package/dist/conditions/structural.js +1 -1
- package/dist/conditions/structural.js.map +1 -1
- package/dist/core/check-all.d.ts.map +1 -1
- package/dist/core/check-all.js +61 -7
- package/dist/core/check-all.js.map +1 -1
- package/dist/core/combinators.d.ts.map +1 -1
- package/dist/core/combinators.js +20 -27
- package/dist/core/combinators.js.map +1 -1
- package/dist/core/descendant-cache.d.ts.map +1 -1
- package/dist/core/descendant-cache.js +5 -7
- package/dist/core/descendant-cache.js.map +1 -1
- package/dist/core/diagnose.js +15 -7
- package/dist/core/diagnose.js.map +1 -1
- package/dist/core/disk-set.js +1 -1
- package/dist/core/disk-set.js.map +1 -1
- package/dist/core/element-cache.js +1 -1
- package/dist/core/element-cache.js.map +1 -1
- package/dist/core/exclusion-comments.d.ts +15 -50
- package/dist/core/exclusion-comments.d.ts.map +1 -1
- package/dist/core/exclusion-comments.js +4 -307
- package/dist/core/exclusion-comments.js.map +1 -1
- package/dist/core/execute-rule.d.ts +8 -0
- package/dist/core/execute-rule.d.ts.map +1 -1
- package/dist/core/execute-rule.js +99 -13
- package/dist/core/execute-rule.js.map +1 -1
- package/dist/core/glob-evaluator.js +2 -2
- package/dist/core/glob-evaluator.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.map +1 -1
- package/dist/core/line-index.js +6 -8
- package/dist/core/line-index.js.map +1 -1
- package/dist/core/metric-violation.d.ts +1 -1
- package/dist/core/module-edges.d.ts.map +1 -1
- package/dist/core/module-edges.js +26 -25
- package/dist/core/module-edges.js.map +1 -1
- package/dist/core/orphan-exclusions.d.ts.map +1 -1
- package/dist/core/orphan-exclusions.js +15 -5
- package/dist/core/orphan-exclusions.js.map +1 -1
- package/dist/core/path-universe.d.ts +10 -42
- package/dist/core/path-universe.d.ts.map +1 -1
- package/dist/core/path-universe.js +0 -20
- package/dist/core/path-universe.js.map +1 -1
- package/dist/core/project.d.ts.map +1 -1
- package/dist/core/project.js +6 -5
- package/dist/core/project.js.map +1 -1
- package/dist/core/rule-builder.d.ts +22 -1
- package/dist/core/rule-builder.d.ts.map +1 -1
- package/dist/core/rule-builder.js +38 -20
- package/dist/core/rule-builder.js.map +1 -1
- package/dist/core/rule-declaration.d.ts.map +1 -1
- package/dist/core/rule-declaration.js +14 -52
- package/dist/core/rule-declaration.js.map +1 -1
- package/dist/core/terminal-builder.d.ts +17 -13
- package/dist/core/terminal-builder.d.ts.map +1 -1
- package/dist/core/terminal-builder.js +41 -21
- package/dist/core/terminal-builder.js.map +1 -1
- package/dist/core/terminal-execution.d.ts +22 -6
- package/dist/core/terminal-execution.d.ts.map +1 -1
- package/dist/core/terminal-execution.js +39 -7
- package/dist/core/terminal-execution.js.map +1 -1
- 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.js +1 -1
- package/dist/core/vacuity-diagnosis.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 +1 -0
- package/dist/graphql/index.js.map +1 -1
- package/dist/graphql/resolver-rule-builder.d.ts +22 -76
- package/dist/graphql/resolver-rule-builder.d.ts.map +1 -1
- package/dist/graphql/resolver-rule-builder.js +8 -130
- package/dist/graphql/resolver-rule-builder.js.map +1 -1
- package/dist/graphql/schema-loader.d.ts.map +1 -1
- package/dist/graphql/schema-loader.js +4 -3
- 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 +21 -67
- package/dist/graphql/schema-rule-builder.d.ts.map +1 -1
- package/dist/graphql/schema-rule-builder.js +6 -120
- package/dist/graphql/schema-rule-builder.js.map +1 -1
- package/dist/helpers/baseline-generator.d.ts +9 -0
- package/dist/helpers/baseline-generator.d.ts.map +1 -1
- package/dist/helpers/baseline-generator.js +9 -0
- package/dist/helpers/baseline-generator.js.map +1 -1
- package/dist/helpers/baseline.d.ts.map +1 -1
- package/dist/helpers/baseline.js +4 -4
- package/dist/helpers/baseline.js.map +1 -1
- package/dist/helpers/body-traversal.d.ts.map +1 -1
- package/dist/helpers/body-traversal.js +13 -0
- package/dist/helpers/body-traversal.js.map +1 -1
- package/dist/helpers/callback-extractor.js +6 -38
- package/dist/helpers/callback-extractor.js.map +1 -1
- package/dist/helpers/complexity.d.ts +1 -1
- package/dist/helpers/complexity.js +1 -1
- package/dist/helpers/diff-aware.d.ts +11 -39
- package/dist/helpers/diff-aware.d.ts.map +1 -1
- package/dist/helpers/diff-aware.js +11 -79
- package/dist/helpers/diff-aware.js.map +1 -1
- package/dist/helpers/matchers.d.ts.map +1 -1
- package/dist/helpers/matchers.js +51 -67
- package/dist/helpers/matchers.js.map +1 -1
- package/dist/index.d.ts +15 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -18
- package/dist/index.js.map +1 -1
- package/dist/models/arch-function.d.ts +26 -2
- package/dist/models/arch-function.d.ts.map +1 -1
- package/dist/models/arch-function.js +51 -17
- 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 +16 -17
- package/dist/models/arch-jsx-element.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/presets/agent-guardrails.d.ts +29 -3
- package/dist/presets/agent-guardrails.d.ts.map +1 -1
- package/dist/presets/agent-guardrails.js +185 -1
- package/dist/presets/agent-guardrails.js.map +1 -1
- package/dist/presets/boundaries.d.ts +2 -2
- package/dist/presets/boundaries.d.ts.map +1 -1
- package/dist/presets/data-layer.d.ts +2 -2
- package/dist/presets/data-layer.d.ts.map +1 -1
- package/dist/presets/index.d.ts +4 -1
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +11 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/layered.d.ts +2 -2
- package/dist/presets/layered.d.ts.map +1 -1
- package/dist/presets/recommended.d.ts +3 -3
- package/dist/presets/recommended.d.ts.map +1 -1
- package/dist/presets/shared.d.ts +8 -11
- package/dist/presets/shared.d.ts.map +1 -1
- package/dist/presets/shared.js +57 -28
- package/dist/presets/shared.js.map +1 -1
- package/dist/rules/metrics-function.d.ts.map +1 -1
- package/dist/rules/metrics-function.js +59 -62
- package/dist/rules/metrics-function.js.map +1 -1
- package/dist/rules/metrics.d.ts.map +1 -1
- package/dist/rules/metrics.js +62 -59
- 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 +38 -4
- package/dist/smells/duplicate-bodies.d.ts.map +1 -1
- package/dist/smells/duplicate-bodies.js +93 -44
- 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 +12 -0
- package/dist/smells/fingerprint.d.ts.map +1 -1
- package/dist/smells/fingerprint.js +8 -2
- package/dist/smells/fingerprint.js.map +1 -1
- package/dist/smells/inconsistent-siblings.js +1 -1
- package/dist/smells/inconsistent-siblings.js.map +1 -1
- package/dist/smells/similar-pairs.d.ts +9 -8
- package/dist/smells/similar-pairs.d.ts.map +1 -1
- package/dist/smells/similar-pairs.js +83 -1
- package/dist/smells/similar-pairs.js.map +1 -1
- package/dist/smells/smell-builder.d.ts.map +1 -1
- package/dist/smells/smell-builder.js +3 -2
- 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/tsconfig-builder.d.ts.map +1 -1
- package/dist/tsconfig/tsconfig-builder.js +3 -2
- package/dist/tsconfig/tsconfig-builder.js.map +1 -1
- package/package.json +3 -2
package/dist/presets/index.d.ts
CHANGED
|
@@ -10,6 +10,9 @@ export type { AgentGuardrailsOptions } from './agent-guardrails.js';
|
|
|
10
10
|
export { agentGuardrails } from './agent-guardrails.js';
|
|
11
11
|
export type { RecommendedOptions } from './recommended.js';
|
|
12
12
|
export { recommended } from './recommended.js';
|
|
13
|
-
export { dispatchRule
|
|
13
|
+
export { dispatchRule } from '@nielspeter/eess';
|
|
14
|
+
export { finishPreset } from '@nielspeter/eess';
|
|
15
|
+
export type { PresetReportOptions, ReportMode } from '@nielspeter/eess';
|
|
16
|
+
export type { CollectResult } from '@nielspeter/eess';
|
|
14
17
|
export type { PresetDelivery } from './shared.js';
|
|
15
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,YAAY,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,YAAY,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAO9C,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,YAAY,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,YAAY,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAO9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAW/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAS/C,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAevE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAMrD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/presets/index.js
CHANGED
|
@@ -9,5 +9,15 @@ export { recommended } from './recommended.js';
|
|
|
9
9
|
// import of either from `@nielspeter/eess-ts/presets` was a link-time error that
|
|
10
10
|
// no changeset declared. Found by an adopter review diffing every subpath, not
|
|
11
11
|
// just `.`.
|
|
12
|
-
export { dispatchRule
|
|
12
|
+
export { dispatchRule } from '@nielspeter/eess';
|
|
13
|
+
// `finishPreset` joins it, and the reason is this same subpath's history one
|
|
14
|
+
// paragraph up. Plan 0263 Phase 5 removed `throwIfViolations` from this barrel as well
|
|
15
|
+
// as the two roots, and `finishPreset(v, { report: 'throw' })` is the migration
|
|
16
|
+
// the changeset prints — which did not compile on this barrel, because the alias
|
|
17
|
+
// was published here and its replacement never was. `docs/api-reference.md`
|
|
18
|
+
// documented the alias under "Presets (`eess-ts/presets`)", so the adopter who
|
|
19
|
+
// followed the docs is exactly the one the migration would have failed. Found by
|
|
20
|
+
// an adopter review, the second time this subpath has been audited separately
|
|
21
|
+
// from the root and the second time that was the only way to see it.
|
|
22
|
+
export { finishPreset } from '@nielspeter/eess';
|
|
13
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,+EAA+E;AAC/E,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,+EAA+E;AAC/E,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,6EAA6E;AAC7E,uFAAuF;AACvF,gFAAgF;AAChF,iFAAiF;AACjF,4EAA4E;AAC5E,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAC9E,qEAAqE;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectResult } from '@nielspeter/eess';
|
|
2
2
|
import type { ImportOptions } from '../core/import-options.js';
|
|
3
3
|
import type { ArchProject } from '../core/project.js';
|
|
4
4
|
import type { RuleBuilderLike } from '@nielspeter/eess';
|
|
@@ -60,6 +60,6 @@ declare const RULE_IDS: readonly ["preset/layered/layer-order", "preset/layered/
|
|
|
60
60
|
export declare function layeredArchitecture(p: ArchProject, options: LayeredArchitectureOptions & {
|
|
61
61
|
report: 'builders';
|
|
62
62
|
}): RuleBuilderLike[];
|
|
63
|
-
export declare function layeredArchitecture(p: ArchProject, options: LayeredArchitectureOptions):
|
|
63
|
+
export declare function layeredArchitecture(p: ArchProject, options: LayeredArchitectureOptions): CollectResult;
|
|
64
64
|
export {};
|
|
65
65
|
//# sourceMappingURL=layered.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layered.d.ts","sourceRoot":"","sources":["../../src/presets/layered.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAKvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AASpD,+EAA+E;AAC/E,KAAK,yBAAyB,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB,CAAC,yBAAyB,CAAC;IAC9F,sGAAsG;IACtG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,wFAAwF;IACxF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,kHAAkH;IAClH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED,QAAA,MAAM,QAAQ,qLAMJ,CAAA;AAgGV;;;GAGG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,WAAW,EACd,OAAO,EAAE,0BAA0B,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAC3D,eAAe,EAAE,CAAA;AACpB,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,WAAW,EACd,OAAO,EAAE,0BAA0B,GAClC,aAAa,
|
|
1
|
+
{"version":3,"file":"layered.d.ts","sourceRoot":"","sources":["../../src/presets/layered.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAKvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AASpD,+EAA+E;AAC/E,KAAK,yBAAyB,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB,CAAC,yBAAyB,CAAC;IAC9F,sGAAsG;IACtG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,wFAAwF;IACxF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,kHAAkH;IAClH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED,QAAA,MAAM,QAAQ,qLAMJ,CAAA;AAgGV;;;GAGG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,WAAW,EACd,OAAO,EAAE,0BAA0B,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAC3D,eAAe,EAAE,CAAA;AACpB,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,WAAW,EACd,OAAO,EAAE,0BAA0B,GAClC,aAAa,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectResult } from '@nielspeter/eess';
|
|
2
2
|
import type { ArchProject } from '../core/project.js';
|
|
3
3
|
import type { Condition } from '@nielspeter/eess';
|
|
4
4
|
import type { ArchFunction } from '../models/arch-function.js';
|
|
@@ -62,7 +62,7 @@ declare const SPECS: readonly [{
|
|
|
62
62
|
/**
|
|
63
63
|
* Derived from `SPECS`, never restated. A hand-written union is a second list
|
|
64
64
|
* that drifts the moment a rule is added — which is the whole shape of
|
|
65
|
-
* [bug 0157](../../../../work/bugs/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md)
|
|
65
|
+
* [bug 0157](../../../../work/bugs/fixed/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md)
|
|
66
66
|
* and of the census in plan 0078.
|
|
67
67
|
*/
|
|
68
68
|
type RecommendedRuleId = (typeof SPECS)[number]['meta']['id'];
|
|
@@ -99,6 +99,6 @@ type RecommendedRuleId = (typeof SPECS)[number]['meta']['id'];
|
|
|
99
99
|
export declare function recommended(p: ArchProject, options: RecommendedOptions & {
|
|
100
100
|
report: 'builders';
|
|
101
101
|
}): RuleBuilderLike[];
|
|
102
|
-
export declare function recommended(p: ArchProject, options?: RecommendedOptions):
|
|
102
|
+
export declare function recommended(p: ArchProject, options?: RecommendedOptions): CollectResult;
|
|
103
103
|
export {};
|
|
104
104
|
//# sourceMappingURL=recommended.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../src/presets/recommended.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAK9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAUpD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC;IAC9E;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAQD;;;;GAIG;AACH,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC6B,CAAA;AAExC;;;;;GAKG;AACH,KAAK,iBAAiB,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AAI7D;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,WAAW,EACd,OAAO,EAAE,kBAAkB,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACnD,eAAe,EAAE,CAAA;AACpB,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../src/presets/recommended.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAK9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAUpD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC;IAC9E;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAQD;;;;GAIG;AACH,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC6B,CAAA;AAExC;;;;;GAKG;AACH,KAAK,iBAAiB,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AAI7D;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,WAAW,EACd,OAAO,EAAE,kBAAkB,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACnD,eAAe,EAAE,CAAA;AACpB,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,aAAa,CAAA"}
|
package/dist/presets/shared.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ReportMode, OutputFormat } from '@nielspeter/eess';
|
|
2
|
+
import type { CollectResult } from '@nielspeter/eess';
|
|
2
3
|
/**
|
|
3
4
|
* What a preset can be asked to do with its rules.
|
|
4
5
|
*
|
|
@@ -8,6 +9,7 @@ import type { ArchViolation, ReportMode, OutputFormat } from '@nielspeter/eess';
|
|
|
8
9
|
* means the kernel's three emission modes stay exactly three.
|
|
9
10
|
*/
|
|
10
11
|
export type PresetDelivery = ReportMode | 'builders';
|
|
12
|
+
import { validateOverrides } from '@nielspeter/eess';
|
|
11
13
|
import type { Predicate } from '@nielspeter/eess';
|
|
12
14
|
import type { Located } from '../predicates/identity.js';
|
|
13
15
|
import type { RuleMetadata } from '@nielspeter/eess';
|
|
@@ -23,7 +25,7 @@ interface PresetRule {
|
|
|
23
25
|
asSeverity(level: 'error' | 'warn'): this;
|
|
24
26
|
/** Plan 0089's carrier — hoisted to `TerminalBuilder` by plan 0097, so every preset rule has it. */
|
|
25
27
|
expectEmpty(): this;
|
|
26
|
-
violations():
|
|
28
|
+
violations(): CollectResult;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Resolve a preset rule's effective severity and return it as a configured,
|
|
@@ -82,7 +84,7 @@ export declare function assertDiscovered(discovered: readonly unknown[], finding
|
|
|
82
84
|
*
|
|
83
85
|
* `TRuleId` is that preset's own rule ids as a literal union, so a misspelled
|
|
84
86
|
* override key is a **compile error** rather than a silent no-op
|
|
85
|
-
* ([bug 0157](../../../../work/bugs/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md)).
|
|
87
|
+
* ([bug 0157](../../../../work/bugs/fixed/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md)).
|
|
86
88
|
* Measured before this: `'…/no-silent-cach': 'error'` left the rule at `warn`
|
|
87
89
|
* and the build green — the escalation the author asked for simply did not
|
|
88
90
|
* happen, and the only trace was a line on stderr.
|
|
@@ -98,7 +100,7 @@ export declare function assertDiscovered(discovered: readonly unknown[], finding
|
|
|
98
100
|
*/
|
|
99
101
|
/**
|
|
100
102
|
* An unknown override key, as a failing configuration finding —
|
|
101
|
-
* [bug 0157](../../../../work/bugs/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md).
|
|
103
|
+
* [bug 0157](../../../../work/bugs/fixed/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md).
|
|
102
104
|
*
|
|
103
105
|
* `validateOverrides` writes a line to stderr and returns `void`. That is not a
|
|
104
106
|
* signal: measured, `'…/no-silent-cach': 'error'` left the rule at `warn`, the
|
|
@@ -230,11 +232,6 @@ export interface PresetBaseOptions<TRuleId extends string = string> {
|
|
|
230
232
|
*/
|
|
231
233
|
expectEmpty?: readonly TRuleId[];
|
|
232
234
|
}
|
|
233
|
-
/**
|
|
234
|
-
* Validate override keys against known rule IDs.
|
|
235
|
-
* Warns for unrecognized keys (likely typos).
|
|
236
|
-
*/
|
|
237
|
-
export declare function validateOverrides(overrides: Partial<Record<string, RuleSeverity>> | undefined, knownIds: readonly string[]): void;
|
|
238
235
|
/**
|
|
239
236
|
* Match a user-supplied glob against the file path **or** its parent directory.
|
|
240
237
|
*
|
|
@@ -266,6 +263,6 @@ export declare function deliver(builders: RuleBuilderLike[], options: {
|
|
|
266
263
|
report?: PresetDelivery;
|
|
267
264
|
format?: OutputFormat;
|
|
268
265
|
reason?: string;
|
|
269
|
-
} | undefined): RuleBuilderLike[] |
|
|
270
|
-
export {};
|
|
266
|
+
} | undefined): RuleBuilderLike[] | CollectResult;
|
|
267
|
+
export { validateOverrides };
|
|
271
268
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/presets/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/presets/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/presets/shared.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { finishPreset, ArchRuleError } from '@nielspeter/eess';
|
|
1
|
+
import { finishPreset, ArchRuleError, validateOverrides, mergeCollectResults, collectResult, } from '@nielspeter/eess';
|
|
2
2
|
import { callerAggregates } from '../core/execute-rule.js';
|
|
3
|
-
import { UNSUPPRESSABLE } from '@nielspeter/eess';
|
|
3
|
+
import { UNSUPPRESSABLE } from '@nielspeter/eess/internal';
|
|
4
4
|
import { resideInFile, resideInFolder } from '../predicates/identity.js';
|
|
5
5
|
import { or } from '../core/combinators.js';
|
|
6
|
-
import { writeStderr } from '@nielspeter/eess';
|
|
7
6
|
/**
|
|
8
7
|
* Resolve a preset rule's effective severity and return it as a configured,
|
|
9
8
|
* UN-executed builder for the caller to spread into a rule array. `'off'` →
|
|
@@ -79,14 +78,18 @@ export function assertDiscovered(discovered, finding) {
|
|
|
79
78
|
severity: 'error',
|
|
80
79
|
bypassFilters: true,
|
|
81
80
|
};
|
|
82
|
-
|
|
81
|
+
// `examined: 0` and honest: these are CONFIGURATION findings, not rules that
|
|
82
|
+
// examined units. The receipt carries a violation, so the emitter's evidence
|
|
83
|
+
// gate passes it through untouched (ADR-014 §4 — a value already carrying a
|
|
84
|
+
// finding is red, and the emitter adds nothing to it).
|
|
85
|
+
return [{ violations: () => collectResult([violation], { examined: 0 }) }];
|
|
83
86
|
}
|
|
84
87
|
/**
|
|
85
88
|
* Options every preset accepts.
|
|
86
89
|
*
|
|
87
90
|
* `TRuleId` is that preset's own rule ids as a literal union, so a misspelled
|
|
88
91
|
* override key is a **compile error** rather than a silent no-op
|
|
89
|
-
* ([bug 0157](../../../../work/bugs/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md)).
|
|
92
|
+
* ([bug 0157](../../../../work/bugs/fixed/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md)).
|
|
90
93
|
* Measured before this: `'…/no-silent-cach': 'error'` left the rule at `warn`
|
|
91
94
|
* and the build green — the escalation the author asked for simply did not
|
|
92
95
|
* happen, and the only trace was a line on stderr.
|
|
@@ -102,7 +105,7 @@ export function assertDiscovered(discovered, finding) {
|
|
|
102
105
|
*/
|
|
103
106
|
/**
|
|
104
107
|
* An unknown override key, as a failing configuration finding —
|
|
105
|
-
* [bug 0157](../../../../work/bugs/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md).
|
|
108
|
+
* [bug 0157](../../../../work/bugs/fixed/0157-a-typo-in-a-preset-override-key-is-a-silent-false-green.md).
|
|
106
109
|
*
|
|
107
110
|
* `validateOverrides` writes a line to stderr and returns `void`. That is not a
|
|
108
111
|
* signal: measured, `'…/no-silent-cach': 'error'` left the rule at `warn`, the
|
|
@@ -145,7 +148,11 @@ export function overrideFindings(overrides, knownIds) {
|
|
|
145
148
|
UNSUPPRESSABLE,
|
|
146
149
|
bypassFilters: true,
|
|
147
150
|
}));
|
|
148
|
-
|
|
151
|
+
// `examined: 0` and honest: these are CONFIGURATION findings, not rules that
|
|
152
|
+
// examined units. The receipt carries a violation, so the emitter's evidence
|
|
153
|
+
// gate passes it through untouched (ADR-014 §4 — a value already carrying a
|
|
154
|
+
// finding is red, and the emitter adds nothing to it).
|
|
155
|
+
return [{ violations: () => collectResult(violations, { examined: 0 }) }];
|
|
149
156
|
}
|
|
150
157
|
/**
|
|
151
158
|
* Findings for `expectEmpty` ids that bind to no constructed rule — plan 0089.
|
|
@@ -203,7 +210,11 @@ export function declaredEmptyFindings(expectEmpty, constructedIds) {
|
|
|
203
210
|
suggestion,
|
|
204
211
|
bypassFilters: true,
|
|
205
212
|
}));
|
|
206
|
-
|
|
213
|
+
// `examined: 0` and honest: these are CONFIGURATION findings, not rules that
|
|
214
|
+
// examined units. The receipt carries a violation, so the emitter's evidence
|
|
215
|
+
// gate passes it through untouched (ADR-014 §4 — a value already carrying a
|
|
216
|
+
// finding is red, and the emitter adds nothing to it).
|
|
217
|
+
return [{ violations: () => collectResult(violations, { examined: 0 }) }];
|
|
207
218
|
}
|
|
208
219
|
/**
|
|
209
220
|
* Guard a preset's *construction* step (plan 0100): every rule this preset can
|
|
@@ -253,22 +264,11 @@ export function assertEnabled(attempted, otherFindings, finding) {
|
|
|
253
264
|
suggestion: `Set at least one of: ${finding.optionsHint}. ` + UNSUPPRESSABLE,
|
|
254
265
|
bypassFilters: true,
|
|
255
266
|
};
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
*/
|
|
262
|
-
export function validateOverrides(overrides, knownIds) {
|
|
263
|
-
if (!overrides)
|
|
264
|
-
return;
|
|
265
|
-
const knownSet = new Set(knownIds);
|
|
266
|
-
for (const key of Object.keys(overrides)) {
|
|
267
|
-
if (!knownSet.has(key)) {
|
|
268
|
-
writeStderr(`[eess] Override key '${key}' does not match any rule in this preset. ` +
|
|
269
|
-
`Available rules: ${knownIds.join(', ')}`);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
267
|
+
// `examined: 0` and honest: these are CONFIGURATION findings, not rules that
|
|
268
|
+
// examined units. The receipt carries a violation, so the emitter's evidence
|
|
269
|
+
// gate passes it through untouched (ADR-014 §4 — a value already carrying a
|
|
270
|
+
// finding is red, and the emitter adds nothing to it).
|
|
271
|
+
return [{ violations: () => collectResult([violation], { examined: 0 }) }];
|
|
272
272
|
}
|
|
273
273
|
/**
|
|
274
274
|
* Match a user-supplied glob against the file path **or** its parent directory.
|
|
@@ -308,7 +308,19 @@ export function deliver(builders, options) {
|
|
|
308
308
|
// options enforces, which is what ADR-008 states and what the docs teach.
|
|
309
309
|
if (options?.report === 'builders')
|
|
310
310
|
return builders;
|
|
311
|
-
|
|
311
|
+
// `flatMap` would drop every receipt's evidence on the floor — the exact site
|
|
312
|
+
// plan 0235's Phase 3 names. The kernel merge is fail-closed and is the only
|
|
313
|
+
// place the `examined` sum and the sourceEmpty/declaredEmpty precedence are
|
|
314
|
+
// stated once (bug 0205's class is four emitters restating that rule and
|
|
315
|
+
// disagreeing).
|
|
316
|
+
//
|
|
317
|
+
// A preset that constructed NO builders merges zero members: `examined: 0`,
|
|
318
|
+
// no declaration, no violations — and the emitter's gate then produces
|
|
319
|
+
// `emitter/pass-without-evidence`. That is the all-off case (bug 0261)
|
|
320
|
+
// falling out of the contract rather than needing a guard of its own, which
|
|
321
|
+
// is what ADR-014 §3's 2026-09-05 amendment settled: a declaration is one a
|
|
322
|
+
// caller made, never one eess infers from a config.
|
|
323
|
+
const violations = mergeCollectResults(builders.map((b) => b.violations()));
|
|
312
324
|
const mode = options?.report ?? 'throw';
|
|
313
325
|
// **Bug 0203 — enforce, but let an aggregating caller do the reporting.**
|
|
314
326
|
//
|
|
@@ -326,9 +338,21 @@ export function deliver(builders, options) {
|
|
|
326
338
|
// choices about emission that a caller made on purpose, and `'warn'`'s
|
|
327
339
|
// violations do NOT ride a throw — suppressing them here would lose them.
|
|
328
340
|
if (mode === 'throw' && callerAggregates()) {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
341
|
+
// **The gate runs here too — bug 0206.** This branch used to return before
|
|
342
|
+
// `finishPreset` was ever called, so everything the finisher adds was
|
|
343
|
+
// invisible to an aggregating caller: an all-off preset threw nothing and
|
|
344
|
+
// reported nothing under `eess-ts check`, while the same preset on the
|
|
345
|
+
// default path reported correctly. Two doors, two verdicts, and only one of
|
|
346
|
+
// them tested — which is exactly what 0206 is about.
|
|
347
|
+
//
|
|
348
|
+
// `report: 'return'` because the aggregating caller owns emission (bug
|
|
349
|
+
// 0203); only the EMISSION moves, never the verdict. The receipt then rides
|
|
350
|
+
// the throw with the finding already in it, which is 0206's picked
|
|
351
|
+
// direction.
|
|
352
|
+
const gated = finishPreset(violations, { report: 'return' });
|
|
353
|
+
if (gated.length > 0)
|
|
354
|
+
throw new ArchRuleError(gated, options?.reason);
|
|
355
|
+
return gated;
|
|
332
356
|
}
|
|
333
357
|
return finishPreset(violations, {
|
|
334
358
|
report: mode,
|
|
@@ -336,4 +360,9 @@ export function deliver(builders, options) {
|
|
|
336
360
|
reason: options?.reason,
|
|
337
361
|
});
|
|
338
362
|
}
|
|
363
|
+
// The kernel's — this package carried a byte-identical copy differing only in
|
|
364
|
+
// two signature widths, which the kernel adopted. Re-exported (from the ROOT,
|
|
365
|
+
// not `/internal`, so ADR-011 clause 2 is satisfied) because `recommended` and
|
|
366
|
+
// `agent-guardrails` import it from here.
|
|
367
|
+
export { validateOverrides };
|
|
339
368
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/presets/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/presets/shared.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAmB3C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CACzB,OAAmB,EACnB,IAAmC,EACnC,eAA6B,EAC7B,MAAqC,EACrC,WAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,eAAe,CAAA;IACjE,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,EAAE,CAAA;IAClC,6EAA6E;IAC7E,sEAAsE;IACtE,0EAA0E;IAC1E,yCAAyC;IACzC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC1B,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,mBAAmB,EAAE,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;IACpF,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;AAC7F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAU,EACV,EAAU,EACV,MAAqC;IAErC,OAAO,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;AACrF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,EAAU;IAClD,OAAO,kBAAkB,EAAE,6BAA6B,CAAA;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAA8B,EAC9B,OAAqD;IAErD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IACpC,MAAM,SAAS,GAAkB;QAC/B,IAAI,EAAE,OAAO,CAAC,EAAE;QAChB,MAAM,EAAE,OAAO,CAAC,EAAE;QAClB,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,0CAA0C,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,MAAM,EAAE;QACrF,OAAO,EACL,oGAAoG;QACtG,UAAU,EAAE,OAAO,CAAC,MAAM;QAC1B,QAAQ,EAAE,OAAO;QACjB,aAAa,EAAE,IAAI;KACpB,CAAA;IACD,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,uDAAuD;IACvD,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AAC5E,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAA4D,EAC5D,QAA2B;IAE3B,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEnC,MAAM,UAAU,GAAoB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,EAAE,oBAAoB,GAAG,GAAG;QAChC,MAAM,EAAE,mBAAmB,GAAG,EAAE;QAChC,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,CAAC;QACP,OAAO,EACL,iBAAiB,GAAG,yDAAyD;YAC7E,yCAAyC;QAC3C,OAAO,EACL,2EAA2E;YAC3E,sDAAsD;QACxD,4EAA4E;QAC5E,wEAAwE;QACxE,UAAU,EACR,2DAA2D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAClF,cAAc;QAChB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC,CAAA;IACH,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,uDAAuD;IACvD,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AAC3E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAA0C,EAC1C,cAAiC;IAEjC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEnC,8EAA8E;IAC9E,8EAA8E;IAC9E,mEAAmE;IACnE,uEAAuE;IACvE,8EAA8E;IAC9E,0EAA0E;IAC1E,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;IAEtD,6EAA6E;IAC7E,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,UAAU,GACd,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAC5B,CAAC,CAAC,oFAAoF;YACpF,6FAA6F;YAC7F,sFAAsF;YACtF,cAAc;QAChB,CAAC,CAAC,0DAA0D,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC1F,wFAAwF;YACxF,cAAc,CAAA;IAEpB,MAAM,UAAU,GAAoB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,EAAE,uBAAuB,EAAE,GAAG;QAClC,MAAM,EAAE,uBAAuB,EAAE,EAAE;QACnC,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,CAAC;QACP,OAAO,EACL,sBAAsB,EAAE,iDAAiD;YACzE,iCAAiC;QACnC,OAAO,EACL,sFAAsF;YACtF,6EAA6E;QAC/E,UAAU;QACV,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC,CAAA;IACH,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,uDAAuD;IACvD,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,aAAa,CAC3B,SAA4B,EAC5B,aAAyC,EACzC,OAAgE;IAEhE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/D,MAAM,SAAS,GAAkB;QAC/B,IAAI,EAAE,OAAO,CAAC,EAAE;QAChB,MAAM,EAAE,OAAO,CAAC,EAAE;QAClB,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,CAAC;QACP,OAAO,EACL,GAAG,OAAO,CAAC,UAAU,wEAAwE;YAC7F,0FAA0F;YAC1F,iDAAiD;QACnD,OAAO,EACL,uFAAuF;YACvF,qFAAqF;QACvF,UAAU,EAAE,wBAAwB,OAAO,CAAC,WAAW,IAAI,GAAG,cAAc;QAC5E,aAAa,EAAE,IAAI;KACpB,CAAA;IACD,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,uDAAuD;IACvD,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AAC5E,CAAC;AAgED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,MAAM,CAAoB,IAAY,EAAE,MAAe;IACrE,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAI,IAAI,CAAC,EAAE,cAAc,CAAI,IAAI,CAAC,CAAC,CAAA;IACnE,8EAA8E;IAC9E,4EAA4E;IAC5E,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,IAAI,GAAG,EAAE,CAAA;AAC/F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CACrB,QAA2B,EAC3B,OAAwF;IAExF,8EAA8E;IAC9E,+EAA+E;IAC/E,0EAA0E;IAC1E,IAAI,OAAO,EAAE,MAAM,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAA;IACnD,8EAA8E;IAC9E,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,gBAAgB;IAChB,EAAE;IACF,4EAA4E;IAC5E,uEAAuE;IACvE,uEAAuE;IACvE,4EAA4E;IAC5E,4EAA4E;IAC5E,oDAAoD;IACpD,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAC3E,MAAM,IAAI,GAAmB,OAAO,EAAE,MAAM,IAAI,OAAO,CAAA;IAEvD,0EAA0E;IAC1E,EAAE;IACF,+EAA+E;IAC/E,uEAAuE;IACvE,+EAA+E;IAC/E,8EAA8E;IAC9E,6DAA6D;IAC7D,EAAE;IACF,8EAA8E;IAC9E,sEAAsE;IACtE,gDAAgD;IAChD,EAAE;IACF,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,IAAI,IAAI,KAAK,OAAO,IAAI,gBAAgB,EAAE,EAAE,CAAC;QAC3C,2EAA2E;QAC3E,sEAAsE;QACtE,0EAA0E;QAC1E,uEAAuE;QACvE,4EAA4E;QAC5E,qDAAqD;QACrD,EAAE;QACF,uEAAuE;QACvE,4EAA4E;QAC5E,mEAAmE;QACnE,aAAa;QACb,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC5D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACrE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,YAAY,CAAC,UAAU,EAAE;QAC9B,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,MAAM,EAAE,OAAO,EAAE,MAAM;KACxB,CAAC,CAAA;AACJ,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,0CAA0C;AAC1C,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-function.d.ts","sourceRoot":"","sources":["../../src/rules/metrics-function.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"metrics-function.d.ts","sourceRoot":"","sources":["../../src/rules/metrics-function.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AA6DnE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAQhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAU3E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAQhF"}
|
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
import { cyclomaticComplexity, linesOfCode } from '../helpers/complexity.js';
|
|
2
2
|
import { metricViolation } from '../core/metric-violation.js';
|
|
3
|
+
/**
|
|
4
|
+
* A ceiling on one measurement of every function.
|
|
5
|
+
*
|
|
6
|
+
* `maxFunctionComplexity`, `maxFunctionLines` and `maxFunctionParameters` were
|
|
7
|
+
* the same walk three times over — `no-copy-paste` reported them at 96% — and
|
|
8
|
+
* `rules/metrics.ts` carries the class-member twin of this helper.
|
|
9
|
+
*
|
|
10
|
+
* `name` is derived ONCE and used for the message and the identity alike. Two
|
|
11
|
+
* expressions that agree in every branch but one is how bug 0068 happened:
|
|
12
|
+
* `fn.getName() ?? '<anonymous>'` beside a bare `fn.getName()` disagree for an
|
|
13
|
+
* anonymous function, which would have reproduced that defect inside its own
|
|
14
|
+
* fix. One derivation in one place is what makes them unable to disagree.
|
|
15
|
+
*
|
|
16
|
+
* `unit` is threaded rather than derived from `metric`: `lines` kept its name
|
|
17
|
+
* when `linesOfCode` stopped counting comments, and the baseline refuses to
|
|
18
|
+
* compare across a unit change precisely so that silent loosening cannot
|
|
19
|
+
* happen again (bug 0171).
|
|
20
|
+
*/
|
|
21
|
+
function functionCeiling(threshold, spec) {
|
|
22
|
+
return {
|
|
23
|
+
description: spec.description,
|
|
24
|
+
evaluate(elements, context) {
|
|
25
|
+
const violations = [];
|
|
26
|
+
for (const fn of elements) {
|
|
27
|
+
const value = spec.measure(fn);
|
|
28
|
+
if (value <= threshold)
|
|
29
|
+
continue;
|
|
30
|
+
const name = fn.getName() ?? '<anonymous>';
|
|
31
|
+
violations.push(metricViolation(fn.getNode(), {
|
|
32
|
+
metric: spec.metric,
|
|
33
|
+
...(spec.unit === undefined ? {} : { unit: spec.unit }),
|
|
34
|
+
// Long-hand, not `measured,` — see the note in `rules/metrics.ts`.
|
|
35
|
+
measured: value,
|
|
36
|
+
message: spec.message(name, value),
|
|
37
|
+
qualifiedName: name,
|
|
38
|
+
}, context));
|
|
39
|
+
}
|
|
40
|
+
return violations;
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
3
44
|
/**
|
|
4
45
|
* Function must not exceed the given cyclomatic complexity.
|
|
5
46
|
*
|
|
@@ -16,30 +57,12 @@ import { metricViolation } from '../core/metric-violation.js';
|
|
|
16
57
|
* ```
|
|
17
58
|
*/
|
|
18
59
|
export function maxFunctionComplexity(threshold) {
|
|
19
|
-
return {
|
|
60
|
+
return functionCeiling(threshold, {
|
|
20
61
|
description: `have cyclomatic complexity <= ${String(threshold)}`,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (cc > threshold) {
|
|
26
|
-
// ONE derivation, used for the message and the identity alike. Two
|
|
27
|
-
// expressions that agree in every branch but one is how bug 0068
|
|
28
|
-
// happened: `fn.getName() ?? '<anonymous>'` beside a bare
|
|
29
|
-
// `fn.getName()` disagree for an anonymous function, which would have
|
|
30
|
-
// reproduced the same defect inside its own fix.
|
|
31
|
-
const name = fn.getName() ?? '<anonymous>';
|
|
32
|
-
violations.push(metricViolation(fn.getNode(), {
|
|
33
|
-
metric: 'complexity',
|
|
34
|
-
measured: cc,
|
|
35
|
-
message: `${name} has cyclomatic complexity ${String(cc)} (max: ${String(threshold)})`,
|
|
36
|
-
qualifiedName: name,
|
|
37
|
-
}, context));
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return violations;
|
|
41
|
-
},
|
|
42
|
-
};
|
|
62
|
+
metric: 'complexity',
|
|
63
|
+
measure: (fn) => cyclomaticComplexity(fn.getBody()),
|
|
64
|
+
message: (name, cc) => `${name} has cyclomatic complexity ${String(cc)} (max: ${String(threshold)})`,
|
|
65
|
+
});
|
|
43
66
|
}
|
|
44
67
|
/**
|
|
45
68
|
* Function must not exceed the given number of CODE lines — comments and blank
|
|
@@ -53,28 +76,15 @@ export function maxFunctionComplexity(threshold) {
|
|
|
53
76
|
* ```
|
|
54
77
|
*/
|
|
55
78
|
export function maxFunctionLines(threshold) {
|
|
56
|
-
return {
|
|
79
|
+
return functionCeiling(threshold, {
|
|
57
80
|
description: `have no more than ${String(threshold)} code lines`,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
metric: 'lines',
|
|
66
|
-
// `code-lines` since bug 0170 — the metric kept its name when it stopped
|
|
67
|
-
// counting comments, and the baseline must not compare across that.
|
|
68
|
-
unit: 'code-lines',
|
|
69
|
-
measured: loc,
|
|
70
|
-
message: `${name} has ${String(loc)} code lines (max: ${String(threshold)})`,
|
|
71
|
-
qualifiedName: name,
|
|
72
|
-
}, context));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return violations;
|
|
76
|
-
},
|
|
77
|
-
};
|
|
81
|
+
metric: 'lines',
|
|
82
|
+
// `code-lines` since bug 0170 — the metric kept its name when it stopped
|
|
83
|
+
// counting comments, and the baseline must not compare across that.
|
|
84
|
+
unit: 'code-lines',
|
|
85
|
+
measure: (fn) => linesOfCode(fn.getNode()),
|
|
86
|
+
message: (name, loc) => `${name} has ${String(loc)} code lines (max: ${String(threshold)})`,
|
|
87
|
+
});
|
|
78
88
|
}
|
|
79
89
|
/**
|
|
80
90
|
* Function must not have more than the given number of parameters.
|
|
@@ -91,24 +101,11 @@ export function maxFunctionLines(threshold) {
|
|
|
91
101
|
* ```
|
|
92
102
|
*/
|
|
93
103
|
export function maxFunctionParameters(threshold) {
|
|
94
|
-
return {
|
|
104
|
+
return functionCeiling(threshold, {
|
|
95
105
|
description: `have no more than ${String(threshold)} parameters`,
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (params > threshold) {
|
|
101
|
-
const name = fn.getName() ?? '<anonymous>'; // one derivation — see maxFunctionComplexity
|
|
102
|
-
violations.push(metricViolation(fn.getNode(), {
|
|
103
|
-
metric: 'parameters',
|
|
104
|
-
measured: params,
|
|
105
|
-
message: `${name} has ${String(params)} parameters (max: ${String(threshold)}) — use an options object`,
|
|
106
|
-
qualifiedName: name,
|
|
107
|
-
}, context));
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return violations;
|
|
111
|
-
},
|
|
112
|
-
};
|
|
106
|
+
metric: 'parameters',
|
|
107
|
+
measure: (fn) => fn.getParameters().length,
|
|
108
|
+
message: (name, params) => `${name} has ${String(params)} parameters (max: ${String(threshold)}) — use an options object`,
|
|
109
|
+
});
|
|
113
110
|
}
|
|
114
111
|
//# sourceMappingURL=metrics-function.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-function.js","sourceRoot":"","sources":["../../src/rules/metrics-function.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D
|
|
1
|
+
{"version":3,"file":"metrics-function.js","sourceRoot":"","sources":["../../src/rules/metrics-function.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,eAAe,CACtB,SAAiB,EACjB,IAMC;IAED,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,CAAC,QAAwB,EAAE,OAAyB;YAC1D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;gBAC9B,IAAI,KAAK,IAAI,SAAS;oBAAE,SAAQ;gBAChC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,CAAA;gBAC1C,UAAU,CAAC,IAAI,CACb,eAAe,CACb,EAAE,CAAC,OAAO,EAAE,EACZ;oBACE,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBACvD,mEAAmE;oBACnE,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;oBAClC,aAAa,EAAE,IAAI;iBACpB,EACD,OAAO,CACR,CACF,CAAA;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,OAAO,eAAe,CAAC,SAAS,EAAE;QAChC,WAAW,EAAE,iCAAiC,MAAM,CAAC,SAAS,CAAC,EAAE;QACjE,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CACpB,GAAG,IAAI,8BAA8B,MAAM,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,GAAG;KAChF,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,eAAe,CAAC,SAAS,EAAE;QAChC,WAAW,EAAE,qBAAqB,MAAM,CAAC,SAAS,CAAC,aAAa;QAChE,MAAM,EAAE,OAAO;QACf,yEAAyE;QACzE,oEAAoE;QACpE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,QAAQ,MAAM,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,SAAS,CAAC,GAAG;KAC5F,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,OAAO,eAAe,CAAC,SAAS,EAAE;QAChC,WAAW,EAAE,qBAAqB,MAAM,CAAC,SAAS,CAAC,aAAa;QAChE,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,MAAM;QAC1C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CACxB,GAAG,IAAI,QAAQ,MAAM,CAAC,MAAM,CAAC,qBAAqB,MAAM,CAAC,SAAS,CAAC,2BAA2B;KACjG,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/rules/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAKjB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/rules/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAKjB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AA0FnE;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAQtF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,CA2B5E;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAU7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAwBzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAQ5E;AAGD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,uBAAuB,CAAA"}
|