@angular/build 22.2.0-next.4 → 22.2.0-next.6

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 (169) hide show
  1. package/package.json +13 -12
  2. package/src/builders/application/build-action.js +47 -39
  3. package/src/builders/application/build-action.js.map +1 -1
  4. package/src/builders/application/execute-build.js +1 -1
  5. package/src/builders/application/execute-build.js.map +1 -1
  6. package/src/builders/application/execute-post-bundle.js +2 -5
  7. package/src/builders/application/execute-post-bundle.js.map +1 -1
  8. package/src/builders/application/i18n.js +20 -10
  9. package/src/builders/application/i18n.js.map +1 -1
  10. package/src/builders/application/index.js +2 -2
  11. package/src/builders/application/index.js.map +1 -1
  12. package/src/builders/application/results.d.ts +3 -2
  13. package/src/builders/application/setup-bundling.js +3 -1
  14. package/src/builders/application/setup-bundling.js.map +1 -1
  15. package/src/builders/dev-server/vite/index.js +4 -7
  16. package/src/builders/dev-server/vite/index.js.map +1 -1
  17. package/src/builders/dev-server/vite/server.js +1 -1
  18. package/src/builders/dev-server/vite/server.js.map +1 -1
  19. package/src/builders/dev-server/vite/utils.d.ts +1 -1
  20. package/src/builders/dev-server/vite/utils.js +9 -4
  21. package/src/builders/dev-server/vite/utils.js.map +1 -1
  22. package/src/builders/extract-i18n/application-extraction.js +6 -5
  23. package/src/builders/extract-i18n/application-extraction.js.map +1 -1
  24. package/src/builders/karma/application_builder.js +1 -1
  25. package/src/builders/karma/application_builder.js.map +1 -1
  26. package/src/builders/karma/assets-middleware.d.ts +2 -2
  27. package/src/builders/karma/assets-middleware.js +5 -2
  28. package/src/builders/karma/assets-middleware.js.map +1 -1
  29. package/src/builders/karma/progress-reporter.js +7 -5
  30. package/src/builders/karma/progress-reporter.js.map +1 -1
  31. package/src/builders/karma/utils.d.ts +2 -1
  32. package/src/builders/karma/utils.js +2 -2
  33. package/src/builders/karma/utils.js.map +1 -1
  34. package/src/builders/unit-test/builder.js +1 -1
  35. package/src/builders/unit-test/options.d.ts +1 -0
  36. package/src/builders/unit-test/options.js +2 -1
  37. package/src/builders/unit-test/options.js.map +1 -1
  38. package/src/builders/unit-test/runners/vitest/build-options.js +5 -6
  39. package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
  40. package/src/builders/unit-test/runners/vitest/executor.js +4 -4
  41. package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
  42. package/src/builders/unit-test/schema.d.ts +7 -0
  43. package/src/builders/unit-test/schema.js.map +1 -1
  44. package/src/builders/unit-test/schema.json +5 -0
  45. package/src/private.d.ts +1 -1
  46. package/src/private.js +4 -3
  47. package/src/private.js.map +1 -1
  48. package/src/tools/angular/compilation/angular-compilation.d.ts +3 -8
  49. package/src/tools/angular/compilation/angular-compilation.js +2 -88
  50. package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
  51. package/src/tools/angular/compilation/aot-compilation.d.ts +5 -5
  52. package/src/tools/angular/compilation/aot-compilation.js +9 -13
  53. package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
  54. package/src/tools/angular/compilation/compiler-options.d.ts +24 -0
  55. package/src/tools/angular/compilation/compiler-options.js +135 -0
  56. package/src/tools/angular/compilation/compiler-options.js.map +1 -0
  57. package/src/tools/angular/compilation/index.d.ts +1 -1
  58. package/src/tools/angular/compilation/index.js +1 -3
  59. package/src/tools/angular/compilation/index.js.map +1 -1
  60. package/src/tools/angular/compilation/jit-compilation.d.ts +5 -5
  61. package/src/tools/angular/compilation/jit-compilation.js +8 -15
  62. package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
  63. package/src/tools/angular/compilation/parallel-compilation.d.ts +2 -7
  64. package/src/tools/angular/compilation/parallel-compilation.js +39 -41
  65. package/src/tools/angular/compilation/parallel-compilation.js.map +1 -1
  66. package/src/tools/angular/compilation/parallel-worker.d.ts +2 -2
  67. package/src/tools/angular/compilation/parallel-worker.js +79 -63
  68. package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
  69. package/src/tools/angular/compilation/typescript-compilation.d.ts +24 -0
  70. package/src/tools/angular/compilation/typescript-compilation.js +107 -0
  71. package/src/tools/angular/compilation/typescript-compilation.js.map +1 -0
  72. package/src/tools/angular/linker/oxc-linker.d.ts +13 -17
  73. package/src/tools/angular/linker/oxc-linker.js +27 -89
  74. package/src/tools/angular/linker/oxc-linker.js.map +1 -1
  75. package/src/tools/esbuild/angular/compilation-state.d.ts +23 -3
  76. package/src/tools/esbuild/angular/compilation-state.js +51 -13
  77. package/src/tools/esbuild/angular/compilation-state.js.map +1 -1
  78. package/src/tools/esbuild/angular/compiler-plugin.js +36 -101
  79. package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -1
  80. package/src/tools/esbuild/angular/component-stylesheets.d.ts +3 -3
  81. package/src/tools/esbuild/angular/component-stylesheets.js +42 -15
  82. package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -1
  83. package/src/tools/esbuild/application-code-bundle.js +5 -9
  84. package/src/tools/esbuild/application-code-bundle.js.map +1 -1
  85. package/src/tools/esbuild/bundler-context.d.ts +4 -4
  86. package/src/tools/esbuild/bundler-context.js +93 -27
  87. package/src/tools/esbuild/bundler-context.js.map +1 -1
  88. package/src/tools/esbuild/bundler-execution-result.d.ts +1 -0
  89. package/src/tools/esbuild/bundler-execution-result.js +2 -2
  90. package/src/tools/esbuild/bundler-execution-result.js.map +1 -1
  91. package/src/tools/esbuild/cache.d.ts +10 -0
  92. package/src/tools/esbuild/cache.js +18 -0
  93. package/src/tools/esbuild/cache.js.map +1 -1
  94. package/src/tools/esbuild/i18n-inliner-worker.d.ts +82 -37
  95. package/src/tools/esbuild/i18n-inliner-worker.js +134 -97
  96. package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -1
  97. package/src/tools/esbuild/i18n-inliner.d.ts +42 -11
  98. package/src/tools/esbuild/i18n-inliner.js +335 -121
  99. package/src/tools/esbuild/i18n-inliner.js.map +1 -1
  100. package/src/tools/esbuild/i18n-locale-plugin.d.ts +32 -0
  101. package/src/tools/esbuild/i18n-locale-plugin.js +112 -103
  102. package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -1
  103. package/src/tools/esbuild/i18n-translation-encoder.d.ts +21 -0
  104. package/src/tools/esbuild/i18n-translation-encoder.js +92 -0
  105. package/src/tools/esbuild/i18n-translation-encoder.js.map +1 -0
  106. package/src/tools/esbuild/i18n-translation-reader.d.ts +41 -0
  107. package/src/tools/esbuild/i18n-translation-reader.js +164 -0
  108. package/src/tools/esbuild/i18n-translation-reader.js.map +1 -0
  109. package/src/tools/esbuild/javascript-transformer-worker.js +41 -47
  110. package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
  111. package/src/tools/esbuild/javascript-transformer.js +53 -1
  112. package/src/tools/esbuild/javascript-transformer.js.map +1 -1
  113. package/src/tools/esbuild/load-result-cache.d.ts +1 -0
  114. package/src/tools/esbuild/load-result-cache.js +24 -11
  115. package/src/tools/esbuild/load-result-cache.js.map +1 -1
  116. package/src/tools/esbuild/sqlite-cache-store.d.ts +8 -0
  117. package/src/tools/esbuild/sqlite-cache-store.js +19 -7
  118. package/src/tools/esbuild/sqlite-cache-store.js.map +1 -1
  119. package/src/tools/esbuild/stylesheets/sass-language.js +19 -14
  120. package/src/tools/esbuild/stylesheets/sass-language.js.map +1 -1
  121. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.d.ts +1 -1
  122. package/src/tools/esbuild/utils.d.ts +1 -1
  123. package/src/tools/esbuild/utils.js.map +1 -1
  124. package/src/tools/oxc/oxc-transform.d.ts +3 -0
  125. package/src/tools/oxc/oxc-transform.js +103 -124
  126. package/src/tools/oxc/oxc-transform.js.map +1 -1
  127. package/src/tools/oxc/traversal.d.ts +32 -0
  128. package/src/tools/oxc/traversal.js +299 -0
  129. package/src/tools/oxc/traversal.js.map +1 -0
  130. package/src/tools/sass/rebasing-importer.d.ts +8 -14
  131. package/src/tools/sass/rebasing-importer.js +18 -24
  132. package/src/tools/sass/rebasing-importer.js.map +1 -1
  133. package/src/tools/sass/sass-service.d.ts +11 -38
  134. package/src/tools/sass/sass-service.js +124 -187
  135. package/src/tools/sass/sass-service.js.map +1 -1
  136. package/src/utils/environment-options.d.ts +12 -0
  137. package/src/utils/environment-options.js +20 -12
  138. package/src/utils/environment-options.js.map +1 -1
  139. package/src/utils/i18n-options.d.ts +2 -1
  140. package/src/utils/i18n-options.js.map +1 -1
  141. package/src/utils/normalize-cache.d.ts +11 -1
  142. package/src/utils/normalize-cache.js +6 -3
  143. package/src/utils/normalize-cache.js.map +1 -1
  144. package/src/utils/purge-cache.js +24 -13
  145. package/src/utils/purge-cache.js.map +1 -1
  146. package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.d.ts +1 -1
  147. package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +12 -9
  148. package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js.map +1 -1
  149. package/src/utils/server-rendering/esm-in-memory-loader/utils.d.ts +8 -0
  150. package/src/utils/server-rendering/esm-in-memory-loader/utils.js +30 -0
  151. package/src/utils/server-rendering/esm-in-memory-loader/utils.js.map +1 -1
  152. package/src/utils/server-rendering/prerender.d.ts +2 -1
  153. package/src/utils/server-rendering/prerender.js +83 -30
  154. package/src/utils/server-rendering/prerender.js.map +1 -1
  155. package/src/utils/server-rendering/render-worker.d.ts +10 -5
  156. package/src/utils/server-rendering/render-worker.js +31 -7
  157. package/src/utils/server-rendering/render-worker.js.map +1 -1
  158. package/src/utils/test-files.d.ts +2 -2
  159. package/src/utils/test-files.js +3 -3
  160. package/src/utils/test-files.js.map +1 -1
  161. package/src/tools/angular/compilation/noop-compilation.d.ts +0 -15
  162. package/src/tools/angular/compilation/noop-compilation.js +0 -27
  163. package/src/tools/angular/compilation/noop-compilation.js.map +0 -1
  164. package/src/tools/sass/worker.d.ts +0 -63
  165. package/src/tools/sass/worker.js +0 -202
  166. package/src/tools/sass/worker.js.map +0 -1
  167. /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.d.ts +0 -0
  168. /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js +0 -0
  169. /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js.map +0 -0
