@nx/vite 20.1.0 → 20.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/vite",
3
- "version": "20.1.0",
3
+ "version": "20.2.0-beta.0",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for building and testing applications using Vite",
6
6
  "repository": {
@@ -30,11 +30,11 @@
30
30
  "migrations": "./migrations.json"
31
31
  },
32
32
  "dependencies": {
33
- "@nx/devkit": "20.1.0",
33
+ "@nx/devkit": "20.2.0-beta.0",
34
34
  "@phenomnomnominal/tsquery": "~5.0.1",
35
35
  "@swc/helpers": "~0.5.0",
36
36
  "enquirer": "~2.3.6",
37
- "@nx/js": "20.1.0",
37
+ "@nx/js": "20.2.0-beta.0",
38
38
  "tsconfig-paths": "^4.1.2",
39
39
  "minimatch": "9.0.3"
40
40
  },
@@ -1,7 +1,7 @@
1
1
  {
2
- "extends": "./tsconfig.json",
2
+ "extends": "<%= extendedConfig %>",
3
3
  "compilerOptions": {
4
- "outDir": "<%= offsetFromRoot %>dist/out-tsc",
4
+ "outDir": "<%= outDir %>",
5
5
  "types": ["vitest/globals", "vitest/importMeta", "vite/client", "node"]
6
6
  },
7
7
  "include": [
@@ -18,12 +18,13 @@ _export(exports, {
18
18
  });
19
19
  const _extends = require("@swc/helpers/_/_extends");
20
20
  const _devkit = require("@nx/devkit");
21
- const _generatorutils = require("../../utils/generator-utils");
22
- const _init = require("../init/init");
23
- const _versions = require("../../utils/versions");
24
21
  const _js = require("@nx/js");
22
+ const _tssolutionsetup = require("@nx/js/src/utils/typescript/ts-solution-setup");
25
23
  const _path = require("path");
26
24
  const _ensuredependencies = require("../../utils/ensure-dependencies");
25
+ const _generatorutils = require("../../utils/generator-utils");
26
+ const _versions = require("../../utils/versions");
27
+ const _init = require("../init/init");
27
28
  function vitestGenerator(tree, schema, hasPlugin = false) {
28
29
  return vitestGeneratorInternal(tree, _extends._({
29
30
  addPlugin: false
@@ -197,11 +198,14 @@ function updateTsConfig(tree, options, projectRoot, projectType) {
197
198
  }
198
199
  }
199
200
  function createFiles(tree, options, projectRoot) {
201
+ const isTsSolutionSetup = (0, _tssolutionsetup.isUsingTsSolutionSetup)(tree);
202
+ const rootOffset = (0, _devkit.offsetFromRoot)(projectRoot);
200
203
  (0, _devkit.generateFiles)(tree, (0, _path.join)(__dirname, 'files'), projectRoot, _extends._({
201
204
  tmpl: ''
202
205
  }, options, {
203
206
  projectRoot,
204
- offsetFromRoot: (0, _devkit.offsetFromRoot)(projectRoot)
207
+ extendedConfig: isTsSolutionSetup ? `${rootOffset}tsconfig.base.json` : './tsconfig.json',
208
+ outDir: isTsSolutionSetup ? `./out-tsc/jest` : `${rootOffset}dist/out-tsc`
205
209
  }));
206
210
  }
207
211
  function getCoverageProviderDependency(coverageProvider) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/generators/vitest/vitest-generator.ts"],"sourcesContent":["import {\n addDependenciesToPackageJson,\n formatFiles,\n generateFiles,\n GeneratorCallback,\n joinPathFragments,\n logger,\n offsetFromRoot,\n ProjectType,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n} from '@nx/devkit';\nimport {\n addOrChangeTestTarget,\n createOrEditViteConfig,\n} from '../../utils/generator-utils';\nimport { VitestGeneratorSchema } from './schema';\n\nimport initGenerator from '../init/init';\nimport {\n vitestCoverageIstanbulVersion,\n vitestCoverageV8Version,\n} from '../../utils/versions';\n\nimport { addTsLibDependencies, initGenerator as jsInitGenerator } from '@nx/js';\nimport { join } from 'path';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\n\nexport function vitestGenerator(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n return vitestGeneratorInternal(\n tree,\n { addPlugin: false, ...schema },\n hasPlugin\n );\n}\n\nexport async function vitestGeneratorInternal(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n const tasks: GeneratorCallback[] = [];\n\n const { root, projectType } = readProjectConfiguration(tree, schema.project);\n const isRootProject = root === '.';\n\n tasks.push(await jsInitGenerator(tree, { ...schema, skipFormat: true }));\n const initTask = await initGenerator(tree, {\n skipFormat: true,\n addPlugin: schema.addPlugin,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const hasPluginCheck = nxJson.plugins?.some(\n (p) =>\n (typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin') || hasPlugin\n );\n if (!hasPluginCheck) {\n const testTarget = schema.testTarget ?? 'test';\n addOrChangeTestTarget(tree, schema, testTarget);\n }\n\n if (!schema.skipViteConfig) {\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: projectType === 'library',\n includeVitest: true,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n coverageProvider: schema.coverageProvider,\n },\n true\n );\n } else {\n createOrEditViteConfig(\n tree,\n {\n ...schema,\n includeVitest: true,\n includeLib: projectType === 'library',\n },\n true\n );\n }\n }\n\n createFiles(tree, schema, root);\n updateTsConfig(tree, schema, root, projectType);\n\n const coverageProviderDependency = getCoverageProviderDependency(\n schema.coverageProvider\n );\n\n const installCoverageProviderTask = addDependenciesToPackageJson(\n tree,\n {},\n coverageProviderDependency\n );\n tasks.push(installCoverageProviderTask);\n\n // Setup workspace config file (https://vitest.dev/guide/workspace.html)\n if (\n !isRootProject &&\n !tree.exists(`vitest.workspace.ts`) &&\n !tree.exists(`vitest.workspace.js`) &&\n !tree.exists(`vitest.workspace.json`) &&\n !tree.exists(`vitest.projects.ts`) &&\n !tree.exists(`vitest.projects.js`) &&\n !tree.exists(`vitest.projects.json`)\n ) {\n tree.write(\n 'vitest.workspace.ts',\n `export default ['**/*/vite.config.{ts,mts}', '**/*/vitest.config.{ts,mts}'];`\n );\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nfunction updateTsConfig(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string,\n projectType: ProjectType\n) {\n const setupFile = tryFindSetupFile(tree, projectRoot);\n\n if (tree.exists(joinPathFragments(projectRoot, 'tsconfig.spec.json'))) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.spec.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n\n if (setupFile) {\n json.files = [...(json.files ?? []), setupFile];\n }\n\n return json;\n }\n );\n\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (\n json.references &&\n !json.references.some((r) => r.path === './tsconfig.spec.json')\n ) {\n json.references.push({\n path: './tsconfig.spec.json',\n });\n }\n return json;\n }\n );\n } else {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n return json;\n }\n );\n }\n\n let runtimeTsconfigPath = joinPathFragments(\n projectRoot,\n projectType === 'application' ? 'tsconfig.app.json' : 'tsconfig.lib.json'\n );\n if (options.runtimeTsconfigFileName) {\n runtimeTsconfigPath = joinPathFragments(\n projectRoot,\n options.runtimeTsconfigFileName\n );\n if (!tree.exists(runtimeTsconfigPath)) {\n throw new Error(\n `Cannot find the specified runtimeTsConfigFileName (\"${options.runtimeTsconfigFileName}\") at the project root \"${projectRoot}\".`\n );\n }\n }\n\n if (tree.exists(runtimeTsconfigPath)) {\n updateJson(tree, runtimeTsconfigPath, (json) => {\n if (options.inSourceTests) {\n (json.compilerOptions.types ??= []).push('vitest/importMeta');\n } else {\n const uniqueExclude = new Set([\n ...(json.exclude || []),\n 'vite.config.ts',\n 'vite.config.mts',\n 'vitest.config.ts',\n 'vitest.config.mts',\n 'src/**/*.test.ts',\n 'src/**/*.spec.ts',\n 'src/**/*.test.tsx',\n 'src/**/*.spec.tsx',\n 'src/**/*.test.js',\n 'src/**/*.spec.js',\n 'src/**/*.test.jsx',\n 'src/**/*.spec.jsx',\n ]);\n json.exclude = [...uniqueExclude];\n }\n\n if (setupFile) {\n json.exclude = [...(json.exclude ?? []), setupFile];\n }\n\n return json;\n });\n } else {\n logger.warn(\n `Couldn't find a runtime tsconfig file at ${runtimeTsconfigPath} to exclude the test files from. ` +\n `If you're using a different filename for your runtime tsconfig, please provide it with the '--runtimeTsconfigFileName' flag.`\n );\n }\n}\n\nfunction createFiles(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string\n) {\n generateFiles(tree, join(__dirname, 'files'), projectRoot, {\n tmpl: '',\n ...options,\n projectRoot,\n offsetFromRoot: offsetFromRoot(projectRoot),\n });\n}\n\nfunction getCoverageProviderDependency(\n coverageProvider: VitestGeneratorSchema['coverageProvider']\n) {\n switch (coverageProvider) {\n case 'v8':\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n case 'istanbul':\n return {\n '@vitest/coverage-istanbul': vitestCoverageIstanbulVersion,\n };\n default:\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n }\n}\n\nfunction tryFindSetupFile(tree: Tree, projectRoot: string) {\n const setupFile = joinPathFragments('src', 'test-setup.ts');\n if (tree.exists(joinPathFragments(projectRoot, setupFile))) {\n return setupFile;\n }\n}\n\nexport default vitestGenerator;\n"],"names":["vitestGenerator","vitestGeneratorInternal","tree","schema","hasPlugin","addPlugin","nxJson","testEnvironment","tasks","root","projectType","readProjectConfiguration","project","isRootProject","push","jsInitGenerator","skipFormat","initTask","initGenerator","ensureDependencies","readNxJson","hasPluginCheck","plugins","some","p","plugin","testTarget","addOrChangeTestTarget","skipViteConfig","uiFramework","createOrEditViteConfig","includeLib","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","coverageProvider","createFiles","updateTsConfig","coverageProviderDependency","getCoverageProviderDependency","installCoverageProviderTask","addDependenciesToPackageJson","exists","write","formatFiles","runTasksInSerial","options","projectRoot","setupFile","tryFindSetupFile","joinPathFragments","updateJson","json","compilerOptions","types","includes","files","references","r","path","runtimeTsconfigPath","runtimeTsconfigFileName","Error","uniqueExclude","Set","exclude","logger","warn","generateFiles","join","__dirname","tmpl","offsetFromRoot","vitestCoverageV8Version","vitestCoverageIstanbulVersion"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/vitest/vitest-generator.ts"],"sourcesContent":["import {\n addDependenciesToPackageJson,\n formatFiles,\n generateFiles,\n GeneratorCallback,\n joinPathFragments,\n logger,\n offsetFromRoot,\n ProjectType,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n} from '@nx/devkit';\nimport { initGenerator as jsInitGenerator } from '@nx/js';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { join } from 'path';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\nimport {\n addOrChangeTestTarget,\n createOrEditViteConfig,\n} from '../../utils/generator-utils';\nimport {\n vitestCoverageIstanbulVersion,\n vitestCoverageV8Version,\n} from '../../utils/versions';\nimport initGenerator from '../init/init';\nimport { VitestGeneratorSchema } from './schema';\n\nexport function vitestGenerator(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n return vitestGeneratorInternal(\n tree,\n { addPlugin: false, ...schema },\n hasPlugin\n );\n}\n\nexport async function vitestGeneratorInternal(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n const tasks: GeneratorCallback[] = [];\n\n const { root, projectType } = readProjectConfiguration(tree, schema.project);\n const isRootProject = root === '.';\n\n tasks.push(await jsInitGenerator(tree, { ...schema, skipFormat: true }));\n const initTask = await initGenerator(tree, {\n skipFormat: true,\n addPlugin: schema.addPlugin,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const hasPluginCheck = nxJson.plugins?.some(\n (p) =>\n (typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin') || hasPlugin\n );\n if (!hasPluginCheck) {\n const testTarget = schema.testTarget ?? 'test';\n addOrChangeTestTarget(tree, schema, testTarget);\n }\n\n if (!schema.skipViteConfig) {\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: projectType === 'library',\n includeVitest: true,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n coverageProvider: schema.coverageProvider,\n },\n true\n );\n } else {\n createOrEditViteConfig(\n tree,\n {\n ...schema,\n includeVitest: true,\n includeLib: projectType === 'library',\n },\n true\n );\n }\n }\n\n createFiles(tree, schema, root);\n updateTsConfig(tree, schema, root, projectType);\n\n const coverageProviderDependency = getCoverageProviderDependency(\n schema.coverageProvider\n );\n\n const installCoverageProviderTask = addDependenciesToPackageJson(\n tree,\n {},\n coverageProviderDependency\n );\n tasks.push(installCoverageProviderTask);\n\n // Setup workspace config file (https://vitest.dev/guide/workspace.html)\n if (\n !isRootProject &&\n !tree.exists(`vitest.workspace.ts`) &&\n !tree.exists(`vitest.workspace.js`) &&\n !tree.exists(`vitest.workspace.json`) &&\n !tree.exists(`vitest.projects.ts`) &&\n !tree.exists(`vitest.projects.js`) &&\n !tree.exists(`vitest.projects.json`)\n ) {\n tree.write(\n 'vitest.workspace.ts',\n `export default ['**/*/vite.config.{ts,mts}', '**/*/vitest.config.{ts,mts}'];`\n );\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nfunction updateTsConfig(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string,\n projectType: ProjectType\n) {\n const setupFile = tryFindSetupFile(tree, projectRoot);\n\n if (tree.exists(joinPathFragments(projectRoot, 'tsconfig.spec.json'))) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.spec.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n\n if (setupFile) {\n json.files = [...(json.files ?? []), setupFile];\n }\n\n return json;\n }\n );\n\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (\n json.references &&\n !json.references.some((r) => r.path === './tsconfig.spec.json')\n ) {\n json.references.push({\n path: './tsconfig.spec.json',\n });\n }\n return json;\n }\n );\n } else {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n return json;\n }\n );\n }\n\n let runtimeTsconfigPath = joinPathFragments(\n projectRoot,\n projectType === 'application' ? 'tsconfig.app.json' : 'tsconfig.lib.json'\n );\n if (options.runtimeTsconfigFileName) {\n runtimeTsconfigPath = joinPathFragments(\n projectRoot,\n options.runtimeTsconfigFileName\n );\n if (!tree.exists(runtimeTsconfigPath)) {\n throw new Error(\n `Cannot find the specified runtimeTsConfigFileName (\"${options.runtimeTsconfigFileName}\") at the project root \"${projectRoot}\".`\n );\n }\n }\n\n if (tree.exists(runtimeTsconfigPath)) {\n updateJson(tree, runtimeTsconfigPath, (json) => {\n if (options.inSourceTests) {\n (json.compilerOptions.types ??= []).push('vitest/importMeta');\n } else {\n const uniqueExclude = new Set([\n ...(json.exclude || []),\n 'vite.config.ts',\n 'vite.config.mts',\n 'vitest.config.ts',\n 'vitest.config.mts',\n 'src/**/*.test.ts',\n 'src/**/*.spec.ts',\n 'src/**/*.test.tsx',\n 'src/**/*.spec.tsx',\n 'src/**/*.test.js',\n 'src/**/*.spec.js',\n 'src/**/*.test.jsx',\n 'src/**/*.spec.jsx',\n ]);\n json.exclude = [...uniqueExclude];\n }\n\n if (setupFile) {\n json.exclude = [...(json.exclude ?? []), setupFile];\n }\n\n return json;\n });\n } else {\n logger.warn(\n `Couldn't find a runtime tsconfig file at ${runtimeTsconfigPath} to exclude the test files from. ` +\n `If you're using a different filename for your runtime tsconfig, please provide it with the '--runtimeTsconfigFileName' flag.`\n );\n }\n}\n\nfunction createFiles(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string\n) {\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\n const rootOffset = offsetFromRoot(projectRoot);\n\n generateFiles(tree, join(__dirname, 'files'), projectRoot, {\n tmpl: '',\n ...options,\n projectRoot,\n extendedConfig: isTsSolutionSetup\n ? `${rootOffset}tsconfig.base.json`\n : './tsconfig.json',\n outDir: isTsSolutionSetup ? `./out-tsc/jest` : `${rootOffset}dist/out-tsc`,\n });\n}\n\nfunction getCoverageProviderDependency(\n coverageProvider: VitestGeneratorSchema['coverageProvider']\n) {\n switch (coverageProvider) {\n case 'v8':\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n case 'istanbul':\n return {\n '@vitest/coverage-istanbul': vitestCoverageIstanbulVersion,\n };\n default:\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n }\n}\n\nfunction tryFindSetupFile(tree: Tree, projectRoot: string) {\n const setupFile = joinPathFragments('src', 'test-setup.ts');\n if (tree.exists(joinPathFragments(projectRoot, setupFile))) {\n return setupFile;\n }\n}\n\nexport default vitestGenerator;\n"],"names":["vitestGenerator","vitestGeneratorInternal","tree","schema","hasPlugin","addPlugin","nxJson","testEnvironment","tasks","root","projectType","readProjectConfiguration","project","isRootProject","push","jsInitGenerator","skipFormat","initTask","initGenerator","ensureDependencies","readNxJson","hasPluginCheck","plugins","some","p","plugin","testTarget","addOrChangeTestTarget","skipViteConfig","uiFramework","createOrEditViteConfig","includeLib","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","coverageProvider","createFiles","updateTsConfig","coverageProviderDependency","getCoverageProviderDependency","installCoverageProviderTask","addDependenciesToPackageJson","exists","write","formatFiles","runTasksInSerial","options","projectRoot","setupFile","tryFindSetupFile","joinPathFragments","updateJson","json","compilerOptions","types","includes","files","references","r","path","runtimeTsconfigPath","runtimeTsconfigFileName","Error","uniqueExclude","Set","exclude","logger","warn","isTsSolutionSetup","isUsingTsSolutionSetup","rootOffset","offsetFromRoot","generateFiles","join","__dirname","tmpl","extendedConfig","outDir","vitestCoverageV8Version","vitestCoverageIstanbulVersion"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAuTA,OAA+B;eAA/B;;IAzRgBA,eAAe;eAAfA;;IAYMC,uBAAuB;eAAvBA;;;;wBA5Bf;oBAC0C;iCACV;sBAClB;oCACc;gCAI5B;0BAIA;sBACmB;AAGnB,SAASD,gBACdE,IAAU,EACVC,MAA6B,EAC7BC,YAAY,KAAK;IAEjB,OAAOH,wBACLC,MACA;QAAEG,WAAW;OAAUF,SACvBC;AAEJ;AAEO,eAAeH,wBACpBC,IAAU,EACVC,MAA6B,EAC7BC,YAAY,KAAK;QAoBME;QAlBvB,8EAA8E;IAC9E,8EAA8E;IAC9EH;;IAAAA,qBAAAA,UAAAA,QAAOI,8CAAPJ,QAAOI,kBAAoB;IAE3B,MAAMC,QAA6B,EAAE;IAErC,MAAM,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,IAAAA,gCAAwB,EAACT,MAAMC,OAAOS,OAAO;IAC3E,MAAMC,gBAAgBJ,SAAS;IAE/BD,MAAMM,IAAI,CAAC,MAAMC,IAAAA,iBAAe,EAACb,MAAM,eAAKC;QAAQa,YAAY;;IAChE,MAAMC,WAAW,MAAMC,IAAAA,aAAa,EAAChB,MAAM;QACzCc,YAAY;QACZX,WAAWF,OAAOE,SAAS;IAC7B;IACAG,MAAMM,IAAI,CAACG;IACXT,MAAMM,IAAI,CAACK,IAAAA,sCAAkB,EAACjB,MAAMC;IAEpC,MAAMG,SAASc,IAAAA,kBAAU,EAAClB;IAC1B,MAAMmB,kBAAiBf,kBAAAA,OAAOgB,OAAO,qBAAdhB,gBAAgBiB,IAAI,CACzC,CAACC,IACC,AAAC,CAAA,OAAOA,MAAM,WACVA,MAAM,oBACNA,EAAEC,MAAM,KAAK,iBAAgB,KAAMrB;IAE3C,IAAI,CAACiB,gBAAgB;YACAlB;QAAnB,MAAMuB,aAAavB,CAAAA,qBAAAA,OAAOuB,UAAU,YAAjBvB,qBAAqB;QACxCwB,IAAAA,qCAAqB,EAACzB,MAAMC,QAAQuB;IACtC;IAEA,IAAI,CAACvB,OAAOyB,cAAc,EAAE;QAC1B,IAAIzB,OAAO0B,WAAW,KAAK,SAAS;YAClCC,IAAAA,sCAAsB,EACpB5B,MACA;gBACEU,SAAST,OAAOS,OAAO;gBACvBmB,YAAYrB,gBAAgB;gBAC5BsB,eAAe;gBACfC,eAAe9B,OAAO8B,aAAa;gBACnCC,uBAAuB;oBACrB;oBACA;oBACA;iBACD;gBACDC,SAAS;oBACPhC,OAAOiC,QAAQ,KAAK,QAChB,CAAC,4CAA4C,CAAC,GAC9C,CAAC,wCAAwC,CAAC;iBAC/C;gBACDd,SAAS;oBAAC;iBAAU;gBACpBe,kBAAkBlC,OAAOkC,gBAAgB;YAC3C,GACA;QAEJ,OAAO;YACLP,IAAAA,sCAAsB,EACpB5B,MACA,eACKC;gBACH6B,eAAe;gBACfD,YAAYrB,gBAAgB;gBAE9B;QAEJ;IACF;IAEA4B,YAAYpC,MAAMC,QAAQM;IAC1B8B,eAAerC,MAAMC,QAAQM,MAAMC;IAEnC,MAAM8B,6BAA6BC,8BACjCtC,OAAOkC,gBAAgB;IAGzB,MAAMK,8BAA8BC,IAAAA,oCAA4B,EAC9DzC,MACA,CAAC,GACDsC;IAEFhC,MAAMM,IAAI,CAAC4B;IAEX,wEAAwE;IACxE,IACE,CAAC7B,iBACD,CAACX,KAAK0C,MAAM,CAAC,CAAC,mBAAmB,CAAC,KAClC,CAAC1C,KAAK0C,MAAM,CAAC,CAAC,mBAAmB,CAAC,KAClC,CAAC1C,KAAK0C,MAAM,CAAC,CAAC,qBAAqB,CAAC,KACpC,CAAC1C,KAAK0C,MAAM,CAAC,CAAC,kBAAkB,CAAC,KACjC,CAAC1C,KAAK0C,MAAM,CAAC,CAAC,kBAAkB,CAAC,KACjC,CAAC1C,KAAK0C,MAAM,CAAC,CAAC,oBAAoB,CAAC,GACnC;QACA1C,KAAK2C,KAAK,CACR,uBACA,CAAC,4EAA4E,CAAC;IAElF;IAEA,IAAI,CAAC1C,OAAOa,UAAU,EAAE;QACtB,MAAM8B,IAAAA,mBAAW,EAAC5C;IACpB;IAEA,OAAO6C,IAAAA,wBAAgB,KAAIvC;AAC7B;AAEA,SAAS+B,eACPrC,IAAU,EACV8C,OAA8B,EAC9BC,WAAmB,EACnBvC,WAAwB;IAExB,MAAMwC,YAAYC,iBAAiBjD,MAAM+C;IAEzC,IAAI/C,KAAK0C,MAAM,CAACQ,IAAAA,yBAAiB,EAACH,aAAa,wBAAwB;QACrEI,IAAAA,kBAAU,EACRnD,MACAkD,IAAAA,yBAAiB,EAACH,aAAa,uBAC/B,CAACK;gBACMA,6BAAAA;YAAL,IAAI,GAACA,wBAAAA,KAAKC,eAAe,sBAApBD,8BAAAA,sBAAsBE,KAAK,qBAA3BF,4BAA6BG,QAAQ,CAAC,YAAW;oBAChDH;gBAAJ,KAAIA,yBAAAA,KAAKC,eAAe,qBAApBD,uBAAsBE,KAAK,EAAE;oBAC/BF,KAAKC,eAAe,CAACC,KAAK,CAAC1C,IAAI,CAAC;gBAClC,OAAO;wBACLwC;;oBAAAA,qBAAAA,QAAAA,MAAKC,8CAALD,MAAKC,kBAAoB,CAAC;oBAC1BD,KAAKC,eAAe,CAACC,KAAK,GAAG;wBAAC;qBAAS;gBACzC;YACF;YAEA,IAAIN,WAAW;oBACKI;gBAAlBA,KAAKI,KAAK,GAAG;uBAAKJ,CAAAA,cAAAA,KAAKI,KAAK,YAAVJ,cAAc,EAAE;oBAAGJ;iBAAU;YACjD;YAEA,OAAOI;QACT;QAGFD,IAAAA,kBAAU,EACRnD,MACAkD,IAAAA,yBAAiB,EAACH,aAAa,kBAC/B,CAACK;YACC,IACEA,KAAKK,UAAU,IACf,CAACL,KAAKK,UAAU,CAACpC,IAAI,CAAC,CAACqC,IAAMA,EAAEC,IAAI,KAAK,yBACxC;gBACAP,KAAKK,UAAU,CAAC7C,IAAI,CAAC;oBACnB+C,MAAM;gBACR;YACF;YACA,OAAOP;QACT;IAEJ,OAAO;QACLD,IAAAA,kBAAU,EACRnD,MACAkD,IAAAA,yBAAiB,EAACH,aAAa,kBAC/B,CAACK;gBACMA,6BAAAA;YAAL,IAAI,GAACA,wBAAAA,KAAKC,eAAe,sBAApBD,8BAAAA,sBAAsBE,KAAK,qBAA3BF,4BAA6BG,QAAQ,CAAC,YAAW;oBAChDH;gBAAJ,KAAIA,yBAAAA,KAAKC,eAAe,qBAApBD,uBAAsBE,KAAK,EAAE;oBAC/BF,KAAKC,eAAe,CAACC,KAAK,CAAC1C,IAAI,CAAC;gBAClC,OAAO;wBACLwC;;oBAAAA,qBAAAA,QAAAA,MAAKC,8CAALD,MAAKC,kBAAoB,CAAC;oBAC1BD,KAAKC,eAAe,CAACC,KAAK,GAAG;wBAAC;qBAAS;gBACzC;YACF;YACA,OAAOF;QACT;IAEJ;IAEA,IAAIQ,sBAAsBV,IAAAA,yBAAiB,EACzCH,aACAvC,gBAAgB,gBAAgB,sBAAsB;IAExD,IAAIsC,QAAQe,uBAAuB,EAAE;QACnCD,sBAAsBV,IAAAA,yBAAiB,EACrCH,aACAD,QAAQe,uBAAuB;QAEjC,IAAI,CAAC7D,KAAK0C,MAAM,CAACkB,sBAAsB;YACrC,MAAM,IAAIE,MACR,CAAC,oDAAoD,EAAEhB,QAAQe,uBAAuB,CAAC,wBAAwB,EAAEd,YAAY,EAAE,CAAC;QAEpI;IACF;IAEA,IAAI/C,KAAK0C,MAAM,CAACkB,sBAAsB;QACpCT,IAAAA,kBAAU,EAACnD,MAAM4D,qBAAqB,CAACR;YACrC,IAAIN,QAAQf,aAAa,EAAE;oBACxBqB;;gBAAAA,CAAAA,WAAAA,wBAAAA,KAAKC,eAAe,EAACC,0BAArBF,sBAAqBE,QAAU,EAAE,AAAD,EAAG1C,IAAI,CAAC;YAC3C,OAAO;gBACL,MAAMmD,gBAAgB,IAAIC,IAAI;uBACxBZ,KAAKa,OAAO,IAAI,EAAE;oBACtB;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;iBACD;gBACDb,KAAKa,OAAO,GAAG;uBAAIF;iBAAc;YACnC;YAEA,IAAIf,WAAW;oBACOI;gBAApBA,KAAKa,OAAO,GAAG;uBAAKb,CAAAA,gBAAAA,KAAKa,OAAO,YAAZb,gBAAgB,EAAE;oBAAGJ;iBAAU;YACrD;YAEA,OAAOI;QACT;IACF,OAAO;QACLc,cAAM,CAACC,IAAI,CACT,CAAC,yCAAyC,EAAEP,oBAAoB,iCAAiC,CAAC,GAChG,CAAC,4HAA4H,CAAC;IAEpI;AACF;AAEA,SAASxB,YACPpC,IAAU,EACV8C,OAA8B,EAC9BC,WAAmB;IAEnB,MAAMqB,oBAAoBC,IAAAA,uCAAsB,EAACrE;IACjD,MAAMsE,aAAaC,IAAAA,sBAAc,EAACxB;IAElCyB,IAAAA,qBAAa,EAACxE,MAAMyE,IAAAA,UAAI,EAACC,WAAW,UAAU3B,aAAa;QACzD4B,MAAM;OACH7B;QACHC;QACA6B,gBAAgBR,oBACZ,CAAC,EAAEE,WAAW,kBAAkB,CAAC,GACjC;QACJO,QAAQT,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAEE,WAAW,YAAY,CAAC;;AAE9E;AAEA,SAAS/B,8BACPJ,gBAA2D;IAE3D,OAAQA;QACN,KAAK;YACH,OAAO;gBACL,uBAAuB2C,iCAAuB;YAChD;QACF,KAAK;YACH,OAAO;gBACL,6BAA6BC,uCAA6B;YAC5D;QACF;YACE,OAAO;gBACL,uBAAuBD,iCAAuB;YAChD;IACJ;AACF;AAEA,SAAS7B,iBAAiBjD,IAAU,EAAE+C,WAAmB;IACvD,MAAMC,YAAYE,IAAAA,yBAAiB,EAAC,OAAO;IAC3C,IAAIlD,KAAK0C,MAAM,CAACQ,IAAAA,yBAAiB,EAACH,aAAaC,aAAa;QAC1D,OAAOA;IACT;AACF;MAEA,WAAelD"}