@angular-devkit/build-angular 17.0.0-next.9 → 17.0.0-rc.1
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 -13
- package/plugins/karma.js +0 -1
- package/src/builders/app-shell/index.js +8 -6
- package/src/builders/app-shell/render-worker.js +0 -1
- package/src/builders/app-shell/schema.js +0 -1
- package/src/builders/application/build-action.js +0 -1
- package/src/builders/application/execute-build.js +37 -14
- package/src/builders/application/execute-post-bundle.d.ts +1 -0
- package/src/builders/application/execute-post-bundle.js +5 -3
- package/src/builders/application/i18n.d.ts +1 -0
- package/src/builders/application/i18n.js +4 -2
- package/src/builders/application/index.js +8 -2
- package/src/builders/application/options.d.ts +1 -1
- package/src/builders/application/options.js +3 -3
- package/src/builders/application/schema.d.ts +15 -5
- package/src/builders/application/schema.js +0 -1
- package/src/builders/application/schema.json +10 -4
- package/src/builders/browser/index.js +0 -1
- package/src/builders/browser/schema.js +0 -1
- package/src/builders/browser-esbuild/builder-status-warnings.js +0 -1
- package/src/builders/browser-esbuild/index.js +14 -13
- package/src/builders/browser-esbuild/schema.js +0 -1
- package/src/builders/dev-server/builder.js +0 -1
- package/src/builders/dev-server/index.js +0 -1
- package/src/builders/dev-server/load-proxy-config.js +0 -1
- package/src/builders/dev-server/options.js +0 -1
- package/src/builders/dev-server/schema.js +0 -1
- package/src/builders/dev-server/vite-server.d.ts +5 -2
- package/src/builders/dev-server/vite-server.js +78 -45
- package/src/builders/dev-server/webpack-server.js +0 -1
- package/src/builders/extract-i18n/application-extraction.js +0 -1
- package/src/builders/extract-i18n/builder.js +0 -1
- package/src/builders/extract-i18n/empty-loader.js +0 -1
- package/src/builders/extract-i18n/index.js +0 -1
- package/src/builders/extract-i18n/ivy-extract-loader.js +0 -1
- package/src/builders/extract-i18n/options.js +0 -1
- package/src/builders/extract-i18n/schema.js +0 -1
- package/src/builders/extract-i18n/webpack-extraction.js +0 -1
- package/src/builders/jest/index.js +0 -1
- package/src/builders/jest/options.js +0 -1
- package/src/builders/jest/schema.js +0 -1
- package/src/builders/jest/test-files.js +0 -1
- package/src/builders/karma/find-tests-plugin.js +0 -1
- package/src/builders/karma/index.js +0 -1
- package/src/builders/karma/schema.js +0 -1
- package/src/builders/ng-packagr/index.js +0 -1
- package/src/builders/ng-packagr/schema.js +0 -1
- package/src/builders/prerender/index.js +2 -1
- package/src/builders/prerender/render-worker.js +2 -3
- package/src/builders/prerender/routes-extractor-worker.js +1 -2
- package/src/builders/prerender/schema.d.ts +4 -2
- package/src/builders/prerender/schema.js +0 -1
- package/src/builders/prerender/schema.json +2 -2
- package/src/builders/protractor/index.js +0 -1
- package/src/builders/protractor/schema.js +0 -1
- package/src/builders/server/index.js +0 -1
- package/src/builders/server/platform-server-exports-loader.js +0 -1
- package/src/builders/server/schema.js +0 -1
- package/src/builders/ssr-dev-server/index.js +0 -1
- package/src/builders/ssr-dev-server/schema.js +0 -1
- package/src/builders/ssr-dev-server/utils.js +0 -1
- package/src/index.js +0 -1
- package/src/tools/babel/plugins/adjust-static-class-members.js +0 -1
- package/src/tools/babel/plugins/adjust-typescript-enums.js +0 -1
- package/src/tools/babel/plugins/elide-angular-metadata.js +0 -1
- package/src/tools/babel/plugins/pure-toplevel-functions.js +0 -1
- package/src/tools/babel/presets/application.js +0 -1
- package/src/tools/babel/webpack-loader.js +0 -1
- package/src/tools/esbuild/angular/angular-host.js +0 -1
- package/src/tools/esbuild/angular/compilation/angular-compilation.d.ts +6 -3
- package/src/tools/esbuild/angular/compilation/angular-compilation.js +36 -9
- package/src/tools/esbuild/angular/compilation/aot-compilation.js +2 -1
- package/src/tools/esbuild/angular/compilation/factory.d.ts +16 -0
- package/src/tools/esbuild/angular/compilation/factory.js +56 -0
- package/src/tools/esbuild/angular/compilation/index.d.ts +1 -2
- package/src/tools/esbuild/angular/compilation/index.js +3 -6
- package/src/tools/esbuild/angular/compilation/jit-compilation.js +0 -1
- package/src/tools/esbuild/angular/compilation/noop-compilation.d.ts +1 -1
- package/src/tools/esbuild/angular/compilation/noop-compilation.js +0 -1
- package/src/tools/esbuild/angular/compilation/parallel-compilation.d.ts +42 -0
- package/src/tools/esbuild/angular/compilation/parallel-compilation.js +121 -0
- package/src/tools/esbuild/angular/compilation/parallel-worker.d.ts +32 -0
- package/src/tools/esbuild/angular/compilation/parallel-worker.js +90 -0
- package/src/tools/esbuild/angular/compilation-state.js +0 -1
- package/src/tools/esbuild/angular/compiler-plugin.d.ts +1 -0
- package/src/tools/esbuild/angular/compiler-plugin.js +111 -52
- package/src/tools/esbuild/angular/component-stylesheets.d.ts +3 -3
- package/src/tools/esbuild/angular/component-stylesheets.js +47 -32
- package/src/tools/esbuild/angular/diagnostics.d.ts +2 -2
- package/src/tools/esbuild/angular/diagnostics.js +9 -15
- package/src/tools/esbuild/angular/file-reference-tracker.d.ts +17 -0
- package/src/tools/esbuild/angular/file-reference-tracker.js +53 -0
- package/src/tools/esbuild/angular/jit-plugin-callbacks.d.ts +6 -3
- package/src/tools/esbuild/angular/jit-plugin-callbacks.js +4 -5
- package/src/tools/esbuild/angular/jit-resource-transformer.js +0 -1
- package/src/tools/esbuild/angular/source-file-cache.d.ts +1 -1
- package/src/tools/esbuild/angular/source-file-cache.js +3 -2
- package/src/tools/esbuild/angular/uri.js +0 -1
- package/src/tools/esbuild/angular/web-worker-transformer.js +0 -1
- package/src/tools/esbuild/application-code-bundle.d.ts +2 -0
- package/src/tools/esbuild/application-code-bundle.js +209 -150
- package/src/tools/esbuild/budget-stats.js +0 -1
- package/src/tools/esbuild/bundler-context.d.ts +12 -1
- package/src/tools/esbuild/bundler-context.js +105 -10
- package/src/tools/esbuild/bundler-execution-result.d.ts +19 -0
- package/src/tools/esbuild/bundler-execution-result.js +18 -3
- package/src/tools/esbuild/commonjs-checker.js +3 -1
- package/src/tools/esbuild/compiler-plugin-options.js +1 -1
- package/src/tools/esbuild/global-scripts.js +0 -1
- package/src/tools/esbuild/global-styles.js +0 -1
- package/src/tools/esbuild/i18n-inliner-worker.js +0 -1
- package/src/tools/esbuild/i18n-inliner.js +2 -1
- package/src/tools/esbuild/i18n-locale-plugin.js +0 -1
- package/src/tools/esbuild/index-html-generator.js +25 -3
- package/src/tools/esbuild/javascript-transfomer-plugin.d.ts +19 -0
- package/src/tools/esbuild/javascript-transfomer-plugin.js +51 -0
- package/src/tools/esbuild/javascript-transformer-worker.js +0 -1
- package/src/tools/esbuild/javascript-transformer.d.ts +1 -1
- package/src/tools/esbuild/javascript-transformer.js +5 -1
- package/src/tools/esbuild/license-extractor.js +0 -1
- package/src/tools/esbuild/load-result-cache.d.ts +2 -0
- package/src/tools/esbuild/load-result-cache.js +3 -1
- package/src/tools/esbuild/profiling.js +0 -1
- package/src/tools/esbuild/rxjs-esm-resolution-plugin.js +0 -1
- package/src/tools/esbuild/sourcemap-ignorelist-plugin.js +0 -1
- package/src/tools/esbuild/stylesheets/bundle-options.js +0 -1
- package/src/tools/esbuild/stylesheets/css-language.js +0 -1
- package/src/tools/esbuild/stylesheets/css-resource-plugin.js +25 -7
- package/src/tools/esbuild/stylesheets/less-language.js +0 -1
- package/src/tools/esbuild/stylesheets/sass-language.js +6 -20
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +25 -11
- package/src/tools/esbuild/utils.d.ts +4 -4
- package/src/tools/esbuild/utils.js +47 -34
- package/src/tools/esbuild/virtual-module-plugin.d.ts +3 -0
- package/src/tools/esbuild/virtual-module-plugin.js +3 -3
- package/src/tools/esbuild/watcher.js +0 -1
- package/src/tools/sass/lexer.js +0 -1
- package/src/tools/sass/rebasing-importer.d.ts +3 -8
- package/src/tools/sass/rebasing-importer.js +3 -52
- package/src/tools/sass/sass-service-legacy.js +0 -1
- package/src/tools/sass/sass-service.d.ts +1 -17
- package/src/tools/sass/sass-service.js +4 -6
- package/src/tools/sass/worker-legacy.js +0 -1
- package/src/tools/sass/worker.js +8 -2
- package/src/tools/vite/i18n-locale-plugin.js +0 -1
- package/src/tools/webpack/configs/common.js +0 -1
- package/src/tools/webpack/configs/dev-server.js +0 -1
- package/src/tools/webpack/configs/index.js +0 -1
- package/src/tools/webpack/configs/styles.js +6 -12
- package/src/tools/webpack/plugins/any-component-style-budget-checker.js +0 -1
- package/src/tools/webpack/plugins/builder-watch-plugin.js +0 -1
- package/src/tools/webpack/plugins/common-js-usage-warn-plugin.js +0 -1
- package/src/tools/webpack/plugins/css-optimizer-plugin.js +0 -1
- package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.js +0 -1
- package/src/tools/webpack/plugins/devtools-ignore-plugin.js +0 -1
- package/src/tools/webpack/plugins/esbuild-executor.js +0 -1
- package/src/tools/webpack/plugins/hmr/hmr-accept.js +0 -1
- package/src/tools/webpack/plugins/hmr/hmr-loader.js +0 -1
- package/src/tools/webpack/plugins/index-html-webpack-plugin.js +0 -1
- package/src/tools/webpack/plugins/index.js +0 -1
- package/src/tools/webpack/plugins/javascript-optimizer-plugin.js +2 -1
- package/src/tools/webpack/plugins/javascript-optimizer-worker.js +0 -1
- package/src/tools/webpack/plugins/json-stats-plugin.js +0 -1
- package/src/tools/webpack/plugins/karma/karma.js +0 -1
- package/src/tools/webpack/plugins/named-chunks-plugin.js +0 -1
- package/src/tools/webpack/plugins/occurrences-plugin.js +0 -1
- package/src/tools/webpack/plugins/postcss-cli-resources.js +0 -1
- package/src/tools/webpack/plugins/progress-plugin.js +0 -1
- package/src/tools/webpack/plugins/remove-hash-plugin.js +0 -1
- package/src/tools/webpack/plugins/scripts-webpack-plugin.js +0 -1
- package/src/tools/webpack/plugins/service-worker-plugin.js +0 -1
- package/src/tools/webpack/plugins/styles-webpack-plugin.js +0 -1
- package/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.js +0 -1
- package/src/tools/webpack/plugins/transfer-size-plugin.js +0 -1
- package/src/tools/webpack/plugins/typescript.js +0 -1
- package/src/tools/webpack/plugins/watch-files-logs-plugin.js +0 -1
- package/src/tools/webpack/utils/async-chunks.js +0 -1
- package/src/tools/webpack/utils/helpers.js +0 -1
- package/src/tools/webpack/utils/stats.js +0 -1
- package/src/transforms.js +0 -1
- package/src/utils/action-executor.js +5 -2
- package/src/utils/build-options.js +0 -1
- package/src/utils/bundle-calculator.js +0 -1
- package/src/utils/bundle-inline-options.js +0 -1
- package/src/utils/check-port.js +0 -1
- package/src/utils/color.js +0 -1
- package/src/utils/copy-assets.js +0 -1
- package/src/utils/default-progress.js +0 -1
- package/src/utils/delete-output-dir.js +0 -1
- package/src/utils/environment-options.d.ts +1 -0
- package/src/utils/environment-options.js +3 -2
- package/src/utils/error.js +0 -1
- package/src/utils/i18n-inlining.js +0 -1
- package/src/utils/i18n-options.js +0 -1
- package/src/utils/index-file/augment-index-html.js +0 -1
- package/src/utils/index-file/html-rewriting-stream.js +0 -1
- package/src/utils/index-file/index-html-generator.js +0 -1
- package/src/utils/index-file/inline-critical-css.js +5 -3
- package/src/utils/index-file/inline-fonts.js +0 -1
- package/src/utils/index-file/style-nonce.js +0 -1
- package/src/utils/index.js +0 -1
- package/src/utils/load-esm.js +0 -1
- package/src/utils/load-translations.js +0 -1
- package/src/utils/normalize-asset-patterns.js +0 -1
- package/src/utils/normalize-builder-schema.js +0 -1
- package/src/utils/normalize-cache.js +0 -1
- package/src/utils/normalize-file-replacements.js +0 -1
- package/src/utils/normalize-optimization.js +0 -1
- package/src/utils/normalize-polyfills.js +0 -1
- package/src/utils/normalize-source-maps.js +0 -1
- package/src/utils/output-paths.js +0 -1
- package/src/utils/package-chunk-sort.js +0 -1
- package/src/utils/package-version.js +0 -1
- package/src/utils/process-bundle.js +0 -1
- package/src/utils/purge-cache.js +0 -1
- package/src/utils/read-tsconfig.js +0 -1
- package/src/utils/routes-extractor/extractor.d.ts +1 -1
- package/src/utils/routes-extractor/extractor.js +20 -8
- package/src/utils/run-module-as-observable-fork.js +0 -1
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +0 -1
- package/src/utils/server-rendering/esm-in-memory-loader/node-18-utils.js +0 -1
- package/src/utils/server-rendering/esm-in-memory-loader/register-hooks.js +0 -1
- package/src/utils/server-rendering/main-bundle-exports.d.ts +7 -3
- package/src/utils/server-rendering/main-bundle-exports.js +0 -1
- package/src/utils/server-rendering/prerender-server.d.ts +21 -0
- package/src/utils/server-rendering/prerender-server.js +102 -0
- package/src/utils/server-rendering/prerender.d.ts +3 -1
- package/src/utils/server-rendering/prerender.js +84 -22
- package/src/utils/server-rendering/render-page.d.ts +2 -2
- package/src/utils/server-rendering/render-page.js +42 -4
- package/src/utils/server-rendering/render-worker.d.ts +2 -0
- package/src/utils/server-rendering/render-worker.js +9 -3
- package/src/utils/server-rendering/routes-extractor-worker.d.ts +2 -0
- package/src/utils/server-rendering/routes-extractor-worker.js +4 -4
- package/src/utils/service-worker.js +0 -1
- package/src/utils/spinner.js +0 -1
- package/src/utils/strip-bom.js +0 -1
- package/src/utils/supported-browsers.js +0 -1
- package/src/utils/tailwind.js +0 -1
- package/src/utils/tty.js +0 -1
- package/src/utils/url.js +0 -1
- package/src/utils/version.js +0 -1
- package/src/utils/webpack-browser-config.js +0 -1
- package/src/utils/webpack-diagnostics.js +0 -1
|
@@ -0,0 +1,56 @@
|
|
|
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.createAngularCompilation = void 0;
|
|
34
|
+
const environment_options_1 = require("../../../../utils/environment-options");
|
|
35
|
+
/**
|
|
36
|
+
* Creates an Angular compilation object that can be used to perform Angular application
|
|
37
|
+
* compilation either for AOT or JIT mode. By default a parallel compilation is created
|
|
38
|
+
* that uses a Node.js worker thread.
|
|
39
|
+
* @param jit True, for Angular JIT compilation; False, for Angular AOT compilation.
|
|
40
|
+
* @returns An instance of an Angular compilation object.
|
|
41
|
+
*/
|
|
42
|
+
async function createAngularCompilation(jit) {
|
|
43
|
+
if (environment_options_1.useParallelTs) {
|
|
44
|
+
const { ParallelCompilation } = await Promise.resolve().then(() => __importStar(require('./parallel-compilation')));
|
|
45
|
+
return new ParallelCompilation(jit);
|
|
46
|
+
}
|
|
47
|
+
if (jit) {
|
|
48
|
+
const { JitCompilation } = await Promise.resolve().then(() => __importStar(require('./jit-compilation')));
|
|
49
|
+
return new JitCompilation();
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const { AotCompilation } = await Promise.resolve().then(() => __importStar(require('./aot-compilation')));
|
|
53
|
+
return new AotCompilation();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.createAngularCompilation = createAngularCompilation;
|
|
@@ -6,6 +6,5 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
export { AngularCompilation } from './angular-compilation';
|
|
9
|
-
export {
|
|
10
|
-
export { JitCompilation } from './jit-compilation';
|
|
9
|
+
export { createAngularCompilation } from './factory';
|
|
11
10
|
export { NoopCompilation } from './noop-compilation';
|
|
@@ -7,13 +7,10 @@
|
|
|
7
7
|
* found in the LICENSE file at https://angular.io/license
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.NoopCompilation = exports.
|
|
10
|
+
exports.NoopCompilation = exports.createAngularCompilation = exports.AngularCompilation = void 0;
|
|
11
11
|
var angular_compilation_1 = require("./angular-compilation");
|
|
12
12
|
Object.defineProperty(exports, "AngularCompilation", { enumerable: true, get: function () { return angular_compilation_1.AngularCompilation; } });
|
|
13
|
-
var
|
|
14
|
-
Object.defineProperty(exports, "
|
|
15
|
-
var jit_compilation_1 = require("./jit-compilation");
|
|
16
|
-
Object.defineProperty(exports, "JitCompilation", { enumerable: true, get: function () { return jit_compilation_1.JitCompilation; } });
|
|
13
|
+
var factory_1 = require("./factory");
|
|
14
|
+
Object.defineProperty(exports, "createAngularCompilation", { enumerable: true, get: function () { return factory_1.createAngularCompilation; } });
|
|
17
15
|
var noop_compilation_1 = require("./noop-compilation");
|
|
18
16
|
Object.defineProperty(exports, "NoopCompilation", { enumerable: true, get: function () { return noop_compilation_1.NoopCompilation; } });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9lc2J1aWxkL2FuZ3VsYXIvY29tcGlsYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsNkRBQTJEO0FBQWxELHlIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHFEQUFtRDtBQUExQyxpSEFBQSxjQUFjLE9BQUE7QUFDdkIscURBQW1EO0FBQTFDLGlIQUFBLGNBQWMsT0FBQTtBQUN2Qix1REFBcUQ7QUFBNUMsbUhBQUEsZUFBZSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCB7IEFuZ3VsYXJDb21waWxhdGlvbiB9IGZyb20gJy4vYW5ndWxhci1jb21waWxhdGlvbic7XG5leHBvcnQgeyBBb3RDb21waWxhdGlvbiB9IGZyb20gJy4vYW90LWNvbXBpbGF0aW9uJztcbmV4cG9ydCB7IEppdENvbXBpbGF0aW9uIH0gZnJvbSAnLi9qaXQtY29tcGlsYXRpb24nO1xuZXhwb3J0IHsgTm9vcENvbXBpbGF0aW9uIH0gZnJvbSAnLi9ub29wLWNvbXBpbGF0aW9uJztcbiJdfQ==
|
|
@@ -98,4 +98,3 @@ function findAffectedFiles(builder) {
|
|
|
98
98
|
}
|
|
99
99
|
return affectedFiles;
|
|
100
100
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaml0LWNvbXBpbGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdG9vbHMvZXNidWlsZC9hbmd1bGFyL2NvbXBpbGF0aW9uL2ppdC1jb21waWxhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7QUFHSCw4REFBaUM7QUFDakMsNERBQTRCO0FBQzVCLCtDQUE4QztBQUM5QyxrREFBZ0Y7QUFDaEYsMEVBQTJFO0FBQzNFLHNFQUFvRTtBQUNwRSwrREFBMkU7QUFFM0UsTUFBTSxtQkFBbUI7SUFFTDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBTGxCLFlBQ2tCLFlBQTZCLEVBQzdCLGlCQUE4RCxFQUM5RCx1Q0FBNkUsRUFDN0UseUJBQStELEVBQy9ELGtCQUF3RDtRQUp4RCxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE2QztRQUM5RCw0Q0FBdUMsR0FBdkMsdUNBQXVDLENBQXNDO1FBQzdFLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBc0M7UUFDL0QsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFzQztJQUN2RSxDQUFDO0NBQ0w7QUFFRCxNQUFhLGNBQWUsU0FBUSx3Q0FBa0I7SUFDcEQsTUFBTSxDQUF1QjtJQUU3QixLQUFLLENBQUMsVUFBVSxDQUNkLFFBQWdCLEVBQ2hCLFdBQStCLEVBQy9CLDBCQUF3RjtRQU14RixvREFBb0Q7UUFDcEQsTUFBTSxFQUFFLHVDQUF1QyxFQUFFLEdBQUcsTUFBTSx3Q0FBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUUvRiwwREFBMEQ7UUFDMUQsTUFBTSxFQUNKLE9BQU8sRUFBRSx1QkFBdUIsRUFDaEMsU0FBUyxFQUNULE1BQU0sRUFBRSx3QkFBd0IsR0FDakMsR0FBRyxNQUFNLElBQUksQ0FB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cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHR5cGUgbmcgZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgcHJvZmlsZVN5bmMgfSBmcm9tICcuLi8uLi9wcm9maWxpbmcnO1xuaW1wb3J0IHsgQW5ndWxhckhvc3RPcHRpb25zLCBjcmVhdGVBbmd1bGFyQ29tcGlsZXJIb3N0IH0gZnJvbSAnLi4vYW5ndWxhci1ob3N0JztcbmltcG9ydCB7IGNyZWF0ZUppdFJlc291cmNlVHJhbnNmb3JtZXIgfSBmcm9tICcuLi9qaXQtcmVzb3VyY2UtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgY3JlYXRlV29ya2VyVHJhbnNmb3JtZXIgfSBmcm9tICcuLi93ZWItd29ya2VyLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IEFuZ3VsYXJDb21waWxhdGlvbiwgRW1pdEZpbGVSZXN1bHQgfSBmcm9tICcuL2FuZ3VsYXItY29tcGlsYXRpb24nO1xuXG5jbGFzcyBKaXRDb21waWxhdGlvblN0YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbXBpbGVySG9zdDogbmcuQ29tcGlsZXJIb3N0LFxuICAgIHB1YmxpYyByZWFkb25seSB0eXBlU2NyaXB0UHJvZ3JhbTogdHMuRW1pdEFuZFNlbWFudGljRGlhZ25vc3RpY3NCdWlsZGVyUHJvZ3JhbSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uc3RydWN0b3JQYXJhbWV0ZXJzRG93bmxldmVsVHJhbnNmb3JtOiB0cy5UcmFuc2Zvcm1lckZhY3Rvcnk8dHMuU291cmNlRmlsZT4sXG4gICAgcHVibGljIHJlYWRvbmx5IHJlcGxhY2VSZXNvdXJjZXNUcmFuc2Zvcm06IHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgd2ViV29ya2VyVHJhbnNmb3JtOiB0cy5UcmFuc2Zvcm1lckZhY3Rvcnk8dHMuU291cmNlRmlsZT4sXG4gICkge31cbn1cblxuZXhwb3J0IGNsYXNzIEppdENvbXBpbGF0aW9uIGV4dGVuZHMgQW5ndWxhckNvbXBpbGF0aW9uIHtcbiAgI3N0YXRlPzogSml0Q29tcGlsYXRpb25TdGF0ZTtcblxuICBhc3luYyBpbml0aWFsaXplKFxuICAgIHRzY29uZmlnOiBzdHJpbmcsXG4gICAgaG9zdE9wdGlvbnM6IEFuZ3VsYXJIb3N0T3B0aW9ucyxcbiAgICBjb21waWxlck9wdGlvbnNUcmFuc2Zvcm1lcj86IChjb21waWxlck9wdGlvbnM6IG5nLkNvbXBpbGVyT3B0aW9ucykgPT4gbmcuQ29tcGlsZXJPcHRpb25zLFxuICApOiBQcm9taXNlPHtcbiAgICBhZmZlY3RlZEZpbGVzOiBSZWFkb25seVNldDx0cy5Tb3VyY2VGaWxlPjtcbiAgICBjb21waWxlck9wdGlvbnM6IG5nLkNvbXBpbGVyT3B0aW9ucztcbiAgICByZWZlcmVuY2VkRmlsZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICB9PiB7XG4gICAgLy8gRHluYW1pY2FsbHkgbG9hZCB0aGUgQW5ndWxhciBjb21waWxlciBDTEkgcGFja2FnZVxuICAgIGNvbnN0IHsgY29uc3RydWN0b3JQYXJhbWV0ZXJzRG93bmxldmVsVHJhbnNmb3JtIH0gPSBhd2FpdCBBbmd1bGFyQ29tcGlsYXRpb24ubG9hZENvbXBpbGVyQ2xpKCk7XG5cbiAgICAvLyBMb2FkIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIGFuZCB0cmFuc2Zvcm0gYXMgbmVlZGVkXG4gICAgY29uc3Qge1xuICAgICAgb3B0aW9uczogb3JpZ2luYWxDb21waWxlck9wdGlvbnMsXG4gICAgICByb290TmFtZXMsXG4gICAgICBlcnJvcnM6IGNvbmZpZ3VyYXRpb25EaWFnbm9zdGljcyxcbiAgICB9ID0gYXdhaXQgdGhpcy5sb2FkQ29uZmlndXJhdGlvbih0c2NvbmZpZyk7XG4gICAgY29uc3QgY29tcGlsZXJPcHRpb25zID1cbiAgICAgIGNvbXBpbGVyT3B0aW9uc1RyYW5zZm9ybWVyPy4ob3JpZ2luYWxDb21waWxlck9wdGlvbnMpID8/IG9yaWdpbmFsQ29tcGlsZXJPcHRpb25zO1xuXG4gICAgLy8gQ3JlYXRlIEFuZ3VsYXIgY29tcGlsZXIgaG9zdFxuICAgIGNvbnN0IGhvc3QgPSBjcmVhdGVBbmd1bGFyQ29tcGlsZXJIb3N0KGNvbXBpbGVyT3B0aW9ucywgaG9zdE9wdGlvbnMpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBUeXBlU2NyaXB0IFByb2dyYW1cbiAgICBjb25zdCB0eXBlU2NyaXB0UHJvZ3JhbSA9IHByb2ZpbGVTeW5jKCdUU19DUkVBVEVfUFJPR1JBTScsICgpID0+XG4gICAgICB0cy5jcmVhdGVFbWl0QW5kU2VtYW50aWNEaWFnbm9zdGljc0J1aWxkZXJQcm9ncmFtKFxuICAgICAgICByb290TmFtZXMsXG4gICAgICAgIGNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgaG9zdCxcbiAgICAgICAgdGhpcy4jc3RhdGU/LnR5cGVTY3JpcHRQcm9ncmFtID8/IHRzLnJlYWRCdWlsZGVyUHJvZ3JhbShjb21waWxlck9wdGlvbnMsIGhvc3QpLFxuICAgICAgICBjb25maWd1cmF0aW9uRGlhZ25vc3RpY3MsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBjb25zdCBhZmZlY3RlZEZpbGVzID0gcHJvZmlsZVN5bmMoJ1RTX0ZJTkRfQUZGRUNURUQnLCAoKSA9PlxuICAgICAgZmluZEFmZmVjdGVkRmlsZXModHlwZVNjcmlwdFByb2dyYW0pLFxuICAgICk7XG5cbiAgICB0aGlzLiNzdGF0ZSA9IG5ldyBKaXRDb21waWxhdGlvblN0YXRlKFxuICAgICAgaG9zdCxcbiAgICAgIHR5cGVTY3JpcHRQcm9ncmFtLFxuICAgICAgY29uc3RydWN0b3JQYXJhbWV0ZXJzRG93bmxldmVsVHJhbnNmb3JtKHR5cGVTY3JpcHRQcm9ncmFtLmdldFByb2dyYW0oKSksXG4gICAgICBjcmVhdGVKaXRSZXNvdXJjZVRyYW5zZm9ybWVyKCgpID0+IHR5cGVTY3JpcHRQcm9ncmFtLmdldFByb2dyYW0oKS5nZXRUeXBlQ2hlY2tlcigpKSxcbiAgICAgIGNyZWF0ZVdvcmtlclRyYW5zZm9ybWVyKGhvc3RPcHRpb25zLnByb2Nlc3NXZWJXb3JrZXIuYmluZChob3N0T3B0aW9ucykpLFxuICAgICk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VkRmlsZXMgPSB0eXBlU2NyaXB0UHJvZ3JhbVxuICAgICAgLmdldFNvdXJjZUZpbGVzKClcbiAgICAgIC5tYXAoKHNvdXJjZUZpbGUpID0+IHNvdXJjZUZpbGUuZmlsZU5hbWUpO1xuXG4gICAgcmV0dXJuIHsgYWZmZWN0ZWRGaWxlcywgY29tcGlsZXJPcHRpb25zLCByZWZlcmVuY2VkRmlsZXMgfTtcbiAgfVxuXG4gICpjb2xsZWN0RGlhZ25vc3RpY3MoKTogSXRlcmFibGU8dHMuRGlhZ25vc3RpYz4ge1xuICAgIGFzc2VydCh0aGlzLiNzdGF0ZSwgJ0NvbXBpbGF0aW9uIG11c3QgYmUgaW5pdGlhbGl6ZWQgcHJpb3IgdG8gY29sbGVjdGluZyBkaWFnbm9zdGljcy4nKTtcbiAgICBjb25zdCB7IHR5cGVTY3JpcHRQcm9ncmFtIH0gPSB0aGlzLiNzdGF0ZTtcblxuICAgIC8vIENvbGxlY3QgcHJvZ3JhbSBsZXZlbCBkaWFnbm9zdGljc1xuICAgIHlpZWxkKiB0eXBlU2NyaXB0UHJvZ3JhbS5nZXRDb25maWdGaWxlUGFyc2luZ0RpYWdub3N0aWNzKCk7XG4gICAgeWllbGQqIHR5cGVTY3JpcHRQcm9ncmFtLmdldE9wdGlvbnNEaWFnbm9zdGljcygpO1xuICAgIHlpZWxkKiB0eXBlU2NyaXB0UHJvZ3JhbS5nZXRHbG9iYWxEaWFnbm9zdGljcygpO1xuICAgIHlpZWxkKiBwcm9maWxlU3luYygnTkdfRElBR05PU1RJQ1NfU1lOVEFDVElDJywgKCkgPT5cbiAgICAgIHR5cGVTY3JpcHRQcm9ncmFtLmdldFN5bnRhY3RpY0RpYWdub3N0aWNzKCksXG4gICAgKTtcbiAgICB5aWVsZCogcHJvZmlsZVN5bmMoJ05HX0RJQUdOT1NUSUNTX1NFTUFOVElDJywgKCkgPT4gdHlwZVNjcmlwdFByb2dyYW0uZ2V0U2VtYW50aWNEaWFnbm9zdGljcygpKTtcbiAgfVxuXG4gIGVtaXRBZmZlY3RlZEZpbGVzKCk6IEl0ZXJhYmxlPEVtaXRGaWxlUmVzdWx0PiB7XG4gICAgYXNzZXJ0KHRoaXMuI3N0YXRlLCAnQ29tcGlsYXRpb24gbXVzdCBiZSBpbml0aWFsaXplZCBwcmlvciB0byBlbWl0dGluZyBmaWxlcy4nKTtcbiAgICBjb25zdCB7XG4gICAgICBjb21waWxlckhvc3QsXG4gICAgICB0eXBlU2NyaXB0UHJvZ3JhbSxcbiAgICAgIGNvbnN0cnVjdG9yUGFyYW1ldGVyc0Rvd25sZXZlbFRyYW5zZm9ybSxcbiAgICAgIHJlcGxhY2VSZXNvdXJjZXNUcmFuc2Zvcm0sXG4gICAgICB3ZWJXb3JrZXJUcmFuc2Zvcm0sXG4gICAgfSA9IHRoaXMuI3N0YXRlO1xuICAgIGNvbnN0IGJ1aWxkSW5mb0ZpbGVuYW1lID1cbiAgICAgIHR5cGVTY3JpcHRQcm9ncmFtLmdldENvbXBpbGVyT3B0aW9ucygpLnRzQnVpbGRJbmZvRmlsZSA/PyAnLnRzYnVpbGRpbmZvJztcblxuICAgIGNvbnN0IGVtaXR0ZWRGaWxlczogRW1pdEZpbGVSZXN1bHRbXSA9IFtdO1xuICAgIGNvbnN0IHdyaXRlRmlsZUNhbGxiYWNrOiB0cy5Xcml0ZUZpbGVDYWxsYmFjayA9IChmaWxlbmFtZSwgY29udGVudHMsIF9hLCBfYiwgc291cmNlRmlsZXMpID0+IHtcbiAgICAgIGlmICghc291cmNlRmlsZXM/Lmxlbmd0aCAmJiBmaWxlbmFtZS5lbmRzV2l0aChidWlsZEluZm9GaWxlbmFtZSkpIHtcbiAgICAgICAgLy8gU2F2ZSBidWlsZGVyIGluZm8gY29udGVudHMgdG8gc3BlY2lmaWVkIGxvY2F0aW9uXG4gICAgICAgIGNvbXBpbGVySG9zdC53cml0ZUZpbGUoZmlsZW5hbWUsIGNvbnRlbnRzLCBmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQoc291cmNlRmlsZXM/Lmxlbmd0aCA9PT0gMSwgJ0ludmFsaWQgVHlwZVNjcmlwdCBwcm9ncmFtIGVtaXQgZm9yICcgKyBmaWxlbmFtZSk7XG5cbiAgICAgIGVtaXR0ZWRGaWxlcy5wdXNoKHsgZmlsZW5hbWU6IHNvdXJjZUZpbGVzWzBdLmZpbGVOYW1lLCBjb250ZW50cyB9KTtcbiAgICB9O1xuICAgIGNvbnN0IHRyYW5zZm9ybWVycyA9IHtcbiAgICAgIGJlZm9yZTogW1xuICAgICAgICByZXBsYWNlUmVzb3VyY2VzVHJhbnNmb3JtLFxuICAgICAgICBjb25zdHJ1Y3RvclBhcmFtZXRlcnNEb3dubGV2ZWxUcmFuc2Zvcm0sXG4gICAgICAgIHdlYldvcmtlclRyYW5zZm9ybSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIC8vIFR5cGVTY3JpcHQgd2lsbCBsb29wIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlIGFmZmVjdGVkIGZpbGVzIGluIHRoZSBwcm9ncmFtXG4gICAgd2hpbGUgKFxuICAgICAgdHlwZVNjcmlwdFByb2dyYW0uZW1pdE5leHRBZmZlY3RlZEZpbGUod3JpdGVGaWxlQ2FsbGJhY2ssIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cmFuc2Zvcm1lcnMpXG4gICAgKSB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cblxuICAgIHJldHVybiBlbWl0dGVkRmlsZXM7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEFmZmVjdGVkRmlsZXMoXG4gIGJ1aWxkZXI6IHRzLkVtaXRBbmRTZW1hbnRpY0RpYWdub3N0aWNzQnVpbGRlclByb2dyYW0sXG4pOiBTZXQ8dHMuU291cmNlRmlsZT4ge1xuICBjb25zdCBhZmZlY3RlZEZpbGVzID0gbmV3IFNldDx0cy5Tb3VyY2VGaWxlPigpO1xuXG4gIGxldCByZXN1bHQ7XG4gIHdoaWxlICgocmVzdWx0ID0gYnVpbGRlci5nZXRTZW1hbnRpY0RpYWdub3N0aWNzT2ZOZXh0QWZmZWN0ZWRGaWxlKCkpKSB7XG4gICAgYWZmZWN0ZWRGaWxlcy5hZGQocmVzdWx0LmFmZmVjdGVkIGFzIHRzLlNvdXJjZUZpbGUpO1xuICB9XG5cbiAgcmV0dXJuIGFmZmVjdGVkRmlsZXM7XG59XG4iXX0=
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
import type ng from '@angular/compiler-cli';
|
|
9
|
-
import ts from 'typescript';
|
|
9
|
+
import type ts from 'typescript';
|
|
10
10
|
import { AngularHostOptions } from '../angular-host';
|
|
11
11
|
import { AngularCompilation } from './angular-compilation';
|
|
12
12
|
export declare class NoopCompilation extends AngularCompilation {
|
|
@@ -24,4 +24,3 @@ class NoopCompilation extends angular_compilation_1.AngularCompilation {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
exports.NoopCompilation = NoopCompilation;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC1jb21waWxhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3Rvb2xzL2VzYnVpbGQvYW5ndWxhci9jb21waWxhdGlvbi9ub29wLWNvbXBpbGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUtILCtEQUEyRDtBQUUzRCxNQUFhLGVBQWdCLFNBQVEsd0NBQWtCO0lBQ3JELEtBQUssQ0FBQyxVQUFVLENBQ2QsUUFBZ0IsRUFDaEIsV0FBK0IsRUFDL0IsMEJBQXdGO1FBTXhGLDBEQUEwRDtRQUMxRCxNQUFNLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEYsTUFBTSxlQUFlLEdBQ25CLDBCQUEwQixFQUFFLENBQUMsdUJBQXVCLENBQUMsSUFBSSx1QkFBdUIsQ0FBQztRQUVuRixPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQXpCRCwwQ0F5QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHR5cGUgbmcgZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IEFuZ3VsYXJIb3N0T3B0aW9ucyB9IGZyb20gJy4uL2FuZ3VsYXItaG9zdCc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcGlsYXRpb24gfSBmcm9tICcuL2FuZ3VsYXItY29tcGlsYXRpb24nO1xuXG5leHBvcnQgY2xhc3MgTm9vcENvbXBpbGF0aW9uIGV4dGVuZHMgQW5ndWxhckNvbXBpbGF0aW9uIHtcbiAgYXN5bmMgaW5pdGlhbGl6ZShcbiAgICB0c2NvbmZpZzogc3RyaW5nLFxuICAgIGhvc3RPcHRpb25zOiBBbmd1bGFySG9zdE9wdGlvbnMsXG4gICAgY29tcGlsZXJPcHRpb25zVHJhbnNmb3JtZXI/OiAoY29tcGlsZXJPcHRpb25zOiBuZy5Db21waWxlck9wdGlvbnMpID0+IG5nLkNvbXBpbGVyT3B0aW9ucyxcbiAgKTogUHJvbWlzZTx7XG4gICAgYWZmZWN0ZWRGaWxlczogUmVhZG9ubHlTZXQ8dHMuU291cmNlRmlsZT47XG4gICAgY29tcGlsZXJPcHRpb25zOiBuZy5Db21waWxlck9wdGlvbnM7XG4gICAgcmVmZXJlbmNlZEZpbGVzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgfT4ge1xuICAgIC8vIExvYWQgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gYW5kIHRyYW5zZm9ybSBhcyBuZWVkZWRcbiAgICBjb25zdCB7IG9wdGlvbnM6IG9yaWdpbmFsQ29tcGlsZXJPcHRpb25zIH0gPSBhd2FpdCB0aGlzLmxvYWRDb25maWd1cmF0aW9uKHRzY29uZmlnKTtcbiAgICBjb25zdCBjb21waWxlck9wdGlvbnMgPVxuICAgICAgY29tcGlsZXJPcHRpb25zVHJhbnNmb3JtZXI/LihvcmlnaW5hbENvbXBpbGVyT3B0aW9ucykgPz8gb3JpZ2luYWxDb21waWxlck9wdGlvbnM7XG5cbiAgICByZXR1cm4geyBhZmZlY3RlZEZpbGVzOiBuZXcgU2V0KCksIGNvbXBpbGVyT3B0aW9ucywgcmVmZXJlbmNlZEZpbGVzOiBbXSB9O1xuICB9XG5cbiAgY29sbGVjdERpYWdub3N0aWNzKCk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhdmFpbGFibGUgd2hlbiB1c2luZyBub29wIGNvbXBpbGF0aW9uLicpO1xuICB9XG5cbiAgZW1pdEFmZmVjdGVkRmlsZXMoKTogbmV2ZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGF2YWlsYWJsZSB3aGVuIHVzaW5nIG5vb3AgY29tcGlsYXRpb24uJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
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 { CompilerOptions } from '@angular/compiler-cli';
|
|
9
|
+
import type { PartialMessage } from 'esbuild';
|
|
10
|
+
import type { SourceFile } from 'typescript';
|
|
11
|
+
import type { AngularHostOptions } from '../angular-host';
|
|
12
|
+
import { AngularCompilation, EmitFileResult } from './angular-compilation';
|
|
13
|
+
/**
|
|
14
|
+
* An Angular compilation which uses a Node.js Worker thread to load and execute
|
|
15
|
+
* the TypeScript and Angular compilers. This allows for longer synchronous actions
|
|
16
|
+
* such as semantic and template diagnostics to be calculated in parallel to the
|
|
17
|
+
* other aspects of the application bundling process. The worker thread also has
|
|
18
|
+
* a separate memory pool which significantly reduces the need for adjusting the
|
|
19
|
+
* main Node.js CLI process memory settings with large application code sizes.
|
|
20
|
+
*/
|
|
21
|
+
export declare class ParallelCompilation extends AngularCompilation {
|
|
22
|
+
#private;
|
|
23
|
+
readonly jit: boolean;
|
|
24
|
+
constructor(jit: boolean);
|
|
25
|
+
initialize(tsconfig: string, hostOptions: AngularHostOptions, compilerOptionsTransformer?: ((compilerOptions: CompilerOptions) => CompilerOptions) | undefined): Promise<{
|
|
26
|
+
affectedFiles: ReadonlySet<SourceFile>;
|
|
27
|
+
compilerOptions: CompilerOptions;
|
|
28
|
+
referencedFiles: readonly string[];
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* This is not needed with this compilation type since the worker will already send a response
|
|
32
|
+
* with the serializable esbuild compatible diagnostics.
|
|
33
|
+
*/
|
|
34
|
+
protected collectDiagnostics(): never;
|
|
35
|
+
diagnoseFiles(): Promise<{
|
|
36
|
+
errors?: PartialMessage[];
|
|
37
|
+
warnings?: PartialMessage[];
|
|
38
|
+
}>;
|
|
39
|
+
emitAffectedFiles(): Promise<Iterable<EmitFileResult>>;
|
|
40
|
+
update(files: Set<string>): Promise<void>;
|
|
41
|
+
close(): Promise<void>;
|
|
42
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.ParallelCompilation = void 0;
|
|
14
|
+
const node_module_1 = require("node:module");
|
|
15
|
+
const node_worker_threads_1 = require("node:worker_threads");
|
|
16
|
+
const piscina_1 = __importDefault(require("piscina"));
|
|
17
|
+
const angular_compilation_1 = require("./angular-compilation");
|
|
18
|
+
/**
|
|
19
|
+
* An Angular compilation which uses a Node.js Worker thread to load and execute
|
|
20
|
+
* the TypeScript and Angular compilers. This allows for longer synchronous actions
|
|
21
|
+
* such as semantic and template diagnostics to be calculated in parallel to the
|
|
22
|
+
* other aspects of the application bundling process. The worker thread also has
|
|
23
|
+
* a separate memory pool which significantly reduces the need for adjusting the
|
|
24
|
+
* main Node.js CLI process memory settings with large application code sizes.
|
|
25
|
+
*/
|
|
26
|
+
class ParallelCompilation extends angular_compilation_1.AngularCompilation {
|
|
27
|
+
jit;
|
|
28
|
+
#worker;
|
|
29
|
+
constructor(jit) {
|
|
30
|
+
super();
|
|
31
|
+
this.jit = jit;
|
|
32
|
+
// TODO: Convert to import.meta usage during ESM transition
|
|
33
|
+
const localRequire = (0, node_module_1.createRequire)(__filename);
|
|
34
|
+
this.#worker = new piscina_1.default({
|
|
35
|
+
minThreads: 1,
|
|
36
|
+
maxThreads: 1,
|
|
37
|
+
idleTimeout: Infinity,
|
|
38
|
+
filename: localRequire.resolve('./parallel-worker'),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
initialize(tsconfig, hostOptions, compilerOptionsTransformer) {
|
|
42
|
+
const stylesheetChannel = new node_worker_threads_1.MessageChannel();
|
|
43
|
+
// The request identifier is required because Angular can issue multiple concurrent requests
|
|
44
|
+
stylesheetChannel.port1.on('message', ({ requestId, data, containingFile, stylesheetFile }) => {
|
|
45
|
+
hostOptions
|
|
46
|
+
.transformStylesheet(data, containingFile, stylesheetFile)
|
|
47
|
+
.then((value) => stylesheetChannel.port1.postMessage({ requestId, value }))
|
|
48
|
+
.catch((error) => stylesheetChannel.port1.postMessage({ requestId, error }));
|
|
49
|
+
});
|
|
50
|
+
// The web worker processing is a synchronous operation and uses shared memory combined with
|
|
51
|
+
// the Atomics API to block execution here until a response is received.
|
|
52
|
+
const webWorkerChannel = new node_worker_threads_1.MessageChannel();
|
|
53
|
+
const webWorkerSignal = new Int32Array(new SharedArrayBuffer(4));
|
|
54
|
+
webWorkerChannel.port1.on('message', ({ workerFile, containingFile }) => {
|
|
55
|
+
try {
|
|
56
|
+
const workerCodeFile = hostOptions.processWebWorker(workerFile, containingFile);
|
|
57
|
+
webWorkerChannel.port1.postMessage({ workerCodeFile });
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
webWorkerChannel.port1.postMessage({ error });
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
Atomics.store(webWorkerSignal, 0, 1);
|
|
64
|
+
Atomics.notify(webWorkerSignal, 0);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
// The compiler options transformation is a synchronous operation and uses shared memory combined
|
|
68
|
+
// with the Atomics API to block execution here until a response is received.
|
|
69
|
+
const optionsChannel = new node_worker_threads_1.MessageChannel();
|
|
70
|
+
const optionsSignal = new Int32Array(new SharedArrayBuffer(4));
|
|
71
|
+
optionsChannel.port1.on('message', (compilerOptions) => {
|
|
72
|
+
try {
|
|
73
|
+
const transformedOptions = compilerOptionsTransformer?.(compilerOptions) ?? compilerOptions;
|
|
74
|
+
optionsChannel.port1.postMessage({ transformedOptions });
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
webWorkerChannel.port1.postMessage({ error });
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
Atomics.store(optionsSignal, 0, 1);
|
|
81
|
+
Atomics.notify(optionsSignal, 0);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// Execute the initialize function in the worker thread
|
|
85
|
+
return this.#worker.run({
|
|
86
|
+
fileReplacements: hostOptions.fileReplacements,
|
|
87
|
+
tsconfig,
|
|
88
|
+
jit: this.jit,
|
|
89
|
+
stylesheetPort: stylesheetChannel.port2,
|
|
90
|
+
optionsPort: optionsChannel.port2,
|
|
91
|
+
optionsSignal,
|
|
92
|
+
webWorkerPort: webWorkerChannel.port2,
|
|
93
|
+
webWorkerSignal,
|
|
94
|
+
}, {
|
|
95
|
+
name: 'initialize',
|
|
96
|
+
transferList: [stylesheetChannel.port2, optionsChannel.port2, webWorkerChannel.port2],
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* This is not needed with this compilation type since the worker will already send a response
|
|
101
|
+
* with the serializable esbuild compatible diagnostics.
|
|
102
|
+
*/
|
|
103
|
+
collectDiagnostics() {
|
|
104
|
+
throw new Error('Not implemented in ParallelCompilation.');
|
|
105
|
+
}
|
|
106
|
+
diagnoseFiles() {
|
|
107
|
+
return this.#worker.run(undefined, { name: 'diagnose' });
|
|
108
|
+
}
|
|
109
|
+
emitAffectedFiles() {
|
|
110
|
+
return this.#worker.run(undefined, { name: 'emit' });
|
|
111
|
+
}
|
|
112
|
+
update(files) {
|
|
113
|
+
return this.#worker.run(files, { name: 'update' });
|
|
114
|
+
}
|
|
115
|
+
close() {
|
|
116
|
+
// Workaround piscina bug where a worker thread will be recreated after destroy to meet the minimum.
|
|
117
|
+
this.#worker.options.minThreads = 0;
|
|
118
|
+
return this.#worker.destroy();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.ParallelCompilation = ParallelCompilation;
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
/// <reference types="node" />
|
|
9
|
+
import type { PartialMessage } from 'esbuild';
|
|
10
|
+
import { type MessagePort } from 'node:worker_threads';
|
|
11
|
+
export interface InitRequest {
|
|
12
|
+
jit: boolean;
|
|
13
|
+
tsconfig: string;
|
|
14
|
+
fileReplacements?: Record<string, string>;
|
|
15
|
+
stylesheetPort: MessagePort;
|
|
16
|
+
optionsPort: MessagePort;
|
|
17
|
+
optionsSignal: Int32Array;
|
|
18
|
+
webWorkerPort: MessagePort;
|
|
19
|
+
webWorkerSignal: Int32Array;
|
|
20
|
+
}
|
|
21
|
+
export declare function initialize(request: InitRequest): Promise<{
|
|
22
|
+
referencedFiles: readonly string[];
|
|
23
|
+
compilerOptions: {
|
|
24
|
+
allowJs: boolean | undefined;
|
|
25
|
+
};
|
|
26
|
+
}>;
|
|
27
|
+
export declare function diagnose(): Promise<{
|
|
28
|
+
errors?: PartialMessage[];
|
|
29
|
+
warnings?: PartialMessage[];
|
|
30
|
+
}>;
|
|
31
|
+
export declare function emit(): Promise<import("./angular-compilation").EmitFileResult[]>;
|
|
32
|
+
export declare function update(files: Set<string>): void;
|
|
@@ -0,0 +1,90 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.update = exports.emit = exports.diagnose = exports.initialize = void 0;
|
|
14
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
15
|
+
const node_crypto_1 = require("node:crypto");
|
|
16
|
+
const node_worker_threads_1 = require("node:worker_threads");
|
|
17
|
+
const source_file_cache_1 = require("../source-file-cache");
|
|
18
|
+
const aot_compilation_1 = require("./aot-compilation");
|
|
19
|
+
const jit_compilation_1 = require("./jit-compilation");
|
|
20
|
+
let compilation;
|
|
21
|
+
const sourceFileCache = new source_file_cache_1.SourceFileCache();
|
|
22
|
+
async function initialize(request) {
|
|
23
|
+
compilation ??= request.jit ? new jit_compilation_1.JitCompilation() : new aot_compilation_1.AotCompilation();
|
|
24
|
+
const stylesheetRequests = new Map();
|
|
25
|
+
request.stylesheetPort.on('message', ({ requestId, value, error }) => {
|
|
26
|
+
if (error) {
|
|
27
|
+
stylesheetRequests.get(requestId)?.[1](error);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
stylesheetRequests.get(requestId)?.[0](value);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
const { compilerOptions, referencedFiles } = await compilation.initialize(request.tsconfig, {
|
|
34
|
+
fileReplacements: request.fileReplacements,
|
|
35
|
+
sourceFileCache,
|
|
36
|
+
modifiedFiles: sourceFileCache.modifiedFiles,
|
|
37
|
+
transformStylesheet(data, containingFile, stylesheetFile) {
|
|
38
|
+
const requestId = (0, node_crypto_1.randomUUID)();
|
|
39
|
+
const resultPromise = new Promise((resolve, reject) => stylesheetRequests.set(requestId, [resolve, reject]));
|
|
40
|
+
request.stylesheetPort.postMessage({
|
|
41
|
+
requestId,
|
|
42
|
+
data,
|
|
43
|
+
containingFile,
|
|
44
|
+
stylesheetFile,
|
|
45
|
+
});
|
|
46
|
+
return resultPromise;
|
|
47
|
+
},
|
|
48
|
+
processWebWorker(workerFile, containingFile) {
|
|
49
|
+
Atomics.store(request.webWorkerSignal, 0, 0);
|
|
50
|
+
request.webWorkerPort.postMessage({ workerFile, containingFile });
|
|
51
|
+
Atomics.wait(request.webWorkerSignal, 0, 0);
|
|
52
|
+
const result = (0, node_worker_threads_1.receiveMessageOnPort)(request.webWorkerPort)?.message;
|
|
53
|
+
if (result?.error) {
|
|
54
|
+
throw result.error;
|
|
55
|
+
}
|
|
56
|
+
return result?.workerCodeFile ?? workerFile;
|
|
57
|
+
},
|
|
58
|
+
}, (compilerOptions) => {
|
|
59
|
+
Atomics.store(request.optionsSignal, 0, 0);
|
|
60
|
+
request.optionsPort.postMessage(compilerOptions);
|
|
61
|
+
Atomics.wait(request.optionsSignal, 0, 0);
|
|
62
|
+
const result = (0, node_worker_threads_1.receiveMessageOnPort)(request.optionsPort)?.message;
|
|
63
|
+
if (result?.error) {
|
|
64
|
+
throw result.error;
|
|
65
|
+
}
|
|
66
|
+
return result?.transformedOptions ?? compilerOptions;
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
referencedFiles,
|
|
70
|
+
// TODO: Expand? `allowJs` is the only field needed currently.
|
|
71
|
+
compilerOptions: { allowJs: compilerOptions.allowJs },
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
exports.initialize = initialize;
|
|
75
|
+
async function diagnose() {
|
|
76
|
+
(0, node_assert_1.default)(compilation);
|
|
77
|
+
const diagnostics = await compilation.diagnoseFiles();
|
|
78
|
+
return diagnostics;
|
|
79
|
+
}
|
|
80
|
+
exports.diagnose = diagnose;
|
|
81
|
+
async function emit() {
|
|
82
|
+
(0, node_assert_1.default)(compilation);
|
|
83
|
+
const files = await compilation.emitAffectedFiles();
|
|
84
|
+
return [...files];
|
|
85
|
+
}
|
|
86
|
+
exports.emit = emit;
|
|
87
|
+
function update(files) {
|
|
88
|
+
sourceFileCache.invalidate(files);
|
|
89
|
+
}
|
|
90
|
+
exports.update = update;
|
|
@@ -40,4 +40,3 @@ function getSharedCompilationState() {
|
|
|
40
40
|
return (globalSharedCompilationState ??= new SharedTSCompilationState());
|
|
41
41
|
}
|
|
42
42
|
exports.getSharedCompilationState = getSharedCompilationState;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsYXRpb24tc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9lc2J1aWxkL2FuZ3VsYXIvY29tcGlsYXRpb24tc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsTUFBYSx3QkFBd0I7SUFDbkMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQzNCLHdCQUF3QixDQUEyQjtJQUNuRCx3QkFBd0IsQ0FBNEI7SUFFcEQsSUFBSSxjQUFjO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDN0IsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDMUI7UUFFRCxJQUFJLENBQUMsd0JBQXdCLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN4RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsT0FBTyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxTQUFTLENBQUM7UUFDMUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQiw0QkFBNEIsR0FBRyxTQUFTLENBQUM7SUFDM0MsQ0FBQztDQUNGO0FBL0JELDREQStCQztBQUVELElBQUksNEJBQWtFLENBQUM7QUFFdkUsU0FBZ0IseUJBQXlCO0lBQ3ZDLE9BQU8sQ0FBQyw0QkFBNEIsS0FBSyxJQUFJLHdCQUF3QixFQUFFLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRkQsOERBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IGNsYXNzIFNoYXJlZFRTQ29tcGlsYXRpb25TdGF0ZSB7XG4gICNwZW5kaW5nQ29tcGlsYXRpb24gPSB0cnVlO1xuICAjcmVzb2x2ZUNvbXBpbGF0aW9uUmVhZHk6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgI2NvbXBpbGF0aW9uUmVhZHlQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuXG4gIGdldCB3YWl0VW50aWxSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuI3BlbmRpbmdDb21waWxhdGlvbikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuI2NvbXBpbGF0aW9uUmVhZHlQcm9taXNlID8/PSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy4jcmVzb2x2ZUNvbXBpbGF0aW9uUmVhZHkgPSByZXNvbHZlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuI2NvbXBpbGF0aW9uUmVhZHlQcm9taXNlO1xuICB9XG5cbiAgbWFya0FzUmVhZHkoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzb2x2ZUNvbXBpbGF0aW9uUmVhZHk/LigpO1xuICAgIHRoaXMuI2NvbXBpbGF0aW9uUmVhZHlQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuI3BlbmRpbmdDb21waWxhdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgbWFya0FzSW5Qcm9ncmVzcygpOiB2b2lkIHtcbiAgICB0aGlzLiNwZW5kaW5nQ29tcGlsYXRpb24gPSB0cnVlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1hcmtBc1JlYWR5KCk7XG4gICAgZ2xvYmFsU2hhcmVkQ29tcGlsYXRpb25TdGF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5sZXQgZ2xvYmFsU2hhcmVkQ29tcGlsYXRpb25TdGF0ZTogU2hhcmVkVFNDb21waWxhdGlvblN0YXRlIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hhcmVkQ29tcGlsYXRpb25TdGF0ZSgpOiBTaGFyZWRUU0NvbXBpbGF0aW9uU3RhdGUge1xuICByZXR1cm4gKGdsb2JhbFNoYXJlZENvbXBpbGF0aW9uU3RhdGUgPz89IG5ldyBTaGFyZWRUU0NvbXBpbGF0aW9uU3RhdGUoKSk7XG59XG4iXX0=
|
|
@@ -20,6 +20,7 @@ export interface CompilerPluginOptions {
|
|
|
20
20
|
fileReplacements?: Record<string, string>;
|
|
21
21
|
sourceFileCache?: SourceFileCache;
|
|
22
22
|
loadResultCache?: LoadResultCache;
|
|
23
|
+
incremental: boolean;
|
|
23
24
|
}
|
|
24
25
|
export declare function createCompilerPlugin(pluginOptions: CompilerPluginOptions, styleOptions: BundleStylesheetOptions & {
|
|
25
26
|
inlineStyleLanguage: string;
|