Full Code of vitejs/vite for AI

main d63fb0044a31 cached
2368 files
4.2 MB
1.2M tokens
2250 symbols
2 requests
Download .txt
Showing preview only (4,857K chars total). Download the full file or copy to clipboard to get everything.
Repository: vitejs/vite
Branch: main
Commit: d63fb0044a31
Files: 2368
Total size: 4.2 MB

Directory structure:
gitextract_h4n11kqg/

├── .editorconfig
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   ├── docs.yml
│   │   └── feature_request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── commit-convention.md
│   ├── copilot-instructions.md
│   ├── renovate.json5
│   └── workflows/
│       ├── ci.yml
│       ├── copilot-setup-steps.yml
│       ├── ecosystem-ci-trigger.yml
│       ├── issue-close-require.yml
│       ├── issue-labeled.yml
│       ├── issue-template-check.yml
│       ├── lock-closed-issues.yml
│       ├── preview-release.yml
│       ├── publish.yml
│       ├── release-tag.yml
│       └── semantic-pull-request.yml
├── .gitignore
├── .prettierignore
├── .prettierrc.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs/
│   ├── .vitepress/
│   │   ├── buildEnd.config.ts
│   │   ├── config.ts
│   │   ├── inlined-scripts/
│   │   │   ├── banner.d.ts
│   │   │   └── banner.js
│   │   └── theme/
│   │       ├── components/
│   │       │   ├── AsideSponsors.vue
│   │       │   ├── BlogIndex.vue
│   │       │   ├── NonInheritBadge.vue
│   │       │   ├── ScrimbaLink.vue
│   │       │   ├── SponsorBanner.vue
│   │       │   ├── SupportedVersions.vue
│   │       │   ├── SvgImage.vue
│   │       │   └── YouTubeVideo.vue
│   │       ├── composables/
│   │       │   └── sponsor.ts
│   │       ├── index.ts
│   │       ├── landing/
│   │       │   ├── Community.vue
│   │       │   ├── FeatureGrid1.vue
│   │       │   ├── FeatureGrid2.vue
│   │       │   ├── Frameworks.vue
│   │       │   ├── Hero.vue
│   │       │   └── Layout.vue
│   │       ├── live/
│   │       │   ├── Events.vue
│   │       │   ├── Hero.vue
│   │       │   ├── Layout.vue
│   │       │   ├── TimeoutSwitcher.vue
│   │       │   ├── Timer.vue
│   │       │   ├── VideoIframe.vue
│   │       │   └── useYoutubePlayer.ts
│   │       └── styles.css
│   ├── _data/
│   │   ├── acknowledgements.data.ts
│   │   ├── blog.data.ts
│   │   └── team.js
│   ├── acknowledgements.md
│   ├── blog/
│   │   ├── announcing-vite2.md
│   │   ├── announcing-vite3.md
│   │   ├── announcing-vite4-3.md
│   │   ├── announcing-vite4.md
│   │   ├── announcing-vite5-1.md
│   │   ├── announcing-vite5.md
│   │   ├── announcing-vite6.md
│   │   ├── announcing-vite7.md
│   │   ├── announcing-vite8-beta.md
│   │   └── announcing-vite8.md
│   ├── blog.md
│   ├── changes/
│   │   ├── hotupdate-hook.md
│   │   ├── index.md
│   │   ├── per-environment-apis.md
│   │   ├── shared-plugins-during-build.md
│   │   ├── ssr-using-modulerunner.md
│   │   └── this-environment-in-hooks.md
│   ├── config/
│   │   ├── build-options.md
│   │   ├── dep-optimization-options.md
│   │   ├── index.md
│   │   ├── preview-options.md
│   │   ├── server-options.md
│   │   ├── shared-options.md
│   │   ├── ssr-options.md
│   │   └── worker-options.md
│   ├── guide/
│   │   ├── api-environment-frameworks.md
│   │   ├── api-environment-instances.md
│   │   ├── api-environment-plugins.md
│   │   ├── api-environment-runtimes.md
│   │   ├── api-environment.md
│   │   ├── api-hmr.md
│   │   ├── api-javascript.md
│   │   ├── api-plugin.md
│   │   ├── assets.md
│   │   ├── backend-integration.md
│   │   ├── build.md
│   │   ├── cli.md
│   │   ├── dep-pre-bundling.md
│   │   ├── env-and-mode.md
│   │   ├── features.md
│   │   ├── index.md
│   │   ├── migration.md
│   │   ├── performance.md
│   │   ├── philosophy.md
│   │   ├── ssr.md
│   │   ├── static-deploy-github-pages.yaml
│   │   ├── static-deploy.md
│   │   ├── troubleshooting.md
│   │   ├── using-plugins.md
│   │   └── why.md
│   ├── images/
│   │   └── diagrams.fig
│   ├── index.md
│   ├── live.md
│   ├── package.json
│   ├── plugins/
│   │   └── index.md
│   ├── public/
│   │   ├── _headers
│   │   └── _redirects
│   ├── releases.md
│   ├── team.md
│   └── tsconfig.json
├── eslint.config.js
├── netlify.toml
├── package.json
├── packages/
│   ├── create-vite/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   └── cli.spec.ts
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── template-lit/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       ├── index.css
│   │   │       └── my-element.js
│   │   ├── template-lit-ts/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── index.css
│   │   │   │   └── my-element.ts
│   │   │   └── tsconfig.json
│   │   ├── template-preact/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── app.css
│   │   │   │   ├── app.jsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.jsx
│   │   │   └── vite.config.js
│   │   ├── template-preact-ts/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── app.css
│   │   │   │   ├── app.tsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-qwik/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── app.css
│   │   │   │   ├── app.jsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.jsx
│   │   │   └── vite.config.js
│   │   ├── template-qwik-ts/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── app.css
│   │   │   │   ├── app.tsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-react/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── eslint.config.js
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.css
│   │   │   │   ├── App.jsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.jsx
│   │   │   └── vite.config.js
│   │   ├── template-react-ts/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── eslint.config.js
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.css
│   │   │   │   ├── App.tsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-solid/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.css
│   │   │   │   ├── App.jsx
│   │   │   │   ├── index.css
│   │   │   │   └── index.jsx
│   │   │   └── vite.config.js
│   │   ├── template-solid-ts/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.css
│   │   │   │   ├── App.tsx
│   │   │   │   ├── index.css
│   │   │   │   └── index.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-svelte/
│   │   │   ├── .vscode/
│   │   │   │   └── extensions.json
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── jsconfig.json
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.svelte
│   │   │   │   ├── app.css
│   │   │   │   ├── lib/
│   │   │   │   │   └── Counter.svelte
│   │   │   │   └── main.js
│   │   │   ├── svelte.config.js
│   │   │   └── vite.config.js
│   │   ├── template-svelte-ts/
│   │   │   ├── .vscode/
│   │   │   │   └── extensions.json
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.svelte
│   │   │   │   ├── app.css
│   │   │   │   ├── lib/
│   │   │   │   │   └── Counter.svelte
│   │   │   │   └── main.ts
│   │   │   ├── svelte.config.js
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-vanilla/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       ├── counter.js
│   │   │       ├── main.js
│   │   │       └── style.css
│   │   ├── template-vanilla-ts/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── counter.ts
│   │   │   │   ├── main.ts
│   │   │   │   └── style.css
│   │   │   └── tsconfig.json
│   │   ├── template-vue/
│   │   │   ├── .vscode/
│   │   │   │   └── extensions.json
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.vue
│   │   │   │   ├── components/
│   │   │   │   │   └── HelloWorld.vue
│   │   │   │   ├── main.js
│   │   │   │   └── style.css
│   │   │   └── vite.config.js
│   │   ├── template-vue-ts/
│   │   │   ├── .vscode/
│   │   │   │   └── extensions.json
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.vue
│   │   │   │   ├── components/
│   │   │   │   │   └── HelloWorld.vue
│   │   │   │   ├── main.ts
│   │   │   │   └── style.css
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── tsconfig.json
│   │   └── tsdown.config.ts
│   ├── plugin-legacy/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── __tests__/
│   │   │   │   ├── readme.spec.ts
│   │   │   │   └── snippets.spec.ts
│   │   │   ├── index.ts
│   │   │   ├── shims.d.ts
│   │   │   ├── snippets.ts
│   │   │   └── types.ts
│   │   ├── tsconfig.json
│   │   └── tsdown.config.ts
│   └── vite/
│       ├── CHANGELOG.md
│       ├── LICENSE.md
│       ├── README.md
│       ├── bin/
│       │   ├── openChrome.js
│       │   └── vite.js
│       ├── client.d.ts
│       ├── misc/
│       │   ├── false.d.ts
│       │   ├── false.js
│       │   ├── true.d.ts
│       │   └── true.js
│       ├── package.json
│       ├── rolldown.config.ts
│       ├── rolldown.dts.config.ts
│       ├── rollupLicensePlugin.ts
│       ├── scripts/
│       │   ├── benchCircularImport.ts
│       │   └── generateTarget.ts
│       ├── src/
│       │   ├── client/
│       │   │   ├── client.ts
│       │   │   ├── env.ts
│       │   │   ├── overlay.ts
│       │   │   └── tsconfig.json
│       │   ├── module-runner/
│       │   │   ├── __tests_dts__/
│       │   │   │   ├── importMeta.ts
│       │   │   │   └── tsconfig.json
│       │   │   ├── constants.ts
│       │   │   ├── createImportMeta.ts
│       │   │   ├── esmEvaluator.ts
│       │   │   ├── evaluatedModules.ts
│       │   │   ├── hmrHandler.ts
│       │   │   ├── hmrLogger.ts
│       │   │   ├── importMetaResolver.ts
│       │   │   ├── index.ts
│       │   │   ├── runner.ts
│       │   │   ├── sourcemap/
│       │   │   │   ├── decoder.ts
│       │   │   │   ├── index.ts
│       │   │   │   └── interceptor.ts
│       │   │   ├── tsconfig.json
│       │   │   ├── types.ts
│       │   │   └── utils.ts
│       │   ├── node/
│       │   │   ├── __tests__/
│       │   │   │   ├── __snapshots__/
│       │   │   │   │   └── utils.spec.ts.snap
│       │   │   │   ├── assetSource.spec.ts
│       │   │   │   ├── build.spec.ts
│       │   │   │   ├── config.spec.ts
│       │   │   │   ├── constants.spec.ts
│       │   │   │   ├── dev.spec.ts
│       │   │   │   ├── env.spec.ts
│       │   │   │   ├── environment.spec.ts
│       │   │   │   ├── external.spec.ts
│       │   │   │   ├── filterRegex.spec.ts
│       │   │   │   ├── fixtures/
│       │   │   │   │   ├── cjs-ssr-dep/
│       │   │   │   │   │   ├── index.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── config/
│       │   │   │   │   │   ├── entry/
│       │   │   │   │   │   │   ├── imports-field.ts
│       │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   ├── vite.config.import-attributes.ts
│       │   │   │   │   │   │   └── vite.config.ts
│       │   │   │   │   │   ├── import-meta/
│       │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   └── vite.config.ts
│       │   │   │   │   │   ├── loadConfigFromFile/
│       │   │   │   │   │   │   └── .gitkeep
│       │   │   │   │   │   ├── native-import/
│       │   │   │   │   │   │   └── basic.js
│       │   │   │   │   │   ├── plugin-module-condition/
│       │   │   │   │   │   │   ├── index.cjs
│       │   │   │   │   │   │   ├── index.d.ts
│       │   │   │   │   │   │   ├── index.mjs
│       │   │   │   │   │   │   ├── module.mjs
│       │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   ├── shebang/
│       │   │   │   │   │   │   └── vite.config.ts
│       │   │   │   │   │   └── siblings/
│       │   │   │   │   │       ├── foo.ts
│       │   │   │   │   │       └── package.json
│       │   │   │   │   ├── dynamic-import/
│       │   │   │   │   │   ├── dep.mjs
│       │   │   │   │   │   └── entry.mjs
│       │   │   │   │   ├── emit-assets/
│       │   │   │   │   │   ├── css-module.module.css
│       │   │   │   │   │   ├── css-normal.css
│       │   │   │   │   │   └── entry.mjs
│       │   │   │   │   ├── environment-alias/
│       │   │   │   │   │   ├── test.client.js
│       │   │   │   │   │   ├── test.rsc.js
│       │   │   │   │   │   └── test.ssr.js
│       │   │   │   │   ├── file-url/
│       │   │   │   │   │   ├── entry.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── runner-import/
│       │   │   │   │   │   ├── basic.ts
│       │   │   │   │   │   ├── cjs.js
│       │   │   │   │   │   ├── dynamic-import-dep.ts
│       │   │   │   │   │   ├── dynamic-import.ts
│       │   │   │   │   │   ├── plugin.ts
│       │   │   │   │   │   ├── vite.config.outside-pkg-import.mts
│       │   │   │   │   │   └── vite.config.ts
│       │   │   │   │   ├── scan-jsx-runtime/
│       │   │   │   │   │   ├── entry-jsx.tsx
│       │   │   │   │   │   ├── entry-no-jsx.js
│       │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   ├── shared-config-build/
│       │   │   │   │   │   └── emitAssets/
│       │   │   │   │   │       ├── entry.js
│       │   │   │   │   │       └── test.css
│       │   │   │   │   ├── shared-plugins/
│       │   │   │   │   │   └── minify/
│       │   │   │   │   │       └── entry.js
│       │   │   │   │   ├── test-dep-conditions/
│       │   │   │   │   │   ├── dir/
│       │   │   │   │   │   │   ├── index.default.js
│       │   │   │   │   │   │   └── index.module.js
│       │   │   │   │   │   ├── index.browser.js
│       │   │   │   │   │   ├── index.css
│       │   │   │   │   │   ├── index.custom1.js
│       │   │   │   │   │   ├── index.default.js
│       │   │   │   │   │   ├── index.worker.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── test-dep-conditions-app/
│       │   │   │   │   │   ├── entry-with-module.js
│       │   │   │   │   │   ├── entry.css
│       │   │   │   │   │   └── entry.js
│       │   │   │   │   ├── watch-rebuild-manifest/
│       │   │   │   │   │   ├── dep.js
│       │   │   │   │   │   ├── entry.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   └── worker-dynamic/
│       │   │   │   │       ├── dynamic.js
│       │   │   │   │       ├── main.js
│       │   │   │   │       └── worker.js
│       │   │   │   ├── http.spec.ts
│       │   │   │   ├── optimizer/
│       │   │   │   │   └── rolldownDepPlugin.spec.ts
│       │   │   │   ├── package.json
│       │   │   │   ├── packages/
│       │   │   │   │   ├── build-project/
│       │   │   │   │   │   └── index.html
│       │   │   │   │   ├── child/
│       │   │   │   │   │   ├── index.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── module/
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── name/
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── noname/
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── package.json
│       │   │   │   │   └── parent/
│       │   │   │   │       ├── index.ts
│       │   │   │   │       └── package.json
│       │   │   │   ├── plugins/
│       │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   └── license.spec.ts.snap
│       │   │   │   │   ├── assetImportMetaUrl.spec.ts
│       │   │   │   │   ├── css.spec.ts
│       │   │   │   │   ├── define.spec.ts
│       │   │   │   │   ├── dynamicImportVar/
│       │   │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   │   └── parse.spec.ts.snap
│       │   │   │   │   │   ├── mods/
│       │   │   │   │   │   │   ├── hello.js
│       │   │   │   │   │   │   └── hi.js
│       │   │   │   │   │   └── parse.spec.ts
│       │   │   │   │   ├── esbuild.spec.ts
│       │   │   │   │   ├── fixtures/
│       │   │   │   │   │   ├── css-module-compose/
│       │   │   │   │   │   │   └── css/
│       │   │   │   │   │   │       └── bar.module.css
│       │   │   │   │   │   ├── license/
│       │   │   │   │   │   │   ├── dep-licence-cc0/
│       │   │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   │   ├── licence
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── dep-license-mit/
│       │   │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   │   ├── license
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── dep-nested-license-isc/
│       │   │   │   │   │   │   │   ├── LICENSE
│       │   │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── index.html
│       │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   ├── oxc-tsconfigs/
│       │   │   │   │   │   │   ├── decorator-metadata/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── empty/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── jsx-complex-options/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── jsx-preserve/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── jsx-react-jsx/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── target-es2021/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── target-es2022/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── target-esnext/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── use-define-false/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   └── use-define-true/
│       │   │   │   │   │   │       └── tsconfig.json
│       │   │   │   │   │   └── worker-url/
│       │   │   │   │   │       ├── entry.js
│       │   │   │   │   │       └── worker.js
│       │   │   │   │   ├── hooks.spec.ts
│       │   │   │   │   ├── import.spec.ts
│       │   │   │   │   ├── importGlob/
│       │   │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   │   └── fixture.spec.ts.snap
│       │   │   │   │   │   ├── fixture-a/
│       │   │   │   │   │   │   ├── .foo/
│       │   │   │   │   │   │   │   └── test.ts
│       │   │   │   │   │   │   ├── .gitignore
│       │   │   │   │   │   │   ├── index.ts
│       │   │   │   │   │   │   ├── modules/
│       │   │   │   │   │   │   │   ├── a.ts
│       │   │   │   │   │   │   │   ├── b.ts
│       │   │   │   │   │   │   │   └── index.ts
│       │   │   │   │   │   │   └── sibling.ts
│       │   │   │   │   │   ├── fixture-b/
│       │   │   │   │   │   │   ├── a.ts
│       │   │   │   │   │   │   ├── b.ts
│       │   │   │   │   │   │   └── index.ts
│       │   │   │   │   │   ├── fixture.spec.ts
│       │   │   │   │   │   ├── parse.spec.ts
│       │   │   │   │   │   └── utils.spec.ts
│       │   │   │   │   ├── index.spec.ts
│       │   │   │   │   ├── license.spec.ts
│       │   │   │   │   ├── modulePreloadPolyfill/
│       │   │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   │   └── modulePreloadPolyfill.spec.ts.snap
│       │   │   │   │   │   └── modulePreloadPolyfill.spec.ts
│       │   │   │   │   ├── oxc.spec.ts
│       │   │   │   │   ├── pluginFilter.spec.ts
│       │   │   │   │   ├── terser.spec.ts
│       │   │   │   │   ├── wasm.spec.ts
│       │   │   │   │   ├── worker.spec.ts
│       │   │   │   │   └── workerImportMetaUrl.spec.ts
│       │   │   │   ├── resolve.spec.ts
│       │   │   │   ├── runnerImport.spec.ts
│       │   │   │   ├── scan.spec.ts
│       │   │   │   ├── shortcuts.spec.ts
│       │   │   │   ├── utils/
│       │   │   │   │   └── isFileReadable/
│       │   │   │   │       └── permission-test-file
│       │   │   │   └── utils.spec.ts
│       │   │   ├── __tests_dts__/
│       │   │   │   ├── config.ts
│       │   │   │   ├── plugin.ts
│       │   │   │   ├── tsconfig.json
│       │   │   │   ├── typeOptions.ts
│       │   │   │   └── utils.ts
│       │   │   ├── assetSource.ts
│       │   │   ├── baseEnvironment.ts
│       │   │   ├── build.ts
│       │   │   ├── cli.ts
│       │   │   ├── config.ts
│       │   │   ├── constants.ts
│       │   │   ├── deprecations.ts
│       │   │   ├── env.ts
│       │   │   ├── environment.ts
│       │   │   ├── external.ts
│       │   │   ├── http.ts
│       │   │   ├── idResolver.ts
│       │   │   ├── index.ts
│       │   │   ├── internalIndex.ts
│       │   │   ├── logger.ts
│       │   │   ├── nodeResolve.ts
│       │   │   ├── optimizer/
│       │   │   │   ├── index.ts
│       │   │   │   ├── optimizer.ts
│       │   │   │   ├── pluginConverter.ts
│       │   │   │   ├── resolve.ts
│       │   │   │   ├── rolldownDepPlugin.ts
│       │   │   │   └── scan.ts
│       │   │   ├── packages.ts
│       │   │   ├── plugin.ts
│       │   │   ├── plugins/
│       │   │   │   ├── asset.ts
│       │   │   │   ├── assetImportMetaUrl.ts
│       │   │   │   ├── clientInjections.ts
│       │   │   │   ├── css.ts
│       │   │   │   ├── define.ts
│       │   │   │   ├── dynamicImportVars.ts
│       │   │   │   ├── esbuild.ts
│       │   │   │   ├── esbuildBannerFooterCompatPlugin.ts
│       │   │   │   ├── forwardConsole.ts
│       │   │   │   ├── html.ts
│       │   │   │   ├── importAnalysis.ts
│       │   │   │   ├── importAnalysisBuild.ts
│       │   │   │   ├── importMetaGlob.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── json.ts
│       │   │   │   ├── license.ts
│       │   │   │   ├── manifest.ts
│       │   │   │   ├── modulePreloadPolyfill.ts
│       │   │   │   ├── optimizedDeps.ts
│       │   │   │   ├── oxc.ts
│       │   │   │   ├── pluginFilter.ts
│       │   │   │   ├── preAlias.ts
│       │   │   │   ├── prepareOutDir.ts
│       │   │   │   ├── reporter.ts
│       │   │   │   ├── resolve.ts
│       │   │   │   ├── terser.ts
│       │   │   │   ├── wasm.ts
│       │   │   │   ├── worker.ts
│       │   │   │   └── workerImportMetaUrl.ts
│       │   │   ├── preview.ts
│       │   │   ├── publicDir.ts
│       │   │   ├── server/
│       │   │   │   ├── __tests__/
│       │   │   │   │   ├── fixtures/
│       │   │   │   │   │   ├── lerna/
│       │   │   │   │   │   │   ├── lerna.json
│       │   │   │   │   │   │   └── nested/
│       │   │   │   │   │   │       └── package.json
│       │   │   │   │   │   ├── none/
│       │   │   │   │   │   │   └── nested/
│       │   │   │   │   │   │       └── package.json
│       │   │   │   │   │   ├── pnpm/
│       │   │   │   │   │   │   ├── nested/
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   └── pnpm-workspace.yaml
│       │   │   │   │   │   ├── watcher/
│       │   │   │   │   │   │   ├── config-deps/
│       │   │   │   │   │   │   │   └── foo.js
│       │   │   │   │   │   │   ├── custom-public/
│       │   │   │   │   │   │   │   └── foo.txt
│       │   │   │   │   │   │   ├── nested-root/
│       │   │   │   │   │   │   │   └── vite.config.js
│       │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   └── yarn/
│       │   │   │   │   │       ├── nested/
│       │   │   │   │   │       │   └── package.json
│       │   │   │   │   │       └── package.json
│       │   │   │   │   ├── moduleGraph.spec.ts
│       │   │   │   │   ├── pluginContainer.spec.ts
│       │   │   │   │   ├── search-root.spec.ts
│       │   │   │   │   ├── transformRequest.spec.ts
│       │   │   │   │   └── watcher.spec.ts
│       │   │   │   ├── environment.ts
│       │   │   │   ├── environments/
│       │   │   │   │   ├── fetchableEnvironments.ts
│       │   │   │   │   ├── fullBundleEnvironment.ts
│       │   │   │   │   └── runnableEnvironment.ts
│       │   │   │   ├── hmr.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── middlewares/
│       │   │   │   │   ├── __tests__/
│       │   │   │   │   │   ├── hostCheck.spec.ts
│       │   │   │   │   │   └── static.spec.ts
│       │   │   │   │   ├── base.ts
│       │   │   │   │   ├── error.ts
│       │   │   │   │   ├── hostCheck.ts
│       │   │   │   │   ├── htmlFallback.ts
│       │   │   │   │   ├── indexHtml.ts
│       │   │   │   │   ├── memoryFiles.ts
│       │   │   │   │   ├── notFound.ts
│       │   │   │   │   ├── proxy.ts
│       │   │   │   │   ├── rejectInvalidRequest.ts
│       │   │   │   │   ├── rejectNoCorsRequest.ts
│       │   │   │   │   ├── static.ts
│       │   │   │   │   ├── time.ts
│       │   │   │   │   └── transform.ts
│       │   │   │   ├── mixedModuleGraph.ts
│       │   │   │   ├── moduleGraph.ts
│       │   │   │   ├── openBrowser.ts
│       │   │   │   ├── pluginContainer.ts
│       │   │   │   ├── searchRoot.ts
│       │   │   │   ├── send.ts
│       │   │   │   ├── sourcemap.ts
│       │   │   │   ├── transformRequest.ts
│       │   │   │   ├── warmup.ts
│       │   │   │   └── ws.ts
│       │   │   ├── shortcuts.ts
│       │   │   ├── ssr/
│       │   │   │   ├── __tests__/
│       │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   └── ssrLoadModule.spec.ts.snap
│       │   │   │   │   ├── fixtures/
│       │   │   │   │   │   ├── bundled-with-sourcemaps/
│       │   │   │   │   │   │   └── bundle.js
│       │   │   │   │   │   ├── errors/
│       │   │   │   │   │   │   ├── syntax-error-dep.js
│       │   │   │   │   │   │   ├── syntax-error-dep.ts
│       │   │   │   │   │   │   ├── syntax-error.js
│       │   │   │   │   │   │   └── syntax-error.ts
│       │   │   │   │   │   ├── file-url/
│       │   │   │   │   │   │   ├── test space.js
│       │   │   │   │   │   │   └── test.js
│       │   │   │   │   │   ├── global/
│       │   │   │   │   │   │   ├── export.js
│       │   │   │   │   │   │   └── test.js
│       │   │   │   │   │   ├── json/
│       │   │   │   │   │   │   └── test.json
│       │   │   │   │   │   ├── modules/
│       │   │   │   │   │   │   ├── has-error.js
│       │   │   │   │   │   │   ├── has-invalid-import.js
│       │   │   │   │   │   │   └── import-meta.js
│       │   │   │   │   │   ├── multi-source-sourcemaps/
│       │   │   │   │   │   │   ├── dist.js
│       │   │   │   │   │   │   ├── entrypoint.js
│       │   │   │   │   │   │   └── nested-directory/
│       │   │   │   │   │   │       └── nested-file.js
│       │   │   │   │   │   └── named-overwrite-all/
│       │   │   │   │   │       ├── dep1.js
│       │   │   │   │   │       ├── dep2.js
│       │   │   │   │   │       └── main.js
│       │   │   │   │   ├── ssrLoadModule.spec.ts
│       │   │   │   │   ├── ssrStacktrace.spec.ts
│       │   │   │   │   └── ssrTransform.spec.ts
│       │   │   │   ├── fetchModule.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── runnerImport.ts
│       │   │   │   ├── runtime/
│       │   │   │   │   ├── __tests__/
│       │   │   │   │   │   ├── fixtures/
│       │   │   │   │   │   │   ├── a.ts
│       │   │   │   │   │   │   ├── assets/
│       │   │   │   │   │   │   │   └── placeholder.txt
│       │   │   │   │   │   │   ├── assets.js
│       │   │   │   │   │   │   ├── b.ts
│       │   │   │   │   │   │   ├── basic.js
│       │   │   │   │   │   │   ├── builtin-import.ts
│       │   │   │   │   │   │   ├── c.ts
│       │   │   │   │   │   │   ├── circular/
│       │   │   │   │   │   │   │   ├── circular-a.js
│       │   │   │   │   │   │   │   ├── circular-b.js
│       │   │   │   │   │   │   │   └── circular-index.js
│       │   │   │   │   │   │   ├── cjs-external/
│       │   │   │   │   │   │   │   ├── index.cjs
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── cjs-external-existing.js
│       │   │   │   │   │   │   ├── cjs-external-non-existing.js
│       │   │   │   │   │   │   ├── cyclic/
│       │   │   │   │   │   │   │   ├── action.js
│       │   │   │   │   │   │   │   ├── entry-cyclic.js
│       │   │   │   │   │   │   │   └── entry.js
│       │   │   │   │   │   │   ├── cyclic2/
│       │   │   │   │   │   │   │   ├── README.md
│       │   │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   │   ├── test1/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test2/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test3/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test4/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test5/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test6/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test7/
│       │   │   │   │   │   │   │   │   ├── Ion.js
│       │   │   │   │   │   │   │   │   ├── IonTypes.js
│       │   │   │   │   │   │   │   │   ├── README.md
│       │   │   │   │   │   │   │   │   └── dom/
│       │   │   │   │   │   │   │   │       ├── Blob.js
│       │   │   │   │   │   │   │   │       └── index.js
│       │   │   │   │   │   │   │   └── test9/
│       │   │   │   │   │   │   │       ├── dep.js
│       │   │   │   │   │   │   │       └── index.js
│       │   │   │   │   │   │   ├── d.ts
│       │   │   │   │   │   │   ├── default-string.ts
│       │   │   │   │   │   │   ├── dynamic-import.js
│       │   │   │   │   │   │   ├── esm-external/
│       │   │   │   │   │   │   │   ├── index.mjs
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── esm-external-existing.js
│       │   │   │   │   │   │   ├── esm-external-non-existing.js
│       │   │   │   │   │   │   ├── execution-order-re-export/
│       │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   ├── has-error-deep.ts
│       │   │   │   │   │   │   ├── has-error-first-comment.ts
│       │   │   │   │   │   │   ├── has-error-first.js
│       │   │   │   │   │   │   ├── has-error.js
│       │   │   │   │   │   │   ├── hmr.js
│       │   │   │   │   │   │   ├── import-external.ts
│       │   │   │   │   │   │   ├── installed.js
│       │   │   │   │   │   │   ├── invalid-package/
│       │   │   │   │   │   │   │   ├── deps/
│       │   │   │   │   │   │   │   │   └── test-dep-invalid-exports/
│       │   │   │   │   │   │   │   │       └── package.json
│       │   │   │   │   │   │   │   └── test.js
│       │   │   │   │   │   │   ├── live-binding/
│       │   │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   │   ├── test1/
│       │   │   │   │   │   │   │   │   ├── dep.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test2/
│       │   │   │   │   │   │   │   │   ├── dep.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test3/
│       │   │   │   │   │   │   │   │   ├── dep.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   └── test4/
│       │   │   │   │   │   │   │       ├── dep.js
│       │   │   │   │   │   │   │       └── index.js
│       │   │   │   │   │   │   ├── native.js
│       │   │   │   │   │   │   ├── no-this/
│       │   │   │   │   │   │   │   ├── importee.js
│       │   │   │   │   │   │   │   └── importer.js
│       │   │   │   │   │   │   ├── oxc-runtime-helper.ts
│       │   │   │   │   │   │   ├── pre-source-mapped-file.js
│       │   │   │   │   │   │   ├── simple.js
│       │   │   │   │   │   │   ├── string-literal-sourcemap.ts
│       │   │   │   │   │   │   ├── test.css
│       │   │   │   │   │   │   ├── test.module.css
│       │   │   │   │   │   │   ├── throws-error-method.ts
│       │   │   │   │   │   │   ├── top-level-object.js
│       │   │   │   │   │   │   ├── virtual.js
│       │   │   │   │   │   │   ├── worker.invoke.mjs
│       │   │   │   │   │   │   └── worker.mjs
│       │   │   │   │   │   ├── package.json
│       │   │   │   │   │   ├── server-hmr.spec.ts
│       │   │   │   │   │   ├── server-no-hmr.spec.ts
│       │   │   │   │   │   ├── server-runtime.spec.ts
│       │   │   │   │   │   ├── server-source-maps.spec.ts
│       │   │   │   │   │   ├── server-worker-runner.invoke.spec.ts
│       │   │   │   │   │   ├── server-worker-runner.spec.ts
│       │   │   │   │   │   └── utils.ts
│       │   │   │   │   └── serverModuleRunner.ts
│       │   │   │   ├── ssrManifestPlugin.ts
│       │   │   │   ├── ssrModuleLoader.ts
│       │   │   │   ├── ssrStacktrace.ts
│       │   │   │   └── ssrTransform.ts
│       │   │   ├── tsconfig.json
│       │   │   ├── typeUtils.ts
│       │   │   ├── utils.ts
│       │   │   └── watch.ts
│       │   ├── shared/
│       │   │   ├── __tests__/
│       │   │   │   └── forwardConsole.spec.ts
│       │   │   ├── builtin.ts
│       │   │   ├── constants.ts
│       │   │   ├── forwardConsole.ts
│       │   │   ├── hmr.ts
│       │   │   ├── hmrHandler.ts
│       │   │   ├── invokeMethods.ts
│       │   │   ├── moduleRunnerTransport.ts
│       │   │   ├── ssrTransform.ts
│       │   │   ├── tsconfig.json
│       │   │   └── utils.ts
│       │   └── types/
│       │       ├── alias.d.ts
│       │       ├── anymatch.d.ts
│       │       ├── chokidar.d.ts
│       │       ├── commonjs.d.ts
│       │       ├── connect.d.ts
│       │       ├── dynamicImportVars.d.ts
│       │       ├── package.json
│       │       ├── shims.d.ts
│       │       └── ws.d.ts
│       ├── tsconfig.base.json
│       ├── tsconfig.check.json
│       ├── tsconfig.json
│       └── types/
│           ├── customEvent.d.ts
│           ├── hmrPayload.d.ts
│           ├── hot.d.ts
│           ├── import-meta.d.ts
│           ├── importGlob.d.ts
│           ├── importMeta.d.ts
│           ├── internal/
│           │   ├── cssPreprocessorOptions.d.ts
│           │   ├── esbuildOptions.d.ts
│           │   ├── lightningcssOptions.d.ts
│           │   ├── rollupTypeCompat.d.ts
│           │   └── terserOptions.d.ts
│           └── metadata.d.ts
├── patches/
│   ├── chokidar@3.6.0.patch
│   ├── dotenv-expand@12.0.3.patch
│   └── sirv@3.0.2.patch
├── playground/
│   ├── alias/
│   │   ├── __tests__/
│   │   │   └── alias.spec.ts
│   │   ├── customResolver.js
│   │   ├── dir/
│   │   │   ├── from-script-src.js
│   │   │   ├── module/
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── test.css
│   │   │   ├── test.js
│   │   │   └── url_conflict.js
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── test.js
│   │   └── vite.config.js
│   ├── assets/
│   │   ├── __tests__/
│   │   │   ├── assets.spec.ts
│   │   │   ├── encoded-base/
│   │   │   │   └── assets-encoded-base.spec.ts
│   │   │   ├── relative-base/
│   │   │   │   └── assets-relative-base.spec.ts
│   │   │   ├── runtime-base/
│   │   │   │   └── assets-runtime-base.spec.ts
│   │   │   └── url-base/
│   │   │       └── assets-url-base.spec.ts
│   │   ├── asset/
│   │   │   ├── main.js
│   │   │   └── style.css
│   │   ├── css/
│   │   │   ├── css-url-url.css
│   │   │   ├── css-url.css
│   │   │   ├── fonts.css
│   │   │   ├── foo.module.css
│   │   │   ├── icons.css
│   │   │   ├── import.css
│   │   │   ├── manual-chunks.css
│   │   │   └── nested/
│   │   │       └── at-imported-css-url.css
│   │   ├── foo.js
│   │   ├── index.html
│   │   ├── manifest.json
│   │   ├── multiline-import-meta-url.js
│   │   ├── nested/
│   │   │   ├── foo.unknown
│   │   │   ├── partial.html
│   │   │   └── test.js
│   │   ├── package.json
│   │   ├── static/
│   │   │   ├── bar
│   │   │   ├── foo.css
│   │   │   ├── foo.json
│   │   │   ├── foo.txt
│   │   │   ├── import-expression.js
│   │   │   ├── raw.css
│   │   │   ├── raw.js
│   │   │   ├── raw.mts
│   │   │   └── raw.ts
│   │   ├── vite.config-encoded-base.js
│   │   ├── vite.config-relative-base.js
│   │   ├── vite.config-runtime-base.js
│   │   ├── vite.config-url-base.js
│   │   ├── vite.config.js
│   │   └── テスト-測試-white space.js
│   ├── assets-sanitize/
│   │   ├── __tests__/
│   │   │   └── assets-sanitize.spec.ts
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── backend-integration/
│   │   ├── __tests__/
│   │   │   └── backend-integration.spec.ts
│   │   ├── dir/
│   │   │   ├── custom.css
│   │   │   └── foo.css
│   │   ├── frontend/
│   │   │   ├── entrypoints/
│   │   │   │   ├── foo.pcss
│   │   │   │   ├── global.css
│   │   │   │   ├── index.html
│   │   │   │   ├── main.ts
│   │   │   │   └── nested/
│   │   │   │       ├── blue.scss
│   │   │   │       └── sub.ts
│   │   │   └── styles/
│   │   │       ├── background.css
│   │   │       ├── imported.css
│   │   │       ├── tailwind.css
│   │   │       └── url.css
│   │   ├── package.json
│   │   ├── references.css
│   │   └── vite.config.js
│   ├── base-conflict/
│   │   ├── __tests__/
│   │   │   └── base-conflict.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── importee.ts
│   │   │   ├── main.ts
│   │   │   └── virtualModules.d.ts
│   │   └── vite.config.ts
│   ├── build-old/
│   │   ├── __tests__/
│   │   │   └── build-old.spec.ts
│   │   ├── dynamic.js
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── cli/
│   │   ├── __tests__/
│   │   │   ├── cli.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── cli-module/
│   │   ├── __tests__/
│   │   │   ├── cli-module.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── client-reload/
│   │   ├── __tests__/
│   │   │   ├── client-reload.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.ts
│   ├── csp/
│   │   ├── __tests__/
│   │   │   └── csp.spec.ts
│   │   ├── dynamic.css
│   │   ├── dynamic.js
│   │   ├── from-js.css
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── linked.css
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── css/
│   │   ├── __tests__/
│   │   │   ├── css.spec.ts
│   │   │   ├── lightningcss/
│   │   │   │   └── lightningcss.spec.ts
│   │   │   ├── no-css-minify/
│   │   │   │   └── css-no-css-minify.spec.ts
│   │   │   ├── postcss-plugins-different-dir/
│   │   │   │   ├── css-postcss-plugins-different-dir.spec.ts
│   │   │   │   └── serve.ts
│   │   │   ├── same-file-name/
│   │   │   │   └── css-same-file-name.spec.ts
│   │   │   ├── sass-modern-compiler-build/
│   │   │   │   └── sass-modern-compiler.spec.ts
│   │   │   ├── sass-tests.ts
│   │   │   └── tests.ts
│   │   ├── aliased/
│   │   │   ├── bar.module.css
│   │   │   └── foo.css
│   │   ├── async/
│   │   │   ├── async-1.css
│   │   │   ├── async-1.js
│   │   │   ├── async-2.css
│   │   │   ├── async-2.js
│   │   │   ├── async-3.js
│   │   │   ├── async-3.module.css
│   │   │   ├── base.css
│   │   │   ├── base.js
│   │   │   └── index.js
│   │   ├── async-treeshaken.css
│   │   ├── async-treeshaken.js
│   │   ├── async.css
│   │   ├── async.js
│   │   ├── charset.css
│   │   ├── composed.module.css
│   │   ├── composed.module.less
│   │   ├── composed.module.scss
│   │   ├── composes-path-resolving.module.css
│   │   ├── css-dep/
│   │   │   ├── index.css
│   │   │   ├── index.js
│   │   │   ├── index.scss
│   │   │   ├── index.styl
│   │   │   └── package.json
│   │   ├── css-dep-exports/
│   │   │   ├── foo1.scss
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   ├── style.css
│   │   │   └── style.scss
│   │   ├── css-js-dep/
│   │   │   ├── bar.module.css
│   │   │   ├── foo.css
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── css-proxy-dep/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── css-proxy-dep-nested/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── dep.css
│   │   ├── empty.css
│   │   ├── file-absolute.scss
│   │   ├── folder with space/
│   │   │   └── space.css
│   │   ├── glob-dep/
│   │   │   ├── bar.css
│   │   │   ├── foo.css
│   │   │   └── nested (dir)/
│   │   │       └── baz.css
│   │   ├── glob-dep.css
│   │   ├── glob-import/
│   │   │   ├── bar.css
│   │   │   └── foo.css
│   │   ├── imported-at-import.css
│   │   ├── imported.css
│   │   ├── imported.scss
│   │   ├── imports-field.css
│   │   ├── imports-imports-field.css
│   │   ├── index.html
│   │   ├── inline.module.css
│   │   ├── inlined.css
│   │   ├── jsfile.css.js
│   │   ├── layered/
│   │   │   ├── blue.css
│   │   │   ├── green.css
│   │   │   └── index.css
│   │   ├── less/
│   │   │   ├── components/
│   │   │   │   └── form.less
│   │   │   └── ommer.less
│   │   ├── less-plugin/
│   │   │   └── test.js
│   │   ├── less-plugin.less
│   │   ├── less.less
│   │   ├── lightningcss-plugins.js
│   │   ├── linked-at-import.css
│   │   ├── linked.css
│   │   ├── main.js
│   │   ├── manual-chunk.css
│   │   ├── minify.css
│   │   ├── mod.module.css
│   │   ├── mod.module.scss
│   │   ├── nested/
│   │   │   ├── _index.scss
│   │   │   ├── _partial.scss
│   │   │   ├── css-in-less-2.less
│   │   │   ├── css-in-less.css
│   │   │   ├── css-in-less.less
│   │   │   ├── css-in-scss.css
│   │   │   ├── nested.less
│   │   │   ├── nested.sss
│   │   │   ├── nested.styl
│   │   │   ├── relative.scss
│   │   │   ├── replacement-alias.scss
│   │   │   └── root-relative.scss
│   │   ├── options/
│   │   │   ├── absolute-import.styl
│   │   │   └── relative-import.styl
│   │   ├── package.json
│   │   ├── pkg-dep/
│   │   │   ├── _index.scss
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── postcss-caching/
│   │   │   ├── blue-app/
│   │   │   │   ├── imported.css
│   │   │   │   ├── index.html
│   │   │   │   ├── main.js
│   │   │   │   ├── package.json
│   │   │   │   └── postcss.config.js
│   │   │   ├── css.spec.ts
│   │   │   ├── green-app/
│   │   │   │   ├── imported.css
│   │   │   │   ├── index.html
│   │   │   │   ├── main.js
│   │   │   │   ├── package.json
│   │   │   │   └── postcss.config.js
│   │   │   └── serve.ts
│   │   ├── postcss-inject-url.css
│   │   ├── postcss-source-input.css
│   │   ├── postcss.config.js
│   │   ├── raw-imported.css
│   │   ├── same-name/
│   │   │   ├── sub1/
│   │   │   │   ├── sub.css
│   │   │   │   └── sub.js
│   │   │   └── sub2/
│   │   │       ├── sub.css
│   │   │       └── sub.js
│   │   ├── sass-modern-compiler-build/
│   │   │   ├── entry1.scss
│   │   │   └── entry2.scss
│   │   ├── sass.scss
│   │   ├── scss-dir/
│   │   │   ├── dir/
│   │   │   │   └── index.scss
│   │   │   └── main.scss
│   │   ├── scss-proxy-dep/
│   │   │   ├── index.scss
│   │   │   └── package.json
│   │   ├── scss-proxy-dep-nested/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── stylus.styl
│   │   ├── sugarss.sss
│   │   ├── treeshake-module/
│   │   │   ├── a.js
│   │   │   ├── a.module.css
│   │   │   ├── b.js
│   │   │   ├── b.module.css
│   │   │   └── index.js
│   │   ├── treeshake-scoped/
│   │   │   ├── a-scoped.css
│   │   │   ├── a.js
│   │   │   ├── b-scoped.css
│   │   │   ├── b.js
│   │   │   ├── c-scoped.css
│   │   │   ├── c.js
│   │   │   ├── d-scoped.css
│   │   │   ├── d.js
│   │   │   ├── index.html
│   │   │   ├── index.js
│   │   │   └── order/
│   │   │       ├── a-scoped.css
│   │   │       ├── a.js
│   │   │       ├── after.css
│   │   │       └── before.css
│   │   ├── unsupported.css
│   │   ├── url-imported.css
│   │   ├── vite.config-lightningcss.js
│   │   ├── vite.config-no-css-minify.js
│   │   ├── vite.config-relative-base.js
│   │   ├── vite.config-same-file-name.js
│   │   ├── vite.config-sass-modern-compiler-build.js
│   │   ├── vite.config.js
│   │   └── weapp.wxss
│   ├── css-codesplit/
│   │   ├── __tests__/
│   │   │   ├── css-codesplit-consistent.spec.ts
│   │   │   └── css-codesplit.spec.ts
│   │   ├── async-js.css
│   │   ├── async-js.js
│   │   ├── async.css
│   │   ├── chunk.css
│   │   ├── index.html
│   │   ├── inline.css
│   │   ├── main.css
│   │   ├── main.js
│   │   ├── mod.module.css
│   │   ├── order/
│   │   │   ├── base.css
│   │   │   ├── dynamic.css
│   │   │   ├── index.js
│   │   │   └── insert.js
│   │   ├── other.js
│   │   ├── package.json
│   │   ├── shared-css-empty-1.js
│   │   ├── shared-css-empty-2.js
│   │   ├── shared-css-main.js
│   │   ├── shared-css-no-js.html
│   │   ├── shared-css-theme.css
│   │   ├── shared-css-with-js.html
│   │   ├── style.css
│   │   ├── style2.css
│   │   ├── style2.js
│   │   └── vite.config.js
│   ├── css-codesplit-cjs/
│   │   ├── __tests__/
│   │   │   └── css-codesplit-cjs.spec.ts
│   │   ├── index.html
│   │   ├── main.css
│   │   ├── main.js
│   │   ├── other.js
│   │   ├── package.json
│   │   ├── style.css
│   │   └── vite.config.js
│   ├── css-dynamic-import/
│   │   ├── __tests__/
│   │   │   ├── css-dynamic-import.spec.ts
│   │   │   └── serve.ts
│   │   ├── dynamic.css
│   │   ├── dynamic.js
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── static.css
│   │   └── static.js
│   ├── css-lightningcss/
│   │   ├── __tests__/
│   │   │   └── css-lightningcss.spec.ts
│   │   ├── composed.module.css
│   │   ├── composes-path-resolving.module.css
│   │   ├── css-url.css
│   │   ├── external-url.css
│   │   ├── imported-at-import.css
│   │   ├── imported.css
│   │   ├── index.html
│   │   ├── inline.module.css
│   │   ├── inlined.css
│   │   ├── linked-at-import.css
│   │   ├── linked.css
│   │   ├── main.js
│   │   ├── minify.css
│   │   ├── mod.module.css
│   │   ├── nested/
│   │   │   └── nested.css
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── css-lightningcss-proxy/
│   │   ├── __tests__/
│   │   │   ├── css-lightningcss-proxy.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── server.js
│   ├── css-lightningcss-root/
│   │   ├── __tests__/
│   │   │   └── css-lightningcss-root.spec.ts
│   │   ├── package.json
│   │   ├── root/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── url-dep.css
│   │   └── vite.config.js
│   ├── css-no-codesplit/
│   │   ├── __tests__/
│   │   │   └── css-no-codesplit.spec.ts
│   │   ├── async-js.css
│   │   ├── async-js.js
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── shared-linked.css
│   │   ├── sub.html
│   │   └── vite.config.js
│   ├── css-sourcemap/
│   │   ├── __tests__/
│   │   │   ├── css-sourcemap.spec.ts
│   │   │   ├── lib-entry/
│   │   │   │   └── css-sourcemap-lib-entry.spec.ts
│   │   │   └── lightningcss/
│   │   │       └── lightningcss.spec.ts
│   │   ├── be-imported.css
│   │   ├── imported-nested.sass
│   │   ├── imported-with-import.css
│   │   ├── imported.css
│   │   ├── imported.less
│   │   ├── imported.module.sass
│   │   ├── imported.sass
│   │   ├── imported.sss
│   │   ├── imported.styl
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── input-map.css
│   │   ├── input-map.src.css
│   │   ├── linked-with-import.css
│   │   ├── linked.css
│   │   ├── package.json
│   │   ├── vite.config-lib-entry.js
│   │   ├── vite.config-lightningcss.js
│   │   └── vite.config.js
│   ├── data-uri/
│   │   ├── __tests__/
│   │   │   └── data-uri.spec.ts
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── define/
│   │   ├── __tests__/
│   │   │   └── define.spec.ts
│   │   ├── commonjs-dep/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── data.json
│   │   ├── index.html
│   │   ├── optional-env.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── devtools/
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── counter.ts
│   │   │   └── main.ts
│   │   └── vite.config.ts
│   ├── dynamic-import/
│   │   ├── (app)/
│   │   │   ├── main.js
│   │   │   └── nest/
│   │   │       └── index.js
│   │   ├── __tests__/
│   │   │   └── dynamic-import.spec.ts
│   │   ├── alias/
│   │   │   ├── hello.js
│   │   │   ├── hi.js
│   │   │   ├── url.js
│   │   │   └── worker.js
│   │   ├── css/
│   │   │   └── index.css
│   │   ├── files/
│   │   │   ├── mxd.js
│   │   │   └── mxd.json
│   │   ├── index.html
│   │   ├── nested/
│   │   │   ├── deps.js
│   │   │   ├── hello.js
│   │   │   ├── index.js
│   │   │   ├── nested/
│   │   │   │   └── self.js
│   │   │   ├── self.js
│   │   │   ├── shared.js
│   │   │   ├── static.js
│   │   │   └── treeshaken/
│   │   │       ├── syntax.js
│   │   │       └── treeshaken.js
│   │   ├── package.json
│   │   ├── pkg/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── pkg.css
│   │   ├── views/
│   │   │   ├── bar.js
│   │   │   ├── baz.js
│   │   │   ├── foo.js
│   │   │   └── qux.js
│   │   └── vite.config.js
│   ├── dynamic-import-inline/
│   │   ├── __tests__/
│   │   │   └── dynamic-import-inline.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── foo.js
│   │   │   └── index.js
│   │   └── vite.config.js
│   ├── env/
│   │   ├── __tests__/
│   │   │   └── env.spec.ts
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── env-nested/
│   │   ├── __tests__/
│   │   │   └── env-nested.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── environment-react-ssr/
│   │   ├── __tests__/
│   │   │   └── environment-react-ssr.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── entry-client.tsx
│   │   │   ├── entry-server.tsx
│   │   │   └── root.tsx
│   │   ├── tsconfig.json
│   │   └── vite.config.ts
│   ├── extensions/
│   │   ├── __tests__/
│   │   │   └── extensions.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── external/
│   │   ├── __tests__/
│   │   │   └── external.spec.ts
│   │   ├── dep-that-imports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-that-requires/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── slash@3.0.0.js
│   │   ├── src/
│   │   │   ├── main.js
│   │   │   └── require-polyfill.js
│   │   └── vite.config.js
│   ├── forward-console/
│   │   ├── __test__/
│   │   │   └── forward-console.spec.ts
│   │   ├── fixtures/
│   │   │   └── throw-dep/
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── main.ts
│   │   └── vite.config.ts
│   ├── fs-serve/
│   │   ├── __tests__/
│   │   │   ├── base/
│   │   │   │   └── fs-serve-base.spec.ts
│   │   │   ├── commonTests.ts
│   │   │   ├── deny/
│   │   │   │   └── fs-serve-deny.spec.ts
│   │   │   └── fs-serve.spec.ts
│   │   ├── entry.js
│   │   ├── nested/
│   │   │   └── foo.js
│   │   ├── package.json
│   │   ├── root/
│   │   │   ├── src/
│   │   │   │   ├── code.js
│   │   │   │   ├── deny/
│   │   │   │   │   ├── .deny
│   │   │   │   │   └── deny.txt
│   │   │   │   ├── dummy.crt
│   │   │   │   ├── index.html
│   │   │   │   ├── safe.txt
│   │   │   │   ├── special characters åäö/
│   │   │   │   │   ├── safe.json
│   │   │   │   │   └── safe.txt
│   │   │   │   └── subdir/
│   │   │   │       └── safe.txt
│   │   │   ├── svgVirtualModulePlugin.ts
│   │   │   ├── unsafe.html
│   │   │   ├── unsafe.txt
│   │   │   ├── vite.config-base.js
│   │   │   ├── vite.config-deny.js
│   │   │   └── vite.config.js
│   │   ├── safe.json
│   │   ├── unsafe.html
│   │   └── unsafe.json
│   ├── glob-import/
│   │   ├── __tests__/
│   │   │   └── glob-import.spec.ts
│   │   ├── array-test-dir/
│   │   │   ├── excluded.js
│   │   │   └── included.js
│   │   ├── dir/
│   │   │   ├── alias.js
│   │   │   ├── baz.json
│   │   │   ├── foo.css
│   │   │   ├── foo.js
│   │   │   ├── index.js
│   │   │   ├── nested/
│   │   │   │   └── bar.js
│   │   │   └── quote'.js
│   │   ├── escape/
│   │   │   ├── (parenthesis)/
│   │   │   │   ├── glob.js
│   │   │   │   └── mod/
│   │   │   │       └── index.js
│   │   │   ├── [brackets]/
│   │   │   │   ├── glob.js
│   │   │   │   └── mod/
│   │   │   │       └── index.js
│   │   │   └── {curlies}/
│   │   │       ├── glob.js
│   │   │       └── mod/
│   │   │           └── index.js
│   │   ├── import-meta-glob-pkg/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── imports-path/
│   │   │   ├── bar.js
│   │   │   └── foo.js
│   │   ├── index.html
│   │   ├── no-tree-shake.css
│   │   ├── package.json
│   │   ├── pkg-pages/
│   │   │   └── foo.js
│   │   ├── side-effect/
│   │   │   ├── writedom.js
│   │   │   └── writetodom.js
│   │   ├── transform-visibility.js
│   │   ├── tree-shake.css
│   │   └── vite.config.ts
│   ├── hmr/
│   │   ├── __tests__/
│   │   │   └── hmr.spec.ts
│   │   ├── accept-exports/
│   │   │   ├── dynamic-imports/
│   │   │   │   ├── deps-all-accepted.ts
│   │   │   │   ├── deps-some-accepted.ts
│   │   │   │   ├── dynamic-imports.ts
│   │   │   │   └── index.html
│   │   │   ├── export-from/
│   │   │   │   ├── depA.ts
│   │   │   │   ├── export-from.ts
│   │   │   │   ├── hub.ts
│   │   │   │   └── index.html
│   │   │   ├── main-accepted/
│   │   │   │   ├── callback.ts
│   │   │   │   ├── dep.ts
│   │   │   │   ├── index.html
│   │   │   │   ├── main-accepted.ts
│   │   │   │   └── target.ts
│   │   │   ├── main-non-accepted/
│   │   │   │   ├── default.ts
│   │   │   │   ├── dep.ts
│   │   │   │   ├── index.html
│   │   │   │   ├── main-non-accepted.ts
│   │   │   │   └── named.ts
│   │   │   ├── reexports.bak/
│   │   │   │   ├── accept-named.ts
│   │   │   │   ├── index.html
│   │   │   │   ├── reexports.ts
│   │   │   │   └── source.ts
│   │   │   ├── side-effects/
│   │   │   │   ├── index.html
│   │   │   │   └── side-effects.ts
│   │   │   ├── star-imports/
│   │   │   │   ├── deps-all-accepted.ts
│   │   │   │   ├── deps-some-accepted.ts
│   │   │   │   ├── index.html
│   │   │   │   └── star-imports.ts
│   │   │   └── unused-exports/
│   │   │       ├── index.html
│   │   │       ├── index.ts
│   │   │       ├── unused.ts
│   │   │       └── used.ts
│   │   ├── circular/
│   │   │   ├── index.js
│   │   │   ├── mod-a.js
│   │   │   ├── mod-b.js
│   │   │   └── mod-c.js
│   │   ├── counter/
│   │   │   ├── dep.ts
│   │   │   ├── index.html
│   │   │   └── index.ts
│   │   ├── css-deps/
│   │   │   ├── dep.js
│   │   │   ├── index.html
│   │   │   └── main.css
│   │   ├── css-link/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   ├── plugin.ts
│   │   │   └── styles.css
│   │   ├── customFile.js
│   │   ├── event.d.ts
│   │   ├── file-delete-restore/
│   │   │   ├── child.js
│   │   │   ├── index.js
│   │   │   ├── parent.js
│   │   │   └── runtime.js
│   │   ├── global.css
│   │   ├── hmr.ts
│   │   ├── hmrDep.js
│   │   ├── hmrNestedDep.js
│   │   ├── importedVirtual.js
│   │   ├── importing-updated/
│   │   │   ├── a.js
│   │   │   ├── b.js
│   │   │   └── index.js
│   │   ├── index.html
│   │   ├── intermediate-file-delete/
│   │   │   ├── display.js
│   │   │   ├── index.js
│   │   │   └── re-export.js
│   │   ├── invalidation/
│   │   │   ├── child.js
│   │   │   ├── parent.js
│   │   │   └── root.js
│   │   ├── invalidation-circular-deps/
│   │   │   ├── circular-invalidate/
│   │   │   │   ├── child.js
│   │   │   │   └── parent.js
│   │   │   ├── index.js
│   │   │   └── invalidate-handled-in-circle/
│   │   │       ├── child.js
│   │   │       └── parent.js
│   │   ├── missing-file/
│   │   │   ├── index.html
│   │   │   └── main.js
│   │   ├── missing-import/
│   │   │   ├── a.js
│   │   │   ├── index.html
│   │   │   └── main.js
│   │   ├── modules.d.ts
│   │   ├── optional-chaining/
│   │   │   ├── child.js
│   │   │   └── parent.js
│   │   ├── package.json
│   │   ├── prune/
│   │   │   ├── dep1.js
│   │   │   ├── dep2.js
│   │   │   ├── dep3.js
│   │   │   └── index.js
│   │   ├── self-accept-within-circular/
│   │   │   ├── a.js
│   │   │   ├── b.js
│   │   │   ├── c.js
│   │   │   ├── index.html
│   │   │   └── index.js
│   │   ├── soft-invalidation/
│   │   │   ├── child.js
│   │   │   └── index.js
│   │   ├── unicode-path/
│   │   │   └── 中文-にほんご-한글-🌕🌖🌗/
│   │   │       └── index.html
│   │   └── vite.config.ts
│   ├── hmr-full-bundle-mode/
│   │   ├── __tests__/
│   │   │   └── hmr-full-bundle-mode.spec.ts
│   │   ├── hmr.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── vite.config.ts
│   │   ├── worker-query.js
│   │   └── worker-url.js
│   ├── hmr-root/
│   │   ├── __tests__/
│   │   │   └── hmr-root.spec.ts
│   │   ├── foo.js
│   │   ├── root/
│   │   │   └── index.html
│   │   └── vite.config.ts
│   ├── hmr-ssr/
│   │   ├── __tests__/
│   │   │   └── hmr-ssr.spec.ts
│   │   ├── accept-exports/
│   │   │   ├── dynamic-imports/
│   │   │   │   ├── deps-all-accepted.ts
│   │   │   │   ├── deps-some-accepted.ts
│   │   │   │   ├── dynamic-imports.ts
│   │   │   │   └── index.ts
│   │   │   ├── export-from/
│   │   │   │   ├── depA.ts
│   │   │   │   ├── export-from.ts
│   │   │   │   ├── hub.ts
│   │   │   │   └── index.html
│   │   │   ├── main-accepted/
│   │   │   │   ├── callback.ts
│   │   │   │   ├── dep.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── main-accepted.ts
│   │   │   │   └── target.ts
│   │   │   ├── main-non-accepted/
│   │   │   │   ├── default.ts
│   │   │   │   ├── dep.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── main-non-accepted.ts
│   │   │   │   └── named.ts
│   │   │   ├── reexports.bak/
│   │   │   │   ├── accept-named.ts
│   │   │   │   ├── index.html
│   │   │   │   ├── reexports.ts
│   │   │   │   └── source.ts
│   │   │   ├── side-effects/
│   │   │   │   ├── index.ts
│   │   │   │   └── side-effects.ts
│   │   │   ├── star-imports/
│   │   │   │   ├── deps-all-accepted.ts
│   │   │   │   ├── deps-some-accepted.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── star-imports.ts
│   │   │   └── unused-exports/
│   │   │       ├── index.html
│   │   │       ├── index.ts
│   │   │       ├── unused.ts
│   │   │       └── used.ts
│   │   ├── circular/
│   │   │   ├── index.js
│   │   │   ├── mod-a.js
│   │   │   ├── mod-b.js
│   │   │   └── mod-c.js
│   │   ├── counter/
│   │   │   ├── dep.ts
│   │   │   └── index.ts
│   │   ├── customFile.js
│   │   ├── event.d.ts
│   │   ├── file-delete-restore/
│   │   │   ├── child.js
│   │   │   ├── index.js
│   │   │   ├── parent.js
│   │   │   └── runtime.js
│   │   ├── hmr.ts
│   │   ├── hmrDep.js
│   │   ├── hmrNestedDep.js
│   │   ├── importedVirtual.js
│   │   ├── importing-updated/
│   │   │   ├── a.js
│   │   │   ├── b.js
│   │   │   └── index.js
│   │   ├── intermediate-file-delete/
│   │   │   ├── display.js
│   │   │   ├── index.js
│   │   │   └── re-export.js
│   │   ├── invalidation/
│   │   │   ├── child.js
│   │   │   └── parent.js
│   │   ├── invalidation-circular-deps/
│   │   │   ├── circular-invalidate/
│   │   │   │   ├── child.js
│   │   │   │   └── parent.js
│   │   │   ├── index.js
│   │   │   └── invalidate-handled-in-circle/
│   │   │       ├── child.js
│   │   │       └── parent.js
│   │   ├── missing-import/
│   │   │   ├── a.js
│   │   │   ├── index.js
│   │   │   └── main.js
│   │   ├── modules.d.ts
│   │   ├── non-tested/
│   │   │   ├── dep.js
│   │   │   └── index.js
│   │   ├── optional-chaining/
│   │   │   ├── child.js
│   │   │   └── parent.js
│   │   ├── package.json
│   │   ├── queries/
│   │   │   ├── index.js
│   │   │   └── multi-query.js
│   │   ├── self-accept-within-circular/
│   │   │   ├── a.js
│   │   │   ├── b.js
│   │   │   ├── c.js
│   │   │   └── index.js
│   │   ├── soft-invalidation/
│   │   │   ├── child.js
│   │   │   └── index.js
│   │   ├── unresolved.ts
│   │   └── vite.config.ts
│   ├── html/
│   │   ├── __tests__/
│   │   │   └── html.spec.ts
│   │   ├── a á.html
│   │   ├── common.css
│   │   ├── emptyAttr.html
│   │   ├── env.html
│   │   ├── foo.html
│   │   ├── importmapOrder.html
│   │   ├── index.html
│   │   ├── inline/
│   │   │   ├── common.js
│   │   │   ├── dep1.js
│   │   │   ├── dep2.js
│   │   │   ├── dep3.js
│   │   │   ├── module-graph.dot
│   │   │   ├── shared-1.html
│   │   │   ├── shared-2.html
│   │   │   ├── shared.js
│   │   │   ├── shared_a.html
│   │   │   ├── unique.html
│   │   │   └── unique.js
│   │   ├── invalid.html
│   │   ├── invalidClick.html
│   │   ├── invalidEscape.html
│   │   ├── link-props/
│   │   │   ├── index.html
│   │   │   ├── print.css
│   │   │   └── screen.css
│   │   ├── link.html
│   │   ├── main.css
│   │   ├── main.js
│   │   ├── malformed-url.html
│   │   ├── nested/
│   │   │   ├── asset/
│   │   │   │   ├── main.js
│   │   │   │   └── style.css
│   │   │   ├── index.html
│   │   │   ├── nested.css
│   │   │   └── nested.js
│   │   ├── noBody.html
│   │   ├── noHead.html
│   │   ├── package.json
│   │   ├── relative-input/
│   │   │   └── main.js
│   │   ├── relative-input.html
│   │   ├── scriptAsync.html
│   │   ├── scriptMixed.html
│   │   ├── serve/
│   │   │   ├── both/
│   │   │   │   └── index.html
│   │   │   ├── both.html
│   │   │   ├── file.html
│   │   │   └── folder/
│   │   │       └── index.html
│   │   ├── shared.js
│   │   ├── side-effects/
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── sideEffects.js
│   │   ├── test.js
│   │   ├── transform-inline-js.html
│   │   ├── unicode-path/
│   │   │   └── 中文-にほんご-한글-🌕🌖🌗/
│   │   │       └── index.html
│   │   ├── valid.html
│   │   ├── valid.js
│   │   ├── vite.config.js
│   │   ├── warmup/
│   │   │   └── warm.js
│   │   ├── write.html
│   │   └── zeroJS.html
│   ├── import-assertion/
│   │   ├── __tests__/
│   │   │   └── import-assertion.spec.ts
│   │   ├── data.json
│   │   ├── import-assertion-dep/
│   │   │   ├── data.json
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   └── package.json
│   ├── js-sourcemap/
│   │   ├── __tests__/
│   │   │   └── js-sourcemap.spec.ts
│   │   ├── after-preload-dynamic-hashbang.js
│   │   ├── after-preload-dynamic-no-dep.js
│   │   ├── after-preload-dynamic.js
│   │   ├── bar.ts
│   │   ├── dynamic/
│   │   │   ├── dynamic-foo.css
│   │   │   ├── dynamic-foo.js
│   │   │   └── dynamic-no-dep.js
│   │   ├── foo-with-sourcemap-plugin.ts
│   │   ├── foo-with-sourcemap.js
│   │   ├── foo.js
│   │   ├── importee-pkg/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── plugin-foo.js
│   │   ├── test-ssr-dev.js
│   │   ├── vite.config.js
│   │   ├── with-define-object-ssr.ts
│   │   ├── with-define-object.ts
│   │   ├── with-multiline-import.ts
│   │   ├── zoo-with-sourcemap-plugin.ts
│   │   └── zoo.js
│   ├── json/
│   │   ├── __tests__/
│   │   │   └── csr/
│   │   │       └── json-csr.spec.ts
│   │   ├── dep-json-require/
│   │   │   ├── content.json
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── hmr.json
│   │   ├── index.html
│   │   ├── json-bom/
│   │   │   └── has-bom.json
│   │   ├── json-module/
│   │   │   ├── index.json
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── public.json
│   │   └── test.json
│   ├── legacy/
│   │   ├── __tests__/
│   │   │   ├── client-and-ssr/
│   │   │   │   ├── legacy-client-legacy-ssr-sequential-builds.spec.ts
│   │   │   │   └── serve.ts
│   │   │   ├── legacy.spec.ts
│   │   │   ├── no-polyfills/
│   │   │   │   └── legacy-no-polyfills.spec.ts
│   │   │   ├── no-polyfills-no-systemjs/
│   │   │   │   └── legacy-no-polyfills-no-systemjs.spec.ts
│   │   │   ├── ssr/
│   │   │   │   ├── legacy-ssr.spec.ts
│   │   │   │   └── serve.ts
│   │   │   └── watch/
│   │   │       └── legacy-styles-only-entry-watch.spec.ts
│   │   ├── async.js
│   │   ├── custom0.js
│   │   ├── custom1.js
│   │   ├── custom2.js
│   │   ├── dynamic.css
│   │   ├── entry-server-sequential.js
│   │   ├── entry-server.js
│   │   ├── immutable-chunk.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── module.js
│   │   ├── nested/
│   │   │   └── index.html
│   │   ├── no-polyfills-no-systemjs.html
│   │   ├── no-polyfills-no-systemjs.js
│   │   ├── no-polyfills.html
│   │   ├── no-polyfills.js
│   │   ├── package.json
│   │   ├── style-only-entry.css
│   │   ├── style.css
│   │   ├── vite.config-custom-filename.js
│   │   ├── vite.config-multiple-output.js
│   │   ├── vite.config-no-polyfills-no-systemjs.js
│   │   ├── vite.config-no-polyfills.js
│   │   ├── vite.config-watch.js
│   │   ├── vite.config.js
│   │   └── worker.js
│   ├── lib/
│   │   ├── __tests__/
│   │   │   ├── lib.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.dist.html
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── css-entry-1.js
│   │   │   ├── css-entry-2.js
│   │   │   ├── dynamic.css
│   │   │   ├── entry-1.css
│   │   │   ├── entry-2.css
│   │   │   ├── index.css
│   │   │   ├── main-helpers-injection.js
│   │   │   ├── main-multiple-output.js
│   │   │   ├── main-named.js
│   │   │   ├── main.js
│   │   │   ├── main2.js
│   │   │   ├── message.js
│   │   │   └── sub-multiple-output.js
│   │   ├── vite.config.js
│   │   ├── vite.css-code-split.config.js
│   │   ├── vite.css-multi-entry.config.js
│   │   ├── vite.css-single-entry.config.js
│   │   ├── vite.dyimport.config.js
│   │   ├── vite.helpers-injection.config.js
│   │   ├── vite.multiple-output.config.js
│   │   ├── vite.named-exports.config.js
│   │   ├── vite.nominify.config.js
│   │   └── vite.terser.config.js
│   ├── minify/
│   │   ├── __tests__/
│   │   │   └── minify.spec.ts
│   │   ├── dir/
│   │   │   └── module/
│   │   │       ├── index.css
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── test.css
│   │   └── vite.config.js
│   ├── module-graph/
│   │   ├── __tests__/
│   │   │   └── module-graph.spec.ts
│   │   ├── empty.js
│   │   ├── imported-urls-order.js
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.ts
│   ├── multiple-entrypoints/
│   │   ├── __tests__/
│   │   │   └── multiple-entrypoints.spec.ts
│   │   ├── deps.json
│   │   ├── dynamic-a.js
│   │   ├── dynamic-b.js
│   │   ├── entrypoints/
│   │   │   ├── a0.js
│   │   │   ├── a1.js
│   │   │   ├── a10.js
│   │   │   ├── a11.js
│   │   │   ├── a12.js
│   │   │   ├── a13.js
│   │   │   ├── a14.js
│   │   │   ├── a15.js
│   │   │   ├── a16.js
│   │   │   ├── a17.js
│   │   │   ├── a18.js
│   │   │   ├── a19.js
│   │   │   ├── a2.js
│   │   │   ├── a20.js
│   │   │   ├── a21.js
│   │   │   ├── a22.js
│   │   │   ├── a23.js
│   │   │   ├── a24.js
│   │   │   ├── a3.js
│   │   │   ├── a4.js
│   │   │   ├── a5.js
│   │   │   ├── a6.js
│   │   │   ├── a7.js
│   │   │   ├── a8.js
│   │   │   └── a9.js
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── reference.js
│   │   ├── reference.scss
│   │   └── vite.config.js
│   ├── nested-deps/
│   │   ├── __tests__/
│   │   │   └── nested-deps.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── test-package-a/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── test-package-b/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── test-package-c/
│   │   │   ├── index-es.js
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── side.js
│   │   ├── test-package-d/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── test-package-d-nested/
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── test-package-e/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   ├── test-package-e-excluded/
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   └── test-package-e-included/
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── test-package-f/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   └── vite.config.js
│   ├── object-hooks/
│   │   ├── __tests__/
│   │   │   └── object-hooks.spec.ts
│   │   ├── index.html
│   │   ├── main.ts
│   │   ├── package.json
│   │   └── vite.config.ts
│   ├── optimize-deps/
│   │   ├── .hidden-dir/
│   │   │   └── foo.js
│   │   ├── __tests__/
│   │   │   └── optimize-deps.spec.ts
│   │   ├── added-in-entries/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── cjs-dynamic.js
│   │   ├── cjs.js
│   │   ├── dedupe.js
│   │   ├── dep-alias-using-absolute-path/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-browser-field/
│   │   │   ├── index.js
│   │   │   ├── lib/
│   │   │   │   ├── adapters/
│   │   │   │   │   ├── http.js
│   │   │   │   │   └── xhr.js
│   │   │   │   └── axios.js
│   │   │   └── package.json
│   │   ├── dep-cjs-browser-field-bare/
│   │   │   ├── events-shim.js
│   │   │   ├── index.js
│   │   │   ├── internal.js
│   │   │   └── package.json
│   │   ├── dep-cjs-compiled-from-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-compiled-from-esm/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-css-main-field/
│   │   │   ├── package.json
│   │   │   └── style.css
│   │   ├── dep-cjs-external-package-omit-js-suffix/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   ├── test.astro.js
│   │   │   ├── test.okay.js
│   │   │   ├── test.scss.js
│   │   │   └── test.tsx.js
│   │   ├── dep-cjs-require-css-main-field/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-with-assets/
│   │   │   ├── foo.css
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-with-es-module-flag/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-with-external-deps/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-css-require/
│   │   │   ├── index.cjs
│   │   │   ├── mod.cjs
│   │   │   ├── mod.module.css
│   │   │   ├── package.json
│   │   │   └── style.css
│   │   ├── dep-esbuild-plugin-transform/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-esm-dummy-node-builtin/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-esm-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-incompatible/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── sub.js
│   │   ├── dep-linked/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-linked-include/
│   │   │   ├── Test.vue
│   │   │   ├── foo.js
│   │   │   ├── index.mjs
│   │   │   ├── package.json
│   │   │   └── test.css
│   │   ├── dep-node-env/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-non-optimized/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-not-js/
│   │   │   ├── foo.js
│   │   │   ├── index.notjs
│   │   │   └── package.json
│   │   ├── dep-optimize-exports-with-glob/
│   │   │   ├── glob/
│   │   │   │   ├── bar.js
│   │   │   │   ├── foo.js
│   │   │   │   └── nested/
│   │   │   │       └── baz.js
│   │   │   ├── index.js
│   │   │   ├── named.js
│   │   │   └── package.json
│   │   ├── dep-optimize-exports-with-root-glob/
│   │   │   ├── dir/
│   │   │   │   └── file2.js
│   │   │   ├── file1.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-optimize-with-glob/
│   │   │   ├── glob/
│   │   │   │   ├── bar.js
│   │   │   │   ├── foo.js
│   │   │   │   └── nested/
│   │   │   │       └── baz.js
│   │   │   ├── index.js
│   │   │   ├── named.js
│   │   │   └── package.json
│   │   ├── dep-relative-to-main/
│   │   │   ├── entry.js
│   │   │   ├── lib/
│   │   │   │   └── main.js
│   │   │   └── package.json
│   │   ├── dep-source-map-no-sources/
│   │   │   ├── all.js
│   │   │   ├── package.json
│   │   │   └── sub.js
│   │   ├── dep-with-asset-ext/
│   │   │   ├── dep1/
│   │   │   │   ├── index.mjs
│   │   │   │   └── package.json
│   │   │   └── dep2/
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── dep-with-assets/
│   │   │   ├── index.js
│   │   │   ├── nested/
│   │   │   │   └── index.js
│   │   │   ├── package.json
│   │   │   └── worker.js
│   │   ├── dep-with-builtin-module-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-builtin-module-esm/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-dynamic-import/
│   │   │   ├── dynamic.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-optional-peer-dep/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-optional-peer-dep-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-optional-peer-dep-submodule/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-plus-subpath/
│   │   │   ├── core+feature.js
│   │   │   └── package.json
│   │   ├── dynamic-use-dep-alias-using-absolute-path.js
│   │   ├── generics.vue
│   │   ├── glob/
│   │   │   └── foo.js
│   │   ├── index.astro
│   │   ├── index.html
│   │   ├── long-file-name.js
│   │   ├── longfilename/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-exclude/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-include/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── non-optimizable-include/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── unused-split-entry.js
│   │   └── vite.config.js
│   ├── optimize-deps-no-discovery/
│   │   ├── __tests__/
│   │   │   └── optimize-deps-no-discovery.spec.ts
│   │   ├── dep-no-discovery/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── optimize-missing-deps/
│   │   ├── __test__/
│   │   │   ├── optimize-missing-deps.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── missing-dep/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── multi-entry-dep/
│   │   │   ├── index.browser.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   └── server.js
│   ├── package.json
│   ├── preload/
│   │   ├── __tests__/
│   │   │   ├── preload-disabled/
│   │   │   │   └── preload-disabled.spec.ts
│   │   │   ├── preload.spec.ts
│   │   │   └── resolve-deps/
│   │   │       └── preload-resolve-deps.spec.ts
│   │   ├── dep-a/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-including-a/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── preloaded.js
│   │   ├── src/
│   │   │   ├── about.js
│   │   │   ├── chunk.js
│   │   │   ├── hello.js
│   │   │   ├── hello.module.css
│   │   │   └── main.js
│   │   ├── vite.config-preload-disabled.js
│   │   ├── vite.config-resolve-deps.js
│   │   └── vite.config.ts
│   ├── preserve-symlinks/
│   │   ├── __tests__/
│   │   │   └── preserve-symlinks.spec.ts
│   │   ├── index.html
│   │   ├── module-a/
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       ├── data.js
│   │   │       └── index.js
│   │   ├── package.json
│   │   └── src/
│   │       └── main.js
│   ├── proxy-bypass/
│   │   ├── __tests__/
│   │   │   └── proxy-bypass.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── proxy-hmr/
│   │   ├── __tests__/
│   │   │   ├── proxy-hmr.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── other-app/
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── resolve/
│   │   ├── __tests__/
│   │   │   ├── mainfields-custom-first/
│   │   │   │   └── resolve-mainfields-custom-first.spec.ts
│   │   │   └── resolve.spec.ts
│   │   ├── absolute.js
│   │   ├── browser-field/
│   │   │   ├── bare-import.js
│   │   │   ├── multiple.dot.path.js
│   │   │   ├── no-ext-index/
│   │   │   │   └── index.js
│   │   │   ├── no-ext.js
│   │   │   ├── not-browser.js
│   │   │   ├── out/
│   │   │   │   ├── cjs.node.js
│   │   │   │   └── esm.browser.js
│   │   │   ├── package.json
│   │   │   └── relative.js
│   │   ├── browser-field-bare-import-fail/
│   │   │   ├── main.js
│   │   │   ├── module.js
│   │   │   └── package.json
│   │   ├── browser-field-bare-import-success/
│   │   │   ├── main.js
│   │   │   ├── module.js
│   │   │   └── package.json
│   │   ├── browser-module-field1/
│   │   │   ├── index.js
│   │   │   ├── index.web.js
│   │   │   └── package.json
│   │   ├── config-dep.cjs
│   │   ├── custom-browser-main-field/
│   │   │   ├── index.browser.js
│   │   │   ├── index.custom.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── custom-condition/
│   │   │   ├── index.custom.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── custom-ext.es
│   │   ├── custom-main-field/
│   │   │   ├── index.custom.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dir/
│   │   │   └── index.js
│   │   ├── dir-with-ext/
│   │   │   └── index.js
│   │   ├── dir-with-ext.js/
│   │   │   └── empty
│   │   ├── dir.js
│   │   ├── drive-relative.js
│   │   ├── exact-extension/
│   │   │   ├── file.js
│   │   │   ├── file.js.js
│   │   │   └── file.json.js
│   │   ├── exports-and-nested-scope/
│   │   │   ├── index.js
│   │   │   ├── nested-scope/
│   │   │   │   ├── file.js
│   │   │   │   └── package.json
│   │   │   └── package.json
│   │   ├── exports-env/
│   │   │   ├── browser.js
│   │   │   ├── browser.mjs
│   │   │   ├── browser.prod.mjs
│   │   │   ├── fallback.umd.js
│   │   │   └── package.json
│   │   ├── exports-from-root/
│   │   │   ├── file.js
│   │   │   ├── index.js
│   │   │   ├── nested/
│   │   │   │   ├── file.js
│   │   │   │   └── package.json
│   │   │   └── package.json
│   │   ├── exports-legacy-fallback/
│   │   │   ├── dir/
│   │   │   │   ├── index.js
│   │   │   │   ├── index.mjs
│   │   │   │   └── package.json
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── exports-path/
│   │   │   ├── cjs.js
│   │   │   ├── deep.js
│   │   │   ├── deep.json
│   │   │   ├── dir/
│   │   │   │   └── dir.js
│   │   │   ├── main.js
│   │   │   └── package.json
│   │   ├── exports-with-module/
│   │   │   ├── import.mjs
│   │   │   ├── module.mjs
│   │   │   └── package.json
│   │   ├── exports-with-module-condition/
│   │   │   ├── index.esm.js
│   │   │   ├── index.js
│   │   │   ├── index.mjs
│   │   │   └── package.json
│   │   ├── exports-with-module-condition-required/
│   │   │   ├── index.cjs
│   │   │   └── package.json
│   │   ├── file-url.js
│   │   ├── imports-path/
│   │   │   ├── .dot-prefixed/
│   │   │   │   └── index.js
│   │   │   ├── importer.js
│   │   │   ├── nested-path.js
│   │   │   ├── other-pkg/
│   │   │   │   ├── nest/
│   │   │   │   │   └── index.js
│   │   │   │   └── package.json
│   │   │   ├── query.json
│   │   │   ├── root-slash/
│   │   │   │   └── index.js
│   │   │   ├── same-level.js
│   │   │   ├── slash/
│   │   │   │   └── index.js
│   │   │   ├── star/
│   │   │   │   └── index.js
│   │   │   └── top-level.js
│   │   ├── index.html
│   │   ├── inline-package/
│   │   │   ├── inline.js
│   │   │   └── package.json
│   │   ├── non-normalized.js
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── should-not-be-copied
│   │   ├── sharp-dir/
│   │   │   ├── index.cjs
│   │   │   └── package.json
│   │   ├── sharp-dir-nested/
│   │   │   ├── #/
│   │   │   │   └── index.cjs
│   │   │   ├── index.cjs
│   │   │   └── package.json
│   │   ├── side-effects-glob/
│   │   │   ├── effects/
│   │   │   │   └── file.js
│   │   │   ├── index.js
│   │   │   ├── no-effect.js
│   │   │   └── package.json
│   │   ├── style.css
│   │   ├── ts-extension/
│   │   │   ├── hello.ts
│   │   │   ├── hellocjs.cts
│   │   │   ├── hellojsx.tsx
│   │   │   ├── hellomjs.mts
│   │   │   ├── hellotsx.tsx
│   │   │   ├── index-js.js
│   │   │   └── index.ts
│   │   ├── utf8-bom/
│   │   │   └── main.js
│   │   ├── utf8-bom-package/
│   │   │   ├── index.mjs
│   │   │   └── package.json
│   │   ├── util/
│   │   │   ├── bar.util.js
│   │   │   └── index.js
│   │   ├── vite.config-mainfields-custom-first.js
│   │   └── vite.config.js
│   ├── resolve-linked/
│   │   ├── dep.js
│   │   ├── package.json
│   │   └── src/
│   │       └── index.js
│   ├── resolve-tsconfig-paths/
│   │   ├── __tests__/
│   │   │   └── resolve.spec.ts
│   │   ├── fallback/
│   │   │   └── fallback.js
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── imported.js
│   │   │   ├── js.js
│   │   │   ├── nested/
│   │   │   │   ├── a-imported.ts
│   │   │   │   ├── a.ts
│   │   │   │   ├── b-imported.ts
│   │   │   │   ├── b.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── tsconfig.a.json
│   │   │   │   ├── tsconfig.b.json
│   │   │   │   └── tsconfig.json
│   │   │   └── ts.ts
│   │   ├── tsconfig.json
│   │   └── vite.config.js
│   ├── self-referencing/
│   │   ├── index.js
│   │   ├── package.json
│   │   └── test/
│   │       └── index.js
│   ├── shims.d.ts
│   ├── ssr/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   ├── app.js
│   │   │   ├── circular-dep-init/
│   │   │   │   ├── README.md
│   │   │   │   ├── circular-dep-init.js
│   │   │   │   ├── module-a.js
│   │   │   │   └── module-b.js
│   │   │   ├── circular-import/
│   │   │   │   ├── a.js
│   │   │   │   ├── b.js
│   │   │   │   └── index.js
│   │   │   ├── circular-import2/
│   │   │   │   ├── a.js
│   │   │   │   ├── b.js
│   │   │   │   └── index.js
│   │   │   ├── forked-deadlock/
│   │   │   │   ├── README.md
│   │   │   │   ├── common-module.js
│   │   │   │   ├── deadlock-fuse-module.js
│   │   │   │   ├── dynamic-imports/
│   │   │   │   │   ├── common-module.js
│   │   │   │   │   ├── deadlock-fuse-module.js
│   │   │   │   │   ├── fuse-stuck-bridge-module.js
│   │   │   │   │   ├── middle-module.js
│   │   │   │   │   └── stuck-module.js
│   │   │   │   ├── fuse-stuck-bridge-module.js
│   │   │   │   ├── middle-module.js
│   │   │   │   └── stuck-module.js
│   │   │   └── utils.js
│   │   └── vite.config.ts
│   ├── ssr-alias/
│   │   ├── __tests__/
│   │   │   └── ssr-alias.spec.ts
│   │   ├── alias-original/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── alias-process.js
│   │   │   ├── alias-replaced.js
│   │   │   └── main.js
│   │   └── vite.config.js
│   ├── ssr-conditions/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-conditions.spec.ts
│   │   ├── external/
│   │   │   ├── browser.js
│   │   │   ├── default.js
│   │   │   ├── edge.js
│   │   │   ├── node.js
│   │   │   ├── node.unbundled.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── no-external/
│   │   │   ├── browser.js
│   │   │   ├── default.js
│   │   │   ├── edge.js
│   │   │   ├── node.js
│   │   │   ├── node.unbundled.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   └── app.js
│   │   └── vite.config.js
│   ├── ssr-deps/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-deps.spec.ts
│   │   ├── css-lib/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── define-properties-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── define-property-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── external-entry/
│   │   │   ├── entry.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── external-using-external-entry/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── forwarded-export/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── import-builtin-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── linked-no-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── message
│   │   ├── module-condition/
│   │   │   ├── import.mjs
│   │   │   ├── module.js
│   │   │   └── package.json
│   │   ├── nested-exclude/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-external-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-include/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── no-external-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── no-external-css/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── non-optimized-with-nested-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── object-assigned-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── only-object-assigned-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── optimized-cjs-with-nested-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── optimized-with-nested-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── pkg-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── primitive-export/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── read-file-content/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── require-absolute/
│   │   │   ├── foo.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   ├── app.js
│   │   │   ├── isomorphic-module-browser.js
│   │   │   └── isomorphic-module-server.js
│   │   └── ts-transpiled-exports/
│   │       ├── index.js
│   │       └── package.json
│   ├── ssr-html/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-html.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── slash@3.0.0.js
│   │   ├── server.js
│   │   ├── src/
│   │   │   ├── app.js
│   │   │   ├── error-js.js
│   │   │   ├── error-ts.ts
│   │   │   ├── has-error-deep.ts
│   │   │   ├── importedVirtual.js
│   │   │   └── network-imports.js
│   │   ├── test-network-imports.js
│   │   ├── test-stacktrace-runtime.js
│   │   └── test-stacktrace.js
│   ├── ssr-noexternal/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-noexternal.spec.ts
│   │   ├── external-cjs/
│   │   │   ├── import.mjs
│   │   │   ├── package.json
│   │   │   └── require.cjs
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── require-external-cjs/
│   │   │   ├── main.js
│   │   │   └── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   └── entry-server.js
│   │   └── vite.config.js
│   ├── ssr-pug/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-pug.spec.ts
│   │   ├── index.pug
│   │   ├── package.json
│   │   ├── server.js
│   │   └── src/
│   │       └── app.js
│   ├── ssr-resolve/
│   │   ├── __tests__/
│   │   │   └── ssr-resolve.spec.ts
│   │   ├── deep-import/
│   │   │   ├── bar/
│   │   │   │   └── package.json
│   │   │   ├── foo/
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── utils/
│   │   │       └── bar.js
│   │   ├── entries/
│   │   │   ├── dir/
│   │   │   │   └── index.js
│   │   │   ├── file.js
│   │   │   └── package.json
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── pkg-exports/
│   │   │   ├── entry.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── pkg-module-sync/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── util.js
│   │   └── vite.config.js
│   ├── ssr-wasm/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-wasm.spec.ts
│   │   ├── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   ├── app.js
│   │   │   ├── heavy.wasm
│   │   │   ├── light.wasm
│   │   │   ├── static-heavy.js
│   │   │   └── static-light.js
│   │   └── vite.config.ts
│   ├── ssr-webworker/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-webworker.spec.ts
│   │   ├── browser-exports/
│   │   │   ├── browser.js
│   │   │   ├── node.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── dynamic.js
│   │   │   └── entry-worker.jsx
│   │   ├── vite.config.js
│   │   ├── worker-exports/
│   │   │   ├── browser.js
│   │   │   ├── node.js
│   │   │   ├── package.json
│   │   │   └── worker.js
│   │   └── worker.js
│   ├── tailwind/
│   │   ├── __test__/
│   │   │   └── tailwind.spec.ts
│   │   ├── index.css
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── components/
│   │   │   │   └── component1.js
│   │   │   ├── main.js
│   │   │   └── views/
│   │   │       └── view1.js
│   │   ├── tailwind.config.ts
│   │   └── vite.config.ts
│   ├── tailwind-sourcemap/
│   │   ├── __tests__/
│   │   │   └── tailwind-sourcemap.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── postcss.config.js
│   │   ├── tailwind.css
│   │   └── vite.config.js
│   ├── tailwind-v3/
│   │   ├── __test__/
│   │   │   └── tailwind-v3.spec.ts
│   │   ├── index.css
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── postcss.config.js
│   │   ├── src/
│   │   │   ├── components/
│   │   │   │   └── component1.js
│   │   │   ├── main.js
│   │   │   └── views/
│   │   │       └── view1.js
│   │   ├── tailwind.config.ts
│   │   └── vite.config.ts
│   ├── test-utils.ts
│   ├── transform-plugin/
│   │   ├── __tests__/
│   │   │   ├── base/
│   │   │   │   └── transform-plugin.spec.ts
│   │   │   ├── tests.ts
│   │   │   └── transform-plugin.spec.ts
│   │   ├── foo.json
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── plugin-dep-load.js
│   │   ├── plugin-dep.js
│   │   ├── vite.config-base.js
│   │   └── vite.config.js
│   ├── tsconfig-json/
│   │   ├── __tests__/
│   │   │   └── tsconfig-json.spec.ts
│   │   ├── index.html
│   │   ├── nested/
│   │   │   ├── main.ts
│   │   │   ├── not-used-type.ts
│   │   │   └── tsconfig.json
│   │   ├── nested-with-extends/
│   │   │   ├── main.ts
│   │   │   ├── not-used-type.ts
│   │   │   └── tsconfig.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── decorator.ts
│   │   │   ├── main.ts
│   │   │   └── not-used-type.ts
│   │   └── tsconfig.json
│   ├── tsconfig-json-load-error/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── tsconfig-json-load-error.spec.ts
│   │   ├── has-error/
│   │   │   ├── main.ts
│   │   │   └── tsconfig.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── main.ts
│   │   └── tsconfig.json
│   ├── tsconfig.json
│   ├── vitestGlobalSetup.ts
│   ├── vitestSetup.ts
│   ├── wasm/
│   │   ├── __tests__/
│   │   │   └── wasm.spec.ts
│   │   ├── add.wasm
│   │   ├── heavy.wasm
│   │   ├── index.html
│   │   ├── light.wasm
│   │   ├── package.json
│   │   ├── vite.config.ts
│   │   └── worker.js
│   └── worker/
│       ├── __tests__/
│       │   ├── es/
│       │   │   └── worker-es.spec.ts
│       │   ├── iife/
│       │   │   └── worker-iife.spec.ts
│       │   ├── relative-base/
│       │   │   └── worker-relative-base.spec.ts
│       │   ├── relative-base-iife/
│       │   │   └── worker-relative-base-iife.spec.ts
│       │   ├── sourcemap/
│       │   │   └── worker-sourcemap.spec.ts
│       │   ├── sourcemap-hidden/
│       │   │   └── worker-sourcemap-hidden.spec.ts
│       │   └── sourcemap-inline/
│       │       └── worker-sourcemap-inline.spec.ts
│       ├── classic-esm.js
│       ├── classic-shared-worker.js
│       ├── classic-worker.js
│       ├── deeply-nested-second-worker.js
│       ├── deeply-nested-third-worker.js
│       ├── deeply-nested-worker.js
│       ├── dep-cjs/
│       │   ├── index.cjs
│       │   └── package.json
│       ├── dep-cjs-with-json/
│       │   ├── data.json
│       │   └── importer.cjs
│       ├── dep-self-reference-url-worker/
│       │   ├── index.js
│       │   ├── package.json
│       │   └── worker.js
│       ├── dep-to-optimize/
│       │   ├── index.js
│       │   └── package.json
│       ├── emit-chunk-dynamic-import-worker.js
│       ├── emit-chunk-nested-worker.js
│       ├── emit-chunk-sub-worker.js
│       ├── importMetaGlob.worker.js
│       ├── importMetaGlobEager.worker.js
│       ├── index.html
│       ├── module-and-worker.js
│       ├── modules/
│       │   ├── module0.js
│       │   ├── module1.js
│       │   ├── module2.js
│       │   ├── module3.js
│       │   ├── test-plugin.js
│       │   └── workerImport.ts
│       ├── my-inline-shared-worker.ts
│       ├── my-shared-worker.ts
│       ├── my-worker.ts
│       ├── package.json
│       ├── possible-ts-output-worker.mjs
│       ├── public/
│       │   └── classic.js
│       ├── self-reference-url-worker.js
│       ├── self-reference-worker.js
│       ├── simple-worker.js
│       ├── sub-worker.js
│       ├── url-shared-worker.js
│       ├── url-worker.js
│       ├── vite.config-es.js
│       ├── vite.config-iife.js
│       ├── vite.config-relative-base-iife.js
│       ├── vite.config-relative-base.js
│       ├── vite.config-sourcemap-hidden.js
│       ├── vite.config-sourcemap-inline.js
│       ├── vite.config-sourcemap.js
│       ├── worker/
│       │   ├── main-classic.js
│       │   ├── main-deeply-nested.js
│       │   ├── main-format-es.js
│       │   ├── main-module.js
│       │   ├── main-url.js
│       │   └── main.js
│       ├── worker-nested-worker.js
│       ├── worker-plugin-test-plugin.js
│       ├── worker-require-json.js
│       └── worker-sourcemap-config.js
├── pnpm-workspace.yaml
├── scripts/
│   ├── docs-check.sh
│   ├── mergeChangelog.ts
│   ├── publishCI.ts
│   ├── release.ts
│   ├── releaseUtils.ts
│   └── tsconfig.json
├── vitest.config.e2e.ts
└── vitest.config.ts

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true


================================================
FILE: .git-blame-ignore-revs
================================================
# chore: enable prettier trailing commas (#11167)
134ce6817984bad0f5fb043481502531fee9b1db
# chore: rename test packages (#11172)
5170e44920458090b8b43ee9cfe5010c25dfe22b


================================================
FILE: .gitattributes
================================================
* text=auto eol=lf


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: "\U0001F41E Bug report"
description: Report an issue with Vite
labels: [pending triage]
type: Bug
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!
  - type: textarea
    id: bug-description
    attributes:
      label: Describe the bug
      description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks!
      placeholder: I am doing ... What I expect is ... What actually happening is ...
    validations:
      required: true
  - type: input
    id: reproduction
    attributes:
      label: Reproduction
      description: Please provide a link via [vite.new](https://vite.new/) or a link to a repo that can reproduce the problem you ran into. `npm create vite@latest` and `npm create vite-extra@latest` (for SSR or library repros) can be used as a starter template. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "needs reproduction" label. If no reproduction is provided after 3 days, it will be auto-closed.
      placeholder: Reproduction URL
    validations:
      required: true
  - type: textarea
    id: reproduction-steps
    attributes:
      label: Steps to reproduce
      description: Please provide any reproduction steps that may need to be described. E.g. if it happens only when running the dev or build script make sure it's clear which one to use.
      placeholder: Run `npm install` followed by `npm run dev`
  - type: textarea
    id: system-info
    attributes:
      label: System Info
      description: Output of `npx envinfo --system --npmPackages '{vite,@vitejs/*,rollup,rolldown}' --binaries --browsers`
      render: shell
      placeholder: System, Binaries, Browsers
    validations:
      required: true
  - type: dropdown
    id: package-manager
    attributes:
      label: Used Package Manager
      description: Select the used package manager
      options:
        - npm
        - yarn
        - pnpm
        - bun
    validations:
      required: true
  - type: textarea
    id: logs
    attributes:
      label: Logs
      description: |
        Optional if provided reproduction. Please try not to insert an image but copy paste the log text.

        1. Run `vite` or `vite build` with the `--debug` flag.
        2. Provide the error log here in the format below.

        ````
        <details>
        <summary>Click to expand!</summary>

        ```shell
        // paste the log text here
        ```
        </details>
        ````
  - type: checkboxes
    id: checkboxes
    attributes:
      label: Validations
      description: Before submitting the issue, please make sure you do the following
      options:
        - label: Follow our [Code of Conduct](https://github.com/vitejs/vite/blob/main/CODE_OF_CONDUCT.md)
          required: true
        - label: Read the [Contributing Guidelines](https://github.com/vitejs/vite/blob/main/CONTRIBUTING.md).
          required: true
        - label: Read the [docs](https://vite.dev/guide).
          required: true
        - label: Check that there isn't [already an issue](https://github.com/vitejs/vite/issues) that reports the same bug to avoid creating a duplicate.
          required: true
        - label: Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to [vuejs/core](https://github.com/vuejs/core) instead.
          required: true
        - label: Check that this is a concrete bug. For Q&A open a [GitHub Discussion](https://github.com/vitejs/vite/discussions) or join our [Discord Chat Server](https://chat.vite.dev/).
          required: true
        - label: The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.
          required: true


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Vite Plugin React Issues
    url: https://github.com/vitejs/vite-plugin-react/issues/new/choose
    about: React related issues should be reported on the vite-plugin-react repository.
  - name: Vite Plugin Vue Issues
    url: https://github.com/vitejs/vite-plugin-vue/issues/new/choose
    about: Vue related issues should be reported on the vite-plugin-vue repository.
  - name: Discord Chat
    url: https://chat.vite.dev
    about: Ask questions and discuss with other Vite users in real time.
  - name: Questions & Discussions
    url: https://github.com/vitejs/vite/discussions
    about: Use GitHub discussions for message-board style questions and discussions.


================================================
FILE: .github/ISSUE_TEMPLATE/docs.yml
================================================
name: "\U0001F4DA Documentation"
description: Suggest a change or new page to be added to vite.dev
labels: [documentation]
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this issue!
  - type: checkboxes
    id: documentation_is
    attributes:
      label: Documentation is
      options:
        - label: Missing
        - label: Outdated
        - label: Confusing
        - label: Not sure?
  - type: textarea
    id: description
    attributes:
      label: Explain in Detail
      description: A clear and concise description of your suggestion. If you intend to submit a PR for this issue, tell us in the description. Thanks!
      placeholder: The description of ... page is not clear. I thought it meant ... but it wasn't.
    validations:
      required: true
  - type: textarea
    id: suggestion
    attributes:
      label: Your Suggestion for Changes
    validations:
      required: true
  - type: input
    id: reproduction
    attributes:
      label: Reproduction
      description: If you have a reproduction, please provide a link via [vite.new](https://vite.new/) or a link to a repo that can reproduce the problem you ran into. `npm create vite@latest` and `npm create vite-extra@latest` (for SSR or library repros) can be used as a starter template.
      placeholder: Reproduction URL
  - type: textarea
    id: reproduction-steps
    attributes:
      label: Steps to reproduce
      description: Please provide any reproduction steps that may need to be described. E.g. if it happens only when running the dev or build script make sure it's clear which one to use.
      placeholder: Run `npm install` followed by `npm run dev`


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: "\U0001F680 New feature proposal"
description: Propose a new feature to be added to Vite
labels: ["pending triage"]
type: Feature
body:
  - type: markdown
    attributes:
      value: |
        Thanks for your interest in the project and taking the time to fill out this feature report!
  - type: textarea
    id: feature-description
    attributes:
      label: Description
      description: "Clear and concise description of the problem. Please make the reason and usecases as detailed as possible. If you intend to submit a PR for this issue, tell us in the description. Thanks!"
      placeholder: As a developer using Vite I want [goal / wish] so that [benefit].
    validations:
      required: true
  - type: textarea
    id: suggested-solution
    attributes:
      label: Suggested solution
      description: "In module [xy] we could provide following implementation..."
    validations:
      required: true
  - type: textarea
    id: alternative
    attributes:
      label: Alternative
      description: Clear and concise description of any alternative solutions or features you've considered.
  - type: textarea
    id: additional-context
    attributes:
      label: Additional context
      description: Any other context or screenshots about the feature request here.
  - type: checkboxes
    id: checkboxes
    attributes:
      label: Validations
      description: Before submitting the issue, please make sure you do the following
      options:
        - label: Follow our [Code of Conduct](https://github.com/vitejs/vite/blob/main/CODE_OF_CONDUCT.md)
          required: true
        - label: Read the [Contributing Guidelines](https://github.com/vitejs/vite/blob/main/CONTRIBUTING.md).
          required: true
        - label: Read the [docs](https://vite.dev/guide).
          required: true
        - label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
          required: true


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
- What is this PR solving? Write a clear and concise description.
- Reference the issues it solves (e.g. `fixes #123`).
- What other alternatives have you explored?
- Are there any parts you think require more attention from reviewers?

Also, please make sure you do the following:

- Read the Contributing Guidelines at https://github.com/vitejs/vite/blob/main/CONTRIBUTING.md.
- Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it.
- Update the corresponding documentation if needed.
- Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why.

Thank you for contributing to Vite!
-->


================================================
FILE: .github/commit-convention.md
================================================
## Git Commit Message Convention

> This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular).

#### TL;DR:

Messages must be matched by the following regex:

<!-- prettier-ignore -->
```js
/^(revert: )?(feat|fix|docs|style|refactor|perf|test|build|ci|chore)(\(.+\))?!?: .{1,50}/
```

#### Examples

```
feat(dev): add 'comments' option
fix(dev): fix dev error
perf(build)!: remove 'foo' option
revert: feat(compiler): add 'comments' option
```

### Revert

If the PR reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit

### Scope

The scope could be anything specifying the place of the commit change. For example `dev`, `build`, `workflow`, `cli` etc...

### Subject

The subject contains a succinct description of the change:

- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize the first letter
- no dot (.) at the end


================================================
FILE: .github/copilot-instructions.md
================================================
This is a TypeScript project that implements a frontend build tooling called Vite. Please follow these guidelines when contributing:

## Code Standards

- Run `pnpm run lint` to ensure that your code adheres to the code standards.
- Run `pnpm run format` to format your code.
- Build: `pnpm run build`
- Test: `pnpm run test` (uses Vitest and Playwright)

## Repository Structure

- `docs/`: Documentation
- `packages/create-vite`: The source code for the `create-vite` command
- `packages/plugin-legacy`: The source code for the `@vitejs/plugin-legacy` plugin
- `packages/vite`: The source code for the Vite core
- `playground/`: E2E tests

## PR Guidelines

### PR Title & Commit Messages

- Follow the [commit message convention](./commit-convention.md)

### PR Description

- What does this PR solve? - Clear problem/feature description
- Why was this approach chosen? - Implementation rationale
- If this is a new feature, include a convincing reason.
- If this adds a new config option, verify problem can't be solved with smarter defaults, existing options, or a plugin
- If this is a bug fix, explain what caused the bug - Link to relevant code if possible

### Code Style & Standards

- Code follows TypeScript best practices
- Maintains existing code structure and organization
- Comments explain "why", not "what"

### Testing

- Prefer unit tests if it can be tested without using mocks
- E2E tests should be added in the `playground/` directory

### Documentation

- Update documentation for public API changes
- Documentation changes go in `docs/` folder

### Other Considerations

- No concerning performance impacts


================================================
FILE: .github/renovate.json5
================================================
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended", "schedule:weekly", "group:allNonMajor"],
  "labels": ["dependencies"],
  "ignorePaths": ["**/__tests__/**"],
  "rangeStrategy": "bump",
  "postUpdateOptions": ["pnpmDedupe"],
  "packageRules": [
    {
      "matchDepTypes": ["peerDependencies"],
      "enabled": false,
    },
    {
      "matchDepTypes": ["action"],
      "pinDigests": true,
      "matchPackageNames": ["!actions/{/,}**", "!github/{/,}**"],
    },
    {
      "groupName": "rolldown-related dependencies",
      "matchDepNames": [
        "rolldown",
        "rolldown-plugin-dts",
        "tsdown",
        "@oxc-project/*",
        "oxc-*",
      ],
    },
  ],
  "ignoreDeps": [
    // manually bumping
    "rollup",
    "node",
    "typescript",
    "@rollup/plugin-dynamic-import-vars", // prefer version using tinyglobby

    // pinned
    "slash3",
    "slash5",
    "vue34",

    // breaking changes
    "kill-port", // `kill-port:^2.0.0 has perf issues (#8392)

    // v1 is a drop-in replacement for debug, while v2 introduces breaking changes
    "obug",
  ],
  "github-actions": {
    "managerFilePatterns": [
      // default values
      "/(^|/)(workflow-templates|\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\.ya?ml$/",
      "/(^|/)action\\.ya?ml$/",
      // custom value
      "/(^|/)docs/guide/static-deploy-github-pages\\.yaml$/",
    ],
  },
  "customManagers": [
    {
      "customType": "regex",
      "managerFilePatterns": ["/packages/create-vite/src/index\\.ts$/"],
      "matchStrings": [
        "//\\s*renovate:\\s+datasource=(?<datasource>\\S+)\\s+depName=(?<depName>\\S+)\\s+(?:var|let|const)\\s+\\S+\\s*=\\s*[\"'](?<currentValue>[^\"']+)[\"']",
      ],
    },
  ],
}


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI

env:
  # 7 GiB by default on GitHub, setting to 6 GiB
  # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
  NODE_OPTIONS: --max-old-space-size=6144
  # install playwright binary manually (because pnpm only runs install script once)
  PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1"
  # Vitest auto retry on flaky segfault
  VITEST_SEGFAULT_RETRY: 3

# Remove default permissions of GITHUB_TOKEN for security
# https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs
permissions: {}

on:
  push:
    branches:
      - main
      - release/*
      - feat/*
      - fix/*
      - perf/*
      - "v[0-9]+" # v1, v2, ...
      - "v[0-9]+.[0-9]+" # v4.0, v4.1, ...
  pull_request:
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
  cancel-in-progress: true

jobs:
  changed:
    name: Get changed files
    runs-on: ubuntu-slim
    outputs:
      should_skip: ${{ steps.changed-files.outputs.only_changed == 'true' }}

    steps:
      - name: Checkout
        uses: actions/checkout@v6
        with:
          # Assume PRs are less than 50 commits
          fetch-depth: 50

      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # v47.0.5
        with:
          files: |
            docs/**
            .github/**
            !.github/workflows/ci.yml
            packages/create-vite/template**
            **.md

  test:
    needs: changed
    if: needs.changed.outputs.should_skip != 'true'
    timeout-minutes: 20
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        node_version: [20, 22, 24]
        include:
          # Active LTS + other OS
          - os: macos-latest
            node_version: 24
          - os: windows-latest
            node_version: 24
      fail-fast: false

    name: "Build&Test: node-${{ matrix.node_version }}, ${{ matrix.os }}"
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Install pnpm
        uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0

      - name: Set node version to ${{ matrix.node_version }}
        uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node_version }}
          cache: "pnpm"

      - name: Install deps
        run: pnpm install

      # Install playwright's binary under custom directory to cache
      - name: (non-windows) Set Playwright path and Get playwright version
        if: runner.os != 'Windows'
        run: |
          echo "PLAYWRIGHT_BROWSERS_PATH=$HOME/.cache/playwright-bin" >> $GITHUB_ENV
          PLAYWRIGHT_VERSION="$(pnpm ls --depth 0 --json -w playwright-chromium | jq --raw-output '.[0].devDependencies["playwright-chromium"].version')"
          echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV
      - name: (windows) Set Playwright path and Get playwright version
        if: runner.os == 'Windows'
        run: |
          echo "PLAYWRIGHT_BROWSERS_PATH=$HOME\.cache\playwright-bin" >> $env:GITHUB_ENV
          $env:PLAYWRIGHT_VERSION="$(pnpm ls --depth 0 --json -w playwright-chromium | jq --raw-output '.[0].devDependencies["playwright-chromium"].version')"
          echo "PLAYWRIGHT_VERSION=$env:PLAYWRIGHT_VERSION" >> $env:GITHUB_ENV

      - name: Cache Playwright's binary
        uses: actions/cache@v5
        with:
          key: ${{ runner.os }}-playwright-bin-v1-${{ env.PLAYWRIGHT_VERSION }}
          path: ${{ env.PLAYWRIGHT_BROWSERS_PATH }}
          restore-keys: |
            ${{ runner.os }}-playwright-bin-v1-

      - name: Install Playwright
        # does not need to explicitly set chromium after https://github.com/microsoft/playwright/issues/14862 is solved
        run: pnpm playwright install chromium

      - name: Build
        run: pnpm run build

      - name: Test unit
        run: pnpm run test-unit

      - name: Test serve
        run: pnpm run test-serve

      - name: Test build
        run: pnpm run test-build

  test-passed:
    if: (!cancelled() && !failure())
    needs: test
    runs-on: ubuntu-slim
    name: Build & Test Passed or Skipped
    steps:
      - run: echo "Build & Test Passed or Skipped"

  test-failed:
    if: (!cancelled() && failure())
    needs: test
    runs-on: ubuntu-slim
    name: Build & Test Failed
    steps:
      - run: echo "Build & Test Failed"

  lint:
    timeout-minutes: 10
    runs-on: ubuntu-latest
    name: "Lint: node-24, ubuntu-latest"
    steps:
      - uses: actions/checkout@v6

      - name: Install pnpm
        uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0

      - name: Set node version to 24
        uses: actions/setup-node@v6
        with:
          node-version: 24
          cache: "pnpm"

      - name: Install deps
        run: pnpm install

      - name: Build
        run: pnpm run build

      - name: Lint
        run: pnpm run lint

      - name: Check formatting
        run: pnpm prettier --write --log-level=warn . && git diff --exit-code

      - name: Typecheck
        run: pnpm run typecheck

      - name: Test docs
        run: pnpm run test-docs

      # From https://github.com/rhysd/actionlint/blob/main/docs/usage.md#use-actionlint-on-github-actions
      - name: Check workflow files
        run: |
          bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
          ./actionlint -color -shellcheck=""


================================================
FILE: .github/workflows/copilot-setup-steps.yml
================================================
on:
  workflow_dispatch:
  push:
    paths:
      - .github/workflows/copilot-setup-steps.yml
  pull_request:
    paths:
      - .github/workflows/copilot-setup-steps.yml

jobs:
  copilot-setup-steps:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Install pnpm
        uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0

      - name: Set node version to 24
        uses: actions/setup-node@v6
        with:
          node-version: 24
          cache: "pnpm"

      - name: Install deps
        run: pnpm install

      # Install playwright's binary under custom directory to cache
      - name: (non-windows) Set Playwright path and Get playwright version
        if: runner.os != 'Windows'
        run: |
          echo "PLAYWRIGHT_BROWSERS_PATH=$HOME/.cache/playwright-bin" >> $GITHUB_ENV
          PLAYWRIGHT_VERSION="$(pnpm ls --depth 0 --json -w playwright-chromium | jq --raw-output '.[0].devDependencies["playwright-chromium"].version')"
          echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV
      - name: (windows) Set Playwright path and Get playwright version
        if: runner.os == 'Windows'
        run: |
          echo "PLAYWRIGHT_BROWSERS_PATH=$HOME\.cache\playwright-bin" >> $env:GITHUB_ENV
          $env:PLAYWRIGHT_VERSION="$(pnpm ls --depth 0 --json -w playwright-chromium | jq --raw-output '.[0].devDependencies["playwright-chromium"].version')"
          echo "PLAYWRIGHT_VERSION=$env:PLAYWRIGHT_VERSION" >> $env:GITHUB_ENV

      - name: Install Playwright
        # does not need to explicitly set chromium after https://github.com/microsoft/playwright/issues/14862 is solved
        run: pnpm playwright install chromium


================================================
FILE: .github/workflows/ecosystem-ci-trigger.yml
================================================
name: ecosystem-ci trigger

on:
  issue_comment:
    types: [created]

jobs:
  trigger:
    runs-on: ubuntu-slim
    if: github.repository == 'vitejs/vite' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/ecosystem-ci run')
    permissions:
      issues: write # to add / delete reactions, post comments
      pull-requests: write # to read PR data, and to add labels
      actions: read # to check workflow status
    steps:
      - name: Check User Permissions
        uses: actions/github-script@v8
        id: check-permissions
        with:
          script: |
            const user = context.payload.sender.login
            console.log(`Validate user: ${user}`)

            const additionalAllowedUsers = ['lukastaegert']

            let hasTriagePermission = false
            try {
              const { data } = await github.rest.repos.getCollaboratorPermissionLevel({
                owner: context.repo.owner,
                repo: context.repo.repo,
                username: user,
              });
              hasTriagePermission = data.user.permissions.triage
            } catch (e) {
              console.warn(e)
            }

            if (hasTriagePermission || additionalAllowedUsers.includes(user)) {
              console.log('User is allowed. Adding +1 reaction.')
              await github.rest.reactions.createForIssueComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                comment_id: context.payload.comment.id,
                content: '+1',
              })
            } else {
              console.log('User is not allowed. Adding -1 reaction.')
              await github.rest.reactions.createForIssueComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                comment_id: context.payload.comment.id,
                content: '-1',
              })
              throw new Error('User does not have the necessary permissions.')
            }

      - name: Get PR Data
        uses: actions/github-script@v8
        id: get-pr-data
        with:
          script: |
            console.log(`Get PR info: ${context.repo.owner}/${context.repo.repo}#${context.issue.number}`)
            const { data: pr } = await github.rest.pulls.get({
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: context.issue.number
            })

            const commentCreatedAt = new Date(context.payload.comment.created_at)
            const commitPushedAt = new Date(pr.head.repo.pushed_at)

            console.log(`Comment created at: ${commentCreatedAt.toISOString()}`)
            console.log(`PR last pushed at: ${commitPushedAt.toISOString()}`)

            // Check if any commits were pushed after the comment was created
            if (commitPushedAt > commentCreatedAt) {
              const errorMsg = [
                '⚠️ Security warning: PR was updated after the trigger command was posted.',
                '',
                `Comment posted at: ${commentCreatedAt.toISOString()}`,
                `PR last pushed at: ${commitPushedAt.toISOString()}`,
                '',
                'This could indicate an attempt to inject code after approval.',
                'Please review the latest changes and re-run /ecosystem-ci run if they are acceptable.'
              ].join('\n')

              core.setFailed(errorMsg)

              await github.rest.issues.createComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.issue.number,
                body: errorMsg
              })

              throw new Error('PR was pushed to after comment was created')
            }

            core.setOutput('head_sha', pr.head.sha)
            return {
              num: context.issue.number,
              branchName: pr.head.ref,
              commit: pr.head.sha,
              repo: pr.head.repo.full_name
            }

      - name: Check Package Existence
        uses: actions/github-script@v8
        id: check-package
        with:
          script: |
            const prData = ${{ steps.get-pr-data.outputs.result }}
            const url = `https://pkg.pr.new/vite@${prData.commit}`
            const response = await fetch(url)
            console.log(`Package check URL: ${url}, Status: ${response.status}`)

            // Add 'rocket' reaction to the issue comment
            if (response.status === 404) {
              const { data: reaction } = await github.rest.reactions.createForIssueComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                comment_id: context.payload.comment.id,
                content: 'rocket',
              })
              return { exists: false, reaction: reaction.id }
            }

            return { exists: true, reaction: null }

      - name: Generate Token
        id: generate-token
        uses: actions/create-github-app-token@v3
        with:
          app-id: ${{ secrets.ECOSYSTEM_CI_GITHUB_APP_ID }}
          private-key: ${{ secrets.ECOSYSTEM_CI_GITHUB_APP_PRIVATE_KEY }}
          repositories: |
            vite
            vite-ecosystem-ci

      - name: Trigger Preview Release (if Package Not Found)
        if: fromJSON(steps.check-package.outputs.result).exists == false
        uses: actions/github-script@v8
        id: trigger-preview-release
        env:
          PR_DATA: ${{ steps.get-pr-data.outputs.result }}
        with:
          github-token: ${{ steps.generate-token.outputs.token }}
          script: |
            const prData = JSON.parse(process.env.PR_DATA)
            console.log('Package not found, triggering preview release...')

            // Add label "trigger: preview" to the PR
            await github.rest.issues.addLabels({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: prData.num,
              labels: ['trigger: preview']
            })
            console.log('Added "trigger: preview" label.')

      - name: Wait for Preview Release Completion (if Package Not Found)
        if: fromJSON(steps.check-package.outputs.result).exists == false
        uses: actions/github-script@v8
        id: wait-preview-release
        env:
          PR_DATA: ${{ steps.get-pr-data.outputs.result }}
          REACTION: ${{ fromJSON(steps.check-package.outputs.result).reaction }}
        with:
          script: |
            const prData = JSON.parse(process.env.PR_DATA)
            const reaction = +process.env.REACTION
            const workflowFileName = 'preview-release.yml'
            const workflow = await github.rest.actions.getWorkflow({
              owner: context.repo.owner,
              repo: context.repo.repo,
              workflow_id: workflowFileName,
            })
            const workflowId = workflow.data.id
            console.log(`Waiting for workflow ID ${workflowId} to complete...`)

            const maxRetries = 60 // Wait up to 10 minutes
            const delay = 10000 // 10 seconds
            let completed = false

            for (let i = 0; i < maxRetries; i++) {
              const runsData = await github.rest.actions.listWorkflowRuns({
                owner: context.repo.owner,
                repo: context.repo.repo,
                workflow_id: workflowId,
                head_sha: prData.commit,
                per_page: 100,
                page: 1,
              })

              const runs = runsData.data.workflow_runs

              if (runs.length > 0) {
                const latestRun = runs[0]
                console.log(`Latest run status: ${latestRun.status}, conclusion: ${latestRun.conclusion}`)
                if (latestRun.status === 'completed') {
                  if (latestRun.conclusion === 'success') {
                    console.log('Preview release workflow completed successfully.')
                    completed = true
                    break
                  } else if (latestRun.conclusion === 'skipped') {
                   // noop
                  } else {
                    throw new Error('Preview Release workflow failed.')
                  }
                }
              }

              console.log(`Retrying... (${i + 1}/${maxRetries})`)
              await new Promise(resolve => setTimeout(resolve, delay))
            }

            if (!completed) {
              throw new Error('Preview Release workflow did not complete in time.')
            }

            // Remove the 'rocket' reaction
            if (reaction) {
              await github.rest.reactions.deleteForIssueComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                comment_id: context.payload.comment.id,
                reaction_id: reaction,
              })
              console.log('Removed "rocket" reaction.')
            }

      - name: Trigger Downstream Workflow
        uses: actions/github-script@v8
        id: trigger
        env:
          COMMENT: ${{ github.event.comment.body }}
          PR_DATA: ${{ steps.get-pr-data.outputs.result }}
        with:
          github-token: ${{ steps.generate-token.outputs.token }}
          script: |
            const comment = process.env.COMMENT.trim()
            const prData = JSON.parse(process.env.PR_DATA)

            const suite = comment.split('\n')[0].replace(/^\/ecosystem-ci run/, '').trim()

            await github.rest.actions.createWorkflowDispatch({
              owner: context.repo.owner,
              repo: 'vite-ecosystem-ci',
              workflow_id: 'ecosystem-ci-from-pr.yml',
              ref: 'main',
              inputs: {
                prNumber: '' + prData.num,
                branchName: prData.branchName,
                repo: prData.repo,
                commit: prData.commit,
                suite: suite === '' ? '-' : suite
              }
            })


================================================
FILE: .github/workflows/issue-close-require.yml
================================================
name: Issue Close Require

on:
  schedule:
    - cron: "0 0 * * *"

jobs:
  close-issues:
    if: github.repository == 'vitejs/vite'
    runs-on: ubuntu-slim
    permissions:
      issues: write # for actions-cool/issues-helper to update issues
      pull-requests: write # for actions-cool/issues-helper to update PRs
    steps:
      - name: needs reproduction
        uses: actions-cool/issues-helper@71b62d7da76e59ff7b193904feb6e77d4dbb2777 # v3
        with:
          actions: "close-issues"
          token: ${{ secrets.GITHUB_TOKEN }}
          labels: "needs reproduction"
          inactive-day: 3


================================================
FILE: .github/workflows/issue-labeled.yml
================================================
name: Issue Labeled

on:
  issues:
    types: [labeled]

jobs:
  reply-labeled:
    if: github.repository == 'vitejs/vite'
    runs-on: ubuntu-slim
    permissions:
      issues: write # for actions-cool/issues-helper to update issues
      pull-requests: write # for actions-cool/issues-helper to update PRs
    steps:
      - name: contribution welcome
        if: github.event.label.name == 'contribution welcome' || github.event.label.name == 'help wanted'
        uses: actions-cool/issues-helper@71b62d7da76e59ff7b193904feb6e77d4dbb2777 # v3
        with:
          actions: "remove-labels"
          token: ${{ secrets.GITHUB_TOKEN }}
          issue-number: ${{ github.event.issue.number }}
          labels: "pending triage, needs reproduction"

      - name: remove pending
        if: (github.event.label.name == 'enhancement' || contains(github.event.label.description, '(priority)')) && contains(github.event.issue.labels.*.name, 'pending triage')
        uses: actions-cool/issues-helper@71b62d7da76e59ff7b193904feb6e77d4dbb2777 # v3
        with:
          actions: "remove-labels"
          token: ${{ secrets.GITHUB_TOKEN }}
          issue-number: ${{ github.event.issue.number }}
          labels: "pending triage"

      - name: needs reproduction
        if: github.event.label.name == 'needs reproduction'
        uses: actions-cool/issues-helper@71b62d7da76e59ff7b193904feb6e77d4dbb2777 # v3
        with:
          actions: "create-comment, remove-labels"
          token: ${{ secrets.GITHUB_TOKEN }}
          issue-number: ${{ github.event.issue.number }}
          body: |
            Hello @${{ github.event.issue.user.login }}. Please provide a [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) using a GitHub repository or [StackBlitz](https://vite.new). Issues marked with `needs reproduction` will be closed if they have no activity within 3 days.
          labels: "pending triage"


================================================
FILE: .github/workflows/issue-template-check.yml
================================================
name: Issue Template Check

on:
  issues:
    types: [opened]

jobs:
  evaluate-issue:
    if: "!github.event.issue.pull_request"
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: read
      pull-requests: read
    outputs:
      agent_output: ${{ steps.agent.outputs.agent_output }}
      template_type: ${{ steps.detect.outputs.template_type }}
      skip: ${{ steps.detect.outputs.skip }}
    steps:
      - uses: actions/checkout@v6

      - name: Detect issue type
        id: detect
        uses: actions/github-script@v8
        with:
          script: |
            const labels = context.payload.issue.labels.map(l => l.name);
            const issueType = context.payload.issue.type?.name;

            if (issueType === 'Bug') {
              core.setOutput('template_type', 'bug_report');
              core.setOutput('skip', 'false');
            } else if (issueType === 'Feature') {
              core.setOutput('template_type', 'feature_request');
              core.setOutput('skip', 'false');
            } else if (labels.includes('documentation')) {
              core.setOutput('template_type', 'docs');
              core.setOutput('skip', 'false');
            } else {
              core.info('Issue was not created from a recognized template. Skipping.');
              core.setOutput('template_type', 'unknown');
              core.setOutput('skip', 'true');
            }

      - uses: warpdotdev/oz-agent-action@827a9ad5438c195eb9d1d9a7acece3a8000be512 # v1
        if: steps.detect.outputs.skip == 'false'
        id: agent
        with:
          prompt: |
            You are an issue reviewer for the Vite project.

            The issue template type detected is: ${{ steps.detect.outputs.template_type }}

            Read the matching issue template from the checked-out repository at:
            .github/ISSUE_TEMPLATE/${{ steps.detect.outputs.template_type }}.yml

            Then evaluate the following issue to determine if it faithfully follows that template.

            Issue title: ${{ github.event.issue.title }}
            Issue body:
            ${{ github.event.issue.body }}

            Here is a summary of the required fields per template type:

            **bug_report** required fields:
            1. Describe the bug (required) - A clear and concise description, not vague or just a generic error message
            2. Reproduction (required) - A valid link to a reproduction (vite.new or GitHub repo URL), not empty or plain text
            3. Steps to reproduce - Steps needed to reproduce (optional)
            4. System Info (required) - Output of the envinfo command, must look like actual system/envinfo output
            5. Used Package Manager (required) - One of: npm, yarn, pnpm, bun
            6. Logs - Optional error logs
            7. Validations (required) - All checkboxes must be checked

            **feature_request** required fields:
            1. Description (required) - Clear and concise description of the problem and use cases
            2. Suggested solution (required) - A proposed implementation or approach. If it suggests a new option, check against "Think Before Adding Yet Another Option" in the CONTRIBUTING.md
            3. Alternative - Alternative solutions considered (optional)
            4. Additional context - Any other context (optional)
            5. Validations (required) - All checkboxes must be checked

            **docs** required fields:
            1. Documentation is - Checkboxes indicating the issue type: Missing, Outdated, Confusing, Not sure (optional but at least one should be checked)
            2. Explain in Detail (required) - A clear description of the documentation issue
            3. Your Suggestion for Changes (required) - What should be changed
            4. Reproduction - Optional link via vite.new or GitHub repo
            5. Steps to reproduce - Optional reproduction steps

            Evaluate the issue against the criteria for its detected template type. Focus on whether the required fields are present and substantive (not empty placeholders or placeholder text).

            Respond with ONLY a JSON object (no markdown fencing) with these fields:
            - "template": the template type that was checked
            - "compliant": true/false
            - "missing": an array of strings describing what is missing or inadequate (empty array if compliant)
            - "comment": a polite, helpful comment to post if non-compliant, formatted in GitHub markdown. Address the user by their username @${{ github.event.issue.user.login }}. Ask them to update the issue with the missing information. Reference the specific template they should follow. Be concise.
          output_format: json
          warp_api_key: ${{ secrets.WARP_API_KEY }}
          profile: ${{ vars.WARP_AGENT_PROFILE || '' }}

  post-results:
    needs: evaluate-issue
    if: needs.evaluate-issue.outputs.skip == 'false' && needs.evaluate-issue.outputs.agent_output
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: write
    steps:
      - name: Write result to summary
        uses: actions/github-script@v8
        env:
          TEMPLATE_TYPE: ${{ needs.evaluate-issue.outputs.template_type }}
          AGENT_OUTPUT: ${{ needs.evaluate-issue.outputs.agent_output }}
        with:
          script: |
            const output = process.env.AGENT_OUTPUT;
            const templateType = process.env.TEMPLATE_TYPE;

            try {
              // The agent outputs streaming JSON format with multiple lines
              // We need to extract the last line with type:"agent" and parse its text field
              const lines = output.trim().split('\n');
              let agentText = null;
              for (const line of lines) {
                try {
                  const parsed = JSON.parse(line);
                  if (parsed.type === 'agent' && parsed.text) {
                    agentText = parsed.text;
                  }
                } catch (e) {}
              }

              if (agentText) {
                await core.summary
                  .addHeading(`Issue Template Check (${templateType})`)
                  .addCodeBlock(agentText, 'json')
                  .write();
              }
            } catch (e) {
              core.setFailed(`Failed to write summary: ${e.message}`);
            }


================================================
FILE: .github/workflows/lock-closed-issues.yml
================================================
name: Lock Closed Issues

on:
  schedule:
    - cron: "0 0 * * *"

permissions:
  issues: write

jobs:
  action:
    if: github.repository == 'vitejs/vite'
    runs-on: ubuntu-slim
    steps:
      - uses: actions-cool/issues-helper@71b62d7da76e59ff7b193904feb6e77d4dbb2777 # v3
        with:
          actions: "lock-issues"
          token: ${{ secrets.GITHUB_TOKEN }}
          #body: |
          #  This issue has been locked since it has been closed for more than 14 days.
          #
          #  If you have found a concrete bug or regression related to it, please open a new [bug report](https://github.com/vitejs/vite/issues/new/choose) with a reproduction against the latest Vite version. If you have any other comments you should join the chat at [Vite Land](https://chat.vite.dev) or create a new [discussion](https://github.com/vitejs/vite/discussions).
          issue-state: closed
          inactive-day: 14


================================================
FILE: .github/workflows/preview-release.yml
================================================
name: Preview release

env:
  # install playwright binary manually (because pnpm only runs install script once)
  PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1"

permissions:
  pull-requests: write

on:
  push:
    branches:
      - main
  pull_request:
    types: [opened, synchronize, labeled]

jobs:
  preview:
    if: >
      github.repository == 'vitejs/vite' &&
      (github.event_name == 'push' ||
      (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'trigger: preview')))
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v6

      - name: Install pnpm
        uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0

      - name: Set node version to 24
        uses: actions/setup-node@v6
        with:
          node-version: 24
          registry-url: https://registry.npmjs.org/
          # disable cache, to avoid cache poisoning (https://docs.zizmor.sh/audits/#cache-poisoning)
          package-manager-cache: false

      - name: Disallow installation scripts
        run: yq '.onlyBuiltDependencies = []' -i pnpm-workspace.yaml

      - name: Install deps
        run: pnpm install
        env:
          PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1"

      - name: Build Vite core
        working-directory: ./packages/vite
        run: pnpm build

      - name: Build plugin-legacy
        working-directory: ./packages/plugin-legacy
        run: pnpm build

      - run: pnpm dlx pkg-pr-new@0.0 publish --pnpm './packages/vite' './packages/plugin-legacy' --packageManager=pnpm,npm,yarn --commentWithDev


================================================
FILE: .github/workflows/publish.yml
================================================
name: Publish Package

on:
  push:
    tags:
      - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
      - "plugin-*" # Push events to matching plugin-*, i.e. plugin-(vue|vue-jsx|react|legacy)@1.0.0
      - "create-vite*" # # Push events to matching create-vite*, i.e. create-vite@1.0.0

jobs:
  publish:
    # prevents this action from running on forks
    if: github.repository == 'vitejs/vite'
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    environment: Release
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Install pnpm
        uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0

      - name: Set node version to 24
        uses: actions/setup-node@v6
        with:
          node-version: 24
          registry-url: https://registry.npmjs.org/
          # disable cache, to avoid cache poisoning (https://docs.zizmor.sh/audits/#cache-poisoning)
          package-manager-cache: false

      - name: Disallow installation scripts
        run: yq '.onlyBuiltDependencies = []' -i pnpm-workspace.yaml

      - name: Install deps
        run: pnpm install
        env:
          PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1"

      - name: Publish package
        run: npm i -g npm@^11.5.2 && pnpm run ci-publish "$REF_NAME"
        env:
          REF_NAME: ${{ github.ref_name }}


================================================
FILE: .github/workflows/release-tag.yml
================================================
name: Add GitHub Release Tag

on:
  push:
    tags:
      - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
      - "plugin-*" # Push events to matching plugin-*, i.e. plugin-(vue|vue-jsx|react|legacy)@1.0.0
      - "create-vite*" # # Push events to matching create-vite*, i.e. create-vite@1.0.0

# $GITHUB_REF_NAME - https://docs.github.com/en/actions/reference/workflows-and-actions/variables#default-environment-variables

jobs:
  release:
    if: github.repository == 'vitejs/vite'
    runs-on: ubuntu-slim
    permissions:
      contents: write # for yyx990803/release-tag to create a release tag
    steps:
      - uses: actions/checkout@v6

      - name: Get pkgName for tag
        id: tag
        run: |
          # skip if alpha
          if [[ $GITHUB_REF_NAME =~ alpha ]]; then
            exit 0
          fi

          # matching v2.0.0 / v2.0.0-beta.8 etc
          if [[ $GITHUB_REF_NAME =~ ^v.+ ]]; then
            pkgName="vite"
          else
            # `%@*` truncates @ and version number from the right side.
            # https://stackoverflow.com/questions/9532654/expression-after-last-specific-character
            pkgName=${GITHUB_REF_NAME%@*}
          fi

          echo "pkgName=$pkgName" >> $GITHUB_OUTPUT

      - name: Create Release for Tag
        # only run if tag is not alpha
        if: steps.tag.outputs.pkgName
        id: release_tag
        uses: yyx990803/release-tag@8cccf7c5aa332d71d222df46677f70f77a8d2dc0 # v1.0.0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          body: |
            Please refer to [CHANGELOG.md](https://github.com/vitejs/vite/blob/${{ github.ref_name }}/packages/${{ steps.tag.outputs.pkgName }}/CHANGELOG.md) for details.


================================================
FILE: .github/workflows/semantic-pull-request.yml
================================================
name: Semantic Pull Request

on:
  pull_request_target:
    types:
      - opened
      - edited
      - synchronize

jobs:
  main:
    if: github.repository == 'vitejs/vite'
    runs-on: ubuntu-slim
    name: Semantic Pull Request
    permissions:
      pull-requests: read
    steps:
      - name: Validate PR title
        uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6
        with:
          subjectPattern: ^(?![A-Z]).+$
          subjectPatternError: |
            The subject "{subject}" found in the pull request title "{title}"
            didn't match the configured pattern. Please ensure that the subject
            doesn't start with an uppercase character.
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .gitignore
================================================
!**/glob-import/dir/node_modules
.DS_Store
.idea
.pnpm-store
*.cpuprofile
*.local
*.log
/.vscode/
/docs/.vitepress/cache
/docs/.vitepress/.temp
/packages/vite/LICENSE
dist
dist-ssr
explorations
node_modules
playground-temp
temp
TODOs.md
.eslintcache


================================================
FILE: .prettierignore
================================================
packages/*/CHANGELOG.md
packages/vite/src/node/ssr/__tests__/fixtures/errors/syntax-error.*
playground-temp/
dist/
LICENSE.md
pnpm-lock.yaml
pnpm-workspace.yaml
playground/tsconfig-json-load-error/has-error/tsconfig.json
playground/html/invalid.html
playground/html/invalidClick.html
playground/html/invalidEscape.html
playground/html/valid.html
playground/external/public/slash@3.0.0.js
playground/ssr-html/public/slash@3.0.0.js
playground/worker/classic-worker.js
playground/css/weapp.wxss


================================================
FILE: .prettierrc.json
================================================
{
  "semi": false,
  "singleQuote": true,
  "overrides": [
    {
      "files": ["**/*.json5"],
      "options": {
        "singleQuote": false,
        "quoteProps": "preserve"
      }
    },
    {
      "files": ["**/*.yml"],
      "options": {
        "singleQuote": false
      }
    }
  ]
}


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code Of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, political party, or sexual identity and orientation. Note, however, that religion, political party, or other ideological affiliation provide no exemptions for the behavior we outline as unacceptable in this Code of Conduct.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team by DM at [Vite Land](https://chat.vite.dev). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org


================================================
FILE: CONTRIBUTING.md
================================================
# Vite Contributing Guide

Hi! We're really excited that you're interested in contributing to Vite! Before submitting your contribution, please read through the following guide. We also suggest you read the [Project Philosophy](https://vite.dev/guide/philosophy) in our documentation.

## Repo Setup

To develop locally, fork the Vite repository and clone it in your local machine. The Vite repo is a monorepo using pnpm workspaces. The package manager used to install and link dependencies must be [pnpm](https://pnpm.io/). You can find the required pnpm version in `package.json` under the `packageManager` key.

To develop and test the core `vite` package:

1. Run `pnpm i` in Vite's root folder.

2. Run `pnpm run build` in Vite's root folder.

3. If you are developing Vite itself, you can go to `packages/vite` and run `pnpm run dev` to automatically rebuild Vite whenever you change its code.

> If you are working on multiple projects with different versions of pnpm, it's recommended to enable [Corepack](https://github.com/nodejs/corepack) by running `corepack enable`.

### Cloning the repo on Windows

On Windows, you may want to [activate Developer Mode](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) to resolve [issues with symlink creation for non-admins](https://github.com/vitejs/vite/issues/7390). Also, you may want to [set git `core.symlinks` to `true` to resolve issues with symlinks in git](https://github.com/vitejs/vite/issues/5242).

### Ignoring commits when running `git blame`

We have a `.git-blame-ignore-revs` file to ignore formatting changes.
To make this file used by `git blame`, you need to run the following command.

```sh
git config --local blame.ignoreRevsFile .git-blame-ignore-revs
```

## Documentation

To develop the `docs/` site:

1. Run `pnpm run build` in Vite's root folder. This will generate the types for `twoslash` to work in the code examples. If the types are not available, errors will be logged in step 2 but does not prevent the site from working.

2. Run `pnpm run docs` in Vite's root folder.

### Docs Translation Contribution

To add a new language to the Vite docs, see [`vite-docs-template`](https://github.com/tony19/vite-docs-template/blob/main/.github/CONTRIBUTING.md).

## Notes on Dependencies

Vite aims to be lightweight, and this includes being aware of the number of npm dependencies and their size.

We use Rolldown to pre-bundle most dependencies before publishing! Therefore, most dependencies, even those used in runtime source code, should be added under `devDependencies` by default. This also creates the following constraints that we need to be aware of in the codebase.

### Usage of `require()`

In some cases, we intentionally lazy-require some dependencies to improve start-up performance. However, note that we cannot use simple `require('somedep')` calls since these are ignored in ESM files, so the dependency won't be included in the bundle, and the actual dependency won't even be there when published since they are in `devDependencies`.

Instead, use `(await import('somedep')).default`.

### Think Before Adding a Dependency

Most deps should be added to `devDependencies` even if they are needed at runtime. Some exceptions are:

- Type packages. Example: `@types/*`.
- Deps that cannot be properly bundled due to binary files. Example: `esbuild`.
- Deps that ship their own types that are used in Vite's own public types. Example: `rollup`.

Avoid deps with large transitive dependencies that result in bloated size compared to the functionality it provides. For example, `http-proxy` itself is around 380kB in size, but `http-proxy-middleware` pulls in a ton of dependencies that make it 3MB(!) when a minimal custom middleware on top of `http-proxy` only requires a couple of lines of code.

### Ensure Type Support

Vite aims to be fully usable as a dependency in a TypeScript project (e.g. it should provide proper typings for VitePress), and also in `vite.config.ts`. This means technically a dependency whose types are exposed needs to be part of `dependencies` instead of `devDependencies`. However, this also means we won't be able to bundle it.

To get around this, we inline some of these dependencies' types in `packages/vite/src/types`. This way, we can still expose the typing but bundle the dependency's source code.

Use `pnpm run build-types-check` to check that the bundled types do not rely on types in `devDependencies`.

For types shared between client and node, they should be added into `packages/vite/types`. These types are not bundled and are published as is (though they are still considered internal).

## Think Before Adding Yet Another Option

We already have many config options, and we should avoid fixing an issue by adding yet another one. Before adding an option, consider whether the problem:

- is really worth addressing
- can be fixed with a smarter default
- has workaround using existing options
- can be addressed with a plugin instead

## Debugging

To use breakpoints and explore code execution, you can use the ["Run and Debug"](https://code.visualstudio.com/docs/editor/debugging) feature from VS Code.

1. Add a `debugger` statement where you want to stop the code execution.

2. Click the "Run and Debug" icon in the activity bar of the editor, which opens the [_Run and Debug view_](https://code.visualstudio.com/docs/editor/debugging#_run-and-debug-view).

3. Click the "JavaScript Debug Terminal" button in the _Run and Debug view_, which opens a terminal in VS Code.

4. From that terminal, go to `playground/xxx`, and run `pnpm run dev`.

5. The execution will stop at the `debugger` statement, and you can use the [Debug toolbar](https://code.visualstudio.com/docs/editor/debugging#_debug-actions) to continue, step over, and restart the process...

### Debugging Errors in Vitest Tests Using Playwright (Chromium)

Some errors are masked and hidden away because of the layers of abstraction and sandboxed nature added by Vitest, Playwright, and Chromium. In order to see what's actually going wrong and the contents of the devtools console in those instances, follow this setup:

1. Add a `debugger` statement to the `playground/vitestSetup.ts` -> `afterAll` hook. This will pause execution before the tests quit and the Playwright browser instance exits.

2. Run the tests with the `debug-serve` script command, which will enable remote debugging: `pnpm run debug-serve resolve`.

3. Wait for inspector devtools to open in your browser and the debugger to attach.

4. In the sources panel in the right column, click the play button to resume execution, and allow the tests to run, which will open a Chromium instance.

5. Focusing the Chromium instance, you can open the browser devtools and inspect the console there to find the underlying problems.

6. To close everything, just stop the test process back in your terminal.

### Debug Logging

You can set the `--debug` option to turn on debugging logs (e.g. `vite --debug resolve`). To see all debug logs, you can set `vite --debug *`, but be warned that it will be quite noisy. You can run `grep -r "createDebugger('vite:" packages/vite/src/` to see a list of available debug scopes.

### Disabling Source Maps

Source maps for Vite's source code are enabled by default when Vite is placed outside `node_modules` so that you can easily debug it. When bundling Vite in watch mode, source maps will be generated.

However, this behavior may not be desirable when you are developing source map related features. In that case, you can disable source maps by setting the `DEBUG_DISABLE_SOURCE_MAP` environment variable to `1` when running Vite (e.g. `DEBUG_DISABLE_SOURCE_MAP=1 vite`). This environment variable can also be used to disable source map generation.

## Testing Vite against external packages

You may wish to test your locally modified copy of Vite against another package that is built with Vite. For pnpm, after building Vite, you can use [`pnpm.overrides`](https://pnpm.io/package_json#pnpmoverrides) to do this. Note that `pnpm.overrides` must be specified in the root `package.json`, and you must list the package as a dependency in the root `package.json`:

```json
{
  "dependencies": {
    "vite": "^7.0.0"
  },
  "pnpm": {
    "overrides": {
      "vite": "link:../path/to/vite/packages/vite"
    }
  }
}
```

And re-run `pnpm install` to link the package.

## Running Tests

### Integration Tests

Each package under `playground/` contains a `__tests__` directory. The tests are run using [Vitest](https://vitest.dev/) + [Playwright](https://playwright.dev/) with custom integrations to make writing tests simple. The detailed setup is inside `vitest.config.e2e.ts` and `playground/vitest*.ts` files.

Some playgrounds define variants to run the same app using different config setups. By convention, when running a test spec file in a nested folder in `__tests__`, the setup will try to use a config file named `vite.config-{folderName}.js` at the playground's root. You can see an example of variants in the [assets playground](https://github.com/vitejs/vite/tree/main/playground/assets).

Before running the tests, make sure that [Vite has been built](#repo-setup).

Each integration test can be run under either dev server mode or build mode.

- `pnpm test` by default runs every integration test in both serve and build mode, and also unit tests.

- `pnpm run test-serve` runs tests only under serve mode.

- `pnpm run test-build` runs tests only under build mode.

`pnpm run test-serve [match]` or `pnpm run test-build [match]` runs tests in specific packages that match the given filter. e.g. `pnpm run test-serve assets` runs tests for both `playground/assets` and `playground/assets-sanitize` under serve mode. Note package matching is not available for the `pnpm test` script, which always runs all tests.

### Unit Tests

Other than tests under `playground/` for integration tests, packages might contain unit tests under their `__tests__` directory. Unit tests are powered by [Vitest](https://vitest.dev/). The detailed config is inside `vitest.config.ts` files.

- `pnpm run test-unit` runs unit tests under each package.

`pnpm run test-unit [match]` runs tests in specific packages that match the given filter.

### Test Env and Helpers

Inside playground tests, you can import the `page` object from `~utils`, which is a Playwright [`Page`](https://playwright.dev/docs/api/class-page) instance that has already navigated to the served page of the current playground. So, writing a test is as simple as:

```js
import { page } from '~utils'

test('should work', async () => {
  expect(await page.textContent('.foo')).toMatch('foo')
})
```

Some common test helpers (e.g. `testDir`, `isBuild`, or `editFile`) are also available in the utils. Source code is located at `playground/test-utils.ts`.

Note: The test build environment uses a [different default set of Vite config](https://github.com/vitejs/vite/blob/main/playground/vitestSetup.ts#L207-L227) to skip transpilation during tests to make it faster. This may produce a different result compared to the default production build.

### Extending the Test Suite

To add new tests, you should find a related playground to the fix or feature (or create a new one). As an example, static assets loading is tested in the [assets playground](https://github.com/vitejs/vite/tree/main/playground/assets). In this Vite app, there is a test for `?raw` imports with [a section defined in the `index.html` for it](https://github.com/vitejs/vite/blob/v6.3.1/playground/assets/index.html#L266-L267):

```html
<h2>?raw import</h2>
<code class="raw"></code>
```

This will be modified [with the result of a file import](https://github.com/vitejs/vite/blob/v6.3.1/playground/assets/index.html#L543-L544):

```js
import rawSvg from './nested/fragment.svg?raw'
text('.raw', rawSvg)
```

...where the `text` util is defined as:

```js
function text(el, text) {
  document.querySelector(el).textContent = text
}
```

In the [spec tests](https://github.com/vitejs/vite/blob/v6.3.1/playground/assets/__tests__/assets.spec.ts#L469-L471), the modifications to the DOM listed above are used to test this feature:

```js
test('?raw import', async () => {
  expect(await page.textContent('.raw')).toMatch('SVG')
})
```

### Note on Test Dependencies

In many test cases, we need to mock dependencies using `link:` and `file:` protocols. `pnpm` treats `link:` as symlinks and `file:` as hardlinks. To test dependencies as if they were copied into `node_modules`, use the `file:` protocol. Otherwise, use the `link:` protocol.

For a mock dependency, make sure you add a `@vitejs/test-` prefix to the package name. This will avoid possible issues like false-positive alerts.

## Pull Request Guidelines

> [!NOTE]
> You do not need to ask for permission to work on an open issue. You can start investigating or open a PR directly. If someone else ships a fix first, you can still help by reviewing or validating the solution.

- Checkout a topic branch from a base branch (e.g. `main`), and merge back against that branch.

- If adding a new feature:
  - Add accompanying test case.
  - Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first, and have it approved before working on it.

- If fixing a bug:
  - If you are resolving a special issue, add `(fix #xxxx[,#xxxx])` (#xxxx is the issue id) in your PR title for a better release log (e.g. `fix: update entities encoding/decoding (fix #3899)`).
  - Provide a detailed description of the bug in the PR. Live demo preferred.
  - Add appropriate test coverage. If not applicable, explain in the PR description why tests are not included.

- If it's a chore:
  - For typos and comment changes, try to combine multiple of them into a single PR.
  - **Note that we discourage contributors from submitting code refactors that are largely stylistic.** Code refactors are only accepted if it improves performance, or objectively improves code quality (e.g. makes a related bug fix or feature implementation easier, and it is as a separate PR to improve git history).
    - The reason is that code readability is subjective. The maintainers of this project have chosen to write the code in its current style based on our preferences, and we do not want to spend time explaining our stylistic preferences. Contributors should just respect the established conventions when contributing code. Another aspect of it is that large scale stylistic changes result in massive diffs that touch multiple files, adding noise to the git history and makes tracing behavior changes across commits more cumbersome.

- It's OK to have multiple small commits as you work on the PR. GitHub can automatically squash them before merging.

- Make sure tests pass!

- No need to worry about code style as long as you have installed the dev dependencies. Modified files are automatically formatted with Prettier on commit (by invoking [Git Hooks](https://git-scm.com/docs/githooks) via [simple-git-hooks](https://github.com/toplenboren/simple-git-hooks)).

- PR title must follow the [commit message convention](./.github/commit-convention.md) so that changelogs can be automatically generated.

## Maintenance Guidelines

> The following section is mostly for maintainers who have commit access, but it's helpful to go through if you intend to make non-trivial contributions to the codebase.

### Issue Triaging Workflow

```mermaid
flowchart TD
    start{Followed issue
        template?}
    start --NO--> close1["Close and ask to
        follow template"]
    start --YES--> dupe{Is duplicate?}
    dupe --YES--> close2[Close and point
        to duplicate]
    dupe --NO--> repro{Has proper
      reproduction?}
    repro --NO--> close3[Label: 'needs reproduction'
        bot will auto close if no update
        has been made in 3 days]
    repro --YES--> real{Is actually a bug?}
    real --NO--> intended{Is the intended
        behaviour?}
    intended --YES--> explain[Explain and close
        point to docs if needed]
    intended --NO--> open[Keep open for discussion
        Remove 'pending triage' label]
    real --YES--> real2["① Remove 'pending triage' label
        ② Add related feature label if applicable
        (e.g. 'feat: ssr')
        ③ Add priority and meta labels (see below)"]
    real2 --> unusable{Does the
        bug make Vite
        unusable?}
    unusable --YES--> maj{Does the bug
        affect the majority
        of Vite users?}
    maj --YES--> p5[p5: urgent]
    maj --NO--> p4[p4: important]
    unusable --NO--> workarounds{Are there
        workarounds for
        the bug?}
    workarounds --NO--> p3[p3: minor bug]
    workarounds --YES--> p2[p2: edge case
        has workaround]
```

### Pull Request Review Workflow

```mermaid
flowchart TD
    start{Bug fix
        or
        feature}
    start --BUG FIX--> strict_bug{"Is this a 'strict fix'?
        i.e. fixes an obvious oversight with no side effects"}
    start --FEATURE--> feature[• Discuss feature necessity
        • Is there a better way to address the need?
        • Review code quality
        • Add labels
        • Add to milestone
        • Add to Team Board]
    feature -.-> approve_non_strict[• Run vite-ecosystem-ci if needed
        • Approve if you feel strongly that the PR is needed and add to milestone]
    strict_bug --YES--> strict[• Verify the fix locally
        • Review code quality
        • Require test case if applicable
        • Request changes if necessary
        • Add labels]
    strict_bug --NO--> non_strict[Discuss the potential side effects of the fix, e.g.
        • Could it introduce implicit behavior changes in other cases?
        • Does it introduce too much changes?
        • Add labels
        • Add to Team Board]
    non_strict -.-> approve_non_strict
    strict --> approve_strict[Approve if ready to be merged]
    approve_strict --> merge_strict[Merge if approved by 2 or more team members]
    approve_non_strict -.-> merge_non_strict[Merge if approved by 2 or more team members and the PR has been discussed in a team meeting]
    merge_non_strict -.-> merge_extra
    merge_strict --> merge_extra["• Use 'Squash and Merge'
        • Edit commit message to follow convention
        • In commit message body, list relevant issues being fixed e.g. 'fix #1234, fix #1235'"]
```

### Release

If you have publish access, the steps below explain how to cut a release for a package. There are two phases for the release step: "Release" and "Publish".

"Release" is done locally to generate the changelogs and git tags:

1. Make sure the git remote for https://github.com/vitejs/vite is set as `origin`.
2. In the `vite` project root `main` branch, run `git pull` and `pnpm i` to get it up-to-date. Then run `pnpm build`.
3. Run `pnpm release` and follow the prompts to cut a release for a package. It will generate the changelog, a git release tag, and push them to `origin`. You can run with the `--dry` flag to test it out.
4. When the command finishes, it will provide a link to https://github.com/vitejs/vite/actions/workflows/publish.yml.
5. Click the link to visit the page, and follow the next steps below.

"Publish" is done on GitHub Actions to publish the package to npm:

1. Shortly in the workflows page, a new workflow will appear for the released package and is waiting for approval to publish to npm.
2. Click on the workflow to open its page.
3. Click on the "Review deployments" button in the yellow box, a popup will appear.
4. Check "Release" and click "Approve and deploy".
5. The package will start publishing to npm.

To learn more about how and when Vite does releases, check out the [Releases](https://vite.dev/releases) documentation.


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2019-present, VoidZero Inc. and Vite contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
<p align="center">
  <br>
  <br>
  <a href="https://vite.dev" target="_blank" rel="noopener noreferrer">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://vite.dev/vite-light.svg">
      <source media="(prefers-color-scheme: light)" srcset="https://vite.dev/vite-dark.svg">
      <img alt="vite logo" src="https://vite.dev/vite-dark.svg" height="60">
    </picture>
  </a>
  <br>
  <br>
</p>
<br/>
<p align="center">
  <a href="https://npmjs.com/package/vite"><img src="https://img.shields.io/npm/v/vite.svg" alt="npm package"></a>
  <a href="https://nodejs.org/en/about/previous-releases"><img src="https://img.shields.io/node/v/vite.svg" alt="node compatibility"></a>
  <a href="https://github.com/vitejs/vite/actions/workflows/ci.yml"><img src="https://github.com/vitejs/vite/actions/workflows/ci.yml/badge.svg?branch=main" alt="build status"></a>
  <a href="https://docs.warp.dev/support-and-community/community/open-source-partnership"><img src="https://img.shields.io/badge/Oz%20agents-triaging%20issues-white?logo=warp" alt="issue triage powered by Oz"></a>
  <a href="https://chat.vite.dev"><img src="https://img.shields.io/badge/chat-discord-blue?style=flat&logo=discord" alt="discord chat"></a>
</p>
<br/>

# Vite ⚡

> Next Generation Frontend Tooling

- 💡 Instant Server Start
- ⚡️ Lightning Fast HMR
- 🛠️ Rich Features
- 📦 Optimized Build
- 🔩 Universal Plugin Interface
- 🔑 Fully Typed APIs

Vite (French word for "quick", pronounced [`/viːt/`](https://cdn.jsdelivr.net/gh/vitejs/vite@main/docs/public/vite.mp3), like "veet") is a new breed of frontend build tooling that significantly improves the frontend development experience. It consists of two major parts:

- A dev server that serves your source files over [native ES modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules), with [rich built-in features](https://vite.dev/guide/features.html) and astonishingly fast [Hot Module Replacement (HMR)](https://vite.dev/guide/features.html#hot-module-replacement).

- A [build command](https://vite.dev/guide/build.html) that bundles your code with [Rollup](https://rollupjs.org), pre-configured to output highly optimized static assets for production.

In addition, Vite is highly extensible via its [Plugin API](https://vite.dev/guide/api-plugin.html) and [JavaScript API](https://vite.dev/guide/api-javascript.html) with full typing support.

[Read the Docs to Learn More](https://vite.dev).

## Packages

| Package                                         | Version (click for changelogs)                                                                                                    |
| ----------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------- |
| [vite](packages/vite)                           | [![vite version](https://img.shields.io/npm/v/vite.svg?label=%20)](packages/vite/CHANGELOG.md)                                    |
| [@vitejs/plugin-legacy](packages/plugin-legacy) | [![plugin-legacy version](https://img.shields.io/npm/v/@vitejs/plugin-legacy.svg?label=%20)](packages/plugin-legacy/CHANGELOG.md) |
| [create-vite](packages/create-vite)             | [![create-vite version](https://img.shields.io/npm/v/create-vite.svg?label=%20)](packages/create-vite/CHANGELOG.md)               |

## Contribution

See [Contributing Guide](CONTRIBUTING.md).

## License

[MIT](LICENSE).

## Sponsors

<p align="center">
  <a target="_blank" href="https://github.com/sponsors/yyx990803">
    <img alt="sponsors" src="https://sponsors.vuejs.org/vite.svg?v2">
  </a>
</p>


================================================
FILE: docs/.vitepress/buildEnd.config.ts
================================================
import path from 'node:path'
import { writeFileSync } from 'node:fs'
import { Feed } from 'feed'
import type { SiteConfig } from 'vitepress'
import { createContentLoader } from 'vitepress'

const siteUrl = 'https://vite.dev'
const blogUrl = `${siteUrl}/blog`

export const buildEnd = async (config: SiteConfig): Promise<void> => {
  const feed = new Feed({
    title: 'Vite',
    description: 'Next Generation Frontend Tooling',
    id: blogUrl,
    link: blogUrl,
    language: 'en',
    image: 'https://vite.dev/og-image.jpg',
    favicon: 'https://vite.dev/logo.svg',
    copyright: 'Copyright © 2019-present VoidZero Inc. & Vite Contributors',
  })

  const posts = await createContentLoader('blog/*.md', {
    excerpt: true,
    render: true,
  }).load()

  posts.sort(
    (a, b) =>
      +new Date(b.frontmatter.date as string) -
      +new Date(a.frontmatter.date as string),
  )

  for (const { url, excerpt, frontmatter, html } of posts) {
    feed.addItem({
      title: frontmatter.title,
      id: `${siteUrl}${url}`,
      link: `${siteUrl}${url}`,
      description: excerpt,
      content: html,
      author: [
        {
          name: frontmatter.author.name,
        },
      ],
      date: frontmatter.date,
    })
  }

  writeFileSync(path.join(config.outDir, 'blog.rss'), feed.rss2())
}


================================================
FILE: docs/.vitepress/config.ts
================================================
import path from 'node:path'
import fs from 'node:fs'
import type { HeadConfig } from 'vitepress'
import { defineConfig } from 'vitepress'
import { transformerTwoslash } from '@shikijs/vitepress-twoslash'
import {
  groupIconMdPlugin,
  groupIconVitePlugin,
} from 'vitepress-plugin-group-icons'
import { graphvizMarkdownPlugin } from 'vitepress-plugin-graphviz'
import llmstxt from 'vitepress-plugin-llms'
import { markdownItImageSize } from 'markdown-it-image-size'
import { extendConfig } from '@voidzero-dev/vitepress-theme/config'
import type { FooterLink } from '@voidzero-dev/vitepress-theme'
import packageJson from '../../packages/vite/package.json' with { type: 'json' }
import { buildEnd } from './buildEnd.config'

const viteVersion = packageJson.version
const viteMajorVersion = +viteVersion.split('.')[0]

const ogDescription = 'Next Generation Frontend Tooling'
const ogImage = 'https://vite.dev/og-image.jpg'
const ogTitle = 'Vite'
const ogUrl = 'https://vite.dev'

// netlify envs
const deployURL = process.env.DEPLOY_PRIME_URL || ''
const commitRef = process.env.COMMIT_REF?.slice(0, 8) || 'dev'

const deployType = (() => {
  switch (deployURL) {
    case 'https://main--vite-docs-main.netlify.app':
      return 'main'
    case '':
      return 'local'
    default:
      return 'release'
  }
})()
const additionalTitle = ((): string => {
  switch (deployType) {
    case 'main':
      return ' (main branch)'
    case 'local':
      return ' (local)'
    case 'release':
      return ''
  }
})()
const versionLinks = (() => {
  const links: FooterLink[] = []

  if (deployType !== 'main') {
    links.push({
      text: 'Unreleased Docs',
      link: 'https://main.vite.dev',
    })
  }

  if (deployType === 'main' || deployType === 'local') {
    links.push({
      text: `Vite ${viteMajorVersion} Docs (release)`,
      link: 'https://vite.dev',
    })
  }

  // Create version links from v2 onwards
  for (let i = viteMajorVersion - 1; i >= 2; i--) {
    links.push({
      text: `Vite ${i} Docs`,
      link: `https://v${i}.vite.dev`,
    })
  }

  return links
})()

function inlineScript(file: string): HeadConfig {
  return [
    'script',
    {},
    fs.readFileSync(
      path.resolve(import.meta.dirname, `./inlined-scripts/${file}`),
      'utf-8',
    ),
  ]
}

const config = defineConfig({
  title: `Vite${additionalTitle}`,
  description: 'Next Generation Frontend Tooling',
  cleanUrls: true,
  sitemap: {
    hostname: 'https://vite.dev',
  },
  head: [
    [
      'link',
      { rel: 'icon', type: 'image/svg+xml', href: '/logo-without-border.svg' },
    ],
    [
      'link',
      { rel: 'alternate', type: 'application/rss+xml', href: '/blog.rss' },
    ],
    ['link', { rel: 'preconnect', href: 'https://fonts.googleapis.com' }],
    inlineScript('banner.js'),
    ['link', { rel: 'me', href: 'https://m.webtoo.ls/@vite' }],
    ['meta', { property: 'og:type', content: 'website' }],
    ['meta', { property: 'og:title', content: ogTitle }],
    ['meta', { property: 'og:image', content: ogImage }],
    ['meta', { property: 'og:url', content: ogUrl }],
    ['meta', { property: 'og:description', content: ogDescription }],
    ['meta', { property: 'og:site_name', content: 'vitejs' }],
    ['meta', { name: 'twitter:card', content: 'summary_large_image' }],
    ['meta', { name: 'twitter:site', content: '@vite_js' }],
    ['meta', { name: 'theme-color', content: '#646cff' }],
    [
      'script',
      {
        src: 'https://cdn.usefathom.com/script.js',
        'data-site': 'CBDFBSLI',
        'data-spa': 'auto',
        defer: '',
      },
    ],
  ],

  locales: {
    root: { label: 'English' },
    zh: { label: '简体中文', link: 'https://cn.vite.dev' },
    ja: { label: '日本語', link: 'https://ja.vite.dev' },
    es: { label: 'Español', link: 'https://es.vite.dev' },
    pt: { label: 'Português', link: 'https://pt.vite.dev' },
    ko: { label: '한국어', link: 'https://ko.vite.dev' },
    de: { label: 'Deutsch', link: 'https://de.vite.dev' },
    fa: { label: 'فارسی', link: 'https://fa.vite.dev' },
  },

  themeConfig: {
    variant: 'vite',
    logo: '/logo.svg',

    banner: {
      id: 'viteplus-alpha',
      text: 'Announcing Vite+ Alpha: Open source. Unified. Next-gen.',
      url: 'https://voidzero.dev/posts/announcing-vite-plus-alpha?utm_source=vite&utm_content=top_banner',
    },

    editLink: {
      pattern: 'https://github.com/vitejs/vite/edit/main/docs/:path',
      text: 'Suggest changes to this page',
    },

    socialLinks: [
      { icon: 'bluesky', link: 'https://bsky.app/profile/vite.dev' },
      { icon: 'mastodon', link: 'https://elk.zone/m.webtoo.ls/@vite' },
      { icon: 'x', link: 'https://x.com/vite_js' },
      { icon: 'discord', link: 'https://chat.vite.dev' },
      { icon: 'github', link: 'https://github.com/vitejs/vite' },
    ],

    search: {
      provider: 'algolia',
      options: {
        appId: '7H67QR5P0A',
        apiKey: '208bb9c14574939326032b937431014b',
        indexName: 'vitejs',
        searchParameters: {
          facetFilters: ['tags:en'],
        },
        insights: true,
      },
    },

    carbonAds: {
      code: 'CEBIEK3N',
      placement: 'vitejsdev',
    },

    footer: {
      copyright: `© 2019-present VoidZero Inc. and Vite contributors. (${commitRef})`,
      nav: [
        {
          title: 'Vite',
          items: [
            { text: 'Guide', link: '/guide/' },
            { text: 'Config', link: '/config/' },
            { text: 'Plugins', link: '/plugins/' },
          ],
        },
        {
          title: 'Resources',
          items: [
            { text: 'Team', link: '/team' },
            { text: 'Blog', link: '/blog' },
            {
              text: 'Releases',
              link: 'https://github.com/vitejs/vite/releases',
            },
          ],
        },
        {
          title: 'Versions',
          items: versionLinks,
        },
      ],
      social: [
        { icon: 'github', link: 'https://github.com/vitejs/vite' },
        { icon: 'discord', link: 'https://chat.vite.dev' },
        { icon: 'bluesky', link: 'https://bsky.app/profile/vite.dev' },
        { icon: 'x', link: 'https://x.com/vite_js' },
      ],
    },

    nav: [
      { text: 'Guide', link: '/guide/', activeMatch: '/guide/' },
      { text: 'Config', link: '/config/', activeMatch: '/config/' },
      { text: 'Plugins', link: '/plugins/', activeMatch: '/plugins/' },
      {
        text: 'Resources',
        items: [
          { text: 'Team', link: '/team' },
          { text: 'Blog', link: '/blog' },
          { text: 'Releases', link: '/releases' },
          { text: 'Acknowledgements', link: '/acknowledgements' },
          {
            text: 'Plugin Registry',
            link: 'https://registry.vite.dev/plugins',
          },
          {
            text: 'The Documentary',
            link: 'https://www.youtube.com/watch?v=bmWQqAKLgT4',
          },
          {
            items: [
              {
                text: 'Bluesky',
                link: 'https://bsky.app/profile/vite.dev',
              },
              {
                text: 'Mastodon',
                link: 'https://elk.zone/m.webtoo.ls/@vite',
              },
              {
                text: 'X',
                link: 'https://x.com/vite_js',
              },
              {
                text: 'Discord Chat',
                link: 'https://chat.vite.dev',
              },
              {
                text: 'Awesome Vite',
                link: 'https://github.com/vitejs/awesome-vite',
              },
              {
                text: 'ViteConf',
                link: 'https://viteconf.org',
              },
              {
                text: 'DEV Community',
                link: 'https://dev.to/t/vite',
              },
            ],
          },
        ],
      },
      {
        text: `v${viteVersion}`,
        items: [
          {
            text: 'Changelog',
            link: 'https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md',
          },
          {
            text: 'Contributing',
            link: 'https://github.com/vitejs/vite/blob/main/CONTRIBUTING.md',
          },
          {
            items: versionLinks,
          },
        ],
      },
    ],

    sidebar: {
      '/guide/': [
        {
          text: 'Introduction',
          items: [
            {
              text: 'Getting Started',
              link: '/guide/',
            },
            {
              text: 'Philosophy',
              link: '/guide/philosophy',
            },
            {
              text: 'Why Vite',
              link: '/guide/why',
            },
          ],
        },
        {
          text: 'Guide',
          items: [
            {
              text: 'Features',
              link: '/guide/features',
            },
            {
              text: 'CLI',
              link: '/guide/cli',
            },
            {
              text: 'Using Plugins',
              link: '/guide/using-plugins',
            },
            {
              text: 'Dependency Pre-Bundling',
              link: '/guide/dep-pre-bundling',
            },
            {
              text: 'Static Asset Handling',
              link: '/guide/assets',
            },
            {
              text: 'Building for Production',
              link: '/guide/build',
            },
            {
              text: 'Deploying a Static Site',
              link: '/guide/static-deploy',
            },
            {
              text: 'Env Variables and Modes',
              link: '/guide/env-and-mode',
            },
            {
              text: 'Server-Side Rendering (SSR)',
              link: '/guide/ssr',
            },
            {
              text: 'Backend Integration',
              link: '/guide/backend-integration',
            },
            {
              text: 'Troubleshooting',
              link: '/guide/troubleshooting',
            },
            {
              text: 'Performance',
              link: '/guide/performance',
            },
            {
              text: `Migration from v${viteMajorVersion - 1}`,
              link: '/guide/migration',
            },
            {
              text: 'Breaking Changes',
              link: '/changes/',
            },
          ],
        },
        {
          text: 'APIs',
          items: [
            {
              text: 'Plugin API',
              link: '/guide/api-plugin',
            },
            {
              text: 'HMR API',
              link: '/guide/api-hmr',
            },
            {
              text: 'JavaScript API',
              link: '/guide/api-javascript',
            },
            {
              text: 'Config Reference',
              link: '/config/',
            },
          ],
        },
        {
          text: 'Environment API',
          items: [
            {
              text: 'Introduction',
              link: '/guide/api-environment',
            },
            {
              text: 'Environment Instances',
              link: '/guide/api-environment-instances',
            },
            {
              text: 'Plugins',
              link: '/guide/api-environment-plugins',
            },
            {
              text: 'Frameworks',
              link: '/guide/api-environment-frameworks',
            },
            {
              text: 'Runtimes',
              link: '/guide/api-environment-runtimes',
            },
          ],
        },
      ],
      '/config/': [
        {
          text: 'Config',
          items: [
            {
              text: 'Configuring Vite',
              link: '/config/',
            },
            {
              text: 'Shared Options',
              link: '/config/shared-options',
            },
            {
              text: 'Server Options',
              link: '/config/server-options',
            },
            {
              text: 'Build Options',
              link: '/config/build-options',
            },
            {
              text: 'Preview Options',
              link: '/config/preview-options',
            },
            {
              text: 'Dep Optimization Options',
              link: '/config/dep-optimization-options',
            },
            {
              text: 'SSR Options',
              link: '/config/ssr-options',
            },
            {
              text: 'Worker Options',
              link: '/config/worker-options',
            },
          ],
        },
      ],
      '/changes/': [
        {
          text: 'Breaking Changes',
          link: '/changes/',
        },
        {
          text: 'Current',
          items: [],
        },
        {
          text: 'Future',
          items: [
            {
              text: 'this.environment in Hooks',
              link: '/changes/this-environment-in-hooks',
            },
            {
              text: 'HMR hotUpdate Plugin Hook',
              link: '/changes/hotupdate-hook',
            },
            {
              text: 'Move to Per-environment APIs',
              link: '/changes/per-environment-apis',
            },
            {
              text: 'SSR Using ModuleRunner API',
              link: '/changes/ssr-using-modulerunner',
            },
            {
              text: 'Shared Plugins During Build',
              link: '/changes/shared-plugins-during-build',
            },
          ],
        },
        {
          text: 'Past',
          items: [],
        },
      ],
    },

    outline: {
      level: [2, 3],
    },
  },
  transformHead(ctx) {
    const path = ctx.page.replace(/(^|\/)index\.md$/, '$1').replace(/\.md$/, '')

    if (path !== '404') {
      const canonicalUrl = path ? `${ogUrl}/${path}` : ogUrl
      ctx.head.push(
        ['link', { rel: 'canonical', href: canonicalUrl }],
        ['meta', { property: 'og:title', content: ctx.pageData.title }],
      )
    }

    // For the landing page, move the google font links to the top for better performance
    if (path === '') {
      const googleFontLinks: HeadConfig[] = []
      for (let i = 0; i < ctx.head.length; i++) {
        const tag = ctx.head[i]
        if (
          tag[0] === 'link' &&
          (tag[1]?.href?.includes('fonts.googleapis.com') ||
            tag[1]?.href?.includes('fonts.gstatic.com'))
        ) {
          ctx.head.splice(i, 1)
          googleFontLinks.push(tag)
          i--
        }
      }
      ctx.head.unshift(...googleFontLinks)
    }
  },
  markdown: {
    // languages used for twoslash and jsdocs in twoslash
    languages: ['ts', 'js', 'json'],
    codeTransformers: [
      transformerTwoslash(),
      // add `style:*` support
      {
        root(hast) {
          const meta = this.options.meta?.__raw
            ?.split(' ')
            .find((m) => m.startsWith('style:'))
          if (meta) {
            const style = meta.slice('style:'.length)
            const rootPre = hast.children.find(
              (n): n is typeof n & { type: 'element'; tagName: 'pre' } =>
                n.type === 'element' && n.tagName === 'pre',
            )
            if (rootPre) {
              rootPre.properties.style += '; ' + style
            }
          }
        },
      },
    ],
    async config(md) {
      md.use(groupIconMdPlugin, {
        titleBar: {
          includeSnippet: true,
        },
      })
      md.use(markdownItImageSize, {
        publicDir: path.resolve(import.meta.dirname, '../public'),
      })
      await graphvizMarkdownPlugin(md)
    },
  },
  vite: {
    plugins: [
      groupIconVitePlugin({
        customIcon: {
          firebase: 'vscode-icons:file-type-firebase',
          '.gitlab-ci.yml': 'vscode-icons:file-type-gitlab',
        },
      }),
      llmstxt({
        ignoreFiles: ['blog/*', 'blog.md', 'index.md', 'team.md'],
        description: 'The Build Tool for the Web',
        details: `\
- 💡 Instant Server Start
- ⚡️ Lightning Fast HMR
- 🛠️ Rich Features
- 📦 Optimized Build
- 🔩 Universal Plugin Interface
- 🔑 Fully Typed APIs

Vite is a new breed of frontend build tooling that significantly improves the frontend development experience. It consists of two major parts:

- A dev server that serves your source files over [native ES modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules), with [rich built-in features](https://vite.dev/guide/features.md) and astonishingly fast [Hot Module Replacement (HMR)](https://vite.dev/guide/features.md#hot-module-replacement).

- A [build command](https://vite.dev/guide/build.md) that bundles your code with [Rollup](https://rollupjs.org), pre-configured to output highly optimized static assets for production.

In addition, Vite is highly extensible via its [Plugin API](https://vite.dev/guide/api-plugin.md) and [JavaScript API](https://vite.dev/guide/api-javascript.md) with full typing support.`,
      }),
    ],
    optimizeDeps: {
      include: ['@shikijs/vitepress-twoslash/client'],
    },
    define: {
      __VITE_VERSION__: JSON.stringify(viteVersion),
    },
  },
  buildEnd,
})

export default extendConfig(config)


================================================
FILE: docs/.vitepress/inlined-scripts/banner.d.ts
================================================
interface Window {
  __VITE_BANNER_ID__: string
}


================================================
FILE: docs/.vitepress/inlined-scripts/banner.js
================================================
;(() => {
  const restore = (key, cls, def = false) => {
    const saved = localStorage.getItem(key)
    if (saved ? saved !== 'false' : def) {
      document.documentElement.classList.add(cls)
    }
  }

  window.__VITE_BANNER_ID__ = 'viteplusannouncement'
  restore(`vite-docs-banner-${__VITE_BANNER_ID__}`, 'banner-dismissed')
})()


================================================
FILE: docs/.vitepress/theme/components/AsideSponsors.vue
================================================
<script setup lang="ts">
import { computed } from 'vue'
import { VPDocAsideSponsors } from '@voidzero-dev/vitepress-theme'
import { useSponsor, voidZero } from '../composables/sponsor'

const { data } = useSponsor()

const sponsors = computed(() => {
  return [
    { size: 'small' as const, items: [voidZero] },
    ...(data.value?.map((sponsor) => {
      return {
        size: (sponsor.size === 'big' ? 'mini' : 'xmini') as 'mini' | 'xmini',
        items: sponsor.items,
      }
    }) ?? []),
  ]
})
</script>

<template>
  <a
    class="viteconf"
    href="https://www.youtube.com/playlist?list=PLqGQbXn_GDmkJaoykvHCUmXUPjhgH2bVr"
    target="_blank"
  >
    <img
      width="22"
      height="22"
      src="../../../images/viteconf.svg"
      alt="ViteConf Logo"
    />
    <span>
      <p class="extra-info">Building Together</p>
      <p class="heading">ViteConf 2025</p>
      <p class="extra-info">View the replays</p>
    </span>
  </a>
  <VPDocAsideSponsors v-if="data" :data="sponsors" />
</template>

<style scoped>
.viteconf {
  margin-top: 1rem;
  margin-bottom: 1rem;
  border-radius: 14px;
  padding-top: 0.4rem;
  padding-bottom: 0.4rem;
  position: relative;
  font-size: 0.9rem;
  font-weight: 700;
  line-height: 1.1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  gap: 1rem;
  background-color: var(--vp-c-bg-alt);
  border: 2px solid var(--vp-c-bg-alt);
  transition: border-color 0.5s;
}
.viteconf:hover {
  border: 2px solid var(--vp-c-brand-light);
}
.viteconf img {
  transition: transform 0.5s;
  transform: scale(1.25);
}
.viteconf:hover img {
  transform: scale(1.75);
}
.viteconf span {
  display: block;
}
.viteconf p {
  margin: 0;
  padding: 0;
  line-height: 1.1rem;
  color: var(--vp-c-text-1);
}
.viteconf .heading {
  color: var(--vp-c-brand-lighter);
}
.viteconf .extra-info {
  color: var(--vp-c-text-1);
  opacity: 1;
  font-size: 0.7rem;
  padding-left: 0.1rem;
  transition: opacity 0.5s;
}
.viteconf:hover .extra-info {
  opacity: 0.9;
}
</style>


================================================
FILE: docs/.vitepress/theme/components/BlogIndex.vue
================================================
<script setup lang="ts">
import { data as posts } from '../../../_data/blog.data'

function getDateTime(time: number) {
  return new Date(time).toISOString()
}
</script>

<template>
  <ul class="blog-list">
    <li class="blog-entry" v-for="post of posts">
      <article>
        <time :datetime="getDateTime(post.date.time)">{{
          post.date.string
        }}</time>
        <h2 class="title">
          <a :href="post.url">{{ post.title }}</a>
        </h2>
      </article>
    </li>
  </ul>
</template>

<style scoped>
.blog-list {
  list-style-type: none;
  padding: 0;
}
.blog-entry {
  margin-top: 3em;
  border-bottom: 1px solid var(--vp-c-divider);
}
.blog-entry time {
  font-size: 14px;
}
.title {
  border: none;
  margin-top: 0;
  padding-top: 0;
  font-size: 22px;
}
.title a {
  font-weight: 600;
  text-decoration: none;
}
</style>


================================================
FILE: docs/.vitepress/theme/components/NonInheritBadge.vue
================================================
<template>
  <a
    href="/guide/api-environment#environments-configuration"
    class="ignore-header"
  >
    <Badge type="info" text="non-inherit" />
  </a>
</template>


================================================
FILE: docs/.vitepress/theme/components/ScrimbaLink.vue
================================================
<script setup lang="ts">
defineProps<{
  href: string
  title: string
}>()
</script>

<template>
  <div class="scrimba">
    <span class="play-button">
      <span class="play-icon"></span>
    </span>
    <a :href="href" target="_blank" rel="sponsored noopener" :title="title">
      <slot>Watch an interactive lesson on Scrimba</slot>
    </a>
  </div>
</template>

<style scoped>
.scrimba {
  margin: 16px 0;
  color: var(--vp-custom-block-info-text);
  background-color: var(--vp-custom-block-info-bg);
  border: 1px solid var(--vp-custom-block-info-border);
  padding: 16px 20px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  gap: 12px;
}
.play-button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  min-width: 26px;
  border-radius: 50%;
  background-color: var(--vp-c-brand-1);
}
.play-icon {
  width: 0;
  height: 0;
  margin-left: 2px;
  border-style: solid;
  border-width: 5px 0 5px 8px;
  border-color: transparent transparent transparent #fff;
}
.scrimba a {
  color: var(--vp-c-brand-1);
  text-decoration: underline;
}
.scrimba a:hover {
  color: var(--vp-c-brand-2);
}
</style>


================================================
FILE: docs/.vitepress/theme/components/SponsorBanner.vue
================================================
<script setup lang="ts">
/**
 * Adding a new banner:
 * 1. uncomment the banner slot in ../index.ts
 * 2. uncomment and update BANNER_ID in ../../inlined-scripts/restorePreferences.ts
 * 3. update --vp-layout-top-height if necessary
 */
import { ref } from 'vue'

const open = ref(true)

/**
 * Call this if the banner is dismissible
 */
function dismiss() {
  open.value = false
  document.documentElement.classList.add('banner-dismissed')
  localStorage.setItem(`vite-docs-banner-${window.__VITE_BANNER_ID__}`, 'true')
}
</script>

<template>
  <div class="banner" v-if="open">
    <svg
      xmlns="http://www.w3.org/2000/svg"
      height="12"
      fill="none"
      viewBox="0 0 103 15"
    >
      <path
        d="M9.137 10.691 12.907.249h5.16l-5.72 14.503h-6.63L0 .249h5.304zm15.622 4.06h-4.973V.25h4.973zM42.817 3.813h-5.573v10.94h-4.971V3.812h-5.574V.25h16.118zm16.257-.04h-9.343v1.946h9.199v3.418h-9.2v2.093h9.614v3.523H44.759V.249h14.315zm10.934 1.946h5.573v3.418h-5.573v5.616h-3.564V9.136h-5.573V5.718h5.573V.248h3.564z"
        fill="#ffffff"
      />
      <path
        d="M91.184 14.654a.363.363 0 0 1-.648-.224v-3.303c0-.4-.324-.725-.725-.725h-3.647c-.295 0-.467-.334-.295-.573l2.398-3.357a.725.725 0 0 0-.59-1.147h-4.414c-.295 0-.467-.334-.295-.574L86.076.4a.36.36 0 0 1 .295-.152h9.263c.295 0 .467.334.295.573l-2.398 3.358a.725.725 0 0 0 .59 1.147h3.648c.302 0 .472.348.285.587z"
        fill="#6254fe"
      />
      <mask
        id="a"
        width="17"
        height="15"
        x="82"
        y="0"
        maskUnits="userSpaceOnUse"
        style="mask-type: alpha"
      >
        <path
          fill="#833bff"
          d="M91.184 14.654a.363.363 0 0 1-.648-.224v-3.303c0-.4-.324-.725-.725-.725h-3.647c-.295 0-.467-.334-.295-.573l2.398-3.357a.725.725 0 0 0-.59-1.147h-4.414c-.295 0-.467-.334-.295-.574L86.076.4a.36.36 0 0 1 .295-.152h9.263c.295 0 .467.334.295.573l-2.398 3.358a.725.725 0 0 0 .59 1.147h3.648c.302 0 .472.348.285.587z"
        />
      </mask>
      <g mask="url(#a)">
        <g filter="url(#b)">
          <ellipse
            cx="1.766"
            cy="4.714"
            fill="#ede6ff"
            rx="1.766"
            ry="4.714"
            transform="rotate(89.814 35.524 46.024)scale(1 -1)"
          />
        </g>
        <g filter="url(#c)">
          <ellipse
            cx="3.334"
            cy="9.57"
            fill="#ede6ff"
            rx="3.334"
            ry="9.57"
            transform="rotate(89.814 33.737 36.63)scale(1 -1)"
          />
        </g>
        <g filter="url(#d)">
          <ellipse
            cx="1.766"
            cy="9.774"
            fill="#4e14ff"
            rx="1.766"
            ry="9.774"
            transform="rotate(89.814 33.002 36.998)scale(1 -1)"
          />
        </g>
        <g filter="url(#e)">
          <ellipse
            cx="1.766"
            cy="9.81"
            fill="#4e14ff"
            rx="1.766"
            ry="9.81"
            transform="rotate(89.814 30.844 40.622)scale(1 -1)"
          />
        </g>
        <g filter="url(#f)">
          <ellipse
            cx="1.766"
            cy="9.81"
            fill="#4e14ff"
            rx="1.766"
            ry="9.81"
            transform="rotate(89.814 30.904 41.053)scale(1 -1)"
          />
        </g>
        <g filter="url(#g)">
          <ellipse
            cx="4.511"
            cy="7.078"
            fill="#ede6ff"
            rx="4.511"
            ry="7.078"
            transform="rotate(93.35 49.173 54.748)scale(-1 1)"
          />
        </g>
        <g filter="url(#h)">
          <ellipse
            cx="1.113"
            cy="6.893"
            fill="#4e14ff"
            rx="1.113"
            ry="6.893"
            transform="rotate(89.009 50.51 57.537)scale(-1 1)"
          />
        </g>
        <g filter="url(#i)">
          <ellipse
            cx="1.113"
            cy="6.893"
            fill="#4e14ff"
            rx="1.113"
            ry="6.893"
            transform="rotate(89.009 50.51 57.537)scale(-1 1)"
          />
        </g>
        <g filter="url(#j)">
          <ellipse
            cx="82.99"
            cy="3.123"
            fill="#4e14ff"
            rx="1.413"
            ry="9.332"
            transform="rotate(39.51 82.99 3.123)"
          />
        </g>
        <g filter="url(#k)">
          <ellipse
            cx="98.102"
            cy="-1.706"
            fill="#4e14ff"
            rx="1.413"
            ry="9.332"
            transform="rotate(37.892 98.102 -1.706)"
          />
        </g>
        <g filter="url(#l)">
          <ellipse
            cx="95.97"
            cy="3.395"
            fill="#2bfdd2"
            rx="2.655"
            ry="4.005"
            transform="rotate(37.892 95.97 3.395)"
          />
        </g>
        <g filter="url(#m)">
          <ellipse
            cx="82.264"
            cy="12.536"
            fill="#4e14ff"
            rx="1.413"
            ry="9.332"
            transform="rotate(37.892 82.264 12.536)"
          />
        </g>
        <g filter="url(#n)">
          <ellipse
            cx="82.264"
            cy="12.536"
            fill="#4e14ff"
            rx="1.413"
            ry="9.332"
            transform="rotate(37.892 82.264 12.536)"
          />
        </g>
        <g filter="url(#o)">
          <ellipse
            cx="94.226"
            cy="9.781"
            fill="#4e14ff"
            rx="1.501"
            ry="9.332"
            transform="rotate(37.892 94.226 9.78)"
          />
        </g>
        <g filter="url(#p)">
          <ellipse
            cx="95.66"
            cy="10.827"
            fill="#2bfdd2"
            rx="2.578"
            ry="6.754"
            transform="rotate(37.892 95.66 10.827)"
          />
        </g>
      </g>
      <path
        d="M80.53 0c-2.949 4.221-2.966 10.764 0 15h1.993c-2.966-4.236-2.949-10.779 0-15zM100.543 0H98.55c2.949 4.221 2.966 10.764 0 15h1.993c2.965-4.236 2.948-10.779 0-15"
        fill="#ffffff"
      />
      <defs>
        <filter
          id="b"
          width="19.25"
          height="13.354"
          x="76.528"
          y="5.425"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="2.455"
          />
        </filter>
        <filter
          id="c"
          width="28.962"
          height="16.49"
          x="65.358"
          y="-2.168"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="2.455"
          />
        </filter>
        <filter
          id="d"
          width="25.441"
          height="9.425"
          x="66.952"
          y=".898"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="e"
          width="25.513"
          height="9.425"
          x="68.425"
          y="6.668"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="f"
          width="25.513"
          height="9.425"
          x="68.916"
          y="7.037"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="g"
          width="23.964"
          height="18.867"
          x="87.917"
          y="-5.492"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="2.455"
          />
        </filter>
        <filter
          id="h"
          width="19.677"
          height="8.131"
          x="90.415"
          y=".979"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="i"
          width="19.677"
          height="8.131"
          x="90.415"
          y=".979"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="j"
          width="17.968"
          height="20.405"
          x="74.006"
          y="-7.079"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="k"
          width="17.573"
          height="20.725"
          x="89.315"
          y="-12.068"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="l"
          width="12.356"
          height="13.008"
          x="89.792"
          y="-3.109"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="m"
          width="17.573"
          height="20.725"
          x="73.477"
          y="2.174"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="n"
          width="17.573"
          height="20.725"
          x="73.477"
          y="2.174"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="o"
          width="17.601"
          height="20.738"
          x="85.425"
          y="-.588"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
        <filter
          id="p"
          width="15.135"
          height="17.016"
          x="88.092"
          y="2.319"
          color-interpolation-filters="sRGB"
          filterUnits="userSpaceOnUse"
        >
          <feFlood flood-opacity="0" result="BackgroundImageFix" />
          <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
          <feGaussianBlur
            result="effect1_foregroundBlur_318_41192"
            stdDeviation="1.473"
          />
        </filter>
      </defs>
    </svg>
    <div class="vt-banner-text">
      <p style="display: inline-block">The Unified Toolchain for the Web</p>
      <a
        target="_blank"
        class="vt-primary-action"
        href="https://voidzero.dev/posts/announcing-vite-plus?utm_source=vite&utm_content=top_banner"
      >
        Learn more
      </a>
    </div>
    <button aria-label="close" @click="dismiss">
      <svg
        class="close"
        xmlns="http://www.w3.org/2000/svg"
        aria-hidden="true"
        focusable="false"
        viewBox="0 0 24 24"
      >
        <path
          d="M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"
        />
      </svg>
    </button>
    <div class="glow glow--purple"></div>
    <div class="glow glow--blue"></div>
  </div>
</template>

<style>
html:not(.banner-dismissed) {
  --vp-layout-top-height: 30px;
}
</style>

<style scoped>
.banner {
  position: fixed;
  z-index: 10;
  box-sizing: border-box;
  top: 0;
  left: 0;
  right: 0;
  height: var(--vp-layout-top-height);
  line-height: var(--vp-layout-top-height);
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  color: white;
  background: #262626;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
}

.glow.glow--purple {
  position: absolute;
  bottom: -15%;
  left: -75%;
  width: 80%;
  aspect-ratio: 1.5;
  pointer-events: none;
  border-radius: 100%;
  background: linear-gradient(270deg, #7a23a1, #715ebde6 60% 80%, #bd34fe00);
  filter: blur(15vw);
  transform: none;
  opacity: 0.6;
}

.glow.glow--blue {
  position: absolute;
  bottom: -15%;
  right: -40%;
  width: 80%;
  aspect-ratio: 1.5;
  pointer-events: none;
  border-radius: 100%;
  background: linear-gradient(180deg, #61d9ff, #0000);
  filter: blur(15vw);
  transform: none;
  opacity: 0.3;
}

@media (min-width: 768px) {
  .glow.glow--blue {
    top: -15%;
    right: -40%;
    width: 80%;
  }

  .glow.glow--purple {
    bottom: -15%;
    left: -40%;
    width: 80%;
  }
}

@media (min-width: 1025px) {
  .glow.glow--blue {
    top: -15%;
    right: -40%;
    width: 80%;
  }

  .glow.glow--purple {
    bottom: -15%;
    left: -40%;
    width: 80%;
  }
}

.banner-dismissed .banner {
  display: none;
}

button {
  position: absolute;
  right: 0;
  top: 0;
  padding: 5px 5px;
}

.close {
  width: 20px;
  height: 20px;
  fill: #fff;
  transform: rotate(45deg);
}

.vt-banner-text {
  color: #fff;
  font-size: 14px;
  margin-left: 0.75rem;
}

.vt-main {
  color: transparent;
  background-image: linear-gradient(120deg, #858487 16%, #9499ff, #9499ff);
  background-clip: text;
}

.vt-primary-action {
  background:
    radial-gradient(140.35% 140.35% at 175% 94.74%, #2bfdd2, #bd34fe00),
    radial-gradient(89.94% 89.94% at 18.42% 15.79%, #603cff, #41d1ff00);
  color: #fff;
  padding: 4px 8px;
  border-radius: 5px;
  font-size: 12px;
  text-decoration: none;
  margin: 0 0.75rem;
  transition: all 0.2s ease-in-out;
}

@media (max-width: 1280px) {
  .banner .vt-banner-text,
  .banner .vt-primary-action {
    font-size: 10px;
  }

  .vt-tagline {
    display: none;
  }
}

@media (max-width: 780px) {
  .vt-tagline {
    display: none;
  }

  .vt-coupon {
    display: none;
  }

  .vt-primary-action {
    margin: 0 10px;
    padding: 4px 8px;
  }

  .vt-time-now {
    display: none;
  }
}

@media (max-width: 560px) {
  .vt-place {
    display: none;
  }
}
</style>


================================================
FILE: docs/.vitepress/theme/components/SupportedVersions.vue
================================================
<script setup lang="ts">
import { ref, computed } from 'vue'

declare const __VITE_VERSION__: string

// Constants
const supportedVersionMessage = {
  color: 'var(--vp-c-brand-1)',
  text: 'supported',
}
const notSupportedVersionMessage = {
  color: 'var(--vp-c-danger-1)',
  text: 'not supported',
}
const previousMajorLatestMinors: Record<string, string> = {
  '2': '2.9',
  '3': '3.2',
  '4': '4.5',
  '5': '5.4',
  '6': '6.4',
  '7': '7.3',
}

// Current latest Vite version and support info
const parsedViteVersion = parseVersion(__VITE_VERSION__)!
const supportInfo = computeSupportInfo(parsedViteVersion)

// Check supported version input
const checkedVersion = ref(`${Math.max(parsedViteVersion.major - 3, 2)}.0.0`)
const checkedResult = computed(() => {
  const version = checkedVersion.value
  if (!isValidViteVersion(version)) return notSupportedVersionMessage

  const parsedVersion = parseVersion(checkedVersion.value)
  if (!parsedVersion) return notSupportedVersionMessage

  const satisfies = (targetVersion: string) => {
    const compared = parseVersion(targetVersion)!
    return (
      parsedVersion.major === compared.major &&
      parsedVersion.minor >= compared.minor
    )
  }
  const satisfiesOneSupportedVersion =
    parsedVersion.major >= parsedViteVersion.major || // Treat future major versions as supported
    supportInfo.regularPatches.some(satisfies) ||
    supportInfo.importantFixes.some(satisfies) ||
    supportInfo.securityPatches.some(satisfies)

  return satisfiesOneSupportedVersion
    ? supportedVersionMessage
    : notSupportedVersionMessage
})

function parseVersion(version: string) {
  let [major, minor, patch] = version.split('.').map((v) => {
    const num = /^\d+$/.exec(v)?.[0]
    return num ? parseInt(num) : null
  })
  if (!major) return null
  minor ??= 0
  patch ??= 0

  return { major, minor, patch }
}

function computeSupportInfo(
  version: NonNullable<ReturnType<typeof parseVersion>>,
) {
  const { major, minor } = version
  const f = (versions: string[]) => {
    return versions
      .map((v) => previousMajorLatestMinors[v] ?? v)
      .filter((version) => {
        if (!isValidViteVersion(version)) return false
        // Negative versions are invalid
        if (/-\d/.test(version)) return false
        return true
      })
  }

  return {
    regularPatches: f([`${major}.${minor}`]),
    importantFixes: f([`${major - 1}`, `${major}.${minor - 1}`]),
    securityPatches: f([`${major - 2}`, `${major}.${minor - 2}`]),
  }
}

function versionsToText(versions: string[]) {
  versions = versions.map((v) => `<code>vite@${v}</code>`)
  if (versions.length === 0) return ''
  if (versions.length === 1) return versions[0]
  return (
    versions.slice(0, -1).join(', ') + ' and ' + versions[versions.length - 1]
  )
}

function isValidViteVersion(version: string) {
  if (version.length === 1) version += '.'
  // Vite 0.x shouldn't be mentioned, and Vite 1.x was never released
  if (version.startsWith('0.') || version.startsWith('1.')) return false
  return true
}
</script>

<template>
  <div>
    <ul>
      <li v-if="supportInfo.regularPatches.length">
        Regular patches are released for
        <span v-html="versionsToText(supportInfo.regularPatches)"></span>.
      </li>
      <li v-if="supportInfo.importantFixes.length">
        Important fixes and security patches are backported to
        <span v-html="versionsToText(supportInfo.importantFixes)"></span>.
      </li>
      <li v-if="supportInfo.securityPatches.length">
        Security patches are also backported to
        <span v-html="versionsToText(supportInfo.securityPatches)"></span>.
      </li>
      <li>
        All versions before these are no longer supported. Users should upgrade
        to receive updates.
      </li>
    </ul>
    <p>
      If you're using Vite
      <input
        class="checked-input"
        type="text"
        v-model="checkedVersion"
        placeholder="0.0.0"
      />, it is
      <strong :style="{ color: checkedResult.color }">{{
        checkedResult.text
      }}</strong
      >.
    </p>
  </div>
</template>

<style scoped>
.checked-input {
  display: inline-block;
  padding: 0px 5px;
  width: 100px;
  color: var(--vp-c-text-1);
  background: var(--vp-c-bg-soft);
  font-size: var(--vp-code-font-size);
  font-family: var(--vp-font-family-mono);
  border: 1px solid var(--vp-c-divider);
  border-radius: 5px;
  transition: border-color 0.1s;
}

.checked-input:focus,
.checked-input:hover {
  border-color: var(--vp-c-brand);
}
</style>


================================================
FILE: docs/.vitepress/theme/components/SvgImage.vue
================================================
<script setup lang="ts">
defineProps<{ svg: string }>()
</script>

<template>
  <figure class="svg-image-root" v-html="svg" />
</template>

<style>
.svg-image-root {
  background-color: #eee;
  border-radius: 8px;
  padding: 1ch;
  margin: 1ch 0;
}
html.dark .svg-image-root {
  background-color: #313641;
}
.svg-image-root svg text {
  font-family: var(--vp-font-family-base);
}
</style>


================================================
FILE: docs/.vitepress/theme/components/YouTubeVideo.vue
================================================
<script setup lang="ts">
defineProps({
  videoId: String,
})
</script>

<template>
  <div class="full-width-youtube-video">
    <iframe
      width="560"
      height="315"
      :src="`https://www.youtube.com/embed/${videoId}`"
      title="YouTube video player"
      frameborder="0"
      allow="
        accelerometer;
        autoplay;
        clipboard-write;
        encrypted-media;
        gyroscope;
        picture-in-picture;
      "
      allowfullscreen
    ></iframe>
  </div>
</template>

<style scoped>
.full-width-youtube-video {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
}

.full-width-youtube-video iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  border-radius: 0.5rem;
}
</style>


================================================
FILE: docs/.vitepress/theme/composables/sponsor.ts
================================================
import { onMounted, onUnmounted, ref } from 'vue'
import type {
  Sponsor,
  SponsorTier,
} from '@voidzero-dev/vitepress-theme/src/types/sponsors'
import voidZeroSvg from './images/voidzero.svg'
import boltSvg from './images/bolt.svg'
import nuxtLabsSvg from './images/nuxtlabs.svg'

interface Sponsors {
  special: Sponsor[]
  platinum: Sponsor[]
  platinum_china: Sponsor[]
  gold: Sponsor[]
  silver: Sponsor[]
  bronze: Sponsor[]
}

// shared data across instances so we load only once.
const data = ref<SponsorTier[]>()

const dataHost = 'https://sponsors.vuejs.org'
const dataUrl = `${dataHost}/vite.json`

export const voidZero = {
  name: 'VoidZero',
  url: 'https://voidzero.dev',
  img: voidZeroSvg,
} satisfies Sponsor

const viteSponsors: Pick<Sponsors, 'special' | 'gold'> = {
  special: [
    // sponsors patak-dev
    {
      name: 'Bolt',
      url: 'https://bolt.new',
      img: boltSvg,
    },
    // sponsors antfu
    {
      name: 'NuxtLabs',
      url: 'https://nuxtlabs.com',
      img: nuxtLabsSvg,
    },
  ],
  gold: [
    // now automated via sponsors.vuejs.org too
  ],
}

function toggleDarkLogos() {
  if (data.value) {
    const isDark = document.documentElement.classList.contains('dark')
    data.value.forEach(({ items }) => {
      items.forEach((s: Sponsor) => {
        if (s.hasDark) {
          s.img = isDark
            ? s.img.replace(/(\.\w+)$/, '-dark$1')
            : s.img.replace(/-dark(\.\w+)$/, '$1')
        }
      })
    })
  }
}

export function useSponsor() {
  onMounted(async () => {
    const ob = new MutationObserver((list) => {
      for (const m of list) {
        if (m.attributeName === 'class') {
          toggleDarkLogos()
        }
      }
    })
    ob.observe(document.documentElement, { attributes: true })
    onUnmounted(() => {
      ob.disconnect()
    })

    if (data.value) {
      return
    }

    const result = await fetch(dataUrl)
    const json = await result.json()

    data.value = mapSponsors(json)
    toggleDarkLogos()
  })

  return {
    data,
  }
}

function mapSponsors(sponsors: Sponsors): SponsorTier[] {
  return [
    {
      tier: 'in partnership with',
      size: 'big' as const,
      items: viteSponsors['special'],
    },
    {
      tier: 'Platinum Sponsors',
      size: 'big' as const,
      items: mapImgPath(sponsors['platinum']),
    },
    {
      tier: 'Gold Sponsors',
      size: 'medium' as const,
      items: [...mapImgPath(sponsors['gold']), ...viteSponsors['gold']],
    },
  ]
}

const viteSponsorNames = new Set(
  Object.values(viteSponsors).flatMap((sponsors) =>
    sponsors.map((s) => s.name),
  ),
)

/**
 * Map Vue/Vite sponsors data to objects and filter out Vite-specific sponsors
 */
function mapImgPath(sponsors: Sponsor[]) {
  return sponsors
    .filter((sponsor) => !viteSponsorNames.has(sponsor.name))
    .map((sponsor) => ({
      ...sponsor,
      img: `${dataHost}/images/${sponsor.img}`,
    }))
}


================================================
FILE: docs/.vitepress/theme/index.ts
================================================
import { h } from 'vue'
import TwoslashFloatingVue from '@shikijs/vitepress-twoslash/client'
import '@shikijs/vitepress-twoslash/style.css'
import 'virtual:group-icons.css'
import 'vitepress-plugin-graphviz/style.css'
import Theme from '@voidzero-dev/vitepress-theme/src/vite'
import './styles.css'

// components
import SvgImage from './components/SvgImage.vue'
import YouTubeVideo from './components/YouTubeVideo.vue'
import NonInheritBadge from './components/NonInheritBadge.vue'
import AsideSponsors from './components/AsideSponsors.vue'
import ScrimbaLink from './components/ScrimbaLink.vue'

export default {
  Layout() {
    return h((Theme as any).Layout, null, {
      'aside-ads-before': () => h(AsideSponsors),
    })
  },
  enhanceApp(ctx: any) {
    const { app } = ctx

    app.component('SvgImage', SvgImage)
    app.component('YouTubeVideo', YouTubeVideo)
    app.component('NonInheritBadge', NonInheritBadge)
    app.component('ScrimbaLink', ScrimbaLink)
    app.use(TwoslashFloatingVue)

    Theme.enhanceApp(ctx)
  },
}


================================================
FILE: docs/.vitepress/theme/landing/Community.vue
================================================
<script setup lang="ts">
import { Icon } from '@iconify/vue'

interface Testimonial {
  name: string
  handle: string
  avatar: string
  comment: string[]
}

const testimonials: Testimonial[] = [
  {
    name: 'Ryan Carniato',
    handle: '@RyanCarniato',
    avatar:
      'https://pbs.twimg.com/profile_images/1810837163447308292/8Piov0f6_400x400.jpg',
    comment: [
      `I'm loving what Vite enables. We've found building SolidStart that it is less a metaframework but a system of symbiotic Vite plugins. While built with SolidJS in mind, they should scale from our simplest template to opinionated starter. We're building an ecosystem on Vite.`,
    ],
  },
  {
    name: 'Rich Harris',
    handle: '@Rich_Harris',
    avatar:
      'https://pbs.twimg.com/profile_images/557940120184041473/bFyXy8Pu_400x400.jpeg',
    comment: [
      `Vite is basically the united nations of JavaScript at this point. I'll be there as a representative of Sveltelandia`,
    ],
  },
  {
    name: 'David East',
    handle: '@_davideast',
    avatar:
      'https://pbs.twimg.com/profile_images/1691627325794725888/voQFcYjY_400x400.jpg',
    comment: [
      'Each and every time I use Vite, I feel a true sense of pure and unbridled joy.',
    ],
  },
  {
    name: 'Mark Dalgleish',
    handle: '@markdalgleish',
    avatar:
      'https://pbs.twimg.com/profile_images/754886061872979968/BzaOWhs1_400x400.jpg',
    comment: [
      `It's also a great platform to build a framework on since it provides a pluggable dev environment.`,
      `Community is amazing too.`,
    ],
  },
  {
    name: 'Jason Miller',
    handle: '@_developit',
    avatar:
      'https://pbs.twimg.com/profile_images/1374778373239681025/Sc9ehtAr_400x400.jpg',
    comment: [
      `Every time I suspect I've hit the bounds of what Vite can do, I end up being wrong.`,
    ],
  },
  {
    name: 'David Cramer',
    handle: '@zeeg',
    avatar:
      'https://pbs.twimg.com/profile_images/1911613315765133312/HVkULegC_400x400.jpg',
    comment: ['Vite has been a game changer for the industry.'],
  },
  {
    name: 'Dion Almaer',
    handle: '@dalmaer',
    avatar:
      'https://pbs.twimg.com/profile_images/3380865881/f73b3687ff39b795db05fcaf35972270_400x400.jpeg',
    comment: [
      'I am so excited to see so many great frameworks teaming up on top of vite. So many will benefit. ❤️ to the vite team.',
    ],
  },
  {
    name: 'Christoph Nakazawa',
    handle: '@cpojer',
    avatar:
      'https://pbs.twimg.com/profile_images/1910252462126313472/gXgT-jxL_400x400.jpg',
    comment: ['Vite is gonna eat the (JavaScript) world.'],
  },
  {
    name: 'Nikolaj',
    handle: '@lopugit',
    avatar: 'https://avatars.githubusercontent.com/u/13629190?v=4',
    comment: [
      'Wow, wow, wow, wow, wow, wow, Vite is..... Vite is.... Wow 🤤🤯🙏',
    ],
  },
]
</script>

<template>
  <div class="wrapper wrapper--ticks border-t pt-14 sm:pt-30 px-5 sm:px-10">
    <div
      class="flex flex-col sm:flex-row justify-between items-center gap-8 sm:gap-20 text-center sm:text-left"
    >
      <div class="flex flex-col gap-3">
        <h3 class="text-white max-w-xl text-balance">Loved by the community</h3>
        <p class="max-w-md text-white/70 text-balance">
          Don't take our word for it - listen to what Vite community members
          have to say.
        </p>
      </div>
      <div
        class="flex gap-8 sm:gap-12 items-start justify-center sm:justify-start sm:pr-20"
      >
        <!-- GitHub Stars -->
        <div class="flex flex-col gap-3">
          <h2 class="text-white">75k+</h2>
          <p class="text-grey flex items-center gap-2">
            <Icon icon="simple-icons:github" width="20px" height="20px" />
            Github Stars
          </p>
        </div>

        <!-- NPM Downloads -->
        <div class="flex flex-col gap-3">
          <h2 class="text-white">40m+</h2>
          <p class="text-grey">Weekly NPM downloads</p>
        </div>
      </div>
    </div>
    <div
      class="pt-14 sm:pt-30 h-[50rem] overflow-clip [mask-image:linear-gradient(to_bottom,black_70%,transparent_100%)]"
    >
      <!-- Masonry Grid -->
      <div class="columns-1 sm:columns-2 lg:columns-3 gap-5">
        <div
          v-for="(testimonial, index) in testimonials"
          :key="index"
          class="break-inside-avoid mb-5"
        >
          <div
            class="testimonial-card relative overflow-clip isolate rounded-lg p-6 sm:px-8 sm:py-10 flex flex-col gap-6 before:content-[''] before:absolute before:inset-0 before:opacity-0 before:z-0 before:pointer-events-none before:transition-opacity before:duration-100 before:ease-in-out after:content-[''] after:absolute after:inset-px after:z-[1] after:rounded-lg after:bg-slate after:border after:border-nickel after:transition-[border-color,background] after:duration-100 after:ease-in-out hover:before:opacity-100 hover:after:border-transparent"
          >
            <!-- Comment -->
            <div class="relative z-[2] flex flex-col gap-4">
              <p
                v-for="(paragraph, pIndex) in testimonial.comment"
                :key="pIndex"
                class="text-white/70 leading-relaxed text-sm sm:text-base"
              >
                {{ paragraph }}
              </p>
            </div>

            <!-- Author -->
            <div class="relative z-[2] flex items-center gap-5 mt-auto">
              <!-- Avatar -->
              <img
                :src="testimonial.avatar"
                :alt="testimonial.name"
                class="w-12 h-12 rounded-sm object-cover flex-shrink-0"
                loading="lazy"
              />

              <!-- Author info -->
              <div class="flex flex-col">
                <span class="text-grey text-sm font-mono">{{
                  testimonial.name
                }}</span>
                <span class="text-biege text-sm font-mono">{{
                  testimonial.handle
                }}</span>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<style scoped>
/* Background image and animation for ::before pseudo-element */
.testimonial-card::before {
  background-image: url('@assets/vite/vite-featurepanel-4-background.jpg');
  background-size: 150% 150%;
  background-position: center;
  animation: move-background 16s ease-in-out infinite;
}

/* Randomize animation timing for organic feel */
.testimonial-card:nth-child(2)::before {
  animation-duration: 18s;
  animation-delay: -3s;
}

.testimonial-card:nth-child(3)::before {
  animation-duration: 14s;
  animation-delay: -7s;
}

.testimonial-card:nth-child(4)::before {
  animation-duration: 20s;
  animation-delay: -5s;
}

.testimonial-card:nth-child(5)::before {
  animation-duration: 15s;
  animation-delay: -9s;
}

.testimonial-card:nth-child(6)::before {
  animation-duration: 19s;
  animation-delay: -2s;
}

.testimonial-card:nth-child(7)::before {
  animation-duration: 17s;
  animation-delay: -11s;
}

.testimonial-card:nth-child(8)::before {
  animation-duration: 16s;
  animation-delay: -6s;
}
</style>


================================================
FILE: docs/.vitepress/theme/landing/FeatureGrid1.vue
================================================
<script setup>
import RiveAnimation from '@components/shared/RiveAnimation.vue'
import viteAnimation from '@assets/vite/animations/563_x_420_rich_features.riv'
</script>

<template>
  <section
    class="wrapper wrapper--ticks border-t grid lg:grid-cols-2 divide-x divide-y divide-nickel"
  >
    <div class="flex flex-col gap-3 justify-between">
      <div class="p-5 sm:p-10 flex flex-col gap-3">
        <h5 class="text-balance sm:text-pretty text-white">
          Instant Server Start
        </h5>
        <p class="sm:max-w-[28rem] text-pretty">
          On demand source file serving over native ESM, with blazing fast
          dependency pre-bundling.
        </p>
      </div>
      <div class="relative p-10 sm:p-15 flex justify-center bg-[#370a7f]">
        <img
          class="absolute inset-0 h-full w-full object-cover"
          src="@assets/vite/vite-featurepanel-1-background.jpg"
          alt=""
          inert
          loading="lazy"
        />
        <img
          class="z-1"
          src="@assets/vite/vite-featurepanel-1-terminal.svg"
          width="493"
          height="230"
          alt="Terminal"
          inert
          loading="lazy"
        />
      </div>
    </div>

    <div class="flex flex-col gap-3 justify-between border-r-0">
      <div class="p-5 sm:p-10 flex flex-col gap-3">
        <h5 class="text-white">Lightning Fast HMR</h5>
        <p class="max-w-[26rem] text-pretty">
          Instantly reflect changes as you save, no matter how big your app is.
        </p>
      </div>
      <div class="flex justify-end">
        <img
          src="@assets/vite/vite-featurepanel-2-terminal.png"
          width="1126"
          height="734"
          class="md:max-w-[80%]"
          inert
          loading="lazy"
          alt="lightning fast hot module replacement"
        />
      </div>
    </div>

    <div class="p-5 sm:p-10 pb-0 sm:pb-0 flex flex-col gap-3 lg:border-b-0">
      <h5 class="text-white">Rich Features Out of the Box</h5>
      <p class="sm:max-w-[28rem] text-pretty">
        TypeScript, JSX, CSS, Workers, WebAssembly... and more just a plugin
        away.
      </p>
      <RiveAnimation
        :desktop-src="viteAnimation"
        :mobile-src="viteAnimation"
        :desktop-width="563"
        :desktop-height="300"
        :mobile-width="563"
        :mobile-height="420"
        canvas-class="w-full"
      />
    </div>

    <div class="flex flex-col gap-3 justify-between border-r-0 border-b-0">
      <div class="p-5 sm:p-10 flex flex-col gap-3">
        <h5 class="text-white">Optimized Build</h5>
        <p class="max-w-[25rem] text-pretty">
          Advanced tree-shaking, built-in minification, fine-grained chunking
          control powered by Rolldown.
        </p>
      </div>
      <div class="relative p-10 sm:p-15 flex justify-center bg-[#370a7f]">
        <img
          class="absolute inset-0 h-full w-full object-cover"
          src="@assets/vite/vite-featurepanel-4-background.jpg"
          alt=""
          inert
          loading="lazy"
        />
        <img
          class="z-1"
          src="@assets/vite/vite-featurepanel-4-terminal.svg"
          width="436"
          height="209"
          inert
          loading="lazy"
          alt="optimized build"
        />
      </div>
    </div>
  </section>
</template>


================================================
FILE: docs/.vitepress/theme/landing/FeatureGrid2.vue
================================================
<script setup>
import RiveAnimation from '@components/shared/RiveAnimation.vue'
import flexiblePluginAnimation from '@assets/vite/animations/640_x_300_flexible_plugin.riv'
</script>

<template>
  <section
    class="wrapper wrapper--ticks border-t grid lg:grid-cols-2 divide-x divide-y divide-nickel"
  >
    <div class="p-5 sm:p-10 flex flex-col gap-3">
      <h5 class="text-balance sm:text-pretty text-white">
        Flexible Plugin System
      </h5>
      <p class="sm:max-w-[28rem] text-pretty">
        Vite plugins extends Rollup's well-designed plugin interface with a few
        extra Vite-specific options.
      </p>
      <RiveAnimation
        :desktop-src="flexiblePluginAnimation"
        :desktop-width="640"
        :desktop-height="300"
        canvas-class="w-[calc(100%_+_2.5rem)] mt-5 -mx-5"
      />
    </div>

    <div class="flex flex-col gap-3 border-r-0 justify-between">
      <div class="p-5 sm:p-10 flex flex-col gap-3">
        <h5 class="text-white">Fully Typed API</h5>
        <p class="max-w-[26rem] text-pretty">Designed to be built on top of.</p>
      </div>
      <div class="relative p-5 sm:p-10 flex justify-center bg-[#370a7f]">
        <img
          class="absolute inset-0 h-full w-full object-cover"
          src="@assets/vite/vite-featurepanel-4-background.jpg"
          alt=""
          inert
          loading="lazy"
        />
        <img
          class="z-1"
          src="@assets/vite/vite-typed-api.svg"
          width="454"
          height="252"
          inert
          loading="lazy"
          alt="typed api"
        />
      </div>
    </div>

    <div class="p-5 sm:p-10 flex flex-col gap-3 lg:border-b-0">
      <h5 class="text-white">First class SSR Support</h5>
      <p class="sm:max-w-[28rem] text-pretty mb-12 sm:mb-16">
        It's never been easier to setup custom SSR (Server-Side Rendering), or
        build your own SSR framework.
      </p>
      <img
        src="@assets/vite/vite-ssr-support.png"
        width="1008"
        height="466"
        alt="SSR Support"
        loading="lazy"
        class="w-full px-5"
      />
    </div>

    <div class="flex flex-col gap-3 justify-between">
      <div class="p-5 sm:p-10 flex flex-col gap-3">
        <h5 class="text-white">Continuous ecosystem integration</h5>
        <p class="max-w-[25rem] text-pretty">
          Our CI continuously tests Vite changes against downstream projects,
          allowing us to improve Vite with stability and confidence.
        </p>
      </div>
      <div class="px-5 sm:px-10 flex justify-center">
        <img
          src="@assets/vite/vite-ci.svg"
          width="476"
          height="272"
          inert
          loading="lazy"
          alt="continuous ecosystem integration"
        />
      </div>
    </div>
  </section>
</template>


================================================
FILE: docs/.vitepress/theme/landing/Frameworks.vue
================================================
<template>
  <section class="wrapper wrapper--ticks border-t py-8 sm:py-16 px-5 sm:px-10">
    <img
      src="@assets/vite/vite-frameworks-mobile.png"
      alt="Frameworks powered by Vite"
      loading="lazy"
      class="w-full block sm:hidden"
    />
    <img
      src="@assets/vite/vite-frameworks.png"
      alt="Frameworks powered by Vite"
      loading="lazy"
      class="w-full hidden sm:block"
    />
  </section>
</template>


================================================
FILE: docs/.vitepress/theme/landing/Hero.vue
================================================
<script setup>
import RiveAnimation from '@components/shared/RiveAnimation.vue'
import CodeGroup from '@components/shared/CodeGroup.vue'

import viteAnimation from '@assets/vite/animations/641_x_629_vite_masthead.riv'

if (typeof document !== 'undefined') {
  const preloadLink = document.createElement('link')
  preloadLink.rel = 'preload'
  preloadLink.href = viteAnimation
  preloadLink.as = 'fetch'
  preloadLink.crossOrigin = 'anonymous'
  document.head.appendChild(preloadLink)
}

const installTabs = [
  { label: 'npm', code: 'npm create vite@latest', prefix: '$ ' },
  { label: 'Yarn', code: 'yarn create vite', prefix: '$ ' },
  { label: 'pnpm', code: 'pnpm create vite', prefix: '$ ' },
  { label: 'Bun', code: 'bun create vite', prefix: '$ ' },
  { label: 'Deno', code: 'deno init --npm vite', prefix: '$ ' },
]
</script>

<template>
  <div
    class="wrapper wrapper--ticks grid md:grid-cols-2 w-full border-nickel md:divide-x"
  >
    <div
      class="flex flex-col p-10 justify-between gap-20 items-center md:items-start"
    >
      <div
        class="flex flex-col gap-5 items-center md:items-start text-center md:text-left"
      >
        <a
          class="flex items-center gap-2"
          href="https://voidzero.dev"
          target="_blank"
        >
          <span class="text-grey text-xs font-mono uppercase tracking-wide"
            >By</span
          >
          <img
            src="@assets/logos/voidzero-light.svg"
            alt="VoidZero"
            class="h-2.5"
          />
        </a>
        <h1 class="text-white text-pretty max-w-[25rem]">
          The Build Tool for the Web
        </h1>
        <p class="text-white/70 md:text-lg max-w-[27rem] text-pretty">
          Vite is a blazing fast frontend build tool powering the next
          generation of web applications.
        </p>
        <div class="flex items-center gap-5 mt-8">
          <a href="/guide/" class="button button--primary inline-block w-fit">
            Get Started
          </a>
          <a
            href="https://github.com/vitejs/vite"
            target="_blank"
            rel="noopener noreferrer"
            class="button inline-block w-fit"
          >
            View on GitHub
          </a>
        </div>
      </div>
      <CodeGroup
        :tabs="installTabs"
        class="hidden md:block w-full -mb-[16px]"
        style="
          --vp-code-tab-bg: var(--color-slate);
          --vp-code-block-bg: var(--color-slate);
          --vp-code-tab-divider: #000;
        "
      />
    </div>
    <div class="flex flex-col sm:min-h-[30rem]">
      <div
        class="relative px-10 pb-10 md:pt-10 h-full flex flex-col justify-center overflow-clip"
      >
        <RiveAnimation
          :desktop-src="viteAnimation"
          :mobile-src="viteAnimation"
          :desktop-width="641"
          :desktop-height="629"
          :mobile-width="641"
          :mobile-height="629"
          canvas-class="w-full"
        />
      </div>
    </div>
  </div>
</template>


================================================
FILE: docs/.vitepress/theme/landing/Layout.vue
================================================
<script setup>
// these components live in @voidzero-dev/vitepress-theme
import Hero from './Hero.vue'
import ViteFeatureGrid1 from './FeatureGrid1.vue'
import ViteFeatureGrid2 from './FeatureGrid2.vue'
import ViteFrameworks from './Frameworks.vue'
import ViteCommunity from './Community.vue'
import TrustedBy from '@components/oss/TrustedBy.vue'
import HeadingSection from '@components/oss/HeadingSection.vue'
import Sponsors from '@components/oss/Sponsors.vue'
import Spacer from '@components/shared/Spacer.vue'
import Footer from '@components/oss/Footer.vue'
import { useSponsor } from '../composables/sponsor'

const { data: sponsors } = useSponsor()
</script>

<template>
  <Hero />
  <TrustedBy
    :logos="['openai', 'shopify', 'stripe', 'linear', 'clickup', 'wiz']"
  />
  <HeadingSection
    heading="Redefining developer experience"
    subheading="Vite makes web development enjoyable again"
  />
  <ViteFeatureGrid1 />
  <HeadingSection heading="A shared foundation to build upon" />
  <ViteFeatureGrid2 />
  <HeadingSection heading="Powering your favorite frameworks and tools" />
  <ViteFrameworks />
  <ViteCommunity />
  <Sponsors :sponsors="sponsors" />
  <Spacer />
  <Footer
    heading="Start building with Vite"
    subheading="Prepare for a development environment that can finally keep pace with the speed of your mind."
    button-text="Get Started"
    button-link="/guide/"
  />
</template>


================================================
FILE: docs/.vitepress/theme/live/Events.vue
================================================
<script setup lang="ts">
import background from '@voidzero-dev/vitepress-theme/src/assets/vite/footer-background.jpg'
import event1 from '../../../images/events/viteconf_2022.jpg'
import event2 from '../../../images/events/viteconf_2023.jpg'
import event3 from '../../../images/events/viteconf_2024.jpg'
import event4 from '../../../images/events/viteconf_2025.jpg'

const EVENTS = [
  {
    date: '2025',
    title: 'ViteConf 2025',
    image: event4,
    url: 'https://www.youtube.com/watch?v=x7Jsmt_o9ek&list=PLqGQbXn_GDmkJaoykvHCUmXUPjhgH2bVr',
  },
  {
    date: '2024',
    title: 'ViteConf 2024',
    image: event3,
    url: 'https://www.youtube.com/watch?v=mWK3Y_1kmaM&list=PLqGQbXn_GDmnObDzgjUF4Krsfl6OUKxtp',
  },
  {
    date: '2023',
    title: 'ViteConf 2023',
    image: event2,
    url: 'https://www.youtube.com/watch?v=veCxKeLl35A&list=PLqGQbXn_GDmkOsHI7-Wrbv1GgAA4tJZhg',
  },
  {
    date: '2022',
    title: 'ViteConf 2022',
    image: event1,
    url: 'https://www.youtube.com/watch?v=Znd11rVHQOE&list=PLqGQbXn_GDmkI_lwbq5LsVYMEoX2ilKfI',
  },
]
</script>

<template>
  <div class="wrapper wrapper--ticks w-full text-center md:text-left">
    <h2
      class="text-white text-2xl px-10 py-5 text-pretty border-nickel border-y"
    >
      Previous events
    </h2>
    <div class="relative grid md:grid-cols-2 xl:grid-cols-4 wrapper--ticks">
      <a
        v-for="event in EVENTS"
        :key="event.date"
        class="group event-card block p-0.5"
        :style="`background-image: url(${background});`"
        :href="event.url"
        target="_blank"
        rel="noopener noreferrer"
      >
        <img
          :src="event.image"
          :alt="event.title"
          class="w-full aspect-video object-cover"
        />
        <div class="bg-primary group-hover:bg-primary/95 bg-blur-lg">
          <h3 class="text-white text-xl px-10 py-3 text-pretty">
            {{ event.title }}
          </h3>
        </div>
      </a>
    </div>
  </div>
</template>

<style>
.event-card {
  background-size: 200% 200%;
  background-position: 100% 200%;
  background-blend-mode: overlay;
  background-color: rgba(0, 0, 0, 0.5);
}
.event-card:hover {
  animation: event-card-hover 10s ease-in-out infinite;
  background-color: transparent;
}
@keyframes event-card-hover {
  0% {
    background-position: 100% 200%;
  }
  50% {
    background-position: -100% 200%;
  }
  100% {
    background-position: 100% 200%;
  }
}
</style>


================================================
FILE: docs/.vitepress/theme/live/Hero.vue
================================================
<template>
  <div
    class="wrapper wrapper--ticks grid md:grid-cols-2 w-full border-nickel md:divide-x"
  >
    <div
      class="flex flex-col items-center text-center md:text-left md:items-start p-10 gap-5 justify-center"
    >
      <h1 class="text-white text-pretty max-w-[35rem]">
        5th anniversary of the Vite Team Creation
      </h1>
      <p class="text-white text-3xl text-pretty max-w-[35rem]">
        Vite: The Documentary re-premiere
      </p>
      <p class="text-white/70 md:text-lg max-w-[35rem] text-pretty">
        Join the ecosystem this March 19th at 3 PM UTC to remember the story we
        wrote together. And participate in the live stage to discuss our past,
        present, and future. We'll be waiting for you!
      </p>
      <div class="flex items-start justify-between w-full gap-5 mt-8">
        <div class="flex items-center gap-5">
          <a
            href="https://calendar.google.com/calendar/render?action=TEMPLATE&text=Vite.%20The%20documentary&dates=20260319T150000/20260319T160000&ctz=Europe/London&details=5th%20anniversary%20Community%20time%0A%0AJoin%20on%20Discord:%20https%3A%2F%2Fdiscord.gg%2FPsQ3SfhhDQ"
            target="_blank"
            rel="noopener noreferrer"
            class="button button--primary inline-block w-fit"
          >
            Add to Calendar
          </a>
          <a
            href="https://chat.vite.dev"
            target="_blank"
            rel="noopener noreferrer"
            class="button inline-block w-fit"
          >
            Join Community
          </a>
        </div>
        <a
          href="https://www.cultrepo.com/"
          target="_blank"
          rel="noopener noreferrer"
          class="inline-block w-fit grayscale hover:grayscale-0 hover:scale-105 transition-all duration-100"
        >
          <img
            src="../../../images/cultrepo-tv.svg"
            width="60"
            height="44"
            class="block"
            inert
            loading="lazy"
            alt="Cult.Repo"
          />
        </a>
      </div>
    </div>
    <div class="flex items-center justify-center p-10 md:min-h-[30rem]">
      <img
        src="../../../images/vite-live-community.webp"
        width="1832"
        height="1388"
        class="block sm:max-w-[80%] lg:max-w-[70%]"
        inert
        loading="lazy"
        alt="Vite community: Evan You, Matias Capeletto, Bjorn Lu, Anthony Fu, Sapphi Red, Dominik Göpel, Vladimir Sheremet, Ryan Carniato, Pedro Cattori, Mark Dalgleish, Rich Harris, Fred Schott, Eric Simons, Theo Browne, David Cramer, Misko Hevery"
      />
    </div>
  </div>
</template>


================================================
FILE: docs/.vitepress/theme/live/Layout.vue
================================================
<script setup>
import Hero from './Hero.vue'
import Timer from './Timer.vue'
import TimeoutSwitcher from './TimeoutSwitcher.vue'
import VideoIframe from './VideoIframe.vue'
import Events from './Events.vue'
import Footer from '@components/oss/Footer.vue'
const startTime = '2026-03-19T15:00:00.000Z'
</script>

<template>
  <TimeoutSwitcher :at="startTime">
    <template #default>
      <Hero />
      <Timer :at="startTime" />
    </template>
    <template #timeout>
      <VideoIframe :at="startTime" />
    </template>
  </TimeoutSwitcher>
  <TimeoutSwitcher :at="startTime">
    <template #default>
      <Events />
    </template>
  </TimeoutSwitcher>
  <Footer
    heading="Start building with Vite"
    subheading="Prepare for a development environment that can finally keep pace with the speed of your mind."
    button-text="Get Started"
    button-link="/guide/"
  />
</template>


================================================
FILE: docs/.vitepress/theme/live/TimeoutSwitcher.vue
================================================
<script setup>
import { computed, onMounted, onUnmounted, ref } from 'vue'

const props = defineProps({
  at: {
    type: String,
    required: true,
  },
})

const timeoutTimestamp = computed(() => new Date(props.at).getTime())
const now = ref(0)
let intervalId

const isTimedOut = computed(() => {
  return now.value >= timeoutTimestamp.value
})

onMounted(() => {
  now.value = Date.now()
  intervalId = window.setInterval(() => {
    now.value = Date.now()
  }, 1000)
})

onUnmounted(() => {
  if (intervalId) {
    window.clearInterval(intervalId)
  }
})
</script>

<template>
  <slot v-if="isTimedOut" name="timeout" />
  <slot v-else />
</template>


================================================
FILE: docs/.vitepress/theme/live/Timer.vue
================================================
<script setup>
import { computed, onMounted, onUnmounted, ref } from 'vue'

const props = defineProps({
  at: {
    type: String,
    required: true,
  },
})

const targetTimestamp = computed(() => new Date(props.at).getTime())

const getRemainingMs = () => Math.max(0, targetTimestamp.value - Date.now())

const remainingMs = ref(0)
let intervalId

const pad = (value) => String(value).padStart(2, '0')

const formattedCountdown = computed(() => {
  if (typeof window === 'undefined' || !remainingMs.value) return '00:00:00:00'

  const totalSeconds = Math.floor(remainingMs.value / 1000)
  const days = Math.floor(totalSeconds / (24 * 60 * 60))
  const hours = Math.floor((totalSeconds % (24 * 60 * 60)) / (60 * 60))
  const minutes = Math.floor((totalSeconds % (60 * 60)) / 60)
  const seconds = totalSeconds % 60

  return `${days}:${pad(hours)}:${pad(minutes)}:${pad(seconds)}`
})

onMounted(() => {
  remainingMs.value = getRemainingMs()
  intervalId = window.setInterval(() => {
    remainingMs.value = getRemainingMs()
  }, 1000)
})

onUnmounted(() => {
  if (intervalId) {
    window.clearInterval(intervalId)
  }
})
</script>

<template>
  <div
    class="wrapper wrapper--ticks grid md:grid-cols-3 w-full border-nickel border-t md:divide-x"
  >
    <div
      class="flex flex-col md:col-span-2 p-10 gap-5 justify-center text-center md:text-left"
    >
      <h2
        class="text-white text-[10vw] md:text-[min(8vw,7rem)] xxl:text-8xl font-semibold font-mono tracking-tight"
      >
        {{ formattedCountdown }}
      </h2>
    </div>
    <div class="flex items-center justify-center md:min-h-[30rem] p-10">
      <img
        src="../../../images/vite-play.webp"
        width="600"
        height="660"
        class="block max-w-[40%] md:max-w-[60%]"
        inert
        loading="lazy"
        alt=""
      />
    </div>
  </div>
</template>


================================================
FILE: docs/.vitepress/theme/live/VideoIframe.vue
================================================
<script setup>
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
import Header from '@components/oss/Header.vue'
import { useYoutubePlayer } from './useYoutubePlayer'

const props = defineProps({
  at: {
    type: String,
    required: true,
  },
})

const containerEl = ref(null)
const iframeEl = ref(null)
const isFullscreen = ref(false)
const actionsVisible = ref(false)
const playButtonEl = ref(null)
let hideActionsTimeout = null

const { player, initPlayer, togglePlayback, seekTo } =
  useYoutubePlayer(iframeEl)

const checkVideoPassed = (startAt) => {
  const totalLength = 39 * 60 + 15 // 39 minutes and 15 seconds
  const atTime = new Date(startAt).getTime()
  const now = Date.now()
  const elapsedSeconds = Math.max(0, Math.floor((now - atTime) / 1000))
  const isPassed = elapsedSeconds > totalLength
  return { isPassed, elapsedSeconds }
}

const iframeSrc = computed(() => {
  const { isPassed, elapsedSeconds } = checkVideoPassed(props.at)

  const params = new URLSearchParams({
    si: 'hhgR4fwkRw9zQ0yx',
    controls: '0',
    start: isPassed ? 0 : String(elapsedSeconds),
    disablekb: '1',
    rel: '0',
    autoplay: '1',
    enablejsapi: '1',
    origin: typeof window === 'undefined' ? '' : window.location.origin,
  })

  return `https://www.youtube-nocookie.com/embed/bmWQqAKLgT4?${params.toString()}`
})

const pausedState = ref(true)

watch(
  () => player.value.state,
  (newVal, oldVal) => {
    if (newVal === 'pause') {
      pausedState.value = true
    }
    if (newVal === 'play' && pausedState.value) {
      const { isPassed, elapsedSeconds } = checkVideoPassed(props.at)
      if (!isPassed) {
        pausedState.value = false
        seekTo(elapsedSeconds)
      }
    }
  },
)

watch(
  () => player.value.state,
  (newVal) => {
    if (newVal === 'play' || newVal === 'pause') {
      playButtonEl.value?.focus()
    }
  },
  { immediate: true },
)

const syncFullscreenState = () => {
  const container = containerEl.value
  isFullscreen.value = Boolean(
    container && document.fullscreenElement === container,
  )
}

const toggleFullscreen = () => {
  const container = containerEl.value
  if (!container) return

  if (document.fullscreenElement === container) {
    return document.exitFullscreen()
  }

  return container.requestFullscreen()
}

const clearHideActionsTimeout = () => {
  if (hideActionsTimeout) {
    clearTimeout(hideActionsTimeout)
    hideActionsTimeout = null
  }
}

const scheduleHideActions = () => {
  clearHideActionsTimeout()
  hideActionsTimeout = setTimeout(() => {
    actionsVisible.value = false
  }, 2000)
}

const showActionsOnTouch = () => {
  actionsVisible.value = true
  scheduleHideActions()
}

const showActions = () => {
  actionsVisible.value = true
  scheduleHideActions()
}

const hideActions = () => {
  clearHideActionsTimeout()
  actionsVisible.value = false
}

onMounted(() => {
  document.addEventListener('fullscreenchange', syncFullscreenState)
})

onBeforeUnmount(() => {
  document.removeEventListener('fullscreenchange', syncFullscreenState)
  clearHideActionsTimeout()
})
</script>

<template>
  <div
    ref="containerEl"
    class="wrapper wrapper--ticks relative w-full border-nickel border-t md:divide-x"
  >
    <Header v-if="isFullscreen" class="video-iframe-header" />
    <div
      class="relative"
      @mouseenter="showActions"
      @mousemove="showActions"
      @mouseleave="hideActions"
      @touchstart="showActionsOnTouch"
    >
      <div
        class="video-iframe-mask absolute inset-0 bg-black/50 backdrop-blur-2xl transition-opacity duration-50"
        :class="
          player.state === 'pause' ? 'opacity-100' : 'opacity-0 delay-400'
        "
        @click="togglePlayback"
      />
      <div class="absolute top-0 right-0 z-10 flex gap-2 p-4">
        <a
          href="https://discord.gg/spmbbvPb9Q"
          target="_blank"
          rel="noopener noreferrer"
          class="button block w-fit backdrop-blur transition-opacity"
          :class="
            actionsVisible || player.state !== 'play'
              ? 'opacity-100'
              : 'opacity-0 delay-100 pointer-events-none'
          "
          @focus="showActions"
        >
          Chat with us
        </a>
        <button
          type="button"
          class="button block py-1.5 px-2.25 backdrop-blur transition-opacity"
          @click="toggleFullscreen"
          :aria-label="isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'"
          :class="
            actionsVisible || player.state !== 'play'
              ? 'opacity-100'
              : 'opacity-0 delay-100 pointer-events-none'
          "
          @focus="showActions"
        >
          <svg
            xmlns="http://www.w3.org/2000/svg"
            width="20"
            height="20"
            viewBox="0 0 24 24"
            fill="none"
            stroke="currentColor"
            stroke-width="2"
            stroke-linecap="round"
            stroke-linejoin="round"
            class="block"
          >
            <g v-if="isFullscreen">
              <path d="M8 3v3a2 2 0 0 1-2 2H3" />
              <path d="M21 8h-3a2 2 0 0 1-2-2V3" />
              <path d="M3 16h3a2 2 0 0 1 2 2v3" />
              <path d="M16 21v-3a2 2 0 0 1 2-2h3" />
            </g>
            <g v-else>
              <path d="M3 7V5a2 2 0 0 1 2-2h2" />
              <path d="M17 3h2a2 2 0 0 1 2 2v2" />
              <path d="M21 17v2a2 2 0 0 1-2 2h-2" />
              <path d="M7 21H5a2 2 0 0 1-2-2v-2" />
              <rect width="10" height="8" x="7" y="8" rx="1" />
            </g>
          </svg>
        </button>
      </div>
      <button
        type="button"
        class="absolute button block left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2 p-4 backdrop-blur transition"
        @click="togglePlayback"
        :aria-label="player.state === 'play' ? 'Pause video' : 'Play video'"
        :class="
          actionsVisible || player.state !== 'play'
            ? 'opacity-100'
            : 'opacity-0 delay-100 pointer-events-none'
        "
        @focus="showActions"
        ref="playButtonEl"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="40"
          height="40"
          viewBox="0 0 24 24"
          fill="none"
          stroke="currentColor"
          stroke-width="2"
          stroke-linecap="round"
          stroke-linejoin="round"
        >
          <g v-if="player.state === 'play'">
            <line x1="10" x2="10" y1="15" y2="9" />
            <line x1="14" x2="14" y1="15" y2="9" />
          </g>
          <path
            v-else
            d="M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z"
          />
          <circle cx="12" cy="12" r="10" />
        </svg>
      </button>
      <iframe
        ref="iframeEl"
        @load="initPlayer"
        width="560"
        height="315"
        class="w-full h-auto max-h-[calc(100vh-5rem-var(--vp-banner-height,0px))] aspect-video pointer-events-none"
        :src="iframeSrc"
        title="YouTube video player"
        frameborder="0"
        allow="
          accelerometer;
          autoplay;
          clipboard-write;
          encrypted-media;
          gyroscope;
          picture-in-picture;
          web-share;
        "
        referrerpolicy="strict-origin-when-cross-origin"
        allowfullscreen
        tabindex="-1"
      />
    </div>
  </div>
</template>

<style scoped>
.video-iframe-header :deep(.wrapper) {
  border-color: transparent !important;
}

.video-iframe-header :deep(.wrapper::before),
.video-iframe-header :deep(.wrapper::after) {
  display: none;
}

.video-iframe-mask {
  -webkit-mask-image: linear-gradient(
    to bottom,
    #000 0%,
    #000 72px,
    transparent 100px
  );
  mask-image: linear-gradient(to bottom, #000 0%, #000 72px, transparent 100px);
}
</style>


================================================
FILE: docs/.vitepress/theme/live/useYoutubePlayer.ts
================================================
import { type Ref, onBeforeUnmount, onMounted, ref } from 'vue'

type YoutubeState = 'play' | 'pause' | 'end' | 'buffer' | 'unstarted' | 'cued'

interface YoutubePlayerState {
  state: YoutubeState
}

const STATE_BY_CODE: Record<number, YoutubeState> = {
  [-1]: 'unstarted',
  [0]: 'end',
  [1]: 'play',
  [2]: 'pause',
  [3]: 'buffer',
  [5]: 'cued',
}

export const useYoutubePlayer = (iframeEl: Ref<HTMLIFrameElement | null>) => {
  const player = ref<YoutubePlayerState>({ state: 'pause' })

  const postPlayerCommand = (func: string, args: unknown[] = []) => {
    const frameWindow = iframeEl.value?.contentWindow
    if (!frameWindow) return

    frameWindow.postMessage(
      JSON.stringify({
        event: 'command',
        func,
        args,
      }),
      '*',
    )
  }

  const setStateByCode = (code: number) => {
    player.value = { state: STATE_BY_CODE[code] ?? 'pause' }
  }

  const onMessage = (event: MessageEvent) => {
    const frameWindow = iframeEl.value?.contentWindow
    if (!frameWindow || event.source !== frameWindow) return

    let payload: unknown = event.data
    if (typeof payload === 'string') {
      try {
        payload = JSON.parse(payload)
      } catch {
        return
      }
    }

    if (!payload || typeof payload !== 'object') return

    const data = payload as {
      event?: string
      info?: number | { playerState?: number }
    }

    if (data.event === 'onStateChange' && typeof data.info === 'number') {
      setStateByCode(data.info)
      return
    }

    if (
      data.event === 'infoDelivery' &&
      data.info &&
      typeof data.info === 'object' &&
      typeof data.info.playerState === 'number'
    ) {
      setStateByCode(data.info.playerState)
    }
  }

  const initPlayer = () => {
    const frameWindow = iframeEl.value?.contentWindow
    if (!frameWindow) return

    frameWindow.postMessage(JSON.stringify({ event: 'listening' }), '*')
    postPlayerCommand('addEventListener', ['onStateChange'])
    postPlayerCommand('getPlayerState')
  }

  const play = () => {
    player.value = { state: 'play' }
    postPlayerCommand('playVideo')
  }

  const pause = () => {
    player.value = { state: 'pause' }
    postPlayerCommand('pauseVideo')
  }

  const seekTo = (seconds: number, allowSeekAhead = true) => {
    postPlayerCommand('seekTo', [seconds, allowSeekAhead])
  }

  const togglePlayback = () => {
    if (player.value.state === 'play') {
      pause()
      return
    }

    play()
  }

  onMounted(() => {
    window.addEventListener('message', onMessage)
  })

  onBeforeUnmount(() => {
    window.removeEventListener('message', onMessage)
  })

  return {
    player,
    initPlayer,
    play,
    pause,
    seekTo,
    togglePlayback,
  }
}


================================================
FILE: docs/.vitepress/theme/styles.css
================================================
@import '@voidzero-dev/vitepress-theme/src/styles/index.css';

@source "./**/*.vue";

/* Vite */
:root[data-variant='vite'] {
  --color-brand: #6b1eb9;
}

:root.dark:not([data-theme])[data-variant='vite'],
:root[data-theme='dark'][data-variant='vite'] {
  --color-brand: var(--color-vite);
}

/* Forced light mode brand for Vite */
:root[data-theme='light'][data-variant='vite'] {
  --color-brand: #6b1eb9;
}


================================================
FILE: docs/_data/acknowledgements.data.ts
================================================
import fs from 'node:fs'
import path from 'node:path'

// Notable dependencies to highlight (by package name)
const notableDependencies = [
  'rolldown',
  'postcss',
  'lightningcss',
  'chokidar',
  'magic-string',
]

// Dev tools used for development
const devToolNames = [
  'eslint',
  'prettier',
  'typescript',
  'vitest',
  'playwright-chromium',
]

// Past notable dependencies that Vite used previously
const pastNotableDependencies: PastDependency[] = [
  {
    name: 'esbuild',
    description:
      'JavaScript/TypeScript bundler and minifier (now using Rolldown, Oxc, and LightningCSS)',
    repository: 'https://github.com/evanw/esbuild',
  },
  {
    name: 'rollup',
    description: 'ES module bundler (now using Rolldown)',
    repository: 'https://github.com/rollup/rollup',
  },
  {
    name: 'http-proxy',
    description: 'HTTP proxying (now using http-proxy-3)',
    repository: 'https://github.com/http-party/node-http-proxy',
  },
  {
    name: 'acorn',
    description: 'JavaScript parser',
    repository: 'https://github.com/acornjs/acorn',
  },
  {
    name: 'fast-glob',
    description: 'Fast glob matching (now using tinyglobby/fdir)',
    repository: 'https://github.com/mrmlnc/fast-glob',
  },
  {
    name: 'debug',
    description: 'Debug logging (now using obug)',
    repository: 'https://github.com/debug-js/debug',
  },
]

const vitePackageDir = path.resolve(import.meta.dirname, '../../packages/vite')

interface PackageJson {
  name: string
  version: string
  description?: string
  author?: string | { name: string; email?: string; url?: string }
  repository?: string | { type?: string; url?: string }
  funding?:
    | string
    | { url: string; type?: string }
    | Array<string | { url: string; type?: string }>
  dependencies?: Record<string, string>
  devDependencies?: Record<string, string>
  optionalDependencies?: Record<string, string>
}

export interface Dependency {
  name: string
  version: string
  description?: string
  author?: string
  authorUrl?: string
  repository?: string
  funding?: string
}

export interface PastDependency {
  name: string
  description: string
  repository: string
}

export interface AuthorPackage {
  name: string
  funding?: string
}

export interface Author {
  name: string
  url?: string
  funding?: string
  packages: AuthorPackage[]
}

export interface AcknowledgementsData {
  bundledDependencies: Dependency[]
  notableDependencies: Dependency[]
  devTools: Dependency[]
  pastNotableDependencies: PastDependency[]
  authors: Author[]
}

/**
 * Parse the LICENSE.md file to extract bundled dependency names.
 */
function parseBundledDependenciesFromLicense(licensePath: string): string[] {
  const content = fs.readFileSync(licensePath, 'utf-8')

  // Find the "# Bundled dependencies:" section and parse package names from ## headers
  const bundledSection = content.split('# Bundled dependencies:\n')[1]
  if (!bundledSection) return []

  // Match all ## headers which contain package names (comma-separated for grouped packages)
  const deps = [...bundledSection.matchAll(/^## (.+)$/gm)].flatMap((m) =>
    // Package names can be comma-separated (e.g., "## pkg1, pkg2, pkg3")
    m[1].split(',').map((n) => n.trim()),
  )
  return [...new Set(deps)]
}

function normalizeRepository(
  repo: PackageJson['repository'],
): string | undefined {
  if (!repo) return undefined

  let url: string
  if (typeof repo === 'string') {
    url = repo
  } else if (repo.url) {
    url = repo.url
  } else {
    return undefined
  }
  url = url
    .replace(/^git\+/, '')
    .replace(/\.git$/, '')
    .replace(/(^|\/)[^/]+?@/, '$1') // remove "user@" from "ssh://user@host.com:..."
    .replace(/(\.[^.]+?):/, '$1/') // change ".com:" to ".com/" from "ssh://user@host.com:..."
    .replace(/^git:\/\//, 'https://')
    .replace(/^ssh:\/\//, 'https://')
  if (url.startsWith('github:')) {
    return `https://github.com/${url.slice(7)}`
  } else if (url.startsWith('gitlab:')) {
    return `https://gitlab.com/${url.slice(7)}`
  } else if (url.startsWith('bitbucket:')) {
    return `https://bitbucket.org/${url.slice(10)}`
  } else if (!url.includes(':') && url.split('/').length === 2) {
    return `https://github.com/${url}`
  } else {
    return url.includes('://') ? url : `https://${url}`
  }
}

function normalizeFunding(funding: PackageJson['funding']): string | undefined {
  if (!funding) return undefined
  if (typeof funding === 'string') return funding
  if (Array.isArray(funding)) {
    const first = funding[0]
    if (typeof first === 'string') return first
    return first?.url
  }
  return funding.url
}

function parseAuthor(author: PackageJson['author']): {
  name?: string
  url?: string
} {
  if (!author) return {}
  if (typeof author === 'object') {
    return { name: author.name, url: author.url }
  }
  // Parse string format: "Name <email> (url)" or "Name (url)" or "Name <email>" or "Name"
  let str = author
  let url: string | undefined
  const urlMatch = str.match(/\(([^)]+)\)$/)
  if (urlMatch) {
    url = urlMatch[1]
    str = str.slice(0, urlMatch.index).trim()
  }
  const emailIndex = str.indexOf('<')
  if (emailIndex !== -1) {
    str = str.slice(0, emailIndex).trim()
  }
  return { name: str || author, url }
}

function readPackageInfo(
  packageName: string,
  nodeModulesDir: string,
): Dependency | null {
  const packagePath = path.join(nodeModulesDir, packageName, 'package.json')

  try {
    const content = fs.readFileSync(packagePath, 'utf-8')
    const pkg: PackageJson = JSON.parse(content)
    const authorInfo = parseAuthor(pkg.author)

    return {
      name: pkg.name,
      version: pkg.version,
      description: pkg.description,
      author: authorInfo.name,
      authorUrl: authorInfo.url,
      repository: normalizeRepository(pkg.repository),
      funding: normalizeFunding(pkg.funding),
    }
  } catch {
    // Package might not exist in node_modules (optional peer dep, etc.)
    return null
  }
}

function groupByAuthor(dependencies: Dependency[]): Author[] {
  const authorMap = new Map<
    string,
    { url?: string; packages: AuthorPackage[] }
  >()

  for (const dep of dependencies) {
    if (dep.author) {
      const existing = authorMap.get(dep.author)
      if (existing) {
        existing.packages.push({ name: dep.name, funding: dep.funding })
        if (!existing.url && dep.authorUrl) {
          existing.url = dep.authorUrl
        }
      } else {
        authorMap.set(dep.author, {
          url: dep.authorUrl,
          packages: [{ name: dep.name, funding: dep.funding }],
        })
      }
    }
  }

  return Array.from(authorMap.entries())
    .map(([name, info]) => {
      const sortedPackages = info.packages.sort((a, b) =>
        a.name.localeCompare(b.name),
      )
      const fundingUrls = new Set(
        sortedPackages.map((p) => p.funding).filter(Boolean),
      )
      const sharedFunding =
        fundingUrls.size === 1 ? [...fundingUrls][0] : undefined
      return {
        name,
        url: info.url,
        funding: sharedFunding,
        packages: sharedFunding
          ? sortedPackages.map((p) => ({ name: p.name }))
          : sortedPackages,
      }
    })
    .sort((a, b) => a.name.localeCompare(b.name))
}

function loadData(): AcknowledgementsData {
  const licensePath = path.join(vitePackageDir, 'LICENSE.md')
  const nodeModulesDir = path.join(vitePackageDir, 'node_modules')
  const rootNodeModulesDir = path.resolve(
    import.meta.dirname,
    '../../node_modules',
  )

  const bundledDepNames = parseBundledDependenciesFromLicense(licensePath)
  const bundledDependencies = bundledDepNames
    .map(
      (name) =>
        readPackageInfo(name, nodeModulesDir) ||
        readPackageInfo(name, rootNodeModulesDir),
    )
    .filter((dep) => dep != null)
    .sort((a, b) => a.name.localeCompare(b.name))

  const devTools = devToolNames
    .map((name) => readPackageInfo(name, rootNodeModulesDir))
    .filter((dep) => dep != null)
    .sort((a, b) => a.name.localeCompare(b.name))

  const notableDeps = notableDependencies
    .map(
      (name) =>
        readPackageInfo(name, nodeModulesDir) ||
        readPackageInfo(name, rootNodeModulesDir),
    )
    .filter((dep) => dep != null)

  const nonNotableDeps = bundledDependencies.filter(
    (d) => !notableDependencies.includes(d.name),
  )

  return {
    bundledDependencies,
    notableDependencies: notableDeps,
    devTools,
    pastNotableDependencies,
    authors: groupByAuthor(nonNotableDeps),
  }
}

// Export data for VitePress
declare const data: AcknowledgementsData
export { data }

export default {
  watch: ['../../packages/vite/LICENSE.md'],
  load(): AcknowledgementsData {
    return loadData()
  },
}


================================================
FILE: docs/_data/blog.data.ts
================================================
import { createContentLoader } from 'vitepress'

interface Post {
  title: string
  url: string
  date: {
    time: number
    string: string
  }
}

declare const data: Post[]
export { data }

export default createContentLoader('blog/*.md', {
  // excerpt: true,
  transform(raw): Post[] {
    return raw
      .map(({ url, frontmatter }) => ({
        title: frontmatter.head.find(
          (e: any) => e[1].property === 'og:title',
        )[1].content,
        url,
        date: formatDate(frontmatter.date),
      }))
      .sort((a, b) => b.date.time - a.date.time)
  },
})

function formatDate(raw: string): Post['date'] {
  const date = new Date(raw)
  date.setUTCHours(12)
  return {
    time: +date,
    string: date.toLocaleDateString('en-US', {
      year: 'numeric',
      month: 'long',
      day: 'numeric',
    }),
  }
}


================================================
FILE: docs/_data/team.js
================================================
export const core = [
  {
    avatar: 'https://www.github.com/yyx990803.png',
    name: 'Evan You',
    title: 'Creator',
    org: 'Vue.js',
    orgLink: 'https://vuejs.org/',
    desc: 'Independent open source developer, creator of Vue.js and Vite.',
    links: [
      { icon: 'github', link: 'https://github.com/yyx990803' },
      { icon: 'x', link: 'https://x.com/youyuxi' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/evanyou.me' },
    ],
    sponsor: 'https://github.com/sponsors/yyx990803',
  },
  {
    avatar: 'https://www.github.com/patak-dev.png',
    name: 'Patak',
    title: 'A collaborative being',
    org: 'StackBlitz',
    orgLink: 'https://stackblitz.com/',
    desc: 'Core team member of Vite. Team member of Vue.',
    links: [
      { icon: 'github', link: 'https://github.com/patak-dev' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/patak.dev' },
      { icon: 'mastodon', link: 'https://elk.zone/m.webtoo.ls/@patak' },
    ],
    sponsor: 'https://github.com/sponsors/patak-dev',
  },
  {
    avatar: 'https://www.github.com/antfu.png',
    name: 'Anthony Fu',
    title: 'A fanatical open sourceror',
    org: 'NuxtLabs',
    orgLink: 'https://nuxtlabs.com/',
    desc: 'Core team member of Vite & Vue. Working at NuxtLabs.',
    links: [
      { icon: 'github', link: 'https://github.com/antfu' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/antfu.me' },
      { icon: 'mastodon', link: 'https://elk.zone/m.webtoo.ls/@antfu' },
    ],
    sponsor: 'https://github.com/sponsors/antfu',
  },
  {
    avatar: 'https://github.com/bluwy.png',
    name: 'Bjorn Lu',
    title: 'Open Source Developer',
    desc: 'Building tools for fun.',
    links: [
      { icon: 'github', link: 'https://github.com/bluwy' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/bluwy.me' },
      { icon: 'twitter', link: 'https://twitter.com/bluwyoo' },
      { icon: 'mastodon', link: 'https://elk.zone/m.webtoo.ls/@bluwy' },
    ],
    sponsor: 'https://bjornlu.com/sponsor',
  },
  {
    avatar: 'https://github.com/sapphi-red.png',
    name: 'green',
    title: 'Web Developer',
    desc: 'Vite core team member. Call me sapphi or green or midori ;)',
    links: [
      { icon: 'github', link: 'https://github.com/sapphi-red' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/sapphi.red' },
      { icon: 'twitter', link: 'https://twitter.com/sapphi_red' },
      { icon: 'mastodon', link: 'https://elk.zone/m.webtoo.ls/@sapphi_red' },
    ],
    sponsor: 'https://github.com/sponsors/sapphi-red',
  },
  {
    avatar: 'https://github.com/ArnaudBarre.png',
    name: 'Arnaud Barré',
    title: 'Frontend Developer',
    desc: 'Passionate about tooling around TypeScript and React.',
    links: [
      { icon: 'github', link: 'https://github.com/ArnaudBarre' },
      {
        icon: 'bluesky',
        link: 'https://bsky.app/profile/arnaud-barre.bsky.social',
      },
      { icon: 'mastodon', link: 'https://elk.zone/m.webtoo.ls/@ArnaudBarre' },
    ],
    sponsor: 'https://github.com/sponsors/ArnaudBarre',
  },
  {
    avatar: 'https://github.com/dominikg.png',
    name: 'Dominik G.',
    title: 'Resident CI Expert',
    desc: 'Team Member of Vite and Svelte',
    links: [
      { icon: 'github', link: 'https://github.com/dominikg' },
      { icon: 'mastodon', link: 'https://elk.zone/m.webtoo.ls/@dominikg' },
    ],
    sponsor: 'https://github.com/sponsors/dominikg',
  },
  {
    avatar: 'https://github.com/sheremet-va.png',
    name: 'Vladimir',
    title: 'Core team member of Vitest & Vite',
    desc: 'An open source fullstack developer',
    links: [
      { icon: 'github', link: 'https://github.com/sheremet-va' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/erus.dev' },
      { icon: 'mastodon', link: 'https://elk.zone/m.webtoo.ls/@sheremet_va' },
    ],
    sponsor: 'https://github.com/sponsors/sheremet-va',
  },
  {
    avatar: 'https://github.com/hi-ogawa.png',
    name: 'Hiroshi Ogawa',
    title: 'Team Member of Vitest & Vite',
    desc: 'Open source enthusiast',
    links: [
      { icon: 'github', link: 'https://github.com/hi-ogawa' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/hiogawa.bsky.social' },
    ],
    sponsor: 'https://github.com/sponsors/hi-ogawa',
  },
  {
    avatar: 'https://github.com/btea.png',
    name: 'btea',
    title: 'Web Developer',
    links: [{ icon: 'github', link: 'https://github.com/btea' }],
  },
]

export const emeriti = [
  {
    avatar: 'https://i.imgur.com/KMed6rQ.jpeg',
    name: 'Alec Larson',
    title: 'Entrepreneur',
    desc: 'Dabbling in social ecommerce, meta frameworks, and board games',
    links: [
      { icon: 'github', link: 'https://github.com/aleclarson' },
      { icon: 'x', link: 'https://x.com/retropragma' },
      {
        icon: 'bluesky',
        link: 'https://bsky.app/profile/retropragma.bsky.social',
      },
    ],
  },
  {
    avatar: 'https://github.com/poyoho.png',
    name: 'yoho',
    title: 'Frontend Developer',
    desc: 'Frontend. Vite team member.',
    links: [
      { icon: 'github', link: 'https://github.com/poyoho' },
      { icon: 'x', link: 'https://x.com/yoho_po' },
    ],
  },
  {
    avatar: 'https://github.com/ygj6.png',
    name: 'ygj6',
    title: 'Developer',
    desc: 'Web Developer. Vue & Vite team member',
    links: [
      { icon: 'github', link: 'https://github.com/ygj6' },
      { icon: 'x', link: 'https://x.com/ygj_66' },
    ],
  },
  {
    avatar: 'https://github.com/Niputi.png',
    name: 'Niputi',
    title: 'Developer',
    org: 'Computershare Denmark',
    desc: 'weeb/JavaScript lover.',
    links: [
      { icon: 'github', link: 'https://github.com/Niputi' },
      { icon: 'x', link: 'https://x.com/Niputi_' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/niputi.bsky.social' },
    ],
  },
  {
    avatar: 'https://github.com/underfin.png',
    name: 'underfin',
    title: 'Developer',
    links: [{ icon: 'github', link: 'https://github.com/underfin' }],
  },
  {
    avatar: 'https://github.com/GrygrFlzr.png',
    name: 'GrygrFlzr',
    title: 'Developer',
    links: [
      { icon: 'github', link: 'https://github.com/GrygrFlzr' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/bsky.cybeast.dev' },
    ],
  },
  {
    avatar: 'https://github.com/nihalgonsalves.png',
    name: 'Nihal Gonsalves',
    title: 'Senior Software Engineer',
    links: [{ icon: 'github', link: 'https://github.com/nihalgonsalves' }],
  },
  {
    avatar: 'https://github.com/Shinigami92.png',
    name: 'Shinigami',
    title: 'Senior Frontend Engineer',
    org: 'Faker',
    orgLink: 'https://fakerjs.dev',
    desc: 'Passionate TypeScript enthusiast working extensively with Vue SPA.',
    links: [
      { icon: 'github', link: 'https://github.com/Shinigami92' },
      { icon: 'mastodon', link: 'https://elk.zone/mas.to/@Shini92' },
    ],
  },
  {
    avatar: 'https://github.com/haoqunjiang.png',
    name: 'Haoqun Jiang',
    title: 'Core Team Member',
    org: 'Vue.js',
    orgLink: 'https://vuejs.org/',
    desc: 'Curator of best practices for Vue.js tooling',
    links: [
      { icon: 'github', link: 'https://github.com/haoqunjiang' },
      { icon: 'bluesky', link: 'https://bsky.app/profile/haoqun.dev' },
      { icon: 'mastodon', link: 'https://elk.zone/m.webtoo.ls/@haoqun' },
    ],
    sponsor: 'https://github.com/sponsors/haoqunjiang',
  },
]


================================================
FILE: docs/acknowledgements.md
================================================
---
title: Acknowledgements
description: Vite is built upon the shoulders of giants. Thank you to all the projects and contributors that make Vite possible.
---

<script setup>
import { computed } from 'vue'
import { data } from './_data/acknowledgements.data'
import { useSponsor, voidZero } from './.vitepress/theme/composables/sponsor'
import VPSponsors from '@components/vitepress-default/VPSponsors.vue'

const { data: sponsorData } = useSponsor()

const allSponsors = computed(() => {
  if (!sponsorData.value) return []
  return [
    {
      tier: 'Brought to you by',
      size: 'big',
      items: [voidZero],
    },
    ...sponsorData.value,
  ]
})

function npmUrl(name) {
  return `https://www.npmjs.com/package/${name}`
}
</script>

# Acknowledgements

Vite is built upon the shoulders of giants. We would like to express our gratitude to all the projects, contributors, and sponsors that make Vite possible.

## Contributors

Vite is developed by an international team of contributors. See the [Team page](/team) to meet the core team members.

We also thank all the [contributors on GitHub](https://github.com/vitejs/vite/graphs/contributors) who have helped improve Vite through code contributions, bug reports, documentation, and documentation translation.

## Sponsors

Vite's development is supported by generous sponsors. You can support Vite through [GitHub Sponsors](https://github.com/sponsors/vitejs) or [Open Collective](https://opencollective.com/vite).

<div class="sponsors-container">
  <VPSponsors :data="allSponsors" />
</div>

## Dependencies

Vite depends on these amazing open source projects:

### Notable Dependencies

<div class="deps-list notable">
  <div v-for="dep in data.notableDependencies" :key="dep.name" class="dep-item">
    <div class="dep-header">
      <a :href="npmUrl(dep.name)" target="_blank" rel="noopener"><code>{{ dep.name }}</code></a>
      <span class="dep-links">
        <a v-if="dep.repository" :href="dep.repository" target="_blank" rel="noopener" class="dep-link">Repo</a>
        <a v-if="dep.funding" :href="dep.funding" target="_blank" rel="noopener" class="dep-link sponsor">Sponsor</a>
      </span>
    </div>
    <p v-if="dep.author" class="dep-author">
      by <a v-if="dep.authorUrl" :href="dep.authorUrl" target="_blank" rel="noopener">{{ dep.author }}</a><template v-else>{{ dep.author }}</template>
    </p>
    <p v-if="dep.description">{{ dep.description }}</p>
  </div>
</div>

### Bundled Dependency Authors

<table class="authors-table">
  <thead>
    <tr>
      <th>Author</th>
      <th>Packages</th>
    </tr>
  </thead>
  <tbody>
    <tr v-for="author in data.authors" :key="author.name">
      <td>
        <a v-if="author.url" :href="author.url" target="_blank" rel="noopener">{{ author.name }}</a>
        <template v-else>{{ author.name }}</template>
        <a v-if="author.funding" :href="author.funding" target="_blank" rel="noopener" class="sponsor-link">Sponsor</a>
      </td>
      <td>
        <template v-for="(pkg, index) in author.packages" :key="pkg.name">
          <span class="pkg-item"><a :href="npmUrl(pkg.name)" target="_blank" rel="noopener"><code>{{ pkg.name }}</code></a><a v-if="pkg.funding" :href="pkg.funding" target="_blank" rel="noopener" class="sponsor-link">Sponsor</a></span><template v-if="index < author.packages.length - 1">, </template>
        </template>
      </td>
    </tr>
  </tbody>
</table>

::: tip For package authors
This section is automatically generated from the `author` and `funding` fields in each package's `package.json`. If you'd like to update how your package appears here, you can update these fields in your package.
:::

## Development Tools

Vite's development workflow is powered by these tools:

<div class="deps-list notable">
  <div v-for="dep in data.devTools" :key="dep.name" class="dep-item">
    <div class="dep-header">
      <a :href="npmUrl(dep.name)" target="_blank" rel="noopener"><code>{{ dep.name }}</code></a>
      <span class="dep-links">
        <a v-if="dep.repository" :href="dep.repository" target="_blank" rel="noopener" class="dep-link">Repo</a>
        <a v-if="dep.funding" :href="dep.funding" target="_blank" rel="noopener" class="dep-link sponsor">Sponsor</a>
      </span>
    </div>
    <p v-if="dep.author" class="dep-author">
      by <a v-if="dep.authorUrl" :href="dep.authorUrl" target="_blank" rel="noopener">{{ dep.author }}</a><template v-else>{{ dep.author }}</template>
    </p>
    <p v-if="dep.description">{{ dep.description }}</p>
  </div>
</div>

## Past Notable Dependencies

We also thank the maintainers of these projects that Vite used in previous versions:

<table>
  <thead>
    <tr>
      <th>Package</th>
      <th>Description</th>
      <th>Links</th>
    </tr>
  </thead>
  <tbody>
    <tr v-for="dep in data.pastNotableDependencies" :key="dep.name">
      <td><a :href="npmUrl(dep.name)" target="_blank" rel="noopener"><code>{{ dep.name }}</code></a></td>
      <td>{{ dep.description }}</td>
      <td><a :href="dep.repository" target="_blank" rel="noopener">Repo</a></td>
    </tr>
  </tbody>
</table>

<style scoped>
.deps-list {
  display: grid;
  gap: 1rem;
  margin: 1rem 0;
}

.deps-list.notable {
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

.dep-item {
  padding: 1rem;
  border: 1px solid var(--vp-c-divider);
  border-radius: 8px;
  background: var(--vp-c-bg-soft);
}

.dep-item .dep-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}

.dep-item a {
  color: var(--vp-c-brand-1);
  text-decoration: none;
}

.dep-item a:hover {
  text-decoration: underline;
}

.dep-item .dep-links {
  display: flex;
  gap: 0.5rem;
}

.dep-item .dep-link {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  border-radius: 4px;
  background: var(--vp-c-default-soft);
}

.dep-item .dep-author {
  margin: 0.25rem 0 0;
  color: var(--vp-c-text-2);
  font-size: 0.8rem;
}

.dep-item .dep-link.sponsor {
  background: var(--vp-c-brand-soft);
}

.dep-item p {
  margin: 0.5rem 0 0;
  color: var(--vp-c-text-2);
  font-size: 0.875rem;
}

.authors-table .sponsor-link {
  margin-left: 0.5rem;
  font-size: 0.75rem;
  padding: 0.15rem 0.4rem;
  border-radius: 4px;
  background: var(--vp-c-brand-soft);
  color: var(--vp-c-brand-1);
  text-decoration: none;
}

.authors-table .sponsor-link:hover {
  text-decoration: underline;
}
</style>


================================================
FILE: docs/blog/announcing-vite2.md
================================================
---
title: Announcing Vite 2.0
author:
  - name: The Vite Team
sidebar: false
date: 2021-02-16
head:
  - - meta
    - property: og:type
      content: website
  - - meta
    - property: og:title
      content: Announcing Vite 2.0
  - - meta
    - property: og:url
      content: https://vite.dev/blog/announcing-vite2
  - - meta
    - property: og:description
      content: Vite 2 Release Announcement
---

# Announcing Vite 2.0

_February 16, 2021_ - Check out the [Vite 3.0 announcement](./announcing-vite3.md)

<p style="text-align:center">
  <img src="/logo.svg" style="height:200px">
</p>

Today we are excited to announce the official release of Vite 2.0!

Vite (French word for "fast", pronounced `/vit/`) is a new kind of build tool for frontend web development. Think a pre-configured dev server + bundler combo, but leaner and faster. It leverages browser's [native ES modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) support and tools written in compile-to-native languages like [esbuild](https://esbuild.github.io/) to deliver a snappy and modern development experience.

To get a sense of how fast Vite is, check out [this video comparison](https://twitter.com/amasad/status/1355379680275128321) of booting up a React application on Repl.it using Vite vs. `create-react-app` (CRA).

If you've never heard of Vite before and would love to learn more about it, check out [the rationale behind the project](https://vite.dev/guide/why.html). If you are interested in how Vite differs from other similar tools, check out the [comparisons](https://v5.vite.dev/guide/comparisons.html).

## What's New in 2.0

Since we decided to completely refactor the internals before 1.0 got out of RC, this is in fact the first stable release of Vite. That said, Vite 2.0 brings about many big improvements over its previous incarnation:

### Framework Agnostic Core

The original idea of Vite started as a [hacky prototype that serves Vue single-file components over native ESM](https://github.com/vuejs/vue-dev-server). Vite 1 was a continuation of that idea with HMR implemented on top.

Vite 2.0 takes what we learned along the way and is redesigned from scratch with a more robust internal architecture. It is now completely framework agnostic, and all framework-specific support is delegated to plugins. There are now [official templates for Vue, React, Preact, Lit Element](https://github.com/vitejs/vite/tree/main/packages/create-vite), and ongoing community efforts for Svelte integration.

### New Plugin Format and API

Inspired by [WMR](https://github.com/preactjs/wmr), the new plugin system extends Rollup's plugin interface and is [compatible with many Rollup plugins](https://vite-rollup-plugins.patak.dev/) out of the box. Plugins can use Rollup-compatible hooks, with additional Vite-specific hooks and properties to adjust Vite-only behavior (e.g. differentiating dev vs. build or custom handling of HMR).

The [programmatic API](https://vite.dev/guide/api-javascript.html) has also been greatly improved to facilitate higher level tools / frameworks built on top of Vite.

### esbuild Powered Dep Pre-Bundling

Since Vite is a native ESM dev server, it pre-bundles dependencies to reduce the number browser requests and handle CommonJS to ESM conversion. Previously Vite did this using Rollup, and in 2.0 it now uses `esbuild` which results in 10-100x faster dependency pre-bundling. As a reference, cold-booting a test app with heavy dependencies like React Material UI previously took 28 seconds on an M1-powered MacBook Pro and now takes ~1.5 seconds. Expect similar improvements if you are switching from a traditional bundler based setup.

### First-class CSS Support

Vite treats CSS as a first-class citizen of the module graph and supports the following out of the box:

- **Resolver enhancement**: `@import` and `url()` paths in CSS are enhanced with Vite's resolver to respect aliases and npm dependencies.
- **URL rebasing**: `url()` paths are automatically rebased regardless of where the file is imported from.
- **CSS code splitting**: a code-split JS chunk also emits a corresponding CSS file, which is automatically loaded in parallel with the JS chunk when requested.

### Server-
Download .txt
gitextract_h4n11kqg/

├── .editorconfig
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   ├── docs.yml
│   │   └── feature_request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── commit-convention.md
│   ├── copilot-instructions.md
│   ├── renovate.json5
│   └── workflows/
│       ├── ci.yml
│       ├── copilot-setup-steps.yml
│       ├── ecosystem-ci-trigger.yml
│       ├── issue-close-require.yml
│       ├── issue-labeled.yml
│       ├── issue-template-check.yml
│       ├── lock-closed-issues.yml
│       ├── preview-release.yml
│       ├── publish.yml
│       ├── release-tag.yml
│       └── semantic-pull-request.yml
├── .gitignore
├── .prettierignore
├── .prettierrc.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs/
│   ├── .vitepress/
│   │   ├── buildEnd.config.ts
│   │   ├── config.ts
│   │   ├── inlined-scripts/
│   │   │   ├── banner.d.ts
│   │   │   └── banner.js
│   │   └── theme/
│   │       ├── components/
│   │       │   ├── AsideSponsors.vue
│   │       │   ├── BlogIndex.vue
│   │       │   ├── NonInheritBadge.vue
│   │       │   ├── ScrimbaLink.vue
│   │       │   ├── SponsorBanner.vue
│   │       │   ├── SupportedVersions.vue
│   │       │   ├── SvgImage.vue
│   │       │   └── YouTubeVideo.vue
│   │       ├── composables/
│   │       │   └── sponsor.ts
│   │       ├── index.ts
│   │       ├── landing/
│   │       │   ├── Community.vue
│   │       │   ├── FeatureGrid1.vue
│   │       │   ├── FeatureGrid2.vue
│   │       │   ├── Frameworks.vue
│   │       │   ├── Hero.vue
│   │       │   └── Layout.vue
│   │       ├── live/
│   │       │   ├── Events.vue
│   │       │   ├── Hero.vue
│   │       │   ├── Layout.vue
│   │       │   ├── TimeoutSwitcher.vue
│   │       │   ├── Timer.vue
│   │       │   ├── VideoIframe.vue
│   │       │   └── useYoutubePlayer.ts
│   │       └── styles.css
│   ├── _data/
│   │   ├── acknowledgements.data.ts
│   │   ├── blog.data.ts
│   │   └── team.js
│   ├── acknowledgements.md
│   ├── blog/
│   │   ├── announcing-vite2.md
│   │   ├── announcing-vite3.md
│   │   ├── announcing-vite4-3.md
│   │   ├── announcing-vite4.md
│   │   ├── announcing-vite5-1.md
│   │   ├── announcing-vite5.md
│   │   ├── announcing-vite6.md
│   │   ├── announcing-vite7.md
│   │   ├── announcing-vite8-beta.md
│   │   └── announcing-vite8.md
│   ├── blog.md
│   ├── changes/
│   │   ├── hotupdate-hook.md
│   │   ├── index.md
│   │   ├── per-environment-apis.md
│   │   ├── shared-plugins-during-build.md
│   │   ├── ssr-using-modulerunner.md
│   │   └── this-environment-in-hooks.md
│   ├── config/
│   │   ├── build-options.md
│   │   ├── dep-optimization-options.md
│   │   ├── index.md
│   │   ├── preview-options.md
│   │   ├── server-options.md
│   │   ├── shared-options.md
│   │   ├── ssr-options.md
│   │   └── worker-options.md
│   ├── guide/
│   │   ├── api-environment-frameworks.md
│   │   ├── api-environment-instances.md
│   │   ├── api-environment-plugins.md
│   │   ├── api-environment-runtimes.md
│   │   ├── api-environment.md
│   │   ├── api-hmr.md
│   │   ├── api-javascript.md
│   │   ├── api-plugin.md
│   │   ├── assets.md
│   │   ├── backend-integration.md
│   │   ├── build.md
│   │   ├── cli.md
│   │   ├── dep-pre-bundling.md
│   │   ├── env-and-mode.md
│   │   ├── features.md
│   │   ├── index.md
│   │   ├── migration.md
│   │   ├── performance.md
│   │   ├── philosophy.md
│   │   ├── ssr.md
│   │   ├── static-deploy-github-pages.yaml
│   │   ├── static-deploy.md
│   │   ├── troubleshooting.md
│   │   ├── using-plugins.md
│   │   └── why.md
│   ├── images/
│   │   └── diagrams.fig
│   ├── index.md
│   ├── live.md
│   ├── package.json
│   ├── plugins/
│   │   └── index.md
│   ├── public/
│   │   ├── _headers
│   │   └── _redirects
│   ├── releases.md
│   ├── team.md
│   └── tsconfig.json
├── eslint.config.js
├── netlify.toml
├── package.json
├── packages/
│   ├── create-vite/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── __tests__/
│   │   │   └── cli.spec.ts
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── template-lit/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       ├── index.css
│   │   │       └── my-element.js
│   │   ├── template-lit-ts/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── index.css
│   │   │   │   └── my-element.ts
│   │   │   └── tsconfig.json
│   │   ├── template-preact/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── app.css
│   │   │   │   ├── app.jsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.jsx
│   │   │   └── vite.config.js
│   │   ├── template-preact-ts/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── app.css
│   │   │   │   ├── app.tsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-qwik/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── app.css
│   │   │   │   ├── app.jsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.jsx
│   │   │   └── vite.config.js
│   │   ├── template-qwik-ts/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── app.css
│   │   │   │   ├── app.tsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-react/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── eslint.config.js
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.css
│   │   │   │   ├── App.jsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.jsx
│   │   │   └── vite.config.js
│   │   ├── template-react-ts/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── eslint.config.js
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.css
│   │   │   │   ├── App.tsx
│   │   │   │   ├── index.css
│   │   │   │   └── main.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-solid/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.css
│   │   │   │   ├── App.jsx
│   │   │   │   ├── index.css
│   │   │   │   └── index.jsx
│   │   │   └── vite.config.js
│   │   ├── template-solid-ts/
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.css
│   │   │   │   ├── App.tsx
│   │   │   │   ├── index.css
│   │   │   │   └── index.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-svelte/
│   │   │   ├── .vscode/
│   │   │   │   └── extensions.json
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── jsconfig.json
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.svelte
│   │   │   │   ├── app.css
│   │   │   │   ├── lib/
│   │   │   │   │   └── Counter.svelte
│   │   │   │   └── main.js
│   │   │   ├── svelte.config.js
│   │   │   └── vite.config.js
│   │   ├── template-svelte-ts/
│   │   │   ├── .vscode/
│   │   │   │   └── extensions.json
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.svelte
│   │   │   │   ├── app.css
│   │   │   │   ├── lib/
│   │   │   │   │   └── Counter.svelte
│   │   │   │   └── main.ts
│   │   │   ├── svelte.config.js
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-vanilla/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       ├── counter.js
│   │   │       ├── main.js
│   │   │       └── style.css
│   │   ├── template-vanilla-ts/
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── counter.ts
│   │   │   │   ├── main.ts
│   │   │   │   └── style.css
│   │   │   └── tsconfig.json
│   │   ├── template-vue/
│   │   │   ├── .vscode/
│   │   │   │   └── extensions.json
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.vue
│   │   │   │   ├── components/
│   │   │   │   │   └── HelloWorld.vue
│   │   │   │   ├── main.js
│   │   │   │   └── style.css
│   │   │   └── vite.config.js
│   │   ├── template-vue-ts/
│   │   │   ├── .vscode/
│   │   │   │   └── extensions.json
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── App.vue
│   │   │   │   ├── components/
│   │   │   │   │   └── HelloWorld.vue
│   │   │   │   ├── main.ts
│   │   │   │   └── style.css
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── tsconfig.json
│   │   └── tsdown.config.ts
│   ├── plugin-legacy/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── __tests__/
│   │   │   │   ├── readme.spec.ts
│   │   │   │   └── snippets.spec.ts
│   │   │   ├── index.ts
│   │   │   ├── shims.d.ts
│   │   │   ├── snippets.ts
│   │   │   └── types.ts
│   │   ├── tsconfig.json
│   │   └── tsdown.config.ts
│   └── vite/
│       ├── CHANGELOG.md
│       ├── LICENSE.md
│       ├── README.md
│       ├── bin/
│       │   ├── openChrome.js
│       │   └── vite.js
│       ├── client.d.ts
│       ├── misc/
│       │   ├── false.d.ts
│       │   ├── false.js
│       │   ├── true.d.ts
│       │   └── true.js
│       ├── package.json
│       ├── rolldown.config.ts
│       ├── rolldown.dts.config.ts
│       ├── rollupLicensePlugin.ts
│       ├── scripts/
│       │   ├── benchCircularImport.ts
│       │   └── generateTarget.ts
│       ├── src/
│       │   ├── client/
│       │   │   ├── client.ts
│       │   │   ├── env.ts
│       │   │   ├── overlay.ts
│       │   │   └── tsconfig.json
│       │   ├── module-runner/
│       │   │   ├── __tests_dts__/
│       │   │   │   ├── importMeta.ts
│       │   │   │   └── tsconfig.json
│       │   │   ├── constants.ts
│       │   │   ├── createImportMeta.ts
│       │   │   ├── esmEvaluator.ts
│       │   │   ├── evaluatedModules.ts
│       │   │   ├── hmrHandler.ts
│       │   │   ├── hmrLogger.ts
│       │   │   ├── importMetaResolver.ts
│       │   │   ├── index.ts
│       │   │   ├── runner.ts
│       │   │   ├── sourcemap/
│       │   │   │   ├── decoder.ts
│       │   │   │   ├── index.ts
│       │   │   │   └── interceptor.ts
│       │   │   ├── tsconfig.json
│       │   │   ├── types.ts
│       │   │   └── utils.ts
│       │   ├── node/
│       │   │   ├── __tests__/
│       │   │   │   ├── __snapshots__/
│       │   │   │   │   └── utils.spec.ts.snap
│       │   │   │   ├── assetSource.spec.ts
│       │   │   │   ├── build.spec.ts
│       │   │   │   ├── config.spec.ts
│       │   │   │   ├── constants.spec.ts
│       │   │   │   ├── dev.spec.ts
│       │   │   │   ├── env.spec.ts
│       │   │   │   ├── environment.spec.ts
│       │   │   │   ├── external.spec.ts
│       │   │   │   ├── filterRegex.spec.ts
│       │   │   │   ├── fixtures/
│       │   │   │   │   ├── cjs-ssr-dep/
│       │   │   │   │   │   ├── index.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── config/
│       │   │   │   │   │   ├── entry/
│       │   │   │   │   │   │   ├── imports-field.ts
│       │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   ├── vite.config.import-attributes.ts
│       │   │   │   │   │   │   └── vite.config.ts
│       │   │   │   │   │   ├── import-meta/
│       │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   └── vite.config.ts
│       │   │   │   │   │   ├── loadConfigFromFile/
│       │   │   │   │   │   │   └── .gitkeep
│       │   │   │   │   │   ├── native-import/
│       │   │   │   │   │   │   └── basic.js
│       │   │   │   │   │   ├── plugin-module-condition/
│       │   │   │   │   │   │   ├── index.cjs
│       │   │   │   │   │   │   ├── index.d.ts
│       │   │   │   │   │   │   ├── index.mjs
│       │   │   │   │   │   │   ├── module.mjs
│       │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   ├── shebang/
│       │   │   │   │   │   │   └── vite.config.ts
│       │   │   │   │   │   └── siblings/
│       │   │   │   │   │       ├── foo.ts
│       │   │   │   │   │       └── package.json
│       │   │   │   │   ├── dynamic-import/
│       │   │   │   │   │   ├── dep.mjs
│       │   │   │   │   │   └── entry.mjs
│       │   │   │   │   ├── emit-assets/
│       │   │   │   │   │   ├── css-module.module.css
│       │   │   │   │   │   ├── css-normal.css
│       │   │   │   │   │   └── entry.mjs
│       │   │   │   │   ├── environment-alias/
│       │   │   │   │   │   ├── test.client.js
│       │   │   │   │   │   ├── test.rsc.js
│       │   │   │   │   │   └── test.ssr.js
│       │   │   │   │   ├── file-url/
│       │   │   │   │   │   ├── entry.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── runner-import/
│       │   │   │   │   │   ├── basic.ts
│       │   │   │   │   │   ├── cjs.js
│       │   │   │   │   │   ├── dynamic-import-dep.ts
│       │   │   │   │   │   ├── dynamic-import.ts
│       │   │   │   │   │   ├── plugin.ts
│       │   │   │   │   │   ├── vite.config.outside-pkg-import.mts
│       │   │   │   │   │   └── vite.config.ts
│       │   │   │   │   ├── scan-jsx-runtime/
│       │   │   │   │   │   ├── entry-jsx.tsx
│       │   │   │   │   │   ├── entry-no-jsx.js
│       │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   ├── shared-config-build/
│       │   │   │   │   │   └── emitAssets/
│       │   │   │   │   │       ├── entry.js
│       │   │   │   │   │       └── test.css
│       │   │   │   │   ├── shared-plugins/
│       │   │   │   │   │   └── minify/
│       │   │   │   │   │       └── entry.js
│       │   │   │   │   ├── test-dep-conditions/
│       │   │   │   │   │   ├── dir/
│       │   │   │   │   │   │   ├── index.default.js
│       │   │   │   │   │   │   └── index.module.js
│       │   │   │   │   │   ├── index.browser.js
│       │   │   │   │   │   ├── index.css
│       │   │   │   │   │   ├── index.custom1.js
│       │   │   │   │   │   ├── index.default.js
│       │   │   │   │   │   ├── index.worker.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── test-dep-conditions-app/
│       │   │   │   │   │   ├── entry-with-module.js
│       │   │   │   │   │   ├── entry.css
│       │   │   │   │   │   └── entry.js
│       │   │   │   │   ├── watch-rebuild-manifest/
│       │   │   │   │   │   ├── dep.js
│       │   │   │   │   │   ├── entry.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   └── worker-dynamic/
│       │   │   │   │       ├── dynamic.js
│       │   │   │   │       ├── main.js
│       │   │   │   │       └── worker.js
│       │   │   │   ├── http.spec.ts
│       │   │   │   ├── optimizer/
│       │   │   │   │   └── rolldownDepPlugin.spec.ts
│       │   │   │   ├── package.json
│       │   │   │   ├── packages/
│       │   │   │   │   ├── build-project/
│       │   │   │   │   │   └── index.html
│       │   │   │   │   ├── child/
│       │   │   │   │   │   ├── index.js
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── module/
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── name/
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── noname/
│       │   │   │   │   │   └── package.json
│       │   │   │   │   ├── package.json
│       │   │   │   │   └── parent/
│       │   │   │   │       ├── index.ts
│       │   │   │   │       └── package.json
│       │   │   │   ├── plugins/
│       │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   └── license.spec.ts.snap
│       │   │   │   │   ├── assetImportMetaUrl.spec.ts
│       │   │   │   │   ├── css.spec.ts
│       │   │   │   │   ├── define.spec.ts
│       │   │   │   │   ├── dynamicImportVar/
│       │   │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   │   └── parse.spec.ts.snap
│       │   │   │   │   │   ├── mods/
│       │   │   │   │   │   │   ├── hello.js
│       │   │   │   │   │   │   └── hi.js
│       │   │   │   │   │   └── parse.spec.ts
│       │   │   │   │   ├── esbuild.spec.ts
│       │   │   │   │   ├── fixtures/
│       │   │   │   │   │   ├── css-module-compose/
│       │   │   │   │   │   │   └── css/
│       │   │   │   │   │   │       └── bar.module.css
│       │   │   │   │   │   ├── license/
│       │   │   │   │   │   │   ├── dep-licence-cc0/
│       │   │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   │   ├── licence
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── dep-license-mit/
│       │   │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   │   ├── license
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── dep-nested-license-isc/
│       │   │   │   │   │   │   │   ├── LICENSE
│       │   │   │   │   │   │   │   ├── index.js
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── index.html
│       │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   ├── oxc-tsconfigs/
│       │   │   │   │   │   │   ├── decorator-metadata/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── empty/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── jsx-complex-options/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── jsx-preserve/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── jsx-react-jsx/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── target-es2021/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── target-es2022/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── target-esnext/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   ├── use-define-false/
│       │   │   │   │   │   │   │   └── tsconfig.json
│       │   │   │   │   │   │   └── use-define-true/
│       │   │   │   │   │   │       └── tsconfig.json
│       │   │   │   │   │   └── worker-url/
│       │   │   │   │   │       ├── entry.js
│       │   │   │   │   │       └── worker.js
│       │   │   │   │   ├── hooks.spec.ts
│       │   │   │   │   ├── import.spec.ts
│       │   │   │   │   ├── importGlob/
│       │   │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   │   └── fixture.spec.ts.snap
│       │   │   │   │   │   ├── fixture-a/
│       │   │   │   │   │   │   ├── .foo/
│       │   │   │   │   │   │   │   └── test.ts
│       │   │   │   │   │   │   ├── .gitignore
│       │   │   │   │   │   │   ├── index.ts
│       │   │   │   │   │   │   ├── modules/
│       │   │   │   │   │   │   │   ├── a.ts
│       │   │   │   │   │   │   │   ├── b.ts
│       │   │   │   │   │   │   │   └── index.ts
│       │   │   │   │   │   │   └── sibling.ts
│       │   │   │   │   │   ├── fixture-b/
│       │   │   │   │   │   │   ├── a.ts
│       │   │   │   │   │   │   ├── b.ts
│       │   │   │   │   │   │   └── index.ts
│       │   │   │   │   │   ├── fixture.spec.ts
│       │   │   │   │   │   ├── parse.spec.ts
│       │   │   │   │   │   └── utils.spec.ts
│       │   │   │   │   ├── index.spec.ts
│       │   │   │   │   ├── license.spec.ts
│       │   │   │   │   ├── modulePreloadPolyfill/
│       │   │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   │   └── modulePreloadPolyfill.spec.ts.snap
│       │   │   │   │   │   └── modulePreloadPolyfill.spec.ts
│       │   │   │   │   ├── oxc.spec.ts
│       │   │   │   │   ├── pluginFilter.spec.ts
│       │   │   │   │   ├── terser.spec.ts
│       │   │   │   │   ├── wasm.spec.ts
│       │   │   │   │   ├── worker.spec.ts
│       │   │   │   │   └── workerImportMetaUrl.spec.ts
│       │   │   │   ├── resolve.spec.ts
│       │   │   │   ├── runnerImport.spec.ts
│       │   │   │   ├── scan.spec.ts
│       │   │   │   ├── shortcuts.spec.ts
│       │   │   │   ├── utils/
│       │   │   │   │   └── isFileReadable/
│       │   │   │   │       └── permission-test-file
│       │   │   │   └── utils.spec.ts
│       │   │   ├── __tests_dts__/
│       │   │   │   ├── config.ts
│       │   │   │   ├── plugin.ts
│       │   │   │   ├── tsconfig.json
│       │   │   │   ├── typeOptions.ts
│       │   │   │   └── utils.ts
│       │   │   ├── assetSource.ts
│       │   │   ├── baseEnvironment.ts
│       │   │   ├── build.ts
│       │   │   ├── cli.ts
│       │   │   ├── config.ts
│       │   │   ├── constants.ts
│       │   │   ├── deprecations.ts
│       │   │   ├── env.ts
│       │   │   ├── environment.ts
│       │   │   ├── external.ts
│       │   │   ├── http.ts
│       │   │   ├── idResolver.ts
│       │   │   ├── index.ts
│       │   │   ├── internalIndex.ts
│       │   │   ├── logger.ts
│       │   │   ├── nodeResolve.ts
│       │   │   ├── optimizer/
│       │   │   │   ├── index.ts
│       │   │   │   ├── optimizer.ts
│       │   │   │   ├── pluginConverter.ts
│       │   │   │   ├── resolve.ts
│       │   │   │   ├── rolldownDepPlugin.ts
│       │   │   │   └── scan.ts
│       │   │   ├── packages.ts
│       │   │   ├── plugin.ts
│       │   │   ├── plugins/
│       │   │   │   ├── asset.ts
│       │   │   │   ├── assetImportMetaUrl.ts
│       │   │   │   ├── clientInjections.ts
│       │   │   │   ├── css.ts
│       │   │   │   ├── define.ts
│       │   │   │   ├── dynamicImportVars.ts
│       │   │   │   ├── esbuild.ts
│       │   │   │   ├── esbuildBannerFooterCompatPlugin.ts
│       │   │   │   ├── forwardConsole.ts
│       │   │   │   ├── html.ts
│       │   │   │   ├── importAnalysis.ts
│       │   │   │   ├── importAnalysisBuild.ts
│       │   │   │   ├── importMetaGlob.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── json.ts
│       │   │   │   ├── license.ts
│       │   │   │   ├── manifest.ts
│       │   │   │   ├── modulePreloadPolyfill.ts
│       │   │   │   ├── optimizedDeps.ts
│       │   │   │   ├── oxc.ts
│       │   │   │   ├── pluginFilter.ts
│       │   │   │   ├── preAlias.ts
│       │   │   │   ├── prepareOutDir.ts
│       │   │   │   ├── reporter.ts
│       │   │   │   ├── resolve.ts
│       │   │   │   ├── terser.ts
│       │   │   │   ├── wasm.ts
│       │   │   │   ├── worker.ts
│       │   │   │   └── workerImportMetaUrl.ts
│       │   │   ├── preview.ts
│       │   │   ├── publicDir.ts
│       │   │   ├── server/
│       │   │   │   ├── __tests__/
│       │   │   │   │   ├── fixtures/
│       │   │   │   │   │   ├── lerna/
│       │   │   │   │   │   │   ├── lerna.json
│       │   │   │   │   │   │   └── nested/
│       │   │   │   │   │   │       └── package.json
│       │   │   │   │   │   ├── none/
│       │   │   │   │   │   │   └── nested/
│       │   │   │   │   │   │       └── package.json
│       │   │   │   │   │   ├── pnpm/
│       │   │   │   │   │   │   ├── nested/
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   └── pnpm-workspace.yaml
│       │   │   │   │   │   ├── watcher/
│       │   │   │   │   │   │   ├── config-deps/
│       │   │   │   │   │   │   │   └── foo.js
│       │   │   │   │   │   │   ├── custom-public/
│       │   │   │   │   │   │   │   └── foo.txt
│       │   │   │   │   │   │   ├── nested-root/
│       │   │   │   │   │   │   │   └── vite.config.js
│       │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   └── yarn/
│       │   │   │   │   │       ├── nested/
│       │   │   │   │   │       │   └── package.json
│       │   │   │   │   │       └── package.json
│       │   │   │   │   ├── moduleGraph.spec.ts
│       │   │   │   │   ├── pluginContainer.spec.ts
│       │   │   │   │   ├── search-root.spec.ts
│       │   │   │   │   ├── transformRequest.spec.ts
│       │   │   │   │   └── watcher.spec.ts
│       │   │   │   ├── environment.ts
│       │   │   │   ├── environments/
│       │   │   │   │   ├── fetchableEnvironments.ts
│       │   │   │   │   ├── fullBundleEnvironment.ts
│       │   │   │   │   └── runnableEnvironment.ts
│       │   │   │   ├── hmr.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── middlewares/
│       │   │   │   │   ├── __tests__/
│       │   │   │   │   │   ├── hostCheck.spec.ts
│       │   │   │   │   │   └── static.spec.ts
│       │   │   │   │   ├── base.ts
│       │   │   │   │   ├── error.ts
│       │   │   │   │   ├── hostCheck.ts
│       │   │   │   │   ├── htmlFallback.ts
│       │   │   │   │   ├── indexHtml.ts
│       │   │   │   │   ├── memoryFiles.ts
│       │   │   │   │   ├── notFound.ts
│       │   │   │   │   ├── proxy.ts
│       │   │   │   │   ├── rejectInvalidRequest.ts
│       │   │   │   │   ├── rejectNoCorsRequest.ts
│       │   │   │   │   ├── static.ts
│       │   │   │   │   ├── time.ts
│       │   │   │   │   └── transform.ts
│       │   │   │   ├── mixedModuleGraph.ts
│       │   │   │   ├── moduleGraph.ts
│       │   │   │   ├── openBrowser.ts
│       │   │   │   ├── pluginContainer.ts
│       │   │   │   ├── searchRoot.ts
│       │   │   │   ├── send.ts
│       │   │   │   ├── sourcemap.ts
│       │   │   │   ├── transformRequest.ts
│       │   │   │   ├── warmup.ts
│       │   │   │   └── ws.ts
│       │   │   ├── shortcuts.ts
│       │   │   ├── ssr/
│       │   │   │   ├── __tests__/
│       │   │   │   │   ├── __snapshots__/
│       │   │   │   │   │   └── ssrLoadModule.spec.ts.snap
│       │   │   │   │   ├── fixtures/
│       │   │   │   │   │   ├── bundled-with-sourcemaps/
│       │   │   │   │   │   │   └── bundle.js
│       │   │   │   │   │   ├── errors/
│       │   │   │   │   │   │   ├── syntax-error-dep.js
│       │   │   │   │   │   │   ├── syntax-error-dep.ts
│       │   │   │   │   │   │   ├── syntax-error.js
│       │   │   │   │   │   │   └── syntax-error.ts
│       │   │   │   │   │   ├── file-url/
│       │   │   │   │   │   │   ├── test space.js
│       │   │   │   │   │   │   └── test.js
│       │   │   │   │   │   ├── global/
│       │   │   │   │   │   │   ├── export.js
│       │   │   │   │   │   │   └── test.js
│       │   │   │   │   │   ├── json/
│       │   │   │   │   │   │   └── test.json
│       │   │   │   │   │   ├── modules/
│       │   │   │   │   │   │   ├── has-error.js
│       │   │   │   │   │   │   ├── has-invalid-import.js
│       │   │   │   │   │   │   └── import-meta.js
│       │   │   │   │   │   ├── multi-source-sourcemaps/
│       │   │   │   │   │   │   ├── dist.js
│       │   │   │   │   │   │   ├── entrypoint.js
│       │   │   │   │   │   │   └── nested-directory/
│       │   │   │   │   │   │       └── nested-file.js
│       │   │   │   │   │   └── named-overwrite-all/
│       │   │   │   │   │       ├── dep1.js
│       │   │   │   │   │       ├── dep2.js
│       │   │   │   │   │       └── main.js
│       │   │   │   │   ├── ssrLoadModule.spec.ts
│       │   │   │   │   ├── ssrStacktrace.spec.ts
│       │   │   │   │   └── ssrTransform.spec.ts
│       │   │   │   ├── fetchModule.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── runnerImport.ts
│       │   │   │   ├── runtime/
│       │   │   │   │   ├── __tests__/
│       │   │   │   │   │   ├── fixtures/
│       │   │   │   │   │   │   ├── a.ts
│       │   │   │   │   │   │   ├── assets/
│       │   │   │   │   │   │   │   └── placeholder.txt
│       │   │   │   │   │   │   ├── assets.js
│       │   │   │   │   │   │   ├── b.ts
│       │   │   │   │   │   │   ├── basic.js
│       │   │   │   │   │   │   ├── builtin-import.ts
│       │   │   │   │   │   │   ├── c.ts
│       │   │   │   │   │   │   ├── circular/
│       │   │   │   │   │   │   │   ├── circular-a.js
│       │   │   │   │   │   │   │   ├── circular-b.js
│       │   │   │   │   │   │   │   └── circular-index.js
│       │   │   │   │   │   │   ├── cjs-external/
│       │   │   │   │   │   │   │   ├── index.cjs
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── cjs-external-existing.js
│       │   │   │   │   │   │   ├── cjs-external-non-existing.js
│       │   │   │   │   │   │   ├── cyclic/
│       │   │   │   │   │   │   │   ├── action.js
│       │   │   │   │   │   │   │   ├── entry-cyclic.js
│       │   │   │   │   │   │   │   └── entry.js
│       │   │   │   │   │   │   ├── cyclic2/
│       │   │   │   │   │   │   │   ├── README.md
│       │   │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   │   ├── test1/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test2/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test3/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test4/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test5/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test6/
│       │   │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test7/
│       │   │   │   │   │   │   │   │   ├── Ion.js
│       │   │   │   │   │   │   │   │   ├── IonTypes.js
│       │   │   │   │   │   │   │   │   ├── README.md
│       │   │   │   │   │   │   │   │   └── dom/
│       │   │   │   │   │   │   │   │       ├── Blob.js
│       │   │   │   │   │   │   │   │       └── index.js
│       │   │   │   │   │   │   │   └── test9/
│       │   │   │   │   │   │   │       ├── dep.js
│       │   │   │   │   │   │   │       └── index.js
│       │   │   │   │   │   │   ├── d.ts
│       │   │   │   │   │   │   ├── default-string.ts
│       │   │   │   │   │   │   ├── dynamic-import.js
│       │   │   │   │   │   │   ├── esm-external/
│       │   │   │   │   │   │   │   ├── index.mjs
│       │   │   │   │   │   │   │   └── package.json
│       │   │   │   │   │   │   ├── esm-external-existing.js
│       │   │   │   │   │   │   ├── esm-external-non-existing.js
│       │   │   │   │   │   │   ├── execution-order-re-export/
│       │   │   │   │   │   │   │   ├── dep1.js
│       │   │   │   │   │   │   │   ├── dep2.js
│       │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   ├── has-error-deep.ts
│       │   │   │   │   │   │   ├── has-error-first-comment.ts
│       │   │   │   │   │   │   ├── has-error-first.js
│       │   │   │   │   │   │   ├── has-error.js
│       │   │   │   │   │   │   ├── hmr.js
│       │   │   │   │   │   │   ├── import-external.ts
│       │   │   │   │   │   │   ├── installed.js
│       │   │   │   │   │   │   ├── invalid-package/
│       │   │   │   │   │   │   │   ├── deps/
│       │   │   │   │   │   │   │   │   └── test-dep-invalid-exports/
│       │   │   │   │   │   │   │   │       └── package.json
│       │   │   │   │   │   │   │   └── test.js
│       │   │   │   │   │   │   ├── live-binding/
│       │   │   │   │   │   │   │   ├── package.json
│       │   │   │   │   │   │   │   ├── test1/
│       │   │   │   │   │   │   │   │   ├── dep.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test2/
│       │   │   │   │   │   │   │   │   ├── dep.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   ├── test3/
│       │   │   │   │   │   │   │   │   ├── dep.js
│       │   │   │   │   │   │   │   │   └── index.js
│       │   │   │   │   │   │   │   └── test4/
│       │   │   │   │   │   │   │       ├── dep.js
│       │   │   │   │   │   │   │       └── index.js
│       │   │   │   │   │   │   ├── native.js
│       │   │   │   │   │   │   ├── no-this/
│       │   │   │   │   │   │   │   ├── importee.js
│       │   │   │   │   │   │   │   └── importer.js
│       │   │   │   │   │   │   ├── oxc-runtime-helper.ts
│       │   │   │   │   │   │   ├── pre-source-mapped-file.js
│       │   │   │   │   │   │   ├── simple.js
│       │   │   │   │   │   │   ├── string-literal-sourcemap.ts
│       │   │   │   │   │   │   ├── test.css
│       │   │   │   │   │   │   ├── test.module.css
│       │   │   │   │   │   │   ├── throws-error-method.ts
│       │   │   │   │   │   │   ├── top-level-object.js
│       │   │   │   │   │   │   ├── virtual.js
│       │   │   │   │   │   │   ├── worker.invoke.mjs
│       │   │   │   │   │   │   └── worker.mjs
│       │   │   │   │   │   ├── package.json
│       │   │   │   │   │   ├── server-hmr.spec.ts
│       │   │   │   │   │   ├── server-no-hmr.spec.ts
│       │   │   │   │   │   ├── server-runtime.spec.ts
│       │   │   │   │   │   ├── server-source-maps.spec.ts
│       │   │   │   │   │   ├── server-worker-runner.invoke.spec.ts
│       │   │   │   │   │   ├── server-worker-runner.spec.ts
│       │   │   │   │   │   └── utils.ts
│       │   │   │   │   └── serverModuleRunner.ts
│       │   │   │   ├── ssrManifestPlugin.ts
│       │   │   │   ├── ssrModuleLoader.ts
│       │   │   │   ├── ssrStacktrace.ts
│       │   │   │   └── ssrTransform.ts
│       │   │   ├── tsconfig.json
│       │   │   ├── typeUtils.ts
│       │   │   ├── utils.ts
│       │   │   └── watch.ts
│       │   ├── shared/
│       │   │   ├── __tests__/
│       │   │   │   └── forwardConsole.spec.ts
│       │   │   ├── builtin.ts
│       │   │   ├── constants.ts
│       │   │   ├── forwardConsole.ts
│       │   │   ├── hmr.ts
│       │   │   ├── hmrHandler.ts
│       │   │   ├── invokeMethods.ts
│       │   │   ├── moduleRunnerTransport.ts
│       │   │   ├── ssrTransform.ts
│       │   │   ├── tsconfig.json
│       │   │   └── utils.ts
│       │   └── types/
│       │       ├── alias.d.ts
│       │       ├── anymatch.d.ts
│       │       ├── chokidar.d.ts
│       │       ├── commonjs.d.ts
│       │       ├── connect.d.ts
│       │       ├── dynamicImportVars.d.ts
│       │       ├── package.json
│       │       ├── shims.d.ts
│       │       └── ws.d.ts
│       ├── tsconfig.base.json
│       ├── tsconfig.check.json
│       ├── tsconfig.json
│       └── types/
│           ├── customEvent.d.ts
│           ├── hmrPayload.d.ts
│           ├── hot.d.ts
│           ├── import-meta.d.ts
│           ├── importGlob.d.ts
│           ├── importMeta.d.ts
│           ├── internal/
│           │   ├── cssPreprocessorOptions.d.ts
│           │   ├── esbuildOptions.d.ts
│           │   ├── lightningcssOptions.d.ts
│           │   ├── rollupTypeCompat.d.ts
│           │   └── terserOptions.d.ts
│           └── metadata.d.ts
├── patches/
│   ├── chokidar@3.6.0.patch
│   ├── dotenv-expand@12.0.3.patch
│   └── sirv@3.0.2.patch
├── playground/
│   ├── alias/
│   │   ├── __tests__/
│   │   │   └── alias.spec.ts
│   │   ├── customResolver.js
│   │   ├── dir/
│   │   │   ├── from-script-src.js
│   │   │   ├── module/
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── test.css
│   │   │   ├── test.js
│   │   │   └── url_conflict.js
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── test.js
│   │   └── vite.config.js
│   ├── assets/
│   │   ├── __tests__/
│   │   │   ├── assets.spec.ts
│   │   │   ├── encoded-base/
│   │   │   │   └── assets-encoded-base.spec.ts
│   │   │   ├── relative-base/
│   │   │   │   └── assets-relative-base.spec.ts
│   │   │   ├── runtime-base/
│   │   │   │   └── assets-runtime-base.spec.ts
│   │   │   └── url-base/
│   │   │       └── assets-url-base.spec.ts
│   │   ├── asset/
│   │   │   ├── main.js
│   │   │   └── style.css
│   │   ├── css/
│   │   │   ├── css-url-url.css
│   │   │   ├── css-url.css
│   │   │   ├── fonts.css
│   │   │   ├── foo.module.css
│   │   │   ├── icons.css
│   │   │   ├── import.css
│   │   │   ├── manual-chunks.css
│   │   │   └── nested/
│   │   │       └── at-imported-css-url.css
│   │   ├── foo.js
│   │   ├── index.html
│   │   ├── manifest.json
│   │   ├── multiline-import-meta-url.js
│   │   ├── nested/
│   │   │   ├── foo.unknown
│   │   │   ├── partial.html
│   │   │   └── test.js
│   │   ├── package.json
│   │   ├── static/
│   │   │   ├── bar
│   │   │   ├── foo.css
│   │   │   ├── foo.json
│   │   │   ├── foo.txt
│   │   │   ├── import-expression.js
│   │   │   ├── raw.css
│   │   │   ├── raw.js
│   │   │   ├── raw.mts
│   │   │   └── raw.ts
│   │   ├── vite.config-encoded-base.js
│   │   ├── vite.config-relative-base.js
│   │   ├── vite.config-runtime-base.js
│   │   ├── vite.config-url-base.js
│   │   ├── vite.config.js
│   │   └── テスト-測試-white space.js
│   ├── assets-sanitize/
│   │   ├── __tests__/
│   │   │   └── assets-sanitize.spec.ts
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── backend-integration/
│   │   ├── __tests__/
│   │   │   └── backend-integration.spec.ts
│   │   ├── dir/
│   │   │   ├── custom.css
│   │   │   └── foo.css
│   │   ├── frontend/
│   │   │   ├── entrypoints/
│   │   │   │   ├── foo.pcss
│   │   │   │   ├── global.css
│   │   │   │   ├── index.html
│   │   │   │   ├── main.ts
│   │   │   │   └── nested/
│   │   │   │       ├── blue.scss
│   │   │   │       └── sub.ts
│   │   │   └── styles/
│   │   │       ├── background.css
│   │   │       ├── imported.css
│   │   │       ├── tailwind.css
│   │   │       └── url.css
│   │   ├── package.json
│   │   ├── references.css
│   │   └── vite.config.js
│   ├── base-conflict/
│   │   ├── __tests__/
│   │   │   └── base-conflict.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── importee.ts
│   │   │   ├── main.ts
│   │   │   └── virtualModules.d.ts
│   │   └── vite.config.ts
│   ├── build-old/
│   │   ├── __tests__/
│   │   │   └── build-old.spec.ts
│   │   ├── dynamic.js
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── cli/
│   │   ├── __tests__/
│   │   │   ├── cli.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── cli-module/
│   │   ├── __tests__/
│   │   │   ├── cli-module.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── client-reload/
│   │   ├── __tests__/
│   │   │   ├── client-reload.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.ts
│   ├── csp/
│   │   ├── __tests__/
│   │   │   └── csp.spec.ts
│   │   ├── dynamic.css
│   │   ├── dynamic.js
│   │   ├── from-js.css
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── linked.css
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── css/
│   │   ├── __tests__/
│   │   │   ├── css.spec.ts
│   │   │   ├── lightningcss/
│   │   │   │   └── lightningcss.spec.ts
│   │   │   ├── no-css-minify/
│   │   │   │   └── css-no-css-minify.spec.ts
│   │   │   ├── postcss-plugins-different-dir/
│   │   │   │   ├── css-postcss-plugins-different-dir.spec.ts
│   │   │   │   └── serve.ts
│   │   │   ├── same-file-name/
│   │   │   │   └── css-same-file-name.spec.ts
│   │   │   ├── sass-modern-compiler-build/
│   │   │   │   └── sass-modern-compiler.spec.ts
│   │   │   ├── sass-tests.ts
│   │   │   └── tests.ts
│   │   ├── aliased/
│   │   │   ├── bar.module.css
│   │   │   └── foo.css
│   │   ├── async/
│   │   │   ├── async-1.css
│   │   │   ├── async-1.js
│   │   │   ├── async-2.css
│   │   │   ├── async-2.js
│   │   │   ├── async-3.js
│   │   │   ├── async-3.module.css
│   │   │   ├── base.css
│   │   │   ├── base.js
│   │   │   └── index.js
│   │   ├── async-treeshaken.css
│   │   ├── async-treeshaken.js
│   │   ├── async.css
│   │   ├── async.js
│   │   ├── charset.css
│   │   ├── composed.module.css
│   │   ├── composed.module.less
│   │   ├── composed.module.scss
│   │   ├── composes-path-resolving.module.css
│   │   ├── css-dep/
│   │   │   ├── index.css
│   │   │   ├── index.js
│   │   │   ├── index.scss
│   │   │   ├── index.styl
│   │   │   └── package.json
│   │   ├── css-dep-exports/
│   │   │   ├── foo1.scss
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   ├── style.css
│   │   │   └── style.scss
│   │   ├── css-js-dep/
│   │   │   ├── bar.module.css
│   │   │   ├── foo.css
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── css-proxy-dep/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── css-proxy-dep-nested/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── dep.css
│   │   ├── empty.css
│   │   ├── file-absolute.scss
│   │   ├── folder with space/
│   │   │   └── space.css
│   │   ├── glob-dep/
│   │   │   ├── bar.css
│   │   │   ├── foo.css
│   │   │   └── nested (dir)/
│   │   │       └── baz.css
│   │   ├── glob-dep.css
│   │   ├── glob-import/
│   │   │   ├── bar.css
│   │   │   └── foo.css
│   │   ├── imported-at-import.css
│   │   ├── imported.css
│   │   ├── imported.scss
│   │   ├── imports-field.css
│   │   ├── imports-imports-field.css
│   │   ├── index.html
│   │   ├── inline.module.css
│   │   ├── inlined.css
│   │   ├── jsfile.css.js
│   │   ├── layered/
│   │   │   ├── blue.css
│   │   │   ├── green.css
│   │   │   └── index.css
│   │   ├── less/
│   │   │   ├── components/
│   │   │   │   └── form.less
│   │   │   └── ommer.less
│   │   ├── less-plugin/
│   │   │   └── test.js
│   │   ├── less-plugin.less
│   │   ├── less.less
│   │   ├── lightningcss-plugins.js
│   │   ├── linked-at-import.css
│   │   ├── linked.css
│   │   ├── main.js
│   │   ├── manual-chunk.css
│   │   ├── minify.css
│   │   ├── mod.module.css
│   │   ├── mod.module.scss
│   │   ├── nested/
│   │   │   ├── _index.scss
│   │   │   ├── _partial.scss
│   │   │   ├── css-in-less-2.less
│   │   │   ├── css-in-less.css
│   │   │   ├── css-in-less.less
│   │   │   ├── css-in-scss.css
│   │   │   ├── nested.less
│   │   │   ├── nested.sss
│   │   │   ├── nested.styl
│   │   │   ├── relative.scss
│   │   │   ├── replacement-alias.scss
│   │   │   └── root-relative.scss
│   │   ├── options/
│   │   │   ├── absolute-import.styl
│   │   │   └── relative-import.styl
│   │   ├── package.json
│   │   ├── pkg-dep/
│   │   │   ├── _index.scss
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── postcss-caching/
│   │   │   ├── blue-app/
│   │   │   │   ├── imported.css
│   │   │   │   ├── index.html
│   │   │   │   ├── main.js
│   │   │   │   ├── package.json
│   │   │   │   └── postcss.config.js
│   │   │   ├── css.spec.ts
│   │   │   ├── green-app/
│   │   │   │   ├── imported.css
│   │   │   │   ├── index.html
│   │   │   │   ├── main.js
│   │   │   │   ├── package.json
│   │   │   │   └── postcss.config.js
│   │   │   └── serve.ts
│   │   ├── postcss-inject-url.css
│   │   ├── postcss-source-input.css
│   │   ├── postcss.config.js
│   │   ├── raw-imported.css
│   │   ├── same-name/
│   │   │   ├── sub1/
│   │   │   │   ├── sub.css
│   │   │   │   └── sub.js
│   │   │   └── sub2/
│   │   │       ├── sub.css
│   │   │       └── sub.js
│   │   ├── sass-modern-compiler-build/
│   │   │   ├── entry1.scss
│   │   │   └── entry2.scss
│   │   ├── sass.scss
│   │   ├── scss-dir/
│   │   │   ├── dir/
│   │   │   │   └── index.scss
│   │   │   └── main.scss
│   │   ├── scss-proxy-dep/
│   │   │   ├── index.scss
│   │   │   └── package.json
│   │   ├── scss-proxy-dep-nested/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── stylus.styl
│   │   ├── sugarss.sss
│   │   ├── treeshake-module/
│   │   │   ├── a.js
│   │   │   ├── a.module.css
│   │   │   ├── b.js
│   │   │   ├── b.module.css
│   │   │   └── index.js
│   │   ├── treeshake-scoped/
│   │   │   ├── a-scoped.css
│   │   │   ├── a.js
│   │   │   ├── b-scoped.css
│   │   │   ├── b.js
│   │   │   ├── c-scoped.css
│   │   │   ├── c.js
│   │   │   ├── d-scoped.css
│   │   │   ├── d.js
│   │   │   ├── index.html
│   │   │   ├── index.js
│   │   │   └── order/
│   │   │       ├── a-scoped.css
│   │   │       ├── a.js
│   │   │       ├── after.css
│   │   │       └── before.css
│   │   ├── unsupported.css
│   │   ├── url-imported.css
│   │   ├── vite.config-lightningcss.js
│   │   ├── vite.config-no-css-minify.js
│   │   ├── vite.config-relative-base.js
│   │   ├── vite.config-same-file-name.js
│   │   ├── vite.config-sass-modern-compiler-build.js
│   │   ├── vite.config.js
│   │   └── weapp.wxss
│   ├── css-codesplit/
│   │   ├── __tests__/
│   │   │   ├── css-codesplit-consistent.spec.ts
│   │   │   └── css-codesplit.spec.ts
│   │   ├── async-js.css
│   │   ├── async-js.js
│   │   ├── async.css
│   │   ├── chunk.css
│   │   ├── index.html
│   │   ├── inline.css
│   │   ├── main.css
│   │   ├── main.js
│   │   ├── mod.module.css
│   │   ├── order/
│   │   │   ├── base.css
│   │   │   ├── dynamic.css
│   │   │   ├── index.js
│   │   │   └── insert.js
│   │   ├── other.js
│   │   ├── package.json
│   │   ├── shared-css-empty-1.js
│   │   ├── shared-css-empty-2.js
│   │   ├── shared-css-main.js
│   │   ├── shared-css-no-js.html
│   │   ├── shared-css-theme.css
│   │   ├── shared-css-with-js.html
│   │   ├── style.css
│   │   ├── style2.css
│   │   ├── style2.js
│   │   └── vite.config.js
│   ├── css-codesplit-cjs/
│   │   ├── __tests__/
│   │   │   └── css-codesplit-cjs.spec.ts
│   │   ├── index.html
│   │   ├── main.css
│   │   ├── main.js
│   │   ├── other.js
│   │   ├── package.json
│   │   ├── style.css
│   │   └── vite.config.js
│   ├── css-dynamic-import/
│   │   ├── __tests__/
│   │   │   ├── css-dynamic-import.spec.ts
│   │   │   └── serve.ts
│   │   ├── dynamic.css
│   │   ├── dynamic.js
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── static.css
│   │   └── static.js
│   ├── css-lightningcss/
│   │   ├── __tests__/
│   │   │   └── css-lightningcss.spec.ts
│   │   ├── composed.module.css
│   │   ├── composes-path-resolving.module.css
│   │   ├── css-url.css
│   │   ├── external-url.css
│   │   ├── imported-at-import.css
│   │   ├── imported.css
│   │   ├── index.html
│   │   ├── inline.module.css
│   │   ├── inlined.css
│   │   ├── linked-at-import.css
│   │   ├── linked.css
│   │   ├── main.js
│   │   ├── minify.css
│   │   ├── mod.module.css
│   │   ├── nested/
│   │   │   └── nested.css
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── css-lightningcss-proxy/
│   │   ├── __tests__/
│   │   │   ├── css-lightningcss-proxy.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── server.js
│   ├── css-lightningcss-root/
│   │   ├── __tests__/
│   │   │   └── css-lightningcss-root.spec.ts
│   │   ├── package.json
│   │   ├── root/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── url-dep.css
│   │   └── vite.config.js
│   ├── css-no-codesplit/
│   │   ├── __tests__/
│   │   │   └── css-no-codesplit.spec.ts
│   │   ├── async-js.css
│   │   ├── async-js.js
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── shared-linked.css
│   │   ├── sub.html
│   │   └── vite.config.js
│   ├── css-sourcemap/
│   │   ├── __tests__/
│   │   │   ├── css-sourcemap.spec.ts
│   │   │   ├── lib-entry/
│   │   │   │   └── css-sourcemap-lib-entry.spec.ts
│   │   │   └── lightningcss/
│   │   │       └── lightningcss.spec.ts
│   │   ├── be-imported.css
│   │   ├── imported-nested.sass
│   │   ├── imported-with-import.css
│   │   ├── imported.css
│   │   ├── imported.less
│   │   ├── imported.module.sass
│   │   ├── imported.sass
│   │   ├── imported.sss
│   │   ├── imported.styl
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── input-map.css
│   │   ├── input-map.src.css
│   │   ├── linked-with-import.css
│   │   ├── linked.css
│   │   ├── package.json
│   │   ├── vite.config-lib-entry.js
│   │   ├── vite.config-lightningcss.js
│   │   └── vite.config.js
│   ├── data-uri/
│   │   ├── __tests__/
│   │   │   └── data-uri.spec.ts
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── define/
│   │   ├── __tests__/
│   │   │   └── define.spec.ts
│   │   ├── commonjs-dep/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── data.json
│   │   ├── index.html
│   │   ├── optional-env.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── devtools/
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── counter.ts
│   │   │   └── main.ts
│   │   └── vite.config.ts
│   ├── dynamic-import/
│   │   ├── (app)/
│   │   │   ├── main.js
│   │   │   └── nest/
│   │   │       └── index.js
│   │   ├── __tests__/
│   │   │   └── dynamic-import.spec.ts
│   │   ├── alias/
│   │   │   ├── hello.js
│   │   │   ├── hi.js
│   │   │   ├── url.js
│   │   │   └── worker.js
│   │   ├── css/
│   │   │   └── index.css
│   │   ├── files/
│   │   │   ├── mxd.js
│   │   │   └── mxd.json
│   │   ├── index.html
│   │   ├── nested/
│   │   │   ├── deps.js
│   │   │   ├── hello.js
│   │   │   ├── index.js
│   │   │   ├── nested/
│   │   │   │   └── self.js
│   │   │   ├── self.js
│   │   │   ├── shared.js
│   │   │   ├── static.js
│   │   │   └── treeshaken/
│   │   │       ├── syntax.js
│   │   │       └── treeshaken.js
│   │   ├── package.json
│   │   ├── pkg/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── pkg.css
│   │   ├── views/
│   │   │   ├── bar.js
│   │   │   ├── baz.js
│   │   │   ├── foo.js
│   │   │   └── qux.js
│   │   └── vite.config.js
│   ├── dynamic-import-inline/
│   │   ├── __tests__/
│   │   │   └── dynamic-import-inline.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── foo.js
│   │   │   └── index.js
│   │   └── vite.config.js
│   ├── env/
│   │   ├── __tests__/
│   │   │   └── env.spec.ts
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── env-nested/
│   │   ├── __tests__/
│   │   │   └── env-nested.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── environment-react-ssr/
│   │   ├── __tests__/
│   │   │   └── environment-react-ssr.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── entry-client.tsx
│   │   │   ├── entry-server.tsx
│   │   │   └── root.tsx
│   │   ├── tsconfig.json
│   │   └── vite.config.ts
│   ├── extensions/
│   │   ├── __tests__/
│   │   │   └── extensions.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── external/
│   │   ├── __tests__/
│   │   │   └── external.spec.ts
│   │   ├── dep-that-imports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-that-requires/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── slash@3.0.0.js
│   │   ├── src/
│   │   │   ├── main.js
│   │   │   └── require-polyfill.js
│   │   └── vite.config.js
│   ├── forward-console/
│   │   ├── __test__/
│   │   │   └── forward-console.spec.ts
│   │   ├── fixtures/
│   │   │   └── throw-dep/
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── main.ts
│   │   └── vite.config.ts
│   ├── fs-serve/
│   │   ├── __tests__/
│   │   │   ├── base/
│   │   │   │   └── fs-serve-base.spec.ts
│   │   │   ├── commonTests.ts
│   │   │   ├── deny/
│   │   │   │   └── fs-serve-deny.spec.ts
│   │   │   └── fs-serve.spec.ts
│   │   ├── entry.js
│   │   ├── nested/
│   │   │   └── foo.js
│   │   ├── package.json
│   │   ├── root/
│   │   │   ├── src/
│   │   │   │   ├── code.js
│   │   │   │   ├── deny/
│   │   │   │   │   ├── .deny
│   │   │   │   │   └── deny.txt
│   │   │   │   ├── dummy.crt
│   │   │   │   ├── index.html
│   │   │   │   ├── safe.txt
│   │   │   │   ├── special characters åäö/
│   │   │   │   │   ├── safe.json
│   │   │   │   │   └── safe.txt
│   │   │   │   └── subdir/
│   │   │   │       └── safe.txt
│   │   │   ├── svgVirtualModulePlugin.ts
│   │   │   ├── unsafe.html
│   │   │   ├── unsafe.txt
│   │   │   ├── vite.config-base.js
│   │   │   ├── vite.config-deny.js
│   │   │   └── vite.config.js
│   │   ├── safe.json
│   │   ├── unsafe.html
│   │   └── unsafe.json
│   ├── glob-import/
│   │   ├── __tests__/
│   │   │   └── glob-import.spec.ts
│   │   ├── array-test-dir/
│   │   │   ├── excluded.js
│   │   │   └── included.js
│   │   ├── dir/
│   │   │   ├── alias.js
│   │   │   ├── baz.json
│   │   │   ├── foo.css
│   │   │   ├── foo.js
│   │   │   ├── index.js
│   │   │   ├── nested/
│   │   │   │   └── bar.js
│   │   │   └── quote'.js
│   │   ├── escape/
│   │   │   ├── (parenthesis)/
│   │   │   │   ├── glob.js
│   │   │   │   └── mod/
│   │   │   │       └── index.js
│   │   │   ├── [brackets]/
│   │   │   │   ├── glob.js
│   │   │   │   └── mod/
│   │   │   │       └── index.js
│   │   │   └── {curlies}/
│   │   │       ├── glob.js
│   │   │       └── mod/
│   │   │           └── index.js
│   │   ├── import-meta-glob-pkg/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── imports-path/
│   │   │   ├── bar.js
│   │   │   └── foo.js
│   │   ├── index.html
│   │   ├── no-tree-shake.css
│   │   ├── package.json
│   │   ├── pkg-pages/
│   │   │   └── foo.js
│   │   ├── side-effect/
│   │   │   ├── writedom.js
│   │   │   └── writetodom.js
│   │   ├── transform-visibility.js
│   │   ├── tree-shake.css
│   │   └── vite.config.ts
│   ├── hmr/
│   │   ├── __tests__/
│   │   │   └── hmr.spec.ts
│   │   ├── accept-exports/
│   │   │   ├── dynamic-imports/
│   │   │   │   ├── deps-all-accepted.ts
│   │   │   │   ├── deps-some-accepted.ts
│   │   │   │   ├── dynamic-imports.ts
│   │   │   │   └── index.html
│   │   │   ├── export-from/
│   │   │   │   ├── depA.ts
│   │   │   │   ├── export-from.ts
│   │   │   │   ├── hub.ts
│   │   │   │   └── index.html
│   │   │   ├── main-accepted/
│   │   │   │   ├── callback.ts
│   │   │   │   ├── dep.ts
│   │   │   │   ├── index.html
│   │   │   │   ├── main-accepted.ts
│   │   │   │   └── target.ts
│   │   │   ├── main-non-accepted/
│   │   │   │   ├── default.ts
│   │   │   │   ├── dep.ts
│   │   │   │   ├── index.html
│   │   │   │   ├── main-non-accepted.ts
│   │   │   │   └── named.ts
│   │   │   ├── reexports.bak/
│   │   │   │   ├── accept-named.ts
│   │   │   │   ├── index.html
│   │   │   │   ├── reexports.ts
│   │   │   │   └── source.ts
│   │   │   ├── side-effects/
│   │   │   │   ├── index.html
│   │   │   │   └── side-effects.ts
│   │   │   ├── star-imports/
│   │   │   │   ├── deps-all-accepted.ts
│   │   │   │   ├── deps-some-accepted.ts
│   │   │   │   ├── index.html
│   │   │   │   └── star-imports.ts
│   │   │   └── unused-exports/
│   │   │       ├── index.html
│   │   │       ├── index.ts
│   │   │       ├── unused.ts
│   │   │       └── used.ts
│   │   ├── circular/
│   │   │   ├── index.js
│   │   │   ├── mod-a.js
│   │   │   ├── mod-b.js
│   │   │   └── mod-c.js
│   │   ├── counter/
│   │   │   ├── dep.ts
│   │   │   ├── index.html
│   │   │   └── index.ts
│   │   ├── css-deps/
│   │   │   ├── dep.js
│   │   │   ├── index.html
│   │   │   └── main.css
│   │   ├── css-link/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   ├── plugin.ts
│   │   │   └── styles.css
│   │   ├── customFile.js
│   │   ├── event.d.ts
│   │   ├── file-delete-restore/
│   │   │   ├── child.js
│   │   │   ├── index.js
│   │   │   ├── parent.js
│   │   │   └── runtime.js
│   │   ├── global.css
│   │   ├── hmr.ts
│   │   ├── hmrDep.js
│   │   ├── hmrNestedDep.js
│   │   ├── importedVirtual.js
│   │   ├── importing-updated/
│   │   │   ├── a.js
│   │   │   ├── b.js
│   │   │   └── index.js
│   │   ├── index.html
│   │   ├── intermediate-file-delete/
│   │   │   ├── display.js
│   │   │   ├── index.js
│   │   │   └── re-export.js
│   │   ├── invalidation/
│   │   │   ├── child.js
│   │   │   ├── parent.js
│   │   │   └── root.js
│   │   ├── invalidation-circular-deps/
│   │   │   ├── circular-invalidate/
│   │   │   │   ├── child.js
│   │   │   │   └── parent.js
│   │   │   ├── index.js
│   │   │   └── invalidate-handled-in-circle/
│   │   │       ├── child.js
│   │   │       └── parent.js
│   │   ├── missing-file/
│   │   │   ├── index.html
│   │   │   └── main.js
│   │   ├── missing-import/
│   │   │   ├── a.js
│   │   │   ├── index.html
│   │   │   └── main.js
│   │   ├── modules.d.ts
│   │   ├── optional-chaining/
│   │   │   ├── child.js
│   │   │   └── parent.js
│   │   ├── package.json
│   │   ├── prune/
│   │   │   ├── dep1.js
│   │   │   ├── dep2.js
│   │   │   ├── dep3.js
│   │   │   └── index.js
│   │   ├── self-accept-within-circular/
│   │   │   ├── a.js
│   │   │   ├── b.js
│   │   │   ├── c.js
│   │   │   ├── index.html
│   │   │   └── index.js
│   │   ├── soft-invalidation/
│   │   │   ├── child.js
│   │   │   └── index.js
│   │   ├── unicode-path/
│   │   │   └── 中文-にほんご-한글-🌕🌖🌗/
│   │   │       └── index.html
│   │   └── vite.config.ts
│   ├── hmr-full-bundle-mode/
│   │   ├── __tests__/
│   │   │   └── hmr-full-bundle-mode.spec.ts
│   │   ├── hmr.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── vite.config.ts
│   │   ├── worker-query.js
│   │   └── worker-url.js
│   ├── hmr-root/
│   │   ├── __tests__/
│   │   │   └── hmr-root.spec.ts
│   │   ├── foo.js
│   │   ├── root/
│   │   │   └── index.html
│   │   └── vite.config.ts
│   ├── hmr-ssr/
│   │   ├── __tests__/
│   │   │   └── hmr-ssr.spec.ts
│   │   ├── accept-exports/
│   │   │   ├── dynamic-imports/
│   │   │   │   ├── deps-all-accepted.ts
│   │   │   │   ├── deps-some-accepted.ts
│   │   │   │   ├── dynamic-imports.ts
│   │   │   │   └── index.ts
│   │   │   ├── export-from/
│   │   │   │   ├── depA.ts
│   │   │   │   ├── export-from.ts
│   │   │   │   ├── hub.ts
│   │   │   │   └── index.html
│   │   │   ├── main-accepted/
│   │   │   │   ├── callback.ts
│   │   │   │   ├── dep.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── main-accepted.ts
│   │   │   │   └── target.ts
│   │   │   ├── main-non-accepted/
│   │   │   │   ├── default.ts
│   │   │   │   ├── dep.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── main-non-accepted.ts
│   │   │   │   └── named.ts
│   │   │   ├── reexports.bak/
│   │   │   │   ├── accept-named.ts
│   │   │   │   ├── index.html
│   │   │   │   ├── reexports.ts
│   │   │   │   └── source.ts
│   │   │   ├── side-effects/
│   │   │   │   ├── index.ts
│   │   │   │   └── side-effects.ts
│   │   │   ├── star-imports/
│   │   │   │   ├── deps-all-accepted.ts
│   │   │   │   ├── deps-some-accepted.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── star-imports.ts
│   │   │   └── unused-exports/
│   │   │       ├── index.html
│   │   │       ├── index.ts
│   │   │       ├── unused.ts
│   │   │       └── used.ts
│   │   ├── circular/
│   │   │   ├── index.js
│   │   │   ├── mod-a.js
│   │   │   ├── mod-b.js
│   │   │   └── mod-c.js
│   │   ├── counter/
│   │   │   ├── dep.ts
│   │   │   └── index.ts
│   │   ├── customFile.js
│   │   ├── event.d.ts
│   │   ├── file-delete-restore/
│   │   │   ├── child.js
│   │   │   ├── index.js
│   │   │   ├── parent.js
│   │   │   └── runtime.js
│   │   ├── hmr.ts
│   │   ├── hmrDep.js
│   │   ├── hmrNestedDep.js
│   │   ├── importedVirtual.js
│   │   ├── importing-updated/
│   │   │   ├── a.js
│   │   │   ├── b.js
│   │   │   └── index.js
│   │   ├── intermediate-file-delete/
│   │   │   ├── display.js
│   │   │   ├── index.js
│   │   │   └── re-export.js
│   │   ├── invalidation/
│   │   │   ├── child.js
│   │   │   └── parent.js
│   │   ├── invalidation-circular-deps/
│   │   │   ├── circular-invalidate/
│   │   │   │   ├── child.js
│   │   │   │   └── parent.js
│   │   │   ├── index.js
│   │   │   └── invalidate-handled-in-circle/
│   │   │       ├── child.js
│   │   │       └── parent.js
│   │   ├── missing-import/
│   │   │   ├── a.js
│   │   │   ├── index.js
│   │   │   └── main.js
│   │   ├── modules.d.ts
│   │   ├── non-tested/
│   │   │   ├── dep.js
│   │   │   └── index.js
│   │   ├── optional-chaining/
│   │   │   ├── child.js
│   │   │   └── parent.js
│   │   ├── package.json
│   │   ├── queries/
│   │   │   ├── index.js
│   │   │   └── multi-query.js
│   │   ├── self-accept-within-circular/
│   │   │   ├── a.js
│   │   │   ├── b.js
│   │   │   ├── c.js
│   │   │   └── index.js
│   │   ├── soft-invalidation/
│   │   │   ├── child.js
│   │   │   └── index.js
│   │   ├── unresolved.ts
│   │   └── vite.config.ts
│   ├── html/
│   │   ├── __tests__/
│   │   │   └── html.spec.ts
│   │   ├── a á.html
│   │   ├── common.css
│   │   ├── emptyAttr.html
│   │   ├── env.html
│   │   ├── foo.html
│   │   ├── importmapOrder.html
│   │   ├── index.html
│   │   ├── inline/
│   │   │   ├── common.js
│   │   │   ├── dep1.js
│   │   │   ├── dep2.js
│   │   │   ├── dep3.js
│   │   │   ├── module-graph.dot
│   │   │   ├── shared-1.html
│   │   │   ├── shared-2.html
│   │   │   ├── shared.js
│   │   │   ├── shared_a.html
│   │   │   ├── unique.html
│   │   │   └── unique.js
│   │   ├── invalid.html
│   │   ├── invalidClick.html
│   │   ├── invalidEscape.html
│   │   ├── link-props/
│   │   │   ├── index.html
│   │   │   ├── print.css
│   │   │   └── screen.css
│   │   ├── link.html
│   │   ├── main.css
│   │   ├── main.js
│   │   ├── malformed-url.html
│   │   ├── nested/
│   │   │   ├── asset/
│   │   │   │   ├── main.js
│   │   │   │   └── style.css
│   │   │   ├── index.html
│   │   │   ├── nested.css
│   │   │   └── nested.js
│   │   ├── noBody.html
│   │   ├── noHead.html
│   │   ├── package.json
│   │   ├── relative-input/
│   │   │   └── main.js
│   │   ├── relative-input.html
│   │   ├── scriptAsync.html
│   │   ├── scriptMixed.html
│   │   ├── serve/
│   │   │   ├── both/
│   │   │   │   └── index.html
│   │   │   ├── both.html
│   │   │   ├── file.html
│   │   │   └── folder/
│   │   │       └── index.html
│   │   ├── shared.js
│   │   ├── side-effects/
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── sideEffects.js
│   │   ├── test.js
│   │   ├── transform-inline-js.html
│   │   ├── unicode-path/
│   │   │   └── 中文-にほんご-한글-🌕🌖🌗/
│   │   │       └── index.html
│   │   ├── valid.html
│   │   ├── valid.js
│   │   ├── vite.config.js
│   │   ├── warmup/
│   │   │   └── warm.js
│   │   ├── write.html
│   │   └── zeroJS.html
│   ├── import-assertion/
│   │   ├── __tests__/
│   │   │   └── import-assertion.spec.ts
│   │   ├── data.json
│   │   ├── import-assertion-dep/
│   │   │   ├── data.json
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   └── package.json
│   ├── js-sourcemap/
│   │   ├── __tests__/
│   │   │   └── js-sourcemap.spec.ts
│   │   ├── after-preload-dynamic-hashbang.js
│   │   ├── after-preload-dynamic-no-dep.js
│   │   ├── after-preload-dynamic.js
│   │   ├── bar.ts
│   │   ├── dynamic/
│   │   │   ├── dynamic-foo.css
│   │   │   ├── dynamic-foo.js
│   │   │   └── dynamic-no-dep.js
│   │   ├── foo-with-sourcemap-plugin.ts
│   │   ├── foo-with-sourcemap.js
│   │   ├── foo.js
│   │   ├── importee-pkg/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── plugin-foo.js
│   │   ├── test-ssr-dev.js
│   │   ├── vite.config.js
│   │   ├── with-define-object-ssr.ts
│   │   ├── with-define-object.ts
│   │   ├── with-multiline-import.ts
│   │   ├── zoo-with-sourcemap-plugin.ts
│   │   └── zoo.js
│   ├── json/
│   │   ├── __tests__/
│   │   │   └── csr/
│   │   │       └── json-csr.spec.ts
│   │   ├── dep-json-require/
│   │   │   ├── content.json
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── hmr.json
│   │   ├── index.html
│   │   ├── json-bom/
│   │   │   └── has-bom.json
│   │   ├── json-module/
│   │   │   ├── index.json
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── public.json
│   │   └── test.json
│   ├── legacy/
│   │   ├── __tests__/
│   │   │   ├── client-and-ssr/
│   │   │   │   ├── legacy-client-legacy-ssr-sequential-builds.spec.ts
│   │   │   │   └── serve.ts
│   │   │   ├── legacy.spec.ts
│   │   │   ├── no-polyfills/
│   │   │   │   └── legacy-no-polyfills.spec.ts
│   │   │   ├── no-polyfills-no-systemjs/
│   │   │   │   └── legacy-no-polyfills-no-systemjs.spec.ts
│   │   │   ├── ssr/
│   │   │   │   ├── legacy-ssr.spec.ts
│   │   │   │   └── serve.ts
│   │   │   └── watch/
│   │   │       └── legacy-styles-only-entry-watch.spec.ts
│   │   ├── async.js
│   │   ├── custom0.js
│   │   ├── custom1.js
│   │   ├── custom2.js
│   │   ├── dynamic.css
│   │   ├── entry-server-sequential.js
│   │   ├── entry-server.js
│   │   ├── immutable-chunk.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── module.js
│   │   ├── nested/
│   │   │   └── index.html
│   │   ├── no-polyfills-no-systemjs.html
│   │   ├── no-polyfills-no-systemjs.js
│   │   ├── no-polyfills.html
│   │   ├── no-polyfills.js
│   │   ├── package.json
│   │   ├── style-only-entry.css
│   │   ├── style.css
│   │   ├── vite.config-custom-filename.js
│   │   ├── vite.config-multiple-output.js
│   │   ├── vite.config-no-polyfills-no-systemjs.js
│   │   ├── vite.config-no-polyfills.js
│   │   ├── vite.config-watch.js
│   │   ├── vite.config.js
│   │   └── worker.js
│   ├── lib/
│   │   ├── __tests__/
│   │   │   ├── lib.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.dist.html
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── css-entry-1.js
│   │   │   ├── css-entry-2.js
│   │   │   ├── dynamic.css
│   │   │   ├── entry-1.css
│   │   │   ├── entry-2.css
│   │   │   ├── index.css
│   │   │   ├── main-helpers-injection.js
│   │   │   ├── main-multiple-output.js
│   │   │   ├── main-named.js
│   │   │   ├── main.js
│   │   │   ├── main2.js
│   │   │   ├── message.js
│   │   │   └── sub-multiple-output.js
│   │   ├── vite.config.js
│   │   ├── vite.css-code-split.config.js
│   │   ├── vite.css-multi-entry.config.js
│   │   ├── vite.css-single-entry.config.js
│   │   ├── vite.dyimport.config.js
│   │   ├── vite.helpers-injection.config.js
│   │   ├── vite.multiple-output.config.js
│   │   ├── vite.named-exports.config.js
│   │   ├── vite.nominify.config.js
│   │   └── vite.terser.config.js
│   ├── minify/
│   │   ├── __tests__/
│   │   │   └── minify.spec.ts
│   │   ├── dir/
│   │   │   └── module/
│   │   │       ├── index.css
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── test.css
│   │   └── vite.config.js
│   ├── module-graph/
│   │   ├── __tests__/
│   │   │   └── module-graph.spec.ts
│   │   ├── empty.js
│   │   ├── imported-urls-order.js
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.ts
│   ├── multiple-entrypoints/
│   │   ├── __tests__/
│   │   │   └── multiple-entrypoints.spec.ts
│   │   ├── deps.json
│   │   ├── dynamic-a.js
│   │   ├── dynamic-b.js
│   │   ├── entrypoints/
│   │   │   ├── a0.js
│   │   │   ├── a1.js
│   │   │   ├── a10.js
│   │   │   ├── a11.js
│   │   │   ├── a12.js
│   │   │   ├── a13.js
│   │   │   ├── a14.js
│   │   │   ├── a15.js
│   │   │   ├── a16.js
│   │   │   ├── a17.js
│   │   │   ├── a18.js
│   │   │   ├── a19.js
│   │   │   ├── a2.js
│   │   │   ├── a20.js
│   │   │   ├── a21.js
│   │   │   ├── a22.js
│   │   │   ├── a23.js
│   │   │   ├── a24.js
│   │   │   ├── a3.js
│   │   │   ├── a4.js
│   │   │   ├── a5.js
│   │   │   ├── a6.js
│   │   │   ├── a7.js
│   │   │   ├── a8.js
│   │   │   └── a9.js
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── reference.js
│   │   ├── reference.scss
│   │   └── vite.config.js
│   ├── nested-deps/
│   │   ├── __tests__/
│   │   │   └── nested-deps.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── test-package-a/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── test-package-b/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── test-package-c/
│   │   │   ├── index-es.js
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── side.js
│   │   ├── test-package-d/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── test-package-d-nested/
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── test-package-e/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   ├── test-package-e-excluded/
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   └── test-package-e-included/
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── test-package-f/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   └── vite.config.js
│   ├── object-hooks/
│   │   ├── __tests__/
│   │   │   └── object-hooks.spec.ts
│   │   ├── index.html
│   │   ├── main.ts
│   │   ├── package.json
│   │   └── vite.config.ts
│   ├── optimize-deps/
│   │   ├── .hidden-dir/
│   │   │   └── foo.js
│   │   ├── __tests__/
│   │   │   └── optimize-deps.spec.ts
│   │   ├── added-in-entries/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── cjs-dynamic.js
│   │   ├── cjs.js
│   │   ├── dedupe.js
│   │   ├── dep-alias-using-absolute-path/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-browser-field/
│   │   │   ├── index.js
│   │   │   ├── lib/
│   │   │   │   ├── adapters/
│   │   │   │   │   ├── http.js
│   │   │   │   │   └── xhr.js
│   │   │   │   └── axios.js
│   │   │   └── package.json
│   │   ├── dep-cjs-browser-field-bare/
│   │   │   ├── events-shim.js
│   │   │   ├── index.js
│   │   │   ├── internal.js
│   │   │   └── package.json
│   │   ├── dep-cjs-compiled-from-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-compiled-from-esm/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-css-main-field/
│   │   │   ├── package.json
│   │   │   └── style.css
│   │   ├── dep-cjs-external-package-omit-js-suffix/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   ├── test.astro.js
│   │   │   ├── test.okay.js
│   │   │   ├── test.scss.js
│   │   │   └── test.tsx.js
│   │   ├── dep-cjs-require-css-main-field/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-with-assets/
│   │   │   ├── foo.css
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-with-es-module-flag/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-cjs-with-external-deps/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-css-require/
│   │   │   ├── index.cjs
│   │   │   ├── mod.cjs
│   │   │   ├── mod.module.css
│   │   │   ├── package.json
│   │   │   └── style.css
│   │   ├── dep-esbuild-plugin-transform/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-esm-dummy-node-builtin/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-esm-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-incompatible/
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── sub.js
│   │   ├── dep-linked/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-linked-include/
│   │   │   ├── Test.vue
│   │   │   ├── foo.js
│   │   │   ├── index.mjs
│   │   │   ├── package.json
│   │   │   └── test.css
│   │   ├── dep-node-env/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-non-optimized/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-not-js/
│   │   │   ├── foo.js
│   │   │   ├── index.notjs
│   │   │   └── package.json
│   │   ├── dep-optimize-exports-with-glob/
│   │   │   ├── glob/
│   │   │   │   ├── bar.js
│   │   │   │   ├── foo.js
│   │   │   │   └── nested/
│   │   │   │       └── baz.js
│   │   │   ├── index.js
│   │   │   ├── named.js
│   │   │   └── package.json
│   │   ├── dep-optimize-exports-with-root-glob/
│   │   │   ├── dir/
│   │   │   │   └── file2.js
│   │   │   ├── file1.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-optimize-with-glob/
│   │   │   ├── glob/
│   │   │   │   ├── bar.js
│   │   │   │   ├── foo.js
│   │   │   │   └── nested/
│   │   │   │       └── baz.js
│   │   │   ├── index.js
│   │   │   ├── named.js
│   │   │   └── package.json
│   │   ├── dep-relative-to-main/
│   │   │   ├── entry.js
│   │   │   ├── lib/
│   │   │   │   └── main.js
│   │   │   └── package.json
│   │   ├── dep-source-map-no-sources/
│   │   │   ├── all.js
│   │   │   ├── package.json
│   │   │   └── sub.js
│   │   ├── dep-with-asset-ext/
│   │   │   ├── dep1/
│   │   │   │   ├── index.mjs
│   │   │   │   └── package.json
│   │   │   └── dep2/
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── dep-with-assets/
│   │   │   ├── index.js
│   │   │   ├── nested/
│   │   │   │   └── index.js
│   │   │   ├── package.json
│   │   │   └── worker.js
│   │   ├── dep-with-builtin-module-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-builtin-module-esm/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-dynamic-import/
│   │   │   ├── dynamic.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-optional-peer-dep/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-optional-peer-dep-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-optional-peer-dep-submodule/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-with-plus-subpath/
│   │   │   ├── core+feature.js
│   │   │   └── package.json
│   │   ├── dynamic-use-dep-alias-using-absolute-path.js
│   │   ├── generics.vue
│   │   ├── glob/
│   │   │   └── foo.js
│   │   ├── index.astro
│   │   ├── index.html
│   │   ├── long-file-name.js
│   │   ├── longfilename/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-exclude/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-include/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── non-optimizable-include/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── unused-split-entry.js
│   │   └── vite.config.js
│   ├── optimize-deps-no-discovery/
│   │   ├── __tests__/
│   │   │   └── optimize-deps-no-discovery.spec.ts
│   │   ├── dep-no-discovery/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── optimize-missing-deps/
│   │   ├── __test__/
│   │   │   ├── optimize-missing-deps.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── missing-dep/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── multi-entry-dep/
│   │   │   ├── index.browser.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   └── server.js
│   ├── package.json
│   ├── preload/
│   │   ├── __tests__/
│   │   │   ├── preload-disabled/
│   │   │   │   └── preload-disabled.spec.ts
│   │   │   ├── preload.spec.ts
│   │   │   └── resolve-deps/
│   │   │       └── preload-resolve-deps.spec.ts
│   │   ├── dep-a/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dep-including-a/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── preloaded.js
│   │   ├── src/
│   │   │   ├── about.js
│   │   │   ├── chunk.js
│   │   │   ├── hello.js
│   │   │   ├── hello.module.css
│   │   │   └── main.js
│   │   ├── vite.config-preload-disabled.js
│   │   ├── vite.config-resolve-deps.js
│   │   └── vite.config.ts
│   ├── preserve-symlinks/
│   │   ├── __tests__/
│   │   │   └── preserve-symlinks.spec.ts
│   │   ├── index.html
│   │   ├── module-a/
│   │   │   ├── package.json
│   │   │   └── src/
│   │   │       ├── data.js
│   │   │       └── index.js
│   │   ├── package.json
│   │   └── src/
│   │       └── main.js
│   ├── proxy-bypass/
│   │   ├── __tests__/
│   │   │   └── proxy-bypass.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── proxy-hmr/
│   │   ├── __tests__/
│   │   │   ├── proxy-hmr.spec.ts
│   │   │   └── serve.ts
│   │   ├── index.html
│   │   ├── other-app/
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── package.json
│   │   └── vite.config.js
│   ├── resolve/
│   │   ├── __tests__/
│   │   │   ├── mainfields-custom-first/
│   │   │   │   └── resolve-mainfields-custom-first.spec.ts
│   │   │   └── resolve.spec.ts
│   │   ├── absolute.js
│   │   ├── browser-field/
│   │   │   ├── bare-import.js
│   │   │   ├── multiple.dot.path.js
│   │   │   ├── no-ext-index/
│   │   │   │   └── index.js
│   │   │   ├── no-ext.js
│   │   │   ├── not-browser.js
│   │   │   ├── out/
│   │   │   │   ├── cjs.node.js
│   │   │   │   └── esm.browser.js
│   │   │   ├── package.json
│   │   │   └── relative.js
│   │   ├── browser-field-bare-import-fail/
│   │   │   ├── main.js
│   │   │   ├── module.js
│   │   │   └── package.json
│   │   ├── browser-field-bare-import-success/
│   │   │   ├── main.js
│   │   │   ├── module.js
│   │   │   └── package.json
│   │   ├── browser-module-field1/
│   │   │   ├── index.js
│   │   │   ├── index.web.js
│   │   │   └── package.json
│   │   ├── config-dep.cjs
│   │   ├── custom-browser-main-field/
│   │   │   ├── index.browser.js
│   │   │   ├── index.custom.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── custom-condition/
│   │   │   ├── index.custom.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── custom-ext.es
│   │   ├── custom-main-field/
│   │   │   ├── index.custom.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── dir/
│   │   │   └── index.js
│   │   ├── dir-with-ext/
│   │   │   └── index.js
│   │   ├── dir-with-ext.js/
│   │   │   └── empty
│   │   ├── dir.js
│   │   ├── drive-relative.js
│   │   ├── exact-extension/
│   │   │   ├── file.js
│   │   │   ├── file.js.js
│   │   │   └── file.json.js
│   │   ├── exports-and-nested-scope/
│   │   │   ├── index.js
│   │   │   ├── nested-scope/
│   │   │   │   ├── file.js
│   │   │   │   └── package.json
│   │   │   └── package.json
│   │   ├── exports-env/
│   │   │   ├── browser.js
│   │   │   ├── browser.mjs
│   │   │   ├── browser.prod.mjs
│   │   │   ├── fallback.umd.js
│   │   │   └── package.json
│   │   ├── exports-from-root/
│   │   │   ├── file.js
│   │   │   ├── index.js
│   │   │   ├── nested/
│   │   │   │   ├── file.js
│   │   │   │   └── package.json
│   │   │   └── package.json
│   │   ├── exports-legacy-fallback/
│   │   │   ├── dir/
│   │   │   │   ├── index.js
│   │   │   │   ├── index.mjs
│   │   │   │   └── package.json
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── exports-path/
│   │   │   ├── cjs.js
│   │   │   ├── deep.js
│   │   │   ├── deep.json
│   │   │   ├── dir/
│   │   │   │   └── dir.js
│   │   │   ├── main.js
│   │   │   └── package.json
│   │   ├── exports-with-module/
│   │   │   ├── import.mjs
│   │   │   ├── module.mjs
│   │   │   └── package.json
│   │   ├── exports-with-module-condition/
│   │   │   ├── index.esm.js
│   │   │   ├── index.js
│   │   │   ├── index.mjs
│   │   │   └── package.json
│   │   ├── exports-with-module-condition-required/
│   │   │   ├── index.cjs
│   │   │   └── package.json
│   │   ├── file-url.js
│   │   ├── imports-path/
│   │   │   ├── .dot-prefixed/
│   │   │   │   └── index.js
│   │   │   ├── importer.js
│   │   │   ├── nested-path.js
│   │   │   ├── other-pkg/
│   │   │   │   ├── nest/
│   │   │   │   │   └── index.js
│   │   │   │   └── package.json
│   │   │   ├── query.json
│   │   │   ├── root-slash/
│   │   │   │   └── index.js
│   │   │   ├── same-level.js
│   │   │   ├── slash/
│   │   │   │   └── index.js
│   │   │   ├── star/
│   │   │   │   └── index.js
│   │   │   └── top-level.js
│   │   ├── index.html
│   │   ├── inline-package/
│   │   │   ├── inline.js
│   │   │   └── package.json
│   │   ├── non-normalized.js
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── should-not-be-copied
│   │   ├── sharp-dir/
│   │   │   ├── index.cjs
│   │   │   └── package.json
│   │   ├── sharp-dir-nested/
│   │   │   ├── #/
│   │   │   │   └── index.cjs
│   │   │   ├── index.cjs
│   │   │   └── package.json
│   │   ├── side-effects-glob/
│   │   │   ├── effects/
│   │   │   │   └── file.js
│   │   │   ├── index.js
│   │   │   ├── no-effect.js
│   │   │   └── package.json
│   │   ├── style.css
│   │   ├── ts-extension/
│   │   │   ├── hello.ts
│   │   │   ├── hellocjs.cts
│   │   │   ├── hellojsx.tsx
│   │   │   ├── hellomjs.mts
│   │   │   ├── hellotsx.tsx
│   │   │   ├── index-js.js
│   │   │   └── index.ts
│   │   ├── utf8-bom/
│   │   │   └── main.js
│   │   ├── utf8-bom-package/
│   │   │   ├── index.mjs
│   │   │   └── package.json
│   │   ├── util/
│   │   │   ├── bar.util.js
│   │   │   └── index.js
│   │   ├── vite.config-mainfields-custom-first.js
│   │   └── vite.config.js
│   ├── resolve-linked/
│   │   ├── dep.js
│   │   ├── package.json
│   │   └── src/
│   │       └── index.js
│   ├── resolve-tsconfig-paths/
│   │   ├── __tests__/
│   │   │   └── resolve.spec.ts
│   │   ├── fallback/
│   │   │   └── fallback.js
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── imported.js
│   │   │   ├── js.js
│   │   │   ├── nested/
│   │   │   │   ├── a-imported.ts
│   │   │   │   ├── a.ts
│   │   │   │   ├── b-imported.ts
│   │   │   │   ├── b.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── tsconfig.a.json
│   │   │   │   ├── tsconfig.b.json
│   │   │   │   └── tsconfig.json
│   │   │   └── ts.ts
│   │   ├── tsconfig.json
│   │   └── vite.config.js
│   ├── self-referencing/
│   │   ├── index.js
│   │   ├── package.json
│   │   └── test/
│   │       └── index.js
│   ├── shims.d.ts
│   ├── ssr/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   ├── app.js
│   │   │   ├── circular-dep-init/
│   │   │   │   ├── README.md
│   │   │   │   ├── circular-dep-init.js
│   │   │   │   ├── module-a.js
│   │   │   │   └── module-b.js
│   │   │   ├── circular-import/
│   │   │   │   ├── a.js
│   │   │   │   ├── b.js
│   │   │   │   └── index.js
│   │   │   ├── circular-import2/
│   │   │   │   ├── a.js
│   │   │   │   ├── b.js
│   │   │   │   └── index.js
│   │   │   ├── forked-deadlock/
│   │   │   │   ├── README.md
│   │   │   │   ├── common-module.js
│   │   │   │   ├── deadlock-fuse-module.js
│   │   │   │   ├── dynamic-imports/
│   │   │   │   │   ├── common-module.js
│   │   │   │   │   ├── deadlock-fuse-module.js
│   │   │   │   │   ├── fuse-stuck-bridge-module.js
│   │   │   │   │   ├── middle-module.js
│   │   │   │   │   └── stuck-module.js
│   │   │   │   ├── fuse-stuck-bridge-module.js
│   │   │   │   ├── middle-module.js
│   │   │   │   └── stuck-module.js
│   │   │   └── utils.js
│   │   └── vite.config.ts
│   ├── ssr-alias/
│   │   ├── __tests__/
│   │   │   └── ssr-alias.spec.ts
│   │   ├── alias-original/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── alias-process.js
│   │   │   ├── alias-replaced.js
│   │   │   └── main.js
│   │   └── vite.config.js
│   ├── ssr-conditions/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-conditions.spec.ts
│   │   ├── external/
│   │   │   ├── browser.js
│   │   │   ├── default.js
│   │   │   ├── edge.js
│   │   │   ├── node.js
│   │   │   ├── node.unbundled.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── no-external/
│   │   │   ├── browser.js
│   │   │   ├── default.js
│   │   │   ├── edge.js
│   │   │   ├── node.js
│   │   │   ├── node.unbundled.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   └── app.js
│   │   └── vite.config.js
│   ├── ssr-deps/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-deps.spec.ts
│   │   ├── css-lib/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── define-properties-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── define-property-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── external-entry/
│   │   │   ├── entry.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── external-using-external-entry/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── forwarded-export/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── import-builtin-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.html
│   │   ├── linked-no-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── message
│   │   ├── module-condition/
│   │   │   ├── import.mjs
│   │   │   ├── module.js
│   │   │   └── package.json
│   │   ├── nested-exclude/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-external-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── nested-include/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── no-external-cjs/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── no-external-css/
│   │   │   ├── index.css
│   │   │   └── package.json
│   │   ├── non-optimized-with-nested-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── object-assigned-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── only-object-assigned-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── optimized-cjs-with-nested-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── optimized-with-nested-external/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── pkg-exports/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── primitive-export/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── read-file-content/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── require-absolute/
│   │   │   ├── foo.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   ├── app.js
│   │   │   ├── isomorphic-module-browser.js
│   │   │   └── isomorphic-module-server.js
│   │   └── ts-transpiled-exports/
│   │       ├── index.js
│   │       └── package.json
│   ├── ssr-html/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-html.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── slash@3.0.0.js
│   │   ├── server.js
│   │   ├── src/
│   │   │   ├── app.js
│   │   │   ├── error-js.js
│   │   │   ├── error-ts.ts
│   │   │   ├── has-error-deep.ts
│   │   │   ├── importedVirtual.js
│   │   │   └── network-imports.js
│   │   ├── test-network-imports.js
│   │   ├── test-stacktrace-runtime.js
│   │   └── test-stacktrace.js
│   ├── ssr-noexternal/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-noexternal.spec.ts
│   │   ├── external-cjs/
│   │   │   ├── import.mjs
│   │   │   ├── package.json
│   │   │   └── require.cjs
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── require-external-cjs/
│   │   │   ├── main.js
│   │   │   └── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   └── entry-server.js
│   │   └── vite.config.js
│   ├── ssr-pug/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-pug.spec.ts
│   │   ├── index.pug
│   │   ├── package.json
│   │   ├── server.js
│   │   └── src/
│   │       └── app.js
│   ├── ssr-resolve/
│   │   ├── __tests__/
│   │   │   └── ssr-resolve.spec.ts
│   │   ├── deep-import/
│   │   │   ├── bar/
│   │   │   │   └── package.json
│   │   │   ├── foo/
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── utils/
│   │   │       └── bar.js
│   │   ├── entries/
│   │   │   ├── dir/
│   │   │   │   └── index.js
│   │   │   ├── file.js
│   │   │   └── package.json
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── pkg-exports/
│   │   │   ├── entry.js
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── pkg-module-sync/
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── util.js
│   │   └── vite.config.js
│   ├── ssr-wasm/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-wasm.spec.ts
│   │   ├── package.json
│   │   ├── server.js
│   │   ├── src/
│   │   │   ├── app.js
│   │   │   ├── heavy.wasm
│   │   │   ├── light.wasm
│   │   │   ├── static-heavy.js
│   │   │   └── static-light.js
│   │   └── vite.config.ts
│   ├── ssr-webworker/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── ssr-webworker.spec.ts
│   │   ├── browser-exports/
│   │   │   ├── browser.js
│   │   │   ├── node.js
│   │   │   └── package.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── dynamic.js
│   │   │   └── entry-worker.jsx
│   │   ├── vite.config.js
│   │   ├── worker-exports/
│   │   │   ├── browser.js
│   │   │   ├── node.js
│   │   │   ├── package.json
│   │   │   └── worker.js
│   │   └── worker.js
│   ├── tailwind/
│   │   ├── __test__/
│   │   │   └── tailwind.spec.ts
│   │   ├── index.css
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── components/
│   │   │   │   └── component1.js
│   │   │   ├── main.js
│   │   │   └── views/
│   │   │       └── view1.js
│   │   ├── tailwind.config.ts
│   │   └── vite.config.ts
│   ├── tailwind-sourcemap/
│   │   ├── __tests__/
│   │   │   └── tailwind-sourcemap.spec.ts
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── postcss.config.js
│   │   ├── tailwind.css
│   │   └── vite.config.js
│   ├── tailwind-v3/
│   │   ├── __test__/
│   │   │   └── tailwind-v3.spec.ts
│   │   ├── index.css
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── postcss.config.js
│   │   ├── src/
│   │   │   ├── components/
│   │   │   │   └── component1.js
│   │   │   ├── main.js
│   │   │   └── views/
│   │   │       └── view1.js
│   │   ├── tailwind.config.ts
│   │   └── vite.config.ts
│   ├── test-utils.ts
│   ├── transform-plugin/
│   │   ├── __tests__/
│   │   │   ├── base/
│   │   │   │   └── transform-plugin.spec.ts
│   │   │   ├── tests.ts
│   │   │   └── transform-plugin.spec.ts
│   │   ├── foo.json
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── plugin-dep-load.js
│   │   ├── plugin-dep.js
│   │   ├── vite.config-base.js
│   │   └── vite.config.js
│   ├── tsconfig-json/
│   │   ├── __tests__/
│   │   │   └── tsconfig-json.spec.ts
│   │   ├── index.html
│   │   ├── nested/
│   │   │   ├── main.ts
│   │   │   ├── not-used-type.ts
│   │   │   └── tsconfig.json
│   │   ├── nested-with-extends/
│   │   │   ├── main.ts
│   │   │   ├── not-used-type.ts
│   │   │   └── tsconfig.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── decorator.ts
│   │   │   ├── main.ts
│   │   │   └── not-used-type.ts
│   │   └── tsconfig.json
│   ├── tsconfig-json-load-error/
│   │   ├── __tests__/
│   │   │   ├── serve.ts
│   │   │   └── tsconfig-json-load-error.spec.ts
│   │   ├── has-error/
│   │   │   ├── main.ts
│   │   │   └── tsconfig.json
│   │   ├── index.html
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── main.ts
│   │   └── tsconfig.json
│   ├── tsconfig.json
│   ├── vitestGlobalSetup.ts
│   ├── vitestSetup.ts
│   ├── wasm/
│   │   ├── __tests__/
│   │   │   └── wasm.spec.ts
│   │   ├── add.wasm
│   │   ├── heavy.wasm
│   │   ├── index.html
│   │   ├── light.wasm
│   │   ├── package.json
│   │   ├── vite.config.ts
│   │   └── worker.js
│   └── worker/
│       ├── __tests__/
│       │   ├── es/
│       │   │   └── worker-es.spec.ts
│       │   ├── iife/
│       │   │   └── worker-iife.spec.ts
│       │   ├── relative-base/
│       │   │   └── worker-relative-base.spec.ts
│       │   ├── relative-base-iife/
│       │   │   └── worker-relative-base-iife.spec.ts
│       │   ├── sourcemap/
│       │   │   └── worker-sourcemap.spec.ts
│       │   ├── sourcemap-hidden/
│       │   │   └── worker-sourcemap-hidden.spec.ts
│       │   └── sourcemap-inline/
│       │       └── worker-sourcemap-inline.spec.ts
│       ├── classic-esm.js
│       ├── classic-shared-worker.js
│       ├── classic-worker.js
│       ├── deeply-nested-second-worker.js
│       ├── deeply-nested-third-worker.js
│       ├── deeply-nested-worker.js
│       ├── dep-cjs/
│       │   ├── index.cjs
│       │   └── package.json
│       ├── dep-cjs-with-json/
│       │   ├── data.json
│       │   └── importer.cjs
│       ├── dep-self-reference-url-worker/
│       │   ├── index.js
│       │   ├── package.json
│       │   └── worker.js
│       ├── dep-to-optimize/
│       │   ├── index.js
│       │   └── package.json
│       ├── emit-chunk-dynamic-import-worker.js
│       ├── emit-chunk-nested-worker.js
│       ├── emit-chunk-sub-worker.js
│       ├── importMetaGlob.worker.js
│       ├── importMetaGlobEager.worker.js
│       ├── index.html
│       ├── module-and-worker.js
│       ├── modules/
│       │   ├── module0.js
│       │   ├── module1.js
│       │   ├── module2.js
│       │   ├── module3.js
│       │   ├── test-plugin.js
│       │   └── workerImport.ts
│       ├── my-inline-shared-worker.ts
│       ├── my-shared-worker.ts
│       ├── my-worker.ts
│       ├── package.json
│       ├── possible-ts-output-worker.mjs
│       ├── public/
│       │   └── classic.js
│       ├── self-reference-url-worker.js
│       ├── self-reference-worker.js
│       ├── simple-worker.js
│       ├── sub-worker.js
│       ├── url-shared-worker.js
│       ├── url-worker.js
│       ├── vite.config-es.js
│       ├── vite.config-iife.js
│       ├── vite.config-relative-base-iife.js
│       ├── vite.config-relative-base.js
│       ├── vite.config-sourcemap-hidden.js
│       ├── vite.config-sourcemap-inline.js
│       ├── vite.config-sourcemap.js
│       ├── worker/
│       │   ├── main-classic.js
│       │   ├── main-deeply-nested.js
│       │   ├── main-format-es.js
│       │   ├── main-module.js
│       │   ├── main-url.js
│       │   └── main.js
│       ├── worker-nested-worker.js
│       ├── worker-plugin-test-plugin.js
│       ├── worker-require-json.js
│       └── worker-sourcemap-config.js
├── pnpm-workspace.yaml
├── scripts/
│   ├── docs-check.sh
│   ├── mergeChangelog.ts
│   ├── publishCI.ts
│   ├── release.ts
│   ├── releaseUtils.ts
│   └── tsconfig.json
├── vitest.config.e2e.ts
└── vitest.config.ts
Download .txt
SYMBOL INDEX (2250 symbols across 476 files)

FILE: docs/.vitepress/config.ts
  function inlineScript (line 78) | function inlineScript(file: string): HeadConfig {
  method transformHead (line 497) | transformHead(ctx) {
  method root (line 533) | root(hast) {
  method config (line 550) | async config(md) {

FILE: docs/.vitepress/inlined-scripts/banner.d.ts
  type Window (line 1) | interface Window {

FILE: docs/.vitepress/theme/composables/sponsor.ts
  type Sponsors (line 10) | interface Sponsors {
  function toggleDarkLogos (line 51) | function toggleDarkLogos() {
  function useSponsor (line 66) | function useSponsor() {
  function mapSponsors (line 96) | function mapSponsors(sponsors: Sponsors): SponsorTier[] {
  function mapImgPath (line 125) | function mapImgPath(sponsors: Sponsor[]) {

FILE: docs/.vitepress/theme/index.ts
  method Layout (line 17) | Layout() {
  method enhanceApp (line 22) | enhanceApp(ctx: any) {

FILE: docs/.vitepress/theme/live/useYoutubePlayer.ts
  type YoutubeState (line 3) | type YoutubeState = 'play' | 'pause' | 'end' | 'buffer' | 'unstarted' | ...
  type YoutubePlayerState (line 5) | interface YoutubePlayerState {
  constant STATE_BY_CODE (line 9) | const STATE_BY_CODE: Record<number, YoutubeState> = {

FILE: docs/_data/acknowledgements.data.ts
  type PackageJson (line 59) | interface PackageJson {
  type Dependency (line 74) | interface Dependency {
  type PastDependency (line 84) | interface PastDependency {
  type AuthorPackage (line 90) | interface AuthorPackage {
  type Author (line 95) | interface Author {
  type AcknowledgementsData (line 102) | interface AcknowledgementsData {
  function parseBundledDependenciesFromLicense (line 113) | function parseBundledDependenciesFromLicense(licensePath: string): strin...
  function normalizeRepository (line 128) | function normalizeRepository(
  function normalizeFunding (line 161) | function normalizeFunding(funding: PackageJson['funding']): string | und...
  function parseAuthor (line 172) | function parseAuthor(author: PackageJson['author']): {
  function readPackageInfo (line 195) | function readPackageInfo(
  function groupByAuthor (line 221) | function groupByAuthor(dependencies: Dependency[]): Author[] {
  function loadData (line 266) | function loadData(): AcknowledgementsData {
  method load (line 316) | load(): AcknowledgementsData {

FILE: docs/_data/blog.data.ts
  type Post (line 3) | interface Post {
  method transform (line 17) | transform(raw): Post[] {
  function formatDate (line 30) | function formatDate(raw: string): Post['date'] {

FILE: packages/create-vite/__tests__/cli.spec.ts
  constant CLI_PATH (line 7) | const CLI_PATH = path.join(import.meta.dirname, '..')

FILE: packages/create-vite/src/index.ts
  type ColorFunc (line 61) | type ColorFunc = (str: string | number) => string
  type Framework (line 62) | type Framework = {
  type FrameworkVariant (line 68) | type FrameworkVariant = {
  constant FRAMEWORKS (line 76) | const FRAMEWORKS: Framework[] = [
  constant TEMPLATES (line 385) | const TEMPLATES = FRAMEWORKS.map((f) => f.variants.map((v) => v.name)).r...
  function run (line 396) | function run([command, ...args]: string[], options?: SpawnOptions) {
  function install (line 409) | function install(root: string, agent: string) {
  function start (line 423) | function start(root: string, agent: string) {
  function init (line 435) | async function init() {
  function formatTargetDir (line 700) | function formatTargetDir(targetDir: string) {
  function copy (line 707) | function copy(src: string, dest: string) {
  function isValidPackageName (line 716) | function isValidPackageName(projectName: string) {
  function toValidPackageName (line 722) | function toValidPackageName(projectName: string) {
  function copyDir (line 731) | function copyDir(srcDir: string, destDir: string) {
  function isEmpty (line 740) | function isEmpty(path: string) {
  function emptyDir (line 745) | function emptyDir(dir: string) {
  type PkgInfo (line 757) | interface PkgInfo {
  function pkgFromUserAgent (line 762) | function pkgFromUserAgent(userAgent: string | undefined): PkgInfo | unde...
  function setupReactCompiler (line 772) | function setupReactCompiler(root: string, isTs: boolean) {
  function updateReactCompilerReadme (line 822) | function updateReactCompilerReadme(root: string, newBody: string) {
  function editFile (line 838) | function editFile(file: string, callback: (content: string) => string) {
  function getFullCustomCommand (line 843) | function getFullCustomCommand(customCommand: string, pkgInfo?: PkgInfo) {
  function getLabel (line 894) | function getLabel(variant: FrameworkVariant) {
  function getInstallCommand (line 904) | function getInstallCommand(agent: string) {
  function getRunCommand (line 911) | function getRunCommand(agent: string, script: string) {

FILE: packages/create-vite/template-lit-ts/src/my-element.ts
  class MyElement (line 14) | class MyElement extends LitElement {
    method render (line 21) | render() {
    method _onClick (line 113) | private _onClick() {
  type HTMLElementTagNameMap (line 430) | interface HTMLElementTagNameMap {

FILE: packages/create-vite/template-lit/src/my-element.js
  class MyElement (line 12) | class MyElement extends LitElement {
    method properties (line 13) | static get properties() {
    method constructor (line 22) | constructor() {
    method render (line 27) | render() {
    method _onClick (line 119) | _onClick() {
    method styles (line 123) | static get styles() {

FILE: packages/create-vite/template-preact-ts/src/app.tsx
  function App (line 7) | function App() {

FILE: packages/create-vite/template-preact/src/app.jsx
  function App (line 7) | function App() {

FILE: packages/create-vite/template-react-ts/src/App.tsx
  function App (line 7) | function App() {

FILE: packages/create-vite/template-react/src/App.jsx
  function App (line 7) | function App() {

FILE: packages/create-vite/template-solid-ts/src/App.tsx
  function App (line 7) | function App() {

FILE: packages/create-vite/template-solid/src/App.jsx
  function App (line 7) | function App() {

FILE: packages/create-vite/template-vanilla-ts/src/counter.ts
  function setupCounter (line 1) | function setupCounter(element: HTMLButtonElement) {

FILE: packages/create-vite/template-vanilla/src/counter.js
  function setupCounter (line 1) | function setupCounter(element) {

FILE: packages/plugin-legacy/src/index.ts
  function loadBabel (line 33) | async function loadBabel() {
  function toOutputFilePathInHtml (line 43) | function toOutputFilePathInHtml(
  function getBaseInHTML (line 79) | function getBaseInHTML(urlRelativePath: string, config: ResolvedConfig) {
  function joinUrlSegments (line 89) | function joinUrlSegments(a: string, b: string): string {
  function toAssetPathFromHtml (line 102) | function toAssetPathFromHtml(
  function viteLegacyPlugin (line 146) | function viteLegacyPlugin(options: Options = {}): Plugin[] {
  function detectPolyfills (line 789) | async function detectPolyfills(
  function buildPolyfillChunk (line 835) | async function buildPolyfillChunk(
  function polyfillsPlugin (line 935) | function polyfillsPlugin(
  function prependModenChunkLegacyGuardPlugin (line 957) | function prependModenChunkLegacyGuardPlugin(): Plugin {
  function isLegacyChunk (line 979) | function isLegacyChunk(chunk: Rollup.RenderedChunk) {
  function isLegacyBundle (line 983) | function isLegacyBundle(bundle: Rollup.OutputBundle) {
  function recordAndRemovePolyfillBabelPlugin (line 991) | function recordAndRemovePolyfillBabelPlugin(
  function replaceLegacyEnvBabelPlugin (line 1007) | function replaceLegacyEnvBabelPlugin(): BabelPlugin {
  function replaceModernEnvBabelPlugin (line 1020) | function replaceModernEnvBabelPlugin(): BabelPlugin {
  function wrapIIFEBabelPlugin (line 1033) | function wrapIIFEBabelPlugin(): BabelPlugin {
  function viteLegacyPluginCjs (line 1061) | function viteLegacyPluginCjs(this: unknown, options: Options): Plugin[] {

FILE: packages/plugin-legacy/src/types.ts
  type Options (line 1) | interface Options {

FILE: packages/vite/bin/openChrome.js
  function run (line 12) | function run(argv) {
  function lookupTabWithUrl (line 55) | function lookupTabWithUrl(lookupUrl, app) {

FILE: packages/vite/bin/vite.js
  function start (line 48) | function start() {

FILE: packages/vite/client.d.ts
  type CSSModuleClasses (line 4) | type CSSModuleClasses = { readonly [key: string]: string }
  type VitePreloadErrorEvent (line 273) | interface VitePreloadErrorEvent extends Event {
  type WindowEventMap (line 277) | interface WindowEventMap {

FILE: packages/vite/rolldown.config.ts
  method onwarn (line 64) | onwarn(warning, warn) {
  function enableSourceMapsInWatchModePlugin (line 170) | function enableSourceMapsInWatchModePlugin(): Plugin {
  function writeTypesPlugin (line 181) | function writeTypesPlugin(): Plugin {
  function externalizeDepsInWatchPlugin (line 199) | function externalizeDepsInWatchPlugin(): Plugin {
  type ShimOptions (line 215) | interface ShimOptions {
  function shimDepsPlugin (line 221) | function shimDepsPlugin(deps: Record<string, ShimOptions[]>): Plugin {
  function buildTimeImportMetaUrlPlugin (line 293) | function buildTimeImportMetaUrlPlugin(): Plugin {
  function bundleSizeLimit (line 377) | function bundleSizeLimit(limit: number): Plugin {

FILE: packages/vite/rolldown.dts.config.ts
  type Directive (line 17) | type Directive = ESTree.Directive
  type ModuleExportName (line 18) | type ModuleExportName = ESTree.ModuleExportName
  type Program (line 19) | type Program = ESTree.Program
  type Statement (line 20) | type Statement = ESTree.Statement
  function patchTypes (line 133) | function patchTypes(): Plugin {
  function stringifyModuleExportName (line 163) | function stringifyModuleExportName(node: ModuleExportName): string {
  type ImportBindings (line 170) | type ImportBindings = { id: string; bindings: string[]; locals: string[] }
  function getImportBindings (line 172) | function getImportBindings(
  function getAllImportBindings (line 202) | function getAllImportBindings(ast: Program): ImportBindings[] {
  function validateRunnerChunk (line 209) | function validateRunnerChunk(
  function validateChunkImports (line 234) | function validateChunkImports(
  function replaceConfusingTypeNames (line 267) | function replaceConfusingTypeNames(
  function stripInternalTypes (line 354) | function stripInternalTypes(this: PluginContext, chunk: OutputChunk) {
  function removeInternal (line 384) | function removeInternal(s: MagicString, node: any): boolean {
  function cleanUnnecessaryComments (line 406) | function cleanUnnecessaryComments(chunk: OutputChunk) {
  function escapeRegex (line 415) | function escapeRegex(str: string): string {
  function unique (line 419) | function unique<T>(arr: T[]): T[] {
  function addNodePrefix (line 423) | function addNodePrefix(): Plugin {

FILE: packages/vite/rollupLicensePlugin.ts
  function licensePlugin (line 7) | function licensePlugin(
  function sortDependencies (line 129) | function sortDependencies(dependencies: Dependency[]) {
  function sortLicenses (line 135) | function sortLicenses(licenses: Set<string>) {
  type DependencyInfo (line 150) | interface DependencyInfo {
  function getDependencyInformation (line 156) | function getDependencyInformation(dep: Dependency): DependencyInfo {
  function normalizeGitUrl (line 184) | function normalizeGitUrl(url: string): string {

FILE: packages/vite/scripts/benchCircularImport.ts
  type GraphConfig (line 20) | interface GraphConfig {
  type SyntheticGraph (line 29) | interface SyntheticGraph {
  function moduleId (line 36) | function moduleId(i: number): string {
  function generateGraph (line 48) | function generateGraph(config: GraphConfig): SyntheticGraph {
  constant BENCH_PREFIX (line 108) | const BENCH_PREFIX = '/bench/'
  function createBenchPlugin (line 110) | function createBenchPlugin(graph: SyntheticGraph) {
  type BenchResult (line 141) | interface BenchResult {
  function runBenchmark (line 147) | async function runBenchmark(config: GraphConfig): Promise<BenchResult> {
  function main (line 194) | async function main() {

FILE: packages/vite/src/client/client.ts
  method connect (line 62) | async connect(handlers) {
  method disconnect (line 105) | async disconnect() {
  method send (line 108) | send(data) {
  function cleanUrl (line 123) | function cleanUrl(pathname: string): string {
  function handleMessage (line 204) | async function handleMessage(payload: HotPayload) {
  function createErrorOverlay (line 341) | function createErrorOverlay(err: ErrorPayload['err']) {
  function clearErrorOverlay (line 350) | function clearErrorOverlay() {
  function hasErrorOverlay (line 354) | function hasErrorOverlay() {
  function waitForSuccessfulPing (line 358) | function waitForSuccessfulPing(socketUrl: string) {
  type VisibilityManager (line 412) | type VisibilityManager = {
  function pingWorkerContentMain (line 417) | function pingWorkerContentMain(socketUrl: string) {
  function waitForSuccessfulPingInternal (line 466) | async function waitForSuccessfulPingInternal(
  function updateStyle (line 553) | function updateStyle(id: string, content: string): void {
  function removeStyle (line 584) | function removeStyle(id: string): void {
  function createHotContext (line 605) | function createHotContext(ownerPath: string): ViteHotContext {
  function injectQuery (line 612) | function injectQuery(url: string, queryToInject: string): string {
  class ViteDevRuntime (line 632) | class ViteDevRuntime extends DevRuntime {
    method createModuleHotContext (line 633) | override createModuleHotContext(moduleId: string) {
    method applyUpdates (line 640) | override applyUpdates(_boundaries: [string, string][]): void {
  method send (line 646) | send(message) {

FILE: packages/vite/src/client/overlay.ts
  function h (line 16) | function h(
  class ErrorOverlay (line 216) | class ErrorOverlay extends HTMLElement {
    method constructor (line 220) | constructor(err: ErrorPayload['err'], links = true) {
    method text (line 264) | text(selector: string, text: string, linkFiles = false): void {
    method close (line 295) | close(): void {

FILE: packages/vite/src/module-runner/__tests_dts__/importMeta.ts
  type cases (line 14) | type cases = [

FILE: packages/vite/src/module-runner/createImportMeta.ts
  method get (line 7) | get(_, p) {
  function createDefaultImportMeta (line 14) | function createDefaultImportMeta(
  function createNodeImportMeta (line 41) | function createNodeImportMeta(

FILE: packages/vite/src/module-runner/esmEvaluator.ts
  class ESModulesEvaluator (line 15) | class ESModulesEvaluator implements ModuleEvaluator {
    method runInlinedModule (line 19) | async runInlinedModule(
    method runExternalModule (line 47) | runExternalModule(filepath: string): Promise<any> {

FILE: packages/vite/src/module-runner/evaluatedModules.ts
  constant MODULE_RUNNER_SOURCEMAPPING_REGEXP (line 7) | const MODULE_RUNNER_SOURCEMAPPING_REGEXP = new RegExp(
  class EvaluatedModuleNode (line 11) | class EvaluatedModuleNode {
    method constructor (line 21) | constructor(
  class EvaluatedModules (line 29) | class EvaluatedModules {
    method getModuleById (line 42) | public getModuleById(id: string): EvaluatedModuleNode | undefined {
    method getModulesByFile (line 52) | public getModulesByFile(file: string): Set<EvaluatedModuleNode> | unde...
    method getModuleByUrl (line 61) | public getModuleByUrl(url: string): EvaluatedModuleNode | undefined {
    method ensureModule (line 72) | public ensureModule(id: string, url: string): EvaluatedModuleNode {
    method invalidateModule (line 89) | public invalidateModule(node: EvaluatedModuleNode): void {
    method getModuleSourceMapById (line 107) | getModuleSourceMapById(id: string): DecodedMap | null {
    method clear (line 125) | public clear(): void {
  function normalizeModuleId (line 147) | function normalizeModuleId(file: string): string {

FILE: packages/vite/src/module-runner/hmrHandler.ts
  function createHMRHandlerForRunner (line 7) | function createHMRHandlerForRunner(
  function getModulesByFile (line 87) | function getModulesByFile(runner: ModuleRunner, file: string): string[] {
  function getModulesEntrypoints (line 95) | function getModulesEntrypoints(
  function findAllEntrypoints (line 119) | function findAllEntrypoints(

FILE: packages/vite/src/module-runner/importMetaResolver.ts
  type ImportMetaResolver (line 3) | type ImportMetaResolver = (specifier: string, importer: string) => string
  function customizationHookResolve (line 19) | function customizationHookResolve(
  function createImportMetaResolver (line 41) | function createImportMetaResolver(): ImportMetaResolver | undefined {
  function importMetaResolveWithCustomHook (line 90) | function importMetaResolveWithCustomHook(

FILE: packages/vite/src/module-runner/runner.ts
  type ModuleRunnerDebugger (line 34) | interface ModuleRunnerDebugger {
  class ModuleRunner (line 38) | class ModuleRunner {
    method constructor (line 53) | constructor(
    method import (line 90) | public async import<T = any>(url: string): Promise<T> {
    method clearCache (line 98) | public clearCache(): void {
    method close (line 107) | public async close(): Promise<void> {
    method isClosed (line 118) | public isClosed(): boolean {
    method processImport (line 122) | private processImport(
    method isCircularModule (line 136) | private isCircularModule(mod: EvaluatedModuleNode) {
    method isCircularImport (line 145) | private isCircularImport(
    method cachedRequest (line 170) | private async cachedRequest(
    method cachedModule (line 229) | private async cachedModule(
    method ensureBuiltins (line 249) | private ensureBuiltins(): Promise<void> | undefined {
    method getModuleInformation (line 277) | private async getModuleInformation(
    method directRequest (line 334) | protected async directRequest(
  function exportAll (line 436) | function exportAll(exports: any, sourceModule: any) {

FILE: packages/vite/src/module-runner/sourcemap/decoder.ts
  type SourceMapLike (line 5) | interface SourceMapLike {
  type Needle (line 13) | type Needle = {
  class DecodedMap (line 18) | class DecodedMap {
    method constructor (line 28) | constructor(
  type Stats (line 46) | interface Stats {
  function memoizedState (line 51) | function memoizedState(): Stats {
  function getOriginalPosition (line 58) | function getOriginalPosition(

FILE: packages/vite/src/module-runner/sourcemap/index.ts
  function enableSourceMapSupport (line 4) | function enableSourceMapSupport(runner: ModuleRunner): () => void {

FILE: packages/vite/src/module-runner/sourcemap/interceptor.ts
  type RetrieveFileHandler (line 8) | interface RetrieveFileHandler {
  type RetrieveSourceMapHandler (line 12) | interface RetrieveSourceMapHandler {
  type InterceptorOptions (line 16) | interface InterceptorOptions {
  function resetInterceptor (line 48) | function resetInterceptor(runner: ModuleRunner, options: InterceptorOpti...
  function interceptStackTrace (line 59) | function interceptStackTrace(
  type CallSite (line 74) | interface CallSite extends NodeJS.CallSite {
  type State (line 78) | interface State {
  type CachedMapEntry (line 83) | interface CachedMapEntry {
  function supportRelativeURL (line 90) | function supportRelativeURL(file: string, url: string) {
  function getRunnerSourceMap (line 104) | function getRunnerSourceMap(position: OriginalMapping): CachedMapEntry |...
  function retrieveFile (line 118) | function retrieveFile(path: string): string | null | undefined | false {
  function retrieveSourceMapURL (line 128) | function retrieveSourceMapURL(source: string) {
  function retrieveSourceMap (line 145) | function retrieveSourceMap(source: string) {
  function mapSourcePosition (line 173) | function mapSourcePosition(position: OriginalMapping) {
  function mapEvalOrigin (line 239) | function mapEvalOrigin(origin: string): string {
  function CallSiteToString (line 266) | function CallSiteToString(this: CallSite) {
  function cloneCallSite (line 332) | function cloneCallSite(frame: CallSite) {
  function wrapCallSite (line 347) | function wrapCallSite(frame: CallSite, state: State) {
  function prepareStackTrace (line 411) | function prepareStackTrace(error: Error, stack: CallSite[]) {

FILE: packages/vite/src/module-runner/types.ts
  type ModuleRunnerImportMeta (line 27) | interface ModuleRunnerImportMeta {
  type ModuleRunnerContext (line 38) | interface ModuleRunnerContext {
  type ModuleEvaluator (line 50) | interface ModuleEvaluator {
  type ResolvedResult (line 73) | type ResolvedResult = (ExternalFetchResult | ViteFetchResult) & {
  type FetchFunction (line 78) | type FetchFunction = (
  type ModuleRunnerHmr (line 84) | interface ModuleRunnerHmr {
  type ModuleRunnerOptions (line 91) | interface ModuleRunnerOptions {
  type ImportMetaEnv (line 126) | interface ImportMetaEnv {

FILE: packages/vite/src/module-runner/utils.ts
  constant CHAR_FORWARD_SLASH (line 9) | const CHAR_FORWARD_SLASH = 47
  constant CHAR_BACKWARD_SLASH (line 10) | const CHAR_BACKWARD_SLASH = 92
  function encodePathChars (line 20) | function encodePathChars(filepath: string) {
  function posixPathToFileHref (line 38) | function posixPathToFileHref(posixPath: string): string {
  function toWindowsPath (line 63) | function toWindowsPath(path: string): string {

FILE: packages/vite/src/node/__tests__/build.spec.ts
  type FormatsToFileNames (line 28) | type FormatsToFileNames = [LibraryFormats, string][]
  method resolveId (line 42) | resolveId(id) {
  method load (line 51) | load(id) {
  method resolveId (line 95) | resolveId(id) {
  method load (line 108) | load(id) {
  method resolveId (line 170) | resolveId(id) {
  method load (line 179) | load(id) {
  method resolveId (line 226) | resolveId(id) {
  method load (line 232) | load(id) {
  method config (line 799) | config() {
  method resolveId (line 979) | resolveId(id) {
  method load (line 985) | load(id) {
  method onLog (line 1041) | onLog(level, log) {
  method onwarn (line 1057) | onwarn(warning) {
  function getManifestKeys (line 1128) | function getManifestKeys(output: RolldownOutput) {
  function assertOutputHashContentChange (line 1167) | function assertOutputHashContentChange(
  function getOutputHashChanges (line 1186) | function getOutputHashChanges(

FILE: packages/vite/src/node/__tests__/config.spec.ts
  method configEnvironment (line 569) | configEnvironment(name) {
  method configEnvironment (line 597) | configEnvironment(name) {
  method config (line 629) | config() {
  method config (line 646) | config(config) {
  method config (line 664) | config() {
  method config (line 680) | config(config) {
  method config (line 703) | config() {
  method config (line 719) | config(config) {
  method config (line 829) | config() {
  method config (line 838) | config(config) {
  method config (line 913) | config() {
  method config (line 978) | config() {
  function testConfig (line 1054) | async function testConfig(inlineConfig: InlineConfig) {

FILE: packages/vite/src/node/__tests__/dev.spec.ts
  method configureServer (line 51) | configureServer(server) {

FILE: packages/vite/src/node/__tests__/environment.spec.ts
  function getConfig (line 10) | function getConfig({

FILE: packages/vite/src/node/__tests__/external.spec.ts
  function createIsExternal (line 19) | async function createIsExternal(external?: true) {

FILE: packages/vite/src/node/__tests__/fixtures/dynamic-import/entry.mjs
  function main (line 1) | async function main() {

FILE: packages/vite/src/node/__tests__/fixtures/emit-assets/entry.mjs
  function Page (line 4) | function Page() {

FILE: packages/vite/src/node/__tests__/fixtures/runner-import/basic.ts
  type Test (line 1) | interface Test {

FILE: packages/vite/src/node/__tests__/fixtures/runner-import/plugin.ts
  function testPlugin (line 3) | function testPlugin(): Plugin {

FILE: packages/vite/src/node/__tests__/fixtures/shared-plugins/minify/entry.js
  function main (line 1) | function main() {

FILE: packages/vite/src/node/__tests__/http.spec.ts
  constant BASE_PORT (line 8) | const BASE_PORT = 15181
  function createSimpleServer (line 30) | async function createSimpleServer(port: number, host: string) {

FILE: packages/vite/src/node/__tests__/optimizer/rolldownDepPlugin.spec.ts
  function createRolldownDepPluginTransform (line 5) | async function createRolldownDepPluginTransform(cacheDir: string) {

FILE: packages/vite/src/node/__tests__/plugins/assetImportMetaUrl.spec.ts
  function createAssetImportMetaurlPluginTransform (line 7) | async function createAssetImportMetaurlPluginTransform() {

FILE: packages/vite/src/node/__tests__/plugins/css.spec.ts
  function createCssPluginTransform (line 236) | async function createCssPluginTransform(inlineConfig: InlineConfig = {}) {
  function getInlinedCSSInjectedCode (line 470) | function getInlinedCSSInjectedCode(

FILE: packages/vite/src/node/__tests__/plugins/define.spec.ts
  function createDefinePluginTransform (line 7) | async function createDefinePluginTransform(

FILE: packages/vite/src/node/__tests__/plugins/dynamicImportVar/mods/hello.js
  function hello (line 1) | function hello() {

FILE: packages/vite/src/node/__tests__/plugins/dynamicImportVar/mods/hi.js
  function hi (line 1) | function hi() {

FILE: packages/vite/src/node/__tests__/plugins/dynamicImportVar/parse.spec.ts
  function run (line 9) | async function run(input: string) {

FILE: packages/vite/src/node/__tests__/plugins/esbuild.spec.ts
  function defineResolvedConfig (line 434) | function defineResolvedConfig(config: UserConfig): ResolvedConfig {

FILE: packages/vite/src/node/__tests__/plugins/hooks.spec.ts
  constant ENTRY_ID (line 20) | const ENTRY_ID = 'entry.js'
  constant RESOLVED_ENTRY_ID (line 21) | const RESOLVED_ENTRY_ID = `\0${ENTRY_ID}`
  method resolveId (line 24) | resolveId(id) {
  method load (line 29) | load(id) {
  method configurePreviewServer (line 58) | configurePreviewServer({ httpServer }) {
  method config (line 92) | config() {
  method configEnvironment (line 113) | configEnvironment(name) {
  method configResolved (line 136) | configResolved() {
  method configureServer (line 156) | configureServer() {
  method configurePreviewServer (line 176) | configurePreviewServer() {
  method transformIndexHtml (line 196) | transformIndexHtml() {
  method transformIndexHtml (line 217) | transformIndexHtml() {
  method handleHotUpdate (line 238) | handleHotUpdate() {
  method hotUpdate (line 266) | hotUpdate() {
  method transform (line 296) | transform(_code, id) {
  method transform (line 319) | transform(_code, id) {
  method resolveId (line 340) | resolveId(id) {

FILE: packages/vite/src/node/__tests__/plugins/import.spec.ts
  function runTransformCjsImport (line 12) | function runTransformCjsImport(importExp: string, isNodeMode: boolean) {

FILE: packages/vite/src/node/__tests__/plugins/importGlob/fixture-a/index.ts
  type ModuleType (line 5) | interface ModuleType {

FILE: packages/vite/src/node/__tests__/plugins/importGlob/parse.spec.ts
  function run (line 4) | async function run(input: string) {
  function runError (line 18) | async function runError(input: string) {

FILE: packages/vite/src/node/__tests__/plugins/index.spec.ts
  method resolveId (line 128) | resolveId(id) {
  method load (line 131) | load(id) {

FILE: packages/vite/src/node/__tests__/plugins/modulePreloadPolyfill/modulePreloadPolyfill.spec.ts
  method resolveId (line 25) | resolveId(id) {
  method load (line 30) | load(id) {

FILE: packages/vite/src/node/__tests__/plugins/pluginFilter.spec.ts
  type Filters (line 231) | type Filters = {

FILE: packages/vite/src/node/__tests__/plugins/terser.spec.ts
  method resolveId (line 20) | resolveId(id) {
  method load (line 25) | load(id) {

FILE: packages/vite/src/node/__tests__/plugins/workerImportMetaUrl.spec.ts
  function createWorkerImportMetaUrlPluginTransform (line 7) | async function createWorkerImportMetaUrlPluginTransform() {

FILE: packages/vite/src/node/__tests__/resolve.spec.ts
  function createTestServer (line 9) | async function createTestServer() {
  function getConfig (line 61) | function getConfig(): InlineConfig {
  function getConfig (line 147) | function getConfig(
  function run (line 168) | async function run({

FILE: packages/vite/src/node/__tests__/shortcuts.spec.ts
  method configureServer (line 79) | configureServer(viteDevServer) {

FILE: packages/vite/src/node/__tests__/utils.spec.ts
  constant WORKING_TEST_CERT (line 37) | const WORKING_TEST_CERT = `

FILE: packages/vite/src/node/__tests_dts__/config.ts
  type cases1 (line 25) | type cases1 = [

FILE: packages/vite/src/node/__tests_dts__/plugin.ts
  type EnvironmentPluginHooksContext (line 15) | type EnvironmentPluginHooksContext = GetHookContextMap<Plugin>
  type EnvironmentPluginHooksContextMatched (line 16) | type EnvironmentPluginHooksContextMatched = {
  type HooksMissingExtension (line 22) | type HooksMissingExtension = NonNeverKeys<EnvironmentPluginHooksContextM...
  type HooksMissingInConstants (line 23) | type HooksMissingInConstants = Exclude<
  type cases (line 28) | type cases = [

FILE: packages/vite/src/node/__tests_dts__/typeOptions.ts
  type TypeOptions1 (line 5) | interface TypeOptions1 {}
  type TypeOptions2 (line 6) | interface TypeOptions2 {
  type TypeOptions3 (line 9) | interface TypeOptions3 {
  type IsEnabled (line 13) | type IsEnabled<Opts, Key extends string> = Key extends keyof Opts ? true...
  type cases (line 15) | type cases = [

FILE: packages/vite/src/node/__tests_dts__/utils.ts
  type cases1 (line 48) | type cases1 = [

FILE: packages/vite/src/node/assetSource.ts
  type HtmlAssetSource (line 3) | interface HtmlAssetSource {
  type HtmlAssetSourceFilterData (line 12) | interface HtmlAssetSourceFilterData {
  constant ALLOWED_META_NAME (line 20) | const ALLOWED_META_NAME = [
  constant ALLOWED_META_PROPERTY (line 31) | const ALLOWED_META_PROPERTY = [
  constant DEFAULT_HTML_ASSET_SOURCES (line 41) | const DEFAULT_HTML_ASSET_SOURCES: Record<string, HtmlAssetSource> = {
  method filter (line 80) | filter({ attributes }) {
  type HtmlAssetAttribute (line 100) | interface HtmlAssetAttribute {
  function getNodeAssetAttributes (line 111) | function getNodeAssetAttributes(
  function getAttrKey (line 149) | function getAttrKey(attr: Token.Attribute): string {

FILE: packages/vite/src/node/baseEnvironment.ts
  class PartialEnvironment (line 13) | class PartialEnvironment {
    method getTopLevelConfig (line 15) | getTopLevelConfig(): ResolvedConfig {
    method constructor (line 32) | constructor(
  class BaseEnvironment (line 104) | class BaseEnvironment extends PartialEnvironment {
    method plugins (line 105) | get plugins(): readonly Plugin[] {
    method constructor (line 114) | constructor(
  class UnknownEnvironment (line 135) | class UnknownEnvironment extends BaseEnvironment {

FILE: packages/vite/src/node/build.ts
  type BuildEnvironmentOptions (line 91) | interface BuildEnvironmentOptions {
  type BuildOptions (line 305) | type BuildOptions = BuildEnvironmentOptions
  type LibraryOptions (line 307) | interface LibraryOptions {
  type LibraryFormats (line 336) | type LibraryFormats = 'es' | 'cjs' | 'umd' | 'iife' // | 'system'
  type ModulePreloadOptions (line 338) | interface ModulePreloadOptions {
  type ResolvedModulePreloadOptions (line 351) | interface ResolvedModulePreloadOptions {
  type ResolveModulePreloadDependenciesFn (line 356) | type ResolveModulePreloadDependenciesFn = (
  type ResolvedBuildEnvironmentOptions (line 365) | interface ResolvedBuildEnvironmentOptions extends Required<
  type ResolvedBuildOptions (line 371) | interface ResolvedBuildOptions extends Required<
  function resolveBuildEnvironmentOptions (line 418) | function resolveBuildEnvironmentOptions(
  function resolveBuildPlugins (line 500) | async function resolveBuildPlugins(config: ResolvedConfig): Promise<{
  function build (line 540) | async function build(
  function resolveConfigToBuild (line 549) | function resolveConfigToBuild(
  function resolveRolldownOptions (line 565) | function resolveRolldownOptions(
  function buildEnvironment (line 781) | async function buildEnvironment(
  function enhanceRollupError (line 889) | function enhanceRollupError(e: RollupError): void {
  function extractStack (line 923) | function extractStack(e: RollupError) {
  function normalizeCodeFrame (line 943) | function normalizeCodeFrame(frame: string) {
  type JsExt (line 948) | type JsExt = 'js' | 'cjs' | 'mjs'
  function resolveOutputJsExtension (line 950) | function resolveOutputJsExtension(
  function resolveLibFilename (line 961) | function resolveLibFilename(
  function resolveBuildOutputs (line 994) | function resolveBuildOutputs(
  function clearLine (line 1055) | function clearLine(): void {
  function onRollupLog (line 1063) | function onRollupLog(
  function normalizeUserOnWarn (line 1147) | function normalizeUserOnWarn(
  function resolveUserExternal (line 1165) | function resolveUserExternal(
  function isExternal (line 1180) | function isExternal(id: string, test: string | RegExp) {
  class ChunkMetadataMap (line 1188) | class ChunkMetadataMap {
    method _getKey (line 1192) | private _getKey(chunk: RenderedChunk | OutputChunk | OutputAsset): str...
    method _getDefaultValue (line 1198) | private _getDefaultValue(
    method get (line 1215) | get(
    method reset (line 1226) | reset(chunk: RenderedChunk | OutputChunk | OutputAsset): void {
    method clearResetChunks (line 1234) | clearResetChunks(): void {
  function injectEnvironmentToHooks (line 1239) | function injectEnvironmentToHooks(
  type AbstractHook (line 1287) | type AbstractHook<Handler extends Function> = {
  function wrapHookObject (line 1296) | function wrapHookObject<
  function wrapEnvironmentResolveId (line 1333) | function wrapEnvironmentResolveId(
  function wrapEnvironmentLoad (line 1357) | function wrapEnvironmentLoad(
  function wrapEnvironmentTransform (line 1380) | function wrapEnvironmentTransform(
  function wrapEnvironmentHook (line 1404) | function wrapEnvironmentHook<HookName extends keyof Plugin>(
  function injectChunkMetadata (line 1442) | function injectChunkMetadata(
  function injectEnvironmentInContext (line 1466) | function injectEnvironmentInContext<Context extends MinimalPluginContext>(
  function injectSsrFlag (line 1475) | function injectSsrFlag<T extends Record<string, any>>(
  function escapeId (line 1524) | function escapeId(id: string): string {
  type RenderBuiltAssetUrl (line 1583) | type RenderBuiltAssetUrl = (
  function toOutputFilePathInJS (line 1593) | function toOutputFilePathInJS(
  function createToImportMetaURLBasedRelativeRuntime (line 1632) | function createToImportMetaURLBasedRelativeRuntime(
  function toOutputFilePathWithoutRuntime (line 1645) | function toOutputFilePathWithoutRuntime(
  class BuildEnvironment (line 1687) | class BuildEnvironment extends BaseEnvironment {
    method constructor (line 1691) | constructor(
    method init (line 1711) | async init(): Promise<void> {
  type ViteBuilder (line 1719) | interface ViteBuilder {
  type BuilderOptions (line 1729) | interface BuilderOptions {
  function resolveBuilderOptions (line 1755) | function resolveBuilderOptions(
  type ResolvedBuilderOptions (line 1765) | type ResolvedBuilderOptions = Required<BuilderOptions>
  function createBuilder (line 1771) | async function createBuilder(
  type BuildAppHook (line 1919) | type BuildAppHook = (

FILE: packages/vite/src/node/cli.ts
  function checkNodeVersion (line 15) | function checkNodeVersion(nodeVersion: string): boolean {
  type GlobalCLIOptions (line 38) | interface GlobalCLIOptions {
  type ExperimentalDevOptions (line 57) | interface ExperimentalDevOptions {
  type BuilderCLIOptions (line 61) | interface BuilderCLIOptions {
  function cleanGlobalCLIOptions (line 104) | function cleanGlobalCLIOptions<Options extends GlobalCLIOptions>(
  function cleanBuilderCLIOptions (line 146) | function cleanBuilderCLIOptions<Options extends BuilderCLIOptions>(
  method action (line 270) | async action(server) {

FILE: packages/vite/src/node/config.ts
  constant SYMBOL_RESOLVED_CONFIG (line 137) | const SYMBOL_RESOLVED_CONFIG: unique symbol = Symbol('vite:resolved-conf...
  type ConfigEnv (line 139) | interface ConfigEnv {
  type AppType (line 157) | type AppType = 'spa' | 'mpa' | 'custom'
  type UserConfigFnObject (line 159) | type UserConfigFnObject = (env: ConfigEnv) => UserConfig
  type UserConfigFnPromise (line 160) | type UserConfigFnPromise = (env: ConfigEnv) => Promise<UserConfig>
  type UserConfigFn (line 161) | type UserConfigFn = (env: ConfigEnv) => UserConfig | Promise<UserConfig>
  type UserConfigExport (line 163) | type UserConfigExport =
  function defineConfig (line 181) | function defineConfig(config: UserConfigExport): UserConfigExport {
  type CreateDevEnvironmentContext (line 185) | interface CreateDevEnvironmentContext {
  type DevEnvironmentOptions (line 189) | interface DevEnvironmentOptions {
  function defaultCreateClientDevEnvironment (line 242) | function defaultCreateClientDevEnvironment(
  function defaultCreateDevEnvironment (line 260) | function defaultCreateDevEnvironment(name: string, config: ResolvedConfi...
  type ResolvedDevEnvironmentOptions (line 264) | type ResolvedDevEnvironmentOptions = Omit<
  type AllResolveOptions (line 274) | type AllResolveOptions = ResolveOptions & {
  type ResolvedAllResolveOptions (line 278) | type ResolvedAllResolveOptions = Required<ResolveOptions> & { alias: Ali...
  type SharedEnvironmentOptions (line 280) | interface SharedEnvironmentOptions {
  type EnvironmentOptions (line 306) | interface EnvironmentOptions extends SharedEnvironmentOptions {
  type ResolvedResolveOptions (line 317) | type ResolvedResolveOptions = Required<ResolveOptions>
  type ResolvedEnvironmentOptions (line 319) | type ResolvedEnvironmentOptions = {
  type DefaultEnvironmentOptions (line 332) | type DefaultEnvironmentOptions = Omit<
  type UserConfig (line 339) | interface UserConfig extends DefaultEnvironmentOptions {
  type HTMLOptions (line 524) | interface HTMLOptions {
  type FutureOptions (line 533) | interface FutureOptions {
  type ExperimentalOptions (line 547) | interface ExperimentalOptions {
  type LegacyOptions (line 579) | interface LegacyOptions {
  type ResolvedWorkerOptions (line 605) | interface ResolvedWorkerOptions {
  type InlineConfig (line 615) | interface InlineConfig extends UserConfig {
  type ResolvedConfig (line 624) | interface ResolvedConfig extends Readonly<
  function resolveDevToolsConfig (line 729) | async function resolveDevToolsConfig(
  function resolveDevEnvironmentOptions (line 871) | function resolveDevEnvironmentOptions(
  function resolveEnvironmentOptions (line 901) | function resolveEnvironmentOptions(
  function getDefaultEnvironmentOptions (line 979) | function getDefaultEnvironmentOptions(
  type PluginHookUtils (line 995) | interface PluginHookUtils {
  type ResolveFn (line 1004) | type ResolveFn = (
  function checkBadCharactersInPath (line 1015) | function checkBadCharactersInPath(
  function resolveEnvironmentResolveOptions (line 1061) | function resolveEnvironmentResolveOptions(
  function resolveResolveOptions (line 1115) | function resolveResolveOptions(
  function resolveDepOptimizationOptions (line 1154) | function resolveDepOptimizationOptions(
  function setOptimizeDepsPluginNames (line 1313) | async function setOptimizeDepsPluginNames(resolvedConfig: ResolvedConfig) {
  function applyDepOptimizationOptionCompat (line 1332) | function applyDepOptimizationOptionCompat(resolvedConfig: ResolvedConfig) {
  function isResolvedConfig (line 1347) | function isResolvedConfig(
  function resolveConfig (line 1356) | async function resolveConfig(
  function resolveBaseUrl (line 2145) | function resolveBaseUrl(
  function decodeBase (line 2185) | function decodeBase(base: string): string {
  function sortUserPlugins (line 2195) | function sortUserPlugins(
  function loadConfigFromFile (line 2213) | async function loadConfigFromFile(
  function nativeImportConfigFile (line 2292) | async function nativeImportConfigFile(resolvedPath: string) {
  function runnerImportConfigFile (line 2302) | async function runnerImportConfigFile(resolvedPath: string) {
  function bundleAndLoadConfigFile (line 2312) | async function bundleAndLoadConfigFile(resolvedPath: string) {
  function bundleConfigFile (line 2329) | async function bundleConfigFile(
  function collectAllModules (line 2494) | function collectAllModules(
  type NodeModuleWithCompile (line 2517) | interface NodeModuleWithCompile extends NodeModule {
  function loadConfigFromBundledFile (line 2522) | async function loadConfigFromBundledFile(
  function runConfigHook (line 2591) | async function runConfigHook(
  function runConfigEnvironmentHook (line 2636) | async function runConfigEnvironmentHook(
  function optimizeDepsDisabledBackwardCompatibility (line 2663) | function optimizeDepsDisabledBackwardCompatibility(

FILE: packages/vite/src/node/constants.ts
  constant ROLLUP_HOOKS (line 10) | const ROLLUP_HOOKS: RollupPluginHooks[] = [
  constant VERSION (line 40) | const VERSION = version as string
  constant DEFAULT_MAIN_FIELDS (line 42) | const DEFAULT_MAIN_FIELDS = [
  constant DEFAULT_CLIENT_MAIN_FIELDS (line 48) | const DEFAULT_CLIENT_MAIN_FIELDS: readonly string[] =
  constant DEFAULT_SERVER_MAIN_FIELDS (line 50) | const DEFAULT_SERVER_MAIN_FIELDS: readonly string[] = Object.freeze(
  constant DEV_PROD_CONDITION (line 58) | const DEV_PROD_CONDITION = `development|production` as const
  constant DEFAULT_CONDITIONS (line 60) | const DEFAULT_CONDITIONS = ['module', 'browser', 'node', DEV_PROD_CONDIT...
  constant DEFAULT_CLIENT_CONDITIONS (line 61) | const DEFAULT_CLIENT_CONDITIONS: readonly string[] = Object.freeze(
  constant DEFAULT_SERVER_CONDITIONS (line 64) | const DEFAULT_SERVER_CONDITIONS: readonly string[] = Object.freeze(
  constant DEFAULT_EXTERNAL_CONDITIONS (line 68) | const DEFAULT_EXTERNAL_CONDITIONS: readonly string[] = Object.freeze([
  constant DEFAULT_EXTENSIONS (line 73) | const DEFAULT_EXTENSIONS: string[] = [
  constant ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET (line 90) | const ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET: string[] = [
  constant DEFAULT_CONFIG_FILES (line 98) | const DEFAULT_CONFIG_FILES: string[] = [
  constant JS_TYPES_RE (line 107) | const JS_TYPES_RE: RegExp = /\.(?:j|t)sx?$|\.mjs$/
  constant CSS_LANGS_RE (line 109) | const CSS_LANGS_RE: RegExp =
  constant OPTIMIZABLE_ENTRY_RE (line 112) | const OPTIMIZABLE_ENTRY_RE: RegExp = /\.[cm]?[jt]s$/
  constant SPECIAL_QUERY_RE (line 114) | const SPECIAL_QUERY_RE: RegExp = /[?&](?:worker|sharedworker|raw|url)\b/
  constant FS_PREFIX (line 119) | const FS_PREFIX = `/@fs/`
  constant CLIENT_PUBLIC_PATH (line 121) | const CLIENT_PUBLIC_PATH = `/@vite/client`
  constant ENV_PUBLIC_PATH (line 122) | const ENV_PUBLIC_PATH = `/@vite/env`
  constant VITE_PACKAGE_DIR (line 123) | const VITE_PACKAGE_DIR: string = resolve(
  constant CLIENT_ENTRY (line 128) | const CLIENT_ENTRY: string = resolve(
  constant ENV_ENTRY (line 132) | const ENV_ENTRY: string = resolve(
  constant CLIENT_DIR (line 136) | const CLIENT_DIR: string = path.dirname(CLIENT_ENTRY)
  constant KNOWN_ASSET_TYPES (line 146) | const KNOWN_ASSET_TYPES: string[] = [
  constant DEFAULT_ASSETS_RE (line 188) | const DEFAULT_ASSETS_RE: RegExp = new RegExp(
  constant DEP_VERSION_RE (line 193) | const DEP_VERSION_RE: RegExp = /[?&](v=[\w.-]+)\b/
  constant DEFAULT_DEV_PORT (line 207) | const DEFAULT_DEV_PORT = 5173
  constant DEFAULT_PREVIEW_PORT (line 209) | const DEFAULT_PREVIEW_PORT = 4173
  constant DEFAULT_ASSETS_INLINE_LIMIT (line 211) | const DEFAULT_ASSETS_INLINE_LIMIT = 4096
  constant METADATA_FILENAME (line 220) | const METADATA_FILENAME = '_metadata.json'
  constant ERR_OPTIMIZE_DEPS_PROCESSING_ERROR (line 222) | const ERR_OPTIMIZE_DEPS_PROCESSING_ERROR =
  constant ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR (line 224) | const ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR =

FILE: packages/vite/src/node/deprecations.ts
  function isFutureDeprecationEnabled (line 44) | function isFutureDeprecationEnabled(
  function warnFutureDeprecation (line 55) | function warnFutureDeprecation(
  function ignoreDeprecationWarnings (line 99) | function ignoreDeprecationWarnings<T>(fn: () => T): T {

FILE: packages/vite/src/node/env.ts
  function getEnvFilesForMode (line 11) | function getEnvFilesForMode(
  function loadEnv (line 27) | function loadEnv(
  function resolveEnvPrefix (line 97) | function resolveEnvPrefix({

FILE: packages/vite/src/node/environment.ts
  type Environment (line 7) | type Environment =
  function perEnvironmentState (line 20) | function perEnvironmentState<State>(

FILE: packages/vite/src/node/external.ts
  function shouldExternalize (line 22) | function shouldExternalize(
  function createIsConfiguredAsExternal (line 35) | function createIsConfiguredAsExternal(
  function createIsExternal (line 127) | function createIsExternal(
  function canExternalizeFile (line 149) | function canExternalizeFile(filePath: string): boolean {

FILE: packages/vite/src/node/http.ts
  type CommonServerOptions (line 13) | interface CommonServerOptions {
  type CorsOptions (line 95) | interface CorsOptions {
  type CorsOrigin (line 117) | type CorsOrigin = boolean | string | RegExp | (string | RegExp)[]
  function resolveHttpServer (line 119) | async function resolveHttpServer(
  function resolveHttpsConfig (line 146) | async function resolveHttpsConfig(
  function readFileIfExists (line 160) | async function readFileIfExists(value?: string | Buffer | any[]) {
  function isPortAvailable (line 168) | async function isPortAvailable(port: number): Promise<boolean> {
  function tryListen (line 177) | function tryListen(port: number, host: string): Promise<boolean> {
  function tryBindServer (line 190) | async function tryBindServer(
  constant MAX_PORT (line 216) | const MAX_PORT = 65535
  function httpServerStart (line 218) | async function httpServerStart(
  function setClientErrorHandler (line 253) | function setClientErrorHandler(

FILE: packages/vite/src/node/idResolver.ts
  type ResolveIdFn (line 11) | type ResolveIdFn = (
  function createBackCompatIdResolver (line 23) | function createBackCompatIdResolver(
  function createIdResolver (line 42) | function createIdResolver(

FILE: packages/vite/src/node/logger.ts
  type LogType (line 8) | type LogType = 'error' | 'warn' | 'info'
  type LogLevel (line 9) | type LogLevel = LogType | 'silent'
  type Logger (line 10) | interface Logger {
  type LogOptions (line 20) | interface LogOptions {
  type LogErrorOptions (line 26) | interface LogErrorOptions extends LogOptions {
  function clearScreen (line 41) | function clearScreen() {
  type LoggerOptions (line 49) | interface LoggerOptions {
  function getTimeFormatter (line 59) | function getTimeFormatter() {
  function createLogger (line 68) | function createLogger(
  function printServerUrls (line 168) | function printServerUrls(

FILE: packages/vite/src/node/nodeResolve.ts
  type NodeResolveWithViteOptions (line 6) | interface NodeResolveWithViteOptions {
  function nodeResolveWithVite (line 14) | function nodeResolveWithVite(

FILE: packages/vite/src/node/optimizer/index.ts
  type ExportsData (line 49) | type ExportsData = {
  type DepsOptimizer (line 57) | interface DepsOptimizer {
  type DepOptimizationConfig (line 74) | interface DepOptimizationConfig {
  type DepOptimizationOptions (line 176) | type DepOptimizationOptions = DepOptimizationConfig & {
  function isDepOptimizationDisabled (line 195) | function isDepOptimizationDisabled(
  type DepOptimizationResult (line 205) | interface DepOptimizationResult {
  type OptimizedDepInfo (line 216) | interface OptimizedDepInfo {
  type DepOptimizationMetadata (line 236) | interface DepOptimizationMetadata {
  function optimizeDeps (line 283) | async function optimizeDeps(
  function optimizeExplicitEnvironmentDeps (line 324) | async function optimizeExplicitEnvironmentDeps(
  function initDepsOptimizerMetadata (line 349) | function initDepsOptimizerMetadata(
  function addOptimizedDepInfo (line 366) | function addOptimizedDepInfo(
  function loadCachedDepOptimizationMetadata (line 382) | async function loadCachedDepOptimizationMetadata(
  function discoverProjectDependencies (line 451) | function discoverProjectDependencies(environment: ScanEnvironment): {
  function toDiscoveredDependencies (line 479) | function toDiscoveredDependencies(
  function depsLogString (line 503) | function depsLogString(qualifiedIds: string[]): string {
  function runOptimizeDeps (line 511) | function runOptimizeDeps(
  function prepareRolldownOptimizerRun (line 751) | async function prepareRolldownOptimizerRun(
  function addManuallyIncludedOptimizeDeps (line 866) | async function addManuallyIncludedOptimizeDeps(
  function depsFromOptimizedDepInfo (line 914) | function depsFromOptimizedDepInfo(
  function getOptimizedDepPath (line 924) | function getOptimizedDepPath(
  function getDepsCacheSuffix (line 933) | function getDepsCacheSuffix(environment: Environment): string {
  function getDepsCacheDir (line 937) | function getDepsCacheDir(environment: Environment): string {
  function getProcessingDepsCacheDir (line 941) | function getProcessingDepsCacheDir(environment: Environment) {
  function getTempSuffix (line 949) | function getTempSuffix() {
  function getDepsCacheDirPrefix (line 960) | function getDepsCacheDirPrefix(environment: Environment): string {
  function createIsOptimizedDepFile (line 964) | function createIsOptimizedDepFile(
  function createIsOptimizedDepUrl (line 971) | function createIsOptimizedDepUrl(
  function parseDepsOptimizerMetadata (line 992) | function parseDepsOptimizerMetadata(
  function stringifyDepsOptimizerMetadata (line 1046) | function stringifyDepsOptimizerMetadata(
  function extractExportsData (line 1091) | async function extractExportsData(
  function needsInterop (line 1171) | function needsInterop(
  function isSingleDefaultExport (line 1202) | function isSingleDefaultExport(exports: readonly string[]) {
  function getConfigHash (line 1263) | function getConfigHash(environment: Environment): string {
  function getLockfileHash (line 1308) | function getLockfileHash(environment: Environment): string {
  function getDepHash (line 1332) | function getDepHash(environment: Environment): {
  function getOptimizedBrowserHash (line 1347) | function getOptimizedBrowserHash(
  function optimizedDepInfoFromId (line 1355) | function optimizedDepInfoFromId(
  function optimizedDepInfoFromFile (line 1364) | function optimizedDepInfoFromFile(
  function findOptimizedDepInfoInRecord (line 1371) | function findOptimizedDepInfoInRecord(
  function optimizedDepNeedsInterop (line 1383) | async function optimizedDepNeedsInterop(
  constant MAX_TEMP_DIR_AGE_MS (line 1400) | const MAX_TEMP_DIR_AGE_MS = 24 * 60 * 60 * 1000
  function cleanupDepsCacheStaleDirs (line 1401) | async function cleanupDepsCacheStaleDirs(
  constant GRACEFUL_RENAME_TIMEOUT (line 1441) | const GRACEFUL_RENAME_TIMEOUT = 5000

FILE: packages/vite/src/node/optimizer/optimizer.ts
  function createDepsOptimizer (line 40) | function createDepsOptimizer(
  function createExplicitDepsOptimizer (line 748) | function createExplicitDepsOptimizer(
  function findInteropMismatches (line 783) | function findInteropMismatches(

FILE: packages/vite/src/node/optimizer/pluginConverter.ts
  type MaybePromise (line 13) | type MaybePromise<T> = T | Promise<T>
  type EsbuildOnResolveCallback (line 14) | type EsbuildOnResolveCallback = (
  type EsbuildOnLoadCallback (line 17) | type EsbuildOnLoadCallback = (
  type ResolveIdHandler (line 20) | type ResolveIdHandler = (
  type LoadHandler (line 29) | type LoadHandler = (this: PluginContext, id: string) => MaybePromise<Loa...
  function convertEsbuildPluginToRolldownPlugin (line 31) | function convertEsbuildPluginToRolldownPlugin(
  function createResolveIdHandler (line 191) | function createResolveIdHandler(
  function createLoadHandler (line 246) | function createLoadHandler(
  function idToPathAndNamespace (line 300) | function idToPathAndNamespace(

FILE: packages/vite/src/node/optimizer/resolve.ts
  function createOptimizeDepsIncludeResolver (line 11) | function createOptimizeDepsIncludeResolver(
  function expandGlobIds (line 46) | function expandGlobIds(id: string, config: ResolvedConfig): string[] {
  function getFirstExportStringValue (line 157) | function getFirstExportStringValue(
  function nestedResolveBasedir (line 174) | function nestedResolveBasedir(

FILE: packages/vite/src/node/optimizer/rolldownDepPlugin.ts
  function rolldownDepPlugin (line 62) | function rolldownDepPlugin(
  function rolldownCjsExternalPlugin (line 375) | function rolldownCjsExternalPlugin(

FILE: packages/vite/src/node/optimizer/scan.ts
  class ScanEnvironment (line 41) | class ScanEnvironment extends BaseEnvironment {
    method pluginContainer (line 44) | get pluginContainer(): EnvironmentPluginContainer {
    method init (line 56) | async init(): Promise<void> {
  function devToScanEnvironment (line 71) | function devToScanEnvironment(
  function scanImports (line 112) | function scanImports(environment: ScanEnvironment): {
  function computeEntries (line 194) | async function computeEntries(environment: ScanEnvironment) {
  function prepareRolldownScanner (line 246) | async function prepareRolldownScanner(
  function orderedDependencies (line 284) | function orderedDependencies(deps: Record<string, string>) {
  function globEntries (line 291) | async function globEntries(
  type Loader (line 329) | type Loader = 'js' | 'ts' | 'jsx' | 'tsx'
  function rolldownScanPlugin (line 341) | function rolldownScanPlugin(
  function extractImportPaths (line 730) | function extractImportPaths(code: string) {
  function shouldExternalizeDep (line 745) | function shouldExternalizeDep(resolvedId: string, rawId: string): boolean {
  function isScannable (line 757) | function isScannable(id: string, extensions: string[] | undefined): bool...

FILE: packages/vite/src/node/packages.ts
  type PackageCache (line 23) | type PackageCache = Map<string, PackageData>
  type PackageData (line 25) | interface PackageData {
  function invalidatePackageData (line 51) | function invalidatePackageData(
  function resolvePackageData (line 63) | function resolvePackageData(
  function findNearestPackageData (line 129) | function findNearestPackageData(
  function findNearestMainPackageData (line 162) | function findNearestMainPackageData(
  function loadPackageData (line 178) | function loadPackageData(pkgPath: string): PackageData {
  function getResolveCacheKey (line 227) | function getResolveCacheKey(key: string, options: InternalResolveOptions) {
  function findNearestNodeModules (line 239) | function findNearestNodeModules(basedir: string): string | null {
  function watchPackageDataPlugin (line 254) | function watchPackageDataPlugin(packageCache: PackageCache): Plugin {
  function getRpdCache (line 298) | function getRpdCache(
  function setRpdCache (line 315) | function setRpdCache(
  function getRpdCacheKey (line 330) | function getRpdCacheKey(
  function getFnpdCache (line 345) | function getFnpdCache(
  function setFnpdCache (line 360) | function setFnpdCache(
  function getFnpdCacheKey (line 373) | function getFnpdCacheKey(basedir: string) {
  function traverseBetweenDirs (line 382) | function traverseBetweenDirs(

FILE: packages/vite/src/node/plugin.ts
  type PluginContextExtension (line 62) | interface PluginContextExtension {
  type PluginContextMetaExtension (line 69) | interface PluginContextMetaExtension {
  type ConfigPluginContext (line 73) | interface ConfigPluginContext extends Omit<
  type MinimalPluginContextWithoutEnvironment (line 80) | interface MinimalPluginContextWithoutEnvironment extends Omit<
  type MinimalPluginContext (line 87) | interface MinimalPluginContext extends PluginContextExtension {}
  type PluginContextMeta (line 88) | interface PluginContextMeta extends PluginContextMetaExtension {}
  type Plugin (line 101) | interface Plugin<A = any> extends RolldownPlugin<A> {
  type HookHandler (line 373) | type HookHandler<T> = T extends ObjectHook<infer H> ? H : T
  type PluginWithRequiredHook (line 375) | type PluginWithRequiredHook<K extends keyof Plugin> = Plugin & {
  type Thenable (line 379) | type Thenable<T> = T | Promise<T>
  type FalsyPlugin (line 381) | type FalsyPlugin = false | null | undefined
  type PluginOption (line 383) | type PluginOption = Thenable<
  function resolveEnvironmentPlugins (line 390) | async function resolveEnvironmentPlugins(
  function perEnvironmentPlugin (line 417) | function perEnvironmentPlugin(

FILE: packages/vite/src/node/plugins/asset.ts
  function registerCustomMime (line 63) | function registerCustomMime(): void {
  function renderAssetUrlInJS (line 76) | function renderAssetUrlInJS(
  function assetPlugin (line 152) | function assetPlugin(config: ResolvedConfig): Plugin {
  function fileToUrl (line 319) | async function fileToUrl(
  function fileToDevUrl (line 332) | async function fileToDevUrl(
  function getPublicAssetFilename (line 378) | function getPublicAssetFilename(
  function publicFileToBuiltUrl (line 393) | function publicFileToBuiltUrl(
  constant GIT_LFS_PREFIX (line 413) | const GIT_LFS_PREFIX = Buffer.from('version https://git-lfs.github.com')
  function isGitLfsPlaceholder (line 414) | function isGitLfsPlaceholder(content: Buffer): boolean {
  function fileToBuiltUrl (line 424) | async function fileToBuiltUrl(
  function toOutputFilePathInJSForBundledDev (line 490) | function toOutputFilePathInJSForBundledDev(
  function urlToBuiltUrl (line 511) | async function urlToBuiltUrl(
  function shouldInline (line 535) | function shouldInline(
  function assetToDataURL (line 567) | function assetToDataURL(
  function svgToDataURL (line 590) | function svgToDataURL(content: Buffer): string {

FILE: packages/vite/src/node/plugins/assetImportMetaUrl.ts
  function assetImportMetaUrlPlugin (line 37) | function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin {
  function buildGlobPattern (line 181) | function buildGlobPattern(ast: any) {
  function getQueryDelimiterIndex (line 199) | function getQueryDelimiterIndex(rawUrl: string): number {

FILE: packages/vite/src/node/plugins/clientInjections.ts
  function clientInjectionsPlugin (line 19) | function clientInjectionsPlugin(config: ResolvedConfig): Plugin {
  function escapeReplacement (line 63) | function escapeReplacement(value: string | number | boolean | null) {
  function createClientConfigValueReplacer (line 68) | async function createClientConfigValueReplacer(
  function getHmrImplementation (line 140) | async function getHmrImplementation(

FILE: packages/vite/src/node/plugins/css.ts
  type CSSOptions (line 114) | interface CSSOptions {
  type CSSModulesOptions (line 167) | interface CSSModulesOptions {
  type ResolvedCSSOptions (line 209) | type ResolvedCSSOptions = Omit<CSSOptions, 'lightningcss'> &
  function resolveCSSOptions (line 214) | function resolveCSSOptions(
  type PreprocessLang (line 241) | const enum PreprocessLang {
  type PureCssLang (line 249) | const enum PureCssLang {
  type PostCssDialectLang (line 252) | const enum PostCssDialectLang {
  type CssLang (line 255) | type CssLang =
  function encodePublicUrlsInCSS (line 287) | function encodePublicUrlsInCSS(config: ResolvedConfig) {
  function cssPlugin (line 296) | function cssPlugin(config: ResolvedConfig): Plugin {
  function cssPostPlugin (line 462) | function cssPostPlugin(config: ResolvedConfig): Plugin {
  function injectInlinedCSS (line 1143) | function injectInlinedCSS(
  function cssAnalysisPlugin (line 1174) | function cssAnalysisPlugin(config: ResolvedConfig): Plugin {
  function isCssScopeToRendered (line 1226) | function isCssScopeToRendered(
  function getEmptyChunkReplacer (line 1242) | function getEmptyChunkReplacer(
  type CSSAtImportResolvers (line 1280) | interface CSSAtImportResolvers {
  function createCSSResolvers (line 1286) | function createCSSResolvers(config: ResolvedConfig): CSSAtImportResolvers {
  function getCssResolversKeys (line 1342) | function getCssResolversKeys(
  function compileCSSPreprocessors (line 1348) | async function compileCSSPreprocessors(
  function getAtImportResolvers (line 1409) | function getAtImportResolvers(config: ResolvedConfig) {
  function compileCSS (line 1418) | async function compileCSS(
  function compilePostCSS (line 1495) | async function compilePostCSS(
  function transformSugarSS (line 1670) | async function transformSugarSS(
  function runPostCSS (line 1691) | async function runPostCSS(
  function createCachedImport (line 1792) | function createCachedImport<T>(imp: () => Promise<T>): () => T | Promise...
  type PreprocessCSSResult (line 1816) | interface PreprocessCSSResult {
  function preprocessCSS (line 1826) | async function preprocessCSS(
  function formatPostcssSourceMap (line 1854) | async function formatPostcssSourceMap(
  function combineSourcemapsIfExists (line 1882) | function combineSourcemapsIfExists(
  function finalizeCss (line 1904) | async function finalizeCss(css: string, config: ResolvedConfig) {
  type PostCSSConfigResult (line 1925) | interface PostCSSConfigResult {
  function resolvePostcssConfig (line 1930) | async function resolvePostcssConfig(
  type CssUrlResolver (line 1981) | type CssUrlResolver = (
  type CssUrlReplacer (line 1992) | type CssUrlReplacer = (
  method Once (line 2018) | Once(root) {
  function rewriteCssUrls (line 2070) | function rewriteCssUrls(
  function rewriteCssDataUris (line 2080) | function rewriteCssDataUris(
  function rewriteImportCss (line 2090) | function rewriteImportCss(
  function rewriteCssImageSet (line 2105) | async function rewriteCssImageSet(
  function skipUrlReplacer (line 2124) | function skipUrlReplacer(unquotedUrl: string) {
  function doUrlReplace (line 2135) | async function doUrlReplace(
  function doImportCSSReplace (line 2176) | async function doImportCSSReplace(
  function minifyCSS (line 2201) | async function minifyCSS(
  function resolveMinifyCssEsbuildOptions (line 2281) | function resolveMinifyCssEsbuildOptions(
  function hoistAtRules (line 2313) | async function hoistAtRules(css: string): Promise<string> {
  type PreprocessorAdditionalDataResult (line 2346) | type PreprocessorAdditionalDataResult =
  type PreprocessorAdditionalData (line 2350) | type PreprocessorAdditionalData =
  type SassPreprocessorOptions (line 2359) | type SassPreprocessorOptions = {
  type LessPreprocessorOptions (line 2363) | type LessPreprocessorOptions = {
  type StylusPreprocessorOptions (line 2367) | type StylusPreprocessorOptions = {
  type StylePreprocessorInternalOptions (line 2371) | type StylePreprocessorInternalOptions = {
  type SassStylePreprocessorInternalOptions (line 2377) | type SassStylePreprocessorInternalOptions = StylePreprocessorInternalOpt...
  type LessStylePreprocessorInternalOptions (line 2380) | type LessStylePreprocessorInternalOptions = StylePreprocessorInternalOpt...
  type StylusStylePreprocessorInternalOptions (line 2383) | type StylusStylePreprocessorInternalOptions = StylePreprocessorInternalO...
  type StylePreprocessor (line 2386) | type StylePreprocessor<Options extends StylePreprocessorInternalOptions>...
  type StylePreprocessorResults (line 2397) | interface StylePreprocessorResults {
  function loadPreprocessorPath (line 2409) | function loadPreprocessorPath(
  function loadSassPackage (line 2431) | function loadSassPackage(
  function loadSss (line 2459) | async function loadSss(root: string): Promise<PostCSS.Syntax> {
  function cleanScssBugUrl (line 2475) | function cleanScssBugUrl(url: string) {
  type WorkerType (line 2500) | type WorkerType = InstanceType<
  method run (line 2515) | async run(sassPath, data, options) {
  method stop (line 2591) | async stop() {
  type ScssWorkerResult (line 2601) | type ScssWorkerResult = {
  method close (line 2614) | close() {
  method process (line 2617) | async process(environment, source, root, options, resolvers) {
  function rebaseUrls (line 2696) | async function rebaseUrls(
  method constructor (line 2814) | constructor(rootFile: string) {
  method supports (line 2818) | override supports(filename: string) {
  method supportsSync (line 2821) | override supportsSync() {
  method loadFile (line 2824) | override async loadFile(
  method install (line 2850) | install(_, pluginManager) {
  method shouldUseFake (line 2891) | shouldUseFake(_lessPath, _content, options) {
  method close (line 2908) | close() {
  method process (line 2911) | async process(environment, source, root, options, resolvers) {
  method shouldUseFake (line 3007) | shouldUseFake(_stylusPath, _content, _root, options) {
  method close (line 3031) | close() {
  method process (line 3034) | async process(_environment, source, root, options, _resolvers) {
  function formatStylusSourceMap (line 3080) | function formatStylusSourceMap(
  function getSource (line 3100) | async function getSource(
  type PreprocessorWorkerController (line 3169) | type PreprocessorWorkerController = ReturnType<
  function isPreProcessor (line 3181) | function isPreProcessor(lang: any): lang is PreprocessLang {
  function compileLightningCSS (line 3188) | async function compileLightningCSS(
  function getLightningCssErrorMessageForIeSyntaxes (line 3393) | function getLightningCssErrorMessageForIeSyntaxes(
  function resolveLibCssFilename (line 3532) | function resolveLibCssFilename(

FILE: packages/vite/src/node/plugins/define.ts
  function definePlugin (line 12) | function definePlugin(config: ResolvedConfig): Plugin {
  function replaceDefine (line 167) | async function replaceDefine(
  function serializeDefine (line 202) | function serializeDefine(define: Record<string, any>): string {
  function handleDefineValue (line 216) | function handleDefineValue(value: any): string {

FILE: packages/vite/src/node/plugins/dynamicImportVars.ts
  type DynamicImportRequest (line 35) | interface DynamicImportRequest {
  type DynamicImportPattern (line 40) | interface DynamicImportPattern {
  function parseDynamicImportPattern (line 71) | function parseDynamicImportPattern(
  function transformDynamicImport (line 114) | async function transformDynamicImport(
  function dynamicImportVarsPlugin (line 169) | function dynamicImportVarsPlugin(config: ResolvedConfig): Plugin {

FILE: packages/vite/src/node/plugins/esbuild.ts
  constant IIFE_BEGIN_RE (line 30) | const IIFE_BEGIN_RE =
  type ESBuildOptions (line 45) | interface ESBuildOptions extends EsbuildTransformOptions {
  type ESBuildTransformResult (line 55) | type ESBuildTransformResult = Omit<RawEsbuildTransformResult, 'map'> & {
  type TSConfigJSON (line 59) | type TSConfigJSON = {
  type TSCompilerOptions (line 77) | type TSCompilerOptions = NonNullable<TSConfigJSON['compilerOptions']>
  function transformWithEsbuild (line 99) | async function transformWithEsbuild(
  function esbuildPlugin (line 278) | function esbuildPlugin(config: ResolvedConfig): Plugin {
  method applyToEnvironment (line 391) | applyToEnvironment(environment) {
  method renderChunk (line 394) | async renderChunk(code, chunk, opts) {
  function resolveEsbuildTranspileOptions (line 427) | function resolveEsbuildTranspileOptions(
  function prettifyMessage (line 515) | function prettifyMessage(m: EsbuildMessage, code: string): string {
  function getTSConfigResolutionCache (line 526) | function getTSConfigResolutionCache(
  function reloadOnTsconfigChange (line 540) | async function reloadOnTsconfigChange(

FILE: packages/vite/src/node/plugins/esbuildBannerFooterCompatPlugin.ts
  function esbuildBannerFooterCompatPlugin (line 13) | function esbuildBannerFooterCompatPlugin(

FILE: packages/vite/src/node/plugins/forwardConsole.ts
  function forwardConsolePlugin (line 11) | function forwardConsolePlugin(pluginOpts: {
  function formatError (line 54) | function formatError(

FILE: packages/vite/src/node/plugins/html.ts
  type ScriptAssetsUrl (line 53) | interface ScriptAssetsUrl {
  function htmlInlineProxyPlugin (line 103) | function htmlInlineProxyPlugin(config: ResolvedConfig): Plugin {
  function addToHTMLProxyCache (line 139) | function addToHTMLProxyCache(
  function addToHTMLProxyTransformResult (line 154) | function addToHTMLProxyTransformResult(
  function nodeIsElement (line 177) | function nodeIsElement(
  function traverseNodes (line 183) | function traverseNodes(
  type ParseWarnings (line 200) | type ParseWarnings = Partial<Record<ErrorCodes, string>>
  function traverseHtml (line 202) | async function traverseHtml(
  function getScriptInfo (line 225) | function getScriptInfo(node: DefaultTreeAdapterMap['element']): {
  function overwriteAttrValue (line 257) | function overwriteAttrValue(
  function removeViteIgnoreAttr (line 283) | function removeViteIgnoreAttr(
  function formatParseError (line 299) | function formatParseError(parserError: ParserError, id: string, html: st...
  function handleParseError (line 317) | function handleParseError(
  function buildHtmlPlugin (line 352) | function buildHtmlPlugin(config: ResolvedConfig): Plugin {
  function parseRelAttr (line 1047) | function parseRelAttr(attr: string): string[] {
  function findNeedTransformStyleAttribute (line 1053) | function findNeedTransformStyleAttribute(
  function extractImportExpressionFromClassicScript (line 1068) | function extractImportExpressionFromClassicScript(
  type HtmlTagDescriptor (line 1090) | interface HtmlTagDescriptor {
  type IndexHtmlTransformResult (line 1103) | type IndexHtmlTransformResult =
  type IndexHtmlTransformContext (line 1111) | interface IndexHtmlTransformContext {
  type IndexHtmlTransformHook (line 1126) | type IndexHtmlTransformHook = (
  type IndexHtmlTransform (line 1132) | type IndexHtmlTransform =
  function preImportMapHook (line 1139) | function preImportMapHook(
  function postImportMapHook (line 1167) | function postImportMapHook(): IndexHtmlTransformHook {
  function injectCspNonceMetaTagHook (line 1188) | function injectCspNonceMetaTagHook(
  function htmlEnvHook (line 1209) | function htmlEnvHook(config: ResolvedConfig): IndexHtmlTransformHook {
  function injectNonceAttributeTagHook (line 1255) | function injectNonceAttributeTagHook(
  function resolveHtmlTransforms (line 1302) | function resolveHtmlTransforms(
  function headTagInsertCheck (line 1346) | function headTagInsertCheck(
  function applyHtmlTransforms (line 1370) | async function applyHtmlTransforms(
  function isEntirelyImport (line 1425) | function isEntirelyImport(code: string) {
  function getBaseInHTML (line 1431) | function getBaseInHTML(urlRelativePath: string, config: ResolvedConfig) {
  function injectToHead (line 1453) | function injectToHead(
  function injectToBody (line 1489) | function injectToBody(
  function prependInjectFallback (line 1528) | function prependInjectFallback(html: string, tags: HtmlTagDescriptor[]) {
  function serializeTag (line 1541) | function serializeTag(
  function serializeTags (line 1555) | function serializeTags(
  function serializeAttrs (line 1567) | function serializeAttrs(attrs: HtmlTagDescriptor['attrs']): string {
  function incrementIndent (line 1579) | function incrementIndent(indent: string = '') {

FILE: packages/vite/src/node/plugins/importAnalysis.ts
  type UrlPosition (line 97) | interface UrlPosition {
  function isExplicitImportRequired (line 103) | function isExplicitImportRequired(url: string): boolean {
  function normalizeResolvedIdToUrl (line 107) | function normalizeResolvedIdToUrl(
  function extractImportedBindings (line 146) | function extractImportedBindings(
  function importAnalysisPlugin (line 224) | function importAnalysisPlugin(config: ResolvedConfig): Plugin {
  function mergeAcceptedUrls (line 874) | function mergeAcceptedUrls<T>(orderedUrls: Array<Set<T> | undefined>) {
  function createParseErrorInfo (line 883) | function createParseErrorInfo(
  function interopNamedImports (line 927) | function interopNamedImports(
  function getLineBreaks (line 985) | function getLineBreaks(str: string) {
  type ImportNameSpecifier (line 989) | type ImportNameSpecifier = { importedName: string; localName: string }
  function transformCjsImport (line 1004) | function transformCjsImport(
  function getIdentifierNameOrLiteralValue (line 1108) | function getIdentifierNameOrLiteralValue(node: ESTree.ModuleExportName) {
  function __vite__injectQuery (line 1113) | function __vite__injectQuery(url: string, queryToInject: string): string {

FILE: packages/vite/src/node/plugins/importAnalysisBuild.ts
  type FileDep (line 17) | type FileDep = {
  type VitePreloadErrorEvent (line 22) | type VitePreloadErrorEvent = Event & { payload: Error }
  function toRelativePath (line 36) | function toRelativePath(filename: string, importer: string) {
  function findPreloadMarker (line 41) | function findPreloadMarker(str: string, pos: number = 0): number {
  function detectScriptRel (line 52) | function detectScriptRel() {
  function preload (line 62) | function preload(
  function getPreloadCode (line 165) | function getPreloadCode(
  function buildImportAnalysisPlugin (line 200) | function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin[] {

FILE: packages/vite/src/node/plugins/importMetaGlob.ts
  type ParsedImportGlob (line 21) | interface ParsedImportGlob {
  type ParsedGeneralImportGlobOptions (line 33) | interface ParsedGeneralImportGlobOptions extends GeneralImportGlobOptions {
  function importGlobPlugin (line 37) | function importGlobPlugin(config: ResolvedConfig): Plugin {
  function err (line 134) | function err(e: string, pos: number) {
  function parseGlobOptions (line 140) | function parseGlobOptions(
  function parseImportGlob (line 238) | async function parseImportGlob(
  function findCorrespondingCloseParenthesisPosition (line 364) | function findCorrespondingCloseParenthesisPosition(
  type TransformGlobImportResult (line 396) | interface TransformGlobImportResult {
  function transformGlobImport (line 405) | async function transformGlobImport(
  type IdResolver (line 595) | type IdResolver = (
  function globSafePath (line 606) | function globSafePath(path: string) {
  function lastNthChar (line 611) | function lastNthChar(str: string, n: number) {
  function globSafeResolvedPath (line 615) | function globSafeResolvedPath(resolved: string, glob: string) {
  function toAbsoluteGlob (line 633) | async function toAbsoluteGlob(
  function getCommonBase (line 681) | function getCommonBase(globsResolved: string[]): null | string {
  function isVirtualModule (line 707) | function isVirtualModule(id: string): boolean {

FILE: packages/vite/src/node/plugins/index.ts
  function resolvePlugins (line 42) | async function resolvePlugins(
  function createPluginHookUtils (line 136) | function createPluginHookUtils(
  function getSortedPluginsByHook (line 163) | function getSortedPluginsByHook<K extends keyof Plugin>(
  function getHookHandler (line 193) | function getHookHandler<T extends ObjectHook<Function>>(
  type FilterForPluginValue (line 199) | type FilterForPluginValue = {
  function getCachedFilterForPlugin (line 206) | function getCachedFilterForPlugin<
  function extractFilter (line 247) | function extractFilter<T extends Function, F>(

FILE: packages/vite/src/node/plugins/json.ts
  type JsonOptions (line 1) | interface JsonOptions {

FILE: packages/vite/src/node/plugins/license.ts
  type LicenseEntry (line 8) | interface LicenseEntry {
  type LicenseOptions (line 27) | interface LicenseOptions {
  function licensePlugin (line 44) | function licensePlugin(): Plugin {
  function licenseEntryToMarkdown (line 116) | function licenseEntryToMarkdown(licenses: LicenseEntry[]) {
  function findLicenseFile (line 142) | function findLicenseFile(pkgDir: string) {

FILE: packages/vite/src/node/plugins/manifest.ts
  type Manifest (line 12) | type Manifest = Record<string, ManifestChunk>
  type ManifestChunk (line 14) | interface ManifestChunk {
  function manifestPlugin (line 60) | function manifestPlugin(): Plugin {
  function getChunkOriginalFileName (line 174) | function getChunkOriginalFileName(

FILE: packages/vite/src/node/plugins/modulePreloadPolyfill.ts
  function modulePreloadPolyfillPlugin (line 9) | function modulePreloadPolyfillPlugin(config: ResolvedConfig): Plugin {

FILE: packages/vite/src/node/plugins/optimizedDeps.ts
  function optimizedDepsPlugin (line 20) | function optimizedDepsPlugin(): Plugin {
  function throwProcessingError (line 101) | function throwProcessingError(id: string): never {
  function throwOutdatedRequest (line 112) | function throwOutdatedRequest(id: string): never {
  function throwFileNotFoundInOptimizedDep (line 123) | function throwFileNotFoundInOptimizedDep(id: string): never {

FILE: packages/vite/src/node/plugins/oxc.ts
  constant IIFE_BEGIN_RE (line 22) | const IIFE_BEGIN_RE: RegExp =
  constant UMD_BEGIN_RE (line 25) | const UMD_BEGIN_RE: RegExp =
  type OxcOptions (line 31) | interface OxcOptions extends Omit<
  function getRollupJsxPresets (line 49) | function getRollupJsxPresets(
  function joinNewLine (line 71) | function joinNewLine(s1: string, s2: string): string {
  function getErrorMessage (line 77) | function getErrorMessage(e: RolldownError): string {
  function transformWithOxc (line 120) | async function transformWithOxc(
  function shouldSkipWarning (line 202) | function shouldSkipWarning(warning: RolldownLog): boolean {
  function oxcPlugin (line 210) | function oxcPlugin(config: ResolvedConfig): Plugin {
  type OxcJsxOptions (line 343) | type OxcJsxOptions = Exclude<OxcOptions['jsx'], string | undefined>
  function convertEsbuildConfigToOxcConfig (line 345) | function convertEsbuildConfigToOxcConfig(
  function warnDeprecatedShouldBeConvertedToPluginOptions (line 408) | function warnDeprecatedShouldBeConvertedToPluginOptions(

FILE: packages/vite/src/node/plugins/pluginFilter.ts
  type PluginFilter (line 7) | type PluginFilter = (input: string) => boolean
  type TransformHookFilter (line 8) | type TransformHookFilter = (
  type StringFilter (line 14) | type StringFilter<Value = string | RegExp> =
  type NormalizedStringFilter (line 22) | type NormalizedStringFilter = {
  function getMatcherString (line 27) | function getMatcherString(glob: string, cwd: string) {
  function patternToIdFilter (line 36) | function patternToIdFilter(
  function patternToCodeFilter (line 57) | function patternToCodeFilter(pattern: string | RegExp): PluginFilter {
  function createFilter (line 68) | function createFilter(
  function normalizeFilter (line 87) | function normalizeFilter(filter: StringFilter): NormalizedStringFilter {
  function createIdFilter (line 104) | function createIdFilter(
  function createCodeFilter (line 115) | function createCodeFilter(
  function createModuleTypeFilter (line 125) | function createModuleTypeFilter(
  function createFilterForTransform (line 133) | function createFilterForTransform(

FILE: packages/vite/src/node/plugins/preAlias.ts
  function preAliasPlugin (line 24) | function preAliasPlugin(config: ResolvedConfig): Plugin {
  function optimizeAliasReplacementForSSR (line 87) | function optimizeAliasReplacementForSSR(
  function matches (line 104) | function matches(pattern: string | RegExp, importee: string) {
  function getAliasPatterns (line 117) | function getAliasPatterns(
  function getAliasPatternMatcher (line 126) | function getAliasPatternMatcher(

FILE: packages/vite/src/node/plugins/prepareOutDir.ts
  function prepareOutDirPlugin (line 10) | function prepareOutDirPlugin(): Plugin {
  function prepareOutDir (line 46) | function prepareOutDir(
  function areSeparateFolders (line 94) | function areSeparateFolders(a: string, b: string) {

FILE: packages/vite/src/node/plugins/reporter.ts
  function buildReporterPlugin (line 7) | function buildReporterPlugin(config: ResolvedConfig): Plugin {

FILE: packages/vite/src/node/plugins/resolve.ts
  constant ERR_RESOLVE_PACKAGE_ENTRY_FAIL (line 59) | const ERR_RESOLVE_PACKAGE_ENTRY_FAIL = 'ERR_RESOLVE_PACKAGE_ENTRY_FAIL'
  type EnvironmentResolveOptions (line 76) | interface EnvironmentResolveOptions {
  type ResolveOptions (line 107) | interface ResolveOptions extends EnvironmentResolveOptions {
  type ResolvePluginOptions (line 121) | interface ResolvePluginOptions {
  type InternalResolveOptions (line 175) | interface InternalResolveOptions
  type ResolvePluginOptionsWithOverrides (line 180) | interface ResolvePluginOptionsWithOverrides
  method buildStart (line 197) | buildStart() {
  method applyToEnvironment (line 217) | applyToEnvironment(environment) {
  function oxcResolvePlugin (line 224) | function oxcResolvePlugin(
  function optimizerResolvePlugin (line 387) | function optimizerResolvePlugin(
  function resolveSubpathImports (line 491) | function resolveSubpathImports(
  function ensureVersionQuery (line 522) | function ensureVersionQuery(
  function tryFsResolve (line 550) | function tryFsResolve(
  function tryCleanFsResolve (line 578) | function tryCleanFsResolve(
  function tryNodeResolve (line 687) | function tryNodeResolve(
  function tryOptimizedResolve (line 848) | async function tryOptimizedResolve(
  function resolvePackageEntry (line 903) | function resolvePackageEntry(
  function packageEntryFailure (line 993) | function packageEntryFailure(id: string, details?: string) {
  function getConditions (line 1003) | function getConditions(
  function resolveExportsOrImports (line 1024) | function resolveExportsOrImports(
  function resolveDeepImport (line 1042) | function resolveDeepImport(
  function tryResolveBrowserEntry (line 1111) | function tryResolveBrowserEntry(
  function mapWithBrowserField (line 1166) | function mapWithBrowserField(
  function equalWithoutSuffix (line 1184) | function equalWithoutSuffix(path: string, key: string, suffix: string) {
  function tryResolveRealFile (line 1188) | function tryResolveRealFile(
  function tryResolveRealFileWithExtensions (line 1196) | function tryResolveRealFileWithExtensions(
  function tryResolveRealFileOrType (line 1207) | function tryResolveRealFileOrType(
  function getRealPath (line 1221) | function getRealPath(resolved: string, preserveSymlinks?: boolean): stri...
  function isDirectory (line 1228) | function isDirectory(path: string): boolean {
  function findNearestPackagePath (line 1233) | function findNearestPackagePath(

FILE: packages/vite/src/node/plugins/terser.ts
  type TerserOptions (line 12) | interface TerserOptions extends TerserMinifyOptions {
  function loadTerserPath (line 23) | function loadTerserPath(root: string) {
  function terserPlugin (line 38) | function terserPlugin(config: ResolvedConfig): Plugin {

FILE: packages/vite/src/node/plugins/wasm.ts
  method handler (line 82) | handler(id) {
  method handler (line 89) | async handler(id) {
  method handler (line 116) | async handler(code, chunk, opts, meta) {

FILE: packages/vite/src/node/plugins/worker.ts
  type WorkerBundle (line 30) | type WorkerBundle = {
  type WorkerBundleAsset (line 38) | type WorkerBundleAsset = {
  class WorkerOutputCache (line 46) | class WorkerOutputCache {
    method saveWorkerBundle (line 60) | saveWorkerBundle(
    method saveAsset (line 83) | saveAsset(asset: WorkerBundleAsset, logger: Logger) {
    method invalidateAffectedBundles (line 98) | invalidateAffectedBundles(file: string) {
    method removeBundleIfInvalidated (line 106) | removeBundleIfInvalidated(file: string) {
    method removeBundle (line 113) | private removeBundle(file: string) {
    method getWorkerBundle (line 131) | getWorkerBundle(file: string) {
    method getAssets (line 135) | getAssets() {
    method getEntryFilenameFromHash (line 139) | getEntryFilenameFromHash(hash: string) {
    method generateEntryUrlPlaceholder (line 143) | private generateEntryUrlPlaceholder(entryFilename: string): string {
  type WorkerType (line 152) | type WorkerType = 'classic' | 'module' | 'ignore'
  constant WORKER_FILE_ID (line 159) | const WORKER_FILE_ID = 'worker_file'
  function bundleWorkerEntry (line 162) | async function bundleWorkerEntry(
  function workerFileToUrl (line 300) | async function workerFileToUrl(
  function webWorkerPostPlugin (line 318) | function webWorkerPostPlugin(config: ResolvedConfig): Plugin {
  function webWorkerPlugin (line 384) | function webWorkerPlugin(config: ResolvedConfig): Plugin {
  function isSameContent (line 666) | function isSameContent(a: string | Uint8Array, b: string | Uint8Array) {

FILE: packages/vite/src/node/plugins/workerImportMetaUrl.ts
  type WorkerOptions (line 20) | interface WorkerOptions {
  function err (line 24) | function err(e: string, pos: number) {
  function findClosingParen (line 30) | function findClosingParen(input: string, fromIndex: number) {
  function extractWorkerTypeFromAst (line 42) | function extractWorkerTypeFromAst(
  function parseWorkerOptions (line 96) | async function parseWorkerOptions(
  function getWorkerType (line 135) | async function getWorkerType(
  function workerImportMetaUrlPlugin (line 187) | function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin {

FILE: packages/vite/src/node/preview.ts
  type PreviewOptions (line 50) | interface PreviewOptions extends CommonServerOptions {}
  type ResolvedPreviewOptions (line 52) | interface ResolvedPreviewOptions extends RequiredExceptFor<
  function resolvePreviewOptions (line 57) | function resolvePreviewOptions(
  type PreviewServer (line 77) | interface PreviewServer {
  type PreviewServerHook (line 118) | type PreviewServerHook = (
  function preview (line 126) | async function preview(

FILE: packages/vite/src/node/publicDir.ts
  function initPublicFiles (line 13) | async function initPublicFiles(
  function getPublicFiles (line 32) | function getPublicFiles(config: ResolvedConfig): Set<string> | undefined {
  function checkPublicFile (line 36) | function checkPublicFile(

FILE: packages/vite/src/node/server/__tests__/pluginContainer.spec.ts
  method resolveId (line 17) | resolveId(id) {
  method load (line 26) | load(id) {
  method transform (line 34) | transform(_code, id) {
  method buildEnd (line 42) | buildEnd() {
  method resolveId (line 72) | resolveId(id) {
  method load (line 81) | load(id) {
  method resolveId (line 105) | resolveId(id) {
  method resolveId (line 117) | resolveId(id, importer, opts) {
  method load (line 129) | load(id) {
  method options (line 151) | options() {
  method options (line 169) | options() {
  method options (line 184) | options() {
  method resolveId (line 202) | resolveId(id) {
  method load (line 205) | load(id) {
  method transform (line 209) | async transform(code, id) {
  method resolveId (line 238) | resolveId(id) {
  method load (line 241) | load(id) {
  method transform (line 245) | async transform(_code, id) {
  method load (line 270) | load() {
  method load (line 289) | load() {
  method load (line 309) | load() {
  method resolveId (line 333) | async resolveId(id, importer) {
  method resolveId (line 350) | async resolveId(id, importer) {
  method resolveId (line 359) | async resolveId(id, importer) {
  method resolveId (line 375) | async resolveId(id, importer) {
  method resolveId (line 385) | async resolveId(id, importer) {
  method resolveId (line 399) | async resolveId(id, importer) {
  method resolveId (line 409) | async resolveId(id, importer) {
  method resolveId (line 417) | resolveId(id) {
  function getDevEnvironment (line 432) | async function getDevEnvironment(

FILE: packages/vite/src/node/server/environment.ts
  type DevEnvironmentContext (line 43) | interface DevEnvironmentContext {
  class DevEnvironment (line 55) | class DevEnvironment extends BaseEnvironment {
    method pluginContainer (line 65) | get pluginContainer(): EnvironmentPluginContainer<DevEnvironment> {
    method constructor (line 105) | constructor(
    method init (line 181) | async init(options?: {
    method listen (line 207) | async listen(server: ViteDevServer): Promise<void> {
    method fetchModule (line 213) | fetchModule(
    method reloadModule (line 224) | async reloadModule(module: EnvironmentModuleNode): Promise<void> {
    method transformRequest (line 230) | transformRequest(
    method warmupRequest (line 238) | async warmupRequest(url: string): Promise<void> {
    method invalidateModule (line 260) | protected invalidateModule(
    method close (line 293) | async close(): Promise<void> {
    method waitForRequestsIdle (line 322) | waitForRequestsIdle(ignoredId?: string): Promise<void> {
    method _registerRequestProcessing (line 329) | _registerRequestProcessing(id: string, done: () => Promise<unknown>): ...
  type CrawlEndFinder (line 336) | interface CrawlEndFinder {
  function setupOnCrawlEnd (line 342) | function setupOnCrawlEnd(): CrawlEndFinder {

FILE: packages/vite/src/node/server/environments/fetchableEnvironments.ts
  type FetchableDevEnvironmentContext (line 6) | interface FetchableDevEnvironmentContext extends DevEnvironmentContext {
  function createFetchableDevEnvironment (line 10) | function createFetchableDevEnvironment(
  function isFetchableDevEnvironment (line 30) | function isFetchableDevEnvironment(
  class FetchableDevEnvironment (line 36) | class FetchableDevEnvironment extends DevEnvironment {
    method constructor (line 39) | constructor(
    method dispatchFetch (line 48) | public async dispatchFetch(request: Request): Promise<Response> {

FILE: packages/vite/src/node/server/environments/fullBundleEnvironment.ts
  type HmrOutput (line 22) | type HmrOutput = BindingClientHmrUpdate['update']
  type MemoryFile (line 24) | type MemoryFile = {
  class MemoryFiles (line 29) | class MemoryFiles {
    method size (line 32) | get size(): number {
    method get (line 36) | get(file: string): MemoryFile | undefined {
    method set (line 49) | set(file: string, content: MemoryFile | (() => MemoryFile)): void {
    method has (line 53) | has(file: string): boolean {
    method clear (line 57) | clear(): void {
  class FullBundleDevEnvironment (line 62) | class FullBundleDevEnvironment extends DevEnvironment {
    method constructor (line 76) | constructor(
    method listen (line 90) | override async listen(_server: ViteDevServer): Promise<void> {
    method waitForInitialBuildFinish (line 190) | private async waitForInitialBuildFinish(): Promise<void> {
    method warmupRequest (line 198) | override async warmupRequest(_url: string): Promise<void> {
    method invalidateModule (line 202) | protected override invalidateModule(
    method triggerBundleRegenerationIfStale (line 260) | async triggerBundleRegenerationIfStale(): Promise<boolean> {
    method close (line 273) | override async close(): Promise<void> {
    method getRolldownOptions (line 278) | private async getRolldownOptions() {
    method handleHmrOutput (line 312) | private handleHmrOutput(
  class Clients (line 370) | class Clients {
    method setupIfNeeded (line 374) | setupIfNeeded(client: NormalizedHotChannelClient): string {
    method get (line 384) | get(id: string): NormalizedHotChannelClient | undefined {
    method getAll (line 388) | getAll(): NormalizedHotChannelClient[] {
    method delete (line 392) | delete(client: NormalizedHotChannelClient): string | undefined {
  function debounce (line 402) | function debounce(time: number, cb: () => void) {

FILE: packages/vite/src/node/server/environments/runnableEnvironment.ts
  function createRunnableDevEnvironment (line 10) | function createRunnableDevEnvironment(
  type RunnableDevEnvironmentContext (line 25) | interface RunnableDevEnvironmentContext extends Omit<
  function isRunnableDevEnvironment (line 37) | function isRunnableDevEnvironment(
  class RunnableDevEnvironment (line 43) | class RunnableDevEnvironment extends DevEnvironment {
    method constructor (line 53) | constructor(
    method runner (line 63) | get runner(): ModuleRunner {
    method close (line 72) | override async close(): Promise<void> {

FILE: packages/vite/src/node/server/hmr.ts
  type HmrOptions (line 43) | interface HmrOptions {
  type HotUpdateOptions (line 54) | interface HotUpdateOptions {
  type HmrContext (line 63) | interface HmrContext {
  type PropagationBoundary (line 71) | interface PropagationBoundary {
  type HotChannelClient (line 77) | interface HotChannelClient {
  type HotChannelListener (line 81) | type HotChannelListener<T extends string = string> = (
  type HotChannel (line 86) | interface HotChannel<Api = any> {
  function getShortName (line 112) | function getShortName(file: string, root: string): string {
  type NormalizedHotChannelClient (line 118) | interface NormalizedHotChannelClient {
  type NormalizedHotChannel (line 129) | interface NormalizedHotChannel<Api = any> {
  method setInvokeHandler (line 270) | setInvokeHandler(_invokeHandlers) {
  method listen (line 322) | listen() {
  method close (line 325) | close() {
  function getSortedPluginsByHotUpdateHook (line 331) | function getSortedPluginsByHotUpdateHook(
  function getSortedHotUpdatePlugins (line 361) | function getSortedHotUpdatePlugins(environment: Environment): Plugin[] {
  function handleHMRUpdate (line 370) | async function handleHMRUpdate(
  type HasDeadEnd (line 630) | type HasDeadEnd = string | boolean
  function updateModules (line 632) | function updateModules(
  function areAllImportsAccepted (line 744) | function areAllImportsAccepted(
  function propagateUpdate (line 756) | function propagateUpdate(
  function isNodeWithinCircularImports (line 855) | function isNodeWithinCircularImports(
  function handlePrunedModules (line 923) | function handlePrunedModules(
  type LexerState (line 942) | const enum LexerState {
  function lexAcceptedHmrDeps (line 957) | function lexAcceptedHmrDeps(
  function lexAcceptedHmrExports (line 1061) | function lexAcceptedHmrExports(
  function normalizeHmrUrl (line 1074) | function normalizeHmrUrl(url: string): string {
  function error (line 1081) | function error(pos: number) {
  function readModifiedFile (line 1093) | async function readModifiedFile(file: string): Promise<string> {
  type ServerHotChannelApi (line 1112) | type ServerHotChannelApi = {
  type ServerHotChannel (line 1117) | type ServerHotChannel = HotChannel<ServerHotChannelApi>
  type NormalizedServerHotChannel (line 1118) | type NormalizedServerHotChannel =
  function createServerHotChannel (line 1121) | function createServerHotChannel(): ServerHotChannel {

FILE: packages/vite/src/node/server/index.ts
  type ServerOptions (line 114) | interface ServerOptions extends CommonServerOptions {
  type ResolvedServerOptions (line 209) | interface ResolvedServerOptions extends Omit<
  type FileSystemServeOptions (line 232) | interface FileSystemServeOptions {
  type ServerHook (line 261) | type ServerHook = (
  type HttpServer (line 266) | type HttpServer = http.Server | Http2SecureServer
  function resolveForwardConsoleOptions (line 268) | async function resolveForwardConsoleOptions(
  type ViteDevServer (line 299) | interface ViteDevServer {
  type ResolvedServerUrls (line 465) | interface ResolvedServerUrls {
  function createServer (line 470) | function createServer(
  function _createServer (line 476) | async function _createServer(
  function startServer (line 1081) | async function startServer(
  function createServerCloseFn (line 1111) | function createServerCloseFn(
  function resolvedAllowDir (line 1149) | function resolvedAllowDir(root: string, dir: string): string {
  function resolveServerOptions (line 1187) | async function resolveServerOptions(
  function restartServer (line 1272) | async function restartServer(server: ViteDevServer) {
  function restartServerWithUrls (line 1355) | async function restartServerWithUrls(

FILE: packages/vite/src/node/server/middlewares/base.ts
  function baseMiddleware (line 7) | function baseMiddleware(

FILE: packages/vite/src/node/server/middlewares/error.ts
  function prepareError (line 11) | function prepareError(err: Error | RollupError): ErrorPayload['err'] {
  function buildErrorMessage (line 25) | function buildErrorMessage(
  function cleanStack (line 38) | function cleanStack(stack: string) {
  function logError (line 45) | function logError(server: ViteDevServer, err: RollupError): void {
  function errorMiddleware (line 62) | function errorMiddleware(

FILE: packages/vite/src/node/server/middlewares/hostCheck.ts
  function getAdditionalAllowedHosts (line 5) | function getAdditionalAllowedHosts(
  function hostValidationMiddleware (line 46) | function hostValidationMiddleware(

FILE: packages/vite/src/node/server/middlewares/htmlFallback.ts
  function htmlFallbackMiddleware (line 11) | function htmlFallbackMiddleware(

FILE: packages/vite/src/node/server/middlewares/indexHtml.ts
  type AssetNode (line 56) | interface AssetNode {
  type InlineStyleAttribute (line 62) | interface InlineStyleAttribute {
  function createDevHtmlTransformFn (line 68) | function createDevHtmlTransformFn(
  function getHtmlFilename (line 109) | function getHtmlFilename(url: string, server: ViteDevServer) {
  function shouldPreTransform (line 119) | function shouldPreTransform(url: string, config: ResolvedConfig) {
  function isBareRelative (line 127) | function isBareRelative(url: string) {
  function indexHtmlMiddleware (line 442) | function indexHtmlMiddleware(
  function preTransformRequest (line 546) | function preTransformRequest(
  function generateFallbackHtml (line 558) | async function generateFallbackHtml(server: ViteDevServer) {

FILE: packages/vite/src/node/server/middlewares/memoryFiles.ts
  function memoryFilesMiddleware (line 7) | function memoryFilesMiddleware(

FILE: packages/vite/src/node/server/middlewares/notFound.ts
  function notFoundMiddleware (line 3) | function notFoundMiddleware(): Connect.NextHandleFunction {

FILE: packages/vite/src/node/server/middlewares/proxy.ts
  type ProxyOptions (line 11) | interface ProxyOptions extends httpProxy.ServerOptions {
  function proxyMiddleware (line 75) | function proxyMiddleware(
  function doesProxyContextMatchUrl (line 231) | function doesProxyContextMatchUrl(context: string, url: string): boolean {

FILE: packages/vite/src/node/server/middlewares/rejectInvalidRequest.ts
  function rejectInvalidRequestMiddleware (line 6) | function rejectInvalidRequestMiddleware(): Connect.NextHandleFunction {

FILE: packages/vite/src/node/server/middlewares/rejectNoCorsRequest.ts
  function rejectNoCorsRequestMiddleware (line 17) | function rejectNoCorsRequestMiddleware(): Connect.NextHandleFunction {

FILE: packages/vite/src/node/server/middlewares/static.ts
  constant ERR_DENIED_FILE (line 30) | const ERR_DENIED_FILE = 'ERR_DENIED_FILE'
  method setHeaders (line 45) | setHeaders(res, pathname) {
  function servePublicMiddleware (line 80) | function servePublicMiddleware(
  function serveStaticMiddleware (line 124) | function serveStaticMiddleware(
  function serveRawFsMiddleware (line 201) | function serveRawFsMiddleware(
  function isFileServingAllowed (line 257) | function isFileServingAllowed(
  function isFileInTargetPath (line 279) | function isFileInTargetPath(
  function isFileLoadingAllowed (line 292) | function isFileLoadingAllowed(
  function checkLoadingAccess (line 314) | function checkLoadingAccess(
  function respondWithAccessDenied (line 329) | function respondWithAccessDenied(
  function renderRestrictedErrorHTML (line 347) | function renderRestrictedErrorHTML(msg: string): string {

FILE: packages/vite/src/node/server/middlewares/time.ts
  function timeMiddleware (line 7) | function timeMiddleware(root: string): Connect.NextHandleFunction {

FILE: packages/vite/src/node/server/middlewares/transform.ts
  function isDocumentFetchDest (line 49) | function isDocumentFetchDest(req: Connect.IncomingMessage) {
  function isServerAccessDeniedForTransform (line 60) | function isServerAccessDeniedForTransform(config: ResolvedConfig, id: st...
  function cachedTransformMiddleware (line 70) | function cachedTransformMiddleware(
  function transformMiddleware (line 106) | function transformMiddleware(

FILE: packages/vite/src/node/server/mixedModuleGraph.ts
  constant EMPTY_OBJECT (line 18) | const EMPTY_OBJECT = Object.freeze({})
  class ModuleNode (line 20) | class ModuleNode {
    method constructor (line 24) | constructor(
    method _get (line 33) | _get<T extends keyof EnvironmentModuleNode>(
    method _set (line 38) | _set<T extends keyof EnvironmentModuleNode>(
    method _wrapModuleSet (line 50) | _wrapModuleSet(
    method _getModuleSetUnion (line 59) | _getModuleSetUnion(prop: 'importedModules' | 'importers'): Set<ModuleN...
    method _getModuleInfoUnion (line 83) | _getModuleInfoUnion(prop: 'info'): ModuleInfo | undefined {
    method _getModuleObjectUnion (line 109) | _getModuleObjectUnion(prop: 'meta'): Record<string, any> | undefined {
    method url (line 125) | get url(): string {
    method url (line 128) | set url(value: string) {
    method id (line 131) | get id(): string | null {
    method id (line 134) | set id(value: string | null) {
    method file (line 137) | get file(): string | null {
    method file (line 140) | set file(value: string | null) {
    method type (line 143) | get type(): 'js' | 'css' | 'asset' {
    method info (line 148) | get info(): ModuleInfo | undefined {
    method meta (line 151) | get meta(): Record<string, any> | undefined {
    method importers (line 154) | get importers(): Set<ModuleNode> {
    method clientImportedModules (line 157) | get clientImportedModules(): Set<ModuleNode> {
    method ssrImportedModules (line 160) | get ssrImportedModules(): Set<ModuleNode> {
    method importedModules (line 163) | get importedModules(): Set<ModuleNode> {
    method acceptedHmrDeps (line 166) | get acceptedHmrDeps(): Set<ModuleNode> {
    method acceptedHmrExports (line 169) | get acceptedHmrExports(): Set<string> | null {
    method importedBindings (line 172) | get importedBindings(): Map<string, Set<string>> | null {
    method isSelfAccepting (line 175) | get isSelfAccepting(): boolean | undefined {
    method transformResult (line 178) | get transformResult(): TransformResult | null {
    method transformResult (line 181) | set transformResult(value: TransformResult | null) {
    method ssrTransformResult (line 186) | get ssrTransformResult(): TransformResult | null {
    method ssrTransformResult (line 189) | set ssrTransformResult(value: TransformResult | null) {
    method ssrModule (line 194) | get ssrModule(): Record<string, any> | null {
    method ssrError (line 197) | get ssrError(): Error | null {
    method lastHMRTimestamp (line 200) | get lastHMRTimestamp(): number {
    method lastHMRTimestamp (line 206) | set lastHMRTimestamp(value: number) {
    method lastInvalidationTimestamp (line 214) | get lastInvalidationTimestamp(): number {
    method invalidationState (line 220) | get invalidationState(): TransformResult | 'HARD_INVALIDATED' | undefi...
    method ssrInvalidationState (line 223) | get ssrInvalidationState(): TransformResult | 'HARD_INVALIDATED' | und...
  function mapIterator (line 228) | function mapIterator<T, K = T>(
  class ModuleGraph (line 248) | class ModuleGraph {
    method _client (line 256) | get _client(): EnvironmentModuleGraph {
    method _ssr (line 261) | get _ssr(): EnvironmentModuleGraph {
    method constructor (line 277) | constructor(moduleGraphs: {
    method getModuleById (line 317) | getModuleById(id: string): ModuleNode | undefined {
    method getModuleByUrl (line 326) | async getModuleByUrl(
    method getModulesByFile (line 341) | getModulesByFile(file: string): Set<ModuleNode> | undefined {
    method onFileChange (line 366) | onFileChange(file: string): void {
    method onFileDelete (line 371) | onFileDelete(file: string): void {
    method _getModuleGraph (line 377) | _getModuleGraph(environment: string): EnvironmentModuleGraph {
    method invalidateModule (line 388) | invalidateModule(
    method invalidateAll (line 421) | invalidateAll(): void {
    method ensureEntryFromUrl (line 442) | async ensureEntryFromUrl(
    method createFileOnlyEntry (line 454) | createFileOnlyEntry(file: string): ModuleNode {
    method resolveUrl (line 460) | async resolveUrl(url: string, ssr?: boolean): Promise<ResolvedUrl> {
    method updateModuleTransformResult (line 464) | updateModuleTransformResult(
    method getModuleByEtag (line 476) | getModuleByEtag(etag: string): ModuleNode | undefined {
    method getBackwardCompatibleBrowserModuleNode (line 481) | getBackwardCompatibleBrowserModuleNode(
    method getBackwardCompatibleServerModuleNode (line 490) | getBackwardCompatibleServerModuleNode(
    method getBackwardCompatibleModuleNode (line 499) | getBackwardCompatibleModuleNode(mod: EnvironmentModuleNode): ModuleNode {
    method getBackwardCompatibleModuleNodeDual (line 505) | getBackwardCompatibleModuleNodeDual(
  class DualWeakMap (line 520) | class DualWeakMap<K1 extends WeakKey, K2 extends WeakKey, V> {
    method get (line 524) | get(key1: K1 | undefined, key2: K2 | undefined): V | undefined {
    method set (line 530) | set(key1: K1 | undefined, key2: K2 | undefined, value: V): void {
  type ModuleSetNames (line 542) | type ModuleSetNames = 'acceptedHmrDeps' | 'importedModules'
  function createBackwardCompatibleModuleSet (line 544) | function createBackwardCompatibleModuleSet(
  function createBackwardCompatibleModuleMap (line 591) | function createBackwardCompatibleModuleMap(
  function createBackwardCompatibleFileToModulesMap (line 648) | function createBackwardCompatibleFileToModulesMap(

FILE: packages/vite/src/node/server/moduleGraph.ts
  class EnvironmentModuleNode (line 14) | class EnvironmentModuleNode {
    method constructor (line 74) | constructor(url: string, environment: string, setIsSelfAccepting = tru...
  type ResolvedUrl (line 84) | type ResolvedUrl = [
  class EnvironmentModuleGraph (line 90) | class EnvironmentModuleGraph {
    method constructor (line 115) | constructor(
    method getModuleByUrl (line 123) | async getModuleByUrl(
    method getModuleById (line 137) | getModuleById(id: string): EnvironmentModuleNode | undefined {
    method getModulesByFile (line 141) | getModulesByFile(file: string): Set<EnvironmentModuleNode> | undefined {
    method onFileChange (line 145) | onFileChange(file: string): void {
    method onFileDelete (line 155) | onFileDelete(file: string): void {
    method invalidateModule (line 166) | invalidateModule(
    method invalidateAll (line 236) | invalidateAll(): void {
    method updateModuleInfo (line 252) | async updateModuleInfo(
    method ensureEntryFromUrl (line 333) | async ensureEntryFromUrl(
    method _ensureEntryFromUrl (line 343) | async _ensureEntryFromUrl(
    method createFileOnlyEntry (line 395) | createFileOnlyEntry(file: string): EnvironmentModuleNode {
    method resolveUrl (line 421) | async resolveUrl(url: string): Promise<ResolvedUrl> {
    method updateModuleTransformResult (line 430) | updateModuleTransformResult(
    method getModuleByEtag (line 443) | getModuleByEtag(etag: string): EnvironmentModuleNode | undefined {
    method _getUnresolvedUrlToModule (line 450) | _getUnresolvedUrlToModule(
    method _setUnresolvedUrlToModule (line 458) | _setUnresolvedUrlToModule(
    method _resolveUrl (line 468) | async _resolveUrl(

FILE: packages/vite/src/node/server/openBrowser.ts
  function openBrowser (line 24) | function openBrowser(
  function executeNodeScript (line 42) | function executeNodeScript(scriptPath: string, url: string, logger: Logg...
  function startBrowserProcess (line 72) | async function startBrowserProcess(
  function execAsync (line 139) | function execAsync(command: string, options?: ExecOptions): Promise<stri...

FILE: packages/vite/src/node/server/pluginContainer.ts
  constant EMPTY_OBJECT (line 108) | const EMPTY_OBJECT = Object.freeze({})
  constant ERR_CLOSED_SERVER (line 126) | const ERR_CLOSED_SERVER = 'ERR_CLOSED_SERVER'
  function throwClosedServerError (line 128) | function throwClosedServerError(): never {
  type PluginContainerOptions (line 138) | interface PluginContainerOptions {
  function createEnvironmentPluginContainer (line 150) | async function createEnvironmentPluginContainer<
  type SkipInformation (line 168) | type SkipInformation = {
  class EnvironmentPluginContainer (line 175) | class EnvironmentPluginContainer<Env extends Environment = Environment> {
    method constructor (line 201) | constructor(
    method _updateModuleLoadAddedImports (line 219) | private _updateModuleLoadAddedImports(
    method _getAddedImports (line 229) | private _getAddedImports(id: string): Set<string> | null {
    method getModuleInfo (line 236) | getModuleInfo(id: string): ModuleInfo | null {
    method handleHookPromise (line 266) | private handleHookPromise<T>(maybePromise: undefined | T | Promise<T>) {
    method options (line 275) | get options(): InputOptions {
    method resolveRollupOptions (line 279) | async resolveRollupOptions(): Promise<InputOptions> {
    method _getPluginContext (line 296) | private _getPluginContext(plugin: Plugin) {
    method hookParallel (line 304) | private async hookParallel<H extends AsyncPluginHooks & ParallelPlugin...
    method buildStart (line 328) | async buildStart(_options?: InputOptions): Promise<void> {
    method resolveId (line 352) | async resolveId(
    method load (line 478) | async load(id: string): Promise<LoadResult | null> {
    method transform (line 529) | async transform(
    method watchChange (line 622) | async watchChange(
    method close (line 638) | async close(): Promise<void> {
  class BasicMinimalPluginContext (line 670) | class BasicMinimalPluginContext<Meta = PluginContextMeta> {
    method constructor (line 671) | constructor(
    method pluginName (line 678) | get pluginName(): string {
    method debug (line 682) | debug(rawLog: string | RollupLog | (() => string | RollupLog)): void {
    method info (line 688) | info(rawLog: string | RollupLog | (() => string | RollupLog)): void {
    method warn (line 694) | warn(rawLog: string | RollupLog | (() => string | RollupLog)): void {
    method error (line 704) | error(e: string | RollupError): never {
    method _normalizeRawLog (line 709) | private _normalizeRawLog(
  class MinimalPluginContext (line 717) | class MinimalPluginContext<T extends Environment = Environment>
    method constructor (line 722) | constructor(meta: PluginContextMeta, environment: T) {
  class PluginContext (line 744) | class PluginContext
    method pluginName (line 755) | override get pluginName(): string {
    method constructor (line 759) | constructor(
    method parse (line 768) | parse(code: string, opts: any): ESTree.Program {
    method resolve (line 772) | async resolve(
    method load (line 816) | async load(
    method getModuleInfo (line 842) | getModuleInfo(id: string): ModuleInfo | null {
    method _updateModuleInfo (line 846) | _updateModuleInfo(id: string, { meta }: { meta?: object | null }): void {
    method getModuleIds (line 855) | getModuleIds(): IterableIterator<string> {
    method addWatchFile (line 861) | addWatchFile(id: string): void {
    method getWatchFiles (line 871) | getWatchFiles(): string[] {
    method emitFile (line 875) | emitFile(_assetOrFile: EmittedFile): string {
    method setAssetSource (line 880) | setAssetSource(): void {
    method getFileName (line 884) | getFileName(): string {
    method debug (line 889) | override debug(log: string | RollupLog | (() => string | RollupLog)): ...
    method info (line 894) | override info(log: string | RollupLog | (() => string | RollupLog)): v...
    method warn (line 899) | override warn(
    method error (line 910) | override error(
    method _formatLog (line 919) | private _formatLog<E extends RollupLog>(
    method _warnIncompatibleMethod (line 1021) | _warnIncompatibleMethod(method: string): void {
  class ResolveIdContext (line 1033) | class ResolveIdContext extends PluginContext {
    method constructor (line 1034) | constructor(
  class LoadPluginContext (line 1047) | class LoadPluginContext extends PluginContext {
    method constructor (line 1050) | constructor(container: EnvironmentPluginContainer) {
    method addWatchFile (line 1054) | override addWatchFile(id: string): void {
  class TransformPluginContext (line 1063) | class TransformPluginContext
    method constructor (line 1073) | constructor(
    method _getCombinedSourcemap (line 1092) | _getCombinedSourcemap(): SourceMap | { mappings: '' } | null {
    method getCombinedSourcemap (line 1156) | getCombinedSourcemap(): SourceMap {
    method _updateActiveInfo (line 1168) | _updateActiveInfo(plugin: Plugin, id: string, code: string): void {
  class PluginContainer (line 1182) | class PluginContainer {
    method constructor (line 1183) | constructor(private environments: Record<string, Environment>) {}
    method _getEnvironment (line 1188) | private _getEnvironment(options?: {
    method _getPluginContainer (line 1197) | private _getPluginContainer(options?: {
    method getModuleInfo (line 1204) | getModuleInfo(id: string): ModuleInfo | null {
    method options (line 1242) | get options(): InputOptions {
    method buildStart (line 1250) | async buildStart(_options?: InputOptions): Promise<void> {
    method watchChange (line 1256) | async watchChange(
    method resolveId (line 1265) | async resolveId(
    method load (line 1285) | async load(
    method transform (line 1294) | async transform(
    method close (line 1306) | async close(): Promise<void> {
  function createPluginContainer (line 1320) | function createPluginContainer(

FILE: packages/vite/src/node/server/searchRoot.ts
  constant ROOT_FILES (line 6) | const ROOT_FILES = [
  function hasWorkspacePackageJSON (line 25) | function hasWorkspacePackageJSON(root: string): boolean {
  function hasRootFile (line 38) | function hasRootFile(root: string): boolean {
  function hasPackageJSON (line 42) | function hasPackageJSON(root: string) {
  function searchForPackageRoot (line 50) | function searchForPackageRoot(
  function searchForWorkspaceRoot (line 66) | function searchForWorkspaceRoot(

FILE: packages/vite/src/node/server/send.ts
  type SendOptions (line 25) | interface SendOptions {
  function send (line 32) | function send(

FILE: packages/vite/src/node/server/sourcemap.ts
  type SourceMapLike (line 19) | interface SourceMapLike {
  function computeSourceRoute (line 25) | async function computeSourceRoute(map: SourceMapLike, file: string) {
  function injectSourcesContent (line 36) | async function injectSourcesContent(
  function genSourceMapUrl (line 87) | function genSourceMapUrl(map: SourceMap | string): string {
  function getCodeWithSourcemap (line 94) | function getCodeWithSourcemap(
  function applySourcemapIgnoreList (line 112) | function applySourcemapIgnoreList(
  function extractSourcemapFromFile (line 153) | function extractSourcemapFromFile(
  function createConvertSourceMapReadMap (line 173) | function createConvertSourceMapReadMap(originalFileName: string) {

FILE: packages/vite/src/node/server/transformRequest.ts
  constant ERR_LOAD_URL (line 39) | const ERR_LOAD_URL = 'ERR_LOAD_URL'
  constant ERR_LOAD_PUBLIC_URL (line 40) | const ERR_LOAD_PUBLIC_URL = 'ERR_LOAD_PUBLIC_URL'
  constant ERR_DENIED_ID (line 41) | const ERR_DENIED_ID = 'ERR_DENIED_ID'
  type TransformResult (line 47) | interface TransformResult {
  type TransformOptions (line 56) | interface TransformOptions {
  type TransformOptionsInternal (line 63) | interface TransformOptionsInternal {
  function transformRequest (line 77) | function transformRequest(
  function doTransform (line 149) | async function doTransform(
  function getCachedTransformResult (line 208) | async function getCachedTransformResult(
  function loadAndTransform (line 236) | async function loadAndTransform(
  function handleModuleSoftInvalidation (line 448) | async function handleModuleSoftInvalidation(
  function getModuleTypeFromId (line 551) | function getModuleTypeFromId(id: string): ModuleType | undefined {

FILE: packages/vite/src/node/server/warmup.ts
  function warmupFiles (line 10) | function warmupFiles(
  function warmupFile (line 22) | async function warmupFile(
  function htmlFileToUrl (line 55) | function htmlFileToUrl(file: string, root: string) {
  function fileToUrl (line 63) | function fileToUrl(file: string, root: string) {
  function mapFiles (line 73) | async function mapFiles(files: string[], root: string) {

FILE: packages/vite/src/node/server/ws.ts
  constant HMR_HEADER (line 34) | const HMR_HEADER = 'vite-hmr'
  type WebSocketCustomListener (line 36) | type WebSocketCustomListener<T> = (
  type WebSocketServer (line 43) | interface WebSocketServer extends NormalizedHotChannel {
  type WebSocketClient (line 75) | interface WebSocketClient extends NormalizedHotChannelClient {
  function noop (line 91) | function noop() {
  function hasValidToken (line 104) | function hasValidToken(config: ResolvedConfig, url: URL) {
  function createWebSocketServer (line 118) | function createWebSocketServer(

FILE: packages/vite/src/node/shortcuts.ts
  type ShortcutsState (line 9) | type ShortcutsState<Server = ViteDevServer | PreviewServer> = {
  type BindCLIShortcutsOptions (line 14) | type BindCLIShortcutsOptions<Server = ViteDevServer | PreviewServer> = {
  type CLIShortcut (line 27) | type CLIShortcut<Server = ViteDevServer | PreviewServer> = {
  function bindCLIShortcuts (line 33) | function bindCLIShortcuts<Server extends ViteDevServer | PreviewServer>(
  constant BASE_DEV_SHORTCUTS (line 128) | const BASE_DEV_SHORTCUTS: CLIShortcut<ViteDevServer>[] = [
  method action (line 132) | async action(server) {
  method action (line 139) | action(server) {
  method action (line 147) | action(server) {
  method action (line 154) | action(server) {
  method action (line 161) | async action(server) {
  constant BASE_PREVIEW_SHORTCUTS (line 171) | const BASE_PREVIEW_SHORTCUTS: CLIShortcut<PreviewServer>[] = [
  method action (line 175) | action(server) {
  method action (line 188) | async action(server) {

FILE: packages/vite/src/node/ssr/__tests__/fixtures/bundled-with-sourcemaps/bundle.js
  function covered$1 (line 1) | function covered$1() {
  function uncovered$1 (line 5) | function uncovered$1() {
  function covered (line 15) | function covered() {
  function uncovered (line 19) | function uncovered() {

FILE: packages/vite/src/node/ssr/__tests__/fixtures/multi-source-sourcemaps/dist.js
  function entrypoint (line 6) | function entrypoint() {

FILE: packages/vite/src/node/ssr/__tests__/fixtures/multi-source-sourcemaps/entrypoint.js
  function entrypoint (line 9) | function entrypoint() {

FILE: packages/vite/src/node/ssr/__tests__/ssrLoadModule.spec.ts
  function createDevServer (line 12) | async function createDevServer() {
  method resolveId (line 80) | resolveId(id) {
  method load (line 85) | load(id) {
  method resolveId (line 122) | resolveId(id) {
  method load (line 127) | load(id) {
  method resolveId (line 138) | resolveId(id) {
  method load (line 143) | load(id) {
  function stripRoot (line 191) | function stripRoot(s?: string) {
  method resolveId (line 267) | resolveId(source) {
  method load (line 272) | load(id) {
  method buildStart (line 358) | async buildStart() {
  method resolveId (line 363) | resolveId(source) {
  method load (line 369) | load(id) {
  method transform (line 375) | transform(code, id) {

FILE: packages/vite/src/node/ssr/__tests__/ssrStacktrace.spec.ts
  function createDevServer (line 7) | async function createDevServer() {

FILE: packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts
  function readFixture (line 613) | function readFixture(filename: string) {
  function readFixture (line 638) | function readFixture(filename: string) {
  method resolveId (line 1513) | resolveId(source) {
  method load (line 1518) | load(id) {

FILE: packages/vite/src/node/ssr/fetchModule.ts
  type FetchModuleOptions (line 14) | interface FetchModuleOptions {
  function fetchModule (line 24) | async function fetchModule(
  constant OTHER_SOURCE_MAP_REGEXP (line 118) | const OTHER_SOURCE_MAP_REGEXP = new RegExp(
  function inlineSourceMap (line 123) | function inlineSourceMap(

FILE: packages/vite/src/node/ssr/index.ts
  type SSRTarget (line 4) | type SSRTarget = 'node' | 'webworker'
  type SsrDepOptimizationConfig (line 6) | type SsrDepOptimizationConfig = DepOptimizationConfig
  type SSROptions (line 8) | interface SSROptions {
  type ResolvedSSROptions (line 51) | interface ResolvedSSROptions extends SSROptions {
  function resolveSSROptions (line 66) | function resolveSSROptions(

FILE: packages/vite/src/node/ssr/runnerImport.ts
  type RunnerImportResult (line 6) | interface RunnerImportResult<T> {
  function runnerImport (line 15) | async function runnerImport<T>(

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/cyclic/action.js
  function someAction (line 1) | function someAction() {}

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/cyclic/entry-cyclic.js
  function main (line 1) | async function main() {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/cyclic/entry.js
  function setupCyclic (line 1) | async function setupCyclic() {
  function importAction (line 6) | async function importAction(id) {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/has-error-deep.ts
  function crash (line 1) | function crash(message: string) {
  function main (line 5) | function main(): void {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/invalid-package/test.js
  function test (line 1) | async function test() {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/live-binding/test1/dep.js
  function f (line 1) | function f() {
  function update (line 9) | function update() {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/live-binding/test2/dep.js
  function f (line 1) | function f() {
  function update (line 11) | function update() {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/live-binding/test3/dep.js
  function f (line 1) | function f() {
  function update (line 11) | function update() {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/live-binding/test4/dep.js
  class C (line 1) | class C {
  function update (line 13) | function update() {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/no-this/importee.js
  function foo (line 1) | function foo() {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/oxc-runtime-helper.ts
  function html (line 1) | function html(strings: TemplateStringsArray, ...values: unknown[]) {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/pre-source-mapped-file.js
  function testStack (line 2) | function testStack() {
  function innerTestStack (line 6) | function innerTestStack() {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/string-literal-sourcemap.ts
  function getMessage (line 6) | function getMessage() {
  function throwError (line 10) | function throwError() {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/throws-error-method.ts
  type Foo (line 1) | interface Foo {
  function throwError (line 5) | function throwError(foo?: Foo): void {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/worker.invoke.mjs
  method invoke (line 30) | invoke(data) {

FILE: packages/vite/src/node/ssr/runtime/__tests__/fixtures/worker.mjs
  method connect (line 19) | connect({ onMessage, onDisconnection }) {
  method send (line 23) | send(data) {

FILE: packages/vite/src/node/ssr/runtime/__tests__/server-runtime.spec.ts
  method resolveId (line 442) | resolveId(source) {
  method load (line 450) | load(id) {
  method resolveId (line 482) | resolveId(source) {
  method load (line 487) | load(id) {

FILE: packages/vite/src/node/ssr/runtime/__tests__/server-source-maps.spec.ts
  class Evaluator (line 144) | class Evaluator extends ESModulesEvaluator {
    method runInlinedModule (line 145) | async runInlinedModule(_: ModuleRunnerContext, __: string) {

FILE: packages/vite/src/node/ssr/runtime/__tests__/server-worker-runner.invoke.spec.ts
  function run (line 68) | async function run(id: string) {

FILE: packages/vite/src/node/ssr/runtime/__tests__/server-worker-runner.spec.ts
  method send (line 13) | send(payload: HotPayload) {

FILE: packages/vite/src/node/ssr/runtime/__tests__/utils.ts
  type TestClient (line 14) | interface TestClient {
  function createModuleRunnerTester (line 20) | async function createModuleRunnerTester(
  type FixtureEditor (line 106) | type FixtureEditor = {
  function createFixtureEditor (line 110) | function createFixtureEditor(): FixtureEditor {
  function resolvePath (line 128) | function resolvePath(baseUrl: string, path: string): string {

FILE: packages/vite/src/node/ssr/runtime/serverModuleRunner.ts
  type ServerModuleRunnerOptions (line 19) | interface ServerModuleRunnerOptions extends Omit<
  function createHMROptions (line 37) | function createHMROptions(
  method retrieveFile (line 51) | retrieveFile(id: string) {
  function resolveSourceMapOptions (line 58) | function resolveSourceMapOptions(options: ServerModuleRunnerOptions) {
  method connect (line 91) | connect({ onMessage }) {
  method disconnect (line 101) | disconnect() {
  method send (line 111) | send(payload) {
  function createServerModuleRunner (line 130) | function createServerModuleRunner(

FILE: packages/vite/src/node/ssr/ssrManifestPlugin.ts
  function ssrManifestPlugin (line 19) | function ssrManifestPlugin(): Plugin {

FILE: packages/vite/src/node/ssr/ssrModuleLoader.ts
  type SSRModule (line 17) | type SSRModule = Record<string, any>
  function ssrLoadModule (line 19) | async function ssrLoadModule(
  function instantiateModule (line 41) | async function instantiateModule(
  class SSRCompatModuleRunner (line 75) | class SSRCompatModuleRunner extends ModuleRunner {
    method constructor (line 76) | constructor(private environment: DevEnvironment) {
    method directRequest (line 90) | protected override async directRequest(

FILE: packages/vite/src/node/ssr/ssrStacktrace.ts
  function calculateOffsetOnce (line 7) | function calculateOffsetOnce() {
  function ssrRewriteStacktrace (line 23) | function ssrRewriteStacktrace(
  function rebindErrorStacktrace (line 75) | function rebindErrorStacktrace(e: Error, stacktrace: string): void {
  function ssrFixStacktrace (line 94) | function ssrFixStacktrace(

FILE: packages/vite/src/node/ssr/ssrTransform.ts
  type ModuleRunnerTransformOptions (line 19) | interface ModuleRunnerTransformOptions {
  function ssrTransform (line 34) | async function ssrTransform(
  function ssrTransformJSON (line 47) | async function ssrTransformJSON(
  function ssrTransformScript (line 60) | async function ssrTransformScript(
  function getIdentifierNameOrLiteralValue (line 430) | function getIdentifierNameOrLiteralValue(node: ESTree.ModuleExportName) {
  type Visitors (line 434) | interface Visitors {
  type ESTreeProperty (line 445) | type ESTreeProperty = ESTree.Node & { type: 'Property' }
  function walk (line 456) | function walk(
  function isRefIdentifier (line 647) | function isRefIdentifier(
  type FunctionNodes (line 740) | type FunctionNodes = ESTree.Node & {
  function isFunction (line 746) | function isFunction(node: ESTree.Node): node is FunctionNodes {
  function isBlock (line 751) | function isBlock(node: ESTree.Node) {
  function findParentScope (line 755) | function findParentScope(
  function isInDestructuringAssignment (line 762) | function isInDestructuringAssignment(

FILE: packages/vite/src/node/typeUtils.ts
  type NonNeverKeys (line 7) | type NonNeverKeys<T> = {
  type GetHookContextMap (line 11) | type GetHookContextMap<Plugin> = {
  type RollupPluginHooksContext (line 21) | type RollupPluginHooksContext = GetHookContextMap<RolldownPlugin>
  type RollupPluginHooks (line 22) | type RollupPluginHooks = NonNeverKeys<RollupPluginHooksContext>
  type RequiredExceptFor (line 24) | type RequiredExceptFor<T, K extends keyof T> = Pick<T, K> &

FILE: packages/vite/src/node/utils.ts
  type FilterPattern (line 56) | type FilterPattern =
  constant FLATTEN_ID_HASH_LENGTH (line 86) | const FLATTEN_ID_HASH_LENGTH = 8
  constant FLATTEN_ID_MAX_FILE_LENGTH (line 87) | const FLATTEN_ID_MAX_FILE_LENGTH = 170
  constant NODE_BUILTIN_NAMESPACE (line 103) | const NODE_BUILTIN_NAMESPACE = 'node:'
  constant BUN_BUILTIN_NAMESPACE (line 105) | const BUN_BUILTIN_NAMESPACE = 'bun:'
  function isBuiltin (line 114) | function isBuiltin(builtins: (string | RegExp)[], id: string): boolean {
  function isNodeLikeBuiltin (line 129) | function isNodeLikeBuiltin(id: string): boolean {
  function isNodeBuiltin (line 133) | function isNodeBuiltin(id: string): boolean {
  function isInNodeModules (line 138) | function isInNodeModules(id: string): boolean {
  function moduleListContains (line 142) | function moduleListContains(
  function isOptimizable (line 151) | function isOptimizable(
  constant DEBUG (line 176) | const DEBUG = process.env.DEBUG
  type DebuggerOptions (line 178) | interface DebuggerOptions {
  type ViteDebugScope (line 183) | type ViteDebugScope = `vite:${string}`
  function createDebugger (line 185) | function createDebugger(
  function testCaseInsensitiveFS (line 211) | function testCaseInsensitiveFS() {
  constant VOLUME_RE (line 228) | const VOLUME_RE = /^[A-Z]:/i
  function normalizePath (line 230) | function normalizePath(id: string): string {
  function fsPathFromId (line 234) | function fsPathFromId(id: string): string {
  function fsPathFromUrl (line 241) | function fsPathFromUrl(url: string): string {
  function isParentDirectory (line 254) | function isParentDirectory(dir: string, file: string): boolean {
  function isSameFilePath (line 271) | function isSameFilePath(file1: string, file2: string): boolean {
  function removeImportQuery (line 320) | function removeImportQuery(url: string): string {
  function removeDirectQuery (line 323) | function removeDirectQuery(url: string): string {
  function removeUrlQuery (line 329) | function removeUrlQuery(url: string): string {
  function removeRawQuery (line 332) | function removeRawQuery(url: string): string {
  function injectQuery (line 336) | function injectQuery(url: string, queryToInject: string): string {
  function removeTimestampQuery (line 343) | function removeTimestampQuery(url: string): string {
  function asyncReplace (line 347) | async function asyncReplace(
  function timeFrom (line 364) | function timeFrom(start: number, subtract = 0): string {
  function prettifyUrl (line 379) | function prettifyUrl(url: string, root: string): string {
  function isObject (line 393) | function isObject(value: unknown): value is Record<string, any> {
  function isDefined (line 397) | function isDefined<T>(value: T | undefined | null): value is T {
  function tryStatSync (line 401) | function tryStatSync(file: string): fs.Stats | undefined {
  function lookupFile (line 410) | function lookupFile(
  function isFilePathESM (line 426) | function isFilePathESM(
  function pad (line 449) | function pad(source: string, n = 2): string {
  type Pos (line 454) | type Pos = {
  function posToNumber (line 461) | function posToNumber(source: string, pos: number | Pos): number {
  function numberToPos (line 472) | function numberToPos(source: string, offset: number | Pos): Pos {
  constant MAX_DISPLAY_LEN (line 487) | const MAX_DISPLAY_LEN = 120
  constant ELLIPSIS (line 488) | const ELLIPSIS = '...'
  function generateCodeFrame (line 490) | function generateCodeFrame(
  function isFileReadable (line 570) | function isFileReadable(filename: string): boolean {
  function emptyDir (line 591) | function emptyDir(dir: string, skip?: string[]): void {
  function copyDir (line 629) | function copyDir(srcDir: string, destDir: string): void {
  constant ERR_SYMLINK_IN_RECURSIVE_READDIR (line 646) | const ERR_SYMLINK_IN_RECURSIVE_READDIR =
  function recursiveReaddir (line 648) | async function recursiveReaddir(dir: string): Promise<string[]> {
  function windowsMappedRealpathSync (line 690) | function windowsMappedRealpathSync(path: string) {
  function windowsSafeRealPathSync (line 702) | function windowsSafeRealPathSync(path: string): string {
  function optimizeSafeRealPathSync (line 710) | function optimizeSafeRealPathSync() {
  function ensureWatchedFile (line 739) | function ensureWatchedFile(
  type ImageCandidate (line 757) | interface ImageCandidate {
  function joinSrcset (line 762) | function joinSrcset(ret: ImageCandidate[]) {
  function parseSrcset (line 785) | function parseSrcset(string: string): ImageCandidate[] {
  function processSrcSet (line 799) | function processSrcSet(
  function processSrcSetSync (line 811) | function processSrcSetSync(
  function escapeToLinuxLikePath (line 826) | function escapeToLinuxLikePath(path: string) {
  function unescapeToLinuxLikePath (line 837) | function unescapeToLinuxLikePath(path: string) {
  function combineSourcemaps (line 858) | function combineSourcemaps(
  function unique (line 914) | function unique<T>(arr: T[]): T[] {
  function getLocalhostAddressIfDiffersFromDNS (line 925) | async function getLocalhostAddressIfDiffersFromDNS(): Promise<
  function diffDnsOrderChange (line 938) | function diffDnsOrderChange(
  type Hostname (line 951) | interface Hostname {
  function resolveHostname (line 958) | async function resolveHostname(
  function extractHostnamesFromCerts (line 986) | function extractHostnamesFromCerts(
  function resolveServerUrls (line 1009) | function resolveServerUrls(
  function extractHostnamesFromSubjectAltName (line 1074) | function extractHostnamesFromSubjectAltName(
  function arraify (line 1112) | function arraify<T>(target: T | T[]): T[] {
  function getHash (line 1124) | function getHash(text: Buffer | string, length = 8): string {
  function emptyCssComments (line 1130) | function emptyCssComments(raw: string): string {
  function backwardCompatibleWorkerPlugins (line 1134) | function backwardCompatibleWorkerPlugins(plugins: any) {
  type DeepWritable (line 1144) | type DeepWritable<T> =
  function deepClone (line 1153) | function deepClone<T>(value: T): DeepWritable<T> {
  type MaybeFallback (line 1176) | type MaybeFallback<D, V> = undefined extends V ? Exclude<V, undefined> |...
  type MergeWithDefaultsResult (line 1178) | type MergeWithDefaultsResult<D, V> =
  function mergeWithDefaultsRecursively (line 1199) | function mergeWithDefaultsRecursively<
  function mergeWithDefaults (line 1228) | function mergeWithDefaults<
  function setupRollupOptionCompat (line 1252) | function setupRollupOptionCompat<
  function setupRollupOptionCompatForEnvironment (line 1297) | function setupRollupOptionCompatForEnvironment(environment: any): any {
  function hasBothRollupOptionsAndRolldownOptions (line 1308) | function hasBothRollupOptionsAndRolldownOptions(
  function mergeConfigRecursively (line 1328) | function mergeConfigRecursively(
  function mergeConfig (line 1418) | function mergeConfig<
  function mergeAlias (line 1433) | function mergeAlias(
  function normalizeAlias (line 1447) | function normalizeAlias(o: AliasOptions = []): Alias[] {
  function normalizeSingleAlias (line 1460) | function normalizeSingleAlias({
  function transformStableResult (line 1488) | function transformStableResult(
  type AsyncFlatten (line 1502) | type AsyncFlatten<T extends unknown[]> = T extends (infer U)[]
  function asyncFlatten (line 1506) | async function asyncFlatten<T extends unknown[]>(
  function stripBomTag (line 1516) | function stripBomTag(content: string): string {
  function shouldServeFile (line 1528) | function shouldServeFile(filePath: string, root: string): boolean {
  function hasCorrectCase (line 1539) | function hasCorrectCase(file: string, assets: string): boolean {
  function joinUrlSegments (line 1551) | function joinUrlSegments(a: string, b: string): string {
  function removeLeadingSlash (line 1564) | function removeLeadingSlash(str: string): string {
  function stripBase (line 1568) | function stripBase(path: string, base: string): string {
  function arrayEqual (line 1576) | function arrayEqual(a: any[], b: any[]): boolean {
  function evalValue (line 1585) | function evalValue<T = any>(rawValue: string): T {
  function getNpmPackageName (line 1593) | function getNpmPackageName(importPath: string): string | null {
  function getPkgName (line 1603) | function getPkgName(name: string): string | undefined {
  function escapeRegex (line 1608) | function escapeRegex(str: string): string {
  type CommandType (line 1612) | type CommandType = 'install' | 'uninstall' | 'update'
  function getPackageManagerCommand (line 1613) | function getPackageManagerCommand(
  function isDevServer (line 1634) | function isDevServer(
  function createSerialPromiseQueue (line 1640) | function createSerialPromiseQueue<T>(): {
  function sortObjectKeys (line 1665) | function sortObjectKeys<T extends Record<string, any>>(obj: T): T {
  function displayTime (line 1673) | function displayTime(time: number): string {
  function encodeURIPath (line 1702) | function encodeURIPath(uri: string): string {
  function partialEncodeURIPath (line 1713) | function partialEncodeURIPath(uri: string): string {
  function decodeURIIfPossible (line 1720) | function decodeURIIfPossible(input: string): string | undefined {
  type SigtermCallback (line 1729) | type SigtermCallback = (signal?: 'SIGTERM', exitCode?: number) => Promis...
  function getServerUrlByHost (line 1761) | function getServerUrlByHost(
  function monotonicDateNow (line 1786) | function monotonicDateNow(): number {

FILE: packages/vite/src/node/watch.ts
  function getResolvedOutDirs (line 11) | function getResolvedOutDirs(
  function resolveEmptyOutDir (line 26) | function resolveEmptyOutDir(
  function resolveChokidarOptions (line 51) | function resolveChokidarOptions(
  function convertToWatcherOptions (line 81) | function convertToWatcherOptions(
  class NoopWatcher (line 92) | class NoopWatcher extends EventEmitter implements FSWatcher {
    method constructor (line 93) | constructor(public options: WatchOptions) {
    method add (line 97) | add() {
    method unwatch (line 101) | unwatch() {
    method getWatched (line 105) | getWatched() {
    method ref (line 109) | ref() {
    method unref (line 113) | unref() {
    method close (line 117) | async close() {
  function createNoopWatcher (line 122) | function createNoopWatcher(options: WatchOptions): FSWatcher {

FILE: packages/vite/src/shared/__tests__/forwardConsole.spec.ts
  function sampleFn (line 43) | function sampleFn() {

FILE: packages/vite/src/shared/builtin.ts
  function createIsBuiltin (line 1) | function createIsBuiltin(

FILE: packages/vite/src/shared/constants.ts
  constant VALID_ID_PREFIX (line 4) | const VALID_ID_PREFIX = `/@id/`
  constant NULL_BYTE_PLACEHOLDER (line 17) | const NULL_BYTE_PLACEHOLDER = `__x00__`
  constant SOURCEMAPPING_URL (line 19) | let SOURCEMAPPING_URL = 'sourceMa'
  constant MODULE_RUNNER_SOURCEMAPPING_SOURCE (line 22) | const MODULE_RUNNER_SOURCEMAPPING_SOURCE =
  constant ERR_OUTDATED_OPTIMIZED_DEP (line 25) | const ERR_OUTDATED_OPTIMIZED_DEP = 'ERR_OUTDATED_OPTIMIZED_DEP'

FILE: packages/vite/src/shared/forwardConsole.ts
  type ForwardConsoleLogLevel (line 4) | type ForwardConsoleLogLevel =
  type ForwardConsoleOptions (line 12) | interface ForwardConsoleOptions {
  type ResolvedForwardConsoleOptions (line 17) | interface ResolvedForwardConsoleOptions {
  function setupForwardConsoleHandler (line 23) | function setupForwardConsoleHandler(
  function formatConsoleArgs (line 90) | function formatConsoleArgs(args: unknown[]): string {
  function stringifyConsoleArg (line 161) | function stringifyConsoleArg(value: unknown): string {

FILE: packages/vite/src/shared/hmr.ts
  type CustomListenersMap (line 6) | type CustomListenersMap = Map<string, ((data: any) => void)[]>
  type HotModule (line 8) | interface HotModule {
  type HotCallback (line 13) | interface HotCallback {
  type HMRLogger (line 19) | interface HMRLogger {
  class HMRContext (line 24) | class HMRContext implements ViteHotContext {
    method constructor (line 27) | constructor(
    method data (line 60) | get data(): any {
    method accept (line 64) | accept(deps?: any, callback?: any): void {
    method acceptExports (line 80) | acceptExports(
    method dispose (line 87) | dispose(cb: (data: any) => void): void {
    method prune (line 91) | prune(cb: (data: any) => void): void {
    method decline (line 97) | decline(): void {}
    method invalidate (line 99) | invalidate(message: string): void {
    method on (line 117) | on<T extends string>(
    method off (line 130) | off<T extends string>(
    method send (line 150) | send<T extends string>(event: T, data?: InferCustomEventPayload<T>): v...
    method acceptDeps (line 154) | private acceptDeps(
  class HMRClient (line 170) | class HMRClient {
    method constructor (line 180) | constructor(
    method notifyListeners (line 191) | public async notifyListeners(event: string, data: any): Promise<void> {
    method send (line 198) | public send(payload: HotPayload): void {
    method clear (line 204) | public clear(): void {
    method prunePaths (line 216) | public async prunePaths(paths: string[]): Promise<void> {
    method warnFailedUpdate (line 233) | protected warnFailedUpdate(err: Error, path: string | string[]): void {
    method queueUpdate (line 252) | public async queueUpdate(payload: Update): Promise<void> {
    method fetchUpdate (line 264) | private async fetchUpdate(update: Update): Promise<(() => void) | unde...

FILE: packages/vite/src/shared/hmrHandler.ts
  function createHMRHandler (line 4) | function createHMRHandler(
  class Queue (line 11) | class Queue {
    method enqueue (line 19) | enqueue(promise: () => Promise<void>): Promise<void> {
    method dequeue (line 30) | dequeue(): boolean {

FILE: packages/vite/src/shared/invokeMethods.ts
  type FetchFunctionOptions (line 1) | interface FetchFunctionOptions {
  type FetchResult (line 6) | type FetchResult =
  type CachedFetchResult (line 11) | interface CachedFetchResult {
  type ExternalFetchResult (line 19) | interface ExternalFetchResult {
  type ViteFetchResult (line 33) | interface ViteFetchResult {
  type InvokeSendData (line 59) | type InvokeSendData<
  type InvokeResponseData (line 68) | type InvokeResponseData<
  type InvokeMethods (line 79) | type InvokeMethods = {

FILE: packages/vite/src/shared/moduleRunnerTransport.ts
  type ModuleRunnerTransportHandlers (line 10) | type ModuleRunnerTransportHandlers = {
  type ModuleRunnerTransport (line 18) | interface ModuleRunnerTransport {
  type InvokeableModuleRunnerTransport (line 26) | type InvokeableModuleRunnerTransport = Omit<ModuleRunnerTransport, 'invo...
  function reviveInvokeError (line 33) | function reviveInvokeError(e: any) {
  method invoke (line 49) | async invoke(name, data) {
  method connect (line 85) | connect({ onMessage, onDisconnection }) {
  method disconnect (line 113) | disconnect() {
  method send (line 124) | send(data) {
  method invoke (line 127) | async invoke<T extends keyof InvokeMethods>(
  type NormalizedModuleRunnerTransport (line 177) | interface NormalizedModuleRunnerTransport {
  method connect (line 199) | async connect(onMessage) {
  method disconnect (line 223) | async disconnect() {
  method send (line 233) | async send(data) {
  method invoke (line 245) | async invoke(name, data) {
  method connect (line 271) | async connect({ onMessage, onDisconnection }) {
  method disconnect (line 319) | disconnect() {
  method send (line 323) | send(data) {

FILE: packages/vite/src/shared/ssrTransform.ts
  type DefineImportMetadata (line 1) | interface DefineImportMetadata {
  type SSRImportMetadata (line 14) | interface SSRImportMetadata extends DefineImportMetadata {
  function analyzeImportedModDifference (line 23) | function analyzeImportedModDifference(

FILE: packages/vite/src/shared/utils.ts
  function wrapId (line 11) | function wrapId(id: string): string {
  function unwrapId (line 20) | function unwrapId(id: string): string {
  function slash (line 27) | function slash(p: string): string {
  function cleanUrl (line 32) | function cleanUrl(url: string): string {
  function splitFileAndPostfix (line 36) | function splitFileAndPostfix(path: string): {
  function isPrimitive (line 44) | function isPrimitive(value: unknown): boolean {
  function withTrailingSlash (line 48) | function withTrailingSlash(path: string): string {
  function getAsyncFunctionDeclarationPaddingLineCount (line 61) | function getAsyncFunctionDeclarationPaddingLineCount(): number {
  type PromiseWithResolvers (line 71) | interface PromiseWithResolvers<T> {
  function promiseWithResolvers (line 76) | function promiseWithResolvers<T>(): PromiseWithResolvers<T> {

FILE: packages/vite/src/types/alias.d.ts
  type Alias (line 32) | interface Alias {
  type MapToFunction (line 44) | type MapToFunction<T> = T extends Function ? T : never
  type ResolverFunction (line 46) | type ResolverFunction = MapToFunction<FunctionPluginHooks['resolveId']>
  type ResolverObject (line 48) | interface ResolverObject {
  type AliasOptions (line 62) | type AliasOptions = readonly Alias[] | { [find: string]: string }

FILE: packages/vite/src/types/anymatch.d.ts
  type AnymatchFn (line 1) | type AnymatchFn = (testString: string) => boolean
  type AnymatchPattern (line 2) | type AnymatchPattern = string | RegExp | AnymatchFn
  type AnymatchMatcher (line 3) | type AnymatchMatcher = AnymatchPattern | AnymatchPattern[]

FILE: packages/vite/src/types/chokidar.d.ts
  class FSWatcher (line 12) | class FSWatcher extends EventEmitter implements fs.FSWatcher {
  type WatchOptions (line 97) | interface WatchOptions {
  type AwaitWriteFinishOptions (line 201) | interface AwaitWriteFinishOptions {

FILE: packages/vite/src/types/commonjs.d.ts
  type RollupCommonJSOptions (line 8) | interface RollupCommonJSOptions {

FILE: packages/vite/src/types/connect.d.ts
  type ServerHandle (line 14) | type ServerHandle = HandleFunction | http.Server
  class IncomingMessage (line 16) | class IncomingMessage extends http.IncomingMessage {
  type NextFunction (line 20) | type NextFunction = (err?: any) => void
  type SimpleHandleFunction (line 22) | type SimpleHandleFunction = (
  type NextHandleFunction (line 26) | type NextHandleFunction = (
  type ErrorHandleFunction (line 31) | type ErrorHandleFunction = (
  type HandleFunction (line 37) | type HandleFunction =
  type ServerStackItem (line 42) | interface ServerStackItem {
  type Server (line 47) | interface Server extends NodeJS.EventEmitter {

FILE: packages/vite/src/types/dynamicImportVars.d.ts
  type RollupDynamicImportVarsOptions (line 1) | interface RollupDynamicImportVarsOptions {

FILE: packages/vite/src/types/ws.d.ts
  class WebSocket (line 34) | class WebSocket extends EventEmitter {
  type WebSocketAlias (line 303) | interface WebSocketAlias extends WebSocket {}
  type RawData (line 309) | type RawData = Buffer | ArrayBuffer | Buffer[]
  type Data (line 314) | type Data = string | Buffer | ArrayBuffer | Buffer[]
  type CertMeta (line 319) | type CertMeta = string | string[] | Buffer | Buffer[]
  type VerifyClientCallbackSync (line 326) | type VerifyClientCallbackSync = (info: {
  type VerifyClientCallbackAsync (line 337) | type VerifyClientCallbackAsync = (
  type ClientOptions (line 347) | interface ClientOptions extends SecureContextOptions {
  type PerMessageDeflateOptions (line 367) | interface PerMessageDeflateOptions {
  type Event (line 390) | interface Event {
  type ErrorEvent (line 395) | interface ErrorEvent {
  type CloseEvent (line 402) | interface CloseEvent {
  type MessageEvent (line 410) | interface MessageEvent {
  type EventListenerOptions (line 416) | interface EventListenerOptions {
  type ServerOptions (line 420) | interface ServerOptions {
  type AddressInfo (line 442) | interface AddressInfo {
  class Server (line 449) | class Server<T extends WebSocket = WebSocket> extends EventEmitter {
  type WebSocketServer (line 553) | interface WebSocketServer extends Server {}
  type WebSocket (line 555) | interface WebSocket extends WebSocketAlias {}

FILE: packages/vite/types/customEvent.d.ts
  type CustomEventMap (line 8) | interface CustomEventMap {
  type WebSocketConnectionPayload (line 28) | interface WebSocketConnectionPayload {
  type InvalidatePayload (line 39) | interface InvalidatePayload {
  type ForwardConsolePayload (line 45) | type ForwardConsolePayload =
  type InferCustomEventPayload (line 73) | type InferCustomEventPayload<T extends string> =
  type CustomEventName (line 79) | type CustomEventName = keyof CustomEventMap | (string & {})

FILE: packages/vite/types/hmrPayload.d.ts
  type HMRPayload (line 2) | type HMRPayload = HotPayload
  type HotPayload (line 3) | type HotPayload =
  type ConnectedPayload (line 12) | interface ConnectedPayload {
  type PingPayload (line 16) | interface PingPayload {
  type UpdatePayload (line 20) | interface UpdatePayload {
  type Update (line 25) | interface Update {
  type PrunePayload (line 46) | interface PrunePayload {
  type FullReloadPayload (line 51) | interface FullReloadPayload {
  type CustomPayload (line 58) | interface CustomPayload {
  type ErrorPayload (line 64) | interface ErrorPayload {

FILE: packages/vite/types/hot.d.ts
  type ModuleNamespace (line 3) | type ModuleNamespace = Record<string, any> & {
  type ViteHotContext (line 7) | interface ViteHotContext {

FILE: packages/vite/types/importGlob.d.ts
  type ImportGlobOptions (line 1) | interface ImportGlobOptions<
  type GeneralImportGlobOptions (line 37) | type GeneralImportGlobOptions = ImportGlobOptions<boolean, string>
  type Worker (line 46) | interface Worker {}
  type KnownAsTypeMap (line 49) | interface KnownAsTypeMap {
  type ImportGlobFunction (line 55) | interface ImportGlobFunction {

FILE: packages/vite/types/importMeta.d.ts
  type ViteTypeOptions (line 7) | interface ViteTypeOptions {
  type ImportMetaEnvFallbackKey (line 11) | type ImportMetaEnvFallbackKey =
  type ImportMetaEnv (line 14) | interface ImportMetaEnv extends Record<ImportMetaEnvFallbackKey, any> {
  type ImportMeta (line 22) | interface ImportMeta {

FILE: packages/vite/types/internal/cssPreprocessorOptions.d.ts
  type IsAny (line 15) | type IsAny<T> = boolean extends (T extends never ? true : false) ? true ...
  type DartSassStringOptionsAsync (line 17) | type DartSassStringOptionsAsync = DartSass.StringOptions<'async'>
  type SassEmbeddedStringOptionsAsync (line 18) | type SassEmbeddedStringOptionsAsync = SassEmbedded.StringOptions<'async'>
  type SassStringOptionsAsync (line 19) | type SassStringOptionsAsync =
  type SassModernPreprocessBaseOptions (line 24) | type SassModernPreprocessBaseOptions = Omit<
  type LessPreprocessorBaseOptions (line 29) | type LessPreprocessorBaseOptions = Omit<
  type StylusPreprocessorBaseOptions (line 34) | type StylusPreprocessorBaseOptions = Omit<
  type HTMLLinkElement (line 43) | interface HTMLLinkElement {}

FILE: packages/vite/types/internal/esbuildOptions.d.ts
  type EsbuildTarget (line 8) | type EsbuildTarget = string | string[]
  type EsbuildLoader (line 10) | type EsbuildLoader = esbuild.Loader
  type EsbuildTransformOptions (line 11) | type EsbuildTransformOptions = esbuild.TransformOptions
  type EsbuildTransformResult (line 12) | type EsbuildTransformResult = esbuild.TransformResult
  type EsbuildMessage (line 14) | type EsbuildMessage = esbuild.Message
  type DepsOptimizerEsbuildOptions (line 16) | type DepsOptimizerEsbuildOptions = Omit<

FILE: packages/vite/types/internal/lightningcssOptions.d.ts
  type LightningCSSOptions (line 8) | type LightningCSSOptions = Omit<

FILE: packages/vite/types/internal/rollupTypeCompat.d.ts
  type RollupBuild (line 6) | type RollupBuild = Rolldown.RolldownBuild
  type RollupOptions (line 9) | type RollupOptions = Rolldown.RolldownOptions
  type RollupOutput (line 12) | type RollupOutput = Rolldown.RolldownOutput
  type RollupPlugin (line 15) | type RollupPlugin = Rolldown.RolldownPlugin
  type RollupPluginOption (line 18) | type RollupPluginOption = Rolldown.RolldownPluginOption
  type RollupWatcher (line 21) | type RollupWatcher = Rolldown.RolldownWatcher
  type RollupWatcherEvent (line 24) | type RollupWatcherEvent = Rolldown.RolldownWatcherEvent

FILE: packages/vite/types/internal/terserOptions.d.ts
  type TerserMinifyOptions (line 10) | type TerserMinifyOptions = Terser.MinifyOptions
  type TerserMinifyOutput (line 11) | type TerserMinifyOutput = Terser.MinifyOutput

FILE: packages/vite/types/metadata.d.ts
  type AssetMetadata (line 1) | interface AssetMetadata {
  type ChunkMetadata (line 6) | interface ChunkMetadata {
  type CustomPluginOptionsVite (line 13) | interface CustomPluginOptionsVite {
  type OutputAsset (line 33) | interface OutputAsset {
  type RenderedChunk (line 37) | interface RenderedChunk {
  type OutputChunk (line 40) | interface OutputChunk {
  type CustomPluginOptions (line 44) | interface CustomPluginOptions {

FILE: playground/alias/vite.config.js
  method customResolver (line 32) | customResolver(id) {

FILE: playground/assets-sanitize/index.js
  function setData (line 3) | function setData(classname, file) {

FILE: playground/assets/asset/main.js
  function text (line 1) | function text(el, text) {

FILE: playground/assets/nested/test.js
  class a (line 1) | class a {

FILE: playground/assets/static/raw.ts
  function other (line 1) | function other() {

FILE: playground/assets/vite.config-runtime-base.js
  method transformIndexHtml (line 29) | transformIndexHtml(_, ctx) {
  method renderBuiltUrl (line 44) | renderBuiltUrl(filename, { hostType, type }) {

FILE: playground/backend-integration/frontend/entrypoints/main.ts
  function colorHeading (line 17) | function colorHeading() {

FILE: playground/backend-integration/vite.config.js
  function BackendIntegrationExample (line 9) | function BackendIntegrationExample() {

FILE: playground/base-conflict/vite.config.ts
  constant VIRTUAL_MODULE_ID (line 8) | const VIRTUAL_MODULE_ID = 'absolute-importer'
  constant RESOLVED_VIRTUAL_MODULE_ID (line 9) | const RESOLVED_VIRTUAL_MODULE_ID = '\0' + VIRTUAL_MODULE_ID
  method resolveId (line 17) | resolveId(id) {
  method load (line 22) | load(id) {

FILE: playground/cli-module/__tests__/serve.ts
  function serve (line 18) | async function serve() {
  function startedOnPort (line 117) | async function startedOnPort(serverProcess, port, timeout) {
  function resolvedOrTimeout (line 145) | async function resolvedOrTimeout(promise, ms, errorMessage) {

FILE: playground/cli/__tests__/serve.ts
  function serve (line 21) | async function serve() {
  function startedOnPort (line 120) | async function startedOnPort(serverProcess, port, timeout) {
  function resolvedOrTimeout (line 148) | async function resolvedOrTimeout(promise, ms, errorMessage) {

FILE: playground/client-reload/__tests__/client-reload.spec.ts
  function testClientReload (line 12) | async function testClientReload(serverOptions: ServerOptions) {

FILE: playground/client-reload/__tests__/serve.ts
  function serve (line 2) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/csp/vite.config.js
  method config (line 41) | config() {
  method configureServer (line 49) | configureServer({ transformIndexHtml, middlewares }) {
  method configurePreviewServer (line 58) | configurePreviewServer({ middlewares }) {

FILE: playground/css-codesplit/shared-css-empty-1.js
  function shouldBeTreeshaken_1 (line 1) | function shouldBeTreeshaken_1() {

FILE: playground/css-codesplit/shared-css-empty-2.js
  function shouldBeTreeshaken_2 (line 1) | function shouldBeTreeshaken_2() {

FILE: playground/css-codesplit/shared-css-main.js
  function shouldBeTreeshaken_0 (line 7) | function shouldBeTreeshaken_0() {

FILE: playground/css-dynamic-import/__tests__/css-dynamic-import.spec.ts
  function withBuild (line 20) | async function withBuild(base: string, fn: () => Promise<void>) {
  function withServe (line 33) | async function withServe(base: string, fn: () => Promise<void>) {
  function getLinks (line 47) | async function getLinks() {

FILE: playground/css-dynamic-import/__tests__/serve.ts
  function serve (line 6) | async function serve() {

FILE: playground/css-lightningcss-proxy/__tests__/serve.ts
  function serve (line 10) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/css-lightningcss-proxy/server.js
  constant DYNAMIC_STYLES (line 8) | const DYNAMIC_STYLES = `
  function createServer (line 16) | async function createServer(root = process.cwd(), hmrPort) {

FILE: playground/css-lightningcss/main.js
  function text (line 22) | function text(el, text) {

FILE: playground/css-sourcemap/vite.config.js
  method configureServer (line 42) | configureServer(server) {

FILE: playground/css/__tests__/postcss-plugins-different-dir/serve.ts
  function serve (line 6) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/css/async/base.js
  function createButton (line 3) | function createButton(className) {

FILE: playground/css/lightningcss-plugins.js
  function obtainLightningCssAst (line 13) | function obtainLightningCssAst(filename) {
  function testDirDep (line 31) | function testDirDep() {
  function testSourceInput (line 59) | function testSourceInput() {
  function nestedLikePlugin (line 115) | function nestedLikePlugin() {
  function testInjectUrl (line 176) | function testInjectUrl() {

FILE: playground/css/main.js
  function text (line 65) | function text(el, text) {
  function appendLinkStylesheet (line 69) | function appendLinkStylesheet(href) {

FILE: playground/css/postcss-caching/blue-app/main.js
  function text (line 5) | function text(el, text) {

FILE: playground/css/postcss-caching/blue-app/postcss.config.js
  function replacePinkWithBlue (line 5) | function replacePinkWithBlue() {

FILE: playground/css/postcss-caching/green-app/main.js
  function text (line 5) | function text(el, text) {

FILE: playground/css/postcss-caching/green-app/postcss.config.js
  function replacePinkWithGreen (line 5) | function replacePinkWithGreen() {

FILE: playground/css/postcss-caching/serve.ts
  function serve (line 6) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/css/postcss.config.js
  function testDirDep (line 14) | function testDirDep() {
  function testSourceInput (line 48) | function testSourceInput() {
  function testInjectUrl (line 65) | function testInjectUrl() {

FILE: playground/css/treeshake-module/a.js
  function a (line 3) | function a() {

FILE: playground/css/treeshake-module/b.js
  function b (line 3) | function b() {

FILE: playground/css/treeshake-scoped/a.js
  function a (line 3) | function a() {

FILE: playground/css/treeshake-scoped/b.js
  function b (line 3) | function b() {

FILE: playground/css/treeshake-scoped/c.js
  function c (line 3) | function c() {
  function cUsed (line 7) | function cUsed() {

FILE: playground/css/treeshake-scoped/d.js
  function d (line 3) | function d() {

FILE: playground/css/treeshake-scoped/order/a.js
  function a (line 5) | function a() {

FILE: playground/css/vite.config.js
  method resolveId (line 22) | async resolveId(id, importer) {
  method manualChunks (line 51) | manualChunks(id) {
  method canonicalize (line 107) | canonicalize(url) {
  method load (line 112) | load() {
  method canonicalize (line 120) | canonicalize(url) {
  method load (line 125) | load() {

FILE: playground/data-uri/vite.config.js
  method resolveId (line 8) | resolveId(id) {
  method load (line 13) | load(id) {

FILE: playground/define/vite.config.js
  function testEnvQueryParamsPlugin (line 6) | function testEnvQueryParamsPlugin() {

FILE: playground/devtools/src/counter.ts
  function useCounter (line 3) | function useCounter() {

FILE: playground/dynamic-import-inline/src/foo.js
  function foo (line 1) | function foo() {

FILE: playground/dynamic-import/(app)/main.js
  function hello (line 1) | function hello() {

FILE: playground/dynamic-import/alias/hello.js
  function hello (line 1) | function hello() {

FILE: playground/dynamic-import/alias/hi.js
  function hi (line 1) | function hi() {

FILE: playground/dynamic-import/nested/hello.js
  function hello (line 1) | function hello() {

FILE: playground/dynamic-import/nested/index.js
  function setView (line 4) | async function setView(view) {
  function text (line 77) | function text(el, text) {
  method lazy (line 184) | async lazy() {

FILE: playground/dynamic-import/vite.config.js
  method writeBundle (line 11) | writeBundle() {

FILE: playground/env/index.js
  function text (line 3) | function text(el, text) {

FILE: playground/environment-react-ssr/src/entry-client.tsx
  function main (line 5) | async function main() {

FILE: playground/environment-react-ssr/src/entry-server.tsx
  function importHtml (line 16) | async function importHtml() {

FILE: playground/environment-react-ssr/src/root.tsx
  function Root (line 3) | function Root() {

FILE: playground/environment-react-ssr/vite.config.ts
  method configureServer (line 19) | configureServer(server) {
  method buildApp (line 25) | async buildApp(builder) {
  method buildApp (line 63) | async buildApp(builder) {
  function vitePluginSsrMiddleware (line 73) | function vitePluginSsrMiddleware({

FILE: playground/external/vite.config.js
  method configureServer (line 47) | configureServer({ middlewares }) {
  method configurePreviewServer (line 50) | configurePreviewServer({ middlewares }) {

FILE: playground/forward-console/__test__/forward-console.spec.ts
  function normalizeLogs (line 5) | function normalizeLogs(logs: string[]) {

FILE: playground/forward-console/fixtures/throw-dep/index.js
  function throwDepError (line 1) | function throwDepError() {

FILE: playground/forward-console/src/main.ts
  type SomePadding (line 3) | type SomePadding = {
  type AnotherPadding (line 25) | type AnotherPadding = {
  function testError (line 29) | function testError() {
  function testUnhandledRejection (line 33) | function testUnhandledRejection() {
  function testDepError (line 37) | function testDepError() {
  function testConsoleError (line 41) | function testConsoleError() {

FILE: playground/fs-serve/__tests__/commonTests.ts
  function ArrayFromAsync (line 542) | async function ArrayFromAsync<T>(

FILE: playground/fs-serve/root/svgVirtualModulePlugin.ts
  function svgVirtualModulePlugin (line 5) | function svgVirtualModulePlugin(): Plugin {

FILE: playground/fs-serve/root/vite.config-base.js
  constant BASE (line 5) | const BASE = '/base/'

FILE: playground/glob-import/vite.config.ts
  method transform (line 22) | transform(code: string, id: string) {

FILE: playground/hmr-full-bundle-mode/hmr.js
  function text (line 9) | function text(el, text) {

FILE: playground/hmr-full-bundle-mode/main.js
  function text (line 22) | function text(el, text) {

FILE: playground/hmr-full-bundle-mode/vite.config.ts
  function waitBundleCompleteUntilAccess (line 10) | function waitBundleCompleteUntilAccess(): Plugin {
  function delayTransformComment (line 35) | function delayTransformComment(): Plugin {
  type PromiseWithResolvers (line 46) | interface PromiseWithResolvers<T> {
  function promiseWithResolvers (line 51) | function promiseWithResolvers<T>(): PromiseWithResolvers<T> {

FILE: playground/hmr-ssr/__tests__/hmr-ssr.spec.ts
  function hotEventsPlugin (line 57) | function hotEventsPlugin(): Plugin {
  type UntilBrowserLogAfterCallback (line 951) | type UntilBrowserLogAfterCallback = (logs: string[]) => PromiseLike<void...
  function untilConsoleLogAfter (line 964) | async function untilConsoleLogAfter(
  function untilConsoleLog (line 982) | async function untilConsoleLog(
  function isWatched (line 1063) | function isWatched(server: ViteDevServer, watchedFile: string) {
  function waitForWatcher (line 1077) | function waitForWatcher(server: ViteDevServer, watched: string) {
  function setupModuleRunner (line 1090) | async function setupModuleRunner(
  class HMRMockLogger (line 1157) | class HMRMockLogger {
    method log (line 1158) | log(...msg: unknown[]) {
    method debug (line 1164) | debug(...msg: unknown[]) {
    method error (line 1169) | error(msg: string) {

FILE: playground/hmr-ssr/counter/index.ts
  function increment (line 2) | function increment() {
  function getCount (line 5) | function getCount() {
  function neverCalled (line 9) | function neverCalled() {

FILE: playground/hmr-ssr/event.d.ts
  type CustomEventMap (line 4) | interface CustomEventMap {

FILE: playground/hmr-ssr/hmr.ts
  function text (line 105) | function text(el, text) {
  function setImgSrc (line 109) | function setImgSrc(el, src) {
  function removeCb (line 113) | function removeCb({ msg }) {
  function hmr (line 118) | function hmr(key: string, value: unknown) {

FILE: playground/hmr-ssr/non-tested/index.js
  function main (line 3) | function main() {

FILE: playground/hmr-ssr/queries/index.js
  function hmr (line 7) | function hmr(key, value) {

FILE: playground/hmr-ssr/self-accept-within-circular/c.js
  function render (line 5) | function render(content) {

FILE: playground/hmr-ssr/unresolved.ts
  function hmr (line 18) | function hmr(key: string, value: unknown) {

FILE: playground/hmr-ssr/vite.config.ts
  method assetsInlineLimit (line 9) | assetsInlineLimit(filePath) {
  method hotUpdate (line 18) | async hotUpdate({ file, read, server }) {
  method configureServer (line 26) | configureServer(server) {
  function virtualPlugin (line 41) | function virtualPlugin(): Plugin {
  function queryPlugin (line 72) | function queryPlugin(): Plugin {
  function transformCountPlugin (line 87) | function transformCountPlugin(): Plugin {

FILE: playground/hmr/counter/index.ts
  function neverCalled (line 10) | function neverCalled() {

FILE: playground/hmr/css-link/plugin.ts
  function TestCssLinkPlugin (line 5) | function TestCssLinkPlugin(): Plugin {

FILE: playground/hmr/event.d.ts
  type CustomEventMap (line 4) | interface CustomEventMap {

FILE: playground/hmr/hmr.ts
  function text (line 156) | function text(el, text) {
  function setImgSrc (line 160) | function setImgSrc(el, src) {
  function removeCb (line 164) | function removeCb({ msg }) {

FILE: playground/hmr/self-accept-within-circular/c.js
  function render (line 5) | function render(content) {

FILE: playground/hmr/vite.config.ts
  method assetsInlineLimit (line 30) | assetsInlineLimit(filePath) {
  method hotUpdate (line 39) | async hotUpdate({ file, read }) {
  method configureServer (line 47) | configureServer(server) {
  function virtualPlugin (line 64) | function virtualPlugin(): Plugin {
  function transformCountPlugin (line 94) | function transformCountPlugin(): Plugin {
  function watchCssDepsPlugin (line 106) | function watchCssDepsPlugin(): Plugin {
  function hotEventsPlugin (line 123) | function hotEventsPlugin(): Plugin {

FILE: playground/html/__tests__/html.spec.ts
  function fetchHtml (line 15) | function fetchHtml(p: string) {
  function testPage (line 21) | function testPage(isNested: boolean) {

FILE: playground/html/inline/common.js
  function log (line 4) | function log(name) {

FILE: playground/html/nested/asset/main.js
  function text (line 1) | function text(el, text) {

FILE: playground/html/vite.config.js
  method handler (line 69) | handler(html, { filename }) {
  method transformIndexHtml (line 99) | transformIndexHtml(html) {
  method transformIndexHtml (line 105) | transformIndexHtml() {
  method transformIndexHtml (line 122) | transformIndexHtml(html) {
  method transformIndexHtml (line 138) | transformIndexHtml(_, ctx) {
  method transformIndexHtml (line 153) | transformIndexHtml(_, ctx) {
  method transformIndexHtml (line 168) | transformIndexHtml(_, ctx) {
  method transformIndexHtml (line 183) | transformIndexHtml() {
  method transformIndexHtml (line 200) | transformIndexHtml(_, ctx) {
  method handler (line 223) | handler() {
  method handler (line 241) | handler(_, ctx) {
  method handler (line 260) | handler(html, ctx) {
  function serveExternalPathPlugin (line 274) | function serveExternalPathPlugin() {

FILE: playground/js-sourcemap/__tests__/js-sourcemap.spec.ts
  function getDebugIdFromString (line 258) | function getDebugIdFromString(input: string): string | undefined {

FILE: playground/js-sourcemap/foo-with-sourcemap-plugin.ts
  function transformFooWithInlineSourceMap (line 8) | function transformFooWithInlineSourceMap(): Plugin {

FILE: playground/js-sourcemap/test-ssr-dev.js
  function runTest (line 5) | async function runTest() {
  function getError (line 28) | async function getError(f) {

FILE: playground/js-sourcemap/vite.config.js
  method banner (line 42) | banner(chunk) {

FILE: playground/js-sourcemap/with-define-object-ssr.ts
  function error (line 1) | function error() {
  function errorInner (line 5) | function errorInner() {

FILE: playground/js-sourcemap/with-define-object.ts
  function main (line 3) | function main() {
  function mainInner (line 7) | function mainInner() {

FILE: playground/js-sourcemap/zoo-with-sourcemap-plugin.ts
  method transform (line 6) | transform(code, id) {

FILE: playground/legacy/__tests__/client-and-ssr/serve.ts
  function serve (line 8) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/legacy/__tests__/ssr/serve.ts
  function serve (line 8) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/legacy/async.js
  function fn (line 1) | function fn() {

FILE: playground/legacy/entry-server-sequential.js
  function render (line 2) | async function render() {

FILE: playground/legacy/entry-server.js
  function render (line 2) | async function render() {

FILE: playground/legacy/immutable-chunk.js
  function fn (line 11) | function fn() {

FILE: playground/legacy/main.js
  function run (line 5) | async function run() {
  function text (line 78) | function text(el, text) {

FILE: playground/legacy/vite.config-multiple-output.js
  method assetFileNames (line 12) | assetFileNames() {
  method assetFileNames (line 19) | assetFileNames() {

FILE: playground/legacy/vite.config.js
  method chunkFileNames (line 26) | chunkFileNames(chunkInfo) {
  method __test__ (line 42) | __test__() {

FILE: playground/lib/__tests__/serve.ts
  function serve (line 21) | async function serve(): Promise<{ close(): Promise<void> }> {
  function setupConsoleWarnCollector (line 147) | function setupConsoleWarnCollector() {

FILE: playground/lib/src/main-multiple-output.js
  function message (line 4) | async function message(sel) {

FILE: playground/lib/src/main2.js
  function message (line 3) | async function message(sel) {

FILE: playground/lib/src/sub-multiple-output.js
  function message (line 4) | async function message(sel) {

FILE: playground/lib/vite.config.js
  method generateBundle (line 34) | generateBundle() {

FILE: playground/module-graph/vite.config.ts
  function slowModulePlugin (line 8) | function slowModulePlugin(): Plugin {

FILE: playground/multiple-entrypoints/entrypoints/a0.js
  function other (line 26) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a1.js
  function other (line 27) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a10.js
  function other (line 18) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a11.js
  function other (line 17) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a12.js
  function other (line 16) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a13.js
  function other (line 15) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a14.js
  function other (line 14) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a15.js
  function other (line 13) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a16.js
  function other (line 12) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a17.js
  function other (line 11) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a18.js
  function other (line 10) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a19.js
  function other (line 9) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a2.js
  function other (line 26) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a20.js
  function other (line 8) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a21.js
  function other (line 7) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a22.js
  function other (line 6) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a23.js
  function other (line 5) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a24.js
  function other (line 3) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a3.js
  function other (line 25) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a4.js
  function other (line 24) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a5.js
  function other (line 23) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a6.js
  function other (line 22) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a7.js
  function other (line 21) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a8.js
  function other (line 20) | function other() {

FILE: playground/multiple-entrypoints/entrypoints/a9.js
  function other (line 19) | function other() {

FILE: playground/nested-deps/test-package-e/test-package-e-excluded/index.js
  function testExcluded (line 9) | function testExcluded() {

FILE: playground/nested-deps/test-package-e/test-package-e-included/index.js
  function testIncluded (line 3) | function testIncluded() {

FILE: playground/object-hooks/vite.config.ts
  method handler (line 11) | async handler() {
  method handler (line 18) | handler(code) {
  method handler (line 27) | async handler() {
  method handler (line 34) | handler(code) {
  method handler (line 42) | async handler() {
  method handler (line 50) | handler(code) {
  method handler (line 58) | async handler() {
  method handler (line 63) | handler(code) {

FILE: playground/optimize-deps/cjs-dynamic.js
  function App (line 40) | function App() {
  function text (line 58) | function text(el, text) {

FILE: playground/optimize-deps/cjs.js
  function App (line 40) | function App() {
  function text (line 58) | function text(el, text) {

FILE: playground/optimize-deps/dedupe.js
  function App (line 9) | function App() {

FILE: playground/optimize-deps/dep-cjs-compiled-from-cjs/index.js
  function foo (line 2) | function foo() {

FILE: playground/optimize-deps/dep-cjs-compiled-from-esm/index.js
  function foo (line 3) | function foo() {

FILE: playground/optimize-deps/dep-cjs-external-package-omit-js-suffix/test.astro.js
  function astro (line 1) | function astro() {

FILE: playground/optimize-deps/dep-cjs-external-package-omit-js-suffix/test.okay.js
  function okay (line 1) | function okay() {

FILE: playground/optimize-deps/dep-cjs-external-package-omit-js-suffix/test.scss.js
  function scss (line 1) | function scss() {

FILE: playground/optimize-deps/dep-cjs-external-package-omit-js-suffix/test.tsx.js
  function tsx (line 1) | function tsx() {

FILE: playground/optimize-deps/dep-esm-dummy-node-builtin/index.js
  function foo (line 1) | function foo() {

FILE: playground/optimize-deps/dep-esm-external/index.js
  function foo (line 1) | function foo() {

FILE: playground/optimize-deps/dep-linked-include/index.mjs
  function useCount (line 8) | function useCount() {

FILE: playground/optimize-deps/dep-with-assets/index.js
  function urlImportWorker (line 1) | function urlImportWorker() {
  function getAssetUrl (line 10) | function getAssetUrl() {

FILE: playground/optimize-deps/dep-with-assets/nested/index.js
  function urlImportWorker (line 1) | function urlImportWorker() {

FILE: playground/optimize-deps/dep-with-builtin-module-esm/index.js
  function read (line 22) | function read() {

FILE: playground/optimize-deps/dep-with-optional-peer-dep-submodule/index.js
  function callItself (line 1) | function callItself() {
  function callPeerDepSubmodule (line 5) | async function callPeerDepSubmodule() {

FILE: playground/optimize-deps/dep-with-optional-peer-dep/index.js
  function callItself (line 1) | function callItself() {
  function callPeerDep (line 5) | async function callPeerDep() {

FILE: playground/optimize-deps/vite.config.js
  method load (line 41) | load(id) {
  method transform (line 63) | transform(code, id) {
  function testVue (line 74) | function testVue() {
  function notjs (line 102) | function notjs() {
  function virtualModulePlugin (line 138) | function virtualModulePlugin() {

FILE: playground/optimize-missing-deps/__test__/serve.ts
  function serve (line 9) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/optimize-missing-deps/missing-dep/index.js
  function sayName (line 3) | function sayName() {

FILE: playground/optimize-missing-deps/server.js
  function createServer (line 8) | async function createServer(root = process.cwd(), hmrPort) {

FILE: playground/preload/vite.config-resolve-deps.js
  method resolveDependencies (line 25) | resolveDependencies(filename, deps, { hostId, hostType }) {
  method renderBuiltUrl (line 34) | renderBuiltUrl(filename, { hostId, hostType }) {

FILE: playground/preserve-symlinks/module-a/src/index.js
  function sayHi (line 3) | function sayHi() {

FILE: playground/proxy-bypass/vite.config.js
  method configurePreviewServer (line 39) | configurePreviewServer({ config, middlewares }) {

FILE: playground/proxy-hmr/__tests__/serve.ts
  function serve (line 7) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/resolve/util/bar.util.js
  function bar (line 1) | function bar() {

FILE: playground/resolve/util/index.js
  function foo (line 1) | function foo() {

FILE: playground/resolve/vite.config.js
  method resolveId (line 53) | resolveId(id) {
  method load (line 58) | load(id) {
  method resolveId (line 66) | resolveId(id) {
  method load (line 71) | load(id) {
  method resolveId (line 80) | resolveId(id, _importer, opts) {
  method load (line 92) | load(id) {
  method resolveId (line 103) | resolveId(id) {
  method load (line 108) | load(id) {
  method resolveId (line 116) | resolveId(id) {
  method load (line 121) | load(id) {
  method resolveId (line 129) | resolveId(id) {
  method load (line 134) | load(id) {
  method resolveId (line 155) | async resolveId(id) {

FILE: playground/ssr-conditions/__tests__/serve.ts
  function serve (line 10) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/ssr-conditions/server.js
  function createServer (line 8) | async function createServer(

FILE: playground/ssr-conditions/src/app.js
  function render (line 4) | async function render(url) {

FILE: playground/ssr-deps/__tests__/serve.ts
  function serve (line 10) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/ssr-deps/define-properties-exports/index.js
  method value (line 4) | value() {

FILE: playground/ssr-deps/define-property-exports/index.js
  method value (line 2) | value() {

FILE: playground/ssr-deps/external-entry/entry.js
  function setMessage (line 4) | function setMessage(externalMsg) {
  function getMessage (line 7) | function getMessage() {

FILE: playground/ssr-deps/external-using-external-entry/index.js
  method hello (line 4) | hello() {

FILE: playground/ssr-deps/nested-external-cjs/index.js
  method setMessage (line 6) | setMessage(externalMsg) {
  method getMessage (line 9) | getMessage() {

FILE: playground/ssr-deps/nested-external/index.js
  function setMessage (line 4) | function setMessage(externalMsg) {
  function getMessage (line 7) | function getMessage() {

FILE: playground/ssr-deps/object-assigned-exports/index.js
  method hello (line 4) | hello() {

FILE: playground/ssr-deps/only-object-assigned-exports/index.js
  method hello (line 2) | hello() {

FILE: playground/ssr-deps/optimized-with-nested-external/index.js
  function hello (line 3) | function hello() {

FILE: playground/ssr-deps/server.js
  function createServer (line 15) | async function createServer(root = process.cwd(), hmrPort) {

FILE: playground/ssr-deps/src/app.js
  function render (line 33) | async function render(url, rootDir) {

FILE: playground/ssr-deps/ts-transpiled-exports/index.js
  function hello (line 4) | function hello() {

FILE: playground/ssr-html/__tests__/serve.ts
  function serve (line 10) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/ssr-html/server.js
  constant DYNAMIC_SCRIPTS (line 7) | const DYNAMIC_SCRIPTS = `
  constant DYNAMIC_STYLES (line 16) | const DYNAMIC_STYLES = `
  function createServer (line 24) | async function createServer(root = process.cwd(), hmrPort) {

FILE: playground/ssr-html/src/app.js
  function text (line 9) | function text(el, text) {

FILE: playground/ssr-html/src/error-js.js
  function error (line 1) | function error() {

FILE: playground/ssr-html/src/error-ts.ts
  function error (line 1) | function error() {

FILE: playground/ssr-html/src/has-error-deep.ts
  function crash (line 1) | function crash(message: string) {
  function main (line 5) | function main(): void {

FILE: playground/ssr-html/test-network-imports.js
  function runTest (line 5) | async function runTest(userRunner) {

FILE: playground/ssr-noexternal/__tests__/serve.ts
  function serve (line 10) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/ssr-noexternal/server.js
  function createServer (line 7) | async function createServer(

FILE: playground/ssr-noexternal/src/entry-server.js
  function render (line 3) | async function render(url) {

FILE: playground/ssr-pug/__tests__/serve.ts
  function serve (line 10) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/ssr-pug/server.js
  constant DYNAMIC_SCRIPTS (line 8) | const DYNAMIC_SCRIPTS = `
  function createServer (line 17) | async function createServer(root = process.cwd(), hmrPort) {

FILE: playground/ssr-resolve/util.js
  function used (line 3) | function used(s) {
  function treeshaken (line 8) | function treeshaken(s) {

FILE: playground/ssr-wasm/__tests__/serve.ts
  function preServe (line 11) | async function preServe() {
  function serve (line 17) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/ssr-wasm/server.js
  function createServer (line 6) | async function createServer(root = process.cwd(), hmrPort) {

FILE: playground/ssr-wasm/src/app.js
  function render (line 1) | async function render(url) {

FILE: playground/ssr-wasm/src/static-heavy.js
  function render (line 3) | async function render() {

FILE: playground/ssr-wasm/src/static-light.js
  function render (line 3) | async function render() {

FILE: playground/ssr-webworker/__tests__/serve.ts
  function serve (line 10) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/ssr-webworker/vite.config.js
  method config (line 23) | config() {
  method config (line 33) | config() {

FILE: playground/ssr-webworker/worker.js
  function createServer (line 6) | async function createServer(port) {

FILE: playground/ssr/__tests__/serve.ts
  function serve (line 12) | async function serve(): Promise<{ close(): Promise<void> }> {

FILE: playground/ssr/server.js
  function createServer (line 7) | async function createServer(

FILE: playground/ssr/src/app.js
  function render (line 13) | async function render(url, rootDir) {
  function renderRoot (line 22) | async function renderRoot(rootDir) {
  function renderCircularDep (line 36) | async function renderCircularDep(rootDir) {
  function renderCircularImport (line 41) | async function renderCircularImport(rootDir) {
  function renderCircularImport2 (line 46) | async function renderCircularImport2(rootDir) {
  function renderForkedDeadlockStaticImports (line 51) | async function renderForkedDeadlockStaticImports(rootDir) {
  function renderForkedDeadlockDynamicImports (line 57) | async function renderForkedDeadlockDynamicImports(rootDir) {
  function renderImportMeta (line 64) | async function renderImportMeta(rootDir) {

FILE: playground/ssr/src/circular-dep-init/module-b.js
  function getValueAB (line 6) | function getValueAB() {

FILE: playground/ssr/src/circular-import/b.js
  function getB (line 1) | function getB() {

FILE: playground/ssr/src/circular-import/index.js
  function logA (line 3) | function logA() {

FILE: playground/ssr/src/circular-import2/b.js
  function getB (line 3) | function getB() {

FILE: playground/ssr/src/circular-import2/index.js
  function logA (line 3) | function logA() {

FILE: playground/ssr/src/forked-deadlock/common-module.js
  function commonModuleExport (line 7) | function commonModuleExport() {

FILE: playground/ssr/src/forked-deadlock/deadlock-fuse-module.js
  function deadlockfuseModuleExport (line 6) | function deadlockfuseModuleExport() {

FILE: playground/ssr/src/forked-deadlock/dynamic-imports/common-module.js
  function commonModuleExport (line 4) | async function commonModuleExport() {

FILE: playground/ssr/src/forked-deadlock/dynamic-imports/deadlock-fuse-module.js
  function deadlockfuseModuleExport (line 6) | function deadlockfuseModuleExport() {

FILE: playground/ssr/src/forked-deadlock/dynamic-imports/fuse-stuck-bridge-module.js
  function fuseStuckBridgeModuleExport (line 6) | function fuseStuckBridgeModuleExport() {

FILE: playground/ssr/src/forked-deadlock/dynamic-imports/middle-module.js
  function middleModuleExport (line 6) | function middleModuleExport() {

FILE: playground/ssr/src/forked-deadlock/dynamic-imports/stuck-module.js
  function stuckModuleExport (line 6) | function stuckModuleExport() {

FILE: playground/ssr/src/forked-deadlock/fuse-stuck-bridge-module.js
  function fuseStuckBridgeModuleExport (line 6) | function fuseStuckBridgeModuleExport() {

FILE: playground/ssr/src/forked-deadlock/middle-module.js
  function middleModuleExport (line 6) | function middleModuleExport() {

FILE: playground/ssr/src/forked-deadlock/stuck-module.js
  function stuckModuleExport (line 6) | function stuckModuleExport() {

FILE: playground/ssr/src/utils.js
  function escapeHtml (line 14) | function escapeHtml(string) {

FILE: playground/tailwind-v3/vite.config.ts
  function delayIndexCssPlugin (line 4) | function delayIndexCssPlugin(): Plugin {
  method transform (line 34) | async transform(_code, id) {

FILE: playground/tailwind/vite.config.ts
  function delayIndexCssPlugin (line 5) | function delayIndexCssPlugin(): Plugin {
  method transform (line 35) | async transform(_code, id) {

FILE: playground/test-utils.ts
  function componentToHex (line 74) | function componentToHex(c: number): string {
  function rgbToHex (line 79) | function rgbToHex(rgb: string): string | undefined {
  function toEl (line 93) | async function toEl(
  function getColor (line 109) | async function getColor(
  function getBg (line 117) | async function getBg(
  function getCssRuleBg (line 129) | async function getCssRuleBg(selector: string): Promise<string> {
  function getBgColor (line 143) | async function getBgColor(
  function readFile (line 155) | function readFile(
  function editFile (line 177) | function editFile(
  function addFile (line 193) | function addFile(filename: string, content: string): void {
  function removeFile (line 199) | function removeFile(filename: string): void {
  function listAssets (line 203) | function listAssets(base = ''): string[] {
  function findAssetFile (line 208) | function findAssetFile(
  function readManifest (line 241) | function readManifest(base = ''): Manifest {
  function readDepOptimizationMetadata (line 250) | function readDepOptimizationMetadata(
  type UntilBrowserLogAfterCallback (line 262) | type UntilBrowserLogAfterCallback = (logs: string[]) => PromiseLike<void...
  function untilBrowserLogAfter (line 275) | async function untilBrowserLogAfter(
  function untilBrowserLog (line 293) | async function untilBrowserLog(
  function killProcess (line 400) | async function killProcess(
  type PromiseWithResolvers (line 415) | interface PromiseWithResolvers<T> {
  function promiseWithResolvers (line 420) | function promiseWithResolvers<T>(): PromiseWithResolvers<T> {

FILE: playground/transform-plugin/vite.config.js
  method load (line 9) | load(id) {
  method transform (line 15) | transform(code, id) {
  method transform (line 34) | transform(code, id, opts) {
  method resolveId (line 46) | resolveId(id) {
  method load (line 51) | load(id) {
  method options (line 64) | options() {
  method handler (line 71) | handler(code) {

FILE: playground/tsconfig-json-load-error/__tests__/serve.ts
  function serve (line 6) | async function serve() {
  function clearServeError (line 14) | function clearServeError() {

FILE: playground/tsconfig-json/nested-with-extends/main.ts
  class NestedWithExtendsBase (line 5) | class NestedWithExtendsBase {
    method data (line 6) | set data(value: string) {
  class NestedWithExtendsDerived (line 10) | class NestedWithExtendsDerived extends NestedWithExtendsBase {

FILE: playground/tsconfig-json/nested-with-extends/not-used-type.ts
  class NestedWithExtendsTypeOnlyClass (line 3) | class NestedWithExtendsTypeOnlyClass {}

FILE: playground/tsconfig-json/nested/main.ts
  class NestedBase (line 5) | class NestedBase {
    method data (line 6) | set data(value: string) {
  class NestedDerived (line 10) | class NestedDerived extends NestedBase {

FILE: playground/tsconfig-json/nested/not-used-type.ts
  class NestedTypeOnlyClass (line 3) | class NestedTypeOnlyClass {}

FILE: playground/tsconfig-json/src/decorator.ts
  function first (line 2) | function first() {
  class Foo (line 6) | class Foo {
    method method (line 8) | method(@first() test: string) {

FILE: playground/tsconfig-json/src/main.ts
  class MainBase (line 9) | class MainBase {
    method data (line 10) | set data(value: string) {
  class MainDerived (line 14) | class MainDerived extends MainBase {

FILE: playground/tsconfig-json/src/not-used-type.ts
  class MainTypeOnlyClass (line 3) | class MainTypeOnlyClass {}

FILE: playground/vitestGlobalSetup.ts
  function setup (line 9) | async function setup({ provide }: TestProject): Promise<void> {
  function teardown (line 56) | async function teardown(): Promise<void> {

FILE: playground/vitestSetup.ts
  method serialize (line 43) | serialize(val, config, indentation, depth, refs, printer) {
  method test (line 55) | test(val) {
  function setViteUrl (line 110) | function setViteUrl(url: string): void {
  function throwHtmlParseError (line 114) | function throwHtmlParseError() {
  function loadConfig (line 227) | async function loadConfig(configEnv: ConfigEnv) {
  function startDefaultServe (line 277) | async function startDefaultServe(): Promise<void> {
  function notifyRebuildComplete (line 341) | async function notifyRebuildComplete(
  function createInMemoryLogger (line 358) | function createInMemoryLogger(logs: string[]): Logger {
  function setupConsoleWarnCollector (line 390) | function setupConsoleWarnCollector(logs: string[]) {
  function slash (line 398) | function slash(p: string): string {
  function stripTrailingSlashIfNeeded (line 402) | function stripTrailingSlashIfNeeded(url: string, base: string): string {
  type UserConfig (line 410) | interface UserConfig {
  type ProvidedContext (line 421) | interface ProvidedContext {

FILE: playground/worker/__tests__/sourcemap-hidden/worker-sourcemap-hidden.spec.ts
  function getSourceMapUrl (line 123) | function getSourceMapUrl(code: string): string {

FILE: playground/worker/__tests__/sourcemap-inline/worker-sourcemap-inline.spec.ts
  function getSourceMapUrl (line 98) | function getSourceMapUrl(code: string): string {

FILE: playground/worker/__tests__/sourcemap/worker-sourcemap.spec.ts
  function getSourceMapUrl (line 125) | function getSourceMapUrl(code: string): string {

FILE: playground/worker/dep-self-reference-url-worker/index.js
  function startWorker (line 1) | function startWorker(handler) {

FILE: playground/worker/vite.config-es.js
  method transform (line 39) | transform(code, id) {

FILE: playground/worker/vite.config-iife.js
  method config (line 40) | config() {

FILE: playground/worker/vite.config-relative-base.js
  method transform (line 38) | transform(code, id) {

FILE: playground/worker/worker-plugin-test-plugin.js
  method transform (line 3) | transform(code, id) {

FILE: playground/worker/worker/main-classic.js
  function text (line 2) | function text(el, text) {

FILE: playground/worker/worker/main-deeply-nested.js
  function text (line 6) | function text(el, text) {

FILE: playground/worker/worker/main-format-es.js
  function text (line 5) | function text(el, text) {

FILE: playground/worker/worker/main-module.js
  function text (line 11) | function text(el, text) {

FILE: playground/worker/worker/main-url.js
  function text (line 3) | function text(el, text) {

FILE: scripts/mergeChangelog.ts
  constant CATEGORY_ORDER (line 28) | const CATEGORY_ORDER = [
  function escapeRegex (line 39) | function escapeRegex(str: string): string {
  function findReleaseHeaderIndex (line 45) | function findReleaseHeaderIndex(lines: string[], version: string): number {
  function findEndBoundary (line 55) | function findEndBoundary(
  function parseCategories (line 71) | function parseCategories(releaseLines: string[]): Map<string, string[]> {
  function findPreviousStableVersion (line 97) | function findPreviousStableVersion(lines: string[], startIdx: number): s...
  function updateHeaderCompareLink (line 110) | function updateHeaderCompareLink(
  function collectPrereleaseHeaders (line 124) | function collectPrereleaseHeaders(
  function buildOutputLines (line 152) | function buildOutputLines(

FILE: scripts/releaseUtils.ts
  function run (line 7) | function run<EO extends ExecaOptions>(
  function getLatestTag (line 17) | async function getLatestTag(pkgName: string): Promise<string> {
  function logRecentCommits (line 25) | async function logRecentCommits(pkgName: string): Promise<void> {
  function updateTemplateVersions (line 53) | async function updateTemplateVersions(): Promise<void> {
Condensed preview — 2368 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,736K chars).
[
  {
    "path": ".editorconfig",
    "chars": 147,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_"
  },
  {
    "path": ".git-blame-ignore-revs",
    "chars": 171,
    "preview": "# chore: enable prettier trailing commas (#11167)\n134ce6817984bad0f5fb043481502531fee9b1db\n# chore: rename test packages"
  },
  {
    "path": ".gitattributes",
    "chars": 19,
    "preview": "* text=auto eol=lf\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 4104,
    "preview": "name: \"\\U0001F41E Bug report\"\ndescription: Report an issue with Vite\nlabels: [pending triage]\ntype: Bug\nbody:\n  - type: "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 721,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Vite Plugin React Issues\n    url: https://github.com/vitejs/vite-pl"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/docs.yml",
    "chars": 1709,
    "preview": "name: \"\\U0001F4DA Documentation\"\ndescription: Suggest a change or new page to be added to vite.dev\nlabels: [documentatio"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 1969,
    "preview": "name: \"\\U0001F680 New feature proposal\"\ndescription: Propose a new feature to be added to Vite\nlabels: [\"pending triage\""
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 717,
    "preview": "<!--\n- What is this PR solving? Write a clear and concise description.\n- Reference the issues it solves (e.g. `fixes #12"
  },
  {
    "path": ".github/commit-convention.md",
    "chars": 1029,
    "preview": "## Git Commit Message Convention\n\n> This is adapted from [Angular's commit convention](https://github.com/conventional-c"
  },
  {
    "path": ".github/copilot-instructions.md",
    "chars": 1632,
    "preview": "This is a TypeScript project that implements a frontend build tooling called Vite. Please follow these guidelines when c"
  },
  {
    "path": ".github/renovate.json5",
    "chars": 1784,
    "preview": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\"config:recommended\", \"schedule:weekly"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 5590,
    "preview": "name: CI\n\nenv:\n  # 7 GiB by default on GitHub, setting to 6 GiB\n  # https://docs.github.com/en/actions/using-github-host"
  },
  {
    "path": ".github/workflows/copilot-setup-steps.yml",
    "chars": 1790,
    "preview": "on:\n  workflow_dispatch:\n  push:\n    paths:\n      - .github/workflows/copilot-setup-steps.yml\n  pull_request:\n    paths:"
  },
  {
    "path": ".github/workflows/ecosystem-ci-trigger.yml",
    "chars": 10023,
    "preview": "name: ecosystem-ci trigger\n\non:\n  issue_comment:\n    types: [created]\n\njobs:\n  trigger:\n    runs-on: ubuntu-slim\n    if:"
  },
  {
    "path": ".github/workflows/issue-close-require.yml",
    "chars": 608,
    "preview": "name: Issue Close Require\n\non:\n  schedule:\n    - cron: \"0 0 * * *\"\n\njobs:\n  close-issues:\n    if: github.repository == '"
  },
  {
    "path": ".github/workflows/issue-labeled.yml",
    "chars": 1949,
    "preview": "name: Issue Labeled\n\non:\n  issues:\n    types: [labeled]\n\njobs:\n  reply-labeled:\n    if: github.repository == 'vitejs/vit"
  },
  {
    "path": ".github/workflows/issue-template-check.yml",
    "chars": 6430,
    "preview": "name: Issue Template Check\n\non:\n  issues:\n    types: [opened]\n\njobs:\n  evaluate-issue:\n    if: \"!github.event.issue.pull"
  },
  {
    "path": ".github/workflows/lock-closed-issues.yml",
    "chars": 924,
    "preview": "name: Lock Closed Issues\n\non:\n  schedule:\n    - cron: \"0 0 * * *\"\n\npermissions:\n  issues: write\n\njobs:\n  action:\n    if:"
  },
  {
    "path": ".github/workflows/preview-release.yml",
    "chars": 1616,
    "preview": "name: Preview release\n\nenv:\n  # install playwright binary manually (because pnpm only runs install script once)\n  PLAYWR"
  },
  {
    "path": ".github/workflows/publish.yml",
    "chars": 1389,
    "preview": "name: Publish Package\n\non:\n  push:\n    tags:\n      - \"v*\" # Push events to matching v*, i.e. v1.0, v20.15.10\n      - \"pl"
  },
  {
    "path": ".github/workflows/release-tag.yml",
    "chars": 1781,
    "preview": "name: Add GitHub Release Tag\n\non:\n  push:\n    tags:\n      - \"v*\" # Push events to matching v*, i.e. v1.0, v20.15.10\n    "
  },
  {
    "path": ".github/workflows/semantic-pull-request.yml",
    "chars": 779,
    "preview": "name: Semantic Pull Request\n\non:\n  pull_request_target:\n    types:\n      - opened\n      - edited\n      - synchronize\n\njo"
  },
  {
    "path": ".gitignore",
    "chars": 250,
    "preview": "!**/glob-import/dir/node_modules\n.DS_Store\n.idea\n.pnpm-store\n*.cpuprofile\n*.local\n*.log\n/.vscode/\n/docs/.vitepress/cache"
  },
  {
    "path": ".prettierignore",
    "chars": 492,
    "preview": "packages/*/CHANGELOG.md\npackages/vite/src/node/ssr/__tests__/fixtures/errors/syntax-error.*\nplayground-temp/\ndist/\nLICEN"
  },
  {
    "path": ".prettierrc.json",
    "chars": 296,
    "preview": "{\n  \"semi\": false,\n  \"singleQuote\": true,\n  \"overrides\": [\n    {\n      \"files\": [\"**/*.json5\"],\n      \"options\": {\n     "
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3430,
    "preview": "# Code Of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 19799,
    "preview": "# Vite Contributing Guide\n\nHi! We're really excited that you're interested in contributing to Vite! Before submitting yo"
  },
  {
    "path": "LICENSE",
    "chars": 1101,
    "preview": "MIT License\n\nCopyright (c) 2019-present, VoidZero Inc. and Vite contributors\n\nPermission is hereby granted, free of char"
  },
  {
    "path": "README.md",
    "chars": 3670,
    "preview": "<p align=\"center\">\n  <br>\n  <br>\n  <a href=\"https://vite.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <picture>\n "
  },
  {
    "path": "docs/.vitepress/buildEnd.config.ts",
    "chars": 1310,
    "preview": "import path from 'node:path'\nimport { writeFileSync } from 'node:fs'\nimport { Feed } from 'feed'\nimport type { SiteConfi"
  },
  {
    "path": "docs/.vitepress/config.ts",
    "chars": 17160,
    "preview": "import path from 'node:path'\nimport fs from 'node:fs'\nimport type { HeadConfig } from 'vitepress'\nimport { defineConfig "
  },
  {
    "path": "docs/.vitepress/inlined-scripts/banner.d.ts",
    "chars": 50,
    "preview": "interface Window {\n  __VITE_BANNER_ID__: string\n}\n"
  },
  {
    "path": "docs/.vitepress/inlined-scripts/banner.js",
    "chars": 335,
    "preview": ";(() => {\n  const restore = (key, cls, def = false) => {\n    const saved = localStorage.getItem(key)\n    if (saved ? sav"
  },
  {
    "path": "docs/.vitepress/theme/components/AsideSponsors.vue",
    "chars": 2036,
    "preview": "<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { VPDocAsideSponsors } from '@voidzero-dev/vitepress-them"
  },
  {
    "path": "docs/.vitepress/theme/components/BlogIndex.vue",
    "chars": 855,
    "preview": "<script setup lang=\"ts\">\nimport { data as posts } from '../../../_data/blog.data'\n\nfunction getDateTime(time: number) {\n"
  },
  {
    "path": "docs/.vitepress/theme/components/NonInheritBadge.vue",
    "chars": 171,
    "preview": "<template>\n  <a\n    href=\"/guide/api-environment#environments-configuration\"\n    class=\"ignore-header\"\n  >\n    <Badge ty"
  },
  {
    "path": "docs/.vitepress/theme/components/ScrimbaLink.vue",
    "chars": 1166,
    "preview": "<script setup lang=\"ts\">\ndefineProps<{\n  href: string\n  title: string\n}>()\n</script>\n\n<template>\n  <div class=\"scrimba\">"
  },
  {
    "path": "docs/.vitepress/theme/components/SponsorBanner.vue",
    "chars": 17204,
    "preview": "<script setup lang=\"ts\">\n/**\n * Adding a new banner:\n * 1. uncomment the banner slot in ../index.ts\n * 2. uncomment and "
  },
  {
    "path": "docs/.vitepress/theme/components/SupportedVersions.vue",
    "chars": 4540,
    "preview": "<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\n\ndeclare const __VITE_VERSION__: string\n\n// Constants\nconst"
  },
  {
    "path": "docs/.vitepress/theme/components/SvgImage.vue",
    "chars": 389,
    "preview": "<script setup lang=\"ts\">\ndefineProps<{ svg: string }>()\n</script>\n\n<template>\n  <figure class=\"svg-image-root\" v-html=\"s"
  },
  {
    "path": "docs/.vitepress/theme/components/YouTubeVideo.vue",
    "chars": 773,
    "preview": "<script setup lang=\"ts\">\ndefineProps({\n  videoId: String,\n})\n</script>\n\n<template>\n  <div class=\"full-width-youtube-vide"
  },
  {
    "path": "docs/.vitepress/theme/composables/sponsor.ts",
    "chars": 2940,
    "preview": "import { onMounted, onUnmounted, ref } from 'vue'\nimport type {\n  Sponsor,\n  SponsorTier,\n} from '@voidzero-dev/vitepres"
  },
  {
    "path": "docs/.vitepress/theme/index.ts",
    "chars": 1039,
    "preview": "import { h } from 'vue'\nimport TwoslashFloatingVue from '@shikijs/vitepress-twoslash/client'\nimport '@shikijs/vitepress-"
  },
  {
    "path": "docs/.vitepress/theme/landing/Community.vue",
    "chars": 7115,
    "preview": "<script setup lang=\"ts\">\nimport { Icon } from '@iconify/vue'\n\ninterface Testimonial {\n  name: string\n  handle: string\n  "
  },
  {
    "path": "docs/.vitepress/theme/landing/FeatureGrid1.vue",
    "chars": 3339,
    "preview": "<script setup>\nimport RiveAnimation from '@components/shared/RiveAnimation.vue'\nimport viteAnimation from '@assets/vite/"
  },
  {
    "path": "docs/.vitepress/theme/landing/FeatureGrid2.vue",
    "chars": 2821,
    "preview": "<script setup>\nimport RiveAnimation from '@components/shared/RiveAnimation.vue'\nimport flexiblePluginAnimation from '@as"
  },
  {
    "path": "docs/.vitepress/theme/landing/Frameworks.vue",
    "chars": 439,
    "preview": "<template>\n  <section class=\"wrapper wrapper--ticks border-t py-8 sm:py-16 px-5 sm:px-10\">\n    <img\n      src=\"@assets/v"
  },
  {
    "path": "docs/.vitepress/theme/landing/Hero.vue",
    "chars": 3019,
    "preview": "<script setup>\nimport RiveAnimation from '@components/shared/RiveAnimation.vue'\nimport CodeGroup from '@components/share"
  },
  {
    "path": "docs/.vitepress/theme/landing/Layout.vue",
    "chars": 1417,
    "preview": "<script setup>\n// these components live in @voidzero-dev/vitepress-theme\nimport Hero from './Hero.vue'\nimport ViteFeatur"
  },
  {
    "path": "docs/.vitepress/theme/live/Events.vue",
    "chars": 2455,
    "preview": "<script setup lang=\"ts\">\nimport background from '@voidzero-dev/vitepress-theme/src/assets/vite/footer-background.jpg'\nim"
  },
  {
    "path": "docs/.vitepress/theme/live/Hero.vue",
    "chars": 2645,
    "preview": "<template>\n  <div\n    class=\"wrapper wrapper--ticks grid md:grid-cols-2 w-full border-nickel md:divide-x\"\n  >\n    <div\n "
  },
  {
    "path": "docs/.vitepress/theme/live/Layout.vue",
    "chars": 891,
    "preview": "<script setup>\nimport Hero from './Hero.vue'\nimport Timer from './Timer.vue'\nimport TimeoutSwitcher from './TimeoutSwitc"
  },
  {
    "path": "docs/.vitepress/theme/live/TimeoutSwitcher.vue",
    "chars": 656,
    "preview": "<script setup>\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\n\nconst props = defineProps({\n  at: {\n    type"
  },
  {
    "path": "docs/.vitepress/theme/live/Timer.vue",
    "chars": 1865,
    "preview": "<script setup>\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\n\nconst props = defineProps({\n  at: {\n    type"
  },
  {
    "path": "docs/.vitepress/theme/live/VideoIframe.vue",
    "chars": 7900,
    "preview": "<script setup>\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport Header from '@components/os"
  },
  {
    "path": "docs/.vitepress/theme/live/useYoutubePlayer.ts",
    "chars": 2747,
    "preview": "import { type Ref, onBeforeUnmount, onMounted, ref } from 'vue'\n\ntype YoutubeState = 'play' | 'pause' | 'end' | 'buffer'"
  },
  {
    "path": "docs/.vitepress/theme/styles.css",
    "chars": 409,
    "preview": "@import '@voidzero-dev/vitepress-theme/src/styles/index.css';\n\n@source \"./**/*.vue\";\n\n/* Vite */\n:root[data-variant='vit"
  },
  {
    "path": "docs/_data/acknowledgements.data.ts",
    "chars": 8730,
    "preview": "import fs from 'node:fs'\nimport path from 'node:path'\n\n// Notable dependencies to highlight (by package name)\nconst nota"
  },
  {
    "path": "docs/_data/blog.data.ts",
    "chars": 838,
    "preview": "import { createContentLoader } from 'vitepress'\n\ninterface Post {\n  title: string\n  url: string\n  date: {\n    time: numb"
  },
  {
    "path": "docs/_data/team.js",
    "chars": 7438,
    "preview": "export const core = [\n  {\n    avatar: 'https://www.github.com/yyx990803.png',\n    name: 'Evan You',\n    title: 'Creator'"
  },
  {
    "path": "docs/acknowledgements.md",
    "chars": 6405,
    "preview": "---\ntitle: Acknowledgements\ndescription: Vite is built upon the shoulders of giants. Thank you to all the projects and c"
  },
  {
    "path": "docs/blog/announcing-vite2.md",
    "chars": 5895,
    "preview": "---\ntitle: Announcing Vite 2.0\nauthor:\n  - name: The Vite Team\nsidebar: false\ndate: 2021-02-16\nhead:\n  - - meta\n    - pr"
  },
  {
    "path": "docs/blog/announcing-vite3.md",
    "chars": 20685,
    "preview": "---\ntitle: Vite 3.0 is out!\nauthor:\n  name: The Vite Team\ndate: 2022-07-23\nsidebar: false\nhead:\n  - - meta\n    - propert"
  },
  {
    "path": "docs/blog/announcing-vite4-3.md",
    "chars": 4546,
    "preview": "---\ntitle: Vite 4.3 is out!\nauthor:\n  name: The Vite Team\ndate: 2023-04-20\nsidebar: false\nhead:\n  - - meta\n    - propert"
  },
  {
    "path": "docs/blog/announcing-vite4.md",
    "chars": 12022,
    "preview": "---\ntitle: Vite 4.0 is out!\nauthor:\n  name: The Vite Team\ndate: 2022-12-09\nsidebar: false\nhead:\n  - - meta\n    - propert"
  },
  {
    "path": "docs/blog/announcing-vite5-1.md",
    "chars": 11095,
    "preview": "---\ntitle: Vite 5.1 is out!\nauthor:\n  name: The Vite Team\ndate: 2024-02-08\nsidebar: false\nhead:\n  - - meta\n    - propert"
  },
  {
    "path": "docs/blog/announcing-vite5.md",
    "chars": 10466,
    "preview": "---\ntitle: Vite 5.0 is out!\nauthor:\n  name: The Vite Team\ndate: 2023-11-16\nsidebar: false\nhead:\n  - - meta\n    - propert"
  },
  {
    "path": "docs/blog/announcing-vite6.md",
    "chars": 11625,
    "preview": "---\ntitle: Vite 6.0 is out!\nauthor:\n  name: The Vite Team\ndate: 2024-11-26\nsidebar: false\nhead:\n  - - meta\n    - propert"
  },
  {
    "path": "docs/blog/announcing-vite7.md",
    "chars": 8662,
    "preview": "---\ntitle: Vite 7.0 is out!\nauthor:\n  name: The Vite Team\ndate: 2025-06-24\nsidebar: false\nhead:\n  - - meta\n    - propert"
  },
  {
    "path": "docs/blog/announcing-vite8-beta.md",
    "chars": 8967,
    "preview": "---\ntitle: 'Vite 8 Beta: The Rolldown-powered Vite'\nauthor:\n  name: The Vite Team\ndate: 2025-12-03\nsidebar: false\nhead:\n"
  },
  {
    "path": "docs/blog/announcing-vite8.md",
    "chars": 15326,
    "preview": "---\ntitle: Vite 8.0 is out!\nauthor:\n  name: The Vite Team\ndate: 2026-03-12\nsidebar: false\nhead:\n  - - meta\n    - propert"
  },
  {
    "path": "docs/blog.md",
    "chars": 191,
    "preview": "---\nsidebar: false\neditLink: false\noutline: false\n---\n\n<script setup>\nimport BlogIndex from './.vitepress/theme/componen"
  },
  {
    "path": "docs/changes/hotupdate-hook.md",
    "chars": 3521,
    "preview": "# HMR `hotUpdate` Plugin Hook\n\n::: tip Feedback\nGive us feedback at [Environment API feedback discussion](https://github"
  },
  {
    "path": "docs/changes/index.md",
    "chars": 1517,
    "preview": "# Breaking Changes\n\nList of breaking changes in Vite including API deprecations, removals, and changes. Most of the chan"
  },
  {
    "path": "docs/changes/per-environment-apis.md",
    "chars": 2255,
    "preview": "# Move to Per-environment APIs\n\n::: tip Feedback\nGive us feedback at [Environment API feedback discussion](https://githu"
  },
  {
    "path": "docs/changes/shared-plugins-during-build.md",
    "chars": 2243,
    "preview": "# Shared Plugins during Build\n\n::: tip Feedback\nGive us feedback at [Environment API feedback discussion](https://github"
  },
  {
    "path": "docs/changes/ssr-using-modulerunner.md",
    "chars": 1248,
    "preview": "# SSR Using `ModuleRunner` API\n\n::: tip Feedback\nGive us feedback at [Environment API feedback discussion](https://githu"
  },
  {
    "path": "docs/changes/this-environment-in-hooks.md",
    "chars": 2375,
    "preview": "# `this.environment` in Hooks\n\n::: tip Feedback\nGive us feedback at [Environment API feedback discussion](https://github"
  },
  {
    "path": "docs/config/build-options.md",
    "chars": 15808,
    "preview": "# Build Options\n\nUnless noted, the options in this section are only applied to build.\n\n## build.target\n\n- **Type:** `str"
  },
  {
    "path": "docs/config/dep-optimization-options.md",
    "chars": 6058,
    "preview": "# Dep Optimization Options\n\n- **Related:** [Dependency Pre-Bundling](/guide/dep-pre-bundling)\n\nUnless noted, the options"
  },
  {
    "path": "docs/config/index.md",
    "chars": 6610,
    "preview": "---\ntitle: Configuring Vite\n---\n\n# Configuring Vite\n\nWhen running `vite` from the command line, Vite will automatically "
  },
  {
    "path": "docs/config/preview-options.md",
    "chars": 3123,
    "preview": "# Preview Options\n\nUnless noted, the options in this section are only applied to preview.\n\n## preview.host\n\n- **Type:** "
  },
  {
    "path": "docs/config/server-options.md",
    "chars": 19193,
    "preview": "# Server Options\n\nUnless noted, the options in this section are only applied to dev.\n\n## server.host\n\n- **Type:** `strin"
  },
  {
    "path": "docs/config/shared-options.md",
    "chars": 20454,
    "preview": "# Shared Options\n\nUnless noted, the options in this section are applied to all dev, build, and preview.\n\n## root\n\n- **Ty"
  },
  {
    "path": "docs/config/ssr-options.md",
    "chars": 3226,
    "preview": "# SSR Options\n\nUnless noted, the options in this section are applied to both dev and build.\n\n## ssr.external\n\n- **Type:*"
  },
  {
    "path": "docs/config/worker-options.md",
    "chars": 973,
    "preview": "# Worker Options\n\nUnless noted, the options in this section are applied to all dev, build, and preview.\n\n## worker.forma"
  },
  {
    "path": "docs/guide/api-environment-frameworks.md",
    "chars": 12758,
    "preview": "# Environment API for Frameworks\n\n:::info Release Candidate\nThe Environment API is generally in the release candidate ph"
  },
  {
    "path": "docs/guide/api-environment-instances.md",
    "chars": 8175,
    "preview": "# Using `Environment` Instances\n\n:::info Release Candidate\nThe Environment API is generally in the release candidate pha"
  },
  {
    "path": "docs/guide/api-environment-plugins.md",
    "chars": 12989,
    "preview": "# Environment API for Plugins\n\n:::info Release Candidate\nThe Environment API is generally in the release candidate phase"
  },
  {
    "path": "docs/guide/api-environment-runtimes.md",
    "chars": 16391,
    "preview": "# Environment API for Runtimes\n\n:::info Release Candidate\nThe Environment API is generally in the release candidate phas"
  },
  {
    "path": "docs/guide/api-environment.md",
    "chars": 9034,
    "preview": "# Environment API\n\n:::info Release Candidate\nThe Environment API is generally in the release candidate phase. We'll main"
  },
  {
    "path": "docs/guide/api-hmr.md",
    "chars": 9111,
    "preview": "# HMR API\n\n:::tip Note\nThis is the client HMR API. For handling HMR update in plugins, see [handleHotUpdate](./api-plugi"
  },
  {
    "path": "docs/guide/api-javascript.md",
    "chars": 13428,
    "preview": "# JavaScript API\n\nVite's JavaScript APIs are fully typed, and it's recommended to use TypeScript or enable JS type check"
  },
  {
    "path": "docs/guide/api-plugin.md",
    "chars": 28207,
    "preview": "# Plugin API\n\nVite plugins extends Rolldown's plugin interface with a few extra Vite-specific options. As a result, you "
  },
  {
    "path": "docs/guide/assets.md",
    "chars": 6547,
    "preview": "# Static Asset Handling\n\n- Related: [Public Base Path](./build#public-base-path)\n- Related: [`assetsInclude` config opti"
  },
  {
    "path": "docs/guide/backend-integration.md",
    "chars": 10736,
    "preview": "# Backend Integration\n\n:::tip Note\nIf you want to serve the HTML using a traditional backend (e.g. Rails, Laravel) but u"
  },
  {
    "path": "docs/guide/build.md",
    "chars": 14201,
    "preview": "# Building for Production\n\nWhen it is time to deploy your app for production, simply run the `vite build` command. By de"
  },
  {
    "path": "docs/guide/cli.md",
    "chars": 13077,
    "preview": "# Command Line Interface\n\n## Dev server\n\n### `vite`\n\nStart Vite dev server in the current directory. `vite dev` and `vit"
  },
  {
    "path": "docs/guide/dep-pre-bundling.md",
    "chars": 5621,
    "preview": "# Dependency Pre-Bundling\n\nWhen you run `vite` for the first time, Vite prebundles your project dependencies before load"
  },
  {
    "path": "docs/guide/env-and-mode.md",
    "chars": 10852,
    "preview": "# Env Variables and Modes\n\nVite exposes certain constants under the special `import.meta.env` object. These constants ar"
  },
  {
    "path": "docs/guide/features.md",
    "chars": 36287,
    "preview": "# Features\n\nAt the very basic level, developing using Vite is not that different from using a static file server. Howeve"
  },
  {
    "path": "docs/guide/index.md",
    "chars": 11376,
    "preview": "# Getting Started\n\n<audio id=\"vite-audio\">\n  <source src=\"/vite.mp3\" type=\"audio/mpeg\">\n</audio>\n\n## Overview\n\nVite (Fre"
  },
  {
    "path": "docs/guide/migration.md",
    "chars": 21742,
    "preview": "# Migration from v7\n\nIf you are migrating from `rolldown-vite`, the technical preview release for Rolldown integrated Vi"
  },
  {
    "path": "docs/guide/performance.md",
    "chars": 8184,
    "preview": "# Performance\n\nWhile Vite is fast by default, performance issues can creep in as the project's requirements grow. This g"
  },
  {
    "path": "docs/guide/philosophy.md",
    "chars": 3575,
    "preview": "# Project Philosophy\n\n## Lean Extendable Core\n\nVite aims to support the most common patterns to build Web apps out-of-th"
  },
  {
    "path": "docs/guide/ssr.md",
    "chars": 13151,
    "preview": "# Server-Side Rendering (SSR)\n\n:::tip Note\nSSR specifically refers to front-end frameworks (for example React, Preact, V"
  },
  {
    "path": "docs/guide/static-deploy-github-pages.yaml",
    "chars": 1458,
    "preview": "# Imported in static-deploy.md\n# This file is extracted as a separate file so that renovate can update the action versio"
  },
  {
    "path": "docs/guide/static-deploy.md",
    "chars": 14584,
    "preview": "<!--\n  READ THIS IF YOU WANT TO ADD A NEW DEPLOYMENT PLATFORM.\n\n  Feel free to submit a PR that adds a new section with "
  },
  {
    "path": "docs/guide/troubleshooting.md",
    "chars": 14921,
    "preview": "# Troubleshooting\n\nSee [Rollup's troubleshooting guide](https://rollupjs.org/troubleshooting/) for more information too."
  },
  {
    "path": "docs/guide/using-plugins.md",
    "chars": 3281,
    "preview": "# Using Plugins\n\nVite can be extended using plugins, which are based on Rollup's well-designed plugin interface with a f"
  },
  {
    "path": "docs/guide/why.md",
    "chars": 6878,
    "preview": "# Why Vite\n\nAs web applications have grown in size and complexity, the tools used to build them have struggled to keep u"
  },
  {
    "path": "docs/index.md",
    "chars": 186,
    "preview": "---\ntitle: Vite\ntitleTemplate: Next Generation Frontend Tooling\nlayout: home\ntheme: dark\n---\n\n<script setup>\nimport Home"
  },
  {
    "path": "docs/live.md",
    "chars": 1154,
    "preview": "---\ntitle: 5th anniversary of the Vite Team Creation\nlayout: home\ntheme: dark\ndescription: \"Vite: The Documentary re-pre"
  },
  {
    "path": "docs/package.json",
    "chars": 685,
    "preview": "{\n  \"name\": \"@vitejs/monorepo-docs\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"docs\": \"vitepress dev\",\n"
  },
  {
    "path": "docs/plugins/index.md",
    "chars": 2807,
    "preview": "# Plugins\n\n:::tip NOTE\nVite aims to provide out-of-the-box support for common web development patterns. Before searching"
  },
  {
    "path": "docs/public/_headers",
    "chars": 273,
    "preview": "/assets/*\n  cache-control: max-age=31536000\n  cache-control: immutable\n\n/*.svg\n  cache-control: max-age=604800\n  cache-c"
  },
  {
    "path": "docs/public/_redirects",
    "chars": 791,
    "preview": "# temporary, we'll flip this around some day\nhttps://vitejs.dev/* https://vite.dev/:splat 301!\n\n/guide/api-vite-runtime "
  },
  {
    "path": "docs/releases.md",
    "chars": 4366,
    "preview": "<script setup>\nimport SupportedVersions from './.vitepress/theme/components/SupportedVersions.vue';\n</script>\n\n# Release"
  },
  {
    "path": "docs/team.md",
    "chars": 945,
    "preview": "---\nlayout: page\ntitle: Meet the Team\ndescription: The development of Vite is guided by an international team.\n---\n\n<scr"
  },
  {
    "path": "docs/tsconfig.json",
    "chars": 649,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2023\",\n    \"lib\": [\"ES2023\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n "
  },
  {
    "path": "eslint.config.js",
    "chars": 10582,
    "preview": "// @ts-check\nimport { createRequire } from 'node:module'\nimport eslint from '@eslint/js'\nimport pluginN from 'eslint-plu"
  },
  {
    "path": "netlify.toml",
    "chars": 231,
    "preview": "[build.environment]\n  NODE_VERSION = \"24\"\n  # don't need playwright for docs build\n  PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "
  },
  {
    "path": "package.json",
    "chars": 3178,
    "preview": "{\n  \"name\": \"@vitejs/vite-monorepo\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"engines\": {\n    \"node\": \"^20.19.0 || >=22"
  },
  {
    "path": "packages/create-vite/CHANGELOG.md",
    "chars": 126715,
    "preview": "## <small>[9.0.3](https://github.com/vitejs/vite/compare/create-vite@9.0.2...create-vite@9.0.3) (2026-03-19)</small>\n###"
  },
  {
    "path": "packages/create-vite/LICENSE",
    "chars": 29608,
    "preview": "# create-vite license\ncreate-vite is released under the MIT license:\n\nMIT License\n\nCopyright (c) 2019-present, VoidZero "
  },
  {
    "path": "packages/create-vite/README.md",
    "chars": 1948,
    "preview": "# create-vite <a href=\"https://npmjs.com/package/create-vite\"><img src=\"https://img.shields.io/npm/v/create-vite\" alt=\"n"
  },
  {
    "path": "packages/create-vite/__tests__/cli.spec.ts",
    "chars": 8026,
    "preview": "import fs from 'node:fs'\nimport path from 'node:path'\nimport type { SyncOptions } from 'execa'\nimport { execaCommandSync"
  },
  {
    "path": "packages/create-vite/index.js",
    "chars": 46,
    "preview": "#!/usr/bin/env node\n\nimport './dist/index.js'\n"
  },
  {
    "path": "packages/create-vite/package.json",
    "chars": 1014,
    "preview": "{\n  \"name\": \"create-vite\",\n  \"version\": \"9.0.3\",\n  \"type\": \"module\",\n  \"license\": \"MIT\",\n  \"author\": \"Evan You\",\n  \"bin\""
  },
  {
    "path": "packages/create-vite/src/index.ts",
    "chars": 24562,
    "preview": "import fs from 'node:fs'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport type { SpawnOption"
  },
  {
    "path": "packages/create-vite/template-lit/_gitignore",
    "chars": 253,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "packages/create-vite/template-lit/index.html",
    "chars": 456,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/"
  },
  {
    "path": "packages/create-vite/template-lit/package.json",
    "chars": 284,
    "preview": "{\n  \"name\": \"vite-lit-starter\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \""
  },
  {
    "path": "packages/create-vite/template-lit/src/index.css",
    "chars": 446,
    "preview": ":root {\n  color-scheme: light dark;\n  background-color: #ffffff;\n}\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    "
  },
  {
    "path": "packages/create-vite/template-lit/src/my-element.js",
    "chars": 10192,
    "preview": "import { LitElement, css, html } from 'lit'\nimport litLogo from './assets/lit.svg'\nimport viteLogo from './assets/vite.s"
  },
  {
    "path": "packages/create-vite/template-lit-ts/_gitignore",
    "chars": 253,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "packages/create-vite/template-lit-ts/index.html",
    "chars": 461,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/"
  },
  {
    "path": "packages/create-vite/template-lit-ts/package.json",
    "chars": 322,
    "preview": "{\n  \"name\": \"vite-lit-ts-starter\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\""
  },
  {
    "path": "packages/create-vite/template-lit-ts/src/index.css",
    "chars": 446,
    "preview": ":root {\n  color-scheme: light dark;\n  background-color: #ffffff;\n}\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    "
  },
  {
    "path": "packages/create-vite/template-lit-ts/src/my-element.ts",
    "chars": 9692,
    "preview": "import { LitElement, css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport litLogo f"
  },
  {
    "path": "packages/create-vite/template-lit-ts/tsconfig.json",
    "chars": 674,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2023\",\n    \"experimentalDecorators\": true,\n    \"useDefineForClassFields\": fals"
  },
  {
    "path": "packages/create-vite/template-preact/_gitignore",
    "chars": 253,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "packages/create-vite/template-preact/index.html",
    "chars": 364,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/"
  },
  {
    "path": "packages/create-vite/template-preact/package.json",
    "chars": 330,
    "preview": "{\n  \"name\": \"vite-preact-starter\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\""
  },
  {
    "path": "packages/create-vite/template-preact/src/app.css",
    "chars": 3111,
    "preview": ".counter {\n  font-size: 16px;\n  padding: 5px 10px;\n  border-radius: 5px;\n  color: var(--accent);\n  background: var(--acc"
  },
  {
    "path": "packages/create-vite/template-preact/src/app.jsx",
    "chars": 3251,
    "preview": "import { useState } from 'preact/hooks'\nimport preactLogo from './assets/preact.svg'\nimport viteLogo from './assets/vite"
  },
  {
    "path": "packages/create-vite/template-preact/src/index.css",
    "chars": 2168,
    "preview": ":root {\n  --text: #6b6375;\n  --text-h: #08060d;\n  --bg: #fff;\n  --border: #e5e4e7;\n  --code-bg: #f4f3ec;\n  --accent: #aa"
  },
  {
    "path": "packages/create-vite/template-preact/src/main.jsx",
    "chars": 134,
    "preview": "import { render } from 'preact'\nimport './index.css'\nimport { App } from './app.jsx'\n\nrender(<App />, document.getElemen"
  },
  {
    "path": "packages/create-vite/template-preact/vite.config.js",
    "chars": 162,
    "preview": "import { defineConfig } from 'vite'\nimport preact from '@preact/preset-vite'\n\n// https://vite.dev/config/\nexport default"
  },
  {
    "path": "packages/create-vite/template-preact-ts/_gitignore",
    "chars": 253,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "packages/create-vite/template-preact-ts/index.html",
    "chars": 369,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/"
  },
  {
    "path": "packages/create-vite/template-preact-ts/package.json",
    "chars": 402,
    "preview": "{\n  \"name\": \"vite-preact-ts-starter\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"d"
  },
  {
    "path": "packages/create-vite/template-preact-ts/src/app.css",
    "chars": 3111,
    "preview": ".counter {\n  font-size: 16px;\n  padding: 5px 10px;\n  border-radius: 5px;\n  color: var(--accent);\n  background: var(--acc"
  },
  {
    "path": "packages/create-vite/template-preact-ts/src/app.tsx",
    "chars": 3251,
    "preview": "import { useState } from 'preact/hooks'\nimport preactLogo from './assets/preact.svg'\nimport viteLogo from './assets/vite"
  },
  {
    "path": "packages/create-vite/template-preact-ts/src/index.css",
    "chars": 2168,
    "preview": ":root {\n  --text: #6b6375;\n  --text-h: #08060d;\n  --bg: #fff;\n  --border: #e5e4e7;\n  --code-bg: #f4f3ec;\n  --accent: #aa"
  },
  {
    "path": "packages/create-vite/template-preact-ts/src/main.tsx",
    "chars": 135,
    "preview": "import { render } from 'preact'\nimport './index.css'\nimport { App } from './app.tsx'\n\nrender(<App />, document.getElemen"
  },
  {
    "path": "packages/create-vite/template-preact-ts/tsconfig.app.json",
    "chars": 890,
    "preview": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.app.tsbuildinfo\",\n    \"target\": \"ES2023\",\n"
  },
  {
    "path": "packages/create-vite/template-preact-ts/tsconfig.json",
    "chars": 119,
    "preview": "{\n  \"files\": [],\n  \"references\": [\n    { \"path\": \"./tsconfig.app.json\" },\n    { \"path\": \"./tsconfig.node.json\" }\n  ]\n}\n"
  },
  {
    "path": "packages/create-vite/template-preact-ts/tsconfig.node.json",
    "chars": 653,
    "preview": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbuildinfo\",\n    \"target\": \"ES2023\","
  },
  {
    "path": "packages/create-vite/template-preact-ts/vite.config.ts",
    "chars": 162,
    "preview": "import { defineConfig } from 'vite'\nimport preact from '@preact/preset-vite'\n\n// https://vite.dev/config/\nexport default"
  },
  {
    "path": "packages/create-vite/template-qwik/README.md",
    "chars": 995,
    "preview": "# Qwik + Vite\n\n## Qwik in CSR mode\n\nThis starter is using a pure CSR (Client-Side Rendering) mode. This means, that the "
  },
  {
    "path": "packages/create-vite/template-qwik/_gitignore",
    "chars": 253,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "packages/create-vite/template-qwik/index.html",
    "chars": 362,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/"
  },
  {
    "path": "packages/create-vite/template-qwik/package.json",
    "chars": 313,
    "preview": "{\n  \"name\": \"vite-qwik\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n"
  },
  {
    "path": "packages/create-vite/template-qwik/src/app.css",
    "chars": 3111,
    "preview": ".counter {\n  font-size: 16px;\n  padding: 5px 10px;\n  border-radius: 5px;\n  color: var(--accent);\n  background: var(--acc"
  },
  {
    "path": "packages/create-vite/template-qwik/src/app.jsx",
    "chars": 3249,
    "preview": "import { component$, useSignal } from '@builder.io/qwik'\n\nimport qwikLogo from './assets/qwik.svg'\nimport viteLogo from "
  },
  {
    "path": "packages/create-vite/template-qwik/src/index.css",
    "chars": 2168,
    "preview": ":root {\n  --text: #6b6375;\n  --text-h: #08060d;\n  --bg: #fff;\n  --border: #e5e4e7;\n  --code-bg: #f4f3ec;\n  --accent: #aa"
  },
  {
    "path": "packages/create-vite/template-qwik/src/main.jsx",
    "chars": 185,
    "preview": "import '@builder.io/qwik/qwikloader.js'\n\nimport { render } from '@builder.io/qwik'\nimport './index.css'\nimport { App } f"
  },
  {
    "path": "packages/create-vite/template-qwik/vite.config.js",
    "chars": 210,
    "preview": "import { defineConfig } from 'vite'\nimport { qwikVite } from '@builder.io/qwik/optimizer'\n\n// https://vite.dev/config/\ne"
  },
  {
    "path": "packages/create-vite/template-qwik-ts/README.md",
    "chars": 995,
    "preview": "# Qwik + Vite\n\n## Qwik in CSR mode\n\nThis starter is using a pure CSR (Client-Side Rendering) mode. This means, that the "
  },
  {
    "path": "packages/create-vite/template-qwik-ts/_gitignore",
    "chars": 253,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "packages/create-vite/template-qwik-ts/index.html",
    "chars": 367,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/"
  },
  {
    "path": "packages/create-vite/template-qwik-ts/package.json",
    "chars": 382,
    "preview": "{\n  \"name\": \"vite-qwik\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n"
  },
  {
    "path": "packages/create-vite/template-qwik-ts/src/app.css",
    "chars": 3111,
    "preview": ".counter {\n  font-size: 16px;\n  padding: 5px 10px;\n  border-radius: 5px;\n  color: var(--accent);\n  background: var(--acc"
  },
  {
    "path": "packages/create-vite/template-qwik-ts/src/app.tsx",
    "chars": 3249,
    "preview": "import { component$, useSignal } from '@builder.io/qwik'\n\nimport qwikLogo from './assets/qwik.svg'\nimport viteLogo from "
  },
  {
    "path": "packages/create-vite/template-qwik-ts/src/index.css",
    "chars": 2168,
    "preview": ":root {\n  --text: #6b6375;\n  --text-h: #08060d;\n  --bg: #fff;\n  --border: #e5e4e7;\n  --code-bg: #f4f3ec;\n  --accent: #aa"
  },
  {
    "path": "packages/create-vite/template-qwik-ts/src/main.tsx",
    "chars": 200,
    "preview": "import '@builder.io/qwik/qwikloader.js'\n\nimport { render } from '@builder.io/qwik'\nimport './index.css'\nimport { App } f"
  },
  {
    "path": "packages/create-vite/template-qwik-ts/tsconfig.app.json",
    "chars": 775,
    "preview": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.app.tsbuildinfo\",\n    \"target\": \"ES2023\",\n"
  },
  {
    "path": "packages/create-vite/template-qwik-ts/tsconfig.json",
    "chars": 119,
    "preview": "{\n  \"files\": [],\n  \"references\": [\n    { \"path\": \"./tsconfig.app.json\" },\n    { \"path\": \"./tsconfig.node.json\" }\n  ]\n}\n"
  },
  {
    "path": "packages/create-vite/template-qwik-ts/tsconfig.node.json",
    "chars": 653,
    "preview": "{\n  \"compilerOptions\": {\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbuildinfo\",\n    \"target\": \"ES2023\","
  },
  {
    "path": "packages/create-vite/template-qwik-ts/vite.config.ts",
    "chars": 210,
    "preview": "import { defineConfig } from 'vite'\nimport { qwikVite } from '@builder.io/qwik/optimizer'\n\n// https://vite.dev/config/\ne"
  },
  {
    "path": "packages/create-vite/template-react/README.md",
    "chars": 1027,
    "preview": "# React + Vite\n\nThis template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.\n\nCur"
  },
  {
    "path": "packages/create-vite/template-react/_gitignore",
    "chars": 253,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "packages/create-vite/template-react/eslint.config.js",
    "chars": 758,
    "preview": "import js from '@eslint/js'\nimport globals from 'globals'\nimport reactHooks from 'eslint-plugin-react-hooks'\nimport reac"
  },
  {
    "path": "packages/create-vite/template-react/index.html",
    "chars": 364,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/"
  },
  {
    "path": "packages/create-vite/template-react/package.json",
    "chars": 614,
    "preview": "{\n  \"name\": \"vite-react-starter\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\":"
  },
  {
    "path": "packages/create-vite/template-react/src/App.css",
    "chars": 2891,
    "preview": ".counter {\n  font-size: 16px;\n  padding: 5px 10px;\n  border-radius: 5px;\n  color: var(--accent);\n  background: var(--acc"
  },
  {
    "path": "packages/create-vite/template-react/src/App.jsx",
    "chars": 3622,
    "preview": "import { useState } from 'react'\nimport reactLogo from './assets/react.svg'\nimport viteLogo from './assets/vite.svg'\nimp"
  },
  {
    "path": "packages/create-vite/template-react/src/index.css",
    "chars": 2169,
    "preview": ":root {\n  --text: #6b6375;\n  --text-h: #08060d;\n  --bg: #fff;\n  --border: #e5e4e7;\n  --code-bg: #f4f3ec;\n  --accent: #aa"
  },
  {
    "path": "packages/create-vite/template-react/src/main.jsx",
    "chars": 229,
    "preview": "import { StrictMode } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport './index.css'\nimport App from '."
  },
  {
    "path": "packages/create-vite/template-react/vite.config.js",
    "chars": 161,
    "preview": "import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\n\n// https://vite.dev/config/\nexport default"
  },
  {
    "path": "packages/create-vite/template-react-ts/README.md",
    "chars": 2425,
    "preview": "# React + TypeScript + Vite\n\nThis template provides a minimal setup to get React working in Vite with HMR and some ESLin"
  },
  {
    "path": "packages/create-vite/template-react-ts/_gitignore",
    "chars": 253,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
  },
  {
    "path": "packages/create-vite/template-react-ts/eslint.config.js",
    "chars": 616,
    "preview": "import js from '@eslint/js'\nimport globals from 'globals'\nimport reactHooks from 'eslint-plugin-react-hooks'\nimport reac"
  },
  {
    "path": "packages/create-vite/template-react-ts/index.html",
    "chars": 369,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/"
  },
  {
    "path": "packages/create-vite/template-react-ts/package.json",
    "chars": 730,
    "preview": "{\n  \"name\": \"vite-react-typescript-starter\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {"
  },
  {
    "path": "packages/create-vite/template-react-ts/src/App.css",
    "chars": 2891,
    "preview": ".counter {\n  font-size: 16px;\n  padding: 5px 10px;\n  border-radius: 5px;\n  color: var(--accent);\n  background: var(--acc"
  },
  {
    "path": "packages/create-vite/template-react-ts/src/App.tsx",
    "chars": 3622,
    "preview": "import { useState } from 'react'\nimport reactLogo from './assets/react.svg'\nimport viteLogo from './assets/vite.svg'\nimp"
  },
  {
    "path": "packages/create-vite/template-react-ts/src/index.css",
    "chars": 2169,
    "preview": ":root {\n  --text: #6b6375;\n  --text-h: #08060d;\n  --bg: #fff;\n  --border: #e5e4e7;\n  --code-bg: #f4f3ec;\n  --accent: #aa"
  },
  {
    "path": "packages/create-vite/template-react-ts/src/main.tsx",
    "chars": 230,
    "preview": "import { StrictMode } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport './index.css'\nimport App from '."
  }
]

// ... and 2168 more files (download for full content)

About this extraction

This page contains the full source code of the vitejs/vite GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2368 files (4.2 MB), approximately 1.2M tokens, and a symbol index with 2250 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!