@nrwl/linter 15.9.2 → 16.0.0-beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. package/executors.json +5 -5
  2. package/generators.json +2 -28
  3. package/index.d.ts +1 -5
  4. package/index.js +1 -13
  5. package/index.js.map +1 -1
  6. package/package.json +7 -20
  7. package/README.md +0 -61
  8. package/migrations.json +0 -226
  9. package/src/executors/eslint/compat.d.ts +0 -2
  10. package/src/executors/eslint/compat.js +0 -6
  11. package/src/executors/eslint/compat.js.map +0 -1
  12. package/src/executors/eslint/hasher.d.ts +0 -7
  13. package/src/executors/eslint/hasher.js +0 -47
  14. package/src/executors/eslint/hasher.js.map +0 -1
  15. package/src/executors/eslint/lint.impl.d.ts +0 -5
  16. package/src/executors/eslint/lint.impl.js +0 -116
  17. package/src/executors/eslint/lint.impl.js.map +0 -1
  18. package/src/executors/eslint/schema.d.ts +0 -38
  19. package/src/executors/eslint/schema.json +0 -139
  20. package/src/executors/eslint/utility/eslint-utils.d.ts +0 -4
  21. package/src/executors/eslint/utility/eslint-utils.js +0 -52
  22. package/src/executors/eslint/utility/eslint-utils.js.map +0 -1
  23. package/src/generators/init/global-eslint-config.d.ts +0 -36
  24. package/src/generators/init/global-eslint-config.js +0 -77
  25. package/src/generators/init/global-eslint-config.js.map +0 -1
  26. package/src/generators/init/init-migration.d.ts +0 -3
  27. package/src/generators/init/init-migration.js +0 -68
  28. package/src/generators/init/init-migration.js.map +0 -1
  29. package/src/generators/init/init.d.ts +0 -9
  30. package/src/generators/init/init.js +0 -63
  31. package/src/generators/init/init.js.map +0 -1
  32. package/src/generators/lint-project/lint-project.d.ts +0 -16
  33. package/src/generators/lint-project/lint-project.js +0 -137
  34. package/src/generators/lint-project/lint-project.js.map +0 -1
  35. package/src/generators/utils/eslint-file.d.ts +0 -4
  36. package/src/generators/utils/eslint-file.js +0 -27
  37. package/src/generators/utils/eslint-file.js.map +0 -1
  38. package/src/generators/utils/eslint-targets.d.ts +0 -2
  39. package/src/generators/utils/eslint-targets.js +0 -13
  40. package/src/generators/utils/eslint-targets.js.map +0 -1
  41. package/src/generators/utils/linter.d.ts +0 -4
  42. package/src/generators/utils/linter.js +0 -9
  43. package/src/generators/utils/linter.js.map +0 -1
  44. package/src/generators/workspace-rule/files/__name__.spec.ts__tmpl__ +0 -11
  45. package/src/generators/workspace-rule/files/__name__.ts__tmpl__ +0 -37
  46. package/src/generators/workspace-rule/schema.json +0 -26
  47. package/src/generators/workspace-rule/workspace-rule.d.ts +0 -7
  48. package/src/generators/workspace-rule/workspace-rule.js +0 -79
  49. package/src/generators/workspace-rule/workspace-rule.js.map +0 -1
  50. package/src/generators/workspace-rules-project/files/index.ts__tmpl__ +0 -27
  51. package/src/generators/workspace-rules-project/files/tsconfig.json__tmpl__ +0 -13
  52. package/src/generators/workspace-rules-project/files/tsconfig.lint.json__tmpl__ +0 -9
  53. package/src/generators/workspace-rules-project/schema.json +0 -23
  54. package/src/generators/workspace-rules-project/workspace-rules-project.d.ts +0 -8
  55. package/src/generators/workspace-rules-project/workspace-rules-project.js +0 -86
  56. package/src/generators/workspace-rules-project/workspace-rules-project.js.map +0 -1
  57. package/src/migrations/update-12-4-0/remove-eslint-project-config-if-no-type-checking-rules.d.ts +0 -2
  58. package/src/migrations/update-12-4-0/remove-eslint-project-config-if-no-type-checking-rules.js +0 -32
  59. package/src/migrations/update-12-4-0/remove-eslint-project-config-if-no-type-checking-rules.js.map +0 -1
  60. package/src/migrations/update-12-9-0/add-outputs.d.ts +0 -2
  61. package/src/migrations/update-12-9-0/add-outputs.js +0 -23
  62. package/src/migrations/update-12-9-0/add-outputs.js.map +0 -1
  63. package/src/migrations/update-13-3-0/eslint-8-updates.d.ts +0 -2
  64. package/src/migrations/update-13-3-0/eslint-8-updates.js +0 -44
  65. package/src/migrations/update-13-3-0/eslint-8-updates.js.map +0 -1
  66. package/src/migrations/update-14-1-9/add-swc-deps-if-needed.d.ts +0 -2
  67. package/src/migrations/update-14-1-9/add-swc-deps-if-needed.js +0 -20
  68. package/src/migrations/update-14-1-9/add-swc-deps-if-needed.js.map +0 -1
  69. package/src/migrations/update-14-4-4/experimental-to-utils-deps.d.ts +0 -2
  70. package/src/migrations/update-14-4-4/experimental-to-utils-deps.js +0 -30
  71. package/src/migrations/update-14-4-4/experimental-to-utils-deps.js.map +0 -1
  72. package/src/migrations/update-14-4-4/experimental-to-utils-rules.d.ts +0 -2
  73. package/src/migrations/update-14-4-4/experimental-to-utils-rules.js +0 -38
  74. package/src/migrations/update-14-4-4/experimental-to-utils-rules.js.map +0 -1
  75. package/src/migrations/update-15-0-0/add-eslint-inputs.d.ts +0 -2
  76. package/src/migrations/update-15-0-0/add-eslint-inputs.js +0 -33
  77. package/src/migrations/update-15-0-0/add-eslint-inputs.js.map +0 -1
  78. package/src/migrations/update-15-7-1/add-eslint-ignore.d.ts +0 -2
  79. package/src/migrations/update-15-7-1/add-eslint-ignore.js +0 -42
  80. package/src/migrations/update-15-7-1/add-eslint-ignore.js.map +0 -1
  81. package/src/utils/convert-tslint-to-eslint/convert-nx-enforce-module-boundaries-rule.d.ts +0 -5
  82. package/src/utils/convert-tslint-to-eslint/convert-nx-enforce-module-boundaries-rule.js +0 -57
  83. package/src/utils/convert-tslint-to-eslint/convert-nx-enforce-module-boundaries-rule.js.map +0 -1
  84. package/src/utils/convert-tslint-to-eslint/convert-to-eslint-config.d.ts +0 -9
  85. package/src/utils/convert-tslint-to-eslint/convert-to-eslint-config.js +0 -152
  86. package/src/utils/convert-tslint-to-eslint/convert-to-eslint-config.js.map +0 -1
  87. package/src/utils/convert-tslint-to-eslint/example-tslint-configs.d.ts +0 -326
  88. package/src/utils/convert-tslint-to-eslint/example-tslint-configs.js +0 -325
  89. package/src/utils/convert-tslint-to-eslint/example-tslint-configs.js.map +0 -1
  90. package/src/utils/convert-tslint-to-eslint/index.d.ts +0 -2
  91. package/src/utils/convert-tslint-to-eslint/index.js +0 -9
  92. package/src/utils/convert-tslint-to-eslint/index.js.map +0 -1
  93. package/src/utils/convert-tslint-to-eslint/project-converter.d.ts +0 -72
  94. package/src/utils/convert-tslint-to-eslint/project-converter.js +0 -396
  95. package/src/utils/convert-tslint-to-eslint/project-converter.js.map +0 -1
  96. package/src/utils/convert-tslint-to-eslint/utils.d.ts +0 -10
  97. package/src/utils/convert-tslint-to-eslint/utils.js +0 -91
  98. package/src/utils/convert-tslint-to-eslint/utils.js.map +0 -1
  99. package/src/utils/rules-requiring-type-checking.d.ts +0 -3
  100. package/src/utils/rules-requiring-type-checking.js +0 -88
  101. package/src/utils/rules-requiring-type-checking.js.map +0 -1
  102. package/src/utils/testing.d.ts +0 -2
  103. package/src/utils/testing.js +0 -13
  104. package/src/utils/testing.js.map +0 -1
  105. package/src/utils/versions.d.ts +0 -5
  106. package/src/utils/versions.js +0 -9
  107. package/src/utils/versions.js.map +0 -1
  108. package/src/utils/workspace-lint-rules.d.ts +0 -1
  109. package/src/utils/workspace-lint-rules.js +0 -6
  110. package/src/utils/workspace-lint-rules.js.map +0 -1
