@angular-devkit/build-angular 17.0.0-next.3 → 17.0.0-next.5
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 -15
- package/src/babel-bazel.d.ts +0 -6
- package/src/builders/app-shell/render-worker.js +5 -4
- package/src/builders/application/execute-build.js +3 -3
- package/src/builders/application/index.js +1 -2
- package/src/builders/application/options.d.ts +1 -2
- package/src/builders/application/options.js +5 -7
- package/src/builders/application/schema.d.ts +6 -18
- package/src/builders/application/schema.js +1 -1
- package/src/builders/application/schema.json +4 -20
- package/src/builders/browser/index.js +4 -3
- package/src/builders/browser-esbuild/builder-status-warnings.js +1 -4
- package/src/builders/dev-server/load-proxy-config.js +24 -1
- package/src/builders/dev-server/vite-server.d.ts +2 -1
- package/src/builders/dev-server/vite-server.js +36 -23
- package/src/builders/dev-server/webpack-server.js +2 -2
- package/src/builders/karma/find-tests-plugin.js +4 -2
- package/src/builders/karma/index.js +6 -7
- package/src/builders/prerender/index.js +45 -10
- package/src/builders/prerender/render-worker.js +12 -9
- package/src/builders/prerender/routes-extractor-worker.d.ts +20 -0
- package/src/builders/prerender/routes-extractor-worker.js +71 -0
- package/src/builders/prerender/schema.d.ts +2 -2
- package/src/builders/prerender/schema.js +1 -1
- package/src/builders/prerender/schema.json +2 -2
- package/src/builders/server/index.js +2 -3
- package/src/builders/server/platform-server-exports-loader.js +7 -2
- package/src/tools/babel/plugins/adjust-static-class-members.js +5 -4
- package/src/tools/babel/plugins/adjust-typescript-enums.js +2 -2
- package/src/tools/babel/presets/application.js +5 -7
- package/src/tools/babel/webpack-loader.js +6 -5
- package/src/tools/esbuild/angular/compilation/angular-compilation.js +6 -20
- package/src/tools/esbuild/angular/compilation/aot-compilation.js +15 -25
- package/src/tools/esbuild/angular/compilation/jit-compilation.js +12 -24
- package/src/tools/esbuild/angular/compiler-plugin.js +16 -28
- package/src/tools/esbuild/angular/jit-resource-transformer.js +33 -31
- package/src/tools/esbuild/application-code-bundle.js +31 -23
- package/src/tools/esbuild/bundler-context.js +18 -28
- package/src/tools/esbuild/bundler-execution-result.js +5 -3
- package/src/tools/esbuild/global-scripts.js +2 -2
- package/src/tools/esbuild/javascript-transformer-worker.js +3 -3
- package/src/tools/esbuild/javascript-transformer.js +15 -28
- package/src/tools/esbuild/load-result-cache.js +11 -20
- package/src/tools/esbuild/profiling.js +2 -2
- package/src/tools/esbuild/rxjs-esm-resolution-plugin.js +2 -2
- package/src/tools/esbuild/sourcemap-ignorelist-plugin.d.ts +1 -1
- package/src/tools/esbuild/sourcemap-ignorelist-plugin.js +4 -4
- package/src/tools/esbuild/stylesheets/less-language.js +2 -2
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +8 -5
- package/src/tools/esbuild/watcher.js +7 -9
- package/src/tools/sass/rebasing-importer.js +9 -4
- package/src/tools/sass/sass-service-legacy.js +7 -9
- package/src/tools/sass/sass-service.js +9 -8
- package/src/tools/sass/worker.js +3 -3
- package/src/tools/webpack/plugins/any-component-style-budget-checker.js +2 -1
- package/src/tools/webpack/plugins/builder-watch-plugin.js +4 -1
- package/src/tools/webpack/plugins/common-js-usage-warn-plugin.js +4 -2
- package/src/tools/webpack/plugins/css-optimizer-plugin.js +3 -2
- package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.js +3 -2
- package/src/tools/webpack/plugins/esbuild-executor.js +5 -2
- package/src/tools/webpack/plugins/index-html-webpack-plugin.js +3 -1
- package/src/tools/webpack/plugins/javascript-optimizer-plugin.js +3 -1
- package/src/tools/webpack/plugins/json-stats-plugin.js +2 -1
- package/src/tools/webpack/plugins/occurrences-plugin.js +2 -1
- package/src/tools/webpack/plugins/remove-hash-plugin.js +2 -1
- package/src/tools/webpack/plugins/scripts-webpack-plugin.js +4 -1
- package/src/tools/webpack/plugins/service-worker-plugin.js +2 -1
- package/src/tools/webpack/plugins/styles-webpack-plugin.js +5 -4
- package/src/tools/webpack/plugins/typescript.js +2 -2
- package/src/tools/webpack/utils/helpers.js +2 -3
- package/src/typings.d.ts +1 -1
- package/src/utils/action-executor.js +3 -1
- package/src/utils/bundle-calculator.js +4 -1
- package/src/utils/i18n-options.js +2 -2
- package/src/utils/index-file/augment-index-html.d.ts +1 -0
- package/src/utils/index-file/augment-index-html.js +22 -2
- package/src/utils/index-file/index-html-generator.d.ts +1 -0
- package/src/utils/index-file/index-html-generator.js +5 -2
- package/src/utils/index-file/inline-critical-css.js +48 -45
- package/src/utils/index-file/inline-fonts.js +5 -6
- package/src/utils/process-bundle.js +2 -3
- package/src/utils/routes-extractor/extractor.d.ts +15 -0
- package/src/utils/routes-extractor/extractor.js +76 -0
- package/src/utils/server-rendering/esm-in-memory-file-loader.d.ts +8 -0
- package/src/utils/server-rendering/esm-in-memory-file-loader.js +8 -8
- package/src/utils/server-rendering/main-bundle-exports.d.ts +22 -0
- package/src/utils/server-rendering/main-bundle-exports.js +10 -0
- package/src/utils/server-rendering/prerender.d.ts +1 -2
- package/src/utils/server-rendering/prerender.js +58 -51
- package/src/utils/server-rendering/render-page.d.ts +1 -13
- package/src/utils/server-rendering/render-page.js +2 -2
- package/src/utils/server-rendering/render-worker.d.ts +2 -2
- package/src/utils/server-rendering/render-worker.js +1 -1
- package/src/utils/server-rendering/routes-extractor-worker.d.ts +17 -0
- package/src/utils/server-rendering/routes-extractor-worker.js +47 -0
- package/src/utils/service-worker.js +4 -2
- package/src/utils/spinner.js +7 -13
- package/src/utils/webpack-browser-config.js +2 -2
- package/src/builders/prerender/utils.d.ts +0 -22
- package/src/builders/prerender/utils.js +0 -79
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
+
/**
|
|
9
|
+
* Node.js ESM loader to redirect imports to in memory files.
|
|
10
|
+
* @see: https://nodejs.org/api/esm.html#loaders for more information about loaders.
|
|
11
|
+
*/
|
|
12
|
+
export interface ESMInMemoryFileLoaderWorkerData {
|
|
13
|
+
outputFiles: Record<string, string>;
|
|
14
|
+
workspaceRoot: string;
|
|
15
|
+
}
|
|
8
16
|
export declare function resolve(specifier: string, context: {
|
|
9
17
|
parentURL: undefined | string;
|
|
10
18
|
}, nextResolve: Function): any;
|
|
@@ -9,17 +9,14 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.load = exports.resolve = void 0;
|
|
11
11
|
const node_path_1 = require("node:path");
|
|
12
|
+
const node_url_1 = require("node:url");
|
|
12
13
|
const node_worker_threads_1 = require("node:worker_threads");
|
|
13
14
|
const url_1 = require("url");
|
|
14
15
|
const javascript_transformer_1 = require("../../tools/esbuild/javascript-transformer");
|
|
15
|
-
/**
|
|
16
|
-
* Node.js ESM loader to redirect imports to in memory files.
|
|
17
|
-
* @see: https://nodejs.org/api/esm.html#loaders for more information about loaders.
|
|
18
|
-
*/
|
|
19
16
|
const { outputFiles, workspaceRoot } = node_worker_threads_1.workerData;
|
|
20
17
|
const TRANSFORMED_FILES = {};
|
|
21
18
|
const CHUNKS_REGEXP = /file:\/\/\/(main\.server|chunk-\w+)\.mjs/;
|
|
22
|
-
const WORKSPACE_ROOT_FILE =
|
|
19
|
+
const WORKSPACE_ROOT_FILE = (0, node_url_1.pathToFileURL)((0, node_path_1.join)(workspaceRoot, 'index.mjs')).href;
|
|
23
20
|
const JAVASCRIPT_TRANSFORMER = new javascript_transformer_1.JavaScriptTransformer(
|
|
24
21
|
// Always enable JIT linking to support applications built with and without AOT.
|
|
25
22
|
// In a development environment the additional scope information does not
|
|
@@ -32,7 +29,9 @@ function resolve(specifier, context, nextResolve) {
|
|
|
32
29
|
return {
|
|
33
30
|
format: 'module',
|
|
34
31
|
shortCircuit: true,
|
|
35
|
-
|
|
32
|
+
// File URLs need to absolute. In Windows these also need to include the drive.
|
|
33
|
+
// The `/` will be resolved to the drive letter.
|
|
34
|
+
url: (0, node_url_1.pathToFileURL)('/' + normalizedSpecifier).href,
|
|
36
35
|
};
|
|
37
36
|
}
|
|
38
37
|
}
|
|
@@ -44,7 +43,8 @@ exports.resolve = resolve;
|
|
|
44
43
|
async function load(url, context, nextLoad) {
|
|
45
44
|
if (isFileProtocol(url)) {
|
|
46
45
|
const filePath = (0, url_1.fileURLToPath)(url);
|
|
47
|
-
|
|
46
|
+
// Remove '/' or drive letter for Windows that was added in the above 'resolve'.
|
|
47
|
+
let source = outputFiles[(0, node_path_1.relative)('/', filePath)] ?? TRANSFORMED_FILES[filePath];
|
|
48
48
|
if (source === undefined) {
|
|
49
49
|
source = TRANSFORMED_FILES[filePath] = Buffer.from(await JAVASCRIPT_TRANSFORMER.transformFile(filePath)).toString('utf-8');
|
|
50
50
|
}
|
|
@@ -73,4 +73,4 @@ function isBundleEntryPointOrChunk(context) {
|
|
|
73
73
|
process.once('exit', handleProcessExit);
|
|
74
74
|
process.once('SIGINT', handleProcessExit);
|
|
75
75
|
process.once('uncaughtException', handleProcessExit);
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtLWluLW1lbW9yeS1maWxlLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3V0aWxzL3NlcnZlci1yZW5kZXJpbmcvZXNtLWluLW1lbW9yeS1maWxlLWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCx5Q0FBMkM7QUFDM0MsdUNBQXlDO0FBQ3pDLDZEQUFpRDtBQUNqRCw2QkFBb0M7QUFDcEMsdUZBQW1GO0FBWW5GLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEdBQUcsZ0NBQTZDLENBQUM7QUFFckYsTUFBTSxpQkFBaUIsR0FBMkIsRUFBRSxDQUFDO0FBQ3JELE1BQU0sYUFBYSxHQUFHLDBDQUEwQyxDQUFDO0FBQ2pFLE1BQU0sbUJBQW1CLEdBQUcsSUFBQSx3QkFBYSxFQUFDLElBQUEsZ0JBQUksRUFBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFakYsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLDhDQUFxQjtBQUN0RCxnRkFBZ0Y7QUFDaEYseUVBQXlFO0FBQ3pFLGdGQUFnRjtBQUNoRixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUM5QixDQUFDLENBQ0YsQ0FBQztBQUVGLFNBQWdCLE9BQU8sQ0FDckIsU0FBaUIsRUFDakIsT0FBMEMsRUFDMUMsV0FBcUI7SUFFckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUM5QixNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksbUJBQW1CLElBQUksV0FBVyxFQUFFO1lBQ3RDLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLFlBQVksRUFBRSxJQUFJO2dCQUNsQiwrRUFBK0U7Z0JBQy9FLGdEQUFnRDtnQkFDaEQsR0FBRyxFQUFFLElBQUEsd0JBQWEsRUFBQyxHQUFHLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxJQUFJO2FBQ25ELENBQUM7U0FDSDtLQUNGO0lBRUQsMERBQTBEO0lBQzFELHFFQUFxRTtJQUNyRSxPQUFPLFdBQVcsQ0FDaEIsU0FBUyxFQUNULHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQzlGLENBQUM7QUFDSixDQUFDO0FBeEJELDBCQXdCQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBVyxFQUFFLE9BQW1DLEVBQUUsUUFBa0I7SUFDN0YsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBQSxtQkFBYSxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLGdGQUFnRjtRQUNoRixJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBQSxvQkFBUSxFQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpGLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN4QixNQUFNLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDaEQsTUFBTSxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQ3JELENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3hCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7WUFFM0IsT0FBTztnQkFDTCxNQUFNO2dCQUNOLFlBQVksRUFBRSxJQUFJO2dCQUNsQixNQUFNO2FBQ1AsQ0FBQztTQUNIO0tBQ0Y7SUFFRCxxQ0FBcUM7SUFDckMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQXpCRCxvQkF5QkM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxHQUFXO0lBQ2pDLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsU0FBUyxpQkFBaUI7SUFDeEIsS0FBSyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FBQyxPQUEwQztJQUMzRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGpvaW4sIHJlbGF0aXZlIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgeyB3b3JrZXJEYXRhIH0gZnJvbSAnbm9kZTp3b3JrZXJfdGhyZWFkcyc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAndXJsJztcbmltcG9ydCB7IEphdmFTY3JpcHRUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvamF2YXNjcmlwdC10cmFuc2Zvcm1lcic7XG5cbi8qKlxuICogTm9kZS5qcyBFU00gbG9hZGVyIHRvIHJlZGlyZWN0IGltcG9ydHMgdG8gaW4gbWVtb3J5IGZpbGVzLlxuICogQHNlZTogaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9lc20uaHRtbCNsb2FkZXJzIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGxvYWRlcnMuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBFU01Jbk1lbW9yeUZpbGVMb2FkZXJXb3JrZXJEYXRhIHtcbiAgb3V0cHV0RmlsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHdvcmtzcGFjZVJvb3Q6IHN0cmluZztcbn1cblxuY29uc3QgeyBvdXRwdXRGaWxlcywgd29ya3NwYWNlUm9vdCB9ID0gd29ya2VyRGF0YSBhcyBFU01Jbk1lbW9yeUZpbGVMb2FkZXJXb3JrZXJEYXRhO1xuXG5jb25zdCBUUkFOU0ZPUk1FRF9GSUxFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuY29uc3QgQ0hVTktTX1JFR0VYUCA9IC9maWxlOlxcL1xcL1xcLyhtYWluXFwuc2VydmVyfGNodW5rLVxcdyspXFwubWpzLztcbmNvbnN0IFdPUktTUEFDRV9ST09UX0ZJTEUgPSBwYXRoVG9GaWxlVVJMKGpvaW4od29ya3NwYWNlUm9vdCwgJ2luZGV4Lm1qcycpKS5ocmVmO1xuXG5jb25zdCBKQVZBU0NSSVBUX1RSQU5TRk9STUVSID0gbmV3IEphdmFTY3JpcHRUcmFuc2Zvcm1lcihcbiAgLy8gQWx3YXlzIGVuYWJsZSBKSVQgbGlua2luZyB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyBidWlsdCB3aXRoIGFuZCB3aXRob3V0IEFPVC5cbiAgLy8gSW4gYSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0aGUgYWRkaXRpb25hbCBzY29wZSBpbmZvcm1hdGlvbiBkb2VzIG5vdFxuICAvLyBoYXZlIGEgbmVnYXRpdmUgZWZmZWN0IHVubGlrZSBwcm9kdWN0aW9uIHdoZXJlIGZpbmFsIG91dHB1dCBzaXplIGlzIHJlbGV2YW50LlxuICB7IHNvdXJjZW1hcDogdHJ1ZSwgaml0OiB0cnVlIH0sXG4gIDEsXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZShcbiAgc3BlY2lmaWVyOiBzdHJpbmcsXG4gIGNvbnRleHQ6IHsgcGFyZW50VVJMOiB1bmRlZmluZWQgfCBzdHJpbmcgfSxcbiAgbmV4dFJlc29sdmU6IEZ1bmN0aW9uLFxuKSB7XG4gIGlmICghaXNGaWxlUHJvdG9jb2woc3BlY2lmaWVyKSkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTcGVjaWZpZXIgPSBzcGVjaWZpZXIucmVwbGFjZSgvXlxcLlxcLy8sICcnKTtcbiAgICBpZiAobm9ybWFsaXplZFNwZWNpZmllciBpbiBvdXRwdXRGaWxlcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9ybWF0OiAnbW9kdWxlJyxcbiAgICAgICAgc2hvcnRDaXJjdWl0OiB0cnVlLFxuICAgICAgICAvLyBGaWxlIFVSTHMgbmVlZCB0byBhYnNvbHV0ZS4gSW4gV2luZG93cyB0aGVzZSBhbHNvIG5lZWQgdG8gaW5jbHVkZSB0aGUgZHJpdmUuXG4gICAgICAgIC8vIFRoZSBgL2Agd2lsbCBiZSByZXNvbHZlZCB0byB0aGUgZHJpdmUgbGV0dGVyLlxuICAgICAgICB1cmw6IHBhdGhUb0ZpbGVVUkwoJy8nICsgbm9ybWFsaXplZFNwZWNpZmllcikuaHJlZixcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmZXIgdG8gdGhlIG5leHQgaG9vayBpbiB0aGUgY2hhaW4sIHdoaWNoIHdvdWxkIGJlIHRoZVxuICAvLyBOb2RlLmpzIGRlZmF1bHQgcmVzb2x2ZSBpZiB0aGlzIGlzIHRoZSBsYXN0IHVzZXItc3BlY2lmaWVkIGxvYWRlci5cbiAgcmV0dXJuIG5leHRSZXNvbHZlKFxuICAgIHNwZWNpZmllcixcbiAgICBpc0J1bmRsZUVudHJ5UG9pbnRPckNodW5rKGNvbnRleHQpID8geyAuLi5jb250ZXh0LCBwYXJlbnRVUkw6IFdPUktTUEFDRV9ST09UX0ZJTEUgfSA6IGNvbnRleHQsXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkKHVybDogc3RyaW5nLCBjb250ZXh0OiB7IGZvcm1hdD86IHN0cmluZyB8IG51bGwgfSwgbmV4dExvYWQ6IEZ1bmN0aW9uKSB7XG4gIGlmIChpc0ZpbGVQcm90b2NvbCh1cmwpKSB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBmaWxlVVJMVG9QYXRoKHVybCk7XG4gICAgLy8gUmVtb3ZlICcvJyBvciBkcml2ZSBsZXR0ZXIgZm9yIFdpbmRvd3MgdGhhdCB3YXMgYWRkZWQgaW4gdGhlIGFib3ZlICdyZXNvbHZlJy5cbiAgICBsZXQgc291cmNlID0gb3V0cHV0RmlsZXNbcmVsYXRpdmUoJy8nLCBmaWxlUGF0aCldID8/IFRSQU5TRk9STUVEX0ZJTEVTW2ZpbGVQYXRoXTtcblxuICAgIGlmIChzb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc291cmNlID0gVFJBTlNGT1JNRURfRklMRVNbZmlsZVBhdGhdID0gQnVmZmVyLmZyb20oXG4gICAgICAgIGF3YWl0IEpBVkFTQ1JJUFRfVFJBTlNGT1JNRVIudHJhbnNmb3JtRmlsZShmaWxlUGF0aCksXG4gICAgICApLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgeyBmb3JtYXQgfSA9IGNvbnRleHQ7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvcm1hdCxcbiAgICAgICAgc2hvcnRDaXJjdWl0OiB0cnVlLFxuICAgICAgICBzb3VyY2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIExldCBOb2RlLmpzIGhhbmRsZSBhbGwgb3RoZXIgVVJMcy5cbiAgcmV0dXJuIG5leHRMb2FkKHVybCk7XG59XG5cbmZ1bmN0aW9uIGlzRmlsZVByb3RvY29sKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB1cmwuc3RhcnRzV2l0aCgnZmlsZTovLycpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVQcm9jZXNzRXhpdCgpOiB2b2lkIHtcbiAgdm9pZCBKQVZBU0NSSVBUX1RSQU5TRk9STUVSLmNsb3NlKCk7XG59XG5cbmZ1bmN0aW9uIGlzQnVuZGxlRW50cnlQb2ludE9yQ2h1bmsoY29udGV4dDogeyBwYXJlbnRVUkw6IHVuZGVmaW5lZCB8IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gIHJldHVybiAhIWNvbnRleHQucGFyZW50VVJMICYmIENIVU5LU19SRUdFWFAudGVzdChjb250ZXh0LnBhcmVudFVSTCk7XG59XG5cbnByb2Nlc3Mub25jZSgnZXhpdCcsIGhhbmRsZVByb2Nlc3NFeGl0KTtcbnByb2Nlc3Mub25jZSgnU0lHSU5UJywgaGFuZGxlUHJvY2Vzc0V4aXQpO1xucHJvY2Vzcy5vbmNlKCd1bmNhdWdodEV4Y2VwdGlvbicsIGhhbmRsZVByb2Nlc3NFeGl0KTtcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
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.io/license
|
|
7
|
+
*/
|
|
8
|
+
import type { ApplicationRef, Type } from '@angular/core';
|
|
9
|
+
import type { renderApplication, renderModule, ɵSERVER_CONTEXT } from '@angular/platform-server';
|
|
10
|
+
import type { extractRoutes } from '../routes-extractor/extractor';
|
|
11
|
+
export interface MainServerBundleExports {
|
|
12
|
+
/** An internal token that allows providing extra information about the server context. */
|
|
13
|
+
ɵSERVER_CONTEXT: typeof ɵSERVER_CONTEXT;
|
|
14
|
+
/** Render an NgModule application. */
|
|
15
|
+
renderModule: typeof renderModule;
|
|
16
|
+
/** Method to render a standalone application. */
|
|
17
|
+
renderApplication: typeof renderApplication;
|
|
18
|
+
/** Standalone application bootstrapping function. */
|
|
19
|
+
default: (() => Promise<ApplicationRef>) | Type<unknown>;
|
|
20
|
+
/** Method to extract routes from the router config. */
|
|
21
|
+
extractRoutes: typeof extractRoutes;
|
|
22
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1idW5kbGUtZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3V0aWxzL3NlcnZlci1yZW5kZXJpbmcvbWFpbi1idW5kbGUtZXhwb3J0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwbGljYXRpb25SZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgcmVuZGVyQXBwbGljYXRpb24sIHJlbmRlck1vZHVsZSwgybVTRVJWRVJfQ09OVEVYVCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLXNlcnZlcic7XG5pbXBvcnQgdHlwZSB7IGV4dHJhY3RSb3V0ZXMgfSBmcm9tICcuLi9yb3V0ZXMtZXh0cmFjdG9yL2V4dHJhY3Rvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFpblNlcnZlckJ1bmRsZUV4cG9ydHMge1xuICAvKiogQW4gaW50ZXJuYWwgdG9rZW4gdGhhdCBhbGxvd3MgcHJvdmlkaW5nIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZXJ2ZXIgY29udGV4dC4gKi9cbiAgybVTRVJWRVJfQ09OVEVYVDogdHlwZW9mIMm1U0VSVkVSX0NPTlRFWFQ7XG5cbiAgLyoqIFJlbmRlciBhbiBOZ01vZHVsZSBhcHBsaWNhdGlvbi4gKi9cbiAgcmVuZGVyTW9kdWxlOiB0eXBlb2YgcmVuZGVyTW9kdWxlO1xuXG4gIC8qKiBNZXRob2QgdG8gcmVuZGVyIGEgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbi4gKi9cbiAgcmVuZGVyQXBwbGljYXRpb246IHR5cGVvZiByZW5kZXJBcHBsaWNhdGlvbjtcblxuICAvKiogU3RhbmRhbG9uZSBhcHBsaWNhdGlvbiBib290c3RyYXBwaW5nIGZ1bmN0aW9uLiAqL1xuICBkZWZhdWx0OiAoKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4pIHwgVHlwZTx1bmtub3duPjtcblxuICAvKiogTWV0aG9kIHRvIGV4dHJhY3Qgcm91dGVzIGZyb20gdGhlIHJvdXRlciBjb25maWcuICovXG4gIGV4dHJhY3RSb3V0ZXM6IHR5cGVvZiBleHRyYWN0Um91dGVzO1xufVxuIl19
|
|
@@ -9,12 +9,11 @@ import { OutputFile } from 'esbuild';
|
|
|
9
9
|
interface PrerenderOptions {
|
|
10
10
|
routesFile?: string;
|
|
11
11
|
discoverRoutes?: boolean;
|
|
12
|
-
routes?: string[];
|
|
13
12
|
}
|
|
14
13
|
interface AppShellOptions {
|
|
15
14
|
route?: string;
|
|
16
15
|
}
|
|
17
|
-
export declare function prerenderPages(workspaceRoot: string,
|
|
16
|
+
export declare function prerenderPages(workspaceRoot: string, appShellOptions: AppShellOptions | undefined, prerenderOptions: PrerenderOptions | undefined, outputFiles: Readonly<OutputFile[]>, document: string, inlineCriticalCss?: boolean, maxThreads?: number, verbose?: boolean): Promise<{
|
|
18
17
|
output: Record<string, string>;
|
|
19
18
|
warnings: string[];
|
|
20
19
|
errors: string[];
|
|
@@ -6,29 +6,6 @@
|
|
|
6
6
|
* Use of this source code is governed by an MIT-style license that can be
|
|
7
7
|
* found in the LICENSE file at https://angular.io/license
|
|
8
8
|
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
-
if (mod && mod.__esModule) return mod;
|
|
27
|
-
var result = {};
|
|
28
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
-
__setModuleDefault(result, mod);
|
|
30
|
-
return result;
|
|
31
|
-
};
|
|
32
9
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
33
10
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
34
11
|
};
|
|
@@ -36,9 +13,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
13
|
exports.prerenderPages = void 0;
|
|
37
14
|
const promises_1 = require("node:fs/promises");
|
|
38
15
|
const node_path_1 = require("node:path");
|
|
16
|
+
const node_url_1 = require("node:url");
|
|
39
17
|
const piscina_1 = __importDefault(require("piscina"));
|
|
40
|
-
async function prerenderPages(workspaceRoot,
|
|
41
|
-
const
|
|
18
|
+
async function prerenderPages(workspaceRoot, appShellOptions = {}, prerenderOptions = {}, outputFiles, document, inlineCriticalCss, maxThreads = 1, verbose = false) {
|
|
19
|
+
const output = {};
|
|
20
|
+
const warnings = [];
|
|
21
|
+
const errors = [];
|
|
42
22
|
const outputFilesForWorker = {};
|
|
43
23
|
for (const { text, path } of outputFiles) {
|
|
44
24
|
switch ((0, node_path_1.extname)(path)) {
|
|
@@ -48,6 +28,17 @@ async function prerenderPages(workspaceRoot, tsConfigPath, appShellOptions = {},
|
|
|
48
28
|
break;
|
|
49
29
|
}
|
|
50
30
|
}
|
|
31
|
+
const { routes: allRoutes, warnings: routesWarnings } = await getAllRoutes(workspaceRoot, outputFilesForWorker, document, appShellOptions, prerenderOptions, verbose);
|
|
32
|
+
if (routesWarnings?.length) {
|
|
33
|
+
warnings.push(...routesWarnings);
|
|
34
|
+
}
|
|
35
|
+
if (allRoutes.size < 1) {
|
|
36
|
+
return {
|
|
37
|
+
errors,
|
|
38
|
+
warnings,
|
|
39
|
+
output,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
51
42
|
const renderWorker = new piscina_1.default({
|
|
52
43
|
filename: require.resolve('./render-worker'),
|
|
53
44
|
maxThreads: Math.min(allRoutes.size, maxThreads),
|
|
@@ -60,23 +51,19 @@ async function prerenderPages(workspaceRoot, tsConfigPath, appShellOptions = {},
|
|
|
60
51
|
execArgv: [
|
|
61
52
|
'--no-warnings',
|
|
62
53
|
'--loader',
|
|
63
|
-
|
|
54
|
+
(0, node_url_1.pathToFileURL)((0, node_path_1.join)(__dirname, 'esm-in-memory-file-loader.js')).href, // Loader cannot be an absolute path on Windows.
|
|
64
55
|
],
|
|
65
56
|
});
|
|
66
|
-
const output = {};
|
|
67
|
-
const warnings = [];
|
|
68
|
-
const errors = [];
|
|
69
57
|
try {
|
|
70
58
|
const renderingPromises = [];
|
|
59
|
+
const appShellRoute = appShellOptions.route && removeLeadingSlash(appShellOptions.route);
|
|
71
60
|
for (const route of allRoutes) {
|
|
72
|
-
const isAppShellRoute =
|
|
61
|
+
const isAppShellRoute = appShellRoute === route;
|
|
73
62
|
const serverContext = isAppShellRoute ? 'app-shell' : 'ssg';
|
|
74
63
|
const render = renderWorker.run({ route, serverContext });
|
|
75
64
|
const renderResult = render.then(({ content, warnings, errors }) => {
|
|
76
65
|
if (content !== undefined) {
|
|
77
|
-
const outPath = isAppShellRoute
|
|
78
|
-
? 'index.html'
|
|
79
|
-
: node_path_1.posix.join(route.startsWith('/') ? route.slice(1) /* Remove leading slash */ : route, 'index.html');
|
|
66
|
+
const outPath = isAppShellRoute ? 'index.html' : node_path_1.posix.join(route, 'index.html');
|
|
80
67
|
output[outPath] = content;
|
|
81
68
|
}
|
|
82
69
|
if (warnings) {
|
|
@@ -100,31 +87,51 @@ async function prerenderPages(workspaceRoot, tsConfigPath, appShellOptions = {},
|
|
|
100
87
|
};
|
|
101
88
|
}
|
|
102
89
|
exports.prerenderPages = prerenderPages;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
90
|
+
class RoutesSet extends Set {
|
|
91
|
+
add(value) {
|
|
92
|
+
return super.add(removeLeadingSlash(value));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async function getAllRoutes(workspaceRoot, outputFilesForWorker, document, appShellOptions, prerenderOptions, verbose) {
|
|
96
|
+
const { routesFile, discoverRoutes } = prerenderOptions;
|
|
97
|
+
const routes = new RoutesSet();
|
|
106
98
|
const { route: appShellRoute } = appShellOptions;
|
|
107
99
|
if (appShellRoute !== undefined) {
|
|
108
100
|
routes.add(appShellRoute);
|
|
109
101
|
}
|
|
110
102
|
if (routesFile) {
|
|
111
103
|
const routesFromFile = (await (0, promises_1.readFile)(routesFile, 'utf8')).split(/\r?\n/);
|
|
112
|
-
for (
|
|
113
|
-
route
|
|
114
|
-
if (route) {
|
|
115
|
-
routes.add(route);
|
|
116
|
-
}
|
|
104
|
+
for (const route of routesFromFile) {
|
|
105
|
+
routes.add(route.trim());
|
|
117
106
|
}
|
|
118
107
|
}
|
|
119
|
-
if (discoverRoutes) {
|
|
120
|
-
|
|
121
|
-
for (const { path } of parseAngularRoutes(tsConfigPath)) {
|
|
122
|
-
// Exclude dynamic routes as these cannot be pre-rendered.
|
|
123
|
-
if (!/[*:]/.test(path)) {
|
|
124
|
-
routes.add(path);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
108
|
+
if (!discoverRoutes) {
|
|
109
|
+
return { routes };
|
|
127
110
|
}
|
|
128
|
-
|
|
111
|
+
const renderWorker = new piscina_1.default({
|
|
112
|
+
filename: require.resolve('./routes-extractor-worker'),
|
|
113
|
+
maxThreads: 1,
|
|
114
|
+
workerData: {
|
|
115
|
+
workspaceRoot,
|
|
116
|
+
outputFiles: outputFilesForWorker,
|
|
117
|
+
document,
|
|
118
|
+
verbose,
|
|
119
|
+
},
|
|
120
|
+
execArgv: [
|
|
121
|
+
'--no-warnings',
|
|
122
|
+
'--loader',
|
|
123
|
+
(0, node_url_1.pathToFileURL)((0, node_path_1.join)(__dirname, 'esm-in-memory-file-loader.js')).href, // Loader cannot be an absolute path on Windows.
|
|
124
|
+
],
|
|
125
|
+
});
|
|
126
|
+
const { routes: extractedRoutes, warnings } = await renderWorker
|
|
127
|
+
.run({})
|
|
128
|
+
.finally(() => void renderWorker.destroy());
|
|
129
|
+
for (const route of extractedRoutes) {
|
|
130
|
+
routes.add(route);
|
|
131
|
+
}
|
|
132
|
+
return { routes, warnings };
|
|
133
|
+
}
|
|
134
|
+
function removeLeadingSlash(value) {
|
|
135
|
+
return value.charAt(0) === '/' ? value.slice(1) : value;
|
|
129
136
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvc2VydmVyLXJlbmRlcmluZy9wcmVyZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHSCwrQ0FBNEM7QUFDNUMseUNBQTJDO0FBQzNDLHNEQUE4QjtBQWN2QixLQUFLLFVBQVUsY0FBYyxDQUNsQyxhQUFxQixFQUNyQixZQUFvQixFQUNwQixrQkFBbUMsRUFBRSxFQUNyQyxtQkFBcUMsRUFBRSxFQUN2QyxXQUFtQyxFQUNuQyxRQUFnQixFQUNoQixpQkFBMkIsRUFDM0IsVUFBVSxHQUFHLENBQUM7SUFNZCxNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDdEYsTUFBTSxvQkFBb0IsR0FBMkIsRUFBRSxDQUFDO0lBRXhELEtBQUssTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxXQUFXLEVBQUU7UUFDeEMsUUFBUSxJQUFBLG1CQUFPLEVBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckIsS0FBSyxNQUFNLENBQUMsQ0FBQyxpREFBaUQ7WUFDOUQsS0FBSyxNQUFNLEVBQUUsMkNBQTJDO2dCQUN0RCxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLE1BQU07U0FDVDtLQUNGO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxpQkFBTyxDQUFDO1FBQy9CLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBQzVDLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO1FBQ2hELFVBQVUsRUFBRTtZQUNWLGFBQWE7WUFDYixXQUFXLEVBQUUsb0JBQW9CO1lBQ2pDLGlCQUFpQjtZQUNqQixRQUFRO1NBQ0s7UUFDZixRQUFRLEVBQUU7WUFDUixlQUFlO1lBQ2YsVUFBVTtZQUNWLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUM7U0FDbEQ7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLE1BQU0sR0FBMkIsRUFBRSxDQUFDO0lBQzFDLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFFNUIsSUFBSTtRQUNGLE1BQU0saUJBQWlCLEdBQW9CLEVBQUUsQ0FBQztRQUU5QyxLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsRUFBRTtZQUM3QixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQztZQUN4RCxNQUFNLGFBQWEsR0FBa0IsZUFBZSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUUzRSxNQUFNLE1BQU0sR0FBMEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sWUFBWSxHQUFrQixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7Z0JBQ2hGLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtvQkFDekIsTUFBTSxPQUFPLEdBQUcsZUFBZTt3QkFDN0IsQ0FBQyxDQUFDLFlBQVk7d0JBQ2QsQ0FBQyxDQUFDLGlCQUFLLENBQUMsSUFBSSxDQUNSLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFDekUsWUFBWSxDQUNiLENBQUM7b0JBQ04sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztpQkFDM0I7Z0JBRUQsSUFBSSxRQUFRLEVBQUU7b0JBQ1osUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO2lCQUM1QjtnQkFFRCxJQUFJLE1BQU0sRUFBRTtvQkFDVixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7aUJBQ3hCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDdEM7UUFFRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQUN0QztZQUFTO1FBQ1IsS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDN0I7SUFFRCxPQUFPO1FBQ0wsTUFBTTtRQUNOLFFBQVE7UUFDUixNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUM7QUF2RkQsd0NBdUZDO0FBRUQsS0FBSyxVQUFVLFlBQVksQ0FDekIsWUFBb0IsRUFDcEIsZUFBZ0MsRUFDaEMsZ0JBQWtDO0lBRWxDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQztJQUNoRixNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV2QyxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxHQUFHLGVBQWUsQ0FBQztJQUNqRCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7UUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUMzQjtJQUVELElBQUksVUFBVSxFQUFFO1FBQ2QsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLElBQUEsbUJBQVEsRUFBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0UsS0FBSyxJQUFJLEtBQUssSUFBSSxjQUFjLEVBQUU7WUFDaEMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLEtBQUssRUFBRTtnQkFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ25CO1NBQ0Y7S0FDRjtJQUVELElBQUksY0FBYyxFQUFFO1FBQ2xCLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxHQUFHLHdEQUFhLGNBQWMsR0FBQyxDQUFDO1FBQzVELEtBQUssTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3ZELDBEQUEwRDtZQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsQjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IE91dHB1dEZpbGUgfSBmcm9tICdlc2J1aWxkJztcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBleHRuYW1lLCBwb3NpeCB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgUGlzY2luYSBmcm9tICdwaXNjaW5hJztcbmltcG9ydCB0eXBlIHsgUmVuZGVyUmVzdWx0LCBTZXJ2ZXJDb250ZXh0IH0gZnJvbSAnLi9yZW5kZXItcGFnZSc7XG5pbXBvcnQgdHlwZSB7IFdvcmtlckRhdGEgfSBmcm9tICcuL3JlbmRlci13b3JrZXInO1xuXG5pbnRlcmZhY2UgUHJlcmVuZGVyT3B0aW9ucyB7XG4gIHJvdXRlc0ZpbGU/OiBzdHJpbmc7XG4gIGRpc2NvdmVyUm91dGVzPzogYm9vbGVhbjtcbiAgcm91dGVzPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBBcHBTaGVsbE9wdGlvbnMge1xuICByb3V0ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZXJlbmRlclBhZ2VzKFxuICB3b3Jrc3BhY2VSb290OiBzdHJpbmcsXG4gIHRzQ29uZmlnUGF0aDogc3RyaW5nLFxuICBhcHBTaGVsbE9wdGlvbnM6IEFwcFNoZWxsT3B0aW9ucyA9IHt9LFxuICBwcmVyZW5kZXJPcHRpb25zOiBQcmVyZW5kZXJPcHRpb25zID0ge30sXG4gIG91dHB1dEZpbGVzOiBSZWFkb25seTxPdXRwdXRGaWxlW10+LFxuICBkb2N1bWVudDogc3RyaW5nLFxuICBpbmxpbmVDcml0aWNhbENzcz86IGJvb2xlYW4sXG4gIG1heFRocmVhZHMgPSAxLFxuKTogUHJvbWlzZTx7XG4gIG91dHB1dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgd2FybmluZ3M6IHN0cmluZ1tdO1xuICBlcnJvcnM6IHN0cmluZ1tdO1xufT4ge1xuICBjb25zdCBhbGxSb3V0ZXMgPSBhd2FpdCBnZXRBbGxSb3V0ZXModHNDb25maWdQYXRoLCBhcHBTaGVsbE9wdGlvbnMsIHByZXJlbmRlck9wdGlvbnMpO1xuICBjb25zdCBvdXRwdXRGaWxlc0ZvcldvcmtlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgeyB0ZXh0LCBwYXRoIH0gb2Ygb3V0cHV0RmlsZXMpIHtcbiAgICBzd2l0Y2ggKGV4dG5hbWUocGF0aCkpIHtcbiAgICAgIGNhc2UgJy5tanMnOiAvLyBDb250YWlucyB0aGUgc2VydmVyIHJ1bm5hYmxlIGFwcGxpY2F0aW9uIGNvZGUuXG4gICAgICBjYXNlICcuY3NzJzogLy8gR2xvYmFsIHN0eWxlcyBmb3IgY3JpdGljYWwgQ1NTIGlubGluaW5nLlxuICAgICAgICBvdXRwdXRGaWxlc0ZvcldvcmtlcltwYXRoXSA9IHRleHQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlbmRlcldvcmtlciA9IG5ldyBQaXNjaW5hKHtcbiAgICBmaWxlbmFtZTogcmVxdWlyZS5yZXNvbHZlKCcuL3JlbmRlci13b3JrZXInKSxcbiAgICBtYXhUaHJlYWRzOiBNYXRoLm1pbihhbGxSb3V0ZXMuc2l6ZSwgbWF4VGhyZWFkcyksXG4gICAgd29ya2VyRGF0YToge1xuICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgIG91dHB1dEZpbGVzOiBvdXRwdXRGaWxlc0ZvcldvcmtlcixcbiAgICAgIGlubGluZUNyaXRpY2FsQ3NzLFxuICAgICAgZG9jdW1lbnQsXG4gICAgfSBhcyBXb3JrZXJEYXRhLFxuICAgIGV4ZWNBcmd2OiBbXG4gICAgICAnLS1uby13YXJuaW5ncycsIC8vIFN1cHByZXNzIGBFeHBlcmltZW50YWxXYXJuaW5nOiBDdXN0b20gRVNNIExvYWRlcnMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUuLi5gLlxuICAgICAgJy0tbG9hZGVyJyxcbiAgICAgIHJlcXVpcmUucmVzb2x2ZSgnLi9lc20taW4tbWVtb3J5LWZpbGUtbG9hZGVyLmpzJyksXG4gICAgXSxcbiAgfSk7XG5cbiAgY29uc3Qgb3V0cHV0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZW5kZXJpbmdQcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIGFsbFJvdXRlcykge1xuICAgICAgY29uc3QgaXNBcHBTaGVsbFJvdXRlID0gYXBwU2hlbGxPcHRpb25zLnJvdXRlID09PSByb3V0ZTtcbiAgICAgIGNvbnN0IHNlcnZlckNvbnRleHQ6IFNlcnZlckNvbnRleHQgPSBpc0FwcFNoZWxsUm91dGUgPyAnYXBwLXNoZWxsJyA6ICdzc2cnO1xuXG4gICAgICBjb25zdCByZW5kZXI6IFByb21pc2U8UmVuZGVyUmVzdWx0PiA9IHJlbmRlcldvcmtlci5ydW4oeyByb3V0ZSwgc2VydmVyQ29udGV4dCB9KTtcbiAgICAgIGNvbnN0IHJlbmRlclJlc3VsdDogUHJvbWlzZTx2b2lkPiA9IHJlbmRlci50aGVuKCh7IGNvbnRlbnQsIHdhcm5pbmdzLCBlcnJvcnMgfSkgPT4ge1xuICAgICAgICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3V0UGF0aCA9IGlzQXBwU2hlbGxSb3V0ZVxuICAgICAgICAgICAgPyAnaW5kZXguaHRtbCdcbiAgICAgICAgICAgIDogcG9zaXguam9pbihcbiAgICAgICAgICAgICAgICByb3V0ZS5zdGFydHNXaXRoKCcvJykgPyByb3V0ZS5zbGljZSgxKSAvKiBSZW1vdmUgbGVhZGluZyBzbGFzaCAqLyA6IHJvdXRlLFxuICAgICAgICAgICAgICAgICdpbmRleC5odG1sJyxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICBvdXRwdXRbb3V0UGF0aF0gPSBjb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHdhcm5pbmdzKSB7XG4gICAgICAgICAgd2FybmluZ3MucHVzaCguLi53YXJuaW5ncyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goLi4uZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJlbmRlcmluZ1Byb21pc2VzLnB1c2gocmVuZGVyUmVzdWx0KTtcbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChyZW5kZXJpbmdQcm9taXNlcyk7XG4gIH0gZmluYWxseSB7XG4gICAgdm9pZCByZW5kZXJXb3JrZXIuZGVzdHJveSgpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlcnJvcnMsXG4gICAgd2FybmluZ3MsXG4gICAgb3V0cHV0LFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxSb3V0ZXMoXG4gIHRzQ29uZmlnUGF0aDogc3RyaW5nLFxuICBhcHBTaGVsbE9wdGlvbnM6IEFwcFNoZWxsT3B0aW9ucyxcbiAgcHJlcmVuZGVyT3B0aW9uczogUHJlcmVuZGVyT3B0aW9ucyxcbik6IFByb21pc2U8U2V0PHN0cmluZz4+IHtcbiAgY29uc3QgeyByb3V0ZXNGaWxlLCBkaXNjb3ZlclJvdXRlcywgcm91dGVzOiBleGlzdGluZ1JvdXRlcyB9ID0gcHJlcmVuZGVyT3B0aW9ucztcbiAgY29uc3Qgcm91dGVzID0gbmV3IFNldChleGlzdGluZ1JvdXRlcyk7XG5cbiAgY29uc3QgeyByb3V0ZTogYXBwU2hlbGxSb3V0ZSB9ID0gYXBwU2hlbGxPcHRpb25zO1xuICBpZiAoYXBwU2hlbGxSb3V0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcm91dGVzLmFkZChhcHBTaGVsbFJvdXRlKTtcbiAgfVxuXG4gIGlmIChyb3V0ZXNGaWxlKSB7XG4gICAgY29uc3Qgcm91dGVzRnJvbUZpbGUgPSAoYXdhaXQgcmVhZEZpbGUocm91dGVzRmlsZSwgJ3V0ZjgnKSkuc3BsaXQoL1xccj9cXG4vKTtcbiAgICBmb3IgKGxldCByb3V0ZSBvZiByb3V0ZXNGcm9tRmlsZSkge1xuICAgICAgcm91dGUgPSByb3V0ZS50cmltKCk7XG4gICAgICBpZiAocm91dGUpIHtcbiAgICAgICAgcm91dGVzLmFkZChyb3V0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpc2NvdmVyUm91dGVzKSB7XG4gICAgY29uc3QgeyBwYXJzZUFuZ3VsYXJSb3V0ZXMgfSA9IGF3YWl0IGltcG9ydCgnZ3Vlc3MtcGFyc2VyJyk7XG4gICAgZm9yIChjb25zdCB7IHBhdGggfSBvZiBwYXJzZUFuZ3VsYXJSb3V0ZXModHNDb25maWdQYXRoKSkge1xuICAgICAgLy8gRXhjbHVkZSBkeW5hbWljIHJvdXRlcyBhcyB0aGVzZSBjYW5ub3QgYmUgcHJlLXJlbmRlcmVkLlxuICAgICAgaWYgKCEvWyo6XS8udGVzdChwYXRoKSkge1xuICAgICAgICByb3V0ZXMuYWRkKHBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByb3V0ZXM7XG59XG4iXX0=
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvc2VydmVyLXJlbmRlcmluZy9wcmVyZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBR0gsK0NBQTRDO0FBQzVDLHlDQUFpRDtBQUNqRCx1Q0FBeUM7QUFDekMsc0RBQThCO0FBaUJ2QixLQUFLLFVBQVUsY0FBYyxDQUNsQyxhQUFxQixFQUNyQixrQkFBbUMsRUFBRSxFQUNyQyxtQkFBcUMsRUFBRSxFQUN2QyxXQUFtQyxFQUNuQyxRQUFnQixFQUNoQixpQkFBMkIsRUFDM0IsVUFBVSxHQUFHLENBQUMsRUFDZCxPQUFPLEdBQUcsS0FBSztJQU1mLE1BQU0sTUFBTSxHQUEyQixFQUFFLENBQUM7SUFDMUMsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixNQUFNLG9CQUFvQixHQUEyQixFQUFFLENBQUM7SUFFeEQsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLFdBQVcsRUFBRTtRQUN4QyxRQUFRLElBQUEsbUJBQU8sRUFBQyxJQUFJLENBQUMsRUFBRTtZQUNyQixLQUFLLE1BQU0sQ0FBQyxDQUFDLGlEQUFpRDtZQUM5RCxLQUFLLE1BQU0sRUFBRSwyQ0FBMkM7Z0JBQ3RELG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDbEMsTUFBTTtTQUNUO0tBQ0Y7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQ3hFLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsUUFBUSxFQUNSLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsT0FB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QUMsRUFBRSxDQUFDO1NBQ1AsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFOUMsS0FBSyxNQUFNLEtBQUssSUFBSSxlQUFlLEVBQUU7UUFDbkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNuQjtJQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBYTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBPdXRwdXRGaWxlIH0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgZXh0bmFtZSwgam9pbiwgcG9zaXggfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCBQaXNjaW5hIGZyb20gJ3Bpc2NpbmEnO1xuaW1wb3J0IHR5cGUgeyBSZW5kZXJSZXN1bHQsIFNlcnZlckNvbnRleHQgfSBmcm9tICcuL3JlbmRlci1wYWdlJztcbmltcG9ydCB0eXBlIHsgUmVuZGVyV29ya2VyRGF0YSB9IGZyb20gJy4vcmVuZGVyLXdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlcnNFeHRyYWN0b3JXb3JrZXJSZXN1bHQsXG4gIFJvdXRlc0V4dHJhY3RvcldvcmtlckRhdGEsXG59IGZyb20gJy4vcm91dGVzLWV4dHJhY3Rvci13b3JrZXInO1xuXG5pbnRlcmZhY2UgUHJlcmVuZGVyT3B0aW9ucyB7XG4gIHJvdXRlc0ZpbGU/OiBzdHJpbmc7XG4gIGRpc2NvdmVyUm91dGVzPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEFwcFNoZWxsT3B0aW9ucyB7XG4gIHJvdXRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcmVuZGVyUGFnZXMoXG4gIHdvcmtzcGFjZVJvb3Q6IHN0cmluZyxcbiAgYXBwU2hlbGxPcHRpb25zOiBBcHBTaGVsbE9wdGlvbnMgPSB7fSxcbiAgcHJlcmVuZGVyT3B0aW9uczogUHJlcmVuZGVyT3B0aW9ucyA9IHt9LFxuICBvdXRwdXRGaWxlczogUmVhZG9ubHk8T3V0cHV0RmlsZVtdPixcbiAgZG9jdW1lbnQ6IHN0cmluZyxcbiAgaW5saW5lQ3JpdGljYWxDc3M/OiBib29sZWFuLFxuICBtYXhUaHJlYWRzID0gMSxcbiAgdmVyYm9zZSA9IGZhbHNlLFxuKTogUHJvbWlzZTx7XG4gIG91dHB1dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgd2FybmluZ3M6IHN0cmluZ1tdO1xuICBlcnJvcnM6IHN0cmluZ1tdO1xufT4ge1xuICBjb25zdCBvdXRwdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgb3V0cHV0RmlsZXNGb3JXb3JrZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBmb3IgKGNvbnN0IHsgdGV4dCwgcGF0aCB9IG9mIG91dHB1dEZpbGVzKSB7XG4gICAgc3dpdGNoIChleHRuYW1lKHBhdGgpKSB7XG4gICAgICBjYXNlICcubWpzJzogLy8gQ29udGFpbnMgdGhlIHNlcnZlciBydW5uYWJsZSBhcHBsaWNhdGlvbiBjb2RlLlxuICAgICAgY2FzZSAnLmNzcyc6IC8vIEdsb2JhbCBzdHlsZXMgZm9yIGNyaXRpY2FsIENTUyBpbmxpbmluZy5cbiAgICAgICAgb3V0cHV0RmlsZXNGb3JXb3JrZXJbcGF0aF0gPSB0ZXh0O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjb25zdCB7IHJvdXRlczogYWxsUm91dGVzLCB3YXJuaW5nczogcm91dGVzV2FybmluZ3MgfSA9IGF3YWl0IGdldEFsbFJvdXRlcyhcbiAgICB3b3Jrc3BhY2VSb290LFxuICAgIG91dHB1dEZpbGVzRm9yV29ya2VyLFxuICAgIGRvY3VtZW50LFxuICAgIGFwcFNoZWxsT3B0aW9ucyxcbiAgICBwcmVyZW5kZXJPcHRpb25zLFxuICAgIHZlcmJvc2UsXG4gICk7XG5cbiAgaWYgKHJvdXRlc1dhcm5pbmdzPy5sZW5ndGgpIHtcbiAgICB3YXJuaW5ncy5wdXNoKC4uLnJvdXRlc1dhcm5pbmdzKTtcbiAgfVxuXG4gIGlmIChhbGxSb3V0ZXMuc2l6ZSA8IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzLFxuICAgICAgd2FybmluZ3MsXG4gICAgICBvdXRwdXQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHJlbmRlcldvcmtlciA9IG5ldyBQaXNjaW5hKHtcbiAgICBmaWxlbmFtZTogcmVxdWlyZS5yZXNvbHZlKCcuL3JlbmRlci13b3JrZXInKSxcbiAgICBtYXhUaHJlYWRzOiBNYXRoLm1pbihhbGxSb3V0ZXMuc2l6ZSwgbWF4VGhyZWFkcyksXG4gICAgd29ya2VyRGF0YToge1xuICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgIG91dHB1dEZpbGVzOiBvdXRwdXRGaWxlc0ZvcldvcmtlcixcbiAgICAgIGlubGluZUNyaXRpY2FsQ3NzLFxuICAgICAgZG9jdW1lbnQsXG4gICAgfSBhcyBSZW5kZXJXb3JrZXJEYXRhLFxuICAgIGV4ZWNBcmd2OiBbXG4gICAgICAnLS1uby13YXJuaW5ncycsIC8vIFN1cHByZXNzIGBFeHBlcmltZW50YWxXYXJuaW5nOiBDdXN0b20gRVNNIExvYWRlcnMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUuLi5gLlxuICAgICAgJy0tbG9hZGVyJyxcbiAgICAgIHBhdGhUb0ZpbGVVUkwoam9pbihfX2Rpcm5hbWUsICdlc20taW4tbWVtb3J5LWZpbGUtbG9hZGVyLmpzJykpLmhyZWYsIC8vIExvYWRlciBjYW5ub3QgYmUgYW4gYWJzb2x1dGUgcGF0aCBvbiBXaW5kb3dzLlxuICAgIF0sXG4gIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVuZGVyaW5nUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuICAgIGNvbnN0IGFwcFNoZWxsUm91dGUgPSBhcHBTaGVsbE9wdGlvbnMucm91dGUgJiYgcmVtb3ZlTGVhZGluZ1NsYXNoKGFwcFNoZWxsT3B0aW9ucy5yb3V0ZSk7XG5cbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIGFsbFJvdXRlcykge1xuICAgICAgY29uc3QgaXNBcHBTaGVsbFJvdXRlID0gYXBwU2hlbGxSb3V0ZSA9PT0gcm91dGU7XG4gICAgICBjb25zdCBzZXJ2ZXJDb250ZXh0OiBTZXJ2ZXJDb250ZXh0ID0gaXNBcHBTaGVsbFJvdXRlID8gJ2FwcC1zaGVsbCcgOiAnc3NnJztcblxuICAgICAgY29uc3QgcmVuZGVyOiBQcm9taXNlPFJlbmRlclJlc3VsdD4gPSByZW5kZXJXb3JrZXIucnVuKHsgcm91dGUsIHNlcnZlckNvbnRleHQgfSk7XG4gICAgICBjb25zdCByZW5kZXJSZXN1bHQ6IFByb21pc2U8dm9pZD4gPSByZW5kZXIudGhlbigoeyBjb250ZW50LCB3YXJuaW5ncywgZXJyb3JzIH0pID0+IHtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG91dFBhdGggPSBpc0FwcFNoZWxsUm91dGUgPyAnaW5kZXguaHRtbCcgOiBwb3NpeC5qb2luKHJvdXRlLCAnaW5kZXguaHRtbCcpO1xuICAgICAgICAgIG91dHB1dFtvdXRQYXRoXSA9IGNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2FybmluZ3MpIHtcbiAgICAgICAgICB3YXJuaW5ncy5wdXNoKC4uLndhcm5pbmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCguLi5lcnJvcnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmVuZGVyaW5nUHJvbWlzZXMucHVzaChyZW5kZXJSZXN1bHQpO1xuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKHJlbmRlcmluZ1Byb21pc2VzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB2b2lkIHJlbmRlcldvcmtlci5kZXN0cm95KCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVycm9ycyxcbiAgICB3YXJuaW5ncyxcbiAgICBvdXRwdXQsXG4gIH07XG59XG5cbmNsYXNzIFJvdXRlc1NldCBleHRlbmRzIFNldDxzdHJpbmc+IHtcbiAgb3ZlcnJpZGUgYWRkKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICByZXR1cm4gc3VwZXIuYWRkKHJlbW92ZUxlYWRpbmdTbGFzaCh2YWx1ZSkpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbFJvdXRlcyhcbiAgd29ya3NwYWNlUm9vdDogc3RyaW5nLFxuICBvdXRwdXRGaWxlc0ZvcldvcmtlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgZG9jdW1lbnQ6IHN0cmluZyxcbiAgYXBwU2hlbGxPcHRpb25zOiBBcHBTaGVsbE9wdGlvbnMsXG4gIHByZXJlbmRlck9wdGlvbnM6IFByZXJlbmRlck9wdGlvbnMsXG4gIHZlcmJvc2U6IGJvb2xlYW4sXG4pOiBQcm9taXNlPHsgcm91dGVzOiBTZXQ8c3RyaW5nPjsgd2FybmluZ3M/OiBzdHJpbmdbXSB9PiB7XG4gIGNvbnN0IHsgcm91dGVzRmlsZSwgZGlzY292ZXJSb3V0ZXMgfSA9IHByZXJlbmRlck9wdGlvbnM7XG4gIGNvbnN0IHJvdXRlcyA9IG5ldyBSb3V0ZXNTZXQoKTtcblxuICBjb25zdCB7IHJvdXRlOiBhcHBTaGVsbFJvdXRlIH0gPSBhcHBTaGVsbE9wdGlvbnM7XG4gIGlmIChhcHBTaGVsbFJvdXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICByb3V0ZXMuYWRkKGFwcFNoZWxsUm91dGUpO1xuICB9XG5cbiAgaWYgKHJvdXRlc0ZpbGUpIHtcbiAgICBjb25zdCByb3V0ZXNGcm9tRmlsZSA9IChhd2FpdCByZWFkRmlsZShyb3V0ZXNGaWxlLCAndXRmOCcpKS5zcGxpdCgvXFxyP1xcbi8pO1xuICAgIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzRnJvbUZpbGUpIHtcbiAgICAgIHJvdXRlcy5hZGQocm91dGUudHJpbSgpKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWRpc2NvdmVyUm91dGVzKSB7XG4gICAgcmV0dXJuIHsgcm91dGVzIH07XG4gIH1cblxuICBjb25zdCByZW5kZXJXb3JrZXIgPSBuZXcgUGlzY2luYSh7XG4gICAgZmlsZW5hbWU6IHJlcXVpcmUucmVzb2x2ZSgnLi9yb3V0ZXMtZXh0cmFjdG9yLXdvcmtlcicpLFxuICAgIG1heFRocmVhZHM6IDEsXG4gICAgd29ya2VyRGF0YToge1xuICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgIG91dHB1dEZpbGVzOiBvdXRwdXRGaWxlc0ZvcldvcmtlcixcbiAgICAgIGRvY3VtZW50LFxuICAgICAgdmVyYm9zZSxcbiAgICB9IGFzIFJvdXRlc0V4dHJhY3RvcldvcmtlckRhdGEsXG4gICAgZXhlY0FyZ3Y6IFtcbiAgICAgICctLW5vLXdhcm5pbmdzJywgLy8gU3VwcHJlc3MgYEV4cGVyaW1lbnRhbFdhcm5pbmc6IEN1c3RvbSBFU00gTG9hZGVycyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZS4uLmAuXG4gICAgICAnLS1sb2FkZXInLFxuICAgICAgcGF0aFRvRmlsZVVSTChqb2luKF9fZGlybmFtZSwgJ2VzbS1pbi1tZW1vcnktZmlsZS1sb2FkZXIuanMnKSkuaHJlZiwgLy8gTG9hZGVyIGNhbm5vdCBiZSBhbiBhYnNvbHV0ZSBwYXRoIG9uIFdpbmRvd3MuXG4gICAgXSxcbiAgfSk7XG5cbiAgY29uc3QgeyByb3V0ZXM6IGV4dHJhY3RlZFJvdXRlcywgd2FybmluZ3MgfTogUm91dGVyc0V4dHJhY3RvcldvcmtlclJlc3VsdCA9IGF3YWl0IHJlbmRlcldvcmtlclxuICAgIC5ydW4oe30pXG4gICAgLmZpbmFsbHkoKCkgPT4gdm9pZCByZW5kZXJXb3JrZXIuZGVzdHJveSgpKTtcblxuICBmb3IgKGNvbnN0IHJvdXRlIG9mIGV4dHJhY3RlZFJvdXRlcykge1xuICAgIHJvdXRlcy5hZGQocm91dGUpO1xuICB9XG5cbiAgcmV0dXJuIHsgcm91dGVzLCB3YXJuaW5ncyB9O1xufVxuXG5mdW5jdGlvbiByZW1vdmVMZWFkaW5nU2xhc2godmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZS5jaGFyQXQoMCkgPT09ICcvJyA/IHZhbHVlLnNsaWNlKDEpIDogdmFsdWU7XG59XG4iXX0=
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
-
import
|
|
9
|
-
import type { renderApplication, renderModule, ɵSERVER_CONTEXT } from '@angular/platform-server';
|
|
8
|
+
import { MainServerBundleExports } from './main-bundle-exports';
|
|
10
9
|
export interface RenderOptions {
|
|
11
10
|
route: string;
|
|
12
11
|
serverContext: ServerContext;
|
|
@@ -21,18 +20,7 @@ export interface RenderResult {
|
|
|
21
20
|
content?: string;
|
|
22
21
|
}
|
|
23
22
|
export type ServerContext = 'app-shell' | 'ssg' | 'ssr';
|
|
24
|
-
interface MainServerBundleExports {
|
|
25
|
-
/** An internal token that allows providing extra information about the server context. */
|
|
26
|
-
ɵSERVER_CONTEXT: typeof ɵSERVER_CONTEXT;
|
|
27
|
-
/** Render an NgModule application. */
|
|
28
|
-
renderModule: typeof renderModule;
|
|
29
|
-
/** Method to render a standalone application. */
|
|
30
|
-
renderApplication: typeof renderApplication;
|
|
31
|
-
/** Standalone application bootstrapping function. */
|
|
32
|
-
default: (() => Promise<ApplicationRef>) | Type<unknown>;
|
|
33
|
-
}
|
|
34
23
|
/**
|
|
35
24
|
* Renders each route in routes and writes them to <outputPath>/<route>/index.html.
|
|
36
25
|
*/
|
|
37
26
|
export declare function renderPage({ route, serverContext, document, inlineCriticalCss, outputFiles, loadBundle, }: RenderOptions): Promise<RenderResult>;
|
|
38
|
-
export {};
|
|
@@ -57,7 +57,7 @@ async function renderPage({ route, serverContext, document, inlineCriticalCss, o
|
|
|
57
57
|
}
|
|
58
58
|
exports.renderPage = renderPage;
|
|
59
59
|
function isBootstrapFn(value) {
|
|
60
|
-
// We can differentiate between a module and a bootstrap function by reading `
|
|
60
|
+
// We can differentiate between a module and a bootstrap function by reading compiler-generated `ɵmod` static property:
|
|
61
61
|
return typeof value === 'function' && !('ɵmod' in value);
|
|
62
62
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9zZXJ2ZXItcmVuZGVyaW5nL3JlbmRlci1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUdILHlDQUFxQztBQUNyQywyRUFBK0U7QUFDL0UsMENBQTRDO0FBb0I1Qzs7R0FFRztBQUNJLEtBQUssVUFBVSxVQUFVLENBQUMsRUFDL0IsS0FBSyxFQUNMLGFBQWEsRUFDYixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxVQUFVLEdBQUcsd0JBQWEsR0FDWjtJQUNkLE1BQU0sRUFDSixPQUFPLEVBQUUsc0JBQXNCLEVBQy9CLGVBQWUsRUFDZixZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLEdBQUcsTUFBTSxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUxQyxNQUFNLGlCQUFpQixHQUFxQjtRQUMxQztZQUNFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFFBQVEsRUFBRSxhQUFhO1NBQ3hCO0tBQ0YsQ0FBQztJQUVGLElBQUksSUFBd0IsQ0FBQztJQUU3QixJQUFJLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1FBQ3pDLElBQUksR0FBRyxNQUFNLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFO1lBQ3JELFFBQVE7WUFDUixHQUFHLEVBQUUsS0FBSztZQUNWLGlCQUFpQjtTQUNsQixDQUFDLENBQUM7S0FDSjtTQUFNO1FBQ0wsSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDLHNCQUFzQixFQUFFO1lBQ2hELFFBQVE7WUFDUixHQUFHLEVBQUUsS0FBSztZQUNWLGNBQWMsRUFBRSxpQkFBaUI7U0FDbEMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxJQUFJLGlCQUFpQixFQUFFO1FBQ3JCLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxnREFBMEIsQ0FBQztZQUNoRSxNQUFNLEVBQUUsS0FBSztZQUNiLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQzVCLFFBQVEsR0FBRyxJQUFBLG9CQUFRLEVBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO29CQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixRQUFRLEVBQUUsQ0FBQyxDQUFDO2lCQUM1RDtnQkFFRCxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDckU7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLElBQUk7S0FDZCxDQUFDO0FBQ0osQ0FBQztBQTFERCxnQ0EwREM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFjO0lBQ25DLHVIQUF1SDtJQUN2SCxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHBsaWNhdGlvblJlZiwgU3RhdGljUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IElubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yIH0gZnJvbSAnLi4vaW5kZXgtZmlsZS9pbmxpbmUtY3JpdGljYWwtY3NzJztcbmltcG9ydCB7IGxvYWRFc21Nb2R1bGUgfSBmcm9tICcuLi9sb2FkLWVzbSc7XG5pbXBvcnQgeyBNYWluU2VydmVyQnVuZGxlRXhwb3J0cyB9IGZyb20gJy4vbWFpbi1idW5kbGUtZXhwb3J0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyT3B0aW9ucyB7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIHNlcnZlckNvbnRleHQ6IFNlcnZlckNvbnRleHQ7XG4gIG91dHB1dEZpbGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBkb2N1bWVudDogc3RyaW5nO1xuICBpbmxpbmVDcml0aWNhbENzcz86IGJvb2xlYW47XG4gIGxvYWRCdW5kbGU/OiAocGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPE1haW5TZXJ2ZXJCdW5kbGVFeHBvcnRzPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJSZXN1bHQge1xuICBlcnJvcnM/OiBzdHJpbmdbXTtcbiAgd2FybmluZ3M/OiBzdHJpbmdbXTtcbiAgY29udGVudD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgU2VydmVyQ29udGV4dCA9ICdhcHAtc2hlbGwnIHwgJ3NzZycgfCAnc3NyJztcblxuLyoqXG4gKiBSZW5kZXJzIGVhY2ggcm91dGUgaW4gcm91dGVzIGFuZCB3cml0ZXMgdGhlbSB0byA8b3V0cHV0UGF0aD4vPHJvdXRlPi9pbmRleC5odG1sLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnZSh7XG4gIHJvdXRlLFxuICBzZXJ2ZXJDb250ZXh0LFxuICBkb2N1bWVudCxcbiAgaW5saW5lQ3JpdGljYWxDc3MsXG4gIG91dHB1dEZpbGVzLFxuICBsb2FkQnVuZGxlID0gbG9hZEVzbU1vZHVsZSxcbn06IFJlbmRlck9wdGlvbnMpOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCB7XG4gICAgZGVmYXVsdDogYm9vdHN0cmFwQXBwRm5Pck1vZHVsZSxcbiAgICDJtVNFUlZFUl9DT05URVhULFxuICAgIHJlbmRlck1vZHVsZSxcbiAgICByZW5kZXJBcHBsaWNhdGlvbixcbiAgfSA9IGF3YWl0IGxvYWRCdW5kbGUoJy4vbWFpbi5zZXJ2ZXIubWpzJyk7XG5cbiAgY29uc3QgcGxhdGZvcm1Qcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogybVTRVJWRVJfQ09OVEVYVCxcbiAgICAgIHVzZVZhbHVlOiBzZXJ2ZXJDb250ZXh0LFxuICAgIH0sXG4gIF07XG5cbiAgbGV0IGh0bWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBpZiAoaXNCb290c3RyYXBGbihib290c3RyYXBBcHBGbk9yTW9kdWxlKSkge1xuICAgIGh0bWwgPSBhd2FpdCByZW5kZXJBcHBsaWNhdGlvbihib290c3RyYXBBcHBGbk9yTW9kdWxlLCB7XG4gICAgICBkb2N1bWVudCxcbiAgICAgIHVybDogcm91dGUsXG4gICAgICBwbGF0Zm9ybVByb3ZpZGVycyxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBodG1sID0gYXdhaXQgcmVuZGVyTW9kdWxlKGJvb3RzdHJhcEFwcEZuT3JNb2R1bGUsIHtcbiAgICAgIGRvY3VtZW50LFxuICAgICAgdXJsOiByb3V0ZSxcbiAgICAgIGV4dHJhUHJvdmlkZXJzOiBwbGF0Zm9ybVByb3ZpZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpbmxpbmVDcml0aWNhbENzcykge1xuICAgIGNvbnN0IGlubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yID0gbmV3IElubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yKHtcbiAgICAgIG1pbmlmeTogZmFsc2UsIC8vIENTUyBoYXMgYWxyZWFkeSBiZWVuIG1pbmlmaWVkIGR1cmluZyB0aGUgYnVpbGQuXG4gICAgICByZWFkQXNzZXQ6IGFzeW5jIChmaWxlUGF0aCkgPT4ge1xuICAgICAgICBmaWxlUGF0aCA9IGJhc2VuYW1lKGZpbGVQYXRoKTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IG91dHB1dEZpbGVzW2ZpbGVQYXRoXTtcbiAgICAgICAgaWYgKGNvbnRlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3V0cHV0IGZpbGUgZG9lcyBub3QgZXhpc3Q6ICR7ZmlsZVBhdGh9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaW5saW5lQ3JpdGljYWxDc3NQcm9jZXNzb3IucHJvY2VzcyhodG1sLCB7IG91dHB1dFBhdGg6ICcnIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZW50OiBodG1sLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0Jvb3RzdHJhcEZuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4ge1xuICAvLyBXZSBjYW4gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGEgbW9kdWxlIGFuZCBhIGJvb3RzdHJhcCBmdW5jdGlvbiBieSByZWFkaW5nIGNvbXBpbGVyLWdlbmVyYXRlZCBgybVtb2RgIHN0YXRpYyBwcm9wZXJ0eTpcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiAhKCfJtW1vZCcgaW4gdmFsdWUpO1xufVxuIl19
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
+
import type { ESMInMemoryFileLoaderWorkerData } from './esm-in-memory-file-loader';
|
|
8
9
|
import { RenderResult, ServerContext } from './render-page';
|
|
9
|
-
export interface
|
|
10
|
-
outputFiles: Record<string, string>;
|
|
10
|
+
export interface RenderWorkerData extends ESMInMemoryFileLoaderWorkerData {
|
|
11
11
|
document: string;
|
|
12
12
|
inlineCriticalCss?: boolean;
|
|
13
13
|
}
|
|
@@ -17,4 +17,4 @@ function default_1(options) {
|
|
|
17
17
|
return (0, render_page_1.renderPage)({ ...options, outputFiles, document, inlineCriticalCss });
|
|
18
18
|
}
|
|
19
19
|
exports.default = default_1;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3V0aWxzL3NlcnZlci1yZW5kZXJpbmcvcmVuZGVyLXdvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQUVILDZEQUFpRDtBQUVqRCwrQ0FBd0U7QUFZeEU7O0dBRUc7QUFDSCxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLGdDQUE4QixDQUFDO0FBRXBGLG1CQUF5QixPQUFzQjtJQUM3QyxPQUFPLElBQUEsd0JBQVUsRUFBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFGRCw0QkFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyB3b3JrZXJEYXRhIH0gZnJvbSAnbm9kZTp3b3JrZXJfdGhyZWFkcyc7XG5pbXBvcnQgdHlwZSB7IEVTTUluTWVtb3J5RmlsZUxvYWRlcldvcmtlckRhdGEgfSBmcm9tICcuL2VzbS1pbi1tZW1vcnktZmlsZS1sb2FkZXInO1xuaW1wb3J0IHsgUmVuZGVyUmVzdWx0LCBTZXJ2ZXJDb250ZXh0LCByZW5kZXJQYWdlIH0gZnJvbSAnLi9yZW5kZXItcGFnZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyV29ya2VyRGF0YSBleHRlbmRzIEVTTUluTWVtb3J5RmlsZUxvYWRlcldvcmtlckRhdGEge1xuICBkb2N1bWVudDogc3RyaW5nO1xuICBpbmxpbmVDcml0aWNhbENzcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyT3B0aW9ucyB7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIHNlcnZlckNvbnRleHQ6IFNlcnZlckNvbnRleHQ7XG59XG5cbi8qKlxuICogVGhpcyBpcyBwYXNzZWQgYXMgd29ya2VyRGF0YSB3aGVuIHNldHRpbmcgdXAgdGhlIHdvcmtlciB2aWEgdGhlIGBwaXNjaW5hYCBwYWNrYWdlLlxuICovXG5jb25zdCB7IG91dHB1dEZpbGVzLCBkb2N1bWVudCwgaW5saW5lQ3JpdGljYWxDc3MgfSA9IHdvcmtlckRhdGEgYXMgUmVuZGVyV29ya2VyRGF0YTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKG9wdGlvbnM6IFJlbmRlck9wdGlvbnMpOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICByZXR1cm4gcmVuZGVyUGFnZSh7IC4uLm9wdGlvbnMsIG91dHB1dEZpbGVzLCBkb2N1bWVudCwgaW5saW5lQ3JpdGljYWxDc3MgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
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.io/license
|
|
7
|
+
*/
|
|
8
|
+
import type { ESMInMemoryFileLoaderWorkerData } from './esm-in-memory-file-loader';
|
|
9
|
+
export interface RoutesExtractorWorkerData extends ESMInMemoryFileLoaderWorkerData {
|
|
10
|
+
document: string;
|
|
11
|
+
verbose: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface RoutersExtractorWorkerResult {
|
|
14
|
+
routes: string[];
|
|
15
|
+
warnings?: string[];
|
|
16
|
+
}
|
|
17
|
+
export default function (): Promise<RoutersExtractorWorkerResult>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const node_worker_threads_1 = require("node:worker_threads");
|
|
11
|
+
const load_esm_1 = require("../load-esm");
|
|
12
|
+
/**
|
|
13
|
+
* This is passed as workerData when setting up the worker via the `piscina` package.
|
|
14
|
+
*/
|
|
15
|
+
const { document, verbose } = node_worker_threads_1.workerData;
|
|
16
|
+
async function default_1() {
|
|
17
|
+
const { default: bootstrapAppFnOrModule, extractRoutes } = await (0, load_esm_1.loadEsmModule)('./main.server.mjs');
|
|
18
|
+
const skippedRedirects = [];
|
|
19
|
+
const skippedOthers = [];
|
|
20
|
+
const routes = [];
|
|
21
|
+
for await (const { route, success, redirect } of extractRoutes(bootstrapAppFnOrModule, document)) {
|
|
22
|
+
if (success) {
|
|
23
|
+
routes.push(route);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (redirect) {
|
|
27
|
+
skippedRedirects.push(route);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
skippedOthers.push(route);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (!verbose) {
|
|
34
|
+
return { routes };
|
|
35
|
+
}
|
|
36
|
+
let warnings;
|
|
37
|
+
if (skippedOthers.length) {
|
|
38
|
+
(warnings ??= []).push('The following routes were skipped from prerendering because they contain routes with dynamic parameters:\n' +
|
|
39
|
+
skippedOthers.join('\n'));
|
|
40
|
+
}
|
|
41
|
+
if (skippedRedirects.length) {
|
|
42
|
+
(warnings ??= []).push('The following routes were skipped from prerendering because they contain redirects:\n', skippedRedirects.join('\n'));
|
|
43
|
+
}
|
|
44
|
+
return { routes, warnings };
|
|
45
|
+
}
|
|
46
|
+
exports.default = default_1;
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLWV4dHJhY3Rvci13b3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9zZXJ2ZXItcmVuZGVyaW5nL3JvdXRlcy1leHRyYWN0b3Itd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsNkRBQWlEO0FBQ2pELDBDQUE0QztBQWM1Qzs7R0FFRztBQUNILE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsZ0NBQXVDLENBQUM7QUFFdkQsS0FBSztJQUNsQixNQUFNLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxHQUN0RCxNQUFNLElBQUEsd0JBQWEsRUFBMEIsbUJBQW1CLENBQUMsQ0FBQztJQUVwRSxNQUFNLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUN0QyxNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7SUFDbkMsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBRTVCLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLGFBQWEsQ0FDNUQsc0JBQXNCLEVBQ3RCLFFBQVEsQ0FDVCxFQUFFO1FBQ0QsSUFBSSxPQUFPLEVBQUU7WUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLFNBQVM7U0FDVjtRQUVELElBQUksUUFBUSxFQUFFO1lBQ1osZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlCO2FBQU07WUFDTCxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO0tBQ0Y7SUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1osT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0tBQ25CO0lBRUQsSUFBSSxRQUE4QixDQUFDO0lBQ25DLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtRQUN4QixDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BCLDRHQUE0RztZQUMxRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUMzQixDQUFDO0tBQ0g7SUFFRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtRQUMzQixDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BCLHVGQUF1RixFQUN2RixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQzVCLENBQUM7S0FDSDtJQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQTVDRCw0QkE0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgd29ya2VyRGF0YSB9IGZyb20gJ25vZGU6d29ya2VyX3RocmVhZHMnO1xuaW1wb3J0IHsgbG9hZEVzbU1vZHVsZSB9IGZyb20gJy4uL2xvYWQtZXNtJztcbmltcG9ydCB0eXBlIHsgRVNNSW5NZW1vcnlGaWxlTG9hZGVyV29ya2VyRGF0YSB9IGZyb20gJy4vZXNtLWluLW1lbW9yeS1maWxlLWxvYWRlcic7XG5pbXBvcnQgeyBNYWluU2VydmVyQnVuZGxlRXhwb3J0cyB9IGZyb20gJy4vbWFpbi1idW5kbGUtZXhwb3J0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVzRXh0cmFjdG9yV29ya2VyRGF0YSBleHRlbmRzIEVTTUluTWVtb3J5RmlsZUxvYWRlcldvcmtlckRhdGEge1xuICBkb2N1bWVudDogc3RyaW5nO1xuICB2ZXJib3NlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlcnNFeHRyYWN0b3JXb3JrZXJSZXN1bHQge1xuICByb3V0ZXM6IHN0cmluZ1tdO1xuICB3YXJuaW5ncz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgcGFzc2VkIGFzIHdvcmtlckRhdGEgd2hlbiBzZXR0aW5nIHVwIHRoZSB3b3JrZXIgdmlhIHRoZSBgcGlzY2luYWAgcGFja2FnZS5cbiAqL1xuY29uc3QgeyBkb2N1bWVudCwgdmVyYm9zZSB9ID0gd29ya2VyRGF0YSBhcyBSb3V0ZXNFeHRyYWN0b3JXb3JrZXJEYXRhO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiAoKTogUHJvbWlzZTxSb3V0ZXJzRXh0cmFjdG9yV29ya2VyUmVzdWx0PiB7XG4gIGNvbnN0IHsgZGVmYXVsdDogYm9vdHN0cmFwQXBwRm5Pck1vZHVsZSwgZXh0cmFjdFJvdXRlcyB9ID1cbiAgICBhd2FpdCBsb2FkRXNtTW9kdWxlPE1haW5TZXJ2ZXJCdW5kbGVFeHBvcnRzPignLi9tYWluLnNlcnZlci5tanMnKTtcblxuICBjb25zdCBza2lwcGVkUmVkaXJlY3RzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBza2lwcGVkT3RoZXJzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCByb3V0ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIGF3YWl0IChjb25zdCB7IHJvdXRlLCBzdWNjZXNzLCByZWRpcmVjdCB9IG9mIGV4dHJhY3RSb3V0ZXMoXG4gICAgYm9vdHN0cmFwQXBwRm5Pck1vZHVsZSxcbiAgICBkb2N1bWVudCxcbiAgKSkge1xuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICByb3V0ZXMucHVzaChyb3V0ZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocmVkaXJlY3QpIHtcbiAgICAgIHNraXBwZWRSZWRpcmVjdHMucHVzaChyb3V0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNraXBwZWRPdGhlcnMucHVzaChyb3V0ZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF2ZXJib3NlKSB7XG4gICAgcmV0dXJuIHsgcm91dGVzIH07XG4gIH1cblxuICBsZXQgd2FybmluZ3M6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBpZiAoc2tpcHBlZE90aGVycy5sZW5ndGgpIHtcbiAgICAod2FybmluZ3MgPz89IFtdKS5wdXNoKFxuICAgICAgJ1RoZSBmb2xsb3dpbmcgcm91dGVzIHdlcmUgc2tpcHBlZCBmcm9tIHByZXJlbmRlcmluZyBiZWNhdXNlIHRoZXkgY29udGFpbiByb3V0ZXMgd2l0aCBkeW5hbWljIHBhcmFtZXRlcnM6XFxuJyArXG4gICAgICAgIHNraXBwZWRPdGhlcnMuam9pbignXFxuJyksXG4gICAgKTtcbiAgfVxuXG4gIGlmIChza2lwcGVkUmVkaXJlY3RzLmxlbmd0aCkge1xuICAgICh3YXJuaW5ncyA/Pz0gW10pLnB1c2goXG4gICAgICAnVGhlIGZvbGxvd2luZyByb3V0ZXMgd2VyZSBza2lwcGVkIGZyb20gcHJlcmVuZGVyaW5nIGJlY2F1c2UgdGhleSBjb250YWluIHJlZGlyZWN0czpcXG4nLFxuICAgICAgc2tpcHBlZFJlZGlyZWN0cy5qb2luKCdcXG4nKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHsgcm91dGVzLCB3YXJuaW5ncyB9O1xufVxuIl19
|