@nx/angular 0.0.0-pr-22179-271588f → 0.0.0-pr-26515-856ef7f

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.
Files changed (187) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/executors.d.ts +1 -1
  4. package/executors.json +9 -9
  5. package/migrations.json +209 -0
  6. package/package.json +18 -17
  7. package/plugins/component-testing.d.ts +2 -2
  8. package/plugins/component-testing.js +1 -1
  9. package/src/builders/dev-server/dev-server.impl.js +1 -1
  10. package/src/builders/dev-server/lib/validate-options.js +1 -1
  11. package/src/builders/dev-server/schema.json +3 -3
  12. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +9 -6
  13. package/src/builders/module-federation-dev-ssr/schema.json +1 -1
  14. package/src/builders/utilities/module-federation.d.ts +7 -2
  15. package/src/builders/utilities/module-federation.js +20 -4
  16. package/src/builders/webpack-browser/schema.d.ts +2 -2
  17. package/src/builders/webpack-browser/schema.json +10 -10
  18. package/src/builders/webpack-browser/webpack-browser.impl.js +2 -8
  19. package/src/builders/webpack-server/schema.json +13 -13
  20. package/src/builders/webpack-server/webpack-server.impl.js +3 -5
  21. package/src/executors/application/application.impl.d.ts +2 -1
  22. package/src/executors/application/application.impl.js +2 -2
  23. package/src/executors/application/schema.json +11 -6
  24. package/src/executors/application/utils/validate-options.js +5 -0
  25. package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +2 -7
  26. package/src/executors/browser-esbuild/browser-esbuild.impl.js +2 -2
  27. package/src/executors/browser-esbuild/schema.json +8 -8
  28. package/src/executors/extract-i18n/extract-i18n.impl.js +2 -2
  29. package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +11 -3
  30. package/src/executors/module-federation-dev-server/lib/normalize-options.js +1 -0
  31. package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +1 -5
  32. package/src/executors/module-federation-dev-server/lib/start-dev-remotes.js +16 -15
  33. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +2 -1
  34. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +16 -8
  35. package/src/executors/module-federation-dev-server/schema.d.ts +4 -1
  36. package/src/executors/module-federation-dev-server/schema.json +22 -5
  37. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +6 -6
  38. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.js +3 -2
  39. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.js +2 -1
  40. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.js +3 -2
  41. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.d.ts +1 -2
  42. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.js +5 -4
  43. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.js +12 -12
  44. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +2 -1
  45. package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +1 -1
  46. package/src/executors/ng-packagr-lite/schema.json +1 -1
  47. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +5 -4
  48. package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +3 -2
  49. package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +4 -4
  50. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +1 -2
  51. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +5 -4
  52. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +12 -12
  53. package/src/executors/package/package.impl.js +1 -1
  54. package/src/executors/package/schema.json +1 -1
  55. package/src/executors/utilities/esbuild-extensions.d.ts +2 -4
  56. package/src/executors/utilities/module-loader.d.ts +1 -2
  57. package/src/executors/utilities/ng-packagr/stylesheet-processor.d.ts +22 -0
  58. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts +1 -1
  59. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +7 -1
  60. package/src/executors/utilities/ng-packagr/stylesheet-processor.js +100 -7
  61. package/src/executors/utilities/typescript.d.ts +1 -2
  62. package/src/executors/utilities/typescript.js +4 -3
  63. package/src/generators/add-linting/add-linting.d.ts +1 -1
  64. package/src/generators/add-linting/add-linting.js +7 -11
  65. package/src/generators/add-linting/lib/add-angular-eslint-dependencies.d.ts +2 -2
  66. package/src/generators/add-linting/lib/add-angular-eslint-dependencies.js +15 -6
  67. package/src/generators/add-linting/lib/buildable-project.d.ts +2 -0
  68. package/src/generators/add-linting/lib/buildable-project.js +9 -0
  69. package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
  70. package/src/generators/add-linting/schema.json +1 -1
  71. package/src/generators/application/application.js +4 -1
  72. package/src/generators/application/files/base-pre18/src/favicon.ico +0 -0
  73. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +3 -1
  74. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +2 -2
  75. package/src/generators/application/lib/add-e2e.js +9 -6
  76. package/src/generators/application/lib/add-linting.js +2 -1
  77. package/src/generators/application/lib/create-files.js +7 -0
  78. package/src/generators/application/lib/create-project.js +12 -5
  79. package/src/generators/application/lib/normalize-options.js +15 -1
  80. package/src/generators/application/lib/normalized-schema.d.ts +3 -0
  81. package/src/generators/application/schema.json +2 -2
  82. package/src/generators/component/schema.d.ts +3 -3
  83. package/src/generators/component/schema.json +2 -2
  84. package/src/generators/component-test/component-test.js +1 -1
  85. package/src/generators/convert-to-application-executor/convert-to-application-executor.js +6 -4
  86. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +3 -3
  87. package/src/generators/directive/schema.d.ts +3 -3
  88. package/src/generators/directive/schema.json +2 -2
  89. package/src/generators/federate-module/lib/add-remote.js +2 -1
  90. package/src/generators/host/host.js +14 -2
  91. package/src/generators/host/lib/update-ssr-setup.js +9 -7
  92. package/src/generators/host/schema.json +2 -2
  93. package/src/generators/library/files/base/package.json__tpl__ +0 -3
  94. package/src/generators/library/library.js +17 -8
  95. package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +3 -2
  96. package/src/generators/ng-add/migrators/migrator.d.ts +1 -1
  97. package/src/generators/ng-add/migrators/migrator.js +7 -7
  98. package/src/generators/ng-add/migrators/projects/app.migrator.js +2 -2
  99. package/src/generators/ng-add/migrators/projects/e2e.migrator.js +1 -1
  100. package/src/generators/ng-add/utilities/validation-logging.js +2 -1
  101. package/src/generators/ngrx-root-store/ngrx-root-store.js +2 -1
  102. package/src/generators/pipe/schema.d.ts +3 -3
  103. package/src/generators/pipe/schema.json +2 -2
  104. package/src/generators/remote/lib/update-ssr-setup.d.ts +2 -1
  105. package/src/generators/remote/lib/update-ssr-setup.js +10 -8
  106. package/src/generators/remote/remote.js +8 -4
  107. package/src/generators/remote/schema.json +2 -2
  108. package/src/generators/scam/schema.d.ts +3 -3
  109. package/src/generators/scam/schema.json +2 -2
  110. package/src/generators/scam-directive/schema.d.ts +3 -3
  111. package/src/generators/scam-directive/schema.json +2 -2
  112. package/src/generators/scam-pipe/schema.d.ts +3 -3
  113. package/src/generators/scam-pipe/schema.json +2 -2
  114. package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +1 -1
  115. package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +1 -1
  116. package/src/generators/setup-mf/lib/add-remote-to-host.d.ts +7 -2
  117. package/src/generators/setup-mf/lib/add-remote-to-host.js +15 -19
  118. package/src/generators/setup-mf/lib/fix-bootstrap.d.ts +1 -1
  119. package/src/generators/setup-mf/lib/fix-bootstrap.js +12 -5
  120. package/src/generators/setup-mf/lib/generate-config.js +1 -0
  121. package/src/generators/setup-mf/lib/setup-host-if-dynamic.js +5 -1
  122. package/src/generators/setup-mf/lib/update-host-app-routes.js +1 -4
  123. package/src/generators/setup-mf/setup-mf.js +21 -4
  124. package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +4 -3
  125. package/src/generators/setup-ssr/files/server/server-builder/v17+/__serverFileName__ +4 -3
  126. package/src/generators/setup-ssr/lib/add-dependencies.js +2 -1
  127. package/src/generators/setup-ssr/lib/generate-files.js +1 -7
  128. package/src/generators/setup-ssr/lib/index.d.ts +0 -1
  129. package/src/generators/setup-ssr/lib/index.js +0 -1
  130. package/src/generators/setup-ssr/lib/validate-options.js +0 -13
  131. package/src/generators/setup-ssr/schema.d.ts +1 -0
  132. package/src/generators/setup-ssr/schema.json +10 -3
  133. package/src/generators/setup-ssr/setup-ssr.js +3 -4
  134. package/src/generators/stories/stories.js +3 -2
  135. package/src/generators/storybook-configuration/lib/generate-stories.js +1 -1
  136. package/src/generators/storybook-configuration/schema.json +3 -3
  137. package/src/generators/utils/add-jest.js +1 -2
  138. package/src/generators/utils/add-mf-env-to-inputs.js +4 -1
  139. package/src/generators/utils/ensure-angular-dependencies.d.ts +1 -1
  140. package/src/generators/utils/ensure-angular-dependencies.js +44 -27
  141. package/src/generators/utils/storybook-ast/tree-utilities.js +2 -1
  142. package/src/generators/utils/testing.js +0 -17
  143. package/src/generators/utils/version-utils.d.ts +1 -2
  144. package/src/generators/utils/version-utils.js +5 -16
  145. package/src/migrations/update-15-2-0/remove-browserlist-config.d.ts +1 -0
  146. package/src/migrations/update-15-2-0/remove-browserlist-config.js +2 -1
  147. package/src/migrations/update-15-2-0/remove-platform-server-exports.js +2 -1
  148. package/src/migrations/update-15-2-0/update-karma-main-file.js +2 -1
  149. package/src/migrations/update-16-1-0/remove-render-module-platform-server-exports.js +2 -1
  150. package/src/migrations/update-16-1-0/update-server-executor-config.js +2 -2
  151. package/src/migrations/update-18-1-1/fix-target-defaults-inputs.d.ts +2 -0
  152. package/src/migrations/update-18-1-1/fix-target-defaults-inputs.js +53 -0
  153. package/src/migrations/update-18-2-0/update-angular-cli.d.ts +3 -0
  154. package/src/migrations/update-18-2-0/update-angular-cli.js +23 -0
  155. package/src/migrations/update-19-1-0/update-angular-cli.d.ts +3 -0
  156. package/src/migrations/update-19-1-0/update-angular-cli.js +23 -0
  157. package/src/migrations/update-19-2-1/add-typescript-eslint-utils.d.ts +3 -0
  158. package/src/migrations/update-19-2-1/add-typescript-eslint-utils.js +19 -0
  159. package/src/utils/backward-compatible-versions.d.ts +10 -5
  160. package/src/utils/backward-compatible-versions.js +18 -19
  161. package/src/utils/file-change-recorder.js +2 -1
  162. package/src/utils/{public-api.d.ts → index.d.ts} +5 -0
  163. package/src/utils/{public-api.js → index.js} +5 -0
  164. package/src/utils/mf/utils.js +1 -0
  165. package/src/utils/mf/with-module-federation-ssr.js +3 -0
  166. package/src/utils/mf/with-module-federation.js +6 -2
  167. package/src/utils/version-utils.d.ts +2 -2
  168. package/src/utils/version-utils.js +2 -1
  169. package/src/utils/versions.d.ts +6 -5
  170. package/src/utils/versions.js +7 -6
  171. package/index.js +0 -8
  172. package/mf/index.js +0 -7
  173. package/mf/mf.js +0 -53
  174. package/src/builders/webpack-server/validate-options.d.ts +0 -2
  175. package/src/builders/webpack-server/validate-options.js +0 -33
  176. package/src/executors/utilities/ng-compiler-cli.d.ts +0 -1
  177. package/src/executors/utilities/ng-compiler-cli.js +0 -8
  178. package/src/generators/setup-ssr/files/ngmodule/pre-v15-2/src/main.ts__tpl__ +0 -14
  179. package/src/generators/setup-ssr/lib/update-app-module.d.ts +0 -3
  180. package/src/generators/setup-ssr/lib/update-app-module.js +0 -27
  181. package/src/runtime/nx/data-persistence.js +0 -350
  182. package/testing/index.js +0 -6
  183. package/testing/src/testing-utils.js +0 -40
  184. /package/src/generators/application/files/{base/src → base-18+/public}/favicon.ico +0 -0
  185. /package/src/generators/application/files/{base → base-pre18}/src/assets/.gitkeep__tpl__ +0 -0
  186. /package/src/generators/setup-ssr/files/ngmodule/{base/src → src}/__main__ +0 -0
  187. /package/src/generators/setup-ssr/files/ngmodule/{base/src → src}/app/__rootModuleFileName__ +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2017-2023 Narwhal Technologies Inc.
