architecture-linter 0.1.0 → 0.1.1
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/dependencyScanner.js +1 -1
- package/dist/dependencyScanner.js.map +1 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +24 -12
- package/dist/presets.js.map +1 -1
- package/dist/ruleEngine.d.ts.map +1 -1
- package/dist/ruleEngine.js +4 -1
- package/dist/ruleEngine.js.map +1 -1
- package/package.json +1 -1
|
@@ -24,7 +24,7 @@ const aliasResolver_1 = require("./aliasResolver");
|
|
|
24
24
|
async function scanProject(projectDir, exclude = [], aliases = {}) {
|
|
25
25
|
const absoluteFiles = await (0, fast_glob_1.default)('**/*.ts', {
|
|
26
26
|
cwd: projectDir,
|
|
27
|
-
ignore: ['node_modules/**', 'dist/**', '**/*.d.ts', ...exclude],
|
|
27
|
+
ignore: ['**/node_modules/**', '**/dist/**', '**/*.d.ts', ...exclude],
|
|
28
28
|
absolute: true,
|
|
29
29
|
});
|
|
30
30
|
if (absoluteFiles.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyScanner.js","sourceRoot":"","sources":["../src/dependencyScanner.ts"],"names":[],"mappings":";;;;;AAmBA,kCAiEC;AApFD,gDAAwB;AACxB,0DAA2B;AAC3B,uCAAmC;AAEnC,mDAAyD;AAEzD;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,UAAoB,EAAE,EACtB,UAAoB,EAAE;IAEtB,MAAM,aAAa,GAAG,MAAM,IAAA,mBAAE,EAAC,SAAS,EAAE;QACxC,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"dependencyScanner.js","sourceRoot":"","sources":["../src/dependencyScanner.ts"],"names":[],"mappings":"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"}
|
package/dist/presets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAkD1D,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAkD1D,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CA+DnE"}
|
package/dist/presets.js
CHANGED
|
@@ -81,34 +81,46 @@ function resolvePresets(config) {
|
|
|
81
81
|
throw new Error(`Unknown preset: "${name}".\nAvailable presets: ${available}\n` +
|
|
82
82
|
'Check the "extends" field in your .context.yml.');
|
|
83
83
|
}
|
|
84
|
+
// all built-in presets define both architecture.layers and rules; ?? fallbacks are defensive
|
|
85
|
+
/* istanbul ignore next */
|
|
86
|
+
const accLayers = accumulated.architecture?.layers ?? [];
|
|
87
|
+
/* istanbul ignore next */
|
|
88
|
+
const presetLayers = preset.architecture?.layers ?? [];
|
|
89
|
+
/* istanbul ignore next */
|
|
90
|
+
const accRules = accumulated.rules ?? {};
|
|
91
|
+
/* istanbul ignore next */
|
|
92
|
+
const presetRules = preset.rules ?? {};
|
|
84
93
|
accumulated = {
|
|
85
94
|
...accumulated,
|
|
86
95
|
...preset,
|
|
87
96
|
architecture: {
|
|
88
|
-
layers: dedupe([
|
|
89
|
-
...(accumulated.architecture?.layers ?? []),
|
|
90
|
-
...(preset.architecture?.layers ?? []),
|
|
91
|
-
]),
|
|
97
|
+
layers: dedupe([...accLayers, ...presetLayers]),
|
|
92
98
|
},
|
|
93
99
|
rules: {
|
|
94
|
-
...
|
|
95
|
-
...
|
|
100
|
+
...accRules,
|
|
101
|
+
...presetRules,
|
|
96
102
|
},
|
|
97
103
|
};
|
|
98
104
|
}
|
|
99
105
|
// User config takes full precedence: merge user on top of accumulated preset
|
|
106
|
+
// accumulated always has layers/rules (loop ran ≥ once); config properties are required by type
|
|
107
|
+
/* istanbul ignore next */
|
|
108
|
+
const finalAccLayers = accumulated.architecture?.layers ?? [];
|
|
109
|
+
/* istanbul ignore next */
|
|
110
|
+
const finalAccRules = accumulated.rules ?? {};
|
|
111
|
+
/* istanbul ignore next */
|
|
112
|
+
const userLayers = config.architecture?.layers ?? [];
|
|
113
|
+
/* istanbul ignore next */
|
|
114
|
+
const userRules = config.rules ?? {};
|
|
100
115
|
return {
|
|
101
116
|
...accumulated,
|
|
102
117
|
...config,
|
|
103
118
|
architecture: {
|
|
104
|
-
layers: dedupe([
|
|
105
|
-
...(accumulated.architecture?.layers ?? []),
|
|
106
|
-
...(config.architecture?.layers ?? []),
|
|
107
|
-
]),
|
|
119
|
+
layers: dedupe([...finalAccLayers, ...userLayers]),
|
|
108
120
|
},
|
|
109
121
|
rules: {
|
|
110
|
-
...
|
|
111
|
-
...
|
|
122
|
+
...finalAccRules,
|
|
123
|
+
...userRules,
|
|
112
124
|
},
|
|
113
125
|
};
|
|
114
126
|
}
|
package/dist/presets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":";;;AAuEA,
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
|
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;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAa7E;
|
|
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"}
|
package/dist/ruleEngine.js
CHANGED
|
@@ -56,6 +56,7 @@ function buildFixSuggestion(sourceLayer, targetLayer, config) {
|
|
|
56
56
|
}
|
|
57
57
|
return `Remove the direct '${targetLayer}' import from '${sourceLayer}'.`;
|
|
58
58
|
}
|
|
59
|
+
/* istanbul ignore else -- violations are only created via cannot_import / can_only_import; this else is unreachable */
|
|
59
60
|
if (rule?.can_only_import !== undefined) {
|
|
60
61
|
if (rule.can_only_import.length > 0) {
|
|
61
62
|
return (`'${sourceLayer}' may only import from: ` +
|
|
@@ -65,6 +66,7 @@ function buildFixSuggestion(sourceLayer, targetLayer, config) {
|
|
|
65
66
|
return (`'${sourceLayer}' is not permitted to import from any other layer. ` +
|
|
66
67
|
`Remove this import.`);
|
|
67
68
|
}
|
|
69
|
+
/* istanbul ignore next -- defensive fallback; violations are only created via cannot_import / can_only_import paths */
|
|
68
70
|
return `Review the architecture rules and remove or redirect this import.`;
|
|
69
71
|
}
|
|
70
72
|
/**
|
|
@@ -132,7 +134,8 @@ function checkRules(scans, config, strict = false, generateFix = false) {
|
|
|
132
134
|
violation.fix = buildFixSuggestion(sourceLayer, targetLayer, config);
|
|
133
135
|
}
|
|
134
136
|
violations.push(violation);
|
|
135
|
-
|
|
137
|
+
// sourceLayer is always in violationsByLayer (initialised above for every layer)
|
|
138
|
+
violationsByLayer[sourceLayer]++;
|
|
136
139
|
}
|
|
137
140
|
}
|
|
138
141
|
}
|
package/dist/ruleEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleEngine.js","sourceRoot":"","sources":["../src/ruleEngine.ts"],"names":[],"mappings":";;AA4BA,kCAaC;
|
|
1
|
+
{"version":3,"file":"ruleEngine.js","sourceRoot":"","sources":["../src/ruleEngine.ts"],"names":[],"mappings":"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"}
|