@angular/build 21.0.0-rc.0 → 21.0.0-rc.2
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 +10 -9
- package/src/builders/application/chunk-optimizer.js +0 -1
- package/src/builders/application/chunk-optimizer.js.map +1 -1
- package/src/builders/application/schema.d.ts +6 -6
- package/src/builders/application/schema.js +3 -3
- package/src/builders/application/schema.json +1 -1
- package/src/builders/dev-server/vite/index.js +8 -28
- package/src/builders/dev-server/vite/index.js.map +1 -1
- package/src/builders/dev-server/vite/server.js +7 -2
- package/src/builders/dev-server/vite/server.js.map +1 -1
- package/src/builders/karma/find-tests.d.ts +2 -1
- package/src/builders/karma/find-tests.js +12 -4
- package/src/builders/karma/find-tests.js.map +1 -1
- package/src/builders/unit-test/builder.js +6 -0
- package/src/builders/unit-test/builder.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/browser-provider.js +11 -3
- package/src/builders/unit-test/runners/vitest/browser-provider.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/build-options.js +24 -16
- package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/executor.d.ts +1 -0
- package/src/builders/unit-test/runners/vitest/executor.js +34 -69
- package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/index.js +12 -3
- package/src/builders/unit-test/runners/vitest/index.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/plugins.d.ts +14 -5
- package/src/builders/unit-test/runners/vitest/plugins.js +238 -114
- package/src/builders/unit-test/runners/vitest/plugins.js.map +1 -1
- package/src/builders/unit-test/test-discovery.js +42 -17
- package/src/builders/unit-test/test-discovery.js.map +1 -1
- package/src/private.d.ts +2 -0
- package/src/private.js +5 -1
- package/src/private.js.map +1 -1
- package/src/tools/angular/compilation/angular-compilation.d.ts +1 -0
- package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
- package/src/tools/angular/compilation/aot-compilation.d.ts +1 -0
- package/src/tools/angular/compilation/aot-compilation.js +3 -0
- package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-worker.d.ts +1 -0
- package/src/tools/angular/compilation/parallel-worker.js +2 -1
- package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
- package/src/tools/esbuild/angular/compiler-plugin.js +2 -2
- package/src/tools/esbuild/application-code-bundle.js +5 -3
- package/src/tools/esbuild/application-code-bundle.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner.js +2 -2
- package/src/tools/esbuild/lmdb-cache-store.d.ts +1 -1
- package/src/tools/esbuild/lmdb-cache-store.js +3 -3
- package/src/tools/vite/plugins/index.d.ts +1 -0
- package/src/tools/vite/plugins/index.js +3 -1
- package/src/tools/vite/plugins/index.js.map +1 -1
- package/src/tools/vite/plugins/ssr-ssl-plugin.d.ts +9 -0
- package/src/tools/vite/plugins/ssr-ssl-plugin.js +71 -0
- package/src/tools/vite/plugins/ssr-ssl-plugin.js.map +1 -0
- package/src/tools/vite/utils.d.ts +13 -0
- package/src/tools/vite/utils.js +39 -0
- package/src/tools/vite/utils.js.map +1 -1
- package/src/utils/normalize-cache.js +1 -1
|
@@ -46,9 +46,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
46
46
|
exports.VitestExecutor = void 0;
|
|
47
47
|
const node_assert_1 = __importDefault(require("node:assert"));
|
|
48
48
|
const node_path_1 = __importDefault(require("node:path"));
|
|
49
|
-
const
|
|
49
|
+
const utils_1 = require("../../../../tools/vite/utils");
|
|
50
50
|
const error_1 = require("../../../../utils/error");
|
|
51
|
-
const path_1 = require("../../../../utils/path");
|
|
52
51
|
const results_1 = require("../../../application/results");
|
|
53
52
|
const browser_provider_1 = require("./browser-provider");
|
|
54
53
|
const configuration_1 = require("./configuration");
|
|
@@ -59,6 +58,12 @@ class VitestExecutor {
|
|
|
59
58
|
projectName;
|
|
60
59
|
options;
|
|
61
60
|
buildResultFiles = new Map();
|
|
61
|
+
externalMetadata = {
|
|
62
|
+
implicitBrowser: [],
|
|
63
|
+
implicitServer: [],
|
|
64
|
+
explicitBrowser: [],
|
|
65
|
+
explicitServer: [],
|
|
66
|
+
};
|
|
62
67
|
// This is a reverse map of the entry points created in `build-options.ts`.
|
|
63
68
|
// It is used by the in-memory provider plugin to map the requested test file
|
|
64
69
|
// path back to its bundled output path.
|
|
@@ -91,6 +96,7 @@ class VitestExecutor {
|
|
|
91
96
|
this.buildResultFiles.set(this.normalizePath(path), file);
|
|
92
97
|
}
|
|
93
98
|
}
|
|
99
|
+
(0, utils_1.updateExternalMetadata)(buildResult, this.externalMetadata, undefined, true);
|
|
94
100
|
// Initialize Vitest if not already present.
|
|
95
101
|
this.vitest ??= await this.initializeVitest();
|
|
96
102
|
const vitest = this.vitest;
|
|
@@ -105,7 +111,7 @@ class VitestExecutor {
|
|
|
105
111
|
if (source) {
|
|
106
112
|
modifiedSourceFiles.add(source);
|
|
107
113
|
}
|
|
108
|
-
vitest.invalidateFile(
|
|
114
|
+
vitest.invalidateFile(this.normalizePath(node_path_1.default.join(this.options.workspaceRoot, modifiedFile)));
|
|
109
115
|
}
|
|
110
116
|
const specsToRerun = [];
|
|
111
117
|
for (const file of modifiedSourceFiles) {
|
|
@@ -138,10 +144,9 @@ class VitestExecutor {
|
|
|
138
144
|
}
|
|
139
145
|
async initializeVitest() {
|
|
140
146
|
const { coverage, reporters, outputFile, workspaceRoot, browsers, debug, watch, browserViewport, ui, } = this.options;
|
|
147
|
+
const projectName = this.projectName;
|
|
141
148
|
let vitestNodeModule;
|
|
142
|
-
let vitestCoverageModule;
|
|
143
149
|
try {
|
|
144
|
-
vitestCoverageModule = await Promise.resolve().then(() => __importStar(require('vitest/coverage')));
|
|
145
150
|
vitestNodeModule = await Promise.resolve().then(() => __importStar(require('vitest/node')));
|
|
146
151
|
}
|
|
147
152
|
catch (error) {
|
|
@@ -152,21 +157,6 @@ class VitestExecutor {
|
|
|
152
157
|
throw new Error('The `vitest` package was not found. Please install the package and rerun the test command.');
|
|
153
158
|
}
|
|
154
159
|
const { startVitest } = vitestNodeModule;
|
|
155
|
-
// Augment BaseCoverageProvider to include logic to support the built virtual files.
|
|
156
|
-
// Temporary workaround to avoid the direct filesystem checks in the base provider that
|
|
157
|
-
// were introduced in v4. Also ensures that all built virtual files are available.
|
|
158
|
-
const builtVirtualFiles = this.buildResultFiles;
|
|
159
|
-
vitestCoverageModule.BaseCoverageProvider.prototype.isIncluded = function (filename) {
|
|
160
|
-
const relativeFilename = node_path_1.default.relative(workspaceRoot, filename);
|
|
161
|
-
if (!this.options.include || builtVirtualFiles.has(relativeFilename)) {
|
|
162
|
-
return !(0, picomatch_1.isMatch)(relativeFilename, this.options.exclude);
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
return (0, picomatch_1.isMatch)(relativeFilename, this.options.include, {
|
|
166
|
-
ignore: this.options.exclude,
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
160
|
// Setup vitest browser options if configured
|
|
171
161
|
const browserOptions = await (0, browser_provider_1.setupBrowserConfiguration)(browsers, debug, this.options.projectSourceRoot, browserViewport);
|
|
172
162
|
if (browserOptions.errors?.length) {
|
|
@@ -174,12 +164,10 @@ class VitestExecutor {
|
|
|
174
164
|
}
|
|
175
165
|
(0, node_assert_1.default)(this.buildResultFiles.size > 0, 'buildResult must be available before initializing vitest');
|
|
176
166
|
const testSetupFiles = this.prepareSetupFiles();
|
|
177
|
-
const
|
|
167
|
+
const projectPlugins = (0, plugins_1.createVitestPlugins)({
|
|
178
168
|
workspaceRoot,
|
|
179
169
|
projectSourceRoot: this.options.projectSourceRoot,
|
|
180
|
-
projectName
|
|
181
|
-
include: this.options.include,
|
|
182
|
-
exclude: this.options.exclude,
|
|
170
|
+
projectName,
|
|
183
171
|
buildResultFiles: this.buildResultFiles,
|
|
184
172
|
testFileToEntryPoint: this.testFileToEntryPoint,
|
|
185
173
|
});
|
|
@@ -191,64 +179,41 @@ class VitestExecutor {
|
|
|
191
179
|
}
|
|
192
180
|
: {};
|
|
193
181
|
const runnerConfig = this.options.runnerConfig;
|
|
182
|
+
const externalConfigPath = runnerConfig === true
|
|
183
|
+
? await (0, configuration_1.findVitestBaseConfig)([this.options.projectRoot, this.options.workspaceRoot])
|
|
184
|
+
: runnerConfig;
|
|
194
185
|
return startVitest('test', undefined, {
|
|
195
|
-
config:
|
|
196
|
-
? await (0, configuration_1.findVitestBaseConfig)([this.options.projectRoot, this.options.workspaceRoot])
|
|
197
|
-
: runnerConfig,
|
|
186
|
+
config: externalConfigPath,
|
|
198
187
|
root: workspaceRoot,
|
|
199
|
-
project:
|
|
200
|
-
|
|
201
|
-
include: [],
|
|
188
|
+
project: projectName,
|
|
189
|
+
outputFile,
|
|
202
190
|
testNamePattern: this.options.filter,
|
|
203
191
|
watch,
|
|
204
192
|
ui,
|
|
193
|
+
...debugOptions,
|
|
205
194
|
}, {
|
|
206
|
-
test: {
|
|
207
|
-
coverage: await generateCoverageOption(coverage, this.projectName),
|
|
208
|
-
outputFile,
|
|
209
|
-
...debugOptions,
|
|
210
|
-
...(reporters ? { reporters } : {}),
|
|
211
|
-
},
|
|
212
195
|
server: {
|
|
213
196
|
// Disable the actual file watcher. The boolean watch option above should still
|
|
214
197
|
// be enabled as it controls other internal behavior related to rerunning tests.
|
|
215
198
|
watch: null,
|
|
216
199
|
},
|
|
217
|
-
plugins
|
|
200
|
+
plugins: [
|
|
201
|
+
await (0, plugins_1.createVitestConfigPlugin)({
|
|
202
|
+
browser: browserOptions.browser,
|
|
203
|
+
coverage,
|
|
204
|
+
projectName,
|
|
205
|
+
projectSourceRoot: this.options.projectSourceRoot,
|
|
206
|
+
optimizeDepsInclude: this.externalMetadata.explicitBrowser,
|
|
207
|
+
reporters,
|
|
208
|
+
setupFiles: testSetupFiles,
|
|
209
|
+
projectPlugins,
|
|
210
|
+
include: [...this.testFileToEntryPoint.keys()].filter(
|
|
211
|
+
// Filter internal entries
|
|
212
|
+
(entry) => !entry.startsWith('angular:')),
|
|
213
|
+
}),
|
|
214
|
+
],
|
|
218
215
|
});
|
|
219
216
|
}
|
|
220
217
|
}
|
|
221
218
|
exports.VitestExecutor = VitestExecutor;
|
|
222
|
-
async function generateCoverageOption(coverage, projectName) {
|
|
223
|
-
let defaultExcludes = [];
|
|
224
|
-
if (coverage.exclude) {
|
|
225
|
-
try {
|
|
226
|
-
const vitestConfig = await Promise.resolve().then(() => __importStar(require('vitest/config')));
|
|
227
|
-
defaultExcludes = vitestConfig.coverageConfigDefaults.exclude;
|
|
228
|
-
}
|
|
229
|
-
catch { }
|
|
230
|
-
}
|
|
231
|
-
return {
|
|
232
|
-
enabled: coverage.enabled,
|
|
233
|
-
excludeAfterRemap: true,
|
|
234
|
-
include: coverage.include,
|
|
235
|
-
reportsDirectory: (0, path_1.toPosixPath)(node_path_1.default.join('coverage', projectName)),
|
|
236
|
-
thresholds: coverage.thresholds,
|
|
237
|
-
watermarks: coverage.watermarks,
|
|
238
|
-
// Special handling for `exclude`/`reporters` due to an undefined value causing upstream failures
|
|
239
|
-
...(coverage.exclude
|
|
240
|
-
? {
|
|
241
|
-
exclude: [
|
|
242
|
-
// Augment the default exclude https://vitest.dev/config/#coverage-exclude
|
|
243
|
-
// with the user defined exclusions
|
|
244
|
-
...coverage.exclude,
|
|
245
|
-
...defaultExcludes,
|
|
246
|
-
],
|
|
247
|
-
}
|
|
248
|
-
: {}),
|
|
249
|
-
...(coverage.reporters
|
|
250
|
-
? { reporter: coverage.reporters }
|
|
251
|
-
: {}),
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
219
|
//# sourceMappingURL=executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,8DAAiC;AACjC,0DAA6B;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,11 +23,17 @@ const VitestTestRunner = {
|
|
|
23
23
|
const checker = new dependency_checker_1.DependencyChecker(options.projectSourceRoot);
|
|
24
24
|
checker.check('vitest');
|
|
25
25
|
if (options.browsers?.length) {
|
|
26
|
-
|
|
26
|
+
if (process.versions.webcontainer) {
|
|
27
|
+
checker.check('@vitest/browser-preview');
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
checker.checkAny(['@vitest/browser-playwright', '@vitest/browser-webdriverio', '@vitest/browser-preview'], 'The "browsers" option requires either ' +
|
|
31
|
+
'"@vitest/browser-playwright", "@vitest/browser-webdriverio", or "@vitest/browser-preview" to be installed.');
|
|
32
|
+
}
|
|
27
33
|
}
|
|
28
34
|
else {
|
|
29
|
-
//
|
|
30
|
-
checker.
|
|
35
|
+
// DOM emulation is used when no browsers are specified
|
|
36
|
+
checker.checkAny(['jsdom', 'happy-dom'], 'A DOM environment is required for non-browser tests. Please install either "jsdom" or "happy-dom".');
|
|
31
37
|
}
|
|
32
38
|
if (options.coverage.enabled) {
|
|
33
39
|
checker.check('@vitest/coverage-v8');
|
|
@@ -40,6 +46,9 @@ const VitestTestRunner = {
|
|
|
40
46
|
async createExecutor(context, options, testEntryPointMappings) {
|
|
41
47
|
const projectName = context.target?.project;
|
|
42
48
|
(0, node_assert_1.default)(projectName, 'The builder requires a target.');
|
|
49
|
+
if (!!process.versions.webcontainer && options.browsers?.length) {
|
|
50
|
+
context.logger.info(`Webcontainer environment detected. Using '@vitest/browser-preview' for browser-based tests.`);
|
|
51
|
+
}
|
|
43
52
|
if (typeof options.runnerConfig === 'string') {
|
|
44
53
|
context.logger.info(`Using Vitest configuration file: ${options.runnerConfig}`);
|
|
45
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,8DAAiC;AAEjC,8DAA0D;AAC1D,mDAAwD;AACxD,yCAA4C;AAE5C;;GAEG;AACH,MAAM,gBAAgB,GAAe;IACnC,IAAI,EAAE,QAAQ;IAEd,oBAAoB,CAAC,OAAO;QAC1B,MAAM,OAAO,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAExB,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,QAAQ,CACd,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,8DAAiC;AAEjC,8DAA0D;AAC1D,mDAAwD;AACxD,yCAA4C;AAE5C;;GAEG;AACH,MAAM,gBAAgB,GAAe;IACnC,IAAI,EAAE,QAAQ;IAEd,oBAAoB,CAAC,OAAO;QAC1B,MAAM,OAAO,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAExB,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,QAAQ,CACd,CAAC,4BAA4B,EAAE,6BAA6B,EAAE,yBAAyB,CAAC,EACxF,wCAAwC;oBACtC,4GAA4G,CAC/G,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,OAAO,CAAC,QAAQ,CACd,CAAC,OAAO,EAAE,WAAW,CAAC,EACtB,oGAAoG,CACrG,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,OAAO,EAAE,gBAAgB;QACvC,OAAO,IAAA,qCAAqB,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,sBAAsB;QAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;QAC5C,IAAA,qBAAM,EAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;QAEtD,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAChE,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,6FAA6F,CAC9F,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAClF,CAAC;aAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC1F,CAAC;QAED,OAAO,IAAI,yBAAc,CAAC,WAAW,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
|
|
@@ -5,19 +5,28 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.dev/license
|
|
7
7
|
*/
|
|
8
|
-
import type { VitestPlugin } from 'vitest/node';
|
|
8
|
+
import type { BrowserConfigOptions, UserWorkspaceConfig, VitestPlugin } from 'vitest/node';
|
|
9
9
|
import type { ResultFile } from '../../../application/results';
|
|
10
10
|
import type { NormalizedUnitTestBuilderOptions } from '../../options';
|
|
11
|
-
import type { BrowserConfiguration } from './browser-provider';
|
|
12
11
|
type VitestPlugins = Awaited<ReturnType<typeof VitestPlugin>>;
|
|
13
12
|
interface PluginOptions {
|
|
14
13
|
workspaceRoot: string;
|
|
15
14
|
projectSourceRoot: string;
|
|
16
15
|
projectName: string;
|
|
17
|
-
include?: string[];
|
|
18
|
-
exclude?: string[];
|
|
19
16
|
buildResultFiles: ReadonlyMap<string, ResultFile>;
|
|
20
17
|
testFileToEntryPoint: ReadonlyMap<string, string>;
|
|
21
18
|
}
|
|
22
|
-
|
|
19
|
+
interface VitestConfigPluginOptions {
|
|
20
|
+
browser: BrowserConfigOptions | undefined;
|
|
21
|
+
coverage: NormalizedUnitTestBuilderOptions['coverage'];
|
|
22
|
+
projectName: string;
|
|
23
|
+
projectSourceRoot: string;
|
|
24
|
+
reporters?: string[] | [string, object][];
|
|
25
|
+
setupFiles: string[];
|
|
26
|
+
projectPlugins: Exclude<UserWorkspaceConfig['plugins'], undefined>;
|
|
27
|
+
include: string[];
|
|
28
|
+
optimizeDepsInclude: string[];
|
|
29
|
+
}
|
|
30
|
+
export declare function createVitestConfigPlugin(options: VitestConfigPluginOptions): Promise<VitestPlugins[0]>;
|
|
31
|
+
export declare function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins;
|
|
23
32
|
export {};
|