@nx/angular 19.1.0-beta.1 → 19.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/executors.json +1 -1
  2. package/migrations.json +82 -0
  3. package/package.json +14 -13
  4. package/src/builders/dev-server/dev-server.impl.js +1 -1
  5. package/src/builders/dev-server/schema.json +1 -1
  6. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +4 -1
  7. package/src/builders/utilities/module-federation.d.ts +2 -1
  8. package/src/builders/utilities/module-federation.js +17 -3
  9. package/src/builders/webpack-browser/schema.json +4 -3
  10. package/src/builders/webpack-browser/webpack-browser.impl.js +1 -1
  11. package/src/builders/webpack-server/schema.json +7 -6
  12. package/src/builders/webpack-server/webpack-server.impl.js +3 -5
  13. package/src/executors/application/application.impl.d.ts +2 -1
  14. package/src/executors/application/application.impl.js +2 -2
  15. package/src/executors/application/schema.json +4 -3
  16. package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +2 -7
  17. package/src/executors/browser-esbuild/browser-esbuild.impl.js +2 -2
  18. package/src/executors/browser-esbuild/schema.json +4 -3
  19. package/src/executors/extract-i18n/extract-i18n.impl.js +2 -2
  20. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +2 -1
  21. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +8 -4
  22. package/src/executors/module-federation-dev-server/schema.json +1 -1
  23. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +6 -6
  24. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.js +3 -2
  25. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.js +2 -1
  26. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.js +2 -1
  27. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.d.ts +1 -2
  28. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.js +5 -4
  29. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.js +11 -11
  30. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +2 -1
  31. package/src/executors/ng-packagr-lite/schema.json +1 -1
  32. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +5 -4
  33. package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +2 -1
  34. package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +4 -4
  35. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +1 -2
  36. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +5 -4
  37. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +11 -11
  38. package/src/executors/utilities/esbuild-extensions.d.ts +2 -4
  39. package/src/executors/utilities/module-loader.d.ts +1 -2
  40. package/src/executors/utilities/ng-packagr/stylesheet-processor.js +22 -8
  41. package/src/executors/utilities/typescript.d.ts +1 -2
  42. package/src/executors/utilities/typescript.js +4 -3
  43. package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
  44. package/src/generators/add-linting/schema.json +1 -1
  45. package/src/generators/application/files/base-pre18/src/favicon.ico +0 -0
  46. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +3 -1
  47. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +2 -2
  48. package/src/generators/application/lib/add-linting.js +2 -1
  49. package/src/generators/application/lib/create-files.js +7 -0
  50. package/src/generators/application/lib/create-project.js +12 -5
  51. package/src/generators/component-test/component-test.js +1 -1
  52. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +3 -3
  53. package/src/generators/federate-module/lib/add-remote.js +2 -1
  54. package/src/generators/host/host.js +3 -2
  55. package/src/generators/library/library.js +4 -3
  56. package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +3 -2
  57. package/src/generators/ng-add/migrators/migrator.d.ts +1 -1
  58. package/src/generators/ng-add/migrators/migrator.js +7 -7
  59. package/src/generators/ng-add/migrators/projects/app.migrator.js +2 -2
  60. package/src/generators/ng-add/migrators/projects/e2e.migrator.js +1 -1
  61. package/src/generators/ng-add/utilities/validation-logging.js +2 -1
  62. package/src/generators/ngrx-root-store/ngrx-root-store.js +2 -1
  63. package/src/generators/setup-mf/lib/add-remote-to-host.js +13 -4
  64. package/src/generators/setup-mf/lib/fix-bootstrap.d.ts +1 -1
  65. package/src/generators/setup-mf/lib/fix-bootstrap.js +12 -5
  66. package/src/generators/setup-mf/lib/setup-host-if-dynamic.js +5 -1
  67. package/src/generators/setup-mf/setup-mf.js +1 -1
  68. package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +4 -3
  69. package/src/generators/setup-ssr/files/server/server-builder/v17+/__serverFileName__ +4 -3
  70. package/src/generators/setup-ssr/lib/add-dependencies.js +2 -1
  71. package/src/generators/setup-ssr/lib/generate-files.js +1 -7
  72. package/src/generators/setup-ssr/lib/index.d.ts +0 -1
  73. package/src/generators/setup-ssr/lib/index.js +0 -1
  74. package/src/generators/setup-ssr/lib/validate-options.js +0 -13
  75. package/src/generators/setup-ssr/schema.json +4 -3
  76. package/src/generators/setup-ssr/setup-ssr.js +0 -3
  77. package/src/generators/stories/stories.js +3 -2
  78. package/src/generators/storybook-configuration/lib/generate-stories.js +1 -1
  79. package/src/generators/utils/storybook-ast/tree-utilities.js +2 -1
  80. package/src/generators/utils/version-utils.js +4 -3
  81. package/src/migrations/update-15-2-0/remove-browserlist-config.js +1 -1
  82. package/src/migrations/update-15-2-0/remove-platform-server-exports.js +2 -1
  83. package/src/migrations/update-15-2-0/update-karma-main-file.js +2 -1
  84. package/src/migrations/update-16-1-0/remove-render-module-platform-server-exports.js +2 -1
  85. package/src/migrations/update-19-1-0/update-angular-cli.d.ts +3 -0
  86. package/src/migrations/update-19-1-0/update-angular-cli.js +23 -0
  87. package/src/utils/backward-compatible-versions.d.ts +10 -5
  88. package/src/utils/backward-compatible-versions.js +18 -19
  89. package/src/utils/file-change-recorder.js +2 -1
  90. package/src/utils/mf/with-module-federation.js +3 -2
  91. package/src/utils/version-utils.d.ts +2 -2
  92. package/src/utils/version-utils.js +2 -1
  93. package/src/utils/versions.d.ts +4 -4
  94. package/src/utils/versions.js +4 -4
  95. package/index.js +0 -8
  96. package/mf/index.js +0 -7
  97. package/mf/mf.js +0 -53
  98. package/src/builders/webpack-server/validate-options.d.ts +0 -2
  99. package/src/builders/webpack-server/validate-options.js +0 -33
  100. package/src/executors/utilities/ng-compiler-cli.d.ts +0 -1
  101. package/src/executors/utilities/ng-compiler-cli.js +0 -8
  102. package/src/generators/setup-ssr/files/ngmodule/pre-v15-2/src/main.ts__tpl__ +0 -14
  103. package/src/generators/setup-ssr/lib/update-app-module.d.ts +0 -3
  104. package/src/generators/setup-ssr/lib/update-app-module.js +0 -27
  105. package/src/runtime/nx/data-persistence.js +0 -350
  106. package/testing/index.js +0 -6
  107. package/testing/src/testing-utils.js +0 -40
  108. /package/src/generators/application/files/{base/src → base-18+/public}/favicon.ico +0 -0
  109. /package/src/generators/application/files/{base → base-pre18}/src/assets/.gitkeep__tpl__ +0 -0
  110. /package/src/generators/setup-ssr/files/ngmodule/{base/src → src}/__main__ +0 -0
  111. /package/src/generators/setup-ssr/files/ngmodule/{base/src → src}/app/__rootModuleFileName__ +0 -0
