@craft-ng/dev-tools 0.5.0-beta.5 → 0.6.0-beta.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.
Files changed (94) hide show
  1. package/README.md +198 -23
  2. package/generators.json +26 -0
  3. package/package.json +23 -2
  4. package/src/bin/craft-migrate-primitives.d.ts +2 -0
  5. package/src/bin/craft-migrate-primitives.js +71 -0
  6. package/src/bin/craft-migrate-primitives.js.map +1 -0
  7. package/src/bin/craft-migrate-routes.d.ts +2 -0
  8. package/src/bin/craft-migrate-routes.js +77 -0
  9. package/src/bin/craft-migrate-routes.js.map +1 -0
  10. package/src/bin/craft-migrate-services.d.ts +2 -0
  11. package/src/bin/craft-migrate-services.js +75 -0
  12. package/src/bin/craft-migrate-services.js.map +1 -0
  13. package/src/bin/craft-migrate.d.ts +2 -0
  14. package/src/bin/craft-migrate.js +90 -0
  15. package/src/bin/craft-migrate.js.map +1 -0
  16. package/src/bin/craft.d.ts +2 -0
  17. package/src/bin/craft.js +166 -0
  18. package/src/bin/craft.js.map +1 -0
  19. package/src/eslint-rules/craft-computed-name-match.cjs +8 -125
  20. package/src/eslint-rules/craft-method-name-match.cjs +8 -166
  21. package/src/eslint-rules/craft-name-match-utils.cjs +179 -0
  22. package/src/eslint-rules/craft-signal-source-name-match.cjs +8 -0
  23. package/src/eslint-rules/craft-source-name-match.cjs +8 -0
  24. package/src/eslint-rules/global-exception-registry-match.cjs +78 -13
  25. package/src/eslint-rules/index.cjs +10 -2
  26. package/src/eslint-rules/require-cascade-route-di-check.cjs +223 -0
  27. package/src/eslint-rules/require-exception-component-di-check.cjs +66 -10
  28. package/src/eslint-rules/require-lazy-load-with-retry.cjs +148 -0
  29. package/src/eslint-rules/require-primitive-generator-unwrap.cjs +267 -0
  30. package/src/generators/route/compat.d.ts +3 -0
  31. package/src/generators/route/compat.js +6 -0
  32. package/src/generators/route/compat.js.map +1 -0
  33. package/src/generators/route/generator.d.ts +31 -0
  34. package/src/generators/route/generator.js +434 -0
  35. package/src/generators/route/generator.js.map +1 -0
  36. package/src/generators/route/schema.json +50 -0
  37. package/src/generators/route/split-schema.json +19 -0
  38. package/src/index.d.ts +9 -0
  39. package/src/index.js +9 -0
  40. package/src/index.js.map +1 -1
  41. package/src/scripts/angular-brand-codemod.d.ts +17 -0
  42. package/src/scripts/angular-brand-codemod.js +44 -8
  43. package/src/scripts/angular-brand-codemod.js.map +1 -1
  44. package/src/scripts/angular-brand-codemod.spec.ts +3 -3
  45. package/src/scripts/angular-brand-codemod.ts +78 -7
  46. package/src/scripts/migrate.d.ts +32 -0
  47. package/src/scripts/migrate.js +67 -0
  48. package/src/scripts/migrate.js.map +1 -0
  49. package/src/scripts/migrate.ts +128 -0
  50. package/src/scripts/migration-workspace.d.ts +2 -0
  51. package/src/scripts/migration-workspace.js +72 -0
  52. package/src/scripts/migration-workspace.js.map +1 -0
  53. package/src/scripts/migration-workspace.ts +93 -0
  54. package/src/scripts/primitives/migrate-primitive-generators.d.ts +27 -0
  55. package/src/scripts/primitives/migrate-primitive-generators.js +315 -0
  56. package/src/scripts/primitives/migrate-primitive-generators.js.map +1 -0
  57. package/src/scripts/primitives/migrate-primitive-generators.ts +402 -0
  58. package/src/scripts/primitives/migrate-primitives.d.ts +27 -0
  59. package/src/scripts/primitives/migrate-primitives.js +386 -0
  60. package/src/scripts/primitives/migrate-primitives.js.map +1 -0
  61. package/src/scripts/primitives/migrate-primitives.spec.ts +322 -0
  62. package/src/scripts/primitives/migrate-primitives.ts +601 -0
  63. package/src/scripts/primitives/migration-diagnostic.d.ts +8 -0
  64. package/src/scripts/primitives/migration-diagnostic.js +2 -0
  65. package/src/scripts/primitives/migration-diagnostic.js.map +1 -0
  66. package/src/scripts/primitives/migration-diagnostic.ts +14 -0
  67. package/src/scripts/routes/migrate-routes.d.ts +34 -0
  68. package/src/scripts/routes/migrate-routes.js +669 -0
  69. package/src/scripts/routes/migrate-routes.js.map +1 -0
  70. package/src/scripts/routes/migrate-routes.spec.ts +264 -0
  71. package/src/scripts/routes/migrate-routes.ts +895 -0
  72. package/src/scripts/routes/migration-diagnostic.d.ts +16 -0
  73. package/src/scripts/routes/migration-diagnostic.js +2 -0
  74. package/src/scripts/routes/migration-diagnostic.js.map +1 -0
  75. package/src/scripts/routes/migration-diagnostic.ts +25 -0
  76. package/src/scripts/routes/route-command.d.ts +75 -0
  77. package/src/scripts/routes/route-command.js +1187 -0
  78. package/src/scripts/routes/route-command.js.map +1 -0
  79. package/src/scripts/routes/route-command.spec.ts +553 -0
  80. package/src/scripts/routes/route-command.ts +1790 -0
  81. package/src/scripts/services/config.d.ts +2 -0
  82. package/src/scripts/services/config.js +39 -0
  83. package/src/scripts/services/config.js.map +1 -0
  84. package/src/scripts/services/config.ts +60 -0
  85. package/src/scripts/services/migrate-services.d.ts +29 -0
  86. package/src/scripts/services/migrate-services.js +929 -0
  87. package/src/scripts/services/migrate-services.js.map +1 -0
  88. package/src/scripts/services/migrate-services.spec.ts +761 -0
  89. package/src/scripts/services/migrate-services.ts +1333 -0
  90. package/src/scripts/services/migration-diagnostic.d.ts +8 -0
  91. package/src/scripts/services/migration-diagnostic.js +2 -0
  92. package/src/scripts/services/migration-diagnostic.js.map +1 -0
  93. package/src/scripts/services/migration-diagnostic.ts +28 -0
  94. package/src/eslint-rules/require-track-on-dependent-primitives.cjs +0 -219