3
+ Copyright (c) 2017-2024 Narwhal Technologies Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
package/README.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  Nx is a build system with built-in tooling and advanced CI capabilities. It helps you maintain and scale monorepos, both locally and on CI.
26
26
 
27
- This package is an [Angular plugin for Nx](https://nx.dev/packages/angular).
27
+ This package is an [Angular plugin for Nx](https://nx.dev/nx-api/angular).
28
28
 
29
29
  ## Getting Started
30
30
 
package/executors.d.ts CHANGED
@@ -11,6 +11,6 @@ export * from './src/executors/extract-i18n/extract-i18n.impl';
11
11
  import { executeDevServerBuilder } from './src/builders/dev-server/dev-server.impl';
12
12
  export {
13
13
  /**
14
- * @deprecated Use executeDevServerBuilder instead. It will be removed in Nx v19.
14
+ * @deprecated Use executeDevServerBuilder instead. It will be removed in Nx v20.
15
15
  */
16
16
  executeDevServerBuilder as executeWebpackDevServerBuilder, executeDevServerBuilder, };
package/executors.json CHANGED
@@ -8,27 +8,27 @@
8
8
  "ng-packagr-lite": {
9
9
  "implementation": "./src/executors/ng-packagr-lite/ng-packagr-lite.impl",
10
10
  "schema": "./src/executors/ng-packagr-lite/schema.json",
11
- "description": "Builds a library with support for incremental builds.\nThis executor is meant to be used with buildable libraries in an incremental build scenario. It is similar to the `@nrwl/angular:package` executor but with some key differences:\n- It doesn't run `ngcc` automatically (`ngcc` needs to be run separately beforehand if needed, this can be done in a `postinstall` hook on `package.json`).\n- It only produces ESM2020 bundles.\n- It doesn't generate package exports in the `package.json`."
11
+ "description": "Builds an Angular library with support for incremental builds.\n\nThis executor is meant to be used with buildable libraries in an incremental build scenario. It is similar to the `@nx/angular:package` executor but it only produces ESM2022 bundles."
12
12
  },
13
13
  "package": {
14
14
  "implementation": "./src/executors/package/package.impl",
15
15
  "schema": "./src/executors/package/schema.json",
16
- "description": "Builds and packages an Angular library producing an output following the Angular Package Format (APF) to be distributed as an NPM package.\nThis executor is similar to the `@angular-devkit/build-angular:ng-packagr` with additional support for incremental builds."
16
+ "description": "Builds and packages an Angular library producing an output following the Angular Package Format (APF) to be distributed as an NPM package.\n\nThis executor is a drop-in replacement for the `@angular-devkit/build-angular:ng-packagr` with additional support for incremental builds."
17
17
  },
18
18
  "browser-esbuild": {
19
19
  "implementation": "./src/executors/browser-esbuild/browser-esbuild.impl",
20
20
  "schema": "./src/executors/browser-esbuild/schema.json",
21
- "description": "Builds your application with esbuild and adds support for incremental builds."
21
+ "description": "Builds an Angular application using [esbuild](https://esbuild.github.io/)."
22
22
  },
23
23
  "module-federation-dev-server": {
24
24
  "implementation": "./src/executors/module-federation-dev-server/module-federation-dev-server.impl",
25
25
  "schema": "./src/executors/module-federation-dev-server/schema.json",
26
- "description": "The module-federation-dev-server executor is reserved exclusively for use with host Module Federation applications. It allows the user to specify which remote applications should be served with the host."
26
+ "description": "Serves host [Module Federation](https://module-federation.io/) applications ([webpack](https://webpack.js.org/)-based) allowing to specify which remote applications should be served with the host."
27
27
  },
28
28
  "application": {
29
29
  "implementation": "./src/executors/application/application.impl",
30
30
  "schema": "./src/executors/application/schema.json",
31
- "description": "Builds an application with esbuild with support for incremental builds. _Note: this is only supported in Angular versions >= 17.0.0_."
31
+ "description": "Builds an Angular application using [esbuild](https://esbuild.github.io/) with integrated SSR and prerendering capabilities. _Note: this is only supported in Angular versions >= 17.0.0_."
32
32
  },
33
33
  "extract-i18n": {
34
34
  "implementation": "./src/executors/extract-i18n/extract-i18n.impl",
@@ -40,22 +40,22 @@
40
40
  "webpack-browser": {
41
41
  "implementation": "./src/builders/webpack-browser/webpack-browser.impl",
42
42
  "schema": "./src/builders/webpack-browser/schema.json",
43
- "description": "The `webpack-browser` executor is very similar to the standard `browser` builder provided by the Angular Devkit. It allows you to build your Angular application to a build artifact that can be hosted online. There are some key differences: \n- Supports Custom Webpack Configurations \n- Supports Incremental Building"
43
+ "description": "Builds an Angular application using [webpack](https://webpack.js.org/)."
44
44
  },
45
45
  "dev-server": {
46
46
  "implementation": "./src/builders/dev-server/dev-server.impl",
47
47
  "schema": "./src/builders/dev-server/schema.json",
48
- "description": "Serves an Angular application using [Webpack](https://webpack.js.org/) when the build target is using a Webpack-based executor, or [Vite](https://vitejs.dev/) when the build target uses an esbuild-based executor."
48
+ "description": "Serves an Angular application using [webpack](https://webpack.js.org/) when the build target is using a webpack-based executor, or [Vite](https://vitejs.dev/) when the build target uses an [esbuild](https://esbuild.github.io/)-based executor."
49
49
  },
50
50
  "webpack-server": {
51
51
  "implementation": "./src/builders/webpack-server/webpack-server.impl",
52
52
  "schema": "./src/builders/webpack-server/schema.json",
53
- "description": "The `webpack-server` executor is very similar to the standard `server` builder provided by the Angular Devkit. It is usually used in tandem with `@nrwl/angular:webpack-browser` when your Angular application uses a custom webpack configuration and NgUniversal for SSR."
53
+ "description": "Builds a server Angular application using [webpack](https://webpack.js.org/). This executor is a drop-in replacement for the `@angular-devkit/build-angular:server` builder provided by the Angular CLI. It is usually used in tandem with the `@nx/angular:webpack-browser` executor when your Angular application uses a custom webpack configuration."
54
54
  },
55
55
  "module-federation-dev-ssr": {
56
56
  "implementation": "./src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl",
57
57
  "schema": "./src/builders/module-federation-dev-ssr/schema.json",
58
- "description": "The module-federation-dev-ssr executor is reserved exclusively for use with host Module Federation applications that use SSR. It allows the user to specify which remote applications should be served with the host."
58
+ "description": "Serves host [Module Federation](https://module-federation.io/) applications ([webpack](https://webpack.js.org/)-based) that use SSR allowing to specify which remote applications should be served with the host."
59
59
  }
60
60
  }
61
61
  }
package/migrations.json CHANGED
@@ -371,6 +371,39 @@
371
371
  },
