@skyux-sdk/stylelint-schematics 12.20.0

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/README.md ADDED
@@ -0,0 +1 @@
1
+ # @skyux-sdk/stylelint-schematics (Experimental)
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3
+ "schematics": {
4
+ "ng-add": {
5
+ "description": "Add @skyux-sdk/stylelint-schematics to your project.",
6
+ "factory": "./src/schematics/ng-add/ng-add.schematic",
7
+ "schema": "./src/schematics/ng-add/schema.json"
8
+ }
9
+ }
10
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "schematics": {
3
+ "noop": {
4
+ "version": "12.0.0",
5
+ "factory": "./src/schematics/migrations/noop/noop.schematic",
6
+ "description": "Update stylelint-config-skyux dependencies"
7
+ }
8
+ }
9
+ }
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@skyux-sdk/stylelint-schematics",
3
+ "version": "12.20.0",
4
+ "author": "Blackbaud, Inc.",
5
+ "description": "Stylelint schematics for SKY UX projects",
6
+ "keywords": [
7
+ "blackbaud",
8
+ "skyux"
9
+ ],
10
+ "license": "MIT",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/blackbaud/skyux.git"
14
+ },
15
+ "bugs": {
16
+ "url": "https://github.com/blackbaud/skyux/issues"
17
+ },
18
+ "homepage": "https://github.com/blackbaud/skyux#readme",
19
+ "schematics": "./collection.json",
20
+ "ng-add": {
21
+ "save": "devDependencies"
22
+ },
23
+ "ng-update": {
24
+ "packageGroupName": "@skyux-sdk/stylelint-schematics",
25
+ "migrations": "./migrations.json",
26
+ "packageGroup": {
27
+ "@skyux-sdk/stylelint-schematics": "12.20.0",
28
+ "stylelint-config-skyux": "12.20.0",
29
+ "skyux-stylelint": "12.20.0",
30
+ "stylelint": "^16.20.0",
31
+ "stylelint-config-recommended-scss": "^15.0.1"
32
+ }
33
+ },
34
+ "peerDependencies": {
35
+ "@angular/cli": "^19.2.8"
36
+ },
37
+ "dependencies": {
38
+ "jsonc-parser": "3.3.1",
39
+ "tslib": "^2.8.1"
40
+ },
41
+ "types": "./src/index.d.ts",
42
+ "main": "./src/index.js",
43
+ "type": "commonjs"
44
+ }
@@ -0,0 +1,2 @@
1
+ import type { Rule } from '@angular-devkit/schematics';
2
+ export default function (): Rule;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ function default_1() {
5
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
6
+ return () => { };
7
+ }
8
+ //# sourceMappingURL=noop.schematic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.schematic.js","sourceRoot":"","sources":["../../../../../../../../libs/sdk/stylelint-schematics/src/schematics/migrations/noop/noop.schematic.ts"],"names":[],"mappings":";;AAEA,4BAGC;AAHD;IACE,gEAAgE;IAChE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ /**
3
+ * Installs and sets up the `stylelint-config-skyux` package.
4
+ */
5
+ export default function ngAdd(): Rule;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = ngAdd;
4
+ const tslib_1 = require("tslib");
5
+ const schematics_1 = require("@angular-devkit/schematics");
6
+ const tasks_1 = require("@angular-devkit/schematics/tasks");
7
+ const dependencies_1 = require("@schematics/angular/utility/dependencies");
8
+ const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
9
+ const node_path_1 = tslib_1.__importDefault(require("node:path"));
10
+ const json_file_1 = require("../utility/json-file");
11
+ function installDependencies() {
12
+ return (tree, context) => {
13
+ const thisPackageJson = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.resolve(__dirname, '../../../package.json'), {
14
+ encoding: 'utf-8',
15
+ }));
16
+ const { version: skyuxVersion } = thisPackageJson;
17
+ const packageGroup = thisPackageJson['ng-update']['packageGroup'];
18
+ const dependencies = {
19
+ 'stylelint-config-skyux': skyuxVersion,
20
+ 'skyux-stylelint': skyuxVersion,
21
+ stylelint: packageGroup['stylelint'],
22
+ 'stylelint-config-recommended-scss': packageGroup['stylelint-config-recommended-scss'],
23
+ };
24
+ for (const [packageName, version] of Object.entries(dependencies)) {
25
+ (0, dependencies_1.addPackageJsonDependency)(tree, {
26
+ type: dependencies_1.NodeDependencyType.Dev,
27
+ name: packageName,
28
+ version,
29
+ overwrite: true,
30
+ });
31
+ }
32
+ context.addTask(new tasks_1.NodePackageInstallTask());
33
+ };
34
+ }
35
+ function configureVSCode() {
36
+ return (tree) => {
37
+ const vsCodePath = '.vscode';
38
+ const extensionsPath = '.vscode/extensions.json';
39
+ const settingsPath = '.vscode/settings.json';
40
+ const prettierExtensionName = 'stylelint.vscode-stylelint';
41
+ if (tree.getDir(vsCodePath).subfiles.length > 0) {
42
+ if (!tree.exists(extensionsPath)) {
43
+ tree.create(extensionsPath, '{}');
44
+ }
45
+ if (!tree.exists(settingsPath)) {
46
+ tree.create(settingsPath, '{}');
47
+ }
48
+ const extensions = new json_file_1.JsonFile(tree, extensionsPath);
49
+ const recommendations = (extensions.get(['recommendations']) ??
50
+ []);
51
+ if (!recommendations.includes(prettierExtensionName)) {
52
+ recommendations.push(prettierExtensionName);
53
+ }
54
+ extensions.modify(['recommendations'], recommendations);
55
+ const settings = new json_file_1.JsonFile(tree, settingsPath);
56
+ settings.modify(['stylelint.validate'], ['css', 'scss']);
57
+ }
58
+ };
59
+ }
60
+ /**
61
+ * Installs and sets up the `stylelint-config-skyux` package.
62
+ */
63
+ function ngAdd() {
64
+ return () => {
65
+ return (0, schematics_1.chain)([installDependencies(), configureVSCode()]);
66
+ };
67
+ }
68
+ //# sourceMappingURL=ng-add.schematic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-add.schematic.js","sourceRoot":"","sources":["../../../../../../../libs/sdk/stylelint-schematics/src/schematics/ng-add/ng-add.schematic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "type": "object",
4
+ "properties": {}
5
+ }
@@ -0,0 +1,15 @@
1
+ import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing';
2
+ /**
3
+ * Creates a new Angular CLI application.
4
+ */
5
+ export declare function createTestApp(runner: SchematicTestRunner, appOptions: {
6
+ setupEslint?: boolean;
7
+ projectName: string;
8
+ }): Promise<UnitTestTree>;
9
+ /**
10
+ * Create a test workspace with a library as the default project.
11
+ */
12
+ export declare function createTestLibrary(runner: SchematicTestRunner, libOptions: {
13
+ setupEslint?: boolean;
14
+ projectName: string;
15
+ }): Promise<UnitTestTree>;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTestApp = createTestApp;
4
+ exports.createTestLibrary = createTestLibrary;
5
+ const cli_1 = require("@angular/cli");
6
+ /**
7
+ * Creates a new Angular CLI application.
8
+ */
9
+ async function createTestApp(runner, appOptions) {
10
+ const tree = await runner.runExternalSchematic('@schematics/angular', 'ng-new', {
11
+ directory: '/',
12
+ name: appOptions.projectName,
13
+ routing: true,
14
+ strict: true,
15
+ style: 'scss',
16
+ version: cli_1.VERSION.major,
17
+ });
18
+ if (appOptions.setupEslint) {
19
+ await runner.runExternalSchematic('angular-eslint', 'ng-add', {}, tree);
20
+ }
21
+ return tree;
22
+ }
23
+ /**
24
+ * Create a test workspace with a library as the default project.
25
+ */
26
+ async function createTestLibrary(runner, libOptions) {
27
+ const tree = await runner.runExternalSchematic('@schematics/angular', 'ng-new', {
28
+ directory: '/',
29
+ name: `${libOptions.projectName}-workspace`,
30
+ createApplication: false,
31
+ strict: true,
32
+ version: cli_1.VERSION.major,
33
+ });
34
+ if (libOptions.setupEslint) {
35
+ await runner.runExternalSchematic('angular-eslint', 'ng-add', {}, tree);
36
+ }
37
+ await runner.runExternalSchematic('@schematics/angular', 'library', {
38
+ name: libOptions.projectName,
39
+ }, tree);
40
+ // Create a "showcase" application for library projects.
41
+ await runner.runExternalSchematic('@schematics/angular', 'application', {
42
+ name: `${libOptions.projectName}-showcase`,
43
+ }, tree);
44
+ if (libOptions.setupEslint) {
45
+ await runner.runExternalSchematic('angular-eslint', 'add-eslint-to-project', {
46
+ project: libOptions.projectName,
47
+ }, tree);
48
+ await runner.runExternalSchematic('angular-eslint', 'add-eslint-to-project', {
49
+ project: `${libOptions.projectName}-showcase`,
50
+ }, tree);
51
+ }
52
+ return tree;
53
+ }
54
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../../../../../libs/sdk/stylelint-schematics/src/schematics/testing/scaffold.ts"],"names":[],"mappings":";;AASA,sCAyBC;AAKD,8CA+DC;AAlGD,sCAAuC;AAEvC;;GAEG;AACI,KAAK,UAAU,aAAa,CACjC,MAA2B,EAC3B,UAGC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAC5C,qBAAqB,EACrB,QAAQ,EACR;QACE,SAAS,EAAE,GAAG;QACd,IAAI,EAAE,UAAU,CAAC,WAAW;QAC5B,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,aAAO,CAAC,KAAK;KACvB,CACF,CAAC;IAEF,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,MAA2B,EAC3B,UAGC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAC5C,qBAAqB,EACrB,QAAQ,EACR;QACE,SAAS,EAAE,GAAG;QACd,IAAI,EAAE,GAAG,UAAU,CAAC,WAAW,YAAY;QAC3C,iBAAiB,EAAE,KAAK;QACxB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,aAAO,CAAC,KAAK;KACvB,CACF,CAAC;IAEF,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,MAAM,CAAC,oBAAoB,CAC/B,qBAAqB,EACrB,SAAS,EACT;QACE,IAAI,EAAE,UAAU,CAAC,WAAW;KAC7B,EACD,IAAI,CACL,CAAC;IAEF,wDAAwD;IACxD,MAAM,MAAM,CAAC,oBAAoB,CAC/B,qBAAqB,EACrB,aAAa,EACb;QACE,IAAI,EAAE,GAAG,UAAU,CAAC,WAAW,WAAW;KAC3C,EACD,IAAI,CACL,CAAC;IAEF,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,oBAAoB,CAC/B,gBAAgB,EAChB,uBAAuB,EACvB;YACE,OAAO,EAAE,UAAU,CAAC,WAAW;SAChC,EACD,IAAI,CACL,CAAC;QAEF,MAAM,MAAM,CAAC,oBAAoB,CAC/B,gBAAgB,EAChB,uBAAuB,EACvB;YACE,OAAO,EAAE,GAAG,UAAU,CAAC,WAAW,WAAW;SAC9C,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The contents of this file were copied from '@schematics/angular'.
3
+ * @see https://github.com/angular/angular-cli/blob/master/packages/schematics/angular/utility/json-file.ts
4
+ */
5
+ import { JsonValue } from '@angular-devkit/core';
6
+ import { Tree } from '@angular-devkit/schematics';
7
+ export type InsertionIndex = (properties: string[]) => number;
8
+ export type JsonPath = (string | number)[];
9
+ /**
10
+ * Handles JSONC files (JSON files that include comments).
11
+ * @internal
12
+ */
13
+ export declare class JsonFile {
14
+ private readonly host;
15
+ private readonly path;
16
+ content: string;
17
+ private get JsonAst();
18
+ private _jsonAst;
19
+ constructor(host: Tree, path: string);
20
+ get(jsonPath: JsonPath): unknown;
21
+ modify(jsonPath: JsonPath, value: JsonValue | undefined, insertInOrder?: InsertionIndex | false): void;
22
+ remove(jsonPath: JsonPath): void;
23
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonFile = void 0;
4
+ const jsonc_parser_1 = require("jsonc-parser");
5
+ /* istanbul ignore next */
6
+ /**
7
+ * Handles JSONC files (JSON files that include comments).
8
+ * @internal
9
+ */
10
+ class JsonFile {
11
+ get JsonAst() {
12
+ if (this._jsonAst) {
13
+ return this._jsonAst;
14
+ }
15
+ const errors = [];
16
+ this._jsonAst = (0, jsonc_parser_1.parseTree)(this.content, errors, {
17
+ allowTrailingComma: true,
18
+ });
19
+ if (errors.length) {
20
+ const { error, offset } = errors[0];
21
+ throw new Error(`Failed to parse "${this.path}" as JSON AST Object. ${(0, jsonc_parser_1.printParseErrorCode)(error)} at location: ${offset}.`);
22
+ }
23
+ return this._jsonAst;
24
+ }
25
+ constructor(host, path) {
26
+ this.host = host;
27
+ this.path = path;
28
+ const buffer = this.host.read(this.path);
29
+ if (buffer) {
30
+ this.content = buffer.toString();
31
+ }
32
+ else {
33
+ throw new Error(`Could not read '${path}'.`);
34
+ }
35
+ }
36
+ get(jsonPath) {
37
+ const jsonAstNode = this.JsonAst;
38
+ if (!jsonAstNode) {
39
+ return undefined;
40
+ }
41
+ if (jsonPath.length === 0) {
42
+ return (0, jsonc_parser_1.getNodeValue)(jsonAstNode);
43
+ }
44
+ const node = (0, jsonc_parser_1.findNodeAtLocation)(jsonAstNode, jsonPath);
45
+ return node === undefined ? undefined : (0, jsonc_parser_1.getNodeValue)(node);
46
+ }
47
+ modify(jsonPath, value, insertInOrder) {
48
+ let getInsertionIndex;
49
+ if (insertInOrder === undefined) {
50
+ const property = jsonPath.slice(-1)[0];
51
+ getInsertionIndex = (properties) => [...properties, property].sort().findIndex((p) => p === property);
52
+ }
53
+ else if (insertInOrder !== false) {
54
+ getInsertionIndex = insertInOrder;
55
+ }
56
+ const edits = (0, jsonc_parser_1.modify)(this.content, jsonPath, value, {
57
+ getInsertionIndex,
58
+ formattingOptions: {
59
+ insertSpaces: true,
60
+ tabSize: 2,
61
+ },
62
+ });
63
+ this.content = (0, jsonc_parser_1.applyEdits)(this.content, edits);
64
+ this.host.overwrite(this.path, this.content);
65
+ this._jsonAst = undefined;
66
+ }
67
+ remove(jsonPath) {
68
+ if (this.get(jsonPath) !== undefined) {
69
+ this.modify(jsonPath, undefined);
70
+ }
71
+ }
72
+ }
73
+ exports.JsonFile = JsonFile;
74
+ //# sourceMappingURL=json-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../../../../../libs/sdk/stylelint-schematics/src/schematics/utility/json-file.ts"],"names":[],"mappings":"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"}