package/executors.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "builders": {
3
3
  "eslint": {
4
- "implementation": "./src/executors/eslint/compat",
5
- "schema": "./src/executors/eslint/schema.json",
4
+ "implementation": "@nx/linter/src/executors/eslint/compat",
5
+ "schema": "@nx/linter/src/executors/eslint/schema.json",
6
6
  "description": "Run ESLint on a project."
7
7
  }
8
8
  },
9
9
  "executors": {
10
10
  "eslint": {
11
- "implementation": "./src/executors/eslint/lint.impl",
12
- "schema": "./src/executors/eslint/schema.json",
13
- "hasher": "./src/executors/eslint/hasher",
11
+ "implementation": "@nx/linter/src/executors/eslint/lint.impl",
12
+ "schema": "@nx/linter/src/executors/eslint/schema.json",
13
+ "hasher": "@nx/linter/src/executors/eslint/hasher",
14
14
  "description": "Run ESLint on a project."
15
15
  }
16
16
  }
package/generators.json CHANGED
@@ -1,30 +1,4 @@
1
1
  {
2
- "name": "nx/linter",
3
- "version": "0.1",
4
- "schematics": {
5
- "workspace-rules-project": {
6
- "factory": "./src/generators/workspace-rules-project/workspace-rules-project#lintWorkspaceRulesProjectSchematic",
7
- "schema": "./src/generators/workspace-rules-project/schema.json",
8
- "description": "Create the Workspace Lint Rules Project.",
9
- "hidden": true
10
- },
11
- "workspace-rule": {
12
- "factory": "./src/generators/workspace-rule/workspace-rule#lintWorkspaceRuleSchematic",
13
- "schema": "./src/generators/workspace-rule/schema.json",
14
- "description": "Create a new Workspace ESLint rule."
15
- }
16
- },
17
- "generators": {
18
- "workspace-rules-project": {
19
- "factory": "./src/generators/workspace-rules-project/workspace-rules-project#lintWorkspaceRulesProjectGenerator",
20
- "schema": "./src/generators/workspace-rules-project/schema.json",
21
- "description": "Create the Workspace Lint Rules Project.",
22
- "hidden": true
23
- },
24
- "workspace-rule": {
25
- "factory": "./src/generators/workspace-rule/workspace-rule#lintWorkspaceRuleGenerator",
26
- "schema": "./src/generators/workspace-rule/schema.json",
27
- "description": "Create a new Workspace ESLint rule."
28
- }
29
- }
2
+ "extends": ["@nx/linter"],
3
+ "schematics": {}
30
4
  }