@@ -18,23 +18,34 @@ async function purgeStaleBuildCache(context) {
18
18
  return;
19
19
  }
20
20
  const metadata = await context.getProjectMetadata(projectName);
21
- const { basePath, path, enabled } = (0, normalize_cache_1.normalizeCacheOptions)(metadata, context.workspaceRoot);
21
+ const { basePath, path, localBasePath, localPath, enabled } = (0, normalize_cache_1.normalizeCacheOptions)(metadata, context.workspaceRoot);
22
22
  if (!enabled) {
23
23
  return;
24
24
  }
25
- let baseEntries;
26
- try {
27
- baseEntries = await (0, promises_1.readdir)(basePath, { withFileTypes: true });
25
+ const basePaths = new Set([basePath]);
26
+ if (localBasePath) {
27
+ basePaths.add(localBasePath);
28
28
  }
29
- catch {
30
- // No purging possible if base path does not exist or cannot otherwise be accessed
31
- return;
29
+ for (const base of basePaths) {
30
+ let baseEntries;
31
+ try {
32
+ baseEntries = await (0, promises_1.readdir)(base, { withFileTypes: true });
33
+ }
34
+ catch {
35
+ // No purging possible if base path does not exist or cannot otherwise be accessed
36
+ continue;
37
+ }
38
+ const currentPath = base === localBasePath ? localPath : path;
39
+ if (!currentPath) {
40
+ // Avoid purging if current path is unavailable to prevent deleting the active cache
41
+ continue;
42
+ }
43
+ const entriesToDelete = baseEntries
44
+ .filter((d) => d.isDirectory())
45
+ .map((d) => (0, node_path_1.join)(base, d.name))
46
+ .filter((cachePath) => cachePath !== currentPath)
47
+ .map((stalePath) => (0, promises_1.rm)(stalePath, { force: true, recursive: true, maxRetries: 3 }));
48
+ await Promise.allSettled(entriesToDelete);
32
49
  }
33
- const entriesToDelete = baseEntries
34
- .filter((d) => d.isDirectory())
35
- .map((d) => (0, node_path_1.join)(basePath, d.name))
36
- .filter((cachePath) => cachePath !== path)
37
- .map((stalePath) => (0, promises_1.rm)(stalePath, { force: true, recursive: true, maxRetries: 3 }));
38
- await Promise.allSettled(entriesToDelete);
39
50
  }
40
51
  //# sourceMappingURL=purge-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"purge-cache.js","sourceRoot":"","sources":["purge-cache.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAQH,oDA4BC;AAjCD,+CAA+C;AAC/C,yCAAiC;AACjC,uDAA0D;AAE1D,iFAAiF;AAC1E,KAAK,UAAU,oBAAoB,CAAC,OAAuB;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC/D,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,uCAAqB,EAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE3F,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,WAAW,CAAC;IAChB,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,IAAA,kBAAO,EAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,kFAAkF;QAClF,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAG,WAAW;SAChC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gBAAI,EAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;SAClC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC;SACzC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,aAAE,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtF,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"purge-cache.js","sourceRoot":"","sources":["purge-cache.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAQH,oDA4CC;AAjDD,+CAA+C;AAC/C,yCAAiC;AACjC,uDAA0D;AAE1D,iFAAiF;AAC1E,KAAK,UAAU,oBAAoB,CAAC,OAAuB;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC/D,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAA,uCAAqB,EACjF,QAAQ,EACR,OAAO,CAAC,aAAa,CACtB,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,IAAI,aAAa,EAAE,CAAC;QAClB,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,IAAA,kBAAO,EAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,kFAAkF;YAClF,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,oFAAoF;YACpF,SAAS;QACX,CAAC;QAED,MAAM,eAAe,GAAG,WAAW;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;aAC9B,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,WAAW,CAAC;aAChD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,aAAE,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEtF,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  export interface ESMInMemoryFileLoaderWorkerData {
9
- outputFiles: Record<string, string>;
9
+ outputFiles: Record<string, string | Uint8Array>;
10
10
  workspaceRoot: string;
11
11
  }
