From 607ff091eb2210db80aa4bbdfe9a6a0df91444e1 Mon Sep 17 00:00:00 2001 From: patak Date: Sat, 3 Dec 2022 11:05:02 +0100 Subject: [PATCH] test: remove duplicated playgrounds that are tested on other repositories --- docs/guide/ssr.md | 10 +- playground/react-classic/App.jsx | 30 -- .../react-classic/__tests__/react.spec.ts | 39 -- playground/react-classic/index.html | 10 - playground/react-classic/package.json | 23 -- playground/react-classic/vite.config.ts | 16 - playground/react-emotion/App.jsx | 56 --- .../react-emotion/__tests__/react.spec.ts | 46 --- playground/react-emotion/index.html | 10 - playground/react-emotion/package.json | 27 -- playground/react-emotion/vite.config.ts | 18 - playground/react-env/App.jsx | 14 - playground/react-env/__tests__/react.spec.ts | 6 - playground/react-env/index.html | 10 - playground/react-env/package.json | 18 - playground/react-env/vite.config.ts | 16 - playground/react-sourcemap/App.jsx | 8 - .../__tests__/react-sourcemap.spec.ts | 8 - playground/react-sourcemap/index.html | 2 - playground/react-sourcemap/main.jsx | 9 - playground/react-sourcemap/package.json | 20 -- playground/react-sourcemap/vite.config.ts | 15 - playground/react/App.jsx | 53 --- playground/react/__tests__/react.spec.ts | 96 ----- playground/react/components/Dummy.jsx | 3 - playground/react/context/ContextButton.jsx | 11 - playground/react/context/CountProvider.jsx | 12 - playground/react/hmr/no-exported-comp.jsx | 7 - playground/react/hmr/parent.jsx | 7 - playground/react/index.html | 10 - playground/react/jsx-entry/Button.jsx | 5 - playground/react/jsx-entry/package.json | 6 - playground/react/package.json | 24 -- playground/react/vite.config.ts | 13 - playground/ssr-react/__tests__/serve.ts | 70 ---- .../ssr-react/__tests__/ssr-react.spec.ts | 77 ---- playground/ssr-react/index.html | 12 - playground/ssr-react/package.json | 26 -- playground/ssr-react/prerender.js | 34 -- playground/ssr-react/server.js | 103 ------ playground/ssr-react/src/App.jsx | 37 -- playground/ssr-react/src/add.js | 9 - .../ssr-react/src/circular-dep-init/README.md | 1 - .../circular-dep-init/circular-dep-init.js | 2 - .../src/circular-dep-init/module-a.js | 1 - .../src/circular-dep-init/module-b.js | 8 - playground/ssr-react/src/entry-client.jsx | 11 - playground/ssr-react/src/entry-server.jsx | 11 - .../ssr-react/src/forked-deadlock/README.md | 51 --- .../src/forked-deadlock/common-module.js | 10 - .../forked-deadlock/deadlock-fuse-module.js | 8 - .../fuse-stuck-bridge-module.js | 8 - .../src/forked-deadlock/middle-module.js | 8 - .../src/forked-deadlock/stuck-module.js | 8 - playground/ssr-react/src/multiply.js | 9 - playground/ssr-react/src/pages/About.jsx | 12 - playground/ssr-react/src/pages/Env.jsx | 7 - playground/ssr-react/src/pages/Home.jsx | 17 - playground/ssr-react/vite.config.js | 9 - .../__tests__/fixtures/ssrModuleLoader-bad.js | 2 - playground/ssr-vue/__tests__/serve.ts | 71 ---- playground/ssr-vue/__tests__/ssr-vue.spec.ts | 247 ------------- .../ssr-vue/dep-import-type/deep/index.d.ts | 1 - .../ssr-vue/dep-import-type/package.json | 6 - .../ExampleExternalComponent.vue | 3 - .../example-external-component/index.js | 3 - .../example-external-component/package.json | 7 - playground/ssr-vue/index.html | 13 - playground/ssr-vue/package.json | 31 -- playground/ssr-vue/prerender.js | 42 --- playground/ssr-vue/server.js | 105 ------ playground/ssr-vue/src/App.vue | 35 -- playground/ssr-vue/src/assets/button.css | 15 - .../src/assets/fonts/Inter-Italic.woff | Bin 143476 -> 0 bytes .../src/assets/fonts/Inter-Italic.woff2 | Bin 108172 -> 0 bytes playground/ssr-vue/src/assets/logo.png | Bin 6849 -> 0 bytes playground/ssr-vue/src/components/Foo.jsx | 10 - .../ssr-vue/src/components/ImportType.vue | 8 - playground/ssr-vue/src/components/button.js | 16 - playground/ssr-vue/src/components/foo.css | 3 - playground/ssr-vue/src/entry-client.js | 10 - playground/ssr-vue/src/entry-server.js | 69 ---- playground/ssr-vue/src/main.js | 16 - playground/ssr-vue/src/pages/About.vue | 30 -- playground/ssr-vue/src/pages/External.vue | 13 - playground/ssr-vue/src/pages/Home.vue | 51 --- playground/ssr-vue/src/pages/Store.vue | 25 -- playground/ssr-vue/src/router.js | 28 -- playground/ssr-vue/vite.config.js | 126 ------- playground/ssr-vue/vite.config.noexternal.js | 25 -- playground/test-utils.ts | 6 +- playground/vue-jsx/Comp.tsx | 14 - playground/vue-jsx/Comps.jsx | 35 -- playground/vue-jsx/OtherExt.tesx | 9 - playground/vue-jsx/Query.jsx | 12 - playground/vue-jsx/Script.vue | 14 - playground/vue-jsx/SrcImport.jsx | 12 - playground/vue-jsx/SrcImport.vue | 1 - playground/vue-jsx/TsImport.vue | 8 - playground/vue-jsx/TsImportFile.ts | 1 - playground/vue-jsx/__tests__/vue-jsx.spec.ts | 117 ------ playground/vue-jsx/index.html | 2 - playground/vue-jsx/main.jsx | 29 -- playground/vue-jsx/package.json | 18 - playground/vue-jsx/setup-syntax-jsx.vue | 17 - playground/vue-jsx/vite.config.js | 42 --- playground/vue-legacy/Main.vue | 32 -- .../vue-legacy/__tests__/vue-legacy.spec.ts | 10 - playground/vue-legacy/assets/asset.png | Bin 12772 -> 0 bytes playground/vue-legacy/env.d.ts | 1 - playground/vue-legacy/index.html | 7 - playground/vue-legacy/inline.css | 3 - playground/vue-legacy/module.vue | 13 - playground/vue-legacy/package.json | 18 - playground/vue-legacy/vite.config.ts | 35 -- playground/vue-lib/__tests__/serve.ts | 6 - playground/vue-lib/__tests__/vue-lib.spec.ts | 36 -- playground/vue-lib/index.html | 6 - playground/vue-lib/package.json | 17 - playground/vue-lib/src-consumer/index.ts | 7 - playground/vue-lib/src-lib-css/index.css | 3 - playground/vue-lib/src-lib-css/index.ts | 3 - playground/vue-lib/src-lib/CompA.vue | 8 - playground/vue-lib/src-lib/CompB.vue | 8 - playground/vue-lib/src-lib/index.ts | 2 - playground/vue-lib/vite.config.consumer.ts | 10 - playground/vue-lib/vite.config.lib-css.ts | 16 - playground/vue-lib/vite.config.lib.ts | 23 -- playground/vue-server-origin/Main.vue | 8 - .../__tests__/vue-server-origin.spec.ts | 11 - playground/vue-server-origin/assets/asset.png | Bin 12772 -> 0 bytes playground/vue-server-origin/env.d.ts | 1 - playground/vue-server-origin/index.html | 7 - playground/vue-server-origin/package.json | 17 - playground/vue-server-origin/vite.config.ts | 19 - playground/vue-sourcemap/Css.vue | 34 -- playground/vue-sourcemap/Js.vue | 11 - playground/vue-sourcemap/Less.vue | 9 - playground/vue-sourcemap/Main.vue | 24 -- playground/vue-sourcemap/NoScript.vue | 3 - playground/vue-sourcemap/NoTemplate.vue | 7 - playground/vue-sourcemap/Sass.vue | 8 - playground/vue-sourcemap/SassWithImport.vue | 11 - playground/vue-sourcemap/Ts.vue | 11 - .../__snapshots__/vue-sourcemap.spec.ts.snap | 335 ------------------ .../__tests__/vue-sourcemap.spec.ts | 117 ------ playground/vue-sourcemap/index.html | 7 - playground/vue-sourcemap/package.json | 20 -- playground/vue-sourcemap/postcss.config.js | 3 - .../vue-sourcemap/sassWithImportImported.sass | 2 - .../vue-sourcemap/src-import/SrcImport.vue | 8 - .../src-import/src-import-imported.sass | 2 - .../vue-sourcemap/src-import/src-import.css | 3 - .../vue-sourcemap/src-import/src-import.sass | 4 - playground/vue-sourcemap/vite.config.ts | 17 - playground/vue/Assets.vue | 42 --- playground/vue/AsyncComponent.vue | 15 - playground/vue/CssModules.vue | 23 -- playground/vue/CustomBlock.vue | 32 -- playground/vue/CustomBlockPlugin.ts | 20 -- playground/vue/CustomElement.ce.vue | 26 -- playground/vue/Hmr.vue | 20 -- playground/vue/HmrTsx.vue | 17 - playground/vue/Main.vue | 58 --- playground/vue/Node.vue | 3 - playground/vue/Null.vue | 1 - playground/vue/PreProcessors.vue | 44 --- playground/vue/ReactivityTransform.vue | 12 - playground/vue/ScanDep.vue | 8 - playground/vue/Slotted.vue | 12 - playground/vue/Syntax.vue | 14 - playground/vue/TsImport.vue | 10 - playground/vue/TsImportFile.ts | 1 - playground/vue/Url.vue | 10 - playground/vue/__tests__/vue.spec.ts | 281 --------------- playground/vue/assets/asset.png | Bin 12772 -> 0 bytes playground/vue/assets/fragment.svg | 22 -- playground/vue/index.html | 10 - playground/vue/package.json | 23 -- playground/vue/public/favicon.ico | Bin 4286 -> 0 bytes playground/vue/public/icon.png | Bin 3395 -> 0 bytes .../SetupImportTemplate.vue | 5 - .../vue/setup-import-template/template.html | 2 - playground/vue/src-import/SrcImport.vue | 4 - playground/vue/src-import/css.module.css | 7 - playground/vue/src-import/script.ts | 19 - .../vue/src-import/srcImportModuleStyle.vue | 4 - .../vue/src-import/srcImportModuleStyle2.vue | 4 - playground/vue/src-import/srcImportStyle.vue | 7 - playground/vue/src-import/srcImportStyle2.vue | 4 - playground/vue/src-import/style.css | 3 - playground/vue/src-import/style2.css | 3 - playground/vue/src-import/template.html | 7 - playground/vue/tsconfig.json | 7 - playground/vue/vite-env.d.ts | 1 - playground/vue/vite.config.ts | 38 -- playground/vue/worker.vue | 17 - playground/vue/workerTest.js | 1 - 198 files changed, 6 insertions(+), 4349 deletions(-) delete mode 100644 playground/react-classic/App.jsx delete mode 100644 playground/react-classic/__tests__/react.spec.ts delete mode 100644 playground/react-classic/index.html delete mode 100644 playground/react-classic/package.json delete mode 100644 playground/react-classic/vite.config.ts delete mode 100644 playground/react-emotion/App.jsx delete mode 100644 playground/react-emotion/__tests__/react.spec.ts delete mode 100644 playground/react-emotion/index.html delete mode 100644 playground/react-emotion/package.json delete mode 100644 playground/react-emotion/vite.config.ts delete mode 100644 playground/react-env/App.jsx delete mode 100644 playground/react-env/__tests__/react.spec.ts delete mode 100644 playground/react-env/index.html delete mode 100644 playground/react-env/package.json delete mode 100644 playground/react-env/vite.config.ts delete mode 100644 playground/react-sourcemap/App.jsx delete mode 100644 playground/react-sourcemap/__tests__/react-sourcemap.spec.ts delete mode 100644 playground/react-sourcemap/index.html delete mode 100644 playground/react-sourcemap/main.jsx delete mode 100644 playground/react-sourcemap/package.json delete mode 100644 playground/react-sourcemap/vite.config.ts delete mode 100644 playground/react/App.jsx delete mode 100644 playground/react/__tests__/react.spec.ts delete mode 100644 playground/react/components/Dummy.jsx delete mode 100644 playground/react/context/ContextButton.jsx delete mode 100644 playground/react/context/CountProvider.jsx delete mode 100644 playground/react/hmr/no-exported-comp.jsx delete mode 100644 playground/react/hmr/parent.jsx delete mode 100644 playground/react/index.html delete mode 100644 playground/react/jsx-entry/Button.jsx delete mode 100644 playground/react/jsx-entry/package.json delete mode 100644 playground/react/package.json delete mode 100644 playground/react/vite.config.ts delete mode 100644 playground/ssr-react/__tests__/serve.ts delete mode 100644 playground/ssr-react/__tests__/ssr-react.spec.ts delete mode 100644 playground/ssr-react/index.html delete mode 100644 playground/ssr-react/package.json delete mode 100644 playground/ssr-react/prerender.js delete mode 100644 playground/ssr-react/server.js delete mode 100644 playground/ssr-react/src/App.jsx delete mode 100644 playground/ssr-react/src/add.js delete mode 100644 playground/ssr-react/src/circular-dep-init/README.md delete mode 100644 playground/ssr-react/src/circular-dep-init/circular-dep-init.js delete mode 100644 playground/ssr-react/src/circular-dep-init/module-a.js delete mode 100644 playground/ssr-react/src/circular-dep-init/module-b.js delete mode 100644 playground/ssr-react/src/entry-client.jsx delete mode 100644 playground/ssr-react/src/entry-server.jsx delete mode 100644 playground/ssr-react/src/forked-deadlock/README.md delete mode 100644 playground/ssr-react/src/forked-deadlock/common-module.js delete mode 100644 playground/ssr-react/src/forked-deadlock/deadlock-fuse-module.js delete mode 100644 playground/ssr-react/src/forked-deadlock/fuse-stuck-bridge-module.js delete mode 100644 playground/ssr-react/src/forked-deadlock/middle-module.js delete mode 100644 playground/ssr-react/src/forked-deadlock/stuck-module.js delete mode 100644 playground/ssr-react/src/multiply.js delete mode 100644 playground/ssr-react/src/pages/About.jsx delete mode 100644 playground/ssr-react/src/pages/Env.jsx delete mode 100644 playground/ssr-react/src/pages/Home.jsx delete mode 100644 playground/ssr-react/vite.config.js delete mode 100644 playground/ssr-vue/__tests__/fixtures/ssrModuleLoader-bad.js delete mode 100644 playground/ssr-vue/__tests__/serve.ts delete mode 100644 playground/ssr-vue/__tests__/ssr-vue.spec.ts delete mode 100644 playground/ssr-vue/dep-import-type/deep/index.d.ts delete mode 100644 playground/ssr-vue/dep-import-type/package.json delete mode 100644 playground/ssr-vue/example-external-component/ExampleExternalComponent.vue delete mode 100644 playground/ssr-vue/example-external-component/index.js delete mode 100644 playground/ssr-vue/example-external-component/package.json delete mode 100644 playground/ssr-vue/index.html delete mode 100644 playground/ssr-vue/package.json delete mode 100644 playground/ssr-vue/prerender.js delete mode 100644 playground/ssr-vue/server.js delete mode 100644 playground/ssr-vue/src/App.vue delete mode 100644 playground/ssr-vue/src/assets/button.css delete mode 100644 playground/ssr-vue/src/assets/fonts/Inter-Italic.woff delete mode 100644 playground/ssr-vue/src/assets/fonts/Inter-Italic.woff2 delete mode 100644 playground/ssr-vue/src/assets/logo.png delete mode 100644 playground/ssr-vue/src/components/Foo.jsx delete mode 100644 playground/ssr-vue/src/components/ImportType.vue delete mode 100644 playground/ssr-vue/src/components/button.js delete mode 100644 playground/ssr-vue/src/components/foo.css delete mode 100644 playground/ssr-vue/src/entry-client.js delete mode 100644 playground/ssr-vue/src/entry-server.js delete mode 100644 playground/ssr-vue/src/main.js delete mode 100644 playground/ssr-vue/src/pages/About.vue delete mode 100644 playground/ssr-vue/src/pages/External.vue delete mode 100644 playground/ssr-vue/src/pages/Home.vue delete mode 100644 playground/ssr-vue/src/pages/Store.vue delete mode 100644 playground/ssr-vue/src/router.js delete mode 100644 playground/ssr-vue/vite.config.js delete mode 100644 playground/ssr-vue/vite.config.noexternal.js delete mode 100644 playground/vue-jsx/Comp.tsx delete mode 100644 playground/vue-jsx/Comps.jsx delete mode 100644 playground/vue-jsx/OtherExt.tesx delete mode 100644 playground/vue-jsx/Query.jsx delete mode 100644 playground/vue-jsx/Script.vue delete mode 100644 playground/vue-jsx/SrcImport.jsx delete mode 100644 playground/vue-jsx/SrcImport.vue delete mode 100644 playground/vue-jsx/TsImport.vue delete mode 100644 playground/vue-jsx/TsImportFile.ts delete mode 100644 playground/vue-jsx/__tests__/vue-jsx.spec.ts delete mode 100644 playground/vue-jsx/index.html delete mode 100644 playground/vue-jsx/main.jsx delete mode 100644 playground/vue-jsx/package.json delete mode 100644 playground/vue-jsx/setup-syntax-jsx.vue delete mode 100644 playground/vue-jsx/vite.config.js delete mode 100644 playground/vue-legacy/Main.vue delete mode 100644 playground/vue-legacy/__tests__/vue-legacy.spec.ts delete mode 100644 playground/vue-legacy/assets/asset.png delete mode 100644 playground/vue-legacy/env.d.ts delete mode 100644 playground/vue-legacy/index.html delete mode 100644 playground/vue-legacy/inline.css delete mode 100644 playground/vue-legacy/module.vue delete mode 100644 playground/vue-legacy/package.json delete mode 100644 playground/vue-legacy/vite.config.ts delete mode 100644 playground/vue-lib/__tests__/serve.ts delete mode 100644 playground/vue-lib/__tests__/vue-lib.spec.ts delete mode 100644 playground/vue-lib/index.html delete mode 100644 playground/vue-lib/package.json delete mode 100644 playground/vue-lib/src-consumer/index.ts delete mode 100644 playground/vue-lib/src-lib-css/index.css delete mode 100644 playground/vue-lib/src-lib-css/index.ts delete mode 100644 playground/vue-lib/src-lib/CompA.vue delete mode 100644 playground/vue-lib/src-lib/CompB.vue delete mode 100644 playground/vue-lib/src-lib/index.ts delete mode 100644 playground/vue-lib/vite.config.consumer.ts delete mode 100644 playground/vue-lib/vite.config.lib-css.ts delete mode 100644 playground/vue-lib/vite.config.lib.ts delete mode 100644 playground/vue-server-origin/Main.vue delete mode 100644 playground/vue-server-origin/__tests__/vue-server-origin.spec.ts delete mode 100644 playground/vue-server-origin/assets/asset.png delete mode 100644 playground/vue-server-origin/env.d.ts delete mode 100644 playground/vue-server-origin/index.html delete mode 100644 playground/vue-server-origin/package.json delete mode 100644 playground/vue-server-origin/vite.config.ts delete mode 100644 playground/vue-sourcemap/Css.vue delete mode 100644 playground/vue-sourcemap/Js.vue delete mode 100644 playground/vue-sourcemap/Less.vue delete mode 100644 playground/vue-sourcemap/Main.vue delete mode 100644 playground/vue-sourcemap/NoScript.vue delete mode 100644 playground/vue-sourcemap/NoTemplate.vue delete mode 100644 playground/vue-sourcemap/Sass.vue delete mode 100644 playground/vue-sourcemap/SassWithImport.vue delete mode 100644 playground/vue-sourcemap/Ts.vue delete mode 100644 playground/vue-sourcemap/__tests__/__snapshots__/vue-sourcemap.spec.ts.snap delete mode 100644 playground/vue-sourcemap/__tests__/vue-sourcemap.spec.ts delete mode 100644 playground/vue-sourcemap/index.html delete mode 100644 playground/vue-sourcemap/package.json delete mode 100644 playground/vue-sourcemap/postcss.config.js delete mode 100644 playground/vue-sourcemap/sassWithImportImported.sass delete mode 100644 playground/vue-sourcemap/src-import/SrcImport.vue delete mode 100644 playground/vue-sourcemap/src-import/src-import-imported.sass delete mode 100644 playground/vue-sourcemap/src-import/src-import.css delete mode 100644 playground/vue-sourcemap/src-import/src-import.sass delete mode 100644 playground/vue-sourcemap/vite.config.ts delete mode 100644 playground/vue/Assets.vue delete mode 100644 playground/vue/AsyncComponent.vue delete mode 100644 playground/vue/CssModules.vue delete mode 100644 playground/vue/CustomBlock.vue delete mode 100644 playground/vue/CustomBlockPlugin.ts delete mode 100644 playground/vue/CustomElement.ce.vue delete mode 100644 playground/vue/Hmr.vue delete mode 100644 playground/vue/HmrTsx.vue delete mode 100644 playground/vue/Main.vue delete mode 100644 playground/vue/Node.vue delete mode 100644 playground/vue/Null.vue delete mode 100644 playground/vue/PreProcessors.vue delete mode 100644 playground/vue/ReactivityTransform.vue delete mode 100644 playground/vue/ScanDep.vue delete mode 100644 playground/vue/Slotted.vue delete mode 100644 playground/vue/Syntax.vue delete mode 100644 playground/vue/TsImport.vue delete mode 100644 playground/vue/TsImportFile.ts delete mode 100644 playground/vue/Url.vue delete mode 100644 playground/vue/__tests__/vue.spec.ts delete mode 100644 playground/vue/assets/asset.png delete mode 100644 playground/vue/assets/fragment.svg delete mode 100644 playground/vue/index.html delete mode 100644 playground/vue/package.json delete mode 100644 playground/vue/public/favicon.ico delete mode 100644 playground/vue/public/icon.png delete mode 100644 playground/vue/setup-import-template/SetupImportTemplate.vue delete mode 100644 playground/vue/setup-import-template/template.html delete mode 100644 playground/vue/src-import/SrcImport.vue delete mode 100644 playground/vue/src-import/css.module.css delete mode 100644 playground/vue/src-import/script.ts delete mode 100644 playground/vue/src-import/srcImportModuleStyle.vue delete mode 100644 playground/vue/src-import/srcImportModuleStyle2.vue delete mode 100644 playground/vue/src-import/srcImportStyle.vue delete mode 100644 playground/vue/src-import/srcImportStyle2.vue delete mode 100644 playground/vue/src-import/style.css delete mode 100644 playground/vue/src-import/style2.css delete mode 100644 playground/vue/src-import/template.html delete mode 100644 playground/vue/tsconfig.json delete mode 100644 playground/vue/vite-env.d.ts delete mode 100644 playground/vue/vite.config.ts delete mode 100644 playground/vue/worker.vue delete mode 100644 playground/vue/workerTest.js diff --git a/docs/guide/ssr.md b/docs/guide/ssr.md index 2761161216d4ce..0e50dcb2358dd5 100644 --- a/docs/guide/ssr.md +++ b/docs/guide/ssr.md @@ -18,8 +18,8 @@ If you have questions, the community is usually helpful at [Vite Discord's #ssr Vite provides built-in support for server-side rendering (SSR). The Vite playground contains example SSR setups for Vue 3 and React, which can be used as references for this guide: -- [Vue 3](https://github.com/vitejs/vite/tree/main/playground/ssr-vue) -- [React](https://github.com/vitejs/vite/tree/main/playground/ssr-react) +- [Vue 3](https://github.com/vitejs/vite-plugin-vue/tree/main/playground/ssr-vue) +- [React](https://github.com/vitejs/vite-plugin-vue/tree/main/playground/ssr-react) ## Source Structure @@ -177,7 +177,7 @@ Then, in `server.js` we need to add some production specific logic by checking ` - Move the creation and all usage of the `vite` dev server behind dev-only conditional branches, then add static file serving middlewares to serve files from `dist/client`. -Refer to the [Vue](https://github.com/vitejs/vite/tree/main/playground/ssr-vue) and [React](https://github.com/vitejs/vite/tree/main/playground/ssr-react) demos for a working setup. +Refer to the [Vue](https://github.com/vitejs/vite-plugin-vue/tree/main/playground/ssr-vue) and [React](https://github.com/vitejs/vite-plugin-react/tree/main/playground/ssr-react) demos for a working setup. ## Generating Preload Directives @@ -201,11 +201,11 @@ const html = await vueServerRenderer.renderToString(app, ctx) // ctx.modules is now a Set of module IDs that were used during the render ``` -In the production branch of `server.js` we need to read and pass the manifest to the `render` function exported by `src/entry-server.js`. This would provide us with enough information to render preload directives for files used by async routes! See [demo source](https://github.com/vitejs/vite/blob/main/playground/ssr-vue/src/entry-server.js) for a full example. +In the production branch of `server.js` we need to read and pass the manifest to the `render` function exported by `src/entry-server.js`. This would provide us with enough information to render preload directives for files used by async routes! See [demo source](https://github.com/vitejs/vite-plugin-vue/blob/main/playground/ssr-vue/src/entry-server.js) for a full example. ## Pre-Rendering / SSG -If the routes and the data needed for certain routes are known ahead of time, we can pre-render these routes into static HTML using the same logic as production SSR. This can also be considered a form of Static-Site Generation (SSG). See [demo pre-render script](https://github.com/vitejs/vite/blob/main/playground/ssr-vue/prerender.js) for working example. +If the routes and the data needed for certain routes are known ahead of time, we can pre-render these routes into static HTML using the same logic as production SSR. This can also be considered a form of Static-Site Generation (SSG). See [demo pre-render script](https://github.com/vitejs/vite-plugin-vue/blob/main/playground/ssr-vue/prerender.js) for working example. ## SSR Externals diff --git a/playground/react-classic/App.jsx b/playground/react-classic/App.jsx deleted file mode 100644 index 1de7461b163776..00000000000000 --- a/playground/react-classic/App.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import { useState } from 'react' - -function App() { - const [count, setCount] = useState(0) - return ( -
-
-

Hello Vite + React

-

- -

-

- Edit App.jsx and save to test HMR updates. -

- - Learn React - -
-
- ) -} - -export default App diff --git a/playground/react-classic/__tests__/react.spec.ts b/playground/react-classic/__tests__/react.spec.ts deleted file mode 100644 index 15f6319220d7f2..00000000000000 --- a/playground/react-classic/__tests__/react.spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { expect, test } from 'vitest' -import { editFile, isServe, page, untilUpdated } from '~utils' - -test('should render', async () => { - expect(await page.textContent('h1')).toMatch('Hello Vite + React') -}) - -test('should update', async () => { - expect(await page.textContent('button')).toMatch('count is: 0') - await page.click('button') - expect(await page.textContent('button')).toMatch('count is: 1') -}) - -test('should hmr', async () => { - editFile('App.jsx', (code) => code.replace('Vite + React', 'Updated')) - await untilUpdated(() => page.textContent('h1'), 'Hello Updated') - // preserve state - expect(await page.textContent('button')).toMatch('count is: 1') -}) - -test.runIf(isServe)( - 'should have annotated jsx with file location metadata', - async () => { - const meta = await page.evaluate(() => { - const button = document.querySelector('button') - const key = Object.keys(button).find( - (key) => key.indexOf('__reactFiber') === 0 - ) - return button[key]._debugSource - }) - // If the evaluate call doesn't crash, and the returned metadata has - // the expected fields, we're good. - expect(Object.keys(meta).sort()).toEqual([ - 'columnNumber', - 'fileName', - 'lineNumber' - ]) - } -) diff --git a/playground/react-classic/index.html b/playground/react-classic/index.html deleted file mode 100644 index f0015ceb9829a3..00000000000000 --- a/playground/react-classic/index.html +++ /dev/null @@ -1,10 +0,0 @@ -
- diff --git a/playground/react-classic/package.json b/playground/react-classic/package.json deleted file mode 100644 index 2210af8d89f986..00000000000000 --- a/playground/react-classic/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test-react-classic", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@vitejs/plugin-react": "^3.0.0-alpha.0" - }, - "babel": { - "presets": [ - "@babel/preset-env" - ] - } -} diff --git a/playground/react-classic/vite.config.ts b/playground/react-classic/vite.config.ts deleted file mode 100644 index a2044e99ae2f3c..00000000000000 --- a/playground/react-classic/vite.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import react from '@vitejs/plugin-react' -import type { UserConfig } from 'vite' - -const config: UserConfig = { - plugins: [ - react({ - jsxRuntime: 'classic' - }) - ], - build: { - // to make tests faster - minify: false - } -} - -export default config diff --git a/playground/react-emotion/App.jsx b/playground/react-emotion/App.jsx deleted file mode 100644 index b3715369614530..00000000000000 --- a/playground/react-emotion/App.jsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useState } from 'react' -import { css } from '@emotion/react' - -import _Switch from 'react-switch' -const Switch = _Switch.default || _Switch - -export function Counter() { - const [count, setCount] = useState(0) - - return ( - - ) -} - -function FragmentTest() { - const [checked, setChecked] = useState(false) - return ( - <> - -

- -

- - ) -} - -function App() { - return ( -
-
-

Hello Vite + React + @emotion/react

- -

- Edit App.jsx and save to test HMR updates. -

- - Learn React - -
-
- ) -} - -export default App diff --git a/playground/react-emotion/__tests__/react.spec.ts b/playground/react-emotion/__tests__/react.spec.ts deleted file mode 100644 index d326a4ad0abeb8..00000000000000 --- a/playground/react-emotion/__tests__/react.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { expect, test } from 'vitest' -import { editFile, page, untilUpdated } from '~utils' - -test('should render', async () => { - expect(await page.textContent('h1')).toMatch( - 'Hello Vite + React + @emotion/react' - ) -}) - -test('should update', async () => { - expect(await page.textContent('button')).toMatch('count is: 0') - await page.click('button') - expect(await page.textContent('button')).toMatch('count is: 1') -}) - -test('should hmr', async () => { - editFile('App.jsx', (code) => - code.replace('Vite + React + @emotion/react', 'Updated') - ) - await untilUpdated(() => page.textContent('h1'), 'Hello Updated') - // preserve state - expect(await page.textContent('button')).toMatch('count is: 1') -}) - -test('should update button style', async () => { - function getButtonBorderStyle() { - return page.evaluate(() => { - return window.getComputedStyle(document.querySelector('button')).border - }) - } - - await page.evaluate(() => { - return document.querySelector('button').style - }) - - expect(await getButtonBorderStyle()).toMatch('2px solid rgb(0, 0, 0)') - - editFile('App.jsx', (code) => - code.replace('border: 2px solid #000', 'border: 4px solid red') - ) - - await untilUpdated(getButtonBorderStyle, '4px solid rgb(255, 0, 0)') - - // preserve state - expect(await page.textContent('button')).toMatch('count is: 1') -}) diff --git a/playground/react-emotion/index.html b/playground/react-emotion/index.html deleted file mode 100644 index f0015ceb9829a3..00000000000000 --- a/playground/react-emotion/index.html +++ /dev/null @@ -1,10 +0,0 @@ -
- diff --git a/playground/react-emotion/package.json b/playground/react-emotion/package.json deleted file mode 100644 index 1167cf3e26e7f0..00000000000000 --- a/playground/react-emotion/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "test-react-emotion", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "dependencies": { - "@emotion/react": "^11.10.5", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-switch": "^7.0.0" - }, - "devDependencies": { - "@babel/plugin-proposal-pipeline-operator": "^7.18.9", - "@emotion/babel-plugin": "^11.10.5", - "@vitejs/plugin-react": "^3.0.0-alpha.0" - }, - "babel": { - "presets": [ - "@babel/preset-env" - ] - } -} diff --git a/playground/react-emotion/vite.config.ts b/playground/react-emotion/vite.config.ts deleted file mode 100644 index 197e04f870d835..00000000000000 --- a/playground/react-emotion/vite.config.ts +++ /dev/null @@ -1,18 +0,0 @@ -import react from '@vitejs/plugin-react' -import { defineConfig } from 'vite' - -export default defineConfig({ - plugins: [ - react({ - jsxImportSource: '@emotion/react', - babel: { - plugins: ['@emotion/babel-plugin'] - } - }) - ], - clearScreen: false, - build: { - // to make tests faster - minify: false - } -}) diff --git a/playground/react-env/App.jsx b/playground/react-env/App.jsx deleted file mode 100644 index 216b2989b5106f..00000000000000 --- a/playground/react-env/App.jsx +++ /dev/null @@ -1,14 +0,0 @@ -import { useState } from 'react' - -function App() { - const [count, setCount] = useState(0) - return ( -
-
-

Hello Vite + React

-
-
- ) -} - -export default App diff --git a/playground/react-env/__tests__/react.spec.ts b/playground/react-env/__tests__/react.spec.ts deleted file mode 100644 index 12686328dc816e..00000000000000 --- a/playground/react-env/__tests__/react.spec.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { expect, test } from 'vitest' -import { page } from '~utils' - -test('should work', async () => { - expect(await page.textContent('h1')).toMatch('Hello Vite + React') -}) diff --git a/playground/react-env/index.html b/playground/react-env/index.html deleted file mode 100644 index f0015ceb9829a3..00000000000000 --- a/playground/react-env/index.html +++ /dev/null @@ -1,10 +0,0 @@ -
- diff --git a/playground/react-env/package.json b/playground/react-env/package.json deleted file mode 100644 index 3232076cfa0e4c..00000000000000 --- a/playground/react-env/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "test-react-env", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@vitejs/plugin-react": "^3.0.0-alpha.0" - } -} diff --git a/playground/react-env/vite.config.ts b/playground/react-env/vite.config.ts deleted file mode 100644 index 4c1003b0e4687a..00000000000000 --- a/playground/react-env/vite.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import react from '@vitejs/plugin-react' -import type { UserConfig } from 'vite' - -// Overriding the NODE_ENV set by vitest -process.env.NODE_ENV = '' - -const config: UserConfig = { - plugins: [react()], - mode: 'staging', - build: { - // to make tests faster - minify: false - } -} - -export default config diff --git a/playground/react-sourcemap/App.jsx b/playground/react-sourcemap/App.jsx deleted file mode 100644 index ec47ca46ad212e..00000000000000 --- a/playground/react-sourcemap/App.jsx +++ /dev/null @@ -1,8 +0,0 @@ -console.log('App.jsx 1') // for sourcemap -function App() { - return
foo
-} - -console.log('App.jsx 2') // for sourcemap - -export default App diff --git a/playground/react-sourcemap/__tests__/react-sourcemap.spec.ts b/playground/react-sourcemap/__tests__/react-sourcemap.spec.ts deleted file mode 100644 index e5527ca71ea693..00000000000000 --- a/playground/react-sourcemap/__tests__/react-sourcemap.spec.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { expect, test } from 'vitest' -import { isBuild, serverLogs } from '~utils' - -test.runIf(isBuild)('should not output sourcemap warning', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch('Sourcemap is likely to be incorrect') - }) -}) diff --git a/playground/react-sourcemap/index.html b/playground/react-sourcemap/index.html deleted file mode 100644 index d3ca9807c608ba..00000000000000 --- a/playground/react-sourcemap/index.html +++ /dev/null @@ -1,2 +0,0 @@ -
- diff --git a/playground/react-sourcemap/main.jsx b/playground/react-sourcemap/main.jsx deleted file mode 100644 index 705d3340097aeb..00000000000000 --- a/playground/react-sourcemap/main.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' - -ReactDOM.createRoot(document.getElementById('app')).render( - React.createElement(App) -) - -console.log('main.jsx') // for sourcemap diff --git a/playground/react-sourcemap/package.json b/playground/react-sourcemap/package.json deleted file mode 100644 index 7d51945d203bf0..00000000000000 --- a/playground/react-sourcemap/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "test-react-sourcemap", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "dev:classic": "USE_CLASSIC=1 vite", - "build": "vite build", - "build:classic": "USE_CLASSIC=1 vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@vitejs/plugin-react": "^3.0.0-alpha.0" - } -} diff --git a/playground/react-sourcemap/vite.config.ts b/playground/react-sourcemap/vite.config.ts deleted file mode 100644 index d8a2cc46b419b9..00000000000000 --- a/playground/react-sourcemap/vite.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import react from '@vitejs/plugin-react' -import type { UserConfig } from 'vite' - -const config: UserConfig = { - plugins: [ - react({ - jsxRuntime: process.env.USE_CLASSIC === '1' ? 'classic' : 'automatic' - }) - ], - build: { - sourcemap: true - } -} - -export default config diff --git a/playground/react/App.jsx b/playground/react/App.jsx deleted file mode 100644 index 83f4cc07ea4a07..00000000000000 --- a/playground/react/App.jsx +++ /dev/null @@ -1,53 +0,0 @@ -import { useState } from 'react' -import Button from 'jsx-entry' -import Dummy from './components/Dummy?qs-should-not-break-plugin-react' -import Parent from './hmr/parent' -import { CountProvider } from './context/CountProvider' -import { ContextButton } from './context/ContextButton' - -function App() { - const [count, setCount] = useState(0) - return ( -
-
-

