@@ -5,6 +5,7 @@ import { dirname, resolve } from 'pathe' import { searchForWorkspaceRoot, version as viteVersion } from 'vite' import * as vite from 'vite' import { rootDir } from '../../paths'
Show 12 hidden lines
+import { API_TOKEN_FILE } from '../config/apiToken' import { hash } from '../hash' export function resolveTestCacheDir(@@ -127,6 +128,28 @@ export function deleteDefineConfig(viteConfig: ViteConfig): DefineConfigResult { return { defines, scriptDefines } } +// TODO: use Vite's own defaults once they are exported (request upstream)+// copied from Vite 8.3 https://github.com/vitejs/vite/blob/v8.3.4/packages/vite/src/node/server/index.ts#L1254-L1261+const VITE_DEFAULT_FS_DENY = [+ '.env',
+ '.env.*',+ '*.{crt,pem,key,p12,pfx,cer,der}',+ '.npmrc',+ '.yarnrc.yml',+ '**/.git/**',+]++// Vite drops its default `server.fs.deny` once any value is set,+// so the defaults are kept explicitly when the user didn't set one.+export function appendApiTokenFsDeny(viteConfig: ViteConfig): void {+ viteConfig.server ??= {}+ viteConfig.server.fs ??= {}+ viteConfig.server.fs.deny = [
Show 8 hidden lines
+ ...(viteConfig.server.fs.deny ?? VITE_DEFAULT_FS_DENY),+ API_TOKEN_FILE,+ ]+}+ export function resolveFsAllow( projectRoot: string, rootConfigFile: string | false | undefined,
Adds appendApiTokenFsDeny, which keeps Vite's default deny patterns for .env, certificate and key files, .npmrc, .yarnrc.yml and .git and then appends the token file, so the defaults survive.