@skyux-sdk/eslint-schematics 12.11.3 → 12.12.1
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/migrations.json +1 -1
- package/package.json +7 -4
- package/src/schematics/ng-add/ng-add.schematic.d.ts +2 -3
- package/src/schematics/ng-add/ng-add.schematic.js +29 -118
- package/src/schematics/ng-add/ng-add.schematic.js.map +1 -1
- package/src/schematics/ng-add/schema.json +1 -6
- package/src/schematics/utility/json-file.js.map +1 -1
- package/src/schematics/ng-add/schema.d.ts +0 -3
- package/src/schematics/ng-add/schema.js +0 -3
- package/src/schematics/ng-add/schema.js.map +0 -1
package/migrations.json
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@skyux-sdk/eslint-schematics",
|
3
|
-
"version": "12.
|
3
|
+
"version": "12.12.1",
|
4
4
|
"author": "Blackbaud, Inc.",
|
5
5
|
"description": "SKY UX ESLint schematics for Angular CLI projects",
|
6
6
|
"keywords": [
|
@@ -24,16 +24,19 @@
|
|
24
24
|
"packageGroupName": "@skyux-sdk/eslint-schematics",
|
25
25
|
"migrations": "./migrations.json",
|
26
26
|
"packageGroup": {
|
27
|
-
"
|
27
|
+
"@eslint/js": "^9.26.0",
|
28
|
+
"@skyux-sdk/eslint-schematics": "12.12.1",
|
29
|
+
"eslint-config-skyux": "12.12.1",
|
30
|
+
"eslint": "^9.24.0",
|
31
|
+
"skyux-eslint": "12.12.1",
|
32
|
+
"typescript-eslint": "^8.32.0"
|
28
33
|
}
|
29
34
|
},
|
30
35
|
"peerDependencies": {
|
31
36
|
"@angular/cli": "^19.2.8"
|
32
37
|
},
|
33
38
|
"dependencies": {
|
34
|
-
"@inquirer/prompts": "7.3.2",
|
35
39
|
"jsonc-parser": "3.3.1",
|
36
|
-
"semver": "7.7.1",
|
37
40
|
"tslib": "^2.8.1"
|
38
41
|
},
|
39
42
|
"types": "./src/index.d.ts",
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { Rule } from '@angular-devkit/schematics';
|
2
|
-
import { SkyuxEslintAddOptions } from './schema';
|
3
2
|
/**
|
4
|
-
*
|
3
|
+
* Installs and sets up the `eslint-config-skyux` package.
|
5
4
|
*/
|
6
|
-
export default function ngAdd(
|
5
|
+
export default function ngAdd(): Rule;
|
@@ -3,131 +3,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = ngAdd;
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const schematics_1 = require("@angular-devkit/schematics");
|
6
|
+
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
6
7
|
const cli_1 = require("@angular/cli");
|
7
|
-
const prompt = tslib_1.__importStar(require("@inquirer/prompts"));
|
8
8
|
const dependencies_1 = require("@schematics/angular/utility/dependencies");
|
9
|
-
const
|
10
|
-
const
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
const
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
}
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
'See: https://github.com/angular-eslint/angular-eslint#quick-start');
|
30
|
-
}
|
31
|
-
const eslintDependency = (0, dependencies_1.getPackageJsonDependency)(tree, 'eslint');
|
32
|
-
const eslintMajorVersion = eslintDependency && semver_1.default.minVersion(eslintDependency.version)?.major;
|
33
|
-
if (eslintMajorVersion && eslintMajorVersion < 9) {
|
34
|
-
throw new Error("The 'skyux-eslint' package requires eslint version 9.");
|
35
|
-
}
|
36
|
-
let configFile;
|
37
|
-
tree.getDir('/').visit((filePath) => {
|
38
|
-
if (configFile) {
|
39
|
-
return;
|
40
|
-
}
|
41
|
-
if (filePath.match(/^\/\.eslintrc/)) {
|
42
|
-
throw new Error("The 'skyux-eslint' package does not support ESLint's legacy config. " +
|
43
|
-
'Migrate to ESLint\'s "flat" config and try the command again.');
|
44
|
-
}
|
45
|
-
if (filePath.match(/^\/eslint\.config\.(js|mjs|cjs)$/)) {
|
46
|
-
configFile = filePath;
|
47
|
-
}
|
48
|
-
});
|
49
|
-
if (!configFile) {
|
50
|
-
throw new Error('A compatible ESLint config file could not be found.');
|
51
|
-
}
|
52
|
-
const isEsm = tree.readText(configFile).includes('export default ');
|
53
|
-
return { configFile, isEsm };
|
54
|
-
}
|
55
|
-
function modifyTypeScriptEslintRulesets(options) {
|
56
|
-
return (tree) => {
|
57
|
-
if (options.ruleset === 'strict-type-checked') {
|
58
|
-
const contents = tree.readText('/eslint.config.js');
|
59
|
-
// A new Angular CLI project installs "recommended" and "stylistic"
|
60
|
-
// typescript-eslint configurations, but we want consumers to use the
|
61
|
-
// type-checked rules.
|
62
|
-
const modified = contents
|
63
|
-
.replaceAll('tseslint.configs.recommended,', 'tseslint.configs.recommendedTypeChecked,')
|
64
|
-
.replaceAll('tseslint.configs.stylistic,', 'tseslint.configs.stylisticTypeChecked,');
|
65
|
-
if (contents !== modified) {
|
66
|
-
tree.overwrite('/eslint.config.js', modified);
|
67
|
-
}
|
68
|
-
}
|
9
|
+
const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
|
10
|
+
const node_path_1 = tslib_1.__importDefault(require("node:path"));
|
11
|
+
function installDependencies() {
|
12
|
+
return (tree, context) => {
|
13
|
+
// Get the currently installed version of SKY UX.
|
14
|
+
const { version: skyuxVersion } = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.resolve(__dirname, '../../../package.json'), {
|
15
|
+
encoding: 'utf-8',
|
16
|
+
}));
|
17
|
+
const dependencies = {
|
18
|
+
'skyux-eslint': skyuxVersion,
|
19
|
+
};
|
20
|
+
for (const [packageName, version] of Object.entries(dependencies)) {
|
21
|
+
(0, dependencies_1.addPackageJsonDependency)(tree, {
|
22
|
+
type: dependencies_1.NodeDependencyType.Dev,
|
23
|
+
name: packageName,
|
24
|
+
version: `^${version}`,
|
25
|
+
overwrite: true,
|
26
|
+
});
|
27
|
+
}
|
28
|
+
context.addTask(new tasks_1.NodePackageInstallTask());
|
69
29
|
};
|
70
30
|
}
|
71
|
-
function modifyTsConfig(options) {
|
72
|
-
return (tree) => {
|
73
|
-
if (options.ruleset === 'strict-type-checked') {
|
74
|
-
const tsconfig = new json_file_1.JsonFile(tree, '/tsconfig.json');
|
75
|
-
// Strict null checks are needed for the '@typescript/eslint:prefer-nullish-coalescing' rule.
|
76
|
-
// The `strict` option also sets `strictNullChecks` so we can abort if it's set to true.
|
77
|
-
if (tsconfig.get(['compilerOptions', 'strict']) !== true) {
|
78
|
-
tsconfig.modify(['compilerOptions', 'strictNullChecks'], true);
|
79
|
-
}
|
80
|
-
}
|
81
|
-
};
|
82
|
-
}
|
83
|
-
async function promptMissingOptions(options) {
|
84
|
-
const settings = {
|
85
|
-
ruleset: options.ruleset ?? 'recommended',
|
86
|
-
};
|
87
|
-
if (options.ruleset === undefined) {
|
88
|
-
settings.ruleset = await prompt.select({
|
89
|
-
message: 'Which ruleset would you like to install? Choose "recommended" to ' +
|
90
|
-
'install recommended SKY UX rules. Choose "strict-type-checked" to ' +
|
91
|
-
'install the recommended rules, and additional best-practice rules.',
|
92
|
-
choices: ['recommended', 'strict-type-checked'],
|
93
|
-
});
|
94
|
-
}
|
95
|
-
return settings;
|
96
|
-
}
|
97
31
|
/**
|
98
|
-
*
|
32
|
+
* Installs and sets up the `eslint-config-skyux` package.
|
99
33
|
*/
|
100
|
-
function ngAdd(
|
101
|
-
return
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
? 'import skyux from "skyux-eslint";\n'
|
107
|
-
: 'const skyux = require("skyux-eslint");\n';
|
108
|
-
if (contents.includes(importStatement)) {
|
109
|
-
return;
|
110
|
-
}
|
111
|
-
const recorder = tree.beginUpdate(configFile);
|
112
|
-
const exportsRegexp = isEsm ? /\nexport default / : /\nmodule\.exports/;
|
113
|
-
const exportsMatch = exportsRegexp.exec(contents);
|
114
|
-
if (exportsMatch) {
|
115
|
-
recorder.insertLeft(exportsMatch.index, importStatement);
|
34
|
+
function ngAdd() {
|
35
|
+
return (tree) => {
|
36
|
+
if (!(0, dependencies_1.getPackageJsonDependency)(tree, 'angular-eslint')) {
|
37
|
+
throw new Error("The package 'angular-eslint' is not installed. " +
|
38
|
+
`Run 'ng add angular-eslint@${cli_1.VERSION.major}' and try this command again.\n` +
|
39
|
+
'See: https://github.com/angular-eslint/angular-eslint#quick-start');
|
116
40
|
}
|
117
|
-
|
118
|
-
? ['skyux.configs.templateRecommended', 'skyux.configs.tsRecommended']
|
119
|
-
: [
|
120
|
-
'skyux.configs.templateRecommended',
|
121
|
-
'skyux.configs.tsStrictTypeChecked',
|
122
|
-
];
|
123
|
-
contents.match(ESLINT_CONFIG_EXTENDS_REGEXP)?.forEach((element) => {
|
124
|
-
recorder.insertRight(contents.indexOf(element) + element.length, `${needsComma(element) ? ',' : ''}${' '.repeat(2)}...${statements.pop()},\n${' '.repeat(4)}`);
|
125
|
-
});
|
126
|
-
tree.commitUpdate(recorder);
|
127
|
-
return (0, schematics_1.chain)([
|
128
|
-
modifyTsConfig(settings),
|
129
|
-
modifyTypeScriptEslintRulesets(settings),
|
130
|
-
]);
|
41
|
+
return (0, schematics_1.chain)([installDependencies()]);
|
131
42
|
};
|
132
43
|
}
|
133
44
|
//# sourceMappingURL=ng-add.schematic.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ng-add.schematic.js","sourceRoot":"","sources":["../../../../../../../libs/sdk/eslint-schematics/src/schematics/ng-add/ng-add.schematic.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"ng-add.schematic.js","sourceRoot":"","sources":["../../../../../../../libs/sdk/eslint-schematics/src/schematics/ng-add/ng-add.schematic.ts"],"names":[],"mappings":";;AAyCA,wBAYC;;AArDD,2DAAyD;AACzD,4DAA0E;AAC1E,sCAAuC;AACvC,2EAIkD;AAElD,8DAAyB;AACzB,kEAA6B;AAE7B,SAAS,mBAAmB;IAC1B,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACvB,iDAAiD;QACjD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAC1C,iBAAE,CAAC,YAAY,CAAC,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC,EAAE;YAChE,QAAQ,EAAE,OAAO;SAClB,CAAC,CACH,CAAC;QAEF,MAAM,YAAY,GAA2B;YAC3C,cAAc,EAAE,YAAY;SAC7B,CAAC;QAEF,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAClE,IAAA,uCAAwB,EAAC,IAAI,EAAE;gBAC7B,IAAI,EAAE,iCAAkB,CAAC,GAAG;gBAC5B,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,IAAI,OAAO,EAAE;gBACtB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAwB,KAAK;IAC3B,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,IAAI,CAAC,IAAA,uCAAwB,EAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,iDAAiD;gBAC/C,8BAA8B,aAAO,CAAC,KAAK,iCAAiC;gBAC5E,mEAAmE,CACtE,CAAC;QACJ,CAAC;QAED,OAAO,IAAA,kBAAK,EAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC;AACJ,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../../../../../libs/sdk/eslint-schematics/src/schematics/utility/json-file.ts"],"names":[],"mappings":";;;AAOA,+CASsB;AAKtB,0BAA0B;AAC1B;;;GAGG;AACH,MAAa,QAAQ;IAGnB,IAAY,OAAO;QACjB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAA,wBAAS,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;YAC9C,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,oBACE,IAAI,CAAC,IACP,yBAAyB,IAAA,kCAAmB,EAC1C,KAAK,CACN,iBAAiB,MAAM,GAAG,CAC5B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAID,YACmB,IAAU,EACV,IAAY;QADZ,SAAI,GAAJ,IAAI,CAAM;QACV,SAAI,GAAJ,IAAI,CAAQ;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEM,GAAG,CAAC,QAAkB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAA,2BAAY,EAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,iCAAkB,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEvD,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,2BAAY,EAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAEM,MAAM,CACX,QAAkB,EAClB,KAA4B,EAC5B,aAAsC;QAEtC,IAAI,iBAA6C,CAAC;QAClD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,iBAAiB,GAAG,CAAC,UAAU,
|
1
|
+
{"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../../../../../libs/sdk/eslint-schematics/src/schematics/utility/json-file.ts"],"names":[],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../../../libs/sdk/eslint-schematics/src/schematics/ng-add/schema.ts"],"names":[],"mappings":""}
|