@@ -0,0 +1,434 @@
1
+ import { __awaiter } from "tslib";
2
+ import { execFile } from 'node:child_process';
3
+ import { existsSync } from 'node:fs';
4
+ import { basename, dirname, join, relative, resolve, sep } from 'node:path';
5
+ import { createInterface } from 'node:readline/promises';
6
+ import { promisify } from 'node:util';
7
+ import { getProjects, logger, names, readProjectConfiguration, } from '@nx/devkit';
8
+ import { wrapAngularDevkitSchematic } from '@nx/devkit/ngcli-adapter.js';
9
+ import { Project } from 'ts-morph';
10
+ import { findAngularDecoratedClass } from '../../scripts/angular-brand-codemod.js';
11
+ import { captureRouteEslintBaseline, listRouteCollections, runRouteAdd, runRouteSplit, validateRouteChangedFiles, } from '../../scripts/routes/route-command.js';
12
+ const execFileAsync = promisify(execFile);
13
+ export function routeGenerator(tree, options) {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ var _a, _b;
16
+ const selected = selectAngularProject(tree, options.project);
17
+ const fileSystem = createTreeFileSystem(tree);
18
+ const componentBase = join((_a = selected.configuration.sourceRoot) !== null && _a !== void 0 ? _a : join(selected.configuration.root, 'src'), 'app');
19
+ const parent = yield resolveRouteParentOption(listRouteCollections(tree.root, selected.tsConfig, fileSystem), {
20
+ configuredParent: options.parent,
21
+ rootDir: tree.root,
22
+ routePath: options.path,
23
+ });
24
+ const target = yield resolveRouteTargetOptions(options, { componentBase });
25
+ const preview = yield runRouteAdd({
26
+ rootDir: tree.root,
27
+ project: selected.tsConfig,
28
+ path: options.path,
29
+ parent,
30
+ component: target.component,
31
+ createComponent: (_b = target.createComponent) === null || _b === void 0 ? void 0 : _b.name,
32
+ featureFile: options.featureFile,
33
+ redirectTo: target.redirectTo,
34
+ dryRun: true,
35
+ yes: true,
36
+ validate: false,
37
+ fileSystem,
38
+ log: () => undefined,
39
+ });
40
+ assertSuccessful(preview);
41
+ printGeneratorPlan(tree, preview, target.createComponent, componentBase);
42
+ if (!(yield confirmGeneratorPlan(options))) {
43
+ logger.info('Cancelled. No files changed.');
44
+ return;
45
+ }
46
+ let component = target.component;
47
+ if (target.createComponent) {
48
+ component = yield generateComponent(tree, selected.name, selected.configuration, target.createComponent);
49
+ }
50
+ const result = yield runRouteAdd({
51
+ rootDir: tree.root,
52
+ project: selected.tsConfig,
53
+ path: options.path,
54
+ parent,
55
+ component,
56
+ featureFile: options.featureFile,
57
+ redirectTo: target.redirectTo,
58
+ yes: true,
59
+ validate: false,
60
+ fileSystem,
61
+ log: () => undefined,
62
+ });
63
+ assertSuccessful(result);
64
+ const eslintBaseline = options.skipValidation
65
+ ? new Set()
66
+ : yield captureRouteEslintBaseline(tree.root, resolve(tree.root, selected.configuration.root), result.changedFiles);
67
+ return options.skipValidation
68
+ ? undefined
69
+ : createValidationCallback(tree, selected, result.changedFiles, eslintBaseline);
70
+ });
71
+ }
72
+ export function resolveRouteParentOption(parents, interactive) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ if (interactive.configuredParent)
75
+ return interactive.configuredParent;
76
+ if (parents.length === 0 || (!interactive.ask && !isInteractive())) {
77
+ return undefined;
78
+ }
79
+ if (!interactive.ask) {
80
+ const readline = createInterface({
81
+ input: process.stdin,
82
+ output: process.stdout,
83
+ });
84
+ try {
85
+ return yield resolveRouteParentOption(parents, Object.assign(Object.assign({}, interactive), { ask: (prompt) => readline.question(prompt) }));
86
+ }
87
+ finally {
88
+ readline.close();
89
+ }
90
+ }
91
+ const sortedParents = [...parents].sort((left, right) => left.filePath.localeCompare(right.filePath));
92
+ logger.info([
93
+ 'Available route parents:',
94
+ ` 0. Automatic selection from ${interactive.routePath}`,
95
+ ...sortedParents.map((parent, index) => {
96
+ const filePath = relative(interactive.rootDir, parent.filePath)
97
+ .split(sep)
98
+ .join('/');
99
+ return ` ${index + 1}. ${parent.routesName} — ${filePath} (prefix: ${parent.collectionName})`;
100
+ }),
101
+ ].join('\n'));
102
+ let selection;
103
+ do {
104
+ const answer = (yield interactive.ask('Parent number [0]: ')).trim();
105
+ selection = answer === '' ? 0 : Number(answer);
106
+ } while (!Number.isInteger(selection) ||
107
+ selection < 0 ||
108
+ selection > sortedParents.length);
109
+ if (selection === 0)
110
+ return undefined;
111
+ const selected = sortedParents[selection - 1];
112
+ const filePath = relative(interactive.rootDir, selected.filePath)
113
+ .split(sep)
114
+ .join('/');
115
+ return `${filePath}#${selected.routesName}`;
116
+ });
117
+ }
118
+ export function resolveRouteTargetOptions(options, interactive) {
119
+ return __awaiter(this, void 0, void 0, function* () {
120
+ const configuredTargets = [
121
+ ['component', options.component],
122
+ ['createComponent', options.createComponent],
123
+ ['redirectTo', options.redirectTo],
124
+ ].filter(([, value]) => value !== undefined);
125
+ if (configuredTargets.length > 1) {
126
+ throw new Error('Choose exactly one route target: --component, --create-component, or --redirect-to.');
127
+ }
128
+ if (configuredTargets.length === 1) {
129
+ const [name, value] = configuredTargets[0];
130
+ if (name === 'createComponent') {
131
+ return { createComponent: parseCreateComponentOption(value) };
132
+ }
133
+ return { [name]: value };
134
+ }
135
+ if (!interactive.ask) {
136
+ if (!isInteractive()) {
137
+ throw new Error('A route target is required. Pass --component, --create-component, or --redirect-to.');
138
+ }
139
+ const readline = createInterface({
140
+ input: process.stdin,
141
+ output: process.stdout,
142
+ });
143
+ try {
144
+ return yield resolveRouteTargetOptions(options, Object.assign(Object.assign({}, interactive), { ask: (prompt) => readline.question(prompt) }));
145
+ }
146
+ finally {
147
+ readline.close();
148
+ }
149
+ }
150
+ const ask = interactive.ask;
151
+ let selection;
152
+ do {
153
+ selection = (yield ask('Target: [e]xisting component, [c]reate component, [r]edirect? '))
154
+ .trim()
155
+ .toLowerCase();
156
+ } while (!['e', 'existing', 'c', 'create', 'r', 'redirect'].includes(selection));
157
+ if (selection === 'e' || selection === 'existing') {
158
+ return {
159
+ component: yield askForRequiredValue(ask, 'Component file#Class: '),
160
+ };
161
+ }
162
+ if (selection === 'c' || selection === 'create') {
163
+ const path = yield askForRequiredValue(ask, `Angular component path (relative to ${interactive.componentBase}): `);
164
+ return {
165
+ createComponent: {
166
+ path,
167
+ name: yield askForRequiredValue(ask, 'Angular component name: '),
168
+ },
169
+ };
170
+ }
171
+ return {
172
+ redirectTo: yield askForRequiredValue(ask, 'Redirect target: '),
173
+ };
174
+ });
175
+ }
176
+ function isInteractive() {
177
+ return (!!process.stdin.isTTY &&
178
+ !!process.stdout.isTTY &&
179
+ process.env['NX_INTERACTIVE'] !== 'false');
180
+ }
181
+ function parseCreateComponentOption(value) {
182
+ const name = basename(value);
183
+ const parent = dirname(value);
184
+ return {
185
+ name,
186
+ path: parent === '.' ? name : parent,
187
+ };
188
+ }
189
+ function askForRequiredValue(ask, prompt) {
190
+ return __awaiter(this, void 0, void 0, function* () {
191
+ let value;
192
+ do
193
+ value = (yield ask(prompt)).trim();
194
+ while (!value);
195
+ return value;
196
+ });
197
+ }
198
+ export function routeSplitGenerator(tree, options) {
199
+ return __awaiter(this, void 0, void 0, function* () {
200
+ const selected = selectAngularProject(tree, options.project);
201
+ const result = yield runRouteSplit({
202
+ rootDir: tree.root,
203
+ project: selected.tsConfig,
204
+ parent: options.parent,
205
+ prefix: options.prefix,
206
+ target: options.target,
207
+ yes: true,
208
+ validate: false,
209
+ fileSystem: createTreeFileSystem(tree),
210
+ log: (message) => logger.info(message),
211
+ });
212
+ assertSuccessful(result);
213
+ const eslintBaseline = options.skipValidation
214
+ ? new Set()
215
+ : yield captureRouteEslintBaseline(tree.root, resolve(tree.root, selected.configuration.root), result.changedFiles);
216
+ return options.skipValidation
217
+ ? undefined
218
+ : createValidationCallback(tree, selected, result.changedFiles, eslintBaseline);
219
+ });
220
+ }
221
+ function selectAngularProject(tree, requestedProject) {
222
+ const projects = getProjects(tree);
223
+ let name = requestedProject;
224
+ if (!name) {
225
+ const applications = [...projects.entries()].filter(([, configuration]) => findAngularApplicationTsConfig(tree, configuration));
226
+ if (applications.length !== 1) {
227
+ throw new Error('Choose a project with --project when the workspace does not contain exactly one Angular application.');
228
+ }
229
+ name = applications[0][0];
230
+ }
231
+ const configuration = readProjectConfiguration(tree, name);
232
+ const tsConfig = findAngularApplicationTsConfig(tree, configuration);
233
+ if (!tsConfig) {
234
+ throw new Error(`Project ${name} is not an Angular application.`);
235
+ }
236
+ return { configuration, name, tsConfig };
237
+ }
238
+ function findAngularApplicationTsConfig(tree, configuration) {
239
+ var _a, _b, _c;
240
+ if (configuration.projectType !== 'application')
241
+ return undefined;
242
+ const configuredTsConfig = (_c = (_b = (_a = configuration.targets) === null || _a === void 0 ? void 0 : _a['build']) === null || _b === void 0 ? void 0 : _b.options) === null || _c === void 0 ? void 0 : _c['tsConfig'];
243
+ const fallbackTsConfig = join(configuration.root, 'tsconfig.app.json');
244
+ const tsConfig = typeof configuredTsConfig === 'string'
245
+ ? configuredTsConfig
246
+ : fallbackTsConfig;
247
+ return tree.exists(tsConfig) ? tsConfig : undefined;
248
+ }
249
+ function createTreeFileSystem(tree) {
250
+ const toTreePath = (filePath) => {
251
+ const value = relative(tree.root, resolve(filePath));
252
+ return value.split(sep).join('/');
253
+ };
254
+ return {
255
+ exists: (filePath) => tree.exists(toTreePath(filePath)),
256
+ listFiles: (rootDir) => listTreeFiles(tree, toTreePath(rootDir)).map((filePath) => resolve(tree.root, filePath)),
257
+ read: (filePath) => { var _a; return (_a = tree.read(toTreePath(filePath), 'utf8')) !== null && _a !== void 0 ? _a : undefined; },
258
+ write: (filePath, content) => tree.write(toTreePath(filePath), content),
259
+ };
260
+ }
261
+ function listTreeFiles(tree, root = '') {
262
+ if (tree.isFile(root))
263
+ return [root];
264
+ const result = [];
265
+ const visit = (directory) => {
266
+ for (const child of tree.children(directory)) {
267
+ if (['node_modules', 'dist', '.angular', '.git'].includes(child)) {
268
+ continue;
269
+ }
270
+ const filePath = directory ? `${directory}/${child}` : child;
271
+ if (tree.isFile(filePath))
272
+ result.push(filePath);
273
+ else
274
+ visit(filePath);
275
+ }
276
+ };
277
+ visit(root === '.' ? '' : root);
278
+ return result;
279
+ }
280
+ function generateComponent(tree, projectName, project, target) {
281
+ return __awaiter(this, void 0, void 0, function* () {
282
+ var _a;
283
+ const before = new Set(listTreeFiles(tree));
284
+ const sourceRoot = (_a = project.sourceRoot) !== null && _a !== void 0 ? _a : join(project.root, 'src');
285
+ const componentBase = join(sourceRoot, 'app');
286
+ const requestedPath = resolveComponentPath(project, componentBase, target);
287
+ if (tree.exists('nx.json')) {
288
+ const { componentGenerator } = yield import('@nx/angular/generators');
289
+ yield componentGenerator(tree, {
290
+ path: requestedPath,
291
+ inlineStyle: true,
292
+ inlineTemplate: true,
293
+ skipTests: true,
294
+ skipFormat: true,
295
+ });
296
+ }
297
+ else {
298
+ const angularComponent = wrapAngularDevkitSchematic('@schematics/angular', 'component');
299
+ yield angularComponent(tree, {
300
+ name: target.name,
301
+ path: dirname(requestedPath),
302
+ project: projectName,
303
+ flat: true,
304
+ inlineStyle: true,
305
+ inlineTemplate: true,
306
+ skipTests: true,
307
+ });
308
+ }
309
+ const candidates = listTreeFiles(tree).filter((filePath) => {
310
+ var _a;
311
+ return !before.has(filePath) &&
312
+ filePath.endsWith('.ts') &&
313
+ !filePath.endsWith('.spec.ts') &&
314
+ ((_a = tree.read(filePath, 'utf8')) === null || _a === void 0 ? void 0 : _a.includes('@Component'));
315
+ });
316
+ if (candidates.length !== 1) {
317
+ throw new Error(`Expected one generated Angular component, found ${candidates.length}.`);
318
+ }
319
+ const filePath = candidates[0];
320
+ const text = tree.read(filePath, 'utf8');
321
+ if (!text)
322
+ throw new Error(`Generated component is empty: ${filePath}`);
323
+ const sourceFile = new Project().createSourceFile(filePath, text);
324
+ const decorated = findAngularDecoratedClass(sourceFile);
325
+ if (decorated.skipped || !decorated.className) {
326
+ throw new Error(`Could not infer the component class in ${filePath}.`);
327
+ }
328
+ return `${filePath}#${decorated.className}`;
329
+ });
330
+ }
331
+ function resolveComponentPath(project, componentBase, target) {
332
+ const path = target.path === '.' ? '' : target.path;
333
+ const directory = path.startsWith(project.root)
334
+ ? path
335
+ : join(componentBase, path);
336
+ return join(directory, names(target.name).fileName);
337
+ }
338
+ function printGeneratorPlan(tree, result, component, componentBase) {
339
+ var _a, _b;
340
+ const lines = ['Planned changes (dry view):'];
341
+ if (component) {
342
+ const requestedPath = join(componentBase, component.path === '.' ? '' : component.path, names(component.name).fileName);
343
+ lines.push(` CREATE ${requestedPath}.ts (inline template and styles; filename normalized by Angular)`);
344
+ }
345
+ for (const filePath of (_b = (_a = result.plan) === null || _a === void 0 ? void 0 : _a.files) !== null && _b !== void 0 ? _b : []) {
346
+ const treePath = relative(tree.root, filePath).split(sep).join('/');
347
+ lines.push(` ${tree.exists(treePath) ? 'UPDATE' : 'CREATE'} ${treePath}`);
348
+ }
349
+ logger.info(lines.join('\n'));
350
+ }
351
+ function confirmGeneratorPlan(options) {
352
+ return __awaiter(this, void 0, void 0, function* () {
353
+ if (options.yes || process.env['NX_DRY_RUN'] === 'true')
354
+ return true;
355
+ if (!process.stdin.isTTY ||
356
+ !process.stdout.isTTY ||
357
+ process.env['NX_INTERACTIVE'] === 'false') {
358
+ throw new Error('Confirmation is required. Re-run interactively or pass --yes.');
359
+ }
360
+ const readline = createInterface({
361
+ input: process.stdin,
362
+ output: process.stdout,
363
+ });
364
+ try {
365
+ const answer = (yield readline.question('Apply this plan? [y/N] '))
366
+ .trim()
367
+ .toLowerCase();
368
+ return answer === 'y' || answer === 'yes';
369
+ }
370
+ finally {
371
+ readline.close();
372
+ }
373
+ });
374
+ }
375
+ function assertSuccessful(result) {
376
+ if (result.exitCode === 0)
377
+ return;
378
+ throw new Error(result.diagnostics
379
+ .map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`)
380
+ .join('\n'));
381
+ }
382
+ function createValidationCallback(tree, project, changedFiles, eslintBaseline) {
383
+ var _a, _b, _c;
384
+ const root = tree.root;
385
+ const hasNx = tree.exists('nx.json');
386
+ const buildConfiguration = ((_c = (_b = (_a = project.configuration.targets) === null || _a === void 0 ? void 0 : _a['build']) === null || _b === void 0 ? void 0 : _b.configurations) === null || _c === void 0 ? void 0 : _c['development'])
387
+ ? 'development'
388
+ : undefined;
389
+ return () => __awaiter(this, void 0, void 0, function* () {
390
+ const validationDiagnostics = yield validateRouteChangedFiles(root, resolve(root, project.configuration.root), resolve(root, project.tsConfig), changedFiles, eslintBaseline, { skipTypeCheck: true });
391
+ if (validationDiagnostics.length > 0) {
392
+ throw new Error(validationDiagnostics
393
+ .map((diagnostic) => diagnostic.message)
394
+ .join('\n'));
395
+ }
396
+ const runner = findLocalBinary(root, hasNx ? 'nx' : 'ng');
397
+ if (!runner) {
398
+ throw new Error(`Could not find the local ${hasNx ? 'Nx' : 'Angular'} CLI.`);
399
+ }
400
+ const args = hasNx
401
+ ? [
402
+ 'run',
403
+ `${project.name}:build`,
404
+ ...(buildConfiguration
405
+ ? [`--configuration=${buildConfiguration}`]
406
+ : []),
407
+ ]
408
+ : [
409
+ 'build',
410
+ project.name,
411
+ ...(buildConfiguration
412
+ ? [`--configuration=${buildConfiguration}`]
413
+ : []),
414
+ ];
415
+ yield execFileAsync(runner, args, {
416
+ cwd: root,
417
+ maxBuffer: 20 * 1024 * 1024,
418
+ });
419
+ });
420
+ }
421
+ function findLocalBinary(rootDir, name) {
422
+ let current = rootDir;
423
+ while (true) {
424
+ const candidate = join(current, 'node_modules', '.bin', name);
425
+ if (existsSync(candidate))
426
+ return candidate;
427
+ const parent = resolve(current, '..');
428
+ if (parent === current)
429
+ return undefined;
430
+ current = parent;
431
+ }
432
+ }
433
+ export default routeGenerator;
434
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../libs/dev-tools/src/generators/route/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "CraftRoute",
4
+ "title": "Add a Craft NG route",
5
+ "type": "object",
6
+ "properties": {
7
+ "path": {
8
+ "type": "string",
9
+ "description": "Absolute route path to add.",
10
+ "$default": { "$source": "argv", "index": 0 },
11
+ "x-prompt": "Route path:"
12
+ },
13
+ "project": {
14
+ "type": "string",
15
+ "description": "Angular application project.",
16
+ "x-dropdown": "projects"
17
+ },
18
+ "parent": {
19
+ "type": "string",
20
+ "description": "Parent routes file and optional collection name."
21
+ },
22
+ "component": {
23
+ "type": "string",
24
+ "description": "Existing component as file#Class."
25
+ },
26
+ "createComponent": {
27
+ "type": "string",
28
+ "description": "Create an Angular component using workspace conventions."
29
+ },
30
+ "featureFile": {
31
+ "type": "string",
32
+ "description": "Explicit lazy feature routes file."
33
+ },
34
+ "redirectTo": {
35
+ "type": "string",
36
+ "description": "Static redirect target."
37
+ },
38
+ "skipValidation": {
39
+ "type": "boolean",
40
+ "default": false,
41
+ "description": "Skip post-write ESLint and Angular diagnostics."
42
+ },
43
+ "yes": {
44
+ "type": "boolean",
45
+ "default": false,
46
+ "description": "Apply the generated plan without asking for confirmation."
47
+ }
48
+ },
49
+ "required": ["path"]
50
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "CraftRouteSplit",
4
+ "title": "Split Craft NG routes into a lazy collection",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "Angular application project.",
10
+ "$default": { "$source": "projectName" },
11
+ "x-dropdown": "projects"
12
+ },
13
+ "parent": { "type": "string" },
14
+ "prefix": { "type": "string" },
15
+ "target": { "type": "string" },
16
+ "skipValidation": { "type": "boolean", "default": false }
17
+ },
18
+ "required": ["parent", "prefix", "target"]
19
+ }
package/src/index.d.ts CHANGED
@@ -1 +1,10 @@
1
1
  export * from './scripts/angular-brand-codemod';
2
+ export * from './scripts/primitives/migrate-primitives';
3
+ export * from './scripts/migrate';
4
+ export * from './scripts/primitives/migration-diagnostic';
5
+ export * from './scripts/routes/migrate-routes';
6
+ export * from './scripts/routes/migration-diagnostic';
7
+ export * from './scripts/routes/route-command';
8
+ export * from './scripts/services/config';
9
+ export * from './scripts/services/migrate-services';
10
+ export * from './scripts/services/migration-diagnostic';
package/src/index.js CHANGED
@@ -1,3 +1,12 @@
1
1
  // Export programmatic API for codemod
2
2
  export * from './scripts/angular-brand-codemod';
3
+ export * from './scripts/primitives/migrate-primitives';
4
+ export * from './scripts/migrate';
5
+ export * from './scripts/primitives/migration-diagnostic';
6
+ export * from './scripts/routes/migrate-routes';
7
+ export * from './scripts/routes/migration-diagnostic';
8
+ export * from './scripts/routes/route-command';
9
+ export * from './scripts/services/config';
10
+ export * from './scripts/services/migrate-services';
11
+ export * from './scripts/services/migration-diagnostic';
3
12
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/dev-tools/src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/dev-tools/src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,mBAAmB,CAAC;AAClC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC"}
@@ -19,6 +19,22 @@ export type AngularBrandImportAugmentationRule = {
19
19
  export type AngularBrandConfig = {
20
20
  importAugmentations?: readonly AngularBrandImportAugmentationRule[];
21
21
  };
22
+ export type ServiceMigrationScope = 'global' | 'toProvide' | 'manuallyProvidedAtRoot' | 'function' | 'abstract';
23
+ export type ServiceMigrationStrategy = 'craftService' | 'toCraftService' | 'companion' | 'ignore';
24
+ export type ServiceMigrationOverride = {
25
+ file?: string;
26
+ module?: string;
27
+ symbol?: string;
28
+ name?: string;
29
+ scope?: ServiceMigrationScope;
30
+ strategy?: ServiceMigrationStrategy;
31
+ };
32
+ export type CraftDevToolsConfig = {
33
+ brand?: AngularBrandConfig;
34
+ serviceMigration?: {
35
+ overrides?: readonly ServiceMigrationOverride[];
36
+ };
37
+ };
22
38
  export type TransformResult = {
23
39
  changed: boolean;
24
40
  skipped: boolean;
@@ -97,6 +113,7 @@ export type RunSummary = {
97
113
  files: RunFileReport[];
98
114
  };
99
115
  export declare function defineAngularBrandConfig<Config extends AngularBrandConfig>(config: Config): Config;
116
+ export declare function defineCraftDevToolsConfig<Config extends CraftDevToolsConfig>(config: Config): Config;
100
117
  export declare function discoverAngularBrandConfigFilePath(searchFromDir: string, stopDir?: string): string | undefined;
101
118
  export declare function loadAngularBrandConfigFromFile(configFilePath: string): AngularBrandConfig;
102
119
  export declare function transformSourceFile(sourceFile: SourceFile, options?: AngularBrandCodemodOptions): TransformResult;