@nx/angular 19.1.0-beta.0 → 19.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/executors.json +1 -1
- package/migrations.json +82 -0
- package/package.json +14 -13
- 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/utils.js +1 -0
- 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 {};
|