@nrwl/eslint-plugin-nx 13.8.5 → 13.8.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 +3 -3
- package/src/rules/enforce-module-boundaries.d.ts +1 -1
- package/src/rules/enforce-module-boundaries.js +106 -16
- package/src/rules/enforce-module-boundaries.js.map +1 -1
- package/src/utils/ast-utils.d.ts +12 -0
- package/src/utils/ast-utils.js +164 -0
- package/src/utils/ast-utils.js.map +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nrwl/eslint-plugin-nx",
|
|
3
|
-
"version": "13.8.
|
|
3
|
+
"version": "13.8.6",
|
|
4
4
|
"description": "ESLint Plugin for Nx",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@nrwl/devkit": "13.8.
|
|
36
|
-
"@nrwl/workspace": "13.8.
|
|
35
|
+
"@nrwl/devkit": "13.8.6",
|
|
36
|
+
"@nrwl/workspace": "13.8.6",
|
|
37
37
|
"@typescript-eslint/experimental-utils": "~5.10.0",
|
|
38
38
|
"chalk": "4.1.0",
|
|
39
39
|
"confusing-browser-globals": "^1.0.9"
|
|
@@ -8,7 +8,7 @@ declare type Options = [
|
|
|
8
8
|
banTransitiveDependencies: boolean;
|
|
9
9
|
}
|
|
10
10
|
];
|
|
11
|
-
export declare type MessageIds = 'noRelativeOrAbsoluteImportsAcrossLibraries' | 'noSelfCircularDependencies' | 'noCircularDependencies' | 'noImportsOfApps' | 'noImportsOfE2e' | 'noImportOfNonBuildableLibraries' | 'noImportsOfLazyLoadedLibraries' | 'projectWithoutTagsCannotHaveDependencies' | '
|
|
11
|
+
export declare type MessageIds = 'noRelativeOrAbsoluteImportsAcrossLibraries' | 'noSelfCircularDependencies' | 'noCircularDependencies' | 'noImportsOfApps' | 'noImportsOfE2e' | 'noImportOfNonBuildableLibraries' | 'noImportsOfLazyLoadedLibraries' | 'projectWithoutTagsCannotHaveDependencies' | 'bannedExternalImportsViolation' | 'noTransitiveDependencies' | 'onlyTagsConstraintViolation' | 'notTagsConstraintViolation';
|
|
12
12
|
export declare const RULE_NAME = "enforce-module-boundaries";
|
|
13
13
|
declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<MessageIds, Options, import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
|
|
14
14
|
export default _default;
|
|
@@ -13,6 +13,8 @@ const graph_utils_1 = require("@nrwl/workspace/src/utils/graph-utils");
|
|
|
13
13
|
const fileutils_1 = require("@nrwl/workspace/src/utilities/fileutils");
|
|
14
14
|
const angular_1 = require("../utils/angular");
|
|
15
15
|
const chalk = require("chalk");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
const ast_utils_1 = require("../utils/ast-utils");
|
|
16
18
|
exports.RULE_NAME = 'enforce-module-boundaries';
|
|
17
19
|
exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
18
20
|
name: exports.RULE_NAME,
|
|
@@ -38,6 +40,7 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
38
40
|
sourceTag: { type: 'string' },
|
|
39
41
|
onlyDependOnLibsWithTags: [{ type: 'string' }],
|
|
40
42
|
bannedExternalImports: [{ type: 'string' }],
|
|
43
|
+
notDependOnLibsWithTags: [{ type: 'string' }],
|
|
41
44
|
},
|
|
42
45
|
additionalProperties: false,
|
|
43
46
|
},
|
|
@@ -55,9 +58,10 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
55
58
|
noImportOfNonBuildableLibraries: 'Buildable libraries cannot import or export from non-buildable libraries',
|
|
56
59
|
noImportsOfLazyLoadedLibraries: `Imports of lazy-loaded libraries are forbidden`,
|
|
57
60
|
projectWithoutTagsCannotHaveDependencies: `A project without tags matching at least one constraint cannot depend on any libraries`,
|
|
58
|
-
tagConstraintViolation: `A project tagged with "{{sourceTag}}" can only depend on libs tagged with {{allowedTags}}`,
|
|
59
61
|
bannedExternalImportsViolation: `A project tagged with "{{sourceTag}}" is not allowed to import the "{{package}}" package`,
|
|
60
62
|
noTransitiveDependencies: `Transitive dependencies are not allowed. Only packages defined in the "package.json" can be imported`,
|
|
63
|
+
onlyTagsConstraintViolation: `A project tagged with "{{sourceTag}}" can only depend on libs tagged with {{tags}}`,
|
|
64
|
+
notTagsConstraintViolation: `A project tagged with "{{sourceTag}}" can not depend on libs tagged with {{tags}}\n\nViolation detected in:\n{{projects}}`,
|
|
61
65
|
},
|
|
62
66
|
},
|
|
63
67
|
defaultOptions: [
|
|
@@ -125,9 +129,14 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
125
129
|
return;
|
|
126
130
|
}
|
|
127
131
|
const sourceFilePath = (0, runtime_lint_utils_1.getSourceFilePath)(context.getFilename(), projectPath);
|
|
128
|
-
// check for relative and absolute imports
|
|
129
132
|
const sourceProject = (0, runtime_lint_utils_1.findSourceProject)(projectGraph, sourceFilePath);
|
|
130
|
-
|
|
133
|
+
// If source is not part of an nx workspace, return.
|
|
134
|
+
if (!sourceProject) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// check for relative and absolute imports
|
|
138
|
+
let targetProject = (0, runtime_lint_utils_1.getTargetProjectBasedOnRelativeImport)(imp, projectPath, projectGraph, sourceFilePath);
|
|
139
|
+
if ((targetProject && sourceProject !== targetProject) ||
|
|
131
140
|
(0, runtime_lint_utils_1.isAbsoluteImportIntoAnotherProject)(imp, workspaceLayout)) {
|
|
132
141
|
context.report({
|
|
133
142
|
node,
|
|
@@ -135,18 +144,46 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
135
144
|
data: {
|
|
136
145
|
npmScope,
|
|
137
146
|
},
|
|
147
|
+
fix(fixer) {
|
|
148
|
+
if (targetProject) {
|
|
149
|
+
const indexTsPaths = (0, ast_utils_1.getBarrelEntryPointProjectNode)(targetProject);
|
|
150
|
+
if (indexTsPaths && indexTsPaths.length > 0) {
|
|
151
|
+
const specifiers = node.specifiers;
|
|
152
|
+
if (!specifiers || specifiers.length === 0) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const imports = specifiers.map((s) => s.imported.name);
|
|
156
|
+
// process each potential entry point and try to find the imports
|
|
157
|
+
const importsToRemap = [];
|
|
158
|
+
for (const entryPointPath of indexTsPaths) {
|
|
159
|
+
for (const importMember of imports) {
|
|
160
|
+
const importPath = (0, ast_utils_1.getRelativeImportPath)(importMember, entryPointPath.path, sourceProject.data.sourceRoot);
|
|
161
|
+
importsToRemap.push({
|
|
162
|
+
member: importMember,
|
|
163
|
+
importPath: importPath ? entryPointPath.importScope : imp, // we cannot remap, so leave it as is
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const adjustedRelativeImports = (0, runtime_lint_utils_1.groupImports)(importsToRemap);
|
|
168
|
+
if (adjustedRelativeImports !== '') {
|
|
169
|
+
return fixer.replaceTextRange(node.range, adjustedRelativeImports);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
},
|
|
138
174
|
});
|
|
139
175
|
return;
|
|
140
176
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
177
|
+
targetProject =
|
|
178
|
+
targetProject ||
|
|
179
|
+
(0, runtime_lint_utils_1.findProjectUsingImport)(projectGraph, targetProjectLocator, sourceFilePath, imp, npmScope);
|
|
180
|
+
// If target is not part of an nx workspace, return.
|
|
181
|
+
if (!targetProject) {
|
|
144
182
|
return;
|
|
145
183
|
}
|
|
146
|
-
// same project
|
|
184
|
+
// we only allow relative paths within the same project
|
|
185
|
+
// and if it's not a secondary entrypoint in an angular lib
|
|
147
186
|
if (sourceProject === targetProject) {
|
|
148
|
-
// we only allow relative paths within the same project
|
|
149
|
-
// and if it's not a secondary entrypoint in an angular lib
|
|
150
187
|
if (!allowCircularSelfDependency &&
|
|
151
188
|
!(0, fileutils_1.isRelativePath)(imp) &&
|
|
152
189
|
!(0, angular_1.isSecondaryEntrypoint)(sourceFilePath)) {
|
|
@@ -156,6 +193,41 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
156
193
|
data: {
|
|
157
194
|
imp,
|
|
158
195
|
},
|
|
196
|
+
fix(fixer) {
|
|
197
|
+
// imp has form of @myorg/someproject/some/path
|
|
198
|
+
const indexTsPaths = (0, ast_utils_1.getBarrelEntryPointByImportScope)(imp);
|
|
199
|
+
if (indexTsPaths && indexTsPaths.length > 0) {
|
|
200
|
+
const specifiers = node.specifiers;
|
|
201
|
+
if (!specifiers || specifiers.length === 0) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
// imported JS functions to remap
|
|
205
|
+
const imports = specifiers.map((s) => s.imported.name);
|
|
206
|
+
// process each potential entry point and try to find the imports
|
|
207
|
+
const importsToRemap = [];
|
|
208
|
+
for (const entryPointPath of indexTsPaths) {
|
|
209
|
+
for (const importMember of imports) {
|
|
210
|
+
const importPath = (0, ast_utils_1.getRelativeImportPath)(importMember, entryPointPath, sourceProject.data.sourceRoot);
|
|
211
|
+
if (importPath) {
|
|
212
|
+
// resolve the import path
|
|
213
|
+
const relativePath = (0, path_1.relative)((0, path_1.dirname)(context.getFilename()), (0, path_1.dirname)(importPath));
|
|
214
|
+
// if the string is empty, it's the current file
|
|
215
|
+
const importPathResolved = relativePath === ''
|
|
216
|
+
? `./${(0, path_1.basename)(importPath)}`
|
|
217
|
+
: (0, devkit_1.joinPathFragments)(relativePath, (0, path_1.basename)(importPath));
|
|
218
|
+
importsToRemap.push({
|
|
219
|
+
member: importMember,
|
|
220
|
+
importPath: importPathResolved.replace('.ts', ''),
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const adjustedRelativeImports = (0, runtime_lint_utils_1.groupImports)(importsToRemap);
|
|
226
|
+
if (adjustedRelativeImports !== '') {
|
|
227
|
+
return fixer.replaceTextRange(node.range, adjustedRelativeImports);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
},
|
|
159
231
|
});
|
|
160
232
|
}
|
|
161
233
|
return;
|
|
@@ -188,7 +260,7 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
188
260
|
const circularFilePath = (0, graph_utils_1.findFilesInCircularPath)(circularPath);
|
|
189
261
|
// spacer text used for indirect dependencies when printing one line per file.
|
|
190
262
|
// without this, we can end up with a very long line that does not display well in the terminal.
|
|
191
|
-
const spacer = '
|
|
263
|
+
const spacer = ' ';
|
|
192
264
|
context.report({
|
|
193
265
|
node,
|
|
194
266
|
messageId: 'noCircularDependencies',
|
|
@@ -198,7 +270,9 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
198
270
|
path: circularPath.reduce((acc, v) => `${acc} -> ${v.name}`, sourceProject.name),
|
|
199
271
|
filePaths: circularFilePath
|
|
200
272
|
.map((files) => files.length > 1
|
|
201
|
-
? `[${
|
|
273
|
+
? `[${files
|
|
274
|
+
.map((f) => `\n${spacer}${spacer}${f}`)
|
|
275
|
+
.join(',')}\n${spacer}]`
|
|
202
276
|
: files[0])
|
|
203
277
|
.reduce((acc, files) => `${acc}\n- ${files}`, `- ${sourceFilePath}`),
|
|
204
278
|
},
|
|
@@ -257,20 +331,36 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
|
|
|
257
331
|
}
|
|
258
332
|
for (let constraint of constraints) {
|
|
259
333
|
if (constraint.onlyDependOnLibsWithTags &&
|
|
334
|
+
constraint.onlyDependOnLibsWithTags.length &&
|
|
260
335
|
(0, runtime_lint_utils_1.hasNoneOfTheseTags)(targetProject, constraint.onlyDependOnLibsWithTags)) {
|
|
261
|
-
const allowedTags = constraint.onlyDependOnLibsWithTags
|
|
262
|
-
.map((s) => `"${s}"`)
|
|
263
|
-
.join(', ');
|
|
264
336
|
context.report({
|
|
265
337
|
node,
|
|
266
|
-
messageId: '
|
|
338
|
+
messageId: 'onlyTagsConstraintViolation',
|
|
267
339
|
data: {
|
|
268
340
|
sourceTag: constraint.sourceTag,
|
|
269
|
-
|
|
341
|
+
tags: (0, runtime_lint_utils_1.stringifyTags)(constraint.onlyDependOnLibsWithTags),
|
|
270
342
|
},
|
|
271
343
|
});
|
|
272
344
|
return;
|
|
273
345
|
}
|
|
346
|
+
if (constraint.notDependOnLibsWithTags &&
|
|
347
|
+
constraint.notDependOnLibsWithTags.length) {
|
|
348
|
+
const projectPaths = (0, runtime_lint_utils_1.findDependenciesWithTags)(targetProject, constraint.notDependOnLibsWithTags, projectGraph);
|
|
349
|
+
if (projectPaths.length > 0) {
|
|
350
|
+
context.report({
|
|
351
|
+
node,
|
|
352
|
+
messageId: 'notTagsConstraintViolation',
|
|
353
|
+
data: {
|
|
354
|
+
sourceTag: constraint.sourceTag,
|
|
355
|
+
tags: (0, runtime_lint_utils_1.stringifyTags)(constraint.notDependOnLibsWithTags),
|
|
356
|
+
projects: projectPaths
|
|
357
|
+
.map((projectPath) => `- ${projectPath.map((p) => p.name).join(' -> ')}`)
|
|
358
|
+
.join('\n'),
|
|
359
|
+
},
|
|
360
|
+
});
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
274
364
|
}
|
|
275
365
|
}
|
|
276
366
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enforce-module-boundaries.js","sourceRoot":"","sources":["../../../../../packages/eslint-plugin-nx/src/rules/enforce-module-boundaries.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enforce-module-boundaries.js","sourceRoot":"","sources":["../../../../../packages/eslint-plugin-nx/src/rules/enforce-module-boundaries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MappedProjectGraphNode } from '@nrwl/workspace/src/utils/runtime-lint-utils';
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param importScope like `@myorg/somelib`
|
|
5
|
+
* @returns
|
|
6
|
+
*/
|
|
7
|
+
export declare function getBarrelEntryPointByImportScope(importScope: string): string[] | null;
|
|
8
|
+
export declare function getBarrelEntryPointProjectNode(importScope: MappedProjectGraphNode<any>): {
|
|
9
|
+
path: string;
|
|
10
|
+
importScope: string;
|
|
11
|
+
}[] | null;
|
|
12
|
+
export declare function getRelativeImportPath(exportedMember: any, filePath: any, basePath: any): any;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRelativeImportPath = exports.getBarrelEntryPointProjectNode = exports.getBarrelEntryPointByImportScope = void 0;
|
|
4
|
+
const devkit_1 = require("@nrwl/devkit");
|
|
5
|
+
const typescript_1 = require("@nrwl/workspace/src/utilities/typescript");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const ts = require("typescript");
|
|
9
|
+
const devkit_2 = require("@nrwl/devkit");
|
|
10
|
+
const app_root_1 = require("@nrwl/tao/src/utils/app-root");
|
|
11
|
+
function tryReadBaseJson() {
|
|
12
|
+
try {
|
|
13
|
+
return (0, devkit_1.readJsonFile)((0, devkit_1.joinPathFragments)(app_root_1.appRootPath, 'tsconfig.base.json'));
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
devkit_2.logger.warn(`Error reading "tsconfig.base.json": \n${JSON.stringify(e)}`);
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @param importScope like `@myorg/somelib`
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
function getBarrelEntryPointByImportScope(importScope) {
|
|
26
|
+
var _a;
|
|
27
|
+
const tsConfigBase = tryReadBaseJson();
|
|
28
|
+
return ((_a = tsConfigBase === null || tsConfigBase === void 0 ? void 0 : tsConfigBase.compilerOptions) === null || _a === void 0 ? void 0 : _a.paths[importScope]) || null;
|
|
29
|
+
}
|
|
30
|
+
exports.getBarrelEntryPointByImportScope = getBarrelEntryPointByImportScope;
|
|
31
|
+
function getBarrelEntryPointProjectNode(importScope) {
|
|
32
|
+
var _a;
|
|
33
|
+
const tsConfigBase = tryReadBaseJson();
|
|
34
|
+
if ((_a = tsConfigBase === null || tsConfigBase === void 0 ? void 0 : tsConfigBase.compilerOptions) === null || _a === void 0 ? void 0 : _a.paths) {
|
|
35
|
+
const potentialEntryPoints = Object.keys(tsConfigBase.compilerOptions.paths)
|
|
36
|
+
.filter((entry) => {
|
|
37
|
+
const sourceFolderPaths = tsConfigBase.compilerOptions.paths[entry];
|
|
38
|
+
return sourceFolderPaths.some((sourceFolderPath) => {
|
|
39
|
+
return sourceFolderPath.includes(importScope.data.root);
|
|
40
|
+
});
|
|
41
|
+
})
|
|
42
|
+
.map((entry) => tsConfigBase.compilerOptions.paths[entry].map((x) => ({
|
|
43
|
+
path: x,
|
|
44
|
+
importScope: entry,
|
|
45
|
+
})));
|
|
46
|
+
return potentialEntryPoints.flat();
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
exports.getBarrelEntryPointProjectNode = getBarrelEntryPointProjectNode;
|
|
51
|
+
function hasMemberExport(exportedMember, filePath) {
|
|
52
|
+
const fileContent = (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
53
|
+
// use the TypeScript AST to find the path to the file where exportedMember is defined
|
|
54
|
+
const sourceFile = ts.createSourceFile(filePath, fileContent, ts.ScriptTarget.Latest, true);
|
|
55
|
+
// search whether there is already an export with our node
|
|
56
|
+
return ((0, typescript_1.findNodes)(sourceFile, ts.SyntaxKind.Identifier).filter((identifier) => identifier.text === exportedMember).length > 0);
|
|
57
|
+
}
|
|
58
|
+
function getRelativeImportPath(exportedMember, filePath, basePath) {
|
|
59
|
+
var _a;
|
|
60
|
+
const fileContent = (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
61
|
+
// use the TypeScript AST to find the path to the file where exportedMember is defined
|
|
62
|
+
const sourceFile = ts.createSourceFile(filePath, fileContent, ts.ScriptTarget.Latest, true);
|
|
63
|
+
// Search in the current file whether there's an export already!
|
|
64
|
+
const memberNodes = (0, typescript_1.findNodes)(sourceFile, ts.SyntaxKind.Identifier).filter((identifier) => identifier.text === exportedMember);
|
|
65
|
+
let hasExport = false;
|
|
66
|
+
for (const memberNode of memberNodes || []) {
|
|
67
|
+
if (memberNode) {
|
|
68
|
+
// recursively navigate upwards to find the ExportKey modifier
|
|
69
|
+
let parent = memberNode;
|
|
70
|
+
do {
|
|
71
|
+
parent = parent.parent;
|
|
72
|
+
if (parent) {
|
|
73
|
+
// if we are inside a parameter list or decorator or param assignment
|
|
74
|
+
// then this is not what we're searching for, so break :)
|
|
75
|
+
if (parent.kind === ts.SyntaxKind.Parameter ||
|
|
76
|
+
parent.kind === ts.SyntaxKind.PropertyAccessExpression ||
|
|
77
|
+
parent.kind === ts.SyntaxKind.TypeReference ||
|
|
78
|
+
parent.kind === ts.SyntaxKind.HeritageClause ||
|
|
79
|
+
parent.kind === ts.SyntaxKind.Decorator) {
|
|
80
|
+
hasExport = false;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
// if our identifier is within an ExportDeclaration but is not just
|
|
84
|
+
// a re-export of some other module, we're good
|
|
85
|
+
if (parent.kind === ts.SyntaxKind.ExportDeclaration &&
|
|
86
|
+
!parent.moduleSpecifier) {
|
|
87
|
+
hasExport = true;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
if (parent.modifiers &&
|
|
91
|
+
parent.modifiers.find((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword)) {
|
|
92
|
+
/**
|
|
93
|
+
* if we get to a function export declaration we need to verify whether the
|
|
94
|
+
* exported function is actually the member we are searching for. Otherwise
|
|
95
|
+
* we might end up finding a function that just uses our searched identifier
|
|
96
|
+
* internally.
|
|
97
|
+
*
|
|
98
|
+
* Example: assume we try to find a constant member: `export const SOME_CONSTANT = 'bla'`
|
|
99
|
+
*
|
|
100
|
+
* Then we might end up in a file that uses it like
|
|
101
|
+
*
|
|
102
|
+
* import { SOME_CONSTANT } from '@myorg/samelib'
|
|
103
|
+
*
|
|
104
|
+
* export function someFunction() {
|
|
105
|
+
* return `Hi, ${SOME_CONSTANT}`
|
|
106
|
+
* }
|
|
107
|
+
*
|
|
108
|
+
* We want to avoid accidentally picking the someFunction export since we're searching upwards
|
|
109
|
+
* starting from `SOME_CONSTANT` identifier usages.
|
|
110
|
+
*/
|
|
111
|
+
if (parent.kind === ts.SyntaxKind.FunctionDeclaration) {
|
|
112
|
+
const parentName = (_a = parent.name) === null || _a === void 0 ? void 0 : _a.text;
|
|
113
|
+
if (parentName === exportedMember) {
|
|
114
|
+
hasExport = true;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
hasExport = true;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
} while (!!parent);
|
|
125
|
+
}
|
|
126
|
+
if (hasExport) {
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (hasExport) {
|
|
131
|
+
// we found the file, now grab the path
|
|
132
|
+
return filePath;
|
|
133
|
+
}
|
|
134
|
+
// if we didn't find an export, let's try to follow
|
|
135
|
+
// all export declarations and see whether any of those
|
|
136
|
+
// exports the node we're searching for
|
|
137
|
+
const exportDeclarations = (0, typescript_1.findNodes)(sourceFile, ts.SyntaxKind.ExportDeclaration);
|
|
138
|
+
for (const exportDeclaration of exportDeclarations) {
|
|
139
|
+
if (exportDeclaration.moduleSpecifier) {
|
|
140
|
+
// verify whether the export declaration we're looking at is a named export
|
|
141
|
+
// cause in that case we need to check whether our searched member is
|
|
142
|
+
// part of the exports
|
|
143
|
+
if (exportDeclaration.exportClause &&
|
|
144
|
+
(0, typescript_1.findNodes)(exportDeclaration, ts.SyntaxKind.Identifier).filter((identifier) => identifier.text === exportedMember).length === 0) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const modulePath = exportDeclaration.moduleSpecifier.text;
|
|
148
|
+
let moduleFilePath = (0, devkit_1.joinPathFragments)('./', (0, path_1.dirname)(filePath), `${modulePath}.ts`);
|
|
149
|
+
if (!(0, fs_1.existsSync)(moduleFilePath)) {
|
|
150
|
+
// might be a index.ts
|
|
151
|
+
moduleFilePath = (0, devkit_1.joinPathFragments)('./', (0, path_1.dirname)(filePath), `${modulePath}/index.ts`);
|
|
152
|
+
}
|
|
153
|
+
if (hasMemberExport(exportedMember, moduleFilePath)) {
|
|
154
|
+
const foundFilePath = getRelativeImportPath(exportedMember, moduleFilePath, basePath);
|
|
155
|
+
if (foundFilePath) {
|
|
156
|
+
return foundFilePath;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
exports.getRelativeImportPath = getRelativeImportPath;
|
|
164
|
+
//# sourceMappingURL=ast-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../../../../../packages/eslint-plugin-nx/src/utils/ast-utils.ts"],"names":[],"mappings":"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"}
|