372
372
  "description": "Update the @angular/cli package version to ~17.2.0.",
373
373
  "factory": "./src/migrations/update-18-1-0/update-angular-cli"
374
+ },
375
+ "fix-target-defaults-for-webpack-browser": {
376
+ "cli": "nx",
377
+ "version": "18.1.1-beta.0",
378
+ "description": "Ensure targetDefaults inputs for task hashing when '@nx/angular:webpack-browser' is used are correct for Module Federation.",
379
+ "factory": "./src/migrations/update-18-1-1/fix-target-defaults-inputs"
380
+ },
381
+ "update-angular-cli-version-17-3-0": {
382
+ "cli": "nx",
383
+ "version": "18.2.0-beta.0",
384
+ "requires": {
385
+ "@angular/core": ">=17.3.0"
386
+ },
387
+ "description": "Update the @angular/cli package version to ~17.3.0.",
388
+ "factory": "./src/migrations/update-18-2-0/update-angular-cli"
389
+ },
390
+ "update-angular-cli-version-18-0-0": {
391
+ "cli": "nx",
392
+ "version": "19.1.0-beta.2",
393
+ "requires": {
394
+ "@angular/core": ">=18.0.0"
395
+ },
396
+ "description": "Update the @angular/cli package version to ~18.0.0.",
397
+ "factory": "./src/migrations/update-19-1-0/update-angular-cli"
398
+ },
399
+ "add-typescript-eslint-utils": {
400
+ "cli": "nx",
401
+ "version": "19.2.1-beta.0",
402
+ "requires": {
403
+ "@angular-eslint/eslint-plugin": ">=18.0.0"
404
+ },
405
+ "description": "Installs the '@typescript-eslint/utils' package when having installed '@angular-eslint/eslint-plugin' or '@angular-eslint/eslint-plugin-template' with version >=18.0.0.",
406
+ "factory": "./src/migrations/update-19-2-1/add-typescript-eslint-utils"
374
407
  }
