@nrwl/eslint-plugin-nx 13.8.4 → 13.8.7

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/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2017-2022 Narwhal Technologies Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ 'Software'), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nrwl/eslint-plugin-nx",
3
- "version": "13.8.4",
3
+ "version": "13.8.7",
4
4
  "description": "ESLint Plugin for Nx",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,18 +32,10 @@
32
32
  }
33
33
  },
34
34
  "dependencies": {
35
- "@nrwl/devkit": "13.8.4",
36
- "@nrwl/workspace": "13.8.4",
37
- "@swc-node/register": "^1.4.2",
35
+ "@nrwl/devkit": "13.8.7",
36
+ "@nrwl/workspace": "13.8.7",
38
37
  "@typescript-eslint/experimental-utils": "~5.10.0",
39
38
  "chalk": "4.1.0",
40
- "confusing-browser-globals": "^1.0.9",
41
- "tsconfig-paths": "^3.9.0"
42
- },
43
- "optionalDependencies": {
44
- "@swc/core-linux-x64-musl": "^1.2.136",
45
- "@swc/core-linux-x64-gnu": "^1.2.136",
46
- "@swc/core-linux-arm64-gnu": "^1.2.136",
47
- "@swc/core-linux-arm64-musl": "^1.2.136"
39
+ "confusing-browser-globals": "^1.0.9"
48
40
  }
49
41
  }
@@ -2,42 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.workspaceRules = void 0;
4
4
  const fs_1 = require("fs");
5
- const path_1 = require("path");
6
5
  const constants_1 = require("./constants");
