@angular/build 22.2.0-rc.0 → 22.2.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 +11 -11
- package/src/builders/application/build-action.js +14 -59
- package/src/builders/application/build-action.js.map +1 -1
- package/src/builders/application/execute-build.js +1 -1
- package/src/builders/application/execute-build.js.map +1 -1
- package/src/builders/application/execute-post-bundle.js +1 -1
- package/src/builders/application/execute-post-bundle.js.map +1 -1
- package/src/builders/application/i18n.js +5 -3
- 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 +1 -1
- package/src/builders/application/index-html-generator.js.map +1 -0
- package/src/builders/application/options.d.ts +5 -0
- package/src/builders/application/options.js +3 -24
- package/src/builders/application/options.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/karma/schema.d.ts +4 -4
- package/src/builders/karma/schema.json +2 -2
- package/src/builders/unit-test/runners/vitest/build-options.js +14 -3
- package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/executor.js +7 -1
- package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/plugins.d.ts +1 -0
- package/src/builders/unit-test/runners/vitest/plugins.js +7 -2
- package/src/builders/unit-test/runners/vitest/plugins.js.map +1 -1
- package/src/builders/unit-test/schema.d.ts +4 -3
- package/src/builders/unit-test/schema.js.map +1 -1
- package/src/builders/unit-test/schema.json +2 -2
- package/src/private.d.ts +2 -2
- package/src/private.js +2 -2
- package/src/private.js.map +1 -1
- package/src/tools/angular/compilation/aot-compilation.js +1 -1
- package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
- package/src/tools/angular/compilation/compiler-options.d.ts +1 -0
- package/src/tools/angular/compilation/compiler-options.js.map +1 -1
- package/src/tools/angular/compilation/jit-compilation.js +1 -1
- package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-compilation.js +1 -1
- package/src/tools/angular/compilation/parallel-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-worker.js +1 -1
- package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
- package/src/tools/angular/compilation/typescript-compilation.js +12 -2
- package/src/tools/angular/compilation/typescript-compilation.js.map +1 -1
- package/src/tools/angular/linker/oxc-ast-host.js +41 -11
- package/src/tools/angular/linker/oxc-ast-host.js.map +1 -1
- package/src/tools/angular/linker/oxc-linker.js +28 -4
- package/src/tools/angular/linker/oxc-linker.js.map +1 -1
- package/src/tools/esbuild/angular/compiler-plugin.d.ts +1 -0
- package/src/tools/esbuild/angular/compiler-plugin.js +4 -3
- package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -1
- package/src/tools/esbuild/angular/component-stylesheets.js +1 -1
- package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -1
- package/src/tools/esbuild/bundler-execution-result.d.ts +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 -40
- package/src/tools/esbuild/i18n-locale-plugin.js +11 -101
- package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -1
- package/src/tools/esbuild/persistent-load-result-cache.d.ts +1 -1
- package/src/tools/esbuild/persistent-load-result-cache.js +3 -17
- package/src/tools/esbuild/persistent-load-result-cache.js.map +1 -1
- 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 +7 -0
- package/src/tools/esbuild/stylesheets/sass-language.js +34 -13
- package/src/tools/esbuild/stylesheets/sass-language.js.map +1 -1
- package/src/tools/{esbuild → i18n}/i18n-inliner-worker.js +47 -33
- package/src/tools/i18n/i18n-inliner-worker.js.map +1 -0
- package/src/tools/{esbuild → i18n}/i18n-inliner.d.ts +1 -1
- package/src/tools/{esbuild → i18n}/i18n-inliner.js +35 -9
- package/src/tools/i18n/i18n-inliner.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.js +3 -2
- package/src/tools/javascript-transformer/javascript-transformer-worker.js.map +1 -0
- package/src/tools/{esbuild → javascript-transformer}/javascript-transformer.d.ts +1 -1
- package/src/tools/{esbuild → javascript-transformer}/javascript-transformer.js.map +1 -1
- package/src/tools/vite/middlewares/assets-middleware.js +1 -1
- package/src/tools/vite/middlewares/assets-middleware.js.map +1 -1
- package/src/tools/vite/middlewares/ssr-middleware.d.ts +2 -2
- package/src/tools/vite/middlewares/ssr-middleware.js +5 -3
- package/src/tools/vite/middlewares/ssr-middleware.js.map +1 -1
- package/src/tools/vite/plugins/setup-middlewares-plugin.js +2 -2
- package/src/tools/vite/plugins/setup-middlewares-plugin.js.map +1 -1
- package/src/tools/vite/utils.d.ts +1 -1
- package/src/{tools/esbuild → utils/cache}/cache.js +2 -2
- package/src/{tools/esbuild → utils/cache}/cache.js.map +1 -1
- 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/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 +8 -0
- package/src/utils/environment-options.js +9 -1
- package/src/utils/environment-options.js.map +1 -1
- package/src/utils/index-file/auto-csp.d.ts +8 -0
- package/src/utils/index-file/auto-csp.js +34 -5
- package/src/utils/index-file/auto-csp.js.map +1 -1
- package/src/utils/normalize-cache.js +7 -2
- package/src/utils/normalize-cache.js.map +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/resolve-assets.d.ts +4 -0
- package/src/utils/resolve-assets.js +6 -2
- package/src/utils/resolve-assets.js.map +1 -1
- package/src/utils/version.js +1 -1
- package/src/{tools/esbuild → utils}/watcher.d.ts +24 -0
- package/src/{tools/esbuild → utils}/watcher.js +239 -15
- package/src/utils/watcher.js.map +1 -0
- package/src/tools/esbuild/i18n-inliner-worker.js.map +0 -1
- 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.map +0 -1
- package/src/tools/esbuild/watcher.js.map +0 -1
- /package/src/tools/{esbuild → i18n}/i18n-inliner-worker.d.ts +0 -0
- /package/src/tools/{esbuild → i18n}/i18n-translation-encoder.d.ts +0 -0
- /package/src/tools/{esbuild → i18n}/i18n-translation-encoder.js +0 -0
- /package/src/tools/{esbuild → i18n}/i18n-translation-encoder.js.map +0 -0
- /package/src/tools/{esbuild → i18n}/i18n-translation-reader.d.ts +0 -0
- /package/src/tools/{esbuild → i18n}/i18n-translation-reader.js +0 -0
- /package/src/tools/{esbuild → i18n}/i18n-translation-reader.js.map +0 -0
- /package/src/tools/{esbuild → javascript-transformer}/javascript-transformer-worker.d.ts +0 -0
- /package/src/tools/{esbuild → javascript-transformer}/javascript-transformer.js +0 -0
- /package/src/{tools/esbuild → utils/cache}/cache.d.ts +0 -0
- /package/src/{tools/esbuild → utils/cache}/lmdb-cache-store.d.ts +0 -0
- /package/src/{tools/esbuild → utils/cache}/lmdb-cache-store.js +0 -0
- /package/src/{tools/esbuild → utils/cache}/lmdb-cache-store.js.map +0 -0
- /package/src/{tools/esbuild → utils/cache}/sqlite-cache-store.d.ts +0 -0
- /package/src/{tools/esbuild → utils/cache}/sqlite-cache-store.js +0 -0
- /package/src/{tools/esbuild → utils/cache}/sqlite-cache-store.js.map +0 -0
- /package/src/{tools/esbuild → utils}/profiling.d.ts +0 -0
|
@@ -7,105 +7,15 @@
|
|
|
7
7
|
* found in the LICENSE file at https://angular.dev/license
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.LOCALE_DATA_BASE_MODULE = exports.LOCALE_DATA_NAMESPACE = void 0;
|
|
11
|
-
exports.resolveLocaleDataPath = resolveLocaleDataPath;
|
|
12
|
-
exports.loadLocaleData = loadLocaleData;
|
|
10
|
+
exports.resolveLocaleDataPath = exports.loadLocaleData = exports.LOCALE_DATA_BASE_MODULE = exports.LOCALE_DATA_NAMESPACE = void 0;
|
|
13
11
|
exports.createAngularLocaleDataPlugin = createAngularLocaleDataPlugin;
|
|
14
|
-
const promises_1 = require("node:fs/promises");
|
|
15
12
|
const resolve_project_1 = require("../../utils/resolve-project");
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
exports
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*/
|
|
23
|
-
exports.LOCALE_DATA_BASE_MODULE = '@angular/common/locales/global';
|
|
24
|
-
const localeDataCache = new Map();
|
|
25
|
-
/**
|
|
26
|
-
* Resolves the path to the Angular locale data file for a given locale tag.
|
|
27
|
-
*
|
|
28
|
-
* @param rawLocaleTag The raw locale identifier (e.g. "fr-CA", "de", "en-US").
|
|
29
|
-
* @param projectResolve A function that attempts to resolve a path string to an absolute file path.
|
|
30
|
-
* @returns Resolution result with file path, or warning/error diagnostics if applicable.
|
|
31
|
-
*/
|
|
32
|
-
function resolveLocaleDataPath(rawLocaleTag, projectResolve) {
|
|
33
|
-
let partialLocaleTag;
|
|
34
|
-
try {
|
|
35
|
-
const locale = new Intl.Locale(rawLocaleTag);
|
|
36
|
-
partialLocaleTag = locale.baseName;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return {
|
|
40
|
-
error: `Invalid or unsupported locale provided in configuration: "${rawLocaleTag}"`,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
let exact = true;
|
|
44
|
-
while (partialLocaleTag) {
|
|
45
|
-
// Angular embeds the `en`/`en-US` locale into the framework and it does not need to be included again here.
|
|
46
|
-
if (partialLocaleTag === 'en' || partialLocaleTag === 'en-US') {
|
|
47
|
-
return {};
|
|
48
|
-
}
|
|
49
|
-
const potentialPath = `${exports.LOCALE_DATA_BASE_MODULE}/${partialLocaleTag}`;
|
|
50
|
-
try {
|
|
51
|
-
const resolvedPath = projectResolve(potentialPath);
|
|
52
|
-
if (resolvedPath) {
|
|
53
|
-
return {
|
|
54
|
-
path: resolvedPath,
|
|
55
|
-
warning: exact
|
|
56
|
-
? undefined
|
|
57
|
-
: `Locale data for '${rawLocaleTag}' cannot be found. Using locale data for '${partialLocaleTag}'.`,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch { }
|
|
62
|
-
// Remove the last subtag and try again with a less specific locale.
|
|
63
|
-
const parts = partialLocaleTag.split('-');
|
|
64
|
-
partialLocaleTag = parts.slice(0, -1).join('-');
|
|
65
|
-
exact = false;
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
warning: `Locale data for '${rawLocaleTag}' cannot be found. No locale data will be included for this locale.`,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Loads the Angular global locale data script for a specified locale tag.
|
|
73
|
-
*
|
|
74
|
-
* @param rawLocaleTag The raw locale identifier (e.g. "fr-CA", "de", "en-US").
|
|
75
|
-
* @param projectRoot Optional project root for module resolution.
|
|
76
|
-
* @returns A promise resolving to the loaded locale data script code and any diagnostic warnings.
|
|
77
|
-
*/
|
|
78
|
-
function loadLocaleData(rawLocaleTag, projectRoot) {
|
|
79
|
-
let cached = localeDataCache.get(rawLocaleTag);
|
|
80
|
-
if (!cached) {
|
|
81
|
-
cached = (async () => {
|
|
82
|
-
const projectResolve = (0, resolve_project_1.createProjectResolver)(projectRoot ?? process.cwd());
|
|
83
|
-
const resolution = resolveLocaleDataPath(rawLocaleTag, (potentialPath) => {
|
|
84
|
-
try {
|
|
85
|
-
return projectResolve(potentialPath);
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return undefined;
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
if (resolution.error) {
|
|
92
|
-
return { error: resolution.error };
|
|
93
|
-
}
|
|
94
|
-
if (resolution.path) {
|
|
95
|
-
try {
|
|
96
|
-
const code = await (0, promises_1.readFile)(resolution.path, 'utf8');
|
|
97
|
-
return { code, warning: resolution.warning };
|
|
98
|
-
}
|
|
99
|
-
catch (e) {
|
|
100
|
-
return { error: `Failed to read locale data file: ${e.message}` };
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return { warning: resolution.warning };
|
|
104
|
-
})();
|
|
105
|
-
localeDataCache.set(rawLocaleTag, cached);
|
|
106
|
-
}
|
|
107
|
-
return cached;
|
|
108
|
-
}
|
|
13
|
+
const locale_data_1 = require("../i18n/locale-data");
|
|
14
|
+
var locale_data_2 = require("../i18n/locale-data");
|
|
15
|
+
Object.defineProperty(exports, "LOCALE_DATA_NAMESPACE", { enumerable: true, get: function () { return locale_data_2.LOCALE_DATA_NAMESPACE; } });
|
|
16
|
+
Object.defineProperty(exports, "LOCALE_DATA_BASE_MODULE", { enumerable: true, get: function () { return locale_data_2.LOCALE_DATA_BASE_MODULE; } });
|
|
17
|
+
Object.defineProperty(exports, "loadLocaleData", { enumerable: true, get: function () { return locale_data_2.loadLocaleData; } });
|
|
18
|
+
Object.defineProperty(exports, "resolveLocaleDataPath", { enumerable: true, get: function () { return locale_data_2.resolveLocaleDataPath; } });
|
|
109
19
|
/**
|
|
110
20
|
* Creates an esbuild plugin that resolves Angular locale data files from `@angular/common`.
|
|
111
21
|
*
|
|
@@ -119,7 +29,7 @@ function createAngularLocaleDataPlugin() {
|
|
|
119
29
|
const rawLocaleTag = path.split(':', 3)[2];
|
|
120
30
|
const { absWorkingDir } = build.initialOptions;
|
|
121
31
|
let projectResolve;
|
|
122
|
-
const resolution = resolveLocaleDataPath(rawLocaleTag, (potentialPath) => {
|
|
32
|
+
const resolution = (0, locale_data_1.resolveLocaleDataPath)(rawLocaleTag, (potentialPath) => {
|
|
123
33
|
projectResolve ??= (0, resolve_project_1.createProjectResolver)(absWorkingDir ?? process.cwd());
|
|
124
34
|
try {
|
|
125
35
|
return projectResolve(potentialPath);
|
|
@@ -131,14 +41,14 @@ function createAngularLocaleDataPlugin() {
|
|
|
131
41
|
if (resolution.error) {
|
|
132
42
|
return {
|
|
133
43
|
path: rawLocaleTag,
|
|
134
|
-
namespace:
|
|
44
|
+
namespace: locale_data_1.LOCALE_DATA_NAMESPACE,
|
|
135
45
|
errors: [{ text: resolution.error }],
|
|
136
46
|
};
|
|
137
47
|
}
|
|
138
48
|
if (!resolution.path) {
|
|
139
49
|
return {
|
|
140
50
|
path: rawLocaleTag,
|
|
141
|
-
namespace:
|
|
51
|
+
namespace: locale_data_1.LOCALE_DATA_NAMESPACE,
|
|
142
52
|
warnings: resolution.warning
|
|
143
53
|
? [{ location: null, text: resolution.warning }]
|
|
144
54
|
: undefined,
|
|
@@ -150,7 +60,7 @@ function createAngularLocaleDataPlugin() {
|
|
|
150
60
|
};
|
|
151
61
|
});
|
|
152
62
|
// Locales that cannot be found or are en/en-US will be loaded as empty content
|
|
153
|
-
build.onLoad({ filter: /./, namespace:
|
|
63
|
+
build.onLoad({ filter: /./, namespace: locale_data_1.LOCALE_DATA_NAMESPACE }, () => ({
|
|
154
64
|
contents: '',
|
|
155
65
|
loader: 'empty',
|
|
156
66
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-locale-plugin.js","sourceRoot":"","sources":["i18n-locale-plugin.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;
|
|
1
|
+
{"version":3,"file":"i18n-locale-plugin.js","sourceRoot":"","sources":["i18n-locale-plugin.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA0BH,sEAiDC;AAxED,iEAAoE;AACpE,qDAM6B;AAE7B,mDAO6B;AAN3B,oHAAA,qBAAqB,OAAA;AACrB,sHAAA,uBAAuB,OAAA;AAGvB,6GAAA,cAAc,OAAA;AACd,oHAAA,qBAAqB,OAAA;AAGvB;;;;GAIG;AACH,SAAgB,6BAA6B;IAC3C,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBACvE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC;gBAC/C,IAAI,cAA6D,CAAC;gBAElE,MAAM,UAAU,GAAG,IAAA,mCAAqB,EAAC,YAAY,EAAE,CAAC,aAAa,EAAE,EAAE;oBACvE,cAAc,KAAK,IAAA,uCAAqB,EAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;oBACzE,IAAI,CAAC;wBACH,OAAO,cAAc,CAAC,aAAa,CAAC,CAAC;oBACvC,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,SAAS,CAAC;oBACnB,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,OAAO;wBACL,IAAI,EAAE,YAAY;wBAClB,SAAS,EAAE,mCAAqB;wBAChC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;qBACrC,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;oBACrB,OAAO;wBACL,IAAI,EAAE,YAAY;wBAClB,SAAS,EAAE,mCAAqB;wBAChC,QAAQ,EAAE,UAAU,CAAC,OAAO;4BAC1B,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;4BAChD,CAAC,CAAC,SAAS;qBACd,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC1F,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,+EAA+E;YAC/E,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,mCAAqB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBACrE,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* - {@link CachedDependencyMetadata}: Per-dependency file metadata (`hash`, `mtimeMs`, `size`) used for cache validation and healing.
|
|
27
27
|
*/
|
|
28
28
|
import type { Loader, OnLoadResult, PartialMessage } from 'esbuild';
|
|
29
|
-
import type { Cache as PersistentCacheStore } from '
|
|
29
|
+
import type { Cache as PersistentCacheStore } from '../../utils/cache';
|
|
30
30
|
import { LoadResultCache } from './load-result-cache';
|
|
31
31
|
/**
|
|
32
32
|
* Metadata for a single watch file dependency.
|
|
@@ -12,6 +12,7 @@ exports.extractDiskFilePath = extractDiskFilePath;
|
|
|
12
12
|
const promises_1 = require("node:fs/promises");
|
|
13
13
|
const node_path_1 = require("node:path");
|
|
14
14
|
const node_url_1 = require("node:url");
|
|
15
|
+
const concurrency_1 = require("../../utils/concurrency");
|
|
15
16
|
const hash_1 = require("../../utils/hash");
|
|
16
17
|
const load_result_cache_1 = require("./load-result-cache");
|
|
17
18
|
/**
|
|
@@ -52,21 +53,6 @@ function extractDiskFilePath(path) {
|
|
|
52
53
|
}
|
|
53
54
|
/** Maximum number of concurrent file system read/stat operations to prevent OS file descriptor exhaustion. */
|
|
54
55
|
const MAX_CONCURRENT_READS = 16;
|
|
55
|
-
/**
|
|
56
|
-
* Maps an array asynchronously with a sliding worker pool to maintain full concurrency saturation.
|
|
57
|
-
*/
|
|
58
|
-
async function mapConcurrent(items, limit, fn) {
|
|
59
|
-
const results = new Array(items.length);
|
|
60
|
-
let index = 0;
|
|
61
|
-
const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
|
|
62
|
-
while (index < items.length) {
|
|
63
|
-
const i = index++;
|
|
64
|
-
results[i] = await fn(items[i]);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
await Promise.all(workers);
|
|
68
|
-
return results;
|
|
69
|
-
}
|
|
70
56
|
/**
|
|
71
57
|
* Validates that all imported watch files exist on disk and their contents match.
|
|
72
58
|
* Performs a fast-path metadata check (mtime + size) first, falling back to content hashing.
|
|
@@ -78,7 +64,7 @@ async function validateAndHealCacheEntry(watchFilesMetadata, store, cacheKey, ca
|
|
|
78
64
|
}
|
|
79
65
|
const watchFiles = Object.keys(watchFilesMetadata);
|
|
80
66
|
let healed = false;
|
|
81
|
-
const isValidResults = await mapConcurrent(watchFiles, MAX_CONCURRENT_READS, async (filePath) => {
|
|
67
|
+
const isValidResults = await (0, concurrency_1.mapConcurrent)(watchFiles, MAX_CONCURRENT_READS, async (filePath) => {
|
|
82
68
|
try {
|
|
83
69
|
const stats = await (0, promises_1.stat)(filePath);
|
|
84
70
|
const expected = watchFilesMetadata[filePath];
|
|
@@ -127,7 +113,7 @@ async function validateAndHealCacheEntry(watchFilesMetadata, store, cacheKey, ca
|
|
|
127
113
|
*/
|
|
128
114
|
async function computeMetadataForWatchFiles(watchFiles, knownContents) {
|
|
129
115
|
const watchFilesMetadata = {};
|
|
130
|
-
await
|
|
116
|
+
await (0, concurrency_1.runConcurrent)(watchFiles, MAX_CONCURRENT_READS, async (filePath) => {
|
|
131
117
|
try {
|
|
132
118
|
const knownContent = knownContents?.get(filePath);
|
|
133
119
|
const [content, stats] = await Promise.all([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-load-result-cache.js","sourceRoot":"","sources":["persistent-load-result-cache.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;
|
|
1
|
+
{"version":3,"file":"persistent-load-result-cache.js","sourceRoot":"","sources":["persistent-load-result-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
|
@@ -10,3 +10,10 @@ export declare function resetSassWorkerPoolCaches(): void;
|
|
|
10
10
|
export declare function shutdownSassWorkerPool(): void;
|
|
11
11
|
export declare const SassStylesheetLanguage: Readonly<StylesheetLanguage>;
|
|
12
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;
|
|
@@ -44,9 +44,10 @@ exports.SassStylesheetLanguage = void 0;
|
|
|
44
44
|
exports.resetSassWorkerPoolCaches = resetSassWorkerPoolCaches;
|
|
45
45
|
exports.shutdownSassWorkerPool = shutdownSassWorkerPool;
|
|
46
46
|
exports.isPackageUrl = isPackageUrl;
|
|
47
|
+
exports.getPackageScope = getPackageScope;
|
|
47
48
|
const node_path_1 = require("node:path");
|
|
48
49
|
const node_url_1 = require("node:url");
|
|
49
|
-
const cache_1 = require("
|
|
50
|
+
const cache_1 = require("../../../utils/cache");
|
|
50
51
|
let sassService;
|
|
51
52
|
let sassServicePromise;
|
|
52
53
|
let resolutionCache;
|
|
@@ -81,11 +82,7 @@ exports.SassStylesheetLanguage = Object.freeze({
|
|
|
81
82
|
fileFilter: /\.s[ac]ss$/,
|
|
82
83
|
process(data, file, format, options, build) {
|
|
83
84
|
const syntax = format === 'sass' ? 'indented' : 'scss';
|
|
84
|
-
const resolveUrl = async (url,
|
|
85
|
-
let resolveDir = build.initialOptions.absWorkingDir;
|
|
86
|
-
if (options.containingUrl) {
|
|
87
|
-
resolveDir = (0, node_path_1.dirname)((0, node_url_1.fileURLToPath)(options.containingUrl));
|
|
88
|
-
}
|
|
85
|
+
const resolveUrl = async (url, resolveDir) => {
|
|
89
86
|
const path = url.startsWith('pkg:') ? url.slice(4) : url;
|
|
90
87
|
const result = await build.resolve(path, {
|
|
91
88
|
kind: 'import-rule',
|
|
@@ -93,7 +90,7 @@ exports.SassStylesheetLanguage = Object.freeze({
|
|
|
93
90
|
});
|
|
94
91
|
return result;
|
|
95
92
|
};
|
|
96
|
-
return compileString(data, file, syntax, options, resolveUrl);
|
|
93
|
+
return compileString(data, file, syntax, options, resolveUrl, build.initialOptions.absWorkingDir);
|
|
97
94
|
},
|
|
98
95
|
});
|
|
99
96
|
function isPackageUrl(url) {
|
|
@@ -118,7 +115,23 @@ function parsePackageName(url) {
|
|
|
118
115
|
},
|
|
119
116
|
};
|
|
120
117
|
}
|
|
121
|
-
|
|
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) {
|
|
122
135
|
// Lazily load Sass when a Sass file is found
|
|
123
136
|
if (sassService === undefined) {
|
|
124
137
|
if (sassServicePromise === undefined) {
|
|
@@ -132,7 +145,8 @@ async function compileString(data, filePath, syntax, options, resolveUrl) {
|
|
|
132
145
|
}
|
|
133
146
|
}
|
|
134
147
|
// Caching follows Sass behavior where a given package url will always resolve to the same value
|
|
135
|
-
// regardless of its importer's path
|
|
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.
|
|
136
150
|
// A null value indicates that the cached resolution attempt failed to find a location and
|
|
137
151
|
// later stage resolution should be attempted. This avoids potentially expensive repeat
|
|
138
152
|
// failing resolution attempts.
|
|
@@ -157,10 +171,17 @@ async function compileString(data, filePath, syntax, options, resolveUrl) {
|
|
|
157
171
|
importers: [
|
|
158
172
|
{
|
|
159
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;
|
|
160
178
|
const isPackage = isPackageUrl(url);
|
|
161
|
-
const
|
|
179
|
+
const scope = getPackageScope(containingPath, workingDirectory);
|
|
180
|
+
const cacheKey = isPackage
|
|
181
|
+
? `${scope}:${url}`
|
|
182
|
+
: `${options.containingUrl?.href ?? ''}:${url}`;
|
|
162
183
|
return currentResolutionCache.getOrCreate(cacheKey, async () => {
|
|
163
|
-
const result = await resolveUrl(url,
|
|
184
|
+
const result = await resolveUrl(url, resolveDir);
|
|
164
185
|
if (result.path) {
|
|
165
186
|
return (0, node_url_1.pathToFileURL)(result.path);
|
|
166
187
|
}
|
|
@@ -171,9 +192,9 @@ async function compileString(data, filePath, syntax, options, resolveUrl) {
|
|
|
171
192
|
const { packageName, pathSegments } = parsePackageName(url);
|
|
172
193
|
// Caching package root locations is particularly beneficial for `@material/*` packages
|
|
173
194
|
// which extensively use deep imports.
|
|
174
|
-
const packageRoot = await currentPackageRootCache.getOrCreate(packageName
|
|
195
|
+
const packageRoot = await currentPackageRootCache.getOrCreate(`${scope}:${packageName}`, async () => {
|
|
175
196
|
// Use the required presence of a package root `package.json` file to resolve the location
|
|
176
|
-
const packageResult = await resolveUrl(packageName + '/package.json',
|
|
197
|
+
const packageResult = await resolveUrl(packageName + '/package.json', resolveDir);
|
|
177
198
|
return packageResult.path ? (0, node_path_1.dirname)(packageResult.path) : null;
|
|
178
199
|
});
|
|
179
200
|
// Package not found could be because of an error or the specifier is intended to be found
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sass-language.js","sourceRoot":"","sources":["sass-language.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBH,8DAQC;AAED,wDASC;
|
|
1
|
+
{"version":3,"file":"sass-language.js","sourceRoot":"","sources":["sass-language.ts"],"names":[],"mappings":"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"}
|