@analogjs/vitest-angular 3.0.0-alpha.1 → 3.0.0-alpha.11

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.
Files changed (62) hide show
  1. package/README.md +2 -2
  2. package/_virtual/_@oxc-project_runtime@0.120.0/helpers/decorate.js +9 -0
  3. package/package.json +8 -8
  4. package/setup-snapshots.d.ts +18 -18
  5. package/setup-snapshots.js +71 -95
  6. package/setup-snapshots.js.map +1 -0
  7. package/setup-testbed.d.ts +12 -5
  8. package/setup-testbed.js +23 -24
  9. package/setup-testbed.js.map +1 -0
  10. package/setup-zone.d.ts +6 -5
  11. package/setup-zone.js +90 -105
  12. package/setup-zone.js.map +1 -0
  13. package/src/index.d.ts +2 -2
  14. package/src/index.js +3 -4
  15. package/src/lib/builders/build/devkit.d.ts +2 -2
  16. package/src/lib/builders/build/devkit.js +23 -17
  17. package/src/lib/builders/build/devkit.js.map +1 -0
  18. package/src/lib/builders/build/plugins/angular-memory-plugin.d.ts +13 -20
  19. package/src/lib/builders/build/plugins/angular-memory-plugin.js +51 -77
  20. package/src/lib/builders/build/plugins/angular-memory-plugin.js.map +1 -0
  21. package/src/lib/builders/build/plugins/downlevel-plugin.d.ts +10 -0
  22. package/src/lib/builders/build/plugins/downlevel-plugin.js +24 -0
  23. package/src/lib/builders/build/plugins/downlevel-plugin.js.map +1 -0
  24. package/src/lib/builders/build/schema.js +53 -0
  25. package/src/lib/builders/build/schema.js.map +1 -0
  26. package/src/lib/builders/build/schema.json +44 -44
  27. package/src/lib/builders/build/utils.d.ts +3 -3
  28. package/src/lib/builders/build/vitest.impl.d.ts +5 -5
  29. package/src/lib/builders/build/vitest.impl.js +154 -190
  30. package/src/lib/builders/build/vitest.impl.js.map +1 -0
  31. package/src/lib/builders/test/schema.js +51 -0
  32. package/src/lib/builders/test/schema.js.map +1 -0
  33. package/src/lib/builders/test/schema.json +44 -44
  34. package/src/lib/builders/test/vitest.impl.d.ts +1 -1
  35. package/src/lib/builders/test/vitest.impl.js +48 -58
  36. package/src/lib/builders/test/vitest.impl.js.map +1 -0
  37. package/src/lib/tools/package.json +1 -5
  38. package/src/lib/tools/src/index.d.ts +1 -1
  39. package/src/lib/tools/src/index.js +3 -6
  40. package/src/lib/tools/src/schematics/setup/index.d.ts +2 -2
  41. package/src/lib/tools/src/schematics/setup/index.js +46 -71
  42. package/src/lib/tools/src/schematics/setup/index.js.map +1 -1
  43. package/src/lib/tools/src/schematics/utils/angular.d.ts +1 -1
  44. package/src/lib/tools/src/schematics/utils/angular.js +16 -22
  45. package/src/lib/tools/src/schematics/utils/angular.js.map +1 -1
  46. package/src/lib/tools/src/schematics/utils/dependencies.d.ts +2 -2
  47. package/src/lib/tools/src/schematics/utils/dependencies.js +34 -44
  48. package/src/lib/tools/src/schematics/utils/dependencies.js.map +1 -1
  49. package/src/lib/tools/src/schematics/utils/index.d.ts +4 -4
  50. package/src/lib/tools/src/schematics/utils/index.js +4 -8
  51. package/src/lib/tools/src/schematics/utils/versions.d.ts +1 -1
  52. package/src/lib/tools/src/schematics/utils/versions.js +17 -12
  53. package/src/lib/tools/src/schematics/utils/versions.js.map +1 -1
  54. package/src/lib/tools/src/schematics/utils/workspace.d.ts +8 -8
  55. package/src/lib/tools/src/schematics/utils/workspace.js +14 -17
  56. package/src/lib/tools/src/schematics/utils/workspace.js.map +1 -1
  57. package/src/lib/tools/src/test-global-setup.d.ts +1 -0
  58. package/src/lib/builders/build/plugins/esbuild-downlevel-plugin.d.ts +0 -7
  59. package/src/lib/builders/build/plugins/esbuild-downlevel-plugin.js +0 -23
  60. package/src/lib/builders/build/utils.js +0 -1
  61. package/src/lib/tools/src/index.js.map +0 -1
  62. package/src/lib/tools/src/schematics/utils/index.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ var schema_default = {
2
+ version: 2,
3
+ cli: "nx",
4
+ title: "Vitest Builder for Angular",
5
+ description: "Run unit tests using Vitest.",
6
+ type: "object",
7
+ properties: {
8
+ "configFile": {
9
+ "type": "string",
10
+ "description": "The path to the local vitest config",
11
+ "x-completion-type": "file",
12
+ "x-completion-glob": "@(vitest|vite).config@(.js|.ts)",
13
+ "aliases": ["config"]
14
+ },
15
+ "reportsDirectory": {
16
+ "type": "string",
17
+ "description": "Directory to write coverage report to."
18
+ },
19
+ "mode": {
20
+ "type": "string",
21
+ "description": "Mode for Vite."
22
+ },
23
+ "testFiles": {
24
+ "aliases": ["testFile"],
25
+ "type": "array",
26
+ "items": { "type": "string" }
27
+ },
28
+ "watch": {
29
+ "description": "Watch files for changes and rerun tests related to changed files.",
30
+ "type": "boolean"
31
+ },
32
+ "ui": {
33
+ "description": "Run tests using Vitest UI Mode.",
34
+ "type": "boolean"
35
+ },
36
+ "coverage": {
37
+ "description": "Enable code coverage analysis.",
38
+ "type": "boolean"
39
+ },
40
+ "update": {
41
+ "description": "Update snapshot.",
42
+ "type": "boolean",
43
+ "aliases": ["u"]
44
+ }
45
+ },
46
+ required: []
47
+ };
48
+ //#endregion
49
+ export { schema_default as default };
50
+
51
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../../../../../../../packages/vitest-angular/src/lib/builders/test/schema.json"],"sourcesContent":["{\n \"version\": 2,\n \"cli\": \"nx\",\n \"title\": \"Vitest Builder for Angular\",\n \"description\": \"Run unit tests using Vitest.\",\n \"type\": \"object\",\n \"properties\": {\n \"configFile\": {\n \"type\": \"string\",\n \"description\": \"The path to the local vitest config\",\n \"x-completion-type\": \"file\",\n \"x-completion-glob\": \"@(vitest|vite).config@(.js|.ts)\",\n \"aliases\": [\"config\"]\n },\n \"reportsDirectory\": {\n \"type\": \"string\",\n \"description\": \"Directory to write coverage report to.\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"description\": \"Mode for Vite.\"\n },\n \"testFiles\": {\n \"aliases\": [\"testFile\"],\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n },\n \"watch\": {\n \"description\": \"Watch files for changes and rerun tests related to changed files.\",\n \"type\": \"boolean\"\n },\n \"ui\": {\n \"description\": \"Run tests using Vitest UI Mode.\",\n \"type\": \"boolean\"\n },\n \"coverage\": {\n \"description\": \"Enable code coverage analysis.\",\n \"type\": \"boolean\"\n },\n \"update\": {\n \"description\": \"Update snapshot.\",\n \"type\": \"boolean\",\n \"aliases\": [\"u\"]\n }\n },\n \"required\": []\n}\n"],"mappings":""}
@@ -1,47 +1,47 @@
1
1
  {
2
- "version": 2,
3
- "cli": "nx",
4
- "title": "Vitest Builder for Angular",
5
- "description": "Run unit tests using Vitest.",
6
- "type": "object",
7
- "properties": {
8
- "configFile": {
9
- "type": "string",
10
- "description": "The path to the local vitest config",
11
- "x-completion-type": "file",
12
- "x-completion-glob": "@(vitest|vite).config@(.js|.ts)",
13
- "aliases": ["config"]
14
- },
15
- "reportsDirectory": {
16
- "type": "string",
17
- "description": "Directory to write coverage report to."
18
- },
19
- "mode": {
20
- "type": "string",
21
- "description": "Mode for Vite."
22
- },
23
- "testFiles": {
24
- "aliases": ["testFile"],
25
- "type": "array",
26
- "items": { "type": "string" }
27
- },
28
- "watch": {
29
- "description": "Watch files for changes and rerun tests related to changed files.",
30
- "type": "boolean"
31
- },
32
- "ui": {
33
- "description": "Run tests using Vitest UI Mode.",
34
- "type": "boolean"
35
- },
36
- "coverage": {
37
- "description": "Enable code coverage analysis.",
38
- "type": "boolean"
39
- },
40
- "update": {
41
- "description": "Update snapshot.",
42
- "type": "boolean",
43
- "aliases": ["u"]
44
- }
2
+ "version": 2,
3
+ "cli": "nx",
4
+ "title": "Vitest Builder for Angular",
5
+ "description": "Run unit tests using Vitest.",
6
+ "type": "object",
7
+ "properties": {
8
+ "configFile": {
9
+ "type": "string",
10
+ "description": "The path to the local vitest config",
11
+ "x-completion-type": "file",
12
+ "x-completion-glob": "@(vitest|vite).config@(.js|.ts)",
13
+ "aliases": ["config"]
45
14
  },
46
- "required": []
15
+ "reportsDirectory": {
16
+ "type": "string",
17
+ "description": "Directory to write coverage report to."
18
+ },
19
+ "mode": {
20
+ "type": "string",
21
+ "description": "Mode for Vite."
22
+ },
23
+ "testFiles": {
24
+ "aliases": ["testFile"],
25
+ "type": "array",
26
+ "items": { "type": "string" }
27
+ },
28
+ "watch": {
29
+ "description": "Watch files for changes and rerun tests related to changed files.",
30
+ "type": "boolean"
31
+ },
32
+ "ui": {
33
+ "description": "Run tests using Vitest UI Mode.",
34
+ "type": "boolean"
35
+ },
36
+ "coverage": {
37
+ "description": "Enable code coverage analysis.",
38
+ "type": "boolean"
39
+ },
40
+ "update": {
41
+ "description": "Update snapshot.",
42
+ "type": "boolean",
43
+ "aliases": ["u"]
44
+ }
45
+ },
46
+ "required": []
47
47
  }
@@ -1,4 +1,4 @@
1
- import { VitestSchema } from './schema';
1
+ import { VitestSchema } from "./schema";
2
2
  export declare function getExtraArgs(options: VitestSchema): Promise<Record<string, any>>;
3
3
  declare const _default: any;
4
4
  export default _default;
@@ -1,61 +1,51 @@
1
- import { createBuilder, } from '@angular-devkit/architect';
1
+ import { createBuilder } from "@angular-devkit/architect";
2
+ //#region packages/vitest-angular/src/lib/builders/test/vitest.impl.ts
2
3
  async function vitestBuilder(options, context) {
3
- process.env['TEST'] = 'true';
4
- process.env['VITEST'] = 'true';
5
- const { startVitest } = await Function('return import("vitest/node")')();
6
- const projectConfig = await context.getProjectMetadata(context.target);
7
- const { coverageArgs, ...extraArgs } = await getExtraArgs(options);
8
- const watch = options.watch === true;
9
- const ui = options.ui === true;
10
- const coverageEnabled = options.coverage === true;
11
- const update = options.update === true;
12
- const config = {
13
- root: `${projectConfig['root'] || '.'}`,
14
- watch,
15
- ui,
16
- config: options.configFile,
17
- coverage: {
18
- enabled: coverageEnabled,
19
- ...coverageArgs,
20
- },
21
- update,
22
- ...extraArgs,
23
- };
24
- const viteOverrides = {
25
- test: { watch },
26
- };
27
- const server = await startVitest('test', options.testFiles ?? [], config, viteOverrides);
28
- let hasErrors = false;
29
- const processExit = () => {
30
- server?.exit();
31
- if (hasErrors) {
32
- process.exit(1);
33
- }
34
- else {
35
- process.exit(0);
36
- }
37
- };
38
- if (options.watch) {
39
- process.on('SIGINT', processExit);
40
- process.on('SIGTERM', processExit);
41
- process.on('exit', processExit);
42
- }
43
- // vitest sets the exitCode = 1 when code coverage isn't met
44
- hasErrors = (process.exitCode && process.exitCode !== 0);
45
- return {
46
- success: !hasErrors,
47
- };
4
+ process.env["TEST"] = "true";
5
+ process.env["VITEST"] = "true";
6
+ const { startVitest } = await Function("return import(\"vitest/node\")")();
7
+ const projectConfig = await context.getProjectMetadata(context.target);
8
+ const { coverageArgs, ...extraArgs } = await getExtraArgs(options);
9
+ const watch = options.watch === true;
10
+ const ui = options.ui === true;
11
+ const coverageEnabled = options.coverage === true;
12
+ const update = options.update === true;
13
+ const config = {
14
+ root: `${projectConfig["root"] || "."}`,
15
+ watch,
16
+ ui,
17
+ config: options.configFile,
18
+ coverage: {
19
+ enabled: coverageEnabled,
20
+ ...coverageArgs
21
+ },
22
+ update,
23
+ ...extraArgs
24
+ };
25
+ const viteOverrides = { test: { watch } };
26
+ const server = await startVitest("test", options.testFiles ?? [], config, viteOverrides);
27
+ let hasErrors = false;
28
+ const processExit = () => {
29
+ server?.exit();
30
+ if (hasErrors) process.exit(1);
31
+ else process.exit(0);
32
+ };
33
+ if (options.watch) {
34
+ process.once("SIGINT", processExit);
35
+ process.once("SIGTERM", processExit);
36
+ process.once("exit", processExit);
37
+ }
38
+ hasErrors = process.exitCode && process.exitCode !== 0;
39
+ return { success: !hasErrors };
48
40
  }
49
- export async function getExtraArgs(options) {
50
- // support passing extra args to Vitest CLI
51
- const schema = await import('./schema.json', { with: { type: 'json' } });
52
- const extraArgs = {};
53
- for (const key of Object.keys(options)) {
54
- if (!schema.default.properties[key]) {
55
- extraArgs[key] = options[key];
56
- }
57
- }
58
- return extraArgs;
41
+ async function getExtraArgs(options) {
42
+ const schema = await import("./schema.json", { with: { type: "json" } });
43
+ const extraArgs = {};
44
+ for (const key of Object.keys(options)) if (!schema.default.properties[key]) extraArgs[key] = options[key];
45
+ return extraArgs;
59
46
  }
60
- export default createBuilder(vitestBuilder);
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL2J1aWxkZXJzL3Rlc3Qvdml0ZXN0LmltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGFBQWEsR0FDZCxNQUFNLDJCQUEyQixDQUFDO0FBSW5DLEtBQUssVUFBVSxhQUFhLENBQzFCLE9BQXFCLEVBQ3JCLE9BQXVCO0lBRXZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBRS9CLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFPLFFBQVEsQ0FDckMsOEJBQThCLENBQy9CLEVBQTRDLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQ3BELE9BQU8sQ0FBQyxNQUEyQixDQUNwQyxDQUFDO0lBQ0YsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDO0lBQy9CLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQ2xELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRTtRQUN2QyxLQUFLO1FBQ0wsRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVTtRQUMxQixRQUFRLEVBQUU7WUFDUixPQUFPLEVBQUUsZUFBZTtZQUN4QixHQUFHLFlBQVk7U0FDaEI7UUFDRCxNQUFNO1FBQ04sR0FBRyxTQUFTO0tBQ2IsQ0FBQztJQUNGLE1BQU0sYUFBYSxHQUFRO1FBQ3pCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRTtLQUNoQixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQzlCLE1BQU0sRUFDTixPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFDdkIsTUFBTSxFQUNOLGFBQWEsQ0FDZCxDQUFDO0lBRUYsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRXRCLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDZixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBWSxDQUFDO0lBRXBFLE9BQU87UUFDTCxPQUFPLEVBQUUsQ0FBQyxTQUFTO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQ2hDLE9BQXFCO0lBRXJCLDJDQUEyQztJQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sU0FBUyxHQUF3QixFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFFLE1BQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFJLE9BQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxlQUFlLGFBQWEsQ0FBQyxhQUFhLENBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1aWxkZXJDb250ZXh0LFxuICBCdWlsZGVyT3V0cHV0LFxuICBjcmVhdGVCdWlsZGVyLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcblxuaW1wb3J0IHsgVml0ZXN0U2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5hc3luYyBmdW5jdGlvbiB2aXRlc3RCdWlsZGVyKFxuICBvcHRpb25zOiBWaXRlc3RTY2hlbWEsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuKTogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PiB7XG4gIHByb2Nlc3MuZW52WydURVNUJ10gPSAndHJ1ZSc7XG4gIHByb2Nlc3MuZW52WydWSVRFU1QnXSA9ICd0cnVlJztcblxuICBjb25zdCB7IHN0YXJ0Vml0ZXN0IH0gPSBhd2FpdCAoRnVuY3Rpb24oXG4gICAgJ3JldHVybiBpbXBvcnQoXCJ2aXRlc3Qvbm9kZVwiKScsXG4gICkoKSBhcyBQcm9taXNlPHR5cGVvZiBpbXBvcnQoJ3ZpdGVzdC9ub2RlJyk+KTtcblxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgY29udGV4dC5nZXRQcm9qZWN0TWV0YWRhdGEoXG4gICAgY29udGV4dC50YXJnZXQgYXMgdW5rbm93biBhcyBzdHJpbmcsXG4gICk7XG4gIGNvbnN0IHsgY292ZXJhZ2VBcmdzLCAuLi5leHRyYUFyZ3MgfSA9IGF3YWl0IGdldEV4dHJhQXJncyhvcHRpb25zKTtcbiAgY29uc3Qgd2F0Y2ggPSBvcHRpb25zLndhdGNoID09PSB0cnVlO1xuICBjb25zdCB1aSA9IG9wdGlvbnMudWkgPT09IHRydWU7XG4gIGNvbnN0IGNvdmVyYWdlRW5hYmxlZCA9IG9wdGlvbnMuY292ZXJhZ2UgPT09IHRydWU7XG4gIGNvbnN0IHVwZGF0ZSA9IG9wdGlvbnMudXBkYXRlID09PSB0cnVlO1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgcm9vdDogYCR7cHJvamVjdENvbmZpZ1sncm9vdCddIHx8ICcuJ31gLFxuICAgIHdhdGNoLFxuICAgIHVpLFxuICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWdGaWxlLFxuICAgIGNvdmVyYWdlOiB7XG4gICAgICBlbmFibGVkOiBjb3ZlcmFnZUVuYWJsZWQsXG4gICAgICAuLi5jb3ZlcmFnZUFyZ3MsXG4gICAgfSxcbiAgICB1cGRhdGUsXG4gICAgLi4uZXh0cmFBcmdzLFxuICB9O1xuICBjb25zdCB2aXRlT3ZlcnJpZGVzOiBhbnkgPSB7XG4gICAgdGVzdDogeyB3YXRjaCB9LFxuICB9O1xuXG4gIGNvbnN0IHNlcnZlciA9IGF3YWl0IHN0YXJ0Vml0ZXN0KFxuICAgICd0ZXN0JyxcbiAgICBvcHRpb25zLnRlc3RGaWxlcyA/PyBbXSxcbiAgICBjb25maWcsXG4gICAgdml0ZU92ZXJyaWRlcyxcbiAgKTtcblxuICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG5cbiAgY29uc3QgcHJvY2Vzc0V4aXQgPSAoKSA9PiB7XG4gICAgc2VydmVyPy5leGl0KCk7XG4gICAgaWYgKGhhc0Vycm9ycykge1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICB9O1xuXG4gIGlmIChvcHRpb25zLndhdGNoKSB7XG4gICAgcHJvY2Vzcy5vbignU0lHSU5UJywgcHJvY2Vzc0V4aXQpO1xuICAgIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCBwcm9jZXNzRXhpdCk7XG4gICAgcHJvY2Vzcy5vbignZXhpdCcsIHByb2Nlc3NFeGl0KTtcbiAgfVxuXG4gIC8vIHZpdGVzdCBzZXRzIHRoZSBleGl0Q29kZSA9IDEgd2hlbiBjb2RlIGNvdmVyYWdlIGlzbid0IG1ldFxuICBoYXNFcnJvcnMgPSAocHJvY2Vzcy5leGl0Q29kZSAmJiBwcm9jZXNzLmV4aXRDb2RlICE9PSAwKSBhcyBib29sZWFuO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogIWhhc0Vycm9ycyxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhQXJncyhcbiAgb3B0aW9uczogVml0ZXN0U2NoZW1hLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIC8vIHN1cHBvcnQgcGFzc2luZyBleHRyYSBhcmdzIHRvIFZpdGVzdCBDTElcbiAgY29uc3Qgc2NoZW1hID0gYXdhaXQgaW1wb3J0KCcuL3NjaGVtYS5qc29uJywgeyB3aXRoOiB7IHR5cGU6ICdqc29uJyB9IH0pO1xuICBjb25zdCBleHRyYUFyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3B0aW9ucykpIHtcbiAgICBpZiAoIShzY2hlbWEgYXMgYW55KS5kZWZhdWx0LnByb3BlcnRpZXNba2V5XSkge1xuICAgICAgZXh0cmFBcmdzW2tleV0gPSAob3B0aW9ucyBhcyBhbnkpW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dHJhQXJncztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcih2aXRlc3RCdWlsZGVyKSBhcyBhbnk7XG4iXX0=
47
+ var vitest_impl_default = createBuilder(vitestBuilder);
48
+ //#endregion
49
+ export { vitest_impl_default as default };
50
+
51
+ //# sourceMappingURL=vitest.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.impl.js","names":[],"sources":["../../../../../../../packages/vitest-angular/src/lib/builders/test/vitest.impl.ts"],"sourcesContent":["import {\n BuilderContext,\n BuilderOutput,\n createBuilder,\n} from '@angular-devkit/architect';\n\nimport { VitestSchema } from './schema';\n\nasync function vitestBuilder(\n options: VitestSchema,\n context: BuilderContext,\n): Promise<BuilderOutput> {\n process.env['TEST'] = 'true';\n process.env['VITEST'] = 'true';\n\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")',\n )() as Promise<typeof import('vitest/node')>);\n\n const projectConfig = await context.getProjectMetadata(\n context.target as unknown as string,\n );\n const { coverageArgs, ...extraArgs } = await getExtraArgs(options);\n const watch = options.watch === true;\n const ui = options.ui === true;\n const coverageEnabled = options.coverage === true;\n const update = options.update === true;\n const config = {\n root: `${projectConfig['root'] || '.'}`,\n watch,\n ui,\n config: options.configFile,\n coverage: {\n enabled: coverageEnabled,\n ...coverageArgs,\n },\n update,\n ...extraArgs,\n };\n const viteOverrides: any = {\n test: { watch },\n };\n\n const server = await startVitest(\n 'test',\n options.testFiles ?? [],\n config,\n viteOverrides,\n );\n\n let hasErrors = false;\n\n const processExit = () => {\n server?.exit();\n if (hasErrors) {\n process.exit(1);\n } else {\n process.exit(0);\n }\n };\n\n // .once() prevents listener stacking across repeated Nx executor runs\n // that share the same host process (avoids MaxListenersExceededWarning).\n if (options.watch) {\n process.once('SIGINT', processExit);\n process.once('SIGTERM', processExit);\n process.once('exit', processExit);\n }\n\n // vitest sets the exitCode = 1 when code coverage isn't met\n hasErrors = (process.exitCode && process.exitCode !== 0) as boolean;\n\n return {\n success: !hasErrors,\n };\n}\n\nexport async function getExtraArgs(\n options: VitestSchema,\n): Promise<Record<string, any>> {\n // support passing extra args to Vitest CLI\n const schema = await import('./schema.json', { with: { type: 'json' } });\n const extraArgs: Record<string, any> = {};\n for (const key of Object.keys(options)) {\n if (!(schema as any).default.properties[key]) {\n extraArgs[key] = (options as any)[key];\n }\n }\n\n return extraArgs;\n}\n\nexport default createBuilder(vitestBuilder) as any;\n"],"mappings":";;AAQA,eAAe,cACb,SACA,SACwB;AACxB,SAAQ,IAAI,UAAU;AACtB,SAAQ,IAAI,YAAY;CAExB,MAAM,EAAE,gBAAgB,MAAO,SAC7B,iCACD,EAAE;CAEH,MAAM,gBAAgB,MAAM,QAAQ,mBAClC,QAAQ,OACT;CACD,MAAM,EAAE,cAAc,GAAG,cAAc,MAAM,aAAa,QAAQ;CAClE,MAAM,QAAQ,QAAQ,UAAU;CAChC,MAAM,KAAK,QAAQ,OAAO;CAC1B,MAAM,kBAAkB,QAAQ,aAAa;CAC7C,MAAM,SAAS,QAAQ,WAAW;CAClC,MAAM,SAAS;EACb,MAAM,GAAG,cAAc,WAAW;EAClC;EACA;EACA,QAAQ,QAAQ;EAChB,UAAU;GACR,SAAS;GACT,GAAG;GACJ;EACD;EACA,GAAG;EACJ;CACD,MAAM,gBAAqB,EACzB,MAAM,EAAE,OAAO,EAChB;CAED,MAAM,SAAS,MAAM,YACnB,QACA,QAAQ,aAAa,EAAE,EACvB,QACA,cACD;CAED,IAAI,YAAY;CAEhB,MAAM,oBAAoB;AACxB,UAAQ,MAAM;AACd,MAAI,UACF,SAAQ,KAAK,EAAE;MAEf,SAAQ,KAAK,EAAE;;AAMnB,KAAI,QAAQ,OAAO;AACjB,UAAQ,KAAK,UAAU,YAAY;AACnC,UAAQ,KAAK,WAAW,YAAY;AACpC,UAAQ,KAAK,QAAQ,YAAY;;AAInC,aAAa,QAAQ,YAAY,QAAQ,aAAa;AAEtD,QAAO,EACL,SAAS,CAAC,WACX;;AAGH,eAAsB,aACpB,SAC8B;CAE9B,MAAM,SAAS,MAAM,OAAO,iBAAiB,EAAE,MAAM,EAAE,MAAM,QAAQ,EAAE;CACvE,MAAM,YAAiC,EAAE;AACzC,MAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,CACpC,KAAI,CAAE,OAAe,QAAQ,WAAW,KACtC,WAAU,OAAQ,QAAgB;AAItC,QAAO;;AAGT,IAAA,sBAAe,cAAc,cAAc"}
@@ -1,7 +1,3 @@
1
1
  {
2
- "name": "@analogjs/vitest-angular-tools",
3
- "version": "0.0.1",
4
- "main": "src/index.js",
5
- "types": "./src/index.d.ts",
6
2
  "type": "commonjs"
7
- }
3
+ }
@@ -1 +1 @@
1
- export { setupSchematic } from './schematics/setup/index';
1
+ export { setupSchematic } from "./schematics/setup/index";
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupSchematic = void 0;
4
- var index_1 = require("./schematics/setup/index");
5
- Object.defineProperty(exports, "setupSchematic", { enumerable: true, get: function () { return index_1.setupSchematic; } });
6
- //# sourceMappingURL=index.js.map
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_index = require("./schematics/setup/index.js");
3
+ exports.setupSchematic = require_index.setupSchematic;
@@ -1,3 +1,3 @@
1
- import { Rule } from '@angular-devkit/schematics';
2
- import { Schema } from './schema';
1
+ import { Rule } from "@angular-devkit/schematics";
2
+ import { Schema } from "./schema";
3
3
  export declare function setupSchematic(options: Schema): Rule;
@@ -1,80 +1,55 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupSchematic = setupSchematic;
4
- const schematics_1 = require("@angular-devkit/schematics");
5
- const tasks_1 = require("@angular-devkit/schematics/tasks");
6
- const jsonc_parser_1 = require("jsonc-parser");
7
- const utils_1 = require("../utils");
1
+ const require_angular = require("../utils/angular.js");
2
+ const require_workspace = require("../utils/workspace.js");
3
+ const require_dependencies = require("../utils/dependencies.js");
4
+ require("../utils/index.js");
5
+ let _angular_devkit_schematics = require("@angular-devkit/schematics");
6
+ let _angular_devkit_schematics_tasks = require("@angular-devkit/schematics/tasks");
7
+ let jsonc_parser = require("jsonc-parser");
8
+ //#region packages/vitest-angular-tools/src/schematics/setup/index.ts
8
9
  function updateTsConfigSpec(tree, projectRoot) {
9
- const tsConfigPath = projectRoot
10
- ? `${projectRoot}/tsconfig.spec.json`
11
- : 'tsconfig.spec.json';
12
- if (!tree.exists(tsConfigPath)) {
13
- return;
14
- }
15
- const tsConfigContent = tree.read(tsConfigPath);
16
- if (!tsConfigContent) {
17
- return;
18
- }
19
- const tsConfig = (0, jsonc_parser_1.parse)(tsConfigContent.toString('utf-8'));
20
- tsConfig.compilerOptions = tsConfig.compilerOptions || {};
21
- // Remove module (let Vite handle it)
22
- delete tsConfig.compilerOptions.module;
23
- // Set target to es2022
24
- tsConfig.compilerOptions.target = 'es2022';
25
- // Update types: remove jest, add vitest/globals
26
- const types = tsConfig.compilerOptions.types || ['node'];
27
- const filteredTypes = types.filter((t) => t !== 'jest' && t !== 'jasmine');
28
- if (!filteredTypes.includes('vitest/globals')) {
29
- filteredTypes.push('vitest/globals');
30
- }
31
- tsConfig.compilerOptions.types = filteredTypes;
32
- // Set files to include test-setup.ts
33
- tsConfig.files = ['src/test-setup.ts'];
34
- tree.overwrite(tsConfigPath, JSON.stringify(tsConfig, null, 2) + '\n');
10
+ const tsConfigPath = projectRoot ? `${projectRoot}/tsconfig.spec.json` : "tsconfig.spec.json";
11
+ if (!tree.exists(tsConfigPath)) return;
12
+ const tsConfigContent = tree.read(tsConfigPath);
13
+ if (!tsConfigContent) return;
14
+ const tsConfig = (0, jsonc_parser.parse)(tsConfigContent.toString("utf-8"));
15
+ tsConfig.compilerOptions = tsConfig.compilerOptions || {};
16
+ delete tsConfig.compilerOptions.module;
17
+ tsConfig.compilerOptions.target = "es2022";
18
+ const filteredTypes = (tsConfig.compilerOptions.types || ["node"]).filter((t) => t !== "jest" && t !== "jasmine");
19
+ if (!filteredTypes.includes("vitest/globals")) filteredTypes.push("vitest/globals");
20
+ tsConfig.compilerOptions.types = filteredTypes;
21
+ tsConfig.files = ["src/test-setup.ts"];
22
+ tree.overwrite(tsConfigPath, JSON.stringify(tsConfig, null, 2) + "\n");
35
23
  }
36
24
  function updateAngularJson(tree, projectName) {
37
- const workspace = (0, utils_1.getWorkspace)(tree);
38
- const project = workspace.projects[projectName];
39
- if (!project.architect) {
40
- project.architect = {};
41
- }
42
- project.architect['test'] = {
43
- builder: '@analogjs/vitest-angular:test',
44
- };
45
- tree.overwrite('angular.json', JSON.stringify(workspace, null, 2) + '\n');
25
+ const workspace = require_workspace.getWorkspace(tree);
26
+ const project = workspace.projects[projectName];
27
+ if (!project.architect) project.architect = {};
28
+ project.architect["test"] = { builder: "@analogjs/vitest-angular:test" };
29
+ tree.overwrite("angular.json", JSON.stringify(workspace, null, 2) + "\n");
46
30
  }
47
31
  function generateFiles(projectRoot, majorAngularVersion, isNx, browserMode) {
48
- return (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./files'), [
49
- (0, schematics_1.applyTemplates)({
50
- majorAngularVersion,
51
- isNx,
52
- browserMode,
53
- }),
54
- (0, schematics_1.move)(projectRoot),
55
- ]));
32
+ return (0, _angular_devkit_schematics.mergeWith)((0, _angular_devkit_schematics.apply)((0, _angular_devkit_schematics.url)("./files"), [(0, _angular_devkit_schematics.applyTemplates)({
33
+ majorAngularVersion,
34
+ isNx,
35
+ browserMode
36
+ }), (0, _angular_devkit_schematics.move)(projectRoot)]));
56
37
  }
