@nx/vite 16.9.0-beta.1 → 16.9.0-beta.3
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 +5 -5
- package/src/executors/preview-server/preview-server.impl.js +1 -1
- package/src/executors/preview-server/preview-server.impl.js.map +1 -1
- package/src/generators/configuration/configuration.js +22 -1
- package/src/generators/configuration/configuration.js.map +1 -1
- package/src/generators/init/init.js +1 -1
- package/src/generators/init/init.js.map +1 -1
- package/src/generators/vitest/vitest-generator.js +69 -25
- package/src/generators/vitest/vitest-generator.js.map +1 -1
- package/src/utils/generator-utils.d.ts +12 -1
- package/src/utils/generator-utils.js +36 -42
- package/src/utils/generator-utils.js.map +1 -1
- package/src/utils/options-utils.js +1 -1
- package/src/utils/options-utils.js.map +1 -1
- package/src/utils/test-files/test-vite-configs.d.ts +9 -10
- package/src/utils/test-files/test-vite-configs.js +26 -52
- package/src/utils/test-files/test-vite-configs.js.map +1 -1
- package/src/utils/test-utils.js +2 -4
- package/src/utils/test-utils.js.map +1 -1
- package/src/utils/vite-config-edit-utils.d.ts +1 -1
- package/src/utils/vite-config-edit-utils.js +48 -22
- package/src/utils/vite-config-edit-utils.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/vite/src/utils/test-utils.ts"],"sourcesContent":["import { Tree, writeJson } from '@nx/devkit';\nimport * as reactAppConfig from './test-files/react-project.config.json';\nimport * as reactViteConfig from './test-files/react-vite-project.config.json';\nimport * as webAppConfig from './test-files/web-project.config.json';\nimport * as angularAppConfig from './test-files/angular-project.config.json';\nimport * as randomAppConfig from './test-files/unknown-project.config.json';\nimport * as mixedAppConfig from './test-files/react-mixed-project.config.json';\nimport * as reactLibNBJest from './test-files/react-lib-non-buildable-jest.json';\nimport * as reactLibNBVitest from './test-files/react-lib-non-buildable-vitest.json';\n\nexport function mockViteReactAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-react-vite-app';\n\n tree.write(\n `apps/${appName}/src/main.tsx`,\n `import ReactDOM from 'react-dom';\\n`\n );\n\n tree.write(\n `apps/${appName}/tsconfig.json`,\n `{\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": false,\n \"esModuleInterop\": false,\n \"allowSyntheticDefaultImports\": true,\n \"strict\": true,\n \"types\": [\"vite/client\"]\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.app.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ],\n \"extends\": \"../../tsconfig.base.json\"\n }\n `\n );\n tree.write(\n `apps/${appName}/tsconfig.app.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\",\n \"types\": [\"node\"]\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"src/**/*.spec.ts\",\n \"src/**/*.test.ts\",\n \"src/**/*.spec.tsx\",\n \"src/**/*.test.tsx\",\n \"src/**/*.spec.js\",\n \"src/**/*.test.js\",\n \"src/**/*.spec.jsx\",\n \"src/**/*.test.jsx\"\n ],\n \"include\": [\"src/**/*.js\", \"src/**/*.jsx\", \"src/**/*.ts\", \"src/**/*.tsx\"]\n } \n `\n );\n\n tree.write(\n `apps/${appName}/index.html`,\n `<!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>Rv1</title>\n <base href=\"/\" />\n \n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n <link rel=\"stylesheet\" href=\"/src/styles.css\" />\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"/src/main.tsx\"></script>\n </body>\n </html>`\n );\n\n tree.write(\n `apps/${appName}/vite.config.ts`,\n ` /// <reference types=\"vitest\" />\n import { defineConfig } from 'vite';\n import react from '@vitejs/plugin-react';\n import tsconfigPaths from 'vite-tsconfig-paths';\n \n export default defineConfig({\n server: {\n port: 4200,\n host: 'localhost',\n },\n plugins: [\n react(),\n tsconfigPaths({\n root: '../../',\n projects: ['tsconfig.base.json'],\n }),\n ],\n \n test: {\n globals: true,\n cache: {\n dir: '../../node_modules/.vitest',\n },\n environment: 'jsdom',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n },\n });\n `\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-react-vite-app': {\n ...reactViteConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...reactViteConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\n\nexport function mockReactAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-react-app';\n\n tree.write(\n `apps/${appName}/src/main.tsx`,\n `import ReactDOM from 'react-dom';\\n`\n );\n\n tree.write(\n `apps/${appName}/tsconfig.json`,\n `{\n \"extends\": \"../../tsconfig.base.json\",\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": true,\n \"esModuleInterop\": true,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"noImplicitOverride\": true,\n \"noPropertyAccessFromIndexSignature\": true,\n \"noImplicitReturns\": true,\n \"noFallthroughCasesInSwitch\": true\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.app.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ]\n }\n `\n );\n tree.write(\n `apps/${appName}/tsconfig.app.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\"\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"jest.config.ts\",\n \"**/*.spec.ts\",\n \"**/*.test.ts\",\n \"**/*.spec.tsx\",\n \"**/*.test.tsx\",\n \"**/*.spec.js\",\n \"**/*.test.js\",\n \"**/*.spec.jsx\",\n \"**/*.test.jsx\"\n ],\n \"include\": [\"**/*.js\", \"**/*.jsx\", \"**/*.ts\", \"**/*.tsx\"]\n } \n `\n );\n\n tree.write(\n `apps/${appName}/src/index.html`,\n `<!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>My Test React App</title>\n <base href=\"/\" />\n \n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\" />\n </head>\n <body>\n <div id=\"root\"></div>\n </body>\n </html>`\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-react-app': {\n ...reactAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...reactAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\nexport function mockReactMixedAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-mixed-react-app';\n\n tree.write(\n `apps/${appName}/src/main.tsx`,\n `import ReactDOM from 'react-dom';\\n`\n );\n\n tree.write(\n `apps/${appName}/tsconfig.json`,\n `{\n \"extends\": \"../../tsconfig.base.json\",\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": true,\n \"esModuleInterop\": true,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"noImplicitOverride\": true,\n \"noPropertyAccessFromIndexSignature\": true,\n \"noImplicitReturns\": true,\n \"noFallthroughCasesInSwitch\": true\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.app.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ]\n }\n `\n );\n tree.write(\n `apps/${appName}/tsconfig.app.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\"\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"jest.config.ts\",\n \"**/*.spec.ts\",\n \"**/*.test.ts\",\n \"**/*.spec.tsx\",\n \"**/*.test.tsx\",\n \"**/*.spec.js\",\n \"**/*.test.js\",\n \"**/*.spec.jsx\",\n \"**/*.test.jsx\"\n ],\n \"include\": [\"**/*.js\", \"**/*.jsx\", \"**/*.ts\", \"**/*.tsx\"]\n } \n `\n );\n\n tree.write(\n `apps/${appName}/src/index.html`,\n `<!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>My Test React App</title>\n <base href=\"/\" />\n \n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\" />\n </head>\n <body>\n <div id=\"root\"></div>\n </body>\n </html>`\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-mixed-react-app': {\n ...mixedAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...mixedAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\n\nexport function mockWebAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-web-app';\n\n tree.write(`apps/${appName}/src/main.ts`, `import './app/app.element.ts';`);\n\n tree.write(\n `apps/${appName}/tsconfig.json`,\n `{\n \"extends\": \"../../tsconfig.base.json\",\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.app.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ]\n } \n `\n );\n\n tree.write(\n `apps/${appName}/src/index.html`,\n `<!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>WebappPure</title>\n <base href=\"/\" />\n \n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\" />\n </head>\n <body>\n <workspace-root></workspace-root>\n </body>\n </html>\n `\n );\n\n writeJson(\n tree,\n 'workspace.json',\n\n {\n projects: {\n 'my-test-web-app': {\n ...webAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n }\n );\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...webAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n return tree;\n}\n\nexport function mockAngularAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-angular-app';\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-angular-app': {\n ...angularAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...angularAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\n\nexport function mockUnknownAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-random-app';\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-random-app': {\n ...randomAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...randomAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\n\nexport function mockReactLibNonBuildableJestTestRunnerGenerator(\n tree: Tree\n): Tree {\n const libName = 'react-lib-nonb-jest';\n\n tree.write(`libs/${libName}/src/index.ts`, ``);\n\n tree.write(\n `libs/${libName}/tsconfig.json`,\n `{\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": false,\n \"esModuleInterop\": false,\n \"allowSyntheticDefaultImports\": true,\n \"strict\": true\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.lib.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ],\n \"extends\": \"../../tsconfig.base.json\"\n }`\n );\n tree.write(\n `libs/${libName}/tsconfig.lib.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\",\n \"types\": [\"node\"]\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"jest.config.ts\",\n \"src/**/*.spec.ts\",\n \"src/**/*.test.ts\",\n \"src/**/*.spec.tsx\",\n \"src/**/*.test.tsx\",\n \"src/**/*.spec.js\",\n \"src/**/*.test.js\",\n \"src/**/*.spec.jsx\",\n \"src/**/*.test.jsx\"\n ],\n \"include\": [\"src/**/*.js\", \"src/**/*.jsx\", \"src/**/*.ts\", \"src/**/*.tsx\"]\n }`\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n [`${libName}`]: {\n ...reactLibNBJest,\n root: `libs/${libName}`,\n projectType: 'library',\n },\n },\n });\n\n writeJson(tree, `libs/${libName}/project.json`, {\n ...reactLibNBJest,\n root: `libs/${libName}`,\n projectType: 'library',\n });\n\n return tree;\n}\n\nexport function mockReactLibNonBuildableVitestRunnerGenerator(\n tree: Tree\n): Tree {\n const libName = 'react-lib-nonb-vitest';\n\n tree.write(`libs/${libName}/src/index.ts`, ``);\n\n tree.write(\n `libs/${libName}/vite.config.ts`,\n `/// <reference types=\"vitest\" />\n import { defineConfig } from 'vite';\n import react from '@vitejs/plugin-react';\n import viteTsConfigPaths from 'vite-tsconfig-paths';\n\n export default defineConfig({\n\n plugins: [\n react(),\n viteTsConfigPaths({\n root: '../../',\n }),\n ],\n\n test: {\n globals: true,\n cache: {\n dir: '../../node_modules/.vitest',\n },\n environment: 'jsdom',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n },\n });\n `\n );\n\n tree.write(\n `libs/${libName}/tsconfig.json`,\n `{\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": false,\n \"esModuleInterop\": false,\n \"allowSyntheticDefaultImports\": true,\n \"strict\": true\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.lib.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ],\n \"extends\": \"../../tsconfig.base.json\"\n }`\n );\n tree.write(\n `libs/${libName}/tsconfig.lib.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\",\n \"types\": [\"node\"]\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"**/*.spec.ts\",\n \"**/*.test.ts\",\n \"**/*.spec.tsx\",\n \"**/*.test.tsx\",\n \"**/*.spec.js\",\n \"**/*.test.js\",\n \"**/*.spec.jsx\",\n \"**/*.test.jsx\"\n ],\n \"include\": [\"**/*.js\", \"**/*.jsx\", \"**/*.ts\", \"**/*.tsx\"]\n }`\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n [`${libName}`]: {\n ...reactLibNBVitest,\n root: `libs/${libName}`,\n projectType: 'library',\n },\n },\n });\n\n writeJson(tree, `libs/${libName}/project.json`, {\n ...reactLibNBVitest,\n root: `libs/${libName}`,\n projectType: 'library',\n });\n\n return tree;\n}\n"],"names":["mockViteReactAppGenerator","mockReactAppGenerator","mockReactMixedAppGenerator","mockWebAppGenerator","mockAngularAppGenerator","mockUnknownAppGenerator","mockReactLibNonBuildableJestTestRunnerGenerator","mockReactLibNonBuildableVitestRunnerGenerator","tree","appName","write","writeJson","projects","reactViteConfig","root","projectType","reactAppConfig","mixedAppConfig","webAppConfig","angularAppConfig","randomAppConfig","libName","reactLibNBJest","reactLibNBVitest"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/vite/src/utils/test-utils.ts"],"sourcesContent":["import { Tree, writeJson } from '@nx/devkit';\nimport * as reactAppConfig from './test-files/react-project.config.json';\nimport * as reactViteConfig from './test-files/react-vite-project.config.json';\nimport * as webAppConfig from './test-files/web-project.config.json';\nimport * as angularAppConfig from './test-files/angular-project.config.json';\nimport * as randomAppConfig from './test-files/unknown-project.config.json';\nimport * as mixedAppConfig from './test-files/react-mixed-project.config.json';\nimport * as reactLibNBJest from './test-files/react-lib-non-buildable-jest.json';\nimport * as reactLibNBVitest from './test-files/react-lib-non-buildable-vitest.json';\n\nexport function mockViteReactAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-react-vite-app';\n\n tree.write(\n `apps/${appName}/src/main.tsx`,\n `import ReactDOM from 'react-dom';\\n`\n );\n\n tree.write(\n `apps/${appName}/tsconfig.json`,\n `{\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": false,\n \"esModuleInterop\": false,\n \"allowSyntheticDefaultImports\": true,\n \"strict\": true,\n \"types\": [\"vite/client\"]\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.app.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ],\n \"extends\": \"../../tsconfig.base.json\"\n }\n `\n );\n tree.write(\n `apps/${appName}/tsconfig.app.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\",\n \"types\": [\"node\"]\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"src/**/*.spec.ts\",\n \"src/**/*.test.ts\",\n \"src/**/*.spec.tsx\",\n \"src/**/*.test.tsx\",\n \"src/**/*.spec.js\",\n \"src/**/*.test.js\",\n \"src/**/*.spec.jsx\",\n \"src/**/*.test.jsx\"\n ],\n \"include\": [\"src/**/*.js\", \"src/**/*.jsx\", \"src/**/*.ts\", \"src/**/*.tsx\"]\n } \n `\n );\n\n tree.write(\n `apps/${appName}/index.html`,\n `<!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>Rv1</title>\n <base href=\"/\" />\n \n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n <link rel=\"stylesheet\" href=\"/src/styles.css\" />\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"/src/main.tsx\"></script>\n </body>\n </html>`\n );\n\n tree.write(\n `apps/${appName}/vite.config.ts`,\n ` /// <reference types=\"vitest\" />\n import { defineConfig } from 'vite';\n import react from '@vitejs/plugin-react';\n import tsconfigPaths from 'vite-tsconfig-paths';\n \n export default defineConfig({\n server: {\n port: 4200,\n host: 'localhost',\n },\n plugins: [\n react(),\n tsconfigPaths({\n root: '../../',\n projects: ['tsconfig.base.json'],\n }),\n ],\n \n test: {\n globals: true,\n cache: {\n dir: '../../node_modules/.vitest',\n },\n environment: 'jsdom',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n },\n });\n `\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-react-vite-app': {\n ...reactViteConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...reactViteConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\n\nexport function mockReactAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-react-app';\n\n tree.write(\n `apps/${appName}/src/main.tsx`,\n `import ReactDOM from 'react-dom';\\n`\n );\n\n tree.write(\n `apps/${appName}/tsconfig.json`,\n `{\n \"extends\": \"../../tsconfig.base.json\",\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": true,\n \"esModuleInterop\": true,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"noImplicitOverride\": true,\n \"noPropertyAccessFromIndexSignature\": true,\n \"noImplicitReturns\": true,\n \"noFallthroughCasesInSwitch\": true\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.app.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ]\n }\n `\n );\n tree.write(\n `apps/${appName}/tsconfig.app.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\"\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"jest.config.ts\",\n \"**/*.spec.ts\",\n \"**/*.test.ts\",\n \"**/*.spec.tsx\",\n \"**/*.test.tsx\",\n \"**/*.spec.js\",\n \"**/*.test.js\",\n \"**/*.spec.jsx\",\n \"**/*.test.jsx\"\n ],\n \"include\": [\"**/*.js\", \"**/*.jsx\", \"**/*.ts\", \"**/*.tsx\"]\n } \n `\n );\n\n tree.write(\n `apps/${appName}/src/index.html`,\n `<!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>My Test React App</title>\n <base href=\"/\" />\n \n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\" />\n </head>\n <body>\n <div id=\"root\"></div>\n </body>\n </html>`\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-react-app': {\n ...reactAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...reactAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\nexport function mockReactMixedAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-mixed-react-app';\n\n tree.write(\n `apps/${appName}/src/main.tsx`,\n `import ReactDOM from 'react-dom';\\n`\n );\n\n tree.write(\n `apps/${appName}/tsconfig.json`,\n `{\n \"extends\": \"../../tsconfig.base.json\",\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": true,\n \"esModuleInterop\": true,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"noImplicitOverride\": true,\n \"noPropertyAccessFromIndexSignature\": true,\n \"noImplicitReturns\": true,\n \"noFallthroughCasesInSwitch\": true\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.app.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ]\n }\n `\n );\n tree.write(\n `apps/${appName}/tsconfig.app.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\"\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"jest.config.ts\",\n \"**/*.spec.ts\",\n \"**/*.test.ts\",\n \"**/*.spec.tsx\",\n \"**/*.test.tsx\",\n \"**/*.spec.js\",\n \"**/*.test.js\",\n \"**/*.spec.jsx\",\n \"**/*.test.jsx\"\n ],\n \"include\": [\"**/*.js\", \"**/*.jsx\", \"**/*.ts\", \"**/*.tsx\"]\n } \n `\n );\n\n tree.write(\n `apps/${appName}/src/index.html`,\n `<!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>My Test React App</title>\n <base href=\"/\" />\n \n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\" />\n </head>\n <body>\n <div id=\"root\"></div>\n </body>\n </html>`\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-mixed-react-app': {\n ...mixedAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...mixedAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\n\nexport function mockWebAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-web-app';\n\n tree.write(`apps/${appName}/src/main.ts`, `import './app/app.element.ts';`);\n\n tree.write(\n `apps/${appName}/tsconfig.json`,\n `{\n \"extends\": \"../../tsconfig.base.json\",\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.app.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ]\n } \n `\n );\n\n tree.write(\n `apps/${appName}/src/index.html`,\n `<!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>WebappPure</title>\n <base href=\"/\" />\n \n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\" />\n </head>\n <body>\n <workspace-root></workspace-root>\n </body>\n </html>\n `\n );\n\n writeJson(\n tree,\n 'workspace.json',\n\n {\n projects: {\n 'my-test-web-app': {\n ...webAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n }\n );\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...webAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n return tree;\n}\n\nexport function mockAngularAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-angular-app';\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-angular-app': {\n ...angularAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...angularAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\n\nexport function mockUnknownAppGenerator(tree: Tree): Tree {\n const appName = 'my-test-random-app';\n\n writeJson(tree, 'workspace.json', {\n projects: {\n 'my-test-random-app': {\n ...randomAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n },\n },\n });\n\n writeJson(tree, `apps/${appName}/project.json`, {\n ...randomAppConfig,\n root: `apps/${appName}`,\n projectType: 'application',\n });\n\n return tree;\n}\n\nexport function mockReactLibNonBuildableJestTestRunnerGenerator(\n tree: Tree\n): Tree {\n const libName = 'react-lib-nonb-jest';\n\n tree.write(`libs/${libName}/src/index.ts`, ``);\n\n tree.write(\n `libs/${libName}/tsconfig.json`,\n `{\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": false,\n \"esModuleInterop\": false,\n \"allowSyntheticDefaultImports\": true,\n \"strict\": true\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.lib.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ],\n \"extends\": \"../../tsconfig.base.json\"\n }`\n );\n tree.write(\n `libs/${libName}/tsconfig.lib.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\",\n \"types\": [\"node\"]\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"jest.config.ts\",\n \"src/**/*.spec.ts\",\n \"src/**/*.test.ts\",\n \"src/**/*.spec.tsx\",\n \"src/**/*.test.tsx\",\n \"src/**/*.spec.js\",\n \"src/**/*.test.js\",\n \"src/**/*.spec.jsx\",\n \"src/**/*.test.jsx\"\n ],\n \"include\": [\"src/**/*.js\", \"src/**/*.jsx\", \"src/**/*.ts\", \"src/**/*.tsx\"]\n }`\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n [`${libName}`]: {\n ...reactLibNBJest,\n root: `libs/${libName}`,\n projectType: 'library',\n },\n },\n });\n\n writeJson(tree, `libs/${libName}/project.json`, {\n ...reactLibNBJest,\n root: `libs/${libName}`,\n projectType: 'library',\n });\n\n return tree;\n}\n\nexport function mockReactLibNonBuildableVitestRunnerGenerator(\n tree: Tree\n): Tree {\n const libName = 'react-lib-nonb-vitest';\n\n tree.write(`libs/${libName}/src/index.ts`, ``);\n\n tree.write(\n `libs/${libName}/vite.config.ts`,\n `/// <reference types=\"vitest\" />\n import { defineConfig } from 'vite';\n import react from '@vitejs/plugin-react';\n import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\n\n export default defineConfig({\n\n plugins: [\n nxViteTsPaths(),\n react(),\n ],\n\n test: {\n globals: true,\n cache: {\n dir: '../../node_modules/.vitest',\n },\n environment: 'jsdom',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n },\n });\n `\n );\n\n tree.write(\n `libs/${libName}/tsconfig.json`,\n `{\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": false,\n \"esModuleInterop\": false,\n \"allowSyntheticDefaultImports\": true,\n \"strict\": true\n },\n \"files\": [],\n \"include\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.lib.json\"\n },\n {\n \"path\": \"./tsconfig.spec.json\"\n }\n ],\n \"extends\": \"../../tsconfig.base.json\"\n }`\n );\n tree.write(\n `libs/${libName}/tsconfig.lib.json`,\n `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\",\n \"types\": [\"node\"]\n },\n \"files\": [\n \"../../node_modules/@nx/react/typings/cssmodule.d.ts\",\n \"../../node_modules/@nx/react/typings/image.d.ts\"\n ],\n \"exclude\": [\n \"**/*.spec.ts\",\n \"**/*.test.ts\",\n \"**/*.spec.tsx\",\n \"**/*.test.tsx\",\n \"**/*.spec.js\",\n \"**/*.test.js\",\n \"**/*.spec.jsx\",\n \"**/*.test.jsx\"\n ],\n \"include\": [\"**/*.js\", \"**/*.jsx\", \"**/*.ts\", \"**/*.tsx\"]\n }`\n );\n\n writeJson(tree, 'workspace.json', {\n projects: {\n [`${libName}`]: {\n ...reactLibNBVitest,\n root: `libs/${libName}`,\n projectType: 'library',\n },\n },\n });\n\n writeJson(tree, `libs/${libName}/project.json`, {\n ...reactLibNBVitest,\n root: `libs/${libName}`,\n projectType: 'library',\n });\n\n return tree;\n}\n"],"names":["mockViteReactAppGenerator","mockReactAppGenerator","mockReactMixedAppGenerator","mockWebAppGenerator","mockAngularAppGenerator","mockUnknownAppGenerator","mockReactLibNonBuildableJestTestRunnerGenerator","mockReactLibNonBuildableVitestRunnerGenerator","tree","appName","write","writeJson","projects","reactViteConfig","root","projectType","reactAppConfig","mixedAppConfig","webAppConfig","angularAppConfig","randomAppConfig","libName","reactLibNBJest","reactLibNBVitest"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
2
|
import { TargetFlags } from './generator-utils';
|
|
3
|
-
export declare function ensureViteConfigIsCorrect(tree: Tree, path: string, buildConfigString: string, buildConfigObject: {},
|
|
3
|
+
export declare function ensureViteConfigIsCorrect(tree: Tree, path: string, buildConfigString: string, buildConfigObject: {}, imports: string[], plugins: string[], testConfigString: string, testConfigObject: {}, cacheDir: string, projectAlreadyHasViteTargets?: TargetFlags): boolean;
|
|
@@ -7,16 +7,17 @@ Object.defineProperty(exports, "ensureViteConfigIsCorrect", {
|
|
|
7
7
|
});
|
|
8
8
|
const _devkit = require("@nx/devkit");
|
|
9
9
|
const _js = require("@nx/js");
|
|
10
|
-
function ensureViteConfigIsCorrect(tree, path, buildConfigString, buildConfigObject,
|
|
10
|
+
function ensureViteConfigIsCorrect(tree, path, buildConfigString, buildConfigObject, imports, plugins, testConfigString, testConfigObject, cacheDir, projectAlreadyHasViteTargets) {
|
|
11
11
|
const fileContent = tree.read(path, 'utf-8');
|
|
12
12
|
let updatedContent = undefined;
|
|
13
13
|
if (!(projectAlreadyHasViteTargets == null ? void 0 : projectAlreadyHasViteTargets.test) && (testConfigString == null ? void 0 : testConfigString.length)) {
|
|
14
14
|
updatedContent = handleBuildOrTestNode(fileContent, testConfigString, testConfigObject, 'test');
|
|
15
15
|
}
|
|
16
16
|
if (!(projectAlreadyHasViteTargets == null ? void 0 : projectAlreadyHasViteTargets.build) && (buildConfigString == null ? void 0 : buildConfigString.length)) {
|
|
17
|
-
updatedContent = handlePluginNode(updatedContent != null ? updatedContent : fileContent, dtsPlugin, dtsImportLine, pluginOption);
|
|
18
17
|
updatedContent = handleBuildOrTestNode(updatedContent != null ? updatedContent : fileContent, buildConfigString, buildConfigObject, 'build');
|
|
19
18
|
}
|
|
19
|
+
var _handlePluginNode;
|
|
20
|
+
updatedContent = (_handlePluginNode = handlePluginNode(updatedContent != null ? updatedContent : fileContent, imports, plugins)) != null ? _handlePluginNode : updatedContent;
|
|
20
21
|
if (cacheDir == null ? void 0 : cacheDir.length) {
|
|
21
22
|
updatedContent = handleCacheDirNode(updatedContent != null ? updatedContent : fileContent, cacheDir);
|
|
22
23
|
}
|
|
@@ -29,14 +30,23 @@ function ensureViteConfigIsCorrect(tree, path, buildConfigString, buildConfigObj
|
|
|
29
30
|
}
|
|
30
31
|
function handleBuildOrTestNode(updatedFileContent, configContentString, configContentObject, name) {
|
|
31
32
|
const { tsquery } = require('@phenomnomnominal/tsquery');
|
|
32
|
-
const
|
|
33
|
-
if (
|
|
33
|
+
const buildOrTestNode = tsquery.query(updatedFileContent, `PropertyAssignment:has(Identifier[name="${name}"])`);
|
|
34
|
+
if (buildOrTestNode.length) {
|
|
34
35
|
return tsquery.replace(updatedFileContent, `PropertyAssignment:has(Identifier[name="${name}"])`, (node)=>{
|
|
35
|
-
const
|
|
36
|
+
const existingProperties = tsquery.query(node.initializer, 'PropertyAssignment');
|
|
37
|
+
let updatedPropsString = '';
|
|
38
|
+
for (const prop of existingProperties){
|
|
39
|
+
const propName = prop.name.getText();
|
|
40
|
+
if (!configContentObject[propName] && propName !== 'dir') {
|
|
41
|
+
updatedPropsString += `'${propName}': ${prop.initializer.getText()},\n`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
for (const [propName, propValue] of Object.entries(configContentObject)){
|
|
45
|
+
updatedPropsString += `'${propName}': ${JSON.stringify(propValue)},\n`;
|
|
46
|
+
}
|
|
36
47
|
return `${name}: {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}`;
|
|
48
|
+
${updatedPropsString}
|
|
49
|
+
}`;
|
|
40
50
|
});
|
|
41
51
|
} else {
|
|
42
52
|
const foundDefineConfig = tsquery.query(updatedFileContent, 'CallExpression:has(Identifier[name="defineConfig"])');
|
|
@@ -102,7 +112,7 @@ function transformCurrentBuildObject(index, returnStatements, appFileContent, bu
|
|
|
102
112
|
return `{
|
|
103
113
|
...${currentBuildObject},
|
|
104
114
|
...${JSON.stringify(buildConfigObject)}
|
|
105
|
-
|
|
115
|
+
}`;
|
|
106
116
|
});
|
|
107
117
|
const newContents = (0, _devkit.applyChangesToString)(appFileContent, [
|
|
108
118
|
{
|
|
@@ -158,7 +168,7 @@ function transformConditionalConfig(conditionalConfig, appFileContent, buildConf
|
|
|
158
168
|
return (_transformCurrentBuildObject1 = transformCurrentBuildObject(buildExistsExpressionIndex, returnStatements, appFileContent, buildConfigObject)) != null ? _transformCurrentBuildObject1 : appFileContent;
|
|
159
169
|
}
|
|
160
170
|
}
|
|
161
|
-
function handlePluginNode(appFileContent,
|
|
171
|
+
function handlePluginNode(appFileContent, imports, plugins) {
|
|
162
172
|
const { tsquery } = require('@phenomnomnominal/tsquery');
|
|
163
173
|
const file = tsquery.ast(appFileContent);
|
|
164
174
|
const pluginsNode = tsquery.query(file, 'PropertyAssignment:has(Identifier[name="plugins"])');
|
|
@@ -166,10 +176,18 @@ function handlePluginNode(appFileContent, dtsPlugin, dtsImportLine, pluginOption
|
|
|
166
176
|
if (pluginsNode.length) {
|
|
167
177
|
appFileContent = tsquery.replace(file.getText(), 'PropertyAssignment:has(Identifier[name="plugins"])', (node)=>{
|
|
168
178
|
const found = tsquery.query(node, 'ArrayLiteralExpression');
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
179
|
+
let updatedPluginsString = '';
|
|
180
|
+
var _found__elements;
|
|
181
|
+
const existingPluginNodes = (_found__elements = found == null ? void 0 : found[0].elements) != null ? _found__elements : [];
|
|
182
|
+
for (const plugin of existingPluginNodes){
|
|
183
|
+
updatedPluginsString += `${plugin.getText()},\n`;
|
|
184
|
+
}
|
|
185
|
+
for (const plugin of plugins){
|
|
186
|
+
if (!(existingPluginNodes == null ? void 0 : existingPluginNodes.some((node)=>node.getText().includes(plugin)))) {
|
|
187
|
+
updatedPluginsString += `${plugin},\n`;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return `plugins: [${updatedPluginsString}]`;
|
|
173
191
|
});
|
|
174
192
|
writeFile = true;
|
|
175
193
|
} else {
|
|
@@ -189,7 +207,7 @@ function handlePluginNode(appFileContent, dtsPlugin, dtsImportLine, pluginOption
|
|
|
189
207
|
{
|
|
190
208
|
type: _devkit.ChangeType.Insert,
|
|
191
209
|
index: propertyAssignments[0].getStart(),
|
|
192
|
-
text:
|
|
210
|
+
text: `plugins: [${plugins.join(',\n')}],`
|
|
193
211
|
}
|
|
194
212
|
]);
|
|
195
213
|
writeFile = true;
|
|
@@ -198,7 +216,7 @@ function handlePluginNode(appFileContent, dtsPlugin, dtsImportLine, pluginOption
|
|
|
198
216
|
{
|
|
199
217
|
type: _devkit.ChangeType.Insert,
|
|
200
218
|
index: foundDefineConfig[0].getStart() + 14,
|
|
201
|
-
text:
|
|
219
|
+
text: `plugins: [${plugins.join(',\n')}],`
|
|
202
220
|
}
|
|
203
221
|
]);
|
|
204
222
|
writeFile = true;
|
|
@@ -215,7 +233,7 @@ function handlePluginNode(appFileContent, dtsPlugin, dtsImportLine, pluginOption
|
|
|
215
233
|
{
|
|
216
234
|
type: _devkit.ChangeType.Insert,
|
|
217
235
|
index: startOfObject + 1,
|
|
218
|
-
text:
|
|
236
|
+
text: `plugins: [${plugins.join(',\n')}],`
|
|
219
237
|
}
|
|
220
238
|
]);
|
|
221
239
|
writeFile = true;
|
|
@@ -225,12 +243,20 @@ function handlePluginNode(appFileContent, dtsPlugin, dtsImportLine, pluginOption
|
|
|
225
243
|
}
|
|
226
244
|
}
|
|
227
245
|
if (writeFile) {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}
|
|
231
|
-
return appFileContent;
|
|
246
|
+
const filteredImports = filterImport(appFileContent, imports);
|
|
247
|
+
return filteredImports.join(';') + '\n' + appFileContent;
|
|
232
248
|
}
|
|
233
|
-
|
|
249
|
+
}
|
|
250
|
+
function filterImport(appFileContent, imports) {
|
|
251
|
+
const { tsquery } = require('@phenomnomnominal/tsquery');
|
|
252
|
+
const file = tsquery.ast(appFileContent);
|
|
253
|
+
const importNodes = tsquery.query(file, ':matches(ImportDeclaration, VariableStatement)');
|
|
254
|
+
const importsArrayExisting = importNodes == null ? void 0 : importNodes.map((node)=>{
|
|
255
|
+
return node.getText().slice(0, -1);
|
|
256
|
+
});
|
|
257
|
+
return imports.filter((importString)=>{
|
|
258
|
+
return !(importsArrayExisting == null ? void 0 : importsArrayExisting.includes(importString));
|
|
259
|
+
});
|
|
234
260
|
}
|
|
235
261
|
function handleCacheDirNode(appFileContent, cacheDir) {
|
|
236
262
|
const { tsquery } = require('@phenomnomnominal/tsquery');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/vite/src/utils/vite-config-edit-utils.ts"],"sourcesContent":["import { applyChangesToString, ChangeType, Tree } from '@nx/devkit';\nimport { findNodes } from '@nx/js';\nimport { TargetFlags } from './generator-utils';\nimport type { Node, ReturnStatement } from 'typescript';\n\nexport function ensureViteConfigIsCorrect(\n tree: Tree,\n path: string,\n buildConfigString: string,\n buildConfigObject: {},\n dtsPlugin: string,\n dtsImportLine: string,\n pluginOption: string,\n testConfigString: string,\n testConfigObject: {},\n cacheDir: string,\n projectAlreadyHasViteTargets?: TargetFlags\n): boolean {\n const fileContent = tree.read(path, 'utf-8');\n\n let updatedContent = undefined;\n\n if (!projectAlreadyHasViteTargets?.test && testConfigString?.length) {\n updatedContent = handleBuildOrTestNode(\n fileContent,\n testConfigString,\n testConfigObject,\n 'test'\n );\n }\n\n if (!projectAlreadyHasViteTargets?.build && buildConfigString?.length) {\n updatedContent = handlePluginNode(\n updatedContent ?? fileContent,\n dtsPlugin,\n dtsImportLine,\n pluginOption\n );\n\n updatedContent = handleBuildOrTestNode(\n updatedContent ?? fileContent,\n buildConfigString,\n buildConfigObject,\n 'build'\n );\n }\n\n if (cacheDir?.length) {\n updatedContent = handleCacheDirNode(\n updatedContent ?? fileContent,\n cacheDir\n );\n }\n if (updatedContent) {\n tree.write(path, updatedContent);\n return true;\n } else {\n return false;\n }\n}\n\nfunction handleBuildOrTestNode(\n updatedFileContent: string,\n configContentString: string,\n configContentObject: {},\n name: 'build' | 'test'\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const buildNode = tsquery.query(\n updatedFileContent,\n `PropertyAssignment:has(Identifier[name=\"${name}\"])`\n );\n\n if (buildNode.length) {\n return tsquery.replace(\n updatedFileContent,\n `PropertyAssignment:has(Identifier[name=\"${name}\"])`,\n (node: Node) => {\n const found = tsquery.query(node, 'ObjectLiteralExpression');\n return `${name}: {\n ...${found?.[0].getText()},\n ...${JSON.stringify(configContentObject)}\n }`;\n }\n );\n } else {\n const foundDefineConfig = tsquery.query(\n updatedFileContent,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n if (name === 'build') {\n return transformConditionalConfig(\n conditionalConfig,\n updatedFileContent,\n configContentString\n );\n } else {\n // no test config in conditional config\n return updatedFileContent;\n }\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: configContentString,\n },\n ]);\n } else {\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: configContentString,\n },\n ]);\n }\n }\n } else {\n // build config does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(\n updatedFileContent,\n 'ExportAssignment'\n );\n const found = tsquery.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: configContentString,\n },\n ]);\n } catch {\n return updatedFileContent;\n }\n }\n }\n}\n\nfunction transformCurrentBuildObject(\n index: number,\n returnStatements: ReturnStatement[],\n appFileContent: string,\n buildConfigObject: {}\n): string | undefined {\n if (!returnStatements?.[index]) {\n return undefined;\n }\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const currentBuildObject = tsquery\n .query(returnStatements[index], 'ObjectLiteralExpression')?.[0]\n .getText();\n\n const currentBuildObjectStart = returnStatements[index].getStart();\n const currentBuildObjectEnd = returnStatements[index].getEnd();\n\n const newReturnObject = tsquery.replace(\n returnStatements[index].getText(),\n 'ObjectLiteralExpression',\n (_node: Node) => {\n return `{\n ...${currentBuildObject},\n ...${JSON.stringify(buildConfigObject)}\n }`;\n }\n );\n\n const newContents = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Delete,\n start: currentBuildObjectStart,\n length: currentBuildObjectEnd - currentBuildObjectStart,\n },\n {\n type: ChangeType.Insert,\n index: currentBuildObjectStart,\n text: newReturnObject,\n },\n ]);\n\n return newContents;\n}\n\nfunction transformConditionalConfig(\n conditionalConfig: Node[],\n appFileContent: string,\n buildConfigObject: {}\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const { SyntaxKind } = require('typescript');\n const functionBlock = tsquery.query(conditionalConfig[0], 'Block');\n\n const ifStatement = tsquery.query(functionBlock?.[0], 'IfStatement');\n\n const binaryExpressions = tsquery.query(ifStatement?.[0], 'BinaryExpression');\n\n const buildExists = binaryExpressions?.find(\n (binaryExpression) => binaryExpression.getText() === `command === 'build'`\n );\n\n const buildExistsExpressionIndex = binaryExpressions?.findIndex(\n (binaryExpression) => binaryExpression.getText() === `command === 'build'`\n );\n\n const serveExists = binaryExpressions?.find(\n (binaryExpression) => binaryExpression.getText() === `command === 'serve'`\n );\n\n const elseKeywordExists = findNodes(ifStatement?.[0], SyntaxKind.ElseKeyword);\n const returnStatements: ReturnStatement[] = tsquery.query(\n ifStatement[0],\n 'ReturnStatement'\n );\n\n if (!buildExists) {\n if (serveExists && elseKeywordExists) {\n // build options live inside the else block\n\n return (\n transformCurrentBuildObject(\n returnStatements?.length - 1,\n returnStatements,\n appFileContent,\n buildConfigObject\n ) ?? appFileContent\n );\n } else {\n // no build options exist yet\n const functionBlockStart = functionBlock?.[0].getStart();\n const newContents = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: functionBlockStart + 1,\n text: `\n if (command === 'build') {\n return ${JSON.stringify(buildConfigObject)}\n }\n `,\n },\n ]);\n return newContents;\n }\n } else {\n // build already exists\n // it will be the return statement which lives\n // at the buildExistsExpressionIndex\n\n return (\n transformCurrentBuildObject(\n buildExistsExpressionIndex,\n returnStatements,\n appFileContent,\n buildConfigObject\n ) ?? appFileContent\n );\n }\n}\n\nfunction handlePluginNode(\n appFileContent: string,\n dtsPlugin: string,\n dtsImportLine: string,\n pluginOption: string\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n\n const file = tsquery.ast(appFileContent);\n const pluginsNode = tsquery.query(\n file,\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])'\n );\n\n let writeFile = false;\n\n if (pluginsNode.length) {\n appFileContent = tsquery.replace(\n file.getText(),\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])',\n (node: Node) => {\n const found = tsquery.query(node, 'ArrayLiteralExpression');\n return `plugins: [\n ...${found?.[0].getText()},\n ${dtsPlugin}\n ]`;\n }\n );\n writeFile = true;\n } else {\n // Plugins node does not exist yet\n // So make one from scratch\n\n const foundDefineConfig = tsquery.query(\n file,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n // We are NOT transforming the conditional config\n // with plugins\n writeFile = false;\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: pluginOption,\n },\n ]);\n writeFile = true;\n } else {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: pluginOption,\n },\n ]);\n writeFile = true;\n }\n }\n } else {\n // Plugins option does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(file, 'ExportAssignment');\n const found = tsquery?.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: pluginOption,\n },\n ]);\n writeFile = true;\n } catch {\n writeFile = false;\n }\n }\n }\n\n if (writeFile) {\n if (!appFileContent.includes(`import dts from 'vite-plugin-dts'`)) {\n return dtsImportLine + '\\n' + appFileContent;\n }\n return appFileContent;\n }\n return appFileContent;\n}\n\nfunction handleCacheDirNode(appFileContent: string, cacheDir: string): string {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n\n const file = tsquery.ast(appFileContent);\n const cacheDirNode = tsquery.query(\n file,\n 'PropertyAssignment:has(Identifier[name=\"cacheDir\"])'\n );\n\n if (!cacheDirNode?.length || cacheDirNode?.length === 0) {\n // cacheDir node does not exist yet\n // So make one from scratch\n\n const foundDefineConfig = tsquery.query(\n file,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n // We are NOT transforming the conditional config\n // with cacheDir\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: cacheDir,\n },\n ]);\n } else {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: cacheDir,\n },\n ]);\n }\n }\n } else {\n // cacheDir option does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(file, 'ExportAssignment');\n const found = tsquery?.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: cacheDir,\n },\n ]);\n } catch {}\n }\n }\n\n return appFileContent;\n}\n"],"names":["ensureViteConfigIsCorrect","tree","path","buildConfigString","buildConfigObject","dtsPlugin","dtsImportLine","pluginOption","testConfigString","testConfigObject","cacheDir","projectAlreadyHasViteTargets","fileContent","read","updatedContent","undefined","test","length","handleBuildOrTestNode","build","handlePluginNode","handleCacheDirNode","write","updatedFileContent","configContentString","configContentObject","name","tsquery","require","buildNode","query","replace","node","found","getText","JSON","stringify","foundDefineConfig","conditionalConfig","transformConditionalConfig","propertyAssignments","applyChangesToString","type","ChangeType","Insert","index","getStart","text","defaultExport","startOfObject","transformCurrentBuildObject","returnStatements","appFileContent","currentBuildObject","currentBuildObjectStart","currentBuildObjectEnd","getEnd","newReturnObject","_node","newContents","Delete","start","SyntaxKind","functionBlock","ifStatement","binaryExpressions","buildExists","find","binaryExpression","buildExistsExpressionIndex","findIndex","serveExists","elseKeywordExists","findNodes","ElseKeyword","functionBlockStart","file","ast","pluginsNode","writeFile","includes","cacheDirNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/vite/src/utils/vite-config-edit-utils.ts"],"sourcesContent":["import { applyChangesToString, ChangeType, Tree } from '@nx/devkit';\nimport { findNodes } from '@nx/js';\nimport { TargetFlags } from './generator-utils';\nimport type {\n ArrayLiteralExpression,\n Node,\n PropertyAssignment,\n ReturnStatement,\n} from 'typescript';\n\nexport function ensureViteConfigIsCorrect(\n tree: Tree,\n path: string,\n buildConfigString: string,\n buildConfigObject: {},\n imports: string[],\n plugins: string[],\n testConfigString: string,\n testConfigObject: {},\n cacheDir: string,\n projectAlreadyHasViteTargets?: TargetFlags\n): boolean {\n const fileContent = tree.read(path, 'utf-8');\n\n let updatedContent = undefined;\n\n if (!projectAlreadyHasViteTargets?.test && testConfigString?.length) {\n updatedContent = handleBuildOrTestNode(\n fileContent,\n testConfigString,\n testConfigObject,\n 'test'\n );\n }\n\n if (!projectAlreadyHasViteTargets?.build && buildConfigString?.length) {\n updatedContent = handleBuildOrTestNode(\n updatedContent ?? fileContent,\n buildConfigString,\n buildConfigObject,\n 'build'\n );\n }\n\n updatedContent =\n handlePluginNode(updatedContent ?? fileContent, imports, plugins) ??\n updatedContent;\n\n if (cacheDir?.length) {\n updatedContent = handleCacheDirNode(\n updatedContent ?? fileContent,\n cacheDir\n );\n }\n\n if (updatedContent) {\n tree.write(path, updatedContent);\n return true;\n } else {\n return false;\n }\n}\n\nfunction handleBuildOrTestNode(\n updatedFileContent: string,\n configContentString: string,\n configContentObject: {},\n name: 'build' | 'test'\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const buildOrTestNode = tsquery.query(\n updatedFileContent,\n `PropertyAssignment:has(Identifier[name=\"${name}\"])`\n );\n\n if (buildOrTestNode.length) {\n return tsquery.replace(\n updatedFileContent,\n `PropertyAssignment:has(Identifier[name=\"${name}\"])`,\n (node: PropertyAssignment) => {\n const existingProperties = tsquery.query(\n node.initializer,\n 'PropertyAssignment'\n ) as PropertyAssignment[];\n let updatedPropsString = '';\n for (const prop of existingProperties) {\n const propName = prop.name.getText();\n if (!configContentObject[propName] && propName !== 'dir') {\n updatedPropsString += `'${propName}': ${prop.initializer.getText()},\\n`;\n }\n }\n for (const [propName, propValue] of Object.entries(\n configContentObject\n )) {\n updatedPropsString += `'${propName}': ${JSON.stringify(\n propValue\n )},\\n`;\n }\n return `${name}: {\n ${updatedPropsString}\n }`;\n }\n );\n } else {\n const foundDefineConfig = tsquery.query(\n updatedFileContent,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n if (name === 'build') {\n return transformConditionalConfig(\n conditionalConfig,\n updatedFileContent,\n configContentString\n );\n } else {\n // no test config in conditional config\n return updatedFileContent;\n }\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: configContentString,\n },\n ]);\n } else {\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: configContentString,\n },\n ]);\n }\n }\n } else {\n // build config does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(\n updatedFileContent,\n 'ExportAssignment'\n );\n const found = tsquery.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: configContentString,\n },\n ]);\n } catch {\n return updatedFileContent;\n }\n }\n }\n}\n\nfunction transformCurrentBuildObject(\n index: number,\n returnStatements: ReturnStatement[],\n appFileContent: string,\n buildConfigObject: {}\n): string | undefined {\n if (!returnStatements?.[index]) {\n return undefined;\n }\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const currentBuildObject = tsquery\n .query(returnStatements[index], 'ObjectLiteralExpression')?.[0]\n .getText();\n\n const currentBuildObjectStart = returnStatements[index].getStart();\n const currentBuildObjectEnd = returnStatements[index].getEnd();\n const newReturnObject = tsquery.replace(\n returnStatements[index].getText(),\n 'ObjectLiteralExpression',\n (_node: Node) => {\n return `{\n ...${currentBuildObject},\n ...${JSON.stringify(buildConfigObject)}\n }`;\n }\n );\n\n const newContents = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Delete,\n start: currentBuildObjectStart,\n length: currentBuildObjectEnd - currentBuildObjectStart,\n },\n {\n type: ChangeType.Insert,\n index: currentBuildObjectStart,\n text: newReturnObject,\n },\n ]);\n\n return newContents;\n}\n\nfunction transformConditionalConfig(\n conditionalConfig: Node[],\n appFileContent: string,\n buildConfigObject: {}\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const { SyntaxKind } = require('typescript');\n const functionBlock = tsquery.query(conditionalConfig[0], 'Block');\n const ifStatement = tsquery.query(functionBlock?.[0], 'IfStatement');\n\n const binaryExpressions = tsquery.query(ifStatement?.[0], 'BinaryExpression');\n\n const buildExists = binaryExpressions?.find(\n (binaryExpression) => binaryExpression.getText() === `command === 'build'`\n );\n\n const buildExistsExpressionIndex = binaryExpressions?.findIndex(\n (binaryExpression) => binaryExpression.getText() === `command === 'build'`\n );\n\n const serveExists = binaryExpressions?.find(\n (binaryExpression) => binaryExpression.getText() === `command === 'serve'`\n );\n\n const elseKeywordExists = findNodes(ifStatement?.[0], SyntaxKind.ElseKeyword);\n const returnStatements: ReturnStatement[] = tsquery.query(\n ifStatement[0],\n 'ReturnStatement'\n );\n\n if (!buildExists) {\n if (serveExists && elseKeywordExists) {\n // build options live inside the else block\n return (\n transformCurrentBuildObject(\n returnStatements?.length - 1,\n returnStatements,\n appFileContent,\n buildConfigObject\n ) ?? appFileContent\n );\n } else {\n // no build options exist yet\n const functionBlockStart = functionBlock?.[0].getStart();\n const newContents = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: functionBlockStart + 1,\n text: `\n if (command === 'build') {\n return ${JSON.stringify(buildConfigObject)}\n }\n `,\n },\n ]);\n return newContents;\n }\n } else {\n // build already exists\n // it will be the return statement which lives\n // at the buildExistsExpressionIndex\n\n return (\n transformCurrentBuildObject(\n buildExistsExpressionIndex,\n returnStatements,\n appFileContent,\n buildConfigObject\n ) ?? appFileContent\n );\n }\n}\n\nfunction handlePluginNode(\n appFileContent: string,\n imports: string[],\n plugins: string[]\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const file = tsquery.ast(appFileContent);\n const pluginsNode = tsquery.query(\n file,\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])'\n );\n\n let writeFile = false;\n\n if (pluginsNode.length) {\n appFileContent = tsquery.replace(\n file.getText(),\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\n for (const plugin of plugins) {\n if (\n !existingPluginNodes?.some((node) =>\n node.getText().includes(plugin)\n )\n ) {\n updatedPluginsString += `${plugin},\\n`;\n }\n }\n\n return `plugins: [${updatedPluginsString}]`;\n }\n );\n writeFile = true;\n } else {\n // Plugins node does not exist yet\n // So make one from scratch\n\n const foundDefineConfig = tsquery.query(\n file,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n // We are NOT transforming the conditional config\n // with plugins\n writeFile = false;\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: `plugins: [${plugins.join(',\\n')}],`,\n },\n ]);\n writeFile = true;\n } else {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: `plugins: [${plugins.join(',\\n')}],`,\n },\n ]);\n writeFile = true;\n }\n }\n } else {\n // Plugins option does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(file, 'ExportAssignment');\n const found = tsquery?.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: `plugins: [${plugins.join(',\\n')}],`,\n },\n ]);\n writeFile = true;\n } catch {\n writeFile = false;\n }\n }\n }\n if (writeFile) {\n const filteredImports = filterImport(appFileContent, imports);\n return filteredImports.join(';') + '\\n' + appFileContent;\n }\n}\n\nfunction filterImport(appFileContent: string, imports: string[]): string[] {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const file = tsquery.ast(appFileContent);\n const importNodes = tsquery.query(\n file,\n ':matches(ImportDeclaration, VariableStatement)'\n );\n\n const importsArrayExisting = importNodes?.map((node) => {\n return node.getText().slice(0, -1);\n });\n\n return imports.filter((importString) => {\n return !importsArrayExisting?.includes(importString);\n });\n}\n\nfunction handleCacheDirNode(appFileContent: string, cacheDir: string): string {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n\n const file = tsquery.ast(appFileContent);\n const cacheDirNode = tsquery.query(\n file,\n 'PropertyAssignment:has(Identifier[name=\"cacheDir\"])'\n );\n\n if (!cacheDirNode?.length || cacheDirNode?.length === 0) {\n // cacheDir node does not exist yet\n // So make one from scratch\n\n const foundDefineConfig = tsquery.query(\n file,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n // We are NOT transforming the conditional config\n // with cacheDir\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: cacheDir,\n },\n ]);\n } else {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: cacheDir,\n },\n ]);\n }\n }\n } else {\n // cacheDir option does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(file, 'ExportAssignment');\n const found = tsquery?.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: cacheDir,\n },\n ]);\n } catch {}\n }\n }\n\n return appFileContent;\n}\n"],"names":["ensureViteConfigIsCorrect","tree","path","buildConfigString","buildConfigObject","imports","plugins","testConfigString","testConfigObject","cacheDir","projectAlreadyHasViteTargets","fileContent","read","updatedContent","undefined","test","length","handleBuildOrTestNode","build","handlePluginNode","handleCacheDirNode","write","updatedFileContent","configContentString","configContentObject","name","tsquery","require","buildOrTestNode","query","replace","node","existingProperties","initializer","updatedPropsString","prop","propName","getText","propValue","Object","entries","JSON","stringify","foundDefineConfig","conditionalConfig","transformConditionalConfig","propertyAssignments","applyChangesToString","type","ChangeType","Insert","index","getStart","text","defaultExport","found","startOfObject","transformCurrentBuildObject","returnStatements","appFileContent","currentBuildObject","currentBuildObjectStart","currentBuildObjectEnd","getEnd","newReturnObject","_node","newContents","Delete","start","SyntaxKind","functionBlock","ifStatement","binaryExpressions","buildExists","find","binaryExpression","buildExistsExpressionIndex","findIndex","serveExists","elseKeywordExists","findNodes","ElseKeyword","functionBlockStart","file","ast","pluginsNode","writeFile","updatedPluginsString","existingPluginNodes","elements","plugin","some","includes","join","filteredImports","filterImport","importNodes","importsArrayExisting","map","slice","filter","importString","cacheDirNode"],"mappings":"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"}
|