@nx/vite 17.0.2 → 17.0.4

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 (116) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -4
  3. package/generators.json +3 -3
  4. package/migrations.json +90 -0
  5. package/package.json +9 -7
  6. package/plugin.d.ts +1 -0
  7. package/plugin.js +21 -0
  8. package/plugin.js.map +1 -0
  9. package/plugins/nx-tsconfig-paths.plugin.js +9 -5
  10. package/plugins/nx-tsconfig-paths.plugin.js.map +1 -1
  11. package/plugins/rollup-replace-files.plugin.d.ts +3 -3
  12. package/plugins/rollup-replace-files.plugin.js +2 -2
  13. package/plugins/rollup-replace-files.plugin.js.map +1 -1
  14. package/src/executors/build/build.impl.d.ts +5 -1
  15. package/src/executors/build/build.impl.js +90 -21
  16. package/src/executors/build/build.impl.js.map +1 -1
  17. package/src/executors/build/schema.d.ts +5 -18
  18. package/src/executors/build/schema.json +4 -106
  19. package/src/executors/dev-server/dev-server.impl.js +74 -9
  20. package/src/executors/dev-server/dev-server.impl.js.map +1 -1
  21. package/src/executors/dev-server/schema.d.ts +0 -10
  22. package/src/executors/dev-server/schema.json +0 -63
  23. package/src/executors/preview-server/preview-server.impl.d.ts +1 -1
  24. package/src/executors/preview-server/preview-server.impl.js +79 -15
  25. package/src/executors/preview-server/preview-server.impl.js.map +1 -1
  26. package/src/executors/preview-server/schema.d.ts +0 -7
  27. package/src/executors/preview-server/schema.json +1 -51
  28. package/src/executors/test/lib/nx-reporter.d.ts +14 -0
  29. package/src/executors/test/lib/nx-reporter.js +40 -0
  30. package/src/executors/test/lib/nx-reporter.js.map +1 -0
  31. package/src/executors/test/lib/utils.d.ts +4 -0
  32. package/src/executors/test/lib/utils.js +77 -0
  33. package/src/executors/test/lib/utils.js.map +1 -0
  34. package/src/executors/test/schema.d.ts +3 -8
  35. package/src/executors/test/schema.json +11 -43
  36. package/src/executors/test/vitest.impl.js +20 -112
  37. package/src/executors/test/vitest.impl.js.map +1 -1
  38. package/src/generators/configuration/configuration.d.ts +2 -1
  39. package/src/generators/configuration/configuration.js +49 -87
  40. package/src/generators/configuration/configuration.js.map +1 -1
  41. package/src/generators/configuration/lib/convert-non-vite.d.ts +5 -0
  42. package/src/generators/configuration/lib/convert-non-vite.js +62 -0
  43. package/src/generators/configuration/lib/convert-non-vite.js.map +1 -0
  44. package/src/generators/configuration/schema.d.ts +1 -3
  45. package/src/generators/configuration/schema.json +0 -12
  46. package/src/generators/init/init.d.ts +4 -3
  47. package/src/generators/init/init.js +50 -67
  48. package/src/generators/init/init.js.map +1 -1
  49. package/src/generators/init/lib/utils.d.ts +6 -0
  50. package/src/generators/init/lib/utils.js +80 -0
  51. package/src/generators/init/lib/utils.js.map +1 -0
  52. package/src/generators/init/schema.d.ts +5 -5
  53. package/src/generators/init/schema.json +17 -20
  54. package/src/generators/vitest/files/tsconfig.spec.json__tmpl__ +2 -1
  55. package/src/generators/vitest/schema.d.ts +2 -1
  56. package/src/generators/vitest/schema.json +2 -2
  57. package/src/generators/vitest/vitest-generator.d.ts +2 -1
  58. package/src/generators/vitest/vitest-generator.js +34 -10
  59. package/src/generators/vitest/vitest-generator.js.map +1 -1
  60. package/src/migrations/update-15-3-1/update-vite-tsconfig-paths.js.map +1 -1
  61. package/src/migrations/update-16-6-0-change-ts-paths-plugin/change-ts-paths-plugin.js +3 -17
  62. package/src/migrations/update-16-6-0-change-ts-paths-plugin/change-ts-paths-plugin.js.map +1 -1
  63. package/src/migrations/update-17-1-0/move-target-defaults.d.ts +2 -0
  64. package/src/migrations/update-17-1-0/move-target-defaults.js +77 -0
  65. package/src/migrations/update-17-1-0/move-target-defaults.js.map +1 -0
  66. package/src/migrations/update-17-2-0/lib/add-file-replacements.d.ts +2 -0
  67. package/src/migrations/update-17-2-0/lib/add-file-replacements.js +67 -0
  68. package/src/migrations/update-17-2-0/lib/add-file-replacements.js.map +1 -0
  69. package/src/migrations/update-17-2-0/lib/edit-build-config.d.ts +2 -0
  70. package/src/migrations/update-17-2-0/lib/edit-build-config.js +121 -0
  71. package/src/migrations/update-17-2-0/lib/edit-build-config.js.map +1 -0
  72. package/src/migrations/update-17-2-0/lib/edit-test-config.d.ts +2 -0
  73. package/src/migrations/update-17-2-0/lib/edit-test-config.js +83 -0
  74. package/src/migrations/update-17-2-0/lib/edit-test-config.js.map +1 -0
  75. package/src/migrations/update-17-2-0/update-vite-config.d.ts +5 -0
  76. package/src/migrations/update-17-2-0/update-vite-config.js +68 -0
  77. package/src/migrations/update-17-2-0/update-vite-config.js.map +1 -0
  78. package/src/migrations/update-17-3-0/lib/fix-coverage-and-reporters.d.ts +3 -0
  79. package/src/migrations/update-17-3-0/lib/fix-coverage-and-reporters.js +117 -0
  80. package/src/migrations/update-17-3-0/lib/fix-coverage-and-reporters.js.map +1 -0
  81. package/src/migrations/update-17-3-0/vitest-coverage-and-reporters.d.ts +2 -0
  82. package/src/migrations/update-17-3-0/vitest-coverage-and-reporters.js +45 -0
  83. package/src/migrations/update-17-3-0/vitest-coverage-and-reporters.js.map +1 -0
  84. package/src/plugins/plugin.d.ts +10 -0
  85. package/src/plugins/plugin.js +226 -0
  86. package/src/plugins/plugin.js.map +1 -0
  87. package/src/utils/ensure-dependencies.d.ts +8 -0
  88. package/src/utils/ensure-dependencies.js +34 -0
  89. package/src/utils/ensure-dependencies.js.map +1 -0
  90. package/src/utils/executor-utils.d.ts +2 -0
  91. package/src/utils/executor-utils.js +22 -7
  92. package/src/utils/executor-utils.js.map +1 -1
  93. package/src/utils/find-vite-config.d.ts +3 -0
  94. package/src/utils/find-vite-config.js +46 -0
  95. package/src/utils/find-vite-config.js.map +1 -0
  96. package/src/utils/generator-utils.d.ts +10 -12
  97. package/src/utils/generator-utils.js +135 -213
  98. package/src/utils/generator-utils.js.map +1 -1
  99. package/src/utils/options-utils.d.ts +3 -19
  100. package/src/utils/options-utils.js +25 -68
  101. package/src/utils/options-utils.js.map +1 -1
  102. package/src/utils/test-files/react-lib-non-buildable-jest.json +1 -4
  103. package/src/utils/test-files/react-lib-non-buildable-vitest.json +1 -4
  104. package/src/utils/test-files/react-mixed-project.config.json +1 -6
  105. package/src/utils/test-files/react-vite-project.config.json +1 -4
  106. package/src/utils/test-files/unknown-project.config.json +1 -4
  107. package/src/utils/test-utils.d.ts +1 -1
  108. package/src/utils/test-utils.js +10 -18
  109. package/src/utils/test-utils.js.map +1 -1
  110. package/src/utils/versions.d.ts +7 -9
  111. package/src/utils/versions.js +7 -15
  112. package/src/utils/versions.js.map +1 -1
  113. package/src/utils/vite-config-edit-utils.js +1 -1
  114. package/src/utils/vite-config-edit-utils.js.map +1 -1
  115. package/src/utils/test-files/react-project.config.json +0 -85
  116. package/src/utils/test-files/web-project.config.json +0 -72
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "version": 2,
4
4
  "cli": "nx",