package/executors.json CHANGED
@@ -8,7 +8,7 @@
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 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 with some key differences:\n- For supported Angular versions lower than v16, it doesn't run `ngcc` automatically (`ngcc` is no longer available from Angular v16 onwards, for lower versions, it needs to be run separately beforehand if needed, this can be done in a `postinstall` hook on `package.json`).\n- It only produces ESM2022 bundles (ESM2020 for supported Angular versions lower than v16)."
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",
package/migrations.json CHANGED
@@ -386,6 +386,15 @@
386
386
  },
387
387
  "description": "Update the @angular/cli package version to ~17.3.0.",
388
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"
389
398
  }
390
399
  },
391
400
  "packageJsonUpdates": {
@@ -1805,6 +1814,79 @@
1805
1814
  "alwaysAddToPackageJson": false
1806
1815
  }
1807
1816
  }
1817
+ },
1818
+ "19.1.0": {
1819
+ "version": "19.1.0-beta.2",
1820
+ "x-prompt": "Do you want to update the Angular version to v18?",
1821
+ "requires": {
1822
+ "@angular/core": ">=17.3.0 <18.0.0"
1823
+ },
1824
+ "packages": {
1825
+ "@angular-devkit/build-angular": {
1826
+ "version": "~18.0.0",
1827
+ "alwaysAddToPackageJson": false
1828
+ },
1829
+ "@angular-devkit/core": {
1830
+ "version": "~18.0.0",
1831
+ "alwaysAddToPackageJson": false
1832
+ },
1833
+ "@angular-devkit/schematics": {
1834
+ "version": "~18.0.0",
1835
+ "alwaysAddToPackageJson": false
1836
+ },
1837
+ "@angular/pwa": {
1838
+ "version": "~18.0.0",
1839
+ "alwaysAddToPackageJson": false
1840
+ },
1841
+ "@angular/ssr": {
1842
+ "version": "~18.0.0",
1843
+ "alwaysAddToPackageJson": false
1844
+ },
1845
+ "@schematics/angular": {
1846
+ "version": "~18.0.0",
1847
+ "alwaysAddToPackageJson": false
1848
+ },
1849
+ "@angular-devkit/architect": {
1850
+ "version": "~0.1800.0",
1851
+ "alwaysAddToPackageJson": false
1852
+ },
1853
+ "@angular-devkit/build-webpack": {
1854
+ "version": "~0.1800.0",
1855
+ "alwaysAddToPackageJson": false
1856
+ },
1857
+ "@angular/core": {
1858
+ "version": "~18.0.0",
1859
+ "alwaysAddToPackageJson": true
1860
+ },
1861
+ "@angular/material": {
1862
+ "version": "~18.0.0",
1863
+ "alwaysAddToPackageJson": false
1864
+ },
1865
+ "@angular/cdk": {
1866
+ "version": "~18.0.0",
1867
+ "alwaysAddToPackageJson": false
1868
+ },
1869
+ "ng-packagr": {
1870
+ "version": "~18.0.0",
1871
+ "alwaysAddToPackageJson": false
1872
+ }
1873
+ }
1874
+ },
1875
+ "19.1.0-jest": {
1876
+ "version": "19.1.0-beta.2",
1877
+ "requires": {
1878
+ "@angular-devkit/build-angular": ">=15.0.0 <19.0.0",
1879
+ "@angular/compiler-cli": ">=15.0.0 <19.0.0",
1880
+ "@angular/core": ">=15.0.0 <19.0.0",
1881
+ "@angular/platform-browser-dynamic": ">=15.0.0 <19.0.0",
1882
+ "jest": "^29.0.0"
1883
+ },
1884
+ "packages": {
1885
+ "jest-preset-angular": {
1886
+ "version": "~14.1.0",
1887
+ "alwaysAddToPackageJson": false
1888
+ }
1889
+ }
1808
1890
  }
