@nx/angular 21.1.1 → 21.2.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/fesm2022/nx-angular-mf.mjs.map +1 -1
- package/fesm2022/nx-angular.mjs.map +1 -1
- package/index.d.ts +2 -1
- package/mf/index.d.ts +71 -1
- package/migrations.json +106 -0
- package/ng-package.json +0 -1
- package/package.json +28 -16
- package/plugins/component-testing.js +8 -3
- package/src/builders/dev-server/dev-server.impl.js +4 -7
- package/src/builders/dev-server/lib/normalize-options.js +0 -6
- package/src/builders/dev-server/lib/validate-options.js +0 -4
- package/src/builders/dev-server/schema.d.ts +3 -15
- package/src/builders/dev-server/schema.json +3 -9
- package/src/builders/webpack-browser/webpack-browser.impl.js +2 -0
- package/src/builders/webpack-server/webpack-server.impl.d.ts +3 -1
- package/src/builders/webpack-server/webpack-server.impl.js +2 -0
- package/src/executors/application/application.impl.d.ts +2 -2
- package/src/executors/application/application.impl.js +11 -6
- package/src/executors/application/schema.d.ts +1 -1
- package/src/executors/application/schema.json +21 -10
- package/src/executors/application/utils/normalize-options.js +8 -1
- package/src/executors/application/utils/validate-options.js +10 -40
- package/src/executors/extract-i18n/extract-i18n.impl.js +6 -14
- package/src/executors/extract-i18n/schema.d.ts +1 -6
- package/src/executors/extract-i18n/schema.json +5 -0
- package/src/executors/extract-i18n/utils/validate-options.d.ts +2 -0
- package/src/executors/extract-i18n/utils/validate-options.js +13 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.js +1 -7
- package/src/executors/module-federation-dev-server/schema.d.ts +3 -15
- package/src/executors/module-federation-dev-server/schema.json +2 -15
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +10 -8
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.d.ts +6 -3
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.js +46 -8
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.d.ts +1 -1
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.js +3 -3
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.d.ts +2 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.js +22 -6
- package/src/executors/ng-packagr-lite/schema.json +2 -3
- package/src/executors/package/package.impl.js +1 -5
- package/src/executors/package/schema.d.ts +3 -1
- package/src/executors/package/schema.json +2 -3
- package/src/executors/utilities/builder-package.d.ts +1 -0
- package/src/executors/utilities/builder-package.js +11 -0
- package/src/executors/utilities/esbuild-extensions.d.ts +2 -1
- package/src/executors/utilities/ng-packagr/package-imports.d.ts +3 -1
- package/src/executors/utilities/ng-packagr/package-imports.js +2 -2
- package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts +2 -24
- package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.js +40 -107
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +4 -8
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts +1 -1
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.js +18 -11
- package/src/generators/add-linting/add-linting.js +8 -0
- package/src/generators/application/application.js +22 -8
- package/src/generators/application/files/base/tsconfig.app.json__tpl__ +10 -1
- package/src/generators/application/files/base/tsconfig.json__tpl__ +5 -6
- package/src/generators/application/files/ng-module/src/app/app__componentFileSuffix__.spec.ts__tpl__ +28 -0
- package/src/generators/application/files/ng-module/src/app/{app.component.ts__tpl__ → app__componentFileSuffix__.ts__tpl__} +4 -4
- package/src/generators/application/files/ng-module/src/app/app__moduleTypeSeparator__module.ts__tpl__ +17 -0
- package/src/generators/application/files/ng-module/src/main.ts__tpl__ +11 -3
- package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +6 -2
- package/src/generators/application/files/standalone-components/src/app/app__componentFileSuffix__.spec.ts__tpl__ +27 -0
- package/src/generators/application/files/standalone-components/src/app/{app.component.ts__tpl__ → app__componentFileSuffix__.ts__tpl__} +6 -6
- package/src/generators/application/files/standalone-components/src/main.ts__tpl__ +2 -2
- package/src/generators/application/lib/create-files.d.ts +1 -1
- package/src/generators/application/lib/create-files.js +18 -19
- package/src/generators/application/lib/create-project.d.ts +1 -1
- package/src/generators/application/lib/create-project.js +119 -26
- package/src/generators/application/lib/enable-strict-type-checking.js +4 -2
- package/src/generators/application/lib/index.d.ts +1 -2
- package/src/generators/application/lib/index.js +1 -2
- package/src/generators/application/lib/set-generator-defaults.js +1 -0
- package/src/generators/application/lib/{update-editor-tsconfig.d.ts → update-tsconfig-files.d.ts} +1 -1
- package/src/generators/application/lib/update-tsconfig-files.js +76 -0
- package/src/generators/application/schema.json +1 -1
- package/src/generators/component/component.js +13 -2
- package/src/generators/component/files/__fileName__.ts__tpl__ +1 -1
- package/src/generators/component/lib/component.js +11 -1
- package/src/generators/component/lib/module.d.ts +7 -2
- package/src/generators/component/lib/module.js +7 -5
- package/src/generators/component/lib/normalize-options.js +7 -3
- package/src/generators/component/schema.d.ts +1 -0
- package/src/generators/component/schema.json +6 -2
- package/src/generators/convert-to-application-executor/convert-to-application-executor.js +37 -24
- package/src/generators/convert-to-rspack/convert-to-rspack.js +2 -6
- package/src/generators/convert-to-rspack/lib/get-custom-webpack-config.js +1 -1
- package/src/generators/directive/directive.js +1 -1
- package/src/generators/directive/lib/normalize-options.js +7 -2
- package/src/generators/directive/schema.d.ts +1 -0
- package/src/generators/directive/schema.json +10 -2
- package/src/generators/host/host.js +21 -1
- package/src/generators/host/schema.d.ts +1 -0
- package/src/generators/host/schema.json +7 -1
- package/src/generators/init/init.js +1 -1
- package/src/generators/library/files/base/tsconfig.json__tpl__ +5 -5
- package/src/generators/library/files/ng-module/src/index.ts__tpl__ +1 -1
- package/src/generators/library/files/standalone-components/src/lib/lib.routes.ts__tpl__ +2 -2
- package/src/generators/library/lib/add-standalone-component.js +1 -0
- package/src/generators/library/lib/create-files.js +10 -3
- package/src/generators/library/lib/normalize-options.d.ts +3 -3
- package/src/generators/library/lib/normalize-options.js +6 -1
- package/src/generators/library/lib/normalized-schema.d.ts +2 -0
- package/src/generators/library/lib/set-generator-defaults.js +1 -0
- package/src/generators/library/lib/update-tsconfig-files.d.ts +3 -0
- package/src/generators/library/lib/update-tsconfig-files.js +85 -0
- package/src/generators/library/library.js +19 -33
- package/src/generators/library-secondary-entry-point/files/src/index.ts__tmpl__ +1 -1
- package/src/generators/library-secondary-entry-point/lib/add-files.js +2 -1
- package/src/generators/library-secondary-entry-point/lib/normalize-options.d.ts +2 -2
- package/src/generators/library-secondary-entry-point/lib/normalize-options.js +3 -0
- package/src/generators/library-secondary-entry-point/schema.d.ts +1 -0
- package/src/generators/move/lib/update-module-name.js +17 -10
- package/src/generators/move/lib/update-secondary-entry-points.js +0 -3
- package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +1 -1
- package/src/generators/ng-add/migrators/projects/app.migrator.js +43 -8
- package/src/generators/ngrx/schema.json +3 -3
- package/src/generators/ngrx-root-store/lib/normalize-options.js +9 -2
- package/src/generators/pipe/lib/normalize-options.js +4 -0
- package/src/generators/pipe/pipe.js +1 -1
- package/src/generators/pipe/schema.d.ts +1 -0
- package/src/generators/pipe/schema.json +11 -2
- package/src/generators/remote/files/standalone/src/bootstrap.server.ts__tmpl__ +4 -4
- package/src/generators/remote/lib/update-ssr-setup.js +5 -0
- package/src/generators/remote/remote.js +23 -0
- package/src/generators/remote/schema.d.ts +1 -0
- package/src/generators/remote/schema.json +7 -1
- package/src/generators/scam/lib/convert-component-to-scam.js +1 -3
- package/src/generators/scam/lib/normalize-options.js +11 -3
- package/src/generators/scam/schema.d.ts +1 -0
- package/src/generators/scam/schema.json +1 -2
- package/src/generators/scam-directive/lib/convert-directive-to-scam.js +1 -3
- package/src/generators/scam-directive/lib/normalize-options.js +11 -2
- package/src/generators/scam-directive/schema.d.ts +2 -0
- package/src/generators/scam-directive/schema.json +10 -2
- package/src/generators/scam-pipe/lib/convert-pipe-to-scam.js +1 -3
- package/src/generators/scam-pipe/lib/normalize-options.js +8 -0
- package/src/generators/scam-pipe/schema.d.ts +2 -0
- package/src/generators/scam-pipe/schema.json +5 -0
- package/src/generators/setup-mf/files/entry-module-files/{entry.module.ts__tmpl__ → __entryModuleFileName__.ts__tmpl__} +4 -4
- package/src/generators/setup-mf/files/entry-module-files/entry.routes.ts__tmpl__ +2 -2
- package/src/generators/setup-mf/files/entry-module-files/{entry.component.ts__tmpl__ → entry__componentFileSuffix__.ts__tmpl__} +1 -1
- package/src/generators/setup-mf/files/host-files/__appFileName__.spec.ts__tmpl__ +43 -0
- package/src/generators/setup-mf/files/standalone-entry-component-files/entry.routes.ts__tmpl__ +2 -2
- package/src/generators/setup-mf/files/standalone-entry-component-files/{entry.component.ts__tmpl__ → entry__componentFileSuffix__.ts__tmpl__} +3 -3
- package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +1 -1
- package/src/generators/setup-mf/files/ts-webpack/tsconfig.lint.json__tmpl__ +1 -1
- package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +1 -1
- package/src/generators/setup-mf/lib/add-remote-entry.d.ts +2 -2
- package/src/generators/setup-mf/lib/add-remote-entry.js +9 -3
- package/src/generators/setup-mf/lib/add-remote-to-host.js +11 -1
- package/src/generators/setup-mf/lib/fix-bootstrap.d.ts +2 -2
- package/src/generators/setup-mf/lib/fix-bootstrap.js +4 -4
- package/src/generators/setup-mf/lib/generate-config.d.ts +2 -2
- package/src/generators/setup-mf/lib/generate-config.js +1 -0
- package/src/generators/setup-mf/lib/normalize-options.d.ts +1 -1
- package/src/generators/setup-mf/lib/normalize-options.js +13 -0
- package/src/generators/setup-mf/lib/remove-dead-code-from-remote.d.ts +2 -2
- package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +18 -14
- package/src/generators/setup-mf/lib/setup-host-if-dynamic.js +1 -5
- package/src/generators/setup-mf/lib/setup-tspath-for-remote.d.ts +2 -2
- package/src/generators/setup-mf/lib/setup-tspath-for-remote.js +1 -1
- package/src/generators/setup-mf/lib/update-host-app-routes.d.ts +2 -2
- package/src/generators/setup-mf/lib/update-host-app-routes.js +12 -9
- package/src/generators/setup-mf/lib/update-tsconfig.d.ts +2 -2
- package/src/generators/setup-mf/lib/update-tsconfig.js +5 -5
- package/src/generators/setup-mf/schema.d.ts +7 -0
- package/src/generators/setup-mf/setup-mf.d.ts +2 -2
- package/src/generators/setup-mf/setup-mf.js +16 -6
- package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/__main__ +1 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/app/__rootModuleFileName__ +12 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +8 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/server/__serverFileName__ +66 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/__main__ +7 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/app/app.config.server.ts__tpl__ +12 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +8 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/ngmodule-src/__main__ +1 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/ngmodule-src/app/__rootModuleFileName__ +14 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/root/tsconfig.server.json.template +18 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/server/__serverFileName__ +69 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/standalone-src/__main__ +7 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/standalone-src/app/app.config.server.ts.template +11 -0
- package/src/generators/setup-ssr/lib/add-dependencies.js +11 -8
- package/src/generators/setup-ssr/lib/add-hydration.js +10 -3
- package/src/generators/setup-ssr/lib/add-server-file.js +7 -2
- package/src/generators/setup-ssr/lib/generate-files.js +17 -4
- package/src/generators/setup-ssr/lib/generate-server-ts-config.js +32 -6
- package/src/generators/setup-ssr/lib/normalize-options.js +5 -3
- package/src/generators/setup-ssr/lib/update-project-config.js +5 -0
- package/src/generators/setup-ssr/lib/validate-options.js +2 -2
- package/src/generators/setup-ssr/schema.d.ts +1 -0
- package/src/generators/setup-ssr/schema.json +1 -1
- package/src/generators/utils/add-jest.js +6 -1
- package/src/generators/utils/app-components-info.d.ts +9 -0
- package/src/generators/utils/app-components-info.js +39 -0
- package/src/generators/utils/artifact-types.d.ts +3 -0
- package/src/generators/utils/artifact-types.js +33 -0
- package/src/generators/utils/assert-mf-utils.d.ts +1 -0
- package/src/generators/utils/assert-mf-utils.js +11 -0
- package/src/generators/utils/ensure-angular-dependencies.js +6 -3
- package/src/generators/utils/export-scam.d.ts +1 -0
- package/src/generators/utils/export-scam.js +1 -2
- package/src/generators/utils/find-module.js +18 -13
- package/src/generators/utils/storybook-ast/component-info.js +40 -24
- package/src/generators/utils/storybook-ast/module-info.d.ts +1 -1
- package/src/generators/utils/storybook-ast/module-info.js +3 -8
- package/src/generators/utils/testing.js +28 -28
- package/src/generators/utils/version-utils.js +2 -2
- package/src/generators/web-worker/lib/add-snippet.js +3 -3
- package/src/migrations/update-21-2-0/migrate-provide-server-rendering-import.d.ts +2 -0
- package/src/migrations/update-21-2-0/migrate-provide-server-rendering-import.js +110 -0
- package/src/migrations/update-21-2-0/replace-provide-server-routing.d.ts +2 -0
- package/src/migrations/update-21-2-0/replace-provide-server-routing.js +103 -0
- package/src/migrations/update-21-2-0/set-generator-defaults-for-previous-style-guide.d.ts +2 -0
- package/src/migrations/update-21-2-0/set-generator-defaults-for-previous-style-guide.js +47 -0
- package/src/migrations/update-21-2-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-21-2-0/update-angular-cli.js +23 -0
- package/src/migrations/update-21-2-0/update-module-resolution.d.ts +2 -0
- package/src/migrations/update-21-2-0/update-module-resolution.js +45 -0
- package/src/plugins/plugin.js +22 -13
- package/src/utils/backward-compatible-versions.d.ts +2 -2
- package/src/utils/backward-compatible-versions.js +22 -19
- package/src/utils/nx-devkit/ast-utils.js +17 -3
- package/src/utils/nx-devkit/testing.js +9 -9
- package/src/utils/targets.d.ts +2 -1
- package/src/utils/targets.js +6 -0
- package/src/utils/versions.d.ts +4 -3
- package/src/utils/versions.js +5 -4
- package/mf/mf.d.ts +0 -69
- package/src/generators/application/files/base-pre18/src/favicon.ico +0 -0
- package/src/generators/application/files/ng-module/src/app/app.component.spec.ts__tpl__ +0 -29
- package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +0 -17
- package/src/generators/application/files/standalone-components/src/app/app.component.__style__ +0 -0
- package/src/generators/application/files/standalone-components/src/app/app.component.spec.ts__tpl__ +0 -28
- package/src/generators/application/lib/set-app-strict-default.d.ts +0 -2
- package/src/generators/application/lib/set-app-strict-default.js +0 -13
- package/src/generators/application/lib/update-editor-tsconfig.js +0 -21
- package/src/generators/library/lib/enable-strict-type-checking.d.ts +0 -7
- package/src/generators/library/lib/enable-strict-type-checking.js +0 -47
- package/src/generators/library/lib/update-tsconfig.d.ts +0 -3
- package/src/generators/library/lib/update-tsconfig.js +0 -36
- package/src/generators/setup-mf/files/host-files/app.component.spec.ts__tmpl__ +0 -47
- /package/src/generators/application/files/{base-18+ → base}/public/favicon.ico +0 -0
- /package/src/generators/application/files/{base-pre18/src/assets/.gitkeep__tpl__ → ng-module/src/app/app__componentFileSuffix__.__style__} +0 -0
- /package/src/generators/application/files/ng-module/src/app/{app.component.html__tpl__ → app__componentFileSuffix__.html__tpl__} +0 -0
- /package/src/generators/application/files/{ng-module/src/app/app.component.__style__ → standalone-components/src/app/app__componentFileSuffix__.__style__} +0 -0
- /package/src/generators/application/files/standalone-components/src/app/{app.component.html__tpl__ → app__componentFileSuffix__.html__tpl__} +0 -0
- /package/src/generators/component/files/{__fileName__.html__tpl__ → __fileName____ngext__.html__tpl__} +0 -0
- /package/src/generators/library/files/ng-module/src/lib/{__libFileName__.module.ts__tpl__ → __libFileName____moduleTypeSeparator__module.ts__tpl__} +0 -0
- /package/src/generators/library-secondary-entry-point/files/src/lib/{__fileName__.module.ts__tmpl__ → __fileName____moduleTypeSeparator__module.ts__tmpl__} +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/ngmodule-src/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/ngmodule-src/app/__rootModuleFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/server/__serverFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/standalone-src/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/standalone-src/app/app.config.server.ts__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder-common-engine/server/__serverFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/ngmodule-src/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/ngmodule-src/app/__rootModuleFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/root/tsconfig.server.json.template +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/server/__serverFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/standalone-src/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/standalone-src/app/app.config.server.ts.template +0 -0
@@ -0,0 +1,110 @@
|
|
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
|
+
const versions_1 = require("../../utils/versions");
|
9
|
+
const projects_1 = require("../utils/projects");
|
10
|
+
async function default_1(tree) {
|
11
|
+
const projects = await (0, projects_1.getProjectsFilteredByDependencies)(tree, [
|
12
|
+
'npm:@angular/platform-server',
|
13
|
+
]);
|
14
|
+
if (!projects.length) {
|
15
|
+
return;
|
16
|
+
}
|
17
|
+
let isSsrInstalled = false;
|
18
|
+
for (const { project } of projects) {
|
19
|
+
(0, devkit_1.visitNotIgnoredFiles)(tree, project.root, (file) => {
|
20
|
+
if (!file.endsWith('.ts') || file.endsWith('.d.ts')) {
|
21
|
+
return;
|
22
|
+
}
|
23
|
+
const shouldInstallSsr = processFile(tree, file);
|
24
|
+
if (shouldInstallSsr && !isSsrInstalled) {
|
25
|
+
isSsrInstalled = true;
|
26
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, { '@angular/ssr': versions_1.angularDevkitVersion }, {}, undefined, true);
|
27
|
+
}
|
28
|
+
});
|
29
|
+
}
|
30
|
+
await (0, devkit_1.formatFiles)(tree);
|
31
|
+
}
|
32
|
+
function processFile(tree, filePath) {
|
33
|
+
const content = tree.read(filePath, 'utf-8');
|
34
|
+
if (!content.includes('provideServerRendering') ||
|
35
|
+
!content.includes('@angular/platform-server')) {
|
36
|
+
return false;
|
37
|
+
}
|
38
|
+
const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
|
39
|
+
let platformServerHasProvideServerRendering = false;
|
40
|
+
let platformServerImportNode;
|
41
|
+
let ssrImportNode;
|
42
|
+
const platformServerImports = new Set();
|
43
|
+
sourceFile.forEachChild((node) => {
|
44
|
+
if (!ts.isImportDeclaration(node)) {
|
45
|
+
return;
|
46
|
+
}
|
47
|
+
const moduleSpecifier = node.moduleSpecifier.getText(sourceFile);
|
48
|
+
if (moduleSpecifier.includes('@angular/platform-server')) {
|
49
|
+
platformServerImportNode = node;
|
50
|
+
const importClause = node.importClause;
|
51
|
+
if (importClause &&
|
52
|
+
importClause.namedBindings &&
|
53
|
+
ts.isNamedImports(importClause.namedBindings)) {
|
54
|
+
const namedImports = importClause.namedBindings.elements.map((e) => e.getText(sourceFile));
|
55
|
+
namedImports.forEach((importName) => {
|
56
|
+
if (importName === 'provideServerRendering') {
|
57
|
+
platformServerHasProvideServerRendering = true;
|
58
|
+
}
|
59
|
+
else {
|
60
|
+
platformServerImports.add(importName);
|
61
|
+
}
|
62
|
+
});
|
63
|
+
}
|
64
|
+
}
|
65
|
+
else if (moduleSpecifier.includes('@angular/ssr')) {
|
66
|
+
ssrImportNode = node;
|
67
|
+
}
|
68
|
+
});
|
69
|
+
if (!platformServerHasProvideServerRendering) {
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
const recorder = new file_change_recorder_1.FileChangeRecorder(tree, filePath);
|
73
|
+
const printer = ts.createPrinter({
|
74
|
+
newLine: ts.NewLineKind.LineFeed,
|
75
|
+
});
|
76
|
+
if (ssrImportNode?.importClause?.namedBindings &&
|
77
|
+
ts.isNamedImports(ssrImportNode.importClause.namedBindings)) {
|
78
|
+
const namedBindingsNode = ssrImportNode.importClause
|
79
|
+
.namedBindings;
|
80
|
+
const updatedNamedBindingsNode = ts.factory.updateNamedImports(namedBindingsNode, [
|
81
|
+
...namedBindingsNode.elements,
|
82
|
+
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('provideServerRendering')),
|
83
|
+
]);
|
84
|
+
recorder.replace(namedBindingsNode, printer.printNode(ts.EmitHint.Unspecified, updatedNamedBindingsNode, sourceFile));
|
85
|
+
}
|
86
|
+
else {
|
87
|
+
/**
|
88
|
+
* Add a new import statement with the needed named import in case it
|
89
|
+
* doesn't exist yet or it doesn't have named imports.
|
90
|
+
*
|
91
|
+
* It would be quite uncommon to have an import from @angular/ssr without
|
92
|
+
* named imports, but if that's the case, we'll just add an extra import
|
93
|
+
* statement with the needed named import.
|
94
|
+
*/
|
95
|
+
recorder.insertLeft(0, `import { provideServerRendering } from '@angular/ssr';\n`);
|
96
|
+
}
|
97
|
+
if (platformServerImports.size > 0) {
|
98
|
+
// we only collected platform server imports because there were named
|
99
|
+
// imports, so we can safely use the type
|
100
|
+
const namedBindingsNode = platformServerImportNode.importClause
|
101
|
+
.namedBindings;
|
102
|
+
const updatedNamedBindingsNode = ts.factory.updateNamedImports(namedBindingsNode, namedBindingsNode.elements.filter((e) => platformServerImports.has(e.getText(sourceFile))));
|
103
|
+
recorder.replace(namedBindingsNode, printer.printNode(ts.EmitHint.Unspecified, updatedNamedBindingsNode, sourceFile));
|
104
|
+
}
|
105
|
+
else {
|
106
|
+
recorder.remove(platformServerImportNode.getFullStart(), platformServerImportNode.getEnd());
|
107
|
+
}
|
108
|
+
recorder.applyChanges();
|
109
|
+
return true;
|
110
|
+
}
|
@@ -0,0 +1,103 @@
|
|
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 tsquery_1 = require("@phenomnomnominal/tsquery");
|
7
|
+
const ts = tslib_1.__importStar(require("typescript"));
|
8
|
+
const file_change_recorder_1 = require("../../utils/file-change-recorder");
|
9
|
+
const projects_1 = require("../utils/projects");
|
10
|
+
async function default_1(tree) {
|
11
|
+
const projects = await (0, projects_1.getProjectsFilteredByDependencies)(tree, [
|
12
|
+
'npm:@angular/ssr',
|
13
|
+
]);
|
14
|
+
if (!projects.length) {
|
15
|
+
return;
|
16
|
+
}
|
17
|
+
for (const { project } of projects) {
|
18
|
+
(0, devkit_1.visitNotIgnoredFiles)(tree, project.root, (file) => {
|
19
|
+
if (!file.endsWith('.ts') || file.endsWith('.d.ts')) {
|
20
|
+
return;
|
21
|
+
}
|
22
|
+
processFile(tree, file);
|
23
|
+
});
|
24
|
+
}
|
25
|
+
await (0, devkit_1.formatFiles)(tree);
|
26
|
+
}
|
27
|
+
function processFile(tree, filePath) {
|
28
|
+
const content = tree.read(filePath, 'utf-8');
|
29
|
+
if (!content.includes('provideServerRouting') ||
|
30
|
+
!content.includes('@angular/ssr')) {
|
31
|
+
return;
|
32
|
+
}
|
33
|
+
const sourceFile = tsquery_1.tsquery.ast(content);
|
34
|
+
const providersArray = tsquery_1.tsquery.query(sourceFile, 'PropertyAssignment:has(Identifier[name=providers]) > ArrayLiteralExpression:has(CallExpression > Identifier[name=provideServerRouting])', { visitAllChildren: true })[0];
|
35
|
+
if (!providersArray) {
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
const recorder = new file_change_recorder_1.FileChangeRecorder(tree, filePath);
|
39
|
+
const printer = ts.createPrinter({
|
40
|
+
newLine: ts.NewLineKind.LineFeed,
|
41
|
+
});
|
42
|
+
let provideServerRenderingCall;
|
43
|
+
let provideServerRoutingCall;
|
44
|
+
const providerCallNodes = providersArray.elements.filter((el) => ts.isCallExpression(el));
|
45
|
+
for (const node of providerCallNodes) {
|
46
|
+
if (node.expression.getText() === 'provideServerRendering') {
|
47
|
+
provideServerRenderingCall = node;
|
48
|
+
}
|
49
|
+
else if (node.expression.getText() === 'provideServerRouting') {
|
50
|
+
provideServerRoutingCall = node;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
const withRoutesCall = ts.factory.createCallExpression(ts.factory.createIdentifier('withRoutes'), undefined, [provideServerRoutingCall.arguments.at(0)]);
|
54
|
+
let updatedProvidersArray;
|
55
|
+
if (provideServerRenderingCall) {
|
56
|
+
// remove the "provideServerRouting" call and update the existing "provideServerRendering" call
|
57
|
+
updatedProvidersArray = ts.factory.updateArrayLiteralExpression(providersArray, providersArray.elements
|
58
|
+
.filter((el) => !(ts.isCallExpression(el) &&
|
59
|
+
ts.isIdentifier(el.expression) &&
|
60
|
+
el.expression.text === 'provideServerRouting'))
|
61
|
+
.map((el) => {
|
62
|
+
if (ts.isCallExpression(el) &&
|
63
|
+
ts.isIdentifier(el.expression) &&
|
64
|
+
el.expression.text === 'provideServerRendering') {
|
65
|
+
return ts.factory.updateCallExpression(el, el.expression, el.typeArguments, [withRoutesCall, ...provideServerRoutingCall.arguments.slice(1)]);
|
66
|
+
}
|
67
|
+
return el;
|
68
|
+
}));
|
69
|
+
}
|
70
|
+
else {
|
71
|
+
// replace the "provideServerRouting" call with the new "provideServerRendering" call
|
72
|
+
updatedProvidersArray = ts.factory.updateArrayLiteralExpression(providersArray, providersArray.elements.map((el) => {
|
73
|
+
if (ts.isCallExpression(el) &&
|
74
|
+
ts.isIdentifier(el.expression) &&
|
75
|
+
el.expression.text === 'provideServerRouting') {
|
76
|
+
return ts.factory.createCallExpression(ts.factory.createIdentifier('provideServerRendering'), undefined, [withRoutesCall, ...provideServerRoutingCall.arguments.slice(1)]);
|
77
|
+
}
|
78
|
+
return el;
|
79
|
+
}));
|
80
|
+
}
|
81
|
+
recorder.replace(providersArray, printer.printNode(ts.EmitHint.Unspecified, updatedProvidersArray, sourceFile));
|
82
|
+
const importDecl = sourceFile.statements.find((stmt) => ts.isImportDeclaration(stmt) &&
|
83
|
+
ts.isStringLiteral(stmt.moduleSpecifier) &&
|
84
|
+
stmt.moduleSpecifier.text === '@angular/ssr');
|
85
|
+
if (importDecl?.importClause?.namedBindings) {
|
86
|
+
const namedBindings = importDecl?.importClause.namedBindings;
|
87
|
+
if (ts.isNamedImports(namedBindings)) {
|
88
|
+
// remove the "provideServerRouting" import and ensure we have the "withRoutes" import
|
89
|
+
const updatedElementNames = new Set([
|
90
|
+
...namedBindings.elements
|
91
|
+
.map((el) => el.getText())
|
92
|
+
.filter((x) => x !== 'provideServerRouting'),
|
93
|
+
'withRoutes',
|
94
|
+
]);
|
95
|
+
const updatedNamedBindings = ts.factory.updateNamedImports(namedBindings, Array.from(updatedElementNames).map((name) => ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(name))));
|
96
|
+
const printer = ts.createPrinter({
|
97
|
+
newLine: ts.NewLineKind.LineFeed,
|
98
|
+
});
|
99
|
+
recorder.replace(namedBindings, printer.printNode(ts.EmitHint.Unspecified, updatedNamedBindings, sourceFile));
|
100
|
+
}
|
101
|
+
}
|
102
|
+
recorder.applyChanges();
|
103
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.default = default_1;
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
5
|
+
const TYPE_GENERATORS = ['component', 'directive', 'service'];
|
6
|
+
const TYPE_SEPARATOR_GENERATORS = [
|
7
|
+
'guard',
|
8
|
+
'interceptor',
|
9
|
+
'module',
|
10
|
+
'pipe',
|
11
|
+
'resolver',
|
12
|
+
];
|
13
|
+
async function default_1(tree) {
|
14
|
+
const nxJson = (0, devkit_1.readNxJson)(tree);
|
15
|
+
nxJson.generators ??= {};
|
16
|
+
for (const generator of TYPE_GENERATORS) {
|
17
|
+
setDefault(nxJson.generators, '@nx/angular', generator, 'type', generator);
|
18
|
+
setDefault(nxJson.generators, '@schematics/angular', generator, 'type', generator);
|
19
|
+
}
|
20
|
+
setDefault(nxJson.generators, '@nx/angular', 'scam', 'type', 'component');
|
21
|
+
setDefault(nxJson.generators, '@nx/angular', 'scam-directive', 'type', 'directive');
|
22
|
+
for (const generator of TYPE_SEPARATOR_GENERATORS) {
|
23
|
+
setDefault(nxJson.generators, '@nx/angular', generator, 'typeSeparator', '.');
|
24
|
+
setDefault(nxJson.generators, '@schematics/angular', generator, 'typeSeparator', '.');
|
25
|
+
}
|
26
|
+
(0, devkit_1.updateNxJson)(tree, nxJson);
|
27
|
+
await (0, devkit_1.formatFiles)(tree);
|
28
|
+
}
|
29
|
+
function setDefault(generators, collection, generator, option, value) {
|
30
|
+
const generatorKey = `${collection}:${generator}`;
|
31
|
+
if (generators[generatorKey]?.[option] ||
|
32
|
+
generators[collection]?.[generator]?.[option]) {
|
33
|
+
return;
|
34
|
+
}
|
35
|
+
if (generators[generatorKey]) {
|
36
|
+
generators[generatorKey][option] = value;
|
37
|
+
}
|
38
|
+
else if (generators[collection]?.[generator]) {
|
39
|
+
generators[collection][generator][option] = value;
|
40
|
+
}
|
41
|
+
else if (generators[collection]) {
|
42
|
+
generators[collection][generator] = { [option]: value };
|
43
|
+
}
|
44
|
+
else {
|
45
|
+
generators[generatorKey] = { [option]: value };
|
46
|
+
}
|
47
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.angularCliVersion = void 0;
|
4
|
+
exports.default = default_1;
|
5
|
+
const devkit_1 = require("@nx/devkit");
|
6
|
+
exports.angularCliVersion = '20.0.0-rc.3';
|
7
|
+
async function default_1(tree) {
|
8
|
+
let shouldFormat = false;
|
9
|
+
(0, devkit_1.updateJson)(tree, 'package.json', (json) => {
|
10
|
+
if (json.devDependencies?.['@angular/cli']) {
|
11
|
+
json.devDependencies['@angular/cli'] = exports.angularCliVersion;
|
12
|
+
shouldFormat = true;
|
13
|
+
}
|
14
|
+
else if (json.dependencies?.['@angular/cli']) {
|
15
|
+
json.dependencies['@angular/cli'] = exports.angularCliVersion;
|
16
|
+
shouldFormat = true;
|
17
|
+
}
|
18
|
+
return json;
|
19
|
+
});
|
20
|
+
if (shouldFormat) {
|
21
|
+
await (0, devkit_1.formatFiles)(tree);
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.default = default_1;
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
5
|
+
const targets_1 = require("../../utils/targets");
|
6
|
+
const projects_1 = require("../utils/projects");
|
7
|
+
async function default_1(tree) {
|
8
|
+
const uniqueTsConfigs = new Set();
|
9
|
+
const projects = await (0, projects_1.getProjectsFilteredByDependencies)(tree, [
|
10
|
+
'npm:@angular/core',
|
11
|
+
]);
|
12
|
+
for (const { project } of projects) {
|
13
|
+
for (const [, target] of (0, targets_1.allProjectTargets)(project)) {
|
14
|
+
for (const [, options] of (0, targets_1.allTargetOptions)(target)) {
|
15
|
+
if (typeof options?.tsConfig === 'string') {
|
16
|
+
uniqueTsConfigs.add(options.tsConfig);
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
for (const tsConfig of uniqueTsConfigs) {
|
22
|
+
if (tree.exists(tsConfig)) {
|
23
|
+
updateModuleResolution(tree, tsConfig);
|
24
|
+
}
|
25
|
+
}
|
26
|
+
await (0, devkit_1.formatFiles)(tree);
|
27
|
+
}
|
28
|
+
function updateModuleResolution(tree, tsConfigPath) {
|
29
|
+
const tsConfig = (0, devkit_1.readJson)(tree, tsConfigPath);
|
30
|
+
if (!tsConfig.compilerOptions) {
|
31
|
+
return;
|
32
|
+
}
|
33
|
+
const { compilerOptions } = tsConfig;
|
34
|
+
// Only update if module is not 'preserve' and moduleResolution is not already 'bundler'
|
35
|
+
if (compilerOptions.module === 'preserve' ||
|
36
|
+
compilerOptions.moduleResolution === 'bundler') {
|
37
|
+
return;
|
38
|
+
}
|
39
|
+
// Update moduleResolution to 'bundler'
|
40
|
+
(0, devkit_1.updateJson)(tree, tsConfigPath, (json) => {
|
41
|
+
json.compilerOptions ??= {};
|
42
|
+
json.compilerOptions.moduleResolution = 'bundler';
|
43
|
+
return json;
|
44
|
+
});
|
45
|
+
}
|
package/src/plugins/plugin.js
CHANGED
@@ -21,8 +21,14 @@ const knownExecutors = {
|
|
21
21
|
'@angular-devkit/build-angular:ng-packagr',
|
22
22
|
'@angular/build:ng-packagr',
|
23
23
|
]),
|
24
|
-
devServer: new Set([
|
25
|
-
|
24
|
+
devServer: new Set([
|
25
|
+
'@angular-devkit/build-angular:dev-server',
|
26
|
+
'@angular/build:dev-server',
|
27
|
+
]),
|
28
|
+
extractI18n: new Set([
|
29
|
+
'@angular-devkit/build-angular:extract-i18n',
|
30
|
+
'@angular/build:extract-i18n',
|
31
|
+
]),
|
26
32
|
prerender: new Set([
|
27
33
|
'@angular-devkit/build-angular:prerender',
|
28
34
|
'@nguniversal/builders:prerender',
|
@@ -32,7 +38,10 @@ const knownExecutors = {
|
|
32
38
|
'@angular-devkit/build-angular:ssr-dev-server',
|
33
39
|
'@nguniversal/builders:ssr-dev-server',
|
34
40
|
]),
|
35
|
-
test: new Set([
|
41
|
+
test: new Set([
|
42
|
+
'@angular-devkit/build-angular:karma',
|
43
|
+
'@angular/build:karma',
|
44
|
+
]),
|
36
45
|
};
|
37
46
|
const pmc = (0, devkit_1.getPackageManagerCommand)();
|
38
47
|
function readProjectsCache(cachePath) {
|
@@ -111,7 +120,7 @@ async function buildAngularProjects(configFilePath, options, angularWorkspaceRoo
|
|
111
120
|
appShellTargets.push({ target: nxTargetName, project: projectName });
|
112
121
|
}
|
113
122
|
else if (knownExecutors.build.has(angularTarget.builder)) {
|
114
|
-
await updateBuildTarget(nxTargetName, targets[nxTargetName], angularTarget, context, angularWorkspaceRoot, project.root, namedInputs);
|
123
|
+
await updateBuildTarget(projectName, nxTargetName, targets[nxTargetName], angularTarget, context, angularWorkspaceRoot, project.root, namedInputs);
|
115
124
|
}
|
116
125
|
else if (knownExecutors.devServer.has(angularTarget.builder)) {
|
117
126
|
targets[nxTargetName].continuous = true;
|
@@ -196,21 +205,21 @@ function updateAppShellTarget(projectName, targetName, projects, angularJson, an
|
|
196
205
|
target.inputs = inputs;
|
197
206
|
target.outputs = outputs;
|
198
207
|
}
|
199
|
-
async function updateBuildTarget(targetName, target, angularTarget, context, angularWorkspaceRoot, projectRoot, namedInputs) {
|
208
|
+
async function updateBuildTarget(projectName, targetName, target, angularTarget, context, angularWorkspaceRoot, projectRoot, namedInputs) {
|
200
209
|
target.dependsOn = [`^${targetName}`];
|
201
|
-
if (angularTarget.
|
202
|
-
const fullOutputPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, angularTarget.options.outputPath);
|
203
|
-
target.outputs = [
|
204
|
-
getOutput(fullOutputPath, context.workspaceRoot, angularWorkspaceRoot, projectRoot),
|
205
|
-
];
|
206
|
-
}
|
207
|
-
else if (angularTarget.builder === '@angular-devkit/build-angular:ng-packagr' ||
|
210
|
+
if (angularTarget.builder === '@angular-devkit/build-angular:ng-packagr' ||
|
208
211
|
angularTarget.builder === '@angular/build:ng-packagr') {
|
209
212
|
const outputs = await getNgPackagrOutputs(angularTarget, angularWorkspaceRoot, projectRoot, context);
|
210
213
|
if (outputs.length) {
|
211
214
|
target.outputs = outputs;
|
212
215
|
}
|
213
216
|
}
|
217
|
+
else {
|
218
|
+
const fullOutputPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, angularTarget.options?.outputPath ?? posix.join('dist', projectName));
|
219
|
+
target.outputs = [
|
220
|
+
getOutput(fullOutputPath, context.workspaceRoot, angularWorkspaceRoot, projectRoot),
|
221
|
+
];
|
222
|
+
}
|
214
223
|
if (target.outputs?.length) {
|
215
224
|
// make it cacheable if we were able to identify outputs
|
216
225
|
target.cache = true;
|
@@ -272,7 +281,7 @@ function updatePrerenderTarget(projectName, targetName, projects, angularJson) {
|
|
272
281
|
target.outputs = outputs;
|
273
282
|
}
|
274
283
|
async function getNgPackagrOutputs(target, angularWorkspaceRoot, projectRoot, context) {
|
275
|
-
let ngPackageJsonPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, target.options.
|
284
|
+
let ngPackageJsonPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, target.options?.project ?? (0, node_path_1.join)(projectRoot, 'ng-package.json'));
|
276
285
|
const readConfig = async (configPath) => {
|
277
286
|
if (!(0, node_fs_1.existsSync)(configPath)) {
|
278
287
|
return undefined;
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import * as latestVersions from './versions';
|
2
|
-
type SupportedVersions = '
|
2
|
+
type SupportedVersions = 'angularV18' | 'angularV19';
|
3
3
|
type LatestPackageVersionNames = Exclude<keyof typeof latestVersions, 'nxVersion'>;
|
4
4
|
type CompatPackageVersionNames = LatestPackageVersionNames;
|
5
5
|
export type PackageVersionNames = LatestPackageVersionNames | CompatPackageVersionNames;
|
6
6
|
export type VersionMap = {
|
7
|
-
angularV17: Record<Exclude<CompatPackageVersionNames, 'typescriptEslintVersion'>, string>;
|
8
7
|
angularV18: Record<CompatPackageVersionNames, string>;
|
8
|
+
angularV19: Record<CompatPackageVersionNames, string>;
|
9
9
|
};
|
10
10
|
export type PackageLatestVersions = Record<LatestPackageVersionNames, string>;
|
11
11
|
export type PackageCompatVersions = VersionMap[SupportedVersions];
|
@@ -2,12 +2,12 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.backwardCompatibleVersions = void 0;
|
4
4
|
exports.backwardCompatibleVersions = {
|
5
|
-
|
6
|
-
angularVersion: '~
|
7
|
-
angularDevkitVersion: '~
|
8
|
-
ngPackagrVersion: '~
|
5
|
+
angularV18: {
|
6
|
+
angularVersion: '~18.2.0',
|
7
|
+
angularDevkitVersion: '~18.2.0',
|
8
|
+
ngPackagrVersion: '~18.2.0',
|
9
9
|
angularRspackVersion: '~20.6.1',
|
10
|
-
ngrxVersion: '~
|
10
|
+
ngrxVersion: '~18.0.2',
|
11
11
|
rxjsVersion: '~7.8.0',
|
12
12
|
zoneJsVersion: '~0.14.3',
|
13
13
|
angularJsVersion: '1.7.9',
|
@@ -17,27 +17,29 @@ exports.backwardCompatibleVersions = {
|
|
17
17
|
expressVersion: '^4.21.2',
|
18
18
|
typesExpressVersion: '^4.17.21',
|
19
19
|
browserSyncVersion: '^3.0.0',
|
20
|
-
moduleFederationNodeVersion: '~2.
|
21
|
-
moduleFederationEnhancedVersion: '
|
22
|
-
angularEslintVersion: '
|
20
|
+
moduleFederationNodeVersion: '~2.5.0',
|
21
|
+
moduleFederationEnhancedVersion: '0.6.9',
|
22
|
+
angularEslintVersion: '^18.3.0',
|
23
|
+
typescriptEslintVersion: '^7.16.0',
|
23
24
|
tailwindVersion: '^3.0.2',
|
24
25
|
postcssVersion: '^8.4.5',
|
25
26
|
postcssUrlVersion: '~10.1.3',
|
26
27
|
autoprefixerVersion: '^10.4.0',
|
27
28
|
tsNodeVersion: '10.9.1',
|
28
|
-
jestPresetAngularVersion: '~14.0
|
29
|
+
jestPresetAngularVersion: '~14.1.0',
|
29
30
|
typesNodeVersion: '18.16.9',
|
30
31
|
jasmineMarblesVersion: '^0.9.2',
|
31
32
|
jsoncEslintParserVersion: '^2.1.0',
|
33
|
+
webpackMergeVersion: '^5.8.0',
|
32
34
|
},
|
33
|
-
|
34
|
-
angularVersion: '~
|
35
|
-
angularDevkitVersion: '~
|
36
|
-
ngPackagrVersion: '~
|
35
|
+
angularV19: {
|
36
|
+
angularVersion: '~19.2.0',
|
37
|
+
angularDevkitVersion: '~19.2.0',
|
38
|
+
ngPackagrVersion: '~19.2.0',
|
37
39
|
angularRspackVersion: '~20.6.1',
|
38
|
-
ngrxVersion: '~
|
40
|
+
ngrxVersion: '~19.1.0',
|
39
41
|
rxjsVersion: '~7.8.0',
|
40
|
-
zoneJsVersion: '~0.
|
42
|
+
zoneJsVersion: '~0.15.0',
|
41
43
|
angularJsVersion: '1.7.9',
|
42
44
|
tsLibVersion: '^2.3.0',
|
43
45
|
corsVersion: '~2.8.5',
|
@@ -45,18 +47,19 @@ exports.backwardCompatibleVersions = {
|
|
45
47
|
expressVersion: '^4.21.2',
|
46
48
|
typesExpressVersion: '^4.17.21',
|
47
49
|
browserSyncVersion: '^3.0.0',
|
48
|
-
moduleFederationNodeVersion: '
|
49
|
-
moduleFederationEnhancedVersion: '0.
|
50
|
-
angularEslintVersion: '^
|
50
|
+
moduleFederationNodeVersion: '^2.6.26',
|
51
|
+
moduleFederationEnhancedVersion: '^0.9.0',
|
52
|
+
angularEslintVersion: '^19.2.0',
|
51
53
|
typescriptEslintVersion: '^7.16.0',
|
52
54
|
tailwindVersion: '^3.0.2',
|
53
55
|
postcssVersion: '^8.4.5',
|
54
56
|
postcssUrlVersion: '~10.1.3',
|
55
57
|
autoprefixerVersion: '^10.4.0',
|
56
58
|
tsNodeVersion: '10.9.1',
|
57
|
-
jestPresetAngularVersion: '~14.
|
59
|
+
jestPresetAngularVersion: '~14.4.0',
|
58
60
|
typesNodeVersion: '18.16.9',
|
59
61
|
jasmineMarblesVersion: '^0.9.2',
|
60
62
|
jsoncEslintParserVersion: '^2.1.0',
|
63
|
+
webpackMergeVersion: '^5.8.0',
|
61
64
|
},
|
62
65
|
};
|
@@ -444,9 +444,18 @@ function getListOfRoutes(source) {
|
|
444
444
|
}
|
445
445
|
function isNgStandaloneApp(tree, projectName) {
|
446
446
|
const project = (0, devkit_1.readProjectConfiguration)(tree, projectName);
|
447
|
-
|
447
|
+
let mainFile = project.targets?.build?.options?.main ??
|
448
448
|
project.targets?.build?.options?.browser;
|
449
|
-
|
449
|
+
let hasMainFile = false;
|
450
|
+
if (mainFile) {
|
451
|
+
hasMainFile = true;
|
452
|
+
}
|
453
|
+
else {
|
454
|
+
const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
|
455
|
+
mainFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
|
456
|
+
hasMainFile = tree.exists(mainFile);
|
457
|
+
}
|
458
|
+
if (project.projectType !== 'application' || !hasMainFile) {
|
450
459
|
return false;
|
451
460
|
}
|
452
461
|
(0, ensure_typescript_1.ensureTypescript)();
|
@@ -548,7 +557,12 @@ function readBootstrapInfo(host, app) {
|
|
548
557
|
let mainPath;
|
549
558
|
try {
|
550
559
|
mainPath =
|
551
|
-
config.targets.build.options
|
560
|
+
config.targets.build.options?.main ??
|
561
|
+
config.targets.build.options?.browser;
|
562
|
+
if (!mainPath) {
|
563
|
+
const sourceRoot = config.sourceRoot ?? (0, devkit_1.joinPathFragments)(config.root, 'src');
|
564
|
+
mainPath = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
|
565
|
+
}
|
552
566
|
}
|
553
567
|
catch (e) {
|
554
568
|
throw new Error('Main file cannot be located');
|
@@ -18,24 +18,24 @@ function createApp(tree, appName, routing = true) {
|
|
18
18
|
// save for getAppDir() lookup by external *.spec.ts tests
|
19
19
|
appConfig = {
|
20
20
|
appName,
|
21
|
-
appModule: `${appName}/src/app/app
|
21
|
+
appModule: `${appName}/src/app/app-module.ts`,
|
22
22
|
};
|
23
23
|
tree.write(appConfig.appModule, `import { NgModule } from '@angular/core';
|
24
24
|
import { BrowserModule } from '@angular/platform-browser';
|
25
25
|
${routing ? "import { RouterModule } from '@angular/router'" : ''};
|
26
|
-
import {
|
26
|
+
import { App } from './app';
|
27
27
|
@NgModule({
|
28
28
|
imports: [BrowserModule, ${routing ? 'RouterModule.forRoot([])' : ''}],
|
29
|
-
declarations: [
|
30
|
-
bootstrap: [
|
29
|
+
declarations: [App],
|
30
|
+
bootstrap: [App]
|
31
31
|
})
|
32
32
|
export class AppModule {}
|
33
33
|
`);
|
34
|
-
tree.write(`${appName}/src/main.ts`, `import {
|
34
|
+
tree.write(`${appName}/src/main.ts`, `import { platformBrowser } from '@angular/platform-browser';
|
35
35
|
|
36
|
-
import { AppModule } from './app/app
|
36
|
+
import { AppModule } from './app/app-module';
|
37
37
|
|
38
|
-
|
38
|
+
platformBrowser()
|
39
39
|
.bootstrapModule(AppModule)
|
40
40
|
.catch(err => console.log(err));
|
41
41
|
`);
|
@@ -65,7 +65,7 @@ function createLib(tree, libName) {
|
|
65
65
|
const { name, className, fileName, propertyName } = (0, devkit_1.names)(libName);
|
66
66
|
libConfig = {
|
67
67
|
name,
|
68
|
-
module: `${propertyName}/src/lib/${fileName}
|
68
|
+
module: `${propertyName}/src/lib/${fileName}-module.ts`,
|
69
69
|
barrel: `${propertyName}/src/index.ts`,
|
70
70
|
};
|
71
71
|
tree.write(libConfig.module, `import { NgModule } from '@angular/core';
|
@@ -78,6 +78,6 @@ import { CommonModule } from '@angular/common';
|
|
78
78
|
})
|
79
79
|
export class ${className}Module { }
|
80
80
|
`);
|
81
|
-
tree.write(libConfig.barrel, `export * from './lib/${fileName}
|
81
|
+
tree.write(libConfig.barrel, `export * from './lib/${fileName}-module';
|
82
82
|
`);
|
83
83
|
}
|
package/src/utils/targets.d.ts
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
import { TargetConfiguration } from '@nx/devkit';
|
1
|
+
import type { ProjectConfiguration, TargetConfiguration } from '@nx/devkit';
|
2
|
+
export declare function allProjectTargets<T>(project: ProjectConfiguration): Iterable<[name: string, target: TargetConfiguration<T>]>;
|
2
3
|
export declare function allTargetOptions<T>(target: TargetConfiguration<T>): Iterable<[string | undefined, T]>;
|
package/src/utils/targets.js
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.allProjectTargets = allProjectTargets;
|
3
4
|
exports.allTargetOptions = allTargetOptions;
|
5
|
+
function* allProjectTargets(project) {
|
6
|
+
for (const [name, target] of Object.entries(project.targets ?? {})) {
|
7
|
+
yield [name, target];
|
8
|
+
}
|
9
|
+
}
|
4
10
|
function* allTargetOptions(target) {
|
5
11
|
if (target.options) {
|
6
12
|
yield [undefined, target.options];
|
package/src/utils/versions.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
export declare const nxVersion: any;
|
2
|
-
export declare const angularVersion = "
|
3
|
-
export declare const angularDevkitVersion = "
|
4
|
-
export declare const ngPackagrVersion = "
|
2
|
+
export declare const angularVersion = "20.0.0-rc.2";
|
3
|
+
export declare const angularDevkitVersion = "20.0.0-rc.3";
|
4
|
+
export declare const ngPackagrVersion = "20.0.0-rc.1";
|
5
5
|
export declare const angularRspackVersion = "^21.0.1";
|
6
6
|
export declare const ngrxVersion = "^19.0.0";
|
7
7
|
export declare const rxjsVersion = "~7.8.0";
|
@@ -15,6 +15,7 @@ export declare const typesExpressVersion = "^4.17.21";
|
|
15
15
|
export declare const browserSyncVersion = "^3.0.0";
|
16
16
|
export declare const moduleFederationNodeVersion = "^2.6.26";
|
17
17
|
export declare const moduleFederationEnhancedVersion = "^0.9.0";
|
18
|
+
export declare const webpackMergeVersion = "^5.8.0";
|
18
19
|
export declare const angularEslintVersion = "^19.2.0";
|
19
20
|
export declare const typescriptEslintVersion = "^7.16.0";
|
20
21
|
export declare const tailwindVersion = "^3.0.2";
|