archprint 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.
Files changed (77) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +48 -28
  3. package/dist/cli/generate.d.ts +15 -4
  4. package/dist/cli/generate.d.ts.map +1 -1
  5. package/dist/cli/generate.js +93 -44
  6. package/dist/cli/generate.js.map +1 -1
  7. package/dist/cli/program.d.ts +1 -0
  8. package/dist/cli/program.d.ts.map +1 -1
  9. package/dist/cli/program.js +124 -8
  10. package/dist/cli/program.js.map +1 -1
  11. package/dist/cli/recommend.d.ts +5 -1
  12. package/dist/cli/recommend.d.ts.map +1 -1
  13. package/dist/cli/recommend.js +42 -2
  14. package/dist/cli/recommend.js.map +1 -1
  15. package/dist/cli/report.d.ts +1 -0
  16. package/dist/cli/report.d.ts.map +1 -1
  17. package/dist/cli/report.js +21 -3
  18. package/dist/cli/report.js.map +1 -1
  19. package/dist/cli/wiring.d.ts.map +1 -1
  20. package/dist/cli/wiring.js +46 -22
  21. package/dist/cli/wiring.js.map +1 -1
  22. package/dist/detector/family-maturity.d.ts.map +1 -1
  23. package/dist/detector/family-maturity.js +0 -2
  24. package/dist/detector/family-maturity.js.map +1 -1
  25. package/dist/generator/console-isolation-emitters.d.ts +3 -0
  26. package/dist/generator/console-isolation-emitters.d.ts.map +1 -1
  27. package/dist/generator/console-isolation-emitters.js +5 -1
  28. package/dist/generator/console-isolation-emitters.js.map +1 -1
  29. package/dist/generator/deep-relative-emitters.d.ts +4 -0
  30. package/dist/generator/deep-relative-emitters.d.ts.map +1 -1
  31. package/dist/generator/deep-relative-emitters.js +4 -0
  32. package/dist/generator/deep-relative-emitters.js.map +1 -1
  33. package/dist/generator/depcruise-exempt.d.ts +5 -0
  34. package/dist/generator/depcruise-exempt.d.ts.map +1 -0
  35. package/dist/generator/depcruise-exempt.js +8 -0
  36. package/dist/generator/depcruise-exempt.js.map +1 -0
  37. package/dist/generator/dependency-internals-emitters.d.ts +1 -1
  38. package/dist/generator/dependency-internals-emitters.d.ts.map +1 -1
  39. package/dist/generator/dependency-internals-emitters.js +5 -2
  40. package/dist/generator/dependency-internals-emitters.js.map +1 -1
  41. package/dist/generator/env-access-emitters.d.ts +1 -1
  42. package/dist/generator/env-access-emitters.d.ts.map +1 -1
  43. package/dist/generator/env-access-emitters.js +3 -1
  44. package/dist/generator/env-access-emitters.js.map +1 -1
  45. package/dist/generator/eslint-preset-emitter.js +1 -1
  46. package/dist/generator/eslint-scope.d.ts +10 -0
  47. package/dist/generator/eslint-scope.d.ts.map +1 -0
  48. package/dist/generator/eslint-scope.js +37 -0
  49. package/dist/generator/eslint-scope.js.map +1 -0
  50. package/dist/generator/phantom-dependency-emitters.d.ts +1 -1
  51. package/dist/generator/phantom-dependency-emitters.d.ts.map +1 -1
  52. package/dist/generator/phantom-dependency-emitters.js +4 -1
  53. package/dist/generator/phantom-dependency-emitters.js.map +1 -1
  54. package/dist/generator/public-api-emitters.d.ts +1 -1
  55. package/dist/generator/public-api-emitters.d.ts.map +1 -1
  56. package/dist/generator/public-api-emitters.js +2 -1
  57. package/dist/generator/public-api-emitters.js.map +1 -1
  58. package/dist/generator/test-isolation-emitters.d.ts +3 -1
  59. package/dist/generator/test-isolation-emitters.d.ts.map +1 -1
  60. package/dist/generator/test-isolation-emitters.js +26 -2
  61. package/dist/generator/test-isolation-emitters.js.map +1 -1
  62. package/dist/generator/workspace-package-emitters.d.ts +1 -1
  63. package/dist/generator/workspace-package-emitters.d.ts.map +1 -1
  64. package/dist/generator/workspace-package-emitters.js +2 -0
  65. package/dist/generator/workspace-package-emitters.js.map +1 -1
  66. package/dist/index.d.ts +2 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +2 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/scanner/app-dirs.d.ts.map +1 -1
  71. package/dist/scanner/app-dirs.js +5 -2
  72. package/dist/scanner/app-dirs.js.map +1 -1
  73. package/dist/scanner/enforcers.d.ts +8 -0
  74. package/dist/scanner/enforcers.d.ts.map +1 -0
  75. package/dist/scanner/enforcers.js +74 -0
  76. package/dist/scanner/enforcers.js.map +1 -0
  77. package/package.json +4 -4
