@nrwl/workspace 14.8.3 → 15.0.0-beta.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +1 -1
- package/package.json +30 -30
- package/presets/core.json +4 -9
- package/presets/npm.json +4 -9
- package/src/generators/new/new.d.ts +2 -1
- package/src/generators/new/new.js +0 -61
- package/src/generators/new/new.js.map +1 -1
- package/src/generators/new/schema.json +1 -1
- package/src/generators/preset/schema.json +5 -2
- package/src/utils/lint.d.ts +0 -10
- package/src/utils/lint.js +1 -99
- package/src/utils/lint.js.map +1 -1
- package/src/utils/versions.d.ts +0 -1
- package/src/utils/versions.js +1 -2
- package/src/utils/versions.js.map +1 -1
- package/src/tslint/nxEnforceModuleBoundariesRule.d.ts +0 -14
- package/src/tslint/nxEnforceModuleBoundariesRule.js +0 -177
- package/src/tslint/nxEnforceModuleBoundariesRule.js.map +0 -1
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,6 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
-
|
6
|
+
# [15.0.0-beta.1](https://github.com/nrwl/nx/compare/14.8.0...15.0.0-beta.1) (2022-10-05)
|
7
7
|
|
8
8
|
**Note:** Version bump only for package @nrwl/workspace
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nrwl/workspace",
|
3
|
-
"version": "
|
3
|
+
"version": "15.0.0-beta.1",
|
4
4
|
"private": false,
|
5
5
|
"description": "The Workspace plugin contains executors and generators that are useful for any Nx workspace. It should be present in every Nx workspace and other plugins build on it.",
|
6
6
|
"repository": {
|
@@ -33,31 +33,31 @@
|
|
33
33
|
"requirements": {},
|
34
34
|
"migrations": "./migrations.json",
|
35
35
|
"packageGroup": {
|
36
|
-
"@nrwl/angular": "
|
37
|
-
"@nrwl/cli": "
|
38
|
-
"@nrwl/cypress": "
|
39
|
-
"@nrwl/detox": "
|
40
|
-
"@nrwl/devkit": "
|
41
|
-
"@nrwl/esbuild": "
|
42
|
-
"@nrwl/eslint-plugin-nx": "
|
43
|
-
"@nrwl/expo": "
|
44
|
-
"@nrwl/express": "
|
45
|
-
"@nrwl/jest": "
|
46
|
-
"@nrwl/js": "
|
47
|
-
"@nrwl/linter": "
|
48
|
-
"@nrwl/nest": "
|
49
|
-
"@nrwl/next": "
|
50
|
-
"@nrwl/node": "
|
36
|
+
"@nrwl/angular": "15.0.0-beta.1",
|
37
|
+
"@nrwl/cli": "15.0.0-beta.1",
|
38
|
+
"@nrwl/cypress": "15.0.0-beta.1",
|
39
|
+
"@nrwl/detox": "15.0.0-beta.1",
|
40
|
+
"@nrwl/devkit": "15.0.0-beta.1",
|
41
|
+
"@nrwl/esbuild": "15.0.0-beta.1",
|
42
|
+
"@nrwl/eslint-plugin-nx": "15.0.0-beta.1",
|
43
|
+
"@nrwl/expo": "15.0.0-beta.1",
|
44
|
+
"@nrwl/express": "15.0.0-beta.1",
|
45
|
+
"@nrwl/jest": "15.0.0-beta.1",
|
46
|
+
"@nrwl/js": "15.0.0-beta.1",
|
47
|
+
"@nrwl/linter": "15.0.0-beta.1",
|
48
|
+
"@nrwl/nest": "15.0.0-beta.1",
|
49
|
+
"@nrwl/next": "15.0.0-beta.1",
|
50
|
+
"@nrwl/node": "15.0.0-beta.1",
|
51
51
|
"@nrwl/nx-cloud": "latest",
|
52
|
-
"@nrwl/nx-plugin": "
|
53
|
-
"@nrwl/react": "
|
54
|
-
"@nrwl/react-native": "
|
55
|
-
"@nrwl/rollup": "
|
56
|
-
"@nrwl/storybook": "
|
57
|
-
"@nrwl/tao": "
|
58
|
-
"@nrwl/web": "
|
59
|
-
"@nrwl/webpack": "
|
60
|
-
"nx": "
|
52
|
+
"@nrwl/nx-plugin": "15.0.0-beta.1",
|
53
|
+
"@nrwl/react": "15.0.0-beta.1",
|
54
|
+
"@nrwl/react-native": "15.0.0-beta.1",
|
55
|
+
"@nrwl/rollup": "15.0.0-beta.1",
|
56
|
+
"@nrwl/storybook": "15.0.0-beta.1",
|
57
|
+
"@nrwl/tao": "15.0.0-beta.1",
|
58
|
+
"@nrwl/web": "15.0.0-beta.1",
|
59
|
+
"@nrwl/webpack": "15.0.0-beta.1",
|
60
|
+
"nx": "15.0.0-beta.1"
|
61
61
|
}
|
62
62
|
},
|
63
63
|
"peerDependencies": {
|
@@ -69,9 +69,9 @@
|
|
69
69
|
}
|
70
70
|
},
|
71
71
|
"dependencies": {
|
72
|
-
"@nrwl/devkit": "
|
73
|
-
"@nrwl/jest": "
|
74
|
-
"@nrwl/linter": "
|
72
|
+
"@nrwl/devkit": "15.0.0-beta.1",
|
73
|
+
"@nrwl/jest": "15.0.0-beta.1",
|
74
|
+
"@nrwl/linter": "15.0.0-beta.1",
|
75
75
|
"@parcel/watcher": "2.0.4",
|
76
76
|
"chalk": "4.1.0",
|
77
77
|
"chokidar": "^3.5.1",
|
@@ -86,7 +86,7 @@
|
|
86
86
|
"ignore": "^5.0.4",
|
87
87
|
"minimatch": "3.0.5",
|
88
88
|
"npm-run-path": "^4.0.1",
|
89
|
-
"nx": "
|
89
|
+
"nx": "15.0.0-beta.1",
|
90
90
|
"open": "^8.4.0",
|
91
91
|
"rxjs": "^6.5.4",
|
92
92
|
"semver": "7.3.4",
|
@@ -99,5 +99,5 @@
|
|
99
99
|
"access": "public"
|
100
100
|
},
|
101
101
|
"types": "./index.d.ts",
|
102
|
-
"gitHead": "
|
102
|
+
"gitHead": "49c5e5069b80605943ef3bbe965e291d79354cd5"
|
103
103
|
}
|
package/presets/core.json
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
3
|
-
"
|
4
|
-
"
|
5
|
-
|
6
|
-
},
|
7
|
-
".eslintrc.json": "*"
|
8
|
-
},
|
9
|
-
"targetDependencies": {
|
10
|
-
"build": ["^build"]
|
2
|
+
"targetDefaults": {
|
3
|
+
"build": {
|
4
|
+
"dependsOn": ["^build"]
|
5
|
+
}
|
11
6
|
},
|
12
7
|
"workspaceLayout": {
|
13
8
|
"appsDir": "packages",
|
package/presets/npm.json
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
3
|
-
"
|
4
|
-
"
|
5
|
-
|
6
|
-
},
|
7
|
-
".eslintrc.json": "*"
|
8
|
-
},
|
9
|
-
"targetDependencies": {
|
10
|
-
"build": ["^build"]
|
2
|
+
"targetDefaults": {
|
3
|
+
"build": {
|
4
|
+
"dependsOn": ["^build"]
|
5
|
+
}
|
11
6
|
},
|
12
7
|
"workspaceLayout": {
|
13
8
|
"libsDir": "packages"
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { PackageManager, Tree } from '@nrwl/devkit';
|
2
|
+
import { Linter } from '../../utils/lint';
|
2
3
|
export interface Schema {
|
3
4
|
cli: 'nx' | 'angular';
|
4
5
|
directory: string;
|
@@ -10,7 +11,7 @@ export interface Schema {
|
|
10
11
|
nxCloud?: boolean;
|
11
12
|
preset: string;
|
12
13
|
defaultBase: string;
|
13
|
-
linter:
|
14
|
+
linter: Linter;
|
14
15
|
packageManager?: PackageManager;
|
15
16
|
}
|
16
17
|
export interface NormalizedSchema extends Schema {
|
@@ -97,7 +97,6 @@ function newGenerator(host, options) {
|
|
97
97
|
throw new Error(`${(0, path_1.join)(host.root, options.name)} is not an empty directory.`);
|
98
98
|
}
|
99
99
|
yield (0, workspace_1.workspaceGenerator)(host, Object.assign(Object.assign({}, options), { nxCloud: undefined }));
|
100
|
-
setDefaultLinter(host, options);
|
101
100
|
addPresetDependencies(host, options);
|
102
101
|
addCloudDependencies(host, options);
|
103
102
|
yield (0, devkit_1.formatFiles)(host);
|
@@ -181,64 +180,4 @@ function normalizeOptions(options) {
|
|
181
180
|
}
|
182
181
|
return options;
|
183
182
|
}
|
184
|
-
function setDefaultLinter(host, options) {
|
185
|
-
const { linter, preset } = options;
|
186
|
-
// Don't do anything if someone doesn't pick angular
|
187
|
-
if (preset !== presets_1.Preset.Angular && preset !== presets_1.Preset.AngularWithNest) {
|
188
|
-
return;
|
189
|
-
}
|
190
|
-
switch (linter) {
|
191
|
-
case 'eslint': {
|
192
|
-
setESLintDefault(host, options);
|
193
|
-
break;
|
194
|
-
}
|
195
|
-
case 'tslint': {
|
196
|
-
setTSLintDefault(host, options);
|
197
|
-
break;
|
198
|
-
}
|
199
|
-
}
|
200
|
-
}
|
201
|
-
/**
|
202
|
-
* This sets ESLint as the default for any schematics that default to TSLint
|
203
|
-
*/
|
204
|
-
function setESLintDefault(host, options) {
|
205
|
-
(0, devkit_1.updateJson)(host, (0, path_1.join)(options.directory, 'nx.json'), (json) => {
|
206
|
-
setDefault(json, '@nrwl/angular', 'application', 'linter', 'eslint');
|
207
|
-
setDefault(json, '@nrwl/angular', 'library', 'linter', 'eslint');
|
208
|
-
setDefault(json, '@nrwl/angular', 'storybook-configuration', 'linter', 'eslint');
|
209
|
-
return json;
|
210
|
-
});
|
211
|
-
}
|
212
|
-
/**
|
213
|
-
* This sets TSLint as the default for any schematics that default to ESLint
|
214
|
-
*/
|
215
|
-
function setTSLintDefault(host, options) {
|
216
|
-
(0, devkit_1.updateJson)(host, (0, path_1.join)(options.directory, 'nx.json'), (json) => {
|
217
|
-
setDefault(json, '@nrwl/workspace', 'library', 'linter', 'tslint');
|
218
|
-
setDefault(json, '@nrwl/cypress', 'cypress-project', 'linter', 'tslint');
|
219
|
-
setDefault(json, '@nrwl/cypress', 'cypress-project', 'linter', 'tslint');
|
220
|
-
setDefault(json, '@nrwl/node', 'application', 'linter', 'tslint');
|
221
|
-
setDefault(json, '@nrwl/node', 'library', 'linter', 'tslint');
|
222
|
-
setDefault(json, '@nrwl/nest', 'application', 'linter', 'tslint');
|
223
|
-
setDefault(json, '@nrwl/nest', 'library', 'linter', 'tslint');
|
224
|
-
setDefault(json, '@nrwl/express', 'application', 'linter', 'tslint');
|
225
|
-
setDefault(json, '@nrwl/express', 'library', 'linter', 'tslint');
|
226
|
-
return json;
|
227
|
-
});
|
228
|
-
}
|
229
|
-
function setDefault(json, collectionName, generatorName, key, value) {
|
230
|
-
if (!json.generators)
|
231
|
-
json.generators = {};
|
232
|
-
if (json.generators[collectionName] &&
|
233
|
-
json.generators[collectionName][generatorName]) {
|
234
|
-
json.generators[collectionName][generatorName][key] = value;
|
235
|
-
}
|
236
|
-
else if (json.generators[`${collectionName}:${generatorName}`]) {
|
237
|
-
json.generators[`${collectionName}:${generatorName}`][key] = value;
|
238
|
-
}
|
239
|
-
else {
|
240
|
-
json.generators[collectionName] = json.generators[collectionName] || {};
|
241
|
-
json.generators[collectionName][generatorName] = { [key]: value };
|
242
|
-
}
|
243
|
-
}
|
244
183
|
//# sourceMappingURL=new.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/generators/new/new.ts"],"names":[],"mappings":";;;;AAAA,
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/generators/new/new.ts"],"names":[],"mappings":"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"}
|
@@ -25,7 +25,7 @@
|
|
25
25
|
"linter": {
|
26
26
|
"description": "The tool to use for running lint checks.",
|
27
27
|
"type": "string",
|
28
|
-
"enum": ["
|
28
|
+
"enum": ["eslint"],
|
29
29
|
"default": "eslint"
|
30
30
|
},
|
31
31
|
"style": {
|
@@ -36,7 +36,10 @@
|
|
36
36
|
"message": "Which stylesheet format would you like to use?",
|
37
37
|
"type": "list",
|
38
38
|
"items": [
|
39
|
-
{
|
39
|
+
{
|
40
|
+
"value": "css",
|
41
|
+
"label": "CSS"
|
42
|
+
},
|
40
43
|
{
|
41
44
|
"value": "scss",
|
42
45
|
"label": "SASS(.scss) [ http://sass-lang.com ]"
|
package/src/utils/lint.d.ts
CHANGED
@@ -1,22 +1,12 @@
|
|
1
1
|
import { Rule } from '@angular-devkit/schematics';
|
2
2
|
export declare const enum Linter {
|
3
|
-
TsLint = "tslint",
|
4
3
|
EsLint = "eslint",
|
5
4
|
None = "none"
|
6
5
|
}
|
7
6
|
export declare function generateProjectLint(projectRoot: string, tsConfigPath: string, linter: Linter, eslintFilePatterns: string[]): {
|
8
|
-
builder: string;
|
9
|
-
options: {
|
10
|
-
tsConfig: string[];
|
11
|
-
exclude: string[];
|
12
|
-
lintFilePatterns?: undefined;
|
13
|
-
};
|
14
|
-
} | {
|
15
7
|
builder: string;
|
16
8
|
options: {
|
17
9
|
lintFilePatterns: string[];
|
18
|
-
tsConfig?: undefined;
|
19
|
-
exclude?: undefined;
|
20
10
|
};
|
21
11
|
};
|
22
12
|
interface AddLintFileOptions {
|
package/src/utils/lint.js
CHANGED
@@ -8,16 +8,7 @@ const ast_utils_1 = require("./ast-utils");
|
|
8
8
|
const versions_1 = require("./versions");
|
9
9
|
const devkit_1 = require("@nrwl/devkit");
|
10
10
|
function generateProjectLint(projectRoot, tsConfigPath, linter, eslintFilePatterns) {
|
11
|
-
if (linter === "
|
12
|
-
return {
|
13
|
-
builder: '@angular-devkit/build-angular:tslint',
|
14
|
-
options: {
|
15
|
-
tsConfig: [tsConfigPath],
|
16
|
-
exclude: ['**/node_modules/**', `!${projectRoot}/**/*`],
|
17
|
-
},
|
18
|
-
};
|
19
|
-
}
|
20
|
-
else if (linter === "eslint" /* Linter.EsLint */) {
|
11
|
+
if (linter === "eslint" /* Linter.EsLint */) {
|
21
12
|
return {
|
22
13
|
builder: '@nrwl/linter:eslint',
|
23
14
|
options: {
|
@@ -37,28 +28,6 @@ function addLintFiles(projectRoot, linter, options = {}) {
|
|
37
28
|
throw new Error('onlyGlobal and localConfig cannot be used at the same time');
|
38
29
|
}
|
39
30
|
const chainedCommands = [];
|
40
|
-
if (linter === 'tslint') {
|
41
|
-
chainedCommands.push((host) => {
|
42
|
-
if (!host.exists('/tslint.json')) {
|
43
|
-
host.create('/tslint.json', globalTsLint);
|
44
|
-
}
|
45
|
-
if (!options.onlyGlobal) {
|
46
|
-
host.create((0, core_1.join)(projectRoot, `tslint.json`), JSON.stringify({
|
47
|
-
extends: `${(0, devkit_1.offsetFromRoot)(projectRoot)}tslint.json`,
|
48
|
-
// Include project files to be linted since the global one excludes all files.
|
49
|
-
linterOptions: {
|
50
|
-
exclude: ['!**/*'],
|
51
|
-
},
|
52
|
-
rules: {},
|
53
|
-
}));
|
54
|
-
}
|
55
|
-
});
|
56
|
-
chainedCommands.push((0, ast_utils_1.addDepsToPackageJson)({}, {
|
57
|
-
tslint: versions_1.tslintVersion,
|
58
|
-
'@angular-devkit/build-angular': versions_1.angularCliVersion,
|
59
|
-
}));
|
60
|
-
return (0, schematics_1.chain)(chainedCommands);
|
61
|
-
}
|
62
31
|
if (linter === 'eslint') {
|
63
32
|
if (!host.exists('/.eslintrc.json')) {
|
64
33
|
host.create('/.eslintrc.json', globalESLint);
|
@@ -136,73 +105,6 @@ function addLintFiles(projectRoot, linter, options = {}) {
|
|
136
105
|
};
|
137
106
|
}
|
138
107
|
exports.addLintFiles = addLintFiles;
|
139
|
-
const globalTsLint = `
|
140
|
-
{
|
141
|
-
"rulesDirectory": ["node_modules/@nrwl/workspace/src/tslint"],
|
142
|
-
"linterOptions": {
|
143
|
-
"exclude": ["**/*"]
|
144
|
-
},
|
145
|
-
"rules": {
|
146
|
-
"arrow-return-shorthand": true,
|
147
|
-
"callable-types": true,
|
148
|
-
"class-name": true,
|
149
|
-
"deprecation": {
|
150
|
-
"severity": "warn"
|
151
|
-
},
|
152
|
-
"forin": true,
|
153
|
-
"import-blacklist": [true, "rxjs/Rx"],
|
154
|
-
"interface-over-type-literal": true,
|
155
|
-
"member-access": false,
|
156
|
-
"member-ordering": [
|
157
|
-
true,
|
158
|
-
{
|
159
|
-
"order": [
|
160
|
-
"static-field",
|
161
|
-
"instance-field",
|
162
|
-
"static-method",
|
163
|
-
"instance-method"
|
164
|
-
]
|
165
|
-
}
|
166
|
-
],
|
167
|
-
"no-arg": true,
|
168
|
-
"no-bitwise": true,
|
169
|
-
"no-console": [true, "debug", "info", "time", "timeEnd", "trace"],
|
170
|
-
"no-construct": true,
|
171
|
-
"no-debugger": true,
|
172
|
-
"no-duplicate-super": true,
|
173
|
-
"no-empty": false,
|
174
|
-
"no-empty-interface": true,
|
175
|
-
"no-eval": true,
|
176
|
-
"no-inferrable-types": [true, "ignore-params"],
|
177
|
-
"no-misused-new": true,
|
178
|
-
"no-non-null-assertion": true,
|
179
|
-
"no-shadowed-variable": true,
|
180
|
-
"no-string-literal": false,
|
181
|
-
"no-string-throw": true,
|
182
|
-
"no-switch-case-fall-through": true,
|
183
|
-
"no-unnecessary-initializer": true,
|
184
|
-
"no-unused-expression": true,
|
185
|
-
"no-var-keyword": true,
|
186
|
-
"object-literal-sort-keys": false,
|
187
|
-
"prefer-const": true,
|
188
|
-
"radix": true,
|
189
|
-
"triple-equals": [true, "allow-null-check"],
|
190
|
-
"unified-signatures": true,
|
191
|
-
"variable-name": false,
|
192
|
-
|
193
|
-
"nx-enforce-module-boundaries": [
|
194
|
-
true,
|
195
|
-
{
|
196
|
-
"enforceBuildableLibDependency": true,
|
197
|
-
"allow": [],
|
198
|
-
"depConstraints": [
|
199
|
-
{ "sourceTag": "*", "onlyDependOnLibsWithTags": ["*"] }
|
200
|
-
]
|
201
|
-
}
|
202
|
-
]
|
203
|
-
}
|
204
|
-
}
|
205
|
-
`;
|
206
108
|
const globalESLint = JSON.stringify({
|
207
109
|
root: true,
|
208
110
|
ignorePatterns: ['**/*'],
|
package/src/utils/lint.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../../../packages/workspace/src/utils/lint.ts"],"names":[],"mappings":";;;;AAAA,+CAA4C;AAC5C,2DAKoC;AACpC,2CAAmD;AACnD,
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../../../packages/workspace/src/utils/lint.ts"],"names":[],"mappings":"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"}
|
package/src/utils/versions.d.ts
CHANGED
@@ -2,7 +2,6 @@ export declare const nxVersion: any;
|
|
2
2
|
export declare const angularCliVersion = "~14.2.0";
|
3
3
|
export declare const typescriptVersion = "~4.8.2";
|
4
4
|
export declare const prettierVersion = "^2.6.2";
|
5
|
-
export declare const tslintVersion = "~6.1.0";
|
6
5
|
export declare const typescriptESLintVersion = "^5.36.1";
|
7
6
|
export declare const eslintVersion = "~8.15.0";
|
8
7
|
export declare const eslintConfigPrettierVersion = "8.1.0";
|
package/src/utils/versions.js
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.eslintConfigPrettierVersion = exports.eslintVersion = exports.typescriptESLintVersion = exports.
|
3
|
+
exports.eslintConfigPrettierVersion = exports.eslintVersion = exports.typescriptESLintVersion = exports.prettierVersion = exports.typescriptVersion = exports.angularCliVersion = exports.nxVersion = void 0;
|
4
4
|
exports.nxVersion = require('../../package.json').version;
|
5
5
|
exports.angularCliVersion = '~14.2.0';
|
6
6
|
exports.typescriptVersion = '~4.8.2';
|
7
7
|
exports.prettierVersion = '^2.6.2';
|
8
|
-
exports.tslintVersion = '~6.1.0';
|
9
8
|
exports.typescriptESLintVersion = '^5.36.1';
|
10
9
|
exports.eslintVersion = '~8.15.0';
|
11
10
|
exports.eslintConfigPrettierVersion = '8.1.0';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/workspace/src/utils/versions.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;AAElD,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAC9B,QAAA,iBAAiB,GAAG,QAAQ,CAAC;AAC7B,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/workspace/src/utils/versions.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;AAElD,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAC9B,QAAA,iBAAiB,GAAG,QAAQ,CAAC;AAC7B,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,uBAAuB,GAAG,SAAS,CAAC;AACpC,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,2BAA2B,GAAG,OAAO,CAAC"}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import * as Lint from 'tslint';
|
2
|
-
import { IOptions } from 'tslint';
|
3
|
-
import * as ts from 'typescript';
|
4
|
-
import type { NxJsonConfiguration } from '@nrwl/devkit';
|
5
|
-
import { MappedProjectGraph } from '../utils/runtime-lint-utils';
|
6
|
-
import { TargetProjectLocator } from 'nx/src/utils/target-project-locator';
|
7
|
-
export declare class Rule extends Lint.Rules.AbstractRule {
|
8
|
-
private readonly projectPath?;
|
9
|
-
private readonly projectGraph?;
|
10
|
-
private readonly targetProjectLocator?;
|
11
|
-
private readonly workspaceLayout?;
|
12
|
-
constructor(options: IOptions, projectPath?: string, projectGraph?: MappedProjectGraph, targetProjectLocator?: TargetProjectLocator, workspaceLayout?: NxJsonConfiguration['workspaceLayout']);
|
13
|
-
apply(sourceFile: ts.SourceFile): Lint.RuleFailure[];
|
14
|
-
}
|
@@ -1,177 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.Rule = void 0;
|
4
|
-
const Lint = require("tslint");
|
5
|
-
const devkit_1 = require("@nrwl/devkit");
|
6
|
-
const runtime_lint_utils_1 = require("../utils/runtime-lint-utils");
|
7
|
-
const path_1 = require("path");
|
8
|
-
const target_project_locator_1 = require("nx/src/utils/target-project-locator");
|
9
|
-
const graph_utils_1 = require("../utils/graph-utils");
|
10
|
-
const fileutils_1 = require("../utilities/fileutils");
|
11
|
-
class Rule extends Lint.Rules.AbstractRule {
|
12
|
-
constructor(options, projectPath, projectGraph, targetProjectLocator, workspaceLayout) {
|
13
|
-
super(options);
|
14
|
-
this.projectPath = projectPath;
|
15
|
-
this.projectGraph = projectGraph;
|
16
|
-
this.targetProjectLocator = targetProjectLocator;
|
17
|
-
this.workspaceLayout = workspaceLayout;
|
18
|
-
if (!projectPath) {
|
19
|
-
this.projectPath = (0, path_1.normalize)(devkit_1.workspaceRoot);
|
20
|
-
if (!global.projectGraph) {
|
21
|
-
const nxJson = (0, devkit_1.readNxJson)();
|
22
|
-
global.workspaceLayout = nxJson.workspaceLayout;
|
23
|
-
/**
|
24
|
-
* Because there are a number of ways in which the rule can be invoked (executor vs TSLint CLI vs IDE Plugin),
|
25
|
-
* the ProjectGraph may or may not exist by the time the lint rule is invoked for the first time.
|
26
|
-
*/
|
27
|
-
try {
|
28
|
-
global.projectGraph = (0, runtime_lint_utils_1.mapProjectGraphFiles)((0, devkit_1.readCachedProjectGraph)());
|
29
|
-
}
|
30
|
-
catch (_a) { }
|
31
|
-
}
|
32
|
-
this.workspaceLayout = global.workspaceLayout;
|
33
|
-
this.projectGraph = global.projectGraph;
|
34
|
-
if (!global.targetProjectLocator && this.projectGraph) {
|
35
|
-
global.targetProjectLocator = new target_project_locator_1.TargetProjectLocator(this.projectGraph.nodes, this.projectGraph.externalNodes);
|
36
|
-
}
|
37
|
-
this.targetProjectLocator = global.targetProjectLocator;
|
38
|
-
}
|
39
|
-
}
|
40
|
-
apply(sourceFile) {
|
41
|
-
if (!this.projectGraph)
|
42
|
-
return [];
|
43
|
-
return this.applyWithWalker(new EnforceModuleBoundariesWalker(sourceFile, this.getOptions(), this.projectPath, this.projectGraph, this.targetProjectLocator, this.workspaceLayout));
|
44
|
-
}
|
45
|
-
}
|
46
|
-
exports.Rule = Rule;
|
47
|
-
class EnforceModuleBoundariesWalker extends Lint.RuleWalker {
|
48
|
-
constructor(sourceFile, options, projectPath, projectGraph, targetProjectLocator, workspaceLayout) {
|
49
|
-
super(sourceFile, options);
|
50
|
-
this.projectPath = projectPath;
|
51
|
-
this.projectGraph = projectGraph;
|
52
|
-
this.targetProjectLocator = targetProjectLocator;
|
53
|
-
this.workspaceLayout = workspaceLayout;
|
54
|
-
this.enforceBuildableLibDependency = false; // for backwards compat
|
55
|
-
this.allowCircularSelfDependency = false;
|
56
|
-
this.allow = Array.isArray(this.getOptions()[0].allow)
|
57
|
-
? this.getOptions()[0].allow.map((a) => `${a}`)
|
58
|
-
: [];
|
59
|
-
this.depConstraints = Array.isArray(this.getOptions()[0].depConstraints)
|
60
|
-
? this.getOptions()[0].depConstraints
|
61
|
-
: [];
|
62
|
-
this.enforceBuildableLibDependency =
|
63
|
-
this.getOptions()[0].enforceBuildableLibDependency === true;
|
64
|
-
this.allowCircularSelfDependency =
|
65
|
-
this.getOptions()[0].allowCircularSelfDependency === true;
|
66
|
-
}
|
67
|
-
visitImportDeclaration(node) {
|
68
|
-
const imp = node.moduleSpecifier
|
69
|
-
.getText()
|
70
|
-
.substring(1, node.moduleSpecifier.getText().length - 1);
|
71
|
-
// whitelisted import
|
72
|
-
if (this.allow.some((a) => (0, runtime_lint_utils_1.matchImportWithWildcard)(a, imp))) {
|
73
|
-
super.visitImportDeclaration(node);
|
74
|
-
return;
|
75
|
-
}
|
76
|
-
const filePath = (0, runtime_lint_utils_1.getSourceFilePath)(this.getSourceFile().fileName, this.projectPath);
|
77
|
-
const sourceProject = (0, runtime_lint_utils_1.findSourceProject)(this.projectGraph, filePath);
|
78
|
-
if (!sourceProject) {
|
79
|
-
super.visitImportDeclaration(node);
|
80
|
-
return;
|
81
|
-
}
|
82
|
-
let targetProject = (0, runtime_lint_utils_1.getTargetProjectBasedOnRelativeImport)(imp, this.projectPath, this.projectGraph, filePath);
|
83
|
-
// check for relative and absolute imports
|
84
|
-
if ((targetProject && sourceProject !== targetProject) ||
|
85
|
-
(0, runtime_lint_utils_1.isAbsoluteImportIntoAnotherProject)(imp, this.workspaceLayout)) {
|
86
|
-
this.addFailureAt(node.getStart(), node.getWidth(), `libraries cannot be imported by a relative or absolute path, and must begin with a npm scope`);
|
87
|
-
return;
|
88
|
-
}
|
89
|
-
targetProject =
|
90
|
-
targetProject ||
|
91
|
-
(0, runtime_lint_utils_1.findProjectUsingImport)(this.projectGraph, this.targetProjectLocator, filePath, imp);
|
92
|
-
// If source or target are not part of an nx workspace, return.
|
93
|
-
if (!targetProject || targetProject.type === 'npm') {
|
94
|
-
super.visitImportDeclaration(node);
|
95
|
-
return;
|
96
|
-
}
|
97
|
-
// same project => allow
|
98
|
-
if (sourceProject === targetProject) {
|
99
|
-
if (!this.allowCircularSelfDependency &&
|
100
|
-
!(0, fileutils_1.isRelativePath)(imp) &&
|
101
|
-
!(0, runtime_lint_utils_1.isAngularSecondaryEntrypoint)(this.targetProjectLocator, imp)) {
|
102
|
-
const error = `Projects should use relative imports to import from other files within the same project. Use "./path/to/file" instead of import from "${imp}"`;
|
103
|
-
this.addFailureAt(node.getStart(), node.getWidth(), error);
|
104
|
-
}
|
105
|
-
else {
|
106
|
-
super.visitImportDeclaration(node);
|
107
|
-
}
|
108
|
-
return;
|
109
|
-
}
|
110
|
-
// check for circular dependency
|
111
|
-
const circularPath = (0, graph_utils_1.checkCircularPath)(this.projectGraph, sourceProject, targetProject);
|
112
|
-
if (circularPath.length !== 0) {
|
113
|
-
const path = circularPath.reduce((acc, v) => `${acc} -> ${v.name}`, sourceProject.name);
|
114
|
-
const circularFilePath = (0, graph_utils_1.findFilesInCircularPath)(circularPath);
|
115
|
-
const filePaths = circularFilePath
|
116
|
-
.map((files) => (files.length > 1 ? `[${files.join(',')}]` : files[0]))
|
117
|
-
.reduce((acc, files) => `${acc}\n- ${files}`, `- ${filePath}`);
|
118
|
-
const error = `Circular dependency between "${sourceProject.name}" and "${targetProject.name}" detected: ${path}\n\nCircular file chain:\n${filePaths}`;
|
119
|
-
this.addFailureAt(node.getStart(), node.getWidth(), error);
|
120
|
-
return;
|
121
|
-
}
|
122
|
-
// cannot import apps
|
123
|
-
if (targetProject.type === 'app') {
|
124
|
-
this.addFailureAt(node.getStart(), node.getWidth(), 'imports of apps are forbidden');
|
125
|
-
return;
|
126
|
-
}
|
127
|
-
// cannot import e2e projects
|
128
|
-
if (targetProject.type === 'e2e') {
|
129
|
-
this.addFailureAt(node.getStart(), node.getWidth(), 'imports of e2e projects are forbidden');
|
130
|
-
return;
|
131
|
-
}
|
132
|
-
// buildable-lib is not allowed to import non-buildable-lib
|
133
|
-
if (this.enforceBuildableLibDependency === true &&
|
134
|
-
sourceProject.type === 'lib' &&
|
135
|
-
targetProject.type === 'lib') {
|
136
|
-
if ((0, runtime_lint_utils_1.hasBuildExecutor)(sourceProject) && !(0, runtime_lint_utils_1.hasBuildExecutor)(targetProject)) {
|
137
|
-
this.addFailureAt(node.getStart(), node.getWidth(), 'buildable libraries cannot import non-buildable libraries');
|
138
|
-
return;
|
139
|
-
}
|
140
|
-
}
|
141
|
-
// if we import a library using loadChildren, we should not import it using es6imports
|
142
|
-
if ((0, runtime_lint_utils_1.onlyLoadChildren)(this.projectGraph, sourceProject.name, targetProject.name, [])) {
|
143
|
-
this.addFailureAt(node.getStart(), node.getWidth(), 'imports of lazy-loaded libraries are forbidden');
|
144
|
-
return;
|
145
|
-
}
|
146
|
-
// check that dependency constraints are satisfied
|
147
|
-
if (this.depConstraints.length > 0) {
|
148
|
-
const constraints = (0, runtime_lint_utils_1.findConstraintsFor)(this.depConstraints, sourceProject);
|
149
|
-
// when no constrains found => error. Force the user to provision them.
|
150
|
-
if (constraints.length === 0) {
|
151
|
-
this.addFailureAt(node.getStart(), node.getWidth(), `A project without tags matching at least one constraint cannot depend on any libraries`);
|
152
|
-
return;
|
153
|
-
}
|
154
|
-
for (let constraint of constraints) {
|
155
|
-
if (constraint.onlyDependOnLibsWithTags &&
|
156
|
-
(0, runtime_lint_utils_1.hasNoneOfTheseTags)(targetProject, constraint.onlyDependOnLibsWithTags)) {
|
157
|
-
const error = `A project tagged with "${constraint.sourceTag}" can only depend on libs tagged with ${(0, runtime_lint_utils_1.stringifyTags)(constraint.onlyDependOnLibsWithTags)}`;
|
158
|
-
this.addFailureAt(node.getStart(), node.getWidth(), error);
|
159
|
-
return;
|
160
|
-
}
|
161
|
-
if (constraint.notDependOnLibsWithTags &&
|
162
|
-
constraint.notDependOnLibsWithTags.length) {
|
163
|
-
const projectPaths = (0, runtime_lint_utils_1.findDependenciesWithTags)(targetProject, constraint.notDependOnLibsWithTags, this.projectGraph);
|
164
|
-
if (projectPaths.length > 0) {
|
165
|
-
const error = `A project tagged with "${constraint.sourceTag}" can not depend on libs tagged with ${(0, runtime_lint_utils_1.stringifyTags)(constraint.notDependOnLibsWithTags)}\n\nViolation detected in:\n${projectPaths
|
166
|
-
.map((projectPath) => `- ${projectPath.map((p) => p.name).join(' -> ')}`)
|
167
|
-
.join('\n')}`;
|
168
|
-
this.addFailureAt(node.getStart(), node.getWidth(), error);
|
169
|
-
return;
|
170
|
-
}
|
171
|
-
}
|
172
|
-
}
|
173
|
-
}
|
174
|
-
super.visitImportDeclaration(node);
|
175
|
-
}
|
176
|
-
}
|
177
|
-
//# sourceMappingURL=nxEnforceModuleBoundariesRule.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"nxEnforceModuleBoundariesRule.js","sourceRoot":"","sources":["../../../../../packages/workspace/src/tslint/nxEnforceModuleBoundariesRule.ts"],"names":[],"mappings":"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"}
|