375
408
  },
376
409
  "packageJsonUpdates": {
@@ -1712,6 +1745,182 @@
1712
1745
  "alwaysAddToPackageJson": false
1713
1746
  }
1714
1747
  }
1748
+ },
1749
+ "18.2.0": {
1750
+ "version": "18.2.0-beta.0",
1751
+ "x-prompt": "Do you want to update the Angular version to v17.3?",
1752
+ "requires": {
1753
+ "@angular/core": ">=17.2.0 <17.3.0"
1754
+ },
1755
+ "packages": {
1756
+ "@angular-devkit/build-angular": {
1757
+ "version": "~17.3.0",
1758
+ "alwaysAddToPackageJson": false
1759
+ },
1760
+ "@angular-devkit/core": {
1761
+ "version": "~17.3.0",
1762
+ "alwaysAddToPackageJson": false
1763
+ },
1764
+ "@angular-devkit/schematics": {
1765
+ "version": "~17.3.0",
1766
+ "alwaysAddToPackageJson": false
1767
+ },
1768
+ "@angular/pwa": {
1769
+ "version": "~17.3.0",
1770
+ "alwaysAddToPackageJson": false
1771
+ },
1772
+ "@angular/ssr": {
1773
+ "version": "~17.3.0",
1774
+ "alwaysAddToPackageJson": false
1775
+ },
1776
+ "@schematics/angular": {
1777
+ "version": "~17.3.0",
1778
+ "alwaysAddToPackageJson": false
1779
+ },
1780
+ "@angular-devkit/architect": {
1781
+ "version": "~0.1703.0",
1782
+ "alwaysAddToPackageJson": false
1783
+ },
1784
+ "@angular-devkit/build-webpack": {
1785
+ "version": "~0.1703.0",
1786
+ "alwaysAddToPackageJson": false
1787
+ },
1788
+ "@angular/core": {
1789
+ "version": "~17.3.0",
1790
+ "alwaysAddToPackageJson": true
1791
+ },
1792
+ "@angular/material": {
1793
+ "version": "~17.3.0",
1794
+ "alwaysAddToPackageJson": false
1795
+ },
1796
+ "@angular/cdk": {
1797
+ "version": "~17.3.0",
1798
+ "alwaysAddToPackageJson": false
1799
+ },
1800
+ "ng-packagr": {
1801
+ "version": "~17.3.0",
1802
+ "alwaysAddToPackageJson": false
1803
+ }
1804
+ }
1805
+ },
1806
+ "18.2.0-angular-eslint": {
1807
+ "version": "18.2.0-beta.0",
1808
+ "requires": {
1809
+ "eslint": "^7.20.0 || ^8.0.0",
1810
+ "@angular/core": ">= 17.0.0 < 18.0.0"
1811
+ },
1812
+ "packages": {
1813
+ "@angular-eslint/eslint-plugin": {
1814
+ "version": "~17.3.0",
1815
+ "alwaysAddToPackageJson": false
1816
+ },
1817
+ "@angular-eslint/eslint-plugin-template": {
1818
+ "version": "~17.3.0",
1819
+ "alwaysAddToPackageJson": false
1820
+ },
1821
+ "@angular-eslint/template-parser": {
1822
+ "version": "~17.3.0",
1823
+ "alwaysAddToPackageJson": false
1824
+ }
1825
+ }
1826
+ },
1827
+ "19.1.0": {
1828
+ "version": "19.1.0-beta.2",
1829
+ "x-prompt": "Do you want to update the Angular version to v18?",
1830
+ "requires": {
1831
+ "@angular/core": ">=17.3.0 <18.0.0"
1832
+ },
1833
+ "packages": {
1834
+ "@angular-devkit/build-angular": {
1835
+ "version": "~18.0.0",
1836
+ "alwaysAddToPackageJson": false
1837
+ },
1838
+ "@angular-devkit/core": {
1839
+ "version": "~18.0.0",
1840
+ "alwaysAddToPackageJson": false
1841
+ },
1842
+ "@angular-devkit/schematics": {
1843
+ "version": "~18.0.0",
1844
+ "alwaysAddToPackageJson": false
1845
+ },
1846
+ "@angular/pwa": {
1847
+ "version": "~18.0.0",
1848
+ "alwaysAddToPackageJson": false
1849
+ },
1850
+ "@angular/ssr": {
1851
+ "version": "~18.0.0",
1852
+ "alwaysAddToPackageJson": false
1853
+ },
1854
+ "@schematics/angular": {
1855
+ "version": "~18.0.0",
1856
+ "alwaysAddToPackageJson": false
1857
+ },
1858
+ "@angular-devkit/architect": {
1859
+ "version": "~0.1800.0",
1860
+ "alwaysAddToPackageJson": false
1861
+ },
1862
+ "@angular-devkit/build-webpack": {
1863
+ "version": "~0.1800.0",
1864
+ "alwaysAddToPackageJson": false
1865
+ },
1866
+ "@angular/core": {
1867
+ "version": "~18.0.0",
1868
+ "alwaysAddToPackageJson": true
1869
+ },
1870
+ "@angular/material": {
1871
+ "version": "~18.0.0",
1872
+ "alwaysAddToPackageJson": false
1873
+ },
1874
+ "@angular/cdk": {
1875
+ "version": "~18.0.0",
1876
+ "alwaysAddToPackageJson": false
1877
+ },
1878
+ "ng-packagr": {
1879
+ "version": "~18.0.0",
1880
+ "alwaysAddToPackageJson": false
1881
+ }
1882
+ }
1883
+ },
1884
+ "19.1.0-jest": {
1885
+ "version": "19.1.0-beta.2",
1886
+ "requires": {
1887
+ "@angular-devkit/build-angular": ">=15.0.0 <19.0.0",
1888
+ "@angular/compiler-cli": ">=15.0.0 <19.0.0",
1889
+ "@angular/core": ">=15.0.0 <19.0.0",
1890
+ "@angular/platform-browser-dynamic": ">=15.0.0 <19.0.0",
1891
+ "jest": "^29.0.0"
1892
+ },
1893
+ "packages": {
1894
+ "jest-preset-angular": {
1895
+ "version": "~14.1.0",
1896
+ "alwaysAddToPackageJson": false
1897
+ }
1898
+ }
1899
+ },
1900
+ "19.1.2": {
1901
+ "version": "19.1.2-beta.1",
1902
+ "requires": {
1903
+ "eslint": "^8.57.0 || ^9.0.0",
1904
+ "@angular/core": ">= 18.0.0 < 19.0.0"
1905
+ },
1906
+ "packages": {
1907
+ "@angular-eslint/eslint-plugin": {
1908
+ "version": "^18.0.1",
1909
+ "alwaysAddToPackageJson": false
1910
+ },
1911
+ "@angular-eslint/eslint-plugin-template": {
1912
+ "version": "^18.0.1",
1913
+ "alwaysAddToPackageJson": false
1914
+ },
1915
+ "@angular-eslint/template-parser": {
1916
+ "version": "^18.0.1",
1917
+ "alwaysAddToPackageJson": false
1918
+ },
1919
+ "@angular-eslint/utils": {
1920
+ "version": "^18.0.1",
1921
+ "alwaysAddToPackageJson": false
1922
+ }
1923
+ }
1715
1924
  }
