@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.
- package/package.json +13 -12
- package/src/builders/application/build-action.js +47 -39
- package/src/builders/application/build-action.js.map +1 -1
- package/src/builders/application/execute-build.js +1 -1
- package/src/builders/application/execute-build.js.map +1 -1
- package/src/builders/application/execute-post-bundle.js +2 -5
- package/src/builders/application/execute-post-bundle.js.map +1 -1
- package/src/builders/application/i18n.js +20 -10
- package/src/builders/application/i18n.js.map +1 -1
- package/src/builders/application/index.js +2 -2
- package/src/builders/application/index.js.map +1 -1
- package/src/builders/application/results.d.ts +3 -2
- package/src/builders/application/setup-bundling.js +3 -1
- package/src/builders/application/setup-bundling.js.map +1 -1
- package/src/builders/dev-server/vite/index.js +4 -7
- package/src/builders/dev-server/vite/index.js.map +1 -1
- package/src/builders/dev-server/vite/server.js +1 -1
- package/src/builders/dev-server/vite/server.js.map +1 -1
- package/src/builders/dev-server/vite/utils.d.ts +1 -1
- package/src/builders/dev-server/vite/utils.js +9 -4
- package/src/builders/dev-server/vite/utils.js.map +1 -1
- package/src/builders/extract-i18n/application-extraction.js +6 -5
- package/src/builders/extract-i18n/application-extraction.js.map +1 -1
- package/src/builders/karma/application_builder.js +1 -1
- package/src/builders/karma/application_builder.js.map +1 -1
- package/src/builders/karma/assets-middleware.d.ts +2 -2
- package/src/builders/karma/assets-middleware.js +5 -2
- package/src/builders/karma/assets-middleware.js.map +1 -1
- package/src/builders/karma/progress-reporter.js +7 -5
- package/src/builders/karma/progress-reporter.js.map +1 -1
- package/src/builders/karma/utils.d.ts +2 -1
- package/src/builders/karma/utils.js +2 -2
- package/src/builders/karma/utils.js.map +1 -1
- package/src/builders/unit-test/builder.js +1 -1
- package/src/builders/unit-test/options.d.ts +1 -0
- package/src/builders/unit-test/options.js +2 -1
- package/src/builders/unit-test/options.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/build-options.js +5 -6
- package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/executor.js +4 -4
- package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
- package/src/builders/unit-test/schema.d.ts +7 -0
- package/src/builders/unit-test/schema.js.map +1 -1
- package/src/builders/unit-test/schema.json +5 -0
- package/src/private.d.ts +1 -1
- package/src/private.js +4 -3
- package/src/private.js.map +1 -1
- package/src/tools/angular/compilation/angular-compilation.d.ts +3 -8
- package/src/tools/angular/compilation/angular-compilation.js +2 -88
- package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
- package/src/tools/angular/compilation/aot-compilation.d.ts +5 -5
- package/src/tools/angular/compilation/aot-compilation.js +9 -13
- package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
- package/src/tools/angular/compilation/compiler-options.d.ts +24 -0
- package/src/tools/angular/compilation/compiler-options.js +135 -0
- package/src/tools/angular/compilation/compiler-options.js.map +1 -0
- package/src/tools/angular/compilation/index.d.ts +1 -1
- package/src/tools/angular/compilation/index.js +1 -3
- package/src/tools/angular/compilation/index.js.map +1 -1
- package/src/tools/angular/compilation/jit-compilation.d.ts +5 -5
- package/src/tools/angular/compilation/jit-compilation.js +8 -15
- package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-compilation.d.ts +2 -7
- package/src/tools/angular/compilation/parallel-compilation.js +39 -41
- package/src/tools/angular/compilation/parallel-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-worker.d.ts +2 -2
- package/src/tools/angular/compilation/parallel-worker.js +79 -63
- package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
- package/src/tools/angular/compilation/typescript-compilation.d.ts +24 -0
- package/src/tools/angular/compilation/typescript-compilation.js +107 -0
- package/src/tools/angular/compilation/typescript-compilation.js.map +1 -0
- package/src/tools/angular/linker/oxc-linker.d.ts +13 -17
- package/src/tools/angular/linker/oxc-linker.js +27 -89
- package/src/tools/angular/linker/oxc-linker.js.map +1 -1
- package/src/tools/esbuild/angular/compilation-state.d.ts +23 -3
- package/src/tools/esbuild/angular/compilation-state.js +51 -13
- package/src/tools/esbuild/angular/compilation-state.js.map +1 -1
- package/src/tools/esbuild/angular/compiler-plugin.js +36 -101
- package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -1
- package/src/tools/esbuild/angular/component-stylesheets.d.ts +3 -3
- package/src/tools/esbuild/angular/component-stylesheets.js +42 -15
- package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -1
- package/src/tools/esbuild/application-code-bundle.js +5 -9
- package/src/tools/esbuild/application-code-bundle.js.map +1 -1
- package/src/tools/esbuild/bundler-context.d.ts +4 -4
- package/src/tools/esbuild/bundler-context.js +93 -27
- package/src/tools/esbuild/bundler-context.js.map +1 -1
- package/src/tools/esbuild/bundler-execution-result.d.ts +1 -0
- package/src/tools/esbuild/bundler-execution-result.js +2 -2
- package/src/tools/esbuild/bundler-execution-result.js.map +1 -1
- package/src/tools/esbuild/cache.d.ts +10 -0
- package/src/tools/esbuild/cache.js +18 -0
- package/src/tools/esbuild/cache.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner-worker.d.ts +82 -37
- package/src/tools/esbuild/i18n-inliner-worker.js +134 -97
- package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner.d.ts +42 -11
- package/src/tools/esbuild/i18n-inliner.js +335 -121
- package/src/tools/esbuild/i18n-inliner.js.map +1 -1
- package/src/tools/esbuild/i18n-locale-plugin.d.ts +32 -0
- package/src/tools/esbuild/i18n-locale-plugin.js +112 -103
- package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -1
- package/src/tools/esbuild/i18n-translation-encoder.d.ts +21 -0
- package/src/tools/esbuild/i18n-translation-encoder.js +92 -0
- package/src/tools/esbuild/i18n-translation-encoder.js.map +1 -0
- package/src/tools/esbuild/i18n-translation-reader.d.ts +41 -0
- package/src/tools/esbuild/i18n-translation-reader.js +164 -0
- package/src/tools/esbuild/i18n-translation-reader.js.map +1 -0
- package/src/tools/esbuild/javascript-transformer-worker.js +41 -47
- package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
- package/src/tools/esbuild/javascript-transformer.js +53 -1
- package/src/tools/esbuild/javascript-transformer.js.map +1 -1
- package/src/tools/esbuild/load-result-cache.d.ts +1 -0
- package/src/tools/esbuild/load-result-cache.js +24 -11
- package/src/tools/esbuild/load-result-cache.js.map +1 -1
- package/src/tools/esbuild/sqlite-cache-store.d.ts +8 -0
- package/src/tools/esbuild/sqlite-cache-store.js +19 -7
- package/src/tools/esbuild/sqlite-cache-store.js.map +1 -1
- package/src/tools/esbuild/stylesheets/sass-language.js +19 -14
- package/src/tools/esbuild/stylesheets/sass-language.js.map +1 -1
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.d.ts +1 -1
- package/src/tools/esbuild/utils.d.ts +1 -1
- package/src/tools/esbuild/utils.js.map +1 -1
- package/src/tools/oxc/oxc-transform.d.ts +3 -0
- package/src/tools/oxc/oxc-transform.js +103 -124
- package/src/tools/oxc/oxc-transform.js.map +1 -1
- package/src/tools/oxc/traversal.d.ts +32 -0
- package/src/tools/oxc/traversal.js +299 -0
- package/src/tools/oxc/traversal.js.map +1 -0
- package/src/tools/sass/rebasing-importer.d.ts +8 -14
- package/src/tools/sass/rebasing-importer.js +18 -24
- package/src/tools/sass/rebasing-importer.js.map +1 -1
- package/src/tools/sass/sass-service.d.ts +11 -38
- package/src/tools/sass/sass-service.js +124 -187
- package/src/tools/sass/sass-service.js.map +1 -1
- package/src/utils/environment-options.d.ts +12 -0
- package/src/utils/environment-options.js +20 -12
- package/src/utils/environment-options.js.map +1 -1
- package/src/utils/i18n-options.d.ts +2 -1
- package/src/utils/i18n-options.js.map +1 -1
- package/src/utils/normalize-cache.d.ts +11 -1
- package/src/utils/normalize-cache.js +6 -3
- package/src/utils/normalize-cache.js.map +1 -1
- package/src/utils/purge-cache.js +24 -13
- package/src/utils/purge-cache.js.map +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.d.ts +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +12 -9
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js.map +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/utils.d.ts +8 -0
- package/src/utils/server-rendering/esm-in-memory-loader/utils.js +30 -0
- package/src/utils/server-rendering/esm-in-memory-loader/utils.js.map +1 -1
- package/src/utils/server-rendering/prerender.d.ts +2 -1
- package/src/utils/server-rendering/prerender.js +83 -30
- package/src/utils/server-rendering/prerender.js.map +1 -1
- package/src/utils/server-rendering/render-worker.d.ts +10 -5
- package/src/utils/server-rendering/render-worker.js +31 -7
- package/src/utils/server-rendering/render-worker.js.map +1 -1
- package/src/utils/test-files.d.ts +2 -2
- package/src/utils/test-files.js +3 -3
- package/src/utils/test-files.js.map +1 -1
- package/src/tools/angular/compilation/noop-compilation.d.ts +0 -15
- package/src/tools/angular/compilation/noop-compilation.js +0 -27
- package/src/tools/angular/compilation/noop-compilation.js.map +0 -1
- package/src/tools/sass/worker.d.ts +0 -63
- package/src/tools/sass/worker.js +0 -202
- package/src/tools/sass/worker.js.map +0 -1
- /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.d.ts +0 -0
- /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js +0 -0
- /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js.map +0 -0
package/src/utils/purge-cache.js
CHANGED
|
@@ -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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
const basePaths = new Set([basePath]);
|
|
26
|
+
if (localBasePath) {
|
|
27
|
+
basePaths.add(localBasePath);
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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,
|
|
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?.
|
|
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
|
|
96
|
-
(0, node_assert_1.default)(
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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":";AAAA;;;;;;GAMG;;;;;
|
|
1
|
+
{"version":3,"file":"loader-hooks.js","sourceRoot":"","sources":["loader-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;;;
|
|
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
|
|
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
|
-
|
|
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 =
|
|
43
|
+
const jsContent = rawOutputFiles[filePath];
|
|
44
44
|
if (jsContent) {
|
|
45
|
-
|
|
45
|
+
rawOutputFiles[filePath] =
|
|
46
46
|
jsContent +
|
|
47
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
166
|
-
|
|
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(
|
|
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":";AAAA;;;;;;GAMG;;
|
|
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
|
|
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
|
|
24
|
+
* Renders routes in batch or individual URL.
|
|
20
25
|
*/
|
|
21
|
-
declare function
|
|
22
|
-
declare const _default: Promise<typeof
|
|
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
|
|
55
|
+
* Renders a single route URL.
|
|
55
56
|
*/
|
|
56
|
-
async function renderPage(
|
|
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
|
|
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;
|
|
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
|
|
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:
|
|
17
|
+
export declare function writeTestFiles(files: readonly ResultFile[], testDir: string): Promise<void>;
|
package/src/utils/test-files.js
CHANGED
|
@@ -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
|
|
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)(
|
|
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,
|
|
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,
|
|
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
|
-
}
|