@analogjs/vitest-angular 3.0.0-alpha.9 → 3.0.0-alpha.90

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 (85) hide show
  1. package/README.md +304 -0
  2. package/_virtual/_@oxc-project_runtime@0.124.0/helpers/decorate.js +9 -0
  3. package/package.json +24 -8
  4. package/setup-serializers.d.ts +1 -0
  5. package/setup-serializers.js +13 -0
  6. package/setup-serializers.js.map +1 -0
  7. package/setup-snapshots.d.ts +1 -26
  8. package/setup-snapshots.js +4 -73
  9. package/setup-snapshots.js.map +1 -1
  10. package/setup-testbed.d.ts +14 -12
  11. package/setup-testbed.js +11 -7
  12. package/setup-testbed.js.map +1 -1
  13. package/setup-zone.d.ts +6 -5
  14. package/setup-zone.js +84 -83
  15. package/setup-zone.js.map +1 -1
  16. package/src/index.d.ts +2 -2
  17. package/src/lib/builders/build/devkit.d.ts +2 -2
  18. package/src/lib/builders/build/devkit.js +4 -3
  19. package/src/lib/builders/build/devkit.js.map +1 -1
  20. package/src/lib/builders/build/plugins/angular-memory-plugin.d.ts +13 -20
  21. package/src/lib/builders/build/plugins/angular-memory-plugin.js.map +1 -1
  22. package/src/lib/builders/build/plugins/downlevel-plugin.d.ts +6 -6
  23. package/src/lib/builders/build/plugins/downlevel-plugin.js.map +1 -1
  24. package/src/lib/builders/build/schema.js.map +1 -1
  25. package/src/lib/builders/build/schema.json +47 -0
  26. package/src/lib/builders/build/utils.d.ts +3 -3
  27. package/src/lib/builders/build/vitest.impl.d.ts +5 -5
  28. package/src/lib/builders/build/vitest.impl.js +3 -2
  29. package/src/lib/builders/build/vitest.impl.js.map +1 -1
  30. package/src/lib/builders/test/schema.js.map +1 -1
  31. package/src/lib/builders/test/schema.json +47 -0
  32. package/src/lib/builders/test/vitest.impl.d.ts +1 -1
  33. package/src/lib/builders/test/vitest.impl.js +3 -3
  34. package/src/lib/builders/test/vitest.impl.js.map +1 -1
  35. package/src/lib/snapshot-serializers/angular-fixture.d.ts +2 -0
  36. package/src/lib/snapshot-serializers/angular-fixture.js +71 -0
  37. package/src/lib/snapshot-serializers/angular-fixture.js.map +1 -0
  38. package/src/lib/snapshot-serializers/html-comment.d.ts +2 -0
  39. package/src/lib/snapshot-serializers/html-comment.js +11 -0
  40. package/src/lib/snapshot-serializers/html-comment.js.map +1 -0
  41. package/src/lib/snapshot-serializers/index.d.ts +3 -0
  42. package/src/lib/snapshot-serializers/no-ng-attributes.d.ts +4 -0
  43. package/src/lib/snapshot-serializers/no-ng-attributes.js +63 -0
  44. package/src/lib/snapshot-serializers/no-ng-attributes.js.map +1 -0
  45. package/src/lib/tools/collection.json +2 -2
  46. package/src/lib/tools/index.d.ts +1 -0
  47. package/src/lib/tools/package.json +1 -3
  48. package/src/lib/tools/{src/schematics → schematics}/setup/files/src/test-setup.ts.template +1 -0
  49. package/src/lib/tools/{src/schematics → schematics}/setup/files/vite.config.mts.template +2 -7
  50. package/src/lib/tools/schematics/setup/index.d.ts +3 -0
  51. package/src/lib/tools/schematics/setup/index.js.map +1 -0
  52. package/src/lib/tools/schematics/utils/angular.d.ts +3 -0
  53. package/src/lib/tools/schematics/utils/angular.js.map +1 -0
  54. package/src/lib/tools/schematics/utils/dependencies.d.ts +6 -0
  55. package/src/lib/tools/schematics/utils/dependencies.js.map +1 -0
  56. package/src/lib/tools/schematics/utils/index.d.ts +4 -0
  57. package/src/lib/tools/schematics/utils/versions.d.ts +7 -0
  58. package/src/lib/tools/{src/schematics → schematics}/utils/versions.js +1 -1
  59. package/src/lib/tools/schematics/utils/versions.js.map +1 -0
  60. package/src/lib/tools/schematics/utils/workspace.d.ts +15 -0
  61. package/src/lib/tools/schematics/utils/workspace.js.map +1 -0
  62. package/src/lib/tools/src/index.d.ts +1 -1
  63. package/src/lib/tools/src/schematics/setup/index.d.ts +2 -2
  64. package/src/lib/tools/src/schematics/utils/angular.d.ts +1 -1
  65. package/src/lib/tools/src/schematics/utils/dependencies.d.ts +2 -2
  66. package/src/lib/tools/src/schematics/utils/index.d.ts +4 -4
  67. package/src/lib/tools/src/schematics/utils/versions.d.ts +1 -1
  68. package/src/lib/tools/src/schematics/utils/workspace.d.ts +8 -8
  69. package/src/test-setup.d.ts +3 -0
  70. package/_virtual/_rolldown/runtime.js +0 -7
  71. package/src/lib/tools/src/schematics/setup/index.js.map +0 -1
  72. package/src/lib/tools/src/schematics/utils/angular.js.map +0 -1
  73. package/src/lib/tools/src/schematics/utils/dependencies.js.map +0 -1
  74. package/src/lib/tools/src/schematics/utils/versions.js.map +0 -1
  75. package/src/lib/tools/src/schematics/utils/workspace.js.map +0 -1
  76. /package/src/lib/tools/{src/index.js → index.js} +0 -0
  77. /package/src/lib/tools/{src/schematics → schematics}/jsonc-parser.d.ts +0 -0
  78. /package/src/lib/tools/{src/schematics → schematics}/semver.d.ts +0 -0
  79. /package/src/lib/tools/{src/schematics → schematics}/setup/index.js +0 -0
  80. /package/src/lib/tools/{src/schematics → schematics}/setup/schema.d.ts +0 -0
  81. /package/src/lib/tools/{src/schematics → schematics}/setup/schema.json +0 -0
  82. /package/src/lib/tools/{src/schematics → schematics}/utils/angular.js +0 -0
  83. /package/src/lib/tools/{src/schematics → schematics}/utils/dependencies.js +0 -0
  84. /package/src/lib/tools/{src/schematics → schematics}/utils/index.js +0 -0
  85. /package/src/lib/tools/{src/schematics → schematics}/utils/workspace.js +0 -0
package/setup-zone.js CHANGED
@@ -10,93 +10,94 @@ import "zone.js/testing";
10
10
  */
11
11
  var Zone = globalThis["Zone"];
12
12
  if (Zone === void 0) throw new Error("Missing: Zone (zone.js)");