12
12
  export declare function initialize(data: ESMInMemoryFileLoaderWorkerData): void;
@@ -22,6 +22,7 @@ const node_url_1 = require("node:url");
22
22
  * @note For some unknown reason, setting `globalThis.ngServerMode = true` does not work when using ESM loader hooks.
23
23
  */
24
24
  const NG_SERVER_MODE_INIT_BYTES = new TextEncoder().encode('var ngServerMode=true;');
25
+ const UTF8_DECODER = new TextDecoder();
25
26
  /**
26
27
  * Node.js ESM loader to redirect imports to in memory files.
27
28
  * @see: https://nodejs.org/api/esm.html#loaders for more information about loaders.
@@ -69,7 +70,7 @@ function resolve(specifier, context, nextResolve) {
69
70
  specifierUrl = new URL(specifier, context.parentURL);
70
71
  }
71
72
  catch { }
72
- if (specifierUrl?.pathname &&
73
+ if (specifierUrl?.href.startsWith(memoryVirtualRootUrl) &&
73
74
  Object.hasOwn(outputFiles, specifierUrl.href.slice(memoryVirtualRootUrl.length))) {
74
75
  return {
75
76
  format: 'module',
@@ -92,11 +93,12 @@ async function load(url, context, nextLoad) {
92
93
  const { format } = context;
93
94
  // Load the file from memory if the URL is based in the virtual root
94
95
  if (url.startsWith(memoryVirtualRootUrl)) {
95
- const source = outputFiles[url.slice(memoryVirtualRootUrl.length)];
96
- (0, node_assert_1.default)(source !== undefined, 'Resolved in-memory ESM file should always exist: ' + url);
96
+ const rawSource = outputFiles[url.slice(memoryVirtualRootUrl.length)];
97
+ (0, node_assert_1.default)(rawSource !== undefined, 'Resolved in-memory ESM file should always exist: ' + url);
98
+ const source = typeof rawSource === 'string' ? rawSource : UTF8_DECODER.decode(rawSource);
97
99
  // In-memory files have already been transformer during bundling and can be returned directly
98
100
  return {
99
- format,
101
+ format: format ?? 'module',
100
102
  shortCircuit: true,
101
103
  source,
102
104
  };
@@ -104,12 +106,13 @@ async function load(url, context, nextLoad) {
104
106
  // Only module files potentially require transformation. Angular libraries that would
105
107
  // need linking are ESM only.
106
108
  if (format === 'module' && isFileProtocol(url)) {
107
- const filePath = (0, node_url_1.fileURLToPath)(url);
108
- let source = await (0, promises_1.readFile)(filePath);
109
- if (filePath.includes('@angular/')) {
110
- // Prepend 'var ngServerMode=true;' to the source.
111
- source = Buffer.concat([NG_SERVER_MODE_INIT_BYTES, source]);
109
+ // Check url instead of filePath so the check is robust across Windows and POSIX path separators.
110
+ if (!url.includes('/@angular/')) {
111
+ return nextLoad(url, context);
112
112
  }
113
+ const filePath = (0, node_url_1.fileURLToPath)(url);
114
+ const fileBytes = await (0, promises_1.readFile)(filePath);
115
+ const source = Buffer.concat([NG_SERVER_MODE_INIT_BYTES, fileBytes]);
113
116
  return {
114
117
  format,
115
118
  shortCircuit: true,
@@ -1 +1 @@
1
- {"version":3,"file":"loader-hooks.js","sourceRoot":"","sources":["loader-hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader-hooks.js","sourceRoot":"","sources":["loader-hooks.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AA6BH,gCAUC;AAED,0BA+DC;AAED,oBAuCC;AA/ID,8DAAiC;AACjC,6CAAyC;AACzC,+CAA4C;AAC5C,yCAAiC;AACjC,uCAAwD;AAExD;;GAEG;AACH,MAAM,yBAAyB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACrF,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;AAEvC;;;GAGG;AAEH,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAOtC,IAAI,oBAA4B,CAAC;AACjC,IAAI,WAAgD,CAAC;AAErD,SAAgB,UAAU,CAAC,IAAqC;IAC9D,wFAAwF;IACxF,6CAA6C;IAC7C,0FAA0F;IAC1F,gFAAgF;IAChF,gDAAgD;IAChD,oBAAoB,GAAG,IAAA,wBAAa,EAClC,IAAA,gBAAI,EAAC,IAAI,CAAC,aAAa,EAAE,2BAA2B,IAAA,wBAAU,GAAE,GAAG,CAAC,CACrE,CAAC,IAAI,CAAC;IACP,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACjC,CAAC;AAED,SAAgB,OAAO,CACrB,SAAiB,EACjB,OAA0C,EAC1C,WAAqB;IAErB,yEAAyE;IACzE,IAAI,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC5C,IAAI,SAAS,CAAC;QACd,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,qBAAM,CAAC,IAAI,CAAC,0DAA0D,GAAG,SAAS,CAAC,CAAC;QACtF,CAAC;QAED,4DAA4D;QAC5D,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,IAAI;SACrE,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzD,OAAO,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,+CAA+C;IAC/C,MAAM,UAAU,GACd,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG;QACpB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAE3E,uFAAuF;IACvF,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,YAAY,CAAC;QACjB,IAAI,CAAC;YACH,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,IACE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAChF,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,YAAY,EAAE,IAAI;gBAClB,GAAG,EAAE,YAAY,CAAC,IAAI;aACvB,CAAC;QACJ,CAAC;QAED,qBAAM,CAAC,IAAI,CACT,qDAAqD,OAAO,CAAC,SAAS,UAAU,SAAS,GAAG,CAC7F,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,kEAAkE;IAClE,0DAA0D;IAC1D,qEAAqE;IACrE,OAAO,WAAW,CAAC,SAAS,EAAE;QAC5B,GAAG,OAAO;QACV,SAAS,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,IAAI;KAC1D,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,OAAmC,EAAE,QAAkB;IAC7F,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,oEAAoE;IACpE,IAAI,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,IAAA,qBAAM,EAAC,SAAS,KAAK,SAAS,EAAE,mDAAmD,GAAG,GAAG,CAAC,CAAC;QAE3F,MAAM,MAAM,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE1F,6FAA6F;QAC7F,OAAO;YACL,MAAM,EAAE,MAAM,IAAI,QAAQ;YAC1B,YAAY,EAAE,IAAI;YAClB,MAAM;SACP,CAAC;IACJ,CAAC;IAED,qFAAqF;IACrF,6BAA6B;IAC7B,IAAI,MAAM,KAAK,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,iGAAiG;QACjG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC,CAAC;QAErE,OAAO;YACL,MAAM;YACN,YAAY,EAAE,IAAI;YAClB,MAAM;SACP,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC"}
@@ -6,3 +6,11 @@
6
6
  * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  export declare const IMPORT_EXEC_ARGV: string;
9
+ /**
10
+ * Creates a shared zero-copy `Uint8Array` backed by a `SharedArrayBuffer` for the given file content.
11
+ */
12
+ export declare function createSharedFile(content: string | Uint8Array): Uint8Array;
13
+ /**
14
+ * Creates shared zero-copy `Uint8Array` views backed by `SharedArrayBuffer` for all output files.
15
+ */
16
+ export declare function createSharedServerFiles(outputFiles: Record<string, string | Uint8Array>): Record<string, Uint8Array>;
@@ -8,7 +8,37 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.IMPORT_EXEC_ARGV = void 0;
11
+ exports.createSharedFile = createSharedFile;
12
+ exports.createSharedServerFiles = createSharedServerFiles;
11
13
  const node_path_1 = require("node:path");
