@nx/vite 19.3.0-beta.0 → 19.3.0-beta.1

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/generators.json CHANGED
@@ -16,10 +16,15 @@
16
16
  "aliases": ["config"],
17
17
  "hidden": false
18
18
  },
19
+ "setup-paths-plugin": {
20
+ "factory": "./src/generators/setup-paths-plugin/setup-paths-plugin",
21
+ "schema": "./src/generators/setup-paths-plugin/schema.json",
22
+ "description": "Sets up the nxViteTsPaths plugin to enable support for workspace libraries."
23
+ },
19
24
  "vitest": {
20
25
  "factory": "./src/generators/vitest/vitest-generator#vitestGeneratorInternal",
21
26
  "schema": "./src/generators/vitest/schema.json",
22
- "description": "Generate a vitest configuration"
27
+ "description": "Generate a vitest configuration."
23
28
  }
24
29
  }
25
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/vite",
3
- "version": "19.3.0-beta.0",
3
+ "version": "19.3.0-beta.1",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for building and testing applications using Vite",
6
6
  "repository": {
@@ -30,13 +30,13 @@
30
30
  "migrations": "./migrations.json"
31
31
  },
32
32
  "dependencies": {
33
- "@nx/devkit": "19.3.0-beta.0",
33
+ "@nx/devkit": "19.3.0-beta.1",
34
34
  "@phenomnomnominal/tsquery": "~5.0.1",
35
35
  "@swc/helpers": "~0.5.0",
36
36
  "enquirer": "~2.3.6",
37
- "@nx/js": "19.3.0-beta.0",
37
+ "@nx/js": "19.3.0-beta.1",
38
38
  "tsconfig-paths": "^4.1.2",
39
- "@nrwl/vite": "19.3.0-beta.0"
39
+ "@nrwl/vite": "19.3.0-beta.1"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "vite": "^5.0.0",
package/plugin.d.ts CHANGED
@@ -1 +1 @@
1
- export { createNodes, VitePluginOptions, createDependencies, } from './src/plugins/plugin';
1
+ export { createNodes, createNodesV2, VitePluginOptions, createDependencies, } from './src/plugins/plugin';
package/plugin.js CHANGED
@@ -14,6 +14,9 @@ _export(exports, {
14
14
  },
15
15
  createNodes: function() {
16
16
  return _plugin.createNodes;
17
+ },
18
+ createNodesV2: function() {
19
+ return _plugin.createNodesV2;
17
20
  }
18
21
  });
19
22
  const _plugin = require("./src/plugins/plugin");
package/plugin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../packages/vite/plugin.ts"],"sourcesContent":["export {\n createNodes,\n VitePluginOptions,\n createDependencies,\n} from './src/plugins/plugin';\n"],"names":["VitePluginOptions","createDependencies","createNodes"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAEEA,iBAAiB;eAAjBA,yBAAiB;;IACjBC,kBAAkB;eAAlBA,0BAAkB;;IAFlBC,WAAW;eAAXA,mBAAW;;;wBAGN"}
1
+ {"version":3,"sources":["../../../packages/vite/plugin.ts"],"sourcesContent":["export {\n createNodes,\n createNodesV2,\n VitePluginOptions,\n createDependencies,\n} from './src/plugins/plugin';\n"],"names":["VitePluginOptions","createDependencies","createNodes","createNodesV2"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAGEA,iBAAiB;eAAjBA,yBAAiB;;IACjBC,kBAAkB;eAAlBA,0BAAkB;;IAHlBC,WAAW;eAAXA,mBAAW;;IACXC,aAAa;eAAbA,qBAAa;;;wBAGR"}
@@ -30,7 +30,7 @@ async function* viteBuildExecutor(options, context) {
30
30
  // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
31
31
  const { mergeConfig, build, loadConfigFromFile } = await (0, _executorutils.loadViteDynamicImport)();
32
32
  const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
33
- (0, _executorutils.createBuildableTsConfig)(projectRoot, options, context);
33
+ const tsConfigForBuild = (0, _executorutils.createBuildableTsConfig)(projectRoot, options, context);
34
34
  const viteConfigPath = (0, _optionsutils.normalizeViteConfigFilePath)(context.root, projectRoot, options.configFile);
35
35
  const root = projectRoot === '.' ? process.cwd() : (0, _path.relative)(context.cwd, (0, _devkit.joinPathFragments)(context.root, projectRoot));
36
36
  const { buildOptions, otherOptions } = await getBuildExtraArgs(options);
@@ -53,11 +53,10 @@ async function* viteBuildExecutor(options, context) {
53
53
  }, buildOptions)
54
54
  }, otherOptions));
55
55
  if (!options.skipTypeCheck) {
56
- var _options_tsConfig;
57
56
  await (0, _executorutils.validateTypes)({
58
57
  workspaceRoot: context.root,
59
58
  projectRoot: projectRoot,
60
- tsconfig: (_options_tsConfig = options.tsConfig) != null ? _options_tsConfig : (0, _optionsutils.getProjectTsConfigPath)(projectRoot)
59
+ tsconfig: tsConfigForBuild
61
60
  });
62
61
  }
