@nielspeter/eess-ts 0.7.0 → 0.8.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/cross-layer-builder.d.ts.map +1 -1
- package/dist/builders/cross-layer-builder.js +6 -8
- package/dist/builders/cross-layer-builder.js.map +1 -1
- package/dist/builders/slice-rule-builder.d.ts.map +1 -1
- package/dist/builders/slice-rule-builder.js +7 -1
- package/dist/builders/slice-rule-builder.js.map +1 -1
- package/dist/conditions/function.d.ts.map +1 -1
- package/dist/conditions/function.js +22 -8
- package/dist/conditions/function.js.map +1 -1
- package/dist/conditions/reverse-dependency.d.ts.map +1 -1
- package/dist/conditions/reverse-dependency.js +16 -14
- package/dist/conditions/reverse-dependency.js.map +1 -1
- package/dist/conditions/structural.d.ts.map +1 -1
- package/dist/conditions/structural.js +28 -11
- package/dist/conditions/structural.js.map +1 -1
- package/dist/core/disk-set.d.ts.map +1 -1
- package/dist/core/disk-set.js +37 -2
- package/dist/core/disk-set.js.map +1 -1
- package/dist/core/project-relative.d.ts +108 -0
- package/dist/core/project-relative.d.ts.map +1 -1
- package/dist/core/project-relative.js +179 -2
- package/dist/core/project-relative.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/slice.d.ts.map +1 -1
- package/dist/models/slice.js +20 -16
- package/dist/models/slice.js.map +1 -1
- package/dist/predicates/identity.d.ts +2 -1
- package/dist/predicates/identity.d.ts.map +1 -1
- package/dist/predicates/identity.js +37 -38
- package/dist/predicates/identity.js.map +1 -1
- package/dist/presets/agent-guardrails.d.ts.map +1 -1
- package/dist/presets/agent-guardrails.js +65 -14
- package/dist/presets/agent-guardrails.js.map +1 -1
- package/dist/presets/boundaries.js +58 -16
- package/dist/presets/boundaries.js.map +1 -1
- package/dist/presets/recommended.d.ts +21 -6
- package/dist/presets/recommended.d.ts.map +1 -1
- package/dist/presets/recommended.js.map +1 -1
- package/dist/rules/errors.d.ts +17 -0
- package/dist/rules/errors.d.ts.map +1 -1
- package/dist/rules/errors.js +21 -0
- package/dist/rules/errors.js.map +1 -1
- package/dist/smells/duplicate-bodies.d.ts +1 -1
- package/dist/smells/duplicate-bodies.d.ts.map +1 -1
- package/dist/smells/duplicate-bodies.js +12 -11
- package/dist/smells/duplicate-bodies.js.map +1 -1
- package/dist/smells/sibling-files.d.ts.map +1 -1
- package/dist/smells/sibling-files.js +16 -7
- package/dist/smells/sibling-files.js.map +1 -1
- package/dist/smells/smell-builder.d.ts.map +1 -1
- package/dist/smells/smell-builder.js +15 -1
- package/dist/smells/smell-builder.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-layer-builder.d.ts","sourceRoot":"","sources":["../../src/builders/cross-layer-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cross-layer-builder.d.ts","sourceRoot":"","sources":["../../src/builders/cross-layer-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAA;AACpF,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAgD7D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,UAAU,CAA+C;gBAEpC,OAAO,EAAE,WAAW;IAEjD;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAM1C;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI;IAMZ;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,KAAK,OAAO,GAAG,uBAAuB;CAkBhF;AAED;;;GAGG;AAQH,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAFR,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE,WAAW,YAAA;IAGxC;;OAEG;IACH,WAAW,IAAI,oBAAoB;CAGpC;AAED;;GAEG;AAQH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAFR,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE,WAAW,YAAA;IAGxC;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,aAAa,GAAG,gBAAgB;CAGnD;AAED;;GAEG;AAQH,qBAAa,gBAAiB,SAAQ,eAAe;IAQjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAV3B;;;;;OAKG;gBAEgB,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE,SAAS,EAAE,EAClB,SAAS,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,WAAW,YAAA;IAKxC,6EAA6E;IAC7E,UAAU,IAAI,WAAW,GAAG,SAAS;IAIrC;;;;;;;OAOG;IACM,KAAK,IAAI,SAAS,QAAQ,EAAE;IAcrC;;;;;;;;;;;;;;;;;;;OAmBG;cACgB,sBAAsB,IAAI,OAAO;IASpD;;;OAGG;IAEH;;;;;;;OAOG;cACgB,gBAAgB,IAAI,MAAM;IAI7C;;;;;OAKG;IACH,aAAa,IAAI,MAAM;IAIvB,SAAS,CAAC,iBAAiB,IAAI,aAAa;CAqB7C;AAED;;;;;;;;;;;;;;GAcG;AACH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAE5D"}
|
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
import picomatch from 'picomatch';
|
|
2
1
|
import { collectResult } from '@nielspeter/eess';
|
|
3
2
|
import { ownsEmptyDiscovery } from '@nielspeter/eess/internal';
|
|
4
3
|
import { stampGlobs } from '@nielspeter/eess/internal';
|
|
5
4
|
import { globAnyOf } from '@nielspeter/eess';
|
|
6
5
|
import { TerminalBuilder } from '../core/terminal-builder.js';
|
|
7
6
|
import { shallowClone } from '@nielspeter/eess/internal';
|
|
8
|
-
import { isProjectRelative,
|
|
7
|
+
import { isProjectRelative, matchesPath, pathGlobMatcher } from '../core/project-relative.js';
|
|
9
8
|
/**
|
|
10
9
|
* Resolve a layer by matching its glob against the project's source files.
|
|
11
10
|
*/
|
|
12
11
|
function resolveLayer(project, name, pattern) {
|
|
13
|
-
const
|
|
14
|
-
const relative = isProjectRelative(pattern);
|
|
12
|
+
const matcher = pathGlobMatcher(pattern);
|
|
15
13
|
const files = [];
|
|
16
14
|
for (const sf of project.getSourceFiles()) {
|
|
17
|
-
const filePath = sf.getFilePath();
|
|
18
15
|
// Bug 0036: the glob is matched against an ABSOLUTE path, so a
|
|
19
16
|
// project-relative one could never resolve a layer. Same rule as every
|
|
20
|
-
// other path glob — relative means from the project root
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
// other path glob — relative means from the project root, and since bug
|
|
18
|
+
// 0339 a `'**\/'`-led glob reads that view too, so a layer resolves from a
|
|
19
|
+
// project path holding a dot-segment.
|
|
20
|
+
if (matchesPath(matcher, sf, sf.getFilePath(), project.tsConfigPath)) {
|
|
23
21
|
files.push(sf);
|
|
24
22
|
}
|
|
25
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-layer-builder.js","sourceRoot":"","sources":["../../src/builders/cross-layer-builder.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cross-layer-builder.js","sourceRoot":"","sources":["../../src/builders/cross-layer-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice-rule-builder.d.ts","sourceRoot":"","sources":["../../src/builders/slice-rule-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"slice-rule-builder.d.ts","sourceRoot":"","sources":["../../src/builders/slice-rule-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,OAAO,KAAK,EAAS,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAOhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAQ9D;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC9E,CAAA;AAEL;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAiB,SAAQ,eAAe;IAKvC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,WAAW,CAAyB;gBAEf,OAAO,EAAE,WAAW;IAIjD;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO5B;;;;;;;;;;OAUG;IACH,YAAY,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAQ/C,6EAA6E;IAC7E,UAAU,IAAI,WAAW;IAIzB;;;;;;;;;;;;;;OAcG;IACM,KAAK,IAAI,SAAS,QAAQ,EAAE;IAkDrC;;;;;;OAMG;cACgB,IAAI,IAAI,IAAI;IAO/B;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH;;;;;;;OAOG;IACH,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAM7C;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IACjE,iBAAiB,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAqB5C;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAC/D,WAAW,CAAC,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IAiB1C;;;;;;;OAOG;IACM,gBAAgB,IAAI,OAAO;IAIpC;;;;;;OAMG;IACM,eAAe,IAAI,MAAM;IAQlC;;;;OAIG;IACM,YAAY,IAAI,eAAe;IAaxC;;;;;;;;;;;;;;;;;;;OAmBG;cACgB,sBAAsB,IAAI,OAAO;IAIpD;;;;;;;;OAQG;IACH,aAAa,IAAI,MAAM;IAIvB,SAAS,CAAC,iBAAiB,IAAI,aAAa;IAmD5C,OAAO,CAAC,oBAAoB;IAM5B,uEAAuE;IACvE,OAAO,CAAC,uBAAuB;CAOhC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,gBAAgB,CAEvD"}
|
|
@@ -2,10 +2,10 @@ import { emptyDiscoveryMessage, metaViolation } from './slice-discovery-message.
|
|
|
2
2
|
import { stampGlobs } from '@nielspeter/eess/internal';
|
|
3
3
|
import { globAnyOf, collectResult } from '@nielspeter/eess';
|
|
4
4
|
import { TerminalBuilder } from '../core/terminal-builder.js';
|
|
5
|
+
import { isProjectRelative } from '../core/project-relative.js';
|
|
5
6
|
import { resolveByMatching, resolveByDefinition, matchingGlobPrefix, matchingGlobPattern, } from '../models/slice.js';
|
|
6
7
|
import { splitGlobArgs } from '../core/import-options.js';
|
|
7
8
|
import { beFreeOfCycles as beFreeOfCyclesCondition, respectLayerOrder as respectLayerOrderCondition, notDependOn as notDependOnCondition, } from '../conditions/slice.js';
|
|
8
|
-
import { isProjectRelative } from '../core/project-relative.js';
|
|
9
9
|
/**
|
|
10
10
|
* Rule builder for slice-level architecture rules.
|
|
11
11
|
*
|
|
@@ -113,6 +113,12 @@ export class SliceRuleBuilder extends TerminalBuilder {
|
|
|
113
113
|
// `doctor` reds a rule that discovers slices correctly: measured, a
|
|
114
114
|
// relative `assignedFrom` glob gave 0 violations and a `dead-glob`
|
|
115
115
|
// diagnosis in the same run.
|
|
116
|
+
//
|
|
117
|
+
// Still `isProjectRelative` and not the wider `readsRootRelativePath`
|
|
118
|
+
// that `resolveByDefinition` matches with (bug 0339): a `'**\/'`-led glob
|
|
119
|
+
// is anchored, so the check is a no-op for it either way, and widening
|
|
120
|
+
// this would make the `unanchored` fault — and the whole anchor-advice
|
|
121
|
+
// group below — unreachable.
|
|
116
122
|
globAnyOf([entry.glob], 'file-path', isProjectRelative(entry.glob) ? 'normalized' : 'absolute'), 'discovery', (g) => `assignedFrom({ ${entry.name}: "${g.glob}" })`));
|
|
117
123
|
}
|
|
118
124
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice-rule-builder.js","sourceRoot":"","sources":["../../src/builders/slice-rule-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAOnF,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"slice-rule-builder.js","sourceRoot":"","sources":["../../src/builders/slice-rule-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/conditions/function.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/conditions/function.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAInE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAsC9D;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,CAkBlD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAAC,YAAY,CAAC,CAMpD;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,CAMjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CASzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAMnF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAyBtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAOpF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAiBlE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAwBpE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import picomatch from 'picomatch';
|
|
2
1
|
import { globNode } from '@nielspeter/eess';
|
|
3
2
|
import { marksAssertsCardinality } from '@nielspeter/eess/internal';
|
|
3
|
+
import { isProjectRelative, matchesPath, pathGlobMatcher } from '../core/project-relative.js';
|
|
4
4
|
/**
|
|
5
5
|
* Helper to create a per-element condition for ArchFunction.
|
|
6
6
|
*/
|
|
@@ -154,8 +154,17 @@ export function haveReturnTypeMatching(matcher) {
|
|
|
154
154
|
* cannot be used — this is the ArchFunction-specific equivalent.
|
|
155
155
|
*/
|
|
156
156
|
export function resideInFile(glob) {
|
|
157
|
-
const
|
|
158
|
-
return functionCondition(`reside in file matching '${glob}'`, (fn) =>
|
|
157
|
+
const matcher = pathGlobMatcher(glob);
|
|
158
|
+
return functionCondition(`reside in file matching '${glob}'`, (fn) => matchesPath(matcher, fn.getSourceFile(), fn.getSourceFile().getFilePath()), (fn) => `${fn.getName() ?? '<anonymous>'} resides in '${fn.getSourceFile().getFilePath()}' which does not match '${glob}'`,
|
|
159
|
+
// Reads the path named from the project root as well as absolutely, since
|
|
160
|
+
// bug 0339 — so an unanchored glob is correct here (hence the base), and no
|
|
161
|
+
// glob is decided by the project's own location on disk. See
|
|
162
|
+
// `core/project-relative.ts` · `readsRootRelativePath`.
|
|
163
|
+
globNode({
|
|
164
|
+
glob,
|
|
165
|
+
kind: 'file-path',
|
|
166
|
+
base: isProjectRelative(glob) ? 'normalized' : 'absolute',
|
|
167
|
+
}));
|
|
159
168
|
}
|
|
160
169
|
/**
|
|
161
170
|
* Functions must reside in a folder matching the glob.
|
|
@@ -163,19 +172,24 @@ export function resideInFile(glob) {
|
|
|
163
172
|
* cannot be used — this is the ArchFunction-specific equivalent.
|
|
164
173
|
*/
|
|
165
174
|
export function resideInFolder(glob) {
|
|
166
|
-
const
|
|
175
|
+
const matcher = pathGlobMatcher(glob);
|
|
167
176
|
return functionCondition(`reside in folder matching '${glob}'`, (fn) => {
|
|
168
177
|
const filePath = fn.getSourceFile().getFilePath();
|
|
169
178
|
const folder = filePath.substring(0, filePath.lastIndexOf('/'));
|
|
170
|
-
return
|
|
179
|
+
return matchesPath(matcher, fn.getSourceFile(), folder);
|
|
171
180
|
}, (fn) => {
|
|
172
181
|
const filePath = fn.getSourceFile().getFilePath();
|
|
173
182
|
const folder = filePath.substring(0, filePath.lastIndexOf('/'));
|
|
174
183
|
return `${fn.getName() ?? '<anonymous>'} resides in folder '${folder}' which does not match '${glob}'`;
|
|
175
184
|
},
|
|
176
185
|
// `parent-dir`, not `file-path` — the glob is matched against the immediate
|
|
177
|
-
// parent directory, so it is the twin of `identity.ts
|
|
178
|
-
// kind. A `file-path` kind here would be checked against
|
|
179
|
-
|
|
186
|
+
// parent directory, so it is the twin of `identity.ts`'s `resideInFolder`
|
|
187
|
+
// and needs the same kind. A `file-path` kind here would be checked against
|
|
188
|
+
// the wrong universe. The base is `resideInFile`'s, for the reason above.
|
|
189
|
+
globNode({
|
|
190
|
+
glob,
|
|
191
|
+
kind: 'parent-dir',
|
|
192
|
+
base: isProjectRelative(glob) ? 'normalized' : 'absolute',
|
|
193
|
+
}));
|
|
180
194
|
}
|
|
181
195
|
//# sourceMappingURL=function.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/conditions/function.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/conditions/function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAK3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7F;;GAEG;AACH,SAAS,iBAAiB,CACxB,WAAmB,EACnB,SAAwC,EACxC,SAAuC,EACvC,KAAqB;IAErB,OAAO;QACL,4EAA4E;QAC5E,8EAA8E;QAC9E,0EAA0E;QAC1E,KAAK;QACL,WAAW;QACX,QAAQ,CAAC,QAAwB,EAAE,OAAyB;YAC1D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;oBACnB,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa;wBACtC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;wBACtC,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE;wBAC7B,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;wBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ;IACtB,6EAA6E;IAC7E,2EAA2E;IAC3E,OAAO,uBAAuB,CAAC;QAC7B,WAAW,EAAE,WAAW;QACxB,yEAAyE;QACzE,wEAAwE;QACxE,QAAQ,CAAC,QAAwB,EAAE,OAAyB;YAC1D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa;gBACtC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;gBACtC,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE;gBAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,mBAAmB;gBAC5D,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC,CAAA;QACL,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,iBAAiB,CACtB,aAAa,EACb,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EACvB,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,kBAAkB,CAC3D,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,iBAAiB,CACtB,UAAU,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EACpB,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,eAAe,CACxD,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,iBAAiB,CACtB,sBAAsB,MAAM,CAAC,OAAO,CAAC,EAAE,EACvC,CAAC,EAAE,EAAE,EAAE;QACL,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;QACzB,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjD,CAAC,EACD,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,kCAAkC,MAAM,CAAC,OAAO,CAAC,EAAE,CAC5F,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAoB;IACxD,OAAO,iBAAiB,CACtB,mCAAmC,EACnC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAC5D,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,sCAAsC,CAC/E,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAoB;IAC3D,OAAO;QACL,WAAW,EAAE,uCAAuC;QACpD,QAAQ,CAAC,QAAwB,EAAE,OAAyB;YAC1D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,CAAA;gBAC5C,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC;oBACvC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;wBACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAA;wBAC1C,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,OAAO,EAAE,MAAM;4BACf,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;4BACtC,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE;4BAC7B,OAAO,EAAE,GAAG,MAAM,eAAe,SAAS,eAAe,QAAQ,GAAG;4BACpE,OAAO,EAAE,OAAO,CAAC,OAAO;yBACzB,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAoB;IACzD,OAAO,iBAAiB,CACtB,wDAAwD,EACxD,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EACnC,CAAC,EAAE,EAAE,EAAE,CACL,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,qBAAqB,EAAE,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,qDAAqD,CACzI,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,OAAO,iBAAiB,CACtB,4BAA4B,IAAI,GAAG,EACnC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC,EAClF,CAAC,EAAE,EAAE,EAAE,CACL,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,gBAAgB,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,2BAA2B,IAAI,GAAG;IACpH,0EAA0E;IAC1E,4EAA4E;IAC5E,6DAA6D;IAC7D,wDAAwD;IACxD,QAAQ,CAAC;QACP,IAAI;QACJ,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;KAC1D,CAAC,CACH,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,OAAO,iBAAiB,CACtB,8BAA8B,IAAI,GAAG,EACrC,CAAC,EAAE,EAAE,EAAE;QACL,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAA;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QAC/D,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAA;IACzD,CAAC,EACD,CAAC,EAAE,EAAE,EAAE;QACL,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAA;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QAC/D,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,uBAAuB,MAAM,2BAA2B,IAAI,GAAG,CAAA;IACxG,CAAC;IACD,4EAA4E;IAC5E,0EAA0E;IAC1E,4EAA4E;IAC5E,0EAA0E;IAC1E,QAAQ,CAAC;QACP,IAAI;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;KAC1D,CAAC,CACH,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse-dependency.d.ts","sourceRoot":"","sources":["../../src/conditions/reverse-dependency.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reverse-dependency.d.ts","sourceRoot":"","sources":["../../src/conditions/reverse-dependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAiD,MAAM,UAAU,CAAA;AACzF,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAqFnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,CAiF3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,CA0BlD;AAqFD,wBAAgB,mBAAmB,IAAI,SAAS,CAAC,UAAU,CAAC,CAW3D"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import picomatch from 'picomatch';
|
|
2
1
|
import { Node } from 'ts-morph';
|
|
3
2
|
import { moduleEdges } from '../core/module-edges.js';
|
|
4
3
|
import { recordEdgeCoverage } from '@nielspeter/eess/internal';
|
|
5
4
|
import { globAnyOf } from '@nielspeter/eess';
|
|
6
|
-
import { relativeToRoot } from '../core/project-relative.js';
|
|
5
|
+
import { anyMatchesPath, pathGlobMatchers, relativeToRoot } from '../core/project-relative.js';
|
|
7
6
|
const graphCache = new WeakMap();
|
|
8
7
|
/**
|
|
9
8
|
* Build or retrieve the reverse import graph for a project.
|
|
@@ -96,7 +95,7 @@ function getReverseImportGraph(sourceFiles) {
|
|
|
96
95
|
* would be wrong here.
|
|
97
96
|
*/
|
|
98
97
|
export function onlyBeImportedVia(...globs) {
|
|
99
|
-
const matchers = globs
|
|
98
|
+
const matchers = pathGlobMatchers(globs);
|
|
100
99
|
const quotedGlobs = globs.map((g) => `"${g}"`).join(', ');
|
|
101
100
|
return {
|
|
102
101
|
// `file-path`, NOT `import-target` — and this is the row to get right. The glob
|
|
@@ -123,16 +122,14 @@ export function onlyBeImportedVia(...globs) {
|
|
|
123
122
|
for (const importer of importers) {
|
|
124
123
|
tested++;
|
|
125
124
|
const importerPath = importer.getFilePath();
|
|
126
|
-
// Also the importer's path named from the project root — bug 0036
|
|
127
|
-
// This glob is matched against
|
|
128
|
-
// project-relative one could never match and
|
|
129
|
-
// reported: measured,
|
|
130
|
-
//
|
|
131
|
-
// shape as bug 0037
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
(fromRoot !== undefined && matchers.some((m) => m(fromRoot)));
|
|
135
|
-
if (!matched) {
|
|
125
|
+
// Also the importer's path named from the project root — bug 0036,
|
|
126
|
+
// through the shared helper since 0339. This glob is matched against
|
|
127
|
+
// an ABSOLUTE path, so a project-relative one could never match and
|
|
128
|
+
// every importer was reported: measured,
|
|
129
|
+
// `onlyBeImportedVia('src/**')` produced 5 violations where
|
|
130
|
+
// `'**/src/**'` produced none. A false red, the same shape as bug 0037
|
|
131
|
+
// one layer over.
|
|
132
|
+
if (!anyMatchesPath(matchers, importer, importerPath)) {
|
|
136
133
|
violations.push({
|
|
137
134
|
rule: context.rule,
|
|
138
135
|
element: sf.getBaseName(),
|
|
@@ -161,7 +158,12 @@ export function onlyBeImportedVia(...globs) {
|
|
|
161
158
|
// exact-string message exclusion, which surfaces as an unused-pattern warning
|
|
162
159
|
// rather than failing open — the acceptable direction, and stated in the
|
|
163
160
|
// upgrading row.
|
|
164
|
-
|
|
161
|
+
// The root-relative form when there is one, computed here rather
|
|
162
|
+
// than taken from the matcher: `hashViolation` hashes this message,
|
|
163
|
+
// so the preference is held exactly as it was, and a shorter path
|
|
164
|
+
// here is readability while a changed one silently invalidates
|
|
165
|
+
// every baselined finding of this rule.
|
|
166
|
+
message: `${sf.getBaseName()} is imported by ${relativeToRoot(importer, importerPath) ?? importerPath} which does not match [${globs.join(', ')}]`,
|
|
165
167
|
because: context.because,
|
|
166
168
|
});
|
|
167
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse-dependency.js","sourceRoot":"","sources":["../../src/conditions/reverse-dependency.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"reverse-dependency.js","sourceRoot":"","sources":["../../src/conditions/reverse-dependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4D,IAAI,EAAE,MAAM,UAAU,CAAA;AAGzF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAM9F,MAAM,UAAU,GAAG,IAAI,OAAO,EAA+B,CAAA;AAE7D;;;;;;;GAOG;AACH;;;;;;;;;;GAUG;AACH,SAAS,UAAU,CAAC,KAAyB,EAAE,UAAkB,EAAE,EAAc;IAC/E,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAyB;IACtD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAA;IAE9C,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;IAChC,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,GAAG,EAAE,CAAA;IAChC,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAA;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACtC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,KAAK,GAAuB,IAAI,GAAG,EAAE,CAAA;IAE3C,6EAA6E;IAC7E,8EAA8E;IAC9E,2BAA2B;IAC3B,EAAE;IACF,+FAA+F;IAC/F,+FAA+F;IAC/F,+FAA+F;IAC/F,gGAAgG;IAChG,EAAE;IACF,8EAA8E;IAC9E,4EAA4E;IAC5E,gFAAgF;IAChF,4EAA4E;IAC5E,gDAAgD;IAChD,EAAE;IACF,+EAA+E;IAC/E,+EAA+E;IAC/E,+EAA+E;IAC/E,gFAAgF;IAChF,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;IACvC,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5D,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;gBAAE,SAAQ;YAC7C,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IAED,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC9B,OAAO,KAAK,CAAA;AACd,CAAC;AAED,oEAAoE;AAEpE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAG,KAAe;IAClD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzD,OAAO;QACL,gFAAgF;QAChF,mFAAmF;QACnF,gFAAgF;QAChF,mFAAmF;QACnF,iFAAiF;QACjF,yCAAyC;QACzC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;QACpC,WAAW,EAAE,wBAAwB,WAAW,EAAE;QAClD,QAAQ,CAAC,QAAsB,EAAE,OAAyB;YACxD,qEAAqE;YACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACjE,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC7C,MAAM,UAAU,GAAoB,EAAE,CAAA;YAEtC,wEAAwE;YACxE,wEAAwE;YACxE,0EAA0E;YAC1E,uEAAuE;YACvE,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;gBACnD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,EAAE,CAAA;oBACR,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;oBAC3C,mEAAmE;oBACnE,qEAAqE;oBACrE,oEAAoE;oBACpE,yCAAyC;oBACzC,4DAA4D;oBAC5D,uEAAuE;oBACvE,kBAAkB;oBAClB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;wBACtD,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE;4BACzB,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;4BACtB,IAAI,EAAE,CAAC;4BACP,+EAA+E;4BAC/E,4EAA4E;4BAC5E,EAAE;4BACF,iFAAiF;4BACjF,gFAAgF;4BAChF,2EAA2E;4BAC3E,gFAAgF;4BAChF,6EAA6E;4BAC7E,gCAAgC;4BAChC,EAAE;4BACF,6EAA6E;4BAC7E,+EAA+E;4BAC/E,iFAAiF;4BACjF,iFAAiF;4BACjF,+EAA+E;4BAC/E,sBAAsB;4BACtB,EAAE;4BACF,4EAA4E;4BAC5E,6EAA6E;4BAC7E,6EAA6E;4BAC7E,8EAA8E;4BAC9E,yEAAyE;4BACzE,iBAAiB;4BACjB,iEAAiE;4BACjE,oEAAoE;4BACpE,kEAAkE;4BAClE,+DAA+D;4BAC/D,wCAAwC;4BACxC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,mBAAmB,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,YAAY,0BAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;4BAClJ,OAAO,EAAE,OAAO,CAAC,OAAO;yBACzB,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACzD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,WAAW,EAAE,0CAA0C;QACvD,QAAQ,CAAC,QAAsB,EAAE,OAAyB;YACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACjE,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC7C,MAAM,UAAU,GAAoB,EAAE,CAAA;YAEtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;gBACnD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE;wBACzB,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;wBACtB,IAAI,EAAE,CAAC;wBACP,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,sCAAsC;wBAClE,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH;;;;;;;;;;;GAWG;AACH,SAAS,cAAc,CAAC,EAAc,EAAE,IAAY,EAAE,WAAiC;IACrF,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC;QACnE,OAAO,WAAW,CAAC,kBAAkB,EAAE,CAAA;IACzC,CAAC;IACD,IAAI,IAAwB,CAAA;IAC5B,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,UAAU;aACzB,eAAe,EAAE;aACjB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;QACrE,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC,kBAAkB,EAAE,CAAA;QAClE,mEAAmE;QACnE,2EAA2E;QAC3E,0EAA0E;QAC1E,2EAA2E;QAC3E,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,eAAe,GAAG,UAAU,CAAC,kBAAkB,EAAE,CAAA;QACvD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,eAAe,CAAC,OAAO,EAAE,KAAK,IAAI;gBAAE,OAAO,UAAU,CAAC,kBAAkB,EAAE,CAAA;QAChF,CAAC;aAAM,IACL,UAAU,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC;YACzC,UAAU,CAAC,kBAAkB,EAAE,KAAK,SAAS,EAC7C,CAAC;YACD,2EAA2E;YAC3E,4EAA4E;YAC5E,IAAI,KAAK,UAAU,CAAC,kBAAkB,EAAE,CAAA;QAC1C,CAAC;IACH,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACnC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AACxE,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,EAAc,EAAE,OAAyB;IACxE,MAAM,UAAU,GAAoB,EAAE,CAAA;IACtC,MAAM,SAAS,GAAG,EAAE,CAAC,uBAAuB,EAAE,CAAA;IAE9C,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,SAAS,EAAE,CAAC;QAC7C,IAAI,IAAI,KAAK,SAAS;YAAE,SAAQ;QAChC,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,CAAA;QAChC,IAAI,SAAS,KAAK,SAAS;YAAE,SAAQ;QACrC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;YAChD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE;gBACzB,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;gBACtB,IAAI;gBACJ,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,aAAa,IAAI,6CAA6C;gBAC1F,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,WAAW,EAAE,wBAAwB;QACrC,QAAQ,CAAC,QAAsB,EAAE,OAAyB;YACxD,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;YAC1D,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,WAAiB,EAAE,UAAsB;IACrE,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAA;IACzC,MAAM,eAAe,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,kBAAkB,EAAE,CAAA;IAEpE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,eAAe,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAA;QAC/D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACnD,OAAO,IAAI,CAAA,CAAC,gBAAgB;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,GAAG,CAAA,CAAC,oDAAoD;QAC7D,2EAA2E;QAC3E,iDAAiD;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../src/conditions/structural.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../src/conditions/structural.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAQnE;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAyBvE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAqBzE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAM5E;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAyBzD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAavD"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Node } from 'ts-morph';
|
|
2
|
-
import picomatch from 'picomatch';
|
|
3
2
|
import { createViolation, getElementFile, getElementName } from '../core/violation.js';
|
|
4
3
|
import { elementCondition } from './helpers.js';
|
|
5
4
|
import { globNode } from '@nielspeter/eess';
|
|
6
5
|
import { marksAssertsCardinality } from '@nielspeter/eess/internal';
|
|
6
|
+
import { isProjectRelative, matchesPath, pathGlobMatcher } from '../core/project-relative.js';
|
|
7
7
|
/**
|
|
8
8
|
* Elements must reside in a file matching the glob pattern.
|
|
9
9
|
*
|
|
@@ -14,14 +14,25 @@ import { marksAssertsCardinality } from '@nielspeter/eess/internal';
|
|
|
14
14
|
* .should(resideInFile('** /repositories/*.ts'))
|
|
15
15
|
*/
|
|
16
16
|
export function resideInFile(glob) {
|
|
17
|
-
const
|
|
18
|
-
return elementCondition(`reside in file matching '${glob}'`, (element) =>
|
|
17
|
+
const matcher = pathGlobMatcher(glob);
|
|
18
|
+
return elementCondition(`reside in file matching '${glob}'`, (element) => matchesPath(matcher, element.getSourceFile(), getElementFile(element)), (element) => `${getElementName(element)} resides in '${getElementFile(element)}' which does not match '${glob}'`,
|
|
19
19
|
// The generic element twin of `function.ts`'s condition and of the
|
|
20
|
-
// `identity.ts
|
|
21
|
-
// 0073's table listed only the `function.ts` pair; these two
|
|
22
|
-
// `index.ts:86` and used by the class, module and type
|
|
23
|
-
// the more reachable half of the hole.
|
|
24
|
-
|
|
20
|
+
// `identity.ts` predicate — same path, so the same kind and the same
|
|
21
|
+
// `base`. Plan 0073's table listed only the `function.ts` pair; these two
|
|
22
|
+
// are exported from `index.ts:86` and used by the class, module and type
|
|
23
|
+
// builders, so they were the more reachable half of the hole.
|
|
24
|
+
//
|
|
25
|
+
// The base declared, and the path named from the root actually read, since
|
|
26
|
+
// bug 0339 — when the census in `tests/matrix/path-glob-surfaces.ts` was
|
|
27
|
+
// measured against behaviour for the first time. It had this file classified
|
|
28
|
+
// `'normalized'` while the matcher read the absolute path alone, so a
|
|
29
|
+
// project-relative glob was reported dead here AND every subject was
|
|
30
|
+
// reported as a violation from a project path holding a dot-segment.
|
|
31
|
+
globNode({
|
|
32
|
+
glob,
|
|
33
|
+
kind: 'file-path',
|
|
34
|
+
base: isProjectRelative(glob) ? 'normalized' : 'absolute',
|
|
35
|
+
}));
|
|
25
36
|
}
|
|
26
37
|
/**
|
|
27
38
|
* Elements must reside in a folder matching the glob pattern.
|
|
@@ -34,16 +45,22 @@ export function resideInFile(glob) {
|
|
|
34
45
|
* .should(resideInFolder('** /services'))
|
|
35
46
|
*/
|
|
36
47
|
export function resideInFolder(glob) {
|
|
37
|
-
const
|
|
48
|
+
const matcher = pathGlobMatcher(glob);
|
|
38
49
|
return elementCondition(`reside in folder matching '${glob}'`, (element) => {
|
|
39
50
|
const filePath = getElementFile(element);
|
|
40
51
|
const folder = filePath.substring(0, filePath.lastIndexOf('/'));
|
|
41
|
-
return
|
|
52
|
+
return matchesPath(matcher, element.getSourceFile(), folder);
|
|
42
53
|
}, (element) => {
|
|
43
54
|
const filePath = getElementFile(element);
|
|
44
55
|
const folder = filePath.substring(0, filePath.lastIndexOf('/'));
|
|
45
56
|
return `${getElementName(element)} resides in folder '${folder}' which does not match '${glob}'`;
|
|
46
|
-
},
|
|
57
|
+
},
|
|
58
|
+
// See `resideInFile` above (bug 0339).
|
|
59
|
+
globNode({
|
|
60
|
+
glob,
|
|
61
|
+
kind: 'parent-dir',
|
|
62
|
+
base: isProjectRelative(glob) ? 'normalized' : 'absolute',
|
|
63
|
+
}));
|
|
47
64
|
}
|
|
48
65
|
/**
|
|
49
66
|
* Elements must have a name matching the regex pattern.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structural.js","sourceRoot":"","sources":["../../src/conditions/structural.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"structural.js","sourceRoot":"","sources":["../../src/conditions/structural.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disk-set.d.ts","sourceRoot":"","sources":["../../src/core/disk-set.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"disk-set.d.ts","sourceRoot":"","sources":["../../src/core/disk-set.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAmD/C;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,MAAM,GAAG,kBAAkB,GAAG,eAAe,GAAG,QAAQ,GAAG,gBAAgB,CAAA;AAEvF;;;;;;;GAOG;AACH,MAAM,WAAW,OAAO;IACtB,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAC/B;AAID;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAMrD;AAED;;;;;;;;GAQG;AAEH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,SAAe,GAAG,OAAO,CAEtF"}
|
package/dist/core/disk-set.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import picomatch from 'picomatch';
|
|
4
4
|
import { discoverIdentityRoot } from '@nielspeter/eess/internal';
|
|
5
|
+
import { readsRootRelativePath, rootFromTsConfigPath } from './project-relative.js';
|
|
5
6
|
/**
|
|
6
7
|
* Directories never worth walking.
|
|
7
8
|
*
|
|
@@ -190,15 +191,49 @@ function build(project, budgetLimit) {
|
|
|
190
191
|
// Exactly the confidently-wrong cause ADR-009 rule 2 forbids.
|
|
191
192
|
const everything = [...everyFile, ...dirs];
|
|
192
193
|
const typeScript = new Set(files);
|
|
194
|
+
// TWO prefixes, not one. The walk starts at `discoverIdentityRoot(...)` — the
|
|
195
|
+
// `.git`/workspace root — while every rule-facing matcher names its second
|
|
196
|
+
// view from `rootOf(sourceFile)`, the **tsconfig's** directory. In a monorepo
|
|
197
|
+
// package those differ, and using the walk root alone left this producer
|
|
198
|
+
// answering `absent` for a `'src/**'` the runtime matcher selects: the same
|
|
199
|
+
// two-derivations-disagree failure bug 0339 is about, surviving in the one
|
|
200
|
+
// place that states a fact about the filesystem. Reported in review, and the
|
|
201
|
+
// pinning test below now carries a fixture where the two roots differ.
|
|
202
|
+
//
|
|
203
|
+
// The absolute candidate is what stays in `matched`: `holdsTypeScript` and
|
|
204
|
+
// `typeScript` are keyed by absolute path, and a second spelling in the set
|
|
205
|
+
// would be a second key for one directory.
|
|
206
|
+
const prefixes = [root, rootFromTsConfigPath(project.tsConfigPath)]
|
|
207
|
+
.filter((r) => r !== undefined)
|
|
208
|
+
.map((r) => (r === '/' ? '/' : `${r.replaceAll('\\', '/')}/`));
|
|
209
|
+
const namedFromARoot = (candidate) => prefixes
|
|
210
|
+
.filter((prefix) => candidate.startsWith(prefix))
|
|
211
|
+
.map((prefix) => candidate.slice(prefix.length));
|
|
193
212
|
return {
|
|
194
213
|
classify(glob) {
|
|
195
214
|
const isMatch = picomatch(glob);
|
|
215
|
+
// Both views of each path, as every rule-facing matcher does since bug
|
|
216
|
+
// 0339 — and here it is a claim about the FILESYSTEM, which makes getting
|
|
217
|
+
// it wrong worse than a missed match. Under a project path holding a
|
|
218
|
+
// dot-segment, picomatch's default `dot: false` stops `**` crossing it, so
|
|
219
|
+
// a `'**\/src/**'` whose directory exists and is merely excluded by the
|
|
220
|
+
// tsconfig was classified `absent` — and `absent`'s advice says no such
|
|
221
|
+
// path was found and a segment must be misspelled. Confidently wrong about
|
|
222
|
+
// a fact, which is the one thing this producer exists not to be.
|
|
223
|
+
const readsRootRelative = readsRootRelativePath(glob);
|
|
224
|
+
const hits = (candidate) => {
|
|
225
|
+
if (isMatch(candidate))
|
|
226
|
+
return true;
|
|
227
|
+
if (!readsRootRelative)
|
|
228
|
+
return false;
|
|
229
|
+
return namedFromARoot(candidate).some((named) => isMatch(named));
|
|
230
|
+
};
|
|
196
231
|
// Never `everything.some(isMatch)` — picomatch reads the array index as
|
|
197
232
|
// its second argument and returns a truthy object from index 1 onwards.
|
|
198
|
-
const matched = everything.filter((candidate) =>
|
|
233
|
+
const matched = everything.filter((candidate) => hits(candidate));
|
|
199
234
|
if (matched.length === 0) {
|
|
200
235
|
// Not seen is not the same as not there.
|
|
201
|
-
return pruned.some((dir) =>
|
|
236
|
+
return pruned.some((dir) => hits(dir) || glob.includes(dir.slice(root.length + 1)))
|
|
202
237
|
? 'not-determined'
|
|
203
238
|
: 'absent';
|
|
204
239
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disk-set.js","sourceRoot":"","sources":["../../src/core/disk-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"disk-set.js","sourceRoot":"","sources":["../../src/core/disk-set.ts"],"names":[],"mappings":"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"}
|