architecture-linter 0.1.6 → 0.1.7

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/cli.js CHANGED
@@ -61,6 +61,8 @@ const circularDetector_1 = require("./circularDetector");
61
61
  const baseline_1 = require("./baseline");
62
62
  const monorepo_1 = require("./monorepo");
63
63
  const aliasResolver_1 = require("./aliasResolver");
64
+ const graphFormatter_1 = require("./graphFormatter");
65
+ const scoreHistory_1 = require("./scoreHistory");
64
66
  // Tool version — kept in sync with package.json at build time via the version() call below.
65
67
  const TOOL_VERSION = (() => {
66
68
  try {
@@ -82,7 +84,7 @@ program
82
84
  .description('Scan the project for architecture violations')
83
85
  .option('-c, --context <path>', 'path to the .context.yml config file (auto-detected if omitted)')
84
86
  .option('-p, --project <path>', 'root directory of the project to scan', '.')
85
- .option('-f, --format <format>', 'output format: text, json, or sarif', 'text')
87
+ .option('-f, --format <format>', 'output format: text, json, sarif, mermaid, or dot', 'text')
86
88
  .option('-s, --strict', 'report files that do not belong to any declared layer', false)
87
89
  .option('-q, --quiet', 'suppress informational output; only print violations', false)
88
90
  .option('-e, --explain', 'print why/impact/fix explanation for each violation', false)
@@ -92,10 +94,15 @@ program
92
94
  .option('--update-baseline', 'write current violation count to the baseline file and exit 0', false)
93
95
  .option('--detect-circular', 'detect circular dependencies between layers', false)
94
96
  .option('--monorepo', 'scan all workspace packages defined in package.json workspaces', false)
97
+ .option('--max-violations <n>', 'fail when the number of error-severity violations exceeds this threshold', parseInt)
95
98
  .action(async (options) => {
96
99
  const projectDir = path_1.default.resolve(options.project);
97
100
  const rawFormat = options.format.toLowerCase();
98
- const format = (rawFormat === 'json' ? 'json' : rawFormat === 'sarif' ? 'sarif' : 'text');
101
+ const format = (rawFormat === 'json' ? 'json'
102
+ : rawFormat === 'sarif' ? 'sarif'
103
+ : rawFormat === 'mermaid' ? 'mermaid'
104
+ : rawFormat === 'dot' ? 'dot'
105
+ : 'text');
99
106
  // --baseline alone (no value) defaults to true; coerce to undefined so resolveBaselinePath uses default filename
100
107
  const baselineArg = options.baseline === true ? undefined : options.baseline;
101
108
  const opts = {
@@ -109,6 +116,7 @@ program
109
116
  baseline: baselineArg,
110
117
  updateBaseline: options.updateBaseline,
111
118
  detectCircular: options.detectCircular,
119
+ maxViolations: options.maxViolations,
112
120
  };
113
121
  // Resolve config: explicit flag → auto-detect walking up from project dir → error
114
122
  let contextPath;
@@ -152,7 +160,7 @@ program
152
160
  }
153
161
  if (scans.length === 0) {
154
162
  if (format === 'json') {
155
- console.log(JSON.stringify({ filesScanned: 0, violations: [], unclassifiedFiles: [], violationsByLayer: {}, circularDeps: [] }, null, 2));
163
+ console.log(JSON.stringify({ filesScanned: 0, violations: [], warnings: [], unclassifiedFiles: [], violationsByLayer: {}, circularDeps: [], couplingMatrix: {} }, null, 2));
156
164
  }
157
165
  else if (format === 'text') {
158
166
  console.log(pkgLabel
@@ -176,6 +184,14 @@ program
176
184
  else if (format === 'json') {
177
185
  printJson(result, scans.length, opts, scans, pkgConfig);
178
186
  }
187
+ else if (format === 'mermaid') {
188
+ console.log((0, graphFormatter_1.toMermaid)(result.couplingMatrix));
189
+ return false; // graph output only — never fail CI
190
+ }
191
+ else if (format === 'dot') {
192
+ console.log((0, graphFormatter_1.toDot)(result.couplingMatrix));
193
+ return false; // graph output only — never fail CI
194
+ }
179
195
  else {
180
196
  printText(result, scans.length, opts);
181
197
  if (opts.detectCircular && result.circularDeps.length > 0) {
@@ -185,6 +201,17 @@ program
185
201
  const violationCount = result.violations.length;
186
202
  const hasUnclassified = opts.strict && result.unclassifiedFiles.length > 0;
187
203
  const hasCircular = opts.detectCircular && result.circularDeps.length > 0;
204
+ // --max-violations threshold check
205
+ if (opts.maxViolations !== undefined) {
206
+ if (violationCount > opts.maxViolations) {
207
+ if (!opts.quiet) {
208
+ console.log(chalk_1.default.red(`Max violations exceeded: ${violationCount} (threshold: ${opts.maxViolations})`));
209
+ }
210
+ return true;
211
+ }
212
+ // Under or at threshold — exit 0 regardless of violation count
213
+ return false;
214
+ }
188
215
  // ── Baseline / ratchet mode ────────────────────────────────────────────
189
216
  if (opts.useBaseline || opts.updateBaseline) {
190
217
  const bPath = (0, baseline_1.resolveBaselinePath)(opts.baseline, scanDir);
@@ -486,11 +513,20 @@ program
486
513
  }
487
514
  const result = (0, ruleEngine_1.checkRules)(scans, config, true, false);
488
515
  const archScore = (0, scorer_1.calculateScore)(scans, result, config);
516
+ // Persist score to history file
517
+ (0, scoreHistory_1.appendScoreHistory)(projectDir, {
518
+ timestamp: new Date().toISOString(),
519
+ score: archScore.score,
520
+ grade: archScore.grade,
521
+ violations: result.violations.length,
522
+ version: TOOL_VERSION,
523
+ });
489
524
  if (format === 'json') {
490
- console.log(JSON.stringify(archScore, null, 2));
525
+ const history = (0, scoreHistory_1.loadScoreHistory)(projectDir);
526
+ console.log(JSON.stringify({ ...archScore, history }, null, 2));
491
527
  }
492
528
  else {
493
- printScoreText(archScore);
529
+ printScoreText(archScore, projectDir);
494
530
  }
495
531
  process.exit(0);
496
532
  });
@@ -567,25 +603,35 @@ program
567
603
  program.parse(process.argv);
568
604
  // ── output helpers ────────────────────────────────────────────────────────────
569
605
  function printJson(result, filesScanned, opts, scans, config) {
570
- const violations = result.violations.map(v => {
606
+ const mapViolation = (v) => {
571
607
  const entry = { ...v };
572
608
  if (opts.explain) {
573
609
  entry.explanation = (0, explainer_1.explain)(v.sourceLayer, v.targetLayer, v.rule);
574
610
  }
575
611
  return entry;
576
- });
612
+ };
577
613
  console.log(JSON.stringify({
578
614
  filesScanned,
579
- violations,
615
+ violations: result.violations.map(mapViolation),
616
+ warnings: result.warnings.map(mapViolation),
580
617
  unclassifiedFiles: result.unclassifiedFiles,
581
618
  violationsByLayer: result.violationsByLayer,
582
619
  circularDeps: result.circularDeps,
620
+ couplingMatrix: result.couplingMatrix,
583
621
  ...(scans && config ? { score: (0, scorer_1.calculateScore)(scans, result, config) } : {}),
584
622
  }, null, 2));
585
623
  }
586
624
  function printText(result, filesScanned, opts) {
587
- const { violations, unclassifiedFiles, violationsByLayer } = result;
588
- // Violations
625
+ const { violations, warnings, unclassifiedFiles, violationsByLayer } = result;
626
+ // Warn-severity violations
627
+ for (const v of warnings) {
628
+ console.log(chalk_1.default.yellow.bold('⚠️ Architecture warning\n'));
629
+ console.log(` ${chalk_1.default.bold('File:')} ${chalk_1.default.yellow(v.file)}`);
630
+ console.log(` ${chalk_1.default.bold('Import:')} ${v.importPath}`);
631
+ console.log(` ${chalk_1.default.bold('Rule:')} ${v.rule}`);
632
+ console.log();
633
+ }
634
+ // Error-severity violations
589
635
  for (const v of violations) {
590
636
  console.log(chalk_1.default.red.bold('❌ Architecture violation detected\n'));
591
637
  console.log(` ${chalk_1.default.bold('File:')} ${chalk_1.default.yellow(v.file)}`);
@@ -618,10 +664,15 @@ function printText(result, filesScanned, opts) {
618
664
  }
619
665
  console.log();
620
666
  }
621
- if (violations.length === 0 && (!opts.strict || unclassifiedFiles.length === 0)) {
667
+ if (violations.length === 0 && warnings.length === 0 && (!opts.strict || unclassifiedFiles.length === 0)) {
622
668
  console.log(chalk_1.default.green(`✅ No architecture violations found. (${filesScanned} file(s) scanned)`));
623
669
  return;
624
670
  }
671
+ if (warnings.length > 0 && violations.length === 0 && (!opts.strict || unclassifiedFiles.length === 0)) {
672
+ const wLabel = warnings.length === 1 ? 'warning' : 'warnings';
673
+ console.log(chalk_1.default.yellow(`⚠️ ${warnings.length} ${wLabel} found in ${filesScanned} file(s) scanned. (exit 0)`));
674
+ return;
675
+ }
625
676
  // Per-layer violation summary
626
677
  console.log(chalk_1.default.bold('── Violations by layer ──────────────────'));
627
678
  for (const [layer, count] of Object.entries(violationsByLayer)) {
@@ -636,7 +687,7 @@ function printText(result, filesScanned, opts) {
636
687
  }
637
688
  }
638
689
  // ── helpers ───────────────────────────────────────────────────────────────────
639
- function printScoreText(s) {
690
+ function printScoreText(s, projectDir) {
640
691
  const gradeColour = s.grade === 'A' ? chalk_1.default.green
641
692
  : s.grade === 'B' ? chalk_1.default.cyan
642
693
  : s.grade === 'C' ? chalk_1.default.yellow
@@ -646,6 +697,14 @@ function printScoreText(s) {
646
697
  console.log(chalk_1.default.bold('Architecture Health Score'));
647
698
  console.log();
648
699
  console.log(` ${gradeColour.bold(`${s.score}/100`)} Grade: ${gradeColour.bold(s.grade)} ${gradeColour(bar)}`);
700
+ // Show score sparkline when history is available
701
+ if (projectDir) {
702
+ const history = (0, scoreHistory_1.loadScoreHistory)(projectDir);
703
+ const sparkline = (0, scoreHistory_1.renderSparkline)(history);
704
+ if (sparkline) {
705
+ console.log(` Trend: ${chalk_1.default.cyan(sparkline)}`);
706
+ }
707
+ }
649
708
  console.log();
650
709
  console.log(chalk_1.default.bold(' Breakdown:'));
651
710
  console.log(` Violation density ${String(s.breakdown.violations).padStart(3)}/60 pts`);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"contextParser.d.ts","sourceRoot":"","sources":["../src/contextParser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc/D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAsCpE"}
1
+ {"version":3,"file":"contextParser.d.ts","sourceRoot":"","sources":["../src/contextParser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc/D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAgDpE"}
@@ -62,6 +62,13 @@ function loadContextConfig(contextPath) {
62
62
  if (!resolved.architecture.layers || resolved.architecture.layers.length === 0) {
63
63
  throw new Error('Invalid context file: "architecture.layers" must contain at least one layer.');
64
64
  }
65
+ // Warn about mutually exclusive rules (cannot_import + can_only_import on the same layer).
66
+ for (const [layer, rule] of Object.entries(resolved.rules ?? {})) {
67
+ if (rule.cannot_import !== undefined && rule.can_only_import !== undefined) {
68
+ console.warn(`[architecture-linter] Warning: layer '${layer}' has both 'cannot_import' and ` +
69
+ `'can_only_import' defined. Only 'cannot_import' will be evaluated.`);
70
+ }
71
+ }
65
72
  return resolved;
66
73
  }
67
74
  //# sourceMappingURL=contextParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contextParser.js","sourceRoot":"","sources":["../src/contextParser.ts"],"names":[],"mappings":";;;;;AAUA,0CAcC;AAMD,8CAsCC;AApED,4CAAoB;AACpB,gDAAwB;AACxB,sDAA2B;AAE3B,uCAA2C;AAE3C;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,cAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACrD,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,WAAmB;IACnD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,8CAA8C,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,GAAY,CAAC;IAEjB,IAAI,CAAC;QACH,GAAG,GAAG,iBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iCAAkC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,GAAoB,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,0EAA0E;QAC1E,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,0EAA0E;gBACxE,yFAAyF,CAC5F,CAAC;QACJ,CAAC;QACD,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,MAAM,CAAC,YAAY,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM;YAAE,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;IACnE,CAAC;IAED,kEAAkE;IAClE,0FAA0F;IAC1F,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"contextParser.js","sourceRoot":"","sources":["../src/contextParser.ts"],"names":[],"mappings":";;;;;AAUA,0CAcC;AAMD,8CAgDC;AA9ED,4CAAoB;AACpB,gDAAwB;AACxB,sDAA2B;AAE3B,uCAA2C;AAE3C;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,cAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACrD,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,WAAmB;IACnD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,8CAA8C,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,GAAY,CAAC;IAEjB,IAAI,CAAC;QACH,GAAG,GAAG,iBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iCAAkC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,GAAoB,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,0EAA0E;QAC1E,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,0EAA0E;gBACxE,yFAAyF,CAC5F,CAAC;QACJ,CAAC;QACD,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,MAAM,CAAC,YAAY,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM;YAAE,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;IACnE,CAAC;IAED,kEAAkE;IAClE,0FAA0F;IAC1F,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IAED,2FAA2F;IAC3F,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC3E,OAAO,CAAC,IAAI,CACV,yCAAyC,KAAK,iCAAiC;gBAC/E,oEAAoE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dependencyScanner.d.ts","sourceRoot":"","sources":["../src/dependencyScanner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAc,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAM,EAAO,EACtB,OAAO,GAAE,QAAa,GACrB,OAAO,CAAC,QAAQ,EAAE,CAAC,CA6DrB"}
1
+ {"version":3,"file":"dependencyScanner.d.ts","sourceRoot":"","sources":["../src/dependencyScanner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAc,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAM,EAAO,EACtB,OAAO,GAAE,QAAa,GACrB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAwErB"}
@@ -22,7 +22,7 @@ const aliasResolver_1 = require("./aliasResolver");
22
22
  * @param aliases Resolved alias map for path alias resolution.
23
23
  */
24
24
  async function scanProject(projectDir, exclude = [], aliases = {}) {
25
- const absoluteFiles = await (0, fast_glob_1.default)('**/*.ts', {
25
+ const absoluteFiles = await (0, fast_glob_1.default)('**/*.{ts,tsx,js,jsx,mjs,cjs}', {
26
26
  cwd: projectDir,
27
27
  ignore: ['**/node_modules/**', '**/dist/**', '**/*.d.ts', ...exclude],
28
28
  absolute: true,
@@ -35,6 +35,10 @@ async function scanProject(projectDir, exclude = [], aliases = {}) {
35
35
  const project = new ts_morph_1.Project({
36
36
  skipAddingFilesFromTsConfig: true,
37
37
  skipFileDependencyResolution: true,
38
+ compilerOptions: {
39
+ allowJs: true,
40
+ jsx: 4 /* JsxEmit.ReactJSX — allow JSX in .tsx/.jsx/.js files */,
41
+ },
38
42
  });
39
43
  const results = [];
40
44
  for (const absoluteFile of absoluteFiles) {
@@ -42,6 +46,12 @@ async function scanProject(projectDir, exclude = [], aliases = {}) {
42
46
  const relativeFile = toForwardSlash(path_1.default.relative(projectDir, absoluteFile));
43
47
  const fileDir = path_1.default.dirname(absoluteFile);
44
48
  const sourceLines = sourceFile.getFullText().split('\n');
49
+ // arch-ignore-file: suppress all violations for this file
50
+ const firstLines = sourceLines.slice(0, 5).map(l => l.trim());
51
+ if (firstLines.some(l => /\/\/\s*arch-ignore-file/i.test(l))) {
52
+ results.push({ file: relativeFile, layer: null, imports: [] });
53
+ continue;
54
+ }
45
55
  const imports = [];
46
56
  for (const importDecl of sourceFile.getImportDeclarations()) {
47
57
  const rawSpecifier = importDecl.getModuleSpecifierValue();
@@ -1 +1 @@
1
- {"version":3,"file":"dependencyScanner.js","sourceRoot":"","sources":["../src/dependencyScanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependencyScanner.js","sourceRoot":"","sources":["../src/dependencyScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Formats the layer coupling matrix as a Mermaid or DOT graph.
3
+ *
4
+ * Only edges with at least one import are included in the output.
5
+ */
6
+ type CouplingMatrix = Record<string, Record<string, number>>;
7
+ /**
8
+ * Renders the coupling matrix as a Mermaid `graph LR` diagram.
9
+ *
10
+ * Example output:
11
+ * graph LR
12
+ * controller -->|3| service
13
+ * service -->|1| repository
14
+ */
15
+ export declare function toMermaid(matrix: CouplingMatrix): string;
16
+ /**
17
+ * Renders the coupling matrix as a Graphviz DOT digraph.
18
+ *
19
+ * Example output:
20
+ * digraph arch {
21
+ * rankdir=LR;
22
+ * controller -> service [label="3"];
23
+ * service -> repository [label="1"];
24
+ * }
25
+ */
26
+ export declare function toDot(matrix: CouplingMatrix): string;
27
+ export {};
28
+ //# sourceMappingURL=graphFormatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphFormatter.d.ts","sourceRoot":"","sources":["../src/graphFormatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7D;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAUxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAWpD"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * Formats the layer coupling matrix as a Mermaid or DOT graph.
4
+ *
5
+ * Only edges with at least one import are included in the output.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.toMermaid = toMermaid;
9
+ exports.toDot = toDot;
10
+ /**
11
+ * Renders the coupling matrix as a Mermaid `graph LR` diagram.
12
+ *
13
+ * Example output:
14
+ * graph LR
15
+ * controller -->|3| service
16
+ * service -->|1| repository
17
+ */
18
+ function toMermaid(matrix) {
19
+ const lines = ['graph LR'];
20
+ for (const [source, targets] of Object.entries(matrix)) {
21
+ for (const [target, count] of Object.entries(targets)) {
22
+ if (count > 0) {
23
+ lines.push(` ${sanitiseId(source)} -->|${count}| ${sanitiseId(target)}`);
24
+ }
25
+ }
26
+ }
27
+ return lines.join('\n');
28
+ }
29
+ /**
30
+ * Renders the coupling matrix as a Graphviz DOT digraph.
31
+ *
32
+ * Example output:
33
+ * digraph arch {
34
+ * rankdir=LR;
35
+ * controller -> service [label="3"];
36
+ * service -> repository [label="1"];
37
+ * }
38
+ */
39
+ function toDot(matrix) {
40
+ const lines = ['digraph arch {', ' rankdir=LR;'];
41
+ for (const [source, targets] of Object.entries(matrix)) {
42
+ for (const [target, count] of Object.entries(targets)) {
43
+ if (count > 0) {
44
+ lines.push(` ${sanitiseId(source)} -> ${sanitiseId(target)} [label="${count}"];`);
45
+ }
46
+ }
47
+ }
48
+ lines.push('}');
49
+ return lines.join('\n');
50
+ }
51
+ /** Replaces characters that are invalid in Mermaid and DOT identifiers. */
52
+ function sanitiseId(name) {
53
+ return name.replace(/[^a-zA-Z0-9_]/g, '_');
54
+ }
55
+ //# sourceMappingURL=graphFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphFormatter.js","sourceRoot":"","sources":["../src/graphFormatter.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAYH,8BAUC;AAYD,sBAWC;AAzCD;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,MAAsB;IAC9C,MAAM,KAAK,GAAa,CAAC,UAAU,CAAC,CAAC;IACrC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,KAAK,CAAC,MAAsB;IAC1C,MAAM,KAAK,GAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAC5D,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,2EAA2E;AAC3E,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import { ContextConfig, FileScan, RuleCheckResult } from './types';
2
2
  /**
3
- * Determines which architectural layer a file or import path belongs to by
4
- * inspecting each directory segment (not the filename) for a layer name match.
5
- * Both singular and plural forms are recognised.
3
+ * Determines which architectural layer a file or import path belongs to.
4
+ *
5
+ * - Plain layer names (e.g. 'controller') are matched by directory component
6
+ * (singular and plural forms recognised).
7
+ * - Glob/wildcard layer names (containing *, ?, or /) are matched via minimatch
8
+ * against the full file path. This supports patterns like 'src/*\/controllers/**'.
6
9
  *
7
10
  * Returns the first matching layer, or null if no match is found.
8
11
  */
@@ -14,9 +17,11 @@ export declare function detectLayer(filePath: string, layers: string[]): string
14
17
  * - cannot_import blacklist: the layer must not import from listed layers.
15
18
  * - can_only_import whitelist: the layer may only import from listed layers.
16
19
  * - files glob: rule only applies to source files matching the pattern.
20
+ * - severity 'error' (default) → violations[]; 'warn' → warnings[] (exit 0).
17
21
  * - arch-ignore inline comment on the import suppresses a specific violation.
18
22
  * - strict collects files that belong to no declared layer.
19
23
  * - generateFix when true, populates the `fix` field on each Violation.
24
+ * - couplingMatrix populated with import counts between every pair of layers.
20
25
  */
21
26
  export declare function checkRules(scans: FileScan[], config: ContextConfig, strict?: boolean, generateFix?: boolean): RuleCheckResult;
22
27
  //# sourceMappingURL=ruleEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ruleEngine.d.ts","sourceRoot":"","sources":["../src/ruleEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAa,MAAM,SAAS,CAAC;AAoB9E;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAa7E;AA+CD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,aAAa,EACrB,MAAM,UAAQ,EACd,WAAW,UAAQ,GAClB,eAAe,CAwEjB"}
1
+ {"version":3,"file":"ruleEngine.d.ts","sourceRoot":"","sources":["../src/ruleEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAa,MAAM,SAAS,CAAC;AAoB9E;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAqB7E;AA+CD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,aAAa,EACrB,MAAM,UAAQ,EACd,WAAW,UAAQ,GAClB,eAAe,CAiGjB"}
@@ -20,15 +20,26 @@ function capitalise(str) {
20
20
  return str.charAt(0).toUpperCase() + str.slice(1);
21
21
  }
22
22
  /**
23
- * Determines which architectural layer a file or import path belongs to by
24
- * inspecting each directory segment (not the filename) for a layer name match.
25
- * Both singular and plural forms are recognised.
23
+ * Determines which architectural layer a file or import path belongs to.
24
+ *
25
+ * - Plain layer names (e.g. 'controller') are matched by directory component
26
+ * (singular and plural forms recognised).
27
+ * - Glob/wildcard layer names (containing *, ?, or /) are matched via minimatch
28
+ * against the full file path. This supports patterns like 'src/*\/controllers/**'.
26
29
  *
27
30
  * Returns the first matching layer, or null if no match is found.
28
31
  */
29
32
  function detectLayer(filePath, layers) {
30
33
  const directories = filePath.split('/').slice(0, -1);
31
34
  for (const layer of layers) {
35
+ // Glob-style pattern: delegate to minimatch
36
+ if (/[*?/]/.test(layer)) {
37
+ if ((0, minimatch_1.minimatch)(filePath, layer, { matchBase: false })) {
38
+ return layer;
39
+ }
40
+ continue;
41
+ }
42
+ // Classic: match any directory component (singular / plural)
32
43
  const candidates = pluralCandidates(layer);
33
44
  for (const dir of directories) {
34
45
  if (candidates.includes(dir.toLowerCase())) {
@@ -76,18 +87,26 @@ function buildFixSuggestion(sourceLayer, targetLayer, config) {
76
87
  * - cannot_import blacklist: the layer must not import from listed layers.
77
88
  * - can_only_import whitelist: the layer may only import from listed layers.
78
89
  * - files glob: rule only applies to source files matching the pattern.
90
+ * - severity 'error' (default) → violations[]; 'warn' → warnings[] (exit 0).
79
91
  * - arch-ignore inline comment on the import suppresses a specific violation.
80
92
  * - strict collects files that belong to no declared layer.
81
93
  * - generateFix when true, populates the `fix` field on each Violation.
94
+ * - couplingMatrix populated with import counts between every pair of layers.
82
95
  */
83
96
  function checkRules(scans, config, strict = false, generateFix = false) {
84
97
  const violations = [];
98
+ const warnings = [];
85
99
  const unclassifiedFiles = [];
86
100
  const violationsByLayer = {};
101
+ const couplingMatrix = {};
87
102
  const layers = config.architecture.layers;
88
- // Initialise per-layer counters so every layer appears in the summary.
103
+ // Initialise per-layer counters and coupling matrix rows.
89
104
  for (const layer of layers) {
90
105
  violationsByLayer[layer] = 0;
106
+ couplingMatrix[layer] = {};
107
+ for (const other of layers) {
108
+ couplingMatrix[layer][other] = 0;
109
+ }
91
110
  }
92
111
  for (const scan of scans) {
93
112
  const sourceLayer = detectLayer(scan.file, layers);
@@ -97,16 +116,27 @@ function checkRules(scans, config, strict = false, generateFix = false) {
97
116
  continue;
98
117
  }
99
118
  const layerRule = config.rules?.[sourceLayer];
100
- if (!layerRule)
101
- continue;
102
119
  // If the rule has a files pattern, only apply it to matching source files.
103
- if (layerRule.files && !(0, minimatch_1.minimatch)(scan.file, layerRule.files)) {
120
+ if (layerRule?.files && !(0, minimatch_1.minimatch)(scan.file, layerRule.files)) {
121
+ // Still count coupling even when file glob excludes this file from rule checks
122
+ for (const importInfo of scan.imports) {
123
+ const targetLayer = detectLayer(importInfo.importPath, layers);
124
+ if (targetLayer && targetLayer !== sourceLayer) {
125
+ couplingMatrix[sourceLayer][targetLayer]++;
126
+ }
127
+ }
104
128
  continue;
105
129
  }
106
130
  for (const importInfo of scan.imports) {
107
131
  const targetLayer = detectLayer(importInfo.importPath, layers);
108
132
  if (!targetLayer)
109
133
  continue;
134
+ // Accumulate coupling for every cross-layer import regardless of rules.
135
+ if (targetLayer !== sourceLayer) {
136
+ couplingMatrix[sourceLayer][targetLayer]++;
137
+ }
138
+ if (!layerRule)
139
+ continue;
110
140
  const ruleString = `${capitalise(sourceLayer)} cannot import ${capitalise(targetLayer)}`;
111
141
  // Respect arch-ignore inline comments on the preceding line.
112
142
  if (importInfo.archIgnore.some(hint => hint === ruleString.toLowerCase())) {
@@ -122,6 +152,7 @@ function checkRules(scans, config, strict = false, generateFix = false) {
122
152
  violated = !layerRule.can_only_import.includes(targetLayer);
123
153
  }
124
154
  if (violated) {
155
+ const severity = layerRule.severity ?? 'error';
125
156
  const violation = {
126
157
  file: scan.file,
127
158
  importPath: importInfo.importPath,
@@ -129,16 +160,22 @@ function checkRules(scans, config, strict = false, generateFix = false) {
129
160
  sourceLayer,
130
161
  targetLayer,
131
162
  rule: ruleString,
163
+ severity,
132
164
  };
133
165
  if (generateFix) {
134
166
  violation.fix = buildFixSuggestion(sourceLayer, targetLayer, config);
135
167
  }
136
- violations.push(violation);
137
- // sourceLayer is always in violationsByLayer (initialised above for every layer)
138
- violationsByLayer[sourceLayer]++;
168
+ if (severity === 'warn') {
169
+ warnings.push(violation);
170
+ }
171
+ else {
172
+ violations.push(violation);
173
+ // Only error-severity violations count toward the per-layer summary.
174
+ violationsByLayer[sourceLayer]++;
175
+ }
139
176
  }
140
177
  }
141
178
  }
142
- return { violations, unclassifiedFiles, violationsByLayer, circularDeps: [] };
179
+ return { violations, warnings, unclassifiedFiles, violationsByLayer, circularDeps: [], couplingMatrix };
143
180
  }
144
181
  //# sourceMappingURL=ruleEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ruleEngine.js","sourceRoot":"","sources":["../src/ruleEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruleEngine.js","sourceRoot":"","sources":["../src/ruleEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Score history tracking: append, load, and render a sparkline of arch health scores.
3
+ *
4
+ * History is stored as newline-delimited JSON (`.arch-score-history.jsonl`) — one
5
+ * JSON object per line, each containing timestamp, score, grade, and violation count.
6
+ */
7
+ export interface ScoreHistoryEntry {
8
+ timestamp: string;
9
+ score: number;
10
+ grade: 'A' | 'B' | 'C' | 'D' | 'F';
11
+ violations: number;
12
+ version: string;
13
+ }
14
+ /**
15
+ * Appends a new score entry to the history file in `dir`.
16
+ * Creates the file if it does not exist.
17
+ */
18
+ export declare function appendScoreHistory(dir: string, entry: ScoreHistoryEntry): void;
19
+ /**
20
+ * Loads all score history entries from `dir`.
21
+ * Returns an empty array if the file does not exist or is unreadable.
22
+ */
23
+ export declare function loadScoreHistory(dir: string): ScoreHistoryEntry[];
24
+ /**
25
+ * Returns a sparkline string for the given score history entries.
26
+ * Each entry is represented by a single block character (▁–█) proportional to its score.
27
+ * Returns an empty string when fewer than 2 entries are provided.
28
+ */
29
+ export declare function renderSparkline(entries: ScoreHistoryEntry[]): string;
30
+ //# sourceMappingURL=scoreHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreHistory.d.ts","sourceRoot":"","sources":["../src/scoreHistory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAG9E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAgBjE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAiBpE"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /**
3
+ * Score history tracking: append, load, and render a sparkline of arch health scores.
4
+ *
5
+ * History is stored as newline-delimited JSON (`.arch-score-history.jsonl`) — one
6
+ * JSON object per line, each containing timestamp, score, grade, and violation count.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.appendScoreHistory = appendScoreHistory;
13
+ exports.loadScoreHistory = loadScoreHistory;
14
+ exports.renderSparkline = renderSparkline;
15
+ const fs_1 = __importDefault(require("fs"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const HISTORY_FILENAME = '.arch-score-history.jsonl';
18
+ const SPARKLINE_CHARS = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'];
19
+ /**
20
+ * Appends a new score entry to the history file in `dir`.
21
+ * Creates the file if it does not exist.
22
+ */
23
+ function appendScoreHistory(dir, entry) {
24
+ const filePath = path_1.default.join(dir, HISTORY_FILENAME);
25
+ fs_1.default.appendFileSync(filePath, JSON.stringify(entry) + '\n', 'utf-8');
26
+ }
27
+ /**
28
+ * Loads all score history entries from `dir`.
29
+ * Returns an empty array if the file does not exist or is unreadable.
30
+ */
31
+ function loadScoreHistory(dir) {
32
+ const filePath = path_1.default.join(dir, HISTORY_FILENAME);
33
+ if (!fs_1.default.existsSync(filePath))
34
+ return [];
35
+ const entries = [];
36
+ const lines = fs_1.default.readFileSync(filePath, 'utf-8').split('\n');
37
+ for (const line of lines) {
38
+ const trimmed = line.trim();
39
+ if (!trimmed)
40
+ continue;
41
+ try {
42
+ entries.push(JSON.parse(trimmed));
43
+ }
44
+ catch {
45
+ // Skip malformed lines silently
46
+ }
47
+ }
48
+ return entries;
49
+ }
50
+ /**
51
+ * Returns a sparkline string for the given score history entries.
52
+ * Each entry is represented by a single block character (▁–█) proportional to its score.
53
+ * Returns an empty string when fewer than 2 entries are provided.
54
+ */
55
+ function renderSparkline(entries) {
56
+ if (entries.length < 2)
57
+ return '';
58
+ const scores = entries.map(e => e.score);
59
+ const min = Math.min(...scores);
60
+ const max = Math.max(...scores);
61
+ const range = max - min || 1; // avoid division by zero
62
+ return scores
63
+ .map(score => {
64
+ const index = Math.min(Math.floor(((score - min) / range) * SPARKLINE_CHARS.length), SPARKLINE_CHARS.length - 1);
65
+ return SPARKLINE_CHARS[index];
66
+ })
67
+ .join('');
68
+ }
69
+ //# sourceMappingURL=scoreHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreHistory.js","sourceRoot":"","sources":["../src/scoreHistory.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAoBH,gDAGC;AAMD,4CAgBC;AAOD,0CAiBC;AAnED,4CAAoB;AACpB,gDAAwB;AAUxB,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AACrD,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEjE;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,GAAW,EAAE,KAAwB;IACtE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAClD,YAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAClD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,OAA4B;IAC1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,yBAAyB;IAEvD,OAAO,MAAM;SACV,GAAG,CAAC,KAAK,CAAC,EAAE;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,EAC5D,eAAe,CAAC,MAAM,GAAG,CAAC,CAC3B,CAAC;QACF,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
package/dist/types.d.ts CHANGED
@@ -32,6 +32,11 @@ export interface LayerRule {
32
32
  can_only_import?: string[];
33
33
  /** Optional file glob (project-relative). Rule only applies to source files matching this pattern. */
34
34
  files?: string;
35
+ /**
36
+ * Severity of violations for this layer's rule.
37
+ * 'error' (default) causes a non-zero exit code; 'warn' prints the violation but exits 0.
38
+ */
39
+ severity?: 'error' | 'warn';
35
40
  }
36
41
  /**
37
42
  * A single import found in a scanned file.
@@ -63,6 +68,8 @@ export interface Violation {
63
68
  sourceLayer: string;
64
69
  targetLayer: string;
65
70
  rule: string;
71
+ /** Severity: 'error' (default) causes exit 1; 'warn' prints but exits 0. */
72
+ severity?: 'error' | 'warn';
66
73
  /** Textual suggestion for resolving the violation (populated when --fix is enabled). */
67
74
  fix?: string;
68
75
  }
@@ -104,7 +111,7 @@ export interface CircularDep {
104
111
  }
105
112
  /** Options passed from the CLI to the scan pipeline. */
106
113
  export interface ScanOptions {
107
- format: 'text' | 'json' | 'sarif';
114
+ format: 'text' | 'json' | 'sarif' | 'mermaid' | 'dot';
108
115
  /** Fail and report files that do not belong to any declared layer. */
109
116
  strict: boolean;
110
117
  /** Suppress informational output; only print violations. */
@@ -123,15 +130,21 @@ export interface ScanOptions {
123
130
  updateBaseline: boolean;
124
131
  /** Detect circular dependencies between layers and include them in output. */
125
132
  detectCircular: boolean;
133
+ /** Fail if the number of ERROR-severity violations exceeds this threshold. */
134
+ maxViolations?: number;
126
135
  }
127
136
  /** Aggregated result returned by the rule engine. */
128
137
  export interface RuleCheckResult {
129
138
  violations: Violation[];
139
+ /** Violations with severity='warn' only — exit 0. */
140
+ warnings: Violation[];
130
141
  /** Populated only in strict mode: files whose directory matches no layer. */
131
142
  unclassifiedFiles: string[];
132
- /** Number of violations per layer name. */
143
+ /** Number of error-severity violations per layer name. */
133
144
  violationsByLayer: Record<string, number>;
134
145
  /** Circular dependencies detected between layers (populated when detectCircular is enabled). */
135
146
  circularDeps: CircularDep[];
147
+ /** N×N import count between every pair of layers. */
148
+ couplingMatrix: Record<string, Record<string, number>>;
136
149
  }
137
150
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "architecture-linter",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "A CLI tool that enforces architecture rules in TypeScript projects",
5
5
  "keywords": [
6
6
  "architecture",