1716
1925
  }
1717
1926
  }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@nx/angular",
3
- "version": "0.0.0-pr-22179-271588f",
3
+ "version": "0.0.0-pr-26515-856ef7f",
4
4
  "private": false,
5
- "description": "The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: \n\n- Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, and Cypress. \n\n- Generators to help scaffold code quickly (like: Micro Frontends, Libraries, both internal to your codebase and publishable to npm) \n\n- Single Component Application Modules (SCAMs) \n\n- NgRx helpers. \n\n- Utilities for automatic workspace refactoring.",
5
+ "description": "The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: \n\n- Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, Playwright and Cypress. \n\n- Generators to help scaffold code quickly (like: Micro Frontends, Libraries, both internal to your codebase and publishable to npm) \n\n- Single Component Application Modules (SCAMs) \n\n- NgRx helpers. \n\n- Utilities for automatic workspace refactoring.",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/nrwl/nx.git",
@@ -13,7 +13,8 @@
13
13
  "Angular",
14
14
  "Jest",
15
15
  "Cypress",
16
- "CLI"
16
+ "CLI",
17
+ "Front-end"
17
18
  ],
18
19
  "exports": {
19
20
  "./migrations.json": "./migrations.json",
@@ -23,7 +24,7 @@
23
24
  "./executors": "./executors.js",
24
25
  "./tailwind": "./tailwind.js",
25
26
  "./module-federation": "./module-federation/index.js",
26
- "./src/utils": "./src/utils/public-api.js",
27
+ "./src/utils": "./src/utils/index.js",
27
28
  "./plugins/component-testing": "./plugins/component-testing.js",
28
29
  "./src/generators/utils": "./src/generators/utils/index.js",
29
30
  "./src/generators/move/move-impl": "./src/generators/move/move-impl.js",
@@ -68,7 +69,7 @@
68
69
  },