@@ -1,31 +1,55 @@
1
1
  import { existsSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
2
2
  import * as path from 'node:path';
3
+ import { Node, Project, SyntaxKind } from 'ts-morph';
3
4
  export const AGGREGATOR_FILE = 'eslint.archprint.mjs';
4
5
  export const MANAGED_START = '// archprint:start (managed by archprint; run `archprint eject` to remove)';
5
6
  export const MANAGED_END = '// archprint:end';
6
7
  const SPREAD_MARK = '// archprint:managed';
7
- const ESLINT_CONFIG_NAMES = ['eslint.config.js', 'eslint.config.mjs', 'eslint.config.cjs'];
8
- const CONFIG_DECL = /export\s+default\s+|module\.exports\s*=\s*/;
9
- const CONFIG_CALL = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*\s*\(/;
8
+ const ESLINT_CONFIG_NAMES = [
9
+ 'eslint.config.js',
10
+ 'eslint.config.mjs',
11
+ 'eslint.config.cjs',
12
+ 'eslint.config.ts',
13
+ ];
14
+ function arrayInsertionOffset(node, allowCallArg) {
15
+ if (Node.isArrayLiteralExpression(node))
16
+ return node.getStart() + 1;
17
+ if (Node.isCallExpression(node)) {
18
+ const callee = node.getExpression().getText().split('.').pop();
19
+ if (callee !== 'config' && callee !== 'defineConfig')
20
+ return null;
21
+ const arrayArg = node
22
+ .getArguments()
23
+ .find((argument) => Node.isArrayLiteralExpression(argument));
24
+ if (arrayArg)
25
+ return arrayArg.getStart() + 1;
26
+ if (!allowCallArg)
27
+ return null;
28
+ const openParen = node.getFirstChildByKind(SyntaxKind.OpenParenToken);
29
+ return openParen ? openParen.getEnd() : null;
30
+ }
31
+ if (Node.isIdentifier(node)) {
32
+ const initializer = node
33
+ .getSourceFile()
34
+ .getVariableDeclaration(node.getText())
35
+ ?.getInitializer();
36
+ return initializer ? arrayInsertionOffset(initializer, false) : null;
37
+ }
38
+ return null;
39
+ }
10
40
  function findInsertionPoint(content) {
11
- const decl = CONFIG_DECL.exec(content);
12
- if (decl === null)
13
- return null;
14
- let index = decl.index + decl[0].length;
15
- const skipWhitespace = () => {
16
- while (index < content.length && /\s/.test(content[index]))
17
- index += 1;
18
- };
19
- skipWhitespace();
20
- if (content[index] === '[')
21
- return index + 1;
22
- const call = CONFIG_CALL.exec(content.slice(index));
23
- if (call === null)
24
- return null;
25
- index += call[0].length;
26
- const afterParen = index;
27
- skipWhitespace();
28
- return content[index] === '[' ? index + 1 : afterParen;
41
+ const sourceFile = new Project({
42
+ useInMemoryFileSystem: true,
43
+ skipAddingFilesFromTsConfig: true,
44
+ }).createSourceFile('eslint.config.mjs', content);
45
+ const exportAssignment = sourceFile.getFirstDescendantByKind(SyntaxKind.ExportAssignment);
46
+ if (exportAssignment && !exportAssignment.isExportEquals()) {
47
+ return arrayInsertionOffset(exportAssignment.getExpression(), true);
48
+ }
49
+ const moduleExports = sourceFile
50
+ .getDescendantsOfKind(SyntaxKind.BinaryExpression)
51
+ .find((expression) => expression.getLeft().getText() === 'module.exports');
52
+ return moduleExports ? arrayInsertionOffset(moduleExports.getRight(), true) : null;
29
53
  }
30
54
  const AGGREGATOR_SOURCE = `${MANAGED_START.replace('run `archprint eject` to remove', 'regenerate with `archprint generate`')}
31
55
  import { readdirSync, readFileSync } from 'node:fs';
@@ -46,7 +70,7 @@ try {
46
70
  pluginConfigs = [];
47
71
  }
48
72
 
49
- export default [...blocks, ...pluginConfigs];
73
+ export default [{ ignores: ['**/*.archprint.mjs'] }, ...blocks, ...pluginConfigs];
50
74
  ${MANAGED_END}
51
75
  `;
52
76
  export function hasEslintBlocks(paths) {
@@ -1 +1 @@
1
- {"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"family-maturity.d.ts","sourceRoot":"","sources":["../../src/detector/family-maturity.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,mBAAmB,GACnB,OAAO,GACP,eAAe,GACf,QAAQ,GACR,YAAY,GACZ,eAAe,GACf,eAAe,GACf,uBAAuB,GACvB,gBAAgB,GAChB,oBAAoB,GACpB,cAAc,GACd,cAAc,GACd,cAAc,GACd,mBAAmB,GACnB,YAAY,GACZ,mBAAmB,GACnB,SAAS,GACT,eAAe,GACf,SAAS,GACT,cAAc,CAAC;AAanB,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,KAAG,OAAsC,CAAC"}
1
+ {"version":3,"file":"family-maturity.d.ts","sourceRoot":"","sources":["../../src/detector/family-maturity.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,mBAAmB,GACnB,OAAO,GACP,eAAe,GACf,QAAQ,GACR,YAAY,GACZ,eAAe,GACf,eAAe,GACf,uBAAuB,GACvB,gBAAgB,GAChB,oBAAoB,GACpB,cAAc,GACd,cAAc,GACd,cAAc,GACd,mBAAmB,GACnB,YAAY,GACZ,mBAAmB,GACnB,SAAS,GACT,eAAe,GACf,SAAS,GACT,cAAc,CAAC;AAWnB,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,KAAG,OAAsC,CAAC"}
@@ -4,9 +4,7 @@ const STABLE_FAMILIES = new Set([
4
4
  'test-isolation',
5
5
  'console-isolation',
6
6
  'import-style',
7
- 'phantom-deps',
8
7
  'public-api',
9
- 'dependency-hygiene',
10
8
  ]);
11
9
  export const isStableFamily = (family) => STABLE_FAMILIES.has(family);
12
10
  //# sourceMappingURL=family-maturity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"family-maturity.js","sourceRoot":"","sources":["../../src/detector/family-maturity.ts"],"names":[],"mappings":"AAsBA,MAAM,eAAe,GAA2B,IAAI,GAAG,CAAY;IACjE,mBAAmB;IACnB,QAAQ;IACR,gBAAgB;IAChB,mBAAmB;IACnB,cAAc;IACd,cAAc;IACd,YAAY;IACZ,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAiB,EAAW,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"family-maturity.js","sourceRoot":"","sources":["../../src/detector/family-maturity.ts"],"names":[],"mappings":"AAsBA,MAAM,eAAe,GAA2B,IAAI,GAAG,CAAY;IACjE,mBAAmB;IACnB,QAAQ;IACR,gBAAgB;IAChB,mBAAmB;IACnB,cAAc;IACd,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAiB,EAAW,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC"}
@@ -4,5 +4,8 @@ export interface EslintFlatConfigBlock {
4
4
  ignores: string[];
5
5
  rules: Record<string, unknown>;
6
6
  }
7
+ export declare function withMinedExemptions(baseIgnores: readonly string[], violations: readonly {
8
+ file: string;
9
+ }[]): string[];
7
10
  export declare function toEslintConsoleIsolation(analysis: ConsoleIsolationAnalysis): EslintFlatConfigBlock | null;
8
11
  //# sourceMappingURL=console-isolation-emitters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"console-isolation-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/console-isolation-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAE1F,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,wBAAwB,GACjC,qBAAqB,GAAG,IAAI,CAO9B"}
1
+ {"version":3,"file":"console-isolation-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/console-isolation-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAG1F,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,UAAU,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GACtC,MAAM,EAAE,CAEV;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,wBAAwB,GACjC,qBAAqB,GAAG,IAAI,CAO9B"}
@@ -1,9 +1,13 @@
1
+ import { CLI_GLOBS, TEST_GLOBS } from './eslint-scope.js';
2
+ export function withMinedExemptions(baseIgnores, violations) {
3
+ return [...baseIgnores, ...violations.map((violation) => violation.file)];
4
+ }
1
5
  export function toEslintConsoleIsolation(analysis) {
2
6
  if (analysis.libraryFileCount === 0 || analysis.gate.status !== 'AUTO')
3
7
  return null;
4
8
  return {
5
9
  files: ['**/*.{ts,tsx}'],
6
- ignores: ['**/cli/**', '**/scripts/**', '**/bin/**', '**/tools/**'],
10
+ ignores: withMinedExemptions([...TEST_GLOBS, ...CLI_GLOBS], analysis.violations),
7
11
  rules: { 'no-console': 'error' },
8
12
  };
9
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"console-isolation-emitters.js","sourceRoot":"","sources":["../../src/generator/console-isolation-emitters.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,wBAAwB,CACtC,QAAkC;IAElC,IAAI,QAAQ,CAAC,gBAAgB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpF,OAAO;QACL,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,OAAO,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,CAAC;QACnE,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE;KACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"console-isolation-emitters.js","sourceRoot":"","sources":["../../src/generator/console-isolation-emitters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQ1D,MAAM,UAAU,mBAAmB,CACjC,WAA8B,EAC9B,UAAuC;IAEvC,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAAkC;IAElC,IAAI,QAAQ,CAAC,gBAAgB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpF,OAAO;QACL,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,OAAO,EAAE,mBAAmB,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;QAChF,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE;KACjC,CAAC;AACJ,CAAC"}
@@ -4,11 +4,15 @@ export interface NoRestrictedImportsPattern {
4
4
  message: string;
5
5
  }
6
6
  export interface EslintNoRestrictedImportsConfig {
7
+ ignores?: string[];
7
8
  rules: {
8
9
  'no-restricted-imports': ['error', {
9
10
  patterns: NoRestrictedImportsPattern[];
10
11
  }];
11
12
  };
12
13
  }
14
+ export declare function exemptImporters(violations: readonly {
15
+ file: string;
16
+ }[]): Pick<EslintNoRestrictedImportsConfig, 'ignores'>;
13
17
  export declare function toEslintDeepRelative(analysis: DeepRelativeAnalysis): EslintNoRestrictedImportsConfig | null;
14
18
  //# sourceMappingURL=deep-relative-emitters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deep-relative-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/deep-relative-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAElF,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE;QACL,uBAAuB,EAAE,CAAC,OAAO,EAAE;YAAE,QAAQ,EAAE,0BAA0B,EAAE,CAAA;SAAE,CAAC,CAAC;KAChF,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,oBAAoB,GAC7B,+BAA+B,GAAG,IAAI,CAiBxC"}
1
+ {"version":3,"file":"deep-relative-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/deep-relative-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAElF,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE;QACL,uBAAuB,EAAE,CAAC,OAAO,EAAE;YAAE,QAAQ,EAAE,0BAA0B,EAAE,CAAA;SAAE,CAAC,CAAC;KAChF,CAAC;CACH;AAED,wBAAgB,eAAe,CAC7B,UAAU,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GACtC,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAElD;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,oBAAoB,GAC7B,+BAA+B,GAAG,IAAI,CAkBxC"}
@@ -1,7 +1,11 @@
1
+ export function exemptImporters(violations) {
2
+ return violations.length > 0 ? { ignores: violations.map((violation) => violation.file) } : {};
3
+ }
1
4
  export function toEslintDeepRelative(analysis) {
2
5
  if (analysis.relativeImporterCount === 0 || analysis.gate.status !== 'AUTO')
3
6
  return null;
4
7
  return {
8
+ ...exemptImporters(analysis.violations),
5
9
  rules: {
6
10
  'no-restricted-imports': [
7
11
  'error',
@@ -1 +1 @@
1
- {"version":3,"file":"deep-relative-emitters.js","sourceRoot":"","sources":["../../src/generator/deep-relative-emitters.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,oBAAoB,CAClC,QAA8B;IAE9B,IAAI,QAAQ,CAAC,qBAAqB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACzF,OAAO;QACL,KAAK,EAAE;YACL,uBAAuB,EAAE;gBACvB,OAAO;gBACP;oBACE,QAAQ,EAAE;wBACR;4BACE,KAAK,EAAE,gBAAgB;4BACvB,OAAO,EAAE,kEAAkE;yBAC5E;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"deep-relative-emitters.js","sourceRoot":"","sources":["../../src/generator/deep-relative-emitters.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,eAAe,CAC7B,UAAuC;IAEvC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAA8B;IAE9B,IAAI,QAAQ,CAAC,qBAAqB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACzF,OAAO;QACL,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;QACvC,KAAK,EAAE;YACL,uBAAuB,EAAE;gBACvB,OAAO;gBACP;oBACE,QAAQ,EAAE;wBACR;4BACE,KAAK,EAAE,gBAAgB;4BACvB,OAAO,EAAE,kEAAkE;yBAC5E;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const TEST_ROLE_REGEX = "(\\.(test|spec|e2e-spec|e2e)\\.(ts|tsx)$)|((^|/)(__tests__|__mocks__|e2e|cypress|playwright|test|tests)/)";
2
+ export declare function exemptDepcruiseFrom(base: string | readonly string[], violations: readonly {
3
+ file: string;
4
+ }[]): string | string[];
5
+ //# sourceMappingURL=depcruise-exempt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depcruise-exempt.d.ts","sourceRoot":"","sources":["../../src/generator/depcruise-exempt.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,8GACiF,CAAC;AAE9G,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAChC,UAAU,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GACtC,MAAM,GAAG,MAAM,EAAE,CAInB"}
@@ -0,0 +1,8 @@
1
+ const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
2
+ export const TEST_ROLE_REGEX = '(\\.(test|spec|e2e-spec|e2e)\\.(ts|tsx)$)|((^|/)(__tests__|__mocks__|e2e|cypress|playwright|test|tests)/)';
3
+ export function exemptDepcruiseFrom(base, violations) {
4
+ const bases = typeof base === 'string' ? [base] : [...base];
5
+ const parts = [...bases, ...violations.map((violation) => `${escapeRegExp(violation.file)}$`)];
6
+ return parts.length === 1 ? parts[0] : parts;
7
+ }
8
+ //# sourceMappingURL=depcruise-exempt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depcruise-exempt.js","sourceRoot":"","sources":["../../src/generator/depcruise-exempt.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,eAAe,GAC1B,2GAA2G,CAAC;AAE9G,MAAM,UAAU,mBAAmB,CACjC,IAAgC,EAChC,UAAuC;IAEvC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC"}
@@ -4,7 +4,7 @@ export interface NoInternalsRule {
4
4
  comment: string;
5
5
  severity: 'error' | 'warn' | 'info';
6
6
  from: {
7
- pathNot: string;
7
+ pathNot: string | string[];
8
8
  };
9
9
  to: {
10
10
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-internals-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/dependency-internals-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAKhG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,2BAA2B,GACpC,iBAAiB,CAiBnB"}
1
+ {"version":3,"file":"dependency-internals-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/dependency-internals-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAKhG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IACrC,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,2BAA2B,GACpC,iBAAiB,CAmBnB"}
@@ -1,4 +1,5 @@
1
- const INTERNAL_PATH = 'node_modules/(?:@[^/]+/)?[^/]+/(?:dist|src|lib|esm|cjs|build|out|internal|internals)/';
1
+ import { exemptDepcruiseFrom, TEST_ROLE_REGEX } from './depcruise-exempt.js';
2
+ const INTERNAL_PATH = 'node_modules/(?:@[^/]+/)?[^/]+/(?:src|internal|internals)/';
2
3
  export function toDependencyCruiserDependencyInternals(analysis) {
3
4
  if (analysis.externalImporterCount === 0 || analysis.gate.status !== 'AUTO') {
4
5
  return { forbidden: [] };
@@ -11,7 +12,9 @@ export function toDependencyCruiserDependencyInternals(analysis) {
11
12
  name: 'no-dependency-internals',
12
13
  comment: `Archprint inferred dependency hygiene: ${conform}/${analysis.externalImporterCount} files import third-party packages only by their public entry; reaching into a package's build/impl directory is forbidden (confidence ${floor}).`,
13
14
  severity: 'error',
14
- from: { pathNot: 'node_modules' },
15
+ from: {
16
+ pathNot: exemptDepcruiseFrom([TEST_ROLE_REGEX, 'node_modules'], analysis.violations),
17
+ },
15
18
  to: { path: INTERNAL_PATH },
16
19
  },
17
20
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-internals-emitters.js","sourceRoot":"","sources":["../../src/generator/dependency-internals-emitters.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GACjB,uFAAuF,CAAC;AAc1F,MAAM,UAAU,sCAAsC,CACpD,QAAqC;IAErC,IAAI,QAAQ,CAAC,qBAAqB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5E,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC;IACxE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,OAAO;QACL,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,0CAA0C,OAAO,IAAI,QAAQ,CAAC,qBAAqB,0IAA0I,KAAK,IAAI;gBAC/O,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;gBACjC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;aAC5B;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dependency-internals-emitters.js","sourceRoot":"","sources":["../../src/generator/dependency-internals-emitters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7E,MAAM,aAAa,GAAG,4DAA4D,CAAC;AAcnF,MAAM,UAAU,sCAAsC,CACpD,QAAqC;IAErC,IAAI,QAAQ,CAAC,qBAAqB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5E,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC;IACxE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,OAAO;QACL,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,0CAA0C,OAAO,IAAI,QAAQ,CAAC,qBAAqB,0IAA0I,KAAK,IAAI;gBAC/O,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE;oBACJ,OAAO,EAAE,mBAAmB,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;iBACrF;gBACD,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;aAC5B;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { EnvAccessAnalysis } from '../detector/env-access-detector.js';
2
- import type { EslintFlatConfigBlock } from './console-isolation-emitters.js';
2
+ import { type EslintFlatConfigBlock } from './console-isolation-emitters.js';
3
3
  export declare function toEslintEnvAccess(analysis: EnvAccessAnalysis): EslintFlatConfigBlock | null;
4
4
  //# sourceMappingURL=env-access-emitters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env-access-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/env-access-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,IAAI,CAgB3F"}
1
+ {"version":3,"file":"env-access-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/env-access-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGlG,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,IAAI,CAgB3F"}
@@ -1,9 +1,11 @@
1
+ import { withMinedExemptions } from './console-isolation-emitters.js';
2
+ import { CONFIG_GLOBS, TEST_GLOBS } from './eslint-scope.js';
1
3
  export function toEslintEnvAccess(analysis) {
2
4
  if (analysis.subjectFileCount === 0 || analysis.gate.status !== 'AUTO')
3
5
  return null;
4
6
  return {
5
7
  files: ['**/*.{ts,tsx}'],
6
- ignores: ['**/config/**', '**/env/**', '**/environment/**', '**/*.config.*'],
8
+ ignores: withMinedExemptions([...TEST_GLOBS, ...CONFIG_GLOBS], analysis.violations),
7
9
  rules: {
8
10
  'no-restricted-properties': [
9
11
  'error',
@@ -1 +1 @@
1
- {"version":3,"file":"env-access-emitters.js","sourceRoot":"","sources":["../../src/generator/env-access-emitters.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAAC,QAA2B;IAC3D,IAAI,QAAQ,CAAC,gBAAgB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpF,OAAO;QACL,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,OAAO,EAAE,CAAC,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,CAAC;QAC5E,KAAK,EAAE;YACL,0BAA0B,EAAE;gBAC1B,OAAO;gBACP;oBACE,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,0DAA0D;iBACpE;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"env-access-emitters.js","sourceRoot":"","sources":["../../src/generator/env-access-emitters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAA8B,MAAM,iCAAiC,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,UAAU,iBAAiB,CAAC,QAA2B;IAC3D,IAAI,QAAQ,CAAC,gBAAgB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpF,OAAO;QACL,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,OAAO,EAAE,mBAAmB,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;QACnF,KAAK,EAAE;YACL,0BAA0B,EAAE;gBAC1B,OAAO;gBACP;oBACE,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,0DAA0D;iBACpE;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -11,7 +11,7 @@ const rules = Object.fromEntries(SPECS.map((spec) => [spec.name, makeRule(spec)]
11
11
  const plugin = { rules };
12
12
  const pluginConfigs = ${PLUGIN_CONFIGS};
13
13
 
14
- export default [...BLOCKS, ...pluginConfigs];
14
+ export default [{ ignores: ['**/*.archprint.mjs'] }, ...BLOCKS, ...pluginConfigs];
15
15
  `;
16
16
  }
17
17
  //# sourceMappingURL=eslint-preset-emitter.js.map
@@ -0,0 +1,10 @@
1
+ import type { EslintFlatConfigBlock } from './console-isolation-emitters.js';
2
+ export declare const TEST_GLOBS: readonly string[];
3
+ export declare const CLI_GLOBS: readonly string[];
4
+ export declare const CONFIG_GLOBS: readonly string[];
5
+ export type NoRestrictedImportsBlock = {
6
+ ignores?: string[];
7
+ rules: Record<string, unknown>;
8
+ };
9
+ export declare function mergeNoRestrictedImports(blocks: readonly (NoRestrictedImportsBlock | null)[]): EslintFlatConfigBlock | null;
10
+ //# sourceMappingURL=eslint-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint-scope.d.ts","sourceRoot":"","sources":["../../src/generator/eslint-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAK7E,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EASvC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAAmD,CAAC;AAE3F,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAGzC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAE9F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,CAAC,wBAAwB,GAAG,IAAI,CAAC,EAAE,GACnD,qBAAqB,GAAG,IAAI,CAgB9B"}
@@ -0,0 +1,37 @@
1
+ const dirAndFile = (names) => names.flatMap((name) => [`**/${name}/**`, `**/${name}.{ts,tsx}`]);
2
+ export const TEST_GLOBS = [
3
+ '**/*.{test,spec,e2e-spec,e2e}.{ts,tsx}',
4
+ '**/__tests__/**',
5
+ '**/__mocks__/**',
6
+ '**/e2e/**',
7
+ '**/cypress/**',
8
+ '**/playwright/**',
9
+ '**/test/**',
10
+ '**/tests/**',
11
+ ];
12
+ export const CLI_GLOBS = dirAndFile(['cli', 'scripts', 'bin', 'tools']);
13
+ export const CONFIG_GLOBS = [
14
+ ...dirAndFile(['config', 'env', 'environment']),
15
+ '**/*.config.{ts,tsx}',
16
+ ];
17
+ export function mergeNoRestrictedImports(blocks) {
18
+ const patterns = [];
19
+ const ignores = new Set(TEST_GLOBS);
20
+ for (const block of blocks) {
21
+ if (block === null)
22
+ continue;
23
+ const rule = block.rules['no-restricted-imports'];
24
+ if (rule)
25
+ patterns.push(...rule[1].patterns);
26
+ for (const glob of block.ignores ?? [])
27
+ ignores.add(glob);
28
+ }
29
+ if (patterns.length === 0)
30
+ return null;
31
+ return {
32
+ files: ['**/*.{ts,tsx}'],
33
+ ignores: [...ignores],
34
+ rules: { 'no-restricted-imports': ['error', { patterns }] },
35
+ };
36
+ }
37
+ //# sourceMappingURL=eslint-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint-scope.js","sourceRoot":"","sources":["../../src/generator/eslint-scope.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,CAAC,KAAwB,EAAY,EAAE,CACxD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,EAAE,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAsB;IAC3C,wCAAwC;IACxC,iBAAiB;IACjB,iBAAiB;IACjB,WAAW;IACX,eAAe;IACf,kBAAkB;IAClB,YAAY;IACZ,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAsB,UAAU,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,YAAY,GAAsB;IAC7C,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAC/C,sBAAsB;CACvB,CAAC;AAIF,MAAM,UAAU,wBAAwB,CACtC,MAAoD;IAEpD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,CACD,CAAC;QAChD,IAAI,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO;QACL,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;QACrB,KAAK,EAAE,EAAE,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;KAC5D,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@ export interface PhantomDependencyRule {
4
4
  comment: string;
5
5
  severity: 'error' | 'warn' | 'info';
6
6
  from: {
7
- pathNot: string;
7
+ pathNot: string | string[];
8
8
  };
9
9
  to: {
10
10
  dependencyTypes: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"phantom-dependency-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/phantom-dependency-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAE5F,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,EAAE,EAAE;QAAE,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,qBAAqB,EAAE,CAAC;CACpC;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,yBAAyB,GAClC,uBAAuB,CAiBzB"}
1
+ {"version":3,"file":"phantom-dependency-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/phantom-dependency-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAG5F,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IACrC,EAAE,EAAE;QAAE,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,qBAAqB,EAAE,CAAC;CACpC;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,yBAAyB,GAClC,uBAAuB,CAmBzB"}
@@ -1,3 +1,4 @@
1
+ import { exemptDepcruiseFrom, TEST_ROLE_REGEX } from './depcruise-exempt.js';
1
2
  export function toDependencyCruiserPhantomDependencies(analysis) {
2
3
  if (analysis.externalImporterCount === 0 || analysis.gate.status !== 'AUTO') {
3
4
  return { forbidden: [] };
@@ -10,7 +11,9 @@ export function toDependencyCruiserPhantomDependencies(analysis) {
10
11
  name: 'no-phantom-dependencies',
11
12
  comment: `Archprint inferred dependency declaration: ${conform}/${analysis.externalImporterCount} files import only packages declared in package.json; importing an undeclared (phantom/transitive) dependency is forbidden (confidence ${floor}).`,
12
13
  severity: 'error',
13
- from: { pathNot: 'node_modules' },
14
+ from: {
15
+ pathNot: exemptDepcruiseFrom([TEST_ROLE_REGEX, 'node_modules'], analysis.violations),
16
+ },
14
17
  to: { dependencyTypes: ['npm-no-pkg', 'npm-unknown'] },
15
18
  },
16
19
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"phantom-dependency-emitters.js","sourceRoot":"","sources":["../../src/generator/phantom-dependency-emitters.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,sCAAsC,CACpD,QAAmC;IAEnC,IAAI,QAAQ,CAAC,qBAAqB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5E,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC;IACxE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,OAAO;QACL,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,8CAA8C,OAAO,IAAI,QAAQ,CAAC,qBAAqB,0IAA0I,KAAK,IAAI;gBACnP,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;gBACjC,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;aACvD;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"phantom-dependency-emitters.js","sourceRoot":"","sources":["../../src/generator/phantom-dependency-emitters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAc7E,MAAM,UAAU,sCAAsC,CACpD,QAAmC;IAEnC,IAAI,QAAQ,CAAC,qBAAqB,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5E,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC;IACxE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,OAAO;QACL,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,8CAA8C,OAAO,IAAI,QAAQ,CAAC,qBAAqB,0IAA0I,KAAK,IAAI;gBACnP,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE;oBACJ,OAAO,EAAE,mBAAmB,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;iBACrF;gBACD,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;aACvD;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -5,7 +5,7 @@ export interface DeepImportRule {
5
5
  comment: string;
6
6
  severity: 'error' | 'warn' | 'info';
7
7
  from: {
8
- pathNot: string;
8
+ pathNot: string | string[];
9
9
  };
10
10
  to: {
11
11
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"public-api-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/public-api-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AASzE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,OAAO,GAAE,SAAS,gBAAgB,EAAa,GAC9C,gBAAgB,CAclB"}
1
+ {"version":3,"file":"public-api-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/public-api-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAUzE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IACrC,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,OAAO,GAAE,SAAS,gBAAgB,EAAa,GAC9C,gBAAgB,CAclB"}
@@ -1,3 +1,4 @@
1
+ import { exemptDepcruiseFrom, TEST_ROLE_REGEX } from './depcruise-exempt.js';
1
2
  const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
2
3
  const slug = (dir) => dir.replace(/[^a-zA-Z0-9]+/g, '-').replace(/^-|-$/g, '');
3
4
  const confidencePct = (group) => `${(group.gate.conditions.confidence.value * 100).toFixed(0)}%`;
@@ -10,7 +11,7 @@ export function toDependencyCruiserPublicApi(groups, include = ['AUTO']) {
10
11
  name: `no-deep-import-${slug(group.dir)}`,
11
12
  comment: `Archprint inferred public API: files outside "${group.dir}" import it through its barrel (${group.consumerCount - group.deepImporterCount}/${group.consumerCount} consumers); deep imports into its internals are forbidden (confidence ${confidencePct(group)}).`,
12
13
  severity: 'error',
13
- from: { pathNot: `^${dir}/` },
14
+ from: { pathNot: exemptDepcruiseFrom([TEST_ROLE_REGEX, `^${dir}/`], group.violations) },
14
15
  to: { path: `^${dir}/`, pathNot: `^${dir}/index\\.(ts|tsx)$` },
15
16
  };
16
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"public-api-emitters.js","sourceRoot":"","sources":["../../src/generator/public-api-emitters.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE7F,MAAM,IAAI,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE/F,MAAM,aAAa,GAAG,CAAC,KAAqB,EAAU,EAAE,CACtD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAclE,MAAM,UAAU,4BAA4B,CAC1C,MAAiC,EACjC,UAAuC,CAAC,MAAM,CAAC;IAE/C,MAAM,SAAS,GAAG,MAAM;SACrB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,kBAAkB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzC,OAAO,EAAE,iDAAiD,KAAK,CAAC,GAAG,mCAAmC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,0EAA0E,aAAa,CAAC,KAAK,CAAC,IAAI;YAC5Q,QAAQ,EAAE,OAAgB;YAC1B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,GAAG,EAAE;YAC7B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,GAAG,oBAAoB,EAAE;SAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"public-api-emitters.js","sourceRoot":"","sources":["../../src/generator/public-api-emitters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7E,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE7F,MAAM,IAAI,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE/F,MAAM,aAAa,GAAG,CAAC,KAAqB,EAAU,EAAE,CACtD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAclE,MAAM,UAAU,4BAA4B,CAC1C,MAAiC,EACjC,UAAuC,CAAC,MAAM,CAAC;IAE/C,MAAM,SAAS,GAAG,MAAM;SACrB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,kBAAkB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzC,OAAO,EAAE,iDAAiD,KAAK,CAAC,GAAG,mCAAmC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,0EAA0E,aAAa,CAAC,KAAK,CAAC,IAAI;YAC5Q,QAAQ,EAAE,OAAgB;YAC1B,IAAI,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,eAAe,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;YACvF,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,GAAG,oBAAoB,EAAE;SAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import type { TestIsolationAnalysis } from '../detector/test-isolation-detector.js';
2
+ import { type EslintFlatConfigBlock } from './console-isolation-emitters.js';
2
3
  export interface NotToTestRule {
3
4
  name: string;
4
5
  comment: string;
5
6
  severity: 'error' | 'warn' | 'info';
6
7
  from: {
7
- pathNot: string;
8
+ pathNot: string | string[];
8
9
  };
9
10
  to: {
10
11
  path: string;
@@ -14,4 +15,5 @@ export interface NotToTestConfig {
14
15
  forbidden: NotToTestRule[];
15
16
  }
16
17
  export declare function toDependencyCruiserTestIsolation(analysis: TestIsolationAnalysis): NotToTestConfig;
18
+ export declare function toEslintTestIsolation(analysis: TestIsolationAnalysis): EslintFlatConfigBlock | null;
17
19
  //# sourceMappingURL=test-isolation-emitters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-isolation-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/test-isolation-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAIpF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,qBAAqB,GAAG,eAAe,CAejG"}
1
+ {"version":3,"file":"test-isolation-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/test-isolation-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAMlG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IACrC,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,qBAAqB,GAAG,eAAe,CAejG;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,qBAAqB,GAC9B,qBAAqB,GAAG,IAAI,CAmB9B"}
@@ -1,4 +1,7 @@
1
- const TEST_PATH = '\\.(test|spec)\\.(ts|tsx)$';
1
+ import { withMinedExemptions } from './console-isolation-emitters.js';
2
+ import { TEST_GLOBS } from './eslint-scope.js';
3
+ import { exemptDepcruiseFrom, TEST_ROLE_REGEX } from './depcruise-exempt.js';
4
+ const TEST_PATH = TEST_ROLE_REGEX;
2
5
  export function toDependencyCruiserTestIsolation(analysis) {
3
6
  if (analysis.testFileCount === 0 || analysis.gate.status !== 'AUTO')
4
7
  return { forbidden: [] };
@@ -10,10 +13,31 @@ export function toDependencyCruiserTestIsolation(analysis) {
10
13
  name: 'not-to-test',
11
14
  comment: `Archprint inferred test isolation: ${conform}/${analysis.productionFileCount} production files do not import a test file; importing tests from production code is forbidden (confidence ${floor}).`,
12
15
  severity: 'error',
13
- from: { pathNot: TEST_PATH },
16
+ from: { pathNot: exemptDepcruiseFrom(TEST_PATH, analysis.violations) },
14
17
  to: { path: TEST_PATH },
15
18
  },
16
19
  ],
17
20
  };
18
21
  }
22
+ export function toEslintTestIsolation(analysis) {
23
+ if (analysis.testFileCount === 0 || analysis.gate.status !== 'AUTO')
24
+ return null;
25
+ return {
26
+ files: ['**/*.{ts,tsx}'],
27
+ ignores: withMinedExemptions([...TEST_GLOBS], analysis.violations),
28
+ rules: {
29
+ 'no-restricted-imports': [
30
+ 'error',
31
+ {
32
+ patterns: [
33
+ {
34
+ regex: '\\.(test|spec)(\\.|$)',
35
+ message: 'Do not import a test file from production code.',
36
+ },
37
+ ],
38
+ },
39
+ ],
40
+ },
41
+ };
42
+ }
19
43
  //# sourceMappingURL=test-isolation-emitters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-isolation-emitters.js","sourceRoot":"","sources":["../../src/generator/test-isolation-emitters.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAc/C,MAAM,UAAU,gCAAgC,CAAC,QAA+B;IAC9E,IAAI,QAAQ,CAAC,aAAa,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC9F,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC;IACtE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,OAAO;QACL,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,sCAAsC,OAAO,IAAI,QAAQ,CAAC,mBAAmB,8GAA8G,KAAK,IAAI;gBAC7M,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;gBAC5B,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aACxB;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"test-isolation-emitters.js","sourceRoot":"","sources":["../../src/generator/test-isolation-emitters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAA8B,MAAM,iCAAiC,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7E,MAAM,SAAS,GAAG,eAAe,CAAC;AAclC,MAAM,UAAU,gCAAgC,CAAC,QAA+B;IAC9E,IAAI,QAAQ,CAAC,aAAa,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC9F,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC;IACtE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,OAAO;QACL,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,sCAAsC,OAAO,IAAI,QAAQ,CAAC,mBAAmB,8GAA8G,KAAK,IAAI;gBAC7M,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;gBACtE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aACxB;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAA+B;IAE/B,IAAI,QAAQ,CAAC,aAAa,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACjF,OAAO;QACL,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,OAAO,EAAE,mBAAmB,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;QAClE,KAAK,EAAE;YACL,uBAAuB,EAAE;gBACvB,OAAO;gBACP;oBACE,QAAQ,EAAE;wBACR;4BACE,KAAK,EAAE,uBAAuB;4BAC9B,OAAO,EAAE,iDAAiD;yBAC3D;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { WorkspacePackageAnalysis } from '../detector/workspace-package-detector.js';
2
- import type { EslintNoRestrictedImportsConfig } from './deep-relative-emitters.js';
2
+ import { type EslintNoRestrictedImportsConfig } from './deep-relative-emitters.js';
3
3
  export declare function toEslintWorkspacePackageApi(analysis: WorkspacePackageAnalysis): EslintNoRestrictedImportsConfig | null;
4
4
  //# sourceMappingURL=workspace-package-emitters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-package-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/workspace-package-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAInF,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,wBAAwB,GACjC,+BAA+B,GAAG,IAAI,CAmBxC"}
1
+ {"version":3,"file":"workspace-package-emitters.d.ts","sourceRoot":"","sources":["../../src/generator/workspace-package-emitters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EAAmB,KAAK,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAIpG,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,wBAAwB,GACjC,+BAA+B,GAAG,IAAI,CAoBxC"}
@@ -1,3 +1,4 @@
1
+ import { exemptImporters } from './deep-relative-emitters.js';
1
2
  const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
2
3
  export function toEslintWorkspacePackageApi(analysis) {
3
4
  if (analysis.consumerCount === 0 || analysis.packages.length === 0)
@@ -6,6 +7,7 @@ export function toEslintWorkspacePackageApi(analysis) {
6
7
  return null;
7
8
  const group = analysis.packages.map(escapeRegExp).join('|');
8
9
  return {
10
+ ...exemptImporters(analysis.violations),
9
11
  rules: {
10
12
  'no-restricted-imports': [
11
13
  'error',