@nx/eslint-plugin 16.5.0 → 16.5.2

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": "16.5.0",
3
+ "version": "16.5.2",
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": {
@@ -33,9 +33,9 @@
33
33
  }
34
34
  },
35
35
  "dependencies": {
36
- "@nrwl/eslint-plugin-nx": "16.5.0",
37
- "@nx/devkit": "16.5.0",
38
- "@nx/js": "16.5.0",
36
+ "@nrwl/eslint-plugin-nx": "16.5.2",
37
+ "@nx/devkit": "16.5.2",
38
+ "@nx/js": "16.5.2",
39
39
  "@typescript-eslint/type-utils": "^5.60.1",
40
40
  "@typescript-eslint/utils": "^5.60.1",
41
41
  "chalk": "^4.1.0",
@@ -50,5 +50,5 @@
50
50
  "migrations": "./migrations.json"
51
51
  },
52
52
  "types": "./src/index.d.ts",
53
- "gitHead": "eaebcc34f92db2200dab0bde2e2e1dde107a47bf"
53
+ "gitHead": "928273940d11aa7dea87cb625a92f2c3ec62e726"
54
54
  }
@@ -6,6 +6,7 @@ export type Options = [
6
6
  checkVersionMismatches?: boolean;
7
7
  checkMissingPackageJson?: boolean;
8
8
  ignoredDependencies?: string[];
9
+ includeTransitiveDependencies?: boolean;
9
10
  }
10
11
  ];
11
12
  export type MessageIds = 'missingDependency' | 'obsoleteDependency' | 'versionMismatch' | 'missingDependencySection';
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RULE_NAME = void 0;
4
+ const path_1 = require("path");
5
+ const semver_1 = require("semver");
4
6
  const devkit_1 = require("@nx/devkit");
7
+ const find_npm_dependencies_1 = require("@nx/js/src/utils/find-npm-dependencies");
5
8
  const create_eslint_rule_1 = require("../utils/create-eslint-rule");
6
9
  const project_graph_utils_1 = require("../utils/project-graph-utils");
7
10
  const runtime_lint_utils_1 = require("../utils/runtime-lint-utils");
8
- const path_1 = require("path");
9
- const internal_1 = require("@nx/js/src/internal");
10
- const semver_1 = require("semver");
11
- const js_1 = require("@nx/js");
12
11
  const package_json_utils_1 = require("../utils/package-json-utils");
13
12
  exports.RULE_NAME = 'dependency-checks';
14
13
  exports.default = (0, create_eslint_rule_1.createESLintRule)({
@@ -29,6 +28,7 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
29
28
  checkMissingDependencies: { type: 'boolean' },
30
29
  checkObsoleteDependencies: { type: 'boolean' },
31
30
  checkVersionMismatches: { type: 'boolean' },
31
+ includeTransitiveDependencies: { type: 'boolean' },
32
32
  },
33
33
  additionalProperties: false,
34
34
  },
@@ -47,9 +47,10 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
47
47
  checkObsoleteDependencies: true,
48
48
  checkVersionMismatches: true,
49
49
  ignoredDependencies: [],
50
+ includeTransitiveDependencies: false,
50
51
  },
51
52
  ],
