@nx/angular 22.2.2 → 22.3.0-beta.0
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 +5 -0
- package/migrations.json +200 -291
- package/package.json +18 -18
- package/src/builders/dev-server/lib/normalize-options.d.ts.map +1 -1
- package/src/builders/dev-server/lib/normalize-options.js +1 -3
- package/src/builders/dev-server/lib/validate-options.d.ts.map +1 -1
- package/src/builders/dev-server/lib/validate-options.js +6 -5
- package/src/builders/dev-server/schema.d.ts +1 -0
- package/src/builders/dev-server/schema.json +9 -2
- package/src/executors/application/application.impl.js +1 -1
- package/src/executors/application/schema.json +11 -9
- package/src/executors/application/utils/normalize-options.d.ts.map +1 -1
- package/src/executors/application/utils/normalize-options.js +1 -27
- package/src/executors/application/utils/validate-options.d.ts.map +1 -1
- package/src/executors/application/utils/validate-options.js +0 -17
- package/src/executors/browser-esbuild/browser-esbuild.impl.js +1 -1
- package/src/executors/extract-i18n/extract-i18n.impl.js +1 -1
- package/src/executors/unit-test/schema.d.ts +7 -0
- package/src/executors/unit-test/schema.json +320 -0
- package/src/executors/unit-test/unit-test.impl.d.ts +5 -0
- package/src/executors/unit-test/unit-test.impl.d.ts.map +1 -0
- package/src/executors/unit-test/unit-test.impl.js +111 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.d.ts.map +1 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts.map +1 -1
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +2 -6
- package/src/executors/utilities/ng-packagr/{v19+/stylesheet-processor.js → stylesheet-processor.js} +2 -2
- package/src/generators/application/application.d.ts +1 -1
- package/src/generators/application/application.d.ts.map +1 -1
- package/src/generators/application/application.js +6 -1
- package/src/generators/application/files/base/tsconfig.app.json__tpl__ +2 -4
- package/src/generators/application/files/ng-module/src/app/app__componentFileSuffix__.spec.ts__tpl__ +2 -2
- package/src/generators/application/files/ng-module/src/app/app__componentFileSuffix__.ts__tpl__ +2 -2
- package/src/generators/application/files/ng-module/src/main.ts__tpl__ +1 -3
- package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +2 -2
- package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +1 -2
- package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +2 -2
- package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +1 -2
- package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +2 -2
- package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +1 -2
- package/src/generators/application/files/rspack-ssr/server.ts__tmpl__ +6 -0
- package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +3 -3
- package/src/generators/application/files/standalone-components/src/app/app__componentFileSuffix__.spec.ts__tpl__ +2 -2
- package/src/generators/application/files/standalone-components/src/app/app__componentFileSuffix__.ts__tpl__ +1 -2
- package/src/generators/application/lib/add-unit-test-runner.d.ts +1 -1
- package/src/generators/application/lib/add-unit-test-runner.d.ts.map +1 -1
- package/src/generators/application/lib/add-unit-test-runner.js +13 -2
- package/src/generators/application/lib/create-files.d.ts.map +1 -1
- package/src/generators/application/lib/create-files.js +1 -3
- package/src/generators/application/lib/create-project.js +12 -10
- package/src/generators/application/lib/enable-strict-type-checking.js +1 -1
- package/src/generators/application/lib/index.d.ts +2 -1
- package/src/generators/application/lib/index.d.ts.map +1 -1
- package/src/generators/application/lib/index.js +2 -1
- package/src/generators/application/lib/normalize-options.d.ts.map +1 -1
- package/src/generators/application/lib/normalize-options.js +12 -2
- package/src/generators/application/lib/update-tsconfig-files.d.ts.map +1 -1
- package/src/generators/application/lib/update-tsconfig-files.js +6 -17
- package/src/generators/application/lib/validate-options.d.ts +4 -0
- package/src/generators/application/lib/validate-options.d.ts.map +1 -0
- package/src/generators/application/lib/validate-options.js +26 -0
- package/src/generators/application/schema.d.ts +1 -0
- package/src/generators/application/schema.json +7 -4
- package/src/generators/component/component.d.ts.map +1 -1
- package/src/generators/component/component.js +4 -3
- package/src/generators/component/files/__fileName__.spec.ts__tpl__ +1 -1
- package/src/generators/component/files/__fileName__.ts__tpl__ +1 -1
- package/src/generators/component-test/component-test.d.ts +3 -3
- package/src/generators/component-test/component-test.d.ts.map +1 -1
- package/src/generators/component-test/component-test.js +9 -0
- package/src/generators/component-test/schema.d.ts +1 -0
- package/src/generators/component-test/schema.json +6 -0
- package/src/generators/convert-to-rspack/convert-to-rspack.d.ts.map +1 -1
- package/src/generators/convert-to-rspack/convert-to-rspack.js +1 -4
- package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts.map +1 -1
- package/src/generators/cypress-component-configuration/cypress-component-configuration.js +80 -33
- package/src/generators/cypress-component-configuration/schema.d.ts +1 -0
- package/src/generators/cypress-component-configuration/schema.json +6 -0
- package/src/generators/directive/directive.d.ts.map +1 -1
- package/src/generators/directive/directive.js +0 -3
- package/src/generators/directive/files/__fileName__.ts__tpl__ +1 -1
- package/src/generators/federate-module/federate-module.d.ts +1 -1
- package/src/generators/federate-module/federate-module.d.ts.map +1 -1
- package/src/generators/federate-module/federate-module.js +8 -0
- package/src/generators/federate-module/lib/add-remote.js +1 -1
- package/src/generators/federate-module/schema.d.ts +2 -2
- package/src/generators/federate-module/schema.json +3 -4
- package/src/generators/host/files/common/src/main.server.ts__tmpl__ +8 -1
- package/src/generators/host/host.d.ts.map +1 -1
- package/src/generators/host/host.js +5 -1
- package/src/generators/host/lib/index.d.ts +1 -0
- package/src/generators/host/lib/index.d.ts.map +1 -1
- package/src/generators/host/lib/index.js +1 -0
- package/src/generators/host/lib/update-ssr-setup.d.ts.map +1 -1
- package/src/generators/host/lib/update-ssr-setup.js +6 -4
- package/src/generators/host/lib/validate-options.d.ts +4 -0
- package/src/generators/host/lib/validate-options.d.ts.map +1 -0
- package/src/generators/host/lib/validate-options.js +12 -0
- package/src/generators/host/schema.d.ts +2 -2
- package/src/generators/host/schema.json +5 -6
- package/src/generators/library/files/base/tsconfig.lib.json__tpl__ +3 -5
- package/src/generators/library/lib/normalize-options.d.ts.map +1 -1
- package/src/generators/library/lib/normalize-options.js +10 -3
- package/src/generators/library/lib/update-tsconfig-files.d.ts.map +1 -1
- package/src/generators/library/lib/update-tsconfig-files.js +15 -6
- package/src/generators/library/lib/validate-options.d.ts +4 -0
- package/src/generators/library/lib/validate-options.d.ts.map +1 -0
- package/src/generators/library/lib/validate-options.js +27 -0
- package/src/generators/library/library.d.ts.map +1 -1
- package/src/generators/library/library.js +20 -13
- package/src/generators/library/schema.json +3 -4
- package/src/generators/ng-add/migrators/builders/angular-build-unit-test.migrator.d.ts +16 -0
- package/src/generators/ng-add/migrators/builders/angular-build-unit-test.migrator.d.ts.map +1 -0
- package/src/generators/ng-add/migrators/builders/angular-build-unit-test.migrator.js +161 -0
- package/src/generators/ng-add/migrators/builders/index.d.ts +1 -0
- package/src/generators/ng-add/migrators/builders/index.d.ts.map +1 -1
- package/src/generators/ng-add/migrators/builders/index.js +1 -0
- package/src/generators/ng-add/migrators/projects/app.migrator.d.ts.map +1 -1
- package/src/generators/ng-add/migrators/projects/app.migrator.js +1 -0
- package/src/generators/ng-add/migrators/projects/lib.migrator.d.ts.map +1 -1
- package/src/generators/ng-add/migrators/projects/lib.migrator.js +1 -0
- package/src/generators/pipe/files/__fileName__.ts__tpl__ +1 -1
- package/src/generators/pipe/pipe.d.ts.map +1 -1
- package/src/generators/pipe/pipe.js +0 -5
- package/src/generators/remote/files/common/src/main.server.ts__tmpl__ +8 -1
- package/src/generators/remote/lib/index.d.ts +1 -0
- package/src/generators/remote/lib/index.d.ts.map +1 -1
- package/src/generators/remote/lib/index.js +1 -0
- package/src/generators/remote/lib/update-ssr-setup.d.ts +2 -1
- package/src/generators/remote/lib/update-ssr-setup.d.ts.map +1 -1
- package/src/generators/remote/lib/update-ssr-setup.js +7 -7
- package/src/generators/remote/lib/validate-options.d.ts +4 -0
- package/src/generators/remote/lib/validate-options.d.ts.map +1 -0
- package/src/generators/remote/lib/validate-options.js +12 -0
- package/src/generators/remote/remote.d.ts.map +1 -1
- package/src/generators/remote/remote.js +6 -1
- package/src/generators/remote/schema.d.ts +2 -2
- package/src/generators/remote/schema.json +5 -6
- package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.js +1 -1
- package/src/generators/setup-mf/files/entry-module-files/entry__componentFileSuffix__.ts__tmpl__ +2 -2
- package/src/generators/setup-mf/files/host-files/__appFileName__.spec.ts__tmpl__ +5 -6
- package/src/generators/setup-mf/files/standalone-entry-component-files/entry__componentFileSuffix__.ts__tmpl__ +1 -2
- package/src/generators/setup-mf/lib/add-remote-entry.d.ts.map +1 -1
- package/src/generators/setup-mf/lib/add-remote-entry.js +0 -5
- package/src/generators/setup-mf/lib/update-host-app-routes.d.ts.map +1 -1
- package/src/generators/setup-mf/lib/update-host-app-routes.js +9 -6
- package/src/generators/setup-ssr/files/v20+/application-builder/server/__serverFileName__ +2 -2
- package/src/generators/setup-ssr/files/v20+/server-builder/server/__serverFileName__ +6 -0
- package/src/generators/setup-ssr/lib/add-hydration.d.ts.map +1 -1
- package/src/generators/setup-ssr/lib/add-hydration.js +2 -8
- package/src/generators/setup-ssr/lib/add-server-file.d.ts.map +1 -1
- package/src/generators/setup-ssr/lib/add-server-file.js +7 -7
- package/src/generators/setup-ssr/lib/generate-files.d.ts.map +1 -1
- package/src/generators/setup-ssr/lib/generate-files.js +2 -7
- package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts.map +1 -1
- package/src/generators/setup-ssr/lib/generate-server-ts-config.js +26 -12
- package/src/generators/setup-ssr/lib/normalize-options.d.ts.map +1 -1
- package/src/generators/setup-ssr/lib/normalize-options.js +1 -5
- package/src/generators/setup-ssr/lib/update-project-config.d.ts.map +1 -1
- package/src/generators/setup-ssr/lib/update-project-config.js +6 -17
- package/src/generators/setup-ssr/lib/validate-options.d.ts.map +1 -1
- package/src/generators/setup-ssr/lib/validate-options.js +9 -0
- package/src/generators/utils/add-jest.d.ts +2 -0
- package/src/generators/utils/add-jest.d.ts.map +1 -1
- package/src/generators/utils/add-jest.js +41 -11
- package/src/generators/utils/add-vitest.d.ts +11 -2
- package/src/generators/utils/add-vitest.d.ts.map +1 -1
- package/src/generators/utils/add-vitest.js +173 -6
- package/src/generators/utils/assert-mf-utils.d.ts +1 -1
- package/src/generators/utils/assert-mf-utils.d.ts.map +1 -1
- package/src/generators/utils/assert-mf-utils.js +1 -4
- package/src/generators/utils/ensure-angular-dependencies.d.ts +1 -1
- package/src/generators/utils/ensure-angular-dependencies.d.ts.map +1 -1
- package/src/generators/utils/ensure-angular-dependencies.js +6 -4
- package/src/generators/utils/storybook-ast/component-info.js +2 -10
- package/src/generators/utils/tsconfig-utils.d.ts +13 -0
- package/src/generators/utils/tsconfig-utils.d.ts.map +1 -0
- package/src/generators/utils/tsconfig-utils.js +29 -0
- package/src/generators/utils/version-utils.d.ts +13 -3
- package/src/generators/utils/version-utils.d.ts.map +1 -1
- package/src/generators/utils/version-utils.js +11 -18
- package/src/migrations/update-21-2-0/update-module-resolution.d.ts.map +1 -1
- package/src/migrations/update-21-2-0/update-module-resolution.js +17 -4
- package/src/migrations/update-22-3-0/update-angular-cli.d.ts +4 -0
- package/src/migrations/update-22-3-0/update-angular-cli.d.ts.map +1 -0
- package/src/migrations/{update-16-4-0 → update-22-3-0}/update-angular-cli.js +1 -1
- package/src/migrations/update-22-3-0/update-module-resolution.d.ts +3 -0
- package/src/migrations/update-22-3-0/update-module-resolution.d.ts.map +1 -0
- package/src/migrations/update-22-3-0/update-module-resolution.js +61 -0
- package/src/migrations/update-22-3-0/update-ssr-webpack-config.d.ts +3 -0
- package/src/migrations/update-22-3-0/update-ssr-webpack-config.d.ts.map +1 -0
- package/src/migrations/update-22-3-0/update-ssr-webpack-config.js +111 -0
- package/src/migrations/update-22-3-0/update-typescript-lib.d.ts +3 -0
- package/src/migrations/update-22-3-0/update-typescript-lib.d.ts.map +1 -0
- package/src/migrations/update-22-3-0/update-typescript-lib.js +98 -0
- package/src/migrations/update-22-3-0/update-unit-test-runner-option.d.ts +3 -0
- package/src/migrations/update-22-3-0/update-unit-test-runner-option.d.ts.map +1 -0
- package/src/migrations/update-22-3-0/update-unit-test-runner-option.js +44 -0
- package/src/plugins/plugin.d.ts.map +1 -1
- package/src/plugins/plugin.js +40 -24
- package/src/utils/backward-compatible-versions.d.ts +7 -9
- package/src/utils/backward-compatible-versions.d.ts.map +1 -1
- package/src/utils/backward-compatible-versions.js +20 -14
- package/src/utils/nx-devkit/ast-utils.d.ts.map +1 -1
- package/src/utils/nx-devkit/ast-utils.js +2 -13
- package/src/utils/targets.d.ts +6 -1
- package/src/utils/targets.d.ts.map +1 -1
- package/src/utils/targets.js +20 -3
- package/src/utils/test-runners.d.ts +2 -1
- package/src/utils/test-runners.d.ts.map +1 -1
- package/src/utils/test-runners.js +2 -1
- package/src/utils/version-utils.d.ts +2 -2
- package/src/utils/version-utils.d.ts.map +1 -1
- package/src/utils/version-utils.js +3 -2
- package/src/utils/versions.d.ts +7 -6
- package/src/utils/versions.d.ts.map +1 -1
- package/src/utils/versions.js +8 -7
- package/src/utils/zoneless.d.ts +3 -0
- package/src/utils/zoneless.d.ts.map +1 -0
- package/src/utils/zoneless.js +28 -0
- package/{mf/index.d.ts → types/nx-angular-mf.d.ts} +1 -1
- package/types/nx-angular-mf.d.ts.map +1 -0
- package/types/nx-angular.d.ts +3 -0
- package/types/nx-angular.d.ts.map +1 -0
- package/index.d.ts +0 -3
- package/index.d.ts.map +0 -1
- package/mf/index.d.ts.map +0 -1
- package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts +0 -28
- package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts.map +0 -1
- package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.js +0 -159
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts.map +0 -1
- package/src/generators/setup-ssr/files/pre-v19/ngmodule-src/__main__ +0 -1
- package/src/generators/setup-ssr/files/pre-v19/ngmodule-src/app/__rootModuleFileName__ +0 -14
- package/src/generators/setup-ssr/files/pre-v19/root/tsconfig.server.json__tpl__ +0 -15
- package/src/generators/setup-ssr/files/pre-v19/server/application-builder/__serverFileName__ +0 -57
- package/src/generators/setup-ssr/files/pre-v19/server/server-builder/__serverFileName__ +0 -72
- package/src/generators/setup-ssr/files/pre-v19/standalone-src/__main__ +0 -12
- package/src/generators/setup-ssr/files/pre-v19/standalone-src/app/app.config.server.ts__tpl__ +0 -11
- package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.d.ts +0 -3
- package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.d.ts.map +0 -1
- package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.js +0 -122
- package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.d.ts +0 -3
- package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.d.ts.map +0 -1
- package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.js +0 -34
- package/src/migrations/update-16-4-0/update-angular-cli.d.ts +0 -4
- package/src/migrations/update-16-4-0/update-angular-cli.d.ts.map +0 -1
- package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.d.ts +0 -3
- package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.d.ts.map +0 -1
- package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.js +0 -34
- package/src/migrations/update-16-7-0/update-angular-cli.d.ts +0 -4
- package/src/migrations/update-16-7-0/update-angular-cli.d.ts.map +0 -1
- package/src/migrations/update-16-7-0/update-angular-cli.js +0 -14
- /package/src/executors/utilities/ng-packagr/{v19+/stylesheet-processor.d.ts → stylesheet-processor.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-ssr-setup.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/host/lib/update-ssr-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"update-ssr-setup.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/host/lib/update-ssr-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAevC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,uBAAuB,EAAE,OAAO,mDAyEjC"}
|
|
@@ -7,17 +7,19 @@ const path_1 = require("path");
|
|
|
7
7
|
const versions_1 = require("../../../utils/versions");
|
|
8
8
|
const version_utils_1 = require("../../utils/version-utils");
|
|
9
9
|
async function updateSsrSetup(tree, options, appName, typescriptConfiguration) {
|
|
10
|
-
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
11
10
|
let project = (0, devkit_1.readProjectConfiguration)(tree, appName);
|
|
12
11
|
const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
|
|
13
12
|
tree.rename((0, devkit_1.joinPathFragments)(sourceRoot, 'main.server.ts'), (0, devkit_1.joinPathFragments)(sourceRoot, 'bootstrap.server.ts'));
|
|
14
|
-
const pathToServerEntry = (0, devkit_1.joinPathFragments)(
|
|
15
|
-
tree.write(pathToServerEntry, `import('
|
|
13
|
+
const pathToServerEntry = (0, devkit_1.joinPathFragments)(sourceRoot, 'server.ts');
|
|
14
|
+
tree.write(pathToServerEntry, `import('./main.server');`);
|
|
15
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
16
16
|
(0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '../files/common'), project.root, {
|
|
17
17
|
appName,
|
|
18
18
|
browserBundleOutput: project.targets.build.options.outputPath,
|
|
19
19
|
standalone: options.standalone,
|
|
20
|
-
|
|
20
|
+
zoneless: options.zoneless,
|
|
21
|
+
useDefaultImport: angularMajorVersion >= 21,
|
|
22
|
+
angularMajorVersion,
|
|
21
23
|
tmpl: '',
|
|
22
24
|
});
|
|
23
25
|
const pathToTemplateFiles = typescriptConfiguration ? 'ts' : 'js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/host/lib/validate-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAW1D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOptions = validateOptions;
|
|
4
|
+
const version_utils_1 = require("../../utils/version-utils");
|
|
5
|
+
function validateOptions(tree, options) {
|
|
6
|
+
const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
7
|
+
if (angularMajorVersion < 21) {
|
|
8
|
+
if (options.zoneless) {
|
|
9
|
+
throw new Error(`The "zoneless" option is only supported for Angular versions >= 21.0.0. You are using Angular ${angularVersion}.`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -17,7 +17,7 @@ export interface Schema {
|
|
|
17
17
|
skipTests?: boolean;
|
|
18
18
|
tags?: string;
|
|
19
19
|
linter?: Linter | LinterType;
|
|
20
|
-
unitTestRunner?: UnitTestRunner
|
|
20
|
+
unitTestRunner?: Exclude<UnitTestRunner, UnitTestRunner.VitestAngular>;
|
|
21
21
|
e2eTestRunner?: E2eTestRunner;
|
|
22
22
|
backendProject?: string;
|
|
23
23
|
strict?: boolean;
|
|
@@ -27,6 +27,6 @@ export interface Schema {
|
|
|
27
27
|
skipFormat?: boolean;
|
|
28
28
|
standalone?: boolean;
|
|
29
29
|
ssr?: boolean;
|
|
30
|
-
|
|
30
|
+
zoneless?: boolean;
|
|
31
31
|
typescriptConfiguration?: boolean;
|
|
32
32
|
}
|
|
@@ -119,10 +119,9 @@
|
|
|
119
119
|
},
|
|
120
120
|
"unitTestRunner": {
|
|
121
121
|
"type": "string",
|
|
122
|
-
"enum": ["
|
|
123
|
-
"description": "Test runner to use for unit tests.",
|
|
124
|
-
"x-prompt": "Which unit test runner would you like to use?"
|
|
125
|
-
"default": "jest"
|
|
122
|
+
"enum": ["vitest-analog", "jest", "none"],
|
|
123
|
+
"description": "Test runner to use for unit tests. `vitest-analog` uses AnalogJS-based setup with `@nx/vitest`. It defaults to `vitest-analog` for Angular versions >= 21.0.0, otherwise `jest`.",
|
|
124
|
+
"x-prompt": "Which unit test runner would you like to use?"
|
|
126
125
|
},
|
|
127
126
|
"e2eTestRunner": {
|
|
128
127
|
"type": "string",
|
|
@@ -177,8 +176,8 @@
|
|
|
177
176
|
"default": false,
|
|
178
177
|
"x-priority": "important"
|
|
179
178
|
},
|
|
180
|
-
"
|
|
181
|
-
"description": "
|
|
179
|
+
"zoneless": {
|
|
180
|
+
"description": "Generate an application that does not use `zone.js`. It defaults to `true`. _Note: this is only supported in Angular versions >= 21.0.0_",
|
|
182
181
|
"type": "boolean"
|
|
183
182
|
},
|
|
184
183
|
"typescriptConfiguration": {
|
|
@@ -7,11 +7,9 @@
|
|
|
7
7
|
"inlineSources": true,
|
|
8
8
|
"types": []
|
|
9
9
|
},
|
|
10
|
+
"include": ["src/**/*.ts"],
|
|
10
11
|
"exclude": [
|
|
11
|
-
"src/**/*.spec.ts"
|
|
12
|
-
"src/test-setup.ts",<% } %>
|
|
13
|
-
"jest.config.ts",
|
|
12
|
+
"src/**/*.spec.ts",
|
|
14
13
|
"src/**/*.test.ts"
|
|
15
|
-
]
|
|
16
|
-
"include": ["src/**/*.ts"]
|
|
14
|
+
]
|
|
17
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/library/lib/normalize-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"normalize-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/library/lib/normalize-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAW9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CAuG3B"}
|
|
@@ -5,6 +5,7 @@ const devkit_1 = require("@nx/devkit");
|
|
|
5
5
|
const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
|
|
6
6
|
const test_runners_1 = require("../../../utils/test-runners");
|
|
7
7
|
const artifact_types_1 = require("../../utils/artifact-types");
|
|
8
|
+
const version_utils_1 = require("../../utils/version-utils");
|
|
8
9
|
async function normalizeOptions(host, schema) {
|
|
9
10
|
schema.standalone = schema.standalone ?? true;
|
|
10
11
|
// Create a schema with populated default values
|
|
@@ -13,7 +14,6 @@ async function normalizeOptions(host, schema) {
|
|
|
13
14
|
linter: 'eslint',
|
|
14
15
|
publishable: false,
|
|
15
16
|
skipFormat: false,
|
|
16
|
-
unitTestRunner: test_runners_1.UnitTestRunner.Jest,
|
|
17
17
|
// Publishable libs cannot use `full` yet, so if its false then use the passed value or default to `full`
|
|
18
18
|
compilationMode: schema.publishable
|
|
19
19
|
? 'partial'
|
|
@@ -35,11 +35,18 @@ async function normalizeOptions(host, schema) {
|
|
|
35
35
|
: [];
|
|
36
36
|
const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(host);
|
|
37
37
|
const modulePath = `${projectRoot}/src/lib/${fileName}${moduleTypeSeparator}module.ts`;
|
|
38
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(host);
|
|
39
|
+
const unitTestRunner = options.unitTestRunner ??
|
|
40
|
+
(angularMajorVersion >= 21 && (options.buildable || options.publishable)
|
|
41
|
+
? test_runners_1.UnitTestRunner.VitestAngular
|
|
42
|
+
: angularMajorVersion >= 21
|
|
43
|
+
? test_runners_1.UnitTestRunner.VitestAnalog
|
|
44
|
+
: test_runners_1.UnitTestRunner.Jest);
|
|
38
45
|
const ngCliSchematicLibRoot = projectName;
|
|
39
46
|
const allNormalizedOptions = {
|
|
40
47
|
...options,
|
|
41
48
|
linter: options.linter ?? 'eslint',
|
|
42
|
-
unitTestRunner
|
|
49
|
+
unitTestRunner,
|
|
43
50
|
prefix: options.prefix ?? 'lib',
|
|
44
51
|
name: projectName,
|
|
45
52
|
projectRoot,
|
|
@@ -50,7 +57,7 @@ async function normalizeOptions(host, schema) {
|
|
|
50
57
|
fileName,
|
|
51
58
|
importPath,
|
|
52
59
|
ngCliSchematicLibRoot,
|
|
53
|
-
skipTests:
|
|
60
|
+
skipTests: unitTestRunner === 'none' ? true : options.skipTests,
|
|
54
61
|
standaloneComponentName: `${(0, devkit_1.names)(projectNames.projectSimpleName).className}Component`,
|
|
55
62
|
moduleTypeSeparator,
|
|
56
63
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-tsconfig-files.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/library/lib/update-tsconfig-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,IAAI,EAAc,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"update-tsconfig-files.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/library/lib/update-tsconfig-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,IAAI,EAAc,MAAM,YAAY,CAAC;AAYtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,QAqG5C"}
|
|
@@ -5,6 +5,7 @@ const devkit_1 = require("@nx/devkit");
|
|
|
5
5
|
const js_1 = require("@nx/js");
|
|
6
6
|
const configuration_1 = require("@nx/js/src/utils/typescript/configuration");
|
|
7
7
|
const semver_1 = require("semver");
|
|
8
|
+
const tsconfig_utils_1 = require("../../utils/tsconfig-utils");
|
|
8
9
|
const update_project_root_tsconfig_1 = require("../../utils/update-project-root-tsconfig");
|
|
9
10
|
const version_utils_1 = require("../../utils/version-utils");
|
|
10
11
|
function updateTsConfigFiles(tree, options) {
|
|
@@ -21,6 +22,7 @@ function updateTsConfigFiles(tree, options) {
|
|
|
21
22
|
skipLibCheck: true,
|
|
22
23
|
experimentalDecorators: true,
|
|
23
24
|
importHelpers: true,
|
|
25
|
+
isolatedModules: true,
|
|
24
26
|
target: 'es2022',
|
|
25
27
|
moduleResolution: 'bundler',
|
|
26
28
|
...(options.strict
|
|
@@ -33,9 +35,17 @@ function updateTsConfigFiles(tree, options) {
|
|
|
33
35
|
}
|
|
34
36
|
: {}),
|
|
35
37
|
};
|
|
38
|
+
const rootTsConfigPath = (0, js_1.getRootTsConfigFileName)(tree);
|
|
36
39
|
const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
37
|
-
if ((0, semver_1.
|
|
38
|
-
|
|
40
|
+
if ((0, semver_1.gte)(angularVersion, '19.1.0')) {
|
|
41
|
+
// Angular started warning about emitDecoratorMetadata and isolatedModules
|
|
42
|
+
// in v19.1.0. If enabled in the root tsconfig, we need to disable it.
|
|
43
|
+
if ((0, tsconfig_utils_1.getDefinedCompilerOption)(tree, rootTsConfigPath, 'emitDecoratorMetadata') === true) {
|
|
44
|
+
compilerOptions.emitDecoratorMetadata = false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (angularMajorVersion >= 21) {
|
|
48
|
+
compilerOptions.moduleResolution = 'bundler';
|
|
39
49
|
}
|
|
40
50
|
if (angularMajorVersion >= 20) {
|
|
41
51
|
compilerOptions.module = 'preserve';
|
|
@@ -49,13 +59,13 @@ function updateTsConfigFiles(tree, options) {
|
|
|
49
59
|
...json.compilerOptions,
|
|
50
60
|
...compilerOptions,
|
|
51
61
|
};
|
|
52
|
-
json.compilerOptions = (0, configuration_1.getNeededCompilerOptionOverrides)(tree, json.compilerOptions,
|
|
62
|
+
json.compilerOptions = (0, configuration_1.getNeededCompilerOptionOverrides)(tree, json.compilerOptions, rootTsConfigPath);
|
|
53
63
|
if (options.strict) {
|
|
54
64
|
json.angularCompilerOptions = {
|
|
55
65
|
...json.angularCompilerOptions,
|
|
56
66
|
strictInjectionParameters: true,
|
|
57
67
|
strictInputAccessModifiers: true,
|
|
58
|
-
typeCheckHostBindings: angularMajorVersion
|
|
68
|
+
typeCheckHostBindings: angularMajorVersion === 20 ? true : undefined,
|
|
59
69
|
strictTemplates: true,
|
|
60
70
|
};
|
|
61
71
|
}
|
|
@@ -80,9 +90,8 @@ function updateProjectConfig(host, options) {
|
|
|
80
90
|
json.exclude = [
|
|
81
91
|
...new Set([
|
|
82
92
|
...(json.exclude || []),
|
|
83
|
-
'jest.config.ts',
|
|
84
|
-
'src/**/*.test.ts',
|
|
85
93
|
'src/**/*.spec.ts',
|
|
94
|
+
'src/**/*.test.ts',
|
|
86
95
|
]),
|
|
87
96
|
];
|
|
88
97
|
return json;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/library/lib/validate-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAmCjE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOptions = validateOptions;
|
|
4
|
+
const test_runners_1 = require("../../../utils/test-runners");
|
|
5
|
+
const version_utils_1 = require("../../utils/version-utils");
|
|
6
|
+
function validateOptions(tree, options) {
|
|
7
|
+
if (!options.routing && options.lazy) {
|
|
8
|
+
throw new Error(`To use "--lazy" option, "--routing" must also be set.`);
|
|
9
|
+
}
|
|
10
|
+
if (options.publishable === true && !options.importPath) {
|
|
11
|
+
throw new Error(`For publishable libs you have to provide a proper "--importPath" which needs to be a valid npm package name (e.g. my-awesome-lib or @myorg/my-lib)`);
|
|
12
|
+
}
|
|
13
|
+
if (options.addTailwind && !options.buildable && !options.publishable) {
|
|
14
|
+
throw new Error(`To use "--addTailwind" option, you have to set either "--buildable" or "--publishable".`);
|
|
15
|
+
}
|
|
16
|
+
if (options.unitTestRunner === test_runners_1.UnitTestRunner.VitestAngular) {
|
|
17
|
+
const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
18
|
+
if (angularMajorVersion < 21) {
|
|
19
|
+
throw new Error(`The "vitest-angular" unit test runner requires Angular v21 or higher. ` +
|
|
20
|
+
`Detected Angular v${angularVersion}. Use "vitest-analog" or "jest" instead.`);
|
|
21
|
+
}
|
|
22
|
+
if (!options.buildable && !options.publishable) {
|
|
23
|
+
throw new Error(`The "vitest-angular" unit test runner requires the library to be buildable or publishable. ` +
|
|
24
|
+
`Use "vitest-analog" or "jest" instead.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/library/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/library/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EAIjB,IAAI,EACL,MAAM,YAAY,CAAC;AAwBpB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAyE5B;AAoED,eAAe,gBAAgB,CAAC"}
|
|
@@ -24,18 +24,10 @@ const normalize_options_1 = require("./lib/normalize-options");
|
|
|
24
24
|
const set_generator_defaults_1 = require("./lib/set-generator-defaults");
|
|
25
25
|
const update_lib_package_npm_scope_1 = require("./lib/update-lib-package-npm-scope");
|
|
26
26
|
const update_tsconfig_files_1 = require("./lib/update-tsconfig-files");
|
|
27
|
+
const validate_options_1 = require("./lib/validate-options");
|
|
27
28
|
async function libraryGenerator(tree, schema) {
|
|
28
29
|
(0, validations_1.assertNotUsingTsSolutionSetup)(tree, 'library');
|
|
29
|
-
|
|
30
|
-
if (!schema.routing && schema.lazy) {
|
|
31
|
-
throw new Error(`To use "--lazy" option, "--routing" must also be set.`);
|
|
32
|
-
}
|
|
33
|
-
if (schema.publishable === true && !schema.importPath) {
|
|
34
|
-
throw new Error(`For publishable libs you have to provide a proper "--importPath" which needs to be a valid npm package name (e.g. my-awesome-lib or @myorg/my-lib)`);
|
|
35
|
-
}
|
|
36
|
-
if (schema.addTailwind && !schema.buildable && !schema.publishable) {
|
|
37
|
-
throw new Error(`To use "--addTailwind" option, you have to set either "--buildable" or "--publishable".`);
|
|
38
|
-
}
|
|
30
|
+
(0, validate_options_1.validateOptions)(tree, schema);
|
|
39
31
|
const options = await (0, normalize_options_1.normalizeOptions)(tree, schema);
|
|
40
32
|
const { libraryOptions } = options;
|
|
41
33
|
const pkgVersions = (0, version_utils_1.versions)(tree);
|
|
@@ -46,7 +38,9 @@ async function libraryGenerator(tree, schema) {
|
|
|
46
38
|
});
|
|
47
39
|
await (0, init_1.default)(tree, { ...libraryOptions, skipFormat: true });
|
|
48
40
|
if (!libraryOptions.skipPackageJson) {
|
|
49
|
-
|
|
41
|
+
// if zone.js is not installed, we'll never install it as a dependency
|
|
42
|
+
// from the library generator
|
|
43
|
+
(0, ensure_angular_dependencies_1.ensureAngularDependencies)(tree, /*zoneless*/ true);
|
|
50
44
|
}
|
|
51
45
|
const project = await (0, add_project_1.addProject)(tree, libraryOptions);
|
|
52
46
|
(0, create_files_1.createFiles)(tree, options, project);
|
|
@@ -86,6 +80,7 @@ async function libraryGenerator(tree, schema) {
|
|
|
86
80
|
return (0, devkit_1.runTasksInSerial)(...tasks);
|
|
87
81
|
}
|
|
88
82
|
async function addUnitTestRunner(host, options) {
|
|
83
|
+
const zoneless = (0, devkit_1.getDependencyVersionFromPackageJson)(host, 'zone.js') === null;
|
|
89
84
|
switch (options.unitTestRunner) {
|
|
90
85
|
case test_runners_1.UnitTestRunner.Jest:
|
|
91
86
|
await (0, add_jest_1.addJest)(host, {
|
|
@@ -93,14 +88,26 @@ async function addUnitTestRunner(host, options) {
|
|
|
93
88
|
projectRoot: options.projectRoot,
|
|
94
89
|
skipPackageJson: options.skipPackageJson,
|
|
95
90
|
strict: options.strict,
|
|
91
|
+
runtimeTsconfigFileName: 'tsconfig.lib.json',
|
|
92
|
+
zoneless,
|
|
93
|
+
});
|
|
94
|
+
break;
|
|
95
|
+
case test_runners_1.UnitTestRunner.VitestAngular:
|
|
96
|
+
await (0, add_vitest_1.addVitestAngular)(host, {
|
|
97
|
+
name: options.name,
|
|
98
|
+
projectRoot: options.projectRoot,
|
|
99
|
+
skipPackageJson: options.skipPackageJson,
|
|
100
|
+
useNxUnitTestRunnerExecutor: true,
|
|
96
101
|
});
|
|
97
102
|
break;
|
|
98
|
-
case test_runners_1.UnitTestRunner.
|
|
99
|
-
await (0, add_vitest_1.
|
|
103
|
+
case test_runners_1.UnitTestRunner.VitestAnalog:
|
|
104
|
+
await (0, add_vitest_1.addVitestAnalog)(host, {
|
|
100
105
|
name: options.name,
|
|
101
106
|
projectRoot: options.projectRoot,
|
|
107
|
+
skipFormat: options.skipFormat,
|
|
102
108
|
skipPackageJson: options.skipPackageJson,
|
|
103
109
|
strict: options.strict,
|
|
110
|
+
zoneless,
|
|
104
111
|
});
|
|
105
112
|
break;
|
|
106
113
|
}
|
|
@@ -83,10 +83,9 @@
|
|
|
83
83
|
},
|
|
84
84
|
"unitTestRunner": {
|
|
85
85
|
"type": "string",
|
|
86
|
-
"enum": ["
|
|
87
|
-
"description": "Test runner to use for unit tests.",
|
|
88
|
-
"x-prompt": "Which unit test runner would you like to use?"
|
|
89
|
-
"default": "jest"
|
|
86
|
+
"enum": ["vitest-angular", "vitest-analog", "jest", "none"],
|
|
87
|
+
"description": "Test runner to use for unit tests. `vitest-angular` uses the `@nx/angular:unit-test` executor (requires Angular v21+ and a buildable/publishable library). `vitest-analog` uses AnalogJS-based setup with `@nx/vitest`. It defaults to `vitest-angular` for buildable/publishable libraries on Angular >= 21.0.0, `vitest-analog` for non-buildable libraries on Angular >= 21.0.0, otherwise `jest`.",
|
|
88
|
+
"x-prompt": "Which unit test runner would you like to use?"
|
|
90
89
|
},
|
|
91
90
|
"importPath": {
|
|
92
91
|
"type": "string",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ProjectConfiguration, Tree } from '@nx/devkit';
|
|
2
|
+
import type { Logger, ProjectMigrationInfo } from '../../utilities';
|
|
3
|
+
import { BuilderMigrator } from './builder.migrator';
|
|
4
|
+
export declare class AngularBuildUnitTestMigrator extends BuilderMigrator {
|
|
5
|
+
constructor(tree: Tree, project: ProjectMigrationInfo, projectConfig: ProjectConfiguration, logger: Logger);
|
|
6
|
+
migrate(): void;
|
|
7
|
+
private moveConfigFiles;
|
|
8
|
+
private moveCustomReporterFiles;
|
|
9
|
+
private updateTargetConfiguration;
|
|
10
|
+
private updateConfigurationOptions;
|
|
11
|
+
private updateReporterPaths;
|
|
12
|
+
private updateTsConfigFileUsedByTestTarget;
|
|
13
|
+
private handleRootProjectConfigFiles;
|
|
14
|
+
private getRunnerOption;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=angular-build-unit-test.migrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-build-unit-test.migrator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/generators/ng-add/migrators/builders/angular-build-unit-test.migrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,IAAI,EACL,MAAM,YAAY,CAAC;AAQpB,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,4BAA6B,SAAQ,eAAe;gBAE7D,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,oBAAoB,EACnC,MAAM,EAAE,MAAM;IAcP,OAAO,IAAI,IAAI;IAiBxB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,yBAAyB;IAsBjC,OAAO,CAAC,0BAA0B;IAmClC,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,kCAAkC;IA0B1C,OAAO,CAAC,4BAA4B;IAyBpC,OAAO,CAAC,eAAe;CAQxB"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AngularBuildUnitTestMigrator = void 0;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const js_1 = require("@nx/js");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const builder_migrator_1 = require("./builder.migrator");
|
|
8
|
+
class AngularBuildUnitTestMigrator extends builder_migrator_1.BuilderMigrator {
|
|
9
|
+
constructor(tree, project, projectConfig, logger) {
|
|
10
|
+
const rootFileType = determineRootFileType(projectConfig);
|
|
11
|
+
super(tree, ['@angular/build:unit-test'], rootFileType, project, projectConfig, logger);
|
|
12
|
+
}
|
|
13
|
+
migrate() {
|
|
14
|
+
if (this.skipMigration) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
for (const [name, target] of this.targets) {
|
|
18
|
+
this.moveConfigFiles(target);
|
|
19
|
+
this.updateTargetConfiguration(name, target);
|
|
20
|
+
this.updateTsConfigFileUsedByTestTarget(name, target);
|
|
21
|
+
this.updateCacheableOperations([name]);
|
|
22
|
+
}
|
|
23
|
+
if (!this.targets.size && this.projectConfig.root === '') {
|
|
24
|
+
this.handleRootProjectConfigFiles();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
moveConfigFiles(target) {
|
|
28
|
+
const filePathOptions = ['tsConfig'];
|
|
29
|
+
if (typeof target.options?.runnerConfig === 'string') {
|
|
30
|
+
filePathOptions.push('runnerConfig');
|
|
31
|
+
}
|
|
32
|
+
if (target.options?.providersFile) {
|
|
33
|
+
filePathOptions.push('providersFile');
|
|
34
|
+
}
|
|
35
|
+
this.moveFilePathsFromTargetToProjectRoot(target, filePathOptions);
|
|
36
|
+
if (Array.isArray(target.options?.setupFiles)) {
|
|
37
|
+
target.options.setupFiles.forEach((file) => {
|
|
38
|
+
if (this.tree.exists(file)) {
|
|
39
|
+
this.moveProjectRootFile(file);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (Array.isArray(target.options?.reporters)) {
|
|
44
|
+
this.moveCustomReporterFiles(target.options.reporters);
|
|
45
|
+
}
|
|
46
|
+
for (const config of Object.values(target.configurations ?? {})) {
|
|
47
|
+
if (Array.isArray(config.reporters)) {
|
|
48
|
+
this.moveCustomReporterFiles(config.reporters);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
moveCustomReporterFiles(reporters) {
|
|
53
|
+
reporters.forEach((reporter) => {
|
|
54
|
+
const reporterPath = Array.isArray(reporter) ? reporter[0] : reporter;
|
|
55
|
+
if (typeof reporterPath === 'string' &&
|
|
56
|
+
reporterPath.includes('/') &&
|
|
57
|
+
this.tree.exists(reporterPath)) {
|
|
58
|
+
this.moveProjectRootFile(reporterPath);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
updateTargetConfiguration(targetName, target) {
|
|
63
|
+
if (!target.options) {
|
|
64
|
+
this.logger.warn(`The target "${targetName}" is not specifying any options. Skipping updating the target configuration.`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
this.updateConfigurationOptions(target.options);
|
|
68
|
+
for (const config of Object.values(target.configurations ?? {})) {
|
|
69
|
+
this.updateConfigurationOptions(config);
|
|
70
|
+
}
|
|
71
|
+
(0, devkit_1.updateProjectConfiguration)(this.tree, this.project.name, {
|
|
72
|
+
...this.projectConfig,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
updateConfigurationOptions(options) {
|
|
76
|
+
if (options.tsConfig || options.tsconfig) {
|
|
77
|
+
const tsConfigKey = options.tsConfig ? 'tsConfig' : 'tsconfig';
|
|
78
|
+
options[tsConfigKey] = (0, devkit_1.joinPathFragments)(this.project.newRoot, (0, path_1.basename)(options[tsConfigKey]));
|
|
79
|
+
}
|
|
80
|
+
if (typeof options.runnerConfig === 'string') {
|
|
81
|
+
options.runnerConfig = (0, devkit_1.joinPathFragments)(this.project.newRoot, (0, path_1.basename)(options.runnerConfig));
|
|
82
|
+
}
|
|
83
|
+
if (options.outputFile) {
|
|
84
|
+
options.outputFile = this.convertRootPath(options.outputFile);
|
|
85
|
+
}
|
|
86
|
+
if (options.providersFile) {
|
|
87
|
+
options.providersFile = this.convertAsset(options.providersFile);
|
|
88
|
+
}
|
|
89
|
+
if (Array.isArray(options.setupFiles)) {
|
|
90
|
+
options.setupFiles = options.setupFiles.map((file) => this.convertAsset(file));
|
|
91
|
+
}
|
|
92
|
+
if (Array.isArray(options.reporters)) {
|
|
93
|
+
options.reporters = this.updateReporterPaths(options.reporters);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
updateReporterPaths(reporters) {
|
|
97
|
+
return reporters.map((reporter) => {
|
|
98
|
+
if (Array.isArray(reporter)) {
|
|
99
|
+
const [reporterPath, reporterOptions] = reporter;
|
|
100
|
+
if (typeof reporterPath === 'string' && reporterPath.includes('/')) {
|
|
101
|
+
return [this.convertAsset(reporterPath), reporterOptions];
|
|
102
|
+
}
|
|
103
|
+
return reporter;
|
|
104
|
+
}
|
|
105
|
+
else if (typeof reporter === 'string' && reporter.includes('/')) {
|
|
106
|
+
return this.convertAsset(reporter);
|
|
107
|
+
}
|
|
108
|
+
return reporter;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
updateTsConfigFileUsedByTestTarget(targetName, target) {
|
|
112
|
+
if (!target.options?.tsConfig) {
|
|
113
|
+
this.logger.warn(`The "${targetName}" target does not have the "tsConfig" option configured. Skipping updating the tsConfig file.`);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (!this.tree.exists(target.options.tsConfig)) {
|
|
117
|
+
const originalTsConfigPath = this.originalProjectConfig.targets[targetName].options.tsConfig;
|
|
118
|
+
this.logger.warn(`The tsConfig file "${originalTsConfigPath}" specified in the "${targetName}" target could not be found. Skipping updating the tsConfig file.`);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.updateTsConfigFile(target.options.tsConfig, (0, js_1.getRootTsConfigPathInTree)(this.tree), (0, devkit_1.offsetFromRoot)(this.projectConfig.root));
|
|
122
|
+
}
|
|
123
|
+
handleRootProjectConfigFiles() {
|
|
124
|
+
const runner = this.getRunnerOption();
|
|
125
|
+
if (runner === 'karma') {
|
|
126
|
+
const karmaConfig = 'karma.conf.js';
|
|
127
|
+
if (this.tree.exists(karmaConfig)) {
|
|
128
|
+
this.logger.info('No "test" target was found, but a root Karma config file was found in the project root. The file will be moved to the new location.');
|
|
129
|
+
this.moveProjectRootFile(karmaConfig);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const vitestConfigs = ['vitest.config.ts', 'vitest.config.js'];
|
|
134
|
+
for (const vitestConfig of vitestConfigs) {
|
|
135
|
+
if (this.tree.exists(vitestConfig)) {
|
|
136
|
+
this.logger.info('No "test" target was found, but a root Vitest config file was found in the project root. The file will be moved to the new location.');
|
|
137
|
+
this.moveProjectRootFile(vitestConfig);
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
getRunnerOption() {
|
|
144
|
+
for (const [, target] of this.targets) {
|
|
145
|
+
if (target.options?.runner) {
|
|
146
|
+
return target.options.runner;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return 'vitest';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.AngularBuildUnitTestMigrator = AngularBuildUnitTestMigrator;
|
|
153
|
+
function determineRootFileType(projectConfig) {
|
|
154
|
+
const testTargets = Object.values(projectConfig.targets ?? {}).filter((target) => target.executor === '@angular/build:unit-test');
|
|
155
|
+
for (const target of testTargets) {
|
|
156
|
+
if (target.options?.runner === 'karma') {
|
|
157
|
+
return 'karma';
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/generators/ng-add/migrators/builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/generators/ng-add/migrators/builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./angular-build-unit-test.migrator"), exports);
|
|
4
5
|
tslib_1.__exportStar(require("./angular-devkit-karma.migrator"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./angular-devkit-ng-packagr.migrator"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./angular-eslint-lint.migrator"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.migrator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/generators/ng-add/migrators/projects/app.migrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,IAAI,EAAE,MAAM,YAAY,CAAC;AAS5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EACV,MAAM,EACN,6BAA6B,EAE7B,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.migrator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/generators/ng-add/migrators/projects/app.migrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,IAAI,EAAE,MAAM,YAAY,CAAC;AAS5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EACV,MAAM,EACN,6BAA6B,EAE7B,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,KAAK,gBAAgB,GACjB,OAAO,GACP,KAAK,GACL,MAAM,GACN,WAAW,GACX,OAAO,GACP,QAAQ,GACR,UAAU,CAAC;AAmDf,qBAAa,WAAY,SAAQ,eAAe,CAAC,gBAAgB,CAAC;IAChE,OAAO,CAAC,WAAW,CAAc;gBAG/B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,6BAA6B,EACtC,MAAM,CAAC,EAAE,MAAM;IA0BF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B,QAAQ,IAAI,gBAAgB;IAarC,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,iCAAiC;IAqBzC,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAoG3B,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,8BAA8B;IA+CtC,OAAO,CAAC,kCAAkC;IAsB1C,OAAO,CAAC,+BAA+B;IA2CvC,OAAO,CAAC,iCAAiC;IAyCzC,OAAO,CAAC,mCAAmC;IA4B3C,OAAO,CAAC,oCAAoC;CA0B7C"}
|
|
@@ -52,6 +52,7 @@ const supportedTargets = {
|
|
|
52
52
|
};
|
|
53
53
|
// TODO(leo): this will replace `supportedTargets` once the full refactor is done.
|
|
54
54
|
const supportedBuilderMigrators = [
|
|
55
|
+
builders_1.AngularBuildUnitTestMigrator,
|
|
55
56
|
builders_1.AngularDevkitKarmaMigrator,
|
|
56
57
|
builders_1.AngularEslintLintMigrator,
|
|
57
58
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.migrator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/generators/ng-add/migrators/projects/lib.migrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,IAAI,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EACV,MAAM,EACN,6BAA6B,EAE7B,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.migrator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/generators/ng-add/migrators/projects/lib.migrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,IAAI,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EACV,MAAM,EACN,6BAA6B,EAE7B,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AASrD,qBAAa,WAAY,SAAQ,eAAe;gBAE5C,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,6BAA6B,EACtC,MAAM,CAAC,EAAE,MAAM;IAaF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B,QAAQ,IAAI,gBAAgB;IAUrC,OAAO,CAAC,gBAAgB;YAIV,0BAA0B;CAuBzC"}
|
|
@@ -8,6 +8,7 @@ const builders_1 = require("../builders");
|
|
|
8
8
|
const project_migrator_1 = require("./project.migrator");
|
|
9
9
|
const supportedBuilderMigrators = [
|
|
10
10
|
builders_1.AngularDevkitNgPackagrMigrator,
|
|
11
|
+
builders_1.AngularBuildUnitTestMigrator,
|
|
11
12
|
builders_1.AngularDevkitKarmaMigrator,
|
|
12
13
|
builders_1.AngularEslintLintMigrator,
|
|
13
14
|
];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Pipe, PipeTransform } from '@angular/core';
|
|
2
2
|
|
|
3
3
|
@Pipe({
|
|
4
|
-
name: '<%= selector %>'<% if (
|
|
4
|
+
name: '<%= selector %>'<% if (!standalone) { %>,
|
|
5
5
|
standalone: <%= standalone %><% } %>
|
|
6
6
|
})
|
|
7
7
|
export class <%= symbolName %> implements PipeTransform {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/pipe/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/pipe/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AASvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,iBA6CjE;AAED,eAAe,aAAa,CAAC"}
|