@angular-eslint/schematics 18.0.0-alpha.12 → 18.0.0-alpha.14
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/dist/add-eslint-to-project/index.d.ts.map +1 -1
- package/dist/add-eslint-to-project/index.js +2 -1
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +2 -1
- package/dist/devkit-imports.d.ts +7 -0
- package/dist/devkit-imports.d.ts.map +1 -1
- package/dist/devkit-imports.js +9 -0
- package/dist/library/index.d.ts.map +1 -1
- package/dist/library/index.js +2 -1
- package/dist/ng-add/index.d.ts.map +1 -1
- package/dist/ng-add/index.js +1 -11
- package/dist/utils.d.ts +8 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +42 -29
- package/package.json +6 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/add-eslint-to-project/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/add-eslint-to-project/index.ts"],"names":[],"mappings":"AAQA,UAAU,MAAM;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;;AAED,wBAsBG"}
|
|
@@ -12,7 +12,8 @@ Error: You must specify a project to add ESLint to because you have multiple pro
|
|
|
12
12
|
E.g. npx ng g @angular-eslint/schematics:add-eslint-to-project {{YOUR_PROJECT_NAME_GOES_HERE}}
|
|
13
13
|
`.trim());
|
|
14
14
|
}
|
|
15
|
+
// Create the config file first so that we can check for its existence when setting the target
|
|
16
|
+
(0, utils_1.createESLintConfigForProject)(tree, projectName, options.setParserOptionsProject ?? false);
|
|
15
17
|
// Update the lint builder and config in angular.json
|
|
16
18
|
(0, utils_1.addESLintTargetToProject)(tree, projectName, 'lint');
|
|
17
|
-
(0, utils_1.createESLintConfigForProject)(tree, projectName, options.setParserOptionsProject ?? false);
|
|
18
19
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/application/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAWtF,UAAU,MAAO,SAAQ,aAAa;IACpC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;;AAED,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/application/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAWtF,UAAU,MAAO,SAAQ,aAAa;IACpC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;;AAED,wBAqBG"}
|
|
@@ -8,7 +8,8 @@ exports.default = (0, devkit_imports_1.convertNxGenerator)(async (tree, options)
|
|
|
8
8
|
const { setParserOptionsProject, ...angularOptions } = options;
|
|
9
9
|
const applicationGenerator = (0, devkit_imports_1.wrapAngularDevkitSchematic)('@schematics/angular', 'application');
|
|
10
10
|
await applicationGenerator(tree, angularOptions);
|
|
11
|
+
// Create the config file first so that we can check for its existence when setting the target
|
|
12
|
+
(0, utils_1.createESLintConfigForProject)(tree, options.name, options.setParserOptionsProject ?? false);
|
|
11
13
|
// Update the lint builder and config in angular.json
|
|
12
14
|
(0, utils_1.addESLintTargetToProject)(tree, options.name, 'lint');
|
|
13
|
-
(0, utils_1.createESLintConfigForProject)(tree, options.name, options.setParserOptionsProject ?? false);
|
|
14
15
|
});
|
package/dist/devkit-imports.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In order to prevent the project graph cache from showing up at the root of the user's
|
|
3
|
+
* workspace, we set a custom cache directory before importing anything from `@nx/devkit`.
|
|
4
|
+
*
|
|
5
|
+
* `no-restricted-imports` eslint rule has been configured for this project to prevent
|
|
6
|
+
* accidental imports in other files. All imports should come from here to ensure consistency.
|
|
7
|
+
*/
|
|
1
8
|
export { convertNxGenerator, offsetFromRoot, readJson, writeJson, } from '@nx/devkit';
|
|
2
9
|
export type { ProjectConfiguration, Tree } from '@nx/devkit';
|
|
3
10
|
export { wrapAngularDevkitSchematic } from '@nx/devkit/ngcli-adapter';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devkit-imports.d.ts","sourceRoot":"","sources":["../src/devkit-imports.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"devkit-imports.d.ts","sourceRoot":"","sources":["../src/devkit-imports.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/devkit-imports.js
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* In order to prevent the project graph cache from showing up at the root of the user's
|
|
4
|
+
* workspace, we set a custom cache directory before importing anything from `@nx/devkit`.
|
|
5
|
+
*
|
|
6
|
+
* `no-restricted-imports` eslint rule has been configured for this project to prevent
|
|
7
|
+
* accidental imports in other files. All imports should come from here to ensure consistency.
|
|
8
|
+
*/
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
10
|
exports.wrapAngularDevkitSchematic = exports.writeJson = exports.readJson = exports.offsetFromRoot = exports.convertNxGenerator = void 0;
|
|
4
11
|
const node_path_1 = require("node:path");
|
|
5
12
|
process.env.NX_PROJECT_GRAPH_CACHE_DIRECTORY = (0, node_path_1.join)(__dirname, '..', '.nx-cache');
|
|
13
|
+
/* eslint-disable no-restricted-imports */
|
|
6
14
|
var devkit_1 = require("@nx/devkit");
|
|
7
15
|
Object.defineProperty(exports, "convertNxGenerator", { enumerable: true, get: function () { return devkit_1.convertNxGenerator; } });
|
|
8
16
|
Object.defineProperty(exports, "offsetFromRoot", { enumerable: true, get: function () { return devkit_1.offsetFromRoot; } });
|
|
@@ -10,3 +18,4 @@ Object.defineProperty(exports, "readJson", { enumerable: true, get: function ()
|
|
|
10
18
|
Object.defineProperty(exports, "writeJson", { enumerable: true, get: function () { return devkit_1.writeJson; } });
|
|
11
19
|
var ngcli_adapter_1 = require("@nx/devkit/ngcli-adapter");
|
|
12
20
|
Object.defineProperty(exports, "wrapAngularDevkitSchematic", { enumerable: true, get: function () { return ngcli_adapter_1.wrapAngularDevkitSchematic; } });
|
|
21
|
+
/* eslint-enable no-restricted-imports */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/library/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAWlF,UAAU,MAAO,SAAQ,aAAa;IACpC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;;AAED,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/library/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAWlF,UAAU,MAAO,SAAQ,aAAa;IACpC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;;AAED,wBAqBG"}
|
package/dist/library/index.js
CHANGED
|
@@ -8,7 +8,8 @@ exports.default = (0, devkit_imports_1.convertNxGenerator)(async (tree, options)
|
|
|
8
8
|
const { setParserOptionsProject, ...angularOptions } = options;
|
|
9
9
|
const libraryGenerator = (0, devkit_imports_1.wrapAngularDevkitSchematic)('@schematics/angular', 'library');
|
|
10
10
|
await libraryGenerator(tree, angularOptions);
|
|
11
|
+
// Create the config file first so that we can check for its existence when setting the target
|
|
12
|
+
(0, utils_1.createESLintConfigForProject)(tree, options.name, options.setParserOptionsProject ?? false);
|
|
11
13
|
// Update the lint builder and config in angular.json
|
|
12
14
|
(0, utils_1.addESLintTargetToProject)(tree, options.name, 'lint');
|
|
13
|
-
(0, utils_1.createESLintConfigForProject)(tree, options.name, options.setParserOptionsProject ?? false);
|
|
14
15
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ng-add/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA0B,MAAM,4BAA4B,CAAC;AAc/E,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAChD,eAAO,MAAM,kCAAkC,WAAW,CAAC;AA+K3D,MAAM,CAAC,OAAO,cAAc,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ng-add/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA0B,MAAM,4BAA4B,CAAC;AAc/E,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAChD,eAAO,MAAM,kCAAkC,WAAW,CAAC;AA+K3D,MAAM,CAAC,OAAO,cAAc,IAAI,CAa/B"}
|
package/dist/ng-add/index.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.FIXED_TYPESCRIPT_ESLINT_V7_VERSION = exports.FIXED_ESLINT_V8_VERSION = void 0;
|
|
7
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
8
5
|
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
|
9
|
-
const semver_1 = __importDefault(require("semver"));
|
|
10
6
|
const utils_1 = require("../utils");
|
|
11
7
|
exports.FIXED_ESLINT_V8_VERSION = '8.57.0';
|
|
12
8
|
exports.FIXED_TYPESCRIPT_ESLINT_V7_VERSION = '7.11.0';
|
|
@@ -139,13 +135,7 @@ function default_1() {
|
|
|
139
135
|
return (host, context) => {
|
|
140
136
|
const workspacePackageJSON = host.read('package.json').toString('utf-8');
|
|
141
137
|
const json = JSON.parse(workspacePackageJSON);
|
|
142
|
-
|
|
143
|
-
* Until eslint v9, typescript-eslint v8 and flat config stabilize completely, allow the user to set a previous version of eslint
|
|
144
|
-
* as a signal for what kind of config and dependencies to set up.
|
|
145
|
-
*/
|
|
146
|
-
json.devDependencies = json.devDependencies || {};
|
|
147
|
-
const existingESLintVersion = json.devDependencies['eslint'];
|
|
148
|
-
const useFlatConfig = !(existingESLintVersion && semver_1.default.major(existingESLintVersion) < 9);
|
|
138
|
+
const useFlatConfig = (0, utils_1.shouldUseFlatConfig)(host, json);
|
|
149
139
|
return (0, schematics_1.chain)([
|
|
150
140
|
addAngularESLintPackages(json, useFlatConfig),
|
|
151
141
|
applyESLintConfigIfSingleProjectWithNoExistingTSLint(useFlatConfig),
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Path } from '@angular-devkit/core';
|
|
2
2
|
import type { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';
|
|
3
|
-
import { Tree as NxTree } from './devkit-imports';
|
|
3
|
+
import type { Tree as NxTree } from './devkit-imports';
|
|
4
4
|
/**
|
|
5
5
|
* This method is specifically for reading JSON files in a Tree
|
|
6
6
|
* @param host The host tree
|
|
@@ -66,5 +66,12 @@ export declare function determineTargetProjectName(tree: NxTree, maybeProject?:
|
|
|
66
66
|
*/
|
|
67
67
|
export declare function updateSchematicCollections(angularJson: Record<string, any>): Record<string, any>;
|
|
68
68
|
export declare function updateSchematicDefaults(angularJson: Record<string, any>, schematicFullName: string, defaultValues: Record<string, unknown>): Record<string, any>;
|
|
69
|
+
/**
|
|
70
|
+
* In order to support both flat config and eslintrc we need to dynamically figure out
|
|
71
|
+
* what the user should be using based on:
|
|
72
|
+
* - their existing files
|
|
73
|
+
* - their eslint version
|
|
74
|
+
*/
|
|
75
|
+
export declare function shouldUseFlatConfig(tree: NxTree | Tree, existingJson?: Record<string, unknown>): boolean;
|
|
69
76
|
export {};
|
|
70
77
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAM/E,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAM/E,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAwB,MAAM,kBAAkB,CAAC;AAK7E;;;;;GAKG;AAEH,wBAAgB,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAcnE;AAED;;;;;GAKG;AAEH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAC7C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,CAAC,GAClD,IAAI,CAYN;AAED,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE3E,wBAAgB,2BAA2B,CACzC,aAAa,EAAE;IAAE,SAAS,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,aAAa,CAAA;CAAE,GACzE,aAAa,GAAG,IAAI,CAYtB;AAqBD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,QAAQ,GAAG,MAAM,QAqC9B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,EAC3E,GAAG,GAAE,IAAoB,GACxB,IAAI,CA8BN;AA0BD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;EAyC3D;AAGD,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,MAAM,CA4CR;AAiGD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,uBAAuB,EAAE,OAAO,QAsDjC;AAgBD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAUf;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,uBAS1E;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,iBAAiB,EAAE,MAAM,EACzB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,uBAUvC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CA4BT"}
|
package/dist/utils.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.updateSchematicDefaults = exports.updateSchematicCollections = exports.determineTargetProjectName = exports.sortObjectByKeys = exports.createESLintConfigForProject = exports.createStringifiedRootESLintConfig = exports.createRootESLintConfig = exports.visitNotIgnoredFiles = exports.addESLintTargetToProject = exports.getTargetsConfigFromProject = exports.updateJsonInTree = exports.readJsonInTree = void 0;
|
|
6
|
+
exports.shouldUseFlatConfig = exports.updateSchematicDefaults = exports.updateSchematicCollections = exports.determineTargetProjectName = exports.sortObjectByKeys = exports.createESLintConfigForProject = exports.createStringifiedRootESLintConfig = exports.createRootESLintConfig = exports.visitNotIgnoredFiles = exports.addESLintTargetToProject = exports.getTargetsConfigFromProject = exports.updateJsonInTree = exports.readJsonInTree = void 0;
|
|
7
7
|
const core_1 = require("@angular-devkit/core");
|
|
8
8
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
9
9
|
const ignore_1 = __importDefault(require("ignore"));
|
|
@@ -96,7 +96,10 @@ function addESLintTargetToProject(tree, projectName, targetName) {
|
|
|
96
96
|
};
|
|
97
97
|
let eslintConfig;
|
|
98
98
|
if (existingProjectConfig.root !== '') {
|
|
99
|
-
|
|
99
|
+
const flatConfigPath = (0, core_1.join)(existingProjectConfig.root, 'eslint.config.js');
|
|
100
|
+
if (tree.exists(flatConfigPath)) {
|
|
101
|
+
eslintConfig = flatConfigPath;
|
|
102
|
+
}
|
|
100
103
|
}
|
|
101
104
|
eslintTargetConfig.options.eslintConfig = eslintConfig;
|
|
102
105
|
existingProjectConfig.architect = existingProjectConfig.architect || {};
|
|
@@ -321,35 +324,9 @@ function createESLintConfigForProject(tree, projectName, setParserOptionsProject
|
|
|
321
324
|
const targets = existingProjectConfig.architect || existingProjectConfig.targets;
|
|
322
325
|
const { root: projectRoot, projectType, prefix } = existingProjectConfig;
|
|
323
326
|
const hasE2e = !!targets?.e2e;
|
|
324
|
-
|
|
325
|
-
* In order to support both flat config and eslintrc we need to dynamically figure out
|
|
326
|
-
* what the user should be using based on:
|
|
327
|
-
* - their existing files
|
|
328
|
-
* - their eslint version
|
|
329
|
-
*/
|
|
330
|
-
let useFlatConfig = true;
|
|
327
|
+
const useFlatConfig = shouldUseFlatConfig(tree);
|
|
331
328
|
const alreadyHasRootFlatConfig = tree.exists('eslint.config.js');
|
|
332
329
|
const alreadyHasRootESLintRC = tree.exists('.eslintrc.json');
|
|
333
|
-
if (alreadyHasRootFlatConfig) {
|
|
334
|
-
useFlatConfig = true;
|
|
335
|
-
}
|
|
336
|
-
else if (alreadyHasRootESLintRC) {
|
|
337
|
-
useFlatConfig = false;
|
|
338
|
-
}
|
|
339
|
-
else {
|
|
340
|
-
// If no existing config file, check if they are using at least eslint 9 (when flat config became the default)
|
|
341
|
-
let eslintVersion;
|
|
342
|
-
try {
|
|
343
|
-
eslintVersion = JSON.parse(tree.read('package.json', 'utf-8'))
|
|
344
|
-
.devDependencies?.['eslint'];
|
|
345
|
-
// eslint-disable-next-line no-empty
|
|
346
|
-
}
|
|
347
|
-
catch { }
|
|
348
|
-
if (eslintVersion) {
|
|
349
|
-
const v = semver_1.default.minVersion(eslintVersion);
|
|
350
|
-
useFlatConfig = semver_1.default.gte(v.raw, '9.0.0');
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
330
|
/**
|
|
354
331
|
* If the root is an empty string it must be the initial project created at the
|
|
355
332
|
* root by the Angular CLI's workspace schematic
|
|
@@ -428,3 +405,39 @@ function updateSchematicDefaults(angularJson, schematicFullName, defaultValues)
|
|
|
428
405
|
return angularJson;
|
|
429
406
|
}
|
|
430
407
|
exports.updateSchematicDefaults = updateSchematicDefaults;
|
|
408
|
+
/**
|
|
409
|
+
* In order to support both flat config and eslintrc we need to dynamically figure out
|
|
410
|
+
* what the user should be using based on:
|
|
411
|
+
* - their existing files
|
|
412
|
+
* - their eslint version
|
|
413
|
+
*/
|
|
414
|
+
function shouldUseFlatConfig(tree, existingJson) {
|
|
415
|
+
let useFlatConfig = true;
|
|
416
|
+
try {
|
|
417
|
+
const alreadyHasRootFlatConfig = tree.exists('eslint.config.js');
|
|
418
|
+
const alreadyHasRootESLintRC = tree.exists('.eslintrc.json');
|
|
419
|
+
if (alreadyHasRootFlatConfig) {
|
|
420
|
+
useFlatConfig = true;
|
|
421
|
+
}
|
|
422
|
+
else if (alreadyHasRootESLintRC) {
|
|
423
|
+
useFlatConfig = false;
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
const json = existingJson ??
|
|
427
|
+
JSON.parse(tree.read('package.json').toString('utf-8'));
|
|
428
|
+
json.devDependencies = json.devDependencies || {};
|
|
429
|
+
const existingESLintVersion = json.devDependencies['eslint'];
|
|
430
|
+
if (existingESLintVersion) {
|
|
431
|
+
const v = semver_1.default.minVersion(existingESLintVersion);
|
|
432
|
+
if (v) {
|
|
433
|
+
useFlatConfig = semver_1.default.gte(v.raw, '9.0.0');
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
return useFlatConfig;
|
|
438
|
+
}
|
|
439
|
+
catch {
|
|
440
|
+
return useFlatConfig;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
exports.shouldUseFlatConfig = shouldUseFlatConfig;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular-eslint/schematics",
|
|
3
|
-
"version": "18.0.0-alpha.
|
|
3
|
+
"version": "18.0.0-alpha.14",
|
|
4
4
|
"description": "Angular Schematics for angular-eslint",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,17 +34,16 @@
|
|
|
34
34
|
"save": false
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@angular-eslint/eslint-plugin": "18.0.0-alpha.
|
|
38
|
-
"@angular-eslint/eslint-plugin-template": "18.0.0-alpha.
|
|
37
|
+
"@angular-eslint/eslint-plugin": "18.0.0-alpha.14",
|
|
38
|
+
"@angular-eslint/eslint-plugin-template": "18.0.0-alpha.14",
|
|
39
39
|
"@nx/devkit": "^19.0.6",
|
|
40
40
|
"ignore": "5.3.1",
|
|
41
41
|
"nx": "^19.0.6",
|
|
42
|
-
"
|
|
43
|
-
"
|
|
42
|
+
"semver": "7.6.2",
|
|
43
|
+
"strip-json-comments": "3.1.1"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@
|
|
47
|
-
"@typescript-eslint/utils": "8.0.0-alpha.17",
|
|
46
|
+
"@typescript-eslint/utils": "8.0.0-alpha.20",
|
|
48
47
|
"eslint": "9.3.0"
|
|
49
48
|
},
|
|
50
49
|
"peerDependencies": {
|