@depup/angular__build 22.1.8-depup.4 → 22.2.0-depup.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/README.md +9 -14
- package/builders.json +1 -1
- package/changes.json +13 -33
- package/package.json +31 -50
- package/src/builders/application/build-action.js +63 -92
- package/src/builders/application/build-action.js.map +1 -1
- package/src/builders/application/chunk-optimizer.d.ts +2 -2
- package/src/builders/application/chunk-optimizer.js +5 -5
- package/src/builders/application/chunk-optimizer.js.map +1 -1
- package/src/builders/application/execute-build.js +26 -19
- package/src/builders/application/execute-build.js.map +1 -1
- package/src/builders/application/execute-post-bundle.d.ts +2 -2
- package/src/builders/application/execute-post-bundle.js +5 -5
- package/src/builders/application/execute-post-bundle.js.map +1 -1
- package/src/builders/application/i18n.d.ts +3 -1
- package/src/builders/application/i18n.js +48 -13
- package/src/builders/application/i18n.js.map +1 -1
- package/src/{tools/esbuild → builders/application}/index-html-generator.d.ts +2 -2
- package/src/{tools/esbuild → builders/application}/index-html-generator.js +2 -2
- package/src/builders/application/index-html-generator.js.map +1 -0
- package/src/builders/application/index.js +2 -2
- package/src/builders/application/index.js.map +1 -1
- package/src/builders/application/options.d.ts +5 -0
- package/src/builders/application/options.js +8 -26
- package/src/builders/application/options.js.map +1 -1
- package/src/builders/application/results.d.ts +3 -2
- package/src/builders/application/schema.d.ts +2 -1
- package/src/builders/application/schema.js.map +1 -1
- package/src/builders/application/schema.json +1 -2
- package/src/builders/application/setup-bundling.js +3 -1
- package/src/builders/application/setup-bundling.js.map +1 -1
- package/src/builders/dev-server/internal.d.ts +1 -1
- package/src/builders/dev-server/internal.js +1 -1
- package/src/builders/dev-server/internal.js.map +1 -1
- package/src/builders/dev-server/vite/index.js +5 -8
- package/src/builders/dev-server/vite/index.js.map +1 -1
- package/src/builders/dev-server/vite/server.js +2 -0
- package/src/builders/dev-server/vite/server.js.map +1 -1
- package/src/builders/dev-server/vite/utils.d.ts +1 -1
- package/src/builders/dev-server/vite/utils.js +9 -4
- package/src/builders/dev-server/vite/utils.js.map +1 -1
- package/src/builders/extract-i18n/application-extraction.js +6 -5
- package/src/builders/extract-i18n/application-extraction.js.map +1 -1
- package/src/builders/karma/application_builder.js +1 -1
- package/src/builders/karma/application_builder.js.map +1 -1
- package/src/builders/karma/assets-middleware.d.ts +2 -2
- package/src/builders/karma/assets-middleware.js +5 -2
- package/src/builders/karma/assets-middleware.js.map +1 -1
- package/src/builders/karma/progress-reporter.js +7 -5
- package/src/builders/karma/progress-reporter.js.map +1 -1
- package/src/builders/karma/utils.d.ts +2 -1
- package/src/builders/karma/utils.js +2 -2
- package/src/builders/karma/utils.js.map +1 -1
- package/src/builders/unit-test/builder.js +1 -1
- package/src/builders/unit-test/runners/vitest/build-options.js +9 -3
- package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/executor.js +5 -4
- package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/plugins.d.ts +4 -4
- package/src/builders/unit-test/runners/vitest/plugins.js +9 -2
- package/src/builders/unit-test/runners/vitest/plugins.js.map +1 -1
- package/src/builders/unit-test/schema.d.ts +3 -2
- package/src/builders/unit-test/schema.js.map +1 -1
- package/src/builders/unit-test/schema.json +3 -2
- package/src/builders/unit-test/test-discovery.js +3 -2
- package/src/builders/unit-test/test-discovery.js.map +1 -1
- package/src/private.d.ts +3 -5
- package/src/private.js +6 -9
- package/src/private.js.map +1 -1
- package/src/tools/angular/angular-host.d.ts +1 -2
- package/src/tools/angular/angular-host.js +6 -6
- package/src/tools/angular/angular-host.js.map +1 -1
- package/src/tools/angular/compilation/angular-compilation.d.ts +24 -16
- package/src/tools/angular/compilation/angular-compilation.js +4 -80
- package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
- package/src/tools/angular/compilation/aot-compilation.d.ts +6 -12
- package/src/tools/angular/compilation/aot-compilation.js +23 -20
- package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
- package/src/tools/angular/compilation/compiler-options.d.ts +25 -0
- package/src/tools/angular/compilation/compiler-options.js +135 -0
- package/src/tools/angular/compilation/compiler-options.js.map +1 -0
- package/src/tools/angular/compilation/factory.d.ts +5 -3
- package/src/tools/angular/compilation/factory.js +10 -5
- package/src/tools/angular/compilation/factory.js.map +1 -1
- package/src/tools/angular/compilation/index.d.ts +3 -3
- package/src/tools/angular/compilation/index.js +1 -3
- package/src/tools/angular/compilation/index.js.map +1 -1
- package/src/tools/angular/compilation/jit-compilation.d.ts +6 -9
- package/src/tools/angular/compilation/jit-compilation.js +10 -16
- package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-compilation.d.ts +3 -14
- package/src/tools/angular/compilation/parallel-compilation.js +40 -42
- package/src/tools/angular/compilation/parallel-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-worker.d.ts +5 -17
- package/src/tools/angular/compilation/parallel-worker.js +89 -68
- package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
- package/src/tools/angular/compilation/typescript-compilation.d.ts +31 -0
- package/src/tools/angular/compilation/typescript-compilation.js +125 -0
- package/src/tools/angular/compilation/typescript-compilation.js.map +1 -0
- package/src/tools/angular/linker/oxc-ast-host.d.ts +33 -0
- package/src/tools/angular/linker/oxc-ast-host.js +234 -0
- package/src/tools/angular/linker/oxc-ast-host.js.map +1 -0
- package/src/tools/angular/linker/oxc-linker.d.ts +22 -0
- package/src/tools/angular/linker/oxc-linker.js +75 -0
- package/src/tools/angular/linker/oxc-linker.js.map +1 -0
- package/src/tools/angular/linker/string-ast-factory.d.ts +86 -0
- package/src/tools/angular/linker/string-ast-factory.js +234 -0
- package/src/tools/angular/linker/string-ast-factory.js.map +1 -0
- package/src/tools/esbuild/angular/compilation-state.d.ts +23 -3
- package/src/tools/esbuild/angular/compilation-state.js +51 -13
- package/src/tools/esbuild/angular/compilation-state.js.map +1 -1
- package/src/tools/esbuild/angular/compiler-plugin.d.ts +1 -0
- package/src/tools/esbuild/angular/compiler-plugin.js +126 -139
- package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -1
- package/src/tools/esbuild/angular/component-stylesheets.d.ts +3 -3
- package/src/tools/esbuild/angular/component-stylesheets.js +52 -22
- package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -1
- package/src/tools/esbuild/angular/source-file-cache.d.ts +1 -2
- package/src/tools/esbuild/angular/source-file-cache.js +1 -11
- package/src/tools/esbuild/angular/source-file-cache.js.map +1 -1
- package/src/tools/esbuild/application-code-bundle.js +7 -14
- package/src/tools/esbuild/application-code-bundle.js.map +1 -1
- package/src/tools/esbuild/budget-stats.js +3 -3
- package/src/tools/esbuild/budget-stats.js.map +1 -1
- package/src/tools/esbuild/bundler-context.d.ts +23 -7
- package/src/tools/esbuild/bundler-context.js +112 -43
- package/src/tools/esbuild/bundler-context.js.map +1 -1
- package/src/tools/esbuild/bundler-execution-result.d.ts +2 -1
- package/src/tools/esbuild/bundler-execution-result.js +2 -2
- package/src/tools/esbuild/bundler-execution-result.js.map +1 -1
- package/src/tools/esbuild/bundler-files.js +3 -5
- package/src/tools/esbuild/bundler-files.js.map +1 -1
- package/src/tools/esbuild/compiler-plugin-options.js +2 -1
- package/src/tools/esbuild/compiler-plugin-options.js.map +1 -1
- package/src/tools/esbuild/i18n-locale-plugin.d.ts +1 -8
- package/src/tools/esbuild/i18n-locale-plugin.js +33 -114
- package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -1
- package/src/tools/esbuild/license-extractor.d.ts +1 -1
- package/src/tools/esbuild/license-extractor.js +89 -86
- package/src/tools/esbuild/license-extractor.js.map +1 -1
- package/src/tools/esbuild/load-result-cache.d.ts +2 -1
- package/src/tools/esbuild/load-result-cache.js +28 -13
- package/src/tools/esbuild/load-result-cache.js.map +1 -1
- package/src/tools/esbuild/persistent-load-result-cache.d.ts +87 -0
- package/src/tools/esbuild/persistent-load-result-cache.js +229 -0
- package/src/tools/esbuild/persistent-load-result-cache.js.map +1 -0
- package/src/tools/esbuild/stylesheets/bundle-options.d.ts +1 -0
- package/src/tools/esbuild/stylesheets/bundle-options.js +1 -1
- package/src/tools/esbuild/stylesheets/bundle-options.js.map +1 -1
- package/src/tools/esbuild/stylesheets/css-resource-plugin.d.ts +3 -1
- package/src/tools/esbuild/stylesheets/css-resource-plugin.js +4 -2
- package/src/tools/esbuild/stylesheets/css-resource-plugin.js.map +1 -1
- package/src/tools/esbuild/stylesheets/sass-language.d.ts +9 -0
- package/src/tools/esbuild/stylesheets/sass-language.js +109 -50
- package/src/tools/esbuild/stylesheets/sass-language.js.map +1 -1
- package/src/tools/esbuild/stylesheets/stylesheet-cache-key.d.ts +35 -0
- package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js +64 -0
- package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js.map +1 -0
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.d.ts +1 -1
- package/src/tools/esbuild/utils.d.ts +3 -3
- package/src/tools/esbuild/utils.js +9 -6
- package/src/tools/esbuild/utils.js.map +1 -1
- package/src/tools/i18n/i18n-inliner-worker.d.ts +126 -0
- package/src/tools/i18n/i18n-inliner-worker.js +363 -0
- package/src/tools/i18n/i18n-inliner-worker.js.map +1 -0
- package/src/tools/i18n/i18n-inliner.d.ts +97 -0
- package/src/tools/i18n/i18n-inliner.js +500 -0
- package/src/tools/i18n/i18n-inliner.js.map +1 -0
- package/src/tools/i18n/i18n-translation-encoder.d.ts +21 -0
- package/src/tools/i18n/i18n-translation-encoder.js +92 -0
- package/src/tools/i18n/i18n-translation-encoder.js.map +1 -0
- package/src/tools/i18n/i18n-translation-reader.d.ts +41 -0
- package/src/tools/i18n/i18n-translation-reader.js +164 -0
- package/src/tools/i18n/i18n-translation-reader.js.map +1 -0
- package/src/tools/i18n/index.d.ts +11 -0
- package/src/tools/i18n/index.js +28 -0
- package/src/tools/i18n/index.js.map +1 -0
- package/src/tools/i18n/locale-data.d.ts +47 -0
- package/src/tools/i18n/locale-data.js +108 -0
- package/src/tools/i18n/locale-data.js.map +1 -0
- package/src/tools/javascript-transformer/index.d.ts +8 -0
- package/src/tools/javascript-transformer/index.js +25 -0
- package/src/tools/javascript-transformer/index.js.map +1 -0
- package/src/tools/{esbuild → javascript-transformer}/javascript-transformer-worker.d.ts +0 -4
- package/src/tools/javascript-transformer/javascript-transformer-worker.js +231 -0
- package/src/tools/javascript-transformer/javascript-transformer-worker.js.map +1 -0
- package/src/tools/{esbuild → javascript-transformer}/javascript-transformer.d.ts +26 -9
- package/src/tools/javascript-transformer/javascript-transformer.js +294 -0
- package/src/tools/javascript-transformer/javascript-transformer.js.map +1 -0
- package/src/tools/{babel/plugins → oxc}/oxc-transform.d.ts +5 -2
- package/src/tools/{babel/plugins → oxc}/oxc-transform.js +105 -138
- package/src/tools/oxc/oxc-transform.js.map +1 -0
- package/src/tools/oxc/traversal.d.ts +32 -0
- package/src/tools/oxc/traversal.js +299 -0
- package/src/tools/oxc/traversal.js.map +1 -0
- package/src/tools/oxc/types.d.ts +20 -0
- package/src/tools/sass/rebasing-importer.d.ts +12 -18
- package/src/tools/sass/rebasing-importer.js +23 -26
- package/src/tools/sass/rebasing-importer.js.map +1 -1
- package/src/tools/sass/sass-service.d.ts +15 -38
- package/src/tools/sass/sass-service.js +132 -187
- package/src/tools/sass/sass-service.js.map +1 -1
- package/src/tools/vite/middlewares/assets-middleware.js +3 -3
- package/src/tools/vite/middlewares/assets-middleware.js.map +1 -1
- package/src/tools/vite/utils.d.ts +1 -1
- package/src/{tools/esbuild → utils/cache}/cache.d.ts +25 -8
- package/src/{tools/esbuild → utils/cache}/cache.js +72 -41
- package/src/utils/cache/cache.js.map +1 -0
- package/src/utils/cache/index.d.ts +8 -0
- package/src/utils/cache/index.js +25 -0
- package/src/utils/cache/index.js.map +1 -0
- package/src/{tools/esbuild → utils/cache}/lmdb-cache-store.js +1 -1
- package/src/{tools/esbuild → utils/cache}/lmdb-cache-store.js.map +1 -1
- package/src/{tools/esbuild → utils/cache}/sqlite-cache-store.d.ts +1 -1
- package/src/utils/cache/sqlite-cache-store.js +339 -0
- package/src/utils/cache/sqlite-cache-store.js.map +1 -0
- package/src/utils/concurrency.d.ts +30 -0
- package/src/utils/concurrency.js +81 -0
- package/src/utils/concurrency.js.map +1 -0
- package/src/utils/environment-options.d.ts +34 -0
- package/src/utils/environment-options.js +42 -12
- package/src/utils/environment-options.js.map +1 -1
- package/src/utils/hash.d.ts +24 -0
- package/src/utils/hash.js +94 -0
- package/src/utils/hash.js.map +1 -0
- package/src/utils/i18n-options.d.ts +3 -1
- package/src/utils/i18n-options.js.map +1 -1
- package/src/utils/index-file/auto-csp.d.ts +8 -0
- package/src/utils/index-file/auto-csp.js +30 -3
- package/src/utils/index-file/auto-csp.js.map +1 -1
- package/src/utils/index-file/index-html-generator.d.ts +1 -1
- package/src/utils/index-file/index-html-generator.js +9 -13
- package/src/utils/index-file/index-html-generator.js.map +1 -1
- package/src/utils/index-file/inline-critical-css.d.ts +16 -18
- package/src/utils/index-file/inline-critical-css.js +78 -179
- package/src/utils/index-file/inline-critical-css.js.map +1 -1
- package/src/utils/index-file/nonce.d.ts +2 -0
- package/src/utils/index-file/nonce.js +1 -0
- package/src/utils/index-file/nonce.js.map +1 -1
- package/src/utils/normalize-cache.js +1 -1
- package/src/utils/postcss-configuration.d.ts +6 -0
- package/src/utils/postcss-configuration.js +23 -0
- package/src/utils/postcss-configuration.js.map +1 -1
- package/src/{tools/esbuild → utils}/profiling.js +1 -1
- package/src/{tools/esbuild → utils}/profiling.js.map +1 -1
- package/src/utils/server-rendering/manifest.d.ts +2 -2
- package/src/utils/server-rendering/manifest.js +53 -4
- package/src/utils/server-rendering/manifest.js.map +1 -1
- package/src/utils/source-map.d.ts +26 -2
- package/src/utils/source-map.js +151 -53
- package/src/utils/source-map.js.map +1 -1
- package/src/utils/test-files.d.ts +2 -2
- package/src/utils/test-files.js +3 -3
- package/src/utils/test-files.js.map +1 -1
- package/src/utils/watcher.d.ts +61 -0
- package/src/utils/watcher.js +642 -0
- package/src/utils/watcher.js.map +1 -0
- package/src/tools/angular/compilation/noop-compilation.d.ts +0 -20
- package/src/tools/angular/compilation/noop-compilation.js +0 -27
- package/src/tools/angular/compilation/noop-compilation.js.map +0 -1
- package/src/tools/babel/plugins/add-code-coverage.d.ts +0 -14
- package/src/tools/babel/plugins/add-code-coverage.js +0 -44
- package/src/tools/babel/plugins/add-code-coverage.js.map +0 -1
- package/src/tools/babel/plugins/adjust-static-class-members.d.ts +0 -25
- package/src/tools/babel/plugins/adjust-static-class-members.js +0 -349
- package/src/tools/babel/plugins/adjust-static-class-members.js.map +0 -1
- package/src/tools/babel/plugins/adjust-typescript-enums.d.ts +0 -21
- package/src/tools/babel/plugins/adjust-typescript-enums.js +0 -113
- package/src/tools/babel/plugins/adjust-typescript-enums.js.map +0 -1
- package/src/tools/babel/plugins/elide-angular-metadata.d.ts +0 -23
- package/src/tools/babel/plugins/elide-angular-metadata.js +0 -110
- package/src/tools/babel/plugins/elide-angular-metadata.js.map +0 -1
- package/src/tools/babel/plugins/index.d.ts +0 -11
- package/src/tools/babel/plugins/index.js +0 -22
- package/src/tools/babel/plugins/index.js.map +0 -1
- package/src/tools/babel/plugins/oxc-transform.js.map +0 -1
- package/src/tools/babel/plugins/pure-toplevel-functions.d.ts +0 -13
- package/src/tools/babel/plugins/pure-toplevel-functions.js +0 -128
- package/src/tools/babel/plugins/pure-toplevel-functions.js.map +0 -1
- package/src/tools/babel/plugins/types.d.ts +0 -20
- package/src/tools/babel/typings.d.ts +0 -21
- package/src/tools/esbuild/cache.js.map +0 -1
- package/src/tools/esbuild/i18n-inliner-worker.d.ts +0 -81
- package/src/tools/esbuild/i18n-inliner-worker.js +0 -255
- package/src/tools/esbuild/i18n-inliner-worker.js.map +0 -1
- package/src/tools/esbuild/i18n-inliner.d.ts +0 -58
- package/src/tools/esbuild/i18n-inliner.js +0 -265
- package/src/tools/esbuild/i18n-inliner.js.map +0 -1
- package/src/tools/esbuild/index-html-generator.js.map +0 -1
- package/src/tools/esbuild/javascript-transformer-worker.js +0 -192
- package/src/tools/esbuild/javascript-transformer-worker.js.map +0 -1
- package/src/tools/esbuild/javascript-transformer.js +0 -197
- package/src/tools/esbuild/javascript-transformer.js.map +0 -1
- package/src/tools/esbuild/sqlite-cache-store.js +0 -165
- package/src/tools/esbuild/sqlite-cache-store.js.map +0 -1
- package/src/tools/esbuild/watcher.d.ts +0 -25
- package/src/tools/esbuild/watcher.js +0 -119
- package/src/tools/esbuild/watcher.js.map +0 -1
- package/src/tools/sass/worker.d.ts +0 -63
- package/src/tools/sass/worker.js +0 -202
- package/src/tools/sass/worker.js.map +0 -1
- /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.d.ts +0 -0
- /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js +0 -0
- /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js.map +0 -0
- /package/src/{tools/esbuild → utils/cache}/lmdb-cache-store.d.ts +0 -0
- /package/src/{tools/esbuild → utils}/profiling.d.ts +0 -0
|
@@ -0,0 +1,229 @@
|
|
|
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.dev/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.PersistentLoadResultCache = void 0;
|
|
11
|
+
exports.extractDiskFilePath = extractDiskFilePath;
|
|
12
|
+
const promises_1 = require("node:fs/promises");
|
|
13
|
+
const node_path_1 = require("node:path");
|
|
14
|
+
const node_url_1 = require("node:url");
|
|
15
|
+
const concurrency_1 = require("../../utils/concurrency");
|
|
16
|
+
const hash_1 = require("../../utils/hash");
|
|
17
|
+
const load_result_cache_1 = require("./load-result-cache");
|
|
18
|
+
/**
|
|
19
|
+
* Calculates a unique cache key from the global configuration hash and path.
|
|
20
|
+
*/
|
|
21
|
+
function calculateCacheKey(globalConfigHash, path) {
|
|
22
|
+
const hasher = (0, hash_1.createContentHash)();
|
|
23
|
+
hasher.update(globalConfigHash);
|
|
24
|
+
hasher.update('\0');
|
|
25
|
+
hasher.update(path);
|
|
26
|
+
return hasher.digest();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Normalizes a namespaced cache key into a valid disk file path if one exists.
|
|
30
|
+
* Handles 'file:' URIs, OS platform differences, and custom plugin namespaces.
|
|
31
|
+
*/
|
|
32
|
+
function extractDiskFilePath(path) {
|
|
33
|
+
if (path.startsWith('file:')) {
|
|
34
|
+
const urlStr = path.startsWith('file://') ? path : 'file://' + path.slice(5);
|
|
35
|
+
try {
|
|
36
|
+
return (0, node_url_1.fileURLToPath)(urlStr);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
const candidate = path.slice(5);
|
|
40
|
+
return (0, node_path_1.isAbsolute)(candidate) ? candidate : undefined;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Handle custom namespace prefix (e.g. "sass:/path/to/file")
|
|
44
|
+
// Ensure colonIndex > 1 to avoid treating Windows drive letters (e.g. "C:/") as namespace prefixes.
|
|
45
|
+
const colonIndex = path.indexOf(':');
|
|
46
|
+
if (colonIndex > 1) {
|
|
47
|
+
const candidatePath = path.slice(colonIndex + 1);
|
|
48
|
+
if ((0, node_path_1.isAbsolute)(candidatePath)) {
|
|
49
|
+
return candidatePath;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return (0, node_path_1.isAbsolute)(path) ? path : undefined;
|
|
53
|
+
}
|
|
54
|
+
/** Maximum number of concurrent file system read/stat operations to prevent OS file descriptor exhaustion. */
|
|
55
|
+
const MAX_CONCURRENT_READS = 16;
|
|
56
|
+
/**
|
|
57
|
+
* Validates that all imported watch files exist on disk and their contents match.
|
|
58
|
+
* Performs a fast-path metadata check (mtime + size) first, falling back to content hashing.
|
|
59
|
+
* Heals/updates the cached metadata on disk if the content hash was valid but the metadata changed.
|
|
60
|
+
*/
|
|
61
|
+
async function validateAndHealCacheEntry(watchFilesMetadata, store, cacheKey, cached) {
|
|
62
|
+
if (!watchFilesMetadata) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
const watchFiles = Object.keys(watchFilesMetadata);
|
|
66
|
+
let healed = false;
|
|
67
|
+
const isValidResults = await (0, concurrency_1.mapConcurrent)(watchFiles, MAX_CONCURRENT_READS, async (filePath) => {
|
|
68
|
+
try {
|
|
69
|
+
const stats = await (0, promises_1.stat)(filePath);
|
|
70
|
+
const expected = watchFilesMetadata[filePath];
|
|
71
|
+
if (!expected) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
// 1. Fast Path: size and mtime match
|
|
75
|
+
if (stats.size === expected.size && stats.mtimeMs === expected.mtimeMs) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
// 2. Slow Path: content hash fallback
|
|
79
|
+
const currentContent = await (0, promises_1.readFile)(filePath);
|
|
80
|
+
const currentHash = (0, hash_1.calculateHash)(currentContent);
|
|
81
|
+
if (currentHash === expected.hash) {
|
|
82
|
+
// Heal cache entry with new metadata
|
|
83
|
+
watchFilesMetadata[filePath] = {
|
|
84
|
+
...expected,
|
|
85
|
+
mtimeMs: stats.mtimeMs,
|
|
86
|
+
size: stats.size,
|
|
87
|
+
};
|
|
88
|
+
healed = true;
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
if (isValidResults.some((isValid) => !isValid)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
if (healed) {
|
|
101
|
+
try {
|
|
102
|
+
await store.put(cacheKey, cached);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Ignore errors writing healed entries
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Computes metadata (content hashes, mtime, size) for an array of watch file paths.
|
|
112
|
+
* Processes files with a sliding worker pool of 16 concurrent operations.
|
|
113
|
+
*/
|
|
114
|
+
async function computeMetadataForWatchFiles(watchFiles, knownContents) {
|
|
115
|
+
const watchFilesMetadata = {};
|
|
116
|
+
await (0, concurrency_1.runConcurrent)(watchFiles, MAX_CONCURRENT_READS, async (filePath) => {
|
|
117
|
+
try {
|
|
118
|
+
const knownContent = knownContents?.get(filePath);
|
|
119
|
+
const [content, stats] = await Promise.all([
|
|
120
|
+
knownContent !== undefined ? knownContent : (0, promises_1.readFile)(filePath),
|
|
121
|
+
(0, promises_1.stat)(filePath),
|
|
122
|
+
]);
|
|
123
|
+
const hash = (0, hash_1.calculateHash)(content);
|
|
124
|
+
watchFilesMetadata[filePath] = {
|
|
125
|
+
hash,
|
|
126
|
+
mtimeMs: stats.mtimeMs,
|
|
127
|
+
size: stats.size,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// Ignore unreadable files
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
return watchFilesMetadata;
|
|
135
|
+
}
|
|
136
|
+
class PersistentLoadResultCache {
|
|
137
|
+
persistentStore;
|
|
138
|
+
globalConfigHash;
|
|
139
|
+
memoryCache = new load_result_cache_1.MemoryLoadResultCache();
|
|
140
|
+
constructor(persistentStore, globalConfigHash = '') {
|
|
141
|
+
this.persistentStore = persistentStore;
|
|
142
|
+
this.globalConfigHash = globalConfigHash;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Retrieves a load result from cache.
|
|
146
|
+
* Checks L1 memory cache first for immediate watch-mode speed, falling back to L2 persistent disk
|
|
147
|
+
* store on L1 cache miss. L2 persistent cache entries are validated against dependency metadata.
|
|
148
|
+
*/
|
|
149
|
+
async get(path) {
|
|
150
|
+
// 1. Check L1 Memory Cache
|
|
151
|
+
const memoryResult = this.memoryCache.get(path);
|
|
152
|
+
if (memoryResult) {
|
|
153
|
+
return memoryResult;
|
|
154
|
+
}
|
|
155
|
+
if (!this.persistentStore) {
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
// 2. Check L2 Persistent Disk Cache
|
|
159
|
+
const cacheKey = calculateCacheKey(this.globalConfigHash, path);
|
|
160
|
+
const cached = await this.persistentStore.get(cacheKey);
|
|
161
|
+
if (cached &&
|
|
162
|
+
(await validateAndHealCacheEntry(cached.watchFilesMetadata, this.persistentStore, cacheKey, cached))) {
|
|
163
|
+
const result = {
|
|
164
|
+
contents: cached.contents,
|
|
165
|
+
loader: cached.loader,
|
|
166
|
+
watchFiles: cached.watchFiles,
|
|
167
|
+
watchDirs: cached.watchDirs,
|
|
168
|
+
warnings: cached.warnings,
|
|
169
|
+
errors: cached.errors,
|
|
170
|
+
};
|
|
171
|
+
// Populate L1 Memory Cache for subsequent lookups
|
|
172
|
+
await this.memoryCache.put(path, result);
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Stores a load result in both L1 memory cache and L2 persistent disk store.
|
|
179
|
+
*/
|
|
180
|
+
async put(path, result) {
|
|
181
|
+
await this.memoryCache.put(path, result);
|
|
182
|
+
// Persist to L2 store if persistentStore is configured and contents exist (including empty strings/buffers)
|
|
183
|
+
if (this.persistentStore && result.contents !== undefined) {
|
|
184
|
+
let content = '';
|
|
185
|
+
const filePath = extractDiskFilePath(path);
|
|
186
|
+
if (filePath) {
|
|
187
|
+
try {
|
|
188
|
+
content = await (0, promises_1.readFile)(filePath);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Skip L2 persistent store if target disk file cannot be read
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const cacheKey = calculateCacheKey(this.globalConfigHash, path);
|
|
196
|
+
// Reuse the target file's pre-read content buffer to avoid redundant disk reads (readFile)
|
|
197
|
+
// during dependency watch file metadata computation.
|
|
198
|
+
const knownContents = filePath
|
|
199
|
+
? new Map([[filePath, content]])
|
|
200
|
+
: undefined;
|
|
201
|
+
const allWatchFiles = Array.from(new Set(filePath ? [filePath, ...(result.watchFiles ?? [])] : result.watchFiles));
|
|
202
|
+
const watchFilesMetadata = await computeMetadataForWatchFiles(allWatchFiles, knownContents);
|
|
203
|
+
await this.persistentStore.put(cacheKey, {
|
|
204
|
+
contents: result.contents,
|
|
205
|
+
loader: result.loader,
|
|
206
|
+
watchFiles: result.watchFiles ?? [],
|
|
207
|
+
watchDirs: result.watchDirs,
|
|
208
|
+
watchFilesMetadata,
|
|
209
|
+
warnings: result.warnings,
|
|
210
|
+
errors: result.errors,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Invalidates cached entries affected by a modified dependency file during watch mode.
|
|
216
|
+
*
|
|
217
|
+
* Note: Invalidation of L1 memory cache is sufficient for active watch mode.
|
|
218
|
+
* Cross-process/cold start stale entries in L2 persistent store are automatically handled
|
|
219
|
+
* during `get()` via dependency metadata verification (`validateAndHealCacheEntry`).
|
|
220
|
+
*/
|
|
221
|
+
invalidate(path) {
|
|
222
|
+
return this.memoryCache.invalidate(path);
|
|
223
|
+
}
|
|
224
|
+
get watchFiles() {
|
|
225
|
+
return this.memoryCache.watchFiles;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
exports.PersistentLoadResultCache = PersistentLoadResultCache;
|
|
229
|
+
//# sourceMappingURL=persistent-load-result-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistent-load-result-cache.js","sourceRoot":"","sources":["persistent-load-result-cache.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAmFH,kDAuBC;AAlFD,+CAAkD;AAClD,yCAAuC;AACvC,uCAAyC;AAEzC,yDAAuE;AACvE,2CAAoE;AACpE,2DAA6E;AAqC7E;;GAEG;AACH,SAAS,iBAAiB,CAAC,gBAAwB,EAAE,IAAY;IAC/D,MAAM,MAAM,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACnC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEpB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC;YACH,OAAO,IAAA,wBAAa,EAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEhC,OAAO,IAAA,sBAAU,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,oGAAoG;IACpG,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,IAAA,sBAAU,EAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,IAAA,sBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED,8GAA8G;AAC9G,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC;;;;GAIG;AACH,KAAK,UAAU,yBAAyB,CACtC,kBAAwE,EACxE,KAAkD,EAClD,QAAgB,EAChB,MAA6B;IAE7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnD,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,cAAc,GAAG,MAAM,IAAA,2BAAa,EAAC,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC9F,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAA,eAAI,EAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC;YACf,CAAC;YAED,qCAAqC;YACrC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACvE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,sCAAsC;YACtC,MAAM,cAAc,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAA,oBAAa,EAAC,cAAc,CAAC,CAAC;YAClD,IAAI,WAAW,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClC,qCAAqC;gBACrC,kBAAkB,CAAC,QAAQ,CAAC,GAAG;oBAC7B,GAAG,QAAQ;oBACX,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC;gBACF,MAAM,GAAG,IAAI,CAAC;gBAEd,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,4BAA4B,CACzC,UAAoB,EACpB,aAAgD;IAEhD,MAAM,kBAAkB,GAA6C,EAAE,CAAC;IAExE,MAAM,IAAA,2BAAa,EAAC,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACzC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,mBAAQ,EAAC,QAAQ,CAAC;gBAC9D,IAAA,eAAI,EAAC,QAAQ,CAAC;aACf,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAA,oBAAa,EAAC,OAAO,CAAC,CAAC;YACpC,kBAAkB,CAAC,QAAQ,CAAC,GAAG;gBAC7B,IAAI;gBACJ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAa,yBAAyB;IAIjB;IACA;IAJF,WAAW,GAAG,IAAI,yCAAqB,EAAE,CAAC;IAE3D,YACmB,eAA6D,EAC7D,mBAA2B,EAAE;QAD7B,oBAAe,GAAf,eAAe,CAA8C;QAC7D,qBAAgB,GAAhB,gBAAgB,CAAa;IAC7C,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,2BAA2B;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,oCAAoC;QACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExD,IACE,MAAM;YACN,CAAC,MAAM,yBAAyB,CAC9B,MAAM,CAAC,kBAAkB,EACzB,IAAI,CAAC,eAAe,EACpB,QAAQ,EACR,MAAM,CACP,CAAC,EACF,CAAC;YACD,MAAM,MAAM,GAAiB;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,kDAAkD;YAClD,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEzC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,MAAoB;QAC1C,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEzC,4GAA4G;QAC5G,IAAI,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC1D,IAAI,OAAO,GAAwB,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;gBAAC,MAAM,CAAC;oBACP,8DAA8D;oBAC9D,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAEhE,2FAA2F;YAC3F,qDAAqD;YACrD,MAAM,aAAa,GAAG,QAAQ;gBAC5B,CAAC,CAAC,IAAI,GAAG,CAA8B,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC7D,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9B,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CACjF,CAAC;YACF,MAAM,kBAAkB,GAAG,MAAM,4BAA4B,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAE5F,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;gBACnC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,kBAAkB;gBAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;IACrC,CAAC;CACF;AAhHD,8DAgHC"}
|
|
@@ -33,7 +33,7 @@ function createStylesheetBundleOptions(options, cache, inlineComponentData) {
|
|
|
33
33
|
pluginFactory.create(sass_language_1.SassStylesheetLanguage),
|
|
34
34
|
pluginFactory.create(less_language_1.LessStylesheetLanguage),
|
|
35
35
|
pluginFactory.create(css_language_1.CssStylesheetLanguage),
|
|
36
|
-
(0, css_resource_plugin_1.createCssResourcePlugin)(cache),
|
|
36
|
+
(0, css_resource_plugin_1.createCssResourcePlugin)(cache, options.dataurl),
|
|
37
37
|
];
|
|
38
38
|
if (options.inlineFonts) {
|
|
39
39
|
plugins.unshift((0, css_inline_fonts_plugin_1.createCssInlineFontsPlugin)({ cache, cacheOptions: options.cacheOptions }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-options.js","sourceRoot":"","sources":["bundle-options.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;
|
|
1
|
+
{"version":3,"file":"bundle-options.js","sourceRoot":"","sources":["bundle-options.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAiCH,sEAyDC;AAvFD,0DAA6B;AAI7B,uEAAuE;AACvE,iDAAuD;AACvD,+DAAgE;AAChE,mDAAyD;AACzD,mDAAyD;AACzD,2EAA4F;AAqB5F,SAAgB,6BAA6B,CAC3C,OAAgC,EAChC,KAAuB,EACvB,mBAA4C;IAE5C,6EAA6E;IAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC7D,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CACjD,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,mDAAuB,CAC/C;QACE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS;QAC9B,YAAY;QACZ,mBAAmB;QACnB,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,EACD,KAAK,CACN,CAAC;IAEF,MAAM,OAAO,GAAa;QACxB,aAAa,CAAC,MAAM,CAAC,sCAAsB,CAAC;QAC5C,aAAa,CAAC,MAAM,CAAC,sCAAsB,CAAC;QAC5C,aAAa,CAAC,MAAM,CAAC,oCAAqB,CAAC;QAC3C,IAAA,6CAAuB,EAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;KAChD,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,IAAA,oDAA0B,EAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO;QACvC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK;QACrC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,aAAa;QAC7B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,QAAQ,EAAE,OAAO,CAAC,oBAAoB;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;QAC1F,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7B,6EAA6E;QAC7E,gFAAgF;QAChF,iBAAiB,EAAE,EAAE;QACrB,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -13,6 +13,8 @@ import { LoadResultCache } from '../load-result-cache';
|
|
|
13
13
|
* and types to be supported without needing to manually specify all extensions
|
|
14
14
|
* within the build configuration.
|
|
15
15
|
*
|
|
16
|
+
* @param cache An optional load result cache.
|
|
17
|
+
* @param dataurl If true, resources will be loaded with the 'dataurl' loader to inline them as base64 data URIs.
|
|
16
18
|
* @returns An esbuild {@link Plugin} instance.
|
|
17
19
|
*/
|
|
18
|
-
export declare function createCssResourcePlugin(cache?: LoadResultCache): Plugin;
|
|
20
|
+
export declare function createCssResourcePlugin(cache?: LoadResultCache, dataurl?: boolean): Plugin;
|
|
@@ -23,9 +23,11 @@ const CSS_RESOURCE_RESOLUTION = Symbol('CSS_RESOURCE_RESOLUTION');
|
|
|
23
23
|
* and types to be supported without needing to manually specify all extensions
|
|
24
24
|
* within the build configuration.
|
|
25
25
|
*
|
|
26
|
+
* @param cache An optional load result cache.
|
|
27
|
+
* @param dataurl If true, resources will be loaded with the 'dataurl' loader to inline them as base64 data URIs.
|
|
26
28
|
* @returns An esbuild {@link Plugin} instance.
|
|
27
29
|
*/
|
|
28
|
-
function createCssResourcePlugin(cache) {
|
|
30
|
+
function createCssResourcePlugin(cache, dataurl) {
|
|
29
31
|
return {
|
|
30
32
|
name: 'angular-css-resource',
|
|
31
33
|
setup(build) {
|
|
@@ -104,7 +106,7 @@ function createCssResourcePlugin(cache) {
|
|
|
104
106
|
const resourcePath = (0, node_path_1.join)(build.initialOptions.absWorkingDir ?? '', args.path);
|
|
105
107
|
return {
|
|
106
108
|
contents: await (0, promises_1.readFile)(resourcePath),
|
|
107
|
-
loader: 'file',
|
|
109
|
+
loader: dataurl ? 'dataurl' : 'file',
|
|
108
110
|
watchFiles: [resourcePath],
|
|
109
111
|
};
|
|
110
112
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-resource-plugin.js","sourceRoot":"","sources":["css-resource-plugin.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"css-resource-plugin.js","sourceRoot":"","sources":["css-resource-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,14 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.dev/license
|
|
7
7
|
*/
|
|
8
8
|
import { StylesheetLanguage } from './stylesheet-plugin-factory';
|
|
9
|
+
export declare function resetSassWorkerPoolCaches(): void;
|
|
9
10
|
export declare function shutdownSassWorkerPool(): void;
|
|
10
11
|
export declare const SassStylesheetLanguage: Readonly<StylesheetLanguage>;
|
|
12
|
+
export declare function isPackageUrl(url: string): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Returns the scope that qualifies the cached package resolutions of a stylesheet. A stylesheet
|
|
15
|
+
* within `node_modules` uses the root of its enclosing package, since every file of a package
|
|
16
|
+
* resolves its dependencies against the same `node_modules` directories. All other stylesheets use
|
|
17
|
+
* the working directory, allowing component stylesheets to share package resolutions.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getPackageScope(containingPath: string | undefined, workingDirectory: string | undefined): string;
|
|
@@ -41,24 +41,40 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
})();
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
43
|
exports.SassStylesheetLanguage = void 0;
|
|
44
|
+
exports.resetSassWorkerPoolCaches = resetSassWorkerPoolCaches;
|
|
44
45
|
exports.shutdownSassWorkerPool = shutdownSassWorkerPool;
|
|
46
|
+
exports.isPackageUrl = isPackageUrl;
|
|
47
|
+
exports.getPackageScope = getPackageScope;
|
|
45
48
|
const node_path_1 = require("node:path");
|
|
46
49
|
const node_url_1 = require("node:url");
|
|
47
|
-
const cache_1 = require("
|
|
48
|
-
let
|
|
49
|
-
let
|
|
50
|
+
const cache_1 = require("../../../utils/cache");
|
|
51
|
+
let sassService;
|
|
52
|
+
let sassServicePromise;
|
|
53
|
+
let resolutionCache;
|
|
54
|
+
let packageRootCache;
|
|
50
55
|
function isSassException(error) {
|
|
51
56
|
return !!error && typeof error === 'object' && 'sassMessage' in error;
|
|
52
57
|
}
|
|
58
|
+
function resetSassWorkerPoolCaches() {
|
|
59
|
+
resolutionCache?.clear();
|
|
60
|
+
packageRootCache?.clear();
|
|
61
|
+
if (sassService) {
|
|
62
|
+
sassService.clearCache();
|
|
63
|
+
}
|
|
64
|
+
else if (sassServicePromise) {
|
|
65
|
+
void sassServicePromise.then((service) => service.clearCache());
|
|
66
|
+
}
|
|
67
|
+
}
|
|
53
68
|
function shutdownSassWorkerPool() {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
69
|
+
resetSassWorkerPoolCaches();
|
|
70
|
+
if (sassService) {
|
|
71
|
+
void sassService.close();
|
|
72
|
+
sassService = undefined;
|
|
57
73
|
}
|
|
58
|
-
else if (
|
|
59
|
-
void
|
|
74
|
+
else if (sassServicePromise) {
|
|
75
|
+
void sassServicePromise.then(shutdownSassWorkerPool);
|
|
60
76
|
}
|
|
61
|
-
|
|
77
|
+
sassServicePromise = undefined;
|
|
62
78
|
}
|
|
63
79
|
exports.SassStylesheetLanguage = Object.freeze({
|
|
64
80
|
name: 'sass',
|
|
@@ -66,11 +82,7 @@ exports.SassStylesheetLanguage = Object.freeze({
|
|
|
66
82
|
fileFilter: /\.s[ac]ss$/,
|
|
67
83
|
process(data, file, format, options, build) {
|
|
68
84
|
const syntax = format === 'sass' ? 'indented' : 'scss';
|
|
69
|
-
const resolveUrl = async (url,
|
|
70
|
-
let resolveDir = build.initialOptions.absWorkingDir;
|
|
71
|
-
if (options.containingUrl) {
|
|
72
|
-
resolveDir = (0, node_path_1.dirname)((0, node_url_1.fileURLToPath)(options.containingUrl));
|
|
73
|
-
}
|
|
85
|
+
const resolveUrl = async (url, resolveDir) => {
|
|
74
86
|
const path = url.startsWith('pkg:') ? url.slice(4) : url;
|
|
75
87
|
const result = await build.resolve(path, {
|
|
76
88
|
kind: 'import-rule',
|
|
@@ -78,9 +90,19 @@ exports.SassStylesheetLanguage = Object.freeze({
|
|
|
78
90
|
});
|
|
79
91
|
return result;
|
|
80
92
|
};
|
|
81
|
-
return compileString(data, file, syntax, options, resolveUrl);
|
|
93
|
+
return compileString(data, file, syntax, options, resolveUrl, build.initialOptions.absWorkingDir);
|
|
82
94
|
},
|
|
83
95
|
});
|
|
96
|
+
function isPackageUrl(url) {
|
|
97
|
+
if (url.startsWith('pkg:')) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
return (url.length > 0 &&
|
|
101
|
+
!url.startsWith('.') &&
|
|
102
|
+
!url.startsWith('/') &&
|
|
103
|
+
!url.startsWith('\\') &&
|
|
104
|
+
!url.includes(':'));
|
|
105
|
+
}
|
|
84
106
|
function parsePackageName(url) {
|
|
85
107
|
const parts = (url.startsWith('pkg:') ? url.slice(4) : url).split('/');
|
|
86
108
|
const hasScope = parts.length >= 2 && parts[0][0] === '@';
|
|
@@ -93,26 +115,49 @@ function parsePackageName(url) {
|
|
|
93
115
|
},
|
|
94
116
|
};
|
|
95
117
|
}
|
|
96
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Returns the scope that qualifies the cached package resolutions of a stylesheet. A stylesheet
|
|
120
|
+
* within `node_modules` uses the root of its enclosing package, since every file of a package
|
|
121
|
+
* resolves its dependencies against the same `node_modules` directories. All other stylesheets use
|
|
122
|
+
* the working directory, allowing component stylesheets to share package resolutions.
|
|
123
|
+
*/
|
|
124
|
+
function getPackageScope(containingPath, workingDirectory) {
|
|
125
|
+
// The directory segments of the stylesheet, excluding the file name
|
|
126
|
+
const segments = containingPath?.split(/[\\/]/).slice(0, -1) ?? [];
|
|
127
|
+
const index = segments.lastIndexOf('node_modules');
|
|
128
|
+
if (index === -1) {
|
|
129
|
+
return workingDirectory ?? '';
|
|
130
|
+
}
|
|
131
|
+
const packageNameLength = segments[index + 1]?.[0] === '@' ? 2 : 1;
|
|
132
|
+
return segments.slice(0, index + 1 + packageNameLength).join('/');
|
|
133
|
+
}
|
|
134
|
+
async function compileString(data, filePath, syntax, options, resolveUrl, workingDirectory) {
|
|
97
135
|
// Lazily load Sass when a Sass file is found
|
|
98
|
-
if (
|
|
99
|
-
if (
|
|
100
|
-
|
|
136
|
+
if (sassService === undefined) {
|
|
137
|
+
if (sassServicePromise === undefined) {
|
|
138
|
+
sassServicePromise = Promise.resolve().then(() => __importStar(require('../../sass/sass-service'))).then((sassService) => new sassService.SassCompiler(true));
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
sassService = await sassServicePromise;
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
sassServicePromise = undefined;
|
|
101
145
|
}
|
|
102
|
-
sassWorkerPool = await sassWorkerPoolPromise;
|
|
103
146
|
}
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
147
|
+
// Caching follows Sass behavior where a given package url will always resolve to the same value
|
|
148
|
+
// regardless of its importer's path, except for importers within `node_modules`, which are
|
|
149
|
+
// scoped to their enclosing package. Relative paths are qualified with the containing URL.
|
|
107
150
|
// A null value indicates that the cached resolution attempt failed to find a location and
|
|
108
151
|
// later stage resolution should be attempted. This avoids potentially expensive repeat
|
|
109
152
|
// failing resolution attempts.
|
|
110
|
-
|
|
111
|
-
|
|
153
|
+
resolutionCache ??= new cache_1.MemoryCache();
|
|
154
|
+
packageRootCache ??= new cache_1.MemoryCache();
|
|
155
|
+
const currentResolutionCache = resolutionCache;
|
|
156
|
+
const currentPackageRootCache = packageRootCache;
|
|
112
157
|
const warnings = [];
|
|
113
158
|
const { silenceDeprecations, futureDeprecations, fatalDeprecations } = options.sass ?? {};
|
|
114
159
|
try {
|
|
115
|
-
const { css, sourceMap, loadedUrls } = await
|
|
160
|
+
const { css, sourceMap, loadedUrls } = await sassService.compileStringAsync(data, {
|
|
116
161
|
url: (0, node_url_1.pathToFileURL)(filePath),
|
|
117
162
|
style: 'expanded',
|
|
118
163
|
syntax,
|
|
@@ -125,30 +170,44 @@ async function compileString(data, filePath, syntax, options, resolveUrl) {
|
|
|
125
170
|
quietDeps: true,
|
|
126
171
|
importers: [
|
|
127
172
|
{
|
|
128
|
-
findFileUrl: (url, options) =>
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
173
|
+
findFileUrl: (url, options) => {
|
|
174
|
+
const containingPath = options.containingUrl?.protocol === 'file:'
|
|
175
|
+
? (0, node_url_1.fileURLToPath)(options.containingUrl)
|
|
176
|
+
: undefined;
|
|
177
|
+
const resolveDir = containingPath ? (0, node_path_1.dirname)(containingPath) : workingDirectory;
|
|
178
|
+
const isPackage = isPackageUrl(url);
|
|
179
|
+
const scope = getPackageScope(containingPath, workingDirectory);
|
|
180
|
+
const cacheKey = isPackage
|
|
181
|
+
? `${scope}:${url}`
|
|
182
|
+
: `${options.containingUrl?.href ?? ''}:${url}`;
|
|
183
|
+
return currentResolutionCache.getOrCreate(cacheKey, async () => {
|
|
184
|
+
const result = await resolveUrl(url, resolveDir);
|
|
185
|
+
if (result.path) {
|
|
186
|
+
return (0, node_url_1.pathToFileURL)(result.path);
|
|
187
|
+
}
|
|
188
|
+
// Check for package deep imports
|
|
189
|
+
if (!isPackage) {
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
const { packageName, pathSegments } = parsePackageName(url);
|
|
193
|
+
// Caching package root locations is particularly beneficial for `@material/*` packages
|
|
194
|
+
// which extensively use deep imports.
|
|
195
|
+
const packageRoot = await currentPackageRootCache.getOrCreate(`${scope}:${packageName}`, async () => {
|
|
196
|
+
// Use the required presence of a package root `package.json` file to resolve the location
|
|
197
|
+
const packageResult = await resolveUrl(packageName + '/package.json', resolveDir);
|
|
198
|
+
return packageResult.path ? (0, node_path_1.dirname)(packageResult.path) : null;
|
|
199
|
+
});
|
|
200
|
+
// Package not found could be because of an error or the specifier is intended to be found
|
|
201
|
+
// via a later stage of the resolution process (`loadPaths`, etc.).
|
|
202
|
+
// Errors are reported after the full completion of the resolution process. Exceptions for
|
|
203
|
+
// not found packages should not be raised here.
|
|
204
|
+
if (packageRoot) {
|
|
205
|
+
return (0, node_url_1.pathToFileURL)((0, node_path_1.join)(packageRoot, ...pathSegments));
|
|
206
|
+
}
|
|
207
|
+
// Not found
|
|
208
|
+
return null;
|
|
141
209
|
});
|
|
142
|
-
|
|
143
|
-
// via a later stage of the resolution process (`loadPaths`, etc.).
|
|
144
|
-
// Errors are reported after the full completion of the resolution process. Exceptions for
|
|
145
|
-
// not found packages should not be raised here.
|
|
146
|
-
if (packageRoot) {
|
|
147
|
-
return (0, node_url_1.pathToFileURL)((0, node_path_1.join)(packageRoot, ...pathSegments));
|
|
148
|
-
}
|
|
149
|
-
// Not found
|
|
150
|
-
return null;
|
|
151
|
-
}),
|
|
210
|
+
},
|
|
152
211
|
},
|
|
153
212
|
],
|
|
154
213
|
logger: {
|
|
@@ -223,7 +282,7 @@ function* extractFilesFromStack(stack) {
|
|
|
223
282
|
path += segments[index++];
|
|
224
283
|
}
|
|
225
284
|
if (path) {
|
|
226
|
-
// Stack paths from
|
|
285
|
+
// Stack paths from sass are relative to the current working directory (not input file or workspace root)
|
|
227
286
|
yield (0, node_path_1.join)(cwd, path);
|
|
228
287
|
}
|
|
229
288
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sass-language.js","sourceRoot":"","sources":["sass-language.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"sass-language.js","sourceRoot":"","sources":["sass-language.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
7
|
+
*/
|
|
8
|
+
import type { BundleStylesheetOptions } from './bundle-options';
|
|
9
|
+
/**
|
|
10
|
+
* Generates a global hash based on all build options that affect stylesheet compilation.
|
|
11
|
+
*
|
|
12
|
+
* IMPORTANT: This hash acts as the root cache key prefix for all persistent stylesheet cache
|
|
13
|
+
* entries. Any change in the values hashed below will invalidate all cached stylesheet outputs
|
|
14
|
+
* across the entire application.
|
|
15
|
+
*
|
|
16
|
+
* Included build options and their rationale:
|
|
17
|
+
* - `optimization`: Affects CSS minification, dead code elimination, and whitespace stripping.
|
|
18
|
+
* - `sourcemap`: Toggles inline/external source map generation and comment insertion.
|
|
19
|
+
* - `sourcesContent`: Toggles embedding original source content inside generated source maps.
|
|
20
|
+
* - `includePaths`: Changes Sass/Less `@import` and `@use` path resolution search directories.
|
|
21
|
+
* - `sassOptions`: Changes Sass compiler deprecations and behavior flags.
|
|
22
|
+
* - `target`: Affects CSS property lowering and browser vendor prefixing in esbuild.
|
|
23
|
+
* - `publicPath`: Affects relative asset URL rewriting (`url('...')`) inside CSS output.
|
|
24
|
+
* - `outputNames`: Affects asset output filename hashing schemes.
|
|
25
|
+
* - `inlineFonts`: Controls whether external web font `@import` / `<link>` directives are inlined.
|
|
26
|
+
* - `preserveSymlinks`: Controls symlink realpath resolution in monorepos/pnpm workspace packages.
|
|
27
|
+
* - `externalDependencies`: Controls which CSS modules/urls are excluded from bundling.
|
|
28
|
+
* - `postcssConfig`: Path to custom PostCSS configuration file.
|
|
29
|
+
* - `tailwindConfig`: Path to Tailwind CSS configuration file.
|
|
30
|
+
* - `packageVersion`: Invalidates cache across `@angular/build` compiler toolchain updates.
|
|
31
|
+
*
|
|
32
|
+
* @note Maintainers: If any new build option is added to `BundleStylesheetOptions` or `@angular/build`
|
|
33
|
+
* that alters generated stylesheet code or asset outputs, it MUST be added to this hash object.
|
|
34
|
+
*/
|
|
35
|
+
export declare function calculateGlobalStylesheetConfigHash(options: BundleStylesheetOptions, packageVersion?: string): string;
|