57
38
  function setupSchematic(options) {
58
- return (tree, context) => {
59
- const angularVersion = (0, utils_1.getAngularVersion)(tree);
60
- const majorAngularVersion = (0, utils_1.getMajorAngularVersion)(angularVersion);
61
- const workspace = (0, utils_1.getWorkspace)(tree);
62
- const project = (0, utils_1.getProject)(workspace, options.project);
63
- const projectRoot = project.root || '';
64
- const isNx = (0, utils_1.isNxWorkspace)(tree);
65
- const browserMode = options.browserMode ?? false;
66
- // Add devDependencies
67
- (0, utils_1.addDevDependencies)(tree, angularVersion, { browserMode });
68
- // Update tsconfig.spec.json (if exists)
69
- updateTsConfigSpec(tree, projectRoot);
70
- // Update angular.json test target
71
- updateAngularJson(tree, options.project);
72
- // Schedule package install
73
- context.addTask(new tasks_1.NodePackageInstallTask());
74
- // Generate files
75
- return (0, schematics_1.chain)([
76
- generateFiles(projectRoot, majorAngularVersion, isNx, browserMode),
77
- ]);
78
- };
39
+ return (tree, context) => {
40
+ const angularVersion = require_angular.getAngularVersion(tree);
41
+ const majorAngularVersion = require_angular.getMajorAngularVersion(angularVersion);
42
+ const projectRoot = require_workspace.getProject(require_workspace.getWorkspace(tree), options.project).root || "";
43
+ const isNx = require_workspace.isNxWorkspace(tree);
44
+ const browserMode = options.browserMode ?? false;
45
+ require_dependencies.addDevDependencies(tree, angularVersion, { browserMode });
46
+ updateTsConfigSpec(tree, projectRoot);
47
+ updateAngularJson(tree, options.project);
48
+ context.addTask(new _angular_devkit_schematics_tasks.NodePackageInstallTask());
49
+ return (0, _angular_devkit_schematics.chain)([generateFiles(projectRoot, majorAngularVersion, isNx, browserMode)]);
50
+ };
79
51
  }