1809
1891
  }
1810
1892
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/angular",
3
- "version": "19.1.0-beta.1",
3
+ "version": "19.1.0-beta.2",
4
4
  "private": false,
5
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": {
@@ -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",
@@ -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": "19.1.0-beta.1",
82
- "@nx/js": "19.1.0-beta.1",
83
- "@nx/eslint": "19.1.0-beta.1",
84
- "@nx/webpack": "19.1.0-beta.1",
85
- "@nx/web": "19.1.0-beta.1",
86
- "@nx/workspace": "19.1.0-beta.1",
82
+ "@nx/devkit": "19.1.0-beta.2",
83
+ "@nx/js": "19.1.0-beta.2",
84
+ "@nx/eslint": "19.1.0-beta.2",
85
+ "@nx/webpack": "19.1.0-beta.2",
86
+ "@nx/web": "19.1.0-beta.2",
87
+ "@nx/workspace": "19.1.0-beta.2",
87
88
  "piscina": "^4.4.0",
88
- "@nrwl/angular": "19.1.0-beta.1"
89
+ "@nrwl/angular": "19.1.0-beta.2"
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
  },
@@ -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)),
@@ -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,6 +28,9 @@ function executeModuleFederationDevSSRBuilder(schema, context) {
28
28
  }
29
29
  pathToManifestFile = userPathToManifestFile;
30
30
  }
31
+ else {
32
+ pathToManifestFile = (0, module_federation_1.getDynamicMfManifestFile)(project, context.workspaceRoot);
33
+ }
31
34
  (0, module_federation_1.validateDevRemotes)(options, workspaceProjects);
32
35
  const remotesToSkip = new Set(options.skipRemotes ?? []);
33
36
  const staticRemotes = (0, module_federation_1.getStaticRemotes)(project, context, workspaceProjects, remotesToSkip);
@@ -1,5 +1,5 @@
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 declare function getDynamicRemotes(project: ProjectConfiguration, context: import('@angular-devkit/architect').BuilderContext, workspaceProjects: Record<string, ProjectConfiguration>, remotesToSkip: Set<string>, pathToManifestFile: string | undefined): string[];
3
3
  export declare function getStaticRemotes(project: ProjectConfiguration, context: import('@angular-devkit/architect').BuilderContext, workspaceProjects: Record<string, ProjectConfiguration>, remotesToSkip: Set<string>): string[];
4
4
  export declare function validateDevRemotes(options: {
5
5
  devRemotes?: (string | {
@@ -7,3 +7,4 @@ export declare function validateDevRemotes(options: {
7
7
  configuration: string;
8
8
  })[];
9
9
  }, workspaceProjects: Record<string, ProjectConfiguration>): void;
10
+ 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');
@@ -95,3 +96,16 @@ function validateDevRemotes(options, workspaceProjects) {
95
96
  }
96
97
  }
97
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;
@@ -153,7 +153,7 @@
153
153
  "additionalProperties": false
154
154
  },
