@nx/eslint-plugin 22.6.0-beta.10 → 22.6.0-beta.11
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/eslint-plugin",
|
|
3
|
-
"version": "22.6.0-beta.
|
|
3
|
+
"version": "22.6.0-beta.11",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The eslint-plugin package is an ESLint plugin that contains a collection of recommended ESLint rule configurations which you can extend from in your own ESLint configs, as well as an Nx-specific lint rule called enforce-module-boundaries.",
|
|
6
6
|
"repository": {
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@nx/devkit": "22.6.0-beta.
|
|
38
|
-
"@nx/js": "22.6.0-beta.
|
|
37
|
+
"@nx/devkit": "22.6.0-beta.11",
|
|
38
|
+
"@nx/js": "22.6.0-beta.11",
|
|
39
39
|
"@phenomnomnominal/tsquery": "~6.1.4",
|
|
40
40
|
"@typescript-eslint/type-utils": "^8.0.0",
|
|
41
41
|
"@typescript-eslint/utils": "^8.0.0",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"tslib": "^2.3.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"nx": "22.6.0-beta.
|
|
50
|
+
"nx": "22.6.0-beta.11"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-checks.d.ts","sourceRoot":"","sources":["../../../../../packages/eslint-plugin/src/rules/dependency-checks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAmBvD,MAAM,MAAM,OAAO,GAAG;IACpB;QACE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,6BAA6B,CAAC,EAAE,OAAO,CAAC;QACxC,qCAAqC,CAAC,EAAE,OAAO,CAAC;QAChD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,uBAAuB,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;KACrD;CACF,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,0BAA0B,GAC1B,yBAAyB,CAAC;AAE9B,eAAO,MAAM,SAAS,sBAAsB,CAAC;;AAE7C,
|
|
1
|
+
{"version":3,"file":"dependency-checks.d.ts","sourceRoot":"","sources":["../../../../../packages/eslint-plugin/src/rules/dependency-checks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAmBvD,MAAM,MAAM,OAAO,GAAG;IACpB;QACE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,6BAA6B,CAAC,EAAE,OAAO,CAAC;QACxC,qCAAqC,CAAC,EAAE,OAAO,CAAC;QAChD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,uBAAuB,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;KACrD;CACF,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,0BAA0B,GAC1B,yBAAyB,CAAC;AAE9B,eAAO,MAAM,SAAS,sBAAsB,CAAC;;AAE7C,wBAkgBG"}
|
|
@@ -100,6 +100,67 @@ exports.default = utils_1.ESLintUtils.RuleCreator(() => `https://github.com/nrwl
|
|
|
100
100
|
const packageJson = JSON.parse(context.sourceCode.getText());
|
|
101
101
|
const projPackageJsonDeps = (0, package_json_utils_1.getProductionDependencies)(packageJson);
|
|
102
102
|
const rootPackageJsonDeps = (0, package_json_utils_1.getAllDependencies)(rootPackageJson);
|
|
103
|
+
const catalogManager = (0, catalog_1.getCatalogManager)(devkit_1.workspaceRoot);
|
|
104
|
+
const catalogDefs = catalogManager?.getCatalogDefinitions(devkit_1.workspaceRoot);
|
|
105
|
+
function catalogEntryMatchesInstalled(catalogVersionSpec, installedVersion) {
|
|
106
|
+
if (installedVersion === '*') {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
// For non-semver values (file:, link:, etc.), use exact comparison
|
|
110
|
+
if (installedVersion.includes(':') || catalogVersionSpec.includes(':')) {
|
|
111
|
+
return installedVersion === catalogVersionSpec;
|
|
112
|
+
}
|
|
113
|
+
return (0, semver_1.satisfies)(installedVersion, catalogVersionSpec, {
|
|
114
|
+
includePrerelease: true,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function getCatalogVersionForPackage(packageName) {
|
|
118
|
+
if (!catalogDefs) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const matches = [];
|
|
122
|
+
// Check default catalog — `catalog` takes precedence over `catalogs.default`.
|
|
123
|
+
// Both existing simultaneously is a pnpm error caught by validateCatalogReference.
|
|
124
|
+
const defaultEntry = catalogDefs.catalog?.[packageName] ??
|
|
125
|
+
catalogDefs.catalogs?.default?.[packageName];
|
|
126
|
+
if (defaultEntry) {
|
|
127
|
+
matches.push({ catalogRef: 'catalog:', versionSpec: defaultEntry });
|
|
128
|
+
}
|
|
129
|
+
// Check named catalogs (skip "default" — handled above)
|
|
130
|
+
if (catalogDefs.catalogs) {
|
|
131
|
+
for (const [name, entries] of Object.entries(catalogDefs.catalogs)) {
|
|
132
|
+
if (name === 'default' || !entries?.[packageName]) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
matches.push({
|
|
136
|
+
catalogRef: `catalog:${name}`,
|
|
137
|
+
versionSpec: entries[packageName],
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (!matches.length) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
// Filter by installed version compatibility when available
|
|
145
|
+
const installedVersion = npmDependencies[packageName];
|
|
146
|
+
const valid = installedVersion
|
|
147
|
+
? matches.filter((m) => catalogEntryMatchesInstalled(m.versionSpec, installedVersion))
|
|
148
|
+
: matches;
|
|
149
|
+
if (valid.length !== 1) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
return valid[0].catalogRef;
|
|
153
|
+
}
|
|
154
|
+
function getVersionForMissingDependency(packageName) {
|
|
155
|
+
if (rootPackageJsonDeps[packageName]) {
|
|
156
|
+
return rootPackageJsonDeps[packageName];
|
|
157
|
+
}
|
|
158
|
+
const catalogVersion = getCatalogVersionForPackage(packageName);
|
|
159
|
+
if (catalogVersion) {
|
|
160
|
+
return catalogVersion;
|
|
161
|
+
}
|
|
162
|
+
return npmDependencies[packageName];
|
|
163
|
+
}
|
|
103
164
|
function getDependencySection(node) {
|
|
104
165
|
// Check if this node is a dependency section itself
|
|
105
166
|
const directSection = node.key?.value;
|
|
@@ -132,8 +193,7 @@ exports.default = utils_1.ESLintUtils.RuleCreator(() => `https://github.com/nrwl
|
|
|
132
193
|
projPackageJsonDeps[d] = WORKSPACE_VERSION_WILDCARD;
|
|
133
194
|
}
|
|
134
195
|
else {
|
|
135
|
-
projPackageJsonDeps[d] =
|
|
136
|
-
rootPackageJsonDeps[d] || npmDependencies[d];
|
|
196
|
+
projPackageJsonDeps[d] = getVersionForMissingDependency(d);
|
|
137
197
|
}
|
|
138
198
|
});
|
|
139
199
|
const deps = node.value.properties;
|
|
@@ -151,15 +211,14 @@ exports.default = utils_1.ESLintUtils.RuleCreator(() => `https://github.com/nrwl
|
|
|
151
211
|
}
|
|
152
212
|
}
|
|
153
213
|
function validateCatalogReferenceForPackage(node, packageName, packageRange) {
|
|
154
|
-
|
|
155
|
-
if (!manager) {
|
|
214
|
+
if (!catalogManager) {
|
|
156
215
|
return;
|
|
157
216
|
}
|
|
158
|
-
if (!
|
|
217
|
+
if (!catalogManager.isCatalogReference(packageRange)) {
|
|
159
218
|
return;
|
|
160
219
|
}
|
|
161
220
|
try {
|
|
162
|
-
|
|
221
|
+
catalogManager.validateCatalogReference(devkit_1.workspaceRoot, packageName, packageRange);
|
|
163
222
|
}
|
|
164
223
|
catch (error) {
|
|
165
224
|
context.report({
|
|
@@ -189,9 +248,8 @@ exports.default = utils_1.ESLintUtils.RuleCreator(() => `https://github.com/nrwl
|
|
|
189
248
|
}
|
|
190
249
|
// Resolve catalog references before validation
|
|
191
250
|
let resolvedPackageRange = packageRange;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const resolved = manager.resolveCatalogReference(devkit_1.workspaceRoot, packageName, packageRange);
|
|
251
|
+
if (catalogManager?.isCatalogReference(packageRange)) {
|
|
252
|
+
const resolved = catalogManager.resolveCatalogReference(devkit_1.workspaceRoot, packageName, packageRange);
|
|
195
253
|
if (!resolved) {
|
|
196
254
|
// Catalog resolution failed - this shouldn't happen because
|
|
197
255
|
// validateCatalogReferenceForPackage should have caught it earlier
|
|
@@ -274,7 +332,7 @@ exports.default = utils_1.ESLintUtils.RuleCreator(() => `https://github.com/nrwl
|
|
|
274
332
|
},
|
|
275
333
|
fix: (fixer) => {
|
|
276
334
|
expectedDependencyNames.sort().reduce((acc, d) => {
|
|
277
|
-
acc[d] =
|
|
335
|
+
acc[d] = getVersionForMissingDependency(d);
|
|
278
336
|
return acc;
|
|
279
337
|
}, projPackageJsonDeps);
|
|
280
338
|
const dependencies = Object.keys(projPackageJsonDeps)
|