archprint 0.10.5 → 0.12.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.
Files changed (49) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +20 -11
  3. package/dist/cli/adopted-rules.d.ts +9 -10
  4. package/dist/cli/adopted-rules.d.ts.map +1 -1
  5. package/dist/cli/adopted-rules.js +26 -22
  6. package/dist/cli/adopted-rules.js.map +1 -1
  7. package/dist/cli/allow.d.ts +12 -0
  8. package/dist/cli/allow.d.ts.map +1 -0
  9. package/dist/cli/allow.js +58 -0
  10. package/dist/cli/allow.js.map +1 -0
  11. package/dist/cli/allowed-evidence.d.ts +11 -0
  12. package/dist/cli/allowed-evidence.d.ts.map +1 -0
  13. package/dist/cli/allowed-evidence.js +116 -0
  14. package/dist/cli/allowed-evidence.js.map +1 -0
  15. package/dist/cli/allowed-exceptions.d.ts +19 -0
  16. package/dist/cli/allowed-exceptions.d.ts.map +1 -0
  17. package/dist/cli/allowed-exceptions.js +84 -0
  18. package/dist/cli/allowed-exceptions.js.map +1 -0
  19. package/dist/cli/archprint-config.d.ts +14 -0
  20. package/dist/cli/archprint-config.d.ts.map +1 -1
  21. package/dist/cli/archprint-config.js +25 -3
  22. package/dist/cli/archprint-config.js.map +1 -1
  23. package/dist/cli/check.d.ts +3 -0
  24. package/dist/cli/check.d.ts.map +1 -1
  25. package/dist/cli/check.js +91 -30
  26. package/dist/cli/check.js.map +1 -1
  27. package/dist/cli/generate.d.ts +3 -1
  28. package/dist/cli/generate.d.ts.map +1 -1
  29. package/dist/cli/generate.js +21 -7
  30. package/dist/cli/generate.js.map +1 -1
  31. package/dist/cli/layout.d.ts +2 -1
  32. package/dist/cli/layout.d.ts.map +1 -1
  33. package/dist/cli/layout.js +22 -5
  34. package/dist/cli/layout.js.map +1 -1
  35. package/dist/cli/program.d.ts.map +1 -1
  36. package/dist/cli/program.js +37 -4
  37. package/dist/cli/program.js.map +1 -1
  38. package/dist/generator/eslint-scope.d.ts +11 -1
  39. package/dist/generator/eslint-scope.d.ts.map +1 -1
  40. package/dist/generator/eslint-scope.js +47 -16
  41. package/dist/generator/eslint-scope.js.map +1 -1
  42. package/dist/generator/owned-paths.d.ts +2 -0
  43. package/dist/generator/owned-paths.d.ts.map +1 -1
  44. package/dist/generator/owned-paths.js +8 -0
  45. package/dist/generator/owned-paths.js.map +1 -1
  46. package/dist/mcp/server.d.ts +1 -1
  47. package/dist/mcp/server.js +1 -1
  48. package/dist/mcp/server.js.map +1 -1
  49. package/package.json +1 -1
@@ -1,3 +1,5 @@
1
+ import type { AdoptedRule } from './adopted-rules.js';
2
+ import type { AllowedException } from './allowed-exceptions.js';
1
3
  import type { Recommendation, Recommendations } from './recommend.js';
2
4
  export declare const CONFIG_FILE = "config.json";