5
5
  "title": "Vite Preview Server",
@@ -25,56 +25,6 @@
25
25
  "description": "Path to the proxy configuration file.",
26
26
  "x-completion-type": "file"
27
27
  },
28
- "port": {
29
- "type": "number",
30
- "description": "Port to listen on."
31
- },
32
- "host": {
33
- "description": "Specify which IP addresses the server should listen on.",
34
- "oneOf": [
35
- {
36
- "type": "boolean"
37
- },
38
- {
39
- "type": "string"
40
- }
41
- ]
42
- },
43
- "https": {
44
- "oneOf": [
45
- {
46
- "type": "boolean"
47
- },
48
- {
49
- "type": "object"
50
- }
51
- ],
52
- "description": "Serve using HTTPS. https://vitejs.dev/config/server-options.html#server-https"
53
- },
54
- "open": {
55
- "description": "Automatically open the app in the browser on server start. When the value is a string, it will be used as the URL's pathname.",
56
- "oneOf": [
57
- {
58
- "type": "boolean"
59
- },
60
- {
61
- "type": "string"
62
- }
63
- ]
64
- },
65
- "logLevel": {
66
- "type": "string",
67
- "description": "Adjust console output verbosity.",
68
- "enum": ["info", "warn", "error", "silent"]
69
- },
70
- "mode": {
71
- "type": "string",
72
- "description": "Mode to run the server in."
73
- },
74
- "clearScreen": {
75
- "description": "Set to false to prevent Vite from clearing the terminal screen when logging certain messages.",
76
- "type": "boolean"
77
- },
78
28
  "staticFilePath": {
79
29
  "type": "string",
80
30
  "description": "Path where the build artifacts are located. If not provided then it will be infered from the buildTarget executor options as outputPath",
@@ -0,0 +1,14 @@
1
+ import type { File, Reporter } from 'vitest';
2
+ export declare class NxReporter implements Reporter {
3
+ private watch;
4
+ deferred: {
5
+ promise: Promise<boolean>;
6
+ resolve: (val: boolean) => void;
7
+ };
8
+ constructor(watch: boolean);
9
+ [Symbol.asyncIterator](): AsyncGenerator<{
10
+ hasErrors: boolean;
11
+ }, void, unknown>;
12
+ private setupDeferred;
13
+ onFinished(files: File[], errors?: unknown[]): void;
14
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "NxReporter", {
3
+ enumerable: true,
4
+ get: function() {
5
+ return NxReporter;
6
+ }
7
+ });
8
+ let NxReporter = class NxReporter {
9
+ async *[Symbol.asyncIterator]() {
10
+ do {
11
+ const hasErrors = await this.deferred.promise;
12
+ yield {
13
+ hasErrors
14
+ };
15
+ this.setupDeferred();
16
+ }while (this.watch)
17
+ }
18
+ setupDeferred() {
19
+ let resolve;
20
+ this.deferred = {
21
+ promise: new Promise((res)=>{
22
+ resolve = res;
23
+ }),
24
+ resolve
25
+ };
26
+ }
27
+ onFinished(files, errors) {
28
+ const hasErrors = files.some((f)=>{
29
+ var _f_result;
30
+ return ((_f_result = f.result) == null ? void 0 : _f_result.state) === 'fail';
31
+ }) || (errors == null ? void 0 : errors.length) > 0;
32
+ this.deferred.resolve(hasErrors);
33
+ }
34
+ constructor(watch){
35
+ this.watch = watch;
36
+ this.setupDeferred();
37
+ }
38
+ };
39
+
40
+ //# sourceMappingURL=nx-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/vite/src/executors/test/lib/nx-reporter.ts"],"sourcesContent":["import type { File, Reporter } from 'vitest';\n\nexport class NxReporter implements Reporter {\n deferred: {\n promise: Promise<boolean>;\n resolve: (val: boolean) => void;\n };\n\n constructor(private watch: boolean) {\n this.setupDeferred();\n }\n\n async *[Symbol.asyncIterator]() {\n do {\n const hasErrors = await this.deferred.promise;\n yield { hasErrors };\n this.setupDeferred();\n } while (this.watch);\n }\n\n private setupDeferred() {\n let resolve: (val: boolean) => void;\n this.deferred = {\n promise: new Promise((res) => {\n resolve = res;\n }),\n resolve,\n };\n }\n\n onFinished(files: File[], errors?: unknown[]) {\n const hasErrors =\n files.some((f) => f.result?.state === 'fail') || errors?.length > 0;\n this.deferred.resolve(hasErrors);\n }\n}\n"],"names":["NxReporter","Symbol","asyncIterator","hasErrors","deferred","promise","setupDeferred","watch","resolve","Promise","res","onFinished","files","errors","some","f","result","state","length","constructor"],"mappings":";+BAEaA;;;eAAAA;;;AAAN,IAAA,AAAMA,aAAN,MAAMA;IAUX,OAAO,CAACC,OAAOC,aAAa,CAAC,GAAG;QAC9B,GAAG;YACD,MAAMC,YAAY,MAAM,IAAI,CAACC,QAAQ,CAACC,OAAO;YAC7C,MAAM;gBAAEF;YAAU;YAClB,IAAI,CAACG,aAAa;QACpB,QAAS,IAAI,CAACC,KAAK,CAAE;IACvB;IAEQD,gBAAgB;QACtB,IAAIE;QACJ,IAAI,CAACJ,QAAQ,GAAG;YACdC,SAAS,IAAII,QAAQ,CAACC;gBACpBF,UAAUE;YACZ;YACAF;QACF;IACF;IAEAG,WAAWC,KAAa,EAAEC,MAAkB,EAAE;QAC5C,MAAMV,YACJS,MAAME,IAAI,CAAC,CAACC;gBAAMA;mBAAAA,EAAAA,YAAAA,EAAEC,MAAM,qBAARD,UAAUE,KAAK,MAAK;cAAWJ,CAAAA,0BAAAA,OAAQK,MAAM,IAAG;QACpE,IAAI,CAACd,QAAQ,CAACI,OAAO,CAACL;IACxB;IA1BAgB,YAAoBZ,MAAgB;qBAAhBA;QAClB,IAAI,CAACD,aAAa;IACpB;AAyBF"}
@@ -0,0 +1,4 @@
1
+ import { ExecutorContext } from '@nx/devkit';
2
+ import { VitestExecutorOptions } from '../schema';
3
+ export declare function getOptions(options: VitestExecutorOptions, context: ExecutorContext, projectRoot: string): Promise<Record<string, any>>;
4
+ export declare function getOptionsAsArgv(obj: Record<string, any>): string[];
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ function _export(target, all) {
3
+ for(var name in all)Object.defineProperty(target, name, {
4
+ enumerable: true,
5
+ get: all[name]
6
+ });
7
+ }
8
+ _export(exports, {
9
+ getOptions: function() {
10
+ return getOptions;
11
+ },
12
+ getOptionsAsArgv: function() {
13
+ return getOptionsAsArgv;
14
+ }
15
+ });
16
+ const _extends = require("@swc/helpers/_/_extends");
17
+ const _devkit = require("@nx/devkit");
18
+ const _optionsutils = require("../../../utils/options-utils");
19
+ const _path = require("path");
20
+ const _executorutils = require("../../../utils/executor-utils");
21
+ async function getOptions(options, context, projectRoot) {
22
+ var _resolved_config, _resolved_config1;
23
+ // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
24
+ const { loadConfigFromFile, mergeConfig } = await (0, _executorutils.loadViteDynamicImport)();
25
+ const viteConfigPath = (0, _optionsutils.normalizeViteConfigFilePath)(context.root, projectRoot, options.configFile);
26
+ if (!viteConfigPath) {
27
+ throw new Error((0, _devkit.stripIndents)`
28
+ Unable to load test config from config file ${viteConfigPath}.
29
+
30
+ Please make sure that vitest is configured correctly,
31
+ or use the @nx/vite:vitest generator to configure it for you.
32
+ You can read more here: https://nx.dev/nx-api/vite/generators/vitest
33
+ `);
34
+ }
35
+ var _options_mode;
36
+ const resolved = await loadConfigFromFile({
37
+ mode: (_options_mode = options == null ? void 0 : options.mode) != null ? _options_mode : 'production',
38
+ command: 'serve'
39
+ }, viteConfigPath);
40
+ if (!viteConfigPath || !(resolved == null ? void 0 : (_resolved_config = resolved.config) == null ? void 0 : _resolved_config['test'])) {
41
+ var _resolved_path;
42
+ _devkit.logger.warn((0, _devkit.stripIndents)`Unable to load test config from config file ${(_resolved_path = resolved == null ? void 0 : resolved.path) != null ? _resolved_path : viteConfigPath}
43
+ Some settings may not be applied as expected.
44
+ You can manually set the config in the project, ${context.projectName}, configuration.
45
+ `);
46
+ }
47
+ const root = projectRoot === '.' ? process.cwd() : (0, _path.relative)(context.cwd, (0, _devkit.joinPathFragments)(context.root, projectRoot));
48
+ const { parseCLI } = await (0, _executorutils.loadVitestDynamicImport)();
49
+ const normalizedExtraArgs = parseCLI([
50
+ 'vitest',
51
+ ...getOptionsAsArgv(options)
52
+ ]);
53
+ var _resolved_config_root;
54
+ const settings = _extends._({}, normalizedExtraArgs, {
55
+ // This should not be needed as it's going to be set in vite.config.ts
56
+ // but leaving it here in case someone did not migrate correctly
57
+ root: (_resolved_config_root = resolved.config.root) != null ? _resolved_config_root : root,
58
+ configFile: viteConfigPath
59
+ });
60
+ var _resolved_config_test;
61
+ return mergeConfig((_resolved_config_test = resolved == null ? void 0 : (_resolved_config1 = resolved.config) == null ? void 0 : _resolved_config1['test']) != null ? _resolved_config_test : {}, settings);
62
+ }
63
+ function getOptionsAsArgv(obj) {
64
+ const argv = [];
65
+ for (const [key, value] of Object.entries(obj)){
66
+ if (Array.isArray(value)) {
67
+ value.forEach((item)=>argv.push(`--${key}=${item}`));
68
+ } else if (typeof value === 'object' && value !== null) {
69
+ argv.push(`--${key}='${JSON.stringify(value)}'`);
70
+ } else {
71
+ argv.push(`--${key}=${value}`);
72
+ }
73
+ }
74
+ return argv;
75
+ }
76
+
77
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/vite/src/executors/test/lib/utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n stripIndents,\n} from '@nx/devkit';\nimport { VitestExecutorOptions } from '../schema';\nimport { normalizeViteConfigFilePath } from '../../../utils/options-utils';\nimport { relative } from 'path';\nimport {\n loadViteDynamicImport,\n loadVitestDynamicImport,\n} from '../../../utils/executor-utils';\n\nexport async function getOptions(\n options: VitestExecutorOptions,\n context: ExecutorContext,\n projectRoot: string\n) {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { loadConfigFromFile, mergeConfig } = await loadViteDynamicImport();\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n\n if (!viteConfigPath) {\n throw new Error(\n stripIndents`\n Unable to load test config from config file ${viteConfigPath}.\n \n Please make sure that vitest is configured correctly, \n or use the @nx/vite:vitest generator to configure it for you.\n You can read more here: https://nx.dev/nx-api/vite/generators/vitest\n `\n );\n }\n\n const resolved = await loadConfigFromFile(\n {\n mode: options?.mode ?? 'production',\n command: 'serve',\n },\n viteConfigPath\n );\n\n if (!viteConfigPath || !resolved?.config?.['test']) {\n logger.warn(stripIndents`Unable to load test config from config file ${\n resolved?.path ?? viteConfigPath\n }\n Some settings may not be applied as expected.\n You can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const { parseCLI } = await loadVitestDynamicImport();\n\n const normalizedExtraArgs = parseCLI([\n 'vitest',\n ...getOptionsAsArgv(options),\n ]);\n\n const settings = {\n ...normalizedExtraArgs,\n // This should not be needed as it's going to be set in vite.config.ts\n // but leaving it here in case someone did not migrate correctly\n root: resolved.config.root ?? root,\n configFile: viteConfigPath,\n };\n\n return mergeConfig(resolved?.config?.['test'] ?? {}, settings);\n}\n\nexport function getOptionsAsArgv(obj: Record<string, any>): string[] {\n const argv: string[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n if (Array.isArray(value)) {\n value.forEach((item) => argv.push(`--${key}=${item}`));\n } else if (typeof value === 'object' && value !== null) {\n argv.push(`--${key}='${JSON.stringify(value)}'`);\n } else {\n argv.push(`--${key}=${value}`);\n }\n }\n\n return argv;\n}\n"],"names":["getOptions","getOptionsAsArgv","options","context","projectRoot","resolved","loadConfigFromFile","mergeConfig","loadViteDynamicImport","viteConfigPath","normalizeViteConfigFilePath","root","configFile","Error","stripIndents","mode","command","config","logger","warn","path","projectName","process","cwd","relative","joinPathFragments","parseCLI","loadVitestDynamicImport","normalizedExtraArgs","settings","obj","argv","key","value","Object","entries","Array","isArray","forEach","item","push","JSON","stringify"],"mappings":";;;;;;;;IAcsBA,UAAU;eAAVA;;IAmENC,gBAAgB;eAAhBA;;;;wBA5ET;8BAEqC;sBACnB;+BAIlB;AAEA,eAAeD,WACpBE,OAA8B,EAC9BC,OAAwB,EACxBC,WAAmB;QA+BKC,kBA8BLA;IA3DnB,yFAAyF;IACzF,MAAM,EAAEC,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAMC,IAAAA,oCAAqB;IAEvE,MAAMC,iBAAiBC,IAAAA,yCAA2B,EAChDP,QAAQQ,IAAI,EACZP,aACAF,QAAQU,UAAU;IAGpB,IAAI,CAACH,gBAAgB;QACnB,MAAM,IAAII,MACRC,IAAAA,oBAAY,CAAA,CAAC;oDACiC,EAAEL,eAAe;;;;;QAK7D,CAAC;IAEP;QAIUP;IAFV,MAAMG,WAAW,MAAMC,mBACrB;QACES,MAAMb,CAAAA,gBAAAA,2BAAAA,QAASa,IAAI,YAAbb,gBAAiB;QACvBc,SAAS;IACX,GACAP;IAGF,IAAI,CAACA,kBAAkB,EAACJ,6BAAAA,mBAAAA,SAAUY,MAAM,qBAAhBZ,gBAAkB,CAAC,OAAO,GAAE;YAEhDA;QADFa,cAAM,CAACC,IAAI,CAACL,IAAAA,oBAAY,CAAA,CAAC,4CAA4C,EACnET,CAAAA,iBAAAA,4BAAAA,SAAUe,IAAI,YAAdf,iBAAkBI,eACnB;;kDAE6C,EAC9CN,QAAQkB,WAAW,CACpB;QACK,CAAC;IACP;IACA,MAAMV,OACJP,gBAAgB,MACZkB,QAAQC,GAAG,KACXC,IAAAA,cAAQ,EAACrB,QAAQoB,GAAG,EAAEE,IAAAA,yBAAiB,EAACtB,QAAQQ,IAAI,EAAEP;IAE5D,MAAM,EAAEsB,QAAQ,EAAE,GAAG,MAAMC,IAAAA,sCAAuB;IAElD,MAAMC,sBAAsBF,SAAS;QACnC;WACGzB,iBAAiBC;KACrB;QAMOG;IAJR,MAAMwB,WAAW,eACZD;QACH,sEAAsE;QACtE,gEAAgE;QAChEjB,MAAMN,CAAAA,wBAAAA,SAASY,MAAM,CAACN,IAAI,YAApBN,wBAAwBM;QAC9BC,YAAYH;;QAGKJ;IAAnB,OAAOE,YAAYF,CAAAA,wBAAAA,6BAAAA,oBAAAA,SAAUY,MAAM,qBAAhBZ,iBAAkB,CAAC,OAAO,YAA1BA,wBAA8B,CAAC,GAAGwB;AACvD;AAEO,SAAS5B,iBAAiB6B,GAAwB;IACvD,MAAMC,OAAiB,EAAE;IAEzB,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIC,OAAOC,OAAO,CAACL,KAAM;QAC9C,IAAIM,MAAMC,OAAO,CAACJ,QAAQ;YACxBA,MAAMK,OAAO,CAAC,CAACC,OAASR,KAAKS,IAAI,CAAC,CAAC,EAAE,EAAER,IAAI,CAAC,EAAEO,KAAK,CAAC;QACtD,OAAO,IAAI,OAAON,UAAU,YAAYA,UAAU,MAAM;YACtDF,KAAKS,IAAI,CAAC,CAAC,EAAE,EAAER,IAAI,EAAE,EAAES,KAAKC,SAAS,CAACT,OAAO,CAAC,CAAC;QACjD,OAAO;YACLF,KAAKS,IAAI,CAAC,CAAC,EAAE,EAAER,IAAI,CAAC,EAAEC,MAAM,CAAC;QAC/B;IACF;IAEA,OAAOF;AACT"}
@@ -1,12 +1,7 @@
1
1
  export interface VitestExecutorOptions {
2
- config?: string;
3
- passWithNoTests?: boolean;
4
- testNamePattern?: string;
5
- mode?: 'test' | 'benchmark' | 'typecheck';
6
- reporters?: string[];
7
- watch?: boolean;
8
- update?: boolean;
2
+ configFile?: string;
9
3
  reportsDirectory?: string;
10
- coverage?: boolean;
11
4
  testFiles?: string[];
5
+ watch?: boolean;
6
+ mode?: string;
12
7
  }
@@ -1,66 +1,34 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "version": 2,
4
4
  "cli": "nx",
5
5
  "title": "Vitest executor",
6
6
  "description": "Test using Vitest.",
7
7
  "type": "object",
8
8
  "properties": {
9
- "config": {
9
+ "configFile": {
10
10
  "type": "string",
11
11
  "description": "The path to the local vitest config",
12
12
  "x-completion-type": "file",
13
- "x-completion-glob": "@(vitest|vite).config@(.js|.ts)"
13
+ "x-completion-glob": "@(vitest|vite).config@(.js|.ts)",
14
+ "aliases": ["config"]
14
15
  },
15
- "passWithNoTests": {
16
- "type": "boolean",
17
- "default": true,
18
- "description": "Pass the test even if no tests are found"
19
- },
20
- "testNamePattern": {
16
+ "reportsDirectory": {
21
17
  "type": "string",
22
- "description": "Run tests with full names matching the pattern"
18
+ "description": "Directory to write coverage report to."
23
19
  },
24
20
  "mode": {
25
21
  "type": "string",
26
- "enum": ["test", "benchmark", "typecheck"],
27
- "default": "test",
28
- "description": "The mode that vitest will run on",
29
- "x-priority": "important"
30
- },
31
- "watch": {
32
- "type": "boolean",
33
- "default": false,
34
- "description": "Enable watch mode"
35
- },
36
- "reporters": {
37
- "type": "array",
38
- "items": {
39
- "type": "string"
40
- },
41
- "description": "An array of reporters to pass to vitest"
42
- },
43
- "update": {
44
- "type": "boolean",
45
- "default": false,
46
- "alias": "u",
47
- "description": "Update snapshots",
48
- "x-priority": "important"
49
- },
50
- "coverage": {
51
- "type": "boolean",
52
- "default": false,
53
- "description": "Enable coverage report",
54
- "x-priority": "important"
55
- },
56
- "reportsDirectory": {
57
- "type": "string",
58
- "description": "Directory to write coverage report to."
22
+ "description": "Mode for Vite."
59
23
  },
60
24
  "testFiles": {
61
25
  "aliases": ["testFile"],
62
26
  "type": "array",
63
27
  "items": { "type": "string" }
28
+ },
29
+ "watch": {
30
+ "description": "Watch files for changes and rerun tests related to changed files.",
31
+ "type": "boolean"
64
32
  }
65
33
  },
66
34
  "required": [],
@@ -13,52 +13,33 @@ _export(exports, {
13
13
  return _default;
14
14
  }
15
15
  });
16
- const _extends = require("@swc/helpers/_/_extends");
17
16
  const _devkit = require("@nx/devkit");
18
17
  const _path = require("path");
19
- const _fs = require("fs");
20
18
  const _internal = require("@nx/js/src/internal");
21
- let NxReporter = class NxReporter {
22
- async *[Symbol.asyncIterator]() {
23
- do {
24
- const hasErrors = await this.deferred.promise;
25
- yield {
26
- hasErrors
27
- };
28
- this.setupDeferred();
29
- }while (this.watch)
30
- }
31
- setupDeferred() {
32
- let resolve;
33
- this.deferred = {
34
- promise: new Promise((res)=>{
35
- resolve = res;
36
- }),
37
- resolve
38
- };
39
- }
40
- onFinished(files, errors) {
41
- const hasErrors = files.some((f)=>{
42
- var _f_result;
43
- return ((_f_result = f.result) == null ? void 0 : _f_result.state) === 'fail';
44
- }) || (errors == null ? void 0 : errors.length) > 0;
45
- this.deferred.resolve(hasErrors);
46
- }
47
- constructor(watch){
48
- this.watch = watch;
49
- this.setupDeferred();
50
- }
51
- };
19
+ const _nxreporter = require("./lib/nx-reporter");
20
+ const _utils = require("./lib/utils");
21
+ const _executorutils = require("../../utils/executor-utils");
52
22
  async function* vitestExecutor(options, context) {
53
23
  const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
54
24
  (0, _internal.registerTsConfigPaths)((0, _path.resolve)(_devkit.workspaceRoot, projectRoot, 'tsconfig.json'));
55
- const { startVitest } = await Function('return import("vitest/node")')();
56
- const nxReporter = new NxReporter(options.watch);
57
- const settings = await getSettings(options, context, projectRoot);
58
- settings.reporters.push(nxReporter);
25
+ process.env.VITE_CJS_IGNORE_WARNING = 'true';
26
+ // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
27
+ const { startVitest } = await (0, _executorutils.loadVitestDynamicImport)();
28
+ var _ref;
29
+ const resolvedOptions = (_ref = await (0, _utils.getOptions)(options, context, projectRoot)) != null ? _ref : {};
30
+ const nxReporter = new _nxreporter.NxReporter(resolvedOptions['watch']);
31
+ if (resolvedOptions['reporters'] === undefined) {
32
+ resolvedOptions['reporters'] = [];
33
+ } else if (typeof resolvedOptions['reporters'] === 'string') {
34
+ resolvedOptions['reporters'] = [
35
+ resolvedOptions['reporters']
36
+ ];
37
+ }
38
+ resolvedOptions['reporters'].push(nxReporter);
59
39
  var _options_testFiles;
60
40
  const cliFilters = (_options_testFiles = options.testFiles) != null ? _options_testFiles : [];
61
- const ctx = await startVitest(options.mode, cliFilters, settings);
41
+ var _resolvedOptions_mode;
42
+ const ctx = await startVitest((_resolvedOptions_mode = resolvedOptions['mode']) != null ? _resolvedOptions_mode : 'test', cliFilters, resolvedOptions);
62
43
  let hasErrors = false;
63
44
  const processExit = ()=>{
64
45
  ctx.exit();
@@ -68,7 +49,7 @@ async function* vitestExecutor(options, context) {
68
49
  process.exit(0);
69
50
  }
70
51
  };
71
- if (options.watch) {
52
+ if (resolvedOptions['watch'] === true) {
72
53
  process.on('SIGINT', processExit);
73
54
  process.on('SIGTERM', processExit);
74
55
  process.on('exit', processExit);
@@ -81,79 +62,6 @@ async function* vitestExecutor(options, context) {
81
62
  success: !hasErrors
82
63
  };
83
64
  }
84
- async function getSettings(options, context, projectRoot) {
85
- var _packageJson_dependencies, _packageJson_devDependencies, _resolved_config, _resolved_config_test, _resolved_config1, _resolved_config_test1, _resolved_config2;
86
- // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
87
- const { loadConfigFromFile } = await Function('return import("vite")')();
88
- const packageJsonPath = (0, _path.join)(_devkit.workspaceRoot, 'package.json');
89
- const packageJson = (0, _fs.existsSync)(packageJsonPath) ? (0, _devkit.readJsonFile)(packageJsonPath) : undefined;
90
- let provider = 'v8';
91
- if ((packageJson == null ? void 0 : (_packageJson_dependencies = packageJson.dependencies) == null ? void 0 : _packageJson_dependencies['@vitest/coverage-c8']) || (packageJson == null ? void 0 : (_packageJson_devDependencies = packageJson.devDependencies) == null ? void 0 : _packageJson_devDependencies['@vitest/coverage-c8'])) {
92
- provider = 'c8';
93
- }
94
- const offset = (0, _path.relative)(_devkit.workspaceRoot, context.cwd);
95
- // if reportsDirectory is not provided vitest will remove all files in the project root
96
- // when coverage is enabled in the vite.config.ts
97
- const coverage = options.reportsDirectory ? {
98
- enabled: options.coverage,
99
- reportsDirectory: options.reportsDirectory,
100
- provider
101
- } : {};
102
- const viteConfigPath = options.config ? options.config // config is expected to be from the workspace root
103
- : findViteConfig((0, _devkit.joinPathFragments)(context.root, projectRoot));
104
- if (!viteConfigPath) {
105
- throw new Error((0, _devkit.stripIndents)`
106
- Unable to load test config from config file ${viteConfigPath}.
107
-
108
- Please make sure that vitest is configured correctly,
109
- or use the @nx/vite:vitest generator to configure it for you.
110
- You can read more here: https://nx.dev/nx-api/vite/generators/vitest
111
- `);
112
- }
113
- const resolvedProjectRoot = (0, _path.resolve)(_devkit.workspaceRoot, projectRoot);
114
- const resolvedViteConfigPath = (0, _path.resolve)(_devkit.workspaceRoot, projectRoot, (0, _path.relative)(resolvedProjectRoot, viteConfigPath));
115
- const resolved = await loadConfigFromFile({
116
- mode: options.mode,
117
- command: 'serve'
118
- }, resolvedViteConfigPath, resolvedProjectRoot);
119
- if (!viteConfigPath || !(resolved == null ? void 0 : (_resolved_config = resolved.config) == null ? void 0 : _resolved_config['test'])) {
120
- var _resolved_path;
121
- _devkit.logger.warn((0, _devkit.stripIndents)`Unable to load test config from config file ${(_resolved_path = resolved == null ? void 0 : resolved.path) != null ? _resolved_path : viteConfigPath}
122
- Some settings may not be applied as expected.
123
- You can manually set the config in the project, ${context.projectName}, configuration.
124
- `);
125
- }
126
- var _options_reporters, _ref;
127
- const settings = _extends._({}, options, {
128
- // when running nx from the project root, the root will get appended to the cwd.
129
- // creating an invalid path and no tests will be found.
130
- // instead if we are not at the root, let the cwd be root.
131
- root: offset === '' ? resolvedProjectRoot : _devkit.workspaceRoot,
132
- config: resolvedViteConfigPath,
133
- reporters: [
134
- ...(_options_reporters = options.reporters) != null ? _options_reporters : [],
135
- ...(_ref = resolved == null ? void 0 : (_resolved_config1 = resolved.config) == null ? void 0 : (_resolved_config_test = _resolved_config1['test']) == null ? void 0 : _resolved_config_test.reporters) != null ? _ref : [],
136
- 'default'
137
- ],
138
- coverage: _extends._({}, coverage, resolved == null ? void 0 : (_resolved_config2 = resolved.config) == null ? void 0 : (_resolved_config_test1 = _resolved_config2['test']) == null ? void 0 : _resolved_config_test1.coverage)
139
- });
140
- return settings;
141
- }
142
- function findViteConfig(projectRootFullPath) {
143
- const allowsExt = [
144
- 'js',
145
- 'mjs',
146
- 'ts',
147
- 'cjs',
148
- 'mts',
149
- 'cts'
150
- ];
151
- for (const ext of allowsExt){
152
- if ((0, _fs.existsSync)((0, _devkit.joinPathFragments)(projectRootFullPath, `vite.config.${ext}`))) {
153
- return (0, _devkit.joinPathFragments)(projectRootFullPath, `vite.config.${ext}`);
154
- }
155
- }
156
- }
157
65
  const _default = vitestExecutor;
158
66
 
159
67
  //# sourceMappingURL=vitest.impl.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/test/vitest.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n readJsonFile,\n stripIndents,\n workspaceRoot,\n} from '@nx/devkit';\nimport type { CoverageOptions, File, Reporter } from 'vitest';\nimport { VitestExecutorOptions } from './schema';\nimport { join, relative, resolve } from 'path';\nimport { existsSync } from 'fs';\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\n\nclass NxReporter implements Reporter {\n deferred: {\n promise: Promise<boolean>;\n resolve: (val: boolean) => void;\n };\n\n constructor(private watch: boolean) {\n this.setupDeferred();\n }\n\n async *[Symbol.asyncIterator]() {\n do {\n const hasErrors = await this.deferred.promise;\n yield { hasErrors };\n this.setupDeferred();\n } while (this.watch);\n }\n\n private setupDeferred() {\n let resolve: (val: boolean) => void;\n this.deferred = {\n promise: new Promise((res) => {\n resolve = res;\n }),\n resolve,\n };\n }\n\n onFinished(files: File[], errors?: unknown[]) {\n const hasErrors =\n files.some((f) => f.result?.state === 'fail') || errors?.length > 0;\n this.deferred.resolve(hasErrors);\n }\n}\n\nexport async function* vitestExecutor(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n registerTsConfigPaths(resolve(workspaceRoot, projectRoot, 'tsconfig.json'));\n\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")'\n )() as Promise<typeof import('vitest/node')>);\n\n const nxReporter = new NxReporter(options.watch);\n const settings = await getSettings(options, context, projectRoot);\n settings.reporters.push(nxReporter);\n const cliFilters = options.testFiles ?? [];\n\n const ctx = await startVitest(options.mode, cliFilters, settings);\n\n let hasErrors = false;\n\n const processExit = () => {\n ctx.exit();\n if (hasErrors) {\n process.exit(1);\n } else {\n process.exit(0);\n }\n };\n\n if (options.watch) {\n process.on('SIGINT', processExit);\n process.on('SIGTERM', processExit);\n process.on('exit', processExit);\n }\n\n for await (const report of nxReporter) {\n // vitest sets the exitCode = 1 when code coverage isn't met\n hasErrors =\n report.hasErrors || (process.exitCode && process.exitCode !== 0);\n }\n\n return {\n success: !hasErrors,\n };\n}\n\nasync function getSettings(\n options: VitestExecutorOptions,\n context: ExecutorContext,\n projectRoot: string\n) {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { loadConfigFromFile } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n\n const packageJsonPath = join(workspaceRoot, 'package.json');\n const packageJson = existsSync(packageJsonPath)\n ? readJsonFile(packageJsonPath)\n : undefined;\n let provider: 'v8' | 'c8' = 'v8';\n if (\n packageJson?.dependencies?.['@vitest/coverage-c8'] ||\n packageJson?.devDependencies?.['@vitest/coverage-c8']\n ) {\n provider = 'c8';\n }\n const offset = relative(workspaceRoot, context.cwd);\n // if reportsDirectory is not provided vitest will remove all files in the project root\n // when coverage is enabled in the vite.config.ts\n const coverage: CoverageOptions = options.reportsDirectory\n ? {\n enabled: options.coverage,\n reportsDirectory: options.reportsDirectory,\n provider,\n }\n : ({} as CoverageOptions);\n\n const viteConfigPath = options.config\n ? options.config // config is expected to be from the workspace root\n : findViteConfig(joinPathFragments(context.root, projectRoot));\n\n if (!viteConfigPath) {\n throw new Error(\n stripIndents`\n Unable to load test config from config file ${viteConfigPath}.\n \n Please make sure that vitest is configured correctly, \n or use the @nx/vite:vitest generator to configure it for you.\n You can read more here: https://nx.dev/nx-api/vite/generators/vitest\n `\n );\n }\n\n const resolvedProjectRoot = resolve(workspaceRoot, projectRoot);\n const resolvedViteConfigPath = resolve(\n workspaceRoot,\n projectRoot,\n relative(resolvedProjectRoot, viteConfigPath)\n );\n\n const resolved = await loadConfigFromFile(\n {\n mode: options.mode,\n command: 'serve',\n },\n resolvedViteConfigPath,\n resolvedProjectRoot\n );\n\n if (!viteConfigPath || !resolved?.config?.['test']) {\n logger.warn(stripIndents`Unable to load test config from config file ${\n resolved?.path ?? viteConfigPath\n }\nSome settings may not be applied as expected.\nYou can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n\n const settings = {\n ...options,\n // when running nx from the project root, the root will get appended to the cwd.\n // creating an invalid path and no tests will be found.\n // instead if we are not at the root, let the cwd be root.\n root: offset === '' ? resolvedProjectRoot : workspaceRoot,\n config: resolvedViteConfigPath,\n reporters: [\n ...(options.reporters ?? []),\n ...((resolved?.config?.['test']?.reporters as string[]) ?? []),\n 'default',\n ] as (string | Reporter)[],\n coverage: { ...coverage, ...resolved?.config?.['test']?.coverage },\n };\n\n return settings;\n}\n\nfunction findViteConfig(projectRootFullPath: string): string {\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (\n existsSync(joinPathFragments(projectRootFullPath, `vite.config.${ext}`))\n ) {\n return joinPathFragments(projectRootFullPath, `vite.config.${ext}`);\n }\n }\n}\n\nexport default vitestExecutor;\n"],"names":["vitestExecutor","NxReporter","Symbol","asyncIterator","hasErrors","deferred","promise","setupDeferred","watch","resolve","Promise","res","onFinished","files","errors","some","f","result","state","length","constructor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","workspaceRoot","startVitest","Function","nxReporter","settings","getSettings","reporters","push","cliFilters","testFiles","ctx","mode","processExit","exit","process","on","report","exitCode","success","packageJson","resolved","loadConfigFromFile","packageJsonPath","join","existsSync","readJsonFile","undefined","provider","dependencies","devDependencies","offset","relative","cwd","coverage","reportsDirectory","enabled","viteConfigPath","config","findViteConfig","joinPathFragments","Error","stripIndents","resolvedProjectRoot","resolvedViteConfigPath","command","logger","warn","path","projectRootFullPath","allowsExt","ext"],"mappings":";;;;;;;;IAiDuBA,cAAc;eAAdA;;IAwJvB,OAA8B;eAA9B;;;;wBAlMO;sBAGiC;oBACb;0BACW;AAEtC,IAAA,AAAMC,aAAN,MAAMA;IAUJ,OAAO,CAACC,OAAOC,aAAa,CAAC,GAAG;QAC9B,GAAG;YACD,MAAMC,YAAY,MAAM,IAAI,CAACC,QAAQ,CAACC,OAAO;YAC7C,MAAM;gBAAEF;YAAU;YAClB,IAAI,CAACG,aAAa;QACpB,QAAS,IAAI,CAACC,KAAK,CAAE;IACvB;IAEQD,gBAAgB;QACtB,IAAIE;QACJ,IAAI,CAACJ,QAAQ,GAAG;YACdC,SAAS,IAAII,QAAQ,CAACC;gBACpBF,UAAUE;YACZ;YACAF;QACF;IACF;IAEAG,WAAWC,KAAa,EAAEC,MAAkB,EAAE;QAC5C,MAAMV,YACJS,MAAME,IAAI,CAAC,CAACC;gBAAMA;mBAAAA,EAAAA,YAAAA,EAAEC,MAAM,qBAARD,UAAUE,KAAK,MAAK;cAAWJ,CAAAA,0BAAAA,OAAQK,MAAM,IAAG;QACpE,IAAI,CAACd,QAAQ,CAACI,OAAO,CAACL;IACxB;IA1BAgB,YAAoBZ,MAAgB;qBAAhBA;QAClB,IAAI,CAACD,aAAa;IACpB;AAyBF;AAEO,gBAAgBP,eACrBqB,OAA8B,EAC9BC,OAAwB;IAExB,MAAMC,cACJD,QAAQE,sBAAsB,CAACC,QAAQ,CAACH,QAAQI,WAAW,CAAC,CAACC,IAAI;IACnEC,IAAAA,+BAAqB,EAACnB,IAAAA,aAAO,EAACoB,qBAAa,EAAEN,aAAa;IAE1D,MAAM,EAAEO,WAAW,EAAE,GAAG,MAAOC,SAC7B;IAGF,MAAMC,aAAa,IAAI/B,WAAWoB,QAAQb,KAAK;IAC/C,MAAMyB,WAAW,MAAMC,YAAYb,SAASC,SAASC;IACrDU,SAASE,SAAS,CAACC,IAAI,CAACJ;QACLX;IAAnB,MAAMgB,aAAahB,CAAAA,qBAAAA,QAAQiB,SAAS,YAAjBjB,qBAAqB,EAAE;IAE1C,MAAMkB,MAAM,MAAMT,YAAYT,QAAQmB,IAAI,EAAEH,YAAYJ;IAExD,IAAI7B,YAAY;IAEhB,MAAMqC,cAAc;QAClBF,IAAIG,IAAI;QACR,IAAItC,WAAW;YACbuC,QAAQD,IAAI,CAAC;QACf,OAAO;YACLC,QAAQD,IAAI,CAAC;QACf;IACF;IAEA,IAAIrB,QAAQb,KAAK,EAAE;QACjBmC,QAAQC,EAAE,CAAC,UAAUH;QACrBE,QAAQC,EAAE,CAAC,WAAWH;QACtBE,QAAQC,EAAE,CAAC,QAAQH;IACrB;IAEA,WAAW,MAAMI,UAAUb,WAAY;QACrC,4DAA4D;QAC5D5B,YACEyC,OAAOzC,SAAS,IAAKuC,QAAQG,QAAQ,IAAIH,QAAQG,QAAQ,KAAK;IAClE;IAEA,OAAO;QACLC,SAAS,CAAC3C;IACZ;AACF;AAEA,eAAe8B,YACbb,OAA8B,EAC9BC,OAAwB,EACxBC,WAAmB;QAajByB,2BACAA,8BA+CsBC,kBAoBfA,uBAAAA,mBAGqBA,wBAAAA;IAlF9B,yFAAyF;IACzF,MAAM,EAAEC,kBAAkB,EAAE,GAAG,MAAOnB,SACpC;IAGF,MAAMoB,kBAAkBC,IAAAA,UAAI,EAACvB,qBAAa,EAAE;IAC5C,MAAMmB,cAAcK,IAAAA,cAAU,EAACF,mBAC3BG,IAAAA,oBAAY,EAACH,mBACbI;IACJ,IAAIC,WAAwB;IAC5B,IACER,CAAAA,gCAAAA,4BAAAA,YAAaS,YAAY,qBAAzBT,yBAA2B,CAAC,sBAAsB,MAClDA,gCAAAA,+BAAAA,YAAaU,eAAe,qBAA5BV,4BAA8B,CAAC,sBAAsB,GACrD;QACAQ,WAAW;IACb;IACA,MAAMG,SAASC,IAAAA,cAAQ,EAAC/B,qBAAa,EAAEP,QAAQuC,GAAG;IAClD,uFAAuF;IACvF,iDAAiD;IACjD,MAAMC,WAA4BzC,QAAQ0C,gBAAgB,GACtD;QACEC,SAAS3C,QAAQyC,QAAQ;QACzBC,kBAAkB1C,QAAQ0C,gBAAgB;QAC1CP;IACF,IACC,CAAC;IAEN,MAAMS,iBAAiB5C,QAAQ6C,MAAM,GACjC7C,QAAQ6C,MAAM,CAAC,mDAAmD;OAClEC,eAAeC,IAAAA,yBAAiB,EAAC9C,QAAQK,IAAI,EAAEJ;IAEnD,IAAI,CAAC0C,gBAAgB;QACnB,MAAM,IAAII,MACRC,IAAAA,oBAAY,CAAA,CAAC;kDAC+B,EAAEL,eAAe;;;;;MAK7D,CAAC;IAEL;IAEA,MAAMM,sBAAsB9D,IAAAA,aAAO,EAACoB,qBAAa,EAAEN;IACnD,MAAMiD,yBAAyB/D,IAAAA,aAAO,EACpCoB,qBAAa,EACbN,aACAqC,IAAAA,cAAQ,EAACW,qBAAqBN;IAGhC,MAAMhB,WAAW,MAAMC,mBACrB;QACEV,MAAMnB,QAAQmB,IAAI;QAClBiC,SAAS;IACX,GACAD,wBACAD;IAGF,IAAI,CAACN,kBAAkB,EAAChB,6BAAAA,mBAAAA,SAAUiB,MAAM,qBAAhBjB,gBAAkB,CAAC,OAAO,GAAE;YAEhDA;QADFyB,cAAM,CAACC,IAAI,CAACL,IAAAA,oBAAY,CAAA,CAAC,4CAA4C,EACnErB,CAAAA,iBAAAA,4BAAAA,SAAU2B,IAAI,YAAd3B,iBAAkBgB,eACnB;;gDAE2C,EAC1C3C,QAAQI,WAAW,CACpB;MACC,CAAC;IACL;QAUQL,oBACA;IATR,MAAMY,WAAW,eACZZ;QACH,gFAAgF;QAChF,uDAAuD;QACvD,0DAA0D;QAC1DM,MAAMgC,WAAW,KAAKY,sBAAsB1C,qBAAa;QACzDqC,QAAQM;QACRrC,WAAW;eACLd,CAAAA,qBAAAA,QAAQc,SAAS,YAAjBd,qBAAqB,EAAE;eACvB,CAAA,OAAC4B,4BAAD,CAACA,oBAAAA,SAAUiB,MAAM,AAAiC,sBAAjDjB,wBAAAA,iBAAkB,CAAC,OAAO,qBAA1BA,sBAA4Bd,SAAS,YAAtC,OAAuD,EAAE;YAC7D;SACD;QACD2B,UAAU,eAAKA,UAAab,6BAAAA,oBAAAA,SAAUiB,MAAM,sBAAhBjB,yBAAAA,iBAAkB,CAAC,OAAO,qBAA1BA,uBAA4Ba,QAAQ;;IAGlE,OAAO7B;AACT;AAEA,SAASkC,eAAeU,mBAA2B;IACjD,MAAMC,YAAY;QAAC;QAAM;QAAO;QAAM;QAAO;QAAO;KAAM;IAE1D,KAAK,MAAMC,OAAOD,UAAW;QAC3B,IACEzB,IAAAA,cAAU,EAACe,IAAAA,yBAAiB,EAACS,qBAAqB,CAAC,YAAY,EAAEE,IAAI,CAAC,IACtE;YACA,OAAOX,IAAAA,yBAAiB,EAACS,qBAAqB,CAAC,YAAY,EAAEE,IAAI,CAAC;QACpE;IACF;AACF;MAEA,WAAe/E"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/test/vitest.impl.ts"],"sourcesContent":["import { ExecutorContext, workspaceRoot } from '@nx/devkit';\nimport { VitestExecutorOptions } from './schema';\nimport { resolve } from 'path';\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\nimport { NxReporter } from './lib/nx-reporter';\nimport { getOptions } from './lib/utils';\nimport { loadVitestDynamicImport } from '../../utils/executor-utils';\n\nexport async function* vitestExecutor(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n registerTsConfigPaths(resolve(workspaceRoot, projectRoot, 'tsconfig.json'));\n\n process.env.VITE_CJS_IGNORE_WARNING = 'true';\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { startVitest } = await loadVitestDynamicImport();\n\n const resolvedOptions =\n (await getOptions(options, context, projectRoot)) ?? {};\n\n const nxReporter = new NxReporter(resolvedOptions['watch']);\n if (resolvedOptions['reporters'] === undefined) {\n resolvedOptions['reporters'] = [];\n } else if (typeof resolvedOptions['reporters'] === 'string') {\n resolvedOptions['reporters'] = [resolvedOptions['reporters']];\n }\n resolvedOptions['reporters'].push(nxReporter);\n\n const cliFilters = options.testFiles ?? [];\n\n const ctx = await startVitest(\n resolvedOptions['mode'] ?? 'test',\n cliFilters,\n resolvedOptions\n );\n\n let hasErrors = false;\n\n const processExit = () => {\n ctx.exit();\n if (hasErrors) {\n process.exit(1);\n } else {\n process.exit(0);\n }\n };\n\n if (resolvedOptions['watch'] === true) {\n process.on('SIGINT', processExit);\n process.on('SIGTERM', processExit);\n process.on('exit', processExit);\n }\n\n for await (const report of nxReporter) {\n // vitest sets the exitCode = 1 when code coverage isn't met\n hasErrors =\n report.hasErrors || (process.exitCode && process.exitCode !== 0);\n }\n\n return {\n success: !hasErrors,\n };\n}\n\nexport default vitestExecutor;\n"],"names":["vitestExecutor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","resolve","workspaceRoot","process","env","VITE_CJS_IGNORE_WARNING","startVitest","loadVitestDynamicImport","resolvedOptions","getOptions","nxReporter","NxReporter","undefined","push","cliFilters","testFiles","ctx","hasErrors","processExit","exit","on","report","exitCode","success"],"mappings":";;;;;;;;IAQuBA,cAAc;eAAdA;;IA4DvB,OAA8B;eAA9B;;;wBApE+C;sBAEvB;0BACc;4BACX;uBACA;+BACa;AAEjC,gBAAgBA,eACrBC,OAA8B,EAC9BC,OAAwB;IAExB,MAAMC,cACJD,QAAQE,sBAAsB,CAACC,QAAQ,CAACH,QAAQI,WAAW,CAAC,CAACC,IAAI;IAEnEC,IAAAA,+BAAqB,EAACC,IAAAA,aAAO,EAACC,qBAAa,EAAEP,aAAa;IAE1DQ,QAAQC,GAAG,CAACC,uBAAuB,GAAG;IACtC,yFAAyF;IACzF,MAAM,EAAEC,WAAW,EAAE,GAAG,MAAMC,IAAAA,sCAAuB;QAGlD;IADH,MAAMC,kBACJ,CAAC,OAAA,MAAMC,IAAAA,iBAAU,EAAChB,SAASC,SAASC,wBAAnC,OAAoD,CAAC;IAExD,MAAMe,aAAa,IAAIC,sBAAU,CAACH,eAAe,CAAC,QAAQ;IAC1D,IAAIA,eAAe,CAAC,YAAY,KAAKI,WAAW;QAC9CJ,eAAe,CAAC,YAAY,GAAG,EAAE;IACnC,OAAO,IAAI,OAAOA,eAAe,CAAC,YAAY,KAAK,UAAU;QAC3DA,eAAe,CAAC,YAAY,GAAG;YAACA,eAAe,CAAC,YAAY;SAAC;IAC/D;IACAA,eAAe,CAAC,YAAY,CAACK,IAAI,CAACH;QAEfjB;IAAnB,MAAMqB,aAAarB,CAAAA,qBAAAA,QAAQsB,SAAS,YAAjBtB,qBAAqB,EAAE;QAGxCe;IADF,MAAMQ,MAAM,MAAMV,YAChBE,CAAAA,wBAAAA,eAAe,CAAC,OAAO,YAAvBA,wBAA2B,QAC3BM,YACAN;IAGF,IAAIS,YAAY;IAEhB,MAAMC,cAAc;QAClBF,IAAIG,IAAI;QACR,IAAIF,WAAW;YACbd,QAAQgB,IAAI,CAAC;QACf,OAAO;YACLhB,QAAQgB,IAAI,CAAC;QACf;IACF;IAEA,IAAIX,eAAe,CAAC,QAAQ,KAAK,MAAM;QACrCL,QAAQiB,EAAE,CAAC,UAAUF;QACrBf,QAAQiB,EAAE,CAAC,WAAWF;QACtBf,QAAQiB,EAAE,CAAC,QAAQF;IACrB;IAEA,WAAW,MAAMG,UAAUX,WAAY;QACrC,4DAA4D;QAC5DO,YACEI,OAAOJ,SAAS,IAAKd,QAAQmB,QAAQ,IAAInB,QAAQmB,QAAQ,KAAK;IAClE;IAEA,OAAO;QACLC,SAAS,CAACN;IACZ;AACF;MAEA,WAAezB"}
@@ -1,4 +1,5 @@
1
1
  import { GeneratorCallback, Tree } from '@nx/devkit';
2
2
  import { ViteConfigurationGeneratorSchema } from './schema';
3
- export declare function viteConfigurationGenerator(tree: Tree, schema: ViteConfigurationGeneratorSchema): Promise<GeneratorCallback>;
3
+ export declare function viteConfigurationGenerator(host: Tree, schema: ViteConfigurationGeneratorSchema): Promise<GeneratorCallback>;
4
+ export declare function viteConfigurationGeneratorInternal(tree: Tree, schema: ViteConfigurationGeneratorSchema): Promise<GeneratorCallback>;
4
5
  export default viteConfigurationGenerator;