13
- if (globalThis["__vitest_zone_patch__"] === true) throw new Error("'vitest' has already been patched with 'Zone'.");
14
- globalThis["__vitest_zone_patch__"] = true;
15
- var SyncTestZoneSpec = Zone["SyncTestZoneSpec"];
16
- var ProxyZoneSpec = Zone["ProxyZoneSpec"];
17
- if (SyncTestZoneSpec === void 0) throw new Error("Missing: SyncTestZoneSpec (zone.js/plugins/sync-test)");
18
- if (ProxyZoneSpec === void 0) throw new Error("Missing: ProxyZoneSpec (zone.js/plugins/proxy.js)");
19
- var env = globalThis;
20
- var ambientZone = Zone.current;
21
- var syncZone = ambientZone.fork(new SyncTestZoneSpec("vitest.describe"));
22
- function wrapDescribeInZone(describeBody) {
23
- return function(...args) {
24
- return syncZone.run(describeBody, null, args);
13
+ if (globalThis["__vitest_zone_patch__"] !== true) {
14
+ globalThis["__vitest_zone_patch__"] = true;
15
+ const SyncTestZoneSpec = Zone["SyncTestZoneSpec"];
16
+ const ProxyZoneSpec = Zone["ProxyZoneSpec"];
17
+ if (SyncTestZoneSpec === void 0) throw new Error("Missing: SyncTestZoneSpec (zone.js/plugins/sync-test)");
18
+ if (ProxyZoneSpec === void 0) throw new Error("Missing: ProxyZoneSpec (zone.js/plugins/proxy.js)");
19
+ const env = globalThis;
20
+ const ambientZone = Zone.current;
21
+ const syncZone = ambientZone.fork(new SyncTestZoneSpec("vitest.describe"));
22
+ const wrapDescribeInZone = function(describeBody) {
23
+ return function(...args) {
24
+ return syncZone.run(describeBody, null, args);
25
+ };
25
26
  };
26
- }
27
- var testProxyZone = ambientZone.fork(new ProxyZoneSpec());
28
- function wrapTestInZone(testBody) {
29
- if (testBody === void 0) return;
30
- const wrappedFunc = function(...args) {
31
- return testProxyZone.run(testBody, null, args);
27
+ const testProxyZone = ambientZone.fork(new ProxyZoneSpec());
28
+ const wrapTestInZone = function(testBody) {
29
+ if (testBody === void 0) return;
30
+ const wrappedFunc = function() {
31
+ return testProxyZone.run(testBody, null, arguments);
32
+ };
33
+ try {
34
+ Object.defineProperty(wrappedFunc, "length", {
35
+ configurable: true,
36
+ writable: true,
37
+ enumerable: false
38
+ });
39
+ wrappedFunc.length = testBody.length;
40
+ } catch (e) {
41
+ return testBody.length === 0 ? () => testProxyZone.run(testBody, null) : (done) => testProxyZone.run(testBody, null, [done]);
42
+ }
43
+ return wrappedFunc;
32
44
  };
33
- try {
34
- Object.defineProperty(wrappedFunc, "length", {
35
- configurable: true,
36
- writable: true,
37
- enumerable: false
38
- });
39
- wrappedFunc.length = testBody.length;
40
- } catch (e) {
41
- return testBody.length === 0 ? () => testProxyZone.run(testBody, null) : (done) => testProxyZone.run(testBody, null, [done]);
42
- }
43
- return wrappedFunc;
44
- }
45
- /**
46
- * bind describe method to wrap describe.each function
47
- */
48
- var bindDescribe = (self, originalVitestFn) => function(...eachArgs) {
49
- return function(...args) {
50
- args[1] = wrapDescribeInZone(args[1]);
51
- return originalVitestFn.apply(self, eachArgs).apply(self, args);
45
+ /**
46
+ * bind describe method to wrap describe.each function
47
+ */
48
+ const bindDescribe = (self, originalVitestFn) => function(...eachArgs) {
49
+ return function(...args) {
50
+ args[1] = wrapDescribeInZone(args[1]);
51
+ return originalVitestFn.apply(self, eachArgs).apply(self, args);
52
+ };
52
53
  };
53
- };
54
- /**
55
- * bind test method to wrap test.each function
56
- */
57
- var bindTest = (self, originalVitestFn) => function(...eachArgs) {
58
- return function(...args) {
59
- args[1] = wrapTestInZone(args[1]);
60
- return originalVitestFn.apply(self, eachArgs).apply(self, args);
54
+ /**
55
+ * bind test method to wrap test.each function
56
+ */
57
+ const bindTest = (self, originalVitestFn) => function(...eachArgs) {
58
+ return function(...args) {
59
+ args[1] = wrapTestInZone(args[1]);
60
+ return originalVitestFn.apply(self, eachArgs).apply(self, args);
61
+ };
61
62
  };
62
- };
63
- ["describe"].forEach((methodName) => {
64
- const originalvitestFn = env[methodName];
65
- env[methodName] = function(...args) {
66
- args[1] = wrapDescribeInZone(args[1]);
67
- return originalvitestFn.apply(this, args);
68
- };
69
- env[methodName].each = bindDescribe(originalvitestFn, originalvitestFn.each);
70
- if (methodName === "describe") {
71
- env[methodName].only = bindDescribe(originalvitestFn, originalvitestFn.only);
72
- env[methodName].skip = bindDescribe(originalvitestFn, originalvitestFn.skip);
73
- }
74
- });
75
- ["test", "it"].forEach((methodName) => {
76
- const originalvitestFn = env[methodName];
77
- env[methodName] = function(...args) {
78
- args[1] = wrapTestInZone(args[1]);
79
- return originalvitestFn.apply(this, args);
80
- };
81
- env[methodName].each = bindTest(originalvitestFn, originalvitestFn.each);
82
- env[methodName].only = bindTest(originalvitestFn, originalvitestFn.only);
83
- env[methodName].skip = bindTest(originalvitestFn, originalvitestFn.skip);
84
- if (methodName === "test" || methodName === "it") env[methodName].todo = function(...args) {
85
- return originalvitestFn.todo.apply(this, args);
86
- };
87
- });
88
- [
89
- "beforeEach",
90
- "afterEach",
91
- "beforeAll",
92
- "afterAll"
93
- ].forEach((methodName) => {
94
- const originalvitestFn = env[methodName];
95
- env[methodName] = function(...args) {
96
- args[0] = wrapTestInZone(args[0]);
97
- return originalvitestFn.apply(this, args);
98
- };
99
- });
63
+ ["describe"].forEach((methodName) => {
64
+ const originalvitestFn = env[methodName];
65
+ env[methodName] = function(...args) {
66
+ args[1] = wrapDescribeInZone(args[1]);
67
+ return originalvitestFn.apply(this, args);
68
+ };
69
+ env[methodName].each = bindDescribe(originalvitestFn, originalvitestFn.each);
70
+ if (methodName === "describe") {
71
+ env[methodName].only = bindDescribe(originalvitestFn, originalvitestFn.only);
72
+ env[methodName].skip = bindDescribe(originalvitestFn, originalvitestFn.skip);
73
+ }
74
+ });
75
+ ["test", "it"].forEach((methodName) => {
76
+ const originalvitestFn = env[methodName];
77
+ env[methodName] = function(...args) {
78
+ args[1] = wrapTestInZone(args[1]);
79
+ return originalvitestFn.apply(this, args);
80
+ };
81
+ env[methodName].each = bindTest(originalvitestFn, originalvitestFn.each);
82
+ env[methodName].only = bindTest(originalvitestFn, originalvitestFn.only);
83
+ env[methodName].skip = bindTest(originalvitestFn, originalvitestFn.skip);
84
+ if (methodName === "test" || methodName === "it") env[methodName].todo = function(...args) {
85
+ return originalvitestFn.todo.apply(this, args);
86
+ };
87
+ });
88
+ [
89
+ "beforeEach",
90
+ "afterEach",
91
+ "beforeAll",
92
+ "afterAll"
93
+ ].forEach((methodName) => {
94
+ const originalvitestFn = env[methodName];
95
+ env[methodName] = function(...args) {
96
+ args[0] = wrapTestInZone(args[0]);
97
+ return originalvitestFn.apply(this, args);
98
+ };
99
+ });
100
+ }
100
101
  //#endregion
101
102
 
102
103
  //# sourceMappingURL=setup-zone.js.map
package/setup-zone.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup-zone.js","names":[],"sources":["../../../packages/vitest-angular/setup-zone.ts"],"sourcesContent":["import 'zone.js';\nimport 'zone.js/plugins/sync-test';\nimport 'zone.js/plugins/proxy';\nimport 'zone.js/testing';\n\nimport './setup-snapshots.js';\n/**\n * Patch Vitest's describe/test/beforeEach/afterEach functions so test code\n * always runs in a testZone (ProxyZone).\n */\n/* global Zone */\nconst Zone = (globalThis as any)['Zone'];\n\nif (Zone === undefined) {\n throw new Error('Missing: Zone (zone.js)');\n}\n\nif ((globalThis as any)['__vitest_zone_patch__'] === true) {\n throw new Error(\"'vitest' has already been patched with 'Zone'.\");\n}\n\n(globalThis as any)['__vitest_zone_patch__'] = true;\nconst SyncTestZoneSpec = Zone['SyncTestZoneSpec'];\nconst ProxyZoneSpec = Zone['ProxyZoneSpec'];\n\nif (SyncTestZoneSpec === undefined) {\n throw new Error('Missing: SyncTestZoneSpec (zone.js/plugins/sync-test)');\n}\nif (ProxyZoneSpec === undefined) {\n throw new Error('Missing: ProxyZoneSpec (zone.js/plugins/proxy.js)');\n}\n\nconst env = globalThis as any;\nconst ambientZone = Zone.current;\n\n// Create a synchronous-only zone in which to run `describe` blocks in order to\n// raise an error if any asynchronous operations are attempted\n// inside of a `describe` but outside of a `beforeEach` or `it`.\nconst syncZone = ambientZone.fork(new SyncTestZoneSpec('vitest.describe'));\nfunction wrapDescribeInZone(describeBody: any) {\n return function (...args: any) {\n return syncZone.run(describeBody, null, args);\n };\n}\n\n// Create a proxy zone in which to run `test` blocks so that the tests function\n// can retroactively install different zones.\nconst testProxyZone = ambientZone.fork(new ProxyZoneSpec());\nfunction wrapTestInZone(testBody: string | any[] | undefined) {\n if (testBody === undefined) {\n return;\n }\n\n const wrappedFunc = function (...args: any[]) {\n return testProxyZone.run(testBody, null, args);\n };\n try {\n Object.defineProperty(wrappedFunc, 'length', {\n configurable: true,\n writable: true,\n enumerable: false,\n });\n wrappedFunc.length = testBody.length;\n } catch (e) {\n return testBody.length === 0\n ? () => testProxyZone.run(testBody, null)\n : (done: any) => testProxyZone.run(testBody, null, [done]);\n }\n\n return wrappedFunc;\n}\n\n/**\n * bind describe method to wrap describe.each function\n */\nconst bindDescribe = (\n self: any,\n originalVitestFn: {\n apply: (\n arg0: any,\n arg1: any[],\n ) => {\n (): any;\n new (): any;\n apply: { (arg0: any, arg1: any[]): any; new (): any };\n };\n },\n) =>\n function (...eachArgs: any) {\n return function (...args: any[]) {\n args[1] = wrapDescribeInZone(args[1]);\n\n return originalVitestFn.apply(self, eachArgs).apply(self, args);\n };\n };\n\n/**\n * bind test method to wrap test.each function\n */\nconst bindTest = (\n self: any,\n originalVitestFn: {\n apply: (\n arg0: any,\n arg1: any[],\n ) => {\n (): any;\n new (): any;\n apply: { (arg0: any, arg1: any[]): any; new (): any };\n };\n },\n) =>\n function (...eachArgs: any) {\n return function (...args: any[]) {\n args[1] = wrapTestInZone(args[1]);\n\n return originalVitestFn.apply(self, eachArgs).apply(self, args);\n };\n };\n\n['describe'].forEach((methodName) => {\n const originalvitestFn = env[methodName];\n env[methodName] = function (...args: any[]) {\n args[1] = wrapDescribeInZone(args[1]);\n\n return originalvitestFn.apply(this, args);\n };\n env[methodName].each = bindDescribe(originalvitestFn, originalvitestFn.each);\n if (methodName === 'describe') {\n env[methodName].only = bindDescribe(\n originalvitestFn,\n originalvitestFn.only,\n );\n env[methodName].skip = bindDescribe(\n originalvitestFn,\n originalvitestFn.skip,\n );\n }\n});\n\n['test', 'it'].forEach((methodName) => {\n const originalvitestFn = env[methodName];\n env[methodName] = function (...args: any[]) {\n args[1] = wrapTestInZone(args[1]);\n\n return originalvitestFn.apply(this, args);\n };\n env[methodName].each = bindTest(originalvitestFn, originalvitestFn.each);\n env[methodName].only = bindTest(originalvitestFn, originalvitestFn.only);\n env[methodName].skip = bindTest(originalvitestFn, originalvitestFn.skip);\n\n if (methodName === 'test' || methodName === 'it') {\n env[methodName].todo = function (...args: any) {\n return originalvitestFn.todo.apply(this, args);\n };\n }\n});\n\n['beforeEach', 'afterEach', 'beforeAll', 'afterAll'].forEach((methodName) => {\n const originalvitestFn = env[methodName];\n\n env[methodName] = function (...args: any[]) {\n args[0] = wrapTestInZone(args[0]);\n\n return originalvitestFn.apply(this, args);\n };\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"setup-zone.js","names":[],"sources":["../setup-zone.ts"],"sourcesContent":["import 'zone.js';\nimport 'zone.js/plugins/sync-test';\nimport 'zone.js/plugins/proxy';\nimport 'zone.js/testing';\n\nimport './setup-snapshots.js';\n/**\n * Patch Vitest's describe/test/beforeEach/afterEach functions so test code\n * always runs in a testZone (ProxyZone).\n */\n/* global Zone */\nconst Zone = (globalThis as any)['Zone'];\n\nif (Zone === undefined) {\n throw new Error('Missing: Zone (zone.js)');\n}\n\n// Setup files are re-executed for every test file in a reused worker\n// (e.g. isolate: false, or bundled setup entries). The patched functions\n// live on the same globalThis as this flag, so skip instead of re-patching.\nif ((globalThis as any)['__vitest_zone_patch__'] !== true) {\n (globalThis as any)['__vitest_zone_patch__'] = true;\n const SyncTestZoneSpec = Zone['SyncTestZoneSpec'];\n const ProxyZoneSpec = Zone['ProxyZoneSpec'];\n\n if (SyncTestZoneSpec === undefined) {\n throw new Error('Missing: SyncTestZoneSpec (zone.js/plugins/sync-test)');\n }\n if (ProxyZoneSpec === undefined) {\n throw new Error('Missing: ProxyZoneSpec (zone.js/plugins/proxy.js)');\n }\n\n const env = globalThis as any;\n const ambientZone = Zone.current;\n\n // Create a synchronous-only zone in which to run `describe` blocks in order to\n // raise an error if any asynchronous operations are attempted\n // inside of a `describe` but outside of a `beforeEach` or `it`.\n const syncZone = ambientZone.fork(new SyncTestZoneSpec('vitest.describe'));\n const wrapDescribeInZone = function (describeBody: any) {\n return function (...args: any) {\n return syncZone.run(describeBody, null, args);\n };\n };\n\n // Create a proxy zone in which to run `test` blocks so that the tests function\n // can retroactively install different zones.\n const testProxyZone = ambientZone.fork(new ProxyZoneSpec());\n const wrapTestInZone = function (testBody: string | any[] | undefined) {\n if (testBody === undefined) {\n return;\n }\n\n const wrappedFunc = function () {\n return testProxyZone.run(testBody, null, arguments);\n };\n try {\n Object.defineProperty(wrappedFunc, 'length', {\n configurable: true,\n writable: true,\n enumerable: false,\n });\n wrappedFunc.length = testBody.length;\n } catch (e) {\n return testBody.length === 0\n ? () => testProxyZone.run(testBody, null)\n : (done: any) => testProxyZone.run(testBody, null, [done]);\n }\n\n return wrappedFunc;\n };\n\n /**\n * bind describe method to wrap describe.each function\n */\n const bindDescribe = (\n self: any,\n originalVitestFn: {\n apply: (\n arg0: any,\n arg1: any[],\n ) => {\n (): any;\n new (): any;\n apply: { (arg0: any, arg1: any[]): any; new (): any };\n };\n },\n ) =>\n function (...eachArgs: any) {\n return function (...args: any[]) {\n args[1] = wrapDescribeInZone(args[1]);\n\n // @ts-ignore\n return originalVitestFn.apply(self, eachArgs).apply(self, args);\n };\n };\n\n /**\n * bind test method to wrap test.each function\n */\n const bindTest = (\n self: any,\n originalVitestFn: {\n apply: (\n arg0: any,\n arg1: any[],\n ) => {\n (): any;\n new (): any;\n apply: { (arg0: any, arg1: any[]): any; new (): any };\n };\n },\n ) =>\n function (...eachArgs: any) {\n return function (...args: any[]) {\n args[1] = wrapTestInZone(args[1]);\n\n // @ts-ignore\n return originalVitestFn.apply(self, eachArgs).apply(self, args);\n };\n };\n\n ['describe'].forEach((methodName) => {\n const originalvitestFn = env[methodName];\n env[methodName] = function (...args: any[]) {\n args[1] = wrapDescribeInZone(args[1]);\n\n return originalvitestFn.apply(this, args);\n };\n env[methodName].each = bindDescribe(\n originalvitestFn,\n originalvitestFn.each,\n );\n if (methodName === 'describe') {\n env[methodName].only = bindDescribe(\n originalvitestFn,\n originalvitestFn.only,\n );\n env[methodName].skip = bindDescribe(\n originalvitestFn,\n originalvitestFn.skip,\n );\n }\n });\n\n ['test', 'it'].forEach((methodName) => {\n const originalvitestFn = env[methodName];\n env[methodName] = function (...args: any[]) {\n args[1] = wrapTestInZone(args[1]);\n\n return originalvitestFn.apply(this, args);\n };\n env[methodName].each = bindTest(originalvitestFn, originalvitestFn.each);\n env[methodName].only = bindTest(originalvitestFn, originalvitestFn.only);\n env[methodName].skip = bindTest(originalvitestFn, originalvitestFn.skip);\n\n if (methodName === 'test' || methodName === 'it') {\n env[methodName].todo = function (...args: any) {\n return originalvitestFn.todo.apply(this, args);\n };\n }\n });\n\n ['beforeEach', 'afterEach', 'beforeAll', 'afterAll'].forEach((methodName) => {\n const originalvitestFn = env[methodName];\n\n env[methodName] = function (...args: any[]) {\n args[0] = wrapTestInZone(args[0]);\n\n return originalvitestFn.apply(this, args);\n };\n });\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAM,OAAQ,WAAmB;AAEjC,IAAI,SAAS,KAAA,EACX,OAAM,IAAI,MAAM,0BAA0B;AAM5C,IAAK,WAAmB,6BAA6B,MAAM;AACxD,YAAmB,2BAA2B;CAC/C,MAAM,mBAAmB,KAAK;CAC9B,MAAM,gBAAgB,KAAK;AAE3B,KAAI,qBAAqB,KAAA,EACvB,OAAM,IAAI,MAAM,wDAAwD;AAE1E,KAAI,kBAAkB,KAAA,EACpB,OAAM,IAAI,MAAM,oDAAoD;CAGtE,MAAM,MAAM;CACZ,MAAM,cAAc,KAAK;CAKzB,MAAM,WAAW,YAAY,KAAK,IAAI,iBAAiB,kBAAkB,CAAC;CAC1E,MAAM,qBAAqB,SAAU,cAAmB;AACtD,SAAO,SAAU,GAAG,MAAW;AAC7B,UAAO,SAAS,IAAI,cAAc,MAAM,KAAK;;;CAMjD,MAAM,gBAAgB,YAAY,KAAK,IAAI,eAAe,CAAC;CAC3D,MAAM,iBAAiB,SAAU,UAAsC;AACrE,MAAI,aAAa,KAAA,EACf;EAGF,MAAM,cAAc,WAAY;AAC9B,UAAO,cAAc,IAAI,UAAU,MAAM,UAAU;;AAErD,MAAI;AACF,UAAO,eAAe,aAAa,UAAU;IAC3C,cAAc;IACd,UAAU;IACV,YAAY;IACb,CAAC;AACF,eAAY,SAAS,SAAS;WACvB,GAAG;AACV,UAAO,SAAS,WAAW,UACjB,cAAc,IAAI,UAAU,KAAK,IACtC,SAAc,cAAc,IAAI,UAAU,MAAM,CAAC,KAAK,CAAC;;AAG9D,SAAO;;;;;CAMT,MAAM,gBACJ,MACA,qBAWA,SAAU,GAAG,UAAe;AAC1B,SAAO,SAAU,GAAG,MAAa;AAC/B,QAAK,KAAK,mBAAmB,KAAK,GAAG;AAGrC,UAAO,iBAAiB,MAAM,MAAM,SAAS,CAAC,MAAM,MAAM,KAAK;;;;;;CAOrE,MAAM,YACJ,MACA,qBAWA,SAAU,GAAG,UAAe;AAC1B,SAAO,SAAU,GAAG,MAAa;AAC/B,QAAK,KAAK,eAAe,KAAK,GAAG;AAGjC,UAAO,iBAAiB,MAAM,MAAM,SAAS,CAAC,MAAM,MAAM,KAAK;;;AAIrE,EAAC,WAAW,CAAC,SAAS,eAAe;EACnC,MAAM,mBAAmB,IAAI;AAC7B,MAAI,cAAc,SAAU,GAAG,MAAa;AAC1C,QAAK,KAAK,mBAAmB,KAAK,GAAG;AAErC,UAAO,iBAAiB,MAAM,MAAM,KAAK;;AAE3C,MAAI,YAAY,OAAO,aACrB,kBACA,iBAAiB,KAClB;AACD,MAAI,eAAe,YAAY;AAC7B,OAAI,YAAY,OAAO,aACrB,kBACA,iBAAiB,KAClB;AACD,OAAI,YAAY,OAAO,aACrB,kBACA,iBAAiB,KAClB;;GAEH;AAEF,EAAC,QAAQ,KAAK,CAAC,SAAS,eAAe;EACrC,MAAM,mBAAmB,IAAI;AAC7B,MAAI,cAAc,SAAU,GAAG,MAAa;AAC1C,QAAK,KAAK,eAAe,KAAK,GAAG;AAEjC,UAAO,iBAAiB,MAAM,MAAM,KAAK;;AAE3C,MAAI,YAAY,OAAO,SAAS,kBAAkB,iBAAiB,KAAK;AACxE,MAAI,YAAY,OAAO,SAAS,kBAAkB,iBAAiB,KAAK;AACxE,MAAI,YAAY,OAAO,SAAS,kBAAkB,iBAAiB,KAAK;AAExE,MAAI,eAAe,UAAU,eAAe,KAC1C,KAAI,YAAY,OAAO,SAAU,GAAG,MAAW;AAC7C,UAAO,iBAAiB,KAAK,MAAM,MAAM,KAAK;;GAGlD;AAEF;EAAC;EAAc;EAAa;EAAa;EAAW,CAAC,SAAS,eAAe;EAC3E,MAAM,mBAAmB,IAAI;AAE7B,MAAI,cAAc,SAAU,GAAG,MAAa;AAC1C,QAAK,KAAK,eAAe,KAAK,GAAG;AAEjC,UAAO,iBAAiB,MAAM,MAAM,KAAK;;GAE3C"}
package/src/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import vitestBuilder from './lib/builders/test/vitest.impl';
2
- import vitestApplicationBuilder from './lib/builders/build/vitest.impl';
1
+ import vitestBuilder from "./lib/builders/test/vitest.impl";
2
+ import vitestApplicationBuilder from "./lib/builders/build/vitest.impl";
3
3
  export { vitestBuilder, vitestApplicationBuilder };
@@ -1,4 +1,4 @@
1
1
  export declare function getBuildApplicationFunction(): Promise<{
2
- buildApplicationInternal: (...args: any[]) => any;
3
- angularVersion: number;
2
+ buildApplicationInternal: (...args: any[]) => any;
3
+ angularVersion: number;
4
4
  }>;
@@ -1,15 +1,16 @@
1
- import { __require } from "../../../../_virtual/_rolldown/runtime.js";
1
+ import { createRequire } from "node:module";
2
2
  //#region packages/vitest-angular/src/lib/builders/build/devkit.ts
3
+ var _require = createRequire(import.meta.url);
3
4
  async function getBuildApplicationFunction() {
4
5
  const { VERSION } = await Function("return import(\"@angular/compiler-cli\")")();
5
6
  const angularVersion = Number(VERSION.major);
6
7
  let buildApplicationInternal;
7
8
  if (angularVersion < 17) throw new Error("This builder is not supported with versions earlier than Angular v17");
8
9
  else if (angularVersion >= 17 && angularVersion < 18) {
9
- const { buildApplicationInternal: buildApplicationInternalFn } = __require("@angular-devkit/build-angular/src/builders/application");
10
+ const { buildApplicationInternal: buildApplicationInternalFn } = _require("@angular-devkit/build-angular/src/builders/application");
10
11
  buildApplicationInternal = buildApplicationInternalFn;
11
12
  } else {
12
- const { buildApplicationInternal: buildApplicationInternalFn } = __require("@angular/build/private");
13
+ const { buildApplicationInternal: buildApplicationInternalFn } = _require("@angular/build/private");
13
14
  buildApplicationInternal = buildApplicationInternalFn;
14
15
  }
15
16
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"devkit.js","names":[],"sources":["../../../../../../../packages/vitest-angular/src/lib/builders/build/devkit.ts"],"sourcesContent":["export async function getBuildApplicationFunction(): Promise<{\n buildApplicationInternal: (...args: any[]) => any;\n angularVersion: number;\n}> {\n const { VERSION } = await (Function(\n 'return import(\"@angular/compiler-cli\")',\n )() as Promise<{ VERSION: { major: string; minor: string } }>);\n\n const angularVersion = Number(VERSION.major);\n let buildApplicationInternal: (...args: any[]) => any;\n\n if (angularVersion < 17) {\n throw new Error(\n 'This builder is not supported with versions earlier than Angular v17',\n );\n } else if (angularVersion >= 17 && angularVersion < 18) {\n const {\n buildApplicationInternal: buildApplicationInternalFn,\n } = require('@angular-devkit/build-angular/src/builders/application');\n\n buildApplicationInternal = buildApplicationInternalFn;\n } else {\n const {\n buildApplicationInternal: buildApplicationInternalFn,\n } = require('@angular/build/private');\n\n buildApplicationInternal = buildApplicationInternalFn;\n }\n\n return { buildApplicationInternal, angularVersion };\n}\n"],"mappings":";;AAAA,eAAsB,8BAGnB;CACD,MAAM,EAAE,YAAY,MAAO,SACzB,2CACD,EAAE;CAEH,MAAM,iBAAiB,OAAO,QAAQ,MAAM;CAC5C,IAAI;AAEJ,KAAI,iBAAiB,GACnB,OAAM,IAAI,MACR,uEACD;UACQ,kBAAkB,MAAM,iBAAiB,IAAI;EACtD,MAAM,EACJ,0BAA0B,+BAAA,UAChB,yDAAyD;AAErE,6BAA2B;QACtB;EACL,MAAM,EACJ,0BAA0B,+BAAA,UAChB,yBAAyB;AAErC,6BAA2B;;AAG7B,QAAO;EAAE;EAA0B;EAAgB"}
1
+ {"version":3,"file":"devkit.js","names":[],"sources":["../../../../../src/lib/builders/build/devkit.ts"],"sourcesContent":["import { createRequire } from 'node:module';\n\nconst _require = createRequire(import.meta.url);\n\nexport async function getBuildApplicationFunction(): Promise<{\n buildApplicationInternal: (...args: any[]) => any;\n angularVersion: number;\n}> {\n const { VERSION } = await (Function(\n 'return import(\"@angular/compiler-cli\")',\n )() as Promise<{ VERSION: { major: string; minor: string } }>);\n\n const angularVersion = Number(VERSION.major);\n let buildApplicationInternal: (...args: any[]) => any;\n\n if (angularVersion < 17) {\n throw new Error(\n 'This builder is not supported with versions earlier than Angular v17',\n );\n } else if (angularVersion >= 17 && angularVersion < 18) {\n const { buildApplicationInternal: buildApplicationInternalFn } = _require(\n '@angular-devkit/build-angular/src/builders/application',\n );\n\n buildApplicationInternal = buildApplicationInternalFn;\n } else {\n const { buildApplicationInternal: buildApplicationInternalFn } = _require(\n '@angular/build/private',\n );\n\n buildApplicationInternal = buildApplicationInternalFn;\n }\n\n return { buildApplicationInternal, angularVersion };\n}\n"],"mappings":";;AAEA,IAAM,WAAW,cAAc,OAAO,KAAK,IAAI;AAE/C,eAAsB,8BAGnB;CACD,MAAM,EAAE,YAAY,MAAO,SACzB,2CACD,EAAE;CAEH,MAAM,iBAAiB,OAAO,QAAQ,MAAM;CAC5C,IAAI;AAEJ,KAAI,iBAAiB,GACnB,OAAM,IAAI,MACR,uEACD;UACQ,kBAAkB,MAAM,iBAAiB,IAAI;EACtD,MAAM,EAAE,0BAA0B,+BAA+B,SAC/D,yDACD;AAED,6BAA2B;QACtB;EACL,MAAM,EAAE,0BAA0B,+BAA+B,SAC/D,yBACD;AAED,6BAA2B;;AAG7B,QAAO;EAAE;EAA0B;EAAgB"}
@@ -1,25 +1,18 @@
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';
1
+ import { AngularMemoryOutputFiles } from "../utils";
9
2
  interface AngularMemoryPluginOptions {
10
- workspaceRoot?: string;
11
- angularVersion: number;
12
- outputFiles: AngularMemoryOutputFiles;
13
- external?: string[];
3
+ workspaceRoot?: string;
4
+ angularVersion: number;
5
+ outputFiles: AngularMemoryOutputFiles;
6
+ external?: string[];
14
7
  }
15
8
  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;
9
+ name: string;
10
+ enforce: string;
11
+ config: (userConfig: any) => void;
12
+ resolveId: (source: string, importer: string) => Promise<string | undefined>;
13
+ load: (id: string) => {
14
+ code: string;
15
+ map: string | undefined;
16
+ } | undefined;
24
17
  }>;
25
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"angular-memory-plugin.js","names":[],"sources":["../../../../../../../../packages/vitest-angular/src/lib/builders/build/plugins/angular-memory-plugin.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n// import assert from 'node:assert';\nimport { dirname, join, relative, resolve } from 'node:path';\n\nimport { AngularMemoryOutputFiles } from '../utils';\n\ninterface AngularMemoryPluginOptions {\n workspaceRoot?: string;\n angularVersion: number;\n outputFiles: AngularMemoryOutputFiles;\n external?: string[];\n}\n\nexport async function createAngularMemoryPlugin(\n options: AngularMemoryPluginOptions,\n): Promise<{\n name: string;\n enforce: string;\n config: (userConfig: any) => void;\n resolveId: (source: string, importer: string) => Promise<string | undefined>;\n load: (id: string) => { code: string; map: string | undefined } | undefined;\n}> {\n const { normalizePath } = await (Function(\n 'return import(\"vite\")',\n )() as Promise<typeof import('vite')>);\n const { outputFiles, external } = options;\n let config;\n let projectRoot: string;\n const workspaceRoot = options?.workspaceRoot || process.cwd();\n\n return {\n name: 'vite:angular-memory',\n // Ensures plugin hooks run before built-in Vite hooks\n enforce: 'pre',\n config(userConfig: any) {\n config = userConfig;\n projectRoot = resolve(workspaceRoot, config.root || '.');\n },\n async resolveId(source: string, importer: string) {\n // Prevent vite from resolving an explicit external dependency (`externalDependencies` option)\n if (external?.includes(source)) {\n // This is still not ideal since Vite will still transform the import specifier to\n // `/@id/${source}` but is currently closer to a raw external than a resolved file path.\n return source;\n }\n\n if (importer) {\n if (\n source[0] === '.' &&\n normalizePath(importer).startsWith(projectRoot)\n ) {\n // Remove query if present\n const [importerFile] = importer.split('?', 1);\n source =\n '/' + join(dirname(relative(projectRoot, importerFile)), source);\n }\n }\n\n const [file] = source.split('?', 1);\n const fileSplits = file.split('/');\n\n if (outputFiles.has(fileSplits[fileSplits.length - 1])) {\n return fileSplits[fileSplits.length - 1];\n }\n\n if (outputFiles.has(file)) {\n return join(projectRoot, source);\n }\n return;\n },\n load(id: string) {\n const [file] = id.split('?', 1);\n const relativeFile =\n options.angularVersion < 19\n ? normalizePath(relative(projectRoot, file))\n .replace(/^.*\\//, '')\n .replace('.ts', '.js')\n : 'spec-' +\n normalizePath(relative(projectRoot, file))\n .replace('.ts', '.js')\n .replace(/^[./]+/, '_')\n .replace(/\\//g, '-');\n\n const codeContents =\n outputFiles.get(relativeFile)?.contents ||\n outputFiles.get(id)?.contents;\n if (codeContents === undefined) {\n return undefined;\n }\n\n const code = Buffer.from(codeContents).toString('utf-8');\n const mapContents = outputFiles.get(relativeFile + '.map')?.contents;\n\n return {\n // Remove source map URL comments from the code if a sourcemap is present.\n // Vite will inline and add an additional sourcemap URL for the sourcemap.\n code: mapContents\n ? code.replace(/^\\/\\/# sourceMappingURL=[^\\r\\n]*/gm, '')\n : code,\n map: mapContents && Buffer.from(mapContents).toString('utf-8'),\n };\n },\n };\n}\n"],"mappings":";;;;;;;;;AAoBA,eAAsB,0BACpB,SAOC;CACD,MAAM,EAAE,kBAAkB,MAAO,SAC/B,0BACD,EAAE;CACH,MAAM,EAAE,aAAa,aAAa;CAClC,IAAI;CACJ,IAAI;CACJ,MAAM,gBAAgB,SAAS,iBAAiB,QAAQ,KAAK;AAE7D,QAAO;EACL,MAAM;EAEN,SAAS;EACT,OAAO,YAAiB;AACtB,YAAS;AACT,iBAAc,QAAQ,eAAe,OAAO,QAAQ,IAAI;;EAE1D,MAAM,UAAU,QAAgB,UAAkB;AAEhD,OAAI,UAAU,SAAS,OAAO,CAG5B,QAAO;AAGT,OAAI;QAEA,OAAO,OAAO,OACd,cAAc,SAAS,CAAC,WAAW,YAAY,EAC/C;KAEA,MAAM,CAAC,gBAAgB,SAAS,MAAM,KAAK,EAAE;AAC7C,cACE,MAAM,KAAK,QAAQ,SAAS,aAAa,aAAa,CAAC,EAAE,OAAO;;;GAItE,MAAM,CAAC,QAAQ,OAAO,MAAM,KAAK,EAAE;GACnC,MAAM,aAAa,KAAK,MAAM,IAAI;AAElC,OAAI,YAAY,IAAI,WAAW,WAAW,SAAS,GAAG,CACpD,QAAO,WAAW,WAAW,SAAS;AAGxC,OAAI,YAAY,IAAI,KAAK,CACvB,QAAO,KAAK,aAAa,OAAO;;EAIpC,KAAK,IAAY;GACf,MAAM,CAAC,QAAQ,GAAG,MAAM,KAAK,EAAE;GAC/B,MAAM,eACJ,QAAQ,iBAAiB,KACrB,cAAc,SAAS,aAAa,KAAK,CAAC,CACvC,QAAQ,SAAS,GAAG,CACpB,QAAQ,OAAO,MAAM,GACxB,UACA,cAAc,SAAS,aAAa,KAAK,CAAC,CACvC,QAAQ,OAAO,MAAM,CACrB,QAAQ,UAAU,IAAI,CACtB,QAAQ,OAAO,IAAI;GAE5B,MAAM,eACJ,YAAY,IAAI,aAAa,EAAE,YAC/B,YAAY,IAAI,GAAG,EAAE;AACvB,OAAI,iBAAiB,KAAA,EACnB;GAGF,MAAM,OAAO,OAAO,KAAK,aAAa,CAAC,SAAS,QAAQ;GACxD,MAAM,cAAc,YAAY,IAAI,eAAe,OAAO,EAAE;AAE5D,UAAO;IAGL,MAAM,cACF,KAAK,QAAQ,sCAAsC,GAAG,GACtD;IACJ,KAAK,eAAe,OAAO,KAAK,YAAY,CAAC,SAAS,QAAQ;IAC/D;;EAEJ"}
1
+ {"version":3,"file":"angular-memory-plugin.js","names":[],"sources":["../../../../../../src/lib/builders/build/plugins/angular-memory-plugin.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n// import assert from 'node:assert';\nimport { dirname, join, relative, resolve } from 'node:path';\n\nimport { AngularMemoryOutputFiles } from '../utils';\n\ninterface AngularMemoryPluginOptions {\n workspaceRoot?: string;\n angularVersion: number;\n outputFiles: AngularMemoryOutputFiles;\n external?: string[];\n}\n\nexport async function createAngularMemoryPlugin(\n options: AngularMemoryPluginOptions,\n): Promise<{\n name: string;\n enforce: string;\n config: (userConfig: any) => void;\n resolveId: (source: string, importer: string) => Promise<string | undefined>;\n load: (id: string) => { code: string; map: string | undefined } | undefined;\n}> {\n const { normalizePath } = await (Function(\n 'return import(\"vite\")',\n )() as Promise<typeof import('vite')>);\n const { outputFiles, external } = options;\n let config;\n let projectRoot: string;\n const workspaceRoot = options?.workspaceRoot || process.cwd();\n\n return {\n name: 'vite:angular-memory',\n // Ensures plugin hooks run before built-in Vite hooks\n enforce: 'pre',\n config(userConfig: any) {\n config = userConfig;\n projectRoot = resolve(workspaceRoot, config.root || '.');\n },\n async resolveId(source: string, importer: string) {\n // Prevent vite from resolving an explicit external dependency (`externalDependencies` option)\n if (external?.includes(source)) {\n // This is still not ideal since Vite will still transform the import specifier to\n // `/@id/${source}` but is currently closer to a raw external than a resolved file path.\n return source;\n }\n\n if (importer) {\n if (\n source[0] === '.' &&\n normalizePath(importer).startsWith(projectRoot)\n ) {\n // Remove query if present\n const [importerFile] = importer.split('?', 1);\n source =\n '/' + join(dirname(relative(projectRoot, importerFile)), source);\n }\n }\n\n const [file] = source.split('?', 1);\n const fileSplits = file.split('/');\n\n if (outputFiles.has(fileSplits[fileSplits.length - 1])) {\n return fileSplits[fileSplits.length - 1];\n }\n\n if (outputFiles.has(file)) {\n return join(projectRoot, source);\n }\n return;\n },\n load(id: string) {\n const [file] = id.split('?', 1);\n const relativeFile =\n options.angularVersion < 19\n ? normalizePath(relative(projectRoot, file))\n .replace(/^.*\\//, '')\n .replace('.ts', '.js')\n : 'spec-' +\n normalizePath(relative(projectRoot, file))\n .replace('.ts', '.js')\n .replace(/^[./]+/, '_')\n .replace(/\\//g, '-');\n\n const codeContents =\n outputFiles.get(relativeFile)?.contents ||\n outputFiles.get(id)?.contents;\n if (codeContents === undefined) {\n return undefined;\n }\n\n const code = Buffer.from(codeContents).toString('utf-8');\n const mapContents = outputFiles.get(relativeFile + '.map')?.contents;\n\n return {\n // Remove source map URL comments from the code if a sourcemap is present.\n // Vite will inline and add an additional sourcemap URL for the sourcemap.\n code: mapContents\n ? code.replace(/^\\/\\/# sourceMappingURL=[^\\r\\n]*/gm, '')\n : code,\n map: mapContents && Buffer.from(mapContents).toString('utf-8'),\n };\n },\n };\n}\n"],"mappings":";;;;;;;;;AAoBA,eAAsB,0BACpB,SAOC;CACD,MAAM,EAAE,kBAAkB,MAAO,SAC/B,0BACD,EAAE;CACH,MAAM,EAAE,aAAa,aAAa;CAClC,IAAI;CACJ,IAAI;CACJ,MAAM,gBAAgB,SAAS,iBAAiB,QAAQ,KAAK;AAE7D,QAAO;EACL,MAAM;EAEN,SAAS;EACT,OAAO,YAAiB;AACtB,YAAS;AACT,iBAAc,QAAQ,eAAe,OAAO,QAAQ,IAAI;;EAE1D,MAAM,UAAU,QAAgB,UAAkB;AAEhD,OAAI,UAAU,SAAS,OAAO,CAG5B,QAAO;AAGT,OAAI;QAEA,OAAO,OAAO,OACd,cAAc,SAAS,CAAC,WAAW,YAAY,EAC/C;KAEA,MAAM,CAAC,gBAAgB,SAAS,MAAM,KAAK,EAAE;AAC7C,cACE,MAAM,KAAK,QAAQ,SAAS,aAAa,aAAa,CAAC,EAAE,OAAO;;;GAItE,MAAM,CAAC,QAAQ,OAAO,MAAM,KAAK,EAAE;GACnC,MAAM,aAAa,KAAK,MAAM,IAAI;AAElC,OAAI,YAAY,IAAI,WAAW,WAAW,SAAS,GAAG,CACpD,QAAO,WAAW,WAAW,SAAS;AAGxC,OAAI,YAAY,IAAI,KAAK,CACvB,QAAO,KAAK,aAAa,OAAO;;EAIpC,KAAK,IAAY;GACf,MAAM,CAAC,QAAQ,GAAG,MAAM,KAAK,EAAE;GAC/B,MAAM,eACJ,QAAQ,iBAAiB,KACrB,cAAc,SAAS,aAAa,KAAK,CAAC,CACvC,QAAQ,SAAS,GAAG,CACpB,QAAQ,OAAO,MAAM,GACxB,UACA,cAAc,SAAS,aAAa,KAAK,CAAC,CACvC,QAAQ,OAAO,MAAM,CACrB,QAAQ,UAAU,IAAI,CACtB,QAAQ,OAAO,IAAI;GAE5B,MAAM,eACJ,YAAY,IAAI,aAAa,EAAE,YAC/B,YAAY,IAAI,GAAG,EAAE;AACvB,OAAI,iBAAiB,KAAA,EACnB;GAGF,MAAM,OAAO,OAAO,KAAK,aAAa,CAAC,SAAS,QAAQ;GACxD,MAAM,cAAc,YAAY,IAAI,eAAe,OAAO,EAAE;AAE5D,UAAO;IAGL,MAAM,cACF,KAAK,QAAQ,sCAAsC,GAAG,GACtD;IACJ,KAAK,eAAe,OAAO,KAAK,YAAY,CAAC,SAAS,QAAQ;IAC/D;;EAEJ"}
@@ -1,10 +1,10 @@
1
- import { type SourceMap } from 'oxc-transform';
1
+ import { type SourceMap } from "oxc-transform";
2
2
  export declare function downlevelPlugin(): {
3
- name: string;
4
- transform(_code: string, id: string): {
5
- code: string;
6
- map: SourceMap | undefined;
7
- } | undefined;
3
+ name: string;
4
+ transform(_code: string, id: string): {
5
+ code: string;
6
+ map: SourceMap | undefined;
7
+ } | undefined;
8
8
  };
9
9
  /** @deprecated Use {@link downlevelPlugin} instead. */
10
10
  export declare const esbuildDownlevelPlugin: typeof downlevelPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"downlevel-plugin.js","names":[],"sources":["../../../../../../../../packages/vitest-angular/src/lib/builders/build/plugins/downlevel-plugin.ts"],"sourcesContent":["import { type SourceMap, transformSync } from 'oxc-transform';\n\nexport function downlevelPlugin(): {\n name: string;\n transform(\n _code: string,\n id: string,\n ): { code: string; map: SourceMap | undefined } | undefined;\n} {\n return {\n name: 'analogjs-vitest-oxc-downlevel-plugin',\n transform(\n _code: string,\n id: string,\n ): { code: string; map: SourceMap | undefined } | undefined {\n if (_code.includes('async (')) {\n const { code, map } = transformSync(id, _code, {\n lang: 'js',\n target: 'es2016',\n sourcemap: true,\n });\n\n return {\n code,\n map,\n };\n }\n\n return undefined;\n },\n };\n}\n\n/** @deprecated Use {@link downlevelPlugin} instead. */\nexport const esbuildDownlevelPlugin: typeof downlevelPlugin = downlevelPlugin;\n"],"mappings":";;AAEA,SAAgB,kBAMd;AACA,QAAO;EACL,MAAM;EACN,UACE,OACA,IAC0D;AAC1D,OAAI,MAAM,SAAS,UAAU,EAAE;IAC7B,MAAM,EAAE,MAAM,QAAQ,cAAc,IAAI,OAAO;KAC7C,MAAM;KACN,QAAQ;KACR,WAAW;KACZ,CAAC;AAEF,WAAO;KACL;KACA;KACD;;;EAKN"}
1
+ {"version":3,"file":"downlevel-plugin.js","names":[],"sources":["../../../../../../src/lib/builders/build/plugins/downlevel-plugin.ts"],"sourcesContent":["import { type SourceMap, transformSync } from 'oxc-transform';\n\nexport function downlevelPlugin(): {\n name: string;\n transform(\n _code: string,\n id: string,\n ): { code: string; map: SourceMap | undefined } | undefined;\n} {\n return {\n name: 'analogjs-vitest-oxc-downlevel-plugin',\n transform(\n _code: string,\n id: string,\n ): { code: string; map: SourceMap | undefined } | undefined {\n if (_code.includes('async (')) {\n const { code, map } = transformSync(id, _code, {\n lang: 'js',\n target: 'es2016',\n sourcemap: true,\n });\n\n return {\n code,\n map,\n };\n }\n\n return undefined;\n },\n };\n}\n\n/** @deprecated Use {@link downlevelPlugin} instead. */\nexport const esbuildDownlevelPlugin: typeof downlevelPlugin = downlevelPlugin;\n"],"mappings":";;AAEA,SAAgB,kBAMd;AACA,QAAO;EACL,MAAM;EACN,UACE,OACA,IAC0D;AAC1D,OAAI,MAAM,SAAS,UAAU,EAAE;IAC7B,MAAM,EAAE,MAAM,QAAQ,cAAc,IAAI,OAAO;KAC7C,MAAM;KACN,QAAQ;KACR,WAAW;KACZ,CAAC;AAEF,WAAO;KACL;KACA;KACD;;;EAKN"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","names":[],"sources":["../../../../../../../packages/vitest-angular/src/lib/builders/build/schema.json"],"sourcesContent":["{\n \"$schema\": \"http://json-schema.org/draft-07/schema\",\n \"title\": \"Vitest schema for Test Facade.\",\n \"description\": \"Vitest target options\",\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.config@(.js|.ts|.mts)\",\n \"aliases\": [\"config\"]\n },\n \"include\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"default\": [\"src/**/*.spec.ts\"],\n \"description\": \"Globs of files to include, relative to project root.\"\n },\n \"exclude\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"default\": [\"node_modules\", \"dist\", \".idea\", \".git\", \".cache\"],\n \"description\": \"Globs of files to exclude, relative to the project root.\"\n },\n \"setupFile\": {\n \"type\": \"string\",\n \"description\": \"The path to the setup file.\",\n \"default\": \"src/test-setup.ts\"\n },\n \"tsConfig\": {\n \"type\": \"string\",\n \"description\": \"The relative path to the TypeScript configuration file for running tests.\",\n \"default\": \"tsconfig.spec.json\"\n },\n \"watch\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Run the tests in watch mode\"\n }\n },\n \"additionalProperties\": true\n}\n"],"mappings":""}
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../../../../../src/lib/builders/build/schema.json"],"sourcesContent":["{\n \"$schema\": \"http://json-schema.org/draft-07/schema\",\n \"title\": \"Vitest schema for Test Facade.\",\n \"description\": \"Vitest target options\",\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.config@(.js|.ts|.mts)\",\n \"aliases\": [\"config\"]\n },\n \"include\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"default\": [\"src/**/*.spec.ts\"],\n \"description\": \"Globs of files to include, relative to project root.\"\n },\n \"exclude\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"default\": [\"node_modules\", \"dist\", \".idea\", \".git\", \".cache\"],\n \"description\": \"Globs of files to exclude, relative to the project root.\"\n },\n \"setupFile\": {\n \"type\": \"string\",\n \"description\": \"The path to the setup file.\",\n \"default\": \"src/test-setup.ts\"\n },\n \"tsConfig\": {\n \"type\": \"string\",\n \"description\": \"The relative path to the TypeScript configuration file for running tests.\",\n \"default\": \"tsconfig.spec.json\"\n },\n \"watch\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Run the tests in watch mode\"\n }\n },\n \"additionalProperties\": true\n}\n"],"mappings":""}
@@ -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
+ }
@@ -1,5 +1,5 @@
1
1
  export type AngularMemoryOutputFiles = Map<string, {
2
- contents: Uint8Array;
3
- hash: string;
4
- servable: boolean;
2
+ contents: Uint8Array;
3
+ hash: string;
4
+ servable: boolean;
5
5
  }>;
@@ -1,9 +1,9 @@
1
- import { VitestSchema } from './schema';
1
+ import { VitestSchema } from "./schema";
2
2
  export declare enum ResultKind {
3
- Failure = 0,
4
- Full = 1,
5
- Incremental = 2,
6
- ComponentUpdate = 3
3
+ Failure = 0,
4
+ Full = 1,
5
+ Incremental = 2,
6
+ ComponentUpdate = 3
7
7
  }
8
8
  export declare function getExtraArgs(options: VitestSchema): Promise<Record<string, any>>;
9
9
  declare const _default: unknown;
@@ -1,11 +1,12 @@
1
- import { __require } from "../../../../_virtual/_rolldown/runtime.js";
2
1
  import { createAngularMemoryPlugin } from "./plugins/angular-memory-plugin.js";
3
2
  import { downlevelPlugin } from "./plugins/downlevel-plugin.js";
4
3
  import { getBuildApplicationFunction } from "./devkit.js";
5
4
  import { createBuilder } from "@angular-devkit/architect";
5
+ import { createRequire } from "node:module";
6
6
  import * as path from "path";
7
7
  import { globSync } from "tinyglobby";
8
8
  //#region packages/vitest-angular/src/lib/builders/build/vitest.impl.ts
9
+ var _require = createRequire(import.meta.url);
9
10
  var ResultKind = /* @__PURE__ */ function(ResultKind) {
10
11
  ResultKind[ResultKind["Failure"] = 0] = "Failure";
11
12
  ResultKind[ResultKind["Full"] = 1] = "Full";
@@ -130,7 +131,7 @@ async function getExtraArgs(options) {
130
131
  * - ignore: options.exclude - Excludes files matching the exclude patterns
131
132
  */
132
133
  function findIncludes(options) {
133
- const { normalizePath } = __require("vite");
134
+ const { normalizePath } = _require("vite");
134
135
  const projectRoot = normalizePath(path.resolve(options.workspaceRoot, options.projectRoot));
135
136
  return globSync([...options.include.map((glob) => `${projectRoot}/${glob}`)], {
136
137
  dot: true,
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.impl.js","names":[],"sources":["../../../../../../../packages/vitest-angular/src/lib/builders/build/vitest.impl.ts"],"sourcesContent":["import { createBuilder } from '@angular-devkit/architect';\nimport * as path from 'path';\nimport type { Vitest } from 'vitest/node';\nimport type { Plugin, UserConfig } from 'vite';\nimport type { TestUserConfig as VitestConfig } from 'vitest/node';\nimport { globSync } from 'tinyglobby';\n\nimport { VitestSchema } from './schema';\nimport { createAngularMemoryPlugin } from './plugins/angular-memory-plugin';\nimport { downlevelPlugin } from './plugins/downlevel-plugin';\nimport { getBuildApplicationFunction } from './devkit';\n\nexport enum ResultKind {\n Failure,\n Full,\n Incremental,\n ComponentUpdate,\n}\n\nprocess.env['VITE_CJS_IGNORE_WARNING'] = 'true';\n\nasync function* vitestApplicationBuilder(\n options: VitestSchema,\n context: any,\n): AsyncIterable<{ success: boolean }> {\n process.env['TEST'] = 'true';\n process.env['VITEST'] = 'true';\n\n const { buildApplicationInternal, angularVersion } =\n await getBuildApplicationFunction();\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")',\n )() as Promise<typeof import('vitest/node')>);\n\n const projectConfig = await context.getProjectMetadata(context.target);\n const extraArgs = await getExtraArgs(options);\n const workspaceRoot = context.workspaceRoot;\n const projectRoot = projectConfig['root'];\n const setupFile = path.relative(projectRoot, options.setupFile);\n\n const config: VitestConfig = {\n root: `${projectRoot || '.'}`,\n watch: options.watch === true,\n config: options.configFile,\n setupFiles: [setupFile],\n globals: true,\n pool: 'vmThreads',\n reporters: ['default'],\n environment: 'jsdom',\n exclude: options?.exclude || [],\n ...extraArgs,\n };\n\n const includes: string[] = findIncludes({\n workspaceRoot,\n projectRoot,\n include: options.include,\n exclude: options.exclude || [],\n });\n\n const testFiles = [\n path.relative(workspaceRoot, options.setupFile),\n ...includes.map((inc) => path.relative(workspaceRoot, inc)),\n ];\n\n const entryPoints = generateEntryPoints({\n projectRoot: projectRoot,\n testFiles,\n context,\n angularVersion,\n });\n\n const outputFiles = new Map();\n\n const viteConfig: any = {\n plugins: [\n (await createAngularMemoryPlugin({\n angularVersion,\n workspaceRoot,\n outputFiles,\n })) as Plugin,\n downlevelPlugin(),\n ],\n };\n\n let server: Vitest | undefined;\n for await (const buildOutput of buildApplicationInternal(\n {\n aot: false,\n index: false,\n progress: false,\n prerender: false,\n optimization: false,\n outputPath: `.angular/.vitest/${projectConfig['name']}`,\n outExtension: 'mjs',\n outputHashing: 2, // None\n tsConfig: path.relative(workspaceRoot, options.tsConfig),\n watch: options.watch === true,\n entryPoints,\n allowedCommonJsDependencies: ['@analogjs/vitest-angular/setup-zone'],\n sourceMap: {\n scripts: true,\n styles: false,\n vendor: false,\n },\n },\n context,\n )) {\n if (buildOutput.kind === ResultKind.Failure) {\n return { success: false };\n } else if (\n buildOutput.kind === ResultKind.Incremental ||\n buildOutput.kind === ResultKind.Full\n ) {\n if (buildOutput.kind === ResultKind.Full) {\n outputFiles.clear();\n Object.keys(buildOutput.files).forEach((key) => {\n outputFiles.set(key, buildOutput.files[key]);\n });\n } else {\n Object.keys(buildOutput.files).forEach((key) => {\n outputFiles.set(key, buildOutput.files[key]);\n });\n }\n }\n\n if (options.watch) {\n if (!server) {\n server = await startVitest('test', [], config, viteConfig);\n } else {\n await server.start([]);\n }\n\n yield { success: true };\n } else {\n server = await startVitest('test', [], config, viteConfig);\n\n const success = server?.state.getCountOfFailedTests() === 0;\n\n yield { success };\n }\n }\n\n yield { success: true };\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\n/**\n * Finds test files to include in the Vitest run using tinyglobby pattern matching.\n *\n * This function:\n * 1. Normalizes the project root path to ensure consistent path separators\n * 2. Constructs glob patterns by prepending the project root to each include pattern\n * 3. Uses globSync from tinyglobby to find all files matching the patterns while respecting exclusions\n *\n * @param options Configuration object containing workspace and project paths, include/exclude patterns\n * @returns Array of absolute file paths that match the include patterns\n *\n * Sample output paths:\n * - /workspace/apps/my-app/src/app/app.component.spec.ts\n * - /workspace/apps/my-app/src/app/services/data.service.spec.ts\n * - /workspace/apps/my-app/src/app/components/header/header.component.test.ts\n * - /workspace/apps/my-app/src/app/utils/helpers.spec.ts\n *\n * tinyglobby vs fast-glob comparison:\n * - Both support the same glob patterns and ignore functionality\n * - Both are fast and efficient for file matching\n * - tinyglobby is a lighter alternative with similar API\n * - tinyglobby's globSync returns absolute paths by default when absolute: true is set\n * - tinyglobby has fewer dependencies and smaller bundle size\n *\n * globSync options explained:\n * - dot: true - Includes files/directories that start with a dot (e.g., .env.test)\n * - absolute: true - Returns absolute file paths instead of relative paths\n * - ignore: options.exclude - Excludes files matching the exclude patterns\n */\nfunction findIncludes(options: {\n workspaceRoot: string;\n projectRoot: string;\n include: string[];\n exclude: string[];\n}) {\n const { normalizePath } = require('vite');\n\n // Normalize project root path to ensure consistent path separators across platforms\n const projectRoot = normalizePath(\n path.resolve(options.workspaceRoot, options.projectRoot),\n );\n\n // Construct glob patterns by prepending project root to each include pattern\n // Example: if include=['**/*.spec.ts'] and projectRoot='/workspace/apps/my-app'\n // Result: ['/workspace/apps/my-app/**/*.spec.ts']\n const globs = [...options.include.map((glob) => `${projectRoot}/${glob}`)];\n\n // Use globSync from tinyglobby to find all files matching the patterns\n // Returns absolute file paths that match the include patterns while respecting exclusions\n return globSync(globs, {\n dot: true, // Include files/directories starting with dot (e.g., .env.test)\n absolute: true, // Return absolute file paths\n ignore: options.exclude, // Exclude files matching these patterns\n });\n}\n\nfunction generateEntryPoints({\n projectRoot,\n testFiles,\n context,\n angularVersion,\n}: {\n projectRoot: string;\n testFiles: string[];\n context: any;\n angularVersion: number;\n}) {\n if (angularVersion < 19) {\n return testFiles;\n }\n\n const seen = new Set();\n\n return new Map(\n Array.from(testFiles, (testFile) => {\n const relativePath = path\n .relative(\n testFile.startsWith(projectRoot)\n ? projectRoot\n : context.workspaceRoot,\n testFile,\n )\n .replace(/^[./]+/, '_')\n .replace(/\\//g, '-');\n\n let uniqueName = `spec-${path.basename(\n relativePath,\n path.extname(relativePath),\n )}`;\n let suffix = 2;\n while (seen.has(uniqueName)) {\n uniqueName = `${relativePath}-${suffix}`;\n ++suffix;\n }\n seen.add(uniqueName);\n\n return [uniqueName, testFile];\n }),\n );\n}\n\nexport default createBuilder(vitestApplicationBuilder) as unknown;\n"],"mappings":"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"}
1
+ {"version":3,"file":"vitest.impl.js","names":[],"sources":["../../../../../src/lib/builders/build/vitest.impl.ts"],"sourcesContent":["import { createBuilder } from '@angular-devkit/architect';\nimport { createRequire } from 'node:module';\nimport * as path from 'path';\nimport type { Vitest } from 'vitest/node';\nimport type { Plugin, UserConfig } from 'vite';\nimport type { TestUserConfig as VitestConfig } from 'vitest/node';\nimport { globSync } from 'tinyglobby';\n\nimport { VitestSchema } from './schema';\nimport { createAngularMemoryPlugin } from './plugins/angular-memory-plugin';\nimport { downlevelPlugin } from './plugins/downlevel-plugin';\nimport { getBuildApplicationFunction } from './devkit';\n\nconst _require = createRequire(import.meta.url);\n\nexport enum ResultKind {\n Failure,\n Full,\n Incremental,\n ComponentUpdate,\n}\n\nprocess.env['VITE_CJS_IGNORE_WARNING'] = 'true';\n\nasync function* vitestApplicationBuilder(\n options: VitestSchema,\n context: any,\n): AsyncIterable<{ success: boolean }> {\n process.env['TEST'] = 'true';\n process.env['VITEST'] = 'true';\n\n const { buildApplicationInternal, angularVersion } =\n await getBuildApplicationFunction();\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")',\n )() as Promise<typeof import('vitest/node')>);\n\n const projectConfig = await context.getProjectMetadata(context.target);\n const extraArgs = await getExtraArgs(options);\n const workspaceRoot = context.workspaceRoot;\n const projectRoot = projectConfig['root'];\n const setupFile = path.relative(projectRoot, options.setupFile);\n\n const config: VitestConfig = {\n root: `${projectRoot || '.'}`,\n watch: options.watch === true,\n config: options.configFile,\n setupFiles: [setupFile],\n globals: true,\n pool: 'vmThreads',\n reporters: ['default'],\n environment: 'jsdom',\n exclude: options?.exclude || [],\n ...extraArgs,\n };\n\n const includes: string[] = findIncludes({\n workspaceRoot,\n projectRoot,\n include: options.include,\n exclude: options.exclude || [],\n });\n\n const testFiles = [\n path.relative(workspaceRoot, options.setupFile),\n ...includes.map((inc) => path.relative(workspaceRoot, inc)),\n ];\n\n const entryPoints = generateEntryPoints({\n projectRoot: projectRoot,\n testFiles,\n context,\n angularVersion,\n });\n\n const outputFiles = new Map();\n\n const viteConfig: any = {\n plugins: [\n (await createAngularMemoryPlugin({\n angularVersion,\n workspaceRoot,\n outputFiles,\n })) as Plugin,\n downlevelPlugin(),\n ],\n };\n\n let server: Vitest | undefined;\n for await (const buildOutput of buildApplicationInternal(\n {\n aot: false,\n index: false,\n progress: false,\n prerender: false,\n optimization: false,\n outputPath: `.angular/.vitest/${projectConfig['name']}`,\n outExtension: 'mjs',\n outputHashing: 2, // None\n tsConfig: path.relative(workspaceRoot, options.tsConfig),\n watch: options.watch === true,\n entryPoints,\n allowedCommonJsDependencies: ['@analogjs/vitest-angular/setup-zone'],\n sourceMap: {\n scripts: true,\n styles: false,\n vendor: false,\n },\n },\n context,\n )) {\n if (buildOutput.kind === ResultKind.Failure) {\n return { success: false };\n } else if (\n buildOutput.kind === ResultKind.Incremental ||\n buildOutput.kind === ResultKind.Full\n ) {\n if (buildOutput.kind === ResultKind.Full) {\n outputFiles.clear();\n Object.keys(buildOutput.files).forEach((key) => {\n outputFiles.set(key, buildOutput.files[key]);\n });\n } else {\n Object.keys(buildOutput.files).forEach((key) => {\n outputFiles.set(key, buildOutput.files[key]);\n });\n }\n }\n\n if (options.watch) {\n if (!server) {\n server = await startVitest('test', [], config, viteConfig);\n } else {\n await server.start([]);\n }\n\n yield { success: true };\n } else {\n server = await startVitest('test', [], config, viteConfig);\n\n const success = server?.state.getCountOfFailedTests() === 0;\n\n yield { success };\n }\n }\n\n yield { success: true };\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\n/**\n * Finds test files to include in the Vitest run using tinyglobby pattern matching.\n *\n * This function:\n * 1. Normalizes the project root path to ensure consistent path separators\n * 2. Constructs glob patterns by prepending the project root to each include pattern\n * 3. Uses globSync from tinyglobby to find all files matching the patterns while respecting exclusions\n *\n * @param options Configuration object containing workspace and project paths, include/exclude patterns\n * @returns Array of absolute file paths that match the include patterns\n *\n * Sample output paths:\n * - /workspace/apps/my-app/src/app/app.component.spec.ts\n * - /workspace/apps/my-app/src/app/services/data.service.spec.ts\n * - /workspace/apps/my-app/src/app/components/header/header.component.test.ts\n * - /workspace/apps/my-app/src/app/utils/helpers.spec.ts\n *\n * tinyglobby vs fast-glob comparison:\n * - Both support the same glob patterns and ignore functionality\n * - Both are fast and efficient for file matching\n * - tinyglobby is a lighter alternative with similar API\n * - tinyglobby's globSync returns absolute paths by default when absolute: true is set\n * - tinyglobby has fewer dependencies and smaller bundle size\n *\n * globSync options explained:\n * - dot: true - Includes files/directories that start with a dot (e.g., .env.test)\n * - absolute: true - Returns absolute file paths instead of relative paths\n * - ignore: options.exclude - Excludes files matching the exclude patterns\n */\nfunction findIncludes(options: {\n workspaceRoot: string;\n projectRoot: string;\n include: string[];\n exclude: string[];\n}) {\n const { normalizePath } = _require('vite');\n\n // Normalize project root path to ensure consistent path separators across platforms\n const projectRoot = normalizePath(\n path.resolve(options.workspaceRoot, options.projectRoot),\n );\n\n // Construct glob patterns by prepending project root to each include pattern\n // Example: if include=['**/*.spec.ts'] and projectRoot='/workspace/apps/my-app'\n // Result: ['/workspace/apps/my-app/**/*.spec.ts']\n const globs = [...options.include.map((glob) => `${projectRoot}/${glob}`)];\n\n // Use globSync from tinyglobby to find all files matching the patterns\n // Returns absolute file paths that match the include patterns while respecting exclusions\n return globSync(globs, {\n dot: true, // Include files/directories starting with dot (e.g., .env.test)\n absolute: true, // Return absolute file paths\n ignore: options.exclude, // Exclude files matching these patterns\n });\n}\n\nfunction generateEntryPoints({\n projectRoot,\n testFiles,\n context,\n angularVersion,\n}: {\n projectRoot: string;\n testFiles: string[];\n context: any;\n angularVersion: number;\n}) {\n if (angularVersion < 19) {\n return testFiles;\n }\n\n const seen = new Set();\n\n return new Map(\n Array.from(testFiles, (testFile) => {\n const relativePath = path\n .relative(\n testFile.startsWith(projectRoot)\n ? projectRoot\n : context.workspaceRoot,\n testFile,\n )\n .replace(/^[./]+/, '_')\n .replace(/\\//g, '-');\n\n let uniqueName = `spec-${path.basename(\n relativePath,\n path.extname(relativePath),\n )}`;\n let suffix = 2;\n while (seen.has(uniqueName)) {\n uniqueName = `${relativePath}-${suffix}`;\n ++suffix;\n }\n seen.add(uniqueName);\n\n return [uniqueName, testFile];\n }),\n );\n}\n\nexport default createBuilder(vitestApplicationBuilder) as unknown;\n"],"mappings":"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"}
@@ -1 +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
+ {"version":3,"file":"schema.js","names":[],"sources":["../../../../../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":""}
@@ -0,0 +1,47 @@
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
+ }
45
+ },
46
+ "required": []
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;