69
70
  "dependencies": {
70
71
  "@phenomnomnominal/tsquery": "~5.0.1",
71
- "@typescript-eslint/type-utils": "^6.9.1",
72
+ "@typescript-eslint/type-utils": "^7.3.0",
72
73
  "chalk": "^4.1.0",
73
74
  "find-cache-dir": "^3.3.2",
74
75
  "ignore": "^5.0.4",
@@ -78,20 +79,20 @@
78
79
  "tslib": "^2.3.0",
79
80
  "webpack": "^5.80.0",
80
81
  "webpack-merge": "^5.8.0",
81
- "@nx/devkit": "0.0.0-pr-22179-271588f",
82
- "@nx/js": "0.0.0-pr-22179-271588f",
83
- "@nx/eslint": "0.0.0-pr-22179-271588f",
84
- "@nx/webpack": "0.0.0-pr-22179-271588f",
85
- "@nx/web": "0.0.0-pr-22179-271588f",
86
- "@nx/workspace": "0.0.0-pr-22179-271588f",
87
- "piscina": "^4.2.1",
88
- "@nrwl/angular": "0.0.0-pr-22179-271588f"
82
+ "@nx/devkit": "0.0.0-pr-26515-856ef7f",
83
+ "@nx/js": "0.0.0-pr-26515-856ef7f",
84
+ "@nx/eslint": "0.0.0-pr-26515-856ef7f",
85
+ "@nx/webpack": "0.0.0-pr-26515-856ef7f",
86
+ "@nx/web": "0.0.0-pr-26515-856ef7f",
87
+ "@nx/workspace": "0.0.0-pr-26515-856ef7f",
88
+ "piscina": "^4.4.0",
89
+ "@nrwl/angular": "0.0.0-pr-26515-856ef7f"
89
90
  },
90
91
  "peerDependencies": {
91
- "@angular-devkit/build-angular": ">= 15.0.0 < 18.0.0",
92
- "@angular-devkit/core": ">= 15.0.0 < 18.0.0",
93
- "@angular-devkit/schematics": ">= 15.0.0 < 18.0.0",
94
- "@schematics/angular": ">= 15.0.0 < 18.0.0",
92
+ "@angular-devkit/build-angular": ">= 16.0.0 < 19.0.0",
93
+ "@angular-devkit/core": ">= 16.0.0 < 19.0.0",
94
+ "@angular-devkit/schematics": ">= 16.0.0 < 19.0.0",
95
+ "@schematics/angular": ">= 16.0.0 < 19.0.0",
95
96
  "esbuild": "^0.19.2",
96
97
  "rxjs": "^6.5.3 || ^7.5.0"
97
98
  },
@@ -1,4 +1,4 @@
1
- import { NxComponentTestingOptions } from '@nx/cypress/plugins/cypress-preset';
1
+ import { NxComponentTestingPresetOptions } from '@nx/cypress/plugins/cypress-preset';
2
2
  /**
3
3
  * Angular nx preset for Cypress Component Testing
4
4
  *
@@ -17,4 +17,4 @@ import { NxComponentTestingOptions } from '@nx/cypress/plugins/cypress-preset';
17
17
  * @param pathToConfig will be used for loading project options and to construct the output paths for videos and screenshots
18
18
  * @param options override options
19
19
  */
20
- export declare function nxComponentTestingPreset(pathToConfig: string, options?: NxComponentTestingOptions): any;
20
+ export declare function nxComponentTestingPreset(pathToConfig: string, options?: NxComponentTestingPresetOptions): any;
@@ -26,7 +26,7 @@ const semver_1 = require("semver");
26
26
  * @param options override options
27
27
  */
