@analogjs/vitest-angular 1.10.0-beta.6 → 1.10.0-beta.7

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/builders.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "builders": {
3
3
  "test": {
4
- "implementation": "./src/lib/vitest.impl",
4
+ "implementation": "./src/lib/builders/test/vitest.impl",
5
5
  "schema": "./src/lib/schema.json",
6
- "description": "Test with Vitest"
6
+ "description": "Run tests with Vitest"
7
+ },
8
+ "build-test": {
9
+ "implementation": "./src/lib/builders/build/vitest.impl",
10
+ "schema": "./src/lib/builders/build/schema.json",
11
+ "description": "Bundle and run tests with Vitest using the Application Builder"
7
12
  }
8
13
  }
9
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@analogjs/vitest-angular",
3
- "version": "1.10.0-beta.6",
3
+ "version": "1.10.0-beta.7",
4
4
  "description": "Vitest Builder for Angular",
5
5
  "type": "commonjs",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
package/src/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- import vitestBuilder from './lib/vitest.impl';
2
- export { vitestBuilder };
1
+ import vitestBuilder from './lib/builders/test/vitest.impl';
2
+ import vitestApplicationBuilder from './lib/builders/build/vitest.impl';
3
+ export { vitestBuilder, vitestApplicationBuilder };
package/src/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.vitestBuilder = void 0;
4
- const vitest_impl_1 = require("./lib/vitest.impl");
3
+ exports.vitestApplicationBuilder = exports.vitestBuilder = void 0;
4
+ const vitest_impl_1 = require("./lib/builders/test/vitest.impl");
5
5
  exports.vitestBuilder = vitest_impl_1.default;
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQThDO0FBRXJDLHdCQUZGLHFCQUFhLENBRUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdml0ZXN0QnVpbGRlciBmcm9tICcuL2xpYi92aXRlc3QuaW1wbCc7XG5cbmV4cG9ydCB7IHZpdGVzdEJ1aWxkZXIgfTtcbiJdfQ==
6
+ const vitest_impl_2 = require("./lib/builders/build/vitest.impl");
7
+ exports.vitestApplicationBuilder = vitest_impl_2.default;
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUVBQTREO0FBR25ELHdCQUhGLHFCQUFhLENBR0U7QUFGdEIsa0VBQXdFO0FBRWhELG1DQUZqQixxQkFBd0IsQ0FFaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdml0ZXN0QnVpbGRlciBmcm9tICcuL2xpYi9idWlsZGVycy90ZXN0L3ZpdGVzdC5pbXBsJztcbmltcG9ydCB2aXRlc3RBcHBsaWNhdGlvbkJ1aWxkZXIgZnJvbSAnLi9saWIvYnVpbGRlcnMvYnVpbGQvdml0ZXN0LmltcGwnO1xuXG5leHBvcnQgeyB2aXRlc3RCdWlsZGVyLCB2aXRlc3RBcHBsaWNhdGlvbkJ1aWxkZXIgfTtcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export declare function getBuildApplicationFunction(): Promise<{
2
+ buildApplicationInternal: Function;
3
+ angularVersion: number;
4
+ }>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBuildApplicationFunction = getBuildApplicationFunction;
4
+ async function getBuildApplicationFunction() {
5
+ const { VERSION } = await Function('return import("@angular/compiler-cli")')();
6
+ const angularVersion = Number(VERSION.major);
7
+ const angularMinor = Number(VERSION.minor);
8
+ let buildApplicationInternal;
9
+ if (angularVersion < 16 || (angularVersion === 16 && angularMinor <= 2)) {
10
+ throw new Error('This builder is not supported with versions earlier than Angular v16.2');
11
+ }
12
+ else if (angularVersion >= 16 && angularVersion < 18) {
13
+ const { buildApplicationInternal: buildApplicationInternalFn, } = require('@angular-devkit/build-angular/src/builders/application');
14
+ buildApplicationInternal = buildApplicationInternalFn;
15
+ }
16
+ else {
17
+ const { buildApplicationInternal: buildApplicationInternalFn, } = require('@angular/build/private');
18
+ buildApplicationInternal = buildApplicationInternalFn;
19
+ }
20
+ return { buildApplicationInternal, angularVersion };
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2a2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdml0ZXN0LWFuZ3VsYXIvc3JjL2xpYi9idWlsZGVycy9idWlsZC9kZXZraXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrRUE0QkM7QUE1Qk0sS0FBSyxVQUFVLDJCQUEyQjtJQUMvQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTyxRQUFRLENBQ2pDLHdDQUF3QyxDQUN6QyxFQUE2RCxDQUFDO0lBRS9ELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxJQUFJLHdCQUFrQyxDQUFDO0lBRXZDLElBQUksY0FBYyxHQUFHLEVBQUUsSUFBSSxDQUFDLGNBQWMsS0FBSyxFQUFFLElBQUksWUFBWSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEUsTUFBTSxJQUFJLEtBQUssQ0FDYix3RUFBd0UsQ0FDekUsQ0FBQztJQUNKLENBQUM7U0FBTSxJQUFJLGNBQWMsSUFBSSxFQUFFLElBQUksY0FBYyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sRUFDSix3QkFBd0IsRUFBRSwwQkFBMEIsR0FDckQsR0FBRyxPQUFPLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUV0RSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztJQUN4RCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sRUFDSix3QkFBd0IsRUFBRSwwQkFBMEIsR0FDckQsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUV0Qyx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGNBQWMsRUFBRSxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QnVpbGRBcHBsaWNhdGlvbkZ1bmN0aW9uKCkge1xuICBjb25zdCB7IFZFUlNJT04gfSA9IGF3YWl0IChGdW5jdGlvbihcbiAgICAncmV0dXJuIGltcG9ydChcIkBhbmd1bGFyL2NvbXBpbGVyLWNsaVwiKSdcbiAgKSgpIGFzIFByb21pc2U8eyBWRVJTSU9OOiB7IG1ham9yOiBzdHJpbmc7IG1pbm9yOiBzdHJpbmcgfSB9Pik7XG5cbiAgY29uc3QgYW5ndWxhclZlcnNpb24gPSBOdW1iZXIoVkVSU0lPTi5tYWpvcik7XG4gIGNvbnN0IGFuZ3VsYXJNaW5vciA9IE51bWJlcihWRVJTSU9OLm1pbm9yKTtcbiAgbGV0IGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbDogRnVuY3Rpb247XG5cbiAgaWYgKGFuZ3VsYXJWZXJzaW9uIDwgMTYgfHwgKGFuZ3VsYXJWZXJzaW9uID09PSAxNiAmJiBhbmd1bGFyTWlub3IgPD0gMikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnVGhpcyBidWlsZGVyIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB2ZXJzaW9ucyBlYXJsaWVyIHRoYW4gQW5ndWxhciB2MTYuMidcbiAgICApO1xuICB9IGVsc2UgaWYgKGFuZ3VsYXJWZXJzaW9uID49IDE2ICYmIGFuZ3VsYXJWZXJzaW9uIDwgMTgpIHtcbiAgICBjb25zdCB7XG4gICAgICBidWlsZEFwcGxpY2F0aW9uSW50ZXJuYWw6IGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbEZuLFxuICAgIH0gPSByZXF1aXJlKCdAYW5ndWxhci1kZXZraXQvYnVpbGQtYW5ndWxhci9zcmMvYnVpbGRlcnMvYXBwbGljYXRpb24nKTtcblxuICAgIGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbCA9IGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbEZuO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHtcbiAgICAgIGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbDogYnVpbGRBcHBsaWNhdGlvbkludGVybmFsRm4sXG4gICAgfSA9IHJlcXVpcmUoJ0Bhbmd1bGFyL2J1aWxkL3ByaXZhdGUnKTtcblxuICAgIGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbCA9IGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbEZuO1xuICB9XG5cbiAgcmV0dXJuIHsgYnVpbGRBcHBsaWNhdGlvbkludGVybmFsLCBhbmd1bGFyVmVyc2lvbiB9O1xufVxuIl19
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.dev/license
7
+ */
8
+ import { AngularMemoryOutputFiles } from '../utils';
9
+ interface AngularMemoryPluginOptions {
10
+ workspaceRoot?: string;
11
+ angularVersion: number;
12
+ outputFiles: AngularMemoryOutputFiles;
13
+ external?: string[];
14
+ }
15
+ export declare function createAngularMemoryPlugin(options: AngularMemoryPluginOptions): Promise<{
16
+ name: string;
17
+ enforce: string;
18
+ config(userConfig: any): void;
19
+ resolveId(source: string, importer: string): Promise<string | undefined>;
20
+ load(id: string): {
21
+ code: string;
22
+ map: string | undefined;
23
+ } | undefined;
24
+ }>;
25
+ export {};
@@ -0,0 +1,82 @@
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.createAngularMemoryPlugin = createAngularMemoryPlugin;
11
+ // import assert from 'node:assert';
12
+ const node_path_1 = require("node:path");
13
+ async function createAngularMemoryPlugin(options) {
14
+ const { normalizePath } = await Function('return import("vite")')();
15
+ const { outputFiles, external } = options;
16
+ let config;
17
+ let projectRoot;
18
+ const workspaceRoot = options?.workspaceRoot || process.cwd();
19
+ return {
20
+ name: 'vite:angular-memory',
21
+ // Ensures plugin hooks run before built-in Vite hooks
22
+ enforce: 'pre',
23
+ config(userConfig) {
24
+ config = userConfig;
25
+ projectRoot = (0, node_path_1.resolve)(workspaceRoot, config.root || '.');
26
+ },
27
+ async resolveId(source, importer) {
28
+ // Prevent vite from resolving an explicit external dependency (`externalDependencies` option)
29
+ if (external?.includes(source)) {
30
+ // This is still not ideal since Vite will still transform the import specifier to
31
+ // `/@id/${source}` but is currently closer to a raw external than a resolved file path.
32
+ return source;
33
+ }
34
+ if (importer) {
35
+ if (source[0] === '.' &&
36
+ normalizePath(importer).startsWith(projectRoot)) {
37
+ // Remove query if present
38
+ const [importerFile] = importer.split('?', 1);
39
+ source =
40
+ '/' + (0, node_path_1.join)((0, node_path_1.dirname)((0, node_path_1.relative)(projectRoot, importerFile)), source);
41
+ }
42
+ }
43
+ const [file] = source.split('?', 1);
44
+ const fileSplits = file.split('/');
45
+ if (outputFiles.has(fileSplits[fileSplits.length - 1])) {
46
+ return fileSplits[fileSplits.length - 1];
47
+ }
48
+ if (outputFiles.has(file)) {
49
+ return (0, node_path_1.join)(projectRoot, source);
50
+ }
51
+ return;
52
+ },
53
+ load(id) {
54
+ const [file] = id.split('?', 1);
55
+ const relativeFile = options.angularVersion < 19
56
+ ? normalizePath((0, node_path_1.relative)(projectRoot, file))
57
+ .replace(/^.*\//, '')
58
+ .replace('.ts', '.js')
59
+ : 'spec-' +
60
+ normalizePath((0, node_path_1.relative)(projectRoot, file))
61
+ .replace('.ts', '.js')
62
+ .replace(/^[./]+/, '_')
63
+ .replace(/\//g, '-');
64
+ const codeContents = outputFiles.get(relativeFile)?.contents ||
65
+ outputFiles.get(id)?.contents;
66
+ if (codeContents === undefined) {
67
+ return undefined;
68
+ }
69
+ const code = Buffer.from(codeContents).toString('utf-8');
70
+ const mapContents = outputFiles.get(relativeFile + '.map')?.contents;
71
+ return {
72
+ // Remove source map URL comments from the code if a sourcemap is present.
73
+ // Vite will inline and add an additional sourcemap URL for the sourcemap.
74
+ code: mapContents
75
+ ? code.replace(/^\/\/# sourceMappingURL=[^\r\n]*/gm, '')
76
+ : code,
77
+ map: mapContents && Buffer.from(mapContents).toString('utf-8'),
78
+ };
79
+ },
80
+ };
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tZW1vcnktcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdml0ZXN0LWFuZ3VsYXIvc3JjL2xpYi9idWlsZGVycy9idWlsZC9wbHVnaW5zL2FuZ3VsYXItbWVtb3J5LXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQWNILDhEQW9GQztBQWhHRCxvQ0FBb0M7QUFDcEMseUNBQTZEO0FBV3RELEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsT0FBbUM7SUFFbkMsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU8sUUFBUSxDQUN2Qyx1QkFBdUIsQ0FDeEIsRUFBcUMsQ0FBQztJQUN2QyxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUMxQyxJQUFJLE1BQU0sQ0FBQztJQUNYLElBQUksV0FBbUIsQ0FBQztJQUN4QixNQUFNLGFBQWEsR0FBRyxPQUFPLEVBQUUsYUFBYSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUU5RCxPQUFPO1FBQ0wsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixzREFBc0Q7UUFDdEQsT0FBTyxFQUFFLEtBQUs7UUFDZCxNQUFNLENBQUMsVUFBZTtZQUNwQixNQUFNLEdBQUcsVUFBVSxDQUFDO1lBQ3BCLFdBQVcsR0FBRyxJQUFBLG1CQUFPLEVBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBYyxFQUFFLFFBQWdCO1lBQzlDLDhGQUE4RjtZQUM5RixJQUFJLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDL0Isa0ZBQWtGO2dCQUNsRix3RkFBd0Y7Z0JBQ3hGLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7b0JBQ2pCLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQy9DLENBQUM7b0JBQ0QsMEJBQTBCO29CQUMxQixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzlDLE1BQU07d0JBQ0osR0FBRyxHQUFHLElBQUEsZ0JBQUksRUFBQyxJQUFBLG1CQUFPLEVBQUMsSUFBQSxvQkFBUSxFQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNyRSxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRW5DLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZELE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUVELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMxQixPQUFPLElBQUEsZ0JBQUksRUFBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEVBQVU7WUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEMsTUFBTSxZQUFZLEdBQ2hCLE9BQU8sQ0FBQyxjQUFjLEdBQUcsRUFBRTtnQkFDekIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFBLG9CQUFRLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUN2QyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztxQkFDcEIsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxPQUFPO29CQUNQLGFBQWEsQ0FBQyxJQUFBLG9CQUFRLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO3lCQUN2QyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQzt5QkFDckIsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7eUJBQ3RCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFN0IsTUFBTSxZQUFZLEdBQ2hCLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUTtnQkFDdkMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUM7WUFDaEMsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7WUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6RCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUM7WUFFckUsT0FBTztnQkFDTCwwRUFBMEU7Z0JBQzFFLDBFQUEwRTtnQkFDMUUsSUFBSSxFQUFFLFdBQVc7b0JBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsb0NBQW9DLEVBQUUsRUFBRSxDQUFDO29CQUN4RCxDQUFDLENBQUMsSUFBSTtnQkFDUixHQUFHLEVBQUUsV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUMvRCxDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG4vLyBpbXBvcnQgYXNzZXJ0IGZyb20gJ25vZGU6YXNzZXJ0JztcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgQW5ndWxhck1lbW9yeU91dHB1dEZpbGVzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbnRlcmZhY2UgQW5ndWxhck1lbW9yeVBsdWdpbk9wdGlvbnMge1xuICB3b3Jrc3BhY2VSb290Pzogc3RyaW5nO1xuICBhbmd1bGFyVmVyc2lvbjogbnVtYmVyO1xuICBvdXRwdXRGaWxlczogQW5ndWxhck1lbW9yeU91dHB1dEZpbGVzO1xuICBleHRlcm5hbD86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQW5ndWxhck1lbW9yeVBsdWdpbihcbiAgb3B0aW9uczogQW5ndWxhck1lbW9yeVBsdWdpbk9wdGlvbnNcbikge1xuICBjb25zdCB7IG5vcm1hbGl6ZVBhdGggfSA9IGF3YWl0IChGdW5jdGlvbihcbiAgICAncmV0dXJuIGltcG9ydChcInZpdGVcIiknXG4gICkoKSBhcyBQcm9taXNlPHR5cGVvZiBpbXBvcnQoJ3ZpdGUnKT4pO1xuICBjb25zdCB7IG91dHB1dEZpbGVzLCBleHRlcm5hbCB9ID0gb3B0aW9ucztcbiAgbGV0IGNvbmZpZztcbiAgbGV0IHByb2plY3RSb290OiBzdHJpbmc7XG4gIGNvbnN0IHdvcmtzcGFjZVJvb3QgPSBvcHRpb25zPy53b3Jrc3BhY2VSb290IHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAndml0ZTphbmd1bGFyLW1lbW9yeScsXG4gICAgLy8gRW5zdXJlcyBwbHVnaW4gaG9va3MgcnVuIGJlZm9yZSBidWlsdC1pbiBWaXRlIGhvb2tzXG4gICAgZW5mb3JjZTogJ3ByZScsXG4gICAgY29uZmlnKHVzZXJDb25maWc6IGFueSkge1xuICAgICAgY29uZmlnID0gdXNlckNvbmZpZztcbiAgICAgIHByb2plY3RSb290ID0gcmVzb2x2ZSh3b3Jrc3BhY2VSb290LCBjb25maWcucm9vdCB8fCAnLicpO1xuICAgIH0sXG4gICAgYXN5bmMgcmVzb2x2ZUlkKHNvdXJjZTogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nKSB7XG4gICAgICAvLyBQcmV2ZW50IHZpdGUgZnJvbSByZXNvbHZpbmcgYW4gZXhwbGljaXQgZXh0ZXJuYWwgZGVwZW5kZW5jeSAoYGV4dGVybmFsRGVwZW5kZW5jaWVzYCBvcHRpb24pXG4gICAgICBpZiAoZXh0ZXJuYWw/LmluY2x1ZGVzKHNvdXJjZSkpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBzdGlsbCBub3QgaWRlYWwgc2luY2UgVml0ZSB3aWxsIHN0aWxsIHRyYW5zZm9ybSB0aGUgaW1wb3J0IHNwZWNpZmllciB0b1xuICAgICAgICAvLyBgL0BpZC8ke3NvdXJjZX1gIGJ1dCBpcyBjdXJyZW50bHkgY2xvc2VyIHRvIGEgcmF3IGV4dGVybmFsIHRoYW4gYSByZXNvbHZlZCBmaWxlIHBhdGguXG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbXBvcnRlcikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc291cmNlWzBdID09PSAnLicgJiZcbiAgICAgICAgICBub3JtYWxpemVQYXRoKGltcG9ydGVyKS5zdGFydHNXaXRoKHByb2plY3RSb290KVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBSZW1vdmUgcXVlcnkgaWYgcHJlc2VudFxuICAgICAgICAgIGNvbnN0IFtpbXBvcnRlckZpbGVdID0gaW1wb3J0ZXIuc3BsaXQoJz8nLCAxKTtcbiAgICAgICAgICBzb3VyY2UgPVxuICAgICAgICAgICAgJy8nICsgam9pbihkaXJuYW1lKHJlbGF0aXZlKHByb2plY3RSb290LCBpbXBvcnRlckZpbGUpKSwgc291cmNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBbZmlsZV0gPSBzb3VyY2Uuc3BsaXQoJz8nLCAxKTtcbiAgICAgIGNvbnN0IGZpbGVTcGxpdHMgPSBmaWxlLnNwbGl0KCcvJyk7XG5cbiAgICAgIGlmIChvdXRwdXRGaWxlcy5oYXMoZmlsZVNwbGl0c1tmaWxlU3BsaXRzLmxlbmd0aCAtIDFdKSkge1xuICAgICAgICByZXR1cm4gZmlsZVNwbGl0c1tmaWxlU3BsaXRzLmxlbmd0aCAtIDFdO1xuICAgICAgfVxuXG4gICAgICBpZiAob3V0cHV0RmlsZXMuaGFzKGZpbGUpKSB7XG4gICAgICAgIHJldHVybiBqb2luKHByb2plY3RSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH0sXG4gICAgbG9hZChpZDogc3RyaW5nKSB7XG4gICAgICBjb25zdCBbZmlsZV0gPSBpZC5zcGxpdCgnPycsIDEpO1xuICAgICAgY29uc3QgcmVsYXRpdmVGaWxlID1cbiAgICAgICAgb3B0aW9ucy5hbmd1bGFyVmVyc2lvbiA8IDE5XG4gICAgICAgICAgPyBub3JtYWxpemVQYXRoKHJlbGF0aXZlKHByb2plY3RSb290LCBmaWxlKSlcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL14uKlxcLy8sICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgnLnRzJywgJy5qcycpXG4gICAgICAgICAgOiAnc3BlYy0nICtcbiAgICAgICAgICAgIG5vcm1hbGl6ZVBhdGgocmVsYXRpdmUocHJvamVjdFJvb3QsIGZpbGUpKVxuICAgICAgICAgICAgICAucmVwbGFjZSgnLnRzJywgJy5qcycpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9eWy4vXSsvLCAnXycpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC8vZywgJy0nKTtcblxuICAgICAgY29uc3QgY29kZUNvbnRlbnRzID1cbiAgICAgICAgb3V0cHV0RmlsZXMuZ2V0KHJlbGF0aXZlRmlsZSk/LmNvbnRlbnRzIHx8XG4gICAgICAgIG91dHB1dEZpbGVzLmdldChpZCk/LmNvbnRlbnRzO1xuICAgICAgaWYgKGNvZGVDb250ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvZGUgPSBCdWZmZXIuZnJvbShjb2RlQ29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgICAgY29uc3QgbWFwQ29udGVudHMgPSBvdXRwdXRGaWxlcy5nZXQocmVsYXRpdmVGaWxlICsgJy5tYXAnKT8uY29udGVudHM7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIFJlbW92ZSBzb3VyY2UgbWFwIFVSTCBjb21tZW50cyBmcm9tIHRoZSBjb2RlIGlmIGEgc291cmNlbWFwIGlzIHByZXNlbnQuXG4gICAgICAgIC8vIFZpdGUgd2lsbCBpbmxpbmUgYW5kIGFkZCBhbiBhZGRpdGlvbmFsIHNvdXJjZW1hcCBVUkwgZm9yIHRoZSBzb3VyY2VtYXAuXG4gICAgICAgIGNvZGU6IG1hcENvbnRlbnRzXG4gICAgICAgICAgPyBjb2RlLnJlcGxhY2UoL15cXC9cXC8jIHNvdXJjZU1hcHBpbmdVUkw9W15cXHJcXG5dKi9nbSwgJycpXG4gICAgICAgICAgOiBjb2RlLFxuICAgICAgICBtYXA6IG1hcENvbnRlbnRzICYmIEJ1ZmZlci5mcm9tKG1hcENvbnRlbnRzKS50b1N0cmluZygndXRmLTgnKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export declare function esbuildDownlevelPlugin(): Promise<{
2
+ name: string;
3
+ transform(_code: string, id: string): Promise<{
4
+ code: string;
5
+ map: import("rollup").SourceMap;
6
+ } | undefined>;
7
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.esbuildDownlevelPlugin = esbuildDownlevelPlugin;
4
+ async function esbuildDownlevelPlugin() {
5
+ const { transformWithEsbuild } = await Function('return import("vite")')();
6
+ return {
7
+ name: 'analogs-vitest-esbuild-downlevel-plugin',
8
+ async transform(_code, id) {
9
+ if (_code.includes('async (')) {
10
+ const { code, map } = await transformWithEsbuild(_code, id, {
11
+ loader: 'js',
12
+ format: 'esm',
13
+ target: 'es2016',
14
+ sourcemap: true,
15
+ sourcefile: id,
16
+ });
17
+ return {
18
+ code,
19
+ map,
20
+ };
21
+ }
22
+ return undefined;
23
+ },
24
+ };
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNidWlsZC1kb3dubGV2ZWwtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdml0ZXN0LWFuZ3VsYXIvc3JjL2xpYi9idWlsZGVycy9idWlsZC9wbHVnaW5zL2VzYnVpbGQtZG93bmxldmVsLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdEQXlCQztBQXpCTSxLQUFLLFVBQVUsc0JBQXNCO0lBQzFDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLE1BQU8sUUFBUSxDQUM5Qyx1QkFBdUIsQ0FDeEIsRUFBcUMsQ0FBQztJQUN2QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLHlDQUF5QztRQUMvQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWEsRUFBRSxFQUFVO1lBQ3ZDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUM5QixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtvQkFDMUQsTUFBTSxFQUFFLElBQUk7b0JBQ1osTUFBTSxFQUFFLEtBQUs7b0JBQ2IsTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLFNBQVMsRUFBRSxJQUFJO29CQUNmLFVBQVUsRUFBRSxFQUFFO2lCQUNmLENBQUMsQ0FBQztnQkFFSCxPQUFPO29CQUNMLElBQUk7b0JBQ0osR0FBRztpQkFDSixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhc3luYyBmdW5jdGlvbiBlc2J1aWxkRG93bmxldmVsUGx1Z2luKCkge1xuICBjb25zdCB7IHRyYW5zZm9ybVdpdGhFc2J1aWxkIH0gPSBhd2FpdCAoRnVuY3Rpb24oXG4gICAgJ3JldHVybiBpbXBvcnQoXCJ2aXRlXCIpJ1xuICApKCkgYXMgUHJvbWlzZTx0eXBlb2YgaW1wb3J0KCd2aXRlJyk+KTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYW5hbG9ncy12aXRlc3QtZXNidWlsZC1kb3dubGV2ZWwtcGx1Z2luJyxcbiAgICBhc3luYyB0cmFuc2Zvcm0oX2NvZGU6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgICAgaWYgKF9jb2RlLmluY2x1ZGVzKCdhc3luYyAoJykpIHtcbiAgICAgICAgY29uc3QgeyBjb2RlLCBtYXAgfSA9IGF3YWl0IHRyYW5zZm9ybVdpdGhFc2J1aWxkKF9jb2RlLCBpZCwge1xuICAgICAgICAgIGxvYWRlcjogJ2pzJyxcbiAgICAgICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgICAgIHRhcmdldDogJ2VzMjAxNicsXG4gICAgICAgICAgc291cmNlbWFwOiB0cnVlLFxuICAgICAgICAgIHNvdXJjZWZpbGU6IGlkLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgbWFwLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,47 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "title": "Vitest schema for Test Facade.",
4
+ "description": "Vitest target options",
5
+ "type": "object",
6
+ "properties": {
7
+ "configFile": {
8
+ "type": "string",
9
+ "description": "The path to the local vitest config",
10
+ "x-completion-type": "file",
11
+ "x-completion-glob": "@vitest.config@(.js|.ts|.mts)",
12
+ "aliases": ["config"]
13
+ },
14
+ "include": {
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ },
19
+ "default": ["src/**/*.spec.ts"],
20
+ "description": "Globs of files to include, relative to project root."
21
+ },
22
+ "exclude": {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "string"
26
+ },
27
+ "default": ["node_modules", "dist", ".idea", ".git", ".cache"],
28
+ "description": "Globs of files to exclude, relative to the project root."
29
+ },
30
+ "setupFile": {
31
+ "type": "string",
32
+ "description": "The path to the setup file.",
33
+ "default": "src/test-setup.ts"
34
+ },
35
+ "tsConfig": {
36
+ "type": "string",
37
+ "description": "The relative path to the TypeScript configuration file for running tests.",
38
+ "default": "tsconfig.spec.json"
39
+ },
40
+ "watch": {
41
+ "type": "boolean",
42
+ "default": false,
43
+ "description": "Run the tests in watch mode"
44
+ }
45
+ },
46
+ "additionalProperties": true
47
+ }
@@ -0,0 +1,5 @@
1
+ export type AngularMemoryOutputFiles = Map<string, {
2
+ contents: Uint8Array;
3
+ hash: string;
4
+ servable: boolean;
5
+ }>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL2J1aWxkZXJzL2J1aWxkL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBbmd1bGFyTWVtb3J5T3V0cHV0RmlsZXMgPSBNYXA8XG4gIHN0cmluZyxcbiAgeyBjb250ZW50czogVWludDhBcnJheTsgaGFzaDogc3RyaW5nOyBzZXJ2YWJsZTogYm9vbGVhbiB9XG4+O1xuIl19
@@ -0,0 +1,10 @@
1
+ import { VitestSchema } from './schema';
2
+ export declare enum ResultKind {
3
+ Failure = 0,
4
+ Full = 1,
5
+ Incremental = 2,
6
+ ComponentUpdate = 3
7
+ }
8
+ export declare function getExtraArgs(options: VitestSchema): Promise<Record<string, any>>;
9
+ declare const _default: unknown;
10
+ export default _default;
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResultKind = void 0;
4
+ exports.getExtraArgs = getExtraArgs;
5
+ const architect_1 = require("@angular-devkit/architect");
6
+ const path = require("path");
7
+ const angular_memory_plugin_1 = require("./plugins/angular-memory-plugin");
8
+ const esbuild_downlevel_plugin_1 = require("./plugins/esbuild-downlevel-plugin");
9
+ const devkit_1 = require("./devkit");
10
+ var ResultKind;
11
+ (function (ResultKind) {
12
+ ResultKind[ResultKind["Failure"] = 0] = "Failure";
13
+ ResultKind[ResultKind["Full"] = 1] = "Full";
14
+ ResultKind[ResultKind["Incremental"] = 2] = "Incremental";
15
+ ResultKind[ResultKind["ComponentUpdate"] = 3] = "ComponentUpdate";
16
+ })(ResultKind || (exports.ResultKind = ResultKind = {}));
17
+ process.env['VITE_CJS_IGNORE_WARNING'] = 'true';
18
+ async function* vitestApplicationBuilder(options, context) {
19
+ process.env['TEST'] = 'true';
20
+ process.env['VITEST'] = 'true';
21
+ const { buildApplicationInternal, angularVersion } = await (0, devkit_1.getBuildApplicationFunction)();
22
+ const { startVitest } = await Function('return import("vitest/node")')();
23
+ const projectConfig = await context.getProjectMetadata(context.target);
24
+ const extraArgs = await getExtraArgs(options);
25
+ const workspaceRoot = context.workspaceRoot;
26
+ const projectRoot = projectConfig['root'];
27
+ const setupFile = path.relative(projectRoot, options.setupFile);
28
+ const config = {
29
+ root: `${projectRoot || '.'}`,
30
+ watch: options.watch === true,
31
+ config: options.configFile,
32
+ setupFiles: [setupFile],
33
+ globals: true,
34
+ pool: 'vmThreads',
35
+ reporters: ['default'],
36
+ environment: 'jsdom',
37
+ exclude: options?.exclude || [],
38
+ ...extraArgs,
39
+ };
40
+ const includes = findIncludes({
41
+ workspaceRoot,
42
+ projectRoot,
43
+ include: options.include,
44
+ exclude: options.exclude || [],
45
+ });
46
+ const testFiles = [
47
+ path.relative(workspaceRoot, options.setupFile),
48
+ ...includes.map((inc) => path.relative(workspaceRoot, inc)),
49
+ ];
50
+ const entryPoints = generateEntryPoints({
51
+ projectRoot: projectRoot,
52
+ testFiles,
53
+ context,
54
+ angularVersion,
55
+ });
56
+ const outputFiles = new Map();
57
+ const viteConfig = {
58
+ plugins: [
59
+ (await (0, angular_memory_plugin_1.createAngularMemoryPlugin)({
60
+ angularVersion,
61
+ workspaceRoot,
62
+ outputFiles,
63
+ })),
64
+ await (0, esbuild_downlevel_plugin_1.esbuildDownlevelPlugin)(),
65
+ ],
66
+ };
67
+ let server;
68
+ for await (const buildOutput of buildApplicationInternal({
69
+ aot: false,
70
+ index: false,
71
+ progress: false,
72
+ prerender: false,
73
+ optimization: false,
74
+ outputPath: `.angular/.vitest/${projectConfig['name']}`,
75
+ tsConfig: path.relative(workspaceRoot, options.tsConfig),
76
+ watch: options.watch === true,
77
+ entryPoints,
78
+ allowedCommonJsDependencies: ['@analogjs/vitest-angular/setup-zone'],
79
+ }, context)) {
80
+ if (buildOutput.kind === ResultKind.Failure) {
81
+ yield { success: false };
82
+ }
83
+ else if (buildOutput.kind === ResultKind.Incremental ||
84
+ buildOutput.kind === ResultKind.Full) {
85
+ if (buildOutput.kind === ResultKind.Full) {
86
+ outputFiles.clear();
87
+ Object.keys(buildOutput.files).forEach((key) => {
88
+ outputFiles.set(key, buildOutput.files[key]);
89
+ });
90
+ }
91
+ else {
92
+ Object.keys(buildOutput.files).forEach((key) => {
93
+ outputFiles.set(key, buildOutput.files[key]);
94
+ });
95
+ }
96
+ }
97
+ if (options.watch) {
98
+ const vitestServer = await startVitest('test', [], config, viteConfig);
99
+ server = vitestServer;
100
+ yield { success: true };
101
+ }
102
+ else {
103
+ server = await startVitest('test', [], config, viteConfig);
104
+ const success = server?.state.getCountOfFailedTests() === 0;
105
+ yield { success };
106
+ }
107
+ }
108
+ yield { success: true };
109
+ }
110
+ async function getExtraArgs(options) {
111
+ // support passing extra args to Vitest CLI
112
+ const schema = await Promise.resolve().then(() => require('./schema.json'));
113
+ const extraArgs = {};
114
+ for (const key of Object.keys(options)) {
115
+ if (!schema.properties[key]) {
116
+ extraArgs[key] = options[key];
117
+ }
118
+ }
119
+ return extraArgs;
120
+ }
121
+ function findIncludes(options) {
122
+ const fg = require('fast-glob');
123
+ const { normalizePath } = require('vite');
124
+ const projectRoot = normalizePath(path.resolve(options.workspaceRoot, options.projectRoot));
125
+ const globs = [...options.include.map((glob) => `${projectRoot}/${glob}`)];
126
+ return fg.sync(globs, {
127
+ dot: true,
128
+ ignore: options.exclude,
129
+ });
130
+ }
131
+ function generateEntryPoints({ projectRoot, testFiles, context, angularVersion, }) {
132
+ if (angularVersion < 19) {
133
+ return testFiles;
134
+ }
135
+ const seen = new Set();
136
+ return new Map(Array.from(testFiles, (testFile) => {
137
+ const relativePath = path
138
+ .relative(testFile.startsWith(projectRoot)
139
+ ? projectRoot
140
+ : context.workspaceRoot, testFile)
141
+ .replace(/^[./]+/, '_')
142
+ .replace(/\//g, '-');
143
+ let uniqueName = `spec-${path.basename(relativePath, path.extname(relativePath))}`;
144
+ let suffix = 2;
145
+ while (seen.has(uniqueName)) {
146
+ uniqueName = `${relativePath}-${suffix}`;
147
+ ++suffix;
148
+ }
149
+ seen.add(uniqueName);
150
+ return [uniqueName, testFile];
151
+ }));
152
+ }
153
+ exports.default = (0, architect_1.createBuilder)(vitestApplicationBuilder);
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL2J1aWxkZXJzL2J1aWxkL3ZpdGVzdC5pbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXVJQSxvQ0FhQztBQXBKRCx5REFBMEQ7QUFDMUQsNkJBQTZCO0FBTTdCLDJFQUE0RTtBQUM1RSxpRkFBNEU7QUFDNUUscUNBQXVEO0FBRXZELElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQixpREFBTyxDQUFBO0lBQ1AsMkNBQUksQ0FBQTtJQUNKLHlEQUFXLENBQUE7SUFDWCxpRUFBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxVQUFVLDBCQUFWLFVBQVUsUUFLckI7QUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsTUFBTSxDQUFDO0FBRWhELEtBQUssU0FBUyxDQUFDLENBQUMsd0JBQXdCLENBQ3RDLE9BQXFCLEVBQ3JCLE9BQVk7SUFFWixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUUvQixNQUFNLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLEdBQ2hELE1BQU0sSUFBQSxvQ0FBMkIsR0FBRSxDQUFDO0lBQ3RDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFPLFFBQVEsQ0FDckMsOEJBQThCLENBQy9CLEVBQTRDLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENB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QUFJLEdBQUcsRUFBRSxDQUFDO0lBRXZCLE9BQU8sSUFBSSxHQUFHLENBQ1osS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJO2FBQ3RCLFFBQVEsQ0FDUCxRQUFRLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUM5QixDQUFDLENBQUMsV0FBVztZQUNiLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUN6QixRQUFRLENBQ1Q7YUFDQSxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQzthQUN0QixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXZCLElBQUksVUFBVSxHQUFHLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FDcEMsWUFBWSxFQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQzNCLEVBQUUsQ0FBQztRQUNKLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzVCLFVBQVUsR0FBRyxHQUFHLFlBQVksSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QyxFQUFFLE1BQU0sQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxrQkFBZSxJQUFBLHlCQUFhLEVBQUMsd0JBQXdCLENBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJ3ZpdGVzdC9ub2RlJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luLCBVc2VyQ29uZmlnIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHlwZSB7IFVzZXJDb25maWcgYXMgVml0ZXN0Q29uZmlnIH0gZnJvbSAndml0ZXN0JztcblxuaW1wb3J0IHsgVml0ZXN0U2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHsgY3JlYXRlQW5ndWxhck1lbW9yeVBsdWdpbiB9IGZyb20gJy4vcGx1Z2lucy9hbmd1bGFyLW1lbW9yeS1wbHVnaW4nO1xuaW1wb3J0IHsgZXNidWlsZERvd25sZXZlbFBsdWdpbiB9IGZyb20gJy4vcGx1Z2lucy9lc2J1aWxkLWRvd25sZXZlbC1wbHVnaW4nO1xuaW1wb3J0IHsgZ2V0QnVpbGRBcHBsaWNhdGlvbkZ1bmN0aW9uIH0gZnJvbSAnLi9kZXZraXQnO1xuXG5leHBvcnQgZW51bSBSZXN1bHRLaW5kIHtcbiAgRmFpbHVyZSxcbiAgRnVsbCxcbiAgSW5jcmVtZW50YWwsXG4gIENvbXBvbmVudFVwZGF0ZSxcbn1cblxucHJvY2Vzcy5lbnZbJ1ZJVEVfQ0pTX0lHTk9SRV9XQVJOSU5HJ10gPSAndHJ1ZSc7XG5cbmFzeW5jIGZ1bmN0aW9uKiB2aXRlc3RBcHBsaWNhdGlvbkJ1aWxkZXIoXG4gIG9wdGlvbnM6IFZpdGVzdFNjaGVtYSxcbiAgY29udGV4dDogYW55XG4pOiBBc3luY0l0ZXJhYmxlPHsgc3VjY2VzczogYm9vbGVhbiB9PiB7XG4gIHByb2Nlc3MuZW52WydURVNUJ10gPSAndHJ1ZSc7XG4gIHByb2Nlc3MuZW52WydWSVRFU1QnXSA9ICd0cnVlJztcblxuICBjb25zdCB7IGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbCwgYW5ndWxhclZlcnNpb24gfSA9XG4gICAgYXdhaXQgZ2V0QnVpbGRBcHBsaWNhdGlvbkZ1bmN0aW9uKCk7XG4gIGNvbnN0IHsgc3RhcnRWaXRlc3QgfSA9IGF3YWl0IChGdW5jdGlvbihcbiAgICAncmV0dXJuIGltcG9ydChcInZpdGVzdC9ub2RlXCIpJ1xuICApKCkgYXMgUHJvbWlzZTx0eXBlb2YgaW1wb3J0KCd2aXRlc3Qvbm9kZScpPik7XG5cbiAgY29uc3QgcHJvamVjdENvbmZpZyA9IGF3YWl0IGNvbnRleHQuZ2V0UHJvamVjdE1ldGFkYXRhKGNvbnRleHQudGFyZ2V0KTtcbiAgY29uc3QgZXh0cmFBcmdzID0gYXdhaXQgZ2V0RXh0cmFBcmdzKG9wdGlvbnMpO1xuICBjb25zdCB3b3Jrc3BhY2VSb290ID0gY29udGV4dC53b3Jrc3BhY2VSb290O1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHByb2plY3RDb25maWdbJ3Jvb3QnXTtcbiAgY29uc3Qgc2V0dXBGaWxlID0gcGF0aC5yZWxhdGl2ZShwcm9qZWN0Um9vdCwgb3B0aW9ucy5zZXR1cEZpbGUpO1xuXG4gIGNvbnN0IGNvbmZpZzogVml0ZXN0Q29uZmlnID0ge1xuICAgIHJvb3Q6IGAke3Byb2plY3RSb290IHx8ICcuJ31gLFxuICAgIHdhdGNoOiBvcHRpb25zLndhdGNoID09PSB0cnVlLFxuICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWdGaWxlLFxuICAgIHNldHVwRmlsZXM6IFtzZXR1cEZpbGVdLFxuICAgIGdsb2JhbHM6IHRydWUsXG4gICAgcG9vbDogJ3ZtVGhyZWFkcycsXG4gICAgcmVwb3J0ZXJzOiBbJ2RlZmF1bHQnXSxcbiAgICBlbnZpcm9ubWVudDogJ2pzZG9tJyxcbiAgICBleGNsdWRlOiBvcHRpb25zPy5leGNsdWRlIHx8IFtdLFxuICAgIC4uLmV4dHJhQXJncyxcbiAgfTtcblxuICBjb25zdCBpbmNsdWRlczogc3RyaW5nW10gPSBmaW5kSW5jbHVkZXMoe1xuICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgcHJvamVjdFJvb3QsXG4gICAgaW5jbHVkZTogb3B0aW9ucy5pbmNsdWRlLFxuICAgIGV4Y2x1ZGU6IG9wdGlvbnMuZXhjbHVkZSB8fCBbXSxcbiAgfSk7XG5cbiAgY29uc3QgdGVzdEZpbGVzID0gW1xuICAgIHBhdGgucmVsYXRpdmUod29ya3NwYWNlUm9vdCwgb3B0aW9ucy5zZXR1cEZpbGUpLFxuICAgIC4uLmluY2x1ZGVzLm1hcCgoaW5jKSA9PiBwYXRoLnJlbGF0aXZlKHdvcmtzcGFjZVJvb3QsIGluYykpLFxuICBdO1xuXG4gIGNvbnN0IGVudHJ5UG9pbnRzID0gZ2VuZXJhdGVFbnRyeVBvaW50cyh7XG4gICAgcHJvamVjdFJvb3Q6IHByb2plY3RSb290LFxuICAgIHRlc3RGaWxlcyxcbiAgICBjb250ZXh0LFxuICAgIGFuZ3VsYXJWZXJzaW9uLFxuICB9KTtcblxuICBjb25zdCBvdXRwdXRGaWxlcyA9IG5ldyBNYXAoKTtcblxuICBjb25zdCB2aXRlQ29uZmlnOiBVc2VyQ29uZmlnID0ge1xuICAgIHBsdWdpbnM6IFtcbiAgICAgIChhd2FpdCBjcmVhdGVBbmd1bGFyTWVtb3J5UGx1Z2luKHtcbiAgICAgICAgYW5ndWxhclZlcnNpb24sXG4gICAgICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgICAgIG91dHB1dEZpbGVzLFxuICAgICAgfSkpIGFzIFBsdWdpbixcbiAgICAgIGF3YWl0IGVzYnVpbGREb3dubGV2ZWxQbHVnaW4oKSxcbiAgICBdLFxuICB9O1xuXG4gIGxldCBzZXJ2ZXI6IFZpdGVzdCB8IHVuZGVmaW5lZDtcbiAgZm9yIGF3YWl0IChjb25zdCBidWlsZE91dHB1dCBvZiBidWlsZEFwcGxpY2F0aW9uSW50ZXJuYWwoXG4gICAge1xuICAgICAgYW90OiBmYWxzZSxcbiAgICAgIGluZGV4OiBmYWxzZSxcbiAgICAgIHByb2dyZXNzOiBmYWxzZSxcbiAgICAgIHByZXJlbmRlcjogZmFsc2UsXG4gICAgICBvcHRpbWl6YXRpb246IGZhbHNlLFxuICAgICAgb3V0cHV0UGF0aDogYC5hbmd1bGFyLy52aXRlc3QvJHtwcm9qZWN0Q29uZmlnWyduYW1lJ119YCxcbiAgICAgIHRzQ29uZmlnOiBwYXRoLnJlbGF0aXZlKHdvcmtzcGFjZVJvb3QsIG9wdGlvbnMudHNDb25maWcpLFxuICAgICAgd2F0Y2g6IG9wdGlvbnMud2F0Y2ggPT09IHRydWUsXG4gICAgICBlbnRyeVBvaW50cyxcbiAgICAgIGFsbG93ZWRDb21tb25Kc0RlcGVuZGVuY2llczogWydAYW5hbG9nanMvdml0ZXN0LWFuZ3VsYXIvc2V0dXAtem9uZSddLFxuICAgIH0sXG4gICAgY29udGV4dFxuICApKSB7XG4gICAgaWYgKGJ1aWxkT3V0cHV0LmtpbmQgPT09IFJlc3VsdEtpbmQuRmFpbHVyZSkge1xuICAgICAgeWllbGQgeyBzdWNjZXNzOiBmYWxzZSB9O1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBidWlsZE91dHB1dC5raW5kID09PSBSZXN1bHRLaW5kLkluY3JlbWVudGFsIHx8XG4gICAgICBidWlsZE91dHB1dC5raW5kID09PSBSZXN1bHRLaW5kLkZ1bGxcbiAgICApIHtcbiAgICAgIGlmIChidWlsZE91dHB1dC5raW5kID09PSBSZXN1bHRLaW5kLkZ1bGwpIHtcbiAgICAgICAgb3V0cHV0RmlsZXMuY2xlYXIoKTtcbiAgICAgICAgT2JqZWN0LmtleXMoYnVpbGRPdXRwdXQuZmlsZXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIG91dHB1dEZpbGVzLnNldChrZXksIGJ1aWxkT3V0cHV0LmZpbGVzW2tleV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGJ1aWxkT3V0cHV0LmZpbGVzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBvdXRwdXRGaWxlcy5zZXQoa2V5LCBidWlsZE91dHB1dC5maWxlc1trZXldKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMud2F0Y2gpIHtcbiAgICAgIGNvbnN0IHZpdGVzdFNlcnZlciA9IGF3YWl0IHN0YXJ0Vml0ZXN0KCd0ZXN0JywgW10sIGNvbmZpZywgdml0ZUNvbmZpZyk7XG4gICAgICBzZXJ2ZXIgPSB2aXRlc3RTZXJ2ZXI7XG5cbiAgICAgIHlpZWxkIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJ2ZXIgPSBhd2FpdCBzdGFydFZpdGVzdCgndGVzdCcsIFtdLCBjb25maWcsIHZpdGVDb25maWcpO1xuXG4gICAgICBjb25zdCBzdWNjZXNzID0gc2VydmVyPy5zdGF0ZS5nZXRDb3VudE9mRmFpbGVkVGVzdHMoKSA9PT0gMDtcblxuICAgICAgeWllbGQgeyBzdWNjZXNzIH07XG4gICAgfVxuICB9XG5cbiAgeWllbGQgeyBzdWNjZXNzOiB0cnVlIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFeHRyYUFyZ3MoXG4gIG9wdGlvbnM6IFZpdGVzdFNjaGVtYVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIC8vIHN1cHBvcnQgcGFzc2luZyBleHRyYSBhcmdzIHRvIFZpdGVzdCBDTElcbiAgY29uc3Qgc2NoZW1hID0gYXdhaXQgaW1wb3J0KCcuL3NjaGVtYS5qc29uJyk7XG4gIGNvbnN0IGV4dHJhQXJnczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvcHRpb25zKSkge1xuICAgIGlmICghKHNjaGVtYSBhcyBhbnkpLnByb3BlcnRpZXNba2V5XSkge1xuICAgICAgZXh0cmFBcmdzW2tleV0gPSAob3B0aW9ucyBhcyBhbnkpW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dHJhQXJncztcbn1cblxuZnVuY3Rpb24gZmluZEluY2x1ZGVzKG9wdGlvbnM6IHtcbiAgd29ya3NwYWNlUm9vdDogc3RyaW5nO1xuICBwcm9qZWN0Um9vdDogc3RyaW5nO1xuICBpbmNsdWRlOiBzdHJpbmdbXTtcbiAgZXhjbHVkZTogc3RyaW5nW107XG59KSB7XG4gIGNvbnN0IGZnID0gcmVxdWlyZSgnZmFzdC1nbG9iJyk7XG4gIGNvbnN0IHsgbm9ybWFsaXplUGF0aCB9ID0gcmVxdWlyZSgndml0ZScpO1xuXG4gIGNvbnN0IHByb2plY3RSb290ID0gbm9ybWFsaXplUGF0aChcbiAgICBwYXRoLnJlc29sdmUob3B0aW9ucy53b3Jrc3BhY2VSb290LCBvcHRpb25zLnByb2plY3RSb290KVxuICApO1xuICBjb25zdCBnbG9icyA9IFsuLi5vcHRpb25zLmluY2x1ZGUubWFwKChnbG9iKSA9PiBgJHtwcm9qZWN0Um9vdH0vJHtnbG9ifWApXTtcblxuICByZXR1cm4gZmcuc3luYyhnbG9icywge1xuICAgIGRvdDogdHJ1ZSxcbiAgICBpZ25vcmU6IG9wdGlvbnMuZXhjbHVkZSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRW50cnlQb2ludHMoe1xuICBwcm9qZWN0Um9vdCxcbiAgdGVzdEZpbGVzLFxuICBjb250ZXh0LFxuICBhbmd1bGFyVmVyc2lvbixcbn06IHtcbiAgcHJvamVjdFJvb3Q6IHN0cmluZztcbiAgdGVzdEZpbGVzOiBzdHJpbmdbXTtcbiAgY29udGV4dDogYW55O1xuICBhbmd1bGFyVmVyc2lvbjogbnVtYmVyO1xufSkge1xuICBpZiAoYW5ndWxhclZlcnNpb24gPCAxOSkge1xuICAgIHJldHVybiB0ZXN0RmlsZXM7XG4gIH1cblxuICBjb25zdCBzZWVuID0gbmV3IFNldCgpO1xuXG4gIHJldHVybiBuZXcgTWFwKFxuICAgIEFycmF5LmZyb20odGVzdEZpbGVzLCAodGVzdEZpbGUpID0+IHtcbiAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGhcbiAgICAgICAgLnJlbGF0aXZlKFxuICAgICAgICAgIHRlc3RGaWxlLnN0YXJ0c1dpdGgocHJvamVjdFJvb3QpXG4gICAgICAgICAgICA/IHByb2plY3RSb290XG4gICAgICAgICAgICA6IGNvbnRleHQud29ya3NwYWNlUm9vdCxcbiAgICAgICAgICB0ZXN0RmlsZVxuICAgICAgICApXG4gICAgICAgIC5yZXBsYWNlKC9eWy4vXSsvLCAnXycpXG4gICAgICAgIC5yZXBsYWNlKC9cXC8vZywgJy0nKTtcblxuICAgICAgbGV0IHVuaXF1ZU5hbWUgPSBgc3BlYy0ke3BhdGguYmFzZW5hbWUoXG4gICAgICAgIHJlbGF0aXZlUGF0aCxcbiAgICAgICAgcGF0aC5leHRuYW1lKHJlbGF0aXZlUGF0aClcbiAgICAgICl9YDtcbiAgICAgIGxldCBzdWZmaXggPSAyO1xuICAgICAgd2hpbGUgKHNlZW4uaGFzKHVuaXF1ZU5hbWUpKSB7XG4gICAgICAgIHVuaXF1ZU5hbWUgPSBgJHtyZWxhdGl2ZVBhdGh9LSR7c3VmZml4fWA7XG4gICAgICAgICsrc3VmZml4O1xuICAgICAgfVxuICAgICAgc2Vlbi5hZGQodW5pcXVlTmFtZSk7XG5cbiAgICAgIHJldHVybiBbdW5pcXVlTmFtZSwgdGVzdEZpbGVdO1xuICAgIH0pXG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUJ1aWxkZXIodml0ZXN0QXBwbGljYXRpb25CdWlsZGVyKSBhcyB1bmtub3duO1xuIl19
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getExtraArgs = getExtraArgs;
4
+ const architect_1 = require("@angular-devkit/architect");
5
+ async function vitestBuilder(options, context) {
6
+ process.env['TEST'] = 'true';
7
+ process.env['VITEST'] = 'true';
8
+ const { startVitest } = await Function('return import("vitest/node")')();
9
+ const projectConfig = await context.getProjectMetadata(context.target);
10
+ const extraArgs = await getExtraArgs(options);
11
+ const config = {
12
+ root: `${projectConfig['root'] || '.'}`,
13
+ watch: options.watch === true,
14
+ config: options.configFile,
15
+ ...extraArgs,
16
+ };
17
+ const server = await startVitest('test', options.testFiles ?? [], config);
18
+ let hasErrors = false;
19
+ const processExit = () => {
20
+ server?.exit();
21
+ if (hasErrors) {
22
+ process.exit(1);
23
+ }
24
+ else {
25
+ process.exit(0);
26
+ }
27
+ };
28
+ if (options.watch) {
29
+ process.on('SIGINT', processExit);
30
+ process.on('SIGTERM', processExit);
31
+ process.on('exit', processExit);
32
+ }
33
+ // vitest sets the exitCode = 1 when code coverage isn't met
34
+ hasErrors = (process.exitCode && process.exitCode !== 0);
35
+ return {
36
+ success: !hasErrors,
37
+ };
38
+ }
39
+ async function getExtraArgs(options) {
40
+ // support passing extra args to Vitest CLI
41
+ const schema = await Promise.resolve().then(() => require('./schema.json'));
42
+ const extraArgs = {};
43
+ for (const key of Object.keys(options)) {
44
+ if (!schema.properties[key]) {
45
+ extraArgs[key] = options[key];
46
+ }
47
+ }
48
+ return extraArgs;
49
+ }
50
+ exports.default = (0, architect_1.createBuilder)(vitestBuilder);
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL2J1aWxkZXJzL3Rlc3Qvdml0ZXN0LmltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF5REEsb0NBYUM7QUF0RUQseURBSW1DO0FBSW5DLEtBQUssVUFBVSxhQUFhLENBQzFCLE9BQXFCLEVBQ3JCLE9BQXVCO0lBRXZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBRS9CLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFPLFFBQVEsQ0FDckMsOEJBQThCLENBQy9CLEVBQTRDLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQ3BELE9BQU8sQ0FBQyxNQUEyQixDQUNwQyxDQUFDO0lBQ0YsTUFBTSxTQUFTLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsTUFBTSxNQUFNLEdBQUc7UUFDYixJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFO1FBQ3ZDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUk7UUFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzFCLEdBQUcsU0FBUztLQUNiLENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFMUUsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRXRCLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDZixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBWSxDQUFDO0lBRXBFLE9BQU87UUFDTCxPQUFPLEVBQUUsQ0FBQyxTQUFTO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFlBQVksQ0FDaEMsT0FBcUI7SUFFckIsMkNBQTJDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLDJDQUFhLGVBQWUsRUFBQyxDQUFDO0lBQzdDLE1BQU0sU0FBUyxHQUF3QixFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFFLE1BQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUksT0FBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELGtCQUFlLElBQUEseUJBQWEsRUFBQyxhQUFhLENBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1aWxkZXJDb250ZXh0LFxuICBCdWlsZGVyT3V0cHV0LFxuICBjcmVhdGVCdWlsZGVyLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcblxuaW1wb3J0IHsgVml0ZXN0U2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5hc3luYyBmdW5jdGlvbiB2aXRlc3RCdWlsZGVyKFxuICBvcHRpb25zOiBWaXRlc3RTY2hlbWEsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0XG4pOiBQcm9taXNlPEJ1aWxkZXJPdXRwdXQ+IHtcbiAgcHJvY2Vzcy5lbnZbJ1RFU1QnXSA9ICd0cnVlJztcbiAgcHJvY2Vzcy5lbnZbJ1ZJVEVTVCddID0gJ3RydWUnO1xuXG4gIGNvbnN0IHsgc3RhcnRWaXRlc3QgfSA9IGF3YWl0IChGdW5jdGlvbihcbiAgICAncmV0dXJuIGltcG9ydChcInZpdGVzdC9ub2RlXCIpJ1xuICApKCkgYXMgUHJvbWlzZTx0eXBlb2YgaW1wb3J0KCd2aXRlc3Qvbm9kZScpPik7XG5cbiAgY29uc3QgcHJvamVjdENvbmZpZyA9IGF3YWl0IGNvbnRleHQuZ2V0UHJvamVjdE1ldGFkYXRhKFxuICAgIGNvbnRleHQudGFyZ2V0IGFzIHVua25vd24gYXMgc3RyaW5nXG4gICk7XG4gIGNvbnN0IGV4dHJhQXJncyA9IGF3YWl0IGdldEV4dHJhQXJncyhvcHRpb25zKTtcbiAgY29uc3QgY29uZmlnID0ge1xuICAgIHJvb3Q6IGAke3Byb2plY3RDb25maWdbJ3Jvb3QnXSB8fCAnLid9YCxcbiAgICB3YXRjaDogb3B0aW9ucy53YXRjaCA9PT0gdHJ1ZSxcbiAgICBjb25maWc6IG9wdGlvbnMuY29uZmlnRmlsZSxcbiAgICAuLi5leHRyYUFyZ3MsXG4gIH07XG5cbiAgY29uc3Qgc2VydmVyID0gYXdhaXQgc3RhcnRWaXRlc3QoJ3Rlc3QnLCBvcHRpb25zLnRlc3RGaWxlcyA/PyBbXSwgY29uZmlnKTtcblxuICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG5cbiAgY29uc3QgcHJvY2Vzc0V4aXQgPSAoKSA9PiB7XG4gICAgc2VydmVyPy5leGl0KCk7XG4gICAgaWYgKGhhc0Vycm9ycykge1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICB9O1xuXG4gIGlmIChvcHRpb25zLndhdGNoKSB7XG4gICAgcHJvY2Vzcy5vbignU0lHSU5UJywgcHJvY2Vzc0V4aXQpO1xuICAgIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCBwcm9jZXNzRXhpdCk7XG4gICAgcHJvY2Vzcy5vbignZXhpdCcsIHByb2Nlc3NFeGl0KTtcbiAgfVxuXG4gIC8vIHZpdGVzdCBzZXRzIHRoZSBleGl0Q29kZSA9IDEgd2hlbiBjb2RlIGNvdmVyYWdlIGlzbid0IG1ldFxuICBoYXNFcnJvcnMgPSAocHJvY2Vzcy5leGl0Q29kZSAmJiBwcm9jZXNzLmV4aXRDb2RlICE9PSAwKSBhcyBib29sZWFuO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogIWhhc0Vycm9ycyxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhQXJncyhcbiAgb3B0aW9uczogVml0ZXN0U2NoZW1hXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgLy8gc3VwcG9ydCBwYXNzaW5nIGV4dHJhIGFyZ3MgdG8gVml0ZXN0IENMSVxuICBjb25zdCBzY2hlbWEgPSBhd2FpdCBpbXBvcnQoJy4vc2NoZW1hLmpzb24nKTtcbiAgY29uc3QgZXh0cmFBcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9wdGlvbnMpKSB7XG4gICAgaWYgKCEoc2NoZW1hIGFzIGFueSkucHJvcGVydGllc1trZXldKSB7XG4gICAgICBleHRyYUFyZ3Nba2V5XSA9IChvcHRpb25zIGFzIGFueSlba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXh0cmFBcmdzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVCdWlsZGVyKHZpdGVzdEJ1aWxkZXIpIGFzIGFueTtcbiJdfQ==
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getExtraArgs = getExtraArgs;
4
- const architect_1 = require("@angular-devkit/architect");
5
- async function vitestBuilder(options, context) {
6
- process.env['TEST'] = 'true';
7
- process.env['VITEST'] = 'true';
8
- const { startVitest } = await Function('return import("vitest/node")')();
9
- const projectConfig = await context.getProjectMetadata(context.target);
10
- const extraArgs = await getExtraArgs(options);
11
- const config = {
12
- root: `${projectConfig['root'] || '.'}`,
13
- watch: options.watch === true,
14
- config: options.configFile,
15
- ...extraArgs,
16
- };
17
- const server = await startVitest('test', options.testFiles ?? [], config);
18
- let hasErrors = false;
19
- const processExit = () => {
20
- server?.exit();
21
- if (hasErrors) {
22
- process.exit(1);
23
- }
24
- else {
25
- process.exit(0);
26
- }
27
- };
28
- if (options.watch) {
29
- process.on('SIGINT', processExit);
30
- process.on('SIGTERM', processExit);
31
- process.on('exit', processExit);
32
- }
33
- // vitest sets the exitCode = 1 when code coverage isn't met
34
- hasErrors = (process.exitCode && process.exitCode !== 0);
35
- return {
36
- success: !hasErrors,
37
- };
38
- }
39
- async function getExtraArgs(options) {
40
- // support passing extra args to Vitest CLI
41
- const schema = await Promise.resolve().then(() => require('./schema.json'));
42
- const extraArgs = {};
43
- for (const key of Object.keys(options)) {
44
- if (!schema.properties[key]) {
45
- extraArgs[key] = options[key];
46
- }
47
- }
48
- return extraArgs;
49
- }
50
- exports.default = (0, architect_1.createBuilder)(vitestBuilder);
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL3ZpdGVzdC5pbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeURBLG9DQWFDO0FBdEVELHlEQUltQztBQUluQyxLQUFLLFVBQVUsYUFBYSxDQUMxQixPQUFxQixFQUNyQixPQUF1QjtJQUV2QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUUvQixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTyxRQUFRLENBQ3JDLDhCQUE4QixDQUMvQixFQUE0QyxDQUFDO0lBRTlDLE1BQU0sYUFBYSxHQUFHLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUNwRCxPQUFPLENBQUMsTUFBMkIsQ0FDcEMsQ0FBQztJQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRTtRQUN2QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJO1FBQzdCLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVTtRQUMxQixHQUFHLFNBQVM7S0FDYixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTFFLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztJQUV0QixNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7UUFDdkIsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2YsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNuQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsNERBQTREO0lBQzVELFNBQVMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQVksQ0FBQztJQUVwRSxPQUFPO1FBQ0wsT0FBTyxFQUFFLENBQUMsU0FBUztLQUNwQixDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxZQUFZLENBQ2hDLE9BQXFCO0lBRXJCLDJDQUEyQztJQUMzQyxNQUFNLE1BQU0sR0FBRywyQ0FBYSxlQUFlLEVBQUMsQ0FBQztJQUM3QyxNQUFNLFNBQVMsR0FBd0IsRUFBRSxDQUFDO0lBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBRSxNQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFJLE9BQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxrQkFBZSxJQUFBLHlCQUFhLEVBQUMsYUFBYSxDQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCdWlsZGVyQ29udGV4dCxcbiAgQnVpbGRlck91dHB1dCxcbiAgY3JlYXRlQnVpbGRlcixcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2FyY2hpdGVjdCc7XG5cbmltcG9ydCB7IFZpdGVzdFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcblxuYXN5bmMgZnVuY3Rpb24gdml0ZXN0QnVpbGRlcihcbiAgb3B0aW9uczogVml0ZXN0U2NoZW1hLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dFxuKTogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PiB7XG4gIHByb2Nlc3MuZW52WydURVNUJ10gPSAndHJ1ZSc7XG4gIHByb2Nlc3MuZW52WydWSVRFU1QnXSA9ICd0cnVlJztcblxuICBjb25zdCB7IHN0YXJ0Vml0ZXN0IH0gPSBhd2FpdCAoRnVuY3Rpb24oXG4gICAgJ3JldHVybiBpbXBvcnQoXCJ2aXRlc3Qvbm9kZVwiKSdcbiAgKSgpIGFzIFByb21pc2U8dHlwZW9mIGltcG9ydCgndml0ZXN0L25vZGUnKT4pO1xuXG4gIGNvbnN0IHByb2plY3RDb25maWcgPSBhd2FpdCBjb250ZXh0LmdldFByb2plY3RNZXRhZGF0YShcbiAgICBjb250ZXh0LnRhcmdldCBhcyB1bmtub3duIGFzIHN0cmluZ1xuICApO1xuICBjb25zdCBleHRyYUFyZ3MgPSBhd2FpdCBnZXRFeHRyYUFyZ3Mob3B0aW9ucyk7XG4gIGNvbnN0IGNvbmZpZyA9IHtcbiAgICByb290OiBgJHtwcm9qZWN0Q29uZmlnWydyb290J10gfHwgJy4nfWAsXG4gICAgd2F0Y2g6IG9wdGlvbnMud2F0Y2ggPT09IHRydWUsXG4gICAgY29uZmlnOiBvcHRpb25zLmNvbmZpZ0ZpbGUsXG4gICAgLi4uZXh0cmFBcmdzLFxuICB9O1xuXG4gIGNvbnN0IHNlcnZlciA9IGF3YWl0IHN0YXJ0Vml0ZXN0KCd0ZXN0Jywgb3B0aW9ucy50ZXN0RmlsZXMgPz8gW10sIGNvbmZpZyk7XG5cbiAgbGV0IGhhc0Vycm9ycyA9IGZhbHNlO1xuXG4gIGNvbnN0IHByb2Nlc3NFeGl0ID0gKCkgPT4ge1xuICAgIHNlcnZlcj8uZXhpdCgpO1xuICAgIGlmIChoYXNFcnJvcnMpIHtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cbiAgfTtcblxuICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsIHByb2Nlc3NFeGl0KTtcbiAgICBwcm9jZXNzLm9uKCdTSUdURVJNJywgcHJvY2Vzc0V4aXQpO1xuICAgIHByb2Nlc3Mub24oJ2V4aXQnLCBwcm9jZXNzRXhpdCk7XG4gIH1cblxuICAvLyB2aXRlc3Qgc2V0cyB0aGUgZXhpdENvZGUgPSAxIHdoZW4gY29kZSBjb3ZlcmFnZSBpc24ndCBtZXRcbiAgaGFzRXJyb3JzID0gKHByb2Nlc3MuZXhpdENvZGUgJiYgcHJvY2Vzcy5leGl0Q29kZSAhPT0gMCkgYXMgYm9vbGVhbjtcblxuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6ICFoYXNFcnJvcnMsXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFeHRyYUFyZ3MoXG4gIG9wdGlvbnM6IFZpdGVzdFNjaGVtYVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIC8vIHN1cHBvcnQgcGFzc2luZyBleHRyYSBhcmdzIHRvIFZpdGVzdCBDTElcbiAgY29uc3Qgc2NoZW1hID0gYXdhaXQgaW1wb3J0KCcuL3NjaGVtYS5qc29uJyk7XG4gIGNvbnN0IGV4dHJhQXJnczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvcHRpb25zKSkge1xuICAgIGlmICghKHNjaGVtYSBhcyBhbnkpLnByb3BlcnRpZXNba2V5XSkge1xuICAgICAgZXh0cmFBcmdzW2tleV0gPSAob3B0aW9ucyBhcyBhbnkpW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dHJhQXJncztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcih2aXRlc3RCdWlsZGVyKSBhcyBhbnk7XG4iXX0=