@nx/eslint-plugin 22.0.0-beta.5 → 22.0.0-beta.6
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.0.0-beta.
|
|
3
|
+
"version": "22.0.0-beta.6",
|
|
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.0.0-beta.
|
|
38
|
-
"@nx/js": "22.0.0-beta.
|
|
37
|
+
"@nx/devkit": "22.0.0-beta.6",
|
|
38
|
+
"@nx/js": "22.0.0-beta.6",
|
|
39
39
|
"@phenomnomnominal/tsquery": "~5.0.1",
|
|
40
40
|
"@typescript-eslint/type-utils": "^8.0.0",
|
|
41
41
|
"@typescript-eslint/utils": "^8.0.0",
|
|
@@ -12,7 +12,7 @@ export type Options = [
|
|
|
12
12
|
runtimeHelpers?: string[];
|
|
13
13
|
}
|
|
14
14
|
];
|
|
15
|
-
export type MessageIds = 'missingDependency' | 'obsoleteDependency' | 'versionMismatch' | 'missingDependencySection';
|
|
15
|
+
export type MessageIds = 'missingDependency' | 'obsoleteDependency' | 'versionMismatch' | 'missingDependencySection' | 'invalidCatalogReference';
|
|
16
16
|
export declare const RULE_NAME = "dependency-checks";
|
|
17
17
|
declare const _default: ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener>;
|
|
18
18
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-checks.d.ts","sourceRoot":"","sources":["../../../../../packages/eslint-plugin/src/rules/dependency-checks.ts"],"names":[],"mappings":"
|
|
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;AAiBvD,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;KAC3B;CACF,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,0BAA0B,GAC1B,yBAAyB,CAAC;AAE9B,eAAO,MAAM,SAAS,sBAAsB,CAAC;;AAE7C,wBAgYG"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RULE_NAME = void 0;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const catalog_1 = require("@nx/devkit/src/utils/catalog");
|
|
5
6
|
const find_npm_dependencies_1 = require("@nx/js/src/utils/find-npm-dependencies");
|
|
6
7
|
const utils_1 = require("@typescript-eslint/utils");
|
|
7
8
|
const path_1 = require("path");
|
|
@@ -40,6 +41,7 @@ exports.default = utils_1.ESLintUtils.RuleCreator(() => `https://github.com/nrwl
|
|
|
40
41
|
obsoleteDependency: `The "{{packageName}}" package is not used by "{{projectName}}" project.`,
|
|
41
42
|
versionMismatch: `The version specifier does not contain the installed version of "{{packageName}}" package: {{version}}.`,
|
|
42
43
|
missingDependencySection: `Dependency sections are missing from the "package.json" but following dependencies were detected:{{dependencies}}`,
|
|
44
|
+
invalidCatalogReference: `Invalid catalog reference for "{{packageName}}": {{error}}`,
|
|
43
45
|
},
|
|
44
46
|
},
|
|
45
47
|
defaultOptions: [
|
|
@@ -124,22 +126,51 @@ exports.default = utils_1.ESLintUtils.RuleCreator(() => `https://github.com/nrwl
|
|
|
124
126
|
});
|
|
125
127
|
}
|
|
126
128
|
}
|
|
129
|
+
function validateCatalogReferenceForPackage(node, packageName, packageRange) {
|
|
130
|
+
const manager = (0, catalog_1.getCatalogManager)(devkit_1.workspaceRoot);
|
|
131
|
+
if (!manager) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (!manager.isCatalogReference(packageRange)) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
manager.validateCatalogReference(devkit_1.workspaceRoot, packageName, packageRange);
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
context.report({
|
|
142
|
+
node: node,
|
|
143
|
+
messageId: 'invalidCatalogReference',
|
|
144
|
+
data: {
|
|
145
|
+
packageName: packageName,
|
|
146
|
+
error: error.message,
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
127
151
|
function validateVersionMatchesInstalled(node, packageName, packageRange) {
|
|
128
152
|
if (!checkVersionMismatches) {
|
|
129
153
|
return;
|
|
130
154
|
}
|
|
155
|
+
// Resolve catalog references before validation
|
|
156
|
+
let resolvedPackageRange = packageRange;
|
|
157
|
+
const manager = (0, catalog_1.getCatalogManager)(devkit_1.workspaceRoot);
|
|
158
|
+
if (manager?.isCatalogReference(packageRange)) {
|
|
159
|
+
const resolved = manager.resolveCatalogReference(devkit_1.workspaceRoot, packageName, packageRange);
|
|
160
|
+
if (!resolved) {
|
|
161
|
+
// Catalog resolution failed - this shouldn't happen because
|
|
162
|
+
// validateCatalogReferenceForPackage should have caught it earlier
|
|
163
|
+
// But if it does, skip validation gracefully
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
resolvedPackageRange = resolved;
|
|
167
|
+
}
|
|
131
168
|
if (npmDependencies[packageName].startsWith('file:') ||
|
|
132
|
-
|
|
169
|
+
resolvedPackageRange.startsWith('file:') ||
|
|
133
170
|
npmDependencies[packageName] === '*' ||
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
* Catalogs can be named, or left unnamed
|
|
138
|
-
* So just checking up until the : will catch both cases
|
|
139
|
-
* e.g. catalog:some-catalog or catalog:
|
|
140
|
-
*/
|
|
141
|
-
packageRange.startsWith('catalog:') ||
|
|
142
|
-
(0, semver_1.satisfies)(npmDependencies[packageName], packageRange, {
|
|
171
|
+
resolvedPackageRange === '*' ||
|
|
172
|
+
resolvedPackageRange.startsWith('workspace:') ||
|
|
173
|
+
(0, semver_1.satisfies)(npmDependencies[packageName], resolvedPackageRange, {
|
|
143
174
|
includePrerelease: true,
|
|
144
175
|
})) {
|
|
145
176
|
return;
|
|
@@ -234,6 +265,7 @@ exports.default = utils_1.ESLintUtils.RuleCreator(() => `https://github.com/nrwl
|
|
|
234
265
|
if (ignoredDependencies.includes(packageName)) {
|
|
235
266
|
return;
|
|
236
267
|
}
|
|
268
|
+
validateCatalogReferenceForPackage(node, packageName, packageRange);
|
|
237
269
|
if (expectedDependencyNames.includes(packageName)) {
|
|
238
270
|
validateVersionMatchesInstalled(node, packageName, packageRange);
|
|
239
271
|
}
|