@angular/build 22.2.0-next.2 → 22.2.0-next.4
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 -9
- package/src/builders/application/build-action.js +14 -3
- 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 +6 -5
- package/src/builders/application/chunk-optimizer.js.map +1 -1
- package/src/builders/application/execute-build.js +44 -18
- 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 +4 -4
- package/src/builders/application/execute-post-bundle.js.map +1 -1
- package/src/builders/application/i18n.js +22 -1
- package/src/builders/application/i18n.js.map +1 -1
- package/src/builders/application/options.d.ts +14 -0
- package/src/builders/application/options.js +2 -1
- package/src/builders/application/options.js.map +1 -1
- package/src/builders/application/setup-bundling.js +2 -2
- 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 +2 -2
- package/src/builders/dev-server/internal.js.map +1 -1
- package/src/builders/dev-server/vite/server.js +6 -2
- package/src/builders/dev-server/vite/server.js.map +1 -1
- package/src/builders/unit-test/options.js +1 -1
- package/src/builders/unit-test/options.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/build-options.js +6 -0
- package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
- 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 +1 -1
- package/src/private.js +2 -2
- 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 +23 -10
- package/src/tools/angular/compilation/angular-compilation.js +11 -1
- package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
- package/src/tools/angular/compilation/aot-compilation.d.ts +4 -10
- package/src/tools/angular/compilation/aot-compilation.js +23 -14
- package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
- 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 +2 -2
- package/src/tools/angular/compilation/index.js.map +1 -1
- package/src/tools/angular/compilation/jit-compilation.d.ts +4 -7
- package/src/tools/angular/compilation/jit-compilation.js +14 -11
- package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
- package/src/tools/angular/compilation/noop-compilation.d.ts +3 -8
- package/src/tools/angular/compilation/noop-compilation.js +1 -1
- package/src/tools/angular/compilation/noop-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-compilation.d.ts +2 -8
- package/src/tools/angular/compilation/parallel-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-worker.d.ts +3 -15
- package/src/tools/angular/compilation/parallel-worker.js +11 -6
- package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
- package/src/tools/angular/linker/oxc-linker.d.ts +2 -1
- package/src/tools/angular/linker/oxc-linker.js +2 -10
- package/src/tools/angular/linker/oxc-linker.js.map +1 -1
- package/src/tools/esbuild/angular/compiler-plugin.js +55 -28
- package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -1
- package/src/tools/esbuild/angular/component-stylesheets.js +7 -7
- 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 -2
- 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 +20 -4
- package/src/tools/esbuild/bundler-context.js +15 -15
- package/src/tools/esbuild/bundler-context.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/i18n-inliner-worker.d.ts +8 -4
- package/src/tools/esbuild/i18n-inliner-worker.js +201 -55
- package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner.d.ts +3 -1
- package/src/tools/esbuild/i18n-inliner.js +45 -11
- package/src/tools/esbuild/i18n-inliner.js.map +1 -1
- package/src/tools/esbuild/javascript-transformer-worker.d.ts +0 -4
- package/src/tools/esbuild/javascript-transformer-worker.js +105 -54
- package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
- package/src/tools/esbuild/javascript-transformer.d.ts +1 -1
- package/src/tools/esbuild/javascript-transformer.js +63 -37
- package/src/tools/esbuild/javascript-transformer.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/persistent-load-result-cache.js +11 -13
- package/src/tools/esbuild/persistent-load-result-cache.js.map +1 -1
- package/src/tools/esbuild/sqlite-cache-store.js +51 -1
- package/src/tools/esbuild/sqlite-cache-store.js.map +1 -1
- package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js +4 -8
- package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js.map +1 -1
- package/src/tools/esbuild/target.d.ts +29 -0
- package/src/tools/esbuild/target.js +105 -0
- package/src/tools/esbuild/target.js.map +1 -0
- package/src/tools/esbuild/utils.d.ts +2 -12
- package/src/tools/esbuild/utils.js +9 -64
- package/src/tools/esbuild/utils.js.map +1 -1
- package/src/tools/esbuild/watcher.d.ts +21 -2
- package/src/tools/esbuild/watcher.js +483 -60
- package/src/tools/esbuild/watcher.js.map +1 -1
- package/src/tools/oxc/oxc-transform.d.ts +2 -1
- package/src/tools/oxc/oxc-transform.js +5 -16
- package/src/tools/oxc/oxc-transform.js.map +1 -1
- package/src/tools/sass/rebasing-importer.d.ts +5 -5
- package/src/tools/sass/rebasing-importer.js +5 -2
- package/src/tools/sass/rebasing-importer.js.map +1 -1
- package/src/tools/sass/worker.d.ts +1 -1
- package/src/tools/sass/worker.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 +2 -1
- package/src/tools/vite/utils.js +2 -1
- package/src/tools/vite/utils.js.map +1 -1
- package/src/utils/bundle-calculator.js +12 -3
- package/src/utils/bundle-calculator.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 +1 -0
- package/src/utils/i18n-options.js.map +1 -1
- package/src/utils/index-file/auto-csp.js +36 -17
- package/src/utils/index-file/auto-csp.js.map +1 -1
- package/src/utils/index-file/inline-critical-css.js +153 -109
- package/src/utils/index-file/inline-critical-css.js.map +1 -1
- package/src/utils/normalize-cache.js +1 -1
- package/src/utils/server-rendering/manifest.js +9 -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 +172 -85
- package/src/utils/source-map.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript-transformer.js","sourceRoot":"","sources":["javascript-transformer.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH
|
|
1
|
+
{"version":3,"file":"javascript-transformer.js","sourceRoot":"","sources":["javascript-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,4 +22,4 @@ import type { Metafile } from 'esbuild';
|
|
|
22
22
|
* @param rootDirectory The root directory of the workspace.
|
|
23
23
|
* @returns A string containing the content of the output licenses file.
|
|
24
24
|
*/
|
|
25
|
-
export declare function extractLicenses(
|
|
25
|
+
export declare function extractLicenses(metafiles: Metafile[], rootDirectory: string): Promise<string>;
|
|
@@ -58,106 +58,109 @@ const EXTRACTION_FILE_SEPARATOR = '-'.repeat(80) + '\n';
|
|
|
58
58
|
* @param rootDirectory The root directory of the workspace.
|
|
59
59
|
* @returns A string containing the content of the output licenses file.
|
|
60
60
|
*/
|
|
61
|
-
async function extractLicenses(
|
|
61
|
+
async function extractLicenses(metafiles, rootDirectory) {
|
|
62
62
|
let extractedLicenseContent = `${EXTRACTION_FILE_HEADER}\n${EXTRACTION_FILE_SEPARATOR}`;
|
|
63
63
|
const seenPaths = new Set();
|
|
64
64
|
const seenPackageDirectories = new Set();
|
|
65
65
|
const seenPackages = new Set();
|
|
66
|
-
for (const
|
|
67
|
-
for (const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
// Skip already processed paths
|
|
73
|
-
if (seenPaths.has(inputPath)) {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
seenPaths.add(inputPath);
|
|
77
|
-
// Skip non-package paths
|
|
78
|
-
if (!inputPath.includes(NODE_MODULE_SEGMENT)) {
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
// Extract the package name from the path
|
|
82
|
-
let baseDirectory = node_path_1.default.join(rootDirectory, inputPath);
|
|
83
|
-
let nameOrScope, nameOrFile;
|
|
84
|
-
let found = false;
|
|
85
|
-
while (baseDirectory !== node_path_1.default.dirname(baseDirectory)) {
|
|
86
|
-
const segment = node_path_1.default.basename(baseDirectory);
|
|
87
|
-
if (segment === NODE_MODULE_SEGMENT) {
|
|
88
|
-
found = true;
|
|
89
|
-
break;
|
|
66
|
+
for (const metafile of metafiles) {
|
|
67
|
+
for (const entry of Object.values(metafile.outputs)) {
|
|
68
|
+
for (const [inputPath, { bytesInOutput }] of Object.entries(entry.inputs)) {
|
|
69
|
+
// Skip if not included in output
|
|
70
|
+
if (bytesInOutput <= 0) {
|
|
71
|
+
continue;
|
|
90
72
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
// Skip non-package path edge cases that are not caught in the includes check above
|
|
96
|
-
if (!found || !nameOrScope) {
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
const packageName = nameOrScope.startsWith('@')
|
|
100
|
-
? `${nameOrScope}/${nameOrFile}`
|
|
101
|
-
: nameOrScope;
|
|
102
|
-
const packageDirectory = node_path_1.default.join(baseDirectory, packageName);
|
|
103
|
-
if (seenPackageDirectories.has(packageDirectory)) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
seenPackageDirectories.add(packageDirectory);
|
|
107
|
-
// Load the package's metadata to find the package's name, version, and license type
|
|
108
|
-
const packageJsonPath = node_path_1.default.join(packageDirectory, 'package.json');
|
|
109
|
-
let packageJson;
|
|
110
|
-
try {
|
|
111
|
-
packageJson = JSON.parse(await (0, promises_1.readFile)(packageJsonPath, 'utf-8'));
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
// Invalid package
|
|
115
|
-
continue;
|
|
116
|
-
}
|
|
117
|
-
// Skip already processed packages
|
|
118
|
-
const packageId = `${packageName}@${packageJson.version}`;
|
|
119
|
-
if (seenPackages.has(packageId)) {
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
|
-
seenPackages.add(packageId);
|
|
123
|
-
// Attempt to find license text inside package
|
|
124
|
-
let licenseText = '';
|
|
125
|
-
if (typeof packageJson.license === 'string' &&
|
|
126
|
-
packageJson.license.toUpperCase().startsWith(CUSTOM_LICENSE_TEXT)) {
|
|
127
|
-
// Attempt to load the package's custom license
|
|
128
|
-
let customLicensePath;
|
|
129
|
-
const customLicenseFile = node_path_1.default.normalize(packageJson.license.slice(CUSTOM_LICENSE_TEXT.length).trim());
|
|
130
|
-
if (customLicenseFile.startsWith('..') || node_path_1.default.isAbsolute(customLicenseFile)) {
|
|
131
|
-
// Path is attempting to access files outside of the package
|
|
132
|
-
// TODO: Issue warning?
|
|
73
|
+
// Skip already processed paths
|
|
74
|
+
if (seenPaths.has(inputPath)) {
|
|
75
|
+
continue;
|
|
133
76
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
77
|
+
seenPaths.add(inputPath);
|
|
78
|
+
// Skip non-package paths
|
|
79
|
+
if (!inputPath.includes(NODE_MODULE_SEGMENT)) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
// Extract the package name from the path
|
|
83
|
+
let baseDirectory = node_path_1.default.join(rootDirectory, inputPath);
|
|
84
|
+
let nameOrScope, nameOrFile;
|
|
85
|
+
let found = false;
|
|
86
|
+
while (baseDirectory !== node_path_1.default.dirname(baseDirectory)) {
|
|
87
|
+
const segment = node_path_1.default.basename(baseDirectory);
|
|
88
|
+
if (segment === NODE_MODULE_SEGMENT) {
|
|
89
|
+
found = true;
|
|
90
|
+
break;
|
|
138
91
|
}
|
|
139
|
-
|
|
92
|
+
nameOrFile = nameOrScope;
|
|
93
|
+
nameOrScope = segment;
|
|
94
|
+
baseDirectory = node_path_1.default.dirname(baseDirectory);
|
|
140
95
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
96
|
+
// Skip non-package path edge cases that are not caught in the includes check above
|
|
97
|
+
if (!found || !nameOrScope) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const packageName = nameOrScope.startsWith('@')
|
|
101
|
+
? `${nameOrScope}/${nameOrFile}`
|
|
102
|
+
: nameOrScope;
|
|
103
|
+
const packageDirectory = node_path_1.default.join(baseDirectory, packageName);
|
|
104
|
+
if (seenPackageDirectories.has(packageDirectory)) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
seenPackageDirectories.add(packageDirectory);
|
|
108
|
+
// Load the package's metadata to find the package's name, version, and license type
|
|
109
|
+
const packageJsonPath = node_path_1.default.join(packageDirectory, 'package.json');
|
|
110
|
+
let packageJson;
|
|
111
|
+
try {
|
|
112
|
+
packageJson = JSON.parse(await (0, promises_1.readFile)(packageJsonPath, 'utf-8'));
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Invalid package
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
// Skip already processed packages
|
|
119
|
+
const packageId = `${packageName}@${packageJson.version}`;
|
|
120
|
+
if (seenPackages.has(packageId)) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
seenPackages.add(packageId);
|
|
124
|
+
// Attempt to find license text inside package
|
|
125
|
+
let licenseText = '';
|
|
126
|
+
if (typeof packageJson.license === 'string' &&
|
|
127
|
+
packageJson.license.toUpperCase().startsWith(CUSTOM_LICENSE_TEXT)) {
|
|
128
|
+
// Attempt to load the package's custom license
|
|
129
|
+
let customLicensePath;
|
|
130
|
+
const customLicenseFile = node_path_1.default.normalize(packageJson.license.slice(CUSTOM_LICENSE_TEXT.length).trim());
|
|
131
|
+
if (customLicenseFile.startsWith('..') || node_path_1.default.isAbsolute(customLicenseFile)) {
|
|
132
|
+
// Path is attempting to access files outside of the package
|
|
133
|
+
// TODO: Issue warning?
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
customLicensePath = node_path_1.default.join(packageDirectory, customLicenseFile);
|
|
148
137
|
try {
|
|
149
|
-
licenseText = await (0, promises_1.readFile)(
|
|
150
|
-
break;
|
|
138
|
+
licenseText = await (0, promises_1.readFile)(customLicensePath, 'utf-8');
|
|
151
139
|
}
|
|
152
140
|
catch { }
|
|
153
141
|
}
|
|
154
142
|
}
|
|
143
|
+
else {
|
|
144
|
+
// Search for a license file within the root of the package
|
|
145
|
+
const entries = await (0, promises_1.readdir)(packageDirectory, { withFileTypes: true }).catch(() => []);
|
|
146
|
+
for (const entry of entries) {
|
|
147
|
+
if ((entry.isFile() || entry.isSymbolicLink()) &&
|
|
148
|
+
LICENSE_FILE_REGEXP.test(entry.name)) {
|
|
149
|
+
const packageLicensePath = node_path_1.default.join(packageDirectory, entry.name);
|
|
150
|
+
try {
|
|
151
|
+
licenseText = await (0, promises_1.readFile)(packageLicensePath, 'utf-8');
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
catch { }
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Generate the package's license entry in the output content
|
|
159
|
+
extractedLicenseContent += `Package: ${packageJson.name}\n`;
|
|
160
|
+
extractedLicenseContent += `License: ${JSON.stringify(packageJson.license, null, 2)}\n`;
|
|
161
|
+
extractedLicenseContent += `\n${licenseText}\n`;
|
|
162
|
+
extractedLicenseContent += EXTRACTION_FILE_SEPARATOR;
|
|
155
163
|
}
|
|
156
|
-
// Generate the package's license entry in the output content
|
|
157
|
-
extractedLicenseContent += `Package: ${packageJson.name}\n`;
|
|
158
|
-
extractedLicenseContent += `License: ${JSON.stringify(packageJson.license, null, 2)}\n`;
|
|
159
|
-
extractedLicenseContent += `\n${licenseText}\n`;
|
|
160
|
-
extractedLicenseContent += EXTRACTION_FILE_SEPARATOR;
|
|
161
164
|
}
|
|
162
165
|
}
|
|
163
166
|
return extractedLicenseContent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license-extractor.js","sourceRoot":"","sources":["license-extractor.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAwDH,
|
|
1
|
+
{"version":3,"file":"license-extractor.js","sourceRoot":"","sources":["license-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,26 +9,23 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.PersistentLoadResultCache = void 0;
|
|
11
11
|
exports.extractDiskFilePath = extractDiskFilePath;
|
|
12
|
-
const node_crypto_1 = require("node:crypto");
|
|
13
12
|
const promises_1 = require("node:fs/promises");
|
|
14
13
|
const node_path_1 = require("node:path");
|
|
15
14
|
const node_url_1 = require("node:url");
|
|
15
|
+
const hash_1 = require("../../utils/hash");
|
|
16
16
|
const load_result_cache_1 = require("./load-result-cache");
|
|
17
|
-
function hashContent(content) {
|
|
18
|
-
return (0, node_crypto_1.createHash)('sha256').update(content).digest('hex');
|
|
19
|
-
}
|
|
20
17
|
/**
|
|
21
18
|
* Calculates a unique cache key by updating the hash incrementally.
|
|
22
19
|
* This prevents implicit string coercion of large binary content buffers.
|
|
23
20
|
*/
|
|
24
21
|
function calculateCacheKey(globalConfigHash, path, content) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
const hasher = (0, hash_1.createContentHash)();
|
|
23
|
+
hasher.update(globalConfigHash);
|
|
24
|
+
hasher.update('\0');
|
|
25
|
+
hasher.update(path);
|
|
26
|
+
hasher.update('\0');
|
|
27
|
+
hasher.update(content);
|
|
28
|
+
return hasher.digest();
|
|
32
29
|
}
|
|
33
30
|
/**
|
|
34
31
|
* Normalizes a namespaced cache key into a valid disk file path if one exists.
|
|
@@ -107,7 +104,7 @@ async function validateAndHealCacheEntry(watchFilesMetadata, store, cacheKey, ca
|
|
|
107
104
|
}
|
|
108
105
|
// 3. Slow Path for dependencies: content hash fallback
|
|
109
106
|
const currentContent = await (0, promises_1.readFile)(filePath);
|
|
110
|
-
const currentHash =
|
|
107
|
+
const currentHash = (0, hash_1.calculateHash)(currentContent);
|
|
111
108
|
if (currentHash === expected.hash) {
|
|
112
109
|
// Heal cache entry with new metadata
|
|
113
110
|
watchFilesMetadata[filePath] = {
|
|
@@ -150,8 +147,9 @@ async function computeMetadataForWatchFiles(watchFiles, knownContents) {
|
|
|
150
147
|
knownContent !== undefined ? knownContent : (0, promises_1.readFile)(filePath),
|
|
151
148
|
(0, promises_1.stat)(filePath),
|
|
152
149
|
]);
|
|
150
|
+
const hash = (0, hash_1.calculateHash)(content);
|
|
153
151
|
watchFilesMetadata[filePath] = {
|
|
154
|
-
hash
|
|
152
|
+
hash,
|
|
155
153
|
mtimeMs: stats.mtimeMs,
|
|
156
154
|
size: stats.size,
|
|
157
155
|
};
|
|
@@ -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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"}
|
|
@@ -19,6 +19,8 @@ class SqliteCacheStore {
|
|
|
19
19
|
#hasStmt;
|
|
20
20
|
#setStmt;
|
|
21
21
|
#updateAccessedStmt;
|
|
22
|
+
#pendingAccessedKeys = new Set();
|
|
23
|
+
#flushTimeout;
|
|
22
24
|
constructor(cachePath, maxPayloadSize = 1024 * 1024 * 1024, ttlDays = 14) {
|
|
23
25
|
this.cachePath = cachePath;
|
|
24
26
|
this.maxPayloadSize = maxPayloadSize;
|
|
@@ -31,6 +33,9 @@ class SqliteCacheStore {
|
|
|
31
33
|
this.#db.exec('PRAGMA auto_vacuum = FULL;');
|
|
32
34
|
this.#db.exec('PRAGMA journal_mode = WAL;');
|
|
33
35
|
this.#db.exec('PRAGMA synchronous = NORMAL;');
|
|
36
|
+
this.#db.exec('PRAGMA busy_timeout = 5000;');
|
|
37
|
+
this.#db.exec('PRAGMA temp_store = MEMORY;');
|
|
38
|
+
this.#db.exec('PRAGMA mmap_size = 268435456;');
|
|
34
39
|
this.#db.exec('CREATE TABLE IF NOT EXISTS cache (key TEXT PRIMARY KEY, value TEXT, last_accessed INTEGER NOT NULL) WITHOUT ROWID;');
|
|
35
40
|
this.#getStmt = this.#db.prepare('SELECT value FROM cache WHERE key = ?');
|
|
36
41
|
this.#hasStmt = this.#db.prepare('SELECT 1 FROM cache WHERE key = ?');
|
|
@@ -39,12 +44,49 @@ class SqliteCacheStore {
|
|
|
39
44
|
}
|
|
40
45
|
return this.#db;
|
|
41
46
|
}
|
|
47
|
+
#queueAccessUpdate(key) {
|
|
48
|
+
this.#pendingAccessedKeys.add(key);
|
|
49
|
+
if (this.#pendingAccessedKeys.size >= 100) {
|
|
50
|
+
this.#flushAccessUpdates();
|
|
51
|
+
}
|
|
52
|
+
else if (!this.#flushTimeout) {
|
|
53
|
+
this.#flushTimeout = setTimeout(() => this.#flushAccessUpdates(), 500);
|
|
54
|
+
this.#flushTimeout.unref?.();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
#flushAccessUpdates() {
|
|
58
|
+
if (this.#flushTimeout) {
|
|
59
|
+
clearTimeout(this.#flushTimeout);
|
|
60
|
+
this.#flushTimeout = undefined;
|
|
61
|
+
}
|
|
62
|
+
if (!this.#db || this.#pendingAccessedKeys.size === 0 || !this.#updateAccessedStmt) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
this.#db.exec('BEGIN IMMEDIATE TRANSACTION;');
|
|
67
|
+
for (const key of this.#pendingAccessedKeys) {
|
|
68
|
+
this.#updateAccessedStmt.run(key);
|
|
69
|
+
}
|
|
70
|
+
this.#db.exec('COMMIT;');
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
try {
|
|
74
|
+
this.#db.exec('ROLLBACK;');
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Ignore rollback errors if transaction was not active
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
this.#pendingAccessedKeys.clear();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
42
84
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
85
|
async get(key) {
|
|
44
86
|
this.#ensureDb();
|
|
45
87
|
const row = this.#getStmt?.get(key);
|
|
46
88
|
if (row) {
|
|
47
|
-
this.#
|
|
89
|
+
this.#queueAccessUpdate(key);
|
|
48
90
|
try {
|
|
49
91
|
return JSON.parse(row.value);
|
|
50
92
|
}
|
|
@@ -60,6 +102,7 @@ class SqliteCacheStore {
|
|
|
60
102
|
}
|
|
61
103
|
async set(key, value) {
|
|
62
104
|
this.#ensureDb();
|
|
105
|
+
this.#pendingAccessedKeys.delete(key);
|
|
63
106
|
this.#setStmt?.run(key, JSON.stringify(value));
|
|
64
107
|
return this;
|
|
65
108
|
}
|
|
@@ -69,6 +112,8 @@ class SqliteCacheStore {
|
|
|
69
112
|
close() {
|
|
70
113
|
if (this.#db) {
|
|
71
114
|
try {
|
|
115
|
+
// Flush any pending access updates in one transaction before pruning
|
|
116
|
+
this.#flushAccessUpdates();
|
|
72
117
|
// 1. Delete items older than N days
|
|
73
118
|
this.#db
|
|
74
119
|
.prepare("DELETE FROM cache WHERE last_accessed < unixepoch('now', ?);")
|
|
@@ -89,6 +134,11 @@ class SqliteCacheStore {
|
|
|
89
134
|
// Pruning errors should not block build success
|
|
90
135
|
}
|
|
91
136
|
finally {
|
|
137
|
+
if (this.#flushTimeout) {
|
|
138
|
+
clearTimeout(this.#flushTimeout);
|
|
139
|
+
this.#flushTimeout = undefined;
|
|
140
|
+
}
|
|
141
|
+
this.#pendingAccessedKeys.clear();
|
|
92
142
|
this.#getStmt = undefined;
|
|
93
143
|
this.#hasStmt = undefined;
|
|
94
144
|
this.#setStmt = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-cache-store.js","sourceRoot":"","sources":["sqlite-cache-store.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,6CAA0D;AAC1D,mCAAsD;AAEtD,MAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"sqlite-cache-store.js","sourceRoot":"","sources":["sqlite-cache-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.calculateGlobalStylesheetConfigHash = calculateGlobalStylesheetConfigHash;
|
|
11
|
-
const
|
|
11
|
+
const hash_1 = require("../../../utils/hash");
|
|
12
12
|
/**
|
|
13
13
|
* Generates a global hash based on all build options that affect stylesheet compilation.
|
|
14
14
|
*
|
|
@@ -36,8 +36,7 @@ const node_crypto_1 = require("node:crypto");
|
|
|
36
36
|
* that alters generated stylesheet code or asset outputs, it MUST be added to this hash object.
|
|
37
37
|
*/
|
|
38
38
|
function calculateGlobalStylesheetConfigHash(options, packageVersion = '') {
|
|
39
|
-
return (0,
|
|
40
|
-
.update(JSON.stringify({
|
|
39
|
+
return (0, hash_1.calculateHash)(JSON.stringify({
|
|
41
40
|
optimization: options.optimization,
|
|
42
41
|
sourcemap: options.sourcemap,
|
|
43
42
|
sourcesContent: options.sourcesContent,
|
|
@@ -58,11 +57,8 @@ function calculateGlobalStylesheetConfigHash(options, packageVersion = '') {
|
|
|
58
57
|
postcssConfig: options.postcssConfiguration?.configPath
|
|
59
58
|
? options.postcssConfiguration.configPath
|
|
60
59
|
: '',
|
|
61
|
-
tailwindConfig: options.tailwindConfiguration?.file
|
|
62
|
-
? options.tailwindConfiguration.file
|
|
63
|
-
: '',
|
|
60
|
+
tailwindConfig: options.tailwindConfiguration?.file ? options.tailwindConfiguration.file : '',
|
|
64
61
|
packageVersion,
|
|
65
|
-
}))
|
|
66
|
-
.digest('hex');
|
|
62
|
+
}));
|
|
67
63
|
}
|
|
68
64
|
//# sourceMappingURL=stylesheet-cache-key.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stylesheet-cache-key.js","sourceRoot":"","sources":["stylesheet-cache-key.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA+BH,
|
|
1
|
+
{"version":3,"file":"stylesheet-cache-key.js","sourceRoot":"","sources":["stylesheet-cache-key.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA+BH,kFA8BC;AA3DD,8CAAoD;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,mCAAmC,CACjD,OAAgC,EAChC,iBAAyB,EAAE;IAE3B,OAAO,IAAA,oBAAa,EAClB,IAAI,CAAC,SAAS,CAAC;QACb,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,IAAI;YACvB,CAAC,CAAC;gBACE,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB;gBACnD,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB;gBACjD,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB;aACtD;YACH,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU;YACrD,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU;YACzC,CAAC,CAAC,EAAE;QACN,cAAc,EAAE,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC7F,cAAc;KACf,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
/**
|
|
9
|
+
* Transform browserlists result to esbuild target.
|
|
10
|
+
*
|
|
11
|
+
* Only the lowest version for each browser is returned to avoid issues with esbuild and rolldown
|
|
12
|
+
* when multiple versions of the same target engine are specified.
|
|
13
|
+
*
|
|
14
|
+
* @see https://esbuild.github.io/api/#target
|
|
15
|
+
* @see https://github.com/evanw/esbuild/issues/4509
|
|
16
|
+
* @see https://github.com/rolldown/rolldown/issues/10633
|
|
17
|
+
*/
|
|
18
|
+
export declare function transformSupportedBrowsersToTargets(supportedBrowsers: string[]): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Transform supported Node.js versions to esbuild target.
|
|
21
|
+
*
|
|
22
|
+
* Only the lowest Node.js version is returned to avoid issues with esbuild and rolldown
|
|
23
|
+
* when multiple versions of the same target engine are specified.
|
|
24
|
+
*
|
|
25
|
+
* @see https://esbuild.github.io/api/#target
|
|
26
|
+
* @see https://github.com/evanw/esbuild/issues/4509
|
|
27
|
+
* @see https://github.com/rolldown/rolldown/issues/10633
|
|
28
|
+
*/
|
|
29
|
+
export declare function getSupportedNodeTargets(): string[];
|
|
@@ -0,0 +1,105 @@
|
|
|
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.transformSupportedBrowsersToTargets = transformSupportedBrowsersToTargets;
|
|
11
|
+
exports.getSupportedNodeTargets = getSupportedNodeTargets;
|
|
12
|
+
const semver_1 = require("semver");
|
|
13
|
+
/**
|
|
14
|
+
* Compares two target version strings.
|
|
15
|
+
*
|
|
16
|
+
* This function is used to determine the lowest version for a given browser target.
|
|
17
|
+
*
|
|
18
|
+
* @param a The first version string.
|
|
19
|
+
* @param b The second version string.
|
|
20
|
+
* @returns A negative value if `a` is lower than `b`, a positive value if `a` is higher than `b`, and 0 if they are equal.
|
|
21
|
+
*/
|
|
22
|
+
function compareTargetVersions(a, b) {
|
|
23
|
+
const aVersion = (0, semver_1.coerce)(a);
|
|
24
|
+
const bVersion = (0, semver_1.coerce)(b);
|
|
25
|
+
if (!aVersion || !bVersion) {
|
|
26
|
+
return aVersion ? -1 : bVersion ? 1 : 0;
|
|
27
|
+
}
|
|
28
|
+
return (0, semver_1.compare)(aVersion, bVersion);
|
|
29
|
+
}
|
|
30
|
+
// https://esbuild.github.io/api/#target
|
|
31
|
+
const ESBUILD_SUPPORTED_BROWSERS = new Set([
|
|
32
|
+
'chrome',
|
|
33
|
+
'edge',
|
|
34
|
+
'firefox',
|
|
35
|
+
'ie',
|
|
36
|
+
'ios',
|
|
37
|
+
'node',
|
|
38
|
+
'opera',
|
|
39
|
+
'safari',
|
|
40
|
+
]);
|
|
41
|
+
/**
|
|
42
|
+
* Transform browserlists result to esbuild target.
|
|
43
|
+
*
|
|
44
|
+
* Only the lowest version for each browser is returned to avoid issues with esbuild and rolldown
|
|
45
|
+
* when multiple versions of the same target engine are specified.
|
|
46
|
+
*
|
|
47
|
+
* @see https://esbuild.github.io/api/#target
|
|
48
|
+
* @see https://github.com/evanw/esbuild/issues/4509
|
|
49
|
+
* @see https://github.com/rolldown/rolldown/issues/10633
|
|
50
|
+
*/
|
|
51
|
+
function transformSupportedBrowsersToTargets(supportedBrowsers) {
|
|
52
|
+
const browsers = new Map();
|
|
53
|
+
for (const browser of supportedBrowsers) {
|
|
54
|
+
let [browserName, version] = browser.toLowerCase().split(' ');
|
|
55
|
+
if (!browserName || !version) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
// browserslist uses the name `ios_saf` for iOS Safari whereas esbuild uses `ios`
|
|
59
|
+
if (browserName === 'ios_saf') {
|
|
60
|
+
browserName = 'ios';
|
|
61
|
+
}
|
|
62
|
+
if (!ESBUILD_SUPPORTED_BROWSERS.has(browserName)) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
// browserslist uses ranges `15.2-15.3` versions but only the lowest is required
|
|
66
|
+
// to perform minimum supported feature checks. esbuild also expects a single version.
|
|
67
|
+
[version] = version.split('-');
|
|
68
|
+
if (browserName === 'safari' && version === 'tp') {
|
|
69
|
+
// esbuild only supports numeric versions so `TP` is converted to a high number (999) since
|
|
70
|
+
// a Technology Preview (TP) of Safari is assumed to support all currently known features.
|
|
71
|
+
version = '999';
|
|
72
|
+
}
|
|
73
|
+
else if (!version.includes('.')) {
|
|
74
|
+
// A lone major version is considered by esbuild to include all minor versions. However,
|
|
75
|
+
// browserslist does not and is also inconsistent in its `.0` version naming. For example,
|
|
76
|
+
// Safari 15.0 is named `safari 15` but Safari 16.0 is named `safari 16.0`.
|
|
77
|
+
version += '.0';
|
|
78
|
+
}
|
|
79
|
+
const current = browsers.get(browserName);
|
|
80
|
+
if (!current || compareTargetVersions(version, current) < 0) {
|
|
81
|
+
browsers.set(browserName, version);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return Array.from(browsers, ([browserName, version]) => browserName + version);
|
|
85
|
+
}
|
|
86
|
+
const SUPPORTED_NODE_VERSIONS = '^22.22.3 || ^24.15.0 || >=26.0.0';
|
|
87
|
+
/**
|
|
88
|
+
* Transform supported Node.js versions to esbuild target.
|
|
89
|
+
*
|
|
90
|
+
* Only the lowest Node.js version is returned to avoid issues with esbuild and rolldown
|
|
91
|
+
* when multiple versions of the same target engine are specified.
|
|
92
|
+
*
|
|
93
|
+
* @see https://esbuild.github.io/api/#target
|
|
94
|
+
* @see https://github.com/evanw/esbuild/issues/4509
|
|
95
|
+
* @see https://github.com/rolldown/rolldown/issues/10633
|
|
96
|
+
*/
|
|
97
|
+
function getSupportedNodeTargets() {
|
|
98
|
+
if (SUPPORTED_NODE_VERSIONS.charAt(0) === '0') {
|
|
99
|
+
// Unlike `pkg_npm`, `ts_library` which is used to run unit tests does not support substitutions.
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
const parsed = (0, semver_1.minVersion)(SUPPORTED_NODE_VERSIONS);
|
|
103
|
+
return parsed ? ['node' + parsed.version] : [];
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=target.js.map
|