@solid-stack/mason 1.0.30 → 1.0.31
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/bin.cjs +28 -3
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +28 -3
- package/dist/bin.js.map +1 -1
- package/dist/core/lintEngine.d.ts +1 -0
- package/dist/core/lintEngine.d.ts.map +1 -1
- package/dist/index.cjs +28 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -3
- package/dist/index.js.map +1 -1
- package/dist/types/lint.d.ts +1 -1
- package/dist/types/lint.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@ export declare class DependencyRuleError extends Error {
|
|
|
7
7
|
export interface TargetInfo {
|
|
8
8
|
isExternal: boolean;
|
|
9
9
|
isDiFramework: boolean;
|
|
10
|
+
isGlobalConfig?: boolean | undefined;
|
|
10
11
|
targetFeature?: string | undefined;
|
|
11
12
|
targetLayer?: LayerType | undefined;
|
|
12
13
|
targetSubfolder?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lintEngine.d.ts","sourceRoot":"","sources":["../../src/core/lintEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EAEtB,yBAAyB,EACzB,SAAS,EACT,WAAW,EACX,WAAW,EAEX,SAAS,EACV,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"lintEngine.d.ts","sourceRoot":"","sources":["../../src/core/lintEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -4951,14 +4951,19 @@ function classifyTarget(specifier, sourceFileAbs, projectRoot) {
|
|
|
4951
4951
|
resolvedRel = specifier.replace(/^[@~]\//, "src/");
|
|
4952
4952
|
} else if (specifier.startsWith("@shared/")) {
|
|
4953
4953
|
resolvedRel = "src/" + specifier.slice(1);
|
|
4954
|
+
} else if (specifier.startsWith("@/configs/") || specifier.startsWith("~/configs/") || specifier === "@/configs" || specifier === "~/configs") {
|
|
4955
|
+
resolvedRel = specifier.replace(/^[@~]\//, "src/");
|
|
4956
|
+
} else if (specifier === "@configs" || specifier.startsWith("@configs/")) {
|
|
4957
|
+
resolvedRel = "src/" + specifier.slice(1);
|
|
4954
4958
|
} else if (specifier.startsWith("@/") || specifier.startsWith("~/")) {
|
|
4955
4959
|
resolvedRel = "src/" + specifier.slice(2);
|
|
4956
|
-
} else if (specifier.startsWith("features/") || specifier.startsWith("shared/")) {
|
|
4960
|
+
} else if (specifier.startsWith("features/") || specifier.startsWith("shared/") || specifier.startsWith("configs/") || specifier === "configs") {
|
|
4957
4961
|
resolvedRel = specifier;
|
|
4958
4962
|
}
|
|
4959
4963
|
if (!resolvedRel) {
|
|
4960
4964
|
return { isExternal: true, isDiFramework: false };
|
|
4961
4965
|
}
|
|
4966
|
+
const isGlobalConfig = resolvedRel.startsWith("src/configs/") || resolvedRel === "src/configs" || resolvedRel.startsWith("configs/") || resolvedRel === "configs";
|
|
4962
4967
|
const featMatch = resolvedRel.match(/(?:^|\/)(?:src\/)?features\/([^/]+)\/([^/]+)(?:\/(.*))?$/);
|
|
4963
4968
|
if (featMatch && featMatch[1] && featMatch[2]) {
|
|
4964
4969
|
const targetFeature = featMatch[1];
|
|
@@ -5009,7 +5014,7 @@ function classifyTarget(specifier, sourceFileAbs, projectRoot) {
|
|
|
5009
5014
|
isSharedDomain
|
|
5010
5015
|
};
|
|
5011
5016
|
}
|
|
5012
|
-
return { isExternal: true, isDiFramework: false };
|
|
5017
|
+
return { isExternal: true, isDiFramework: false, isGlobalConfig };
|
|
5013
5018
|
}
|
|
5014
5019
|
function extractImportStatements(content) {
|
|
5015
5020
|
const statements = [];
|
|
@@ -5599,6 +5604,26 @@ Code: ${v.code}`;
|
|
|
5599
5604
|
});
|
|
5600
5605
|
}
|
|
5601
5606
|
}
|
|
5607
|
+
if (target.isGlobalConfig) {
|
|
5608
|
+
addViolation({
|
|
5609
|
+
feature: feat.name,
|
|
5610
|
+
layer,
|
|
5611
|
+
file,
|
|
5612
|
+
relativePath: relPath,
|
|
5613
|
+
line: stmt.line,
|
|
5614
|
+
category: "Global Configuration Violation",
|
|
5615
|
+
code: stmt.rawCode,
|
|
5616
|
+
ruleId: "F2_GLOBAL_CONFIG_DEPENDENCY",
|
|
5617
|
+
severity: "error",
|
|
5618
|
+
advice: `Feature layers (${layer}) must not depend directly on global configurations. Define a configuration interface/token within the feature (e.g., '${feat.name}/domain/I${toPascalCase(feat.name)}Config') and inject it. The feature's diProvider.ts will handle mapping the global config to this token.`,
|
|
5619
|
+
fixExample: {
|
|
5620
|
+
bad: stmt.rawCode,
|
|
5621
|
+
good: `// 1. Define I${toPascalCase(feat.name)}Config locally
|
|
5622
|
+
// 2. Inject it via static deps
|
|
5623
|
+
// 3. Import and bind global configs inside diProvider.ts`
|
|
5624
|
+
}
|
|
5625
|
+
});
|
|
5626
|
+
}
|
|
5602
5627
|
if (layer === "domain") {
|
|
5603
5628
|
if (target.targetLayer && ["useCases", "services", "infrastructure", "presentation"].includes(target.targetLayer)) {
|
|
5604
5629
|
addViolation({
|
|
@@ -5654,7 +5679,7 @@ Code: ${v.code}`;
|
|
|
5654
5679
|
}
|
|
5655
5680
|
});
|
|
5656
5681
|
}
|
|
5657
|
-
if (target.isExternal && !target.isDiFramework) {
|
|
5682
|
+
if (target.isExternal && !target.isDiFramework && !target.isGlobalConfig) {
|
|
5658
5683
|
addViolation({
|
|
5659
5684
|
feature: feat.name,
|
|
5660
5685
|
layer,
|