@nx/eslint-plugin 16.5.1 → 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.
|
|
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.
|
|
37
|
-
"@nx/devkit": "16.5.
|
|
38
|
-
"@nx/js": "16.5.
|
|
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": "
|
|
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
|
|
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,16 +75,12 @@ 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
78
|
const rootPackageJson = (0, package_json_utils_1.getPackageJson)((0, path_1.join)(devkit_1.workspaceRoot, 'package.json'));
|
|
81
|
-
//
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const projDependencies = Object.assign(Object.assign({}, npmDeps.dependencies), npmDeps.peerDependencies);
|
|
87
|
-
const expectedDependencyNames = Object.keys(projDependencies);
|
|
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);
|
|
88
84
|
const projPackageJsonPath = (0, path_1.join)(devkit_1.workspaceRoot, sourceProject.data.root, 'package.json');
|
|
89
85
|
(_a = globalThis.projPackageJsonDeps) !== null && _a !== void 0 ? _a : (globalThis.projPackageJsonDeps = (0, package_json_utils_1.getAllDependencies)((0, package_json_utils_1.getPackageJson)(projPackageJsonPath)));
|
|
90
86
|
const projPackageJsonDeps = globalThis.projPackageJsonDeps;
|
|
@@ -106,7 +102,7 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
106
102
|
fix(fixer) {
|
|
107
103
|
missingDeps.forEach((d) => {
|
|
108
104
|
projPackageJsonDeps[d] =
|
|
109
|
-
rootPackageJsonDeps[d] ||
|
|
105
|
+
rootPackageJsonDeps[d] || npmDependencies[d];
|
|
110
106
|
});
|
|
111
107
|
const deps = node.value.properties;
|
|
112
108
|
const mappedDeps = missingDeps
|
|
@@ -126,8 +122,9 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
126
122
|
if (!checkVersionMismatches) {
|
|
127
123
|
return;
|
|
128
124
|
}
|
|
129
|
-
if (
|
|
130
|
-
|
|
125
|
+
if (npmDependencies[packageName] === '*' ||
|
|
126
|
+
packageRange === '*' ||
|
|
127
|
+
(0, semver_1.satisfies)(npmDependencies[packageName], packageRange)) {
|
|
131
128
|
return;
|
|
132
129
|
}
|
|
133
130
|
context.report({
|
|
@@ -135,9 +132,9 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
135
132
|
messageId: 'versionMismatch',
|
|
136
133
|
data: {
|
|
137
134
|
packageName: packageName,
|
|
138
|
-
version:
|
|
135
|
+
version: npmDependencies[packageName],
|
|
139
136
|
},
|
|
140
|
-
fix: (fixer) => fixer.replaceText(node, `"${packageName}": "${rootPackageJsonDeps[packageName] ||
|
|
137
|
+
fix: (fixer) => fixer.replaceText(node, `"${packageName}": "${rootPackageJsonDeps[packageName] || npmDependencies[packageName]}"`),
|
|
141
138
|
});
|
|
142
139
|
}
|
|
143
140
|
function reportObsoleteDependency(node, packageName) {
|
|
@@ -198,13 +195,13 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
198
195
|
.join(),
|
|
199
196
|
},
|
|
200
197
|
fix: (fixer) => {
|
|
201
|
-
expectedDependencyNames.sort().reduce((acc, d) => {
|
|
202
|
-
acc[d] = rootPackageJsonDeps[d] || projDependencies[d];
|
|
203
|
-
return acc;
|
|
204
|
-
}, projPackageJsonDeps);
|
|
205
198
|
const dependencies = Object.keys(projPackageJsonDeps)
|
|
206
199
|
.map((d) => `\n "${d}": "${projPackageJsonDeps[d]}"`)
|
|
207
200
|
.join(',');
|
|
201
|
+
expectedDependencyNames.sort().reduce((acc, d) => {
|
|
202
|
+
acc[d] = rootPackageJsonDeps[d] || dependencies[d];
|
|
203
|
+
return acc;
|
|
204
|
+
}, projPackageJsonDeps);
|
|
208
205
|
if (!node.properties.length) {
|
|
209
206
|
return fixer.replaceText(node, `{\n "dependencies": {${dependencies}\n }\n}`);
|
|
210
207
|
}
|
|
@@ -217,7 +214,7 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
217
214
|
}
|
|
218
215
|
return {
|
|
219
216
|
['JSONExpressionStatement > JSONObjectExpression > JSONProperty[key.value=/^(dev|peer|optional)?dependencies$/i]'](node) {
|
|
220
|
-
|
|
217
|
+
validateMissingDependencies(node);
|
|
221
218
|
},
|
|
222
219
|
['JSONExpressionStatement > JSONObjectExpression > JSONProperty[key.value=/^(dev|peer|optional)?dependencies$/i] > JSONObjectExpression > JSONProperty'](node) {
|
|
223
220
|
const packageName = node.key.value;
|
|
@@ -226,14 +223,14 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
226
223
|
return;
|
|
227
224
|
}
|
|
228
225
|
if (expectedDependencyNames.includes(packageName)) {
|
|
229
|
-
|
|
226
|
+
validateVersionMatchesInstalled(node, packageName, packageRange);
|
|
230
227
|
}
|
|
231
228
|
else {
|
|
232
|
-
|
|
229
|
+
reportObsoleteDependency(node, packageName);
|
|
233
230
|
}
|
|
234
231
|
},
|
|
235
232
|
['JSONExpressionStatement > JSONObjectExpression'](node) {
|
|
236
|
-
|
|
233
|
+
validateDependenciesSectionExistance(node);
|
|
237
234
|
},
|
|
238
235
|
};
|
|
239
236
|
},
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { ProjectFileMap } from '@nx/devkit';
|
|
2
1
|
import { PackageJson } from 'nx/src/utils/package-json';
|
|
3
2
|
export declare function getAllDependencies(packageJson: PackageJson): Record<string, string>;
|
|
4
3
|
export declare function getPackageJson(path: string): PackageJson;
|
|
5
|
-
export declare function removePackageJsonFromFileMap(projectFileMap: ProjectFileMap): ProjectFileMap;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getPackageJson = exports.getAllDependencies = void 0;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const fs_1 = require("fs");
|
|
6
6
|
function getAllDependencies(packageJson) {
|
|
7
|
-
return Object.assign(Object.assign(Object.assign({}, packageJson.dependencies), packageJson.devDependencies), packageJson.peerDependencies);
|
|
7
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({}, packageJson.dependencies), packageJson.devDependencies), packageJson.peerDependencies), packageJson.optionalDependencies);
|
|
8
8
|
}
|
|
9
9
|
exports.getAllDependencies = getAllDependencies;
|
|
10
10
|
function getPackageJson(path) {
|
|
@@ -14,11 +14,3 @@ function getPackageJson(path) {
|
|
|
14
14
|
return {};
|
|
15
15
|
}
|
|
16
16
|
exports.getPackageJson = getPackageJson;
|
|
17
|
-
function removePackageJsonFromFileMap(projectFileMap) {
|
|
18
|
-
const newFileMap = {};
|
|
19
|
-
Object.keys(projectFileMap).forEach((key) => {
|
|
20
|
-
newFileMap[key] = projectFileMap[key].filter((f) => !f.file.endsWith('/package.json'));
|
|
21
|
-
});
|
|
22
|
-
return newFileMap;
|
|
23
|
-
}
|
|
24
|
-
exports.removePackageJsonFromFileMap = removePackageJsonFromFileMap;
|