ngx-theme-stack 2.1.1 → 3.2.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.
@@ -1,55 +1,190 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.patchAppConfig = patchAppConfig;
13
+ const utility_1 = require("@schematics/angular/utility");
14
+ const ts = require("typescript");
4
15
  /**
5
- * Attempts to automatically locate and update the application configuration files.
6
- * It searches for standard Angular file paths relative to the project's source root.
7
- *
8
- * @param tree The virtual file tree of the project.
9
- * @param context The schematic's execution context.
10
- * @param sourceRoot The source root for the project (e.g. 'projects/demo-ngx-theme-stack/src').
11
- * @param provideCall The pre-formatted code string for provideThemeStack().
16
+ * Patches the application configuration to include or update the theme stack provider.
17
+ * Uses a hybrid approach:
18
+ * 1. Attempts the official 'addRootProvider' for standard standalone apps.
19
+ * 2. If it fails or if the provider already exists, it uses a smart AST walker
20
+ * to either inject or UPDATE the existing configuration.
12
21
  */
13
- function patchAppConfig(tree, context, sourceRoot, provideCall) {
14
- const candidates = [`${sourceRoot}/app/app.config.ts`, `${sourceRoot}/main.ts`, `${sourceRoot}/app/app.module.ts`].map(p => p.startsWith('/') ? p.slice(1) : p);
15
- for (const filePath of candidates) {
16
- if (!tree.exists(filePath))
17
- continue;
18
- const content = tree.readText(filePath);
19
- let updated = content;
20
- if (updated.includes('provideThemeStack')) {
21
- updated = updated.replace(/provideThemeStack\s*\([\s\S]*?\)/, provideCall);
22
- tree.overwrite(filePath, updated);
23
- context.logger.info(`✔ Updated provideThemeStack configuration in ${filePath}`);
22
+ function patchAppConfig(tree, context, projectSourceRoot, provideCall, projectName) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ var _a, _b;
25
+ const mainPath = `${projectSourceRoot}/main.ts`.replace(/^\//, '');
26
+ const appConfigPath = `${projectSourceRoot}/app/app.config.ts`.replace(/^\//, '');
27
+ const startFile = tree.exists(appConfigPath) ? appConfigPath : tree.exists(mainPath) ? mainPath : null;
28
+ if (!startFile) {
29
+ context.logger.warn('⚠ Could not find app.config.ts or main.ts. Please add provideThemeStack() manually.');
24
30
  return;
25
31
  }
26
- // Add import if missing
27
- if (!updated.includes("from 'ngx-theme-stack'")) {
28
- const lastImport = updated.lastIndexOf('import ');
29
- const eol = updated.indexOf('\n', lastImport);
30
- updated =
31
- updated.slice(0, eol + 1) +
32
- `import { provideThemeStack } from 'ngx-theme-stack';\n` +
33
- updated.slice(eol + 1);
34
- }
35
- // Inject into providers array
36
- if (updated.includes('providers:')) {
37
- updated = updated.replace(/providers:\s*\[([\s\S]*?)\]/, (_m, inner) => {
38
- const trimmed = inner.trimEnd();
39
- const sep = trimmed.length > 0 && !trimmed.endsWith(',') ? ',\n ' : '\n ';
40
- return `providers: [${trimmed}${sep}${provideCall}\n ]`;
41
- });
42
- }
43
- else if (updated.includes('bootstrapApplication')) {
44
- updated = updated.replace(/bootstrapApplication\s*\(\s*([^,)]+)\s*\)/, `bootstrapApplication($1, {\n providers: [\n ${provideCall}\n ]\n})`);
45
- }
46
- tree.overwrite(filePath, updated);
47
- context.logger.info(`✔ Added ${provideCall} to ${filePath}`);
48
- return;
32
+ // Check if already present to decide between "Inject" or "Update"
33
+ const content = ((_a = tree.read(startFile)) === null || _a === void 0 ? void 0 : _a.toString()) || '';
34
+ const alreadyHasProvider = content.includes('provideThemeStack');
35
+ // ── Strategy 1: Standard addRootProvider (Only if NOT already present) ─────
36
+ if (projectName && !alreadyHasProvider) {
37
+ try {
38
+ const rule = (0, utility_1.addRootProvider)(projectName, ({ code, external }) => code `${external('provideThemeStack', 'ngx-theme-stack')}(${provideCall.replace(/^provideThemeStack\(/, '').replace(/\)$/, '')})`);
39
+ yield Promise.resolve(rule(tree, context));
40
+ // Re-read content to see if it worked
41
+ const updatedContent = ((_b = tree.read(startFile)) === null || _b === void 0 ? void 0 : _b.toString()) || '';
42
+ if (updatedContent.includes('provideThemeStack'))
43
+ return;
44
+ }
45
+ catch (e) {
46
+ context.logger.debug(`Standard addRootProvider failed: ${String(e)}`);
47
+ }
48
+ }
49
+ // ── Strategy 2: Smart AST Patching / Updating ─────────────────────────────
50
+ // This will handle both "Delegated Providers" and "Updates to existing config"
51
+ if (yield applySmartPatch(tree, context, startFile, provideCall)) {
52
+ return;
53
+ }
54
+ context.logger.warn(`⚠ Could not automatically inject or update provider in ${startFile}.`);
55
+ });
56
+ }
57
+ /**
58
+ * Recursively follows identifiers to find where the providers array is defined
59
+ * or where provideThemeStack is already called.
60
+ */
61
+ function applySmartPatch(tree_1, context_1, filePath_1, provideCall_1) {
62
+ return __awaiter(this, arguments, void 0, function* (tree, context, filePath, provideCall, visitedFiles = new Set()) {
63
+ if (visitedFiles.has(filePath))
64
+ return false;
65
+ visitedFiles.add(filePath);
66
+ const buffer = tree.read(filePath);
67
+ if (!buffer)
68
+ return false;
69
+ const content = buffer.toString();
70
+ const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
71
+ // A. UPDATE: If provideThemeStack is already here, replace it.
72
+ const existingCall = findProvideThemeStackCall(sourceFile);
73
+ if (existingCall) {
74
+ const updated = content.slice(0, existingCall.getStart()) + provideCall + content.slice(existingCall.getEnd());
75
+ tree.overwrite(filePath, updated);
76
+ return true;
77
+ }
78
+ // B. INJECT: Look for a providers array literal: providers: [ ... ]
79
+ const arrayLiteral = findProvidersArrayLiteral(sourceFile);
80
+ if (arrayLiteral) {
81
+ insertIntoArray(tree, filePath, arrayLiteral, provideCall);
82
+ ensureImport(tree, filePath, 'provideThemeStack', 'ngx-theme-stack');
83
+ return true;
84
+ }
85
+ // C. DELEGATION: Look for a delegated provider: providers: SOME_CONSTANT
86
+ const delegatedIdentifier = findProvidersIdentifier(sourceFile);
87
+ if (delegatedIdentifier) {
88
+ const importPath = findImportPathForIdentifier(sourceFile, delegatedIdentifier);
89
+ if (importPath) {
90
+ const dir = filePath.substring(0, filePath.lastIndexOf('/'));
91
+ let resolvedPath = `${dir}/${importPath}.ts`.replace(/\/\/+/g, '/').replace(/\.ts\.ts$/, '.ts');
92
+ if (!tree.exists(resolvedPath)) {
93
+ resolvedPath = `${dir}/${importPath}/index.ts`.replace(/\/\/+/g, '/');
94
+ }
95
+ if (tree.exists(resolvedPath)) {
96
+ return applySmartPatch(tree, context, resolvedPath, provideCall, visitedFiles);
97
+ }
98
+ }
99
+ else {
100
+ const variableDeclaration = findVariableDeclaration(sourceFile, delegatedIdentifier);
101
+ if (variableDeclaration && variableDeclaration.initializer && ts.isArrayLiteralExpression(variableDeclaration.initializer)) {
102
+ insertIntoArray(tree, filePath, variableDeclaration.initializer, provideCall);
103
+ ensureImport(tree, filePath, 'provideThemeStack', 'ngx-theme-stack');
104
+ return true;
105
+ }
106
+ }
107
+ }
108
+ return false;
109
+ });
110
+ }
111
+ function findProvideThemeStackCall(node) {
112
+ let result = null;
113
+ function visit(n) {
114
+ if (ts.isCallExpression(n) && ts.isIdentifier(n.expression) && n.expression.text === 'provideThemeStack') {
115
+ result = n;
116
+ }
117
+ if (!result)
118
+ ts.forEachChild(n, visit);
49
119
  }
50
- context.logger.warn(`⚠ Could not find app.config.ts / main.ts / app.module.ts.\n` +
51
- ` Add manually:\n\n` +
52
- ` import { provideThemeStack } from 'ngx-theme-stack';\n\n` +
53
- ` providers: [ ${provideCall} ]`);
120
+ visit(node);
121
+ return result;
122
+ }
123
+ function findProvidersArrayLiteral(node) {
124
+ let result = null;
125
+ function visit(n) {
126
+ if (ts.isPropertyAssignment(n) && ts.isIdentifier(n.name) && n.name.text === 'providers') {
127
+ if (ts.isArrayLiteralExpression(n.initializer)) {
128
+ result = n.initializer;
129
+ }
130
+ }
131
+ if (!result)
132
+ ts.forEachChild(n, visit);
133
+ }
134
+ visit(node);
135
+ return result;
136
+ }
137
+ function findProvidersIdentifier(node) {
138
+ let result = null;
139
+ function visit(n) {
140
+ if (ts.isPropertyAssignment(n) && ts.isIdentifier(n.name) && n.name.text === 'providers') {
141
+ if (ts.isIdentifier(n.initializer)) {
142
+ result = n.initializer.text;
143
+ }
144
+ }
145
+ if (!result)
146
+ ts.forEachChild(n, visit);
147
+ }
148
+ visit(node);
149
+ return result;
150
+ }
151
+ function findImportPathForIdentifier(sourceFile, identifier) {
152
+ var _a;
153
+ for (const statement of sourceFile.statements) {
154
+ if (ts.isImportDeclaration(statement) && ((_a = statement.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings) && ts.isNamedImports(statement.importClause.namedBindings)) {
155
+ if (statement.importClause.namedBindings.elements.some(e => e.name.text === identifier)) {
156
+ return statement.moduleSpecifier.text;
157
+ }
158
+ }
159
+ }
160
+ return null;
161
+ }
162
+ function findVariableDeclaration(sourceFile, identifier) {
163
+ for (const statement of sourceFile.statements) {
164
+ if (ts.isVariableStatement(statement)) {
165
+ for (const decl of statement.declarationList.declarations) {
166
+ if (ts.isIdentifier(decl.name) && decl.name.text === identifier) {
167
+ return decl;
168
+ }
169
+ }
170
+ }
171
+ }
172
+ return null;
173
+ }
174
+ function insertIntoArray(tree, filePath, array, text) {
175
+ const content = tree.read(filePath).toString();
176
+ const insertionPos = array.elements.length > 0
177
+ ? array.elements[array.elements.length - 1].getEnd()
178
+ : array.getStart() + 1;
179
+ const prefix = array.elements.length > 0 ? ', ' : '';
180
+ const updated = content.slice(0, insertionPos) + prefix + text + content.slice(insertionPos);
181
+ tree.overwrite(filePath, updated);
182
+ }
183
+ function ensureImport(tree, filePath, symbol, module) {
184
+ const content = tree.read(filePath).toString();
185
+ if (content.includes(symbol))
186
+ return;
187
+ const updated = `import { ${symbol} } from '${module}';\n` + content;
188
+ tree.overwrite(filePath, updated);
54
189
  }
55
190
  //# sourceMappingURL=app-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../../../projects/ngx-theme-stack/schematics/ng-add/app-config.ts"],"names":[],"mappings":";;AAWA,wCA4DC;AArED;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,IAAU,EACV,OAAyB,EACzB,UAAkB,EAClB,WAAmB;IAEnB,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,oBAAoB,EAAE,GAAG,UAAU,UAAU,EAAE,GAAG,UAAU,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhK,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,SAAS;QAErC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,OAAO,GAAG,OAAO,CAAC;QAEtB,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;YAC3E,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;oBACzB,wDAAwD;oBACxD,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,6BAA6B,EAC7B,CAAC,EAAU,EAAE,KAAa,EAAE,EAAE;gBAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAChF,OAAO,eAAe,OAAO,GAAG,GAAG,GAAG,WAAW,OAAO,CAAC;YAC3D,CAAC,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACpD,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,2CAA2C,EAC3C,mDAAmD,WAAW,WAAW,CAC1E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,WAAW,OAAO,QAAQ,EAAE,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,6DAA6D;QAC3D,qBAAqB;QACrB,4DAA4D;QAC5D,kBAAkB,WAAW,IAAI,CACpC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../../../projects/ngx-theme-stack/schematics/ng-add/app-config.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  export declare const DEFAULT_THEMES: readonly ["system", "light", "dark"];
12
12
  export declare const DEFAULTS: {
13
13
  readonly defaultTheme: "system";
14
- readonly storageKey: "ngx-theme-stack-theme";
14
+ readonly storageKey: "ngx-theme-stack";
15
15
  readonly mode: "class";
16
16
  readonly strategy: "critters";
17
17
  readonly themes: readonly ["system", "light", "dark"];
@@ -14,7 +14,7 @@ exports.DEFAULTS = exports.DEFAULT_THEMES = void 0;
14
14
  exports.DEFAULT_THEMES = ['system', 'light', 'dark'];
15
15
  exports.DEFAULTS = {
16
16
  defaultTheme: 'system',
17
- storageKey: 'ngx-theme-stack-theme',
17
+ storageKey: 'ngx-theme-stack',
18
18
  mode: 'class',
19
19
  strategy: 'critters',
20
20
  themes: [...exports.DEFAULT_THEMES],
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../projects/ngx-theme-stack/schematics/ng-add/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACU,QAAA,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAEtD,QAAA,QAAQ,GAAG;IACtB,YAAY,EAAE,QAAQ;IACtB,UAAU,EAAE,uBAAuB;IACnC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,CAAC,GAAG,sBAAc,CAAC;CACnB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../projects/ngx-theme-stack/schematics/ng-add/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACU,QAAA,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAEtD,QAAA,QAAQ,GAAG;IACtB,YAAY,EAAE,QAAQ;IACtB,UAAU,EAAE,iBAAiB;IAC7B,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,CAAC,GAAG,sBAAc,CAAC;CACnB,CAAC"}
@@ -2,10 +2,5 @@ import { Rule } from '@angular-devkit/schematics';
2
2
  import { Schema } from './schema';
3
3
  /**
4
4
  * Main schematic factory for the 'ng-add' command.
5
- * Depending on the 'mode' option, it either applies default library values ("quick")
6
- * or starts an interactive session to collect personalized configuration ("custom").
7
- *
8
- * @param options The schema options provided by the Angular CLI.
9
- * @returns A rule that modifies the project's setup.
10
5
  */
11
6
  export declare function ngAdd(options: Schema): Rule;
@@ -16,11 +16,7 @@ const app_config_1 = require("./app-config");
16
16
  const constants_1 = require("./constants");
17
17
  const utils_1 = require("./utils");
18
18
  /**
19
- * Interactively prompts the user for custom configuration options using readline.
20
- * It allows defining additional themes, selecting a default theme from the expanded list,
21
- * providing a custom localStorage key, and choosing a CSS application mode.
22
- *
23
- * @returns A promise resolving to the user's selected configuration options.
19
+ * Interactively prompts the user for custom configuration options.
24
20
  */
25
21
  function collectCustomOptions() {
26
22
  return __awaiter(this, void 0, void 0, function* () {
@@ -29,25 +25,22 @@ function collectCustomOptions() {
29
25
  process.stdout.write('\n');
30
26
  const rawThemes = yield (0, utils_1.ask)(rl, ' Custom themes (comma-separated, Enter to skip): ');
31
27
  const customThemes = rawThemes
32
- ? rawThemes
33
- .split(',')
34
- .map((t) => t.trim())
35
- .filter(Boolean)
28
+ ? rawThemes.split(',').map((t) => t.trim()).filter(Boolean)
36
29
  : [];
37
- const allThemes = [...constants_1.DEFAULT_THEMES, ...customThemes];
38
- const defaultTheme = yield (0, utils_1.askList)(rl, 'Default theme:', allThemes, 0);
30
+ const themes = [...constants_1.DEFAULT_THEMES, ...customThemes];
31
+ const defaultTheme = yield (0, utils_1.askList)(rl, 'Default theme:', themes, 0);
39
32
  const rawKey = yield (0, utils_1.ask)(rl, ` localStorage key [${constants_1.DEFAULTS.storageKey}]: `);
40
33
  const storageKey = rawKey || constants_1.DEFAULTS.storageKey;
41
34
  const MODES = ['class', 'attribute', 'both'];
42
35
  const mode = yield (0, utils_1.askList)(rl, 'How to apply theme on <html>:', MODES, 0);
43
36
  const STRATEGIES = ['critters', 'blocking'];
44
- process.stdout.write('\n');
45
- process.stdout.write(' Anti-flash strategy:\n');
37
+ process.stdout.write('\n Anti-flash strategy:\n');
46
38
  process.stdout.write(' - critters: Zero network requests (inlines CSS in <head>)\n');
47
39
  process.stdout.write(' - blocking: Standard CSS loading (themes.css)\n');
48
40
  const strategy = (yield (0, utils_1.askList)(rl, 'Choose strategy:', STRATEGIES, 0));
41
+ const provideCall = (0, utils_1.buildProvideCall)(defaultTheme, storageKey, mode, themes, strategy);
49
42
  process.stdout.write('\n');
50
- return { defaultTheme, storageKey, mode, themes: allThemes, strategy };
43
+ return { defaultTheme, storageKey, mode, themes, strategy, provideCall };
51
44
  }
52
45
  finally {
53
46
  rl.close();
@@ -56,70 +49,51 @@ function collectCustomOptions() {
56
49
  }
57
50
  /**
58
51
  * Main schematic factory for the 'ng-add' command.
59
- * Depending on the 'mode' option, it either applies default library values ("quick")
60
- * or starts an interactive session to collect personalized configuration ("custom").
61
- *
62
- * @param options The schema options provided by the Angular CLI.
63
- * @returns A rule that modifies the project's setup.
64
52
  */
65
53
  function ngAdd(options) {
66
54
  return (tree, context) => __awaiter(this, void 0, void 0, function* () {
67
- // ── Workspace Resolution ──────────────────────────────────────────────────
68
- // In a monorepo, we must find the project's actual root and sourceRoot.
69
55
  const workspaceConfig = tree.read('/angular.json');
70
56
  if (!workspaceConfig) {
71
57
  throw new Error('Could not find angular.json. Are you in an Angular workspace?');
72
58
  }
73
59
  const workspace = JSON.parse(workspaceConfig.toString());
74
- const projectName = options.project || workspace.defaultProject;
60
+ const projectName = options.project || workspace.defaultProject || Object.keys(workspace.projects)[0];
75
61
  const project = workspace.projects[projectName];
76
62
  if (!project) {
77
63
  throw new Error(`Project "${projectName}" not found in angular.json.`);
78
64
  }
79
65
  const projectRoot = project.root || '';
80
66
  const projectSourceRoot = project.sourceRoot || `${projectRoot}/src`;
81
- context.logger.info('');
82
- context.logger.info(`🎨 ngx-theme-stack — setup [project: ${projectName}]`);
83
- context.logger.info('');
84
- let provideCall;
85
- let scriptOptions;
86
- let finalThemes;
87
- let themesToScaffold;
88
- let finalStrategy;
67
+ context.logger.info('\n🎨 ngx-theme-stack — setup');
68
+ context.logger.info(` project: ${projectName}\n`);
69
+ let config;
89
70
  if (options.mode === 'quick') {
90
71
  const themes = [...constants_1.DEFAULT_THEMES];
91
- const { defaultTheme, storageKey, mode } = constants_1.DEFAULTS;
92
- const strategy = 'critters'; // default for quick
93
- provideCall = (0, utils_1.buildProvideCall)(defaultTheme, storageKey, mode, themes, strategy);
94
- scriptOptions = { storageKey, defaultTheme, mode };
95
- finalThemes = themes;
96
- themesToScaffold = themes.filter((t) => t !== 'system');
97
- finalStrategy = strategy;
98
- context.logger.info('⚡ Quick setup providing explicit defaults (strategy: critters).');
72
+ const { defaultTheme, storageKey, mode, strategy } = constants_1.DEFAULTS;
73
+ config = {
74
+ defaultTheme,
75
+ storageKey,
76
+ mode,
77
+ themes,
78
+ strategy: strategy,
79
+ provideCall: (0, utils_1.buildProvideCall)(defaultTheme, storageKey, mode, themes, strategy),
80
+ };
81
+ context.logger.info('⚡ Quick setup — providing explicit defaults.');
99
82
  }
100
83
  else {
101
84
  context.logger.info('🛠 Custom setup — answer the prompts below:');
102
- const opts = yield collectCustomOptions();
103
- const { defaultTheme, storageKey, mode, themes, strategy } = opts;
104
- context.logger.info(' Applying your configuration:');
105
- context.logger.info(` defaultTheme : ${defaultTheme}`);
106
- context.logger.info(` themes : [${themes.join(', ')}]`);
107
- context.logger.info(` storageKey : ${storageKey}`);
108
- context.logger.info(` mode : ${mode}`);
109
- context.logger.info(` strategy : ${strategy}`);
110
- provideCall = (0, utils_1.buildProvideCall)(defaultTheme, storageKey, mode, themes, strategy);
111
- scriptOptions = { storageKey, defaultTheme, mode };
112
- finalThemes = themes;
113
- themesToScaffold = themes.filter((t) => t !== 'system');
114
- finalStrategy = strategy;
85
+ config = yield collectCustomOptions();
115
86
  }
87
+ const changeset = [];
88
+ const themesToScaffold = config.themes.filter((t) => t !== 'system');
116
89
  return (0, schematics_1.chain)([
117
- (t, context) => {
118
- const themesPath = `${projectSourceRoot}/themes.css`;
90
+ // 1. Scaffold themes.css
91
+ (t) => {
92
+ const themesPath = `${projectSourceRoot}/themes.css`.replace(/^\//, '');
119
93
  if (!t.exists(themesPath)) {
120
94
  let content = '/* ngx-theme-stack tokens */\n\n';
121
95
  themesToScaffold.forEach((theme) => {
122
- const selector = scriptOptions.mode === 'attribute' ? `[data-theme="${theme}"]` : `.${theme}`;
96
+ const selector = config.mode === 'attribute' ? `[data-theme="${theme}"]` : `.${theme}`;
123
97
  if (theme === 'light') {
124
98
  content += `:root, ${selector} {\n /* Add your light theme variables here */\n}\n\n`;
125
99
  }
@@ -128,15 +102,13 @@ function ngAdd(options) {
128
102
  }
129
103
  });
130
104
  t.create(themesPath, content);
131
- context.logger.info(`\n \u001b[36mResume :\u001b[0m \n`);
132
- context.logger.info(`\u001b[32m✔ Created ${themesPath} with your theme selectors.\u001b[0m`);
105
+ changeset.push(` \u001b[36mA\u001b[0m ${themesPath} (theme tokens)`);
133
106
  }
134
107
  else {
135
- context.logger.info(`\n \u001b[36mResume :\u001b[0m \n`);
136
- context.logger.info(`\u001b[33mℹ ${themesPath} already exists. Skipping creation to preserve your styles.\u001b[0m`);
137
- context.logger.info(` Tip: Make sure to manually add selectors (class or attribute) for any new themes.`);
108
+ changeset.push(` \u001b[90mℹ\u001b[0m ${themesPath} (already exists)`);
138
109
  }
139
110
  },
111
+ // 2. Add prebuild script to package.json
140
112
  (t) => {
141
113
  const pkgPath = '/package.json';
142
114
  const buffer = t.read(pkgPath);
@@ -145,44 +117,46 @@ function ngAdd(options) {
145
117
  pkg.scripts = pkg.scripts || {};
146
118
  pkg.scripts.prebuild = `ng generate ngx-theme-stack:sync --project ${projectName}`;
147
119
  t.overwrite(pkgPath, JSON.stringify(pkg, null, 2));
120
+ changeset.push(' \u001b[33mM\u001b[0m package.json (prebuild script)');
148
121
  }
149
122
  },
150
- (t, context) => {
123
+ // 3. Update angular.json (styles & optimization)
124
+ (t) => {
151
125
  var _a;
152
- const workspaceConfig = t.read('/angular.json');
153
- if (workspaceConfig) {
154
- const workspace = JSON.parse(workspaceConfig.toString());
155
- const project = workspace.projects[projectName];
156
- const target = project.architect.build.options;
157
- const themesPath = `${projectSourceRoot}/themes.css`.replace(/^\//, '');
158
- // Add themes.css to styles if not already there
159
- if (target.styles && !target.styles.includes(themesPath)) {
160
- target.styles.unshift(themesPath);
126
+ const themesPath = `${projectSourceRoot}/themes.css`.replace(/^\//, '');
127
+ const target = project.architect.build.options;
128
+ if (target.styles && !target.styles.includes(themesPath)) {
129
+ target.styles.unshift(themesPath);
130
+ }
131
+ const prodConfig = (_a = project.architect.build.configurations) === null || _a === void 0 ? void 0 : _a.production;
132
+ if (prodConfig && config.strategy === 'blocking') {
133
+ if (typeof prodConfig.optimization === 'object') {
134
+ prodConfig.optimization.styles = prodConfig.optimization.styles || {};
135
+ prodConfig.optimization.styles.inlineCritical = false;
161
136
  }
162
- // Handle inlineCritical optimization for the blocking strategy
163
- const prodConfig = (_a = project.architect.build.configurations) === null || _a === void 0 ? void 0 : _a.production;
164
- if (prodConfig && finalStrategy === 'blocking') {
165
- if (typeof prodConfig.optimization === 'object') {
166
- prodConfig.optimization.styles = prodConfig.optimization.styles || {};
167
- prodConfig.optimization.styles.inlineCritical = false;
168
- }
169
- else {
170
- prodConfig.optimization = {
171
- styles: { inlineCritical: false },
172
- };
173
- }
174
- context.logger.info(`✔ Disabled inlineCritical in angular.json for blocking strategy.`);
137
+ else {
138
+ prodConfig.optimization = { styles: { inlineCritical: false } };
175
139
  }
176
- t.overwrite('/angular.json', JSON.stringify(workspace, null, 2));
177
140
  }
141
+ t.overwrite('/angular.json', JSON.stringify(workspace, null, 2));
142
+ changeset.push(' \u001b[33mM\u001b[0m angular.json (styles & optimization)');
178
143
  },
179
- (t, ctx) => {
180
- (0, app_config_1.patchAppConfig)(t, ctx, projectSourceRoot, provideCall);
181
- (0, anti_flash_1.patchIndexHtml)(t, ctx, projectSourceRoot, Object.assign(Object.assign({}, scriptOptions), { themes: finalThemes, strategy: options.strategy || finalStrategy }));
182
- ctx.logger.info('');
183
- ctx.logger.info('✅ Done! ngx-theme-stack is ready with automatic sync on build.');
184
- ctx.logger.info('');
185
- },
144
+ // 4. Patch App Config and Index HTML
145
+ (t, ctx) => __awaiter(this, void 0, void 0, function* () {
146
+ yield (0, app_config_1.patchAppConfig)(t, ctx, projectSourceRoot, config.provideCall, projectName);
147
+ changeset.push(' \u001b[33mM\u001b[0m app.config.ts (provided theme stack)');
148
+ (0, anti_flash_1.patchIndexHtml)(t, ctx, projectSourceRoot, {
149
+ storageKey: config.storageKey,
150
+ defaultTheme: config.defaultTheme,
151
+ mode: config.mode,
152
+ themes: config.themes,
153
+ strategy: config.strategy,
154
+ });
155
+ changeset.push(' \u001b[33mM\u001b[0m index.html (injected anti-flash)');
156
+ ctx.logger.info('\n\u001b[1mChangeset:\u001b[0m');
157
+ changeset.forEach((entry) => ctx.logger.info(entry));
158
+ ctx.logger.info('\n\u001b[1m\u001b[32m🏁 Done.\u001b[0m\n');
159
+ }),
186
160
  ]);
187
161
  });
188
162
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/ngx-theme-stack/schematics/ng-add/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/ngx-theme-stack/schematics/ng-add/index.ts"],"names":[],"mappings":"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"}