7
- const read_default_tsconfig_1 = require("@swc-node/register/read-default-tsconfig");
8
- const register_1 = require("@swc-node/register/register");
9
- /**
10
- * Optionally, if ts-node and tsconfig-paths are available in the current workspace, apply the require
11
- * register hooks so that .ts files can be used for writing workspace lint rules.
12
- *
13
- * If ts-node and tsconfig-paths are not available, the user can still provide an index.js file in
14
- * tools/eslint-rules and write their rules in JavaScript and the fundamentals will still work (but
15
- * workspace path mapping will not, for example).
16
- */
17
- function registerTSWorkspaceLint() {
18
- try {
19
- (0, register_1.register)((0, read_default_tsconfig_1.readDefaultTsConfig)((0, path_1.join)(constants_1.WORKSPACE_PLUGIN_DIR, 'tsconfig.json')));
20
- const tsconfigPaths = require('tsconfig-paths');
21
- // Load the tsconfig from tools/eslint-rules/tsconfig.json
22
- const tsConfigResult = tsconfigPaths.loadConfig(constants_1.WORKSPACE_PLUGIN_DIR);
23
- /**
24
- * Register the custom workspace path mappings with node so that workspace libraries
25
- * can be imported and used within custom workspace lint rules.
26
- */
27
- return tsconfigPaths.register({
28
- baseUrl: tsConfigResult.absoluteBaseUrl,
29
- paths: tsConfigResult.paths,
30
- });
31
- }
32
- catch (err) { }
33
- }
6
+ const register_1 = require("@nrwl/tao/src/utils/register");
34
7
  exports.workspaceRules = (() => {
35
8
  // If `tools/eslint-rules` folder doesn't exist, there is no point trying to register and load it
36
9
  if (!(0, fs_1.existsSync)(constants_1.WORKSPACE_PLUGIN_DIR)) {
37
10
  return {};
38
11
  }
39
12
  // Register `tools/eslint-rules` for TS transpilation
40
- const registrationCleanup = registerTSWorkspaceLint();
13
+ const registrationCleanup = (0, register_1.registerTsProject)(constants_1.WORKSPACE_PLUGIN_DIR);
41
14
  try {
42
15
  /**
43
16
  * Currently we only support applying the rules from the user's workspace plugin object
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-workspace-rules.js","sourceRoot":"","sources":["../../../../packages/eslint-plugin-nx/src/resolve-workspace-rules.ts"],"names":[],"mappings":";;;AACA,2BAAgC;AAChC,+BAA4B;AAC5B,2CAA6E;AAC7E,oFAA+E;AAC/E,0DAAuD;AAIvD;;;;;;;GAOG;AACH,SAAS,uBAAuB;IAC9B,IAAI;QACF,IAAA,mBAAQ,EAAC,IAAA,2CAAmB,EAAC,IAAA,WAAI,EAAC,gCAAoB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QAE3E,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAEhD,0DAA0D;QAC1D,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,CAAC,gCAAoB,CAAC,CAAC;QAEtE;;;WAGG;QACH,OAAO,aAAa,CAAC,QAAQ,CAAC;YAC5B,OAAO,EAAE,cAAc,CAAC,eAAe;YACvC,KAAK,EAAE,cAAc,CAAC,KAAK;SAC5B,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE,GAAE;AAClB,CAAC;AAEY,QAAA,cAAc,GAAG,CAAC,GAAgB,EAAE;IAC/C,iGAAiG;IACjG,IAAI,CAAC,IAAA,eAAU,EAAC,gCAAoB,CAAC,EAAE;QACrC,OAAO,EAAE,CAAC;KACX;IACD,qDAAqD;IACrD,MAAM,mBAAmB,GAAG,uBAAuB,EAAE,CAAC;IACtD,IAAI;QACF;;;WAGG;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,gCAAoB,CAAC,CAAC;QAEhD,4CAA4C;QAC5C,MAAM,eAAe,GAAgB,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAoB,CAAC,EAAE;YACzE,eAAe,CAAC,GAAG,oCAAwB,IAAI,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;SACzE;QACD,OAAO,eAAe,CAAC;KACxB;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,EAAE,CAAC;KACX;YAAS;QACR,IAAI,mBAAmB,EAAE;YACvB,mBAAmB,EAAE,CAAC;SACvB;KACF;AACH,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"resolve-workspace-rules.js","sourceRoot":"","sources":["../../../../packages/eslint-plugin-nx/src/resolve-workspace-rules.ts"],"names":[],"mappings":";;;AACA,2BAAgC;AAChC,2CAA6E;AAC7E,2DAAiE;AAIpD,QAAA,cAAc,GAAG,CAAC,GAAgB,EAAE;IAC/C,iGAAiG;IACjG,IAAI,CAAC,IAAA,eAAU,EAAC,gCAAoB,CAAC,EAAE;QACrC,OAAO,EAAE,CAAC;KACX;IACD,qDAAqD;IACrD,MAAM,mBAAmB,GAAG,IAAA,4BAAiB,EAAC,gCAAoB,CAAC,CAAC;IACpE,IAAI;QACF;;;WAGG;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,gCAAoB,CAAC,CAAC;QAEhD,4CAA4C;QAC5C,MAAM,eAAe,GAAgB,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAoB,CAAC,EAAE;YACzE,eAAe,CAAC,GAAG,oCAAwB,IAAI,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;SACzE;QACD,OAAO,eAAe,CAAC;KACxB;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,EAAE,CAAC;KACX;YAAS;QACR,IAAI,mBAAmB,EAAE;YACvB,mBAAmB,EAAE,CAAC;SACvB;KACF;AACH,CAAC,CAAC,EAAE,CAAC"}
@@ -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' | 'tagConstraintViolation' | 'bannedExternalImportsViolation' | 'noTransitiveDependencies';
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
- if ((0, runtime_lint_utils_1.isRelativeImportIntoAnotherProject)(imp, projectPath, projectGraph, sourceFilePath, sourceProject) ||
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
- const targetProject = (0, runtime_lint_utils_1.findProjectUsingImport)(projectGraph, targetProjectLocator, sourceFilePath, imp, npmScope);
142
- // If source or target are not part of an nx workspace, return.
143
- if (!sourceProject || !targetProject) {
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 => allow
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;
@@ -186,6 +258,9 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
186
258
  const circularPath = (0, graph_utils_1.checkCircularPath)(global.projectGraph, sourceProject, targetProject);
187
259
  if (circularPath.length !== 0) {
188
260
  const circularFilePath = (0, graph_utils_1.findFilesInCircularPath)(circularPath);
261
+ // spacer text used for indirect dependencies when printing one line per file.
262
+ // without this, we can end up with a very long line that does not display well in the terminal.
263
+ const spacer = ' ';
189
264
  context.report({
190
265
  node,
191
266
  messageId: 'noCircularDependencies',
@@ -194,7 +269,11 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
194
269
  targetProjectName: targetProject.name,
195
270
  path: circularPath.reduce((acc, v) => `${acc} -> ${v.name}`, sourceProject.name),
196
271
  filePaths: circularFilePath
197
- .map((files) => files.length > 1 ? `[${files.join(',')}]` : files[0])
272
+ .map((files) => files.length > 1
273
+ ? `[${files
274
+ .map((f) => `\n${spacer}${spacer}${f}`)
275
+ .join(',')}\n${spacer}]`
276
+ : files[0])
198
277
  .reduce((acc, files) => `${acc}\n- ${files}`, `- ${sourceFilePath}`),
199
278
  },
200
279
  });
@@ -251,20 +330,37 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
251
330
  return;
252
331
  }
253
332
  for (let constraint of constraints) {
254
- if ((0, runtime_lint_utils_1.hasNoneOfTheseTags)(targetProject, constraint.onlyDependOnLibsWithTags || [])) {
255
- const allowedTags = constraint.onlyDependOnLibsWithTags
256
- .map((s) => `"${s}"`)
257
- .join(', ');
333
+ if (constraint.onlyDependOnLibsWithTags &&
334
+ constraint.onlyDependOnLibsWithTags.length &&
335
+ (0, runtime_lint_utils_1.hasNoneOfTheseTags)(targetProject, constraint.onlyDependOnLibsWithTags)) {
258
336
  context.report({
259
337
  node,
260
- messageId: 'tagConstraintViolation',
338
+ messageId: 'onlyTagsConstraintViolation',
261
339
  data: {
262
340
  sourceTag: constraint.sourceTag,
263
- allowedTags,
341
+ tags: (0, runtime_lint_utils_1.stringifyTags)(constraint.onlyDependOnLibsWithTags),
264
342
  },
265
343
  });
266
344
  return;
267
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
+ }
268
364
  }
269
365
  }
270
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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"}