package/index.d.ts CHANGED
@@ -1,5 +1 @@
1
- export { lintProjectGenerator } from './src/generators/lint-project/lint-project';
2
- export { lintInitGenerator } from './src/generators/init/init';
3
- export { Linter } from './src/generators/utils/linter';
4
- export * from './src/utils/convert-tslint-to-eslint';
5
- export { hasRulesRequiringTypeChecking } from './src/utils/rules-requiring-type-checking';
1
+ export * from '@nx/linter';
package/index.js CHANGED
@@ -1,17 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasRulesRequiringTypeChecking = exports.Linter = exports.lintInitGenerator = exports.lintProjectGenerator = void 0;
4
3
  const tslib_1 = require("tslib");
5
- var lint_project_1 = require("./src/generators/lint-project/lint-project");
6
- Object.defineProperty(exports, "lintProjectGenerator", { enumerable: true, get: function () { return lint_project_1.lintProjectGenerator; } });
7
- var init_1 = require("./src/generators/init/init");
8
- Object.defineProperty(exports, "lintInitGenerator", { enumerable: true, get: function () { return init_1.lintInitGenerator; } });
9
- var linter_1 = require("./src/generators/utils/linter");
10
- Object.defineProperty(exports, "Linter", { enumerable: true, get: function () { return linter_1.Linter; } });
11
- tslib_1.__exportStar(require("./src/utils/convert-tslint-to-eslint"), exports);
12
- // @nrwl/angular needs it for the Angular CLI workspace migration to Nx to
13
- // infer whether a config is using type aware rules and set the
14
- // `hasTypeAwareRules` option of the `@nrwl/linter:eslint` executor.
15
- var rules_requiring_type_checking_1 = require("./src/utils/rules-requiring-type-checking");
16
- Object.defineProperty(exports, "hasRulesRequiringTypeChecking", { enumerable: true, get: function () { return rules_requiring_type_checking_1.hasRulesRequiringTypeChecking; } });
4
+ tslib_1.__exportStar(require("@nx/linter"), exports);
17
5
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/linter/index.ts"],"names":[],"mappings":";;;;AAAA,2EAAkF;AAAzE,oHAAA,oBAAoB,OAAA;AAC7B,mDAA+D;AAAtD,yGAAA,iBAAiB,OAAA;AAC1B,wDAAuD;AAA9C,gGAAA,MAAM,OAAA;AACf,+EAAqD;AAErD,0EAA0E;AAC1E,+DAA+D;AAC/D,oEAAoE;AACpE,2FAA0F;AAAjF,8IAAA,6BAA6B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages-legacy/linter/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@nrwl/linter",
3
- "version": "15.9.2",
3
+ "version": "16.0.0-beta.1",
4
4
  "private": false,