12
14
  const node_url_1 = require("node:url");
13
15
  exports.IMPORT_EXEC_ARGV = '--import=' + (0, node_url_1.pathToFileURL)((0, node_path_1.join)(__dirname, 'register-hooks.js')).href;
16
+ /**
17
+ * Creates a shared zero-copy `Uint8Array` backed by a `SharedArrayBuffer` for the given file content.
18
+ */
19
+ function createSharedFile(content) {
20
+ if (typeof content === 'string') {
21
+ const byteLength = Buffer.byteLength(content, 'utf-8');
22
+ const sab = new SharedArrayBuffer(byteLength);
23
+ Buffer.from(sab).write(content, 'utf-8');
24
+ return new Uint8Array(sab);
25
+ }
26
+ if (content.buffer instanceof SharedArrayBuffer) {
27
+ return content;
28
+ }
29
+ const sab = new SharedArrayBuffer(content.byteLength);
30
+ const view = new Uint8Array(sab);
31
+ view.set(content);
32
+ return view;
33
+ }
34
+ /**
35
+ * Creates shared zero-copy `Uint8Array` views backed by `SharedArrayBuffer` for all output files.
36
+ */
37
+ function createSharedServerFiles(outputFiles) {
38
+ const sharedFiles = {};
39
+ for (const [key, value] of Object.entries(outputFiles)) {
40
+ sharedFiles[key] = createSharedFile(value);
41
+ }
42
+ return sharedFiles;
43
+ }
14
44
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,yCAAiC;AACjC,uCAAyC;AAE5B,QAAA,gBAAgB,GAC3B,WAAW,GAAG,IAAA,wBAAa,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAWH,4CAkBC;AAKD,0DAUC;AA1CD,yCAAiC;AACjC,uCAAyC;AAE5B,QAAA,gBAAgB,GAC3B,WAAW,GAAG,IAAA,wBAAa,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;AAEzE;;GAEG;AACH,SAAgB,gBAAgB,CAAC,OAA4B;IAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzC,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,YAAY,iBAAiB,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAElB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,WAAgD;IAEhD,MAAM,WAAW,GAA+B,EAAE,CAAC;IAEnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,WAAW,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { NormalizedApplicationBuildOptions } from '../../builders/application/options';
9
9
  import { OutputMode } from '../../builders/application/schema';
