@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.10",
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.10",
38
- "@nx/js": "22.6.0-beta.10",
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.10"
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,wBAqbG"}
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
- const manager = (0, catalog_1.getCatalogManager)(devkit_1.workspaceRoot);
155
- if (!manager) {
214
+ if (!catalogManager) {
156
215
  return;
157
216
  }
158
- if (!manager.isCatalogReference(packageRange)) {
217
+ if (!catalogManager.isCatalogReference(packageRange)) {
159
218
  return;
160
219
  }
161
220
  try {
162
- manager.validateCatalogReference(devkit_1.workspaceRoot, packageName, packageRange);
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
- const manager = (0, catalog_1.getCatalogManager)(devkit_1.workspaceRoot);
193
- if (manager?.isCatalogReference(packageRange)) {
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] = rootPackageJsonDeps[d] || npmDependencies[d];
335
+ acc[d] = getVersionForMissingDependency(d);
278
336
  return acc;
279
337
  }, projPackageJsonDeps);
280
338
  const dependencies = Object.keys(projPackageJsonDeps)