Hello Vite + React

-

- -

-

- -

-

- Edit App.jsx and save to test HMR updates. -

- - Learn React - -
- - - - -
- ) -} - -function AppWithProviders() { - return ( - - - - ) -} - -export default AppWithProviders diff --git a/playground/react/__tests__/react.spec.ts b/playground/react/__tests__/react.spec.ts deleted file mode 100644 index 26eb59b5d79b7e..00000000000000 --- a/playground/react/__tests__/react.spec.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { expect, test } from 'vitest' -import { - editFile, - isBuild, - isServe, - page, - untilBrowserLogAfter, - untilUpdated -} from '~utils' - -test('should render', async () => { - expect(await page.textContent('h1')).toMatch('Hello Vite + React') -}) - -test('should update', async () => { - expect(await page.textContent('#state-button')).toMatch('count is: 0') - await page.click('#state-button') - expect(await page.textContent('#state-button')).toMatch('count is: 1') -}) - -test('should hmr', async () => { - editFile('App.jsx', (code) => code.replace('Vite + React', 'Updated')) - await untilUpdated(() => page.textContent('h1'), 'Hello Updated') - // preserve state - expect(await page.textContent('#state-button')).toMatch('count is: 1') -}) - -test.runIf(isServe)( - 'should have annotated jsx with file location metadata', - async () => { - const meta = await page.evaluate(() => { - const button = document.querySelector('#state-button') - const key = Object.keys(button).find( - (key) => key.indexOf('__reactFiber') === 0 - ) - return button[key]._debugSource - }) - // If the evaluate call doesn't crash, and the returned metadata has - // the expected fields, we're good. - expect(Object.keys(meta).sort()).toEqual([ - 'columnNumber', - 'fileName', - 'lineNumber' - ]) - } -) - -if (!isBuild) { - // #9869 - test('should only hmr files with exported react components', async () => { - await untilBrowserLogAfter( - () => - editFile('hmr/no-exported-comp.jsx', (code) => - code.replace('An Object', 'Updated') - ), - [ - '[vite] invalidate /hmr/no-exported-comp.jsx', - '[vite] hot updated: /hmr/no-exported-comp.jsx', - '[vite] hot updated: /hmr/parent.jsx', - 'Parent rendered' - ], - true - ) - await untilUpdated(() => page.textContent('#parent'), 'Updated') - }) - - // #3301 - test('should hmr react context', async () => { - expect(await page.textContent('#context-button')).toMatch( - 'context-based count is: 0' - ) - await page.click('#context-button') - expect(await page.textContent('#context-button')).toMatch( - 'context-based count is: 1' - ) - - await untilBrowserLogAfter( - () => - editFile('context/CountProvider.jsx', (code) => - code.replace('context provider', 'context provider updated') - ), - [ - '[vite] invalidate /context/CountProvider.jsx', - '[vite] hot updated: /context/CountProvider.jsx', - '[vite] hot updated: /App.jsx', - '[vite] hot updated: /context/ContextButton.jsx', - 'Parent rendered' - ], - true - ) - await untilUpdated( - () => page.textContent('#context-provider'), - 'context provider updated' - ) - }) -} diff --git a/playground/react/components/Dummy.jsx b/playground/react/components/Dummy.jsx deleted file mode 100644 index 27ec3c21de30fd..00000000000000 --- a/playground/react/components/Dummy.jsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function Dummy() { - return <> -} diff --git a/playground/react/context/ContextButton.jsx b/playground/react/context/ContextButton.jsx deleted file mode 100644 index 92c6d0bd26f968..00000000000000 --- a/playground/react/context/ContextButton.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import { useContext } from 'react' -import { CountContext } from './CountProvider' - -export function ContextButton() { - const { count, setCount } = useContext(CountContext) - return ( - - ) -} diff --git a/playground/react/context/CountProvider.jsx b/playground/react/context/CountProvider.jsx deleted file mode 100644 index 223ad25f04f056..00000000000000 --- a/playground/react/context/CountProvider.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import { createContext, useState } from 'react' -export const CountContext = createContext() - -export const CountProvider = ({ children }) => { - const [count, setCount] = useState(0) - return ( - - {children} -
context provider
-
- ) -} diff --git a/playground/react/hmr/no-exported-comp.jsx b/playground/react/hmr/no-exported-comp.jsx deleted file mode 100644 index 7784bcb50603a9..00000000000000 --- a/playground/react/hmr/no-exported-comp.jsx +++ /dev/null @@ -1,7 +0,0 @@ -// This un-exported react component should not cause this file to be treated -// as an HMR boundary -const Unused = () => An unused react component - -export const Foo = { - is: 'An Object' -} diff --git a/playground/react/hmr/parent.jsx b/playground/react/hmr/parent.jsx deleted file mode 100644 index ff8698281c83c7..00000000000000 --- a/playground/react/hmr/parent.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import { Foo } from './no-exported-comp' - -export default function Parent() { - console.log('Parent rendered') - - return
{Foo.is}
-} diff --git a/playground/react/index.html b/playground/react/index.html deleted file mode 100644 index f0015ceb9829a3..00000000000000 --- a/playground/react/index.html +++ /dev/null @@ -1,10 +0,0 @@ -
- diff --git a/playground/react/jsx-entry/Button.jsx b/playground/react/jsx-entry/Button.jsx deleted file mode 100644 index 4f7f2b91a7dd8b..00000000000000 --- a/playground/react/jsx-entry/Button.jsx +++ /dev/null @@ -1,5 +0,0 @@ -const Button = ({ children }) => { - return -} - -export default Button diff --git a/playground/react/jsx-entry/package.json b/playground/react/jsx-entry/package.json deleted file mode 100644 index 4bfa33570ce162..00000000000000 --- a/playground/react/jsx-entry/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "jsx-entry", - "private": true, - "version": "0.0.0", - "main": "Button.jsx" -} diff --git a/playground/react/package.json b/playground/react/package.json deleted file mode 100644 index e9a9f242a46248..00000000000000 --- a/playground/react/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test-react", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "dependencies": { - "jsx-entry": "file:./jsx-entry", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@vitejs/plugin-react": "^3.0.0-alpha.0" - }, - "babel": { - "presets": [ - "@babel/preset-env" - ] - } -} diff --git a/playground/react/vite.config.ts b/playground/react/vite.config.ts deleted file mode 100644 index cd4aaee2d3432c..00000000000000 --- a/playground/react/vite.config.ts +++ /dev/null @@ -1,13 +0,0 @@ -import react from '@vitejs/plugin-react' -import type { UserConfig } from 'vite' - -const config: UserConfig = { - mode: 'development', - plugins: [react()], - build: { - // to make tests faster - minify: false - } -} - -export default config diff --git a/playground/ssr-react/__tests__/serve.ts b/playground/ssr-react/__tests__/serve.ts deleted file mode 100644 index df23d4f0661c4c..00000000000000 --- a/playground/ssr-react/__tests__/serve.ts +++ /dev/null @@ -1,70 +0,0 @@ -// this is automatically detected by playground/vitestSetup.ts and will replace -// the default e2e test serve behavior - -import path from 'node:path' -import kill from 'kill-port' -import { hmrPorts, isBuild, ports, rootDir } from '~utils' - -export const port = ports['ssr-react'] - -export async function serve(): Promise<{ close(): Promise }> { - if (isBuild) { - // build first - const { build } = await import('vite') - // client build - await build({ - root: rootDir, - logLevel: 'silent', // exceptions are logged by Vitest - build: { - target: 'esnext', - minify: false, - ssrManifest: true, - outDir: 'dist/client' - } - }) - // server build - await build({ - root: rootDir, - logLevel: 'silent', - build: { - target: 'esnext', - ssr: 'src/entry-server.jsx', - outDir: 'dist/server', - rollupOptions: { - output: { - entryFileNames: 'entry-server.js' - } - } - } - }) - } - - await kill(port) - - const { createServer } = await import(path.resolve(rootDir, 'server.js')) - const { app, vite } = await createServer( - rootDir, - isBuild, - hmrPorts['ssr-react'] - ) - - return new Promise((resolve, reject) => { - try { - const server = app.listen(port, () => { - resolve({ - // for test teardown - async close() { - await new Promise((resolve) => { - server.close(resolve) - }) - if (vite) { - await vite.close() - } - } - }) - }) - } catch (e) { - reject(e) - } - }) -} diff --git a/playground/ssr-react/__tests__/ssr-react.spec.ts b/playground/ssr-react/__tests__/ssr-react.spec.ts deleted file mode 100644 index 111a52aa5537ae..00000000000000 --- a/playground/ssr-react/__tests__/ssr-react.spec.ts +++ /dev/null @@ -1,77 +0,0 @@ -import fetch from 'node-fetch' -import { expect, test } from 'vitest' -import { port } from './serve' -import { - browserLogs, - editFile, - page, - untilBrowserLogAfter, - untilUpdated -} from '~utils' - -const url = `http://localhost:${port}` - -test('/env', async () => { - await untilBrowserLogAfter(() => page.goto(url + '/env'), 'hydrated') - - expect(await page.textContent('h1')).toMatch('default message here') - - // raw http request - const envHtml = await (await fetch(url + '/env')).text() - expect(envHtml).toMatch('API_KEY_qwertyuiop') -}) - -test('/about', async () => { - await untilBrowserLogAfter(() => page.goto(url + '/about'), 'hydrated') - - expect(await page.textContent('h1')).toMatch('About') - // should not have hydration mismatch - browserLogs.forEach((msg) => { - expect(msg).not.toMatch('Expected server HTML') - }) - - // raw http request - const aboutHtml = await (await fetch(url + '/about')).text() - expect(aboutHtml).toMatch('About') -}) - -test('/', async () => { - await untilBrowserLogAfter(() => page.goto(url), 'hydrated') - - expect(await page.textContent('h1')).toMatch('Home') - // should not have hydration mismatch - browserLogs.forEach((msg) => { - expect(msg).not.toMatch('Expected server HTML') - }) - - // raw http request - const html = await (await fetch(url)).text() - expect(html).toMatch('Home') -}) - -test('hmr', async () => { - await page.goto(url) - editFile('src/pages/Home.jsx', (code) => - code.replace('

Home', '

changed') - ) - await untilUpdated(() => page.textContent('h1'), 'changed') -}) - -test('client navigation', async () => { - await untilBrowserLogAfter(() => page.goto(url), 'hydrated') - - await untilUpdated(() => page.textContent('a[href="/about"]'), 'About') - await page.click('a[href="/about"]') - await untilUpdated(() => page.textContent('h1'), 'About') - editFile('src/pages/About.jsx', (code) => - code.replace('

About', '

changed') - ) - await untilUpdated(() => page.textContent('h1'), 'changed') -}) - -test(`circular dependencies modules doesn't throw`, async () => { - await page.goto(url) - expect(await page.textContent('.circ-dep-init')).toMatch( - 'circ-dep-init-a circ-dep-init-b' - ) -}) diff --git a/playground/ssr-react/index.html b/playground/ssr-react/index.html deleted file mode 100644 index 1c891c04355068..00000000000000 --- a/playground/ssr-react/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Vite App - - -
- - - diff --git a/playground/ssr-react/package.json b/playground/ssr-react/package.json deleted file mode 100644 index f9419fcc53b731..00000000000000 --- a/playground/ssr-react/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "test-ssr-react", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "node server", - "build": "npm run build:client && npm run build:server", - "build:client": "vite build --outDir dist/client", - "build:server": "vite build --ssr src/entry-server.jsx --outDir dist/server", - "generate": "vite build --outDir dist/static && npm run build:server && node prerender", - "serve": "NODE_ENV=production node server", - "debug": "node --inspect-brk server" - }, - "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.4.3" - }, - "devDependencies": { - "@vitejs/plugin-react": "^3.0.0-alpha.0", - "compression": "^1.7.4", - "express": "^4.18.2", - "serve-static": "^1.15.0" - } -} diff --git a/playground/ssr-react/prerender.js b/playground/ssr-react/prerender.js deleted file mode 100644 index 8a18a492ab138c..00000000000000 --- a/playground/ssr-react/prerender.js +++ /dev/null @@ -1,34 +0,0 @@ -// Pre-render the app into static HTML. -// run `yarn generate` and then `dist/static` can be served as a static site. - -import fs from 'node:fs' -import path from 'node:path' -import { fileURLToPath } from 'node:url' - -const __dirname = path.dirname(fileURLToPath(import.meta.url)) -const toAbsolute = (p) => path.resolve(__dirname, p) - -const template = fs.readFileSync(toAbsolute('dist/static/index.html'), 'utf-8') -const { render } = await import('./dist/server/entry-server.js') - -// determine routes to pre-render from src/pages -const routesToPrerender = fs - .readdirSync(toAbsolute('src/pages')) - .map((file) => { - const name = file.replace(/\.jsx$/, '').toLowerCase() - return name === 'home' ? `/` : `/${name}` - }) - -;(async () => { - // pre-render each route... - for (const url of routesToPrerender) { - const context = {} - const appHtml = await render(url, context) - - const html = template.replace(``, appHtml) - - const filePath = `dist/static${url === '/' ? '/index' : url}.html` - fs.writeFileSync(toAbsolute(filePath), html) - console.log('pre-rendered:', filePath) - } -})() diff --git a/playground/ssr-react/server.js b/playground/ssr-react/server.js deleted file mode 100644 index 2f878092c8eb1b..00000000000000 --- a/playground/ssr-react/server.js +++ /dev/null @@ -1,103 +0,0 @@ -import fs from 'node:fs' -import path from 'node:path' -import { fileURLToPath } from 'node:url' -import express from 'express' - -const __dirname = path.dirname(fileURLToPath(import.meta.url)) - -const isTest = process.env.VITEST - -process.env.MY_CUSTOM_SECRET = 'API_KEY_qwertyuiop' - -export async function createServer( - root = process.cwd(), - isProd = process.env.NODE_ENV === 'production', - hmrPort -) { - const resolve = (p) => path.resolve(__dirname, p) - - const indexProd = isProd - ? fs.readFileSync(resolve('dist/client/index.html'), 'utf-8') - : '' - - const app = express() - - /** - * @type {import('vite').ViteDevServer} - */ - let vite - if (!isProd) { - vite = await ( - await import('vite') - ).createServer({ - root, - logLevel: isTest ? 'error' : 'info', - server: { - middlewareMode: true, - watch: { - // During tests we edit the files too fast and sometimes chokidar - // misses change events, so enforce polling for consistency - usePolling: true, - interval: 100 - }, - hmr: { - port: hmrPort - } - }, - appType: 'custom' - }) - // use vite's connect instance as middleware - app.use(vite.middlewares) - } else { - app.use((await import('compression')).default()) - app.use( - (await import('serve-static')).default(resolve('dist/client'), { - index: false - }) - ) - } - - app.use('*', async (req, res) => { - try { - const url = req.originalUrl - - let template, render - if (!isProd) { - // always read fresh template in dev - template = fs.readFileSync(resolve('index.html'), 'utf-8') - template = await vite.transformIndexHtml(url, template) - render = (await vite.ssrLoadModule('/src/entry-server.jsx')).render - } else { - template = indexProd - // @ts-ignore - render = (await import('./dist/server/entry-server.js')).render - } - - const context = {} - const appHtml = render(url, context) - - if (context.url) { - // Somewhere a `` was rendered - return res.redirect(301, context.url) - } - - const html = template.replace(``, appHtml) - - res.status(200).set({ 'Content-Type': 'text/html' }).end(html) - } catch (e) { - !isProd && vite.ssrFixStacktrace(e) - console.log(e.stack) - res.status(500).end(e.stack) - } - }) - - return { app, vite } -} - -if (!isTest) { - createServer().then(({ app }) => - app.listen(5173, () => { - console.log('http://localhost:5173') - }) - ) -} diff --git a/playground/ssr-react/src/App.jsx b/playground/ssr-react/src/App.jsx deleted file mode 100644 index 6be6af9a8fb0ab..00000000000000 --- a/playground/ssr-react/src/App.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import { Link, Route, Routes } from 'react-router-dom' - -// Auto generates routes from files under ./pages -// https://vitejs.dev/guide/features.html#glob-import -const pages = import.meta.glob('./pages/*.jsx', { eager: true }) - -const routes = Object.keys(pages).map((path) => { - const name = path.match(/\.\/pages\/(.*)\.jsx$/)[1] - return { - name, - path: name === 'Home' ? '/' : `/${name.toLowerCase()}`, - component: pages[path].default - } -}) - -export function App() { - return ( - <> - - - {routes.map(({ path, component: RouteComp }) => { - return }> - })} - - - ) -} diff --git a/playground/ssr-react/src/add.js b/playground/ssr-react/src/add.js deleted file mode 100644 index a0e419e9cfcacf..00000000000000 --- a/playground/ssr-react/src/add.js +++ /dev/null @@ -1,9 +0,0 @@ -import { multiply } from './multiply' - -export function add(a, b) { - return a + b -} - -export function addAndMultiply(a, b, c) { - return multiply(add(a, b), c) -} diff --git a/playground/ssr-react/src/circular-dep-init/README.md b/playground/ssr-react/src/circular-dep-init/README.md deleted file mode 100644 index 864d16ae8c495b..00000000000000 --- a/playground/ssr-react/src/circular-dep-init/README.md +++ /dev/null @@ -1 +0,0 @@ -This test aim to find out wherever the modules with circular dependencies are correctly initialized diff --git a/playground/ssr-react/src/circular-dep-init/circular-dep-init.js b/playground/ssr-react/src/circular-dep-init/circular-dep-init.js deleted file mode 100644 index 8867d64ec45091..00000000000000 --- a/playground/ssr-react/src/circular-dep-init/circular-dep-init.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './module-a' -export { getValueAB } from './module-b' diff --git a/playground/ssr-react/src/circular-dep-init/module-a.js b/playground/ssr-react/src/circular-dep-init/module-a.js deleted file mode 100644 index 335b3ac26ab3b5..00000000000000 --- a/playground/ssr-react/src/circular-dep-init/module-a.js +++ /dev/null @@ -1 +0,0 @@ -export const valueA = 'circ-dep-init-a' diff --git a/playground/ssr-react/src/circular-dep-init/module-b.js b/playground/ssr-react/src/circular-dep-init/module-b.js deleted file mode 100644 index cb16d7e9be4a30..00000000000000 --- a/playground/ssr-react/src/circular-dep-init/module-b.js +++ /dev/null @@ -1,8 +0,0 @@ -import { valueA } from './circular-dep-init' - -export const valueB = 'circ-dep-init-b' -export const valueAB = valueA.concat(` ${valueB}`) - -export function getValueAB() { - return valueAB -} diff --git a/playground/ssr-react/src/entry-client.jsx b/playground/ssr-react/src/entry-client.jsx deleted file mode 100644 index 703199443d9cca..00000000000000 --- a/playground/ssr-react/src/entry-client.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import ReactDOM from 'react-dom/client' -import { BrowserRouter } from 'react-router-dom' -import { App } from './App' - -ReactDOM.hydrateRoot( - document.getElementById('app'), - - - -) -console.log('hydrated') diff --git a/playground/ssr-react/src/entry-server.jsx b/playground/ssr-react/src/entry-server.jsx deleted file mode 100644 index ea1b86aebd4716..00000000000000 --- a/playground/ssr-react/src/entry-server.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import ReactDOMServer from 'react-dom/server' -import { StaticRouter } from 'react-router-dom/server' -import { App } from './App' - -export function render(url, context) { - return ReactDOMServer.renderToString( - - - - ) -} diff --git a/playground/ssr-react/src/forked-deadlock/README.md b/playground/ssr-react/src/forked-deadlock/README.md deleted file mode 100644 index 798c8c429ee9e4..00000000000000 --- a/playground/ssr-react/src/forked-deadlock/README.md +++ /dev/null @@ -1,51 +0,0 @@ -This test aim to check for a particular type of circular dependency that causes tricky deadlocks, **deadlocks with forked imports stack** - -``` -A -> B means: B is imported by A and B has A in its stack -A ... B means: A is waiting for B to ssrLoadModule() - -H -> X ... Y -H -> X -> Y ... B -H -> A ... B -H -> A -> B ... X -``` - -### Forked deadlock description: - -``` -[X] is waiting for [Y] to resolve - ↑ ↳ is waiting for [A] to resolve - │ ↳ is waiting for [B] to resolve - │ ↳ is waiting for [X] to resolve - └────────────────────────────────────────────────────────────────────────┘ -``` - -This may seems a traditional deadlock, but the thing that makes this special is the import stack of each module: - -``` -[X] stack: - [H] -``` - -``` -[Y] stack: - [X] - [H] -``` - -``` -[A] stack: - [H] -``` - -``` -[B] stack: - [A] - [H] -``` - -Even if `[X]` is imported by `[B]`, `[B]` is not in `[X]`'s stack because it's imported by `[H]` in first place then it's stack is only composed by `[H]`. `[H]` **forks** the imports **stack** and this make hard to be found. - -### Fix description - -Vite, when imports `[X]`, should check whether `[X]` is already pending and if it is, it must check that, when it was imported in first place, the stack of `[X]` doesn't have any module in common with the current module; in this case `[B]` has the module `[H]` is common with `[X]` and i can assume that a deadlock is going to happen. diff --git a/playground/ssr-react/src/forked-deadlock/common-module.js b/playground/ssr-react/src/forked-deadlock/common-module.js deleted file mode 100644 index c73a3ee4b970c8..00000000000000 --- a/playground/ssr-react/src/forked-deadlock/common-module.js +++ /dev/null @@ -1,10 +0,0 @@ -import { stuckModuleExport } from './stuck-module' -import { deadlockfuseModuleExport } from './deadlock-fuse-module' - -/** - * module H - */ -export function commonModuleExport() { - stuckModuleExport() - deadlockfuseModuleExport() -} diff --git a/playground/ssr-react/src/forked-deadlock/deadlock-fuse-module.js b/playground/ssr-react/src/forked-deadlock/deadlock-fuse-module.js deleted file mode 100644 index 4f31763ba2343f..00000000000000 --- a/playground/ssr-react/src/forked-deadlock/deadlock-fuse-module.js +++ /dev/null @@ -1,8 +0,0 @@ -import { fuseStuckBridgeModuleExport } from './fuse-stuck-bridge-module' - -/** - * module A - */ -export function deadlockfuseModuleExport() { - fuseStuckBridgeModuleExport() -} diff --git a/playground/ssr-react/src/forked-deadlock/fuse-stuck-bridge-module.js b/playground/ssr-react/src/forked-deadlock/fuse-stuck-bridge-module.js deleted file mode 100644 index 211ad7c3bc9f92..00000000000000 --- a/playground/ssr-react/src/forked-deadlock/fuse-stuck-bridge-module.js +++ /dev/null @@ -1,8 +0,0 @@ -import { stuckModuleExport } from './stuck-module' - -/** - * module C - */ -export function fuseStuckBridgeModuleExport() { - stuckModuleExport() -} diff --git a/playground/ssr-react/src/forked-deadlock/middle-module.js b/playground/ssr-react/src/forked-deadlock/middle-module.js deleted file mode 100644 index 0632eedeabd7a5..00000000000000 --- a/playground/ssr-react/src/forked-deadlock/middle-module.js +++ /dev/null @@ -1,8 +0,0 @@ -import { deadlockfuseModuleExport } from './deadlock-fuse-module' - -/** - * module Y - */ -export function middleModuleExport() { - void deadlockfuseModuleExport -} diff --git a/playground/ssr-react/src/forked-deadlock/stuck-module.js b/playground/ssr-react/src/forked-deadlock/stuck-module.js deleted file mode 100644 index 50b4d28063dc70..00000000000000 --- a/playground/ssr-react/src/forked-deadlock/stuck-module.js +++ /dev/null @@ -1,8 +0,0 @@ -import { middleModuleExport } from './middle-module' - -/** - * module X - */ -export function stuckModuleExport() { - middleModuleExport() -} diff --git a/playground/ssr-react/src/multiply.js b/playground/ssr-react/src/multiply.js deleted file mode 100644 index 94f43efbff58bd..00000000000000 --- a/playground/ssr-react/src/multiply.js +++ /dev/null @@ -1,9 +0,0 @@ -import { add } from './add' - -export function multiply(a, b) { - return a * b -} - -export function multiplyAndAdd(a, b, c) { - return add(multiply(a, b), c) -} diff --git a/playground/ssr-react/src/pages/About.jsx b/playground/ssr-react/src/pages/About.jsx deleted file mode 100644 index 0fe4de69078504..00000000000000 --- a/playground/ssr-react/src/pages/About.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import { addAndMultiply } from '../add' -import { multiplyAndAdd } from '../multiply' - -export default function About() { - return ( - <> -

About

-
{addAndMultiply(1, 2, 3)}
-
{multiplyAndAdd(1, 2, 3)}
- - ) -} diff --git a/playground/ssr-react/src/pages/Env.jsx b/playground/ssr-react/src/pages/Env.jsx deleted file mode 100644 index 1102990f11c8cb..00000000000000 --- a/playground/ssr-react/src/pages/Env.jsx +++ /dev/null @@ -1,7 +0,0 @@ -export default function Env() { - let msg = 'default message here' - try { - msg = process.env.MY_CUSTOM_SECRET || msg - } catch {} - return

{msg}

-} diff --git a/playground/ssr-react/src/pages/Home.jsx b/playground/ssr-react/src/pages/Home.jsx deleted file mode 100644 index d1f4944810cc98..00000000000000 --- a/playground/ssr-react/src/pages/Home.jsx +++ /dev/null @@ -1,17 +0,0 @@ -import { addAndMultiply } from '../add' -import { multiplyAndAdd } from '../multiply' -import { commonModuleExport } from '../forked-deadlock/common-module' -import { getValueAB } from '../circular-dep-init/circular-dep-init' - -export default function Home() { - commonModuleExport() - - return ( - <> -

Home

-
{addAndMultiply(1, 2, 3)}
-
{multiplyAndAdd(1, 2, 3)}
-
{getValueAB()}
- - ) -} diff --git a/playground/ssr-react/vite.config.js b/playground/ssr-react/vite.config.js deleted file mode 100644 index 676c52ac687f59..00000000000000 --- a/playground/ssr-react/vite.config.js +++ /dev/null @@ -1,9 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -export default defineConfig({ - plugins: [react()], - build: { - minify: false - } -}) diff --git a/playground/ssr-vue/__tests__/fixtures/ssrModuleLoader-bad.js b/playground/ssr-vue/__tests__/fixtures/ssrModuleLoader-bad.js deleted file mode 100644 index a51a0519d34003..00000000000000 --- a/playground/ssr-vue/__tests__/fixtures/ssrModuleLoader-bad.js +++ /dev/null @@ -1,2 +0,0 @@ -export const bad = 1 -throw new Error('it is an expected error') diff --git a/playground/ssr-vue/__tests__/serve.ts b/playground/ssr-vue/__tests__/serve.ts deleted file mode 100644 index e03810017bc04e..00000000000000 --- a/playground/ssr-vue/__tests__/serve.ts +++ /dev/null @@ -1,71 +0,0 @@ -// this is automatically detected by playground/vitestSetup.ts and will replace -// the default e2e test serve behavior - -import path from 'node:path' -import kill from 'kill-port' -import type { ViteDevServer } from 'vite' -import { hmrPorts, isBuild, ports, rootDir } from '~utils' - -export const port = ports['ssr-vue'] - -export let viteServer: ViteDevServer - -export async function serve(): Promise<{ close(): Promise }> { - if (isBuild) { - // build first - const { build } = await import('vite') - // client build - await build({ - base: '/test/', - root: rootDir, - logLevel: 'silent', // exceptions are logged by Vitest - build: { - target: 'esnext', - minify: false, - ssrManifest: true, - outDir: 'dist/client' - } - }) - // server build - await build({ - base: '/test/', - root: rootDir, - logLevel: 'silent', - build: { - target: 'esnext', - ssr: 'src/entry-server.js', - outDir: 'dist/server' - } - }) - } - - await kill(port) - - const { createServer } = await import(path.resolve(rootDir, 'server.js')) - const { app, vite } = await createServer( - rootDir, - isBuild, - hmrPorts['ssr-vue'] - ) - viteServer = vite - - return new Promise((resolve, reject) => { - try { - const server = app.listen(port, () => { - resolve({ - // for test teardown - async close() { - await new Promise((resolve) => { - server.close(resolve) - }) - if (vite) { - await vite.close() - } - } - }) - }) - } catch (e) { - reject(e) - } - }) -} diff --git a/playground/ssr-vue/__tests__/ssr-vue.spec.ts b/playground/ssr-vue/__tests__/ssr-vue.spec.ts deleted file mode 100644 index 19f684e2ca48d0..00000000000000 --- a/playground/ssr-vue/__tests__/ssr-vue.spec.ts +++ /dev/null @@ -1,247 +0,0 @@ -import { resolve } from 'node:path' -import { fileURLToPath } from 'node:url' -import fetch from 'node-fetch' -import { expect, test, vi } from 'vitest' -import { port } from './serve' -import { - browserLogs, - editFile, - getColor, - isBuild, - page, - untilBrowserLogAfter, - untilUpdated, - viteServer -} from '~utils' - -const url = `http://localhost:${port}/test/` - -test('vuex can be import succeed by named import', async () => { - // wait networkidle for dynamic optimize vuex - await page.goto(url + 'store', { waitUntil: 'networkidle' }) - expect(await page.textContent('h1')).toMatch('bar') - - // raw http request - const storeHtml = await (await fetch(url + 'store')).text() - expect(storeHtml).toMatch('bar') -}) - -test('/about', async () => { - await untilBrowserLogAfter(() => page.goto(url + 'about'), 'hydrated') - - expect(await page.textContent('h1')).toMatch('About') - // should not have hydration mismatch - browserLogs.forEach((msg) => { - expect(msg).not.toMatch('mismatch') - }) - - // fetch sub route - const aboutHtml = await (await fetch(url + 'about')).text() - expect(aboutHtml).toMatch('About') - if (isBuild) { - // assert correct preload directive generation for async chunks and CSS - expect(aboutHtml).not.toMatch( - /link rel="modulepreload".*?href="\/test\/assets\/Home-\w{8}\.js"/ - ) - expect(aboutHtml).not.toMatch( - /link rel="stylesheet".*?href="\/test\/assets\/Home-\w{8}\.css"/ - ) - expect(aboutHtml).toMatch( - /link rel="modulepreload".*?href="\/test\/assets\/About-\w{8}\.js"/ - ) - expect(aboutHtml).toMatch( - /link rel="stylesheet".*?href="\/test\/assets\/About-\w{8}\.css"/ - ) - } -}) - -test('/external', async () => { - await untilBrowserLogAfter(() => page.goto(url + 'external'), 'hydrated') - - expect(await page.textContent('div')).toMatch( - 'Example external component content' - ) - // should not have hydration mismatch - browserLogs.forEach((msg) => { - expect(msg).not.toMatch('mismatch') - }) - - // fetch sub route - const externalHtml = await (await fetch(url + 'external')).text() - expect(externalHtml).toMatch('Example external component content') - if (isBuild) { - // assert correct preload directive generation for async chunks and CSS - expect(externalHtml).not.toMatch( - /link rel="modulepreload".*?href="\/test\/assets\/Home-\w{8}\.js"/ - ) - expect(externalHtml).not.toMatch( - /link rel="stylesheet".*?href="\/test\/assets\/Home-\w{8}\.css"/ - ) - expect(externalHtml).toMatch( - /link rel="modulepreload".*?href="\/test\/assets\/External-\w{8}\.js"/ - ) - } -}) - -test('/', async () => { - await untilBrowserLogAfter(() => page.goto(url), 'hydrated') - - expect(await page.textContent('h1')).toMatch('Home') - // should not have hydration mismatch - browserLogs.forEach((msg) => { - expect(msg).not.toMatch('mismatch') - }) - - const html = await (await fetch(url)).text() - expect(html).toMatch('Home') - if (isBuild) { - // assert correct preload directive generation for async chunks and CSS - expect(html).toMatch( - /link rel="modulepreload".*?href="\/test\/assets\/Home-\w{8}\.js"/ - ) - expect(html).toMatch( - /link rel="stylesheet".*?href="\/test\/assets\/Home-\w{8}\.css"/ - ) - // JSX component preload registration - expect(html).toMatch( - /link rel="modulepreload".*?href="\/test\/assets\/Foo-\w{8}\.js"/ - ) - expect(html).toMatch( - /link rel="stylesheet".*?href="\/test\/assets\/Foo-\w{8}\.css"/ - ) - expect(html).not.toMatch( - /link rel="modulepreload".*?href="\/test\/assets\/About-\w{8}\.js"/ - ) - expect(html).not.toMatch( - /link rel="stylesheet".*?href="\/test\/assets\/About-\w{8}\.css"/ - ) - } -}) - -test('css', async () => { - await page.goto(url) - if (isBuild) { - expect(await getColor('h1')).toBe('green') - expect(await getColor('.jsx')).toBe('blue') - } else { - // During dev, the CSS is loaded from async chunk and we may have to wait - // when the test runs concurrently. - await untilUpdated(() => getColor('h1'), 'green') - await untilUpdated(() => getColor('.jsx'), 'blue') - } -}) - -test('asset', async () => { - await page.goto(url) - // should have no 404s - browserLogs.forEach((msg) => { - expect(msg).not.toMatch('404') - }) - const img = await page.$('img') - expect(await img.getAttribute('src')).toMatch( - isBuild ? /\/test\/assets\/logo-\w{8}\.png/ : '/src/assets/logo.png' - ) -}) - -test('jsx', async () => { - await page.goto(url) - expect(await page.textContent('.jsx')).toMatch('from JSX') -}) - -test('virtual module', async () => { - await page.goto(url) - expect(await page.textContent('.virtual')).toMatch('hi') -}) - -test('nested virtual module', async () => { - await page.goto(url) - expect(await page.textContent('.nested-virtual')).toMatch('[success]') -}) - -test('hydration', async () => { - await untilBrowserLogAfter(() => page.goto(url), 'hydrated') - - expect(await page.textContent('button')).toMatch('0') - await page.click('button') - expect(await page.textContent('button')).toMatch('1') -}) - -test( - 'hmr', - async () => { - // This is test is flaky in Mac CI, but can't be reproduced locally. Wait until - // network idle to avoid the issue. TODO: This may be caused by a bug when - // modifying a file while loading, we should remove this guard - await page.goto(url, { waitUntil: 'networkidle' }) - editFile('src/pages/Home.vue', (code) => code.replace('Home', 'changed')) - await untilUpdated(() => page.textContent('h1'), 'changed') - }, - { retry: 3 } -) - -test('client navigation', async () => { - await untilBrowserLogAfter(() => page.goto(url), 'hydrated') - - await untilUpdated(() => page.textContent('a[href="/test/about"]'), 'About') - await page.click('a[href="/test/about"]') - await untilUpdated(() => page.textContent('h1'), 'About') - editFile('src/pages/About.vue', (code) => code.replace('About', 'changed')) - await untilUpdated(() => page.textContent('h1'), 'changed') - await page.click('a[href="/test/"]') - await untilUpdated(() => page.textContent('a[href="/test/"]'), 'Home') -}) - -test('import.meta.url', async () => { - await page.goto(url) - expect(await page.textContent('.protocol')).toEqual('file:') -}) - -test.runIf(isBuild)('dynamic css file should be preloaded', async () => { - await page.goto(url) - const homeHtml = await (await fetch(url)).text() - const re = - /link rel="modulepreload".*?href="\/test\/assets\/(Home-\w{8}\.js)"/ - const filename = re.exec(homeHtml)[1] - const manifest = ( - await import( - resolve( - process.cwd(), - './playground-temp/ssr-vue/dist/client/ssr-manifest.json' - ) - ) - ).default - const depFile = manifest[filename] - for (const file of depFile) { - expect(homeHtml).toMatch(file) - } -}) - -test.runIf(!isBuild)( - 'always throw error when evaluating an wrong SSR module', - async () => { - const __filename = fileURLToPath(import.meta.url) - const badjs = resolve(__filename, '../fixtures/ssrModuleLoader-bad.js') - const THROW_MESSAGE = 'it is an expected error' - - const spy = vi.spyOn(console, 'error').mockImplementation(() => {}) - const expectedErrors = [] - for (const _ of [0, 1]) { - try { - console.log(viteServer) - await viteServer.ssrLoadModule(badjs, { fixStacktrace: true }) - } catch (e) { - expectedErrors.push(e) - } - } - expect(expectedErrors).toHaveLength(2) - expect(expectedErrors[0]).toBe(expectedErrors[1]) - expectedErrors.forEach((error) => { - expect(error?.message).toContain(THROW_MESSAGE) - }) - expect(spy).toBeCalledTimes(1) - const [firstParameter] = spy.mock.calls[0] - expect(firstParameter).toContain('Error when evaluating SSR module') - expect(firstParameter).toContain(THROW_MESSAGE) - spy.mockClear() - } -) diff --git a/playground/ssr-vue/dep-import-type/deep/index.d.ts b/playground/ssr-vue/dep-import-type/deep/index.d.ts deleted file mode 100644 index 39df3b83f7e9b8..00000000000000 --- a/playground/ssr-vue/dep-import-type/deep/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export interface Foo {} diff --git a/playground/ssr-vue/dep-import-type/package.json b/playground/ssr-vue/dep-import-type/package.json deleted file mode 100644 index 935f28eb7f7157..00000000000000 --- a/playground/ssr-vue/dep-import-type/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "dep-import-type", - "private": true, - "version": "0.0.0", - "main": "index.js" -} diff --git a/playground/ssr-vue/example-external-component/ExampleExternalComponent.vue b/playground/ssr-vue/example-external-component/ExampleExternalComponent.vue deleted file mode 100644 index 55f3cea40e0399..00000000000000 --- a/playground/ssr-vue/example-external-component/ExampleExternalComponent.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/playground/ssr-vue/example-external-component/index.js b/playground/ssr-vue/example-external-component/index.js deleted file mode 100644 index 8fc72c3aee0652..00000000000000 --- a/playground/ssr-vue/example-external-component/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import ExampleExternalComponent from './ExampleExternalComponent.vue' - -export default ExampleExternalComponent diff --git a/playground/ssr-vue/example-external-component/package.json b/playground/ssr-vue/example-external-component/package.json deleted file mode 100644 index f1fd45bc5655ad..00000000000000 --- a/playground/ssr-vue/example-external-component/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "example-external-component", - "private": true, - "version": "0.0.0", - "type": "module", - "main": "index.js" -} diff --git a/playground/ssr-vue/index.html b/playground/ssr-vue/index.html deleted file mode 100644 index 17b46a2f7a2267..00000000000000 --- a/playground/ssr-vue/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - Vite App - - - -
- - - diff --git a/playground/ssr-vue/package.json b/playground/ssr-vue/package.json deleted file mode 100644 index 88fbb46811d20a..00000000000000 --- a/playground/ssr-vue/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "test-ssr-vue", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "node server", - "build": "npm run build:client && npm run build:server", - "build:noExternal": "npm run build:client && npm run build:server:noExternal", - "build:client": "vite build --ssrManifest --outDir dist/client", - "build:server": "vite build --ssr src/entry-server.js --outDir dist/server", - "build:server:noExternal": "vite build --config vite.config.noexternal.js --ssr src/entry-server.js --outDir dist/server", - "generate": "vite build --ssrManifest --outDir dist/static && npm run build:server && node prerender", - "serve": "NODE_ENV=production node server", - "debug": "node --inspect-brk server" - }, - "dependencies": { - "example-external-component": "file:example-external-component", - "pinia": "^2.0.27", - "vue": "^3.2.45", - "vue-router": "^4.1.6" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0-alpha.0", - "@vitejs/plugin-vue-jsx": "^3.0.0-alpha.0", - "compression": "^1.7.4", - "dep-import-type": "link:./dep-import-type", - "express": "^4.18.2", - "serve-static": "^1.15.0" - } -} diff --git a/playground/ssr-vue/prerender.js b/playground/ssr-vue/prerender.js deleted file mode 100644 index 97f42835a3eda6..00000000000000 --- a/playground/ssr-vue/prerender.js +++ /dev/null @@ -1,42 +0,0 @@ -// Pre-render the app into static HTML. -// run `npm run generate` and then `dist/static` can be served as a static site. - -import fs from 'node:fs' -import path from 'node:path' -import url from 'node:url' - -const __dirname = path.dirname(url.fileURLToPath(import.meta.url)) - -const toAbsolute = (p) => path.resolve(__dirname, p) - -const manifest = JSON.parse( - fs.readFileSync(toAbsolute('dist/static/ssr-manifest.json'), 'utf-8') -) -const template = fs.readFileSync(toAbsolute('dist/static/index.html'), 'utf-8') -const { render } = await import('./dist/server/entry-server.js') - -// determine routes to pre-render from src/pages -const routesToPrerender = fs - .readdirSync(toAbsolute('src/pages')) - .map((file) => { - const name = file.replace(/\.vue$/, '').toLowerCase() - return name === 'home' ? `/` : `/${name}` - }) - -;(async () => { - // pre-render each route... - for (const url of routesToPrerender) { - const [appHtml, preloadLinks] = await render(url, manifest) - - const html = template - .replace(``, preloadLinks) - .replace(``, appHtml) - - const filePath = `dist/static${url === '/' ? '/index' : url}.html` - fs.writeFileSync(toAbsolute(filePath), html) - console.log('pre-rendered:', filePath) - } - - // done, delete ssr manifest - fs.unlinkSync(toAbsolute('dist/static/ssr-manifest.json')) -})() diff --git a/playground/ssr-vue/server.js b/playground/ssr-vue/server.js deleted file mode 100644 index 18cedbce9c5ea3..00000000000000 --- a/playground/ssr-vue/server.js +++ /dev/null @@ -1,105 +0,0 @@ -// @ts-check -import fs from 'node:fs' -import path from 'node:path' -import { fileURLToPath } from 'node:url' -import express from 'express' - -const isTest = process.env.VITEST - -export async function createServer( - root = process.cwd(), - isProd = process.env.NODE_ENV === 'production', - hmrPort -) { - const __dirname = path.dirname(fileURLToPath(import.meta.url)) - const resolve = (p) => path.resolve(__dirname, p) - - const indexProd = isProd - ? fs.readFileSync(resolve('dist/client/index.html'), 'utf-8') - : '' - - const manifest = isProd - ? JSON.parse( - fs.readFileSync(resolve('dist/client/ssr-manifest.json'), 'utf-8') - ) - : {} - - const app = express() - - /** - * @type {import('vite').ViteDevServer} - */ - let vite - if (!isProd) { - vite = await ( - await import('vite') - ).createServer({ - base: '/test/', - root, - logLevel: isTest ? 'error' : 'info', - server: { - middlewareMode: true, - watch: { - // During tests we edit the files too fast and sometimes chokidar - // misses change events, so enforce polling for consistency - usePolling: true, - interval: 100 - }, - hmr: { - port: hmrPort - } - }, - appType: 'custom' - }) - // use vite's connect instance as middleware - app.use(vite.middlewares) - } else { - app.use((await import('compression')).default()) - app.use( - '/test/', - (await import('serve-static')).default(resolve('dist/client'), { - index: false - }) - ) - } - - app.use('*', async (req, res) => { - try { - const url = req.originalUrl.replace('/test/', '/') - - let template, render - if (!isProd) { - // always read fresh template in dev - template = fs.readFileSync(resolve('index.html'), 'utf-8') - template = await vite.transformIndexHtml(url, template) - render = (await vite.ssrLoadModule('/src/entry-server.js')).render - } else { - template = indexProd - // @ts-ignore - render = (await import('./dist/server/entry-server.js')).render - } - - const [appHtml, preloadLinks] = await render(url, manifest) - - const html = template - .replace(``, preloadLinks) - .replace(``, appHtml) - - res.status(200).set({ 'Content-Type': 'text/html' }).end(html) - } catch (e) { - vite && vite.ssrFixStacktrace(e) - console.log(e.stack) - res.status(500).end(e.stack) - } - }) - - return { app, vite } -} - -if (!isTest) { - createServer().then(({ app }) => - app.listen(6173, () => { - console.log('http://localhost:6173') - }) - ) -} diff --git a/playground/ssr-vue/src/App.vue b/playground/ssr-vue/src/App.vue deleted file mode 100644 index d824089ef249e4..00000000000000 --- a/playground/ssr-vue/src/App.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/playground/ssr-vue/src/assets/button.css b/playground/ssr-vue/src/assets/button.css deleted file mode 100644 index 8e1ebc58c0891f..00000000000000 --- a/playground/ssr-vue/src/assets/button.css +++ /dev/null @@ -1,15 +0,0 @@ -.btn { - background-color: #65b587; - border-radius: 8px; - border-style: none; - box-sizing: border-box; - cursor: pointer; - display: inline-block; - font-size: 14px; - font-weight: 500; - height: 40px; - line-height: 20px; - list-style: none; - outline: none; - padding: 10px 16px; -} diff --git a/playground/ssr-vue/src/assets/fonts/Inter-Italic.woff b/playground/ssr-vue/src/assets/fonts/Inter-Italic.woff deleted file mode 100644 index e7da6663fe5e471d7e102099deb33ac6328f3e6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143476 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%0A|!KM#T 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
BG1BMm;7kTaw2Bzh?{}Q(Izl1$62m^){4;&`G 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

)Rtkd4h-?W^PY_|2Cglu31zC|(I%iT1c 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 BCN}^8 diff --git a/playground/ssr-vue/src/assets/fonts/Inter-Italic.woff2 b/playground/ssr-vue/src/assets/fonts/Inter-Italic.woff2 deleted file mode 100644 index 8559dfde38986e6959897151f8b6f01127f2d0a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108172 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

- } -}) diff --git a/playground/ssr-vue/src/components/ImportType.vue b/playground/ssr-vue/src/components/ImportType.vue deleted file mode 100644 index 144d36bc34e7ec..00000000000000 --- a/playground/ssr-vue/src/components/ImportType.vue +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/playground/ssr-vue/src/components/button.js b/playground/ssr-vue/src/components/button.js deleted file mode 100644 index 3b39f53fd96c47..00000000000000 --- a/playground/ssr-vue/src/components/button.js +++ /dev/null @@ -1,16 +0,0 @@ -import { createVNode, defineComponent } from 'vue' -import '../assets/button.css' - -export default defineComponent({ - setup() { - return () => { - return createVNode( - 'div', - { - class: 'btn' - }, - 'dynamicBtn' - ) - } - } -}) diff --git a/playground/ssr-vue/src/components/foo.css b/playground/ssr-vue/src/components/foo.css deleted file mode 100644 index f8baa0d15b90d3..00000000000000 --- a/playground/ssr-vue/src/components/foo.css +++ /dev/null @@ -1,3 +0,0 @@ -.jsx { - color: blue; -} diff --git a/playground/ssr-vue/src/entry-client.js b/playground/ssr-vue/src/entry-client.js deleted file mode 100644 index a99b84f2f69a80..00000000000000 --- a/playground/ssr-vue/src/entry-client.js +++ /dev/null @@ -1,10 +0,0 @@ -import { createApp } from './main' - -const { app, router } = createApp() - -// wait until router is ready before mounting to ensure hydration match -router.isReady().then(() => { - app.mount('#app') - - console.log('hydrated') -}) diff --git a/playground/ssr-vue/src/entry-server.js b/playground/ssr-vue/src/entry-server.js deleted file mode 100644 index e44c9abd3eb114..00000000000000 --- a/playground/ssr-vue/src/entry-server.js +++ /dev/null @@ -1,69 +0,0 @@ -import { basename } from 'node:path' -import { renderToString } from 'vue/server-renderer' -import { createApp } from './main' - -export async function render(url, manifest) { - const { app, router } = createApp() - - // set the router to the desired URL before rendering - await router.push(url) - await router.isReady() - - // passing SSR context object which will be available via useSSRContext() - // @vitejs/plugin-vue injects code into a component's setup() that registers - // itself on ctx.modules. After the render, ctx.modules would contain all the - // components that have been instantiated during this render call. - const ctx = {} - const html = await renderToString(app, ctx) - - // the SSR manifest generated by Vite contains module -> chunk/asset mapping - // which we can then use to determine what files need to be preloaded for this - // request. - const preloadLinks = renderPreloadLinks(ctx.modules, manifest) - return [html, preloadLinks] -} - -function renderPreloadLinks(modules, manifest) { - let links = '' - const seen = new Set() - modules.forEach((id) => { - const files = manifest[id] - if (files) { - files.forEach((file) => { - if (!seen.has(file)) { - seen.add(file) - const filename = basename(file) - if (manifest[filename]) { - for (const depFile of manifest[filename]) { - links += renderPreloadLink(depFile) - seen.add(depFile) - } - } - links += renderPreloadLink(file) - } - }) - } - }) - return links -} - -function renderPreloadLink(file) { - if (file.endsWith('.js')) { - return `` - } else if (file.endsWith('.css')) { - return `` - } else if (file.endsWith('.woff')) { - return ` ` - } else if (file.endsWith('.woff2')) { - return ` ` - } else if (file.endsWith('.gif')) { - return ` ` - } else if (file.endsWith('.jpg') || file.endsWith('.jpeg')) { - return ` ` - } else if (file.endsWith('.png')) { - return ` ` - } else { - // TODO - return '' - } -} diff --git a/playground/ssr-vue/src/main.js b/playground/ssr-vue/src/main.js deleted file mode 100644 index d2dd1e002147fe..00000000000000 --- a/playground/ssr-vue/src/main.js +++ /dev/null @@ -1,16 +0,0 @@ -import { createPinia } from 'pinia' -import { createSSRApp } from 'vue' -import App from './App.vue' -import { createRouter } from './router' - -// SSR requires a fresh app instance per request, therefore we export a function -// that creates a fresh app instance. If using Vuex, we'd also be creating a -// fresh store here. -export function createApp() { - const app = createSSRApp(App) - const pinia = createPinia() - app.use(pinia) - const router = createRouter() - app.use(router) - return { app, router } -} diff --git a/playground/ssr-vue/src/pages/About.vue b/playground/ssr-vue/src/pages/About.vue deleted file mode 100644 index ea6510808fd943..00000000000000 --- a/playground/ssr-vue/src/pages/About.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/playground/ssr-vue/src/pages/External.vue b/playground/ssr-vue/src/pages/External.vue deleted file mode 100644 index ffdcd03b85be84..00000000000000 --- a/playground/ssr-vue/src/pages/External.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/playground/ssr-vue/src/pages/Home.vue b/playground/ssr-vue/src/pages/Home.vue deleted file mode 100644 index 7f595e7437e600..00000000000000 --- a/playground/ssr-vue/src/pages/Home.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - - - diff --git a/playground/ssr-vue/src/pages/Store.vue b/playground/ssr-vue/src/pages/Store.vue deleted file mode 100644 index 60a19217e55645..00000000000000 --- a/playground/ssr-vue/src/pages/Store.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/playground/ssr-vue/src/router.js b/playground/ssr-vue/src/router.js deleted file mode 100644 index 814098102d7899..00000000000000 --- a/playground/ssr-vue/src/router.js +++ /dev/null @@ -1,28 +0,0 @@ -import { - createRouter as _createRouter, - createMemoryHistory, - createWebHistory -} from 'vue-router' - -// Auto generates routes from vue files under ./pages -// https://vitejs.dev/guide/features.html#glob-import -const pages = import.meta.glob('./pages/*.vue') - -const routes = Object.keys(pages).map((path) => { - const name = path.match(/\.\/pages(.*)\.vue$/)[1].toLowerCase() - return { - path: name === '/home' ? '/' : name, - component: pages[path] // () => import('./pages/*.vue') - } -}) - -export function createRouter() { - return _createRouter({ - // use appropriate history implementation for server/client - // import.meta.env.SSR is injected by Vite. - history: import.meta.env.SSR - ? createMemoryHistory('/test/') - : createWebHistory('/test/'), - routes - }) -} diff --git a/playground/ssr-vue/vite.config.js b/playground/ssr-vue/vite.config.js deleted file mode 100644 index c8be7320c8a9b0..00000000000000 --- a/playground/ssr-vue/vite.config.js +++ /dev/null @@ -1,126 +0,0 @@ -import path from 'node:path' -import { defineConfig } from 'vite' -import vuePlugin from '@vitejs/plugin-vue' -import vueJsx from '@vitejs/plugin-vue-jsx' - -const virtualFile = '@virtual-file' -const virtualId = '\0' + virtualFile -const nestedVirtualFile = '@nested-virtual-file' -const nestedVirtualId = '\0' + nestedVirtualFile - -const base = '/test/' - -// preserve this to test loading __filename & __dirname in ESM as Vite polyfills them. -// if Vite incorrectly load this file, node.js would error out. -globalThis.__vite_test_filename = __filename -globalThis.__vite_test_dirname = __dirname - -export default defineConfig(({ command, ssrBuild }) => ({ - base, - plugins: [ - vuePlugin(), - vueJsx(), - { - name: 'virtual', - resolveId(id) { - if (id === '@foo') { - return id - } - }, - load(id, options) { - const ssrFromOptions = options?.ssr ?? false - if (id === '@foo') { - // Force a mismatch error if ssrBuild is different from ssrFromOptions - return `export default { msg: '${ - command === 'build' && !!ssrBuild !== ssrFromOptions - ? `defineConfig ssrBuild !== ssr from load options` - : 'hi' - }' }` - } - } - }, - { - name: 'virtual-module', - resolveId(id) { - if (id === virtualFile) { - return virtualId - } else if (id === nestedVirtualFile) { - return nestedVirtualId - } - }, - load(id) { - if (id === virtualId) { - return `export { msg } from "@nested-virtual-file";` - } else if (id === nestedVirtualId) { - return `export const msg = "[success] from conventional virtual file"` - } - } - }, - // Example of a plugin that injects a helper from a virtual module that can - // be used in renderBuiltUrl - (function () { - const queryRE = /\?.*$/s - const hashRE = /#.*$/s - const cleanUrl = (url) => url.replace(hashRE, '').replace(queryRE, '') - let config - - const virtualId = '\0virtual:ssr-vue-built-url' - return { - name: 'built-url', - enforce: 'post', - configResolved(_config) { - config = _config - }, - resolveId(id) { - if (id === virtualId) { - return id - } - }, - load(id) { - if (id === virtualId) { - return { - code: `export const __ssr_vue_processAssetPath = (url) => '${base}' + url`, - moduleSideEffects: 'no-treeshake' - } - } - }, - transform(code, id) { - const cleanId = cleanUrl(id) - if ( - config.build.ssr && - (cleanId.endsWith('.js') || cleanId.endsWith('.vue')) && - !code.includes('__ssr_vue_processAssetPath') - ) { - return { - code: - `import { __ssr_vue_processAssetPath } from '${virtualId}';__ssr_vue_processAssetPath;` + - code, - sourcemap: null // no sourcemap support to speed up CI - } - } - } - } - })() - ], - experimental: { - renderBuiltUrl(filename, { hostType, type, ssr }) { - if (ssr && type === 'asset' && hostType === 'js') { - return { - runtime: `__ssr_vue_processAssetPath(${JSON.stringify(filename)})` - } - } - } - }, - build: { - minify: false - }, - ssr: { - noExternal: [ - // this package has uncompiled .vue files - 'example-external-component' - ] - }, - optimizeDeps: { - exclude: ['example-external-component'] - } -})) diff --git a/playground/ssr-vue/vite.config.noexternal.js b/playground/ssr-vue/vite.config.noexternal.js deleted file mode 100644 index 48a740c16cb1bf..00000000000000 --- a/playground/ssr-vue/vite.config.noexternal.js +++ /dev/null @@ -1,25 +0,0 @@ -import config from './vite.config.js' -/** - * @type {import('vite').UserConfig} - */ -export default Object.assign(config, { - ssr: { - noExternal: /./ - }, - resolve: { - // necessary because vue.ssrUtils is only exported on cjs modules - alias: [ - { - find: '@vue/runtime-dom', - replacement: '@vue/runtime-dom/dist/runtime-dom.cjs.js' - }, - { - find: '@vue/runtime-core', - replacement: '@vue/runtime-core/dist/runtime-core.cjs.js' - } - ] - }, - optimizeDeps: { - exclude: ['example-external-component'] - } -}) diff --git a/playground/test-utils.ts b/playground/test-utils.ts index a1bb4ad31dc30d..80e04bffb8bd02 100644 --- a/playground/test-utils.ts +++ b/playground/test-utils.ts @@ -26,8 +26,6 @@ export const ports = { 'ssr-html': 9601, 'ssr-noexternal': 9602, 'ssr-pug': 9603, - 'ssr-react': 9604, - 'ssr-vue': 9605, 'ssr-webworker': 9606, 'css/postcss-caching': 5005, 'css/postcss-plugins-different-dir': 5006, @@ -38,9 +36,7 @@ export const hmrPorts = { 'ssr-deps': 24681, 'ssr-html': 24682, 'ssr-noexternal': 24683, - 'ssr-pug': 24684, - 'ssr-react': 24685, - 'ssr-vue': 24686 + 'ssr-pug': 24684 } const hexToNameMap: Record = {} diff --git a/playground/vue-jsx/Comp.tsx b/playground/vue-jsx/Comp.tsx deleted file mode 100644 index fe8add4d428a2c..00000000000000 --- a/playground/vue-jsx/Comp.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { defineComponent, ref } from 'vue' - -const Default = defineComponent(() => { - const count = ref(3) - const inc = () => count.value++ - - return () => ( - - ) -}) - -export default Default diff --git a/playground/vue-jsx/Comps.jsx b/playground/vue-jsx/Comps.jsx deleted file mode 100644 index e5cc405a77581b..00000000000000 --- a/playground/vue-jsx/Comps.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import { defineComponent, ref } from 'vue' - -export const Named = defineComponent(() => { - const count = ref(0) - const inc = () => count.value++ - - return () => ( - - ) -}) - -const NamedSpec = defineComponent(() => { - const count = ref(1) - const inc = () => count.value++ - - return () => ( - - ) -}) -export { NamedSpec } - -export default defineComponent(() => { - const count = ref(2) - const inc = () => count.value++ - - return () => ( - - ) -}) diff --git a/playground/vue-jsx/OtherExt.tesx b/playground/vue-jsx/OtherExt.tesx deleted file mode 100644 index 7ae585a014c566..00000000000000 --- a/playground/vue-jsx/OtherExt.tesx +++ /dev/null @@ -1,9 +0,0 @@ -import { defineComponent } from 'vue' - -const Default = defineComponent(() => { - return () => ( -

Other Ext

- ) -}) - -export default Default diff --git a/playground/vue-jsx/Query.jsx b/playground/vue-jsx/Query.jsx deleted file mode 100644 index 60de93eafb7b1c..00000000000000 --- a/playground/vue-jsx/Query.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import { defineComponent, ref } from 'vue' - -export default defineComponent(() => { - const count = ref(6) - const inc = () => count.value++ - - return () => ( - - ) -}) diff --git a/playground/vue-jsx/Script.vue b/playground/vue-jsx/Script.vue deleted file mode 100644 index 2689ed2dfe6ffb..00000000000000 --- a/playground/vue-jsx/Script.vue +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/playground/vue-jsx/SrcImport.jsx b/playground/vue-jsx/SrcImport.jsx deleted file mode 100644 index dc775be205af73..00000000000000 --- a/playground/vue-jsx/SrcImport.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import { defineComponent, ref } from 'vue' - -export default defineComponent(() => { - const count = ref(5) - const inc = () => count.value++ - - return () => ( - - ) -}) diff --git a/playground/vue-jsx/SrcImport.vue b/playground/vue-jsx/SrcImport.vue deleted file mode 100644 index 89f6fb3eb77e2b..00000000000000 --- a/playground/vue-jsx/SrcImport.vue +++ /dev/null @@ -1 +0,0 @@ - diff --git a/playground/vue-jsx/TsImport.vue b/playground/vue-jsx/TsImport.vue deleted file mode 100644 index c63923d51947fa..00000000000000 --- a/playground/vue-jsx/TsImport.vue +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/playground/vue-jsx/TsImportFile.ts b/playground/vue-jsx/TsImportFile.ts deleted file mode 100644 index 62761d5733b432..00000000000000 --- a/playground/vue-jsx/TsImportFile.ts +++ /dev/null @@ -1 +0,0 @@ -export const foo = 'success' diff --git a/playground/vue-jsx/__tests__/vue-jsx.spec.ts b/playground/vue-jsx/__tests__/vue-jsx.spec.ts deleted file mode 100644 index 7518f4bddd7c71..00000000000000 --- a/playground/vue-jsx/__tests__/vue-jsx.spec.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { describe, expect, test } from 'vitest' -import { editFile, isServe, page, untilUpdated } from '~utils' - -test('should render', async () => { - expect(await page.textContent('.named')).toMatch('0') - expect(await page.textContent('.named-specifier')).toMatch('1') - expect(await page.textContent('.default')).toMatch('2') - expect(await page.textContent('.default-tsx')).toMatch('3') - expect(await page.textContent('.script')).toMatch('4') - expect(await page.textContent('.src-import')).toMatch('5') - expect(await page.textContent('.jsx-with-query')).toMatch('6') - expect(await page.textContent('.other-ext')).toMatch('Other Ext') - expect(await page.textContent('.ts-import')).toMatch('success') -}) - -test('should update', async () => { - await page.click('.named') - expect(await page.textContent('.named')).toMatch('1') - await page.click('.named-specifier') - expect(await page.textContent('.named-specifier')).toMatch('2') - await page.click('.default') - expect(await page.textContent('.default')).toMatch('3') - await page.click('.default-tsx') - expect(await page.textContent('.default-tsx')).toMatch('4') - await page.click('.script') - expect(await page.textContent('.script')).toMatch('5') - await page.click('.src-import') - expect(await page.textContent('.src-import')).toMatch('6') - await page.click('.jsx-with-query') - expect(await page.textContent('.jsx-with-query')).toMatch('7') -}) - -describe.runIf(isServe)('vue-jsx server', () => { - test('hmr: named export', async () => { - editFile('Comps.jsx', (code) => - code.replace('named {count', 'named updated {count') - ) - await untilUpdated(() => page.textContent('.named'), 'named updated 0') - - // affect all components in same file - expect(await page.textContent('.named-specifier')).toMatch('1') - expect(await page.textContent('.default')).toMatch('2') - // should not affect other components from different file - expect(await page.textContent('.default-tsx')).toMatch('4') - }) - - test('hmr: named export via specifier', async () => { - editFile('Comps.jsx', (code) => - code.replace('named specifier {count', 'named specifier updated {count') - ) - await untilUpdated( - () => page.textContent('.named-specifier'), - 'named specifier updated 1' - ) - - // affect all components in same file - expect(await page.textContent('.default')).toMatch('2') - // should not affect other components on the page - expect(await page.textContent('.default-tsx')).toMatch('4') - }) - - test('hmr: default export', async () => { - editFile('Comps.jsx', (code) => - code.replace('default {count', 'default updated {count') - ) - await untilUpdated(() => page.textContent('.default'), 'default updated 2') - - // should not affect other components on the page - expect(await page.textContent('.default-tsx')).toMatch('4') - }) - - test('hmr: named export via specifier', async () => { - // update another component - await page.click('.named') - expect(await page.textContent('.named')).toMatch('1') - - editFile('Comp.tsx', (code) => - code.replace('default tsx {count', 'default tsx updated {count') - ) - await untilUpdated( - () => page.textContent('.default-tsx'), - 'default tsx updated 3' - ) - - // should not affect other components on the page - expect(await page.textContent('.named')).toMatch('1') - }) - - test('hmr: script in .vue', async () => { - editFile('Script.vue', (code) => - code.replace('script {count', 'script updated {count') - ) - await untilUpdated(() => page.textContent('.script'), 'script updated 4') - - expect(await page.textContent('.src-import')).toMatch('6') - }) - - test('hmr: src import in .vue', async () => { - await page.click('.script') - editFile('SrcImport.jsx', (code) => - code.replace('src import {count', 'src import updated {count') - ) - await untilUpdated( - () => page.textContent('.src-import'), - 'src import updated 5' - ) - - expect(await page.textContent('.script')).toMatch('5') - }) - - test('hmr: setup jsx in .vue', async () => { - editFile('setup-syntax-jsx.vue', (code) => - code.replace('let count = ref(100)', 'let count = ref(1000)') - ) - await untilUpdated(() => page.textContent('.setup-jsx'), '1000') - }) -}) diff --git a/playground/vue-jsx/index.html b/playground/vue-jsx/index.html deleted file mode 100644 index a285a008c13a9e..00000000000000 --- a/playground/vue-jsx/index.html +++ /dev/null @@ -1,2 +0,0 @@ -
- diff --git a/playground/vue-jsx/main.jsx b/playground/vue-jsx/main.jsx deleted file mode 100644 index f13e60c45367c0..00000000000000 --- a/playground/vue-jsx/main.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import { createApp } from 'vue' -import { Named, NamedSpec, default as Default } from './Comps' -import { default as TsxDefault } from './Comp' -import OtherExt from './OtherExt.tesx' -import JsxScript from './Script.vue' -import JsxSrcImport from './SrcImport.vue' -import JsxSetupSyntax from './setup-syntax-jsx.vue' -// eslint-disable-next-line -import JsxWithQuery from './Query.jsx?query=true' -import TsImport from './TsImport.vue' - -function App() { - return ( - <> - - - - - - - - - - - - ) -} - -createApp(App).mount('#app') diff --git a/playground/vue-jsx/package.json b/playground/vue-jsx/package.json deleted file mode 100644 index b0d1496799223e..00000000000000 --- a/playground/vue-jsx/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "test-vue-jsx", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "dependencies": { - "vue": "^3.2.45" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0-alpha.0", - "@vitejs/plugin-vue-jsx": "^3.0.0-alpha.0" - } -} diff --git a/playground/vue-jsx/setup-syntax-jsx.vue b/playground/vue-jsx/setup-syntax-jsx.vue deleted file mode 100644 index 0b16be7e773280..00000000000000 --- a/playground/vue-jsx/setup-syntax-jsx.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/playground/vue-jsx/vite.config.js b/playground/vue-jsx/vite.config.js deleted file mode 100644 index 2f4ea255c95094..00000000000000 --- a/playground/vue-jsx/vite.config.js +++ /dev/null @@ -1,42 +0,0 @@ -const vueJsxPlugin = require('@vitejs/plugin-vue-jsx') -const vuePlugin = require('@vitejs/plugin-vue') - -/** - * @type {import('vite').UserConfig} - */ -module.exports = { - plugins: [ - vueJsxPlugin({ - include: [/\.tesx$/, /\.[jt]sx$/] - }), - vuePlugin(), - { - name: 'jsx-query-plugin', - transform(code, id) { - if (id.includes('?query=true')) { - return ` -import { createVNode as _createVNode } from "vue"; -import { defineComponent, ref } from 'vue'; -export default defineComponent(() => { - const count = ref(6); - - const inc = () => count.value++; - - return () => _createVNode("button", { - "class": "jsx-with-query", - "onClick": inc - }, [count.value]); -}); -` - } - } - } - ], - build: { - // to make tests faster - minify: false - }, - optimizeDeps: { - disabled: true - } -} diff --git a/playground/vue-legacy/Main.vue b/playground/vue-legacy/Main.vue deleted file mode 100644 index a582c2e6aa6d62..00000000000000 --- a/playground/vue-legacy/Main.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - diff --git a/playground/vue-legacy/__tests__/vue-legacy.spec.ts b/playground/vue-legacy/__tests__/vue-legacy.spec.ts deleted file mode 100644 index 908e04567ca35b..00000000000000 --- a/playground/vue-legacy/__tests__/vue-legacy.spec.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { test } from 'vitest' -import { getBg, untilUpdated } from '~utils' - -test('vue legacy assets', async () => { - await untilUpdated(() => getBg('.main'), 'assets/asset', true) -}) - -test('async vue legacy assets', async () => { - await untilUpdated(() => getBg('.module'), 'assets/asset', true) -}) diff --git a/playground/vue-legacy/assets/asset.png b/playground/vue-legacy/assets/asset.png deleted file mode 100644 index 1b3356a746b8bb5510aaee51f7df5aea4378ee8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12772 zcmch82T)Ym)-H$&N*olL90vnANET3%3IdXIY@%ek$x$T;2*MyJ*+y~(p$Scr3=&#V zauARp&>%U(zmMb0?|pUet@~cpyH;6pHhZnL_ln2ZQ@20&bcI#; zRb1q(Z0+v)xLIlXsA|D|?BU{;Y%QIg6L0gA+o+ON#9WUkUItw9LoG z@?#6qUW)C{L+PnJV3BinvtkkE73P8S3*2B473UQY7PuiMz|A7aFCfInFT^Jx#3LXm z!7nZ$Ak6af4;zr?W@#;0kvqd6ZB>4C|Jw16ng?OFaZ1@Dk#l`vf1^EO8 zdB6@HgtrsY+>6Hv!TuKqc`F3m&CUgB=j_A+aWuDZc1KFFfs_7u1xFVZmA@G~A$}?f zsEp6c+=Wkom!Hqk5xUop-3X+H)&CyjpYBFzdAnHgX;>kg-QD289@gxC5d+=*dqL1f za2g4DXSlngl@s!wyc8Q);kC50l(;P_D#|Y+&o3r=TUJ0oK}c4VUtU3hUkF;26A%>o zi}s!q0%`69xB83L?r&N-#eYjHA?Idgj&yd@a&~t3%X$xNosrH6TW1#*IXRYVD&}xI zC+PV)q}!iIwQ{rbu(DKib9Q9;p&SXje{uj3VUgPcf}-N0BI1J3;l%~S#Kq*r`DGQw z
- diff --git a/playground/vue-legacy/inline.css b/playground/vue-legacy/inline.css deleted file mode 100644 index 2207a25763ca6d..00000000000000 --- a/playground/vue-legacy/inline.css +++ /dev/null @@ -1,3 +0,0 @@ -.inline-css { - color: #0088ff; -} diff --git a/playground/vue-legacy/module.vue b/playground/vue-legacy/module.vue deleted file mode 100644 index 10c7b42e4c4215..00000000000000 --- a/playground/vue-legacy/module.vue +++ /dev/null @@ -1,13 +0,0 @@ - - diff --git a/playground/vue-legacy/package.json b/playground/vue-legacy/package.json deleted file mode 100644 index f6d95702b77038..00000000000000 --- a/playground/vue-legacy/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "test-vue-legacy", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "dependencies": { - "vue": "^3.2.45" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0-alpha.0", - "@vitejs/plugin-legacy": "workspace:*" - } -} diff --git a/playground/vue-legacy/vite.config.ts b/playground/vue-legacy/vite.config.ts deleted file mode 100644 index 5bb2f0efa06f53..00000000000000 --- a/playground/vue-legacy/vite.config.ts +++ /dev/null @@ -1,35 +0,0 @@ -import path from 'node:path' -import fs from 'node:fs' -import { defineConfig } from 'vite' -import vuePlugin from '@vitejs/plugin-vue' -import legacyPlugin from '@vitejs/plugin-legacy' - -export default defineConfig({ - base: '', - resolve: { - alias: { - '@': __dirname - } - }, - plugins: [ - legacyPlugin({ - targets: ['defaults', 'not IE 11', 'chrome > 48'] - }), - vuePlugin() - ], - build: { - minify: false - }, - // special test only hook - // for tests, remove ` - - diff --git a/playground/vue-lib/package.json b/playground/vue-lib/package.json deleted file mode 100644 index 964e36f1a89a31..00000000000000 --- a/playground/vue-lib/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "test-vue-lib", - "private": true, - "version": "0.0.0", - "scripts": { - "dev-consumer": "vite --config ./vite.config.consumer.ts", - "build-lib": "vite build --config ./vite.config.lib.ts", - "build-lib-css": "vite build --config ./vite.config.lib-css.ts", - "build-consumer": "vite build --config ./vite.config.consumer.ts" - }, - "dependencies": { - "vue": "^3.2.45" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0-alpha.0" - } -} diff --git a/playground/vue-lib/src-consumer/index.ts b/playground/vue-lib/src-consumer/index.ts deleted file mode 100644 index 880acf90238edf..00000000000000 --- a/playground/vue-lib/src-consumer/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createApp } from 'vue' -// @ts-ignore -import { CompA } from '../dist/lib/my-vue-lib' -import '../dist/lib/style.css' - -const app = createApp(CompA) -app.mount('#app') diff --git a/playground/vue-lib/src-lib-css/index.css b/playground/vue-lib/src-lib-css/index.css deleted file mode 100644 index 135f4787b30766..00000000000000 --- a/playground/vue-lib/src-lib-css/index.css +++ /dev/null @@ -1,3 +0,0 @@ -.card { - padding: 4rem; -} diff --git a/playground/vue-lib/src-lib-css/index.ts b/playground/vue-lib/src-lib-css/index.ts deleted file mode 100644 index 0da52ebb0b6115..00000000000000 --- a/playground/vue-lib/src-lib-css/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import './index.css' - -export function setup() {} diff --git a/playground/vue-lib/src-lib/CompA.vue b/playground/vue-lib/src-lib/CompA.vue deleted file mode 100644 index dac9298b3bedf4..00000000000000 --- a/playground/vue-lib/src-lib/CompA.vue +++ /dev/null @@ -1,8 +0,0 @@ - - diff --git a/playground/vue-lib/src-lib/CompB.vue b/playground/vue-lib/src-lib/CompB.vue deleted file mode 100644 index cca30168fb6753..00000000000000 --- a/playground/vue-lib/src-lib/CompB.vue +++ /dev/null @@ -1,8 +0,0 @@ - - diff --git a/playground/vue-lib/src-lib/index.ts b/playground/vue-lib/src-lib/index.ts deleted file mode 100644 index f83abd4ec72118..00000000000000 --- a/playground/vue-lib/src-lib/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as CompA } from './CompA.vue' -export { default as CompB } from './CompB.vue' diff --git a/playground/vue-lib/vite.config.consumer.ts b/playground/vue-lib/vite.config.consumer.ts deleted file mode 100644 index 9e75b5cfbeabcb..00000000000000 --- a/playground/vue-lib/vite.config.consumer.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - root: __dirname, - build: { - outDir: 'dist/consumer' - }, - plugins: [vue()] -}) diff --git a/playground/vue-lib/vite.config.lib-css.ts b/playground/vue-lib/vite.config.lib-css.ts deleted file mode 100644 index e20ec925e05b0e..00000000000000 --- a/playground/vue-lib/vite.config.lib-css.ts +++ /dev/null @@ -1,16 +0,0 @@ -import path from 'node:path' -import { defineConfig } from 'vite' - -export default defineConfig({ - root: __dirname, - build: { - outDir: 'dist/lib', - cssCodeSplit: true, - lib: { - entry: path.resolve(__dirname, 'src-lib-css/index.ts'), - name: 'index', - formats: ['umd'], - fileName: 'index.js' - } - } -}) diff --git a/playground/vue-lib/vite.config.lib.ts b/playground/vue-lib/vite.config.lib.ts deleted file mode 100644 index 5be7ea876e9833..00000000000000 --- a/playground/vue-lib/vite.config.lib.ts +++ /dev/null @@ -1,23 +0,0 @@ -import path from 'node:path' -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - root: __dirname, - build: { - outDir: 'dist/lib', - lib: { - entry: path.resolve(__dirname, 'src-lib/index.ts'), - name: 'MyVueLib', - formats: ['es'], - fileName: 'my-vue-lib' - }, - rollupOptions: { - external: ['vue'], - output: { - globals: { vue: 'Vue' } - } - } - }, - plugins: [vue()] -}) diff --git a/playground/vue-server-origin/Main.vue b/playground/vue-server-origin/Main.vue deleted file mode 100644 index 20e736542ec9cb..00000000000000 --- a/playground/vue-server-origin/Main.vue +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/playground/vue-server-origin/__tests__/vue-server-origin.spec.ts b/playground/vue-server-origin/__tests__/vue-server-origin.spec.ts deleted file mode 100644 index 2c640709cb3cf5..00000000000000 --- a/playground/vue-server-origin/__tests__/vue-server-origin.spec.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { expect, test } from 'vitest' -import { isBuild, page } from '~utils' - -test('should render', async () => { - const expected = isBuild - ? /assets\/asset-[\da-f]+\.png/ - : 'http://localhost/server-origin/test/assets/asset.png' - - expect(await page.getAttribute('img', 'src')).toMatch(expected) - expect(await page.getAttribute('img:nth-child(2)', 'src')).toMatch(expected) -}) diff --git a/playground/vue-server-origin/assets/asset.png b/playground/vue-server-origin/assets/asset.png deleted file mode 100644 index 1b3356a746b8bb5510aaee51f7df5aea4378ee8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12772 zcmch82T)Ym)-H$&N*olL90vnANET3%3IdXIY@%ek$x$T;2*MyJ*+y~(p$Scr3=&#V zauARp&>%U(zmMb0?|pUet@~cpyH;6pHhZnL_ln2ZQ@20&bcI#; zRb1q(Z0+v)xLIlXsA|D|?BU{;Y%QIg6L0gA+o+ON#9WUkUItw9LoG z@?#6qUW)C{L+PnJV3BinvtkkE73P8S3*2B473UQY7PuiMz|A7aFCfInFT^Jx#3LXm z!7nZ$Ak6af4;zr?W@#;0kvqd6ZB>4C|Jw16ng?OFaZ1@Dk#l`vf1^EO8 zdB6@HgtrsY+>6Hv!TuKqc`F3m&CUgB=j_A+aWuDZc1KFFfs_7u1xFVZmA@G~A$}?f zsEp6c+=Wkom!Hqk5xUop-3X+H)&CyjpYBFzdAnHgX;>kg-QD289@gxC5d+=*dqL1f za2g4DXSlngl@s!wyc8Q);kC50l(;P_D#|Y+&o3r=TUJ0oK}c4VUtU3hUkF;26A%>o zi}s!q0%`69xB83L?r&N-#eYjHA?Idgj&yd@a&~t3%X$xNosrH6TW1#*IXRYVD&}xI zC+PV)q}!iIwQ{rbu(DKib9Q9;p&SXje{uj3VUgPcf}-N0BI1J3;l%~S#Kq*r`DGQw z

g*im?5pwfrX+|4DoMU()h{!|*|t{l(IMEdlp|e*D{S!NcF4Z{-Bs-3|CP!Zr*9 z8L#d=`P*7vqbn1>&n!RtU;S=qT#~jM$vQmzE;@a9c-rnezm%%pNUCL4Z?Ol5^T|`4 zavjWJM`*UqD*=L#ruSwfkpg`dg+WwAgBG)AJMJnzGINiKeO4G0eE->l82+&`B7#WJ+>uienjpS%Cf@_)wnS8@Lt-(ODwuJ9`ZNaR1c#{VzAzli%c zdieFczi910Q_uf9Ump#H3qJ49?XDdJEVgU0^-nuX>)vnly30Cxol4=jV*B(2W#5Q= zZoyqw)~|Z99vkShEvcZ%Gul9NJXmfqlB33(l=X+jS8v;gb!7^)K4G4vKK&sm{RpAY zXa|RLM59D+?B_$C1m;mhzR|W9s)a8;N9a~BS?g4pNK%w~aZQtaEyGUaQzjA|;I=b% zPAV^cc(RIern)a4 zhI(|wR30|9!CyKW7Euzj4~l&9N>-|XEj&zlYZ+NWMQTM+Dn>Sa|7#Z3UzI};wxS)M z5iocG$XR&=j~^L|KB-jVe&BB^c~JCVHeabiS7tMKFok0*ep-0e3Ze}V4cW;Q{F;|i zS$nM{@47r;N7}?`S6OPDO>XN^gfMC4@e4?t?VN*ih6ihdqMrioS?+n3lvoDhiA<%h z#p78S=zV$jMN1#_jm?eU)+~D8>Zr&$YG>4s?$aA0;vM3?Ri43*6b~&tl=Uo8va~MT z<>ks>Gs>e#6&&0ooD@PIXPo9!ZnA&c5Gu>&{9rQ2$Q7}1n7}39u$DbUbe3Dtk+hdq zDSK)7{F|d{*}-@89lT@N8WW)f4_Y3)=PQt3&`leqPLEq@F54On3Q{O`3Ek*NVbnPU z3HRC!)K5#DyF3No?si6u5Okc#a@1b3r+N6zae!OadVQefsha>mB{P0x2xXtyPVg#Sd}jsP;8~gz zYK^AUM8?3mAz{VD%2h0EqGie+}5cS z>3_AuW9^jOkayxhI^GLWCW2BtRp*eX>kO{Zk+g}I{px$AXrD-ryTauP;u;cGAfLT- zSD?0wa8lBaDV0a%bnCmP)=Y2PXe(WwysvAq@G|dvY)E8FQlK92Q))iT3C3DNZ8pT0 z^xBNvl&{jZjB>4M1k9s#@C})~){+R}@JjXYof(EmM3e)0b|n*jq=LwAqt8G<_*=l$ zy-rc})-+~(40YP90onyuio3BUUB~A!jMgE_o8VAUF4miGu-@zM8IP`hju<5zye^-k zeG=bdFRG?$R6^-YRJk`*b_GQE*?9u{$k?j=qd=I`1^c7fZWgmLBpnK;9ohqXv^hkb zm1KwQ+FCun1mc|jpv1JDF4(}xQXT}J7S8V~pYc=sgE@#MxS6((3x$#85G*RZy#4l= z_D$T#lY#h=bjIUB>=5fGmcizywk5(jI-HuY;=A^eXQ-7|3Q$rg5^qkMVqV3;15L#r z`WA&tUhStHJSIO3&?$Tri=9^B=*bex>D-yE$OcCG)STFdTs#_K)2-3^B#Lp6yEE{% zttT?<)JM-#X610Il@4oS&l~UWn@J4I5@y7YWV)bF9=ysF-`S(Lrmv$F=$j>r?AAMV z`~IQ~2Rq(1A6u*LH=mlaIty;}AVt{{bG2}8N)veY{ON#G| zpCH<$CHM1gPc&9Ln={MI->rfzD5VHlM%r%=#e?)i9xR0NdRcKHzH@*(KBAU<*+aze z@&F$b-7qY4u%U)i?v875tGFCGyuzB@?88-7t~9C%6lLP2+0-`*xO)4`8BY>llBHIA zFSj;Le1vbJ!xhIx?^M@|-I+0B9W%|Uq{EMtz9bVlw|0=2pF9N1%D?`xYb%W)s_Z?Q zw5Muirs2MfXOsUIiKmDb;NInp-@WzmBTp{(Jxk;B6XG~MXQ`5vo8EAnRpQlzXQ9a9 z!3Rk~>%iuQR)06kG5g-AN+{?GTIg`}Q)j6CSCmmTXr=6K@q)-$Z4-Hk!~l=eM*6Xu zZMowHW>@B!2C)oA6S3x$r-&yGYB`m(_>loreKFC&PRUA^`O%lRRiq;Z?rjb`*v;pJ zt*!1J6CHjRbv0%9u(Ombf}TG=g3g9$q{;QCE~FkBT5$%tc&mFKUJO|@JJ=^+9tWYV zcHn;4f)12eX~~PW^mXNZA!93zoPJb#1>;;8)P`4cE$uaz+&t~!@CAiw|EQfL^B}3f zF9jg>mND)ePKe>1#%q514fPsH#9t%qzh?rglEk>QZ_Q#S3MmsyxInBQwrxZ*1USKb)hd<8YTnSfa_5l-8xQ*+|7iP4f1;m58I6Nje@ z!&YMl^N!J_Ma#1yl5UKug3ZIv5kU?mnZh*qk+(1PrR;?b)S+&<0enT%apJ5 zFK^?Xjd`uq9H+aqjz+>8{MtD~I$=ZOhM?wI1ceCYe#08)QhFz`XJtsE)mbGH?Wl$L z7*BNiovp{)?b03AGKJ^gH_UwqA#NF6R#rSiEk{w#L^3hK87po#Sznl&R;~ej;^gI% zH3rOHhRpJ3T;v#a)rZ)Je9_xt^IaaE28iEEX(-3!BnwHr9~!E08R{0!6!W&V+>ZAmd&NGX)_GdboJJOVB122jrQcpF>VkQf(3Jxylq^JlpORzG5QuFIt@&2KB@ zJ(O@4thYJs1F_F@pwK#lXkYL+E0Mw-EWpqqII@#fdHF2&Bt>7f3CV;uXY77+MXkoC zK4krCRqI{Gg1!citzw11$)V@~A?Yf1tjX~+(xS5a=+pQ?4T{n|DpNAtb>N9o_U`H? zxTM>u_tz#*!{9HSq#VoA_@s5c`eZcrcV>o*QtAy@H`*#U`{VKPBc~|(>Y_uP3Y5NH zDU8hsXm~Gz{CHEuFv&vli0+?0^Lwi4IRkjY%4SG~_2VD~-|71+UD%0CN^hmBgAt=) zewPa366^2i2$M4ymby|i9rn*6a*<(|9%~L&wsVi1s2K>|ZknlXU8bsse4g3V@Y%E4 z-n$)|rxS!HW5DlKQ`S17p3^cN2Ijhi!Gib|3z7kDXm~kbaN!Jf$JLbBV{RlV09AEH zpZeBqUaDG?tGu)^O+6*A>*#p)yr`K`_3R9daq)d)+u+I#VXIqB7R3$JqwwyS9Jhn~ zjJipxGN|G_+U(#>92Ycw4rAt$&hAFTI;o$leDtaOy+aI?|P%Z*CS zB}?tO5t#@h?;VSBwK0+Kv+=t>TF_A@KC?t+T+I*B#8Q)2uX(Ju zt7e{|IKArp0#W`xSZCnr$%P-R9p{qyFtO4Awwo4xEpA4X3lN zdb=ZLd;C%Vb7M5mp|;G4lOIX^%4^CgeRsng-quQ&FhLfx50x(2I}VG*n&CIIwm)Z_ z{KjXS+EW*Rtf*NVcC2Y+4iuFRRRUMCV2HEC@D_!GEAbVRI#z+In~JHW(Vtc*ii7vB z9&RNlS2fraH^KrICe}T*OIsc@x0^9UT8^a-%2JfRVxE4+)47e_ps(nN0;Xw4GM-Vei=p_ z%18j{E+aje{#=GW@Xj2_v?UwnyIm{Ia;!!ZStJ1XV@j)A*BVUqF0Za86rimDv`o*c z=dZOk5!-v&aX4F)F3dK@RWGoU#PNhLPzyaMO;M^>8bifb>{*~>sajn%6ghf0#3@fW zAR|>5usIlRFL7*il(_enbC7j7OaRuwG~%RU&kP`G?t3|e@6-FAH;1UQlJbTGEOFAM zjw|Jk&immjd(P`NTKV;2gEOz#$L#HT2>^(v>icTKIsWCw={aX@P~+za)>3?Yt&%`Flm`>GwnnfRwZA4mCH0QH?>inQ6e#or?<}UtLS9g z!{aKumsX3J!tLGNpF+AS1|J2rW&F}I^6>p1Eo1-D(P_si<7sktg|2r;#2^j(SiN1; z6YebQf!*XT&v(a|N#@$Xi@i4Hf;|m>6=Hk6r?8VSg9_3&%S(iuYX+YW42QOa4o%WW zd|S_@N~B2eo%ZKkW~V=u~H>S$Fw2t>iEi6CblqEt7CkUl4B`YEIKDFpY zz#|;^vV=*`awq7B4fskysB)m(Ok(uAjb}2vG9t7M?nf|A%)Dr ztE%yxDbI4AQGcFtRlmE@T6U>}Vr2EcJq?hM$%taq3ca~qwymHpz?1lf-`W5kW<)qJ zdJeF^o`S!6VL}-6w~m!GQWL}+2$FfImGkKIP%*%OK}C+gK!pvcv~zI#h}d`&Zt*^a zo6q7$#S1R8nHm)o>w?JlF%i3T^KxyZHk+nZ35dFhK?GYXt%U*MI9MfAAF%{E35Z zX5|IIU{qJmR~C#2`izX96>jISe9T~Mmu0wQ>C0Ah52UQA=END~BCkgH{W%Twsg-il zI+QSVcf&Dcj4QyMZv__;%6dNkF#+M`%5SXKU=1~5AaLc5!KIZ_`>WAXl+xTVl#|RS z@t)D$P@b%zF<2kQ{Mq_|G01skF@&E4QZ!e7o_Hnnp}J(RXh*1sSs0wT18>CXt~~|7 zsG0p?JCC7R4hDUV2VwXEMLab9O1Gu#>KL&d4qWlw|>3KC=>ab>^T*Vw@5Dvyf*0YD0(l5oL(wz-)k2H=yMsg79uKt zwHCpIPUd7CH<%2|rBVl}0Tb0}lFhq|=sajhpgx7nkRW+=kR4S7S4KP9IRXWs$bR$; zPyV-OprKgTOORRg@|b>9ksTCt?wtav7j%jTP-l>QbX@WxnxkfhPB0JnX-u$CA9L8M zHGp5n(s??c)V8DEHjsBu)3n3yp_2y;&YYn>`h!c>R~z_+uY5hVRtPw2Q#Yw8C%p#%icDkL6PMXS?@wH)LTUh(4_hS`{p- zr4&sq1`Itk8h!QErL3}Kx5B*&X9U>CChU5_q&T`|2TKMlF`96xj{PHfvp{}S&4fCP zET{6!S#B|=>1SJ4QHL2yU#}OHP`_c;FQKSs3T_eLbac@VJp?a<|;Qqe0 zjJ@bL7PH%-&cQpSkh7vQuB9&$e5%i`bJbrSj=@b=hyX)~H`6|R>or?Ws`B|2=5Lr> zpLw}4xU|gOp_6_Pb*yhdf2-*+uk0W@3ZudyXxgt<46EEdC{!zX+L3WY277{Qb~IP< z(gOZv7GOj-Dh;(_bq&|FRdzYZG1D}y@Y`sAJ075tc{wq-zW`Dfz#HPjB_(yqf$f9@ z0|?uKEd?J9@Xk>8yx|Mmc>&!Snv{C8W4bko+HwqBAxIDz0>qmV_j~_$_8E}&tTorqq&Q*YYqIn zYYq2|tXxpHW^=%fKq(ItBYoLoZ}+V;`T zC-{zURz5G`QB<7Bwt5E}elWX~?S3(quWy|T#9`V3o^m-(6#>S6 zi|3}FiJs`2W0bzy4Zc@6zWLH|QK!(nkOP3Y8j>^ATQPg)yO8w#ig<;&s)XzE*?Jf~ zxpJw?&7Y0Cf%8dS;qL3j8q*kP3U7QuJ8)l2_e{rVk$V&FHBD>YcfWgWJcHD$rbNk3$AQj`y23cVG zWrV2Hc@k*X^!t7)5c71@_|4TMD4bq#nVd0QPmceU-5e}}= z0SdsCU#kTR&A?H~TH)hgA8^K{ zup*pP0%LUpfHCXsqM;qO_O^X7LfW%Z+l7?QwQhsxy%YmjUCXnebI05%tfz=YC#~?F za~ANT+(55-*`p-AI6eCE37YwNO-Mb*j=HuDSugSq)+^gObH^HwmNRG{{$?+We)%!w zEI#ppzL;jfKLDJ-V(mz)Gd3`fY;n-zkOch$uwguqXr*g4h{46)fC1&+rs#WRL%b`o zY>{>C2db%j$Ujp~V*KhZ;v^eB$%!VoxS7)!J*Z4U9e%@HzN?F6v;-$rdL$ zQhX0V4w##nlHh1TlGqG6{n-(N=^BOVCkDG&D?C~^_zGv9#?f6b3F;!!AEmgXs!|!eW&kmK)gabz4456L! zwqX99vlAYrAkeAHeXVB7?4|Wb2IyD!#NM8$FFI+5_q5Gs8mJ#O)xIN*F`oi3#`E>& z#2@njvhfH1IW?wmgJ2AOoz?HFn&YD7ZQ|}VP~gT~v>7f5UcCs~$8wEN{Y-T-Zz^}L zuh5Sa-$f9E3tE_x;x7D{6uAqOd$^pupx)(Jy)=?`7Xcs=jrH_>UkM}(lux(3TxX_~ z_aYTLSt|igAl-xCgYm;Z4tcGn*6xglRr7&yZcop!bOR9AG{v~GgcpFf4!Sd_T$#&Dw*QoqaeotqG2jp+=t)vim+_bDcQPGES4UZ5Bzk_Esy>HLT<&-M#?VfembeX2e*SJT z4^`E5C;E{zRRjTGu-Z&}5Q}xx48Q+5HlrbLmv;<1nw>vaLOk|y9K6r%{1dtqK+r`2 zj5{OJM$)QzT$4L@ZY5m;$1}!UtAJdWSrT>4XIhCUtAgii1j0;%7Wkz1Z+*jo47JJN zwbW3G7S~b^@3H^IS&>#p*0EkYUZ}Pu|BYK*G)-&AKC~`GkKID+4ln@8uVkis{GERk z422pRDc^4=H-~&ysa8dYLllz;fauNDK`fIlNLNC-RCDgzU^=vyvR>0g-EqXz4VZI3 zbvZA?SWB$UriRGW`qV*vT28tyK8uLMHS_QIcM*V^hmF}bTU^x%?@?HocptHJoePHh zG4=T!AeJ5iz@i$5VuaFt8L5K0NwDXOW<*6=q*2&_9wDIintpcj6R|kvQUS!WN6*u- z@U&k6z5M5f8$-e9JJ1_dL(LZneB-?dv+#}u7DI+H09AnI)kB01e;NHvHv4~(lJ7A zSr%KD=ofaSL#E4S;O!k()=GnSZ0sDMYv_0S{En>3lecF2F~5@xOplLvPQ@JOP!%F@ zoGS=)S^wpiN!{qN+ht~UX=*T(D}##SRx|BsBnqR%A^7A204XwW4wtptI-WjP01!nF zV24H8pW`=iUod`44eZU|!>kK*?r71qK&;tQ_L)g1bmBX;7_ToaESREE+Zb(S1K5=T z8i=?iW_toVkwckC{PFN5EIw`_z&m75avi*vHl@MrazZgOuy!_Bq=>|O$x!vxSoe)T z0>X?2?0Nw3-73yoZ;wM^?tyx(T1d66Im8&qLJWo>VGg2M0>prHvzP>D1>vuXVj5bU zUvl!E(7H|6jvHM8bTsFOb?XLyW0HaW{(z!%{Z){8Y%|L)0&3A;CtN2*C7n#CJSQY0 zOv>=fpdbd`j}o<(6Gc(h6lmtj*lKtm|ibroh%QL_Ev>4=NQL-!n@YWXFnB7j_AG#{>=QMhW zdA|*W&uR2&l*7=U8+LykKB+ra?lpFyC8HDo;}cQg$)|w{BgH@F%IY#}!8(zr$qr)! zdS|Ki@F&DfOBrNc>fDY3IalT{22uDc)){or1ZJpGbExdW6#KGe`Vc|)yJeMcN)cx^xJrGGfNNBMK zM$rOD;KKY!l$`@aP-KkSPk?RCW!=bzwhw*sn%&0Yz=p2AKUXGkD5(q*sP!ucps3V{^8cW7WfI#v`F+z_MpS<8|i^b{}<`S*bHs(-P zteX+(HkOcJeSr$=xlGXJinLzDLLth&Kz>gzI4~F$C~$ZYS7i#EA<}DNFlHJxvHCK! zq5=m=IH)Fx&bf}VmP_lgDMEpc9?)1GJhWB2M$mQ1?moz6F+e8*#(Vrijr_6gXIaef zjYA99Lcohp8lTQ0DCHLZK&}9QuE%0ZjtlGNzY*{%S{#TVwt86i+ZuMYoU{eb z#)trlq877k^Auiv5dO&Xj>I5f!u`jde&KO9f9VcP+L`bSb!j#5*!5&9-GbJpS_wut zL^JYI7U7urZWAeihA7ZL?2mHu=q(SU;cK<{Bo$NDM*+~}>_i%wt`+|1`z<2fbdB?i z&XeyRzvHI`FU7a&6Or7|2_I_CM*V1o7kx!@;2=b9J+Ee~(2Ykq*C$1TMi#%`0(>wd z3dY!rhEYfoK(Z)M6}(d|xRu&5PzEyo>mi_*nXpVgt?&kfxr7He(Uxte4?ohgKz^!P zl2Hhp*k}Alo7yj#5={lMbOP=ehczytlv+DL76R{ByktrQy3nmcsc$sEJF$G=(uA^A zavVN`(a2}e2B9e;oVnGaIC&17faIE}Zzw)=zrKqTGVS}tbW*ImwF}@JOxhP|jKC%F zUz&6}Ylf$}CcA+77e5Uzsbjhzca8ryJz#n48sN?sy2=@^=cbzl#|Nek+HwY#Ij|6{;EtnMn>5~^3_?j|usez*SXjmlq*%sG1+l z-hh_67df3O2b|)a2nb$5q-b7iM$Prl3}6M{)5?~QtL3q;_-8uscpKyqFCL&!J(nmg zdmt^ebx79tJ}q?*Jg*&Sk0cV<(_!(7mc_gKnRKAm@LRGjAEGeI9P<;#d630P^1!f9 zBh(vl?K8-kLFQ1p5J3**wbs?}{#ar4bhO39qwF!7JiuTy9>B(XHbpqj50$vQgr*n- zpX?V?W0%w7y>}}D@tqqFh;$8K;6DXnc2rI*hZq$0?A4M4O5f84gkG*ahT0Z=PAZj9 zREa{FYR&D)L|OR9BXk##sb*@b1wWI3yNn(v*{Xqe+-lhdK(Dua0fQg?P4pGbA`nDh zz-K@HD2y)0fV@Y!^WgU4D#Hxr zc;Z7muz&O69b3XMmqzkze*iOs_JQh#K^qb3GE{Q!kPK`fo;kp#(PkX`U%?3h2Hekp zF{ZJ`H{~&YuA??VvpNq&lJoI;MxYPT!m!7aL2L6*SdESw-jMdhdzJ1*Qn#{!s9)h~as!ad0K%@fDpf90I<4(3eq`@}GcpOMwk}t)^u{)$dg$b=- zI%yHKvk+dP2C=vSSPZn8`P2BZ;UIX(ZP$5VvbahcWL$FDIzR z8<0Yy1G!mmU4gIHr4rRKBA`tFIc3!LOl4M@>ezYkcns2?>+i@hAD01imLq{41sL(a zvEi|en^K}cQ6veV@*c(PhbVvl z1j}B4%FrVcee%%NRRzCp%m4zaBDcnvMyD0L(ptXNKrBmvLj_RQF2kntiq-nh0iJTx z#3-D8Q^!>V2NiTdD;@jyvx%_*|kRtWKpG%IZ+;g${P-g=xg>)s zMpIibKaDC@dJf4y3xHuBZ@_8Z77eh}ts9_>($#kHGFb>pop1VMlSlS-ju8m$M&b$P zp7o(s;^`%FZSqB`$#-XbR6wTkA(N3YM(*~(AbmiU13*1HvPL(}14f|H*HK(@zWZVU zt8-g#A?}jEq(ibpV$sZwnd#@iC!WzQAXgRkHp(OfoCmiTV*(q%0I6a>HhfD6P&6^f z4(`f%4kaHA7=N1r8Vn+ll$G34K0SSK;0$q$1|q>UX!YgEfcv*bkR$Mnt3@g%@{9`@ zZj~Sk7+&*1r&sF;0Iu@#A)vr(idnxZ`=5Lk`(OBc6{zU{@~dH>r2pV+-dUp^217t6nVH5`QcetM1u@7n`oi#fYSDd_)Q+*44MFP1fX{69{$*5UvF diff --git a/playground/vue-server-origin/env.d.ts b/playground/vue-server-origin/env.d.ts deleted file mode 100644 index 31dca6bb40c906..00000000000000 --- a/playground/vue-server-origin/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module '*.png' diff --git a/playground/vue-server-origin/index.html b/playground/vue-server-origin/index.html deleted file mode 100644 index 13de0b72c23782..00000000000000 --- a/playground/vue-server-origin/index.html +++ /dev/null @@ -1,7 +0,0 @@ -

- diff --git a/playground/vue-server-origin/package.json b/playground/vue-server-origin/package.json deleted file mode 100644 index 8bdb5c2f45b1e5..00000000000000 --- a/playground/vue-server-origin/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "test-vue-server-origin", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "dependencies": { - "vue": "^3.2.45" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0-alpha.0" - } -} diff --git a/playground/vue-server-origin/vite.config.ts b/playground/vue-server-origin/vite.config.ts deleted file mode 100644 index e6e497c2917f6b..00000000000000 --- a/playground/vue-server-origin/vite.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineConfig } from 'vite' -import vuePlugin from '@vitejs/plugin-vue' - -export default defineConfig({ - base: '', - resolve: { - alias: { - '@': __dirname - } - }, - plugins: [vuePlugin()], - server: { - origin: 'http://localhost/server-origin/test' - }, - build: { - // to make tests faster - minify: false - } -}) diff --git a/playground/vue-sourcemap/Css.vue b/playground/vue-sourcemap/Css.vue deleted file mode 100644 index 4f677c7b84dfbd..00000000000000 --- a/playground/vue-sourcemap/Css.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - diff --git a/playground/vue-sourcemap/Js.vue b/playground/vue-sourcemap/Js.vue deleted file mode 100644 index 3a5577099f67d3..00000000000000 --- a/playground/vue-sourcemap/Js.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/playground/vue-sourcemap/Less.vue b/playground/vue-sourcemap/Less.vue deleted file mode 100644 index f12a3e55f2111c..00000000000000 --- a/playground/vue-sourcemap/Less.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/playground/vue-sourcemap/Main.vue b/playground/vue-sourcemap/Main.vue deleted file mode 100644 index 8b092e88d94aef..00000000000000 --- a/playground/vue-sourcemap/Main.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/playground/vue-sourcemap/NoScript.vue b/playground/vue-sourcemap/NoScript.vue deleted file mode 100644 index 77e2de3414d1ea..00000000000000 --- a/playground/vue-sourcemap/NoScript.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/playground/vue-sourcemap/NoTemplate.vue b/playground/vue-sourcemap/NoTemplate.vue deleted file mode 100644 index 9414a2913d68f4..00000000000000 --- a/playground/vue-sourcemap/NoTemplate.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/playground/vue-sourcemap/Sass.vue b/playground/vue-sourcemap/Sass.vue deleted file mode 100644 index 0fded031a52c72..00000000000000 --- a/playground/vue-sourcemap/Sass.vue +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/playground/vue-sourcemap/SassWithImport.vue b/playground/vue-sourcemap/SassWithImport.vue deleted file mode 100644 index 7a00420a00bb3a..00000000000000 --- a/playground/vue-sourcemap/SassWithImport.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/playground/vue-sourcemap/Ts.vue b/playground/vue-sourcemap/Ts.vue deleted file mode 100644 index e0d96bb4725abd..00000000000000 --- a/playground/vue-sourcemap/Ts.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/playground/vue-sourcemap/__tests__/__snapshots__/vue-sourcemap.spec.ts.snap b/playground/vue-sourcemap/__tests__/__snapshots__/vue-sourcemap.spec.ts.snap deleted file mode 100644 index d2600ee6edccce..00000000000000 --- a/playground/vue-sourcemap/__tests__/__snapshots__/vue-sourcemap.spec.ts.snap +++ /dev/null @@ -1,335 +0,0 @@ -// Vitest Snapshot v1 - -exports[`serve:vue-sourcemap > css > serve-css 1`] = ` -{ - "mappings": ";AAQA;EACE,UAAU;AACZ", - "sources": [ - "/root/Css.vue", - ], - "sourcesContent": [ - " - - - - - - - - -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > css module > serve-css-module 1`] = ` -{ - "mappings": ";AAcA;EACE,UAAU;AACZ", - "sources": [ - "/root/Css.vue", - ], - "sourcesContent": [ - " - - - - - - - - -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > css scoped > serve-css-scoped 1`] = ` -{ - "mappings": ";AAoBA;EACE,UAAU;AACZ", - "sources": [ - "/root/Css.vue", - ], - "sourcesContent": [ - " - - - - - - - - -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > js > serve-js 1`] = ` -{ - "mappings": "AAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;AAGP;AACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;wBARlB,oBAAiB,WAAd,MAAU", - "sources": [ - "/root/Js.vue", - ], - "sourcesContent": [ - " - - - - -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > less with additionalData > serve-less-with-additionalData 1`] = ` -{ - "mappings": "AAKA;EACE", - "sources": [ - "/root/Less.vue", - ], - "sourcesContent": [ - " - - -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > no script > serve-no-script 1`] = ` -{ - "mappings": ";;;wBACE,oBAAwB,WAArB,aAAiB", - "sourceRoot": "", - "sources": [ - "/root/NoScript.vue", - ], - "sourcesContent": [ - " -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > no template > serve-no-template 1`] = ` -{ - "mappings": "AACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;AAGP;AACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;", - "sources": [ - "/root/NoTemplate.vue", - ], - "sourcesContent": [ - " - - -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > sass > serve-sass 1`] = ` -{ - "mappings": "AAKA;EACE", - "sources": [ - "/root/Sass.vue", - ], - "sourcesContent": [ - " - - -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > sass with import > serve-sass-with-import 1`] = ` -{ - "mappings": "AAAA;EACE;;ACOF;EACE", - "sources": [ - "/root/sassWithImportImported.sass", - "/root/SassWithImport.vue", - ], - "sourcesContent": [ - ".sass-with-import-imported - color: red -", - " - - -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > src imported > serve-src-imported 1`] = ` -{ - "mappings": "AAAA;EACE,UAAU;AACZ", - "sources": [ - "/root/src-import/src-import.css", - ], - "sourcesContent": [ - ".src-import { - color: red; -} -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > src imported sass > serve-src-imported-sass 1`] = ` -{ - "mappings": "AAAA;EACE;;ACCF;EACE", - "sources": [ - "/root/src-import/src-import-imported.sass", - "/root/src-import/src-import.sass", - ], - "sourcesContent": [ - ".src-import-sass-imported - color: red -", - "@import './src-import-imported' - -.src-import-sass - color: red -", - ], - "version": 3, -} -`; - -exports[`serve:vue-sourcemap > ts > serve-ts 1`] = ` -{ - "mappings": ";AAKA,QAAQ,IAAI,WAAW;;;;;AAIvB,YAAQ,IAAI,UAAU;;;;;;;;uBARpB,oBAAiB,WAAd,MAAU", - "sources": [ - "/root/Ts.vue", - ], - "sourcesContent": [ - " - - - - -", - ], - "version": 3, -} -`; diff --git a/playground/vue-sourcemap/__tests__/vue-sourcemap.spec.ts b/playground/vue-sourcemap/__tests__/vue-sourcemap.spec.ts deleted file mode 100644 index ee6473c6304e4e..00000000000000 --- a/playground/vue-sourcemap/__tests__/vue-sourcemap.spec.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { URL } from 'node:url' -import { describe, expect, test } from 'vitest' -import { - extractSourcemap, - formatSourcemapForSnapshot, - isBuild, - isServe, - page, - serverLogs -} from '~utils' - -describe.runIf(isServe)('serve:vue-sourcemap', () => { - const getStyleTagContentIncluding = async (content: string) => { - const styles = await page.$$('style') - for (const style of styles) { - const text = await style.textContent() - if (text.includes(content)) { - return text - } - } - throw new Error('Style not found: ' + content) - } - - test('js', async () => { - const res = await page.request.get(new URL('./Js.vue', page.url()).href) - const js = await res.text() - const map = extractSourcemap(js) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-js') - }) - - test('ts', async () => { - const res = await page.request.get(new URL('./Ts.vue', page.url()).href) - const js = await res.text() - const map = extractSourcemap(js) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-ts') - }) - - test('css', async () => { - const css = await getStyleTagContentIncluding('.css ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-css') - }) - - test('css module', async () => { - const css = await getStyleTagContentIncluding('._css-module_') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-css-module') - }) - - test('css scoped', async () => { - const css = await getStyleTagContentIncluding('.css-scoped[data-v-') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-css-scoped') - }) - - test('sass', async () => { - const css = await getStyleTagContentIncluding('.sass ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-sass') - }) - - test('sass with import', async () => { - const css = await getStyleTagContentIncluding('.sass-with-import ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot( - 'serve-sass-with-import' - ) - }) - - test('less with additionalData', async () => { - const css = await getStyleTagContentIncluding('.less ') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot( - 'serve-less-with-additionalData' - ) - }) - - test('src imported', async () => { - const css = await getStyleTagContentIncluding('.src-import[data-v-') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot( - 'serve-src-imported' - ) - }) - - test('src imported sass', async () => { - const css = await getStyleTagContentIncluding('.src-import-sass[data-v-') - const map = extractSourcemap(css) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot( - 'serve-src-imported-sass' - ) - }) - - test('no script', async () => { - const res = await page.request.get( - new URL('./NoScript.vue', page.url()).href - ) - const js = await res.text() - const map = extractSourcemap(js) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-no-script') - }) - - test('no template', async () => { - const res = await page.request.get( - new URL('./NoTemplate.vue', page.url()).href - ) - const js = await res.text() - const map = extractSourcemap(js) - expect(formatSourcemapForSnapshot(map)).toMatchSnapshot('serve-no-template') - }) -}) - -test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch('Sourcemap is likely to be incorrect') - }) -}) diff --git a/playground/vue-sourcemap/index.html b/playground/vue-sourcemap/index.html deleted file mode 100644 index 57f325518a2c25..00000000000000 --- a/playground/vue-sourcemap/index.html +++ /dev/null @@ -1,7 +0,0 @@ -
- diff --git a/playground/vue-sourcemap/package.json b/playground/vue-sourcemap/package.json deleted file mode 100644 index a3074b079cd7cd..00000000000000 --- a/playground/vue-sourcemap/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "test-vue-sourcemap", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0-alpha.0", - "less": "^4.1.3", - "postcss-nested": "^5.0.6", - "sass": "^1.56.1" - }, - "dependencies": { - "vue": "^3.2.45" - } -} diff --git a/playground/vue-sourcemap/postcss.config.js b/playground/vue-sourcemap/postcss.config.js deleted file mode 100644 index 9ea26b495d91b5..00000000000000 --- a/playground/vue-sourcemap/postcss.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - plugins: [require('postcss-nested')] -} diff --git a/playground/vue-sourcemap/sassWithImportImported.sass b/playground/vue-sourcemap/sassWithImportImported.sass deleted file mode 100644 index 8092b37048cbdd..00000000000000 --- a/playground/vue-sourcemap/sassWithImportImported.sass +++ /dev/null @@ -1,2 +0,0 @@ -.sass-with-import-imported - color: red diff --git a/playground/vue-sourcemap/src-import/SrcImport.vue b/playground/vue-sourcemap/src-import/SrcImport.vue deleted file mode 100644 index 406c6a6b45382d..00000000000000 --- a/playground/vue-sourcemap/src-import/SrcImport.vue +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/playground/vue-sourcemap/src-import/src-import-imported.sass b/playground/vue-sourcemap/src-import/src-import-imported.sass deleted file mode 100644 index 2ed87d933e58a6..00000000000000 --- a/playground/vue-sourcemap/src-import/src-import-imported.sass +++ /dev/null @@ -1,2 +0,0 @@ -.src-import-sass-imported - color: red diff --git a/playground/vue-sourcemap/src-import/src-import.css b/playground/vue-sourcemap/src-import/src-import.css deleted file mode 100644 index da61ff0fb6cb27..00000000000000 --- a/playground/vue-sourcemap/src-import/src-import.css +++ /dev/null @@ -1,3 +0,0 @@ -.src-import { - color: red; -} diff --git a/playground/vue-sourcemap/src-import/src-import.sass b/playground/vue-sourcemap/src-import/src-import.sass deleted file mode 100644 index c7e0314fda541c..00000000000000 --- a/playground/vue-sourcemap/src-import/src-import.sass +++ /dev/null @@ -1,4 +0,0 @@ -@import './src-import-imported' - -.src-import-sass - color: red diff --git a/playground/vue-sourcemap/vite.config.ts b/playground/vue-sourcemap/vite.config.ts deleted file mode 100644 index dbfa81dbeb1144..00000000000000 --- a/playground/vue-sourcemap/vite.config.ts +++ /dev/null @@ -1,17 +0,0 @@ -import vuePlugin from '@vitejs/plugin-vue' -import { defineConfig } from 'vite' - -export default defineConfig({ - css: { - devSourcemap: true, - preprocessorOptions: { - less: { - additionalData: '@color: red;' - } - } - }, - plugins: [vuePlugin()], - build: { - sourcemap: true - } -}) diff --git a/playground/vue/Assets.vue b/playground/vue/Assets.vue deleted file mode 100644 index 875ac1b243b393..00000000000000 --- a/playground/vue/Assets.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/playground/vue/AsyncComponent.vue b/playground/vue/AsyncComponent.vue deleted file mode 100644 index 4e66630c4d2edd..00000000000000 --- a/playground/vue/AsyncComponent.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/playground/vue/CssModules.vue b/playground/vue/CssModules.vue deleted file mode 100644 index f7897e2e57f652..00000000000000 --- a/playground/vue/CssModules.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/playground/vue/CustomBlock.vue b/playground/vue/CustomBlock.vue deleted file mode 100644 index 0a7b3901693154..00000000000000 --- a/playground/vue/CustomBlock.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -en: - hello: 'hello,vite!' -ja: - hello: 'こんにちは、vite!' - diff --git a/playground/vue/CustomBlockPlugin.ts b/playground/vue/CustomBlockPlugin.ts deleted file mode 100644 index bfa3f2342881ca..00000000000000 --- a/playground/vue/CustomBlockPlugin.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Plugin } from 'vite' - -export const vueI18nPlugin: Plugin = { - name: 'vue-i18n', - async transform(code, id) { - if (!/vue&type=i18n/.test(id)) { - return - } - if (/\.ya?ml$/.test(id)) { - const { load } = await import('js-yaml') - code = JSON.stringify(load(code.trim())) - } - return { - code: `export default Comp => { - Comp.i18n = ${code} - }`, - map: { mappings: '' } - } - } -} diff --git a/playground/vue/CustomElement.ce.vue b/playground/vue/CustomElement.ce.vue deleted file mode 100644 index 58d94650d1a74a..00000000000000 --- a/playground/vue/CustomElement.ce.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/playground/vue/Hmr.vue b/playground/vue/Hmr.vue deleted file mode 100644 index 5535467af3858f..00000000000000 --- a/playground/vue/Hmr.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - - - diff --git a/playground/vue/HmrTsx.vue b/playground/vue/HmrTsx.vue deleted file mode 100644 index c1a2331da6a6be..00000000000000 --- a/playground/vue/HmrTsx.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/playground/vue/Main.vue b/playground/vue/Main.vue deleted file mode 100644 index b91d50f9287a31..00000000000000 --- a/playground/vue/Main.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - diff --git a/playground/vue/Node.vue b/playground/vue/Node.vue deleted file mode 100644 index 246442d29f522c..00000000000000 --- a/playground/vue/Node.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/playground/vue/Null.vue b/playground/vue/Null.vue deleted file mode 100644 index edec53c4b13264..00000000000000 --- a/playground/vue/Null.vue +++ /dev/null @@ -1 +0,0 @@ - diff --git a/playground/vue/PreProcessors.vue b/playground/vue/PreProcessors.vue deleted file mode 100644 index c210448d332456..00000000000000 --- a/playground/vue/PreProcessors.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - diff --git a/playground/vue/ReactivityTransform.vue b/playground/vue/ReactivityTransform.vue deleted file mode 100644 index 0dc2b09343d641..00000000000000 --- a/playground/vue/ReactivityTransform.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/playground/vue/ScanDep.vue b/playground/vue/ScanDep.vue deleted file mode 100644 index 17b398beab1cd2..00000000000000 --- a/playground/vue/ScanDep.vue +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/playground/vue/Slotted.vue b/playground/vue/Slotted.vue deleted file mode 100644 index fb25a9c5100215..00000000000000 --- a/playground/vue/Slotted.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/playground/vue/Syntax.vue b/playground/vue/Syntax.vue deleted file mode 100644 index de100226922c55..00000000000000 --- a/playground/vue/Syntax.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/playground/vue/TsImport.vue b/playground/vue/TsImport.vue deleted file mode 100644 index 7858c8cfa674d2..00000000000000 --- a/playground/vue/TsImport.vue +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/playground/vue/TsImportFile.ts b/playground/vue/TsImportFile.ts deleted file mode 100644 index 62761d5733b432..00000000000000 --- a/playground/vue/TsImportFile.ts +++ /dev/null @@ -1 +0,0 @@ -export const foo = 'success' diff --git a/playground/vue/Url.vue b/playground/vue/Url.vue deleted file mode 100644 index c65d1f418cfd7d..00000000000000 --- a/playground/vue/Url.vue +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/playground/vue/__tests__/vue.spec.ts b/playground/vue/__tests__/vue.spec.ts deleted file mode 100644 index feaeb42b8f7a6c..00000000000000 --- a/playground/vue/__tests__/vue.spec.ts +++ /dev/null @@ -1,281 +0,0 @@ -import { describe, expect, test } from 'vitest' -import { - browserLogs, - editFile, - getBg, - getColor, - isBuild, - page, - serverLogs, - untilUpdated -} from '~utils' - -test('should render', async () => { - expect(await page.textContent('h1')).toMatch('Vue SFCs') -}) - -test('should update', async () => { - expect(await page.textContent('.hmr-inc')).toMatch('count is 0') - await page.click('.hmr-inc') - expect(await page.textContent('.hmr-inc')).toMatch('count is 1') -}) - -test('template/script latest syntax support', async () => { - expect(await page.textContent('.syntax')).toBe('baz') -}) - -test('import ts with .js extension with lang="ts"', async () => { - expect(await page.textContent('.ts-import')).toBe('success') - expect(await page.textContent('.ts-import2')).toBe('success') -}) - -test('should remove comments in prod', async () => { - expect(await page.innerHTML('.comments')).toBe(isBuild ? `` : ``) -}) - -test(':slotted', async () => { - expect(await getColor('.slotted')).toBe('red') -}) - -describe('dep scan', () => { - test('scan deps from - diff --git a/playground/vue/package.json b/playground/vue/package.json deleted file mode 100644 index c5c9346c512944..00000000000000 --- a/playground/vue/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test-vue", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "debug": "node --inspect-brk ../../packages/vite/bin/vite", - "preview": "vite preview" - }, - "dependencies": { - "lodash-es": "^4.17.21", - "vue": "^3.2.45" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0-alpha.0", - "js-yaml": "^4.1.0", - "less": "^4.1.3", - "pug": "^3.0.2", - "sass": "^1.56.1", - "stylus": "^0.59.0" - } -} diff --git a/playground/vue/public/favicon.ico b/playground/vue/public/favicon.ico deleted file mode 100644 index df36fcfb72584e00488330b560ebcf34a41c64c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S diff --git a/playground/vue/public/icon.png b/playground/vue/public/icon.png deleted file mode 100644 index 4388bfdca3d4d778d2f25a5861599f8f19a1177c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3395 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 diff --git a/playground/vue/setup-import-template/SetupImportTemplate.vue b/playground/vue/setup-import-template/SetupImportTemplate.vue deleted file mode 100644 index d7fb119e3cfdc0..00000000000000 --- a/playground/vue/setup-import-template/SetupImportTemplate.vue +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/playground/vue/setup-import-template/template.html b/playground/vue/setup-import-template/template.html deleted file mode 100644 index 414069f2e9e929..00000000000000 --- a/playground/vue/setup-import-template/template.html +++ /dev/null @@ -1,2 +0,0 @@ -

Setup Import Template

- diff --git a/playground/vue/src-import/SrcImport.vue b/playground/vue/src-import/SrcImport.vue deleted file mode 100644 index d70e1f48a84331..00000000000000 --- a/playground/vue/src-import/SrcImport.vue +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/playground/vue/src-import/css.module.css b/playground/vue/src-import/css.module.css deleted file mode 100644 index 09b5c09fb637e2..00000000000000 --- a/playground/vue/src-import/css.module.css +++ /dev/null @@ -1,7 +0,0 @@ -.one { - background: yellow; -} - -.two { - border: solid 1px red; -} diff --git a/playground/vue/src-import/script.ts b/playground/vue/src-import/script.ts deleted file mode 100644 index d20c098a7af289..00000000000000 --- a/playground/vue/src-import/script.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent } from 'vue' -import SrcImportStyle from './srcImportStyle.vue' -import SrcImportStyle2 from './srcImportStyle2.vue' -import SrcImportModuleStyle from './srcImportModuleStyle.vue' -import SrcImportModuleStyle2 from './srcImportModuleStyle2.vue' - -export default defineComponent({ - components: { - SrcImportStyle, - SrcImportStyle2, - SrcImportModuleStyle, - SrcImportModuleStyle2 - }, - setup() { - return { - msg: 'hello from script src!' - } - } -}) diff --git a/playground/vue/src-import/srcImportModuleStyle.vue b/playground/vue/src-import/srcImportModuleStyle.vue deleted file mode 100644 index f1e85abb6d2b12..00000000000000 --- a/playground/vue/src-import/srcImportModuleStyle.vue +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/playground/vue/src-import/srcImportStyle2.vue b/playground/vue/src-import/srcImportStyle2.vue deleted file mode 100644 index 1e0f327413103e..00000000000000 --- a/playground/vue/src-import/srcImportStyle2.vue +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/playground/vue/src-import/style.css b/playground/vue/src-import/style.css deleted file mode 100644 index 49ab2d93176f4f..00000000000000 --- a/playground/vue/src-import/style.css +++ /dev/null @@ -1,3 +0,0 @@ -.src-imports-style { - color: tan; -} diff --git a/playground/vue/src-import/style2.css b/playground/vue/src-import/style2.css deleted file mode 100644 index 8c93cb983cc09d..00000000000000 --- a/playground/vue/src-import/style2.css +++ /dev/null @@ -1,3 +0,0 @@ -.src-imports-script { - color: #0088ff; -} diff --git a/playground/vue/src-import/template.html b/playground/vue/src-import/template.html deleted file mode 100644 index af94a480e7e357..00000000000000 --- a/playground/vue/src-import/template.html +++ /dev/null @@ -1,7 +0,0 @@ -

SFC Src Imports

-
{{ msg }}
-
This should be tan
- - - - diff --git a/playground/vue/tsconfig.json b/playground/vue/tsconfig.json deleted file mode 100644 index bdc0eedc2244af..00000000000000 --- a/playground/vue/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "compilerOptions": { - // esbuild transpile should ignore this - "target": "ES5" - }, - "include": ["."] -} diff --git a/playground/vue/vite-env.d.ts b/playground/vue/vite-env.d.ts deleted file mode 100644 index 11f02fe2a0061d..00000000000000 --- a/playground/vue/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/playground/vue/vite.config.ts b/playground/vue/vite.config.ts deleted file mode 100644 index c1561ce2c2bd47..00000000000000 --- a/playground/vue/vite.config.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { defineConfig, splitVendorChunkPlugin } from 'vite' -import vuePlugin from '@vitejs/plugin-vue' -import { vueI18nPlugin } from './CustomBlockPlugin' - -export default defineConfig({ - resolve: { - alias: { - '/@': __dirname, - '@': __dirname - } - }, - plugins: [ - vuePlugin({ - reactivityTransform: true - }), - splitVendorChunkPlugin(), - vueI18nPlugin - ], - build: { - // to make tests faster - minify: false, - rollupOptions: { - output: { - // Test splitVendorChunkPlugin composition - manualChunks(id) { - if (id.includes('src-import')) { - return 'src-import' - } - } - } - } - }, - css: { - modules: { - localsConvention: 'camelCaseOnly' - } - } -}) diff --git a/playground/vue/worker.vue b/playground/vue/worker.vue deleted file mode 100644 index c5369fda742348..00000000000000 --- a/playground/vue/worker.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/playground/vue/workerTest.js b/playground/vue/workerTest.js deleted file mode 100644 index fcde5e19b30677..00000000000000 --- a/playground/vue/workerTest.js +++ /dev/null @@ -1 +0,0 @@ -self.postMessage('worker load!')

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 diff --git a/playground/vue-legacy/env.d.ts b/playground/vue-legacy/env.d.ts deleted file mode 100644 index 31dca6bb40c906..00000000000000 --- a/playground/vue-legacy/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module '*.png' diff --git a/playground/vue-legacy/index.html b/playground/vue-legacy/index.html deleted file mode 100644 index 0f7b79435ed47d..00000000000000 --- a/playground/vue-legacy/index.html +++ /dev/null @@ -1,7 +0,0 @@ -