10
- import { BuildOutputAsset } from '../../tools/esbuild/bundler-execution-result';
10
+ import { BuildOutputAsset, PrerenderedRoutesRecord } from '../../tools/esbuild/bundler-execution-result';
11
11
  import { BuildOutputFile } from '../../tools/esbuild/bundler-files';
12
12
  import { SerializableRouteTreeNode } from './models';
13
13
  type PrerenderOptions = NormalizedApplicationBuildOptions['prerenderOptions'];
@@ -34,6 +34,7 @@ export declare function prerenderPages(workspaceRoot: string, baseHref: string,
34
34
  output: PrerenderOutput;
35
35
  warnings: string[];
36
36
  errors: string[];
37
+ prerenderedRoutes: PrerenderedRoutesRecord;
37
38
  serializableRouteTreeNode: SerializableRouteTreeNode;
38
39
  }>;
39
40
  export {};
@@ -21,7 +21,7 @@ const manifest_1 = require("./manifest");
21
21
  const models_1 = require("./models");
22
22
  const utils_2 = require("./utils");
23
23
  async function prerenderPages(workspaceRoot, baseHref, appShellOptions, prerenderOptions, outputFiles, assets, outputMode, sourcemap = false, maxThreads = 1) {
24
- const outputFilesForWorker = {};
24
+ const rawOutputFiles = {};
25
25
  const serverBundlesSourceMaps = new Map();
26
26
  const warnings = [];
27
27
  const errors = [];
@@ -34,21 +34,22 @@ async function prerenderPages(workspaceRoot, baseHref, appShellOptions, prerende
34
34
  serverBundlesSourceMaps.set(path.slice(0, -4), text);
35
35
  }
36
36
  else {
37
- outputFilesForWorker[path] = text;
37
+ rawOutputFiles[path] = text;
38
38
  }
39
39
  }
40
40
  // Inline sourcemap into JS file. This is needed to make Node.js resolve sourcemaps
41
41
  // when using `--enable-source-maps` when using in memory files.
42
42
  for (const [filePath, map] of serverBundlesSourceMaps) {
43
- const jsContent = outputFilesForWorker[filePath];
43
+ const jsContent = rawOutputFiles[filePath];
44
44
  if (jsContent) {
45
- outputFilesForWorker[filePath] =
45
+ rawOutputFiles[filePath] =
46
46
  jsContent +
47
- `\n//# sourceMappingURL=` +
47
+ '\n//# sourceMappingURL=' +
48
48
  `data:application/json;base64,${Buffer.from(map).toString('base64')}`;
49
49
  }
50
50
  }
51
51
  serverBundlesSourceMaps.clear();
52
+ const outputFilesForWorker = (0, utils_1.createSharedServerFiles)(rawOutputFiles);
52
53
  const assetsReversed = {};
53
54
  for (const { source, destination } of assets) {
54
55
  // Assets are not stored with baseHref when using i18n,
@@ -94,6 +95,7 @@ async function prerenderPages(workspaceRoot, baseHref, appShellOptions, prerende
94
95
  errors,
95
96
  warnings,
96
97
  output: {},
98
+ prerenderedRoutes: {},
97
99
  serializableRouteTreeNode,
98
100
  };
99
101
  }
@@ -101,28 +103,67 @@ async function prerenderPages(workspaceRoot, baseHref, appShellOptions, prerende
101
103
  // We could re-generate it from the start, but that would require a number of options to be passed down.
102
104
  const manifest = outputFilesForWorker[manifest_1.SERVER_APP_MANIFEST_FILENAME];
103
105
  if (manifest) {
104
- outputFilesForWorker[manifest_1.SERVER_APP_MANIFEST_FILENAME] = manifest.replace('routes: undefined,', `routes: ${JSON.stringify(serializableRouteTreeNodeForPrerender, undefined, 2)},`);
106
+ const manifestText = new TextDecoder().decode(manifest);
107
+ outputFilesForWorker[manifest_1.SERVER_APP_MANIFEST_FILENAME] = (0, utils_1.createSharedFile)(manifestText.replace('routes: undefined,', `routes: ${JSON.stringify(serializableRouteTreeNodeForPrerender, undefined, 2)},`));
105
108
  }
106
109
  // Render routes
107
110
  const { errors: renderingErrors, output } = await renderPages(baseHref, sourcemap, serializableRouteTreeNodeForPrerender, maxThreads, workspaceRoot, outputFilesForWorker, assetsReversed, outputMode, appShellRoute ?? appShellOptions?.route);
108
111
  errors.push(...renderingErrors);
112
+ const prerenderedRoutes = {};
113
+ const baseHrefPathnameWithLeadingSlash = new URL(baseHref, 'http://localhost').pathname;
114
+ for (const metadata of serializableRouteTreeNodeForPrerender) {
115
+ const outPath = getRouteOutPath(metadata.route, baseHrefPathnameWithLeadingSlash);
116
+ if (output[outPath]) {
117
+ prerenderedRoutes[metadata.route] = { headers: metadata.headers };
118
+ }
119
+ }
109
120
  return {
110
121
  errors,
111
122
  warnings,
112
123
  output,
124
+ prerenderedRoutes,
113
125
  serializableRouteTreeNode,
114
126
  };
115
127
  }