63
62
  const watcherOrOutput = await build(buildConfig);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import {\n detectPackageManager,\n ExecutorContext,\n joinPathFragments,\n logger,\n offsetFromRoot,\n stripIndents,\n writeJsonFile,\n} from '@nx/devkit';\nimport {\n getProjectTsConfigPath,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from './schema';\nimport {\n copyAssets,\n createLockFile,\n createPackageJson,\n getLockFileName,\n} from '@nx/js';\nimport { existsSync, writeFileSync } from 'fs';\nimport { relative, resolve } from 'path';\nimport { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\nimport {\n createBuildableTsConfig,\n loadViteDynamicImport,\n validateTypes,\n} from '../../utils/executor-utils';\n\nexport async function* viteBuildExecutor(\n options: Record<string, any> & ViteBuildExecutorOptions,\n context: ExecutorContext\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 { mergeConfig, build, loadConfigFromFile } =\n await loadViteDynamicImport();\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n createBuildableTsConfig(projectRoot, options, context);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const { buildOptions, otherOptions } = await getBuildExtraArgs(options);\n\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n joinPathFragments(offsetFromRoot(projectRoot), options.outputPath) ??\n resolved?.config?.build?.outDir;\n\n const buildConfig = mergeConfig(\n {\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 build: {\n outDir,\n ...buildOptions,\n },\n ...otherOptions,\n }\n );\n\n if (!options.skipTypeCheck) {\n await validateTypes({\n workspaceRoot: context.root,\n projectRoot: projectRoot,\n tsconfig: options.tsConfig ?? getProjectTsConfigPath(projectRoot),\n });\n }\n\n const watcherOrOutput = await build(buildConfig);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n\n // Here, we want the outdir relative to the workspace root.\n // So, we calculate the relative path from the workspace root to the outdir.\n const outDirRelativeToWorkspaceRoot = outDir.replaceAll('../', '');\n const distPackageJson = resolve(\n outDirRelativeToWorkspaceRoot,\n 'package.json'\n );\n\n // Generate a package.json if option has been set.\n if (options.generatePackageJson) {\n if (context.projectGraph.nodes[context.projectName].type !== 'app') {\n logger.warn(\n stripIndents`The project ${context.projectName} is using the 'generatePackageJson' option which is deprecated for library projects. It should only be used for applications.\n For libraries, configure the project to use the '@nx/dependency-checks' ESLint rule instead (https://nx.dev/nx-api/eslint-plugin/documents/dependency-checks).`\n );\n }\n\n const builtPackageJson = createPackageJson(\n context.projectName,\n context.projectGraph,\n {\n target: context.targetName,\n root: context.root,\n isProduction: !options.includeDevDependenciesInPackageJson, // By default we remove devDependencies since this is a production build.\n }\n );\n\n builtPackageJson.type = 'module';\n\n writeJsonFile(\n `${outDirRelativeToWorkspaceRoot}/package.json`,\n builtPackageJson\n );\n const packageManager = detectPackageManager(context.root);\n\n const lockFile = createLockFile(\n builtPackageJson,\n context.projectGraph,\n packageManager\n );\n writeFileSync(\n `${outDirRelativeToWorkspaceRoot}/${getLockFileName(packageManager)}`,\n lockFile,\n {\n encoding: 'utf-8',\n }\n );\n }\n // For buildable libs, copy package.json if it exists.\n else if (\n options.generatePackageJson !== false &&\n !existsSync(distPackageJson) &&\n existsSync(libraryPackageJson) &&\n rootPackageJson !== libraryPackageJson\n ) {\n await copyAssets(\n {\n outputPath: outDirRelativeToWorkspaceRoot,\n assets: [\n {\n input: projectRoot,\n output: '.',\n glob: 'package.json',\n },\n ],\n },\n context\n );\n }\n\n if ('on' in watcherOrOutput) {\n const iterable = createAsyncIterable<{ success: boolean }>(({ next }) => {\n let success = true;\n watcherOrOutput.on('event', (event) => {\n if (event.code === 'START') {\n success = true;\n } else if (event.code === 'ERROR') {\n success = false;\n } else if (event.code === 'END') {\n next({ success });\n }\n // result must be closed when present.\n // see https://rollupjs.org/guide/en/#rollupwatch\n if ('result' in event && event.result) {\n event.result.close();\n }\n });\n });\n yield* iterable;\n } else {\n const output = watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(outDirRelativeToWorkspaceRoot, fileName);\n yield { success: true, outfile };\n }\n}\n\nexport async function getBuildExtraArgs(\n options: ViteBuildExecutorOptions\n): Promise<{\n // vite BuildOptions\n buildOptions: Record<string, unknown>;\n otherOptions: Record<string, any>;\n}> {\n // support passing extra args to vite cli\n const schema = await import('./schema.json');\n const extraArgs = {};\n for (const key of Object.keys(options)) {\n if (!schema.properties[key]) {\n extraArgs[key] = options[key];\n }\n }\n\n const buildOptions = {};\n const buildSchemaKeys = [\n 'target',\n 'polyfillModulePreload',\n 'modulePreload',\n 'outDir',\n 'assetsDir',\n 'assetsInlineLimit',\n 'cssCodeSplit',\n 'cssTarget',\n 'cssMinify',\n 'sourcemap',\n 'minify',\n 'terserOptions',\n 'rollupOptions',\n 'commonjsOptions',\n 'dynamicImportVarsOptions',\n 'write',\n 'emptyOutDir',\n 'copyPublicDir',\n 'manifest',\n 'lib',\n 'ssr',\n 'ssrManifest',\n 'ssrEmitAssets',\n 'reportCompressedSize',\n 'chunkSizeWarningLimit',\n 'watch',\n ];\n const otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (buildSchemaKeys.includes(key)) {\n buildOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n buildOptions['watch'] = options.watch ?? undefined;\n\n return {\n buildOptions,\n otherOptions,\n };\n}\n\nexport default viteBuildExecutor;\n"],"names":["getBuildExtraArgs","viteBuildExecutor","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","build","loadConfigFromFile","loadViteDynamicImport","projectRoot","projectsConfigurations","projects","projectName","root","createBuildableTsConfig","viteConfigPath","normalizeViteConfigFilePath","configFile","cwd","relative","joinPathFragments","buildOptions","otherOptions","mode","command","outDir","offsetFromRoot","outputPath","config","buildConfig","skipTypeCheck","validateTypes","workspaceRoot","tsconfig","tsConfig","getProjectTsConfigPath","watcherOrOutput","libraryPackageJson","resolve","rootPackageJson","outDirRelativeToWorkspaceRoot","replaceAll","distPackageJson","generatePackageJson","projectGraph","nodes","type","logger","warn","stripIndents","builtPackageJson","createPackageJson","target","targetName","isProduction","includeDevDependenciesInPackageJson","writeJsonFile","packageManager","detectPackageManager","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","schema","extraArgs","key","Object","keys","properties","buildSchemaKeys","includes","watch","undefined"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import {\n detectPackageManager,\n ExecutorContext,\n joinPathFragments,\n logger,\n offsetFromRoot,\n stripIndents,\n writeJsonFile,\n} from '@nx/devkit';\nimport {\n getProjectTsConfigPath,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from './schema';\nimport {\n copyAssets,\n createLockFile,\n createPackageJson,\n getLockFileName,\n} from '@nx/js';\nimport { existsSync, writeFileSync } from 'fs';\nimport { relative, resolve } from 'path';\nimport { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\nimport {\n createBuildableTsConfig,\n loadViteDynamicImport,\n validateTypes,\n} from '../../utils/executor-utils';\n\nexport async function* viteBuildExecutor(\n options: Record<string, any> & ViteBuildExecutorOptions,\n context: ExecutorContext\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 { mergeConfig, build, loadConfigFromFile } =\n await loadViteDynamicImport();\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const tsConfigForBuild = createBuildableTsConfig(\n projectRoot,\n options,\n context\n );\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const { buildOptions, otherOptions } = await getBuildExtraArgs(options);\n\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n joinPathFragments(offsetFromRoot(projectRoot), options.outputPath) ??\n resolved?.config?.build?.outDir;\n\n const buildConfig = mergeConfig(\n {\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 build: {\n outDir,\n ...buildOptions,\n },\n ...otherOptions,\n }\n );\n\n if (!options.skipTypeCheck) {\n await validateTypes({\n workspaceRoot: context.root,\n projectRoot: projectRoot,\n tsconfig: tsConfigForBuild,\n });\n }\n\n const watcherOrOutput = await build(buildConfig);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n\n // Here, we want the outdir relative to the workspace root.\n // So, we calculate the relative path from the workspace root to the outdir.\n const outDirRelativeToWorkspaceRoot = outDir.replaceAll('../', '');\n const distPackageJson = resolve(\n outDirRelativeToWorkspaceRoot,\n 'package.json'\n );\n\n // Generate a package.json if option has been set.\n if (options.generatePackageJson) {\n if (context.projectGraph.nodes[context.projectName].type !== 'app') {\n logger.warn(\n stripIndents`The project ${context.projectName} is using the 'generatePackageJson' option which is deprecated for library projects. It should only be used for applications.\n For libraries, configure the project to use the '@nx/dependency-checks' ESLint rule instead (https://nx.dev/nx-api/eslint-plugin/documents/dependency-checks).`\n );\n }\n\n const builtPackageJson = createPackageJson(\n context.projectName,\n context.projectGraph,\n {\n target: context.targetName,\n root: context.root,\n isProduction: !options.includeDevDependenciesInPackageJson, // By default we remove devDependencies since this is a production build.\n }\n );\n\n builtPackageJson.type = 'module';\n\n writeJsonFile(\n `${outDirRelativeToWorkspaceRoot}/package.json`,\n builtPackageJson\n );\n const packageManager = detectPackageManager(context.root);\n\n const lockFile = createLockFile(\n builtPackageJson,\n context.projectGraph,\n packageManager\n );\n writeFileSync(\n `${outDirRelativeToWorkspaceRoot}/${getLockFileName(packageManager)}`,\n lockFile,\n {\n encoding: 'utf-8',\n }\n );\n }\n // For buildable libs, copy package.json if it exists.\n else if (\n options.generatePackageJson !== false &&\n !existsSync(distPackageJson) &&\n existsSync(libraryPackageJson) &&\n rootPackageJson !== libraryPackageJson\n ) {\n await copyAssets(\n {\n outputPath: outDirRelativeToWorkspaceRoot,\n assets: [\n {\n input: projectRoot,\n output: '.',\n glob: 'package.json',\n },\n ],\n },\n context\n );\n }\n\n if ('on' in watcherOrOutput) {\n const iterable = createAsyncIterable<{ success: boolean }>(({ next }) => {\n let success = true;\n watcherOrOutput.on('event', (event) => {\n if (event.code === 'START') {\n success = true;\n } else if (event.code === 'ERROR') {\n success = false;\n } else if (event.code === 'END') {\n next({ success });\n }\n // result must be closed when present.\n // see https://rollupjs.org/guide/en/#rollupwatch\n if ('result' in event && event.result) {\n event.result.close();\n }\n });\n });\n yield* iterable;\n } else {\n const output = watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(outDirRelativeToWorkspaceRoot, fileName);\n yield { success: true, outfile };\n }\n}\n\nexport async function getBuildExtraArgs(\n options: ViteBuildExecutorOptions\n): Promise<{\n // vite BuildOptions\n buildOptions: Record<string, unknown>;\n otherOptions: Record<string, any>;\n}> {\n // support passing extra args to vite cli\n const schema = await import('./schema.json');\n const extraArgs = {};\n for (const key of Object.keys(options)) {\n if (!schema.properties[key]) {\n extraArgs[key] = options[key];\n }\n }\n\n const buildOptions = {};\n const buildSchemaKeys = [\n 'target',\n 'polyfillModulePreload',\n 'modulePreload',\n 'outDir',\n 'assetsDir',\n 'assetsInlineLimit',\n 'cssCodeSplit',\n 'cssTarget',\n 'cssMinify',\n 'sourcemap',\n 'minify',\n 'terserOptions',\n 'rollupOptions',\n 'commonjsOptions',\n 'dynamicImportVarsOptions',\n 'write',\n 'emptyOutDir',\n 'copyPublicDir',\n 'manifest',\n 'lib',\n 'ssr',\n 'ssrManifest',\n 'ssrEmitAssets',\n 'reportCompressedSize',\n 'chunkSizeWarningLimit',\n 'watch',\n ];\n const otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (buildSchemaKeys.includes(key)) {\n buildOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n buildOptions['watch'] = options.watch ?? undefined;\n\n return {\n buildOptions,\n otherOptions,\n };\n}\n\nexport default viteBuildExecutor;\n"],"names":["getBuildExtraArgs","viteBuildExecutor","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","build","loadConfigFromFile","loadViteDynamicImport","projectRoot","projectsConfigurations","projects","projectName","root","tsConfigForBuild","createBuildableTsConfig","viteConfigPath","normalizeViteConfigFilePath","configFile","cwd","relative","joinPathFragments","buildOptions","otherOptions","mode","command","outDir","offsetFromRoot","outputPath","config","buildConfig","skipTypeCheck","validateTypes","workspaceRoot","tsconfig","watcherOrOutput","libraryPackageJson","resolve","rootPackageJson","outDirRelativeToWorkspaceRoot","replaceAll","distPackageJson","generatePackageJson","projectGraph","nodes","type","logger","warn","stripIndents","builtPackageJson","createPackageJson","target","targetName","isProduction","includeDevDependenciesInPackageJson","writeJsonFile","packageManager","detectPackageManager","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","schema","extraArgs","key","Object","keys","properties","buildSchemaKeys","includes","watch","undefined"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -22,6 +22,7 @@ _export(exports, {
22
22
  const _extends = require("@swc/helpers/_/_extends");
23
23
  const _devkit = require("@nx/devkit");
24
24
  const _addplugin = require("@nx/devkit/src/utils/add-plugin");
25
+ const _setuppathsplugin = require("../setup-paths-plugin/setup-paths-plugin");
25
26
  const _plugin = require("../../plugins/plugin");
26
27
  const _utils = require("./lib/utils");
27
28
  function updateNxJsonSettings(tree) {
@@ -90,6 +91,11 @@ async function initGeneratorInternal(tree, schema) {
90
91
  }, schema.updatePackageScripts);
91
92
  }
92
93
  updateNxJsonSettings(tree);
94
+ if (schema.setupPathsPlugin) {
95
+ await (0, _setuppathsplugin.setupPathsPlugin)(tree, {
96
+ skipFormat: true
97
+ });
98
+ }
93
99
  const tasks = [];
94
100
  if (!schema.skipPackageJson) {
95
101
  tasks.push((0, _utils.moveToDevDependencies)(tree));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/generators/init/init.ts"],"sourcesContent":["import {\n createProjectGraphAsync,\n formatFiles,\n GeneratorCallback,\n readNxJson,\n runTasksInSerial,\n Tree,\n updateNxJson,\n} from '@nx/devkit';\nimport { addPluginV1 } from '@nx/devkit/src/utils/add-plugin';\n\nimport { createNodes } from '../../plugins/plugin';\nimport { InitGeneratorSchema } from './schema';\nimport { checkDependenciesInstalled, moveToDevDependencies } from './lib/utils';\n\nexport function updateNxJsonSettings(tree: Tree) {\n const nxJson = readNxJson(tree);\n\n const productionFileSet = nxJson.namedInputs?.production;\n if (productionFileSet) {\n productionFileSet.push(\n '!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)',\n '!{projectRoot}/tsconfig.spec.json'\n );\n\n nxJson.namedInputs.production = Array.from(new Set(productionFileSet));\n }\n\n const hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin'\n );\n\n if (!hasPlugin) {\n nxJson.targetDefaults ??= {};\n nxJson.targetDefaults['@nx/vite:test'] ??= {};\n nxJson.targetDefaults['@nx/vite:test'].cache ??= true;\n nxJson.targetDefaults['@nx/vite:test'].inputs ??= [\n 'default',\n productionFileSet ? '^production' : '^default',\n ];\n }\n\n updateNxJson(tree, nxJson);\n}\n\nexport function initGenerator(tree: Tree, schema: InitGeneratorSchema) {\n return initGeneratorInternal(tree, { addPlugin: false, ...schema });\n}\n\nexport async function initGeneratorInternal(\n tree: Tree,\n schema: InitGeneratorSchema\n) {\n const nxJson = readNxJson(tree);\n const addPluginDefault =\n process.env.NX_ADD_PLUGINS !== 'false' &&\n nxJson.useInferencePlugins !== false;\n schema.addPlugin ??= addPluginDefault;\n\n if (schema.addPlugin) {\n await addPluginV1(\n tree,\n await createProjectGraphAsync(),\n '@nx/vite/plugin',\n createNodes,\n {\n buildTargetName: ['build', 'vite:build', 'vite-build'],\n testTargetName: ['test', 'vite:test', 'vite-test'],\n serveTargetName: ['serve', 'vite:serve', 'vite-serve'],\n previewTargetName: ['preview', 'vite:preview', 'vite-preview'],\n serveStaticTargetName: [\n 'serve-static',\n 'vite:serve-static',\n 'vite-serve-static',\n ],\n },\n schema.updatePackageScripts\n );\n }\n\n updateNxJsonSettings(tree);\n\n const tasks: GeneratorCallback[] = [];\n if (!schema.skipPackageJson) {\n tasks.push(moveToDevDependencies(tree));\n tasks.push(checkDependenciesInstalled(tree, schema));\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default initGenerator;\n"],"names":["initGenerator","initGeneratorInternal","updateNxJsonSettings","tree","nxJson","readNxJson","productionFileSet","namedInputs","production","push","Array","from","Set","hasPlugin","plugins","some","p","plugin","targetDefaults","cache","inputs","updateNxJson","schema","addPlugin","addPluginDefault","process","env","NX_ADD_PLUGINS","useInferencePlugins","addPluginV1","createProjectGraphAsync","createNodes","buildTargetName","testTargetName","serveTargetName","previewTargetName","serveStaticTargetName","updatePackageScripts","tasks","skipPackageJson","moveToDevDependencies","checkDependenciesInstalled","skipFormat","formatFiles","runTasksInSerial"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAiGA,OAA6B;eAA7B;;IAlDgBA,aAAa;eAAbA;;IAIMC,qBAAqB;eAArBA;;IApCNC,oBAAoB;eAApBA;;;;wBAPT;2BACqB;wBAEA;uBAEsC;AAE3D,SAASA,qBAAqBC,IAAU;QAGnBC,qBAURA;IAZlB,MAAMA,SAASC,IAAAA,kBAAU,EAACF;IAE1B,MAAMG,qBAAoBF,sBAAAA,OAAOG,WAAW,qBAAlBH,oBAAoBI,UAAU;IACxD,IAAIF,mBAAmB;QACrBA,kBAAkBG,IAAI,CACpB,yDACA;QAGFL,OAAOG,WAAW,CAACC,UAAU,GAAGE,MAAMC,IAAI,CAAC,IAAIC,IAAIN;IACrD;IAEA,MAAMO,aAAYT,kBAAAA,OAAOU,OAAO,qBAAdV,gBAAgBW,IAAI,CAAC,CAACC,IACtC,OAAOA,MAAM,WACTA,MAAM,oBACNA,EAAEC,MAAM,KAAK;IAGnB,IAAI,CAACJ,WAAW;YACdT,SACAA,wBAAsB,aACtBA,mCACAA;;QAHAA,oBAAAA,UAAAA,QAAOc,4CAAPd,QAAOc,iBAAmB,CAAC;;QAC3Bd,MAAAA,yBAAAA,OAAOc,cAAc,CAAA,CAAC,cAAA,gBAAgB,gBAAtCd,sBAAqB,CAAC,YAAgB,GAAK,CAAC;;QAC5CA,WAAAA,oCAAAA,OAAOc,cAAc,CAAC,gBAAgB,EAACC,0BAAvCf,kCAAuCe,QAAU;;QACjDf,YAAAA,qCAAAA,OAAOc,cAAc,CAAC,gBAAgB,EAACE,4BAAvChB,mCAAuCgB,SAAW;YAChD;YACAd,oBAAoB,gBAAgB;SACrC;IACH;IAEAe,IAAAA,oBAAY,EAAClB,MAAMC;AACrB;AAEO,SAASJ,cAAcG,IAAU,EAAEmB,MAA2B;IACnE,OAAOrB,sBAAsBE,MAAM;QAAEoB,WAAW;OAAUD;AAC5D;AAEO,eAAerB,sBACpBE,IAAU,EACVmB,MAA2B;QAM3BA;IAJA,MAAMlB,SAASC,IAAAA,kBAAU,EAACF;IAC1B,MAAMqB,mBACJC,QAAQC,GAAG,CAACC,cAAc,KAAK,WAC/BvB,OAAOwB,mBAAmB,KAAK;;IACjCN,eAAAA,UAAAA,QAAOC,kCAAPD,QAAOC,YAAcC;IAErB,IAAIF,OAAOC,SAAS,EAAE;QACpB,MAAMM,IAAAA,sBAAW,EACf1B,MACA,MAAM2B,IAAAA,+BAAuB,KAC7B,mBACAC,mBAAW,EACX;YACEC,iBAAiB;gBAAC;gBAAS;gBAAc;aAAa;YACtDC,gBAAgB;gBAAC;gBAAQ;gBAAa;aAAY;YAClDC,iBAAiB;gBAAC;gBAAS;gBAAc;aAAa;YACtDC,mBAAmB;gBAAC;gBAAW;gBAAgB;aAAe;YAC9DC,uBAAuB;gBACrB;gBACA;gBACA;aACD;QACH,GACAd,OAAOe,oBAAoB;IAE/B;IAEAnC,qBAAqBC;IAErB,MAAMmC,QAA6B,EAAE;IACrC,IAAI,CAAChB,OAAOiB,eAAe,EAAE;QAC3BD,MAAM7B,IAAI,CAAC+B,IAAAA,4BAAqB,EAACrC;QACjCmC,MAAM7B,IAAI,CAACgC,IAAAA,iCAA0B,EAACtC,MAAMmB;IAC9C;IAEA,IAAI,CAACA,OAAOoB,UAAU,EAAE;QACtB,MAAMC,IAAAA,mBAAW,EAACxC;IACpB;IAEA,OAAOyC,IAAAA,wBAAgB,KAAIN;AAC7B;MAEA,WAAetC"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/init/init.ts"],"sourcesContent":["import {\n createProjectGraphAsync,\n formatFiles,\n GeneratorCallback,\n readNxJson,\n runTasksInSerial,\n Tree,\n updateNxJson,\n} from '@nx/devkit';\nimport { addPluginV1 } from '@nx/devkit/src/utils/add-plugin';\n\nimport { setupPathsPlugin } from '../setup-paths-plugin/setup-paths-plugin';\nimport { createNodes } from '../../plugins/plugin';\nimport { InitGeneratorSchema } from './schema';\nimport { checkDependenciesInstalled, moveToDevDependencies } from './lib/utils';\n\nexport function updateNxJsonSettings(tree: Tree) {\n const nxJson = readNxJson(tree);\n\n const productionFileSet = nxJson.namedInputs?.production;\n if (productionFileSet) {\n productionFileSet.push(\n '!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)',\n '!{projectRoot}/tsconfig.spec.json'\n );\n\n nxJson.namedInputs.production = Array.from(new Set(productionFileSet));\n }\n\n const hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin'\n );\n\n if (!hasPlugin) {\n nxJson.targetDefaults ??= {};\n nxJson.targetDefaults['@nx/vite:test'] ??= {};\n nxJson.targetDefaults['@nx/vite:test'].cache ??= true;\n nxJson.targetDefaults['@nx/vite:test'].inputs ??= [\n 'default',\n productionFileSet ? '^production' : '^default',\n ];\n }\n\n updateNxJson(tree, nxJson);\n}\n\nexport function initGenerator(tree: Tree, schema: InitGeneratorSchema) {\n return initGeneratorInternal(tree, { addPlugin: false, ...schema });\n}\n\nexport async function initGeneratorInternal(\n tree: Tree,\n schema: InitGeneratorSchema\n) {\n const nxJson = readNxJson(tree);\n const addPluginDefault =\n process.env.NX_ADD_PLUGINS !== 'false' &&\n nxJson.useInferencePlugins !== false;\n schema.addPlugin ??= addPluginDefault;\n\n if (schema.addPlugin) {\n await addPluginV1(\n tree,\n await createProjectGraphAsync(),\n '@nx/vite/plugin',\n createNodes,\n {\n buildTargetName: ['build', 'vite:build', 'vite-build'],\n testTargetName: ['test', 'vite:test', 'vite-test'],\n serveTargetName: ['serve', 'vite:serve', 'vite-serve'],\n previewTargetName: ['preview', 'vite:preview', 'vite-preview'],\n serveStaticTargetName: [\n 'serve-static',\n 'vite:serve-static',\n 'vite-serve-static',\n ],\n },\n schema.updatePackageScripts\n );\n }\n\n updateNxJsonSettings(tree);\n\n if (schema.setupPathsPlugin) {\n await setupPathsPlugin(tree, { skipFormat: true });\n }\n\n const tasks: GeneratorCallback[] = [];\n if (!schema.skipPackageJson) {\n tasks.push(moveToDevDependencies(tree));\n tasks.push(checkDependenciesInstalled(tree, schema));\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default initGenerator;\n"],"names":["initGenerator","initGeneratorInternal","updateNxJsonSettings","tree","nxJson","readNxJson","productionFileSet","namedInputs","production","push","Array","from","Set","hasPlugin","plugins","some","p","plugin","targetDefaults","cache","inputs","updateNxJson","schema","addPlugin","addPluginDefault","process","env","NX_ADD_PLUGINS","useInferencePlugins","addPluginV1","createProjectGraphAsync","createNodes","buildTargetName","testTargetName","serveTargetName","previewTargetName","serveStaticTargetName","updatePackageScripts","setupPathsPlugin","skipFormat","tasks","skipPackageJson","moveToDevDependencies","checkDependenciesInstalled","formatFiles","runTasksInSerial"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAsGA,OAA6B;eAA7B;;IAtDgBA,aAAa;eAAbA;;IAIMC,qBAAqB;eAArBA;;IApCNC,oBAAoB;eAApBA;;;;wBART;2BACqB;kCAEK;wBACL;uBAEsC;AAE3D,SAASA,qBAAqBC,IAAU;QAGnBC,qBAURA;IAZlB,MAAMA,SAASC,IAAAA,kBAAU,EAACF;IAE1B,MAAMG,qBAAoBF,sBAAAA,OAAOG,WAAW,qBAAlBH,oBAAoBI,UAAU;IACxD,IAAIF,mBAAmB;QACrBA,kBAAkBG,IAAI,CACpB,yDACA;QAGFL,OAAOG,WAAW,CAACC,UAAU,GAAGE,MAAMC,IAAI,CAAC,IAAIC,IAAIN;IACrD;IAEA,MAAMO,aAAYT,kBAAAA,OAAOU,OAAO,qBAAdV,gBAAgBW,IAAI,CAAC,CAACC,IACtC,OAAOA,MAAM,WACTA,MAAM,oBACNA,EAAEC,MAAM,KAAK;IAGnB,IAAI,CAACJ,WAAW;YACdT,SACAA,wBAAsB,aACtBA,mCACAA;;QAHAA,oBAAAA,UAAAA,QAAOc,4CAAPd,QAAOc,iBAAmB,CAAC;;QAC3Bd,MAAAA,yBAAAA,OAAOc,cAAc,CAAA,CAAC,cAAA,gBAAgB,gBAAtCd,sBAAqB,CAAC,YAAgB,GAAK,CAAC;;QAC5CA,WAAAA,oCAAAA,OAAOc,cAAc,CAAC,gBAAgB,EAACC,0BAAvCf,kCAAuCe,QAAU;;QACjDf,YAAAA,qCAAAA,OAAOc,cAAc,CAAC,gBAAgB,EAACE,4BAAvChB,mCAAuCgB,SAAW;YAChD;YACAd,oBAAoB,gBAAgB;SACrC;IACH;IAEAe,IAAAA,oBAAY,EAAClB,MAAMC;AACrB;AAEO,SAASJ,cAAcG,IAAU,EAAEmB,MAA2B;IACnE,OAAOrB,sBAAsBE,MAAM;QAAEoB,WAAW;OAAUD;AAC5D;AAEO,eAAerB,sBACpBE,IAAU,EACVmB,MAA2B;QAM3BA;IAJA,MAAMlB,SAASC,IAAAA,kBAAU,EAACF;IAC1B,MAAMqB,mBACJC,QAAQC,GAAG,CAACC,cAAc,KAAK,WAC/BvB,OAAOwB,mBAAmB,KAAK;;IACjCN,eAAAA,UAAAA,QAAOC,kCAAPD,QAAOC,YAAcC;IAErB,IAAIF,OAAOC,SAAS,EAAE;QACpB,MAAMM,IAAAA,sBAAW,EACf1B,MACA,MAAM2B,IAAAA,+BAAuB,KAC7B,mBACAC,mBAAW,EACX;YACEC,iBAAiB;gBAAC;gBAAS;gBAAc;aAAa;YACtDC,gBAAgB;gBAAC;gBAAQ;gBAAa;aAAY;YAClDC,iBAAiB;gBAAC;gBAAS;gBAAc;aAAa;YACtDC,mBAAmB;gBAAC;gBAAW;gBAAgB;aAAe;YAC9DC,uBAAuB;gBACrB;gBACA;gBACA;aACD;QACH,GACAd,OAAOe,oBAAoB;IAE/B;IAEAnC,qBAAqBC;IAErB,IAAImB,OAAOgB,gBAAgB,EAAE;QAC3B,MAAMA,IAAAA,kCAAgB,EAACnC,MAAM;YAAEoC,YAAY;QAAK;IAClD;IAEA,MAAMC,QAA6B,EAAE;IACrC,IAAI,CAAClB,OAAOmB,eAAe,EAAE;QAC3BD,MAAM/B,IAAI,CAACiC,IAAAA,4BAAqB,EAACvC;QACjCqC,MAAM/B,IAAI,CAACkC,IAAAA,iCAA0B,EAACxC,MAAMmB;IAC9C;IAEA,IAAI,CAACA,OAAOiB,UAAU,EAAE;QACtB,MAAMK,IAAAA,mBAAW,EAACzC;IACpB;IAEA,OAAO0C,IAAAA,wBAAgB,KAAIL;AAC7B;MAEA,WAAexC"}
@@ -1,5 +1,6 @@
1
1
  export interface InitGeneratorSchema {
2
2
  skipFormat?: boolean;
3
+ setupPathsPlugin?: boolean;
3
4
  skipPackageJson?: boolean;
4
5
  keepExistingVersions?: boolean;
5
6
  updatePackageScripts?: boolean;
@@ -15,6 +15,11 @@
15
15
  "type": "boolean",
16
16
  "default": false
17
17
  },
18
+ "setupPathsPlugin": {
19
+ "type": "boolean",
20
+ "description": "Updates vite config files to enable support for workspace libraries via the nxViteTsPaths plugin.",
21
+ "default": false
22
+ },
18
23
  "keepExistingVersions": {
19
24
  "type": "boolean",
20
25
  "x-priority": "internal",
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/vite/src/generators/setup-paths-plugin/lib/utils.ts"],"names":[],"rangeMappings":"","mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=schema.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/setup-paths-plugin/schema.d.ts"],"names":[],"rangeMappings":"","mappings":""}
@@ -0,0 +1,9 @@
1
+ export interface InitGeneratorSchema {
2
+ skipFormat?: boolean;
3
+ addTsPathsPlugin?: boolean;
4
+ skipPackageJson?: boolean;
5
+ keepExistingVersions?: boolean;
6
+ updatePackageScripts?: boolean;
7
+ addPlugin?: boolean;
8
+ vitestOnly?: boolean;
9
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "cli": "nx",
3
+ "title": "Sets up the nxViteTsPaths plugin.",
4
+ "description": "Updates vite config files to enable support for workspace libraries via the nxViteTsPaths plugin.",
5
+ "$id": "setup-paths-plugin-vite-plugin",
6
+ "type": "object",
7
+ "properties": {
8
+ "skipFormat": {
9
+ "description": "Skip formatting files.",
10
+ "type": "boolean",
11
+ "default": false
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,5 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function setupPathsPlugin(tree: Tree, schema: {
3
+ skipFormat?: boolean;
4
+ }): Promise<void>;
5
+ export default setupPathsPlugin;
@@ -0,0 +1,112 @@
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
+ default: function() {
10
+ return _default;
11
+ },
12
+ setupPathsPlugin: function() {
13
+ return setupPathsPlugin;
14
+ }
15
+ });
16
+ const _devkit = require("@nx/devkit");
17
+ async function setupPathsPlugin(tree, schema) {
18
+ const files = await (0, _devkit.globAsync)(tree, [
19
+ '**/vite.config.{js,ts,mjs,mts,cjs,cts}'
20
+ ]);
21
+ for (const file of files){
22
+ ensureImportExists(tree, file);
23
+ ensurePluginAdded(tree, file);
24
+ }
25
+ if (!schema.skipFormat) {
26
+ await (0, _devkit.formatFiles)(tree);
27
+ }
28
+ }
29
+ function ensureImportExists(tree, file) {
30
+ const { tsquery } = require('@phenomnomnominal/tsquery');
31
+ let content = tree.read(file, 'utf-8');
32
+ const ast = tsquery.ast(content);
33
+ const allImports = tsquery.query(ast, 'ImportDeclaration');
34
+ if (allImports.length) {
35
+ const lastImport = allImports[allImports.length - 1];
36
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
37
+ {
38
+ type: _devkit.ChangeType.Insert,
39
+ index: lastImport.end + 1,
40
+ text: `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\n`
41
+ }
42
+ ]));
43
+ } else {
44
+ if (file.endsWith('.cts') || file.endsWith('.cjs')) {
45
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
46
+ {
47
+ type: _devkit.ChangeType.Insert,
48
+ index: 0,
49
+ text: `const { nxViteTsPaths } = require('@nx/vite/plugins/nx-tsconfig-paths.plugin');\n`
50
+ }
51
+ ]));
52
+ } else {
53
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
54
+ {
55
+ type: _devkit.ChangeType.Insert,
56
+ index: 0,
57
+ text: `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\n`
58
+ }
59
+ ]));
60
+ }
61
+ }
62
+ }
63
+ function ensurePluginAdded(tree, file) {
64
+ const { tsquery } = require('@phenomnomnominal/tsquery');
65
+ const content = tree.read(file, 'utf-8');
66
+ const ast = tsquery.ast(content);
67
+ const foundDefineConfig = tsquery.query(ast, 'CallExpression:has(Identifier[name="defineConfig"])');
68
+ if (!foundDefineConfig.length) return content;
69
+ // Do not update defineConfig if it has an arrow function since it can be tricky and error-prone.
70
+ const defineUsingArrowFunction = tsquery.query(foundDefineConfig[0], 'ArrowFunction');
71
+ if (defineUsingArrowFunction.length) return content;
72
+ const propertyAssignments = tsquery.query(foundDefineConfig[0], 'PropertyAssignment');
73
+ if (propertyAssignments.length) {
74
+ const pluginsNode = tsquery.query(foundDefineConfig[0], 'PropertyAssignment:has(Identifier[name="plugins"])');
75
+ if (pluginsNode.length) {
76
+ const updated = tsquery.replace(content, 'PropertyAssignment:has(Identifier[name="plugins"])', (node)=>{
77
+ const found = tsquery.query(node, 'ArrayLiteralExpression');
78
+ let updatedPluginsString = '';
79
+ var _found__elements;
80
+ const existingPluginNodes = (_found__elements = found == null ? void 0 : found[0].elements) != null ? _found__elements : [];
81
+ for (const plugin of existingPluginNodes){
82
+ updatedPluginsString += `${plugin.getText()},`;
83
+ }
84
+ if (!(existingPluginNodes == null ? void 0 : existingPluginNodes.some((node)=>node.getText().includes('nxViteTsPaths')))) {
85
+ updatedPluginsString += ` nxViteTsPaths(),`;
86
+ }
87
+ return `plugins: [${updatedPluginsString}]`;
88
+ });
89
+ tree.write(file, updated);
90
+ } else {
91
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
92
+ {
93
+ type: _devkit.ChangeType.Insert,
94
+ index: propertyAssignments[0].getStart(),
95
+ text: `plugins: [nxViteTsPaths()],
96
+ `
97
+ }
98
+ ]));
99
+ }
100
+ } else {
101
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
102
+ {
103
+ type: _devkit.ChangeType.Insert,
104
+ index: foundDefineConfig[0].getStart() + 14,
105
+ text: `plugins: [nxViteTsPaths()],`
106
+ }
107
+ ]));
108
+ }
109
+ }
110
+ const _default = setupPathsPlugin;
111
+
112
+ //# sourceMappingURL=setup-paths-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/setup-paths-plugin/setup-paths-plugin.ts"],"sourcesContent":["import {\n applyChangesToString,\n ChangeType,\n formatFiles,\n globAsync,\n Tree,\n} from '@nx/devkit';\nimport type { ArrayLiteralExpression, Node } from 'typescript';\n\nexport async function setupPathsPlugin(\n tree: Tree,\n schema: { skipFormat?: boolean }\n) {\n const files = await globAsync(tree, [\n '**/vite.config.{js,ts,mjs,mts,cjs,cts}',\n ]);\n\n for (const file of files) {\n ensureImportExists(tree, file);\n ensurePluginAdded(tree, file);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n}\n\nfunction ensureImportExists(tree, file) {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n let content = tree.read(file, 'utf-8');\n const ast = tsquery.ast(content);\n const allImports = tsquery.query(ast, 'ImportDeclaration');\n if (allImports.length) {\n const lastImport = allImports[allImports.length - 1];\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: lastImport.end + 1,\n text: `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\\n`,\n },\n ])\n );\n } else {\n if (file.endsWith('.cts') || file.endsWith('.cjs')) {\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: 0,\n text: `const { nxViteTsPaths } = require('@nx/vite/plugins/nx-tsconfig-paths.plugin');\\n`,\n },\n ])\n );\n } else {\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: 0,\n text: `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\\n`,\n },\n ])\n );\n }\n }\n}\n\nfunction ensurePluginAdded(tree, file) {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const content = tree.read(file, 'utf-8');\n const ast = tsquery.ast(content);\n const foundDefineConfig = tsquery.query(\n ast,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n if (!foundDefineConfig.length) return content;\n\n // Do not update defineConfig if it has an arrow function since it can be tricky and error-prone.\n const defineUsingArrowFunction = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n if (defineUsingArrowFunction.length) return content;\n\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n const pluginsNode = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])'\n );\n\n if (pluginsNode.length) {\n const updated = tsquery.replace(\n content,\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])',\n (node: Node) => {\n const found = tsquery.query(\n node,\n 'ArrayLiteralExpression'\n ) as ArrayLiteralExpression[];\n let updatedPluginsString = '';\n\n const existingPluginNodes = found?.[0].elements ?? [];\n\n for (const plugin of existingPluginNodes) {\n updatedPluginsString += `${plugin.getText()},`;\n }\n\n if (\n !existingPluginNodes?.some((node: Node) =>\n node.getText().includes('nxViteTsPaths')\n )\n ) {\n updatedPluginsString += ` nxViteTsPaths(),`;\n }\n\n return `plugins: [${updatedPluginsString}]`;\n }\n );\n tree.write(file, updated);\n } else {\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: `plugins: [nxViteTsPaths()],\n `,\n },\n ])\n );\n }\n } else {\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14, // length of \"defineConfig(\" + 1\n text: `plugins: [nxViteTsPaths()],`,\n },\n ])\n );\n }\n}\n\nexport default setupPathsPlugin;\n"],"names":["setupPathsPlugin","tree","schema","files","globAsync","file","ensureImportExists","ensurePluginAdded","skipFormat","formatFiles","tsquery","require","content","read","ast","allImports","query","length","lastImport","write","applyChangesToString","type","ChangeType","Insert","index","end","text","endsWith","foundDefineConfig","defineUsingArrowFunction","propertyAssignments","pluginsNode","updated","replace","node","found","updatedPluginsString","existingPluginNodes","elements","plugin","getText","some","includes","getStart"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CreateDependencies, CreateNodes } from '@nx/devkit';
1
+ import { CreateDependencies, CreateNodes, CreateNodesV2 } from '@nx/devkit';
2
2
  export interface VitePluginOptions {
3
3
  buildTargetName?: string;
4
4
  testTargetName?: string;
@@ -6,5 +6,9 @@ export interface VitePluginOptions {
6
6
  previewTargetName?: string;
7
7
  serveStaticTargetName?: string;
8
8
  }
9
+ /**
10
+ * @deprecated The 'createDependencies' function is now a no-op. This functionality is included in 'createNodesV2'.
11
+ */
9
12
  export declare const createDependencies: CreateDependencies;
13
+ export declare const createNodesV2: CreateNodesV2<VitePluginOptions>;
10
14
  export declare const createNodes: CreateNodes<VitePluginOptions>;
@@ -11,9 +11,11 @@ _export(exports, {
11
11
  },
12
12
  createNodes: function() {
13
13
  return createNodes;
14
+ },
15
+ createNodesV2: function() {
16
+ return createNodesV2;
14
17
  }
15
18
  });