5
5
  "description": "The Linter plugin for Nx contains executors, generators and utilities used for linting JavaScript/TypeScript projects within an Nx workspace.",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/nrwl/nx.git",
9
- "directory": "packages/linter"
9
+ "directory": "packages-legacy/linter"
10
10
  },
11
11
  "keywords": [
12
12
  "Monorepo",
@@ -23,30 +23,17 @@
23
23
  "url": "https://github.com/nrwl/nx/issues"
24
24
  },
25
25
  "homepage": "https://nx.dev",
26
- "ng-update": {
27
- "requirements": {},
28
- "migrations": "./migrations.json"
29
- },
30
26
  "builders": "./executors.json",
31
27
  "schematics": "./generators.json",
32
- "peerDependencies": {
33
- "eslint": "^8.0.0"
34
- },
35
28
  "dependencies": {
36
- "@nrwl/devkit": "15.9.2",
37
- "@nrwl/js": "15.9.2",
38
- "@phenomnomnominal/tsquery": "4.1.1",
39
- "tmp": "~0.2.1",
40
- "tslib": "^2.3.0"
41
- },
42
- "peerDependenciesMeta": {
43
- "eslint": {
44
- "optional": true
45
- }
29
+ "@nx/linter": "16.0.0-beta.1"
46
30
  },
47
31
  "publishConfig": {
48
32
  "access": "public"
49
33
  },
34
+ "nx-migrations": {
35
+ "migrations": "@nx/linter/migrations.json"
36
+ },
50
37
  "types": "./index.d.ts",
51
- "gitHead": "c60dd8b2f03545ba7d9bbf58c10ac7b49f7f3e92"
38
+ "gitHead": "abf534c265f5aa3aac146e55bb31de598ea281d7"
52
39
  }
