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 +71 -12
- package/dist/cli.js.map +1 -1
- package/dist/contextParser.d.ts.map +1 -1
- package/dist/contextParser.js +7 -0
- package/dist/contextParser.js.map +1 -1
- package/dist/dependencyScanner.d.ts.map +1 -1
- package/dist/dependencyScanner.js +11 -1
- package/dist/dependencyScanner.js.map +1 -1
- package/dist/graphFormatter.d.ts +28 -0
- package/dist/graphFormatter.d.ts.map +1 -0
- package/dist/graphFormatter.js +55 -0
- package/dist/graphFormatter.js.map +1 -0
- package/dist/ruleEngine.d.ts +8 -3
- package/dist/ruleEngine.d.ts.map +1 -1
- package/dist/ruleEngine.js +48 -11
- package/dist/ruleEngine.js.map +1 -1
- package/dist/scoreHistory.d.ts +30 -0
- package/dist/scoreHistory.d.ts.map +1 -0
- package/dist/scoreHistory.js +69 -0
- package/dist/scoreHistory.js.map +1 -0
- package/dist/types.d.ts +15 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
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
|
|
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'
|
|
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
|
-
|
|
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
|
|
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
|
-
//
|
|
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,
|
|
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"}
|
package/dist/contextParser.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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":";;;;;AAmBA,
|
|
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"}
|
package/dist/ruleEngine.d.ts
CHANGED
|
@@ -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
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
package/dist/ruleEngine.d.ts.map
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/ruleEngine.js
CHANGED
|
@@ -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
|
|
24
|
-
*
|
|
25
|
-
*
|
|
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
|
|
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
|
|
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
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
package/dist/ruleEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleEngine.js","sourceRoot":"","sources":["../src/ruleEngine.ts"],"names":[],"mappings":";;
|
|
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
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,uGAAuG;IACvG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,sGAAsG;IACtG,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|