116
128
  async function renderPages(baseHref, sourcemap, serializableRouteTreeNode, maxThreads, workspaceRoot, outputFilesForWorker, assetFilesForWorker, outputMode, appShellRoute) {
117
129
  const output = {};
118
130
  const errors = [];
131
+ const baseHrefPathnameWithLeadingSlash = new URL(baseHref, 'http://localhost').pathname;
132
+ const appShellRouteWithoutBaseHref = appShellRoute
133
+ ? (0, url_1.addLeadingSlash)(getRouteWithoutBaseHref(appShellRoute, baseHrefPathnameWithLeadingSlash))
134
+ : undefined;
135
+ const routesToRender = [];
136
+ for (const { route, redirectTo } of serializableRouteTreeNode) {
137
+ // Remove the base href from the file output path.
138
+ const routeWithoutBaseHref = getRouteWithoutBaseHref(route, baseHrefPathnameWithLeadingSlash);
139
+ const outPath = getRouteOutPath(route, baseHrefPathnameWithLeadingSlash);
140
+ if (typeof redirectTo === 'string') {
141
+ output[outPath] = { content: (0, utils_2.generateRedirectStaticPage)(redirectTo), appShellRoute: false };
142
+ continue;
143
+ }
144
+ routesToRender.push({
145
+ route,
146
+ outPath,
147
+ isAppShell: appShellRouteWithoutBaseHref === routeWithoutBaseHref,
148
+ });
149
+ }
150
+ if (routesToRender.length === 0) {
151
+ return {
152
+ errors,
153
+ output,
154
+ };
155
+ }
156
+ // Batch routes to reduce IPC overhead while ensuring enough batches exist for load balancing across worker threads.
157
+ const batchSize = Math.max(1, Math.min(50, Math.ceil(routesToRender.length / (maxThreads * 4))));
158
+ const numBatches = Math.ceil(routesToRender.length / batchSize);
159
+ const effectiveMaxThreads = Math.min(numBatches, maxThreads);
119
160
  const workerExecArgv = [utils_1.IMPORT_EXEC_ARGV];
120
161
  if (sourcemap) {
121
162
  workerExecArgv.push('--enable-source-maps');
122
163
  }
123
164
  const renderWorker = new worker_pool_1.WorkerPool({
124
165
  filename: require.resolve('./render-worker'),
125
- maxThreads: Math.min(serializableRouteTreeNode.length, maxThreads),
166
+ maxThreads: effectiveMaxThreads,
126
167
  workerData: {
127
168
  workspaceRoot,
128
169
  outputFiles: outputFilesForWorker,
@@ -137,35 +178,38 @@ async function renderPages(baseHref, sourcemap, serializableRouteTreeNode, maxTh
137
178
  },
138
179
  });
139
180
  try {
181
+ const routeOutPathMap = new Map();
182
+ for (const item of routesToRender) {
183
+ routeOutPathMap.set(item.route, item);
184
+ }
140
185
  const renderingPromises = [];
141
- const appShellRouteWithLeadingSlash = appShellRoute && (0, url_1.addLeadingSlash)(appShellRoute);
142
- const baseHrefPathnameWithLeadingSlash = new URL(baseHref, 'http://localhost').pathname;
143
- for (const { route, redirectTo } of serializableRouteTreeNode) {
144
- // Remove the base href from the file output path.
145
- const routeWithoutBaseHref = (0, url_1.addTrailingSlash)(route).startsWith(baseHrefPathnameWithLeadingSlash)
146
- ? (0, url_1.addLeadingSlash)(route.slice(baseHrefPathnameWithLeadingSlash.length))
147
- : route;
148
- const outPath = (0, url_1.stripLeadingSlash)(node_path_1.posix.join(routeWithoutBaseHref, 'index.html'));
149
- if (typeof redirectTo === 'string') {
150
- output[outPath] = { content: (0, utils_2.generateRedirectStaticPage)(redirectTo), appShellRoute: false };
151
- continue;
152
- }
153
- const render = renderWorker.run({ url: route });
154
- const renderResult = render
155
- .then((content) => {
156
- if (content !== null) {
157
- output[outPath] = {
158
- content,
159
- appShellRoute: appShellRouteWithLeadingSlash === routeWithoutBaseHref,
160
- };
186
+ for (let i = 0; i < routesToRender.length; i += batchSize) {
187
+ const batch = routesToRender.slice(i, i + batchSize);
188
+ const urls = batch.map((item) => item.route);
189
+ const renderBatchPromise = renderWorker.run(urls);
190
+ const batchResultPromise = renderBatchPromise
191
+ .then((results) => {
192
+ for (const result of results) {
193
+ if ('error' in result) {
194
+ errors.push(`An error occurred while prerendering route '${result.url}'.\n\n${result.error}`);
195
+ continue;
196
+ }
197
+ const routeInfo = routeOutPathMap.get(result.url);
198
+ if (routeInfo) {
199
+ output[routeInfo.outPath] = {
200
+ content: result.content,
201
+ appShellRoute: routeInfo.isAppShell,
202
+ };
203
+ }
161
204
  }
162
205
  })
163
206
  .catch((err) => {
164
207
  (0, error_1.assertIsError)(err);
165
- errors.push(`An error occurred while prerendering route '${route}'.\n\n${err.stack ?? err.message ?? err.code ?? err}`);
166
- void renderWorker.destroy();
208
+ for (const url of urls) {
209
+ errors.push(`An error occurred while prerendering route '${url}'.\n\n${err.stack ?? err.message ?? err.code ?? err}`);
210
+ }
167
211
  });
168
- renderingPromises.push(renderResult);
212
+ renderingPromises.push(batchResultPromise);
169
213
  }
170
214
  await Promise.all(renderingPromises);
171
215
  }
@@ -247,4 +291,13 @@ async function getAllRoutes(workspaceRoot, baseHref, outputFilesForWorker, asset
247
291
  void renderWorker.destroy();
248
292
  }
249
293
  }
294
+ function getRouteWithoutBaseHref(route, baseHrefPathname) {
295
+ return (0, url_1.addTrailingSlash)(route).startsWith(baseHrefPathname)
296
+ ? (0, url_1.addLeadingSlash)(route.slice(baseHrefPathname.length))
297
+ : route;
298
+ }
299
+ function getRouteOutPath(route, baseHrefPathname) {
300
+ const routeWithoutBaseHref = getRouteWithoutBaseHref(route, baseHrefPathname);
301
+ return (0, url_1.stripLeadingSlash)(node_path_1.posix.join(routeWithoutBaseHref, 'index.html'));
302
+ }
250
303
  //# sourceMappingURL=prerender.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prerender.js","sourceRoot":"","sources":["prerender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prerender.js","sourceRoot":"","sources":["prerender.ts"],"names":[],"mappings":"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"}
@@ -12,12 +12,17 @@ export interface RenderWorkerData extends ESMInMemoryFileLoaderWorkerData {
12
12
  outputMode: OutputMode | undefined;
13
13
  hasSsrEntry: boolean;
14
14
  }
15
- export interface RenderOptions {
15
+ export type RenderResultItem = {
16
16
  url: string;
17
- }
17
+ content: string;
18
+ } | {
19
+ url: string;
20
+ error: string;
21
+ };
22
+ export type RenderResult = RenderResultItem[];
18
23
  /**
19
- * Renders each route in routes and writes them to <outputPath>/<route>/index.html.
24
+ * Renders routes in batch or individual URL.
20
25
  */
21
- declare function renderPage({ url }: RenderOptions): Promise<string | null>;
22
- declare const _default: Promise<typeof renderPage>;
26
+ declare function renderPages(urls: string[]): Promise<RenderResult>;
27
+ declare const _default: Promise<typeof renderPages>;
23
28
  export default _default;
@@ -41,6 +41,7 @@ var __importStar = (this && this.__importStar) || (function () {
41
41
  })();
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
43
  const node_worker_threads_1 = require("node:worker_threads");
44
+ const error_1 = require("../error");
44
45
  const fetch_patch_1 = require("./fetch-patch");
45
46
  const launch_server_1 = require("./launch-server");
46
47
  const load_esm_from_memory_1 = require("./load-esm-from-memory");
@@ -51,13 +52,9 @@ const utils_1 = require("./utils");
51
52
  const { outputMode, hasSsrEntry } = node_worker_threads_1.workerData;
52
53
  let serverURL = launch_server_1.DEFAULT_URL;
53
54
  /**
54
- * Renders each route in routes and writes them to <outputPath>/<route>/index.html.
55
+ * Renders a single route URL.
55
56
  */
56
- async function renderPage({ url }) {
57
- const { ɵgetOrCreateAngularServerApp: getOrCreateAngularServerApp } = await (0, load_esm_from_memory_1.loadEsmModuleFromMemory)('./main.server.mjs');
58
- const angularServerApp = getOrCreateAngularServerApp({
59
- allowStaticRouteRender: true,
60
- });
57
+ async function renderPage(url, angularServerApp) {
61
58
  const response = await angularServerApp.handle(new Request(new URL(url, serverURL), { signal: AbortSignal.timeout(30_000) }));
62
59
  if (!response) {
63
60
  return null;
@@ -65,6 +62,33 @@ async function renderPage({ url }) {
65
62
  const location = response.headers.get('Location');
66
63
  return location ? (0, utils_1.generateRedirectStaticPage)(location) : response.text();
67
64
  }
65
+ /**
66
+ * Renders routes in batch or individual URL.
67
+ */
68
+ async function renderPages(urls) {
69
+ const { ɵgetOrCreateAngularServerApp: getOrCreateAngularServerApp } = await (0, load_esm_from_memory_1.loadEsmModuleFromMemory)('./main.server.mjs');
70
+ const angularServerApp = getOrCreateAngularServerApp({
71
+ allowStaticRouteRender: true,
72
+ });
73
+ const results = [];
74
+ for (const currentUrl of urls) {
75
+ try {
76
+ const content = await renderPage(currentUrl, angularServerApp);
77
+ if (content === null) {
78
+ throw new Error('The content returned was empty.');
79
+ }
80
+ results.push({ url: currentUrl, content });
81
+ }
82
+ catch (err) {
83
+ (0, error_1.assertIsError)(err);
84
+ results.push({
85
+ url: currentUrl,
86
+ error: err.stack ?? err.message ?? err.code ?? `${err}`,
87
+ });
88
+ }
89
+ }
90
+ return results;
91
+ }
68
92
  async function initialize() {
69
93
  // Load the compiler because `@angular/ssr/node` depends on `@angular/` packages,
70
94
  // which must be processed by the runtime linker, even if they are not used.
@@ -73,7 +97,7 @@ async function initialize() {
73
97
  serverURL = await (0, launch_server_1.launchServer)();
74
98
  }
75
99
  (0, fetch_patch_1.patchFetchToLoadInMemoryAssets)(serverURL);
76
- return renderPage;
100
+ return renderPages;
77
101
  }
78
102
  exports.default = initialize();
79
103
  //# sourceMappingURL=render-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-worker.js","sourceRoot":"","sources":["render-worker.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6DAAiD;AAGjD,+CAA+D;AAC/D,mDAA4D;AAC5D,iEAAiE;AACjE,mCAAqD;AAYrD;;GAEG;AACH,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,gCAGnC,CAAC;AAEF,IAAI,SAAS,GAAG,2BAAW,CAAC;AAE5B;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,EAAE,GAAG,EAAiB;IAC9C,MAAM,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,GACjE,MAAM,IAAA,8CAAuB,EAAC,mBAAmB,CAAC,CAAC;IAErD,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;QACnD,sBAAsB,EAAE,IAAI;KAC7B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAC5C,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAC9E,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAElD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,kCAA0B,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,iFAAiF;IACjF,4EAA4E;IAC5E,wDAAa,mBAAmB,GAAC,CAAC;IAElC,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;QAC5C,SAAS,GAAG,MAAM,IAAA,4BAAY,GAAE,CAAC;IACnC,CAAC;IAED,IAAA,4CAA8B,EAAC,SAAS,CAAC,CAAC;IAE1C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,kBAAe,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"render-worker.js","sourceRoot":"","sources":["render-worker.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6DAAiD;AAEjD,oCAAyC;AAEzC,+CAA+D;AAC/D,mDAA4D;AAC5D,iEAAiE;AACjE,mCAAqD;AAoBrD;;GAEG;AACH,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,gCAGnC,CAAC;AAEF,IAAI,SAAS,GAAG,2BAAW,CAAC;AAE5B;;GAEG;AACH,KAAK,UAAU,UAAU,CACvB,GAAW,EACX,gBAA4E;IAE5E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAC5C,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAC9E,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAElD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,kCAA0B,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,IAAc;IACvC,MAAM,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,GACjE,MAAM,IAAA,8CAAuB,EAAC,mBAAmB,CAAC,CAAC;IAErD,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;QACnD,sBAAsB,EAAE,IAAI;KAC7B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,UAAU,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAE/D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,qBAAa,EAAC,GAAG,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,EAAE;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,iFAAiF;IACjF,4EAA4E;IAC5E,wDAAa,mBAAmB,GAAC,CAAC;IAElC,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;QAC5C,SAAS,GAAG,MAAM,IAAA,4BAAY,GAAE,CAAC;IACnC,CAAC;IAED,IAAA,4CAA8B,EAAC,SAAS,CAAC,CAAC;IAE1C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,kBAAe,UAAU,EAAE,CAAC"}
@@ -11,7 +11,7 @@ import { ResultFile } from '../builders/application/results';
11
11
  * This function handles both in-memory and on-disk files, creating subdirectories
12
12
  * as needed.
13
13
  *
14
- * @param files A map of file paths to `ResultFile` objects, representing the build output.
14
+ * @param files A collection of `ResultFile` objects, representing the build output.
15
15
  * @param testDir The absolute path to the directory where the files should be written.
16
16
  */
17
- export declare function writeTestFiles(files: Record<string, ResultFile>, testDir: string): Promise<void>;
17
+ export declare function writeTestFiles(files: readonly ResultFile[], testDir: string): Promise<void>;
@@ -53,17 +53,17 @@ const utils_1 = require("../tools/esbuild/utils");
53
53
  * This function handles both in-memory and on-disk files, creating subdirectories
54
54
  * as needed.
55
55
  *
56
- * @param files A map of file paths to `ResultFile` objects, representing the build output.
56
+ * @param files A collection of `ResultFile` objects, representing the build output.
57
57
  * @param testDir The absolute path to the directory where the files should be written.
58
58
  */
59
59
  async function writeTestFiles(files, testDir) {
60
60
  const directoryExists = new Set();
61
61
  // Writes the test related output files to disk and ensures the containing directories are present
62
- await (0, utils_1.emitFilesToDisk)(Object.entries(files), async ([filePath, file]) => {
62
+ await (0, utils_1.emitFilesToDisk)(files, async (file) => {
63
63
  if (file.type !== bundler_files_1.BuildOutputFileType.Browser && file.type !== bundler_files_1.BuildOutputFileType.Media) {
64
64
  return;
65
65
  }
66
- const fullFilePath = node_path_1.default.join(testDir, filePath);
66
+ const fullFilePath = node_path_1.default.join(testDir, file.path);
67
67
  // Ensure output subdirectories exist
68
68
  const fileBasePath = node_path_1.default.dirname(fullFilePath);
69
69
  if (fileBasePath && !directoryExists.has(fileBasePath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"test-files.js","sourceRoot":"","sources":["test-files.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBH,wCA4BC;AA1CD,qDAAuC;AACvC,0DAA6B;AAE7B,kEAAqE;AACrE,kDAAyD;AAEzD;;;;;;;GAOG;AACI,KAAK,UAAU,cAAc,CAClC,KAAiC,EACjC,OAAe;IAEf,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,kGAAkG;IAClG,MAAM,IAAA,uBAAe,EAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACtE,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAmB,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAmB,CAAC,KAAK,EAAE,CAAC;YACzF,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAElD,qCAAqC;QACrC,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,YAAY,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,sBAAsB;YACtB,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"test-files.js","sourceRoot":"","sources":["test-files.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBH,wCAyBC;AAvCD,qDAAuC;AACvC,0DAA6B;AAE7B,kEAAqE;AACrE,kDAAyD;AAEzD;;;;;;;GAOG;AACI,KAAK,UAAU,cAAc,CAAC,KAA4B,EAAE,OAAe;IAChF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,kGAAkG;IAClG,MAAM,IAAA,uBAAe,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAmB,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAmB,CAAC,KAAK,EAAE,CAAC;YACzF,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnD,qCAAqC;QACrC,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,YAAY,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,sBAAsB;YACtB,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.dev/license
7
- */
8
- import type * as ng from '@angular/compiler-cli';
9
- import { AngularHostOptions } from '../angular-host';
10
- import { AngularCompilation, AngularCompilationResult } from './angular-compilation';
11
- export declare class NoopCompilation extends AngularCompilation {
12
- initialize(tsconfig: string, hostOptions: AngularHostOptions, compilerOptionsTransformer?: (compilerOptions: ng.CompilerOptions) => ng.CompilerOptions): Promise<AngularCompilationResult>;
13
- protected collectDiagnostics(): never;
14
- emitAffectedFiles(): never;
15
- }