package/README.md DELETED
@@ -1,61 +0,0 @@
1
- <p style="text-align: center;"><img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx.png" width="600" alt="Nx - Smart, Fast and Extensible Build System"></p>
2
-
3
- <div style="text-align: center;">
4
-
5
- [![CircleCI](https://circleci.com/gh/nrwl/nx.svg?style=svg)](https://circleci.com/gh/nrwl/nx)
6
- [![License](https://img.shields.io/npm/l/@nrwl/workspace.svg?style=flat-square)]()
7
- [![NPM Version](https://badge.fury.io/js/%40nrwl%2Fworkspace.svg)](https://www.npmjs.com/@nrwl/workspace)
8
- [![Semantic Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=flat-square)]()
9
- [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
10
- [![Join the chat at https://gitter.im/nrwl-nx/community](https://badges.gitter.im/nrwl-nx/community.svg)](https://gitter.im/nrwl-nx/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
11
- [![Join us @nrwl/community on slack](https://img.shields.io/badge/slack-%40nrwl%2Fcommunity-brightgreen)](https://join.slack.com/t/nrwlcommunity/shared_invite/enQtNzU5MTE4OTQwOTk0LTgxY2E0ZWYzMWE0YzA5ZDA2MWM1NDVhNmI2ZWMyYmZhNWJiODk3MjkxZjY3MzU5ZjRmM2NmNWU1OTgyZmE4Mzc)
12
-
13
- </div>
14
-
15
-
16
- <hr>
17
-
18
- # Nx: Smart, Fast and Extensible Build System
19
-
20
- Nx is a next generation build system with first class monorepo support and powerful integrations.
21
-
22
- ## Getting Started
23
-
24
- ### Creating an Nx Workspace
25
-
26
- **Using `npx`**
27
-
28
- ```bash
29
- npx create-nx-workspace
30
- ```
31
-
32
- **Using `npm init`**
33
-
34
- ```bash
35
- npm init nx-workspace
36
- ```
37
-
38
- **Using `yarn create`**
39
-
40
- ```bash
41
- yarn create nx-workspace
42
- ```
43
-
44
- ### Adding Nx to an Existing Repository
45
-
46
- Run:
47
-
48
- ```bash
49
- npx nx@latest init
50
- ```
51
-
52
- ## Documentation & Resources
53
-
54
- - [Nx.Dev: Documentation, Guides, Tutorials](https://nx.dev)
55
- - [Intro to Nx](https://nx.dev/getting-started/intro)
56
- - [Official Nx YouTube Channel](https://www.youtube.com/@NxDevtools)
57
- - [Blog Posts About Nx](https://blog.nrwl.io/nx/home)
58
-
59
- <p style="text-align: center;"><a href="https://nx.dev/#learning-materials" target="_blank" rel="noreferrer"><img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-courses-and-videos.svg"
60
- width="100%" alt="Nx - Smart, Fast and Extensible Build System"></a></p>
61
-
package/migrations.json DELETED
@@ -1,226 +0,0 @@
1
- {
2
- "schematics": {
3
- "remove-eslint-project-config-if-no-type-checking-rules": {
4
- "cli": "nx",
5
- "version": "12.4.0-beta.0",
6
- "description": "Remove ESLint parserOptions.project config if no rules requiring type-checking are in use",
7
- "factory": "./src/migrations/update-12-4-0/remove-eslint-project-config-if-no-type-checking-rules"
8
- },
9
- "add-outputs": {
10
- "cli": "nx",
11
- "version": "12.9.0-beta.0",
12
- "description": "Add outputs for caching",
13
- "factory": "./src/migrations/update-12-9-0/add-outputs"
14
- },
15
- "remove-eslint-project-config-if-no-type-checking-rules-again": {
16
- "cli": "nx",
17
- "version": "12.9.0-beta.0",
18
- "description": "Remove ESLint parserOptions.project config if no rules requiring type-checking are in use",
19
- "factory": "./src/migrations/update-12-4-0/remove-eslint-project-config-if-no-type-checking-rules"
20
- },
21
- "eslint-8-updates": {
22
- "cli": "nx",
23
- "version": "13.3.0-beta.0",
24
- "description": "Update eslint-rules jest.config.js in order to support ESLint v8 exports mapping, remove category field",
25
- "factory": "./src/migrations/update-13-3-0/eslint-8-updates"
26
- },
27
- "add-swc-deps": {
28
- "cli": "nx",
29
- "version": "14.1.9-beta.0",
30
- "description": "Adds @swc/core and @swc-node as a dev dep if you are using them",
31
- "factory": "./src/migrations/update-14-1-9/add-swc-deps-if-needed"
32
- },
33
- "add-swc-deps-again": {
34
- "cli": "nx",
35
- "version": "14.2.3-beta.0",
36
- "description": "Adds @swc/core and @swc-node as a dev dep if you are using them (repeated due to prior mistake)",
37
- "factory": "./src/migrations/update-14-1-9/add-swc-deps-if-needed"
38
- },
39
- "experimental-to-utils-deps": {
40
- "cli": "nx",
41
- "version": "14.4.4",
42
- "description": "Adds @typescript-eslint/utils as a dev dep",
43
- "factory": "./src/migrations/update-14-4-4/experimental-to-utils-deps"
44
- },
45
- "experimental-to-utils-rules": {
46
- "cli": "nx",
47
- "version": "14.4.4",
48
- "description": "Switch from @typescript-eslint/experimental-utils to @typescript-eslint/utils in all rules and rules.spec files",
49
- "factory": "./src/migrations/update-14-4-4/experimental-to-utils-rules"
50
- },
51
- "add-eslint-inputs": {
52
- "cli": "nx",
53
- "version": "15.0.0-beta.0",
54
- "description": "Stop hashing eslint config files for build targets and dependent tasks",
55
- "factory": "./src/migrations/update-15-0-0/add-eslint-inputs"
56
- },
57
- "add-eslint-ignore": {
58
- "cli": "nx",
59
- "version": "15.7.1-beta.0",
60
- "description": "Add node_modules to root eslint ignore",
61
- "factory": "./src/migrations/update-15-7-1/add-eslint-ignore"
62
- }
63
- },
64
- "packageJsonUpdates": {
65
- "12.6.0": {
66
- "version": "12.6.0-beta.8",
67
- "packages": {
68
- "@typescript-eslint/parser": {
69
- "version": "~4.28.0"
70
- },
71
- "@typescript-eslint/eslint-plugin": {
72
- "version": "~4.28.0"
73
- }
74
- }
75
- },
76
- "12.10.0": {
77
- "version": "12.10.0-beta.1",
78
- "packages": {
79
- "@typescript-eslint/parser": {
80
- "version": "~4.31.1"
81
- },
82
- "@typescript-eslint/eslint-plugin": {
83
- "version": "~4.31.1"
84
- },
85
- "@typescript-eslint/experimental-utils": {
86
- "version": "~4.31.1"
87
- }
88
- }
89
- },
90
- "13.0.0": {
91
- "version": "12.10.0",
92
- "packages": {
93
- "@typescript-eslint/parser": {
94
- "version": "~4.33.0"
95
- },
96
- "@typescript-eslint/eslint-plugin": {
97
- "version": "~4.33.0"
98
- },
99
- "@typescript-eslint/experimental-utils": {
100
- "version": "~4.33.0"
101
- },
102
- "eslint": {
103
- "version": "7.32.0"
104
- }
105
- }
106
- },
107
- "13.3.0": {
108
- "version": "13.3.0-beta.0",
109
- "packages": {
110
- "@typescript-eslint/parser": {
111
- "version": "~5.3.0"
112
- },
113
- "@typescript-eslint/eslint-plugin": {
114
- "version": "~5.3.0"
115
- },
116
- "@typescript-eslint/experimental-utils": {
117
- "version": "~5.3.0"
118
- },
119
- "eslint": {
120
- "version": "8.2.0"
121
- }
122
- }
123
- },
124
- "13.7.0": {
125
- "version": "13.7.0-beta.0",
126
- "packages": {
127
- "@typescript-eslint/parser": {
128
- "version": "~5.10.0"
129
- },
130
- "@typescript-eslint/eslint-plugin": {
131
- "version": "~5.10.0"
132
- },
133
- "@typescript-eslint/experimental-utils": {
134
- "version": "~5.10.0"
135
- },
136
- "eslint": {
137
- "version": "~8.7.0"
138
- }
139
- }
140
- },
141
- "13.10.0": {
142
- "version": "13.10.0-beta.0",
143
- "packages": {
144
- "@typescript-eslint/parser": {
145
- "version": "~5.18.0"
146
- },
147
- "@typescript-eslint/eslint-plugin": {
148
- "version": "~5.18.0"
149
- },
150
- "@typescript-eslint/experimental-utils": {
151
- "version": "~5.18.0"
152
- },
153
- "eslint": {
154
- "version": "~8.12.0"
155
- }
156
- }
157
- },
158
- "14.2.0": {
159
- "version": "14.2.0-beta.0",
160
- "packages": {
161
- "@typescript-eslint/parser": {
162
- "version": "~5.24.0"
163
- },
164
- "@typescript-eslint/eslint-plugin": {
165
- "version": "~5.24.0"
166
- },
167
- "@typescript-eslint/experimental-utils": {
168
- "version": "~5.24.0"
169
- },
170
- "eslint": {
171
- "version": "~8.15.0"
172
- }
173
- }
174
- },
175
- "14.3.7": {
176
- "version": "14.3.6",
177
- "packages": {
178
- "@typescript-eslint/parser": {
179
- "version": "^5.29.0"
180
- },
181
- "@typescript-eslint/eslint-plugin": {
182
- "version": "^5.29.0"
183
- },
184
- "@typescript-eslint/experimental-utils": {
185
- "version": "^5.29.0"
186
- }
187
- }
188
- },
189
- "14.4.4": {
190
- "version": "14.4.4",
191
- "packages": {
192
- "@typescript-eslint/utils": {
193
- "version": "^5.29.0"
194
- }
195
- }
196
- },
197
- "14.6.0": {
198
- "version": "14.6.0-rc.2",
199
- "packages": {
200
- "@typescript-eslint/parser": {
201
- "version": "~5.33.1"
202
- },
203
- "@typescript-eslint/eslint-plugin": {
204
- "version": "~5.33.1"
205
- },
206
- "@typescript-eslint/utils": {
207
- "version": "~5.33.1"
208
- }
209
- }
210
- },
211
- "14.8.0": {
212
- "version": "14.8.0-beta.0",
213
- "packages": {
214
- "@typescript-eslint/parser": {
215
- "version": "^5.36.1"
216
- },
217
- "@typescript-eslint/eslint-plugin": {
218
- "version": "^5.36.1"
219
- },
220
- "@typescript-eslint/utils": {
221
- "version": "^5.36.1"
222
- }
223
- }
224
- }
225
- }
226
- }
@@ -1,2 +0,0 @@
1
- declare const _default: any;
2
- export default _default;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const devkit_1 = require("@nrwl/devkit");
4
- const lint_impl_1 = require("./lint.impl");
5
- exports.default = (0, devkit_1.convertNxExecutor)(lint_impl_1.default);
6
- //# sourceMappingURL=compat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../packages/linter/src/executors/eslint/compat.ts"],"names":[],"mappings":";;AAAA,yCAAiD;AAEjD,2CAAuC;AAEvC,kBAAe,IAAA,0BAAiB,EAAC,mBAAY,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- import { ProjectGraph, Task, TaskGraph, ProjectsConfigurations, Hasher, Hash } from '@nrwl/devkit';
2
- export default function run(task: Task, context: {
3
- hasher: Hasher;
4
- projectGraph: ProjectGraph;
5
- taskGraph: TaskGraph;
6
- projectsConfigurations: ProjectsConfigurations;
7
- }): Promise<Hash>;
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- function run(task, context) {
5
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
6
- const res = yield context.hasher.hashTask(task);
7
- if (task.overrides['hasTypeAwareRules'] === true) {
8
- return res;
9
- }
10
- const deps = allDeps(task.id, context.taskGraph, context.projectGraph);
11
- const tags = context.hasher.hashArray(deps.map((d) => (context.projectsConfigurations.projects[d].tags || []).join('|')));
12
- const command = res.details['command'];
13
- let selfSource = '';
14
- for (let n of Object.keys(res.details)) {
15
- if (n.startsWith(`${task.target.project}:`)) {
16
- selfSource = res.details.nodes[n];
17
- }
18
- }
19
- const nodes = {};
20
- const hashes = [];
21
- for (const d of Object.keys(res.details.nodes)) {
22
- if (d.indexOf('$fileset') === -1) {
23
- nodes[d] = res.details.nodes[d];
24
- hashes.push(res.details.nodes[d]);
25
- }
26
- }
27
- return {
28
- value: context.hasher.hashArray([command, selfSource, ...hashes, tags]),
29
- details: {
30
- command,
31
- nodes: Object.assign({ [task.target.project]: selfSource, tags }, nodes),
32
- },
33
- };
34
- });
35
- }
36
- exports.default = run;
37
- function allDeps(taskId, taskGraph, projectGraph) {
38
- if (!taskGraph.tasks) {
39
- return [];
40
- }
41
- const project = taskGraph.tasks[taskId].target.project;
42
- const dependencies = projectGraph.dependencies[project]
43
- .filter((d) => !!projectGraph.nodes[d.target])
44
- .map((d) => d.target);
45
- return dependencies;
46
- }
47
- //# sourceMappingURL=hasher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hasher.js","sourceRoot":"","sources":["../../../../../../packages/linter/src/executors/eslint/hasher.ts"],"names":[],"mappings":";;;AASA,SAA8B,GAAG,CAC/B,IAAU,EACV,OAKC;;QAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,IAAI,EAAE;YAChD,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CACnC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,CAAC,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAClE,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE;gBAC3C,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACnC;SACF;QAED,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,EAAc,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC9C,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;gBAChC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACnC;SACF;QACD,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC;YACvE,OAAO,EAAE;gBACP,OAAO;gBACP,KAAK,kBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,IAAK,KAAK,CAAE;aAC7D;SACF,CAAC;IACJ,CAAC;CAAA;AA5CD,sBA4CC;AAED,SAAS,OAAO,CACd,MAAc,EACd,SAAoB,EACpB,YAA0B;IAE1B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QACpB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACvD,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC;SACpD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { ExecutorContext } from '@nrwl/devkit';
2
- import type { Schema } from './schema';
3
- export default function run(options: Schema, context: ExecutorContext): Promise<{
4
- success: boolean;
5
- }>;
@@ -1,116 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const eslint_1 = require("eslint");
5
- const fs_1 = require("fs");
6
- const path_1 = require("path");
7
- const eslint_utils_1 = require("./utility/eslint-utils");
8
- function run(options, context) {
9
- var _a, _b, _c, _d, _e;
10
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
11
- // this is only used for the hasher
12
- delete options.hasTypeAwareRules;
13
- const systemRoot = context.root;
14
- // eslint resolves files relative to the current working directory.
15
- // We want these paths to always be resolved relative to the workspace
16
- // root to be able to run the lint executor from any subfolder.
17
- process.chdir(systemRoot);
18
- const projectName = context.projectName || '<???>';
19
- const printInfo = options.format && !options.silent;
20
- if (printInfo) {
21
- console.info(`\nLinting ${JSON.stringify(projectName)}...`);
22
- }
23
- const projectESLint = yield (0, eslint_utils_1.loadESLint)();
24
- const version = (_b = (_a = projectESLint.ESLint) === null || _a === void 0 ? void 0 : _a.version) === null || _b === void 0 ? void 0 : _b.split('.');
25
- if (!version ||
26
- version.length < 2 ||
27
- Number(version[0]) < 7 ||
28
- (Number(version[0]) === 7 && Number(version[1]) < 6)) {
29
- throw new Error('ESLint must be version 7.6 or higher.');
30
- }
31
- const eslint = new projectESLint.ESLint({});
32
- /**
33
- * We want users to have the option of not specifying the config path, and let
34
- * eslint automatically resolve the `.eslintrc.json` files in each folder.
35
- */
36
- const eslintConfigPath = options.eslintConfig
37
- ? (0, path_1.resolve)(systemRoot, options.eslintConfig)
38
- : undefined;
39
- options.cacheLocation = options.cacheLocation
40
- ? (0, path_1.join)(options.cacheLocation, projectName)
41
- : undefined;
42
- let lintResults = [];
43
- try {
44
- lintResults = yield (0, eslint_utils_1.lint)(eslintConfigPath, options);
45
- }
46
- catch (err) {
47
- if (err.message.includes('You must therefore provide a value for the "parserOptions.project" property for @typescript-eslint/parser')) {
48
- let eslintConfigPathForError = `for ${projectName}`;
49
- if ((_e = (_d = (_c = context.projectsConfigurations) === null || _c === void 0 ? void 0 : _c.projects) === null || _d === void 0 ? void 0 : _d[projectName]) === null || _e === void 0 ? void 0 : _e.root) {
50
- const { root } = context.projectsConfigurations.projects[projectName];
51
- eslintConfigPathForError = `\`${root}/.eslintrc.json\``;
52
- }
53
- console.error(`
54
- Error: You have attempted to use a lint rule which requires the full TypeScript type-checker to be available, but you do not have \`parserOptions.project\` configured to point at your project tsconfig.json files in the relevant TypeScript file "overrides" block of your project ESLint config ${eslintConfigPath || eslintConfigPathForError}
55
-
56
- Please see https://nx.dev/guides/eslint for full guidance on how to resolve this issue.
57
- `);
58
- return {
59
- success: false,
60
- };
61
- }
62
- // If some unexpected error, rethrow
63
- throw err;
64
- }
65
- if (lintResults.length === 0) {
66
- const ignoredPatterns = (yield Promise.all(options.lintFilePatterns.map((pattern) => tslib_1.__awaiter(this, void 0, void 0, function* () { return (yield eslint.isPathIgnored(pattern)) ? pattern : null; }))))
67
- .filter((pattern) => !!pattern)
68
- .map((pattern) => `- '${pattern}'`);
69
- if (ignoredPatterns.length) {
70
- throw new Error(`All files matching the following patterns are ignored:\n${ignoredPatterns.join('\n')}\n\nPlease check your '.eslintignore' file.`);
71
- }
72
- throw new Error('Invalid lint configuration. Nothing to lint. Please check your lint target pattern(s).');
73
- }
74
- // output fixes to disk, if applicable based on the options
75
- yield projectESLint.ESLint.outputFixes(lintResults);
76
- // if quiet, only show errors
77
- if (options.quiet) {
78
- console.debug('Quiet mode enabled - filtering out warnings\n');
79
- lintResults = eslint_1.ESLint.getErrorResults(lintResults);
80
- }
81
- const formatter = yield eslint.loadFormatter(options.format);
82
- let totalErrors = 0;
83
- let totalWarnings = 0;
84
- for (const result of lintResults) {
85
- if (result.errorCount || result.warningCount) {
86
- totalErrors += result.errorCount;
87
- totalWarnings += result.warningCount;
88
- }
89
- }
90
- const formattedResults = yield formatter.format(lintResults);
91
- if (options.outputFile) {
92
- const pathToOutputFile = (0, path_1.join)(context.root, options.outputFile);
93
- (0, fs_1.mkdirSync)((0, path_1.dirname)(pathToOutputFile), { recursive: true });
94
- (0, fs_1.writeFileSync)(pathToOutputFile, formattedResults);
95
- }
96
- else {
97
- console.info(formattedResults);
98
- }
99
- if (totalWarnings > 0 && printInfo) {
100
- console.warn('Lint warnings found in the listed files.\n');
101
- }
102
- if (totalErrors > 0 && printInfo) {
103
- console.error('Lint errors found in the listed files.\n');
104
- }
105
- if (totalWarnings === 0 && totalErrors === 0 && printInfo) {
106
- console.info('All files pass linting.\n');
107
- }
108
- return {
109
- success: options.force ||
110
- (totalErrors === 0 &&
111
- (options.maxWarnings === -1 || totalWarnings <= options.maxWarnings)),
112
- };
113
- });
114
- }
115
- exports.default = run;
116
- //# sourceMappingURL=lint.impl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lint.impl.js","sourceRoot":"","sources":["../../../../../../packages/linter/src/executors/eslint/lint.impl.ts"],"names":[],"mappings":"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"}