@angular-devkit/build-angular 16.1.0-rc.0 → 16.1.0
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 +21 -21
- package/plugins/karma.js +2 -2
- package/src/builders/browser/index.d.ts +1 -1
- package/src/builders/browser/index.js +5 -5
- package/src/builders/browser-esbuild/index.js +27 -376
- package/src/builders/browser-esbuild/options.js +2 -2
- package/src/builders/dev-server/load-proxy-config.d.ts +1 -6
- package/src/builders/dev-server/load-proxy-config.js +52 -13
- package/src/builders/dev-server/vite-server.js +3 -6
- package/src/builders/dev-server/webpack-server.d.ts +1 -1
- package/src/builders/dev-server/webpack-server.js +6 -6
- package/src/builders/extract-i18n/index.js +3 -3
- package/src/builders/karma/index.js +2 -2
- package/src/builders/server/index.js +4 -4
- package/src/tools/babel/plugins/adjust-static-class-members.js +354 -0
- package/src/tools/babel/plugins/adjust-typescript-enums.js +124 -0
- package/src/tools/babel/plugins/elide-angular-metadata.js +68 -0
- package/src/tools/babel/plugins/pure-toplevel-functions.js +91 -0
- package/src/tools/babel/presets/application.js +197 -0
- package/src/{babel → tools/babel}/webpack-loader.d.ts +1 -1
- package/src/tools/babel/webpack-loader.js +189 -0
- package/src/tools/esbuild/angular/angular-compilation.js +51 -0
- package/src/tools/esbuild/angular/angular-host.js +60 -0
- package/src/tools/esbuild/angular/aot-compilation.js +208 -0
- package/src/tools/esbuild/angular/compiler-plugin.js +314 -0
- package/src/tools/esbuild/angular/diagnostics.js +75 -0
- package/src/tools/esbuild/angular/jit-compilation.js +106 -0
- package/src/tools/esbuild/angular/jit-plugin-callbacks.js +113 -0
- package/src/tools/esbuild/angular/jit-resource-transformer.js +185 -0
- package/src/tools/esbuild/angular/uri.js +75 -0
- package/src/tools/esbuild/application-code-bundle.d.ts +11 -0
- package/src/tools/esbuild/application-code-bundle.js +111 -0
- package/src/{builders/browser-esbuild/esbuild.d.ts → tools/esbuild/bundler-context.d.ts} +1 -12
- package/src/tools/esbuild/bundler-context.js +194 -0
- package/src/tools/esbuild/bundler-execution-result.d.ts +44 -0
- package/src/tools/esbuild/bundler-execution-result.js +53 -0
- package/src/tools/esbuild/commonjs-checker.js +141 -0
- package/src/tools/esbuild/external-packages-plugin.d.ts +17 -0
- package/src/tools/esbuild/external-packages-plugin.js +49 -0
- package/src/{builders/browser-esbuild → tools/esbuild}/global-scripts.d.ts +1 -1
- package/src/tools/esbuild/global-scripts.js +139 -0
- package/src/{builders/browser-esbuild → tools/esbuild}/global-styles.d.ts +1 -1
- package/src/tools/esbuild/global-styles.js +67 -0
- package/src/tools/esbuild/index-html-generator.d.ts +12 -0
- package/src/tools/esbuild/index-html-generator.js +70 -0
- package/src/tools/esbuild/javascript-transformer-worker.js +76 -0
- package/src/tools/esbuild/javascript-transformer.js +108 -0
- package/src/tools/esbuild/license-extractor.js +159 -0
- package/src/tools/esbuild/load-result-cache.js +69 -0
- package/src/tools/esbuild/profiling.js +79 -0
- package/src/tools/esbuild/sourcemap-ignorelist-plugin.js +74 -0
- package/src/tools/esbuild/stylesheets/bundle-options.js +159 -0
- package/src/tools/esbuild/stylesheets/css-language.js +16 -0
- package/src/tools/esbuild/stylesheets/css-resource-plugin.js +88 -0
- package/src/tools/esbuild/stylesheets/less-language.js +127 -0
- package/src/tools/esbuild/stylesheets/sass-language.js +169 -0
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +218 -0
- package/src/tools/esbuild/utils.d.ts +30 -0
- package/src/tools/esbuild/utils.js +192 -0
- package/src/tools/esbuild/virtual-module-plugin.js +43 -0
- package/src/tools/esbuild/watcher.js +105 -0
- package/src/tools/sass/rebasing-importer.js +445 -0
- package/src/tools/sass/sass-service-legacy.js +176 -0
- package/src/tools/sass/sass-service.js +214 -0
- package/src/tools/sass/worker-legacy.js +44 -0
- package/src/tools/sass/worker.js +158 -0
- package/src/{webpack → tools/webpack}/configs/common.d.ts +1 -1
- package/src/tools/webpack/configs/common.js +421 -0
- package/src/{webpack → tools/webpack}/configs/dev-server.d.ts +1 -1
- package/src/tools/webpack/configs/dev-server.js +304 -0
- package/src/{webpack → tools/webpack}/configs/index.js +1 -1
- package/src/{webpack → tools/webpack}/configs/styles.d.ts +1 -1
- package/src/tools/webpack/configs/styles.js +396 -0
- package/src/{webpack → tools/webpack}/plugins/any-component-style-budget-checker.d.ts +1 -1
- package/src/tools/webpack/plugins/any-component-style-budget-checker.js +92 -0
- package/src/tools/webpack/plugins/builder-watch-plugin.js +99 -0
- package/src/tools/webpack/plugins/common-js-usage-warn-plugin.js +121 -0
- package/src/tools/webpack/plugins/css-optimizer-plugin.js +123 -0
- package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.js +75 -0
- package/src/tools/webpack/plugins/devtools-ignore-plugin.js +57 -0
- package/src/tools/webpack/plugins/esbuild-executor.js +121 -0
- package/src/tools/webpack/plugins/hmr/hmr-accept.js +185 -0
- package/src/tools/webpack/plugins/hmr/hmr-loader.js +25 -0
- package/src/{webpack → tools/webpack}/plugins/index-html-webpack-plugin.d.ts +1 -1
- package/src/tools/webpack/plugins/index-html-webpack-plugin.js +85 -0
- package/src/{webpack → tools/webpack}/plugins/index.js +1 -1
- package/src/tools/webpack/plugins/javascript-optimizer-plugin.js +166 -0
- package/src/tools/webpack/plugins/javascript-optimizer-worker.js +140 -0
- package/src/tools/webpack/plugins/json-stats-plugin.js +61 -0
- package/src/tools/webpack/plugins/karma/karma.js +270 -0
- package/src/tools/webpack/plugins/named-chunks-plugin.js +59 -0
- package/src/tools/webpack/plugins/occurrences-plugin.js +80 -0
- package/src/tools/webpack/plugins/postcss-cli-resources.js +176 -0
- package/src/tools/webpack/plugins/progress-plugin.js +39 -0
- package/src/tools/webpack/plugins/remove-hash-plugin.js +31 -0
- package/src/tools/webpack/plugins/scripts-webpack-plugin.js +180 -0
- package/src/tools/webpack/plugins/service-worker-plugin.js +46 -0
- package/src/tools/webpack/plugins/styles-webpack-plugin.js +73 -0
- package/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.js +52 -0
- package/src/tools/webpack/plugins/transfer-size-plugin.js +50 -0
- package/src/{webpack → tools/webpack}/plugins/typescript.d.ts +1 -1
- package/src/tools/webpack/plugins/typescript.js +51 -0
- package/src/tools/webpack/plugins/watch-files-logs-plugin.js +28 -0
- package/src/tools/webpack/utils/async-chunks.js +46 -0
- package/src/{webpack → tools/webpack}/utils/helpers.d.ts +2 -2
- package/src/tools/webpack/utils/helpers.js +293 -0
- package/src/{webpack → tools/webpack}/utils/stats.d.ts +2 -2
- package/src/tools/webpack/utils/stats.js +443 -0
- package/src/utils/bundle-calculator.js +2 -2
- package/src/utils/index-file/augment-index-html.d.ts +1 -1
- package/src/utils/index-file/augment-index-html.js +1 -1
- package/src/utils/normalize-asset-patterns.d.ts +1 -1
- package/src/utils/normalize-asset-patterns.js +1 -1
- package/src/utils/normalize-file-replacements.d.ts +1 -1
- package/src/utils/normalize-file-replacements.js +1 -1
- package/src/utils/package-chunk-sort.js +2 -2
- package/src/utils/webpack-browser-config.js +2 -2
- package/src/babel/plugins/adjust-static-class-members.js +0 -354
- package/src/babel/plugins/adjust-typescript-enums.js +0 -124
- package/src/babel/plugins/elide-angular-metadata.js +0 -68
- package/src/babel/plugins/pure-toplevel-functions.js +0 -91
- package/src/babel/presets/application.js +0 -197
- package/src/babel/webpack-loader.js +0 -189
- package/src/builders/browser-esbuild/angular/angular-compilation.js +0 -51
- package/src/builders/browser-esbuild/angular/angular-host.js +0 -60
- package/src/builders/browser-esbuild/angular/aot-compilation.js +0 -208
- package/src/builders/browser-esbuild/angular/compiler-plugin.js +0 -314
- package/src/builders/browser-esbuild/angular/diagnostics.js +0 -75
- package/src/builders/browser-esbuild/angular/jit-compilation.js +0 -106
- package/src/builders/browser-esbuild/angular/jit-plugin-callbacks.js +0 -113
- package/src/builders/browser-esbuild/angular/jit-resource-transformer.js +0 -185
- package/src/builders/browser-esbuild/angular/uri.js +0 -75
- package/src/builders/browser-esbuild/commonjs-checker.js +0 -141
- package/src/builders/browser-esbuild/esbuild.js +0 -206
- package/src/builders/browser-esbuild/global-scripts.js +0 -139
- package/src/builders/browser-esbuild/global-styles.js +0 -67
- package/src/builders/browser-esbuild/javascript-transformer-worker.js +0 -76
- package/src/builders/browser-esbuild/javascript-transformer.js +0 -108
- package/src/builders/browser-esbuild/license-extractor.js +0 -159
- package/src/builders/browser-esbuild/load-result-cache.js +0 -69
- package/src/builders/browser-esbuild/profiling.js +0 -79
- package/src/builders/browser-esbuild/sourcemap-ignorelist-plugin.js +0 -74
- package/src/builders/browser-esbuild/stylesheets/bundle-options.js +0 -159
- package/src/builders/browser-esbuild/stylesheets/css-language.js +0 -16
- package/src/builders/browser-esbuild/stylesheets/css-resource-plugin.js +0 -88
- package/src/builders/browser-esbuild/stylesheets/less-language.js +0 -127
- package/src/builders/browser-esbuild/stylesheets/sass-language.js +0 -169
- package/src/builders/browser-esbuild/stylesheets/stylesheet-plugin-factory.js +0 -218
- package/src/builders/browser-esbuild/virtual-module-plugin.js +0 -43
- package/src/builders/browser-esbuild/watcher.js +0 -105
- package/src/sass/rebasing-importer.js +0 -445
- package/src/sass/sass-service-legacy.js +0 -176
- package/src/sass/sass-service.js +0 -214
- package/src/sass/worker-legacy.js +0 -44
- package/src/sass/worker.js +0 -158
- package/src/webpack/configs/common.js +0 -421
- package/src/webpack/configs/dev-server.js +0 -304
- package/src/webpack/configs/styles.js +0 -396
- package/src/webpack/plugins/any-component-style-budget-checker.js +0 -92
- package/src/webpack/plugins/builder-watch-plugin.js +0 -99
- package/src/webpack/plugins/common-js-usage-warn-plugin.js +0 -121
- package/src/webpack/plugins/css-optimizer-plugin.js +0 -123
- package/src/webpack/plugins/dedupe-module-resolve-plugin.js +0 -75
- package/src/webpack/plugins/devtools-ignore-plugin.js +0 -57
- package/src/webpack/plugins/esbuild-executor.js +0 -121
- package/src/webpack/plugins/hmr/hmr-accept.js +0 -185
- package/src/webpack/plugins/hmr/hmr-loader.js +0 -25
- package/src/webpack/plugins/index-html-webpack-plugin.js +0 -85
- package/src/webpack/plugins/javascript-optimizer-plugin.js +0 -166
- package/src/webpack/plugins/javascript-optimizer-worker.js +0 -140
- package/src/webpack/plugins/json-stats-plugin.js +0 -61
- package/src/webpack/plugins/karma/karma.js +0 -270
- package/src/webpack/plugins/named-chunks-plugin.js +0 -59
- package/src/webpack/plugins/occurrences-plugin.js +0 -80
- package/src/webpack/plugins/postcss-cli-resources.js +0 -176
- package/src/webpack/plugins/progress-plugin.js +0 -39
- package/src/webpack/plugins/remove-hash-plugin.js +0 -31
- package/src/webpack/plugins/scripts-webpack-plugin.js +0 -180
- package/src/webpack/plugins/service-worker-plugin.js +0 -46
- package/src/webpack/plugins/styles-webpack-plugin.js +0 -73
- package/src/webpack/plugins/suppress-entry-chunks-webpack-plugin.js +0 -52
- package/src/webpack/plugins/transfer-size-plugin.js +0 -50
- package/src/webpack/plugins/typescript.js +0 -51
- package/src/webpack/plugins/watch-files-logs-plugin.js +0 -28
- package/src/webpack/utils/async-chunks.js +0 -46
- package/src/webpack/utils/helpers.js +0 -293
- package/src/webpack/utils/stats.js +0 -443
- /package/src/{babel → tools/babel}/babel-loader.d.ts +0 -0
- /package/src/{babel → tools/babel}/plugins/adjust-static-class-members.d.ts +0 -0
- /package/src/{babel → tools/babel}/plugins/adjust-typescript-enums.d.ts +0 -0
- /package/src/{babel → tools/babel}/plugins/elide-angular-metadata.d.ts +0 -0
- /package/src/{babel → tools/babel}/plugins/pure-toplevel-functions.d.ts +0 -0
- /package/src/{babel → tools/babel}/presets/application.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/angular/angular-compilation.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/angular/angular-host.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/angular/aot-compilation.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/angular/compiler-plugin.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/angular/diagnostics.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/angular/jit-compilation.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/angular/jit-plugin-callbacks.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/angular/jit-resource-transformer.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/angular/uri.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/commonjs-checker.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/javascript-transformer-worker.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/javascript-transformer.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/license-extractor.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/load-result-cache.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/profiling.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/sourcemap-ignorelist-plugin.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/bundle-options.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/css-language.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/css-resource-plugin.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/less-language.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/sass-language.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/stylesheet-plugin-factory.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/virtual-module-plugin.d.ts +0 -0
- /package/src/{builders/browser-esbuild → tools/esbuild}/watcher.d.ts +0 -0
- /package/src/{sass → tools/sass}/rebasing-importer.d.ts +0 -0
- /package/src/{sass → tools/sass}/sass-service-legacy.d.ts +0 -0
- /package/src/{sass → tools/sass}/sass-service.d.ts +0 -0
- /package/src/{sass → tools/sass}/worker-legacy.d.ts +0 -0
- /package/src/{sass → tools/sass}/worker.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/configs/index.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/builder-watch-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/common-js-usage-warn-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/css-optimizer-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/dedupe-module-resolve-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/devtools-ignore-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/esbuild-executor.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/hmr/hmr-accept.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/hmr/hmr-loader.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/index.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/javascript-optimizer-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/javascript-optimizer-worker.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/json-stats-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/karma/karma-context.html +0 -0
- /package/src/{webpack → tools/webpack}/plugins/karma/karma-debug.html +0 -0
- /package/src/{webpack → tools/webpack}/plugins/karma/karma.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/named-chunks-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/occurrences-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/postcss-cli-resources.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/progress-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/remove-hash-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/scripts-webpack-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/service-worker-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/styles-webpack-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/suppress-entry-chunks-webpack-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/transfer-size-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/plugins/watch-files-logs-plugin.d.ts +0 -0
- /package/src/{webpack → tools/webpack}/utils/async-chunks.d.ts +0 -0
|
@@ -0,0 +1,304 @@
|
|
|
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
|
+
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.buildServePath = exports.getDevServerConfig = void 0;
|
|
34
|
+
const core_1 = require("@angular-devkit/core");
|
|
35
|
+
const fs_1 = require("fs");
|
|
36
|
+
const path_1 = require("path");
|
|
37
|
+
const url_1 = require("url");
|
|
38
|
+
const error_1 = require("../../../utils/error");
|
|
39
|
+
const load_esm_1 = require("../../../utils/load-esm");
|
|
40
|
+
const webpack_browser_config_1 = require("../../../utils/webpack-browser-config");
|
|
41
|
+
const hmr_loader_1 = require("../plugins/hmr/hmr-loader");
|
|
42
|
+
async function getDevServerConfig(wco) {
|
|
43
|
+
const { buildOptions: { host, port, index, headers, watch, hmr, main, liveReload, proxyConfig }, logger, root, } = wco;
|
|
44
|
+
const servePath = buildServePath(wco.buildOptions, logger);
|
|
45
|
+
const extraRules = [];
|
|
46
|
+
if (hmr) {
|
|
47
|
+
extraRules.push({
|
|
48
|
+
loader: hmr_loader_1.HmrLoader,
|
|
49
|
+
include: [(0, path_1.resolve)(wco.root, main)],
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const extraPlugins = [];
|
|
53
|
+
if (!watch) {
|
|
54
|
+
// There's no option to turn off file watching in webpack-dev-server, but
|
|
55
|
+
// we can override the file watcher instead.
|
|
56
|
+
extraPlugins.push({
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
+
apply: (compiler) => {
|
|
59
|
+
compiler.hooks.afterEnvironment.tap('angular-cli', () => {
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
61
|
+
compiler.watchFileSystem = { watch: () => { } };
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
plugins: extraPlugins,
|
|
68
|
+
module: {
|
|
69
|
+
rules: extraRules,
|
|
70
|
+
},
|
|
71
|
+
devServer: {
|
|
72
|
+
host,
|
|
73
|
+
port,
|
|
74
|
+
headers: {
|
|
75
|
+
'Access-Control-Allow-Origin': '*',
|
|
76
|
+
...headers,
|
|
77
|
+
},
|
|
78
|
+
historyApiFallback: !!index && {
|
|
79
|
+
index: path_1.posix.join(servePath, (0, webpack_browser_config_1.getIndexOutputFile)(index)),
|
|
80
|
+
disableDotRule: true,
|
|
81
|
+
htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
|
|
82
|
+
rewrites: [
|
|
83
|
+
{
|
|
84
|
+
from: new RegExp(`^(?!${servePath})/.*`),
|
|
85
|
+
to: (context) => context.parsedUrl.href,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
// When setupExitSignals is enabled webpack-dev-server will shutdown gracefully which would
|
|
90
|
+
// require CTRL+C to be pressed multiple times to exit.
|
|
91
|
+
// See: https://github.com/webpack/webpack-dev-server/blob/c76b6d11a3821436c5e20207c8a38deb6ab7e33c/lib/Server.js#L1801-L1827
|
|
92
|
+
setupExitSignals: false,
|
|
93
|
+
compress: false,
|
|
94
|
+
static: false,
|
|
95
|
+
server: getServerConfig(root, wco.buildOptions),
|
|
96
|
+
allowedHosts: getAllowedHostsConfig(wco.buildOptions),
|
|
97
|
+
devMiddleware: {
|
|
98
|
+
publicPath: servePath,
|
|
99
|
+
stats: false,
|
|
100
|
+
},
|
|
101
|
+
liveReload,
|
|
102
|
+
hot: hmr && !liveReload ? 'only' : hmr,
|
|
103
|
+
proxy: await addProxyConfig(root, proxyConfig),
|
|
104
|
+
...getWebSocketSettings(wco.buildOptions, servePath),
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
exports.getDevServerConfig = getDevServerConfig;
|
|
109
|
+
/**
|
|
110
|
+
* Resolve and build a URL _path_ that will be the root of the server. This resolved base href and
|
|
111
|
+
* deploy URL from the browser options and returns a path from the root.
|
|
112
|
+
*/
|
|
113
|
+
function buildServePath(options, logger) {
|
|
114
|
+
let servePath = options.servePath;
|
|
115
|
+
if (servePath === undefined) {
|
|
116
|
+
const defaultPath = findDefaultServePath(options.baseHref, options.deployUrl);
|
|
117
|
+
if (defaultPath == null) {
|
|
118
|
+
logger.warn(core_1.tags.oneLine `
|
|
119
|
+
Warning: --deploy-url and/or --base-href contain unsupported values for ng serve. Default
|
|
120
|
+
serve path of '/' used. Use --serve-path to override.
|
|
121
|
+
`);
|
|
122
|
+
}
|
|
123
|
+
servePath = defaultPath || '';
|
|
124
|
+
}
|
|
125
|
+
if (servePath.endsWith('/')) {
|
|
126
|
+
servePath = servePath.slice(0, -1);
|
|
127
|
+
}
|
|
128
|
+
if (!servePath.startsWith('/')) {
|
|
129
|
+
servePath = `/${servePath}`;
|
|
130
|
+
}
|
|
131
|
+
return servePath;
|
|
132
|
+
}
|
|
133
|
+
exports.buildServePath = buildServePath;
|
|
134
|
+
/**
|
|
135
|
+
* Private method to enhance a webpack config with SSL configuration.
|
|
136
|
+
* @private
|
|
137
|
+
*/
|
|
138
|
+
function getServerConfig(root, options) {
|
|
139
|
+
const { ssl, sslCert, sslKey } = options;
|
|
140
|
+
if (!ssl) {
|
|
141
|
+
return 'http';
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
type: 'https',
|
|
145
|
+
options: sslCert && sslKey
|
|
146
|
+
? {
|
|
147
|
+
key: (0, path_1.resolve)(root, sslKey),
|
|
148
|
+
cert: (0, path_1.resolve)(root, sslCert),
|
|
149
|
+
}
|
|
150
|
+
: undefined,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Private method to enhance a webpack config with Proxy configuration.
|
|
155
|
+
* @private
|
|
156
|
+
*/
|
|
157
|
+
async function addProxyConfig(root, proxyConfig) {
|
|
158
|
+
if (!proxyConfig) {
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
const proxyPath = (0, path_1.resolve)(root, proxyConfig);
|
|
162
|
+
if (!(0, fs_1.existsSync)(proxyPath)) {
|
|
163
|
+
throw new Error(`Proxy configuration file ${proxyPath} does not exist.`);
|
|
164
|
+
}
|
|
165
|
+
switch ((0, path_1.extname)(proxyPath)) {
|
|
166
|
+
case '.json': {
|
|
167
|
+
const content = await fs_1.promises.readFile(proxyPath, 'utf-8');
|
|
168
|
+
const { parse, printParseErrorCode } = await Promise.resolve().then(() => __importStar(require('jsonc-parser')));
|
|
169
|
+
const parseErrors = [];
|
|
170
|
+
const proxyConfiguration = parse(content, parseErrors, { allowTrailingComma: true });
|
|
171
|
+
if (parseErrors.length > 0) {
|
|
172
|
+
let errorMessage = `Proxy configuration file ${proxyPath} contains parse errors:`;
|
|
173
|
+
for (const parseError of parseErrors) {
|
|
174
|
+
const { line, column } = getJsonErrorLineColumn(parseError.offset, content);
|
|
175
|
+
errorMessage += `\n[${line}, ${column}] ${printParseErrorCode(parseError.error)}`;
|
|
176
|
+
}
|
|
177
|
+
throw new Error(errorMessage);
|
|
178
|
+
}
|
|
179
|
+
return proxyConfiguration;
|
|
180
|
+
}
|
|
181
|
+
case '.mjs':
|
|
182
|
+
// Load the ESM configuration file using the TypeScript dynamic import workaround.
|
|
183
|
+
// Once TypeScript provides support for keeping the dynamic import this workaround can be
|
|
184
|
+
// changed to a direct dynamic import.
|
|
185
|
+
return (await (0, load_esm_1.loadEsmModule)((0, url_1.pathToFileURL)(proxyPath))).default;
|
|
186
|
+
case '.cjs':
|
|
187
|
+
return require(proxyPath);
|
|
188
|
+
default:
|
|
189
|
+
// The file could be either CommonJS or ESM.
|
|
190
|
+
// CommonJS is tried first then ESM if loading fails.
|
|
191
|
+
try {
|
|
192
|
+
return require(proxyPath);
|
|
193
|
+
}
|
|
194
|
+
catch (e) {
|
|
195
|
+
(0, error_1.assertIsError)(e);
|
|
196
|
+
if (e.code === 'ERR_REQUIRE_ESM') {
|
|
197
|
+
// Load the ESM configuration file using the TypeScript dynamic import workaround.
|
|
198
|
+
// Once TypeScript provides support for keeping the dynamic import this workaround can be
|
|
199
|
+
// changed to a direct dynamic import.
|
|
200
|
+
return (await (0, load_esm_1.loadEsmModule)((0, url_1.pathToFileURL)(proxyPath))).default;
|
|
201
|
+
}
|
|
202
|
+
throw e;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Calculates the line and column for an error offset in the content of a JSON file.
|
|
208
|
+
* @param location The offset error location from the beginning of the content.
|
|
209
|
+
* @param content The full content of the file containing the error.
|
|
210
|
+
* @returns An object containing the line and column
|
|
211
|
+
*/
|
|
212
|
+
function getJsonErrorLineColumn(offset, content) {
|
|
213
|
+
if (offset === 0) {
|
|
214
|
+
return { line: 1, column: 1 };
|
|
215
|
+
}
|
|
216
|
+
let line = 0;
|
|
217
|
+
let position = 0;
|
|
218
|
+
// eslint-disable-next-line no-constant-condition
|
|
219
|
+
while (true) {
|
|
220
|
+
++line;
|
|
221
|
+
const nextNewline = content.indexOf('\n', position);
|
|
222
|
+
if (nextNewline === -1 || nextNewline > offset) {
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
position = nextNewline + 1;
|
|
226
|
+
}
|
|
227
|
+
return { line, column: offset - position + 1 };
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Find the default server path. We don't want to expose baseHref and deployUrl as arguments, only
|
|
231
|
+
* the browser options where needed. This method should stay private (people who want to resolve
|
|
232
|
+
* baseHref and deployUrl should use the buildServePath exported function.
|
|
233
|
+
* @private
|
|
234
|
+
*/
|
|
235
|
+
function findDefaultServePath(baseHref, deployUrl) {
|
|
236
|
+
if (!baseHref && !deployUrl) {
|
|
237
|
+
return '';
|
|
238
|
+
}
|
|
239
|
+
if (/^(\w+:)?\/\//.test(baseHref || '') || /^(\w+:)?\/\//.test(deployUrl || '')) {
|
|
240
|
+
// If baseHref or deployUrl is absolute, unsupported by ng serve
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
// normalize baseHref
|
|
244
|
+
// for ng serve the starting base is always `/` so a relative
|
|
245
|
+
// and root relative value are identical
|
|
246
|
+
const baseHrefParts = (baseHref || '').split('/').filter((part) => part !== '');
|
|
247
|
+
if (baseHref && !baseHref.endsWith('/')) {
|
|
248
|
+
baseHrefParts.pop();
|
|
249
|
+
}
|
|
250
|
+
const normalizedBaseHref = baseHrefParts.length === 0 ? '/' : `/${baseHrefParts.join('/')}/`;
|
|
251
|
+
if (deployUrl && deployUrl[0] === '/') {
|
|
252
|
+
if (baseHref && baseHref[0] === '/' && normalizedBaseHref !== deployUrl) {
|
|
253
|
+
// If baseHref and deployUrl are root relative and not equivalent, unsupported by ng serve
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
return deployUrl;
|
|
257
|
+
}
|
|
258
|
+
// Join together baseHref and deployUrl
|
|
259
|
+
return `${normalizedBaseHref}${deployUrl || ''}`;
|
|
260
|
+
}
|
|
261
|
+
function getAllowedHostsConfig(options) {
|
|
262
|
+
if (options.disableHostCheck) {
|
|
263
|
+
return 'all';
|
|
264
|
+
}
|
|
265
|
+
else if (options.allowedHosts?.length) {
|
|
266
|
+
return options.allowedHosts;
|
|
267
|
+
}
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
function getWebSocketSettings(options, servePath) {
|
|
271
|
+
const { hmr, liveReload } = options;
|
|
272
|
+
if (!hmr && !liveReload) {
|
|
273
|
+
return {
|
|
274
|
+
webSocketServer: false,
|
|
275
|
+
client: undefined,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
const webSocketPath = path_1.posix.join(servePath, 'ng-cli-ws');
|
|
279
|
+
return {
|
|
280
|
+
webSocketServer: {
|
|
281
|
+
options: {
|
|
282
|
+
path: webSocketPath,
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
client: {
|
|
286
|
+
logging: 'info',
|
|
287
|
+
webSocketURL: getPublicHostOptions(options, webSocketPath),
|
|
288
|
+
overlay: {
|
|
289
|
+
errors: true,
|
|
290
|
+
warnings: false,
|
|
291
|
+
runtimeErrors: false,
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
function getPublicHostOptions(options, webSocketPath) {
|
|
297
|
+
let publicHost = options.publicHost;
|
|
298
|
+
if (publicHost) {
|
|
299
|
+
const hostWithProtocol = !/^\w+:\/\//.test(publicHost) ? `https://${publicHost}` : publicHost;
|
|
300
|
+
publicHost = new url_1.URL(hostWithProtocol).host;
|
|
301
|
+
}
|
|
302
|
+
return `auto://${publicHost || '0.0.0.0:0'}${webSocketPath}`;
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LXNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3Rvb2xzL3dlYnBhY2svY29uZmlncy9kZXYtc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsK0NBQXFEO0FBQ3JELDJCQUF3RDtBQUN4RCwrQkFBK0M7QUFDL0MsNkJBQXlDO0FBSXpDLGdEQUFxRDtBQUNyRCxzREFBd0Q7QUFDeEQsa0ZBQTJFO0FBQzNFLDBEQUFzRDtBQUUvQyxLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLEdBQWtEO0lBRWxELE1BQU0sRUFDSixZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxFQUN2RixNQUFNLEVBQ04sSUFBSSxHQUNMLEdBQUcsR0FBRyxDQUFDO0lBRVIsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFM0QsTUFBTSxVQUFVLEdBQWtCLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEdBQUcsRUFBRTtRQUNQLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDZCxNQUFNLEVBQUUsc0JBQVM7WUFDakIsT0FBTyxFQUFFLENBQUMsSUFBQSxjQUFPLEVBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNuQyxDQUFDLENBQUM7S0FDSjtJQUVELE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1YseUVBQXlFO1FBQ3pFLDRDQUE0QztRQUM1QyxZQUFZLENBQUMsSUFBSSxDQUFD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InNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBsb2dnaW5nLCB0YWdzIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcHJvbWlzZXMgYXMgZnNQcm9taXNlcyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGV4dG5hbWUsIHBvc2l4LCByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBVUkwsIHBhdGhUb0ZpbGVVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiwgUnVsZVNldFJ1bGUgfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhdGlvbiBhcyBEZXZTZXJ2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnd2VicGFjay1kZXYtc2VydmVyJztcbmltcG9ydCB7IFdlYnBhY2tDb25maWdPcHRpb25zLCBXZWJwYWNrRGV2U2VydmVyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2J1aWxkLW9wdGlvbnMnO1xuaW1wb3J0IHsgYXNzZXJ0SXNFcnJvciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2Vycm9yJztcbmltcG9ydCB7IGxvYWRFc21Nb2R1bGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9sb2FkLWVzbSc7XG5pbXBvcnQgeyBnZXRJbmRleE91dHB1dEZpbGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy93ZWJwYWNrLWJyb3dzZXItY29uZmlnJztcbmltcG9ydCB7IEhtckxvYWRlciB9IGZyb20gJy4uL3BsdWdpbnMvaG1yL2htci1sb2FkZXInO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGV2U2VydmVyQ29uZmlnKFxuICB3Y286IFdlYnBhY2tDb25maWdPcHRpb25zPFdlYnBhY2tEZXZTZXJ2ZXJPcHRpb25zPixcbik6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICBjb25zdCB7XG4gICAgYnVpbGRPcHRpb25zOiB7IGhvc3QsIHBvcnQsIGluZGV4LCBoZWFkZXJzLCB3YXRjaCwgaG1yLCBtYWluLCBsaXZlUmVsb2FkLCBwcm94eUNvbmZpZyB9LFxuICAgIGxvZ2dlcixcbiAgICByb290LFxuICB9ID0gd2NvO1xuXG4gIGNvbnN0IHNlcnZlUGF0aCA9IGJ1aWxkU2VydmVQYXRoKHdjby5idWlsZE9wdGlvbnMsIGxvZ2dlcik7XG5cbiAgY29uc3QgZXh0cmFSdWxlczogUnVsZVNldFJ1bGVbXSA9IFtdO1xuICBpZiAoaG1yKSB7XG4gICAgZXh0cmFSdWxlcy5wdXNoKHtcbiAgICAgIGxvYWRlcjogSG1yTG9hZGVyLFxuICAgICAgaW5jbHVkZTogW3Jlc29sdmUod2NvLnJvb3QsIG1haW4pXSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGV4dHJhUGx1Z2lucyA9IFtdO1xuICBpZiAoIXdhdGNoKSB7XG4gICAgLy8gVGhlcmUncyBubyBvcHRpb24gdG8gdHVybiBvZmYgZmlsZSB3YXRjaGluZyBpbiB3ZWJwYWNrLWRldi1zZXJ2ZXIsIGJ1dFxuICAgIC8vIHdlIGNhbiBvdmVycmlkZSB0aGUgZmlsZSB3YXRjaGVyIGluc3RlYWQuXG4gICAgZXh0cmFQbHVnaW5zLnB1c2goe1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIGFwcGx5OiAoY29tcGlsZXI6IGFueSkgPT4ge1xuICAgICAgICBjb21waWxlci5ob29rcy5hZnRlckVudmlyb25tZW50LnRhcCgnYW5ndWxhci1jbGknLCAoKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgIGNvbXBpbGVyLndhdGNoRmlsZVN5c3RlbSA9IHsgd2F0Y2g6ICgpID0+IHt9IH07XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGx1Z2luczogZXh0cmFQbHVnaW5zLFxuICAgIG1vZHVsZToge1xuICAgICAgcnVsZXM6IGV4dHJhUnVsZXMsXG4gICAgfSxcbiAgICBkZXZTZXJ2ZXI6IHtcbiAgICAgIGhvc3QsXG4gICAgICBwb3J0LFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonLFxuICAgICAgICAuLi5oZWFkZXJzLFxuICAgICAgfSxcbiAgICAgIGhpc3RvcnlBcGlGYWxsYmFjazogISFpbmRleCAmJiB7XG4gICAgICAgIGluZGV4OiBwb3NpeC5qb2luKHNlcnZlUGF0aCwgZ2V0SW5kZXhPdXRwdXRGaWxlKGluZGV4KSksXG4gICAgICAgIGRpc2FibGVEb3RSdWxlOiB0cnVlLFxuICAgICAgICBodG1sQWNjZXB0SGVhZGVyczogWyd0ZXh0L2h0bWwnLCAnYXBwbGljYXRpb24veGh0bWwreG1sJ10sXG4gICAgICAgIHJld3JpdGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJvbTogbmV3IFJlZ0V4cChgXig/ISR7c2VydmVQYXRofSkvLipgKSxcbiAgICAgICAgICAgIHRvOiAoY29udGV4dCkgPT4gY29udGV4dC5wYXJzZWRVcmwuaHJlZixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gc2V0dXBFeGl0U2lnbmFscyBpcyBlbmFibGVkIHdlYnBhY2stZGV2LXNlcnZlciB3aWxsIHNodXRkb3duIGdyYWNlZnVsbHkgd2hpY2ggd291bGRcbiAgICAgIC8vIHJlcXVpcmUgQ1RSTCtDIHRvIGJlIHByZXNzZWQgbXVsdGlwbGUgdGltZXMgdG8gZXhpdC5cbiAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2svd2VicGFjay1kZXYtc2VydmVyL2Jsb2IvYzc2YjZkMTFhMzgyMTQzNmM1ZTIwMjA3YzhhMzhkZWI2YWI3ZTMzYy9saWIvU2VydmVyLmpzI0wxODAxLUwxODI3XG4gICAgICBzZXR1cEV4aXRTaWduYWxzOiBmYWxzZSxcbiAgICAgIGNvbXByZXNzOiBmYWxzZSxcbiAgICAgIHN0YXRpYzogZmFsc2UsXG4gICAgICBzZXJ2ZXI6IGdldFNlcnZlckNvbmZpZyhyb290LCB3Y28uYnVpbGRPcHRpb25zKSxcbiAgICAgIGFsbG93ZWRIb3N0czogZ2V0QWxsb3dlZEhvc3RzQ29uZmlnKHdjby5idWlsZE9wdGlvbnMpLFxuICAgICAgZGV2TWlkZGxld2FyZToge1xuICAgICAgICBwdWJsaWNQYXRoOiBzZXJ2ZVBhdGgsXG4gICAgICAgIHN0YXRzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBsaXZlUmVsb2FkLFxuICAgICAgaG90OiBobXIgJiYgIWxpdmVSZWxvYWQgPyAnb25seScgOiBobXIsXG4gICAgICBwcm94eTogYXdhaXQgYWRkUHJveHlDb25maWcocm9vdCwgcHJveHlDb25maWcpLFxuICAgICAgLi4uZ2V0V2ViU29ja2V0U2V0dGluZ3Mod2NvLmJ1aWxkT3B0aW9ucywgc2VydmVQYXRoKSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW5kIGJ1aWxkIGEgVVJMIF9wYXRoXyB0aGF0IHdpbGwgYmUgdGhlIHJvb3Qgb2YgdGhlIHNlcnZlci4gVGhpcyByZXNvbHZlZCBiYXNlIGhyZWYgYW5kXG4gKiBkZXBsb3kgVVJMIGZyb20gdGhlIGJyb3dzZXIgb3B0aW9ucyBhbmQgcmV0dXJucyBhIHBhdGggZnJvbSB0aGUgcm9vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2VydmVQYXRoKFxuICBvcHRpb25zOiBXZWJwYWNrRGV2U2VydmVyT3B0aW9ucyxcbiAgbG9nZ2VyOiBsb2dnaW5nLkxvZ2dlckFwaSxcbik6IHN0cmluZyB7XG4gIGxldCBzZXJ2ZVBhdGggPSBvcHRpb25zLnNlcnZlUGF0aDtcbiAgaWYgKHNlcnZlUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBmaW5kRGVmYXVsdFNlcnZlUGF0aChvcHRpb25zLmJhc2VIcmVmLCBvcHRpb25zLmRlcGxveVVybCk7XG4gICAgaWYgKGRlZmF1bHRQYXRoID09IG51bGwpIHtcbiAgICAgIGxvZ2dlci53YXJuKHRhZ3Mub25lTGluZWBcbiAgICAgICAgV2FybmluZzogLS1kZXBsb3ktdXJsIGFuZC9vciAtLWJhc2UtaHJlZiBjb250YWluIHVuc3VwcG9ydGVkIHZhbHVlcyBmb3Igbmcgc2VydmUuIERlZmF1bHRcbiAgICAgICAgc2VydmUgcGF0aCBvZiAnLycgdXNlZC4gVXNlIC0tc2VydmUtcGF0aCB0byBvdmVycmlkZS5cbiAgICAgIGApO1xuICAgIH1cbiAgICBzZXJ2ZVBhdGggPSBkZWZhdWx0UGF0aCB8fCAnJztcbiAgfVxuXG4gIGlmIChzZXJ2ZVBhdGguZW5kc1dpdGgoJy8nKSkge1xuICAgIHNlcnZlUGF0aCA9IHNlcnZlUGF0aC5zbGljZSgwLCAtMSk7XG4gIH1cblxuICBpZiAoIXNlcnZlUGF0aC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICBzZXJ2ZVBhdGggPSBgLyR7c2VydmVQYXRofWA7XG4gIH1cblxuICByZXR1cm4gc2VydmVQYXRoO1xufVxuXG4vKipcbiAqIFByaXZhdGUgbWV0aG9kIHRvIGVuaGFuY2UgYSB3ZWJwYWNrIGNvbmZpZyB3aXRoIFNTTCBjb25maWd1cmF0aW9uLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZ2V0U2VydmVyQ29uZmlnKFxuICByb290OiBzdHJpbmcsXG4gIG9wdGlvbnM6IFdlYnBhY2tEZXZTZXJ2ZXJPcHRpb25zLFxuKTogRGV2U2VydmVyQ29uZmlndXJhdGlvblsnc2VydmVyJ10ge1xuICBjb25zdCB7IHNzbCwgc3NsQ2VydCwgc3NsS2V5IH0gPSBvcHRpb25zO1xuICBpZiAoIXNzbCkge1xuICAgIHJldHVybiAnaHR0cCc7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdodHRwcycsXG4gICAgb3B0aW9uczpcbiAgICAgIHNzbENlcnQgJiYgc3NsS2V5XG4gICAgICAgID8ge1xuICAgICAgICAgICAga2V5OiByZXNvbHZlKHJvb3QsIHNzbEtleSksXG4gICAgICAgICAgICBjZXJ0OiByZXNvbHZlKHJvb3QsIHNzbENlcnQpLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogUHJpdmF0ZSBtZXRob2QgdG8gZW5oYW5jZSBhIHdlYnBhY2sgY29uZmlnIHdpdGggUHJveHkgY29uZmlndXJhdGlvbi5cbiAqIEBwcml2YXRlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkZFByb3h5Q29uZmlnKHJvb3Q6IHN0cmluZywgcHJveHlDb25maWc6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIXByb3h5Q29uZmlnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHByb3h5UGF0aCA9IHJlc29sdmUocm9vdCwgcHJveHlDb25maWcpO1xuXG4gIGlmICghZXhpc3RzU3luYyhwcm94eVBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQcm94eSBjb25maWd1cmF0aW9uIGZpbGUgJHtwcm94eVBhdGh9IGRvZXMgbm90IGV4aXN0LmApO1xuICB9XG5cbiAgc3dpdGNoIChleHRuYW1lKHByb3h5UGF0aCkpIHtcbiAgICBjYXNlICcuanNvbic6IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmc1Byb21pc2VzLnJlYWRGaWxlKHByb3h5UGF0aCwgJ3V0Zi04Jyk7XG5cbiAgICAgIGNvbnN0IHsgcGFyc2UsIHByaW50UGFyc2VFcnJvckNvZGUgfSA9IGF3YWl0IGltcG9ydCgnanNvbmMtcGFyc2VyJyk7XG4gICAgICBjb25zdCBwYXJzZUVycm9yczogaW1wb3J0KCdqc29uYy1wYXJzZXInKS5QYXJzZUVycm9yW10gPSBbXTtcbiAgICAgIGNvbnN0IHByb3h5Q29uZmlndXJhdGlvbiA9IHBhcnNlKGNvbnRlbnQsIHBhcnNlRXJyb3JzLCB7IGFsbG93VHJhaWxpbmdDb21tYTogdHJ1ZSB9KTtcblxuICAgICAgaWYgKHBhcnNlRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9IGBQcm94eSBjb25maWd1cmF0aW9uIGZpbGUgJHtwcm94eVBhdGh9IGNvbnRhaW5zIHBhcnNlIGVycm9yczpgO1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnNlRXJyb3Igb2YgcGFyc2VFcnJvcnMpIHtcbiAgICAgICAgICBjb25zdCB7IGxpbmUsIGNvbHVtbiB9ID0gZ2V0SnNvbkVycm9yTGluZUNvbHVtbihwYXJzZUVycm9yLm9mZnNldCwgY29udGVudCk7XG4gICAgICAgICAgZXJyb3JNZXNzYWdlICs9IGBcXG5bJHtsaW5lfSwgJHtjb2x1bW59XSAke3ByaW50UGFyc2VFcnJvckNvZGUocGFyc2VFcnJvci5lcnJvcil9YDtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb3h5Q29uZmlndXJhdGlvbjtcbiAgICB9XG4gICAgY2FzZSAnLm1qcyc6XG4gICAgICAvLyBMb2FkIHRoZSBFU00gY29uZmlndXJhdGlvbiBmaWxlIHVzaW5nIHRoZSBUeXBlU2NyaXB0IGR5bmFtaWMgaW1wb3J0IHdvcmthcm91bmQuXG4gICAgICAvLyBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kIGNhbiBiZVxuICAgICAgLy8gY2hhbmdlZCB0byBhIGRpcmVjdCBkeW5hbWljIGltcG9ydC5cbiAgICAgIHJldHVybiAoYXdhaXQgbG9hZEVzbU1vZHVsZTx7IGRlZmF1bHQ6IHVua25vd24gfT4ocGF0aFRvRmlsZVVSTChwcm94eVBhdGgpKSkuZGVmYXVsdDtcbiAgICBjYXNlICcuY2pzJzpcbiAgICAgIHJldHVybiByZXF1aXJlKHByb3h5UGF0aCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIFRoZSBmaWxlIGNvdWxkIGJlIGVpdGhlciBDb21tb25KUyBvciBFU00uXG4gICAgICAvLyBDb21tb25KUyBpcyB0cmllZCBmaXJzdCB0aGVuIEVTTSBpZiBsb2FkaW5nIGZhaWxzLlxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUocHJveHlQYXRoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgYXNzZXJ0SXNFcnJvcihlKTtcbiAgICAgICAgaWYgKGUuY29kZSA9PT0gJ0VSUl9SRVFVSVJFX0VTTScpIHtcbiAgICAgICAgICAvLyBMb2FkIHRoZSBFU00gY29uZmlndXJhdGlvbiBmaWxlIHVzaW5nIHRoZSBUeXBlU2NyaXB0IGR5bmFtaWMgaW1wb3J0IHdvcmthcm91bmQuXG4gICAgICAgICAgLy8gT25jZSBUeXBlU2NyaXB0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGtlZXBpbmcgdGhlIGR5bmFtaWMgaW1wb3J0IHRoaXMgd29ya2Fyb3VuZCBjYW4gYmVcbiAgICAgICAgICAvLyBjaGFuZ2VkIHRvIGEgZGlyZWN0IGR5bmFtaWMgaW1wb3J0LlxuICAgICAgICAgIHJldHVybiAoYXdhaXQgbG9hZEVzbU1vZHVsZTx7IGRlZmF1bHQ6IHVua25vd24gfT4ocGF0aFRvRmlsZVVSTChwcm94eVBhdGgpKSkuZGVmYXVsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBsaW5lIGFuZCBjb2x1bW4gZm9yIGFuIGVycm9yIG9mZnNldCBpbiB0aGUgY29udGVudCBvZiBhIEpTT04gZmlsZS5cbiAqIEBwYXJhbSBsb2NhdGlvbiBUaGUgb2Zmc2V0IGVycm9yIGxvY2F0aW9uIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29udGVudC5cbiAqIEBwYXJhbSBjb250ZW50IFRoZSBmdWxsIGNvbnRlbnQgb2YgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgZXJyb3IuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgbGluZSBhbmQgY29sdW1uXG4gKi9cbmZ1bmN0aW9uIGdldEpzb25FcnJvckxpbmVDb2x1bW4ob2Zmc2V0OiBudW1iZXIsIGNvbnRlbnQ6IHN0cmluZykge1xuICBpZiAob2Zmc2V0ID09PSAwKSB7XG4gICAgcmV0dXJuIHsgbGluZTogMSwgY29sdW1uOiAxIH07XG4gIH1cblxuICBsZXQgbGluZSA9IDA7XG4gIGxldCBwb3NpdGlvbiA9IDA7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgd2hpbGUgKHRydWUpIHtcbiAgICArK2xpbmU7XG5cbiAgICBjb25zdCBuZXh0TmV3bGluZSA9IGNvbnRlbnQuaW5kZXhPZignXFxuJywgcG9zaXRpb24pO1xuICAgIGlmIChuZXh0TmV3bGluZSA9PT0gLTEgfHwgbmV4dE5ld2xpbmUgPiBvZmZzZXQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHBvc2l0aW9uID0gbmV4dE5ld2xpbmUgKyAxO1xuICB9XG5cbiAgcmV0dXJuIHsgbGluZSwgY29sdW1uOiBvZmZzZXQgLSBwb3NpdGlvbiArIDEgfTtcbn1cblxuLyoqXG4gKiBGaW5kIHRoZSBkZWZhdWx0IHNlcnZlciBwYXRoLiBXZSBkb24ndCB3YW50IHRvIGV4cG9zZSBiYXNlSHJlZiBhbmQgZGVwbG95VXJsIGFzIGFyZ3VtZW50cywgb25seVxuICogdGhlIGJyb3dzZXIgb3B0aW9ucyB3aGVyZSBuZWVkZWQuIFRoaXMgbWV0aG9kIHNob3VsZCBzdGF5IHByaXZhdGUgKHBlb3BsZSB3aG8gd2FudCB0byByZXNvbHZlXG4gKiBiYXNlSHJlZiBhbmQgZGVwbG95VXJsIHNob3VsZCB1c2UgdGhlIGJ1aWxkU2VydmVQYXRoIGV4cG9ydGVkIGZ1bmN0aW9uLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZmluZERlZmF1bHRTZXJ2ZVBhdGgoYmFzZUhyZWY/OiBzdHJpbmcsIGRlcGxveVVybD86IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIWJhc2VIcmVmICYmICFkZXBsb3lVcmwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAoL14oXFx3KzopP1xcL1xcLy8udGVzdChiYXNlSHJlZiB8fCAnJykgfHwgL14oXFx3KzopP1xcL1xcLy8udGVzdChkZXBsb3lVcmwgfHwgJycpKSB7XG4gICAgLy8gSWYgYmFzZUhyZWYgb3IgZGVwbG95VXJsIGlzIGFic29sdXRlLCB1bnN1cHBvcnRlZCBieSBuZyBzZXJ2ZVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gbm9ybWFsaXplIGJhc2VIcmVmXG4gIC8vIGZvciBuZyBzZXJ2ZSB0aGUgc3RhcnRpbmcgYmFzZSBpcyBhbHdheXMgYC9gIHNvIGEgcmVsYXRpdmVcbiAgLy8gYW5kIHJvb3QgcmVsYXRpdmUgdmFsdWUgYXJlIGlkZW50aWNhbFxuICBjb25zdCBiYXNlSHJlZlBhcnRzID0gKGJhc2VIcmVmIHx8ICcnKS5zcGxpdCgnLycpLmZpbHRlcigocGFydCkgPT4gcGFydCAhPT0gJycpO1xuICBpZiAoYmFzZUhyZWYgJiYgIWJhc2VIcmVmLmVuZHNXaXRoKCcvJykpIHtcbiAgICBiYXNlSHJlZlBhcnRzLnBvcCgpO1xuICB9XG4gIGNvbnN0IG5vcm1hbGl6ZWRCYXNlSHJlZiA9IGJhc2VIcmVmUGFydHMubGVuZ3RoID09PSAwID8gJy8nIDogYC8ke2Jhc2VIcmVmUGFydHMuam9pbignLycpfS9gO1xuXG4gIGlmIChkZXBsb3lVcmwgJiYgZGVwbG95VXJsWzBdID09PSAnLycpIHtcbiAgICBpZiAoYmFzZUhyZWYgJiYgYmFzZUhyZWZbMF0gPT09ICcvJyAmJiBub3JtYWxpemVkQmFzZUhyZWYgIT09IGRlcGxveVVybCkge1xuICAgICAgLy8gSWYgYmFzZUhyZWYgYW5kIGRlcGxveVVybCBhcmUgcm9vdCByZWxhdGl2ZSBhbmQgbm90IGVxdWl2YWxlbnQsIHVuc3VwcG9ydGVkIGJ5IG5nIHNlcnZlXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVwbG95VXJsO1xuICB9XG5cbiAgLy8gSm9pbiB0b2dldGhlciBiYXNlSHJlZiBhbmQgZGVwbG95VXJsXG4gIHJldHVybiBgJHtub3JtYWxpemVkQmFzZUhyZWZ9JHtkZXBsb3lVcmwgfHwgJyd9YDtcbn1cblxuZnVuY3Rpb24gZ2V0QWxsb3dlZEhvc3RzQ29uZmlnKFxuICBvcHRpb25zOiBXZWJwYWNrRGV2U2VydmVyT3B0aW9ucyxcbik6IERldlNlcnZlckNvbmZpZ3VyYXRpb25bJ2FsbG93ZWRIb3N0cyddIHtcbiAgaWYgKG9wdGlvbnMuZGlzYWJsZUhvc3RDaGVjaykge1xuICAgIHJldHVybiAnYWxsJztcbiAgfSBlbHNlIGlmIChvcHRpb25zLmFsbG93ZWRIb3N0cz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuYWxsb3dlZEhvc3RzO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0V2ViU29ja2V0U2V0dGluZ3MoXG4gIG9wdGlvbnM6IFdlYnBhY2tEZXZTZXJ2ZXJPcHRpb25zLFxuICBzZXJ2ZVBhdGg6IHN0cmluZyxcbik6IHtcbiAgd2ViU29ja2V0U2VydmVyPzogRGV2U2VydmVyQ29uZmlndXJhdGlvblsnd2ViU29ja2V0U2VydmVyJ107XG4gIGNsaWVudD86IERldlNlcnZlckNvbmZpZ3VyYXRpb25bJ2NsaWVudCddO1xufSB7XG4gIGNvbnN0IHsgaG1yLCBsaXZlUmVsb2FkIH0gPSBvcHRpb25zO1xuICBpZiAoIWhtciAmJiAhbGl2ZVJlbG9hZCkge1xuICAgIHJldHVybiB7XG4gICAgICB3ZWJTb2NrZXRTZXJ2ZXI6IGZhbHNlLFxuICAgICAgY2xpZW50OiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHdlYlNvY2tldFBhdGggPSBwb3NpeC5qb2luKHNlcnZlUGF0aCwgJ25nLWNsaS13cycpO1xuXG4gIHJldHVybiB7XG4gICAgd2ViU29ja2V0U2VydmVyOiB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHBhdGg6IHdlYlNvY2tldFBhdGgsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY2xpZW50OiB7XG4gICAgICBsb2dnaW5nOiAnaW5mbycsXG4gICAgICB3ZWJTb2NrZXRVUkw6IGdldFB1YmxpY0hvc3RPcHRpb25zKG9wdGlvbnMsIHdlYlNvY2tldFBhdGgpLFxuICAgICAgb3ZlcmxheToge1xuICAgICAgICBlcnJvcnM6IHRydWUsXG4gICAgICAgIHdhcm5pbmdzOiBmYWxzZSxcbiAgICAgICAgcnVudGltZUVycm9yczogZmFsc2UsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFB1YmxpY0hvc3RPcHRpb25zKG9wdGlvbnM6IFdlYnBhY2tEZXZTZXJ2ZXJPcHRpb25zLCB3ZWJTb2NrZXRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgcHVibGljSG9zdDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG9wdGlvbnMucHVibGljSG9zdDtcbiAgaWYgKHB1YmxpY0hvc3QpIHtcbiAgICBjb25zdCBob3N0V2l0aFByb3RvY29sID0gIS9eXFx3KzpcXC9cXC8vLnRlc3QocHVibGljSG9zdCkgPyBgaHR0cHM6Ly8ke3B1YmxpY0hvc3R9YCA6IHB1YmxpY0hvc3Q7XG4gICAgcHVibGljSG9zdCA9IG5ldyBVUkwoaG9zdFdpdGhQcm90b2NvbCkuaG9zdDtcbiAgfVxuXG4gIHJldHVybiBgYXV0bzovLyR7cHVibGljSG9zdCB8fCAnMC4wLjAuMDowJ30ke3dlYlNvY2tldFBhdGh9YDtcbn1cbiJdfQ==
|
|
@@ -24,4 +24,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
24
24
|
__exportStar(require("./common"), exports);
|
|
25
25
|
__exportStar(require("./dev-server"), exports);
|
|
26
26
|
__exportStar(require("./styles"), exports);
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy93ZWJwYWNrL2NvbmZpZ3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF5QjtBQUN6QiwrQ0FBNkI7QUFDN0IsMkNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZGV2LXNlcnZlcic7XG5leHBvcnQgKiBmcm9tICcuL3N0eWxlcyc7XG4iXX0=
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
import type { Configuration } from 'webpack';
|
|
9
|
-
import { WebpackConfigOptions } from '
|
|
9
|
+
import { WebpackConfigOptions } from '../../../utils/build-options';
|
|
10
10
|
export declare function getStylesConfig(wco: WebpackConfigOptions): Promise<Configuration>;
|