3
5
  export interface ManagedOutputs {
@@ -14,6 +16,8 @@ export interface ArchprintConfig {
14
16
  app: string;
15
17
  stack: string[];
16
18
  rulesDir: string;
19
+ rules?: AdoptedRule[];
20
+ allowed?: AllowedException[];
17
21
  enforced: Recommendation[];
18
22
  reportOnly: Recommendation[];
19
23
  review: Recommendation[];
@@ -24,11 +28,21 @@ export interface ArchprintConfig {
24
28
  };
25
29
  managed: ManagedOutputs;
26
30
  }
31
+ export declare function configPath(outDir: string): string;
32
+ export type ConfigSection = 'rules' | 'allowed';
33
+ /** The raw value of a section in config.json text; undefined when the text is not JSON or has no such section. */
34
+ export declare function configSection(text: string, section: ConfigSection): unknown;
35
+ export declare function readConfigSection(outDir: string, section: ConfigSection): unknown;
27
36
  export declare function buildConfig(recommendations: Recommendations, version: string, location: {
28
37
  app: string;
29
38
  rulesDir: string;
39
+ }, adoption: {
40
+ rules: AdoptedRule[];
41
+ allowed: AllowedException[];
30
42
  }, managed: ManagedOutputs): ArchprintConfig;
31
43
  export declare function writeConfig(outDir: string, config: ArchprintConfig): string;
44
+ /** Replaces the given sections of config.json, keeping every other key as it is on disk. */
45
+ export declare function updateConfig(outDir: string, sections: Partial<ArchprintConfig>): string;
32
46
  export declare function recordManagedFiles(outDir: string, cwd: string, version: string, absoluteFiles: readonly string[]): void;
33
47
  export declare function readConfig(outDir: string): ArchprintConfig | null;
34
48
  //# sourceMappingURL=archprint-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"archprint-config.d.ts","sourceRoot":"","sources":["../../src/cli/archprint-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtE,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,OAAO,EAAE,cAAc,CAAC;CACzB;AAgBD,wBAAgB,WAAW,CACzB,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC3C,OAAO,EAAE,cAAc,GACtB,eAAe,CAajB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAI3E;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,IAAI,CAoBN;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAyBjE"}
1
+ {"version":3,"file":"archprint-config.d.ts","sourceRoot":"","sources":["../../src/cli/archprint-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtE,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,OAAO,EAAE,cAAc,CAAC;CACzB;AAYD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhD,kHAAkH;AAClH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAM3E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAGjF;AAED,wBAAgB,WAAW,CACzB,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC3C,QAAQ,EAAE;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAAE,EAC/D,OAAO,EAAE,cAAc,GACtB,eAAe,CAejB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAI3E;AAED,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAKvF;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,IAAI,CAoBN;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAyBjE"}
@@ -11,15 +11,30 @@ const EMPTY_MANAGED = {
11
11
  npmignore: false,
12
12
  npmignoreCreated: false,
13
13
  };
14
- function configPath(outDir) {
14
+ export function configPath(outDir) {
15
15
  return path.join(outDir, CONFIG_FILE);
16
16
  }
17
- export function buildConfig(recommendations, version, location, managed) {
17
+ /** The raw value of a section in config.json text; undefined when the text is not JSON or has no such section. */
18
+ export function configSection(text, section) {
19
+ try {
20
+ return JSON.parse(text)[section];
21
+ }
22
+ catch {
23
+ return undefined;
24
+ }
25
+ }
26
+ export function readConfigSection(outDir, section) {
27
+ const file = configPath(outDir);
28
+ return existsSync(file) ? configSection(readFileSync(file, 'utf8'), section) : undefined;
29
+ }
30
+ export function buildConfig(recommendations, version, location, adoption, managed) {
18
31
  return {
19
32
  archprintVersion: version,
20
33
  app: location.app,
21
34
  stack: recommendations.stack,
22
35
  rulesDir: location.rulesDir,
36
+ rules: adoption.rules,
37
+ allowed: adoption.allowed,
23
38
  enforced: recommendations.enforceNow,
24
39
  reportOnly: recommendations.reportOnly,
25
40
  review: recommendations.review,
@@ -33,12 +48,19 @@ export function writeConfig(outDir, config) {
33
48
  writeOwnedFile(outDir, file, `${JSON.stringify(config, null, 2)}\n`);
34
49
  return file;
35
50
  }
51
+ /** Replaces the given sections of config.json, keeping every other key as it is on disk. */
52
+ export function updateConfig(outDir, sections) {
53
+ const file = configPath(outDir);
54
+ const current = JSON.parse(readFileSync(file, 'utf8'));
55
+ writeOwnedFile(outDir, file, `${JSON.stringify({ ...current, ...sections }, null, 2)}\n`);
56
+ return file;
57
+ }
36
58
  export function recordManagedFiles(outDir, cwd, version, absoluteFiles) {
37
59
  const relative = absoluteFiles.map((file) => path.relative(cwd, file));
38
60
  const existing = readConfig(outDir);
39
61
  if (existing) {
40
62
  const files = [...new Set([...existing.managed.files, ...relative])];
41
- writeConfig(outDir, { ...existing, managed: { ...existing.managed, files } });
63
+ updateConfig(outDir, { managed: { ...existing.managed, files } });
42
64
  return;
43
65
  }
44
66
  writeConfig(outDir, {
@@ -1 +1 @@
1
- {"version":3,"file":"archprint-config.js","sourceRoot":"","sources":["../../src/cli/archprint-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archprint-config.js","sourceRoot":"","sources":["../../src/cli/archprint-config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type AdoptedRule } from './adopted-rules.js';
2
+ import { type AllowedException } from './allowed-exceptions.js';
2
3
  import { type RuleChange } from './check-diff.js';
3
4
  import { type Finding } from './check-evaluate.js';
4
5
  export type FailOn = 'none' | 'new';
@@ -36,6 +37,8 @@ export type CheckResult = {
36
37
  fixed: ReportedFinding[];
37
38
  adoptedInChange: AdoptedInChange[];
38
39
  removedInChange: AdoptedRule[];
40
+ allowedInChange: AllowedException[];
41
+ unusedAllows: AllowedException[];
39
42
  };
40
43
  export declare function runCheck(options: CheckOptions): CheckResult;
41
44
  export declare function checkExitCode(result: CheckResult, failOn: FailOn): number;
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/cli/check.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAYlE,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IACE,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,EAAE,WAAW,EAAE,CAAC;CAChC,CAAC;AAuEN,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CAwE3D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzE;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAGxD;AAUD,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsB3D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkCxE;AAUD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB/E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAyCzD"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/cli/check.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAYlE,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IACE,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC,CAAC;AA+GN,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CA6F3D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzE;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAGxD;AAUD,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA8B3D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoCxE;AAUD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA0B/E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA4DzD"}
package/dist/cli/check.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { existsSync, realpathSync, statSync } from 'node:fs';
2
2
  import * as path from 'node:path';
3
- import { CONFIG_FILE, readConfig } from './archprint-config.js';
4
- import { InvalidRulesError, parseAdoptedRules, readAdoptedRules, RULES_FILE, } from './adopted-rules.js';
3
+ import { CONFIG_FILE, configPath, readConfig } from './archprint-config.js';
4
+ import { InvalidRulesError, LEGACY_RULES_FILE, parseConfigRules, parseLegacyRules, readAdoptedRules, } from './adopted-rules.js';
5
+ import { allowKey, readAllowed } from './allowed-exceptions.js';
5
6
  import { diffFindings, partitionRules } from './check-diff.js';
6
7
  import { evaluateRules } from './check-evaluate.js';
7
8
  import { CheckSetupError, checkoutBase, defaultBase, fileAtCommit, mergeBase, renamedPaths, repoRoot, } from './check-git.js';
@@ -17,6 +18,26 @@ function appRelativeRenames(renames, appPrefix) {
17
18
  }
18
19
  return mapped;
19
20
  }
21
+ function readBaseAllowed(baseOutDir) {
22
+ try {
23
+ return readAllowed(baseOutDir);
24
+ }
25
+ catch {
26
+ return [];
27
+ }
28
+ }
29
+ function loadAllowed(outDir) {
30
+ try {
31
+ return readAllowed(outDir);
32
+ }
33
+ catch (error) {
34
+ throw new CheckSetupError(`cannot read the allowed exceptions: ${error.message}`);
35
+ }
36
+ }
37
+ const withoutAllowed = (findings, allowed) => {
38
+ const keys = new Set(allowed.map((entry) => allowKey(entry.rule, entry.file)));
39
+ return findings.filter((finding) => !keys.has(allowKey(finding.ruleId, finding.file)));
40
+ };
20
41
  function readBaseRules(baseOutDir) {
21
42
  try {
22
43
  return readAdoptedRules(baseOutDir);
@@ -50,25 +71,35 @@ function loadRules(outDir) {
50
71
  throw new CheckSetupError(`cannot read the adopted rules: ${reason}`);
51
72
  }
52
73
  }
53
- function rulesRemovedInChange(options, missing) {
54
- if (existsSync(path.resolve(options.cwd, options.out, missing)))
55
- return null;
74
+ /** The rules adopted on a commit, from its config.json or, for older setups, its rules.json. */
75
+ function rulesAtCommit(root, commit, setupDir) {
76
+ const config = path.posix.join(setupDir, CONFIG_FILE);
77
+ const configText = fileAtCommit(root, commit, config);
78
+ const rules = configText === null ? null : parseConfigRules(configText, config);
79
+ if (rules !== null)
80
+ return { file: config, rules };
81
+ const legacy = path.posix.join(setupDir, LEGACY_RULES_FILE);
82
+ const legacyText = fileAtCommit(root, commit, legacy);
83
+ return legacyText === null ? null : { file: legacy, rules: parseLegacyRules(legacyText, legacy) };
84
+ }
85
+ function rulesRemovedInChange(options) {
56
86
  try {
57
87
  const root = realpathSync(repoRoot(options.cwd));
58
88
  const relative = path.relative(root, path.resolve(realpathSync(options.cwd), options.out));
59
89
  if (outsideRepo(relative))
60
90
  return null;
61
- const setupDir = toPosix(relative);
62
91
  const base = options.base ?? defaultBase(root);
63
92
  const commit = mergeBase(root, base);
64
- const text = fileAtCommit(root, commit, path.posix.join(setupDir, RULES_FILE));
65
- if (text === null)
66
- return null;
67
- const removed = parseAdoptedRules(text, RULES_FILE).rules;
68
- if (removed.length === 0)
93
+ const onBase = rulesAtCommit(root, commit, toPosix(relative));
94
+ if (onBase === null || onBase.rules.length === 0)
69
95
  return null;
70
- const missingFile = path.posix.join(setupDir, missing);
71
- return { status: 'rules-removed', base, commit, missingFile, removed };
96
+ return {
97
+ status: 'rules-removed',
98
+ base,
99
+ commit,
100
+ missingFile: onBase.file,
101
+ removed: onBase.rules,
102
+ };
72
103
  }
73
104
  catch (error) {
74
105
  if (error instanceof CheckSetupError || error instanceof InvalidRulesError)
@@ -81,18 +112,20 @@ export function runCheck(options) {
81
112
  const shown = toPosix(path.relative(options.cwd, outDir) || '.');
82
113
  const config = readConfig(outDir);
83
114
  if (config === null && options.path === undefined) {
84
- return (rulesRemovedInChange(options, CONFIG_FILE) ?? {
115
+ const skipped = {
85
116
  status: 'skipped',
86
117
  reason: `no ${shown}/config.json. Run archprint init (or generate) first.`,
87
- });
118
+ };
119
+ return existsSync(configPath(outDir)) ? skipped : (rulesRemovedInChange(options) ?? skipped);
88
120
  }
89
121
  const adopted = loadRules(outDir);
90
122
  if (adopted === null) {
91
- return (rulesRemovedInChange(options, RULES_FILE) ?? {
123
+ return (rulesRemovedInChange(options) ?? {
92
124
  status: 'skipped',
93
- reason: `no ${shown}/rules.json. Re-run archprint generate once; setups made before 0.9.0 do not have it.`,
125
+ reason: `no adopted rules in ${shown}/config.json. Re-run archprint generate once; setups made before 0.9.0 do not have them.`,
94
126
  });
95
127
  }
128
+ const allowed = loadAllowed(outDir);
96
129
  const appDir = path.resolve(options.cwd, options.path ?? config.app);
97
130
  const root = repoRoot(options.cwd);
98
131
  const outPrefix = insideRepo(root, outDir, 'rules directory');
@@ -103,23 +136,26 @@ export function runCheck(options) {
103
136
  throw new CheckSetupError(`the app directory (${appDir}) is not a directory.`);
104
137
  }
105
138
  const renames = appRelativeRenames(renamedPaths(root, commit), appPrefix);
106
- const ruleById = new Map(adopted.rules.map((rule) => [rule.id, rule]));
139
+ const ruleById = new Map(adopted.map((rule) => [rule.id, rule]));
107
140
  const baseTree = checkoutBase(root, commit, appPrefix);
108
141
  try {
109
142
  const baseRules = readBaseRules(path.join(baseTree.root, outPrefix));
110
- const partition = partitionRules(adopted.rules, baseRules?.rules ?? null);
143
+ const partition = partitionRules(adopted, baseRules);
111
144
  const baseApp = path.join(baseTree.root, appPrefix);
112
145
  const baseFindings = existsSync(baseApp) ? evaluateRules(baseApp, partition.comparable) : [];
113
146
  const headFindings = evaluateRules(appDir, partition.comparable);
114
- const { introduced, fixed } = diffFindings(baseFindings, headFindings, renames);
147
+ const { introduced } = diffFindings(baseFindings, withoutAllowed(headFindings, allowed), renames);
148
+ const { fixed } = diffFindings(baseFindings, headFindings, renames);
115
149
  const locate = createLineLocator(appDir);
116
150
  const adoptedFindings = evaluateRules(appDir, partition.adoptedInChange.map((entry) => entry.rule));
151
+ const baseAllowKeys = new Set(readBaseAllowed(path.join(baseTree.root, outPrefix)).map((entry) => allowKey(entry.rule, renames.get(entry.file) ?? entry.file)));
152
+ const matchedKeys = new Set([...headFindings, ...adoptedFindings].map((finding) => allowKey(finding.ruleId, finding.file)));
117
153
  return {
118
154
  status: 'checked',
119
155
  base,
120
156
  commit,
121
157
  appPath: appPrefix,
122
- rules: adopted.rules,
158
+ rules: adopted,
123
159
  introduced: introduced.map((finding) => ({
124
160
  ...finding,
125
161
  line: locate(finding),
@@ -136,6 +172,9 @@ export function runCheck(options) {
136
172
  count: adoptedFindings.filter((finding) => finding.ruleId === rule.id).length,
137
173
  })),
138
174
  removedInChange: partition.removedInChange,
175
+ allowedInChange: allowed.filter((entry) => !baseAllowKeys.has(allowKey(entry.rule, entry.file)) &&
176
+ matchedKeys.has(allowKey(entry.rule, entry.file))),
177
+ unusedAllows: allowed.filter((entry) => !matchedKeys.has(allowKey(entry.rule, entry.file))),
139
178
  };
140
179
  }
141
180
  finally {
@@ -155,7 +194,7 @@ export function findingMessage(rule) {
155
194
  }
156
195
  const describeSubject = (finding) => finding.kind === 'file' ? '' : ` (${finding.subject})`;
157
196
  const ruleIds = (rules) => rules.map((rule) => rule.id).join(', ');
158
- const rulesRemovedMessage = (result) => `This change removes ${result.missingFile}, so the ${result.removed.length} rule(s) adopted on the base commit are no longer checked: ${ruleIds(result.removed)}.`;
197
+ const rulesRemovedMessage = (result) => `This change removes the adopted rules in ${result.missingFile}, so the ${result.removed.length} rule(s) adopted on the base commit are no longer checked: ${ruleIds(result.removed)}.`;
159
198
  export function renderCheckText(result) {
160
199
  if (result.status === 'skipped')
161
200
  return `archprint check did not run: ${result.reason}`;
@@ -179,6 +218,12 @@ export function renderCheckText(result) {
179
218
  for (const rule of result.removedInChange) {
180
219
  lines.push(`Rule ${rule.id} was removed in this change, so it is no longer checked.`);
181
220
  }
221
+ for (const entry of result.allowedInChange) {
222
+ lines.push(`Allowed in this change: ${entry.rule} in ${entry.file}. Reason: ${entry.reason}`);
223
+ }
224
+ for (const entry of result.unusedAllows) {
225
+ lines.push(`Allowed exception no longer needed: ${entry.rule} reports nothing in ${entry.file}. Remove it with archprint allow --remove.`);
226
+ }
182
227
  return lines.join('\n');
183
228
  }
184
229
  export function checkJson(result, version) {
@@ -217,6 +262,8 @@ export function checkReport(result) {
217
262
  existingViolations: entry.count,
218
263
  })),
219
264
  removedInChange: result.removedInChange.map((rule) => rule.id),
265
+ allowedInChange: result.allowedInChange,
266
+ unusedAllows: result.unusedAllows.map(({ rule, file }) => ({ rule, file })),
220
267
  };
221
268
  }
222
269
  const tableCell = (value) => value.replace(/\|/g, '\\|').replace(/\r?\n/g, ' ');
@@ -234,14 +281,18 @@ export function githubAnnotations(result, failOn) {
234
281
  ];
235
282
  }
236
283
  const level = failOn === 'new' ? 'error' : 'warning';
237
- return result.introduced.map((finding) => {
238
- const file = toPosix(path.posix.join(result.appPath, finding.file));
239
- const properties = [`file=${escapeProperty(file)}`];
240
- if (finding.line !== null)
241
- properties.push(`line=${finding.line}`);
242
- properties.push(`title=${escapeProperty(`archprint: ${finding.rule.id}`)}`);
243
- return `::${level} ${properties.join(',')}::${escapeData(findingMessage(finding.rule))}`;
244
- });
284
+ const allowed = result.allowedInChange.map((entry) => `::notice file=${escapeProperty(toPosix(path.posix.join(result.appPath, entry.file)))},title=${escapeProperty(`archprint: ${entry.rule} allowed`)}::${escapeData(`Allowed with a reason: ${entry.reason}`)}`);
285
+ return [
286
+ ...allowed,
287
+ ...result.introduced.map((finding) => {
288
+ const file = toPosix(path.posix.join(result.appPath, finding.file));
289
+ const properties = [`file=${escapeProperty(file)}`];
290
+ if (finding.line !== null)
291
+ properties.push(`line=${finding.line}`);
292
+ properties.push(`title=${escapeProperty(`archprint: ${finding.rule.id}`)}`);
293
+ return `::${level} ${properties.join(',')}::${escapeData(findingMessage(finding.rule))}`;
294
+ }),
295
+ ];
245
296
  }
246
297
  export function githubSummary(result) {
247
298
  if (result.status === 'skipped') {
@@ -276,6 +327,16 @@ export function githubSummary(result) {
276
327
  for (const rule of result.removedInChange) {
277
328
  lines.push('', `Rule \`${rule.id}\` was **removed** in this change, so it is no longer checked.`);
278
329
  }
330
+ if (result.allowedInChange.length > 0) {
331
+ lines.push('', `**Allowed with a reason in this change (${result.allowedInChange.length}):**`, '');
332
+ lines.push('| File | Rule | Reason |', '| --- | --- | --- |');
333
+ for (const entry of result.allowedInChange) {
334
+ lines.push(`| \`${tableCell(entry.file)}\` | ${tableCell(entry.rule)} | ${tableCell(entry.reason)} |`);
335
+ }
336
+ }
337
+ for (const entry of result.unusedAllows) {
338
+ lines.push('', `Allowed exception no longer needed: \`${entry.rule}\` reports nothing in \`${entry.file}\`.`);
339
+ }
279
340
  return `${lines.join('\n')}\n`;
280
341
  }
281
342
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/cli/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/cli/check.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,8 @@ export interface CollectOptions {
33
33
  only?: string;
34
34
  ruleIds?: readonly string[];
35
35
  mode?: ResolutionMode;
36
+ allowed?: ReadonlyMap<string, readonly string[]>;
37
+ appPath?: string;
36
38
  }
37
39
  export declare function collectEnforcement(scan: ScanResult, options: CollectOptions): CollectedEnforcement;
38
40
  export declare function writeArchprintEslint(collected: CollectedEnforcement, outDir: string): string | null;
@@ -40,7 +42,7 @@ export declare function writeArchprintDepcruise(collected: CollectedEnforcement,
40
42
  export interface EmitResult {
41
43
  eslint: string | null;
42
44
  depcruise: string | null;
43
- rules: string;
45
+ rules: AdoptedRule[];
44
46
  expanded: string[];
45
47
  }
46
48
  export declare function emitLayout(scan: ScanResult, outDir: string, options: CollectOptions & {
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AASlE,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,uCAAuC,CAAC;AAM/C,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,cAAc,4BAA4B,CAAC;AACxD,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,YAAY,iSAkBf,CAAC;AAEX,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,qBAAqB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,SAAS,EAAE,uBAAuB,EAAE,CAAC;IACrC,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAKD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,cAAc,GACtB,oBAAoB,CA6GtB;AAwCD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAIf;AA+ED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/E,UAAU,CASZ;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvF"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AASlE,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,uCAAuC,CAAC;AAM/C,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,cAAc,4BAA4B,CAAC;AACxD,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,YAAY,iSAkBf,CAAC;AAEX,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,qBAAqB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,SAAS,EAAE,uBAAuB,EAAE,CAAC;IACrC,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,cAAc,GACtB,oBAAoB,CA0ItB;AAwCD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAIf;AA+ED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/E,UAAU,CASZ;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvF"}
@@ -1,4 +1,5 @@
1
1
  import * as path from 'node:path';
2
+ import { exemptionPaths } from '../generator/eslint-scope.js';
2
3
  import { writeOwnedFile } from '../generator/owned-paths.js';
3
4
  import { toDependencyCruiser, toEslintBoundaries } from '../generator/layer-emitters.js';
4
5
  import { toDependencyCruiserPublicApi } from '../generator/public-api-emitters.js';
@@ -22,7 +23,7 @@ import { emitRuleArtifacts } from '../generator/rule-generator.js';
22
23
  import { buildForbiddenImportSpecs, renderEslintPluginSource, } from '../generator/eslint-plugin-emitter.js';
23
24
  import { renderEslintPreset } from '../generator/eslint-preset-emitter.js';
24
25
  import { mergeNoRestrictedImports, } from '../generator/eslint-scope.js';
25
- import { consoleIsolationRule, forbiddenImportRule, importStyleRule, publicApiRules, testIsolationRule, writeAdoptedRules, } from './adopted-rules.js';
26
+ import { consoleIsolationRule, forbiddenImportRule, importStyleRule, publicApiRules, byRuleId, testIsolationRule, } from './adopted-rules.js';
26
27
  export const ESLINT_FILE = 'eslint.mjs';
27
28
  export const DEPCRUISE_FILE = 'dependency-cruiser.json';
28
29
  export const ARCHPRINT_DIR = '.archprint';
@@ -45,14 +46,27 @@ export const FAMILY_NAMES = [
45
46
  'ui-data',
46
47
  'server-client',
47
48
  ];
49
+ const withIgnored = (ignored, extra) => [...new Set([...ignored, ...extra])].sort();
48
50
  const byName = (a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
49
51
  export function collectEnforcement(scan, options) {
50
52
  const structural = options.structural ?? false;
51
53
  const emitDepcruise = options.enforcers.dependencyCruiser;
52
54
  const emitEslint = options.enforcers.eslint || !options.enforcers.dependencyCruiser;
53
55
  const pick = (family) => !options.only || options.only === family;
56
+ const allowedFor = (ruleId) => options.allowed?.get(ruleId) ?? [];
57
+ const appPath = options.appPath ?? '.';
58
+ const allowing = (block, ruleId) => block === null
59
+ ? block
60
+ : {
61
+ ...block,
62
+ ignores: withIgnored([...(block.ignores ?? []), ...allowedFor(ruleId)].flatMap((entry) => exemptionPaths(entry, appPath)), []),
63
+ };
64
+ const idByName = new Map(scan.patterns.map((pattern) => [pattern.config.name, pattern.config.id]));
54
65
  const eslintSpecs = emitEslint && pick('forbidden-imports')
55
- ? filterSpecs(buildForbiddenImportSpecs(scan.patterns), scan, options.ruleIds)
66
+ ? filterSpecs(buildForbiddenImportSpecs(scan.patterns), scan, options.ruleIds).map((spec) => ({
67
+ ...spec,
68
+ ignore: withIgnored(spec.ignore, allowedFor(idByName.get(spec.name) ?? '')).map((file) => exemptionPaths(file, appPath)[0]),
69
+ }))
56
70
  : [];
57
71
  const adopted = scan.patterns
58
72
  .filter((pattern) => eslintSpecs.some((spec) => spec.name === pattern.config.name))
@@ -63,7 +77,7 @@ export function collectEnforcement(scan, options) {
63
77
  eslintBlocks.push({ family, block });
64
78
  };
65
79
  if (emitEslint && pick('console')) {
66
- const block = toEslintConsoleIsolation(scan.consoleIsolation);
80
+ const block = allowing(toEslintConsoleIsolation(scan.consoleIsolation), 'console-isolation');
67
81
  pushBlock('console', block);
68
82
  if (block !== null)
69
83
  adopted.push(consoleIsolationRule(scan));
@@ -72,20 +86,20 @@ export function collectEnforcement(scan, options) {
72
86
  pushBlock('env-access', toEslintEnvAccess(scan.envAccess));
73
87
  const noRestricted = [];
74
88
  if (emitEslint && pick('import-style')) {
75
- const block = toEslintDeepRelative(scan.deepRelative);
89
+ const block = allowing(toEslintDeepRelative(scan.deepRelative), 'import-style');
76
90
  noRestricted.push(block);
77
91
  if (block !== null)
78
92
  adopted.push(importStyleRule(scan));
79
93
  }
80
94
  if (emitEslint && pick('test-isolation')) {
81
- const block = toEslintTestIsolation(scan.testIsolation);
95
+ const block = allowing(toEslintTestIsolation(scan.testIsolation), 'test-isolation');
82
96
  noRestricted.push(block);
83
97
  if (block !== null)
84
98
  adopted.push(testIsolationRule(scan));
85
99
  }
86
100
  if (structural && emitEslint && pick('workspace-package'))
87
101
  noRestricted.push(toEslintWorkspacePackageApi(scan.workspacePackageApi));
88
- pushBlock('no-restricted-imports', mergeNoRestrictedImports(noRestricted));
102
+ mergeNoRestrictedImports(noRestricted).forEach((block, index) => pushBlock(index === 0 ? 'no-restricted-imports' : `no-restricted-imports-exceptions-${index}`, block));
89
103
  const depcruise = [];
90
104
  const pushDc = (family, forbidden) => {
91
105
  if (forbidden.length > 0)
@@ -217,7 +231,7 @@ export function emitLayout(scan, outDir, options) {
217
231
  const collected = collectEnforcement(scan, options);
218
232
  const eslint = writeArchprintEslint(collected, outDir);
219
233
  const depcruise = writeArchprintDepcruise(collected, outDir);
220
- const rules = writeAdoptedRules(outDir, collected.adopted, options.version);
234
+ const rules = [...collected.adopted].sort(byRuleId);
221
235
  const expanded = options.expand
222
236
  ? writeExpanded(collected, scan, outDir, options.graph !== false)
223
237
  : [];
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}