52
+ //#endregion
53
+ exports.setupSchematic = setupSchematic;
54
+
80
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../packages/vitest-angular-tools/src/schematics/setup/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../../packages/vitest-angular-tools/src/schematics/setup/index.ts"],"sourcesContent":["import {\n Rule,\n Tree,\n apply,\n url,\n applyTemplates,\n move,\n chain,\n mergeWith,\n SchematicContext,\n} from '@angular-devkit/schematics';\nimport { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';\nimport { parse } from 'jsonc-parser';\nimport {\n getAngularVersion,\n getMajorAngularVersion,\n getWorkspace,\n getProject,\n addDevDependencies,\n isNxWorkspace,\n} from '../utils';\nimport { Schema } from './schema';\n\nfunction updateTsConfigSpec(tree: Tree, projectRoot: string): void {\n const tsConfigPath = projectRoot\n ? `${projectRoot}/tsconfig.spec.json`\n : 'tsconfig.spec.json';\n\n if (!tree.exists(tsConfigPath)) {\n return;\n }\n\n const tsConfigContent = tree.read(tsConfigPath);\n if (!tsConfigContent) {\n return;\n }\n\n const tsConfig = parse(tsConfigContent.toString('utf-8')) as Record<\n string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n >;\n\n tsConfig.compilerOptions = tsConfig.compilerOptions || {};\n\n // Remove module (let Vite handle it)\n delete tsConfig.compilerOptions.module;\n\n // Set target to es2022\n tsConfig.compilerOptions.target = 'es2022';\n\n // Update types: remove jest, add vitest/globals\n const types: string[] = tsConfig.compilerOptions.types || ['node'];\n const filteredTypes = types.filter(\n (t: string) => t !== 'jest' && t !== 'jasmine',\n );\n if (!filteredTypes.includes('vitest/globals')) {\n filteredTypes.push('vitest/globals');\n }\n tsConfig.compilerOptions.types = filteredTypes;\n\n // Set files to include test-setup.ts\n tsConfig.files = ['src/test-setup.ts'];\n\n tree.overwrite(tsConfigPath, JSON.stringify(tsConfig, null, 2) + '\\n');\n}\n\nfunction updateAngularJson(tree: Tree, projectName: string): void {\n const workspace = getWorkspace(tree);\n const project = workspace.projects[projectName];\n\n if (!project.architect) {\n project.architect = {};\n }\n\n project.architect['test'] = {\n builder: '@analogjs/vitest-angular:test',\n };\n\n tree.overwrite('angular.json', JSON.stringify(workspace, null, 2) + '\\n');\n}\n\nfunction generateFiles(\n projectRoot: string,\n majorAngularVersion: number,\n isNx: boolean,\n browserMode: boolean,\n): Rule {\n return mergeWith(\n apply(url('./files'), [\n applyTemplates({\n majorAngularVersion,\n isNx,\n browserMode,\n }),\n move(projectRoot),\n ]),\n );\n}\n\nexport function setupSchematic(options: Schema): Rule {\n return (tree: Tree, context: SchematicContext) => {\n const angularVersion = getAngularVersion(tree);\n const majorAngularVersion = getMajorAngularVersion(angularVersion);\n\n const workspace = getWorkspace(tree);\n const project = getProject(workspace, options.project);\n const projectRoot = project.root || '';\n const isNx = isNxWorkspace(tree);\n\n const browserMode = options.browserMode ?? false;\n\n // Add devDependencies\n addDevDependencies(tree, angularVersion, { browserMode });\n\n // Update tsconfig.spec.json (if exists)\n updateTsConfigSpec(tree, projectRoot);\n\n // Update angular.json test target\n updateAngularJson(tree, options.project);\n\n // Schedule package install\n context.addTask(new NodePackageInstallTask());\n\n // Generate files\n return chain([\n generateFiles(projectRoot, majorAngularVersion, isNx, browserMode),\n ]);\n };\n}\n"],"mappings":";;;;;;;;AAuBA,SAAS,mBAAmB,MAAY,aAA2B;CACjE,MAAM,eAAe,cACjB,GAAG,YAAY,uBACf;AAEJ,KAAI,CAAC,KAAK,OAAO,aAAa,CAC5B;CAGF,MAAM,kBAAkB,KAAK,KAAK,aAAa;AAC/C,KAAI,CAAC,gBACH;CAGF,MAAM,YAAA,GAAA,aAAA,OAAiB,gBAAgB,SAAS,QAAQ,CAAC;AAMzD,UAAS,kBAAkB,SAAS,mBAAmB,EAAE;AAGzD,QAAO,SAAS,gBAAgB;AAGhC,UAAS,gBAAgB,SAAS;CAIlC,MAAM,iBADkB,SAAS,gBAAgB,SAAS,CAAC,OAAO,EACtC,QACzB,MAAc,MAAM,UAAU,MAAM,UACtC;AACD,KAAI,CAAC,cAAc,SAAS,iBAAiB,CAC3C,eAAc,KAAK,iBAAiB;AAEtC,UAAS,gBAAgB,QAAQ;AAGjC,UAAS,QAAQ,CAAC,oBAAoB;AAEtC,MAAK,UAAU,cAAc,KAAK,UAAU,UAAU,MAAM,EAAE,GAAG,KAAK;;AAGxE,SAAS,kBAAkB,MAAY,aAA2B;CAChE,MAAM,YAAY,kBAAA,aAAa,KAAK;CACpC,MAAM,UAAU,UAAU,SAAS;AAEnC,KAAI,CAAC,QAAQ,UACX,SAAQ,YAAY,EAAE;AAGxB,SAAQ,UAAU,UAAU,EAC1B,SAAS,iCACV;AAED,MAAK,UAAU,gBAAgB,KAAK,UAAU,WAAW,MAAM,EAAE,GAAG,KAAK;;AAG3E,SAAS,cACP,aACA,qBACA,MACA,aACM;AACN,SAAA,GAAA,2BAAA,YAAA,GAAA,2BAAA,QAAA,GAAA,2BAAA,KACY,UAAU,EAAE,EAAA,GAAA,2BAAA,gBACL;EACb;EACA;EACA;EACD,CAAC,GAAA,GAAA,2BAAA,MACG,YAAY,CAClB,CAAC,CACH;;AAGH,SAAgB,eAAe,SAAuB;AACpD,SAAQ,MAAY,YAA8B;EAChD,MAAM,iBAAiB,gBAAA,kBAAkB,KAAK;EAC9C,MAAM,sBAAsB,gBAAA,uBAAuB,eAAe;EAIlE,MAAM,cADU,kBAAA,WADE,kBAAA,aAAa,KAAK,EACE,QAAQ,QAAQ,CAC1B,QAAQ;EACpC,MAAM,OAAO,kBAAA,cAAc,KAAK;EAEhC,MAAM,cAAc,QAAQ,eAAe;AAG3C,uBAAA,mBAAmB,MAAM,gBAAgB,EAAE,aAAa,CAAC;AAGzD,qBAAmB,MAAM,YAAY;AAGrC,oBAAkB,MAAM,QAAQ,QAAQ;AAGxC,UAAQ,QAAQ,IAAI,iCAAA,wBAAwB,CAAC;AAG7C,UAAA,GAAA,2BAAA,OAAa,CACX,cAAc,aAAa,qBAAqB,MAAM,YAAY,CACnE,CAAC"}
@@ -1,3 +1,3 @@
1
- import { Tree } from '@angular-devkit/schematics';
1
+ import { Tree } from "@angular-devkit/schematics";
2
2
  export declare function getAngularVersion(tree: Tree): string;
3
3
  export declare function getMajorAngularVersion(angularVersion: string): number;
@@ -1,27 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAngularVersion = getAngularVersion;
4
- exports.getMajorAngularVersion = getMajorAngularVersion;
5
- const schematics_1 = require("@angular-devkit/schematics");
6
- const semver_1 = require("semver");
1
+ let _angular_devkit_schematics = require("@angular-devkit/schematics");
2
+ let semver = require("semver");
3
+ //#region packages/vitest-angular-tools/src/schematics/utils/angular.ts
7
4
  function getAngularVersion(tree) {
8
- const packageJson = tree.read('package.json');
9
- if (!packageJson) {
10
- throw new schematics_1.SchematicsException('Could not find package.json');
11
- }
12
- const pkg = JSON.parse(packageJson.toString('utf-8'));
13
- const angularVersion = pkg.dependencies?.['@angular/core'] ||
14
- pkg.devDependencies?.['@angular/core'];
15
- if (!angularVersion) {
16
- throw new schematics_1.SchematicsException('Could not find @angular/core in package.json');
17
- }
18
- return angularVersion;
5
+ const packageJson = tree.read("package.json");
6
+ if (!packageJson) throw new _angular_devkit_schematics.SchematicsException("Could not find package.json");
7
+ const pkg = JSON.parse(packageJson.toString("utf-8"));
8
+ const angularVersion = pkg.dependencies?.["@angular/core"] || pkg.devDependencies?.["@angular/core"];
9
+ if (!angularVersion) throw new _angular_devkit_schematics.SchematicsException("Could not find @angular/core in package.json");
10
+ return angularVersion;
19
11
  }
20
12
  function getMajorAngularVersion(angularVersion) {
21
- const coerced = (0, semver_1.coerce)(angularVersion);
22
- if (!coerced) {
23
- throw new schematics_1.SchematicsException(`Could not parse Angular version: ${angularVersion}`);
24
- }
25
- return (0, semver_1.major)(coerced);
13
+ const coerced = (0, semver.coerce)(angularVersion);
14
+ if (!coerced) throw new _angular_devkit_schematics.SchematicsException(`Could not parse Angular version: ${angularVersion}`);
15
+ return (0, semver.major)(coerced);
26
16
  }
17
+ //#endregion
18
+ exports.getAngularVersion = getAngularVersion;
19
+ exports.getMajorAngularVersion = getMajorAngularVersion;
20
+
27
21
  //# sourceMappingURL=angular.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular.js","sourceRoot":"","sources":["../../../../../../../../../packages/vitest-angular-tools/src/schematics/utils/angular.ts"],"names":[],"mappings":";;AAGA,8CAkBC;AAED,wDAQC;AA/BD,2DAAuE;AACvE,mCAAuC;AAEvC,SAAgB,iBAAiB,CAAC,IAAU;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,gCAAmB,CAAC,6BAA6B,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,MAAM,cAAc,GAClB,GAAG,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC;QACnC,GAAG,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;IAEzC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,gCAAmB,CAC3B,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAgB,sBAAsB,CAAC,cAAsB;IAC3D,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,gCAAmB,CAC3B,oCAAoC,cAAc,EAAE,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,IAAA,cAAK,EAAC,OAAO,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"angular.js","names":[],"sources":["../../../../../../../../../packages/vitest-angular-tools/src/schematics/utils/angular.ts"],"sourcesContent":["import { Tree, SchematicsException } from '@angular-devkit/schematics';\nimport { coerce, major } from 'semver';\n\nexport function getAngularVersion(tree: Tree): string {\n const packageJson = tree.read('package.json');\n if (!packageJson) {\n throw new SchematicsException('Could not find package.json');\n }\n\n const pkg = JSON.parse(packageJson.toString('utf-8'));\n const angularVersion =\n pkg.dependencies?.['@angular/core'] ||\n pkg.devDependencies?.['@angular/core'];\n\n if (!angularVersion) {\n throw new SchematicsException(\n 'Could not find @angular/core in package.json',\n );\n }\n\n return angularVersion;\n}\n\nexport function getMajorAngularVersion(angularVersion: string): number {\n const coerced = coerce(angularVersion);\n if (!coerced) {\n throw new SchematicsException(\n `Could not parse Angular version: ${angularVersion}`,\n );\n }\n return major(coerced);\n}\n"],"mappings":";;;AAGA,SAAgB,kBAAkB,MAAoB;CACpD,MAAM,cAAc,KAAK,KAAK,eAAe;AAC7C,KAAI,CAAC,YACH,OAAM,IAAI,2BAAA,oBAAoB,8BAA8B;CAG9D,MAAM,MAAM,KAAK,MAAM,YAAY,SAAS,QAAQ,CAAC;CACrD,MAAM,iBACJ,IAAI,eAAe,oBACnB,IAAI,kBAAkB;AAExB,KAAI,CAAC,eACH,OAAM,IAAI,2BAAA,oBACR,+CACD;AAGH,QAAO;;AAGT,SAAgB,uBAAuB,gBAAgC;CACrE,MAAM,WAAA,GAAA,OAAA,QAAiB,eAAe;AACtC,KAAI,CAAC,QACH,OAAM,IAAI,2BAAA,oBACR,oCAAoC,iBACrC;AAEH,SAAA,GAAA,OAAA,OAAa,QAAQ"}
@@ -1,6 +1,6 @@
1
- import { Tree } from '@angular-devkit/schematics';
1
+ import { Tree } from "@angular-devkit/schematics";
2
2
  export interface DependencyOptions {
3
- browserMode?: boolean;
3
+ browserMode?: boolean;
4
4
  }
5
5
  export declare function getDevDependencies(angularVersion: string, options?: DependencyOptions): Record<string, string>;
6
6
  export declare function addDevDependencies(tree: Tree, angularVersion: string, options?: DependencyOptions): void;