52
- create(context, [{ buildTargets, ignoredDependencies, checkMissingDependencies, checkObsoleteDependencies, checkVersionMismatches, },]) {
53
+ create(context, [{ buildTargets, ignoredDependencies, checkMissingDependencies, checkObsoleteDependencies, checkVersionMismatches, includeTransitiveDependencies, },]) {
53
54
  var _a;
54
55
  if (!context.parserServices.isJSON) {
55
56
  return {};
@@ -59,8 +60,7 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
59
60
  if (!fileName.endsWith('/package.json')) {
60
61
  return {};
61
62
  }
62
- const projectPath = (0, devkit_1.normalizePath)(globalThis.projectPath || devkit_1.workspaceRoot);
63
- const sourceFilePath = (0, runtime_lint_utils_1.getSourceFilePath)(fileName, projectPath);
63
+ const sourceFilePath = (0, runtime_lint_utils_1.getSourceFilePath)(fileName, devkit_1.workspaceRoot);
64
64
  const { projectGraph, projectRootMappings, projectFileMap } = (0, project_graph_utils_1.readProjectGraph)(exports.RULE_NAME);
65
65
  if (!projectGraph) {
66
66
  return {};
@@ -75,18 +75,16 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
75
75
  if (!buildTarget) {
76
76
  return {};
77
77
  }
78
- // gather helper dependencies for @nx/js executors
79
- const helperDependencies = (0, js_1.getHelperDependenciesFromProjectGraph)(devkit_1.workspaceRoot, sourceProject.name, projectGraph);
80
- // find all dependencies for the project
81
- const npmDeps = (0, internal_1.findProjectsNpmDependencies)(sourceProject, projectGraph, buildTarget, {
82
- helperDependencies: helperDependencies.map((dep) => dep.target),
83
- }, (0, package_json_utils_1.removePackageJsonFromFileMap)(projectFileMap));
84
- const projDependencies = Object.assign(Object.assign({}, npmDeps.dependencies), npmDeps.peerDependencies);
85
- const expectedDependencyNames = Object.keys(projDependencies);
78
+ const rootPackageJson = (0, package_json_utils_1.getPackageJson)((0, path_1.join)(devkit_1.workspaceRoot, 'package.json'));
79
+ const npmDependencies = (0, find_npm_dependencies_1.findNpmDependencies)(devkit_1.workspaceRoot, sourceProject, projectGraph, projectFileMap, buildTarget, // TODO: What if child library has a build target different from the parent?
80
+ {
81
+ includeTransitiveDependencies,
82
+ });
83
+ const expectedDependencyNames = Object.keys(npmDependencies);
86
84
  const projPackageJsonPath = (0, path_1.join)(devkit_1.workspaceRoot, sourceProject.data.root, 'package.json');
87
- (_a = globalThis.projPackageJsonDeps) !== null && _a !== void 0 ? _a : (globalThis.projPackageJsonDeps = (0, package_json_utils_1.getAllDependencies)(projPackageJsonPath));
85
+ (_a = globalThis.projPackageJsonDeps) !== null && _a !== void 0 ? _a : (globalThis.projPackageJsonDeps = (0, package_json_utils_1.getAllDependencies)((0, package_json_utils_1.getPackageJson)(projPackageJsonPath)));
88
86
  const projPackageJsonDeps = globalThis.projPackageJsonDeps;
89
- const rootPackageJsonDeps = (0, package_json_utils_1.getAllDependencies)((0, path_1.join)(devkit_1.workspaceRoot, 'package.json'));
87
+ const rootPackageJsonDeps = (0, package_json_utils_1.getAllDependencies)(rootPackageJson);
90
88
  function validateMissingDependencies(node) {
91
89
  if (!checkMissingDependencies) {
92
90
  return;
@@ -104,7 +102,7 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
104
102
  fix(fixer) {
105
103
  missingDeps.forEach((d) => {
106
104
  projPackageJsonDeps[d] =
107
- rootPackageJsonDeps[d] || projDependencies[d];
105
+ rootPackageJsonDeps[d] || npmDependencies[d];
108
106
  });
109
107
  const deps = node.value.properties;
110
108
  const mappedDeps = missingDeps
@@ -124,8 +122,9 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
124
122
  if (!checkVersionMismatches) {
125
123
  return;
126
124
  }
127
- if (projDependencies[packageName] === '*' ||
128
- (0, semver_1.satisfies)(projDependencies[packageName], packageRange)) {
125
+ if (npmDependencies[packageName] === '*' ||
126
+ packageRange === '*' ||
127
+ (0, semver_1.satisfies)(npmDependencies[packageName], packageRange)) {
129
128
  return;
130
129
  }
131
130
  context.report({
@@ -133,9 +132,9 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
133
132
  messageId: 'versionMismatch',
134
133
  data: {
135
134
  packageName: packageName,
136
- version: projDependencies[packageName],
135
+ version: npmDependencies[packageName],
137
136
  },
138
- fix: (fixer) => fixer.replaceText(node, `"${packageName}": "${rootPackageJsonDeps[packageName] || projDependencies[packageName]}"`),
137
+ fix: (fixer) => fixer.replaceText(node, `"${packageName}": "${rootPackageJsonDeps[packageName] || npmDependencies[packageName]}"`),
139
138
  });
140
139
  }
141
140
  function reportObsoleteDependency(node, packageName) {
@@ -196,13 +195,13 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
196
195
  .join(),
197
196
  },
198
197
  fix: (fixer) => {
199
- expectedDependencyNames.sort().reduce((acc, d) => {
200
- acc[d] = rootPackageJsonDeps[d] || projDependencies[d];
201
- return acc;
202
- }, projPackageJsonDeps);
203
198
  const dependencies = Object.keys(projPackageJsonDeps)
204
199
  .map((d) => `\n "${d}": "${projPackageJsonDeps[d]}"`)
205
200
  .join(',');
201
+ expectedDependencyNames.sort().reduce((acc, d) => {
202
+ acc[d] = rootPackageJsonDeps[d] || dependencies[d];
203
+ return acc;
204
+ }, projPackageJsonDeps);
206
205
  if (!node.properties.length) {
207
206
  return fixer.replaceText(node, `{\n "dependencies": {${dependencies}\n }\n}`);
208
207
  }
@@ -215,7 +214,7 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
215
214
  }
216
215
  return {
217
216
  ['JSONExpressionStatement > JSONObjectExpression > JSONProperty[key.value=/^(dev|peer|optional)?dependencies$/i]'](node) {
218
- return validateMissingDependencies(node);
217
+ validateMissingDependencies(node);
219
218
  },
220
219
  ['JSONExpressionStatement > JSONObjectExpression > JSONProperty[key.value=/^(dev|peer|optional)?dependencies$/i] > JSONObjectExpression > JSONProperty'](node) {
221
220
  const packageName = node.key.value;
@@ -224,14 +223,14 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
224
223
  return;
225
224
  }
226
225
  if (expectedDependencyNames.includes(packageName)) {
227
- return validateVersionMatchesInstalled(node, packageName, packageRange);
226
+ validateVersionMatchesInstalled(node, packageName, packageRange);
228
227
  }
229
228
  else {
230
- return reportObsoleteDependency(node, packageName);
229
+ reportObsoleteDependency(node, packageName);
231
230
  }
232
231
  },
233
232
  ['JSONExpressionStatement > JSONObjectExpression'](node) {
234
- return validateDependenciesSectionExistance(node);
233
+ validateDependenciesSectionExistance(node);
235
234
  },
236
235
  };
237
236
  },
@@ -1,3 +1,3 @@
1
- import { ProjectFileMap } from '@nx/devkit';
2
- export declare function getAllDependencies(path: string): Record<string, string>;
3
- export declare function removePackageJsonFromFileMap(projectFileMap: ProjectFileMap): ProjectFileMap;
1
+ import { PackageJson } from 'nx/src/utils/package-json';
2
+ export declare function getAllDependencies(packageJson: PackageJson): Record<string, string>;
3
+ export declare function getPackageJson(path: string): PackageJson;
@@ -1,21 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removePackageJsonFromFileMap = exports.getAllDependencies = void 0;
3
+ exports.getPackageJson = exports.getAllDependencies = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const fs_1 = require("fs");
6
- function getAllDependencies(path) {
6
+ function getAllDependencies(packageJson) {
7
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, packageJson.dependencies), packageJson.devDependencies), packageJson.peerDependencies), packageJson.optionalDependencies);
8
+ }
9
+ exports.getAllDependencies = getAllDependencies;
10
+ function getPackageJson(path) {
7
11
  if ((0, fs_1.existsSync)(path)) {
8
- const packageJson = (0, devkit_1.readJsonFile)(path);
9
- return Object.assign(Object.assign(Object.assign({}, packageJson.dependencies), packageJson.devDependencies), packageJson.peerDependencies);
12
+ return (0, devkit_1.readJsonFile)(path);
10
13
  }
11
14
  return {};
12
15
  }
13
- exports.getAllDependencies = getAllDependencies;
14
- function removePackageJsonFromFileMap(projectFileMap) {
15
- const newFileMap = {};
16
- Object.keys(projectFileMap).forEach((key) => {
17
- newFileMap[key] = projectFileMap[key].filter((f) => !f.file.endsWith('/package.json'));
18
- });
19
- return newFileMap;
20
- }
21
- exports.removePackageJsonFromFileMap = removePackageJsonFromFileMap;
16
+ exports.getPackageJson = getPackageJson;