@nx/angular 20.0.2 → 20.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. package/package.json +7 -7
  2. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +2 -2
  3. package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +2 -2
  4. package/src/migrations/update-14-2-0/remove-show-circular-dependencies-option.d.ts +0 -2
  5. package/src/migrations/update-14-2-0/remove-show-circular-dependencies-option.js +0 -23
  6. package/src/migrations/update-14-2-0/update-angular-cli.d.ts +0 -2
  7. package/src/migrations/update-14-2-0/update-angular-cli.js +0 -22
  8. package/src/migrations/update-14-2-0/update-libraries-secondary-entrypoints.d.ts +0 -2
  9. package/src/migrations/update-14-2-0/update-libraries-secondary-entrypoints.js +0 -34
  10. package/src/migrations/update-14-2-0/update-ngcc-target.d.ts +0 -2
  11. package/src/migrations/update-14-2-0/update-ngcc-target.js +0 -17
  12. package/src/migrations/update-14-2-0/update-router-initial-navigation.d.ts +0 -2
  13. package/src/migrations/update-14-2-0/update-router-initial-navigation.js +0 -73
  14. package/src/migrations/update-14-2-0/update-tsconfig-target.d.ts +0 -2
  15. package/src/migrations/update-14-2-0/update-tsconfig-target.js +0 -155
  16. package/src/migrations/update-14-5-0/migrate-mfe-to-mf.d.ts +0 -5
  17. package/src/migrations/update-14-5-0/migrate-mfe-to-mf.js +0 -90
  18. package/src/migrations/update-14-5-2/update-angular-cli.d.ts +0 -2
  19. package/src/migrations/update-14-5-2/update-angular-cli.js +0 -22
  20. package/src/migrations/update-14-6-0/update-angular-cli.d.ts +0 -2
  21. package/src/migrations/update-14-6-0/update-angular-cli.js +0 -22
  22. package/src/migrations/update-14-8-0/rename-webpack-server.d.ts +0 -2
  23. package/src/migrations/update-14-8-0/rename-webpack-server.js +0 -21
  24. package/src/migrations/update-15-0-0/add-karma-inputs.d.ts +0 -2
  25. package/src/migrations/update-15-0-0/add-karma-inputs.js +0 -41
  26. package/src/migrations/update-15-0-0/switch-to-jasmine-marbles.d.ts +0 -2
  27. package/src/migrations/update-15-0-0/switch-to-jasmine-marbles.js +0 -102
  28. package/src/migrations/update-15-2-0/remove-browserlist-config.d.ts +0 -4
  29. package/src/migrations/update-15-2-0/remove-browserlist-config.js +0 -59
  30. package/src/migrations/update-15-2-0/remove-platform-server-exports.d.ts +0 -2
  31. package/src/migrations/update-15-2-0/remove-platform-server-exports.js +0 -62
  32. package/src/migrations/update-15-2-0/update-angular-cli.d.ts +0 -2
  33. package/src/migrations/update-15-2-0/update-angular-cli.js +0 -22
  34. package/src/migrations/update-15-2-0/update-karma-main-file.d.ts +0 -2
  35. package/src/migrations/update-15-2-0/update-karma-main-file.js +0 -72
  36. package/src/migrations/update-15-2-0/update-typescript-target.d.ts +0 -2
  37. package/src/migrations/update-15-2-0/update-typescript-target.js +0 -52
  38. package/src/migrations/update-15-2-0/update-workspace-config.d.ts +0 -2
  39. package/src/migrations/update-15-2-0/update-workspace-config.js +0 -24
  40. package/src/migrations/update-15-5-0/update-angular-cli.d.ts +0 -2
  41. package/src/migrations/update-15-5-0/update-angular-cli.js +0 -22
  42. package/src/migrations/update-15-7-0/install-required-packages.d.ts +0 -2
  43. package/src/migrations/update-15-7-0/install-required-packages.js +0 -36
  44. package/src/migrations/update-15-8-0/update-angular-cli.d.ts +0 -2
  45. package/src/migrations/update-15-8-0/update-angular-cli.js +0 -22
  46. package/src/migrations/update-15-9-0/update-file-server-executor.d.ts +0 -2
  47. package/src/migrations/update-15-9-0/update-file-server-executor.js +0 -42
  48. package/src/migrations/update-15-9-0/update-testing-tsconfig.d.ts +0 -3
  49. package/src/migrations/update-15-9-0/update-testing-tsconfig.js +0 -32
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = switchToJasmineMarbles;
4
- const devkit_1 = require("@nx/devkit");
5
- const path_1 = require("path");
6
- const tsquery_1 = require("@phenomnomnominal/tsquery");
7
- const versions_1 = require("../../utils/versions");
8
- const semver_1 = require("@nx/devkit/src/utils/semver");
9
- const semver_2 = require("semver");
10
- async function switchToJasmineMarbles(tree) {
11
- const usesJasmineMarbles = await replaceJasmineMarbleUsagesInFiles(tree);
12
- addJasmineMarblesDevDependencyIfUsed(tree, usesJasmineMarbles);
13
- }
14
- async function replaceJasmineMarbleUsagesInFiles(tree) {
15
- let usesJasmineMarbles = false;
16
- const projectGraph = await (() => {
17
- try {
18
- return (0, devkit_1.readCachedProjectGraph)();
19
- }
20
- catch {
21
- return (0, devkit_1.createProjectGraphAsync)();
22
- }
23
- })();
24
- const dirsToTraverse = Object.entries(projectGraph.dependencies)
25
- .filter(([node, dep]) => dep.some(({ target }) => target === 'npm:@nrwl/angular' && !projectGraph.externalNodes?.[node]))
26
- .map(([projectName]) => (0, devkit_1.readProjectConfiguration)(tree, projectName).root);
27
- for (const dir of dirsToTraverse) {
28
- (0, devkit_1.visitNotIgnoredFiles)(tree, dir, (path) => {
29
- if ((0, path_1.extname)(path) !== '.ts') {
30
- return;
31
- }
32
- const fileContents = tree.read(path, 'utf-8');
33
- if (!fileContents.includes('@nrwl/angular/testing')) {
34
- return;
35
- }
36
- const NRWL_ANGULAR_TESTING_IMPORT_SELECTOR = 'ImportDeclaration:has(StringLiteral[value="@nrwl/angular/testing"])';
37
- const ast = tsquery_1.tsquery.ast(fileContents);
38
- const nrwlAngularTestingImportNodes = (0, tsquery_1.tsquery)(ast, NRWL_ANGULAR_TESTING_IMPORT_SELECTOR, { visitAllChildren: true });
39
- if (!nrwlAngularTestingImportNodes ||
40
- nrwlAngularTestingImportNodes.length === 0) {
41
- return;
42
- }
43
- const jasmineMarblesExportsRegex = new RegExp(/(hot|cold|getTestScheduler|time)/);
44
- if (!jasmineMarblesExportsRegex.test(nrwlAngularTestingImportNodes[0].getText())) {
45
- return;
46
- }
47
- const IMPORT_SPECIFIERS_SELECTOR = 'NamedImports > ImportSpecifier';
48
- const importSpecifierNodes = (0, tsquery_1.tsquery)(nrwlAngularTestingImportNodes[0], IMPORT_SPECIFIERS_SELECTOR, { visitAllChildren: true });
49
- if (!importSpecifierNodes || importSpecifierNodes.length === 0) {
50
- return;
51
- }
52
- const validNrwlTestingImports = [];
53
- const validJasmineMarbleImports = [];
54
- for (const node of importSpecifierNodes) {
55
- const importSymbol = node.getText();
56
- if (jasmineMarblesExportsRegex.test(importSymbol)) {
57
- validJasmineMarbleImports.push(importSymbol);
58
- }
59
- else {
60
- validNrwlTestingImports.push(importSymbol);
61
- }
62
- }
63
- if (!usesJasmineMarbles && validJasmineMarbleImports.length > 0) {
64
- usesJasmineMarbles = true;
65
- }
66
- const newFileContents = `${fileContents.slice(0, nrwlAngularTestingImportNodes[0].getStart())}${validNrwlTestingImports.length > 0
67
- ? `import {${validNrwlTestingImports.join(',')}} from '@nrwl/angular/testing';`
68
- : ''}
69
- ${validJasmineMarbleImports.length > 0
70
- ? `import {${validJasmineMarbleImports.join(',')}} from 'jasmine-marbles';${fileContents.slice(nrwlAngularTestingImportNodes[0].getEnd(), -1)}`
71
- : ''}`;
72
- tree.write(path, newFileContents);
73
- });
74
- }
75
- return usesJasmineMarbles;
76
- }
77
- function addJasmineMarblesDevDependencyIfUsed(tree, usesJasmineMarbles) {
78
- if (!usesJasmineMarbles) {
79
- return;
80
- }
81
- const pkgJson = (0, devkit_1.readJson)(tree, 'package.json');
82
- const jasmineMarblesDependency = pkgJson.dependencies['jasmine-marbles'];
83
- const jasmineMarblesDevDependency = pkgJson.devDependencies['jasmine-marbles'];
84
- if (jasmineMarblesDependency || jasmineMarblesDevDependency) {
85
- return;
86
- }
87
- const jasmineMarblesVersion = getJasmineMarblesVersion(tree);
88
- (0, devkit_1.addDependenciesToPackageJson)(tree, {}, {
89
- 'jasmine-marbles': jasmineMarblesVersion,
90
- });
91
- }
92
- function getJasmineMarblesVersion(tree) {
93
- let rxjsVersion;
94
- try {
95
- const { dependencies, devDependencies } = (0, devkit_1.readJson)(tree, 'package.json');
96
- rxjsVersion = (0, semver_1.checkAndCleanWithSemver)('rxjs', dependencies?.rxjs ?? devDependencies?.rxjs);
97
- }
98
- catch {
99
- rxjsVersion = (0, semver_1.checkAndCleanWithSemver)('rxjs', versions_1.rxjsVersion);
100
- }
101
- return (0, semver_2.gte)(rxjsVersion, '7.0.0') ? versions_1.jasmineMarblesVersion : '~0.8.3';
102
- }
@@ -1,4 +0,0 @@
1
- import 'nx/src/internal-testing-utils/mock-project-graph';
2
- import type { Tree } from '@nx/devkit';
3
- export declare const DEFAULT_BROWSERS: string[];
4
- export default function removeBrowserlistConfig(tree: Tree): Promise<void>;
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_BROWSERS = void 0;
4
- exports.default = removeBrowserlistConfig;
5
- require("nx/src/internal-testing-utils/mock-project-graph");
6
- const devkit_1 = require("@nx/devkit");
7
- const path_1 = require("path");
8
- const validBrowserslistConfigFilenames = new Set([
9
- 'browserslist',
10
- '.browserslistrc',
11
- ]);
12
- exports.DEFAULT_BROWSERS = [
13
- 'last 1 Chrome version',
14
- 'last 1 Firefox version',
15
- 'last 2 Edge major versions',
16
- 'last 2 Safari major versions',
17
- 'last 2 iOS major versions',
18
- 'Firefox ESR',
19
- ];
20
- async function removeBrowserlistConfig(tree) {
21
- let browserslist;
22
- try {
23
- browserslist = await import('browserslist');
24
- }
25
- catch {
26
- devkit_1.logger.warn('Skipping migration because the "browserslist" package could not be loaded.');
27
- return;
28
- }
29
- // Set the defaults to match the defaults in build-angular.
30
- browserslist.defaults = exports.DEFAULT_BROWSERS;
31
- const defaultSupportedBrowsers = new Set(browserslist(exports.DEFAULT_BROWSERS));
32
- const es5Browsers = new Set(browserslist(['supports es6-module']));
33
- (0, devkit_1.visitNotIgnoredFiles)(tree, '/', (path) => {
34
- const fileName = (0, path_1.basename)(path);
35
- if (!validBrowserslistConfigFilenames.has(fileName) ||
36
- path.startsWith('node_modules')) {
37
- return;
38
- }
39
- const { defaults: browsersListConfig, ...otherConfigs } = browserslist.parseConfig(tree.read(path, 'utf-8'));
40
- if (Object.keys(otherConfigs).length) {
41
- // The config contains additional sections.
42
- return;
43
- }
44
- const browserslistInProject = browserslist(
45
- // Exclude from the list ES5 browsers which are not supported.
46
- browsersListConfig.map((s) => `${s} and supports es6-module`), {
47
- ignoreUnknownVersions: true,
48
- });
49
- if (defaultSupportedBrowsers.size !== browserslistInProject.length) {
50
- return;
51
- }
52
- const shouldDelete = browserslistInProject.every((browser) => defaultSupportedBrowsers.has(browser));
53
- if (shouldDelete) {
54
- // All browsers are the same as the default config.
55
- // Delete file as it's redundant.
56
- tree.delete(path);
57
- }
58
- });
59
- }
@@ -1,2 +0,0 @@
1
- import type { Tree } from '@nx/devkit';
2
- export default function (tree: Tree): Promise<void>;
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- const tslib_1 = require("tslib");
5
- const devkit_1 = require("@nx/devkit");
6
- const ts = tslib_1.__importStar(require("typescript"));
7
- const file_change_recorder_1 = require("../../utils/file-change-recorder");
8
- async function default_1(tree) {
9
- (0, devkit_1.visitNotIgnoredFiles)(tree, '/', (path) => {
10
- if (path.endsWith('.ts') && !path.endsWith('.d.ts')) {
11
- const content = tree.read(path, 'utf8');
12
- if (content.includes('@angular/platform-server') &&
13
- content.includes('renderModule')) {
14
- const source = ts.createSourceFile(path, content.toString().replace(/^\uFEFF/, ''), ts.ScriptTarget.Latest, true);
15
- let recorder;
16
- let printer;
17
- ts.forEachChild(source, function analyze(node) {
18
- if (!(ts.isExportDeclaration(node) &&
19
- node.moduleSpecifier &&
20
- ts.isStringLiteral(node.moduleSpecifier) &&
21
- node.moduleSpecifier.text === '@angular/platform-server' &&
22
- node.exportClause &&
23
- ts.isNamedExports(node.exportClause))) {
24
- // Not a @angular/platform-server named export.
25
- return;
26
- }
27
- const exportClause = node.exportClause;
28
- const newElements = [];
29
- for (const element of exportClause.elements) {
30
- if (element.name.text !== 'renderModule') {
31
- newElements.push(element);
32
- }
33
- }
34
- if (newElements.length === exportClause.elements.length) {
35
- // No changes
36
- return;
37
- }
38
- recorder ??= new file_change_recorder_1.FileChangeRecorder(tree, path);
39
- if (newElements.length) {
40
- // Update named exports as there are leftovers.
41
- const newExportClause = ts.factory.updateNamedExports(exportClause, newElements);
42
- printer ??= ts.createPrinter();
43
- const fix = printer.printNode(ts.EmitHint.Unspecified, newExportClause, source);
44
- const index = exportClause.getStart();
45
- const length = exportClause.getWidth();
46
- recorder.remove(index, index + length);
47
- recorder.insertLeft(index, fix);
48
- }
49
- else {
50
- // Delete export as no exports remain.
51
- recorder.remove(node.getStart(), node.getStart() + node.getWidth());
52
- }
53
- ts.forEachChild(node, analyze);
54
- });
55
- if (recorder) {
56
- recorder.applyChanges();
57
- }
58
- }
59
- }
60
- });
61
- await (0, devkit_1.formatFiles)(tree);
62
- }
@@ -1,2 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- export default function (tree: Tree): Promise<void>;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- const devkit_1 = require("@nx/devkit");
5
- const angularCliVersion = '~15.0.0';
6
- async function default_1(tree) {
7
- let shouldFormat = false;
8
- (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
9
- if (json.devDependencies?.['@angular/cli']) {
10
- json.devDependencies['@angular/cli'] = angularCliVersion;
11
- shouldFormat = true;
12
- }
13
- else if (json.dependencies?.['@angular/cli']) {
14
- json.dependencies['@angular/cli'] = angularCliVersion;
15
- shouldFormat = true;
16
- }
17
- return json;
18
- });
19
- if (shouldFormat) {
20
- await (0, devkit_1.formatFiles)(tree);
21
- }
22
- }
@@ -1,2 +0,0 @@
1
- import type { Tree } from '@nx/devkit';
2
- export default function (tree: Tree): Promise<void>;
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- const tslib_1 = require("tslib");
5
- const devkit_1 = require("@nx/devkit");
6
- const ts = tslib_1.__importStar(require("typescript"));
7
- const workspace_models_1 = require("@schematics/angular/utility/workspace-models");
8
- const executor_options_utils_1 = require("@nx/devkit/src/generators/executor-options-utils");
9
- const file_change_recorder_1 = require("../../utils/file-change-recorder");
10
- async function default_1(tree) {
11
- for (const file of findTestMainFiles(tree)) {
12
- updateTestFile(tree, file);
13
- }
14
- await (0, devkit_1.formatFiles)(tree);
15
- }
16
- function findTestMainFiles(tree) {
17
- const testFiles = new Set();
18
- // find all test.ts files.
19
- (0, executor_options_utils_1.forEachExecutorOptions)(tree, workspace_models_1.Builders.Karma, (options) => {
20
- if (typeof options.main === 'string' && tree.exists(options.main)) {
21
- testFiles.add(options.main);
22
- }
23
- });
24
- return testFiles;
25
- }
26
- function updateTestFile(tree, file) {
27
- const content = tree.read(file, 'utf8');
28
- if (!content.includes('require.context')) {
29
- return;
30
- }
31
- const sourceFile = ts.createSourceFile(file, content.replace(/^\uFEFF/, ''), ts.ScriptTarget.Latest, true);
32
- const usedVariableNames = new Set();
33
- const recorder = new file_change_recorder_1.FileChangeRecorder(tree, sourceFile.fileName);
34
- ts.forEachChild(sourceFile, (node) => {
35
- if (ts.isVariableStatement(node)) {
36
- const variableDeclaration = node.declarationList.declarations[0];
37
- if (ts
38
- .getModifiers(node)
39
- ?.some((m) => m.kind === ts.SyntaxKind.DeclareKeyword)) {
40
- // `declare const require`
41
- if (variableDeclaration.name.getText() !== 'require') {
42
- return;
43
- }
44
- }
45
- else {
46
- // `const context = require.context('./', true, /\.spec\.ts$/);`
47
- if (!variableDeclaration.initializer
48
- ?.getText()
49
- .startsWith('require.context')) {
50
- return;
51
- }
52
- // add variable name as used.
53
- usedVariableNames.add(variableDeclaration.name.getText());
54
- }
55
- // Delete node.
56
- recorder.remove(node.getFullStart(), node.getFullStart() + node.getFullWidth());
57
- }
58
- if (usedVariableNames.size &&
59
- ts.isExpressionStatement(node) && // context.keys().map(context);
60
- ts.isCallExpression(node.expression) && // context.keys().map(context);
61
- ts.isPropertyAccessExpression(node.expression.expression) && // context.keys().map
62
- ts.isCallExpression(node.expression.expression.expression) && // context.keys()
63
- ts.isPropertyAccessExpression(node.expression.expression.expression.expression) && // context.keys
64
- ts.isIdentifier(node.expression.expression.expression.expression.expression) && // context
65
- usedVariableNames.has(node.expression.expression.expression.expression.expression.getText())) {
66
- // `context.keys().map(context);`
67
- // `context.keys().forEach(context);`
68
- recorder.remove(node.getFullStart(), node.getFullStart() + node.getFullWidth());
69
- }
70
- });
71
- recorder.applyChanges();
72
- }
@@ -1,2 +0,0 @@
1
- import type { Tree } from '@nx/devkit';
2
- export default function updateTypescriptTarget(tree: Tree): Promise<void>;
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = updateTypescriptTarget;
4
- const devkit_1 = require("@nx/devkit");
5
- const workspace_models_1 = require("@schematics/angular/utility/workspace-models");
6
- function updateTarget(tree, tsconfigPath) {
7
- (0, devkit_1.updateJson)(tree, tsconfigPath, (json) => ({
8
- ...json,
9
- compilerOptions: {
10
- ...(json.compilerOptions ?? {}),
11
- target: 'ES2022',
12
- useDefineForClassFields: false,
13
- },
14
- }));
15
- }
16
- async function updateTypescriptTarget(tree) {
17
- const projects = (0, devkit_1.getProjects)(tree);
18
- for (const [, project] of projects) {
19
- if (!project.targets)
20
- continue;
21
- for (const [, target] of Object.entries(project.targets)) {
22
- // Update all other known CLI builders that use a tsconfig
23
- const tsConfigs = [
24
- target.options || {},
25
- ...Object.values(target.configurations || {}),
26
- ]
27
- .filter((opt) => typeof opt?.tsConfig === 'string')
28
- .map((opt) => opt.tsConfig);
29
- const uniqueTsConfigs = [...new Set(tsConfigs)];
30
- if (uniqueTsConfigs.length < 1) {
31
- continue;
32
- }
33
- const supportedExecutors = new Set([
34
- workspace_models_1.Builders.Server,
35
- workspace_models_1.Builders.Karma,
36
- workspace_models_1.Builders.Browser,
37
- workspace_models_1.Builders.NgPackagr,
38
- '@nrwl/angular:webpack-browser',
39
- '@nrwl/angular:ng-packagr-lite',
40
- '@nrwl/angular:package',
41
- '@nrwl/angular:delegate-build',
42
- '@nrwl/jest:jest',
43
- ]);
44
- if (supportedExecutors.has(target.executor)) {
45
- for (const tsConfig of uniqueTsConfigs) {
46
- updateTarget(tree, tsConfig);
47
- }
48
- }
49
- }
50
- }
51
- await (0, devkit_1.formatFiles)(tree);
52
- }
@@ -1,2 +0,0 @@
1
- import type { Tree } from '@nx/devkit';
2
- export default function updateWorkspaceConfigurations(tree: Tree): Promise<void>;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = updateWorkspaceConfigurations;
4
- const devkit_1 = require("@nx/devkit");
5
- const workspace_models_1 = require("@schematics/angular/utility/workspace-models");
6
- async function updateWorkspaceConfigurations(tree) {
7
- const projects = (0, devkit_1.getProjects)(tree);
8
- const supportedExecutors = new Set([workspace_models_1.Builders.Server]);
9
- for (const [name, project] of projects) {
10
- for (const [targetName, target] of Object.entries(project.targets || {})) {
11
- if (!supportedExecutors.has(target.executor)) {
12
- continue;
13
- }
14
- target.options.bundleDependencies = undefined;
15
- for (const [configurationName, configuration] of Object.entries(target.configurations || {})) {
16
- configuration.bundleDependencies = undefined;
17
- target[configurationName] = configuration;
18
- }
19
- project.targets[targetName] = target;
20
- (0, devkit_1.updateProjectConfiguration)(tree, name, project);
21
- }
22
- }
23
- await (0, devkit_1.formatFiles)(tree);
24
- }
@@ -1,2 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- export default function (tree: Tree): Promise<void>;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- const devkit_1 = require("@nx/devkit");
5
- const angularCliVersion = '~15.1.0';
6
- async function default_1(tree) {
7
- let shouldFormat = false;
8
- (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
9
- if (json.devDependencies?.['@angular/cli']) {
10
- json.devDependencies['@angular/cli'] = angularCliVersion;
11
- shouldFormat = true;
12
- }
13
- else if (json.dependencies?.['@angular/cli']) {
14
- json.dependencies['@angular/cli'] = angularCliVersion;
15
- shouldFormat = true;
16
- }
17
- return json;
18
- });
19
- if (shouldFormat) {
20
- await (0, devkit_1.formatFiles)(tree);
21
- }
22
- }
@@ -1,2 +0,0 @@
1
- import type { Tree } from '@nx/devkit';
2
- export default function (tree: Tree): Promise<void>;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- const devkit_1 = require("@nx/devkit");
5
- const child_process_1 = require("child_process");
6
- const path_1 = require("path");
7
- const version_utils_1 = require("../../generators/utils/version-utils");
8
- const version_utils_2 = require("../../utils/version-utils");
9
- async function default_1(tree) {
10
- const packagesToInstall = [
11
- '@angular-devkit/core',
12
- '@angular-devkit/schematics',
13
- '@schematics/angular',
14
- ];
15
- const pkgJson = (0, devkit_1.readJson)(tree, 'package.json');
16
- const angularMajorVersion = (0, version_utils_1.getInstalledAngularMajorVersion)(tree);
17
- const angularDevkitVersion = (0, version_utils_2.getPkgVersionForAngularMajorVersion)('angularDevkitVersion', angularMajorVersion);
18
- const angularCliVersion = pkgJson.devDependencies?.['@angular-devkit/build-angular'] ??
19
- pkgJson.dependencies?.['@angular-devkit/build-angular'] ??
20
- angularDevkitVersion;
21
- const filteredPackages = packagesToInstall
22
- .filter((pkg) => !pkgJson.devDependencies?.[pkg] && !pkgJson.dependencies?.[pkg])
23
- .reduce((allPkgs, pkg) => ({ ...allPkgs, [pkg]: angularCliVersion }), {});
24
- // even though we are going to install the packages directly, we still want
25
- // to add them to the tree so the migrate command knows changes were made
26
- (0, devkit_1.addDependenciesToPackageJson)(tree, {}, { ...filteredPackages });
27
- // we need to install them immediately so the packages are available for
28
- // other migrations that might be using them
29
- pkgJson.devDependencies ??= {};
30
- Object.entries(filteredPackages).forEach(([pkg, version]) => {
31
- pkgJson.devDependencies[pkg] = version;
32
- });
33
- (0, devkit_1.writeJsonFile)((0, path_1.join)(tree.root, 'package.json'), pkgJson);
34
- const pmc = (0, devkit_1.getPackageManagerCommand)();
35
- (0, child_process_1.execSync)(pmc.install, { stdio: [0, 1, 2] });
36
- }
@@ -1,2 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- export default function (tree: Tree): Promise<void>;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- const devkit_1 = require("@nx/devkit");
5
- const angularCliVersion = '~15.2.0';
6
- async function default_1(tree) {
7
- let shouldFormat = false;
8
- (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
9
- if (json.devDependencies?.['@angular/cli']) {
10
- json.devDependencies['@angular/cli'] = angularCliVersion;
11
- shouldFormat = true;
12
- }
13
- else if (json.dependencies?.['@angular/cli']) {
14
- json.dependencies['@angular/cli'] = angularCliVersion;
15
- shouldFormat = true;
16
- }
17
- return json;
18
- });
19
- if (shouldFormat) {
20
- await (0, devkit_1.formatFiles)(tree);
21
- }
22
- }
@@ -1,2 +0,0 @@
1
- import type { Tree } from '@nx/devkit';
2
- export default function updateFileServerExecutor(tree: Tree): Promise<void>;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = updateFileServerExecutor;
4
- const devkit_1 = require("@nx/devkit");
5
- const versions_1 = require("../../utils/versions");
6
- async function updateFileServerExecutor(tree) {
7
- const oldExecutor = '@nrwl/angular:file-server';
8
- const newExecutor = '@nrwl/web:file-server';
9
- let needsNrwlWeb = false;
10
- const nxJson = (0, devkit_1.readNxJson)(tree);
11
- if (nxJson.targetDefaults) {
12
- let nxJsonChanged = false;
13
- for (const [targetName, target] of Object.entries(nxJson.targetDefaults)) {
14
- if (target.executor === oldExecutor) {
15
- nxJson.targetDefaults[targetName].executor = newExecutor;
16
- nxJsonChanged = true;
17
- needsNrwlWeb = true;
18
- }
19
- }
20
- if (nxJsonChanged) {
21
- (0, devkit_1.updateNxJson)(tree, nxJson);
22
- }
23
- }
24
- const projects = (0, devkit_1.getProjects)(tree);
25
- for (const [projectName, project] of projects.entries()) {
26
- let projectChanged = false;
27
- for (const [targetName, target] of Object.entries(project.targets ?? {})) {
28
- if (target.executor === oldExecutor) {
29
- project.targets[targetName].executor = newExecutor;
30
- projectChanged = true;
31
- needsNrwlWeb = true;
32
- }
33
- }
34
- if (projectChanged) {
35
- (0, devkit_1.updateProjectConfiguration)(tree, projectName, project);
36
- }
37
- }
38
- if (needsNrwlWeb) {
39
- (0, devkit_1.addDependenciesToPackageJson)(tree, {}, { '@nrwl/web': versions_1.nxVersion });
40
- }
41
- await (0, devkit_1.formatFiles)(tree);
42
- }
@@ -1,3 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- export declare function updateTestingTsconfigForJest(tree: Tree): Promise<void>;
3
- export default updateTestingTsconfigForJest;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateTestingTsconfigForJest = updateTestingTsconfigForJest;
4
- const devkit_1 = require("@nx/devkit");
5
- const executor_options_utils_1 = require("@nx/devkit/src/generators/executor-options-utils");
6
- async function updateTestingTsconfigForJest(tree) {
7
- const graph = await (0, devkit_1.createProjectGraphAsync)();
8
- const projects = (0, devkit_1.getProjects)(tree);
9
- (0, executor_options_utils_1.forEachExecutorOptionsInGraph)(graph, '@nrwl/jest:jest', (options, projectName) => {
10
- const projectConfig = projects.get(projectName);
11
- if (!isJestPresetAngular(tree, options.jestConfig)) {
12
- return;
13
- }
14
- const tsconfigPath = (0, devkit_1.joinPathFragments)(projectConfig.root, 'tsconfig.spec.json');
15
- if (tree.exists(tsconfigPath)) {
16
- (0, devkit_1.updateJson)(tree, tsconfigPath, (json) => {
17
- json.compilerOptions ??= {};
18
- json.compilerOptions.target ??= 'es2016';
19
- return json;
20
- }, { expectComments: true, allowTrailingComma: true });
21
- }
22
- });
23
- await (0, devkit_1.formatFiles)(tree);
24
- }
25
- function isJestPresetAngular(tree, jestConfigPath) {
26
- if (jestConfigPath && tree.exists(jestConfigPath)) {
27
- const contents = tree.read(jestConfigPath, 'utf-8');
28
- return contents.includes('jest-preset-angular');
29
- }
30
- return false;
31
- }
32
- exports.default = updateTestingTsconfigForJest;