@nx/angular 17.0.3 → 17.0.4
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/LICENSE +1 -1
- package/README.md +9 -4
- package/esm2022/mf/mf.mjs +1 -1
- package/esm2022/src/runtime/nx/data-persistence.mjs +1 -1
- package/executors.d.ts +9 -2
- package/executors.js +7 -2
- package/executors.json +19 -9
- package/fesm2022/nx-angular-mf.mjs.map +1 -1
- package/fesm2022/nx-angular.mjs.map +1 -1
- package/generators.d.ts +1 -1
- package/generators.js +3 -1
- package/generators.json +7 -2
- package/migrations.json +451 -0
- package/ng-package.json +2 -2
- package/package.json +20 -26
- package/plugins/component-testing.d.ts +1 -26
- package/plugins/component-testing.js +15 -4
- package/src/builders/dev-server/dev-server.impl.d.ts +4 -0
- package/src/builders/dev-server/dev-server.impl.js +160 -0
- package/src/builders/{webpack-dev-server → dev-server}/lib/index.d.ts +1 -0
- package/src/builders/{webpack-dev-server → dev-server}/lib/index.js +1 -0
- package/src/builders/dev-server/lib/normalize-options.d.ts +2 -0
- package/src/builders/dev-server/lib/normalize-options.js +20 -0
- package/src/builders/dev-server/lib/validate-options.d.ts +2 -0
- package/src/builders/dev-server/lib/validate-options.js +22 -0
- package/src/builders/dev-server/schema.d.ts +39 -0
- package/src/builders/{webpack-dev-server → dev-server}/schema.json +42 -5
- package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.d.ts +1 -1
- package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +15 -9
- package/src/builders/utilities/module-federation.js +1 -1
- package/src/builders/webpack-browser/schema.d.ts +6 -2
- package/src/builders/webpack-browser/schema.json +15 -15
- package/src/builders/webpack-browser/webpack-browser.impl.js +8 -6
- package/src/builders/webpack-server/schema.d.ts +0 -1
- package/src/builders/webpack-server/schema.json +7 -20
- package/src/builders/webpack-server/validate-options.js +0 -7
- package/src/builders/webpack-server/webpack-server.impl.js +4 -9
- package/src/executors/application/application.impl.d.ts +3 -0
- package/src/executors/application/application.impl.js +37 -0
- package/src/executors/application/schema.d.ts +8 -0
- package/src/executors/application/schema.json +682 -0
- package/src/executors/application/utils/validate-options.d.ts +2 -0
- package/src/executors/application/utils/validate-options.js +52 -0
- package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +2 -3
- package/src/executors/browser-esbuild/browser-esbuild.impl.js +15 -8
- package/src/executors/browser-esbuild/schema.d.ts +3 -1
- package/src/executors/browser-esbuild/schema.json +38 -8
- package/src/executors/extract-i18n/extract-i18n.impl.d.ts +3 -0
- package/src/executors/extract-i18n/extract-i18n.impl.js +43 -0
- package/src/executors/extract-i18n/schema.d.ts +8 -0
- package/src/executors/extract-i18n/schema.json +45 -0
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.d.ts +4 -0
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +56 -0
- package/src/executors/module-federation-dev-server/lib/index.d.ts +5 -0
- package/src/executors/module-federation-dev-server/lib/index.js +8 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.d.ts +2 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.js +23 -0
- package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.d.ts +11 -0
- package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.js +18 -0
- package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +9 -0
- package/src/executors/module-federation-dev-server/lib/start-dev-remotes.js +29 -0
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.d.ts +9 -0
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +46 -0
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +4 -0
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +115 -0
- package/src/{builders → executors}/module-federation-dev-server/schema.d.ts +25 -7
- package/src/{builders → executors}/module-federation-dev-server/schema.json +31 -6
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +34 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.js +6 -4
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.js +25 -13
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.d.ts +1 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.js +14 -9
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.d.ts +5 -10
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.js +39 -86
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.d.ts +2 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.js +12 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.d.ts +8 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.js +12 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.d.ts +8 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.js +18 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.d.ts +8 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +285 -0
- package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +5 -17
- package/src/executors/ng-packagr-lite/schema.json +1 -1
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +5 -3
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +28 -0
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +1 -1
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +13 -6
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +5 -10
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +39 -86
- package/src/executors/package/package.impl.d.ts +1 -1
- package/src/executors/package/package.impl.js +5 -15
- package/src/executors/package/schema.json +3 -3
- package/src/executors/utilities/buildable-libs.d.ts +6 -0
- package/src/executors/{browser-esbuild/lib → utilities}/buildable-libs.js +3 -4
- package/src/executors/utilities/esbuild-extensions.d.ts +10 -0
- package/src/executors/utilities/esbuild-extensions.js +50 -0
- package/src/executors/utilities/module-loader.d.ts +15 -0
- package/src/executors/utilities/module-loader.js +52 -0
- package/src/executors/utilities/ng-compiler-cli.d.ts +1 -0
- package/src/executors/utilities/ng-compiler-cli.js +8 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.d.ts +49 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts +2 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +16 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.js +209 -0
- package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +7 -0
- package/src/executors/utilities/{tailwindcss.js → ng-packagr/tailwindcss.js} +5 -22
- package/src/executors/utilities/patch-builder-context.d.ts +3 -0
- package/src/executors/utilities/patch-builder-context.js +41 -0
- package/src/executors/utilities/typescript.js +1 -1
- package/src/generators/add-linting/add-linting.d.ts +1 -1
- package/src/generators/add-linting/add-linting.js +9 -15
- package/src/generators/add-linting/lib/add-angular-eslint-dependencies.d.ts +2 -2
- package/src/generators/add-linting/lib/add-angular-eslint-dependencies.js +9 -5
- package/src/generators/add-linting/lib/buildable-project.d.ts +2 -0
- package/src/generators/add-linting/lib/buildable-project.js +9 -0
- package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
- package/src/generators/add-linting/schema.json +1 -1
- package/src/generators/application/application.js +19 -17
- package/src/generators/application/files/base/tsconfig.app.json__tpl__ +1 -1
- package/src/generators/application/files/base/tsconfig.json__tpl__ +6 -2
- package/src/generators/application/files/ng-module/src/app/app.component.spec.ts__tpl__ +3 -1
- package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +4 -2
- package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +1 -1
- package/src/generators/application/files/ng-module/src/app/nx-welcome.component.ts__tpl__ +53 -14
- package/src/generators/application/files/ng-module/src/main.ts__tpl__ +2 -8
- package/src/generators/application/files/standalone-components/src/app/app.component.spec.ts__tpl__ +6 -4
- package/src/generators/application/files/standalone-components/src/app/app.component.ts__tpl__ +4 -2
- package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +3 -3
- package/src/generators/application/files/standalone-components/src/app/nx-welcome.component.ts__tpl__ +53 -14
- package/src/generators/application/files/standalone-components/src/main.ts__tpl__ +4 -8
- package/src/generators/application/lib/add-e2e.js +22 -8
- package/src/generators/application/lib/add-unit-test-runner.js +5 -20
- package/src/generators/application/lib/create-files.js +14 -10
- package/src/generators/application/lib/create-project.d.ts +1 -1
- package/src/generators/application/lib/create-project.js +48 -38
- package/src/generators/application/lib/index.d.ts +1 -0
- package/src/generators/application/lib/index.js +1 -0
- package/src/generators/application/lib/normalize-options.d.ts +1 -1
- package/src/generators/application/lib/normalize-options.js +28 -6
- package/src/generators/application/lib/normalized-schema.d.ts +5 -0
- package/src/generators/application/lib/set-generator-defaults.d.ts +3 -0
- package/src/generators/application/lib/set-generator-defaults.js +17 -0
- package/src/generators/application/lib/update-editor-tsconfig.d.ts +1 -1
- package/src/generators/application/lib/update-editor-tsconfig.js +11 -14
- package/src/generators/application/schema.d.ts +1 -0
- package/src/generators/application/schema.json +18 -10
- package/src/generators/component/component.js +4 -1
- package/src/generators/component/files/__fileName__.spec.ts__tpl__ +2 -3
- package/src/generators/component/files/__fileName__.ts__tpl__ +8 -2
- package/src/generators/component/lib/component.js +1 -1
- package/src/generators/component/lib/index.d.ts +1 -1
- package/src/generators/component/lib/index.js +1 -1
- package/src/generators/component/lib/normalize-options.js +3 -2
- package/src/generators/component/lib/set-generator-defaults.d.ts +3 -0
- package/src/generators/component/lib/set-generator-defaults.js +14 -0
- package/src/generators/component/schema.d.ts +3 -3
- package/src/generators/component/schema.json +4 -4
- package/src/generators/component-cypress-spec/files/__componentFileName__.__fileExt__ +13 -8
- package/src/generators/component-cypress-spec/schema.json +1 -1
- package/src/generators/component-story/files/__componentFileName__.stories.ts__tmpl__ +2 -2
- package/src/generators/component-test/component-test.d.ts +1 -1
- package/src/generators/component-test/component-test.js +8 -3
- package/src/generators/component-test/files/__componentFileName__.cy.ts__tpl__ +9 -11
- package/src/generators/component-test/schema.json +1 -1
- package/src/generators/convert-to-application-executor/convert-to-application-executor.d.ts +4 -0
- package/src/generators/convert-to-application-executor/convert-to-application-executor.js +242 -0
- package/src/generators/convert-to-application-executor/schema.d.ts +4 -0
- package/src/generators/convert-to-application-executor/schema.json +26 -0
- package/src/generators/convert-to-with-mf/convert-to-with-mf.js +3 -1
- package/src/generators/convert-to-with-mf/lib/write-new-webpack-config.js +3 -2
- package/src/generators/convert-to-with-mf/schema.d.ts +1 -0
- package/src/generators/convert-to-with-mf/schema.json +6 -0
- package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts +2 -1
- package/src/generators/cypress-component-configuration/cypress-component-configuration.js +43 -24
- package/src/generators/directive/directive.js +0 -1
- package/src/generators/directive/files/__fileName__.ts__tpl__ +1 -3
- package/src/generators/directive/lib/index.d.ts +0 -1
- package/src/generators/directive/lib/index.js +0 -1
- package/src/generators/directive/lib/normalize-options.js +3 -1
- package/src/generators/directive/schema.d.ts +3 -3
- package/src/generators/directive/schema.json +4 -4
- package/src/generators/federate-module/federate-module.js +1 -0
- package/src/generators/federate-module/lib/add-remote.d.ts +1 -1
- package/src/generators/federate-module/lib/add-remote.js +2 -11
- package/src/generators/federate-module/schema.json +3 -3
- package/src/generators/host/files/common/v17+/src/main.server.ts__tmpl__ +67 -0
- package/src/generators/host/files/ts/webpack.server.config.ts__tmpl__ +2 -2
- package/src/generators/host/host.js +8 -9
- package/src/generators/host/lib/index.d.ts +1 -1
- package/src/generators/host/lib/index.js +1 -1
- package/src/generators/host/lib/update-ssr-setup.d.ts +3 -0
- package/src/generators/host/lib/{add-ssr.js → update-ssr-setup.js} +8 -14
- package/src/generators/host/schema.json +6 -6
- package/src/generators/init/init.d.ts +2 -2
- package/src/generators/init/init.js +19 -137
- package/src/generators/init/schema.d.ts +1 -9
- package/src/generators/init/schema.json +8 -59
- package/src/generators/library/files/ng-module/src/lib/lib.routes.ts__tpl__ +1 -1
- package/src/generators/library/files/standalone-components/src/lib/lib.routes.ts__tpl__ +1 -1
- package/src/generators/library/lib/add-load-children.js +2 -2
- package/src/generators/library/lib/add-project.js +24 -22
- package/src/generators/library/lib/add-standalone-component.d.ts +2 -2
- package/src/generators/library/lib/add-standalone-component.js +5 -4
- package/src/generators/library/lib/normalize-options.js +2 -5
- package/src/generators/library/lib/set-generator-defaults.d.ts +3 -0
- package/src/generators/library/lib/set-generator-defaults.js +15 -0
- package/src/generators/library/lib/update-tsconfig.js +3 -3
- package/src/generators/library/library.js +15 -27
- package/src/generators/library/schema.d.ts +1 -0
- package/src/generators/library/schema.json +13 -13
- package/src/generators/library-secondary-entry-point/files/src/index.ts__tmpl__ +1 -5
- package/src/generators/library-secondary-entry-point/lib/index.d.ts +0 -1
- package/src/generators/library-secondary-entry-point/lib/index.js +0 -1
- package/src/generators/library-secondary-entry-point/library-secondary-entry-point.js +3 -2
- package/src/generators/library-secondary-entry-point/schema.d.ts +1 -0
- package/src/generators/library-secondary-entry-point/schema.json +9 -3
- package/src/generators/move/schema.json +1 -1
- package/src/generators/ng-add/migrate-from-angular-cli.js +1 -1
- package/src/generators/ng-add/migrators/projects/app.migrator.js +50 -7
- package/src/generators/ng-add/migrators/projects/e2e.migrator.js +31 -23
- package/src/generators/ng-add/ng-add.js +1 -8
- package/src/generators/ng-add/schema.json +1 -1
- package/src/generators/ng-add/utilities/workspace.d.ts +1 -1
- package/src/generators/ng-add/utilities/workspace.js +9 -16
- package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
- package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
- package/src/generators/ngrx/lib/generate-files.js +1 -10
- package/src/generators/ngrx/lib/validate-options.js +0 -23
- package/src/generators/ngrx/schema.json +3 -3
- package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
- package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
- package/src/generators/ngrx-feature-store/lib/generate-files.js +1 -12
- package/src/generators/ngrx-feature-store/lib/validate-options.js +0 -22
- package/src/generators/ngrx-feature-store/schema.json +3 -3
- package/src/generators/ngrx-root-store/lib/normalize-options.js +1 -1
- package/src/generators/ngrx-root-store/lib/validate-options.js +0 -15
- package/src/generators/ngrx-root-store/schema.json +2 -2
- package/src/generators/pipe/files/__fileName__.ts__tpl__ +0 -2
- package/src/generators/pipe/lib/index.d.ts +0 -1
- package/src/generators/pipe/lib/index.js +0 -1
- package/src/generators/pipe/lib/normalize-options.js +1 -0
- package/src/generators/pipe/pipe.js +0 -1
- package/src/generators/pipe/schema.d.ts +3 -3
- package/src/generators/pipe/schema.json +4 -4
- package/src/generators/remote/files/base-ts/webpack.server.config.ts__tmpl__ +2 -2
- package/src/generators/remote/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +1 -3
- package/src/generators/remote/files/common/v17+/src/main.server.ts__tmpl__ +73 -0
- package/src/generators/remote/lib/index.d.ts +1 -1
- package/src/generators/remote/lib/index.js +1 -1
- package/src/generators/remote/lib/{add-ssr.d.ts → update-ssr-setup.d.ts} +1 -1
- package/src/generators/remote/lib/{add-ssr.js → update-ssr-setup.js} +9 -13
- package/src/generators/remote/remote.js +7 -9
- package/src/generators/remote/schema.json +6 -6
- package/src/generators/scam/lib/convert-component-to-scam.js +2 -1
- package/src/generators/scam/schema.d.ts +3 -3
- package/src/generators/scam/schema.json +2 -2
- package/src/generators/scam-directive/lib/convert-directive-to-scam.js +2 -1
- package/src/generators/scam-directive/scam-directive.js +3 -1
- package/src/generators/scam-directive/schema.d.ts +4 -3
- package/src/generators/scam-directive/schema.json +8 -2
- package/src/generators/scam-pipe/lib/convert-pipe-to-scam.js +2 -1
- package/src/generators/scam-pipe/scam-pipe.js +3 -1
- package/src/generators/scam-pipe/schema.d.ts +4 -3
- package/src/generators/scam-pipe/schema.json +8 -2
- package/src/generators/scam-to-standalone/scam-to-standalone.js +0 -7
- package/src/generators/scam-to-standalone/schema.json +2 -2
- package/src/generators/setup-mf/files/host-files/app.component.spec.ts__tmpl__ +3 -1
- package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +12 -0
- package/src/generators/setup-mf/files/ts-webpack/tsconfig.lint.json__tmpl__ +12 -0
- package/src/generators/setup-mf/files/ts-webpack/webpack.config.ts__tmpl__ +1 -1
- package/src/generators/setup-mf/files/ts-webpack/webpack.prod.config.ts__tmpl__ +12 -12
- package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +13 -1
- package/src/generators/setup-mf/lib/add-cypress-workaround.js +14 -4
- package/src/generators/setup-mf/lib/add-remote-entry.js +2 -11
- package/src/generators/setup-mf/lib/add-remote-to-host.js +1 -1
- package/src/generators/setup-mf/lib/fix-bootstrap.js +10 -18
- package/src/generators/setup-mf/lib/generate-config.js +3 -0
- package/src/generators/setup-mf/lib/index.d.ts +1 -1
- package/src/generators/setup-mf/lib/index.js +1 -1
- package/src/generators/setup-mf/lib/normalize-options.js +2 -1
- package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +10 -10
- package/src/generators/setup-mf/lib/setup-serve-target.js +1 -1
- package/src/generators/setup-mf/lib/update-host-app-routes.js +2 -2
- package/src/generators/{pipe/lib/validate-options.d.ts → setup-mf/lib/update-tsconfig.d.ts} +1 -1
- package/src/generators/setup-mf/lib/update-tsconfig.js +19 -0
- package/src/generators/setup-mf/schema.d.ts +1 -0
- package/src/generators/setup-mf/schema.json +8 -3
- package/src/generators/setup-mf/setup-mf.js +1 -7
- package/src/generators/setup-ssr/files/ngmodule/base/src/__main__ +1 -1
- package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +56 -0
- package/src/generators/setup-ssr/files/{ngmodule/base → server/server-builder/pre-v17}/__serverFileName__ +7 -8
- package/src/generators/setup-ssr/files/{standalone → server/server-builder/v17+}/__serverFileName__ +25 -16
- package/src/generators/setup-ssr/lib/add-dependencies.d.ts +2 -0
- package/src/generators/setup-ssr/lib/add-dependencies.js +36 -0
- package/src/generators/setup-ssr/lib/add-hydration.js +11 -5
- package/src/generators/setup-ssr/lib/add-server-file.d.ts +3 -0
- package/src/generators/setup-ssr/lib/add-server-file.js +31 -0
- package/src/generators/setup-ssr/lib/constants.d.ts +3 -0
- package/src/generators/setup-ssr/lib/constants.js +6 -0
- package/src/generators/setup-ssr/lib/generate-files.d.ts +1 -1
- package/src/generators/setup-ssr/lib/generate-files.js +11 -16
- package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +4 -0
- package/src/generators/setup-ssr/lib/generate-server-ts-config.js +29 -0
- package/src/generators/setup-ssr/lib/index.d.ts +4 -0
- package/src/generators/setup-ssr/lib/index.js +4 -0
- package/src/generators/setup-ssr/lib/normalize-options.js +7 -1
- package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +3 -0
- package/src/generators/setup-ssr/lib/set-router-initial-navigation.js +93 -0
- package/src/generators/setup-ssr/lib/update-project-config.d.ts +2 -1
- package/src/generators/setup-ssr/lib/update-project-config.js +46 -13
- package/src/generators/setup-ssr/lib/validate-options.js +15 -2
- package/src/generators/setup-ssr/schema.json +4 -4
- package/src/generators/setup-ssr/setup-ssr.js +18 -12
- package/src/generators/setup-tailwind/schema.json +1 -1
- package/src/generators/stories/schema.json +1 -1
- package/src/generators/stories/stories.js +2 -2
- package/src/generators/storybook-configuration/lib/generate-stories.js +6 -4
- package/src/generators/storybook-configuration/lib/generate-storybook-configuration.js +3 -1
- package/src/generators/storybook-configuration/schema.d.ts +1 -1
- package/src/generators/storybook-configuration/schema.json +7 -7
- package/src/generators/storybook-configuration/storybook-configuration.js +8 -5
- package/src/generators/utils/add-jest.d.ts +8 -0
- package/src/generators/utils/add-jest.js +36 -0
- package/src/generators/utils/add-mf-env-to-inputs.d.ts +2 -0
- package/src/generators/utils/add-mf-env-to-inputs.js +27 -0
- package/src/generators/utils/dependencies.js +1 -2
- package/src/generators/utils/ensure-angular-dependencies.d.ts +2 -0
- package/src/generators/utils/ensure-angular-dependencies.js +35 -0
- package/src/generators/utils/export-scam.js +2 -2
- package/src/generators/utils/project.d.ts +0 -1
- package/src/generators/utils/project.js +2 -29
- package/src/generators/utils/selector.d.ts +2 -2
- package/src/generators/utils/selector.js +11 -4
- package/src/generators/utils/testing.js +24 -1
- package/src/generators/utils/update-app-editor-tsconfig-excluded-files.d.ts +2 -0
- package/src/generators/utils/update-app-editor-tsconfig-excluded-files.js +23 -0
- package/src/generators/utils/update-project-root-tsconfig.d.ts +3 -0
- package/src/generators/utils/update-project-root-tsconfig.js +26 -0
- package/src/generators/utils/validations.d.ts +0 -1
- package/src/generators/utils/validations.js +1 -14
- package/src/generators/utils/version-utils.d.ts +2 -2
- package/src/generators/utils/version-utils.js +3 -3
- package/src/migrations/update-17-1-0/browser-target-to-build-target.d.ts +3 -0
- package/src/migrations/update-17-1-0/browser-target-to-build-target.js +50 -0
- package/src/migrations/update-17-1-0/replace-nguniversal-builders.d.ts +2 -0
- package/src/migrations/update-17-1-0/replace-nguniversal-builders.js +75 -0
- package/src/migrations/update-17-1-0/replace-nguniversal-engines.d.ts +2 -0
- package/src/migrations/update-17-1-0/replace-nguniversal-engines.js +183 -0
- package/src/migrations/update-17-1-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-17-1-0/update-angular-cli.js +23 -0
- package/src/migrations/update-17-1-0/update-zone-js-deep-import.d.ts +2 -0
- package/src/migrations/update-17-1-0/update-zone-js-deep-import.js +37 -0
- package/src/migrations/update-17-2-0/rename-webpack-dev-server.d.ts +2 -0
- package/src/migrations/update-17-2-0/rename-webpack-dev-server.js +40 -0
- package/src/migrations/update-17-3-0/add-autoprefixer-dependency.d.ts +2 -0
- package/src/migrations/update-17-3-0/add-autoprefixer-dependency.js +26 -0
- package/src/migrations/update-17-3-0/add-browser-sync-dependency.d.ts +2 -0
- package/src/migrations/update-17-3-0/add-browser-sync-dependency.js +26 -0
- package/src/migrations/update-17-3-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-17-3-0/update-angular-cli.js +23 -0
- package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.d.ts +2 -0
- package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.js +26 -0
- package/src/migrations/update-18-1-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-18-1-0/update-angular-cli.js +23 -0
- package/src/migrations/update-18-1-1/fix-target-defaults-inputs.d.ts +2 -0
- package/src/migrations/update-18-1-1/fix-target-defaults-inputs.js +53 -0
- package/src/migrations/update-18-2-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-18-2-0/update-angular-cli.js +23 -0
- package/src/utils/backward-compatible-versions.d.ts +6 -4
- package/src/utils/backward-compatible-versions.js +20 -22
- package/src/utils/{public-api.d.ts → index.d.ts} +5 -0
- package/src/utils/{public-api.js → index.js} +5 -0
- package/src/utils/mf/utils.js +7 -0
- package/src/utils/mf/with-module-federation-ssr.js +3 -0
- package/src/utils/mf/with-module-federation.js +3 -0
- package/src/utils/nx-devkit/ast-utils.js +4 -2
- package/src/utils/nx-devkit/testing.js +27 -31
- package/src/utils/targets.d.ts +2 -0
- package/src/utils/targets.js +17 -0
- package/src/utils/version-utils.d.ts +3 -3
- package/src/utils/versions.d.ts +9 -11
- package/src/utils/versions.js +10 -12
- package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.d.ts +0 -5
- package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.js +0 -136
- package/src/builders/webpack-browser/validate-options.d.ts +0 -2
- package/src/builders/webpack-browser/validate-options.js +0 -40
- package/src/builders/webpack-dev-server/lib/normalize-options.d.ts +0 -2
- package/src/builders/webpack-dev-server/lib/normalize-options.js +0 -14
- package/src/builders/webpack-dev-server/schema.d.ts +0 -21
- package/src/builders/webpack-dev-server/webpack-dev-server.impl.d.ts +0 -4
- package/src/builders/webpack-dev-server/webpack-dev-server.impl.js +0 -105
- package/src/executors/browser-esbuild/lib/buildable-libs.d.ts +0 -9
- package/src/executors/browser-esbuild/lib/validate-options.d.ts +0 -2
- package/src/executors/browser-esbuild/lib/validate-options.js +0 -40
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -16
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -175
- package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -15
- package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -197
- package/src/executors/utilities/tailwindcss.d.ts +0 -7
- package/src/generators/application/files/tsconfig.editor.json__tpl__ +0 -5
- package/src/generators/application/files/v14/.browserlistrc__tpl__ +0 -16
- package/src/generators/application/files/v14/src/environments/environment.prod.ts__tpl__ +0 -3
- package/src/generators/application/files/v14/src/environments/environment.ts__tpl__ +0 -16
- package/src/generators/application/files/v14/src/polyfills.ts__tpl__ +0 -53
- package/src/generators/component/lib/validate-options.d.ts +0 -3
- package/src/generators/component/lib/validate-options.js +0 -8
- package/src/generators/directive/lib/validate-options.d.ts +0 -3
- package/src/generators/directive/lib/validate-options.js +0 -8
- package/src/generators/host/lib/add-ssr.d.ts +0 -3
- package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.d.ts +0 -3
- package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.js +0 -15
- package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
- package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
- package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
- package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
- package/src/generators/pipe/lib/validate-options.js +0 -8
- package/src/generators/setup-mf/lib/set-tsconfig-target.d.ts +0 -3
- package/src/generators/setup-mf/lib/set-tsconfig-target.js +0 -16
- package/src/generators/setup-ssr/files/ngmodule/v14/src/__main__ +0 -11
- package/src/generators/utils/create-ts-config.d.ts +0 -8
- package/src/generators/utils/create-ts-config.js +0 -35
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.js +0 -0
- /package/src/generators/host/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
- /package/src/generators/setup-ssr/files/{base → root}/tsconfig.server.json__tpl__ +0 -0
|
@@ -1,9 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.updateProjectConfigForBrowserBuilder = exports.updateProjectConfigForApplicationBuilder = void 0;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const version_utils_1 = require("../../utils/version-utils");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
function updateProjectConfigForApplicationBuilder(tree, options) {
|
|
8
|
+
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
9
|
+
const buildTarget = project.targets.build;
|
|
10
|
+
let outputPath = buildTarget.options?.outputPath;
|
|
11
|
+
if (outputPath &&
|
|
12
|
+
typeof outputPath !== 'string' &&
|
|
13
|
+
outputPath.browser === '') {
|
|
14
|
+
const base = outputPath.base;
|
|
15
|
+
devkit_1.logger.warn(`The output location of the browser build has been updated from "${base}" to "${(0, devkit_1.joinPathFragments)(base, constants_1.DEFAULT_BROWSER_DIR)}".
|
|
16
|
+
You might need to adjust your deployment pipeline.`);
|
|
17
|
+
if ((outputPath.media && outputPath.media !== constants_1.DEFAULT_MEDIA_DIR) ||
|
|
18
|
+
(outputPath.server && outputPath.server !== constants_1.DEFAULT_SERVER_DIR)) {
|
|
19
|
+
delete outputPath.browser;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
outputPath = outputPath.base;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
buildTarget.options ??= {};
|
|
26
|
+
buildTarget.options.outputPath = outputPath;
|
|
27
|
+
buildTarget.options.server = (0, devkit_1.joinPathFragments)(project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src'), options.main);
|
|
28
|
+
buildTarget.options.prerender = true;
|
|
29
|
+
buildTarget.options.ssr = {
|
|
30
|
+
entry: (0, devkit_1.joinPathFragments)(project.root, options.serverFileName),
|
|
31
|
+
};
|
|
32
|
+
(0, devkit_1.updateProjectConfiguration)(tree, options.project, project);
|
|
33
|
+
}
|
|
34
|
+
exports.updateProjectConfigForApplicationBuilder = updateProjectConfigForApplicationBuilder;
|
|
35
|
+
function updateProjectConfigForBrowserBuilder(tree, schema) {
|
|
36
|
+
const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
|
|
7
37
|
const buildTarget = projectConfig.targets.build;
|
|
8
38
|
const baseOutputPath = buildTarget.options.outputPath;
|
|
9
39
|
buildTarget.options.outputPath = (0, devkit_1.joinPathFragments)(baseOutputPath, 'browser');
|
|
@@ -16,7 +46,9 @@ function updateProjectConfig(tree, schema) {
|
|
|
16
46
|
}
|
|
17
47
|
projectConfig.targets.server = {
|
|
18
48
|
dependsOn: ['build'],
|
|
19
|
-
executor: '@angular-devkit/build-angular:
|
|
49
|
+
executor: buildTarget.executor.startsWith('@angular-devkit/build-angular:')
|
|
50
|
+
? '@angular-devkit/build-angular:server'
|
|
51
|
+
: '@nx/angular:webpack-server',
|
|
20
52
|
options: {
|
|
21
53
|
outputPath: (0, devkit_1.joinPathFragments)(baseOutputPath, 'server'),
|
|
22
54
|
main: (0, devkit_1.joinPathFragments)(projectConfig.root, schema.serverFileName),
|
|
@@ -26,8 +58,11 @@ function updateProjectConfig(tree, schema) {
|
|
|
26
58
|
configurations,
|
|
27
59
|
defaultConfiguration: 'production',
|
|
28
60
|
};
|
|
61
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
29
62
|
projectConfig.targets['serve-ssr'] = {
|
|
30
|
-
executor:
|
|
63
|
+
executor: angularMajorVersion >= 17
|
|
64
|
+
? '@angular-devkit/build-angular:ssr-dev-server'
|
|
65
|
+
: '@nguniversal/builders:ssr-dev-server',
|
|
31
66
|
configurations: {
|
|
32
67
|
development: {
|
|
33
68
|
browserTarget: `${schema.project}:build:development`,
|
|
@@ -41,7 +76,9 @@ function updateProjectConfig(tree, schema) {
|
|
|
41
76
|
defaultConfiguration: 'development',
|
|
42
77
|
};
|
|
43
78
|
projectConfig.targets.prerender = {
|
|
44
|
-
executor:
|
|
79
|
+
executor: angularMajorVersion >= 17
|
|
80
|
+
? '@angular-devkit/build-angular:prerender'
|
|
81
|
+
: '@nguniversal/builders:prerender',
|
|
45
82
|
options: {
|
|
46
83
|
routes: ['/'],
|
|
47
84
|
},
|
|
@@ -59,20 +96,16 @@ function updateProjectConfig(tree, schema) {
|
|
|
59
96
|
};
|
|
60
97
|
(0, devkit_1.updateProjectConfiguration)(tree, schema.project, projectConfig);
|
|
61
98
|
const nxJson = (0, devkit_1.readNxJson)(tree);
|
|
62
|
-
if (nxJson.tasksRunnerOptions?.default &&
|
|
99
|
+
if (nxJson.tasksRunnerOptions?.default?.options?.cacheableOperations &&
|
|
63
100
|
!nxJson.tasksRunnerOptions.default.options.cacheableOperations.includes('server')) {
|
|
64
|
-
nxJson.tasksRunnerOptions.default.options.cacheableOperations
|
|
65
|
-
...nxJson.tasksRunnerOptions.default.options.cacheableOperations,
|
|
66
|
-
'server',
|
|
67
|
-
];
|
|
68
|
-
(0, devkit_1.updateNxJson)(tree, nxJson);
|
|
101
|
+
nxJson.tasksRunnerOptions.default.options.cacheableOperations.push('server');
|
|
69
102
|
}
|
|
70
103
|
nxJson.targetDefaults ??= {};
|
|
71
104
|
nxJson.targetDefaults.server ??= {};
|
|
72
105
|
nxJson.targetDefaults.server.cache ??= true;
|
|
73
106
|
(0, devkit_1.updateNxJson)(tree, nxJson);
|
|
74
107
|
}
|
|
75
|
-
exports.
|
|
108
|
+
exports.updateProjectConfigForBrowserBuilder = updateProjectConfigForBrowserBuilder;
|
|
76
109
|
function getServerOptions(options = {}) {
|
|
77
110
|
return {
|
|
78
111
|
buildOptimizer: options?.buildOptimizer,
|
|
@@ -6,11 +6,24 @@ const validations_1 = require("../../utils/validations");
|
|
|
6
6
|
const version_utils_1 = require("../../utils/version-utils");
|
|
7
7
|
const semver_1 = require("semver");
|
|
8
8
|
function validateOptions(tree, options) {
|
|
9
|
-
|
|
10
|
-
(
|
|
9
|
+
validateProject(tree, options.project);
|
|
10
|
+
validateBuildTarget(tree, options.project);
|
|
11
11
|
validateHydrationOption(tree, options.hydration);
|
|
12
12
|
}
|
|
13
13
|
exports.validateOptions = validateOptions;
|
|
14
|
+
function validateProject(tree, project) {
|
|
15
|
+
(0, validations_1.validateProject)(tree, project);
|
|
16
|
+
const { projectType } = (0, devkit_1.readProjectConfiguration)(tree, project);
|
|
17
|
+
if (projectType !== 'application') {
|
|
18
|
+
throw new Error(`The "${project}" project is not an application. Only application projects are supported by the "setup-ssr" generator.`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function validateBuildTarget(tree, project) {
|
|
22
|
+
const { targets } = (0, devkit_1.readProjectConfiguration)(tree, project);
|
|
23
|
+
if (!targets?.build) {
|
|
24
|
+
throw new Error(`The "${project}" project does not have a "build" target. Please add a "build" target.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
14
27
|
function validateHydrationOption(tree, hydration) {
|
|
15
28
|
if (!hydration) {
|
|
16
29
|
return;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
3
|
"$id": "GeneratorAngularUniversalSetup",
|
|
4
4
|
"cli": "nx",
|
|
5
5
|
"title": "Generate Angular Universal (SSR) setup for an Angular App",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"appId": {
|
|
20
20
|
"type": "string",
|
|
21
21
|
"format": "html-selector",
|
|
22
|
-
"description": "The `appId` to use with `withServerTransition`. _Note: This is only used in Angular versions <16.0.0. It's deprecated since Angular 16._",
|
|
22
|
+
"description": "The `appId` to use with `withServerTransition`. _Note: This is only used in Angular versions <16.0.0. It's deprecated since Angular 16 and not supported since Angular 17._",
|
|
23
23
|
"default": "serverApp"
|
|
24
24
|
},
|
|
25
25
|
"main": {
|
|
@@ -51,11 +51,11 @@
|
|
|
51
51
|
},
|
|
52
52
|
"standalone": {
|
|
53
53
|
"type": "boolean",
|
|
54
|
-
"description": "Use Standalone Components to bootstrap SSR.
|
|
54
|
+
"description": "Use Standalone Components to bootstrap SSR."
|
|
55
55
|
},
|
|
56
56
|
"hydration": {
|
|
57
57
|
"type": "boolean",
|
|
58
|
-
"description": "Set up Hydration for the SSR application. _Note: This is only supported in Angular versions >= 16.0.0_."
|
|
58
|
+
"description": "Set up Hydration for the SSR application. It defaults to `true` for Angular versions >= 17.0.0. Otherwise, it defaults to `false`. _Note: This is only supported in Angular versions >= 16.0.0_."
|
|
59
59
|
},
|
|
60
60
|
"skipFormat": {
|
|
61
61
|
"type": "boolean",
|
|
@@ -7,24 +7,30 @@ const lib_1 = require("./lib");
|
|
|
7
7
|
async function setupSsr(tree, schema) {
|
|
8
8
|
(0, lib_1.validateOptions)(tree, schema);
|
|
9
9
|
const options = (0, lib_1.normalizeOptions)(tree, schema);
|
|
10
|
-
(0,
|
|
11
|
-
|
|
10
|
+
const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
11
|
+
const isUsingApplicationBuilder = targets.build.executor === '@angular-devkit/build-angular:application' ||
|
|
12
|
+
targets.build.executor === '@nx/angular:application';
|
|
13
|
+
(0, lib_1.addDependencies)(tree, isUsingApplicationBuilder);
|
|
14
|
+
(0, lib_1.generateSSRFiles)(tree, options, isUsingApplicationBuilder);
|
|
12
15
|
if (!options.standalone) {
|
|
13
16
|
(0, lib_1.updateAppModule)(tree, options);
|
|
14
17
|
}
|
|
15
18
|
if (options.hydration) {
|
|
16
19
|
(0, lib_1.addHydration)(tree, options);
|
|
17
20
|
}
|
|
18
|
-
const
|
|
19
|
-
(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
22
|
+
if (angularMajorVersion < 17 || !options.hydration) {
|
|
23
|
+
(0, lib_1.setRouterInitialNavigation)(tree, options);
|
|
24
|
+
}
|
|
25
|
+
if (isUsingApplicationBuilder) {
|
|
26
|
+
(0, lib_1.updateProjectConfigForApplicationBuilder)(tree, options);
|
|
27
|
+
(0, lib_1.setServerTsConfigOptionsForApplicationBuilder)(tree, options);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
(0, lib_1.updateProjectConfigForBrowserBuilder)(tree, options);
|
|
31
|
+
(0, lib_1.generateTsConfigServerJsonForBrowserBuilder)(tree, options);
|
|
32
|
+
}
|
|
33
|
+
(0, lib_1.addServerFile)(tree, options, isUsingApplicationBuilder);
|
|
28
34
|
if (!options.skipFormat) {
|
|
29
35
|
await (0, devkit_1.formatFiles)(tree);
|
|
30
36
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
3
|
"$id": "NxAngularStorybookStoriesGenerator",
|
|
4
4
|
"title": "Create Storybook stories/specs",
|
|
5
5
|
"description": "Creates Storybook stories/specs for all Angular components declared in a project.",
|
|
@@ -8,7 +8,7 @@ const component_info_1 = require("../utils/storybook-ast/component-info");
|
|
|
8
8
|
const entry_point_1 = require("../utils/storybook-ast/entry-point");
|
|
9
9
|
const get_e2e_project_1 = require("./lib/get-e2e-project");
|
|
10
10
|
const module_info_1 = require("../utils/storybook-ast/module-info");
|
|
11
|
-
const
|
|
11
|
+
const minimatch_1 = require("minimatch");
|
|
12
12
|
const versions_1 = require("../../utils/versions");
|
|
13
13
|
async function angularStoriesGenerator(tree, options) {
|
|
14
14
|
const e2eProjectName = options.cypressProject ?? `${options.name}-e2e`;
|
|
@@ -23,7 +23,7 @@ async function angularStoriesGenerator(tree, options) {
|
|
|
23
23
|
devkit_1.logger.info(`There was no e2e project "${e2eProjectName}" found, so cypress specs will not be generated. Pass "--cypressProject" to specify a different e2e project name.`);
|
|
24
24
|
}
|
|
25
25
|
const componentInfos = componentsInfo.filter((f) => !options.ignorePaths?.some((pattern) => {
|
|
26
|
-
const shouldIgnorePath = minimatch((0, devkit_1.joinPathFragments)(f.moduleFolderPath, f.path, `${f.componentFileName}.ts`), pattern);
|
|
26
|
+
const shouldIgnorePath = (0, minimatch_1.minimatch)((0, devkit_1.joinPathFragments)(f.moduleFolderPath, f.path, `${f.componentFileName}.ts`), pattern);
|
|
27
27
|
return shouldIgnorePath;
|
|
28
28
|
}));
|
|
29
29
|
for (const info of componentInfos) {
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateStories = void 0;
|
|
4
|
-
const project_name_1 = require("@nx/cypress/src/utils/project-name");
|
|
5
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const versions_1 = require("../../../utils/versions");
|
|
6
6
|
const stories_1 = require("../../stories/stories");
|
|
7
7
|
async function generateStories(tree, options) {
|
|
8
|
-
const project = (0, devkit_1.readProjectConfiguration)(tree, options.
|
|
9
|
-
|
|
8
|
+
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
9
|
+
(0, devkit_1.ensurePackage)('@nx/cypress', versions_1.nxVersion);
|
|
10
|
+
const { getE2eProjectName } = await Promise.resolve().then(() => require('@nx/cypress/src/utils/project-name'));
|
|
11
|
+
const e2eProjectName = getE2eProjectName(options.project, project.root, options.cypressDirectory);
|
|
10
12
|
await (0, stories_1.angularStoriesGenerator)(tree, {
|
|
11
|
-
name: options.
|
|
13
|
+
name: options.project,
|
|
12
14
|
generateCypressSpecs: options.configureCypress && options.generateCypressSpecs,
|
|
13
15
|
cypressProject: e2eProjectName,
|
|
14
16
|
ignorePaths: options.ignorePaths,
|
|
@@ -6,7 +6,7 @@ const versions_1 = require("../../../utils/versions");
|
|
|
6
6
|
async function generateStorybookConfiguration(tree, options) {
|
|
7
7
|
const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/storybook', versions_1.nxVersion);
|
|
8
8
|
return await configurationGenerator(tree, {
|
|
9
|
-
|
|
9
|
+
project: options.project,
|
|
10
10
|
uiFramework: '@storybook/angular',
|
|
11
11
|
configureCypress: options.configureCypress,
|
|
12
12
|
linter: options.linter,
|
|
@@ -15,6 +15,8 @@ async function generateStorybookConfiguration(tree, options) {
|
|
|
15
15
|
interactionTests: options.interactionTests,
|
|
16
16
|
configureStaticServe: options.configureStaticServe,
|
|
17
17
|
skipFormat: true,
|
|
18
|
+
addPlugin: false,
|
|
19
|
+
addExplicitTargets: true,
|
|
18
20
|
});
|
|
19
21
|
}
|
|
20
22
|
exports.generateStorybookConfiguration = generateStorybookConfiguration;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
3
|
"$id": "NxAngularStorybookConfigurationGenerator",
|
|
4
4
|
"title": "Adds Storybook configuration to a project.",
|
|
5
5
|
"description": "Adds Storybook configuration to a project to be able to use and create stories.",
|
|
6
6
|
"cli": "nx",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|
|
9
|
-
"
|
|
9
|
+
"project": {
|
|
10
10
|
"type": "string",
|
|
11
|
-
"aliases": ["
|
|
11
|
+
"aliases": ["name", "projectName"],
|
|
12
12
|
"description": "Project for which to generate Storybook configuration.",
|
|
13
13
|
"$default": {
|
|
14
14
|
"$source": "argv",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"configureCypress": {
|
|
30
30
|
"type": "boolean",
|
|
31
31
|
"description": "Specifies whether to configure Cypress or not.",
|
|
32
|
-
"x-deprecated": "Use interactionTests instead. This option will be removed in
|
|
32
|
+
"x-deprecated": "Use interactionTests instead. This option will be removed in v19."
|
|
33
33
|
},
|
|
34
34
|
"generateStories": {
|
|
35
35
|
"type": "boolean",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"generateCypressSpecs": {
|
|
42
42
|
"type": "boolean",
|
|
43
43
|
"description": "Specifies whether to automatically generate test files in the generated Cypress e2e app.",
|
|
44
|
-
"x-deprecated": "Use interactionTests instead. This option will be removed in
|
|
44
|
+
"x-deprecated": "Use interactionTests instead. This option will be removed in v19."
|
|
45
45
|
},
|
|
46
46
|
"configureStaticServe": {
|
|
47
47
|
"type": "boolean",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"cypressDirectory": {
|
|
54
54
|
"type": "string",
|
|
55
55
|
"description": "A directory where the Cypress project will be placed. Placed at the root by default.",
|
|
56
|
-
"x-deprecated": "Use interactionTests instead. This option will be removed in
|
|
56
|
+
"x-deprecated": "Use interactionTests instead. This option will be removed in v19."
|
|
57
57
|
},
|
|
58
58
|
"linter": {
|
|
59
59
|
"description": "The tool to use for running lint checks.",
|
|
@@ -93,6 +93,6 @@
|
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
95
|
"additionalProperties": false,
|
|
96
|
-
"required": ["
|
|
96
|
+
"required": ["project"],
|
|
97
97
|
"examplesFile": "../../../docs/storybook-configuration-examples.md"
|
|
98
98
|
}
|
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.storybookConfigurationGenerator = void 0;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const update_app_editor_tsconfig_excluded_files_1 = require("../utils/update-app-editor-tsconfig-excluded-files");
|
|
5
6
|
const assert_compatible_storybook_version_1 = require("./lib/assert-compatible-storybook-version");
|
|
6
7
|
const generate_stories_1 = require("./lib/generate-stories");
|
|
7
8
|
const generate_storybook_configuration_1 = require("./lib/generate-storybook-configuration");
|
|
8
9
|
const validate_options_1 = require("./lib/validate-options");
|
|
9
|
-
// TODO(katerina): Nx
|
|
10
|
+
// TODO(katerina): Nx 19 -> remove Cypress
|
|
10
11
|
async function storybookConfigurationGenerator(tree, options) {
|
|
11
12
|
(0, assert_compatible_storybook_version_1.assertCompatibleStorybookVersion)();
|
|
12
13
|
(0, validate_options_1.validateOptions)(options);
|
|
13
14
|
const storybookGeneratorInstallTask = await (0, generate_storybook_configuration_1.generateStorybookConfiguration)(tree, {
|
|
14
15
|
...options,
|
|
15
|
-
interactionTests: options.interactionTests ?? true,
|
|
16
|
+
interactionTests: options.interactionTests ?? true, // default is true
|
|
16
17
|
tsConfiguration: options.tsConfiguration ?? true, // default is true
|
|
17
18
|
});
|
|
18
19
|
if (options.generateStories) {
|
|
@@ -22,12 +23,14 @@ async function storybookConfigurationGenerator(tree, options) {
|
|
|
22
23
|
skipFormat: true,
|
|
23
24
|
});
|
|
24
25
|
}
|
|
26
|
+
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
27
|
+
if (project.projectType === 'application') {
|
|
28
|
+
(0, update_app_editor_tsconfig_excluded_files_1.updateAppEditorTsConfigExcludedFiles)(tree, project);
|
|
29
|
+
}
|
|
25
30
|
if (!options.skipFormat) {
|
|
26
31
|
await (0, devkit_1.formatFiles)(tree);
|
|
27
32
|
}
|
|
28
|
-
return
|
|
29
|
-
storybookGeneratorInstallTask();
|
|
30
|
-
};
|
|
33
|
+
return storybookGeneratorInstallTask;
|
|
31
34
|
}
|
|
32
35
|
exports.storybookConfigurationGenerator = storybookConfigurationGenerator;
|
|
33
36
|
exports.default = storybookConfigurationGenerator;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addJest = void 0;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const versions_1 = require("../../utils/versions");
|
|
6
|
+
const version_utils_1 = require("./version-utils");
|
|
7
|
+
async function addJest(tree, options) {
|
|
8
|
+
if (!options.skipPackageJson) {
|
|
9
|
+
process.env.npm_config_legacy_peer_deps ??= 'true';
|
|
10
|
+
(0, version_utils_1.addDependenciesToPackageJsonIfDontExist)(tree, {}, { 'jest-preset-angular': versions_1.jestPresetAngularVersion });
|
|
11
|
+
}
|
|
12
|
+
const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/jest', versions_1.nxVersion);
|
|
13
|
+
await configurationGenerator(tree, {
|
|
14
|
+
project: options.name,
|
|
15
|
+
setupFile: 'angular',
|
|
16
|
+
supportTsx: false,
|
|
17
|
+
skipSerializers: false,
|
|
18
|
+
skipPackageJson: options.skipPackageJson,
|
|
19
|
+
skipFormat: true,
|
|
20
|
+
addPlugin: false,
|
|
21
|
+
addExplicitTargets: true,
|
|
22
|
+
});
|
|
23
|
+
const setupFile = (0, devkit_1.joinPathFragments)(options.projectRoot, 'src', 'test-setup.ts');
|
|
24
|
+
if (options.strict && tree.exists(setupFile)) {
|
|
25
|
+
const contents = tree.read(setupFile, 'utf-8');
|
|
26
|
+
tree.write(setupFile, `// @ts-expect-error https://thymikee.github.io/jest-preset-angular/docs/getting-started/test-environment
|
|
27
|
+
globalThis.ngJest = {
|
|
28
|
+
testEnvironmentOptions: {
|
|
29
|
+
errorOnUnknownElements: true,
|
|
30
|
+
errorOnUnknownProperties: true,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
${contents}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.addJest = addJest;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addMfEnvToTargetDefaultInputs = void 0;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
function addMfEnvToTargetDefaultInputs(tree) {
|
|
6
|
+
const nxJson = (0, devkit_1.readNxJson)(tree);
|
|
7
|
+
const webpackExecutor = '@nx/angular:webpack-browser';
|
|
8
|
+
const mfEnvVar = 'NX_MF_DEV_SERVER_STATIC_REMOTES';
|
|
9
|
+
nxJson.targetDefaults ??= {};
|
|
10
|
+
nxJson.targetDefaults[webpackExecutor] ??= {};
|
|
11
|
+
nxJson.targetDefaults[webpackExecutor].inputs ??= [
|
|
12
|
+
'production',
|
|
13
|
+
'^production',
|
|
14
|
+
];
|
|
15
|
+
let mfEnvVarExists = false;
|
|
16
|
+
for (const input of nxJson.targetDefaults[webpackExecutor].inputs) {
|
|
17
|
+
if (typeof input === 'object' && input['env'] === mfEnvVar) {
|
|
18
|
+
mfEnvVarExists = true;
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (!mfEnvVarExists) {
|
|
23
|
+
nxJson.targetDefaults[webpackExecutor].inputs.push({ env: mfEnvVar });
|
|
24
|
+
(0, devkit_1.updateNxJson)(tree, nxJson);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.addMfEnvToTargetDefaultInputs = addMfEnvToTargetDefaultInputs;
|
|
@@ -7,8 +7,7 @@ function addBuildableLibrariesPostCssDependencies(tree) {
|
|
|
7
7
|
const pkgVersions = (0, version_utils_1.versions)(tree);
|
|
8
8
|
(0, devkit_1.addDependenciesToPackageJson)(tree, {}, {
|
|
9
9
|
postcss: pkgVersions.postcssVersion,
|
|
10
|
-
|
|
11
|
-
'postcss-preset-env': pkgVersions.postcssPresetEnvVersion,
|
|
10
|
+
autoprefixer: pkgVersions.autoprefixerVersion,
|
|
12
11
|
'postcss-url': pkgVersions.postcssUrlVersion,
|
|
13
12
|
});
|
|
14
13
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureAngularDependencies = void 0;
|
|
4
|
+
const version_utils_1 = require("./version-utils");
|
|
5
|
+
function ensureAngularDependencies(tree) {
|
|
6
|
+
const pkgVersions = (0, version_utils_1.versions)(tree);
|
|
7
|
+
const angularVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, '@angular/core') ??
|
|
8
|
+
pkgVersions.angularVersion;
|
|
9
|
+
const angularDevkitVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, '@angular-devkit/build-angular') ??
|
|
10
|
+
pkgVersions.angularDevkitVersion;
|
|
11
|
+
const rxjsVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, 'rxjs') ?? pkgVersions.rxjsVersion;
|
|
12
|
+
const tsLibVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, 'tslib') ?? pkgVersions.tsLibVersion;
|
|
13
|
+
const zoneJsVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, 'zone.js') ?? pkgVersions.zoneJsVersion;
|
|
14
|
+
return (0, version_utils_1.addDependenciesToPackageJsonIfDontExist)(tree, {
|
|
15
|
+
'@angular/animations': angularVersion,
|
|
16
|
+
'@angular/common': angularVersion,
|
|
17
|
+
'@angular/compiler': angularVersion,
|
|
18
|
+
'@angular/core': angularVersion,
|
|
19
|
+
'@angular/forms': angularVersion,
|
|
20
|
+
'@angular/platform-browser': angularVersion,
|
|
21
|
+
'@angular/platform-browser-dynamic': angularVersion,
|
|
22
|
+
'@angular/router': angularVersion,
|
|
23
|
+
rxjs: rxjsVersion,
|
|
24
|
+
tslib: tsLibVersion,
|
|
25
|
+
'zone.js': zoneJsVersion,
|
|
26
|
+
}, {
|
|
27
|
+
'@angular/cli': angularDevkitVersion,
|
|
28
|
+
'@angular/compiler-cli': angularVersion,
|
|
29
|
+
'@angular/language-service': angularVersion,
|
|
30
|
+
'@angular-devkit/build-angular': angularDevkitVersion,
|
|
31
|
+
'@angular-devkit/schematics': angularDevkitVersion,
|
|
32
|
+
'@schematics/angular': angularDevkitVersion,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
exports.ensureAngularDependencies = ensureAngularDependencies;
|
|
@@ -25,12 +25,12 @@ function exportScam(tree, options) {
|
|
|
25
25
|
const relativePathFromEntryPoint = (0, path_1.getRelativeImportToFile)(entryPointPath, options.filePath);
|
|
26
26
|
const entryPointContent = tree.read(entryPointPath, 'utf-8');
|
|
27
27
|
let updatedEntryPointContent = (0, devkit_1.stripIndents) `${entryPointContent}
|
|
28
|
-
export * from
|
|
28
|
+
export * from '${relativePathFromEntryPoint}';`;
|
|
29
29
|
if (!options.inlineScam) {
|
|
30
30
|
const moduleFilePath = (0, devkit_1.joinPathFragments)(options.directory, `${(0, devkit_1.names)(options.name).fileName}.module.ts`);
|
|
31
31
|
const relativePathFromModule = (0, path_1.getRelativeImportToFile)(entryPointPath, moduleFilePath);
|
|
32
32
|
updatedEntryPointContent = (0, devkit_1.stripIndents) `${updatedEntryPointContent}
|
|
33
|
-
export * from
|
|
33
|
+
export * from '${relativePathFromModule}';`;
|
|
34
34
|
}
|
|
35
35
|
tree.write(entryPointPath, updatedEntryPointContent);
|
|
36
36
|
}
|
|
@@ -1,35 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProjectPrefix =
|
|
3
|
+
exports.getProjectPrefix = void 0;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
-
const get_npm_scope_1 = require("@nx/js/src/utils/package-json/get-npm-scope");
|
|
6
|
-
function normalizeNewProjectPrefix(prefix, npmScope, fallbackPrefix) {
|
|
7
|
-
// Prefix needs to be a valid html selector, if npmScope it's not valid, we don't default
|
|
8
|
-
// to it and let it fall through to the Angular schematic to handle it
|
|
9
|
-
// https://github.com/angular/angular-cli/blob/aa9f0528f174e856a4923cb24861fdf6e6f96b48/packages/schematics/angular/component/index.ts#L64
|
|
10
|
-
const htmlSelectorRegex = /^[a-zA-Z][.0-9a-zA-Z]*((:?-[0-9]+)*|(:?-[a-zA-Z][.0-9a-zA-Z]*(:?-[0-9]+)*)*)$/;
|
|
11
|
-
if (prefix) {
|
|
12
|
-
if (!htmlSelectorRegex.test(prefix)) {
|
|
13
|
-
throw new Error('The provided "prefix" is invalid. The prefix must start with a letter, and must contain only alphanumeric characters or dashes.');
|
|
14
|
-
}
|
|
15
|
-
return prefix;
|
|
16
|
-
}
|
|
17
|
-
if (npmScope && !htmlSelectorRegex.test(npmScope)) {
|
|
18
|
-
throw new Error(`The "--prefix" option was not provided, therefore attempted to use the "npmScope" defined in "nx.json" to set the application's selector prefix, but it is invalid.
|
|
19
|
-
|
|
20
|
-
There are two options that can be followed to resolve this issue:
|
|
21
|
-
- Pass a valid "--prefix" option.
|
|
22
|
-
- Update the "npmScope" in "nx.json" (Note: this can be an involved process, as other libraries and applications may need to be updated to match the new scope).
|
|
23
|
-
|
|
24
|
-
If you encountered this error when creating a new Nx Workspace, the workspace name or "npmScope" is invalid to use as the selector prefix for the application being generated.
|
|
25
|
-
|
|
26
|
-
Valid selector prefixes must start with a letter, and must contain only alphanumeric characters or dashes.`);
|
|
27
|
-
}
|
|
28
|
-
return npmScope || fallbackPrefix;
|
|
29
|
-
}
|
|
30
|
-
exports.normalizeNewProjectPrefix = normalizeNewProjectPrefix;
|
|
31
5
|
function getProjectPrefix(tree, project) {
|
|
32
|
-
return (
|
|
33
|
-
.prefix ?? (0, get_npm_scope_1.getNpmScope)(tree));
|
|
6
|
+
return (0, devkit_1.readProjectConfiguration)(tree, project).prefix;
|
|
34
7
|
}
|
|
35
8
|
exports.getProjectPrefix = getProjectPrefix;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Tree } from '@nx/devkit';
|
|
2
1
|
import { names } from '@nx/devkit';
|
|
3
|
-
export declare function buildSelector(
|
|
2
|
+
export declare function buildSelector(name: string, prefix: string | undefined, projectPrefix: string | undefined, casing: keyof Pick<ReturnType<typeof names>, 'fileName' | 'propertyName'>): string;
|
|
3
|
+
export declare function validateHtmlSelector(selector: string): void;
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildSelector = void 0;
|
|
3
|
+
exports.validateHtmlSelector = exports.buildSelector = void 0;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
-
|
|
6
|
-
function buildSelector(tree, name, prefix, projectPrefix, casing) {
|
|
5
|
+
function buildSelector(name, prefix, projectPrefix, casing) {
|
|
7
6
|
let selector = name;
|
|
8
|
-
prefix ??= projectPrefix
|
|
7
|
+
prefix ??= projectPrefix;
|
|
9
8
|
if (prefix) {
|
|
10
9
|
selector = `${prefix}-${selector}`;
|
|
11
10
|
}
|
|
12
11
|
return (0, devkit_1.names)(selector)[casing];
|
|
13
12
|
}
|
|
14
13
|
exports.buildSelector = buildSelector;
|
|
14
|
+
// https://github.com/angular/angular-cli/blob/main/packages/schematics/angular/utility/validation.ts#L11-L14
|
|
15
|
+
const htmlSelectorRegex = /^[a-zA-Z][.0-9a-zA-Z]*((:?-[0-9]+)*|(:?-[a-zA-Z][.0-9a-zA-Z]*(:?-[0-9]+)*)*)$/;
|
|
16
|
+
function validateHtmlSelector(selector) {
|
|
17
|
+
if (selector && !htmlSelectorRegex.test(selector)) {
|
|
18
|
+
throw new Error(`The selector "${selector}" is invalid.`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.validateHtmlSelector = validateHtmlSelector;
|