@nx/angular 19.1.0-canary.20240523-261b0ff → 19.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/executors.json +1 -1
- package/migrations.json +82 -0
- package/package.json +12 -12
- package/src/builders/dev-server/dev-server.impl.js +1 -1
- package/src/builders/dev-server/schema.json +1 -1
- package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +4 -1
- package/src/builders/utilities/module-federation.d.ts +2 -1
- package/src/builders/utilities/module-federation.js +17 -3
- package/src/builders/webpack-browser/schema.json +4 -3
- package/src/builders/webpack-browser/webpack-browser.impl.js +1 -1
- package/src/builders/webpack-server/schema.json +7 -6
- package/src/builders/webpack-server/webpack-server.impl.js +3 -5
- package/src/executors/application/application.impl.d.ts +2 -1
- package/src/executors/application/application.impl.js +2 -2
- package/src/executors/application/schema.json +4 -3
- package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +2 -7
- package/src/executors/browser-esbuild/browser-esbuild.impl.js +2 -2
- package/src/executors/browser-esbuild/schema.json +4 -3
- package/src/executors/extract-i18n/extract-i18n.impl.js +2 -2
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +2 -1
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +8 -4
- package/src/executors/module-federation-dev-server/schema.json +1 -1
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +6 -6
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.js +3 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.js +2 -1
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.js +2 -1
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.d.ts +1 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.js +5 -4
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.js +11 -11
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +2 -1
- package/src/executors/ng-packagr-lite/schema.json +1 -1
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +5 -4
- package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +2 -1
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +4 -4
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +1 -2
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +5 -4
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +11 -11
- package/src/executors/utilities/esbuild-extensions.d.ts +2 -4
- package/src/executors/utilities/module-loader.d.ts +1 -2
- package/src/executors/utilities/ng-packagr/stylesheet-processor.js +22 -8
- package/src/executors/utilities/typescript.d.ts +1 -2
- package/src/executors/utilities/typescript.js +4 -3
- package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
- package/src/generators/add-linting/schema.json +1 -1
- package/src/generators/application/files/base-pre18/src/favicon.ico +0 -0
- package/src/generators/application/files/ng-module/src/main.ts__tpl__ +3 -1
- package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +2 -2
- package/src/generators/application/lib/add-linting.js +2 -1
- package/src/generators/application/lib/create-files.js +7 -0
- package/src/generators/application/lib/create-project.js +12 -5
- package/src/generators/component-test/component-test.js +1 -1
- package/src/generators/cypress-component-configuration/cypress-component-configuration.js +3 -3
- package/src/generators/federate-module/lib/add-remote.js +2 -1
- package/src/generators/host/host.js +3 -2
- package/src/generators/library/library.js +4 -3
- package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +3 -2
- package/src/generators/ng-add/migrators/migrator.d.ts +1 -1
- package/src/generators/ng-add/migrators/migrator.js +7 -7
- package/src/generators/ng-add/migrators/projects/app.migrator.js +2 -2
- package/src/generators/ng-add/migrators/projects/e2e.migrator.js +1 -1
- package/src/generators/ng-add/utilities/validation-logging.js +2 -1
- package/src/generators/ngrx-root-store/ngrx-root-store.js +2 -1
- package/src/generators/setup-mf/lib/add-remote-to-host.js +13 -4
- package/src/generators/setup-mf/lib/fix-bootstrap.d.ts +1 -1
- package/src/generators/setup-mf/lib/fix-bootstrap.js +12 -5
- package/src/generators/setup-mf/lib/setup-host-if-dynamic.js +5 -1
- package/src/generators/setup-mf/setup-mf.js +1 -1
- package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +4 -3
- package/src/generators/setup-ssr/files/server/server-builder/v17+/__serverFileName__ +4 -3
- package/src/generators/setup-ssr/lib/add-dependencies.js +2 -1
- package/src/generators/setup-ssr/lib/generate-files.js +1 -7
- package/src/generators/setup-ssr/lib/index.d.ts +0 -1
- package/src/generators/setup-ssr/lib/index.js +0 -1
- package/src/generators/setup-ssr/lib/validate-options.js +0 -13
- package/src/generators/setup-ssr/schema.json +4 -3
- package/src/generators/setup-ssr/setup-ssr.js +0 -3
- package/src/generators/stories/stories.js +3 -2
- package/src/generators/storybook-configuration/lib/generate-stories.js +1 -1
- package/src/generators/utils/storybook-ast/tree-utilities.js +2 -1
- package/src/generators/utils/version-utils.js +4 -3
- package/src/migrations/update-15-2-0/remove-browserlist-config.js +1 -1
- package/src/migrations/update-15-2-0/remove-platform-server-exports.js +2 -1
- package/src/migrations/update-15-2-0/update-karma-main-file.js +2 -1
- package/src/migrations/update-16-1-0/remove-render-module-platform-server-exports.js +2 -1
- package/src/migrations/update-19-1-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-19-1-0/update-angular-cli.js +23 -0
- package/src/utils/backward-compatible-versions.d.ts +10 -5
- package/src/utils/backward-compatible-versions.js +18 -19
- package/src/utils/file-change-recorder.js +2 -1
- package/src/utils/mf/with-module-federation.js +3 -2
- package/src/utils/version-utils.d.ts +2 -2
- package/src/utils/version-utils.js +2 -1
- package/src/utils/versions.d.ts +4 -4
- package/src/utils/versions.js +4 -4
- package/index.js +0 -8
- package/mf/index.js +0 -7
- package/mf/mf.js +0 -53
- package/src/builders/webpack-server/validate-options.d.ts +0 -2
- package/src/builders/webpack-server/validate-options.js +0 -33
- package/src/executors/utilities/ng-compiler-cli.d.ts +0 -1
- package/src/executors/utilities/ng-compiler-cli.js +0 -8
- package/src/generators/setup-ssr/files/ngmodule/pre-v15-2/src/main.ts__tpl__ +0 -14
- package/src/generators/setup-ssr/lib/update-app-module.d.ts +0 -3
- package/src/generators/setup-ssr/lib/update-app-module.js +0 -27
- package/src/runtime/nx/data-persistence.js +0 -350
- package/testing/index.js +0 -6
- package/testing/src/testing-utils.js +0 -40
- /package/src/generators/application/files/{base/src → base-18+/public}/favicon.ico +0 -0
- /package/src/generators/application/files/{base → base-pre18}/src/assets/.gitkeep__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/ngmodule/{base/src → src}/__main__ +0 -0
- /package/src/generators/setup-ssr/files/ngmodule/{base/src → src}/app/__rootModuleFileName__ +0 -0
@@ -1,9 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.addRemote = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
4
5
|
const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
|
5
6
|
const test_runners_1 = require("../../../utils/test-runners");
|
6
|
-
const remote_1 = require("../../remote/remote");
|
7
|
+
const remote_1 = tslib_1.__importDefault(require("../../remote/remote"));
|
7
8
|
const check_remote_exists_1 = require("./check-remote-exists");
|
8
9
|
async function addRemote(tree, schema) {
|
9
10
|
const tasks = [];
|
@@ -1,11 +1,12 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.hostInternal = exports.host = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
4
5
|
const devkit_1 = require("@nx/devkit");
|
5
6
|
const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
|
6
7
|
const test_runners_1 = require("../../utils/test-runners");
|
7
|
-
const application_1 = require("../application/application");
|
8
|
-
const remote_1 = require("../remote/remote");
|
8
|
+
const application_1 = tslib_1.__importDefault(require("../application/application"));
|
9
|
+
const remote_1 = tslib_1.__importDefault(require("../remote/remote"));
|
9
10
|
const setup_mf_1 = require("../setup-mf/setup-mf");
|
10
11
|
const lib_1 = require("./lib");
|
11
12
|
const add_mf_env_to_inputs_1 = require("../utils/add-mf-env-to-inputs");
|
@@ -1,12 +1,13 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.libraryGeneratorInternal = exports.libraryGenerator = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
4
5
|
const devkit_1 = require("@nx/devkit");
|
5
6
|
const eslint_1 = require("@nx/eslint");
|
6
7
|
const js_1 = require("@nx/js");
|
7
|
-
const init_1 = require("../../generators/init/init");
|
8
|
-
const add_linting_1 = require("../add-linting/add-linting");
|
9
|
-
const setup_tailwind_1 = require("../setup-tailwind/setup-tailwind");
|
8
|
+
const init_1 = tslib_1.__importDefault(require("../../generators/init/init"));
|
9
|
+
const add_linting_1 = tslib_1.__importDefault(require("../add-linting/add-linting"));
|
10
|
+
const setup_tailwind_1 = tslib_1.__importDefault(require("../setup-tailwind/setup-tailwind"));
|
10
11
|
const version_utils_1 = require("../utils/version-utils");
|
11
12
|
const dependencies_1 = require("../utils/dependencies");
|
12
13
|
const add_module_1 = require("./lib/add-module");
|
@@ -41,8 +41,9 @@ class AngularDevkitKarmaMigrator extends builder_migrator_1.BuilderMigrator {
|
|
41
41
|
target.options.main =
|
42
42
|
target.options.main && this.convertAsset(target.options.main);
|
43
43
|
target.options.polyfills = Array.isArray(target.options.polyfills)
|
44
|
-
? target.options.polyfills.map((p) => this.
|
45
|
-
: target.options.polyfills &&
|
44
|
+
? target.options.polyfills.map((p) => this.convertSourceRootPath(p))
|
45
|
+
: target.options.polyfills &&
|
46
|
+
this.convertSourceRootPath(target.options.polyfills);
|
46
47
|
target.options.tsConfig =
|
47
48
|
target.options.tsConfig &&
|
48
49
|
(0, devkit_1.joinPathFragments)(this.project.newRoot, (0, path_1.basename)(target.options.tsConfig));
|
@@ -12,12 +12,12 @@ export declare abstract class Migrator {
|
|
12
12
|
abstract validate(): ValidationResult;
|
13
13
|
protected convertAsset(asset: string | any): string | any;
|
14
14
|
protected convertRootPath(originalPath: string): string;
|
15
|
+
protected convertSourceRootPath(originalPath: string): string;
|
15
16
|
protected moveFile(from: string, to: string, required?: boolean): void;
|
16
17
|
protected moveFilePathsFromTargetToProjectRoot(target: TargetConfiguration, options: string[]): void;
|
17
18
|
protected moveProjectRootFile(filePath: string, isRequired?: boolean): void;
|
18
19
|
protected updateCacheableOperations(targetNames: string[]): void;
|
19
20
|
protected updateTsConfigFile(tsConfigPath: string, rootTsConfigFile: string, projectOffsetFromRoot: string): void;
|
20
|
-
private convertSourceRootPath;
|
21
21
|
private getTargetValuesForOption;
|
22
22
|
private getValueForOption;
|
23
23
|
}
|
@@ -12,10 +12,10 @@ class Migrator {
|
|
12
12
|
}
|
13
13
|
convertAsset(asset) {
|
14
14
|
if (typeof asset === 'string') {
|
15
|
-
return this.
|
15
|
+
return this.convertRootPath(asset);
|
16
16
|
}
|
17
17
|
else {
|
18
|
-
return { ...asset, input: this.
|
18
|
+
return { ...asset, input: this.convertRootPath(asset.input) };
|
19
19
|
}
|
20
20
|
}
|
21
21
|
convertRootPath(originalPath) {
|
@@ -23,6 +23,11 @@ class Migrator {
|
|
23
23
|
? (0, devkit_1.joinPathFragments)(this.project.newRoot, originalPath.replace(this.project.oldRoot, ''))
|
24
24
|
: originalPath;
|
25
25
|
}
|
26
|
+
convertSourceRootPath(originalPath) {
|
27
|
+
return originalPath?.startsWith(this.project.oldSourceRoot)
|
28
|
+
? (0, devkit_1.joinPathFragments)(this.project.newSourceRoot, originalPath.replace(this.project.oldSourceRoot, ''))
|
29
|
+
: originalPath;
|
30
|
+
}
|
26
31
|
moveFile(from, to, required = true) {
|
27
32
|
if (!this.tree.exists(from)) {
|
28
33
|
if (required) {
|
@@ -78,11 +83,6 @@ class Migrator {
|
|
78
83
|
return json;
|
79
84
|
});
|
80
85
|
}
|
81
|
-
convertSourceRootPath(originalPath) {
|
82
|
-
return originalPath?.startsWith(this.project.oldSourceRoot)
|
83
|
-
? (0, devkit_1.joinPathFragments)(this.project.newSourceRoot, originalPath.replace(this.project.oldSourceRoot, ''))
|
84
|
-
: originalPath;
|
85
|
-
}
|
86
86
|
getTargetValuesForOption(target, optionPath) {
|
87
87
|
const values = new Set();
|
88
88
|
const value = this.getValueForOption(target.options, optionPath);
|
@@ -160,8 +160,8 @@ class AppMigrator extends project_migrator_1.ProjectMigrator {
|
|
160
160
|
buildOptions.polyfills =
|
161
161
|
buildOptions.polyfills &&
|
162
162
|
(Array.isArray(buildOptions.polyfills)
|
163
|
-
? buildOptions.polyfills.map((asset) => this.
|
164
|
-
: this.
|
163
|
+
? buildOptions.polyfills.map((asset) => this.convertSourceRootPath(asset))
|
164
|
+
: this.convertSourceRootPath(buildOptions.polyfills));
|
165
165
|
buildOptions.tsConfig =
|
166
166
|
buildOptions.tsConfig &&
|
167
167
|
(0, devkit_1.joinPathFragments)(this.project.newRoot, (0, path_1.basename)(buildOptions.tsConfig));
|
@@ -237,7 +237,7 @@ class E2eMigrator extends project_migrator_1.ProjectMigrator {
|
|
237
237
|
const nxJson = (0, devkit_1.readNxJson)(this.tree) ?? {};
|
238
238
|
const addPlugin = process.env.NX_ADD_PLUGINS !== 'false' &&
|
239
239
|
nxJson.useInferencePlugins !== false;
|
240
|
-
const { configurationGenerator } =
|
240
|
+
const { configurationGenerator } = (require('@nx/cypress'));
|
241
241
|
await configurationGenerator(this.tree, {
|
242
242
|
project: this.project.name,
|
243
243
|
linter: this.isProjectUsingEsLint ? eslint_1.Linter.EsLint : eslint_1.Linter.None,
|
@@ -1,7 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.getProjectValidationResultMessage = exports.arrayToString = void 0;
|
4
|
-
const
|
4
|
+
const tslib_1 = require("tslib");
|
5
|
+
const chalk = tslib_1.__importStar(require("chalk"));
|
5
6
|
function arrayToString(array) {
|
6
7
|
if (array.length === 0) {
|
7
8
|
return '';
|
@@ -1,9 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.ngrxRootStoreGenerator = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
4
5
|
const devkit_1 = require("@nx/devkit");
|
5
6
|
const lib_1 = require("./lib");
|
6
|
-
const ngrx_feature_store_1 = require("../ngrx-feature-store/ngrx-feature-store");
|
7
|
+
const ngrx_feature_store_1 = tslib_1.__importDefault(require("../ngrx-feature-store/ngrx-feature-store"));
|
7
8
|
async function ngrxRootStoreGenerator(tree, schema) {
|
8
9
|
(0, lib_1.validateOptions)(tree, schema);
|
9
10
|
const options = (0, lib_1.normalizeOptions)(tree, schema);
|
@@ -18,8 +18,8 @@ exports.checkIsCommaNeeded = checkIsCommaNeeded;
|
|
18
18
|
function addRemoteToHost(tree, options) {
|
19
19
|
if (options.host) {
|
20
20
|
const hostProject = (0, devkit_1.readProjectConfiguration)(tree, options.host);
|
21
|
-
const pathToMFManifest = (
|
22
|
-
const hostFederationType =
|
21
|
+
const pathToMFManifest = getDynamicManifestFile(tree, hostProject);
|
22
|
+
const hostFederationType = !!pathToMFManifest ? 'dynamic' : 'static';
|
23
23
|
const isHostUsingTypescriptConfig = tree.exists((0, devkit_1.joinPathFragments)(hostProject.root, 'module-federation.config.ts'));
|
24
24
|
if (hostFederationType === 'static') {
|
25
25
|
addRemoteToStaticHost(tree, options, hostProject, isHostUsingTypescriptConfig);
|
@@ -31,8 +31,17 @@ function addRemoteToHost(tree, options) {
|
|
31
31
|
}
|
32
32
|
}
|
33
33
|
exports.addRemoteToHost = addRemoteToHost;
|
34
|
-
function
|
35
|
-
|
34
|
+
function getDynamicManifestFile(tree, project) {
|
35
|
+
// {sourceRoot}/assets/module-federation.manifest.json was the generated
|
36
|
+
// path for the manifest file in the past. We now generate the manifest
|
37
|
+
// file at {root}/public/module-federation.manifest.json. This check
|
38
|
+
// ensures that we can still support the old path for backwards
|
39
|
+
// compatibility since old projects may still have the manifest file
|
40
|
+
// at the old path.
|
41
|
+
return [
|
42
|
+
(0, devkit_1.joinPathFragments)(project.root, 'public/module-federation.manifest.json'),
|
43
|
+
(0, devkit_1.joinPathFragments)(project.sourceRoot, 'assets/module-federation.manifest.json'),
|
44
|
+
].find((path) => tree.exists(path));
|
36
45
|
}
|
37
46
|
function addRemoteToStaticHost(tree, options, hostProject, isHostUsingTypescript) {
|
38
47
|
const hostMFConfigPath = (0, devkit_1.joinPathFragments)(hostProject.root, isHostUsingTypescript
|
@@ -12,15 +12,22 @@ function fixBootstrap(tree, appRoot, options) {
|
|
12
12
|
tree.write((0, devkit_1.joinPathFragments)(appRoot, 'src/bootstrap.ts'), bootstrapCode);
|
13
13
|
}
|
14
14
|
const bootstrapImportCode = `import('./bootstrap').catch(err => console.error(err))`;
|
15
|
-
|
15
|
+
if (options.mfType === 'remote' || options.federationType === 'static') {
|
16
|
+
tree.write(mainFilePath, `${bootstrapImportCode};`);
|
17
|
+
}
|
18
|
+
else {
|
19
|
+
let manifestPath = '/assets/module-federation.manifest.json';
|
20
|
+
if (tree.exists((0, devkit_1.joinPathFragments)(appRoot, 'public/module-federation.manifest.json'))) {
|
21
|
+
manifestPath = '/module-federation.manifest.json';
|
22
|
+
}
|
23
|
+
const fetchMFManifestCode = `import { setRemoteDefinitions } from '@nx/angular/mf';
|
16
24
|
|
17
|
-
fetch('
|
25
|
+
fetch('${manifestPath}')
|
18
26
|
.then((res) => res.json())
|
19
27
|
.then(definitions => setRemoteDefinitions(definitions))
|
20
28
|
.then(() => ${bootstrapImportCode});`;
|
21
|
-
|
22
|
-
|
23
|
-
: `${bootstrapImportCode};`);
|
29
|
+
tree.write(mainFilePath, fetchMFManifestCode);
|
30
|
+
}
|
24
31
|
}
|
25
32
|
exports.fixBootstrap = fixBootstrap;
|
26
33
|
const standaloneBootstrapCode = () => `import { bootstrapApplication } from '@angular/platform-browser';
|
@@ -2,12 +2,16 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.setupHostIfDynamic = void 0;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const version_utils_1 = require("../../utils/version-utils");
|
5
6
|
function setupHostIfDynamic(tree, options) {
|
6
7
|
if (options.federationType === 'static') {
|
7
8
|
return;
|
8
9
|
}
|
10
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
9
11
|
const project = (0, devkit_1.readProjectConfiguration)(tree, options.appName);
|
10
|
-
const pathToMFManifest =
|
12
|
+
const pathToMFManifest = angularMajorVersion >= 18
|
13
|
+
? (0, devkit_1.joinPathFragments)(project.root, 'public/module-federation.manifest.json')
|
14
|
+
: (0, devkit_1.joinPathFragments)(project.sourceRoot, 'assets/module-federation.manifest.json');
|
11
15
|
if (!tree.exists(pathToMFManifest)) {
|
12
16
|
tree.write(pathToMFManifest, '{}');
|
13
17
|
}
|
@@ -27,7 +27,6 @@ async function setupMf(tree, rawOptions) {
|
|
27
27
|
(0, lib_1.changeBuildTarget)(tree, options);
|
28
28
|
(0, lib_1.updateTsConfig)(tree, options);
|
29
29
|
(0, lib_1.setupServeTarget)(tree, options);
|
30
|
-
(0, lib_1.fixBootstrap)(tree, projectConfig.root, options);
|
31
30
|
if (options.mfType === 'host') {
|
32
31
|
(0, lib_1.setupHostIfDynamic)(tree, options);
|
33
32
|
(0, lib_1.updateHostAppRoutes)(tree, options);
|
@@ -43,6 +42,7 @@ async function setupMf(tree, rawOptions) {
|
|
43
42
|
installTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {}, { '@nx/webpack': versions_1.nxVersion });
|
44
43
|
}
|
45
44
|
}
|
45
|
+
(0, lib_1.fixBootstrap)(tree, projectConfig.root, options);
|
46
46
|
if (!options.skipE2E) {
|
47
47
|
(0, lib_1.addCypressOnErrorWorkaround)(tree, options);
|
48
48
|
}
|
@@ -20,12 +20,13 @@ export function app(): express.Express {
|
|
20
20
|
// Example Express Rest API endpoints
|
21
21
|
// server.get('/api/**', (req, res) => { });
|
22
22
|
// Serve static files from /browser
|
23
|
-
server.get('
|
24
|
-
maxAge: '1y'
|
23
|
+
server.get('**', express.static(browserDistFolder, {
|
24
|
+
maxAge: '1y',
|
25
|
+
index: 'index.html',
|
25
26
|
}));
|
26
27
|
|
27
28
|
// All regular routes use the Angular engine
|
28
|
-
server.get('
|
29
|
+
server.get('**', (req, res, next) => {
|
29
30
|
const { protocol, originalUrl, baseUrl, headers } = req;
|
30
31
|
|
31
32
|
commonEngine
|
@@ -23,12 +23,13 @@ export function app(): express.Express {
|
|
23
23
|
// Example Express Rest API endpoints
|
24
24
|
// server.get('/api/**', (req, res) => { });
|
25
25
|
// Serve static files from /browser
|
26
|
-
server.get('
|
27
|
-
maxAge: '1y'
|
26
|
+
server.get('**', express.static(distFolder, {
|
27
|
+
maxAge: '1y',
|
28
|
+
index: 'index.html'
|
28
29
|
}));
|
29
30
|
|
30
31
|
// All regular routes use the Angular engine
|
31
|
-
server.get('
|
32
|
+
server.get('**', (req, res, next) => {
|
32
33
|
const { protocol, originalUrl, baseUrl, headers } = req;
|
33
34
|
|
34
35
|
commonEngine
|
@@ -26,7 +26,8 @@ function addDependencies(tree, isUsingApplicationBuilder) {
|
|
26
26
|
else {
|
27
27
|
dependencies['@nguniversal/express-engine'] =
|
28
28
|
(0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/express-engine')
|
29
|
-
?.version ??
|
29
|
+
?.version ??
|
30
|
+
pkgVersions.ngUniversalVersion;
|
30
31
|
devDependencies['@nguniversal/builders'] =
|
31
32
|
(0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/builders')?.version ??
|
32
33
|
pkgVersions.ngUniversalVersion;
|
@@ -2,8 +2,6 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.generateSSRFiles = void 0;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
-
const semver_1 = require("semver");
|
6
|
-
const version_utils_1 = require("../../utils/version-utils");
|
7
5
|
function generateSSRFiles(tree, schema, isUsingApplicationBuilder) {
|
8
6
|
const { root: projectRoot, targets } = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
|
9
7
|
if (targets.server ||
|
@@ -12,15 +10,11 @@ function generateSSRFiles(tree, schema, isUsingApplicationBuilder) {
|
|
12
10
|
return;
|
13
11
|
}
|
14
12
|
const pathToFiles = (0, devkit_1.joinPathFragments)(__dirname, '..', 'files');
|
15
|
-
const { version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
16
13
|
if (schema.standalone) {
|
17
14
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'standalone'), projectRoot, { ...schema, tpl: '' });
|
18
15
|
}
|
19
16
|
else {
|
20
|
-
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'ngmodule'
|
21
|
-
if ((0, semver_1.lt)(angularVersion, '15.2.0')) {
|
22
|
-
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'ngmodule', 'pre-v15-2'), projectRoot, { ...schema, tpl: '' });
|
23
|
-
}
|
17
|
+
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'ngmodule'), projectRoot, { ...schema, tpl: '' });
|
24
18
|
}
|
25
19
|
}
|
26
20
|
exports.generateSSRFiles = generateSSRFiles;
|
@@ -3,7 +3,6 @@ export * from './add-server-file';
|
|
3
3
|
export * from './generate-files';
|
4
4
|
export * from './generate-server-ts-config';
|
5
5
|
export * from './normalize-options';
|
6
|
-
export * from './update-app-module';
|
7
6
|
export * from './update-project-config';
|
8
7
|
export * from './validate-options';
|
9
8
|
export * from './add-hydration';
|
@@ -6,7 +6,6 @@ tslib_1.__exportStar(require("./add-server-file"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./generate-files"), exports);
|
7
7
|
tslib_1.__exportStar(require("./generate-server-ts-config"), exports);
|
8
8
|
tslib_1.__exportStar(require("./normalize-options"), exports);
|
9
|
-
tslib_1.__exportStar(require("./update-app-module"), exports);
|
10
9
|
tslib_1.__exportStar(require("./update-project-config"), exports);
|
11
10
|
tslib_1.__exportStar(require("./validate-options"), exports);
|
12
11
|
tslib_1.__exportStar(require("./add-hydration"), exports);
|
@@ -3,12 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateOptions = void 0;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const validations_1 = require("../../utils/validations");
|
6
|
-
const version_utils_1 = require("../../utils/version-utils");
|
7
|
-
const semver_1 = require("semver");
|
8
6
|
function validateOptions(tree, options) {
|
9
7
|
validateProject(tree, options.project);
|
10
8
|
validateBuildTarget(tree, options.project);
|
11
|
-
validateHydrationOption(tree, options.hydration);
|
12
9
|
}
|
13
10
|
exports.validateOptions = validateOptions;
|
14
11
|
function validateProject(tree, project) {
|
@@ -24,13 +21,3 @@ function validateBuildTarget(tree, project) {
|
|
24
21
|
throw new Error(`The "${project}" project does not have a "build" target. Please add a "build" target.`);
|
25
22
|
}
|
26
23
|
}
|
27
|
-
function validateHydrationOption(tree, hydration) {
|
28
|
-
if (!hydration) {
|
29
|
-
return;
|
30
|
-
}
|
31
|
-
const installedAngularVersion = (0, version_utils_1.getInstalledAngularVersionInfo)(tree).version;
|
32
|
-
if ((0, semver_1.lt)(installedAngularVersion, '16.0.0')) {
|
33
|
-
throw new Error((0, devkit_1.stripIndents) `The "hydration" option is only supported in Angular >= 16.0.0. You are currently using "${installedAngularVersion}".
|
34
|
-
You can resolve this error by removing the "hydration" option or by migrating to Angular 16.0.0.`);
|
35
|
-
}
|
36
|
-
}
|
@@ -19,8 +19,9 @@
|
|
19
19
|
"appId": {
|
20
20
|
"type": "string",
|
21
21
|
"format": "html-selector",
|
22
|
-
"description": "The `appId` to use with `withServerTransition`.
|
23
|
-
"default": "serverApp"
|
22
|
+
"description": "The `appId` to use with `withServerTransition`.",
|
23
|
+
"default": "serverApp",
|
24
|
+
"x-deprecated": "This is deprecated and ignored since Angular 16 and not supported since Angular 17."
|
24
25
|
},
|
25
26
|
"main": {
|
26
27
|
"type": "string",
|
@@ -55,7 +56,7 @@
|
|
55
56
|
},
|
56
57
|
"hydration": {
|
57
58
|
"type": "boolean",
|
58
|
-
"description": "Set up Hydration for the SSR application. It defaults to `true` for Angular versions >= 17.0.0. Otherwise, it defaults to `false`.
|
59
|
+
"description": "Set up Hydration for the SSR application. It defaults to `true` for Angular versions >= 17.0.0. Otherwise, it defaults to `false`."
|
59
60
|
},
|
60
61
|
"skipFormat": {
|
61
62
|
"type": "boolean",
|
@@ -14,9 +14,6 @@ async function setupSsr(tree, schema) {
|
|
14
14
|
(0, lib_1.addDependencies)(tree, isUsingApplicationBuilder);
|
15
15
|
}
|
16
16
|
(0, lib_1.generateSSRFiles)(tree, options, isUsingApplicationBuilder);
|
17
|
-
if (!options.standalone) {
|
18
|
-
(0, lib_1.updateAppModule)(tree, options);
|
19
|
-
}
|
20
17
|
if (options.hydration) {
|
21
18
|
(0, lib_1.addHydration)(tree, options);
|
22
19
|
}
|
@@ -1,9 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.angularStoriesGenerator = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
4
5
|
const devkit_1 = require("@nx/devkit");
|
5
|
-
const component_cypress_spec_1 = require("../component-cypress-spec/component-cypress-spec");
|
6
|
-
const component_story_1 = require("../component-story/component-story");
|
6
|
+
const component_cypress_spec_1 = tslib_1.__importDefault(require("../component-cypress-spec/component-cypress-spec"));
|
7
|
+
const component_story_1 = tslib_1.__importDefault(require("../component-story/component-story"));
|
7
8
|
const component_info_1 = require("../utils/storybook-ast/component-info");
|
8
9
|
const entry_point_1 = require("../utils/storybook-ast/entry-point");
|
9
10
|
const get_e2e_project_1 = require("./lib/get-e2e-project");
|
@@ -7,7 +7,7 @@ const stories_1 = require("../../stories/stories");
|
|
7
7
|
async function generateStories(tree, options) {
|
8
8
|
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
9
9
|
(0, devkit_1.ensurePackage)('@nx/cypress', versions_1.nxVersion);
|
10
|
-
const { getE2eProjectName } =
|
10
|
+
const { getE2eProjectName } = require('@nx/cypress/src/utils/project-name');
|
11
11
|
const e2eProjectName = getE2eProjectName(options.project, project.root, options.cypressDirectory);
|
12
12
|
await (0, stories_1.angularStoriesGenerator)(tree, {
|
13
13
|
name: options.project,
|
@@ -1,8 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.getAllFilesRecursivelyFromDir = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
4
5
|
const devkit_1 = require("@nx/devkit");
|
5
|
-
const ignore_1 = require("ignore");
|
6
|
+
const ignore_1 = tslib_1.__importDefault(require("ignore"));
|
6
7
|
function getAllFilesRecursivelyFromDir(tree, dir) {
|
7
8
|
if (isPathIgnored(tree, dir)) {
|
8
9
|
return [];
|
@@ -1,10 +1,11 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.versions = exports.getInstalledPackageVersionInfo = exports.getInstalledPackageVersion = exports.getInstalledAngularVersionInfo = exports.getInstalledAngularMajorVersion = exports.getInstalledAngularVersion = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
4
5
|
const devkit_1 = require("@nx/devkit");
|
5
6
|
const semver_1 = require("semver");
|
6
7
|
const backward_compatible_versions_1 = require("../../utils/backward-compatible-versions");
|
7
|
-
const latestVersions = require("../../utils/versions");
|
8
|
+
const latestVersions = tslib_1.__importStar(require("../../utils/versions"));
|
8
9
|
const versions_1 = require("../../utils/versions");
|
9
10
|
function getInstalledAngularVersion(tree) {
|
10
11
|
const pkgJson = (0, devkit_1.readJson)(tree, 'package.json');
|
@@ -43,10 +44,10 @@ exports.getInstalledPackageVersionInfo = getInstalledPackageVersionInfo;
|
|
43
44
|
function versions(tree) {
|
44
45
|
const majorAngularVersion = getInstalledAngularMajorVersion(tree);
|
45
46
|
switch (majorAngularVersion) {
|
46
|
-
case 15:
|
47
|
-
return backward_compatible_versions_1.backwardCompatibleVersions.angularV15;
|
48
47
|
case 16:
|
49
48
|
return backward_compatible_versions_1.backwardCompatibleVersions.angularV16;
|
49
|
+
case 17:
|
50
|
+
return backward_compatible_versions_1.backwardCompatibleVersions.angularV17;
|
50
51
|
default:
|
51
52
|
return latestVersions;
|
52
53
|
}
|
@@ -19,7 +19,7 @@ exports.DEFAULT_BROWSERS = [
|
|
19
19
|
async function removeBrowserlistConfig(tree) {
|
20
20
|
let browserslist;
|
21
21
|
try {
|
22
|
-
browserslist = await
|
22
|
+
browserslist = await import('browserslist');
|
23
23
|
}
|
24
24
|
catch {
|
25
25
|
devkit_1.logger.warn('Skipping migration because the "browserslist" package could not be loaded.');
|
@@ -1,7 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const tslib_1 = require("tslib");
|
3
4
|
const devkit_1 = require("@nx/devkit");
|
4
|
-
const ts = require("typescript");
|
5
|
+
const ts = tslib_1.__importStar(require("typescript"));
|
5
6
|
const file_change_recorder_1 = require("../../utils/file-change-recorder");
|
6
7
|
async function default_1(tree) {
|
7
8
|
(0, devkit_1.visitNotIgnoredFiles)(tree, '/', (path) => {
|
@@ -1,7 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const tslib_1 = require("tslib");
|
3
4
|
const devkit_1 = require("@nx/devkit");
|
4
|
-
const ts = require("typescript");
|
5
|
+
const ts = tslib_1.__importStar(require("typescript"));
|
5
6
|
const workspace_models_1 = require("@schematics/angular/utility/workspace-models");
|
6
7
|
const executor_options_utils_1 = require("@nx/devkit/src/generators/executor-options-utils");
|
7
8
|
const file_change_recorder_1 = require("../../utils/file-change-recorder");
|
@@ -1,7 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const tslib_1 = require("tslib");
|
3
4
|
const devkit_1 = require("@nx/devkit");
|
4
|
-
const ts = require("typescript");
|
5
|
+
const ts = tslib_1.__importStar(require("typescript"));
|
5
6
|
const file_change_recorder_1 = require("../../utils/file-change-recorder");
|
6
7
|
async function default_1(tree) {
|
7
8
|
(0, devkit_1.visitNotIgnoredFiles)(tree, '/', (path) => {
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.angularCliVersion = void 0;
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
5
|
+
exports.angularCliVersion = '~18.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'] = exports.angularCliVersion;
|
11
|
+
shouldFormat = true;
|
12
|
+
}
|
13
|
+
else if (json.dependencies?.['@angular/cli']) {
|
14
|
+
json.dependencies['@angular/cli'] = exports.angularCliVersion;
|
15
|
+
shouldFormat = true;
|
16
|
+
}
|
17
|
+
return json;
|
18
|
+
});
|
19
|
+
if (shouldFormat) {
|
20
|
+
await (0, devkit_1.formatFiles)(tree);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
exports.default = default_1;
|
@@ -1,8 +1,13 @@
|
|
1
1
|
import * as latestVersions from './versions';
|
2
|
-
type SupportedVersions = '
|
3
|
-
|
4
|
-
|
2
|
+
type SupportedVersions = 'angularV16' | 'angularV17';
|
3
|
+
type LatestPackageVersionNames = Exclude<keyof typeof latestVersions, 'nxVersion'>;
|
4
|
+
type CompatPackageVersionNames = LatestPackageVersionNames | 'ngUniversalVersion';
|
5
|
+
export type PackageVersionNames = LatestPackageVersionNames | CompatPackageVersionNames;
|
6
|
+
export type VersionMap = {
|
7
|
+
angularV16: Record<CompatPackageVersionNames, string>;
|
8
|
+
angularV17: Record<Exclude<CompatPackageVersionNames, 'ngUniversalVersion'>, string>;
|
9
|
+
};
|
5
10
|
export type PackageLatestVersions = Record<LatestPackageVersionNames, string>;
|
6
|
-
export type PackageCompatVersions =
|
7
|
-
export declare const backwardCompatibleVersions:
|
11
|
+
export type PackageCompatVersions = VersionMap[SupportedVersions];
|
12
|
+
export declare const backwardCompatibleVersions: VersionMap;
|
8
13
|
export {};
|