@angular/build 21.0.0-next.8 → 21.0.0-rc.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/package.json +9 -9
- package/src/builders/application/index.js +39 -0
- package/src/builders/application/index.js.map +1 -1
- package/src/builders/dev-server/options.d.ts +3 -0
- package/src/builders/dev-server/options.js +2 -1
- package/src/builders/dev-server/options.js.map +1 -1
- package/src/builders/dev-server/schema.d.ts +9 -0
- package/src/builders/dev-server/schema.json +7 -0
- package/src/builders/dev-server/vite/index.js +12 -5
- package/src/builders/dev-server/vite/index.js.map +1 -1
- package/src/builders/dev-server/vite/server.js +1 -4
- package/src/builders/dev-server/vite/server.js.map +1 -1
- package/src/builders/extract-i18n/builder.js +1 -3
- package/src/builders/extract-i18n/builder.js.map +1 -1
- package/src/builders/karma/progress-reporter.js +2 -0
- package/src/builders/karma/progress-reporter.js.map +1 -1
- package/src/builders/unit-test/builder.js +0 -1
- package/src/builders/unit-test/builder.js.map +1 -1
- package/src/builders/unit-test/options.d.ts +5 -3
- package/src/builders/unit-test/options.js +23 -15
- package/src/builders/unit-test/options.js.map +1 -1
- package/src/builders/unit-test/runners/karma/executor.js +25 -6
- package/src/builders/unit-test/runners/karma/executor.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/browser-provider.d.ts +3 -2
- package/src/builders/unit-test/runners/vitest/browser-provider.js +65 -16
- package/src/builders/unit-test/runners/vitest/browser-provider.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/build-options.js +24 -1
- package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/configuration.d.ts +15 -0
- package/src/builders/unit-test/runners/vitest/configuration.js +57 -0
- package/src/builders/unit-test/runners/vitest/configuration.js.map +1 -0
- package/src/builders/unit-test/runners/vitest/executor.js +35 -18
- package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/index.js +7 -2
- package/src/builders/unit-test/runners/vitest/index.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/plugins.js +15 -6
- package/src/builders/unit-test/runners/vitest/plugins.js.map +1 -1
- package/src/builders/unit-test/schema.d.ts +26 -6
- package/src/builders/unit-test/schema.js.map +1 -1
- package/src/builders/unit-test/schema.json +12 -6
- package/src/builders/unit-test/test-discovery.js +6 -3
- package/src/builders/unit-test/test-discovery.js.map +1 -1
- package/src/tools/angular/compilation/angular-compilation.js +1 -5
- package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
- package/src/tools/angular/compilation/jit-compilation.js +34 -2
- package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
- package/src/tools/esbuild/application-code-bundle.js +1 -1
- package/src/tools/esbuild/application-code-bundle.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner-worker.js +34 -2
- package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -1
- package/src/tools/esbuild/i18n-locale-plugin.js +33 -15
- package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -1
- package/src/tools/esbuild/javascript-transformer-worker.js +2 -2
- package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
- package/src/tools/esbuild/javascript-transformer.js.map +1 -1
- package/src/tools/vite/middlewares/ssr-middleware.js +41 -5
- package/src/tools/vite/middlewares/ssr-middleware.js.map +1 -1
- package/src/tools/vite/plugins/angular-memory-plugin.js +34 -2
- package/src/tools/vite/plugins/angular-memory-plugin.js.map +1 -1
- package/src/tools/vite/plugins/index.d.ts +0 -1
- package/src/tools/vite/plugins/index.js +1 -3
- package/src/tools/vite/plugins/index.js.map +1 -1
- package/src/tools/vite/plugins/setup-middlewares-plugin.js +34 -2
- package/src/tools/vite/plugins/setup-middlewares-plugin.js.map +1 -1
- package/src/tools/vite/plugins/ssr-transform-plugin.js +34 -2
- package/src/tools/vite/plugins/ssr-transform-plugin.js.map +1 -1
- package/src/utils/environment-options.d.ts +1 -0
- package/src/utils/environment-options.js +6 -1
- package/src/utils/environment-options.js.map +1 -1
- package/src/utils/index-file/augment-index-html.js +34 -2
- package/src/utils/index-file/augment-index-html.js.map +1 -1
- package/src/utils/index-file/html-rewriting-stream.js +34 -2
- package/src/utils/index-file/html-rewriting-stream.js.map +1 -1
- package/src/utils/load-proxy-config.js +7 -21
- package/src/utils/load-proxy-config.js.map +1 -1
- package/src/utils/load-translations.js +1 -2
- package/src/utils/load-translations.js.map +1 -1
- package/src/utils/normalize-cache.js +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +2 -13
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js.map +1 -1
- package/src/utils/server-rendering/launch-server.js +36 -2
- package/src/utils/server-rendering/launch-server.js.map +1 -1
- package/src/utils/server-rendering/prerender.js +2 -25
- package/src/utils/server-rendering/prerender.js.map +1 -1
- package/src/utils/server-rendering/render-worker.js +42 -1
- package/src/utils/server-rendering/render-worker.js.map +1 -1
- package/src/utils/server-rendering/routes-extractor-worker.js +36 -0
- package/src/utils/server-rendering/routes-extractor-worker.js.map +1 -1
- package/src/utils/server-rendering/utils.d.ts +10 -0
- package/src/utils/server-rendering/utils.js +25 -0
- package/src/utils/server-rendering/utils.js.map +1 -1
- package/src/utils/service-worker.js +3 -6
- package/src/utils/service-worker.js.map +1 -1
- package/src/utils/supported-browsers.js +1 -1
- package/src/tools/vite/plugins/i18n-locale-plugin.d.ts +0 -14
- package/src/tools/vite/plugins/i18n-locale-plugin.js +0 -55
- package/src/tools/vite/plugins/i18n-locale-plugin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["options.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAgCH,
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["options.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,8 +39,13 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
39
39
|
return result;
|
|
40
40
|
};
|
|
41
41
|
})();
|
|
42
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
43
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
|
+
};
|
|
42
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
46
|
exports.KarmaExecutor = void 0;
|
|
47
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
48
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
44
49
|
class KarmaExecutor {
|
|
45
50
|
context;
|
|
46
51
|
options;
|
|
@@ -59,14 +64,28 @@ class KarmaExecutor {
|
|
|
59
64
|
if (unitTestOptions.setupFiles.length) {
|
|
60
65
|
context.logger.warn('The "karma" test runner does not support the "setupFiles" option. The option will be ignored.');
|
|
61
66
|
}
|
|
62
|
-
if (unitTestOptions.coverage?.all) {
|
|
63
|
-
context.logger.warn('The "karma" test runner does not support the "coverageAll" option. The option will be ignored.');
|
|
64
|
-
}
|
|
65
67
|
if (unitTestOptions.coverage?.include) {
|
|
66
68
|
context.logger.warn('The "karma" test runner does not support the "coverageInclude" option. The option will be ignored.');
|
|
67
69
|
}
|
|
68
70
|
const buildTargetOptions = (await context.validateOptions(await context.getTargetOptions(unitTestOptions.buildTarget), await context.getBuilderNameForTarget(unitTestOptions.buildTarget)));
|
|
71
|
+
let karmaConfig;
|
|
72
|
+
if (typeof unitTestOptions.runnerConfig === 'string') {
|
|
73
|
+
karmaConfig = unitTestOptions.runnerConfig;
|
|
74
|
+
context.logger.info(`Using Karma configuration file: ${karmaConfig}`);
|
|
75
|
+
}
|
|
76
|
+
else if (unitTestOptions.runnerConfig) {
|
|
77
|
+
const potentialPath = node_path_1.default.join(unitTestOptions.projectRoot, 'karma.conf.js');
|
|
78
|
+
try {
|
|
79
|
+
await promises_1.default.access(potentialPath);
|
|
80
|
+
karmaConfig = potentialPath;
|
|
81
|
+
context.logger.info(`Using Karma configuration file: ${karmaConfig}`);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
context.logger.info('No Karma configuration file found. Using default configuration.');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
69
87
|
const karmaOptions = {
|
|
88
|
+
karmaConfig,
|
|
70
89
|
tsConfig: unitTestOptions.tsConfig ?? buildTargetOptions.tsConfig,
|
|
71
90
|
polyfills: buildTargetOptions.polyfills,
|
|
72
91
|
assets: buildTargetOptions.assets,
|
|
@@ -85,8 +104,8 @@ class KarmaExecutor {
|
|
|
85
104
|
poll: buildTargetOptions.poll,
|
|
86
105
|
preserveSymlinks: buildTargetOptions.preserveSymlinks,
|
|
87
106
|
browsers: unitTestOptions.browsers?.join(','),
|
|
88
|
-
codeCoverage:
|
|
89
|
-
codeCoverageExclude: unitTestOptions.coverage
|
|
107
|
+
codeCoverage: unitTestOptions.coverage.enabled,
|
|
108
|
+
codeCoverageExclude: unitTestOptions.coverage.exclude,
|
|
90
109
|
fileReplacements: buildTargetOptions.fileReplacements,
|
|
91
110
|
reporters: unitTestOptions.reporters?.map((reporter) => {
|
|
92
111
|
// Karma only supports string reporters.
|
|
@@ -114,7 +133,7 @@ class KarmaExecutor {
|
|
|
114
133
|
options.client.args.push('--grep', filter);
|
|
115
134
|
}
|
|
116
135
|
// Add coverage options
|
|
117
|
-
if (unitTestOptions.coverage) {
|
|
136
|
+
if (unitTestOptions.coverage.enabled) {
|
|
118
137
|
const { thresholds, watermarks } = unitTestOptions.coverage;
|
|
119
138
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
120
139
|
const coverageReporter = (options.coverageReporter ??= {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,12 @@
|
|
|
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 { BrowserConfigOptions } from 'vitest/node';
|
|
8
9
|
export interface BrowserConfiguration {
|
|
9
|
-
browser?:
|
|
10
|
+
browser?: BrowserConfigOptions;
|
|
10
11
|
errors?: string[];
|
|
11
12
|
}
|
|
12
13
|
export declare function setupBrowserConfiguration(browsers: string[] | undefined, debug: boolean, projectSourceRoot: string, viewport: {
|
|
13
14
|
width: number;
|
|
14
15
|
height: number;
|
|
15
|
-
} | undefined): BrowserConfiguration
|
|
16
|
+
} | undefined): Promise<BrowserConfiguration>;
|
|
@@ -6,9 +6,43 @@
|
|
|
6
6
|
* Use of this source code is governed by an MIT-style license that can be
|
|
7
7
|
* found in the LICENSE file at https://angular.dev/license
|
|
8
8
|
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
9
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
43
|
exports.setupBrowserConfiguration = setupBrowserConfiguration;
|
|
11
44
|
const node_module_1 = require("node:module");
|
|
45
|
+
const error_1 = require("../../../../utils/error");
|
|
12
46
|
function findBrowserProvider(projectResolver) {
|
|
13
47
|
// One of these must be installed in the project to use browser testing
|
|
14
48
|
const vitestBuiltinProviders = ['playwright', 'webdriverio'];
|
|
@@ -28,31 +62,46 @@ function normalizeBrowserName(browserName) {
|
|
|
28
62
|
const normalized = browserName.toLowerCase();
|
|
29
63
|
return normalized.replace(/headless$/, '');
|
|
30
64
|
}
|
|
31
|
-
function setupBrowserConfiguration(browsers, debug, projectSourceRoot, viewport) {
|
|
65
|
+
async function setupBrowserConfiguration(browsers, debug, projectSourceRoot, viewport) {
|
|
32
66
|
if (browsers === undefined) {
|
|
33
67
|
return {};
|
|
34
68
|
}
|
|
35
69
|
const projectResolver = (0, node_module_1.createRequire)(projectSourceRoot + '/').resolve;
|
|
36
70
|
let errors;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
errors ??= [];
|
|
42
|
-
errors.push('The "browsers" option requires the "@vitest/browser" package to be installed within the project.' +
|
|
43
|
-
' Please install this package and rerun the test command.');
|
|
44
|
-
}
|
|
45
|
-
const provider = findBrowserProvider(projectResolver);
|
|
46
|
-
if (!provider) {
|
|
71
|
+
const providerName = findBrowserProvider(projectResolver);
|
|
72
|
+
if (!providerName) {
|
|
47
73
|
errors ??= [];
|
|
48
74
|
errors.push('The "browsers" option requires either "playwright" or "webdriverio" to be installed within the project.' +
|
|
49
75
|
' Please install one of these packages and rerun the test command.');
|
|
50
76
|
}
|
|
51
|
-
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
77
|
+
let provider;
|
|
78
|
+
if (providerName) {
|
|
79
|
+
const providerPackage = `@vitest/browser-${providerName}`;
|
|
80
|
+
try {
|
|
81
|
+
const providerModule = await Promise.resolve(`${projectResolver(providerPackage)}`).then(s => __importStar(require(s)));
|
|
82
|
+
// Validate that the imported module has the expected structure
|
|
83
|
+
const providerFactory = providerModule[providerName];
|
|
84
|
+
if (typeof providerFactory === 'function') {
|
|
85
|
+
provider = providerFactory();
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
errors ??= [];
|
|
89
|
+
errors.push(`The "${providerPackage}" package does not have a valid browser provider export.`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
(0, error_1.assertIsError)(e);
|
|
94
|
+
errors ??= [];
|
|
95
|
+
// Check for a module not found error to provide a more specific message
|
|
96
|
+
if (e.code === 'ERR_MODULE_NOT_FOUND') {
|
|
97
|
+
errors.push(`The "browsers" option with "${providerName}" requires the "${providerPackage}" package.` +
|
|
98
|
+
' Please install this package and rerun the test command.');
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Handle other potential errors during import
|
|
102
|
+
errors.push(`An error occurred while loading the "${providerPackage}" browser provider:\n ${e.message}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
56
105
|
}
|
|
57
106
|
if (errors) {
|
|
58
107
|
return { errors };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["browser-provider.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG
|
|
1
|
+
{"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["browser-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,20 @@ const path_1 = require("../../../../utils/path");
|
|
|
16
16
|
const schema_1 = require("../../../application/schema");
|
|
17
17
|
const options_1 = require("../../options");
|
|
18
18
|
const test_discovery_1 = require("../../test-discovery");
|
|
19
|
+
/**
|
|
20
|
+
* A list of Angular related packages that should be marked as external.
|
|
21
|
+
* This allows Vite to pre-bundle them, improving performance.
|
|
22
|
+
*/
|
|
23
|
+
const ANGULAR_PACKAGES_TO_EXTERNALIZE = [
|
|
24
|
+
'@angular/core',
|
|
25
|
+
'@angular/common',
|
|
26
|
+
'@angular/platform-browser',
|
|
27
|
+
'@angular/compiler',
|
|
28
|
+
'@angular/router',
|
|
29
|
+
'@angular/forms',
|
|
30
|
+
'@angular/animations',
|
|
31
|
+
'rxjs',
|
|
32
|
+
];
|
|
19
33
|
function createTestBedInitVirtualFile(providersFile, projectSourceRoot, polyfills = []) {
|
|
20
34
|
const usesZoneJS = polyfills.includes('zone.js');
|
|
21
35
|
let providersImport = 'const providers = [];';
|
|
@@ -70,6 +84,15 @@ async function getVitestBuildOptions(options, baseBuildOptions) {
|
|
|
70
84
|
removeTestExtension: true,
|
|
71
85
|
});
|
|
72
86
|
entryPoints.set('init-testbed', 'angular:test-bed-init');
|
|
87
|
+
const externalDependencies = new Set(['vitest']);
|
|
88
|
+
if (!options.browsers?.length) {
|
|
89
|
+
// Only add for non-browser setups.
|
|
90
|
+
// Comprehensive browser prebundling will be handled separately.
|
|
91
|
+
ANGULAR_PACKAGES_TO_EXTERNALIZE.forEach((dep) => externalDependencies.add(dep));
|
|
92
|
+
}
|
|
93
|
+
if (baseBuildOptions.externalDependencies) {
|
|
94
|
+
baseBuildOptions.externalDependencies.forEach((dep) => externalDependencies.add(dep));
|
|
95
|
+
}
|
|
73
96
|
const buildOptions = {
|
|
74
97
|
...baseBuildOptions,
|
|
75
98
|
watch,
|
|
@@ -88,7 +111,7 @@ async function getVitestBuildOptions(options, baseBuildOptions) {
|
|
|
88
111
|
outputHashing: adjustOutputHashing(baseBuildOptions.outputHashing),
|
|
89
112
|
optimization: false,
|
|
90
113
|
entryPoints,
|
|
91
|
-
externalDependencies: [
|
|
114
|
+
externalDependencies: [...externalDependencies],
|
|
92
115
|
};
|
|
93
116
|
buildOptions.polyfills = (0, options_1.injectTestingPolyfills)(buildOptions.polyfills);
|
|
94
117
|
const testBedInitContents = createTestBedInitVirtualFile(providersFile, projectSourceRoot, buildOptions.polyfills);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-options.js","sourceRoot":"","sources":["build-options.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;
|
|
1
|
+
{"version":3,"file":"build-options.js","sourceRoot":"","sources":["build-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
* Finds the Vitest configuration file in the given search directories.
|
|
10
|
+
*
|
|
11
|
+
* @param searchDirs An array of directories to search for the configuration file.
|
|
12
|
+
* @returns The path to the configuration file, or `false` if no file is found.
|
|
13
|
+
* Returning `false` is used to disable Vitest's default configuration file search.
|
|
14
|
+
*/
|
|
15
|
+
export declare function findVitestBaseConfig(searchDirs: string[]): Promise<string | false>;
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.findVitestBaseConfig = findVitestBaseConfig;
|
|
14
|
+
/**
|
|
15
|
+
* @fileoverview
|
|
16
|
+
* This file contains utility functions for finding the Vitest base configuration file.
|
|
17
|
+
*/
|
|
18
|
+
const promises_1 = require("node:fs/promises");
|
|
19
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
20
|
+
/**
|
|
21
|
+
* A list of potential Vitest configuration filenames.
|
|
22
|
+
* The order of the files is important as the first one found will be used.
|
|
23
|
+
*/
|
|
24
|
+
const POTENTIAL_CONFIGS = [
|
|
25
|
+
'vitest-base.config.ts',
|
|
26
|
+
'vitest-base.config.mts',
|
|
27
|
+
'vitest-base.config.cts',
|
|
28
|
+
'vitest-base.config.js',
|
|
29
|
+
'vitest-base.config.mjs',
|
|
30
|
+
'vitest-base.config.cjs',
|
|
31
|
+
];
|
|
32
|
+
/**
|
|
33
|
+
* Finds the Vitest configuration file in the given search directories.
|
|
34
|
+
*
|
|
35
|
+
* @param searchDirs An array of directories to search for the configuration file.
|
|
36
|
+
* @returns The path to the configuration file, or `false` if no file is found.
|
|
37
|
+
* Returning `false` is used to disable Vitest's default configuration file search.
|
|
38
|
+
*/
|
|
39
|
+
async function findVitestBaseConfig(searchDirs) {
|
|
40
|
+
const uniqueDirs = new Set(searchDirs);
|
|
41
|
+
for (const dir of uniqueDirs) {
|
|
42
|
+
try {
|
|
43
|
+
const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
|
|
44
|
+
const files = new Set(entries.filter((e) => e.isFile()).map((e) => e.name));
|
|
45
|
+
for (const potential of POTENTIAL_CONFIGS) {
|
|
46
|
+
if (files.has(potential)) {
|
|
47
|
+
return node_path_1.default.join(dir, potential);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Ignore directories that cannot be read
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["configuration.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AA8BH,oDAkBC;AA9CD;;;GAGG;AAEH,+CAA2C;AAC3C,0DAA6B;AAE7B;;;GAGG;AACH,MAAM,iBAAiB,GAAG;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;CACzB,CAAC;AAEF;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CAAC,UAAoB;IAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAE5E,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;gBAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzB,OAAO,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -46,11 +46,12 @@ 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 picomatch_1 = require("picomatch");
|
|
49
50
|
const error_1 = require("../../../../utils/error");
|
|
50
|
-
const load_esm_1 = require("../../../../utils/load-esm");
|
|
51
51
|
const path_1 = require("../../../../utils/path");
|
|
52
52
|
const results_1 = require("../../../application/results");
|
|
53
53
|
const browser_provider_1 = require("./browser-provider");
|
|
54
|
+
const configuration_1 = require("./configuration");
|
|
54
55
|
const plugins_1 = require("./plugins");
|
|
55
56
|
class VitestExecutor {
|
|
56
57
|
vitest;
|
|
@@ -136,10 +137,12 @@ class VitestExecutor {
|
|
|
136
137
|
return testSetupFiles;
|
|
137
138
|
}
|
|
138
139
|
async initializeVitest() {
|
|
139
|
-
const { coverage, reporters, outputFile, workspaceRoot, browsers, debug, watch, browserViewport, } = this.options;
|
|
140
|
+
const { coverage, reporters, outputFile, workspaceRoot, browsers, debug, watch, browserViewport, ui, } = this.options;
|
|
140
141
|
let vitestNodeModule;
|
|
142
|
+
let vitestCoverageModule;
|
|
141
143
|
try {
|
|
142
|
-
|
|
144
|
+
vitestCoverageModule = await Promise.resolve().then(() => __importStar(require('vitest/coverage')));
|
|
145
|
+
vitestNodeModule = await Promise.resolve().then(() => __importStar(require('vitest/node')));
|
|
143
146
|
}
|
|
144
147
|
catch (error) {
|
|
145
148
|
(0, error_1.assertIsError)(error);
|
|
@@ -149,8 +152,23 @@ class VitestExecutor {
|
|
|
149
152
|
throw new Error('The `vitest` package was not found. Please install the package and rerun the test command.');
|
|
150
153
|
}
|
|
151
154
|
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
|
+
};
|
|
152
170
|
// Setup vitest browser options if configured
|
|
153
|
-
const browserOptions = (0, browser_provider_1.setupBrowserConfiguration)(browsers, debug, this.options.projectSourceRoot, browserViewport);
|
|
171
|
+
const browserOptions = await (0, browser_provider_1.setupBrowserConfiguration)(browsers, debug, this.options.projectSourceRoot, browserViewport);
|
|
154
172
|
if (browserOptions.errors?.length) {
|
|
155
173
|
throw new Error(browserOptions.errors.join('\n'));
|
|
156
174
|
}
|
|
@@ -172,20 +190,25 @@ class VitestExecutor {
|
|
|
172
190
|
fileParallelism: false,
|
|
173
191
|
}
|
|
174
192
|
: {};
|
|
193
|
+
const runnerConfig = this.options.runnerConfig;
|
|
175
194
|
return startVitest('test', undefined, {
|
|
176
|
-
|
|
177
|
-
|
|
195
|
+
config: runnerConfig === true
|
|
196
|
+
? await (0, configuration_1.findVitestBaseConfig)([this.options.projectRoot, this.options.workspaceRoot])
|
|
197
|
+
: runnerConfig,
|
|
178
198
|
root: workspaceRoot,
|
|
179
199
|
project: ['base', this.projectName],
|
|
180
200
|
name: 'base',
|
|
181
201
|
include: [],
|
|
182
202
|
testNamePattern: this.options.filter,
|
|
183
|
-
reporters: reporters ?? ['default'],
|
|
184
|
-
outputFile,
|
|
185
203
|
watch,
|
|
186
|
-
|
|
187
|
-
...debugOptions,
|
|
204
|
+
ui,
|
|
188
205
|
}, {
|
|
206
|
+
test: {
|
|
207
|
+
coverage: await generateCoverageOption(coverage, this.projectName),
|
|
208
|
+
outputFile,
|
|
209
|
+
...debugOptions,
|
|
210
|
+
...(reporters ? { reporters } : {}),
|
|
211
|
+
},
|
|
189
212
|
server: {
|
|
190
213
|
// Disable the actual file watcher. The boolean watch option above should still
|
|
191
214
|
// be enabled as it controls other internal behavior related to rerunning tests.
|
|
@@ -197,22 +220,16 @@ class VitestExecutor {
|
|
|
197
220
|
}
|
|
198
221
|
exports.VitestExecutor = VitestExecutor;
|
|
199
222
|
async function generateCoverageOption(coverage, projectName) {
|
|
200
|
-
if (!coverage) {
|
|
201
|
-
return {
|
|
202
|
-
enabled: false,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
223
|
let defaultExcludes = [];
|
|
206
224
|
if (coverage.exclude) {
|
|
207
225
|
try {
|
|
208
|
-
const vitestConfig = await (
|
|
226
|
+
const vitestConfig = await Promise.resolve().then(() => __importStar(require('vitest/config')));
|
|
209
227
|
defaultExcludes = vitestConfig.coverageConfigDefaults.exclude;
|
|
210
228
|
}
|
|
211
229
|
catch { }
|
|
212
230
|
}
|
|
213
231
|
return {
|
|
214
|
-
enabled:
|
|
215
|
-
all: coverage.all,
|
|
232
|
+
enabled: coverage.enabled,
|
|
216
233
|
excludeAfterRemap: true,
|
|
217
234
|
include: coverage.include,
|
|
218
235
|
reportsDirectory: (0, path_1.toPosixPath)(node_path_1.default.join('coverage', projectName)),
|
|
@@ -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,14 +23,13 @@ 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
|
-
checker.check('@vitest/browser');
|
|
27
26
|
checker.checkAny(['playwright', 'webdriverio'], 'The "browsers" option requires either "playwright" or "webdriverio" to be installed.');
|
|
28
27
|
}
|
|
29
28
|
else {
|
|
30
29
|
// JSDOM is used when no browsers are specified
|
|
31
30
|
checker.check('jsdom');
|
|
32
31
|
}
|
|
33
|
-
if (options.coverage) {
|
|
32
|
+
if (options.coverage.enabled) {
|
|
34
33
|
checker.check('@vitest/coverage-v8');
|
|
35
34
|
}
|
|
36
35
|
checker.report();
|
|
@@ -41,6 +40,12 @@ const VitestTestRunner = {
|
|
|
41
40
|
async createExecutor(context, options, testEntryPointMappings) {
|
|
42
41
|
const projectName = context.target?.project;
|
|
43
42
|
(0, node_assert_1.default)(projectName, 'The builder requires a target.');
|
|
43
|
+
if (typeof options.runnerConfig === 'string') {
|
|
44
|
+
context.logger.info(`Using Vitest configuration file: ${options.runnerConfig}`);
|
|
45
|
+
}
|
|
46
|
+
else if (options.runnerConfig) {
|
|
47
|
+
context.logger.info('Automatically searching for and using Vitest configuration file.');
|
|
48
|
+
}
|
|
44
49
|
return new executor_1.VitestExecutor(projectName, options, testEntryPointMappings);
|
|
45
50
|
},
|
|
46
51
|
};
|
|
@@ -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,
|
|
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,YAAY,EAAE,aAAa,CAAC,EAC7B,sFAAsF,CACvF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,+CAA+C;YAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,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,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"}
|
|
@@ -33,12 +33,11 @@ function createVitestPlugins(options, testSetupFiles, browserOptions, pluginOpti
|
|
|
33
33
|
root: workspaceRoot,
|
|
34
34
|
globals: true,
|
|
35
35
|
setupFiles: testSetupFiles,
|
|
36
|
-
// Use `jsdom` if no browsers are explicitly configured.
|
|
37
|
-
// `node` is effectively no "environment" and the default.
|
|
38
|
-
environment: browserOptions.browser ? 'node' : 'jsdom',
|
|
39
|
-
browser: browserOptions.browser,
|
|
40
36
|
include: options.include,
|
|
41
37
|
...(options.exclude ? { exclude: options.exclude } : {}),
|
|
38
|
+
browser: browserOptions.browser,
|
|
39
|
+
// Use `jsdom` if no browsers are explicitly configured.
|
|
40
|
+
...(browserOptions.browser ? {} : { environment: 'jsdom' }),
|
|
42
41
|
},
|
|
43
42
|
plugins: [
|
|
44
43
|
{
|
|
@@ -92,14 +91,24 @@ function createVitestPlugins(options, testSetupFiles, browserOptions, pluginOpti
|
|
|
92
91
|
const code = outputFile.origin === 'memory'
|
|
93
92
|
? Buffer.from(outputFile.contents).toString('utf-8')
|
|
94
93
|
: await (0, promises_1.readFile)(outputFile.inputPath, 'utf-8');
|
|
95
|
-
const
|
|
94
|
+
const sourceMapText = sourceMapFile
|
|
96
95
|
? sourceMapFile.origin === 'memory'
|
|
97
96
|
? Buffer.from(sourceMapFile.contents).toString('utf-8')
|
|
98
97
|
: await (0, promises_1.readFile)(sourceMapFile.inputPath, 'utf-8')
|
|
99
98
|
: undefined;
|
|
99
|
+
// Vitest will include files in the coverage report if the sourcemap contains no sources.
|
|
100
|
+
// For builder-internal generated code chunks, which are typically helper functions,
|
|
101
|
+
// a virtual source is added to the sourcemap to prevent them from being incorrectly
|
|
102
|
+
// included in the final coverage report.
|
|
103
|
+
const map = sourceMapText ? JSON.parse(sourceMapText) : undefined;
|
|
104
|
+
if (map) {
|
|
105
|
+
if (!map.sources?.length && !map.sourcesContent?.length && !map.mappings) {
|
|
106
|
+
map.sources = ['virtual:builder'];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
100
109
|
return {
|
|
101
110
|
code,
|
|
102
|
-
map
|
|
111
|
+
map,
|
|
103
112
|
};
|
|
104
113
|
}
|
|
105
114
|
},
|