16
- const _extends = require("@swc/helpers/_/_extends");
17
19
  const _devkit = require("@nx/devkit");
18
20
  const _path = require("path");
19
21
  const _getnamedinputs = require("@nx/devkit/src/utils/get-named-inputs");
@@ -22,47 +24,64 @@ const _calculatehashforcreatenodes = require("@nx/devkit/src/utils/calculate-has
22
24
  const _cachedirectory = require("nx/src/utils/cache-directory");
23
25
  const _js = require("@nx/js");
24
26
  const _executorutils = require("../utils/executor-utils");
25
- const cachePath = (0, _path.join)(_cachedirectory.workspaceDataDirectory, 'vite.hash');
26
- const targetsCache = readTargetsCache();
27
- function readTargetsCache() {
27
+ const _filehasher = require("nx/src/hasher/file-hasher");
28
+ function readTargetsCache(cachePath) {
28
29
  return (0, _fs.existsSync)(cachePath) ? (0, _devkit.readJsonFile)(cachePath) : {};
29
30
  }
30
- function writeTargetsToCache() {
31
- const oldCache = readTargetsCache();
32
- (0, _devkit.writeJsonFile)(cachePath, _extends._({}, oldCache, targetsCache));
31
+ function writeTargetsToCache(cachePath, results) {
32
+ (0, _devkit.writeJsonFile)(cachePath, results);
33
33
  }
34
34
  const createDependencies = ()=>{
35
- writeTargetsToCache();
36
35
  return [];
37
36
  };
37
+ const viteVitestConfigGlob = '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}';
38
+ const createNodesV2 = [
39
+ viteVitestConfigGlob,
40
+ async (configFilePaths, options, context)=>{
41
+ const optionsHash = (0, _filehasher.hashObject)(options);
42
+ const cachePath = (0, _path.join)(_cachedirectory.workspaceDataDirectory, `vite-${optionsHash}.hash`);
43
+ const targetsCache = readTargetsCache(cachePath);
44
+ try {
45
+ return await (0, _devkit.createNodesFromFiles)((configFile, options, context)=>createNodesInternal(configFile, options, context, targetsCache), configFilePaths, options, context);
46
+ } finally{
47
+ writeTargetsToCache(cachePath, targetsCache);
48
+ }
49
+ }
50
+ ];
38
51
  const createNodes = [
39
- '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}',
52
+ viteVitestConfigGlob,
40
53
  async (configFilePath, options, context)=>{
41
- var _targetsCache, _hash;
42
- const projectRoot = (0, _path.dirname)(configFilePath);
43
- // Do not create a project if package.json and project.json isn't there.
44
- const siblingFiles = (0, _fs.readdirSync)((0, _path.join)(context.workspaceRoot, projectRoot));
45
- if (!siblingFiles.includes('package.json') && !siblingFiles.includes('project.json')) {
46
- return {};
47
- }
48
- options = normalizeOptions(options);
49
- // We do not want to alter how the hash is calculated, so appending the config file path to the hash
50
- // to prevent vite/vitest files overwriting the target cache created by the other
51
- const hash = (0, _calculatehashforcreatenodes.calculateHashForCreateNodes)(projectRoot, options, context, [
52
- (0, _js.getLockFileName)((0, _devkit.detectPackageManager)(context.workspaceRoot))
53
- ]) + configFilePath;
54
- var _;
55
- (_ = (_targetsCache = targetsCache)[_hash = hash]) != null ? _ : _targetsCache[_hash] = await buildViteTargets(configFilePath, projectRoot, options, context);
56
- return {
57
- projects: {
58
- [projectRoot]: {
59
- root: projectRoot,
60
- targets: targetsCache[hash]
61
- }
62
- }
63
- };
54
+ _devkit.logger.warn('`createNodes` is deprecated. Update your plugin to utilize createNodesV2 instead. In Nx 20, this will change to the createNodesV2 API.');
55
+ return createNodesInternal(configFilePath, options, context, {});
64
56
  }
65
57
  ];
58
+ async function createNodesInternal(configFilePath, options, context, targetsCache) {
59
+ var _targetsCache, _hash;
60
+ const projectRoot = (0, _path.dirname)(configFilePath);
61
+ // Do not create a project if package.json and project.json isn't there.
62
+ const siblingFiles = (0, _fs.readdirSync)((0, _path.join)(context.workspaceRoot, projectRoot));
63
+ if (!siblingFiles.includes('package.json') && !siblingFiles.includes('project.json')) {
64
+ return {};
65
+ }
66
+ const normalizedOptions = normalizeOptions(options);
67
+ // We do not want to alter how the hash is calculated, so appending the config file path to the hash
68
+ // to prevent vite/vitest files overwriting the target cache created by the other
69
+ const hash = await (0, _calculatehashforcreatenodes.calculateHashForCreateNodes)(projectRoot, normalizedOptions, context, [
70
+ (0, _js.getLockFileName)((0, _devkit.detectPackageManager)(context.workspaceRoot))
71
+ ]) + configFilePath;
72
+ var _;
73
+ (_ = (_targetsCache = targetsCache)[_hash = hash]) != null ? _ : _targetsCache[_hash] = await buildViteTargets(configFilePath, projectRoot, normalizedOptions, context);
74
+ const { targets, metadata } = targetsCache[hash];
75
+ return {
76
+ projects: {
77
+ [projectRoot]: {
78
+ root: projectRoot,
79
+ targets,
80
+ metadata
81
+ }
82
+ }
83
+ };
84
+ }
66
85
  async function buildViteTargets(configFilePath, projectRoot, options, context) {
67
86
  const absoluteConfigFilePath = (0, _devkit.joinPathFragments)(context.workspaceRoot, configFilePath);
68
87
  // Workaround for the `build$3 is not a function` error that we sometimes see in agents.
@@ -93,7 +112,11 @@ async function buildViteTargets(configFilePath, projectRoot, options, context) {
93
112
  if (configFilePath.includes('vitest.config') || hasTest) {
94
113
  targets[options.testTargetName] = await testTarget(namedInputs, testOutputs, projectRoot);
95
114
  }
96
- return targets;
115
+ const metadata = {};
116
+ return {
117
+ targets,
118
+ metadata
119
+ };
97
120
  }
98
121
  async function buildTarget(buildTargetName, namedInputs, outputs, projectRoot) {
99
122
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n detectPackageManager,\n joinPathFragments,\n readJsonFile,\n TargetConfiguration,\n writeJsonFile,\n} from '@nx/devkit';\nimport { dirname, isAbsolute, join, relative } from 'path';\nimport { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';\nimport { existsSync, readdirSync } from 'fs';\nimport { calculateHashForCreateNodes } from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { workspaceDataDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\nimport { loadViteDynamicImport } from '../utils/executor-utils';\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n}\n\nconst cachePath = join(workspaceDataDirectory, 'vite.hash');\nconst targetsCache = readTargetsCache();\n\nfunction readTargetsCache(): Record<\n string,\n Record<string, TargetConfiguration>\n> {\n return existsSync(cachePath) ? readJsonFile(cachePath) : {};\n}\n\nfunction writeTargetsToCache() {\n const oldCache = readTargetsCache();\n writeJsonFile(cachePath, {\n ...oldCache,\n ...targetsCache,\n });\n}\n\nexport const createDependencies: CreateDependencies = () => {\n writeTargetsToCache();\n return [];\n};\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}',\n async (configFilePath, options, context) => {\n const projectRoot = dirname(configFilePath);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return {};\n }\n\n options = normalizeOptions(options);\n\n // We do not want to alter how the hash is calculated, so appending the config file path to the hash\n // to prevent vite/vitest files overwriting the target cache created by the other\n const hash =\n calculateHashForCreateNodes(projectRoot, options, context, [\n getLockFileName(detectPackageManager(context.workspaceRoot)),\n ]) + configFilePath;\n\n targetsCache[hash] ??= await buildViteTargets(\n configFilePath,\n projectRoot,\n options,\n context\n );\n\n return {\n projects: {\n [projectRoot]: {\n root: projectRoot,\n targets: targetsCache[hash],\n },\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n context: CreateNodesContext\n) {\n const absoluteConfigFilePath = joinPathFragments(\n context.workspaceRoot,\n configFilePath\n );\n\n // Workaround for the `build$3 is not a function` error that we sometimes see in agents.\n // This should be removed later once we address the issue properly\n try {\n const importEsbuild = () => new Function('return import(\"esbuild\")')();\n await importEsbuild();\n } catch {\n // do nothing\n }\n const { resolveConfig } = await loadViteDynamicImport();\n const viteConfig = await resolveConfig(\n {\n configFile: absoluteConfigFilePath,\n mode: 'development',\n },\n 'build'\n );\n\n const { buildOutputs, testOutputs, hasTest, isBuildable } = getOutputs(\n viteConfig,\n projectRoot,\n context.workspaceRoot\n );\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n // If file is not vitest.config and buildable, create targets for build, serve, preview and serve-static\n const hasRemixPlugin =\n viteConfig.plugins && viteConfig.plugins.some((p) => p.name === 'remix');\n if (\n !configFilePath.includes('vitest.config') &&\n !hasRemixPlugin &&\n isBuildable\n ) {\n targets[options.buildTargetName] = await buildTarget(\n options.buildTargetName,\n namedInputs,\n buildOutputs,\n projectRoot\n );\n\n targets[options.serveTargetName] = serveTarget(projectRoot);\n\n targets[options.previewTargetName] = previewTarget(projectRoot);\n\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\n }\n\n // if file is vitest.config or vite.config has definition for test, create target for test\n if (configFilePath.includes('vitest.config') || hasTest) {\n targets[options.testTargetName] = await testTarget(\n namedInputs,\n testOutputs,\n projectRoot\n );\n }\n\n return targets;\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\n command: `vite build`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n dependsOn: [`^${buildTargetName}`],\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vite'],\n },\n ],\n outputs,\n };\n}\n\nfunction serveTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite serve`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite preview`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n return targetConfig;\n}\n\nasync function testTarget(\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\n command: `vitest`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['default', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vitest'],\n },\n { env: 'CI' },\n ],\n outputs,\n };\n}\n\nfunction serveStaticTarget(options: VitePluginOptions) {\n const targetConfig: TargetConfiguration = {\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n spa: true,\n },\n };\n\n return targetConfig;\n}\n\nfunction getOutputs(\n viteConfig: Record<string, any> | undefined,\n projectRoot: string,\n workspaceRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n hasTest: boolean;\n isBuildable: boolean;\n} {\n const { build, test } = viteConfig;\n\n const buildOutputPath = normalizeOutputPath(\n build?.outDir,\n projectRoot,\n workspaceRoot,\n 'dist'\n );\n\n const isBuildable =\n build?.lib ||\n build?.rollupOptions?.inputs ||\n existsSync(join(workspaceRoot, projectRoot, 'index.html'));\n\n const reportsDirectoryPath = normalizeOutputPath(\n test?.coverage?.reportsDirectory,\n projectRoot,\n workspaceRoot,\n 'coverage'\n );\n\n return {\n buildOutputs: [buildOutputPath],\n testOutputs: [reportsDirectoryPath],\n hasTest: !!test,\n isBuildable,\n };\n}\n\nfunction normalizeOutputPath(\n outputPath: string | undefined,\n projectRoot: string,\n workspaceRoot: string,\n path: 'coverage' | 'dist'\n): string | undefined {\n if (!outputPath) {\n if (projectRoot === '.') {\n return `{projectRoot}/${path}`;\n } else {\n return `{workspaceRoot}/${path}/{projectRoot}`;\n }\n } else {\n if (isAbsolute(outputPath)) {\n return `{workspaceRoot}/${relative(workspaceRoot, outputPath)}`;\n } else {\n if (outputPath.startsWith('..')) {\n return join('{workspaceRoot}', join(projectRoot, outputPath));\n } else {\n return join('{projectRoot}', outputPath);\n }\n }\n }\n}\n\nfunction normalizeOptions(options: VitePluginOptions): VitePluginOptions {\n options ??= {};\n options.buildTargetName ??= 'build';\n options.serveTargetName ??= 'serve';\n options.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n return options;\n}\n"],"names":["createDependencies","createNodes","cachePath","join","workspaceDataDirectory","targetsCache","readTargetsCache","existsSync","readJsonFile","writeTargetsToCache","oldCache","writeJsonFile","configFilePath","options","context","hash","projectRoot","dirname","siblingFiles","readdirSync","workspaceRoot","includes","normalizeOptions","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","projects","root","targets","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","viteConfig","configFile","mode","buildOutputs","testOutputs","hasTest","isBuildable","getOutputs","namedInputs","getNamedInputs","hasRemixPlugin","plugins","some","p","name","buildTargetName","buildTarget","serveTargetName","serveTarget","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","testTargetName","testTarget","outputs","command","cwd","cache","dependsOn","inputs","externalDependencies","targetConfig","env","executor","spa","build","test","buildOutputPath","normalizeOutputPath","outDir","lib","rollupOptions","reportsDirectoryPath","coverage","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n createNodesFromFiles,\n CreateNodesV2,\n detectPackageManager,\n joinPathFragments,\n logger,\n ProjectConfiguration,\n readJsonFile,\n TargetConfiguration,\n writeJsonFile,\n} from '@nx/devkit';\nimport { dirname, isAbsolute, join, relative } from 'path';\nimport { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';\nimport { existsSync, readdirSync } from 'fs';\nimport { calculateHashForCreateNodes } from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { workspaceDataDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\nimport { loadViteDynamicImport } from '../utils/executor-utils';\nimport { hashObject } from 'nx/src/hasher/file-hasher';\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n}\ntype ViteTargets = Pick<ProjectConfiguration, 'targets' | 'metadata'>;\n\nfunction readTargetsCache(cachePath: string): Record<string, ViteTargets> {\n return existsSync(cachePath) ? readJsonFile(cachePath) : {};\n}\n\nfunction writeTargetsToCache(cachePath, results?: Record<string, ViteTargets>) {\n writeJsonFile(cachePath, results);\n}\n\n/**\n * @deprecated The 'createDependencies' function is now a no-op. This functionality is included in 'createNodesV2'.\n */\nexport const createDependencies: CreateDependencies = () => {\n return [];\n};\n\nconst viteVitestConfigGlob = '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}';\n\nexport const createNodesV2: CreateNodesV2<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePaths, options, context) => {\n const optionsHash = hashObject(options);\n const cachePath = join(workspaceDataDirectory, `vite-${optionsHash}.hash`);\n const targetsCache = readTargetsCache(cachePath);\n try {\n return await createNodesFromFiles(\n (configFile, options, context) =>\n createNodesInternal(configFile, options, context, targetsCache),\n configFilePaths,\n options,\n context\n );\n } finally {\n writeTargetsToCache(cachePath, targetsCache);\n }\n },\n];\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePath, options, context) => {\n logger.warn(\n '`createNodes` is deprecated. Update your plugin to utilize createNodesV2 instead. In Nx 20, this will change to the createNodesV2 API.'\n );\n return createNodesInternal(configFilePath, options, context, {});\n },\n];\n\nasync function createNodesInternal(\n configFilePath: string,\n options: VitePluginOptions,\n context: CreateNodesContext,\n targetsCache: Record<string, ViteTargets>\n) {\n const projectRoot = dirname(configFilePath);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return {};\n }\n\n const normalizedOptions = normalizeOptions(options);\n\n // We do not want to alter how the hash is calculated, so appending the config file path to the hash\n // to prevent vite/vitest files overwriting the target cache created by the other\n const hash =\n (await calculateHashForCreateNodes(\n projectRoot,\n normalizedOptions,\n context,\n [getLockFileName(detectPackageManager(context.workspaceRoot))]\n )) + configFilePath;\n\n targetsCache[hash] ??= await buildViteTargets(\n configFilePath,\n projectRoot,\n normalizedOptions,\n context\n );\n\n const { targets, metadata } = targetsCache[hash];\n\n return {\n projects: {\n [projectRoot]: {\n root: projectRoot,\n targets,\n metadata,\n },\n },\n };\n}\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n context: CreateNodesContext\n): Promise<ViteTargets> {\n const absoluteConfigFilePath = joinPathFragments(\n context.workspaceRoot,\n configFilePath\n );\n\n // Workaround for the `build$3 is not a function` error that we sometimes see in agents.\n // This should be removed later once we address the issue properly\n try {\n const importEsbuild = () => new Function('return import(\"esbuild\")')();\n await importEsbuild();\n } catch {\n // do nothing\n }\n const { resolveConfig } = await loadViteDynamicImport();\n const viteConfig = await resolveConfig(\n {\n configFile: absoluteConfigFilePath,\n mode: 'development',\n },\n 'build'\n );\n\n const { buildOutputs, testOutputs, hasTest, isBuildable } = getOutputs(\n viteConfig,\n projectRoot,\n context.workspaceRoot\n );\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n // If file is not vitest.config and buildable, create targets for build, serve, preview and serve-static\n const hasRemixPlugin =\n viteConfig.plugins && viteConfig.plugins.some((p) => p.name === 'remix');\n if (\n !configFilePath.includes('vitest.config') &&\n !hasRemixPlugin &&\n isBuildable\n ) {\n targets[options.buildTargetName] = await buildTarget(\n options.buildTargetName,\n namedInputs,\n buildOutputs,\n projectRoot\n );\n\n targets[options.serveTargetName] = serveTarget(projectRoot);\n\n targets[options.previewTargetName] = previewTarget(projectRoot);\n\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\n }\n\n // if file is vitest.config or vite.config has definition for test, create target for test\n if (configFilePath.includes('vitest.config') || hasTest) {\n targets[options.testTargetName] = await testTarget(\n namedInputs,\n testOutputs,\n projectRoot\n );\n }\n\n const metadata = {};\n return { targets, metadata };\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\n command: `vite build`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n dependsOn: [`^${buildTargetName}`],\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vite'],\n },\n ],\n outputs,\n };\n}\n\nfunction serveTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite serve`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite preview`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n return targetConfig;\n}\n\nasync function testTarget(\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\n command: `vitest`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['default', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vitest'],\n },\n { env: 'CI' },\n ],\n outputs,\n };\n}\n\nfunction serveStaticTarget(options: VitePluginOptions) {\n const targetConfig: TargetConfiguration = {\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n spa: true,\n },\n };\n\n return targetConfig;\n}\n\nfunction getOutputs(\n viteConfig: Record<string, any> | undefined,\n projectRoot: string,\n workspaceRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n hasTest: boolean;\n isBuildable: boolean;\n} {\n const { build, test } = viteConfig;\n\n const buildOutputPath = normalizeOutputPath(\n build?.outDir,\n projectRoot,\n workspaceRoot,\n 'dist'\n );\n\n const isBuildable =\n build?.lib ||\n build?.rollupOptions?.inputs ||\n existsSync(join(workspaceRoot, projectRoot, 'index.html'));\n\n const reportsDirectoryPath = normalizeOutputPath(\n test?.coverage?.reportsDirectory,\n projectRoot,\n workspaceRoot,\n 'coverage'\n );\n\n return {\n buildOutputs: [buildOutputPath],\n testOutputs: [reportsDirectoryPath],\n hasTest: !!test,\n isBuildable,\n };\n}\n\nfunction normalizeOutputPath(\n outputPath: string | undefined,\n projectRoot: string,\n workspaceRoot: string,\n path: 'coverage' | 'dist'\n): string | undefined {\n if (!outputPath) {\n if (projectRoot === '.') {\n return `{projectRoot}/${path}`;\n } else {\n return `{workspaceRoot}/${path}/{projectRoot}`;\n }\n } else {\n if (isAbsolute(outputPath)) {\n return `{workspaceRoot}/${relative(workspaceRoot, outputPath)}`;\n } else {\n if (outputPath.startsWith('..')) {\n return join('{workspaceRoot}', join(projectRoot, outputPath));\n } else {\n return join('{projectRoot}', outputPath);\n }\n }\n }\n}\n\nfunction normalizeOptions(options: VitePluginOptions): VitePluginOptions {\n options ??= {};\n options.buildTargetName ??= 'build';\n options.serveTargetName ??= 'serve';\n options.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n return options;\n}\n"],"names":["createDependencies","createNodes","createNodesV2","readTargetsCache","cachePath","existsSync","readJsonFile","writeTargetsToCache","results","writeJsonFile","viteVitestConfigGlob","configFilePaths","options","context","optionsHash","hashObject","join","workspaceDataDirectory","targetsCache","createNodesFromFiles","configFile","createNodesInternal","configFilePath","logger","warn","hash","projectRoot","dirname","siblingFiles","readdirSync","workspaceRoot","includes","normalizedOptions","normalizeOptions","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","targets","metadata","projects","root","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","viteConfig","mode","buildOutputs","testOutputs","hasTest","isBuildable","getOutputs","namedInputs","getNamedInputs","hasRemixPlugin","plugins","some","p","name","buildTargetName","buildTarget","serveTargetName","serveTarget","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","testTargetName","testTarget","outputs","command","cwd","cache","dependsOn","inputs","externalDependencies","targetConfig","env","executor","spa","build","test","buildOutputPath","normalizeOutputPath","outDir","lib","rollupOptions","reportsDirectoryPath","coverage","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,11 +1,12 @@
1
- import { ViteBuildExecutorOptions } from '../executors/build/schema';
2
1
  import { ExecutorContext } from '@nx/devkit';
3
- import { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';
4
2
  export declare function validateTypes(opts: {
5
3
  workspaceRoot: string;
6
4
  projectRoot: string;
7
5
  tsconfig: string;
8
6
  }): Promise<void>;
9
- export declare function createBuildableTsConfig(projectRoot: string, options: ViteBuildExecutorOptions | ViteDevServerExecutorOptions, context: ExecutorContext): void;
7
+ export declare function createBuildableTsConfig(projectRoot: string, options: {
8
+ tsConfig?: string;
9
+ buildLibsFromSource?: boolean;
10
+ }, context: ExecutorContext): string;
10
11
  export declare function loadViteDynamicImport(): Promise<typeof import("vite")>;
11
12
  export declare function loadVitestDynamicImport(): Promise<typeof import("vitest/node")>;
@@ -26,7 +26,7 @@ const _optionsutils = require("./options-utils");
26
26
  async function validateTypes(opts) {
27
27
  const result = await (0, _js.runTypeCheck)({
28
28
  workspaceRoot: opts.workspaceRoot,
29
- tsConfigPath: (0, _path.join)(opts.workspaceRoot, opts.tsconfig),
29
+ tsConfigPath: opts.tsconfig.startsWith(opts.workspaceRoot) ? opts.tsconfig : (0, _path.join)(opts.workspaceRoot, opts.tsconfig),
30
30
  mode: 'noEmit'
31
31
  });
32
32
  await (0, _js.printDiagnostics)(result.errors, result.warnings);
@@ -36,7 +36,8 @@ async function validateTypes(opts) {
36
36
  }
37
37
  function createBuildableTsConfig(projectRoot, options, context) {
38
38
  var _options, _buildLibsFromSource;
39
- const tsConfig = (0, _optionsutils.getProjectTsConfigPath)(projectRoot);
39
+ var _options_tsConfig;
40
+ const tsConfig = (_options_tsConfig = options.tsConfig) != null ? _options_tsConfig : (0, _optionsutils.getProjectTsConfigPath)(projectRoot);
40
41
  var _;
41
42
  (_ = (_options = options)[_buildLibsFromSource = 'buildLibsFromSource']) != null ? _ : _options[_buildLibsFromSource] = true;
42
43
  if (!options['buildLibsFromSource']) {
@@ -47,7 +48,9 @@ function createBuildableTsConfig(projectRoot, options, context) {
47
48
  // It can be also used by other user-defined Vite plugins (e.g. for creating type declaration files).
48
49
  const tmpTsConfigPath = (0, _buildablelibsutils.createTmpTsConfig)(tsConfig, context.root, projectRoot, dependencies);
49
50
  process.env.NX_TSCONFIG_PATH = tmpTsConfigPath;
51
+ return tmpTsConfigPath;
50
52
  }
53
+ return tsConfig;
51
54
  }
52
55
  function loadViteDynamicImport() {
53
56
  return Function('return import("vite")')();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/utils/executor-utils.ts"],"sourcesContent":["import { printDiagnostics, runTypeCheck } from '@nx/js';\nimport { join } from 'path';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { ExecutorContext } from '@nx/devkit';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\nimport {\n calculateProjectBuildableDependencies,\n createTmpTsConfig,\n} from '@nx/js/src/utils/buildable-libs-utils';\nimport { getProjectTsConfigPath } from './options-utils';\n\nexport async function validateTypes(opts: {\n workspaceRoot: string;\n projectRoot: string;\n tsconfig: string;\n}): Promise<void> {\n const result = await runTypeCheck({\n workspaceRoot: opts.workspaceRoot,\n tsConfigPath: join(opts.workspaceRoot, opts.tsconfig),\n mode: 'noEmit',\n });\n\n await printDiagnostics(result.errors, result.warnings);\n\n if (result.errors.length > 0) {\n throw new Error('Found type errors. See above.');\n }\n}\n\nexport function createBuildableTsConfig(\n projectRoot: string,\n options: ViteBuildExecutorOptions | ViteDevServerExecutorOptions,\n context: ExecutorContext\n) {\n const tsConfig = getProjectTsConfigPath(projectRoot);\n options['buildLibsFromSource'] ??= true;\n\n if (!options['buildLibsFromSource']) {\n const { dependencies } = calculateProjectBuildableDependencies(\n context.taskGraph,\n context.projectGraph,\n context.root,\n context.projectName,\n // When using incremental building and the serve target is called\n // we need to get the deps for the 'build' target instead.\n context.targetName === 'serve' ? 'build' : context.targetName,\n context.configurationName\n );\n // This tsconfig is used via the Vite ts paths plugin.\n // It can be also used by other user-defined Vite plugins (e.g. for creating type declaration files).\n const tmpTsConfigPath = createTmpTsConfig(\n tsConfig,\n context.root,\n projectRoot,\n dependencies\n );\n process.env.NX_TSCONFIG_PATH = tmpTsConfigPath;\n }\n}\n\nexport function loadViteDynamicImport() {\n return Function('return import(\"vite\")')() as Promise<typeof import('vite')>;\n}\n\nexport function loadVitestDynamicImport() {\n return Function('return import(\"vitest/node\")')() as Promise<\n typeof import('vitest/node')\n >;\n}\n"],"names":["createBuildableTsConfig","loadViteDynamicImport","loadVitestDynamicImport","validateTypes","opts","result","runTypeCheck","workspaceRoot","tsConfigPath","join","tsconfig","mode","printDiagnostics","errors","warnings","length","Error","projectRoot","options","context","tsConfig","getProjectTsConfigPath","dependencies","calculateProjectBuildableDependencies","taskGraph","projectGraph","root","projectName","targetName","configurationName","tmpTsConfigPath","createTmpTsConfig","process","env","NX_TSCONFIG_PATH","Function"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IA6BgBA,uBAAuB;eAAvBA;;IA+BAC,qBAAqB;eAArBA;;IAIAC,uBAAuB;eAAvBA;;IArDMC,aAAa;eAAbA;;;oBAXyB;sBAC1B;oCAOd;8BACgC;AAEhC,eAAeA,cAAcC,IAInC;IACC,MAAMC,SAAS,MAAMC,IAAAA,gBAAY,EAAC;QAChCC,eAAeH,KAAKG,aAAa;QACjCC,cAAcC,IAAAA,UAAI,EAACL,KAAKG,aAAa,EAAEH,KAAKM,QAAQ;QACpDC,MAAM;IACR;IAEA,MAAMC,IAAAA,oBAAgB,EAACP,OAAOQ,MAAM,EAAER,OAAOS,QAAQ;IAErD,IAAIT,OAAOQ,MAAM,CAACE,MAAM,GAAG,GAAG;QAC5B,MAAM,IAAIC,MAAM;IAClB;AACF;AAEO,SAAShB,wBACdiB,WAAmB,EACnBC,OAAgE,EAChEC,OAAwB;QAGxBD,UAAQ;IADR,MAAME,WAAWC,IAAAA,oCAAsB,EAACJ;;IACxCC,MAAAA,WAAAA,QAAO,CAAC,uBAAA,sBAAsB,gBAA9BA,QAAO,CAAC,qBAAsB,GAAK;IAEnC,IAAI,CAACA,OAAO,CAAC,sBAAsB,EAAE;QACnC,MAAM,EAAEI,YAAY,EAAE,GAAGC,IAAAA,yDAAqC,EAC5DJ,QAAQK,SAAS,EACjBL,QAAQM,YAAY,EACpBN,QAAQO,IAAI,EACZP,QAAQQ,WAAW,EACnB,iEAAiE;QACjE,0DAA0D;QAC1DR,QAAQS,UAAU,KAAK,UAAU,UAAUT,QAAQS,UAAU,EAC7DT,QAAQU,iBAAiB;QAE3B,sDAAsD;QACtD,qGAAqG;QACrG,MAAMC,kBAAkBC,IAAAA,qCAAiB,EACvCX,UACAD,QAAQO,IAAI,EACZT,aACAK;QAEFU,QAAQC,GAAG,CAACC,gBAAgB,GAAGJ;IACjC;AACF;AAEO,SAAS7B;IACd,OAAOkC,SAAS;AAClB;AAEO,SAASjC;IACd,OAAOiC,SAAS;AAGlB"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/utils/executor-utils.ts"],"sourcesContent":["import { printDiagnostics, runTypeCheck } from '@nx/js';\nimport { join } from 'path';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { ExecutorContext } from '@nx/devkit';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\nimport {\n calculateProjectBuildableDependencies,\n createTmpTsConfig,\n} from '@nx/js/src/utils/buildable-libs-utils';\nimport { getProjectTsConfigPath } from './options-utils';\n\nexport async function validateTypes(opts: {\n workspaceRoot: string;\n projectRoot: string;\n tsconfig: string;\n}): Promise<void> {\n const result = await runTypeCheck({\n workspaceRoot: opts.workspaceRoot,\n tsConfigPath: opts.tsconfig.startsWith(opts.workspaceRoot)\n ? opts.tsconfig\n : join(opts.workspaceRoot, opts.tsconfig),\n mode: 'noEmit',\n });\n\n await printDiagnostics(result.errors, result.warnings);\n\n if (result.errors.length > 0) {\n throw new Error('Found type errors. See above.');\n }\n}\n\nexport function createBuildableTsConfig(\n projectRoot: string,\n options: { tsConfig?: string; buildLibsFromSource?: boolean },\n context: ExecutorContext\n) {\n const tsConfig = options.tsConfig ?? getProjectTsConfigPath(projectRoot);\n options['buildLibsFromSource'] ??= true;\n\n if (!options['buildLibsFromSource']) {\n const { dependencies } = calculateProjectBuildableDependencies(\n context.taskGraph,\n context.projectGraph,\n context.root,\n context.projectName,\n // When using incremental building and the serve target is called\n // we need to get the deps for the 'build' target instead.\n context.targetName === 'serve' ? 'build' : context.targetName,\n context.configurationName\n );\n // This tsconfig is used via the Vite ts paths plugin.\n // It can be also used by other user-defined Vite plugins (e.g. for creating type declaration files).\n const tmpTsConfigPath = createTmpTsConfig(\n tsConfig,\n context.root,\n projectRoot,\n dependencies\n );\n process.env.NX_TSCONFIG_PATH = tmpTsConfigPath;\n return tmpTsConfigPath;\n }\n return tsConfig;\n}\n\nexport function loadViteDynamicImport() {\n return Function('return import(\"vite\")')() as Promise<typeof import('vite')>;\n}\n\nexport function loadVitestDynamicImport() {\n return Function('return import(\"vitest/node\")')() as Promise<\n typeof import('vitest/node')\n >;\n}\n"],"names":["createBuildableTsConfig","loadViteDynamicImport","loadVitestDynamicImport","validateTypes","opts","result","runTypeCheck","workspaceRoot","tsConfigPath","tsconfig","startsWith","join","mode","printDiagnostics","errors","warnings","length","Error","projectRoot","options","context","tsConfig","getProjectTsConfigPath","dependencies","calculateProjectBuildableDependencies","taskGraph","projectGraph","root","projectName","targetName","configurationName","tmpTsConfigPath","createTmpTsConfig","process","env","NX_TSCONFIG_PATH","Function"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IA+BgBA,uBAAuB;eAAvBA;;IAiCAC,qBAAqB;eAArBA;;IAIAC,uBAAuB;eAAvBA;;IAzDMC,aAAa;eAAbA;;;oBAXyB;sBAC1B;oCAOd;8BACgC;AAEhC,eAAeA,cAAcC,IAInC;IACC,MAAMC,SAAS,MAAMC,IAAAA,gBAAY,EAAC;QAChCC,eAAeH,KAAKG,aAAa;QACjCC,cAAcJ,KAAKK,QAAQ,CAACC,UAAU,CAACN,KAAKG,aAAa,IACrDH,KAAKK,QAAQ,GACbE,IAAAA,UAAI,EAACP,KAAKG,aAAa,EAAEH,KAAKK,QAAQ;QAC1CG,MAAM;IACR;IAEA,MAAMC,IAAAA,oBAAgB,EAACR,OAAOS,MAAM,EAAET,OAAOU,QAAQ;IAErD,IAAIV,OAAOS,MAAM,CAACE,MAAM,GAAG,GAAG;QAC5B,MAAM,IAAIC,MAAM;IAClB;AACF;AAEO,SAASjB,wBACdkB,WAAmB,EACnBC,OAA6D,EAC7DC,OAAwB;QAGxBD,UAAQ;QADSA;IAAjB,MAAME,WAAWF,CAAAA,oBAAAA,QAAQE,QAAQ,YAAhBF,oBAAoBG,IAAAA,oCAAsB,EAACJ;;IAC5DC,MAAAA,WAAAA,QAAO,CAAC,uBAAA,sBAAsB,gBAA9BA,QAAO,CAAC,qBAAsB,GAAK;IAEnC,IAAI,CAACA,OAAO,CAAC,sBAAsB,EAAE;QACnC,MAAM,EAAEI,YAAY,EAAE,GAAGC,IAAAA,yDAAqC,EAC5DJ,QAAQK,SAAS,EACjBL,QAAQM,YAAY,EACpBN,QAAQO,IAAI,EACZP,QAAQQ,WAAW,EACnB,iEAAiE;QACjE,0DAA0D;QAC1DR,QAAQS,UAAU,KAAK,UAAU,UAAUT,QAAQS,UAAU,EAC7DT,QAAQU,iBAAiB;QAE3B,sDAAsD;QACtD,qGAAqG;QACrG,MAAMC,kBAAkBC,IAAAA,qCAAiB,EACvCX,UACAD,QAAQO,IAAI,EACZT,aACAK;QAEFU,QAAQC,GAAG,CAACC,gBAAgB,GAAGJ;QAC/B,OAAOA;IACT;IACA,OAAOV;AACT;AAEO,SAASpB;IACd,OAAOmC,SAAS;AAClB;AAEO,SAASlC;IACd,OAAOkC,SAAS;AAGlB"}