@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
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { selectMatching, recordPredicate, matchingElements } from '@nielspeter/eess/internal';
|
|
2
|
+
import { conditionContextFrom } from '@nielspeter/eess/internal';
|
|
1
3
|
import { assertionAdviceOf, buildRuleDescription, describeRuleOf, globsOf, } from './rule-declaration.js';
|
|
2
4
|
import { TerminalBuilder } from './terminal-builder.js';
|
|
3
|
-
import { assertsCardinality } from '@nielspeter/eess';
|
|
5
|
+
import { assertsCardinality, collectResult } from '@nielspeter/eess';
|
|
4
6
|
/**
|
|
5
7
|
* Abstract base class for the predicate/condition rule builders.
|
|
6
8
|
*
|
|
@@ -117,8 +119,9 @@ export class RuleBuilder extends TerminalBuilder {
|
|
|
117
119
|
* @param opts.identify - map an element to its message metadata (name/file/line)
|
|
118
120
|
*/
|
|
119
121
|
select(opts) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
// The kernel's — this was byte-identical, and the hierarchies differ, so a
|
|
123
|
+
// free function is the only way the two builders can share it.
|
|
124
|
+
return selectMatching(this.getElements(), this._predicates, opts);
|
|
122
125
|
}
|
|
123
126
|
/** This rule as declared — the input every description and advice reads. */
|
|
124
127
|
asDeclared() {
|
|
@@ -245,7 +248,7 @@ export class RuleBuilder extends TerminalBuilder {
|
|
|
245
248
|
// actually receive — not `getElements()`. `filterElements()` is memoized per
|
|
246
249
|
// builder (`element-cache.ts`), so asking here and again inside `evaluate()`
|
|
247
250
|
// walks once.
|
|
248
|
-
return
|
|
251
|
+
return collectResult(this.evaluate(), { examined: this.examinedUnits() });
|
|
249
252
|
}
|
|
250
253
|
/**
|
|
251
254
|
* Units this rule examined — plan 0098: the POST-predicate subjects, which is
|
|
@@ -267,16 +270,33 @@ export class RuleBuilder extends TerminalBuilder {
|
|
|
267
270
|
*/
|
|
268
271
|
addPredicate(predicate) {
|
|
269
272
|
const next = this.copy();
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
// dispatch to conditions in that phase and never land here). Recorded so
|
|
273
|
-
// the assertion-less remedy can say "move it before .should()" — the one
|
|
274
|
-
// state whose fix is not "add a condition" (plan 0070, state 2).
|
|
275
|
-
if (next._phase === 'condition') {
|
|
276
|
-
next._misplaced.push(predicate.description);
|
|
277
|
-
}
|
|
273
|
+
// The kernel's. The two copies differed only in comment wording and braces.
|
|
274
|
+
recordPredicate(predicate, next._predicates, next._misplaced, next._phase);
|
|
278
275
|
return next;
|
|
279
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Register a DUAL-USE method's condition or predicate, according to phase.
|
|
279
|
+
*
|
|
280
|
+
* Sixteen builder methods across four builders wrote this dispatch out —
|
|
281
|
+
* `no-copy-paste` reported them as two clusters at 100%. The dispatch is the
|
|
282
|
+
* only thing they share; the pair handed to it is what each method IS.
|
|
283
|
+
*
|
|
284
|
+
* Both sides are constructed eagerly rather than passed as thunks. Every one
|
|
285
|
+
* of the sixteen pairs is pure object construction — checked, none of the
|
|
286
|
+
* modules they come from (`conditions/structural`, `conditions/class`,
|
|
287
|
+
* `conditions/dependency`, `predicates/identity`, `predicates/module`)
|
|
288
|
+
* throws — so building the unused half costs an object and changes nothing.
|
|
289
|
+
* Thunks would buy laziness nobody needs at the price of two closures per
|
|
290
|
+
* call, and would hide the pair behind a lambda in every reader's way.
|
|
291
|
+
*
|
|
292
|
+
* A dual-use method is NOT the same as a predicate-only one. `areExported()`
|
|
293
|
+
* written after `.should()` still filters and is reported by the assertion
|
|
294
|
+
* gate as a misplaced predicate; a dual-use method written there asserts.
|
|
295
|
+
* That difference is a property of the method, so it stays at the method.
|
|
296
|
+
*/
|
|
297
|
+
dualUse(condition, predicate) {
|
|
298
|
+
return this._phase === 'condition' ? this.addCondition(condition) : this.addPredicate(predicate);
|
|
299
|
+
}
|
|
280
300
|
/**
|
|
281
301
|
* Register a condition. Called by concrete builder methods like
|
|
282
302
|
* `.notContain()`, `.notExist()`, etc.
|
|
@@ -308,7 +328,7 @@ export class RuleBuilder extends TerminalBuilder {
|
|
|
308
328
|
*
|
|
309
329
|
* **The name is historical.** It used to clear the conditions, which is what
|
|
310
330
|
* distinguished it from `copy()`, and that clearing was
|
|
311
|
-
* [bug 0156](../../../../work/bugs/0156-should-twice-silently-drops-the-first-assertion.md):
|
|
331
|
+
* [bug 0156](../../../../work/bugs/fixed/0156-should-twice-silently-drops-the-first-assertion.md):
|
|
312
332
|
* a second `.should()` on a builder that already carried a condition discarded
|
|
313
333
|
* it, so `.should().notExist().should().beExported()` enforced only the second
|
|
314
334
|
* and lost four findings with no output. Measured. Removed in 0.23.0 —
|
|
@@ -337,7 +357,7 @@ export class RuleBuilder extends TerminalBuilder {
|
|
|
337
357
|
*/
|
|
338
358
|
filterElements() {
|
|
339
359
|
// AND semantics — every predicate must match.
|
|
340
|
-
return this.getElements()
|
|
360
|
+
return matchingElements(this.getElements(), this._predicates);
|
|
341
361
|
}
|
|
342
362
|
/**
|
|
343
363
|
* Build the config-level meta-finding for an empty selector under
|
|
@@ -433,13 +453,11 @@ export class RuleBuilder extends TerminalBuilder {
|
|
|
433
453
|
* Call `super.buildConditionContext()` and spread the result.
|
|
434
454
|
*/
|
|
435
455
|
buildConditionContext() {
|
|
436
|
-
return {
|
|
456
|
+
return conditionContextFrom({
|
|
457
|
+
metadata: this._metadata,
|
|
458
|
+
reason: this._reason,
|
|
437
459
|
rule: buildRuleDescription(this.asDeclared()),
|
|
438
|
-
|
|
439
|
-
ruleId: this._metadata?.id,
|
|
440
|
-
suggestion: this._metadata?.suggestion,
|
|
441
|
-
docs: this._metadata?.docs,
|
|
442
|
-
};
|
|
460
|
+
});
|
|
443
461
|
}
|
|
444
462
|
}
|
|
445
463
|
//# sourceMappingURL=rule-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-builder.js","sourceRoot":"","sources":["../../src/core/rule-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rule-builder.js","sourceRoot":"","sources":["../../src/core/rule-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-declaration.d.ts","sourceRoot":"","sources":["../../src/core/rule-declaration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"rule-declaration.d.ts","sourceRoot":"","sources":["../../src/core/rule-declaration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAIvF;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,CAAA;IAClD,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,CAAA;IAClD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EACb;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACxE,SAAS,CAAA;IACb,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC;AAkCD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAInE;AAwBD,8CAA8C;AAC9C,wBAAgB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,QAAQ,EAAE,CAKnE;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAchE;AAED,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,CAOtE"}
|
|
@@ -1,19 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
* Where a glob was written, for the message.
|
|
4
|
-
*
|
|
5
|
-
* The predicate's own description already names the API and the glob
|
|
6
|
-
* (`reside in folder matching "**\/src/x/**"`), so the origin is that
|
|
7
|
-
* description unless one predicate declared several globs — in which case the
|
|
8
|
-
* glob is appended to tell them apart.
|
|
9
|
-
*/
|
|
10
|
-
function describeOrigin(description, glob, siteCount) {
|
|
11
|
-
// Keyed on the COUNT, not on whether the description happens to contain the
|
|
12
|
-
// glob. A variadic predicate's description contains every one of its globs
|
|
13
|
-
// (`import from "**/a/**", "**/b/**"`), so a substring test collapsed the
|
|
14
|
-
// one case this exists to separate.
|
|
15
|
-
return siteCount > 1 ? `${description} ("${glob.glob}")` : description;
|
|
16
|
-
}
|
|
1
|
+
import { declaredGlobsOf } from '@nielspeter/eess/internal';
|
|
2
|
+
import { ruleDescriptionOf, ruleDescriptionFrom } from '@nielspeter/eess/internal';
|
|
17
3
|
/**
|
|
18
4
|
* Advice for predicates that landed after `.should()`.
|
|
19
5
|
*
|
|
@@ -45,14 +31,9 @@ function misplacedPredicateAdvice(declared) {
|
|
|
45
31
|
* Build the rule description from predicates and conditions.
|
|
46
32
|
*/
|
|
47
33
|
export function buildRuleDescription(declared) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (predicateDesc)
|
|
52
|
-
parts.push(`that ${predicateDesc}`);
|
|
53
|
-
if (conditionDesc)
|
|
54
|
-
parts.push(`should ${conditionDesc}`);
|
|
55
|
-
return parts.join(' ');
|
|
34
|
+
// The kernel's. This package's copy differed only in taking a `DeclaredRule`
|
|
35
|
+
// rather than the two lists.
|
|
36
|
+
return ruleDescriptionOf(declared.predicates, declared.conditions);
|
|
56
37
|
}
|
|
57
38
|
/**
|
|
58
39
|
* Build an imperative "Do NOT … / MUST …" sentence for AI-agent system
|
|
@@ -77,27 +58,10 @@ function buildImperative(declared) {
|
|
|
77
58
|
}
|
|
78
59
|
/** The value behind `RuleBuilder.globs()`. */
|
|
79
60
|
export function globsOf(declared) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
trees.push(stampGlobs(predicate.globs, 'selector', (g) =>
|
|
85
|
-
// A preset's `originLabel` names the option the user wrote rather
|
|
86
|
-
// than the calls it expanded into. Used VERBATIM, skipping
|
|
87
|
-
// `describeOrigin`: that appends `("glob")` to disambiguate a
|
|
88
|
-
// predicate holding several sites, and a label already names
|
|
89
|
-
// exactly one option and one glob — left in, the finding read
|
|
90
|
-
// `shared: "**/x/**" ("**/x/**")`.
|
|
91
|
-
predicate.originLabel ?? describeOrigin(predicate.description, g, count)));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
for (const condition of declared.conditions) {
|
|
95
|
-
if (condition.globs) {
|
|
96
|
-
const count = countDeclaredGlobs(condition.globs);
|
|
97
|
-
trees.push(stampGlobs(condition.globs, 'condition', (g) => describeOrigin(condition.description, g, count)));
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return trees;
|
|
61
|
+
// The kernel's, not a copy. This package carried a 94%-similar version whose
|
|
62
|
+
// one real difference — honouring `originLabel` — the kernel has now adopted,
|
|
63
|
+
// so there is nothing left here but the shape of the argument.
|
|
64
|
+
return declaredGlobsOf(declared.predicates, declared.conditions);
|
|
101
65
|
}
|
|
102
66
|
/** The value behind `RuleBuilder.assertionAdvice()`. */
|
|
103
67
|
export function assertionAdviceOf(declared) {
|
|
@@ -114,13 +78,11 @@ export function assertionAdviceOf(declared) {
|
|
|
114
78
|
}
|
|
115
79
|
/** The value behind `RuleBuilder.describeRule()`. */
|
|
116
80
|
export function describeRuleOf(declared) {
|
|
117
|
-
return {
|
|
81
|
+
return ruleDescriptionFrom({
|
|
82
|
+
metadata: declared.metadata,
|
|
83
|
+
reason: declared.reason,
|
|
118
84
|
rule: buildRuleDescription(declared),
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
suggestion: declared.metadata?.suggestion,
|
|
122
|
-
docs: declared.metadata?.docs,
|
|
123
|
-
imperative: declared.metadata?.imperative ?? buildImperative(declared),
|
|
124
|
-
};
|
|
85
|
+
imperativeFallback: buildImperative(declared),
|
|
86
|
+
});
|
|
125
87
|
}
|
|
126
88
|
//# sourceMappingURL=rule-declaration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-declaration.js","sourceRoot":"","sources":["../../src/core/rule-declaration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rule-declaration.js","sourceRoot":"","sources":["../../src/core/rule-declaration.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,17 +11,22 @@ import type { SilentExclusion } from '@nielspeter/eess';
|
|
|
11
11
|
* Part of the extension surface [ts-archunit ADR-010](https://github.com/nielspeter/ts-archunit/blob/main/adr/010-the-extension-surface-is-a-contract.md)
|
|
12
12
|
* rule 1 names as contract, so changing this shape is a breaking change.
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
/**
|
|
15
|
+
* The receipt — re-exported from the kernel, not redeclared.
|
|
16
|
+
*
|
|
17
|
+
* This was a second `CollectResult` interface, forked alongside the rest of the
|
|
18
|
+
* engine (plan 0188 tracks the duplication; bugs 0156, 0163 and 0227 are what it
|
|
19
|
+
* costs). It carried `{ violations, examined }` where the kernel's now carries
|
|
20
|
+
* its evidence on the array itself, and two shapes for one concept is how
|
|
21
|
+
* `declaredEmpty` would reach the kernel's terminal and never the flagship
|
|
22
|
+
* dialect's — plan 0235's D4 exactly: "D4's declaration goes on both terminals'
|
|
23
|
+
* receipts, or the flagship dialect's presets arrive undeclared."
|
|
24
|
+
*
|
|
25
|
+
* Unified here rather than waiting for 0188, because this plan cannot ship a
|
|
26
|
+
* declaration that reaches four dialects and not the fifth.
|
|
27
|
+
*/
|
|
28
|
+
import type { CollectResult } from '@nielspeter/eess';
|
|
29
|
+
export type { CollectResult };
|
|
25
30
|
/**
|
|
26
31
|
* The declaration half of every rule builder: what the author states.
|
|
27
32
|
*
|
|
@@ -559,7 +564,7 @@ export declare abstract class TerminalBuilder extends RuleDeclaration {
|
|
|
559
564
|
* Execute the rule and return violations after exclusion filtering.
|
|
560
565
|
* Does not throw — use for programmatic access (presets, aggregation).
|
|
561
566
|
*/
|
|
562
|
-
violations():
|
|
567
|
+
violations(): CollectResult;
|
|
563
568
|
/**
|
|
564
569
|
* Plan 0090's escalation, per violation. A DEFERRED warning (`_acceptedWarnings`
|
|
565
570
|
* set) stays `warn` only for a violation whose `subjectOf()` is in the accepted
|
|
@@ -621,5 +626,4 @@ export declare abstract class TerminalBuilder extends RuleDeclaration {
|
|
|
621
626
|
zeroSubjectsAdvice(): string;
|
|
622
627
|
protected zeroSubjectsViolation(project: ArchProject | undefined): ArchViolation;
|
|
623
628
|
}
|
|
624
|
-
export {};
|
|
625
629
|
//# sourceMappingURL=terminal-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-builder.d.ts","sourceRoot":"","sources":["../../src/core/terminal-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"terminal-builder.d.ts","sourceRoot":"","sources":["../../src/core/terminal-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { collectWithAssertionGuard as runWithGuard } from './terminal-execution.js';
|
|
2
2
|
import { zeroSubjectsAdviceOf, zeroSubjectsViolationOf } from './vacuity-diagnosis.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { collectResult } from '@nielspeter/eess';
|
|
4
|
+
import { severityFor, subjectOf } from '@nielspeter/eess/internal';
|
|
5
|
+
import { recordExclusions } from '@nielspeter/eess/internal';
|
|
5
6
|
import { executeCheck, executeWarn, applyFilters } from './execute-rule.js';
|
|
6
|
-
import { shallowClone } from '@nielspeter/eess';
|
|
7
|
+
import { shallowClone } from '@nielspeter/eess/internal';
|
|
8
|
+
import { ruleDescriptionFrom } from '@nielspeter/eess/internal';
|
|
7
9
|
/**
|
|
8
10
|
* Declaring both emptiness assertions is a contradiction, and 0069's appendix
|
|
9
11
|
* says it "must fail at build time, not silently pick one".
|
|
@@ -276,15 +278,9 @@ class RuleDeclaration {
|
|
|
276
278
|
*/
|
|
277
279
|
excluding(...patterns) {
|
|
278
280
|
const next = this.copy();
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
next._silentIndices.add(next._exclusions.length - 1);
|
|
283
|
-
}
|
|
284
|
-
else {
|
|
285
|
-
next._exclusions.push(p);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
281
|
+
// The kernel's — this was byte-identical to its `excluding`, and the two
|
|
282
|
+
// builders cannot share it by inheritance because the hierarchies differ.
|
|
283
|
+
recordExclusions(patterns, next._exclusions, next._silentIndices);
|
|
288
284
|
return next;
|
|
289
285
|
}
|
|
290
286
|
/**
|
|
@@ -292,14 +288,12 @@ class RuleDeclaration {
|
|
|
292
288
|
* Used by the `explain` CLI subcommand.
|
|
293
289
|
*/
|
|
294
290
|
describeRule() {
|
|
295
|
-
return {
|
|
291
|
+
return ruleDescriptionFrom({
|
|
292
|
+
metadata: this._metadata,
|
|
293
|
+
reason: this._reason,
|
|
296
294
|
rule: this._metadata?.id ?? 'unnamed',
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
suggestion: this._metadata?.suggestion,
|
|
300
|
-
docs: this._metadata?.docs,
|
|
301
|
-
imperative: this._metadata?.imperative ?? this._reason,
|
|
302
|
-
};
|
|
295
|
+
imperativeFallback: this._reason,
|
|
296
|
+
});
|
|
303
297
|
}
|
|
304
298
|
/**
|
|
305
299
|
* Set this rule's severity, returning a COPY — the held builder is never
|
|
@@ -632,6 +626,7 @@ export class TerminalBuilder extends RuleDeclaration {
|
|
|
632
626
|
expectsEmpty: this._expectEmpty,
|
|
633
627
|
assertsSomething: () => this.assertsSomething(),
|
|
634
628
|
ownsDiscoveryDiagnosis: () => this.ownsDiscoveryDiagnosis(),
|
|
629
|
+
assertsCardinality: () => this.assertsCardinality(),
|
|
635
630
|
collectViolations: () => this.collectViolations(),
|
|
636
631
|
};
|
|
637
632
|
}
|
|
@@ -647,6 +642,11 @@ export class TerminalBuilder extends RuleDeclaration {
|
|
|
647
642
|
metadata: this._metadata,
|
|
648
643
|
exclusions: this._exclusions,
|
|
649
644
|
silentIndices: this._silentIndices,
|
|
645
|
+
// Bug 0258 round 2: an id-less rule still has a sentence, and every
|
|
646
|
+
// builder already implements `describeRule()`. Deferred, because this
|
|
647
|
+
// runs on every terminal call and is read only when an id-less rule meets
|
|
648
|
+
// an exclusion comment it cannot honour.
|
|
649
|
+
describe: () => this.describeRule().rule,
|
|
650
650
|
};
|
|
651
651
|
}
|
|
652
652
|
/** This rule's own account of itself, for `vacuity-diagnosis.ts`. */
|
|
@@ -671,7 +671,27 @@ export class TerminalBuilder extends RuleDeclaration {
|
|
|
671
671
|
* Does not throw — use for programmatic access (presets, aggregation).
|
|
672
672
|
*/
|
|
673
673
|
violations() {
|
|
674
|
+
// The evidence comes from `collectViolations()` directly: the assertion
|
|
675
|
+
// guard returns a bare array of findings (it can ADD a gate finding to a
|
|
676
|
+
// rule that collected nothing), so the denominator has to be read from the
|
|
677
|
+
// rule's own receipt rather than from what survived the gates.
|
|
678
|
+
//
|
|
679
|
+
// **The declaration travels with it — D4.** "D4's declaration goes on both
|
|
680
|
+
// terminals' receipts, or the flagship dialect's presets arrive undeclared."
|
|
681
|
+
// Unifying the TYPE across the two terminals is not enough; this is the line
|
|
682
|
+
// that makes an `eess-ts` rule's declaration reach the emitter at all, and
|
|
683
|
+
// without it every `.expectEmpty()` in the flagship dialect was silently
|
|
684
|
+
// undeclared. Caught by a test asserting `declaredEmpty` directly.
|
|
685
|
+
//
|
|
686
|
+
// `assertsCardinality()` only declares over ZERO examined — ADR-010 §3:
|
|
687
|
+
// `.notExist()` over zero subjects is a declaration by construction, but
|
|
688
|
+
// over a live selection it is an ordinary assertion.
|
|
674
689
|
const raw = this.collectWithAssertionGuard();
|
|
690
|
+
const evidence = {
|
|
691
|
+
examined: raw.examined,
|
|
692
|
+
sourceEmpty: raw.sourceEmpty,
|
|
693
|
+
declaredEmpty: raw.declaredEmpty,
|
|
694
|
+
};
|
|
675
695
|
const filtered = applyFilters(raw, this.filterContext());
|
|
676
696
|
const sev = this._severity ?? 'error';
|
|
677
697
|
// Computed from `raw`, not `filtered`: `applyFilters()` already ran
|
|
@@ -680,10 +700,10 @@ export class TerminalBuilder extends RuleDeclaration {
|
|
|
680
700
|
// own doc comment for why checking post-repair identities would miss
|
|
681
701
|
// exactly the case this exists to catch. Only computed when it can matter.
|
|
682
702
|
const unsafe = sev === 'warn' && this._acceptedWarnings !== undefined && hasIdentityCollision(raw);
|
|
683
|
-
return filtered.map((v) => ({
|
|
703
|
+
return collectResult(filtered.map((v) => ({
|
|
684
704
|
...v,
|
|
685
705
|
severity: severityFor(v, unsafe ? 'error' : this.fallbackSeverityFor(v, sev)),
|
|
686
|
-
}));
|
|
706
|
+
})), evidence);
|
|
687
707
|
}
|
|
688
708
|
/**
|
|
689
709
|
* Plan 0090's escalation, per violation. A DEFERRED warning (`_acceptedWarnings`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-builder.js","sourceRoot":"","sources":["../../src/core/terminal-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEnF,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGtF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"terminal-builder.js","sourceRoot":"","sources":["../../src/core/terminal-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectResult } from '@nielspeter/eess';
|
|
2
2
|
import type { RuleFacts } from './vacuity-diagnosis.js';
|
|
3
3
|
/** A rule, reduced to what running it needs. */
|
|
4
4
|
export interface RuleRun {
|
|
@@ -6,10 +6,14 @@ export interface RuleRun {
|
|
|
6
6
|
readonly expectsEmpty: boolean;
|
|
7
7
|
assertsSomething(): boolean;
|
|
8
8
|
ownsDiscoveryDiagnosis(): boolean;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
/**
|
|
10
|
+
* ADR-010 §3 / ADR-014 §3: "`.notExist()` over zero subjects is a declaration
|
|
11
|
+
* by construction." The flag has to reach the receipt, or a cardinality-exempt
|
|
12
|
+
* rule arrives at the emitter undeclared and is reported as a vacuous pass.
|
|
13
|
+
* `TerminalBuilder.asRun()` already passed this; the guard did not read it.
|
|
14
|
+
*/
|
|
15
|
+
assertsCardinality(): boolean;
|
|
16
|
+
collectViolations(): CollectResult;
|
|
13
17
|
}
|
|
14
18
|
/**
|
|
15
19
|
* Run the rule, but let the gates speak first.
|
|
@@ -19,5 +23,17 @@ export interface RuleRun {
|
|
|
19
23
|
* tangled with the fluent surface that configures them; the order is the whole
|
|
20
24
|
* content of this function and now reads as such.
|
|
21
25
|
*/
|
|
22
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Returns the RECEIPT, not a bare array — plan 0235.
|
|
28
|
+
*
|
|
29
|
+
* The gate paths below fire BEFORE `run.collectViolations()` on purpose (see
|
|
30
|
+
* `TerminalBuilder.collectWithAssertionGuard`'s comment: `CrossProjectBuilder`
|
|
31
|
+
* throws a `RangeError` from its collection, so a gate placed after it would
|
|
32
|
+
* never run and the error would escape the CLI's `ArchRuleError`-only catch).
|
|
33
|
+
* Those paths therefore report `examined: 0` — honest, because nothing was
|
|
34
|
+
* collected — and the caller must NOT reach for the count itself. A first cut
|
|
35
|
+
* did exactly that from `violations()` and reintroduced bug 0025's escaping
|
|
36
|
+
* `RangeError`; the evidence has to come back through here.
|
|
37
|
+
*/
|
|
38
|
+
export declare function collectWithAssertionGuard(run: RuleRun): CollectResult;
|
|
23
39
|
//# sourceMappingURL=terminal-execution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-execution.d.ts","sourceRoot":"","sources":["../../src/core/terminal-execution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"terminal-execution.d.ts","sourceRoot":"","sources":["../../src/core/terminal-execution.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAQvD,gDAAgD;AAChD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,gBAAgB,IAAI,OAAO,CAAA;IAC3B,sBAAsB,IAAI,OAAO,CAAA;IACjC;;;;;OAKG;IACH,kBAAkB,IAAI,OAAO,CAAA;IAC7B,iBAAiB,IAAI,aAAa,CAAA;CACnC;AAED;;;;;;;GAOG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAmFrE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { collectResult } from '@nielspeter/eess';
|
|
1
2
|
import { assertionLessFinding, deadSelectorFindings, evidenceFloor, expiredDeclarationViolation, } from './vacuity-diagnosis.js';
|
|
2
3
|
/**
|
|
3
4
|
* Run the rule, but let the gates speak first.
|
|
@@ -7,6 +8,18 @@ import { assertionLessFinding, deadSelectorFindings, evidenceFloor, expiredDecla
|
|
|
7
8
|
* tangled with the fluent surface that configures them; the order is the whole
|
|
8
9
|
* content of this function and now reads as such.
|
|
9
10
|
*/
|
|
11
|
+
/**
|
|
12
|
+
* Returns the RECEIPT, not a bare array — plan 0235.
|
|
13
|
+
*
|
|
14
|
+
* The gate paths below fire BEFORE `run.collectViolations()` on purpose (see
|
|
15
|
+
* `TerminalBuilder.collectWithAssertionGuard`'s comment: `CrossProjectBuilder`
|
|
16
|
+
* throws a `RangeError` from its collection, so a gate placed after it would
|
|
17
|
+
* never run and the error would escape the CLI's `ArchRuleError`-only catch).
|
|
18
|
+
* Those paths therefore report `examined: 0` — honest, because nothing was
|
|
19
|
+
* collected — and the caller must NOT reach for the count itself. A first cut
|
|
20
|
+
* did exactly that from `violations()` and reintroduced bug 0025's escaping
|
|
21
|
+
* `RangeError`; the evidence has to come back through here.
|
|
22
|
+
*/
|
|
10
23
|
export function collectWithAssertionGuard(run) {
|
|
11
24
|
if (run.assertsSomething()) {
|
|
12
25
|
// Plan 0074 (R3b). AFTER the assertion gate, deliberately: a rule with a
|
|
@@ -43,17 +56,30 @@ export function collectWithAssertionGuard(run) {
|
|
|
43
56
|
// fact the opinion.
|
|
44
57
|
const dead = deadSelectorFindings(run.facts);
|
|
45
58
|
if (dead.selector.length > 0)
|
|
46
|
-
return dead.selector;
|
|
59
|
+
return collectResult(dead.selector, { examined: 0 });
|
|
47
60
|
if (dead.discovery.length > 0 && !run.ownsDiscoveryDiagnosis())
|
|
48
|
-
return dead.discovery;
|
|
61
|
+
return collectResult(dead.discovery, { examined: 0 });
|
|
49
62
|
// Plan 0099: the floor. 0098 produced this evidence and discarded it here;
|
|
50
63
|
// this is where discarding stops.
|
|
51
|
-
const
|
|
64
|
+
const collected = run.collectViolations();
|
|
65
|
+
const { examined } = collected;
|
|
66
|
+
const violations = [...collected];
|
|
52
67
|
// ADR-010's floor: four branches that all answer one question — is a pass
|
|
53
68
|
// here CONSTRUCTED from evidence, or defaulted? See `evidenceFloor`.
|
|
69
|
+
// The declaration, computed ONCE and used on both exits below.
|
|
70
|
+
//
|
|
71
|
+
// `evidenceFloor` returns the (empty) violations rather than `undefined` for
|
|
72
|
+
// a cardinality-exempt rule — its exempt path IS the declaration case — so an
|
|
73
|
+
// exit that drops the flag here leaves a `.notExist()` rule undeclared, and
|
|
74
|
+
// the emitter then reports it as a vacuous pass. Measured: exactly that,
|
|
75
|
+
// before this was hoisted.
|
|
76
|
+
const declaredEmpty = run.expectsEmpty ||
|
|
77
|
+
(examined === 0 && (collected.declaredEmpty === true || run.assertsCardinality()))
|
|
78
|
+
? true
|
|
79
|
+
: undefined;
|
|
54
80
|
const floor = evidenceFloor(run.facts, violations, examined);
|
|
55
81
|
if (floor !== undefined)
|
|
56
|
-
return floor;
|
|
82
|
+
return collectResult(floor, { examined, sourceEmpty: collected.sourceEmpty, declaredEmpty });
|
|
57
83
|
// The expiry half, and it is the ROOT's alone — `rule-builder.ts` used to
|
|
58
84
|
// carry its own, so keeping both double-reported one fault.
|
|
59
85
|
//
|
|
@@ -62,10 +88,16 @@ export function collectWithAssertionGuard(run) {
|
|
|
62
88
|
// and on `CrossProjectBuilder` `declaresEmpty()` is an all-sides
|
|
63
89
|
// conjunction whose per-side expiry that class reports itself.
|
|
64
90
|
if (examined > 0 && run.expectsEmpty) {
|
|
65
|
-
return [expiredDeclarationViolation(run.facts, examined), ...violations]
|
|
91
|
+
return collectResult([expiredDeclarationViolation(run.facts, examined), ...violations], {
|
|
92
|
+
examined,
|
|
93
|
+
});
|
|
66
94
|
}
|
|
67
|
-
return violations
|
|
95
|
+
return collectResult(violations, {
|
|
96
|
+
examined,
|
|
97
|
+
sourceEmpty: collected.sourceEmpty,
|
|
98
|
+
declaredEmpty,
|
|
99
|
+
});
|
|
68
100
|
}
|
|
69
|
-
return assertionLessFinding(run.facts);
|
|
101
|
+
return collectResult(assertionLessFinding(run.facts), { examined: 0 });
|
|
70
102
|
}
|
|
71
103
|
//# sourceMappingURL=terminal-execution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-execution.js","sourceRoot":"","sources":["../../src/core/terminal-execution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"terminal-execution.js","sourceRoot":"","sources":["../../src/core/terminal-execution.ts"],"names":[],"mappings":"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"}
|