28
28
  function nxComponentTestingPreset(pathToConfig, options) {
29
- if (global.NX_GRAPH_CREATION || global.NX_CYPRESS_INIT_GENERATOR_RUNNING) {
29
+ if (global.NX_GRAPH_CREATION) {
30
30
  // this is only used by plugins, so we don't need the component testing
31
31
  // options, cast to any to avoid type errors
32
32
  return (0, cypress_preset_1.nxBaseCypressPreset)(pathToConfig, {
@@ -98,7 +98,7 @@ function executeDevServerBuilder(rawOptions, context) {
98
98
  */
99
99
  (0, patch_builder_context_1.patchBuilderContext)(context, !isUsingWebpackBuilder, parsedBuildTarget);
100
100
  return (0, rxjs_1.combineLatest)([
101
- (0, rxjs_1.from)(Promise.resolve().then(() => require('@angular-devkit/build-angular'))),
101
+ (0, rxjs_1.from)(import('@angular-devkit/build-angular')),
102
102
  (0, rxjs_1.from)((0, esbuild_extensions_1.loadPlugins)(buildTargetOptions.plugins, buildTargetOptions.tsConfig)),
103
103
  (0, rxjs_1.from)((0, esbuild_extensions_1.loadMiddleware)(options.esbuildMiddleware, buildTargetOptions.tsConfig)),
104
104
  (0, rxjs_1.from)(loadIndexHtmlFileTransformer(pathToIndexFileTransformer, buildTargetOptions.tsConfig, context, isUsingWebpackBuilder)),
@@ -6,7 +6,7 @@ const semver_1 = require("semver");
6
6
  const angular_version_utils_1 = require("../../../executors/utilities/angular-version-utils");
7
7
  function validateOptions(options) {
8
8
  const { major: angularMajorVersion, version: angularVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
9
- if ((0, semver_1.lt)(angularVersion, '16.1.0') && options.forceEsbuild !== undefined) {
9
+ if ((0, semver_1.lt)(angularVersion, '16.1.0') && options.forceEsbuild) {
10
10
  throw new Error((0, devkit_1.stripIndents) `The "forceEsbuild" option is only supported in Angular >= 16.1.0. You are currently using "${angularVersion}".
11
11
  You can resolve this error by removing the "forceEsbuild" option or by migrating to Angular 16.1.0.`);
12
12
  }
@@ -3,7 +3,7 @@
3
3
  "outputCapture": "direct-nodejs",
4
4
  "$schema": "http://json-schema.org/draft-07/schema",
5
5
  "title": "Schema for Webpack Dev Server",
6
- "description": "Serves an Angular application using [Webpack](https://webpack.js.org/) when the build target is using a Webpack-based executor, or [Vite](https://vitejs.dev/) when the build target uses an esbuild-based executor.",
6
+ "description": "Serves an Angular application using [webpack](https://webpack.js.org/) when the build target is using a webpack-based executor, or [Vite](https://vitejs.dev/) when the build target uses an [esbuild](https://esbuild.github.io/)-based executor.",
7
7
  "examplesFile": "../../../docs/dev-server-examples.md",
8
8
  "type": "object",
9
9
  "presets": [
@@ -17,7 +17,7 @@
17
17
  "type": "string",
18
18
  "description": "A browser builder target to serve in the format of `project:target[:configuration]`. Ignored if `buildTarget` is set.",
19
19
  "pattern": "^[^:\\s]+:[^:\\s]+(:[^\\s]+)?$",
20
- "x-deprecated": "Use 'buildTarget' instead. It will be removed in Nx v19."
20
+ "x-deprecated": "Use 'buildTarget' instead. It will be removed in Nx v20."
21
21
  },
22
22
  "buildTarget": {
23
23
  "type": "string",
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "proxyConfig": {
38
38
  "type": "string",
39
- "description": "Proxy configuration file. For more information, see https://angular.io/guide/build#proxying-to-a-backend-server."
39
+ "description": "Proxy configuration file. For more information, see https://angular.dev/tools/cli/serve#proxying-to-a-backend-server."
40
40
  },
41
41
  "ssl": {
42
42
  "type": "boolean",
@@ -17,7 +17,7 @@ function executeModuleFederationDevSSRBuilder(schema, context) {
17
17
  const projectGraph = (0, devkit_1.readCachedProjectGraph)();
18
18
  const { projects: workspaceProjects } = (0, project_graph_1.readProjectsConfigurationFromProjectGraph)(projectGraph);
19
19
  const project = workspaceProjects[context.target.project];
20
- let pathToManifestFile = (0, path_1.join)(context.workspaceRoot, project.sourceRoot, 'assets/module-federation.manifest.json');
20
+ let pathToManifestFile;
21
21
  if (options.pathToManifestFile) {
22
22
  const userPathToManifestFile = (0, path_1.join)(context.workspaceRoot, options.pathToManifestFile);
23
23
  if (!(0, fs_1.existsSync)(userPathToManifestFile)) {
@@ -28,16 +28,19 @@ function executeModuleFederationDevSSRBuilder(schema, context) {
28
28
  }
29
29
  pathToManifestFile = userPathToManifestFile;
30
30
  }
31
- (0, module_federation_1.validateDevRemotes)(options, workspaceProjects);
32
- const remotesToSkip = new Set(options.skipRemotes ?? []);
33
- const staticRemotes = (0, module_federation_1.getStaticRemotes)(project, context, workspaceProjects, remotesToSkip);
34
- const dynamicRemotes = (0, module_federation_1.getDynamicRemotes)(project, context, workspaceProjects, remotesToSkip, pathToManifestFile);
35
- const remotes = [...staticRemotes, ...dynamicRemotes];
31
+ else {
32
+ pathToManifestFile = (0, module_federation_1.getDynamicMfManifestFile)(project, context.workspaceRoot);
33
+ }
36
34
  const devServeRemotes = !options.devRemotes
37
35
  ? []
38
36
  : Array.isArray(options.devRemotes)
39
37
  ? options.devRemotes
40
38
  : [options.devRemotes];
39
+ (0, module_federation_1.validateDevRemotes)({ devRemotes: devServeRemotes }, workspaceProjects);
40
+ const remotesToSkip = new Set(options.skipRemotes ?? []);
41
+ const staticRemotes = (0, module_federation_1.getStaticRemotes)(project, context, workspaceProjects, remotesToSkip);
42
+ const dynamicRemotes = (0, module_federation_1.getDynamicRemotes)(project, context, workspaceProjects, remotesToSkip, pathToManifestFile);
43
+ const remotes = [...staticRemotes, ...dynamicRemotes];
41
44
  const remoteProcessPromises = [];
42
45
  for (const remote of remotes) {
43
46
  const isDev = devServeRemotes.includes(remote);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema",
3
3
  "title": "Module Federation SSR Dev Server Target",
4
- "description": "SSR Dev Server target options for Module Federation host applications.",
4
+ "description": "Serves host [Module Federation](https://module-federation.io/) applications ([webpack](https://webpack.js.org/)-based) that use SSR allowing to specify which remote applications should be served with the host.",
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "browserTarget": {
@@ -1,6 +1,11 @@
1
1
  import { ProjectConfiguration } from '@nx/devkit';
2
- export declare function getDynamicRemotes(project: ProjectConfiguration, context: import('@angular-devkit/architect').BuilderContext, workspaceProjects: Record<string, ProjectConfiguration>, remotesToSkip: Set<string>, pathToManifestFile?: string): string[];
2
+ export type DevRemoteDefinition = string | {
3
+ remoteName: string;
4
+ configuration: string;
5
+ };
6
+ export declare function getDynamicRemotes(project: ProjectConfiguration, context: import('@angular-devkit/architect').BuilderContext, workspaceProjects: Record<string, ProjectConfiguration>, remotesToSkip: Set<string>, pathToManifestFile: string | undefined): string[];
3
7
  export declare function getStaticRemotes(project: ProjectConfiguration, context: import('@angular-devkit/architect').BuilderContext, workspaceProjects: Record<string, ProjectConfiguration>, remotesToSkip: Set<string>): string[];
4
8
  export declare function validateDevRemotes(options: {
5
- devRemotes?: string[];
9
+ devRemotes: DevRemoteDefinition[];
6
10
  }, workspaceProjects: Record<string, ProjectConfiguration>): void;
11
+ export declare function getDynamicMfManifestFile(project: ProjectConfiguration, workspaceRoot: string): string | undefined;
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateDevRemotes = exports.getStaticRemotes = exports.getDynamicRemotes = void 0;
3
+ exports.getDynamicMfManifestFile = exports.validateDevRemotes = exports.getStaticRemotes = exports.getDynamicRemotes = void 0;
4
4
  const path_1 = require("path");
5
5
  const fs_1 = require("fs");
6
6
  const devkit_1 = require("@nx/devkit");
7
7
  const internal_1 = require("@nx/js/src/internal");
8
- function getDynamicRemotes(project, context, workspaceProjects, remotesToSkip, pathToManifestFile = (0, path_1.join)(context.workspaceRoot, project.sourceRoot, 'assets/module-federation.manifest.json')) {
8
+ function getDynamicRemotes(project, context, workspaceProjects, remotesToSkip, pathToManifestFile) {
9
+ pathToManifestFile ??= getDynamicMfManifestFile(project, context.workspaceRoot);
9
10
  // check for dynamic remotes
10
11
  // we should only check for dynamic based on what we generate
11
12
  // and fallback to empty array
12
- if (!(0, fs_1.existsSync)(pathToManifestFile)) {
13
+ if (!pathToManifestFile || !(0, fs_1.existsSync)(pathToManifestFile)) {
13
14
  return [];
14
15
  }
15
16
  const moduleFederationManifestJson = (0, fs_1.readFileSync)(pathToManifestFile, 'utf-8');
@@ -85,7 +86,9 @@ function getStaticRemotes(project, context, workspaceProjects, remotesToSkip) {
85
86
  }
86
87
  exports.getStaticRemotes = getStaticRemotes;
87
88
  function validateDevRemotes(options, workspaceProjects) {
88
- const invalidDevRemotes = options.devRemotes?.filter((remote) => !workspaceProjects[remote]) ?? [];
89
+ const invalidDevRemotes = options.devRemotes.filter((remote) => !(typeof remote === 'string'
90
+ ? workspaceProjects[remote]
91
+ : workspaceProjects[remote.remoteName])) ?? [];
89
92
  if (invalidDevRemotes.length) {
90
93
  throw new Error(invalidDevRemotes.length === 1
91
94
  ? `Invalid dev remote provided: ${invalidDevRemotes[0]}.`
@@ -93,3 +96,16 @@ function validateDevRemotes(options, workspaceProjects) {
93
96
  }
94
97
  }
95
98
  exports.validateDevRemotes = validateDevRemotes;
99
+ function getDynamicMfManifestFile(project, workspaceRoot) {
100
+ // {sourceRoot}/assets/module-federation.manifest.json was the generated
101
+ // path for the manifest file in the past. We now generate the manifest
102
+ // file at {root}/public/module-federation.manifest.json. This check
103
+ // ensures that we can still support the old path for backwards
104
+ // compatibility since old projects may still have the manifest file
105
+ // at the old path.
106
+ return [
107
+ (0, path_1.join)(workspaceRoot, project.root, 'public/module-federation.manifest.json'),
108
+ (0, path_1.join)(workspaceRoot, project.sourceRoot, 'assets/module-federation.manifest.json'),
109
+ ].find((path) => (0, fs_1.existsSync)(path));
110
+ }
111
+ exports.getDynamicMfManifestFile = getDynamicMfManifestFile;
@@ -1,4 +1,4 @@
1
- import { Schema } from '@angular-devkit/build-angular/src/builders/browser/schema';
1
+ import type { Schema } from '@angular-devkit/build-angular/src/builders/browser/schema';
2
2
 
3
3
  export type BrowserBuilderSchema = Schema & {
4
4
  customWebpackConfig?: {
@@ -7,7 +7,7 @@ export type BrowserBuilderSchema = Schema & {
7
7
  indexHtmlTransformer?: string;
8
8
  buildLibsFromSource?: boolean;
9
9
  /**
10
- * @deprecated Use `indexHtmlTransformer` instead. It will be removed in Nx 19.
10
+ * @deprecated Use `indexHtmlTransformer` instead. It will be removed in Nx 20.
11
11
  */
12
12
  indexFileTransformer?: string;
13
13
  };