155
155
  "optimization": {
156
- "description": "Enables optimization of the build output. Including minification of scripts and styles, tree-shaking, dead-code elimination, inlining of critical CSS and fonts inlining. For more information, see https://angular.io/guide/workspace-config#optimization-configuration.",
156
+ "description": "Enables optimization of the build output. Including minification of scripts and styles, tree-shaking, dead-code elimination, inlining of critical CSS and fonts inlining. For more information, see https://angular.dev/reference/configs/workspace-config#optimization-configuration.",
157
157
  "x-user-analytics": 16,
158
158
  "default": true,
159
159
  "oneOf": [
@@ -242,7 +242,7 @@
242
242
  "default": true
243
243
  },
244
244
  "sourceMap": {
245
- "description": "Output source maps for scripts and styles. For more information, see https://angular.io/guide/workspace-config#source-map-configuration.",
245
+ "description": "Output source maps for scripts and styles. For more information, see https://angular.dev/reference/configs/workspace-config#source-map-configuration.",
246
246
  "default": false,
247
247
  "oneOf": [
248
248
  {
@@ -498,11 +498,12 @@
498
498
  },
499
499
  "output": {
500
500
  "type": "string",
501
+ "default": "",
501
502
  "description": "Absolute path within the output."
502
503
  }
503
504
  },
504
505
  "additionalProperties": false,
505
- "required": ["glob", "input", "output"]
506
+ "required": ["glob", "input"]
506
507
  },
507
508
  {
508
509
  "type": "string"
@@ -46,7 +46,7 @@ function executeWebpackBrowserBuilder(options, context) {
46
46
  dependencies = foundDependencies;
47
47
  delegateBuilderOptions.tsConfig = (0, devkit_1.normalizePath)((0, path_1.relative)(context.workspaceRoot, tsConfigPath));
48
48
  }
49
- return (0, rxjs_1.from)(Promise.resolve().then(() => require('@angular-devkit/build-angular'))).pipe((0, operators_2.switchMap)(({ executeBrowserBuilder }) => executeBrowserBuilder(delegateBuilderOptions, context, {
49
+ return (0, rxjs_1.from)(import('@angular-devkit/build-angular')).pipe((0, operators_2.switchMap)(({ executeBrowserBuilder }) => executeBrowserBuilder(delegateBuilderOptions, context, {
50
50
  webpackConfiguration: (baseWebpackConfig) => {
51
51
  if (!buildLibsFromSource && delegateBuilderOptions.watch) {
52
52
  const workspaceDependencies = dependencies
@@ -8,7 +8,7 @@
8
8
  "properties": {
9
9
  "assets": {
10
10
  "type": "array",
11
- "description": "List of static application assets. _Note: only supported in Angular versions >= 15.1.0_",
11
+ "description": "List of static application assets.",
12
12
  "default": [],
13
13
  "items": {
14
14
  "$ref": "#/definitions/assetPattern"
@@ -45,7 +45,7 @@
45
45
  "additionalProperties": false
46
46
  },
47
47
  "optimization": {
48
- "description": "Enables optimization of the build output. Including minification of scripts and styles, tree-shaking and dead-code elimination. For more information, see https://angular.io/guide/workspace-config#optimization-configuration.",
48
+ "description": "Enables optimization of the build output. Including minification of scripts and styles, tree-shaking and dead-code elimination. For more information, see https://angular.dev/reference/configs/workspace-config#optimization-configuration.",
49
49
  "default": true,
50
50
  "x-user-analytics": "ep.ng_optimization",
51
51
  "oneOf": [
@@ -87,7 +87,7 @@
87
87
  "description": "The path where style resources will be placed, relative to outputPath."
88
88
  },
89
89
  "sourceMap": {
90
- "description": "Output source maps for scripts and styles. For more information, see https://angular.io/guide/workspace-config#source-map-configuration.",
90
+ "description": "Output source maps for scripts and styles. For more information, see https://angular.dev/reference/configs/workspace-config#source-map-configuration.",
91
91
  "default": false,
92
92
  "oneOf": [
93
93
  {
@@ -127,7 +127,7 @@
127
127
  },
128
128
  "vendorChunk": {
129
129
  "type": "boolean",
130
- "description": "Generate a separate bundle containing only vendor libraries. This option should only be used for development to reduce the incremental compilation time. _Note: supported in Angular versions >= 15.1.0_",
130
+ "description": "Generate a separate bundle containing only vendor libraries. This option should only be used for development to reduce the incremental compilation time.",
131
131
  "default": false
132
132
  },
133
133
  "verbose": {
@@ -192,7 +192,7 @@
192
192
  },
193
193
  "buildOptimizer": {
194
194
  "type": "boolean",
195
- "description": "Enables advanced build optimizations. _Note: only supported in Angular versions >= 16.0.0_.",
195
+ "description": "Enables advanced build optimizations.",
196
196
  "default": true
197
197
  },
198
198
  "namedChunks": {
@@ -271,11 +271,12 @@
271
271
  },
272
272
  "output": {
273
273
  "type": "string",
274
+ "default": "",
274
275
  "description": "Absolute path within the output."
275
276
  }
276
277
  },
277
278
  "additionalProperties": false,
278
- "required": ["glob", "input", "output"]
279
+ "required": ["glob", "input"]
279
280
  },
280
281
  {
281
282
  "type": "string"
@@ -8,7 +8,6 @@ const rxjs_1 = require("rxjs");
8
8
  const operators_1 = require("rxjs/operators");
9
9
  const buildable_libs_1 = require("../utilities/buildable-libs");
10
10
  const webpack_1 = require("../utilities/webpack");
11
- const validate_options_1 = require("./validate-options");
12
11
  function buildServerApp(options, context) {
13
12
  const { buildLibsFromSource, customWebpackConfig, ...delegateOptions } = options;
14
13
  // If there is a path to custom webpack config
@@ -22,12 +21,12 @@ function buildServerApp(options, context) {
22
21
  throw new Error(`Custom Webpack Config File Not Found!\nTo use a custom webpack config, please ensure the path to the custom webpack file is correct: \n${pathToWebpackConfig}`);
23
22
  }
24
23
  }
25
- return (0, rxjs_1.from)(Promise.resolve().then(() => require('@angular-devkit/build-angular'))).pipe((0, operators_1.switchMap)(({ executeServerBuilder }) => executeServerBuilder(delegateOptions, context)));
24
+ return (0, rxjs_1.from)(import('@angular-devkit/build-angular')).pipe((0, operators_1.switchMap)(({ executeServerBuilder }) => executeServerBuilder(delegateOptions, context)));
26
25
  }
27
26
  function buildServerAppWithCustomWebpackConfiguration(options, context, pathToWebpackConfig) {
28
- return (0, rxjs_1.from)(Promise.resolve().then(() => require('@angular-devkit/build-angular'))).pipe((0, operators_1.switchMap)(({ executeServerBuilder }) => executeServerBuilder(options, context, {
27
+ return (0, rxjs_1.from)(import('@angular-devkit/build-angular')).pipe((0, operators_1.switchMap)(({ executeServerBuilder }) => executeServerBuilder(options, context, {
29
28
  webpackConfiguration: async (baseWebpackConfig) => {
30
- // Angular 15 auto includes code from @angular/platform-server
29
+ // Angular auto includes code from @angular/platform-server
31
30
  // This includes the code outside the shared scope created by ModuleFederation
32
31
  // This code will be included in the generated code from our generators,
33
32
  // maintaining it within the shared scope.
@@ -47,7 +46,6 @@ function buildServerAppWithCustomWebpackConfiguration(options, context, pathToWe
47
46
  })));
48
47
  }
49
48
  function executeWebpackServerBuilder(options, context) {
50
- (0, validate_options_1.validateOptions)(options);
51
49
  options.buildLibsFromSource ??= true;
52
50
  process.env.NX_BUILD_LIBS_FROM_SOURCE = `${options.buildLibsFromSource}`;
53
51
  process.env.NX_BUILD_TARGET = (0, devkit_1.targetToTargetString)({ ...context.target });
@@ -1,3 +1,4 @@
1
1
  import type { ExecutorContext } from '@nx/devkit';
2
2
  import type { ApplicationExecutorOptions } from './schema';
3
- export default function applicationExecutor(options: ApplicationExecutorOptions, context: ExecutorContext): AsyncGenerator<import("@angular-devkit/build-angular/src/builders/application").ApplicationBuilderOutput, any, undefined>;
3
+ import type { buildApplication as buildApplicationFn } from '@angular-devkit/build-angular';
4
+ export default function applicationExecutor(options: ApplicationExecutorOptions, context: ExecutorContext): ReturnType<typeof buildApplicationFn>;
@@ -19,11 +19,11 @@ async function* applicationExecutor(options, context) {
19
19
  const indexHtmlTransformer = indexHtmlTransformerPath
20
20
  ? await (0, esbuild_extensions_1.loadIndexHtmlTransformer)(indexHtmlTransformerPath, options.tsConfig)
21
21
  : undefined;
22
- const { buildApplication } = await Promise.resolve().then(() => require('@angular-devkit/build-angular'));
22
+ const { buildApplication } = await import('@angular-devkit/build-angular');
23
23
  const builderContext = await (0, ngcli_adapter_1.createBuilderContext)({
24
24
  builderName: 'application',
25
25
  description: 'Build an application.',
26
- optionSchema: await Promise.resolve().then(() => require('./schema.json')),
26
+ optionSchema: require('./schema.json'),
27
27
  }, context);
28
28
  const { version: angularVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
29
29
  if ((0, semver_1.gte)(angularVersion, '17.1.0')) {
@@ -145,7 +145,7 @@
145
145
  "description": "Automatically clear the terminal screen during rebuilds. _Note: this is only supported in Angular versions >= 17.2.0_."
146
146
  },
147
147
  "optimization": {
148
- "description": "Enables optimization of the build output. Including minification of scripts and styles, tree-shaking, dead-code elimination, inlining of critical CSS and fonts inlining. For more information, see https://angular.io/guide/workspace-config#optimization-configuration.",
148
+ "description": "Enables optimization of the build output. Including minification of scripts and styles, tree-shaking, dead-code elimination, inlining of critical CSS and fonts inlining. For more information, see https://angular.dev/reference/configs/workspace-config#optimization-configuration.",
149
149
  "default": true,
150
150
  "x-user-analytics": "ep.ng_optimization",
151
151
  "oneOf": [
@@ -281,7 +281,7 @@
281
281
  "default": true
282
282
  },
283
283
  "sourceMap": {
284
- "description": "Output source maps for scripts and styles. For more information, see https://angular.io/guide/workspace-config#source-map-configuration.",
284
+ "description": "Output source maps for scripts and styles. For more information, see https://angular.dev/reference/configs/workspace-config#source-map-configuration.",
285
285
  "default": false,
286
286
  "oneOf": [
287
287
  {
@@ -600,11 +600,12 @@
600
600
  },
601
601
  "output": {
602
602
  "type": "string",
603
+ "default": "",
603
604
  "description": "Absolute path within the output."
604
605
  }
605
606
  },
606
607
  "additionalProperties": false,
607
- "required": ["glob", "input", "output"]
608
+ "required": ["glob", "input"]
608
609
  },
609
610
  {
610
611
  "type": "string"
@@ -1,9 +1,4 @@
1
+ import type { buildEsbuildBrowser as buildEsbuildBrowserFn } from '@angular-devkit/build-angular/src/builders/browser-esbuild';
1
2
  import { type ExecutorContext } from '@nx/devkit';
2
3
  import type { EsBuildSchema } from './schema';
3
- export default function esbuildExecutor(options: EsBuildSchema, context: ExecutorContext): AsyncGenerator<import("@angular-devkit/core").JsonObject & import("@angular-devkit/architect/src/output-schema").Schema & {
4
- outputFiles?: import("@angular-devkit/build-angular/src/tools/esbuild/bundler-context").BuildOutputFile[];
5
- assetFiles?: {
6
- source: string;
7
- destination: string;
8
- }[];
9
- }, any, undefined>;
4
+ export default function esbuildExecutor(options: EsBuildSchema, context: ExecutorContext): ReturnType<typeof buildEsbuildBrowserFn>;
@@ -22,11 +22,11 @@ async function* esbuildExecutor(options, context) {
22
22
  delegateExecutorOptions.tsConfig = tsConfigPath;
23
23
  }
24
24
  const plugins = await (0, esbuild_extensions_1.loadPlugins)(pluginPaths, options.tsConfig);
25
- const { buildEsbuildBrowser } = await Promise.resolve().then(() => require('@angular-devkit/build-angular/src/builders/browser-esbuild/index'));
25
+ const { buildEsbuildBrowser } = require('@angular-devkit/build-angular/src/builders/browser-esbuild');
26
26
  const builderContext = await (0, ngcli_adapter_1.createBuilderContext)({
27
27
  builderName: 'browser-esbuild',
28
28
  description: 'Build a browser application',
29
- optionSchema: await Promise.resolve().then(() => require('@angular-devkit/build-angular/src/builders/browser-esbuild/schema.json')),
29
+ optionSchema: require('@angular-devkit/build-angular/src/builders/browser-esbuild/schema.json'),
30
30
  }, context);
31
31
  return yield* buildEsbuildBrowser(delegateExecutorOptions, builderContext,
32
32
  /* infrastructureSettings */ undefined, plugins);
@@ -141,7 +141,7 @@
141
141
  "default": []
142
142
  },
143
143
  "optimization": {
144
- "description": "Enables optimization of the build output. Including minification of scripts and styles, tree-shaking, dead-code elimination, inlining of critical CSS and fonts inlining. For more information, see https://angular.io/guide/workspace-config#optimization-configuration.",
144
+ "description": "Enables optimization of the build output. Including minification of scripts and styles, tree-shaking, dead-code elimination, inlining of critical CSS and fonts inlining. For more information, see https://angular.dev/reference/configs/workspace-config#optimization-configuration.",
145
145
  "default": true,
146
146
  "x-user-analytics": "ep.ng_optimization",
147
147
  "oneOf": [
@@ -229,7 +229,7 @@
229
229
  "default": true
230
230
  },
231
231
  "sourceMap": {
232
- "description": "Output source maps for scripts and styles. For more information, see https://angular.io/guide/workspace-config#source-map-configuration.",
232
+ "description": "Output source maps for scripts and styles. For more information, see https://angular.dev/reference/configs/workspace-config#source-map-configuration.",
233
233
  "default": false,
234
234
  "oneOf": [
235
235
  {
@@ -502,11 +502,12 @@
502
502
  },
503
503
  "output": {
504
504
  "type": "string",
505
+ "default": "",
505
506
  "description": "Absolute path within the output."
506
507
  }
507
508
  },
508
509
  "additionalProperties": false,
509
- "required": ["glob", "input", "output"]
510
+ "required": ["glob", "input"]
510
511
  },
511
512
  {
512
513
  "type": "string"
@@ -18,7 +18,7 @@ async function* extractI18nExecutor(options, context) {
18
18
  const builderContext = await (0, ngcli_adapter_1.createBuilderContext)({
19
19
  builderName: 'extrct-i18n',
20
20
  description: 'Extracts i18n messages from source code.',
21
- optionSchema: await Promise.resolve().then(() => require('./schema.json')),
21
+ optionSchema: require('./schema.json'),
22
22
  }, context);
23
23
  /**
24
24
  * The Angular CLI extract-i18n builder make some decisions based on the build
@@ -27,7 +27,7 @@ async function* extractI18nExecutor(options, context) {
27
27
  * handle `@nx/angular:*` executors.
28
28
  */
29
29
  (0, patch_builder_context_1.patchBuilderContext)(builderContext, isUsingEsbuildBuilder, parsedBuildTarget);
30
- const { executeExtractI18nBuilder } = await Promise.resolve().then(() => require('@angular-devkit/build-angular'));
30
+ const { executeExtractI18nBuilder } = await import('@angular-devkit/build-angular');
31
31
  const delegateBuilderOptions = getDelegateBuilderOptions(options);
32
32
  return await executeExtractI18nBuilder(delegateBuilderOptions, builderContext);
33
33
  }
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.startStaticRemotesFileServer = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const devkit_1 = require("@nx/devkit");
5
- const file_server_impl_1 = require("@nx/web/src/executors/file-server/file-server.impl");
6
+ const file_server_impl_1 = tslib_1.__importDefault(require("@nx/web/src/executors/file-server/file-server.impl"));
6
7
  const path_1 = require("path");
7
8
  const fs_1 = require("fs");
8
9
  function startStaticRemotesFileServer(staticRemotesConfig, context, options) {
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.moduleFederationDevServerExecutor = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const devkit_1 = require("@nx/devkit");
5
6
  const lib_1 = require("./lib");
6
7
  const rxjs_for_await_1 = require("@nx/devkit/src/utils/rxjs-for-await");
7
8
  const async_iterable_1 = require("@nx/devkit/src/utils/async-iterable");
8
9
  const module_federation_1 = require("@nx/webpack/src/utils/module-federation");
9
10
  const wait_for_port_open_1 = require("@nx/web/src/utils/wait-for-port-open");
10
- const file_server_impl_1 = require("@nx/web/src/executors/file-server/file-server.impl");
11
+ const file_server_impl_1 = tslib_1.__importDefault(require("@nx/web/src/executors/file-server/file-server.impl"));
11
12
  const ngcli_adapter_1 = require("nx/src/adapter/ngcli-adapter");
12
13
  const dev_server_impl_1 = require("../../builders/dev-server/dev-server.impl");
13
14
  const module_federation_2 = require("../../builders/utilities/module-federation");
@@ -34,13 +35,16 @@ async function* moduleFederationDevServerExecutor(schema, context) {
34
35
  : (0, rxjs_for_await_1.eachValueFrom)((0, dev_server_impl_1.executeDevServerBuilder)(options, await (0, ngcli_adapter_1.createBuilderContext)({
35
36
  builderName: '@nx/angular:webpack-browser',
36
37
  description: 'Build a browser application',
37
- optionSchema: await Promise.resolve().then(() => require('../../builders/webpack-browser/schema.json')),
38
+ optionSchema: require('../../builders/webpack-browser/schema.json'),
38
39
  }, context)));
39
40
  if (options.isInitialHost === false) {
40
41
  return yield* currIter;
41
42
  }
42
- let pathToManifestFile = (0, path_1.join)(context.root, project.sourceRoot, 'assets/module-federation.manifest.json');
43
- if (options.pathToManifestFile) {
43
+ let pathToManifestFile;
44
+ if (!options.pathToManifestFile) {
45
+ pathToManifestFile = (0, module_federation_2.getDynamicMfManifestFile)(project, context.root);
46
+ }
47
+ else {
44
48
  const userPathToManifestFile = (0, path_1.join)(context.root, options.pathToManifestFile);
45
49
  if (!(0, fs_1.existsSync)(userPathToManifestFile)) {
46
50
  throw new Error(`The provided Module Federation manifest file path does not exist. Please check the file exists at "${userPathToManifestFile}".`);
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "proxyConfig": {
36
36
  "type": "string",
37
- "description": "Proxy configuration file. For more information, see https://angular.io/guide/build#proxying-to-a-backend-server."
37
+ "description": "Proxy configuration file. For more information, see https://angular.dev/tools/cli/serve#proxying-to-a-backend-server."
38
38
  },
39
39
  "ssl": {
40
40
  "type": "boolean",
@@ -6,9 +6,9 @@ const angular_version_utils_1 = require("../../utilities/angular-version-utils")
6
6
  async function getNgPackagrInstance(options) {
7
7
  const { major: angularMajorVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
8
8
  if (angularMajorVersion >= 17) {
9
- const { WRITE_BUNDLES_TRANSFORM } = await Promise.resolve().then(() => require('./v17+/ng-package/entry-point/write-bundles.di'));
10
- const { WRITE_PACKAGE_TRANSFORM } = await Promise.resolve().then(() => require('./v17+/ng-package/entry-point/write-package.di'));
11
- const { STYLESHEET_PROCESSOR } = await Promise.resolve().then(() => require('../../utilities/ng-packagr/stylesheet-processor.di'));
9
+ const { WRITE_BUNDLES_TRANSFORM } = await import('./v17+/ng-package/entry-point/write-bundles.di.js');
10
+ const { WRITE_PACKAGE_TRANSFORM } = await import('./v17+/ng-package/entry-point/write-package.di.js');
11
+ const { STYLESHEET_PROCESSOR } = await import('../../utilities/ng-packagr/stylesheet-processor.di.js');
12
12
  const packagr = (0, ng_packagr_1.ngPackagr)();
13
13
  packagr.withProviders([
14
14
  WRITE_BUNDLES_TRANSFORM,
@@ -17,9 +17,9 @@ async function getNgPackagrInstance(options) {
17
17
  ]);
18
18
  return packagr;
19
19
  }
20
- const { NX_ENTRY_POINT_PROVIDERS } = await Promise.resolve().then(() => require('./pre-v17/ng-package/entry-point/entry-point.di'));
21
- const { nxProvideOptions } = await Promise.resolve().then(() => require('./pre-v17/ng-package/options.di'));
22
- const { NX_PACKAGE_PROVIDERS, NX_PACKAGE_TRANSFORM } = await Promise.resolve().then(() => require('./pre-v17/ng-package/package.di'));
20
+ const { NX_ENTRY_POINT_PROVIDERS } = await import('./pre-v17/ng-package/entry-point/entry-point.di.js');
21
+ const { nxProvideOptions } = await import('./pre-v17/ng-package/options.di.js');
22
+ const { NX_PACKAGE_PROVIDERS, NX_PACKAGE_TRANSFORM } = await import('./pre-v17/ng-package/package.di.js');
23
23
  const packagr = new ng_packagr_1.NgPackagr([
24
24
  ...NX_PACKAGE_PROVIDERS,
25
25
  ...NX_ENTRY_POINT_PROVIDERS,
@@ -9,11 +9,12 @@
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.nxCompileNgcTransformFactory = void 0;
12
+ const tslib_1 = require("tslib");
12
13
  const transform_1 = require("ng-packagr/lib/graph/transform");
13
14
  const nodes_1 = require("ng-packagr/lib/ng-package/nodes");
14
15
  const tsconfig_1 = require("ng-packagr/lib/ts/tsconfig");
15
- const path = require("path");
16
- const ts = require("typescript");
16
+ const path = tslib_1.__importStar(require("path"));
17
+ const ts = tslib_1.__importStar(require("typescript"));
17
18
  const angular_version_utils_1 = require("../../../../../utilities/angular-version-utils");
18
19
  const compile_source_files_1 = require("../../ngc/compile-source-files");
19
20
  const nxCompileNgcTransformFactory = (StylesheetProcessor, options) => {