Skip to content

Upgrading vite 6 to 7

Safe6.4.5 → 7.3.7Security13

SafeUpgrade verdict

13 security fixes. Nothing to change in your code.

  • launch-editor: `fs.existsSync()` existence check can be bypassed on Windows
  • launch-editor: escapeCmdArgs() omits % escaping on Windows
  • Vite: Cross origin script execution through Vite custom middleware
  • launch-editor: Editor CLI flag misinterpretation causing arbitrary command execution for some editors
Top 3 of 13 that need code or config changes

Node.js requirement changed in 7.0.0-beta.0: ^18.0.0 || ^20.0.0 || >=22.0.0 → ^20.19.0 || >=22.12.0.

Security13
launch-editor: fs.existsSync() existence check can be bypassed on Windows
High
launch-editor: escapeCmdArgs() omits % escaping on Windows
Moderate
Vite: Cross origin script execution through Vite custom middleware
Low
launch-editor: Editor CLI flag misinterpretation causing arbitrary command execution for some editors
Moderate
Vite: Files outside server.fs.allow could be served when project paths match system paths on non-Windows machine
Moderate
launch-editor: NTLMv2 hash disclosure via UNC path handling on Windows
Moderate
vite: server.fs.deny bypass on Windows alternate paths
Moderate
Vite Vulnerable to Path Traversal in Optimized Deps .map Handling
Moderate
Vite: server.fs.deny bypassed with queries
High
Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket
High
vite allows server.fs.deny bypass via backslash on Windows
Moderate
Vite middleware may serve files starting with the same name with the public directory
Low
Vite's server.fs settings were not applied to HTML files
Low

Generated by DepDelta from published .d.ts files. Not mixed with prose notes.

  • added: interface Worker
  • added: interface PluginContextMeta extends PluginContextMetaExtension
  • added: const i: (options: { createConnection: () => WebSocket; pingInterval?: number }) => Required<Pick<ModuleRunnerTransport, 'connect' | 'disconnect' | 'send'>>
  • added: interface a
  • added: interface c
  • added: interface o
  • added: interface r
  • added: interface t
  • added: method r.connect?(onMessage?: (data: HotPayload) => void): Promise<void> | void
  • added: method r.disconnect?(): Promise<void> | void
  • added: method r.invoke<T extends keyof InvokeMethods>(name: T, data: Parameters<InvokeMethods[T]>): Promise<ReturnType<Awaited<InvokeMethods[T]>>>
  • added: method r.send(data: HotPayload): Promise<void>
  • added: method t.connect?(handlers: ModuleRunnerTransportHandlers): Promise<void> | void
  • added: method t.disconnect?(): Promise<void> | void
  • added: method t.invoke?(data: HotPayload): Promise<{ result: any } | { error: any }>
  • added: method t.send?(data: HotPayload): Promise<void> | void
  • added: property a.externalize: string
  • added: property a.type: 'module' | 'commonjs' | 'builtin' | 'network'
  • added: property c.code: string
  • added: property c.file: string | null
  • added: property c.id: string
  • added: property c.invalidate: boolean
  • added: property c.url: string
  • added: property o.cached?: boolean
  • added: property o.startOffset?: number
  • added: property t.timeout?: number
  • added: type n = { onMessage: (data: HotPayload) => void; onDisconnection: () => void }
  • added: type s = CachedFetchResult | ExternalFetchResult | ViteFetchResult
  • removed: class HttpProxy.Server extends events.EventEmitter
  • removed: class SplitVendorChunkCache
  • removed: constructor HttpProxy.Server(options?: ServerOptions)
  • removed: constructor SplitVendorChunkCache()
  • removed: enum Terser.InlineFunctions
  • removed: enum Terser.OutputQuoteStyle
  • removed: export { ChunkMetadata } from '../../types/metadata'
  • removed: export { ConnectedPayload } from '../../types/hmrPayload'
  • removed: export { CustomEventMap } from '../../types/customEvent'
  • removed: export { CustomPayload } from '../../types/hmrPayload'
  • removed: export { CustomPluginOptionsVite } from '../../types/metadata'
  • removed: export { ErrorPayload } from '../../types/hmrPayload'
  • removed: export { FetchFunction } from 'vite/module-runner'
  • removed: export { FetchResult } from 'vite/module-runner'
  • removed: export { FullReloadPayload } from '../../types/hmrPayload'
  • removed: export { GeneralImportGlobOptions } from '../../types/importGlob'
  • removed: export { HMRPayload } from '../../types/hmrPayload'
  • removed: export { HotPayload } from '../../types/hmrPayload'
  • removed: export { ImportGlobFunction } from '../../types/importGlob'
  • removed: export { ImportGlobOptions } from '../../types/importGlob'
  • removed: export { InferCustomEventPayload } from '../../types/customEvent'
  • removed: export { InvalidatePayload } from '../../types/customEvent'
  • removed: export { KnownAsTypeMap } from '../../types/importGlob'
  • removed: export { LightningCSSOptions } from '../../types/internal/lightningcssOptions'
  • removed: export { PrunePayload } from '../../types/hmrPayload'
  • removed: export { TransformOptions as EsbuildTransformOptions } from 'esbuild'
  • removed: export { Update } from '../../types/hmrPayload'
  • removed: export { UpdatePayload } from '../../types/hmrPayload'
  • removed: export { parseAst } from 'rollup/parseAst'
  • removed: export { parseAstAsync } from 'rollup/parseAst'
  • removed: export { rollup as Rollup }
  • removed: export { version as esbuildVersion } from 'esbuild'
  • removed: function splitVendorChunk(options?: { cache?: SplitVendorChunkCache }): GetManualChunk
  • removed: function splitVendorChunkPlugin(): Plugin
  • removed: interface HttpProxy.ProxyTargetDetailed
  • removed: interface HttpProxy.ServerOptions
  • removed: interface Terser.CompressOptions
  • removed: interface Terser.FormatOptions
  • removed: interface Terser.MangleOptions
  • removed: interface Terser.ManglePropertiesOptions
  • removed: interface Terser.MinifyOptions
  • removed: interface Terser.MinifyOutput
  • removed: interface Terser.ParseOptions
  • removed: interface Terser.SimpleIdentifierMangler
  • removed: interface Terser.SourceMapOptions
  • removed: interface Terser.WeightedIdentifierMangler extends SimpleIdentifierMangler
  • removed: member Terser.InlineFunctions.Disabled = 0
  • removed: member Terser.InlineFunctions.SimpleFunctions = 1
  • removed: member Terser.InlineFunctions.WithArguments = 2
  • removed: member Terser.InlineFunctions.WithArgumentsAndVariables = 3
  • removed: member Terser.OutputQuoteStyle.AlwaysDouble = 2
  • removed: member Terser.OutputQuoteStyle.AlwaysOriginal = 3
  • removed: member Terser.OutputQuoteStyle.AlwaysSingle = 1
  • removed: member Terser.OutputQuoteStyle.PreferDouble = 0
  • removed: method HttpProxy.Server.addListener(event: string, listener: () => void): this
  • removed: method HttpProxy.Server.close(callback?: () => void): void
  • removed: method HttpProxy.Server.emit(event: string, ...args: any[]): boolean
  • removed: method HttpProxy.Server.getMaxListeners(): number
  • removed: method HttpProxy.Server.listen(port: number): Server
  • removed: method HttpProxy.Server.listenerCount(type: string): number
  • removed: method HttpProxy.Server.listeners(event: string): Array<() => void>
  • removed: method HttpProxy.Server.on(event: 'close', listener: (proxyRes: http.IncomingMessage, proxySocket: net.Socket, proxyHead: any) => void): this
  • removed: method HttpProxy.Server.on(event: 'econnreset', listener: (err: Error, req: http.IncomingMessage, res: http.ServerResponse, target: ProxyTargetUrl) => void): this
  • removed: method HttpProxy.Server.on(event: 'end', listener: (req: http.IncomingMessage, res: http.ServerResponse, proxyRes: http.IncomingMessage) => void): this
  • removed: method HttpProxy.Server.on(event: 'error', listener: ErrorCallback): this
  • removed: method HttpProxy.Server.on(event: 'proxyReq', listener: (proxyReq: http.ClientRequest, req: http.IncomingMessage, res: http.ServerResponse, options: ServerOptions) => void): this
  • removed: method HttpProxy.Server.on(event: 'proxyReqWs', listener: (proxyReq: http.ClientRequest, req: http.IncomingMessage, socket: net.Socket, options: ServerOptions, head: any) => void): this
  • removed: method HttpProxy.Server.on(event: 'proxyRes', listener: (proxyRes: http.IncomingMessage, req: http.IncomingMessage, res: http.ServerResponse) => void): this
  • removed: method HttpProxy.Server.on(event: 'start', listener: (req: http.IncomingMessage, res: http.ServerResponse, target: ProxyTargetUrl) => void): this
  • removed: method HttpProxy.Server.on(event: string, listener: () => void): this
  • removed: method HttpProxy.Server.once(event: string, listener: () => void): this
  • removed: method HttpProxy.Server.removeAllListeners(event?: string): this
  • removed: method HttpProxy.Server.removeListener(event: string, listener: () => void): this
  • removed: method HttpProxy.Server.setMaxListeners(n: number): this
  • removed: method HttpProxy.Server.web(req: http.IncomingMessage, res: http.ServerResponse, options?: ServerOptions, callback?: ErrorCallback): void
  • removed: method HttpProxy.Server.ws(req: http.IncomingMessage, socket: unknown, head: unknown, options?: ServerOptions, callback?: ErrorCallback): void
  • removed: method SplitVendorChunkCache.reset(): void
  • removed: method Terser.SimpleIdentifierMangler.get(n: number): string
  • removed: method Terser.WeightedIdentifierMangler.consider(chars: string, delta: number): number
  • removed: method Terser.WeightedIdentifierMangler.reset(): void
  • removed: method Terser.WeightedIdentifierMangler.sort(): void
  • removed: namespace Terser
  • removed: property ExperimentalOptions.skipSsrTransform?: boolean
  • removed: property HotUpdateOptions.environment: DevEnvironment
  • removed: property HttpProxy.ProxyTargetDetailed.ca?: string | undefined
  • removed: property HttpProxy.ProxyTargetDetailed.cert?: string | undefined
  • removed: property HttpProxy.ProxyTargetDetailed.ciphers?: string | undefined
  • removed: property HttpProxy.ProxyTargetDetailed.host: string
  • removed: property HttpProxy.ProxyTargetDetailed.hostname?: string | undefined
  • removed: property HttpProxy.ProxyTargetDetailed.key?: string | undefined
  • removed: property HttpProxy.ProxyTargetDetailed.passphrase?: string | undefined
  • removed: property HttpProxy.ProxyTargetDetailed.pfx?: Buffer | string | undefined
  • removed: property HttpProxy.ProxyTargetDetailed.port: number
  • removed: property HttpProxy.ProxyTargetDetailed.protocol?: string | undefined
  • removed: property HttpProxy.ProxyTargetDetailed.secureProtocol?: string | undefined
  • removed: property HttpProxy.ProxyTargetDetailed.socketPath?: string | undefined
  • removed: property HttpProxy.ServerOptions.agent?: any
  • removed: property HttpProxy.ServerOptions.auth?: string | undefined
  • removed: property HttpProxy.ServerOptions.autoRewrite?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.buffer?: stream.Stream | undefined
  • removed: property HttpProxy.ServerOptions.changeOrigin?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.cookieDomainRewrite?: | false | string | { [oldDomain: string]: string } | undefined
  • removed: property HttpProxy.ServerOptions.cookiePathRewrite?: | false | string | { [oldPath: string]: string } | undefined
  • removed: property HttpProxy.ServerOptions.followRedirects?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.forward?: ProxyTargetUrl | undefined
  • removed: property HttpProxy.ServerOptions.headers?: { [header: string]: string } | undefined
  • removed: property HttpProxy.ServerOptions.hostRewrite?: string | undefined
  • removed: property HttpProxy.ServerOptions.ignorePath?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.localAddress?: string | undefined
  • removed: property HttpProxy.ServerOptions.prependPath?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.preserveHeaderKeyCase?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.protocolRewrite?: string | undefined
  • removed: property HttpProxy.ServerOptions.proxyTimeout?: number | undefined
  • removed: property HttpProxy.ServerOptions.secure?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.selfHandleResponse?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.ssl?: any
  • removed: property HttpProxy.ServerOptions.target?: ProxyTarget | undefined
  • removed: property HttpProxy.ServerOptions.timeout?: number | undefined
  • removed: property HttpProxy.ServerOptions.toProxy?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.ws?: boolean | undefined
  • removed: property HttpProxy.ServerOptions.xfwd?: boolean | undefined
  • removed: property LegacyOptions.proxySsrExternalModules?: boolean
  • removed: property SplitVendorChunkCache.cache: Map<string, boolean>
  • removed: property Terser.CompressOptions.arguments?: boolean
  • removed: property Terser.CompressOptions.arrows?: boolean
  • removed: property Terser.CompressOptions.booleans?: boolean
  • removed: property Terser.CompressOptions.booleans_as_integers?: boolean
  • removed: property Terser.CompressOptions.collapse_vars?: boolean
  • removed: property Terser.CompressOptions.comparisons?: boolean
  • removed: property Terser.CompressOptions.computed_props?: boolean
  • removed: property Terser.CompressOptions.conditionals?: boolean
  • removed: property Terser.CompressOptions.dead_code?: boolean
  • removed: property Terser.CompressOptions.defaults?: boolean
  • removed: property Terser.CompressOptions.directives?: boolean
  • removed: property Terser.CompressOptions.drop_console?: DropConsoleOption
  • removed: property Terser.CompressOptions.drop_debugger?: boolean
  • removed: property Terser.CompressOptions.ecma?: ECMA
  • removed: property Terser.CompressOptions.evaluate?: boolean
  • removed: property Terser.CompressOptions.expression?: boolean
  • removed: property Terser.CompressOptions.global_defs?: object
  • removed: property Terser.CompressOptions.hoist_funs?: boolean
  • removed: property Terser.CompressOptions.hoist_props?: boolean
  • removed: property Terser.CompressOptions.hoist_vars?: boolean
  • removed: property Terser.CompressOptions.ie8?: boolean
  • removed: property Terser.CompressOptions.if_return?: boolean
  • removed: property Terser.CompressOptions.inline?: boolean | InlineFunctions
  • removed: property Terser.CompressOptions.join_vars?: boolean
  • removed: property Terser.CompressOptions.keep_classnames?: boolean | RegExp
  • removed: property Terser.CompressOptions.keep_fargs?: boolean
  • removed: property Terser.CompressOptions.keep_fnames?: boolean | RegExp
  • removed: property Terser.CompressOptions.keep_infinity?: boolean
  • removed: property Terser.CompressOptions.loops?: boolean
  • removed: property Terser.CompressOptions.module?: boolean
  • removed: property Terser.CompressOptions.negate_iife?: boolean
  • removed: property Terser.CompressOptions.passes?: number
  • removed: property Terser.CompressOptions.properties?: boolean
  • removed: property Terser.CompressOptions.pure_funcs?: string[]
  • removed: property Terser.CompressOptions.pure_getters?: boolean | 'strict'
  • removed: property Terser.CompressOptions.pure_new?: boolean
  • removed: property Terser.CompressOptions.reduce_funcs?: boolean
  • removed: property Terser.CompressOptions.reduce_vars?: boolean
  • removed: property Terser.CompressOptions.sequences?: boolean | number
  • removed: property Terser.CompressOptions.side_effects?: boolean
  • removed: property Terser.CompressOptions.switches?: boolean
  • removed: property Terser.CompressOptions.top_retain?: null | string | string[] | RegExp
  • removed: property Terser.CompressOptions.toplevel?: boolean
  • removed: property Terser.CompressOptions.typeofs?: boolean
  • removed: property Terser.CompressOptions.unsafe?: boolean
  • removed: property Terser.CompressOptions.unsafe_Function?: boolean
  • removed: property Terser.CompressOptions.unsafe_arrows?: boolean
  • removed: property Terser.CompressOptions.unsafe_comps?: boolean
  • removed: property Terser.CompressOptions.unsafe_math?: boolean
  • removed: property Terser.CompressOptions.unsafe_methods?: boolean
  • removed: property Terser.CompressOptions.unsafe_proto?: boolean
  • removed: property Terser.CompressOptions.unsafe_regexp?: boolean
  • removed: property Terser.CompressOptions.unsafe_symbols?: boolean
  • removed: property Terser.CompressOptions.unsafe_undefined?: boolean
  • removed: property Terser.CompressOptions.unused?: boolean
  • removed: property Terser.FormatOptions.ascii_only?: boolean
  • removed: property Terser.FormatOptions.beautify?: boolean
  • removed: property Terser.FormatOptions.braces?: boolean
  • removed: property Terser.FormatOptions.comments?: | boolean | 'all' | 'some' | RegExp | ((node: any, comment: { value: string; type: 'comment1' | 'comment2' | 'comment3' | 'comment4'; pos: number; line: number; col: number }) => boolean)
  • removed: property Terser.FormatOptions.ecma?: ECMA
  • removed: property Terser.FormatOptions.ie8?: boolean
  • removed: property Terser.FormatOptions.indent_level?: number
  • removed: property Terser.FormatOptions.indent_start?: number
  • removed: property Terser.FormatOptions.inline_script?: boolean
  • removed: property Terser.FormatOptions.keep_numbers?: boolean
  • removed: property Terser.FormatOptions.keep_quoted_props?: boolean
  • removed: property Terser.FormatOptions.max_line_len?: number | false
  • removed: property Terser.FormatOptions.preamble?: string
  • removed: property Terser.FormatOptions.preserve_annotations?: boolean
  • removed: property Terser.FormatOptions.quote_keys?: boolean
  • removed: property Terser.FormatOptions.quote_style?: OutputQuoteStyle
  • removed: property Terser.FormatOptions.safari10?: boolean
  • removed: property Terser.FormatOptions.semicolons?: boolean
  • removed: property Terser.FormatOptions.shebang?: boolean
  • removed: property Terser.FormatOptions.shorthand?: boolean
  • removed: property Terser.FormatOptions.source_map?: SourceMapOptions
  • removed: property Terser.FormatOptions.webkit?: boolean
  • removed: property Terser.FormatOptions.width?: number
  • removed: property Terser.FormatOptions.wrap_func_args?: boolean
  • removed: property Terser.FormatOptions.wrap_iife?: boolean
  • removed: property Terser.MangleOptions.eval?: boolean
  • removed: property Terser.MangleOptions.keep_classnames?: boolean | RegExp
  • removed: property Terser.MangleOptions.keep_fnames?: boolean | RegExp
  • removed: property Terser.MangleOptions.module?: boolean
  • removed: property Terser.MangleOptions.nth_identifier?: SimpleIdentifierMangler | WeightedIdentifierMangler
  • removed: property Terser.MangleOptions.properties?: boolean | ManglePropertiesOptions
  • removed: property Terser.MangleOptions.reserved?: string[]
  • removed: property Terser.MangleOptions.safari10?: boolean
  • removed: property Terser.MangleOptions.toplevel?: boolean
  • removed: property Terser.ManglePropertiesOptions.builtins?: boolean
  • removed: property Terser.ManglePropertiesOptions.debug?: boolean
  • removed: property Terser.ManglePropertiesOptions.keep_quoted?: boolean | 'strict'
  • removed: property Terser.ManglePropertiesOptions.nth_identifier?: SimpleIdentifierMangler | WeightedIdentifierMangler
  • removed: property Terser.ManglePropertiesOptions.regex?: RegExp | string
  • removed: property Terser.ManglePropertiesOptions.reserved?: string[]
  • removed: property Terser.MinifyOptions.compress?: boolean | CompressOptions
  • removed: property Terser.MinifyOptions.ecma?: ECMA
  • removed: property Terser.MinifyOptions.enclose?: boolean | string
  • removed: property Terser.MinifyOptions.format?: FormatOptions
  • removed: property Terser.MinifyOptions.ie8?: boolean
  • removed: property Terser.MinifyOptions.keep_classnames?: boolean | RegExp
  • removed: property Terser.MinifyOptions.keep_fnames?: boolean | RegExp
  • removed: property Terser.MinifyOptions.mangle?: boolean | MangleOptions
  • removed: property Terser.MinifyOptions.module?: boolean
  • removed: property Terser.MinifyOptions.nameCache?: object
  • removed: property Terser.MinifyOptions.output?: FormatOptions
  • removed: property Terser.MinifyOptions.parse?: ParseOptions
  • removed: property Terser.MinifyOptions.safari10?: boolean
  • removed: property Terser.MinifyOptions.sourceMap?: boolean | SourceMapOptions
  • removed: property Terser.MinifyOptions.toplevel?: boolean
  • removed: property Terser.MinifyOutput.code?: string
  • removed: property Terser.MinifyOutput.decoded_map?: object | null
  • removed: property Terser.MinifyOutput.map?: object | string
  • removed: property Terser.ParseOptions.bare_returns?: boolean
  • removed: property Terser.ParseOptions.ecma?: ECMA
  • removed: property Terser.ParseOptions.html5_comments?: boolean
  • removed: property Terser.ParseOptions.shebang?: boolean
  • removed: property Terser.SourceMapOptions.asObject?: boolean
  • removed: property Terser.SourceMapOptions.content?: object | string
  • removed: property Terser.SourceMapOptions.filename?: string
  • removed: property Terser.SourceMapOptions.includeSources?: boolean
  • removed: property Terser.SourceMapOptions.root?: string
  • removed: property Terser.SourceMapOptions.url?: string | 'inline'
  • removed: static method HttpProxy.Server.createProxy(options?: ServerOptions): Server
  • removed: static method HttpProxy.Server.createProxyServer(options?: ServerOptions): Server
  • removed: static method HttpProxy.Server.createServer(options?: ServerOptions): Server
  • removed: type HMRBroadcaster = HotBroadcaster
  • removed: type HMRBroadcasterClient = HotChannelClient
  • removed: type HMRChannel = HotChannel
  • removed: type HttpProxy.ErrorCallback = (err: Error, req: http.IncomingMessage, res: http.ServerResponse, target?: ProxyTargetUrl) => void
  • removed: type HttpProxy.ProxyTarget = ProxyTargetUrl | ProxyTargetDetailed
  • removed: type HttpProxy.ProxyTargetUrl = string | Partial<url.Url>
  • removed: type ServerHMRChannel = ServerHotChannel
  • removed: type Terser.ConsoleProperty = keyof typeof console
  • removed: type Terser.DropConsoleOption = boolean | ConsoleProperty[]
  • removed: type Terser.ECMA = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020
  • changed: class WebSocket.Server<T extends WebSocket = WebSocket> extends EventEmitter → class WebSocket.Server<T$1 extends WebSocket = WebSocket> extends EventEmitter
  • changed: constructor WebSocket(address: string | URL, options?: WebSocket.ClientOptions | ClientRequestArgs) → constructor WebSocket(address: string | url_URL, options?: WebSocket.ClientOptions | ClientRequestArgs)
  • changed: constructor WebSocket(address: string | URL, protocols?: string | string[], options?: WebSocket.ClientOptions | ClientRequestArgs) → constructor WebSocket(address: string | url_URL, protocols?: string | string[], options?: WebSocket.ClientOptions | ClientRequestArgs)
  • changed: function fetchModule(environment: DevEnvironment, url: string, importer?: string, options?: FetchModuleOptions): Promise<FetchResult> → function fetchModule(environment: DevEnvironment, url: string, importer?: string, options?: FetchModuleOptions): Promise<moduleRunner_FetchResult>
  • changed: function resolveConfig(inlineConfig: InlineConfig, command: 'build' | 'serve', defaultMode?: string, defaultNodeEnv?: string, isPreview?: boolean): Promise<ResolvedConfig> → function resolveConfig(inlineConfig: InlineConfig, command: 'build' | 'serve', defaultMode?: string, defaultNodeEnv?: string, isPreview?: boolean, patchConfig?: ((config: ResolvedConfig) => void) | undefined, patchPlugins?: ((resolvedPlugins: Plugin[]) => void) | undefined): Promise<ResolvedConfig>
  • changed: function runnerImport<T>(moduleId: string, inlineConfig?: InlineConfig): Promise<RunnerImportResult<T>> → function runnerImport<T$1>(moduleId: string, inlineConfig?: InlineConfig): Promise<RunnerImportResult<T$1>>
  • changed: function send(req: IncomingMessage, res: ServerResponse, content: string | Buffer, type: string, options: SendOptions): void → function send(req: http.IncomingMessage, res: ServerResponse, content: string | Buffer, type: string, options: SendOptions): void
  • changed: get DevEnvironment.pluginContainer(): EnvironmentPluginContainer → get DevEnvironment.pluginContainer(): EnvironmentPluginContainer<DevEnvironment>
  • changed: get ModuleNode.type(): 'js' | 'css' → get ModuleNode.type(): 'js' | 'css' | 'asset'
  • changed: interface Plugin<A = any> extends rollup.Plugin<A> → interface Plugin<A = any> extends Rollup.Plugin<A>
  • changed: interface ProxyOptions extends HttpProxy.ServerOptions → interface ProxyOptions extends ServerOptions$3
  • changed: interface ResolvedConfig extends Readonly<Omit<UserConfig, 'plugins' | 'css' | 'json' | 'assetsInclude' | 'optimizeDeps' | 'worker' | 'build' | 'dev' | 'environments' | 'server' | 'preview'> & { configFile: string | undefined; configFileDependencies: string[]; inlineConfig: InlineConfig; root: string; base: string; publicDir: string; cacheDir: string; command: 'build' | 'serve'; mode: string; isW… → interface ResolvedConfig extends Readonly<Omit<UserConfig, 'plugins' | 'css' | 'json' | 'assetsInclude' | 'optimizeDeps' | 'worker' | 'build' | 'dev' | 'environments' | 'experimental' | 'future' | 'server' | 'preview'> & { configFile: string | undefined; configFileDependencies: string[]; inlineConfig: InlineConfig; root: string; base: string; publicDir: string; cacheDir: string; command: 'build'…
  • changed: interface ResolvedServerOptions extends Omit<RequiredExceptFor<ServerOptions, 'host' | 'https' | 'proxy' | 'hmr' | 'ws' | 'watch' | 'origin' | 'hotUpdateEnvironments'>, 'fs' | 'middlewareMode' | 'sourcemapIgnoreList'> → interface ResolvedServerOptions extends Omit<RequiredExceptFor<ServerOptions$1, 'host' | 'https' | 'proxy' | 'hmr' | 'ws' | 'watch' | 'origin' | 'hotUpdateEnvironments'>, 'fs' | 'middlewareMode' | 'sourcemapIgnoreList'>
  • changed: interface TerserOptions extends Terser.MinifyOptions → interface TerserOptions extends TerserMinifyOptions
  • changed: method DevEnvironment.fetchModule(id: string, importer?: string, options?: FetchFunctionOptions): Promise<FetchResult> → method DevEnvironment.fetchModule(id: string, importer?: string, options?: FetchFunctionOptions): Promise<moduleRunner_FetchResult>
  • changed: method EnvironmentModuleGraph.invalidateModule(mod: EnvironmentModuleNode, seen?: Set<EnvironmentModuleNode>, timestamp?: number, isHmr?: boolean): void → method EnvironmentModuleGraph.invalidateModule(mod: EnvironmentModuleNode, seen?: Set<EnvironmentModuleNode>, timestamp?: number, isHmr?: boolean, softInvalidate?: boolean): void
  • changed: method EnvironmentModuleGraph.updateModuleInfo(mod: EnvironmentModuleNode, importedModules: Set<string | EnvironmentModuleNode>, importedBindings: Map<string, Set<string>> | null, acceptedModules: Set<string | EnvironmentModuleNode>, acceptedExports: Set<string> | null, isSelfAccepting: boolean): Promise<Set<EnvironmentModuleNode> | undefined> → method EnvironmentModuleGraph.updateModuleInfo(mod: EnvironmentModuleNode, importedModules: Set<string | EnvironmentModuleNode>, importedBindings: Map<string, Set<string>> | null, acceptedModules: Set<string | EnvironmentModuleNode>, acceptedExports: Set<string> | null, isSelfAccepting: boolean, staticImportedUrls?: Set<string>): Promise<Set<EnvironmentModuleNode> | undefined>
  • changed: method HotChannel.on?<T extends string>(event: T, listener: HotChannelListener<T>): void → method HotChannel.on?<T$1 extends string>(event: T$1, listener: HotChannelListener<T$1>): void
  • changed: method HotChannel.send?(payload: HotPayload): void → method HotChannel.send?(payload: hmrPayload_HotPayload): void
  • changed: method HotChannelClient.send(payload: HotPayload): void → method HotChannelClient.send(payload: hmrPayload_HotPayload): void
  • changed: method ModuleGraph.invalidateModule(mod: ModuleNode, seen?: Set<ModuleNode>, timestamp?: number, isHmr?: boolean): void → method ModuleGraph.invalidateModule(mod: ModuleNode, seen?: Set<ModuleNode>, timestamp?: number, isHmr?: boolean, softInvalidate?: boolean): void
  • changed: method ModuleNode._get<T extends keyof EnvironmentModuleNode>(prop: T): EnvironmentModuleNode[T] → method ModuleNode._get<T$1 extends keyof EnvironmentModuleNode>(prop: T$1): EnvironmentModuleNode[T$1]
  • changed: method ModuleNode._set<T extends keyof EnvironmentModuleNode>(prop: T, value: EnvironmentModuleNode[T]): void → method ModuleNode._set<T$1 extends keyof EnvironmentModuleNode>(prop: T$1, value: EnvironmentModuleNode[T$1]): void
  • changed: method NormalizedHotChannel.handleInvoke(payload: HotPayload): Promise<{ result: any } | { error: any }> → method NormalizedHotChannel.handleInvoke(payload: hmrPayload_HotPayload): Promise<{ result: any } | { error: any }>
  • changed: method NormalizedHotChannel.on<T extends string>(event: T, listener: (data: InferCustomEventPayload<T>, client: NormalizedHotChannelClient) => void): void → method NormalizedHotChannel.on<T$1 extends string>(event: T$1, listener: (data: InferCustomEventPayload<T$1>, client: NormalizedHotChannelClient) => void): void
  • changed: method NormalizedHotChannel.send(payload: HotPayload): void → method NormalizedHotChannel.send(payload: hmrPayload_HotPayload): void
  • changed: method NormalizedHotChannel.send<T extends string>(event: T, payload?: InferCustomEventPayload<T>): void → method NormalizedHotChannel.send<T$1 extends string>(event: T$1, payload?: InferCustomEventPayload<T$1>): void
  • changed: method NormalizedHotChannelClient.send(event: string, payload?: CustomPayload['data']): void → method NormalizedHotChannelClient.send(event: string, payload?: hmrPayload_CustomPayload['data']): void
  • changed: method NormalizedHotChannelClient.send(payload: HotPayload): void → method NormalizedHotChannelClient.send(payload: hmrPayload_HotPayload): void
  • changed: method WebSocket.Server.addListener(event: 'connection', cb: (client: T, request: IncomingMessage) => void): this → method WebSocket.Server.addListener(event: 'connection', cb: (client: T$1, request: http.IncomingMessage) => void): this
  • changed: method WebSocket.Server.addListener(event: 'headers', cb: (headers: string[], request: IncomingMessage) => void): this → method WebSocket.Server.addListener(event: 'headers', cb: (headers: string[], request: http.IncomingMessage) => void): this
  • changed: method WebSocket.Server.handleUpgrade(request: IncomingMessage, socket: Duplex, upgradeHead: Buffer, callback: (client: T, request: IncomingMessage) => void): void → method WebSocket.Server.handleUpgrade(request: http.IncomingMessage, socket: Duplex, upgradeHead: Buffer, callback: (client: T$1, request: http.IncomingMessage) => void): void
  • changed: method WebSocket.Server.off(event: 'close' | 'listening', cb: (this: Server<T>) => void): this → method WebSocket.Server.off(event: 'close' | 'listening', cb: (this: Server<T$1>) => void): this
  • changed: method WebSocket.Server.off(event: 'connection', cb: (this: Server<T>, socket: T, request: IncomingMessage) => void): this → method WebSocket.Server.off(event: 'connection', cb: (this: Server<T$1>, socket: T$1, request: http.IncomingMessage) => void): this
  • changed: method WebSocket.Server.off(event: 'error', cb: (this: Server<T>, error: Error) => void): this → method WebSocket.Server.off(event: 'error', cb: (this: Server<T$1>, error: Error) => void): this
  • changed: method WebSocket.Server.off(event: 'headers', cb: (this: Server<T>, headers: string[], request: IncomingMessage) => void): this → method WebSocket.Server.off(event: 'headers', cb: (this: Server<T$1>, headers: string[], request: http.IncomingMessage) => void): this
  • changed: method WebSocket.Server.off(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this → method WebSocket.Server.off(event: string | symbol, listener: (this: Server<T$1>, ...args: any[]) => void): this
  • changed: method WebSocket.Server.on(event: 'close' | 'listening', cb: (this: Server<T>) => void): this → method WebSocket.Server.on(event: 'close' | 'listening', cb: (this: Server<T$1>) => void): this
  • changed: method WebSocket.Server.on(event: 'connection', cb: (this: Server<T>, socket: T, request: IncomingMessage) => void): this → method WebSocket.Server.on(event: 'connection', cb: (this: Server<T$1>, socket: T$1, request: http.IncomingMessage) => void): this
  • changed: method WebSocket.Server.on(event: 'error', cb: (this: Server<T>, error: Error) => void): this → method WebSocket.Server.on(event: 'error', cb: (this: Server<T$1>, error: Error) => void): this
  • changed: method WebSocket.Server.on(event: 'headers', cb: (this: Server<T>, headers: string[], request: IncomingMessage) => void): this → method WebSocket.Server.on(event: 'headers', cb: (this: Server<T$1>, headers: string[], request: http.IncomingMessage) => void): this
  • changed: method WebSocket.Server.on(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this → method WebSocket.Server.on(event: string | symbol, listener: (this: Server<T$1>, ...args: any[]) => void): this
  • changed: method WebSocket.Server.once(event: 'close' | 'listening', cb: (this: Server<T>) => void): this → method WebSocket.Server.once(event: 'close' | 'listening', cb: (this: Server<T$1>) => void): this
  • changed: method WebSocket.Server.once(event: 'connection', cb: (this: Server<T>, socket: T, request: IncomingMessage) => void): this → method WebSocket.Server.once(event: 'connection', cb: (this: Server<T$1>, socket: T$1, request: http.IncomingMessage) => void): this
  • changed: method WebSocket.Server.once(event: 'error', cb: (this: Server<T>, error: Error) => void): this → method WebSocket.Server.once(event: 'error', cb: (this: Server<T$1>, error: Error) => void): this
  • changed: method WebSocket.Server.once(event: 'headers', cb: (this: Server<T>, headers: string[], request: IncomingMessage) => void): this → method WebSocket.Server.once(event: 'headers', cb: (this: Server<T$1>, headers: string[], request: http.IncomingMessage) => void): this
  • changed: method WebSocket.Server.once(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this → method WebSocket.Server.once(event: string | symbol, listener: (this: Server<T$1>, ...args: any[]) => void): this
  • changed: method WebSocket.Server.removeListener(event: 'connection', cb: (client: T) => void): this → method WebSocket.Server.removeListener(event: 'connection', cb: (client: T$1) => void): this
  • changed: method WebSocket.Server.removeListener(event: 'headers', cb: (headers: string[], request: IncomingMessage) => void): this → method WebSocket.Server.removeListener(event: 'headers', cb: (headers: string[], request: http.IncomingMessage) => void): this
  • changed: method WebSocket.Server.shouldHandle(request: IncomingMessage): boolean | Promise<boolean> → method WebSocket.Server.shouldHandle(request: http.IncomingMessage): boolean | Promise<boolean>
  • changed: method WebSocket.addListener(event: 'unexpected-response', listener: (request: ClientRequest, response: IncomingMessage) => void): this → method WebSocket.addListener(event: 'unexpected-response', listener: (request: ClientRequest, response: http.IncomingMessage) => void): this
  • changed: method WebSocket.addListener(event: 'upgrade', listener: (request: IncomingMessage) => void): this → method WebSocket.addListener(event: 'upgrade', listener: (request: http.IncomingMessage) => void): this
  • changed: method WebSocket.off(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this → method WebSocket.off(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: http.IncomingMessage) => void): this
  • changed: method WebSocket.off(event: 'upgrade', listener: (this: WebSocket, request: IncomingMessage) => void): this → method WebSocket.off(event: 'upgrade', listener: (this: WebSocket, request: http.IncomingMessage) => void): this
  • changed: method WebSocket.on(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this → method WebSocket.on(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: http.IncomingMessage) => void): this
  • changed: method WebSocket.on(event: 'upgrade', listener: (this: WebSocket, request: IncomingMessage) => void): this → method WebSocket.on(event: 'upgrade', listener: (this: WebSocket, request: http.IncomingMessage) => void): this
  • changed: method WebSocket.once(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this → method WebSocket.once(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: http.IncomingMessage) => void): this
  • changed: method WebSocket.once(event: 'upgrade', listener: (this: WebSocket, request: IncomingMessage) => void): this → method WebSocket.once(event: 'upgrade', listener: (this: WebSocket, request: http.IncomingMessage) => void): this
  • changed: method WebSocket.removeListener(event: 'unexpected-response', listener: (request: ClientRequest, response: IncomingMessage) => void): this → method WebSocket.removeListener(event: 'unexpected-response', listener: (request: ClientRequest, response: http.IncomingMessage) => void): this
  • changed: method WebSocket.removeListener(event: 'upgrade', listener: (request: IncomingMessage) => void): this → method WebSocket.removeListener(event: 'upgrade', listener: (request: http.IncomingMessage) => void): this
  • changed: property BuildEnvironmentOptions.target?: 'modules' | esbuild_TransformOptions['target'] | false → property BuildEnvironmentOptions.target?: 'baseline-widely-available' | esbuild_TransformOptions['target'] | false
  • changed: property CSSOptions.lightningcss?: LightningCSSOptions → property CSSOptions.lightningcss?: lightningcssOptions_LightningCSSOptions
  • changed: property EnvironmentModuleNode.type: 'js' | 'css' → property EnvironmentModuleNode.type: 'js' | 'css' | 'asset'
  • changed: property Plugin.config?: ObjectHook<(this: void, config: UserConfig, env: ConfigEnv) => Omit<UserConfig, 'plugins'> | null | void | Promise<Omit<UserConfig, 'plugins'> | null | void>> → property Plugin.config?: ObjectHook<(this: ConfigPluginContext, config: UserConfig, env: ConfigEnv) => Omit<UserConfig, 'plugins'> | null | void | Promise<Omit<UserConfig, 'plugins'> | null | void>>
  • changed: property Plugin.configEnvironment?: ObjectHook<(this: void, name: string, config: EnvironmentOptions, env: ConfigEnv & { isSsrTargetWebworker?: boolean }) => EnvironmentOptions | null | void | Promise<EnvironmentOptions | null | void>> → property Plugin.configEnvironment?: ObjectHook<(this: ConfigPluginContext, name: string, config: EnvironmentOptions, env: ConfigEnv & { isSsrTargetWebworker?: boolean }) => EnvironmentOptions | null | void | Promise<EnvironmentOptions | null | void>>
  • changed: property Plugin.configResolved?: ObjectHook<(this: void, config: ResolvedConfig) => void | Promise<void>> → property Plugin.configResolved?: ObjectHook<(this: MinimalPluginContextWithoutEnvironment, config: ResolvedConfig) => void | Promise<void>>
  • changed: property Plugin.handleHotUpdate?: ObjectHook<(this: void, ctx: HmrContext) => Array<ModuleNode> | void | Promise<Array<ModuleNode> | void>> → property Plugin.handleHotUpdate?: ObjectHook<(this: MinimalPluginContextWithoutEnvironment, ctx: HmrContext) => Array<ModuleNode> | void | Promise<Array<ModuleNode> | void>>
  • changed: property Plugin.hotUpdate?: ObjectHook<(this: HotUpdatePluginContext, options: HotUpdateOptions) => Array<EnvironmentModuleNode> | void | Promise<Array<EnvironmentModuleNode> | void>> → property Plugin.hotUpdate?: ObjectHook<(this: MinimalPluginContext & { environment: DevEnvironment }, options: HotUpdateOptions) => Array<EnvironmentModuleNode> | void | Promise<Array<EnvironmentModuleNode> | void>>
  • changed: property Plugin.load?: ObjectHook<(this: PluginContext, id: string, options?: { ssr?: boolean }) => Promise<LoadResult> | LoadResult, { filter?: { id?: StringFilter } }> → property Plugin.load?: ObjectHook<(this: PluginContext, id: string, options?: { ssr?: boolean | undefined }) => Promise<LoadResult> | LoadResult, { filter?: { id?: StringFilter } }>
  • changed: property Plugin.resolveId?: ObjectHook<(this: PluginContext, source: string, importer: string | undefined, options: { attributes: Record<string, string>; custom?: CustomPluginOptions; ssr?: boolean; isEntry: boolean }) => Promise<ResolveIdResult> | ResolveIdResult, { filter?: { id?: StringFilter<RegExp> } }> → property Plugin.resolveId?: ObjectHook<(this: PluginContext, source: string, importer: string | undefined, options: { attributes: Record<string, string>; custom?: CustomPluginOptions; ssr?: boolean | undefined; isEntry: boolean }) => Promise<ResolveIdResult> | ResolveIdResult, { filter?: { id?: StringFilter<RegExp> } }>
  • changed: property Plugin.transform?: ObjectHook<(this: TransformPluginContext, code: string, id: string, options?: { ssr?: boolean }) => Promise<rollup.TransformResult> | rollup.TransformResult, { filter?: { id?: StringFilter; code?: StringFilter } }> → property Plugin.transform?: ObjectHook<(this: TransformPluginContext, code: string, id: string, options?: { ssr?: boolean | undefined }) => Promise<Rollup.TransformResult> | Rollup.TransformResult, { filter?: { id?: StringFilter; code?: StringFilter } }>
  • changed: property PluginHookUtils.getSortedPluginHooks: <K extends keyof Plugin>(hookName: K) => NonNullable<HookHandler<Plugin[K]>>[] → property PluginHookUtils.getSortedPluginHooks: <K$1 extends keyof Plugin>(hookName: K$1) => NonNullable<HookHandler<Plugin[K$1]>>[]
  • changed: property PluginHookUtils.getSortedPlugins: <K extends keyof Plugin>(hookName: K) => PluginWithRequiredHook<K>[] → property PluginHookUtils.getSortedPlugins: <K$1 extends keyof Plugin>(hookName: K$1) => PluginWithRequiredHook<K$1>[]
  • changed: property ProxyOptions.configure?: (proxy: HttpProxy.Server, options: ProxyOptions) => void → property ProxyOptions.configure?: (proxy: ProxyServer, options: ProxyOptions) => void
  • changed: property ResolvedServerOptions.middlewareMode: NonNullable<ServerOptions['middlewareMode']> → property ResolvedServerOptions.middlewareMode: NonNullable<ServerOptions$1['middlewareMode']>
  • changed: property ResolvedServerOptions.sourcemapIgnoreList: Exclude<ServerOptions['sourcemapIgnoreList'], false | undefined> → property ResolvedServerOptions.sourcemapIgnoreList: Exclude<ServerOptions$1['sourcemapIgnoreList'], false | undefined>
  • changed: property RollupCommonJSOptions.ignoreTryCatch?: | boolean | 'remove' | ReadonlyArray<string> | ((id: string) => boolean | 'remove') → property RollupCommonJSOptions.ignoreTryCatch?: boolean | 'remove' | ReadonlyArray<string> | ((id: string) => boolean | 'remove')
  • changed: property RollupCommonJSOptions.requireReturnsDefault?: | boolean | 'auto' | 'preferred' | 'namespace' | ((id: string) => boolean | 'auto' | 'preferred' | 'namespace') → property RollupCommonJSOptions.requireReturnsDefault?: boolean | 'auto' | 'preferred' | 'namespace' | ((id: string) => boolean | 'auto' | 'preferred' | 'namespace')
  • changed: property UserConfig.future?: FutureOptions → property UserConfig.future?: FutureOptions | 'warn'
  • changed: property UserConfig.server?: ServerOptions → property UserConfig.server?: ServerOptions$1
  • changed: property ViteDevServer.hot: HotBroadcaster → property ViteDevServer.hot: NormalizedHotChannel
  • changed: property WebSocket.PerMessageDeflateOptions.zlibDeflateOptions?: | { flush?: number | undefined; finishFlush?: number | undefined; chunkSize?: number | undefined; windowBits?: number | undefined; level?: number | undefined; memLevel?: number | undefined; strategy?: number | undefined; dictionary?: Buffer | Buffer[] | DataView | undefined; info?: boolean | undefined } | undefined → property WebSocket.PerMessageDeflateOptions.zlibDeflateOptions?: { flush?: number | undefined; finishFlush?: number | undefined; chunkSize?: number | undefined; windowBits?: number | undefined; level?: number | undefined; memLevel?: number | undefined; strategy?: number | undefined; dictionary?: Buffer | Buffer[] | DataView | undefined; info?: boolean | undefined } | undefined
  • changed: property WebSocket.Server.clients: Set<T> → property WebSocket.Server.clients: Set<T$1>
  • changed: property WebSocket.ServerOptions.handleProtocols?: (protocols: Set<string>, request: IncomingMessage) => string | false → property WebSocket.ServerOptions.handleProtocols?: (protocols: Set<string>, request: http.IncomingMessage) => string | false
  • changed: property WebSocket.ServerOptions.server?: Server | HttpsServer | undefined → property WebSocket.ServerOptions.server?: http.Server | HttpsServer | undefined
  • changed: property WebSocket.ServerOptions.verifyClient?: | VerifyClientCallbackAsync | VerifyClientCallbackSync | undefined → property WebSocket.ServerOptions.verifyClient?: VerifyClientCallbackAsync | VerifyClientCallbackSync | undefined
  • changed: property WebSocketServer.on: WebSocket.Server['on'] & { <T extends string>(event: T, listener: WebSocketCustomListener<InferCustomEventPayload<T>>): void } → property WebSocketServer.on: WebSocket.Server['on'] & { <T$1 extends string>(event: T$1, listener: WebSocketCustomListener<hmrPayload_InferCustomEventPayload<T$1>>): void }
  • changed: readonly property WebSocket.readyState: | typeof WebSocket.CONNECTING | typeof WebSocket.OPEN | typeof WebSocket.CLOSING | typeof WebSocket.CLOSED → readonly property WebSocket.readyState: typeof WebSocket.CONNECTING | typeof WebSocket.OPEN | typeof WebSocket.CLOSING | typeof WebSocket.CLOSED
  • changed: type BindCLIShortcutsOptions<Server = ViteDevServer | PreviewServer> = { print?: boolean; customShortcuts?: CLIShortcut<Server>[] } → type BindCLIShortcutsOptions<Server$3 = ViteDevServer | PreviewServer> = { print?: boolean; customShortcuts?: CLIShortcut<Server$3>[] }
  • changed: type CLIShortcut<Server = ViteDevServer | PreviewServer> = { key: string; description: string; action?(server: Server): void | Promise<void> } → type CLIShortcut<Server$3 = ViteDevServer | PreviewServer> = { key: string; description: string; action?(server: Server$3): void | Promise<void> }
  • changed: type Environment = DevEnvironment | BuildEnvironment | UnknownEnvironment → type Environment = DevEnvironment | BuildEnvironment | ScanEnvironment | UnknownEnvironment
  • changed: type HookHandler<T> = T extends ObjectHook<infer H> ? H : T → type HookHandler<T$1> = T$1 extends ObjectHook<infer H> ? H : T$1
  • changed: type HotChannelListener<T extends string = string> = (data: InferCustomEventPayload<T>, client: HotChannelClient) => void → type HotChannelListener<T$1 extends string = string> = (data: InferCustomEventPayload<T$1>, client: HotChannelClient) => void
  • changed: type IndexHtmlTransform = IndexHtmlTransformHook | { order?: 'pre' | 'post' | null; enforce?: 'pre' | 'post'; transform: IndexHtmlTransformHook } | { order?: 'pre' | 'post' | null; enfo… → type IndexHtmlTransform = IndexHtmlTransformHook | { order?: 'pre' | 'post' | null; handler: IndexHtmlTransformHook }
  • changed: type IndexHtmlTransformHook = (this: void, html: string, ctx: IndexHtmlTransformContext) => IndexHtmlTransformResult | void | Promise<IndexHtmlTransformResult | void> → type IndexHtmlTransformHook = (this: MinimalPluginContextWithoutEnvironment, html: string, ctx: IndexHtmlTransformContext) => IndexHtmlTransformResult | void | Promise<IndexHtmlTransformRes…
  • changed: type MapToFunction<T> = T extends Function ? T : never → type MapToFunction<T$1> = T$1 extends Function ? T$1 : never
  • changed: type PreviewServerHook = (this: void, server: PreviewServer) => (() => void) | void | Promise<(() => void) | void> → type PreviewServerHook = (this: MinimalPluginContextWithoutEnvironment, server: PreviewServer) => (() => void) | void | Promise<(() => void) | void>
  • changed: type ResolvedCSSOptions = Omit<CSSOptions, 'lightningcss'> & Required<Pick<CSSOptions, 'transformer' | 'devSourcemap'>> & { lightningcss?: LightningCSSOptions } → type ResolvedCSSOptions = Omit<CSSOptions, 'lightningcss'> & Required<Pick<CSSOptions, 'transformer' | 'devSourcemap'>> & { lightningcss?: lightningcssOptions_LightningCSSOptions }
  • changed: type SassPreprocessorOptions = { additionalData?: PreprocessorAdditionalData } & (({ api: 'legacy' } & SassLegacyPreprocessBaseOptions) | ({ api?: 'modern' | 'modern-compiler' } & SassModern… → type SassPreprocessorOptions = { additionalData?: PreprocessorAdditionalData } & SassModernPreprocessBaseOptions
  • changed: type ServerHook = (this: void, server: ViteDevServer) => (() => void) | void | Promise<(() => void) | void> → type ServerHook = (this: MinimalPluginContextWithoutEnvironment, server: ViteDevServer) => (() => void) | void | Promise<(() => void) | void>
  • changed: type WebSocket.VerifyClientCallbackAsync = (info: { origin: string; secure: boolean; req: IncomingMessage }, callback: (res: boolean, code?: number, message?: string, headers?: OutgoingHttpHeaders) => v… → type WebSocket.VerifyClientCallbackAsync = (info: { origin: string; secure: boolean; req: http.IncomingMessage }, callback: (res: boolean, code?: number, message?: string, headers?: OutgoingHttpHeaders)…
  • changed: type WebSocket.VerifyClientCallbackSync = (info: { origin: string; secure: boolean; req: IncomingMessage }) => boolean → type WebSocket.VerifyClientCallbackSync = (info: { origin: string; secure: boolean; req: http.IncomingMessage }) => boolean
  • changed: type WebSocketCustomListener<T> = (data: T, client: WebSocketClient, invoke?: 'send' | `send:${string}`) => void → type WebSocketCustomListener<T$1> = (data: T$1, client: WebSocketClient) => void
  • added: const defaultExternalConditions: readonly string[]
  • added: export { ChunkMetadata }
  • added: export { ConnectedPayload }
  • added: export { CustomEventMap }
  • added: export { CustomPayload }
  • added: export { CustomPluginOptionsVite }
  • added: export { ErrorPayload }
  • added: export { EsbuildTransformOptions }
  • added: export { FetchFunction }
  • added: export { FetchResult }
  • added: export { FullReloadPayload }
  • added: export { GeneralImportGlobOptions }
  • added: export { HMRPayload }
  • added: export { HotPayload }
  • added: export { ImportGlobFunction }
  • added: export { ImportGlobOptions }
  • added: export { InferCustomEventPayload }
  • added: export { InvalidatePayload }
  • added: export { KnownAsTypeMap }
  • added: export { LightningCSSOptions }
  • added: export { PrunePayload }
  • added: export { Rollup }
  • added: export { Terser }
  • added: export { Update }
  • added: export { UpdatePayload }
  • added: export { esbuildVersion }
  • added: export { parseAst }
  • added: export { parseAstAsync }
  • added: interface ConfigPluginContext extends Omit<MinimalPluginContext, 'meta' | 'environment'>
  • added: interface MinimalPluginContextWithoutEnvironment extends Omit<MinimalPluginContext, 'environment'>
  • added: property BuildEnvironment.isBuilt: boolean
  • added: property BuildEnvironmentOptions.license?: boolean | LicenseOptions
  • added: property ConfigPluginContext.meta: Omit<PluginContextMeta, 'watchMode'>
  • added: property DepOptimizationConfig.ignoreOutdatedRequests?: boolean
  • added: property Plugin.buildApp?: ObjectHook<BuildAppHook>
  • added: property Plugin.perEnvironmentWatchChangeDuringDev?: boolean
  • added: property ServerOptions.perEnvironmentWatchChangeDuringDev?: boolean
  • added: type BuildAppHook = (this: MinimalPluginContextWithoutEnvironment, builder: ViteBuilder) => Promise<void>
  • removed: export { b as ModuleRunnerTransportHandlers } from './moduleRunnerTransport.d-[hash]'
  • removed: export { c as createWebSocketModuleRunnerTransport } from './moduleRunnerTransport.d-[hash]'
  • removed: property ModuleRunnerOptions.root?: string
  • added: const ssrExportNameKey = '__vite_ssr_exportName__'
  • added: export { ModuleRunnerTransportHandlers }
  • added: export { createWebSocketModuleRunnerTransport }
  • added: function createDefaultImportMeta(modulePath: string): ModuleRunnerImportMeta
  • added: function createNodeImportMeta(modulePath: string): Promise<ModuleRunnerImportMeta>
  • added: function normalizeModuleId(file: string): string
  • added: property ModuleRunnerContext[ssrExportNameKey]: (name: string, getter: () => unknown) => void
  • added: property ModuleRunnerOptions.createImportMeta?: (modulePath: string) => ModuleRunnerImportMeta | Promise<ModuleRunnerImportMeta>
  • removed: const c: (options: { createConnection: () => WebSocket; pingInterval?: number }) => Required<Pick<ModuleRunnerTransport, 'connect' | 'disconnect' | 'send'>>
  • removed: interface E
  • removed: interface F
  • removed: interface M
  • removed: interface N
  • removed: interface V
  • removed: method M.connect?(handlers: ModuleRunnerTransportHandlers): Promise<void> | void
  • removed: method M.disconnect?(): Promise<void> | void
  • removed: method M.invoke?(data: HotPayload): Promise<{ result: any } | { error: any }>
  • removed: method M.send?(data: HotPayload): Promise<void> | void
  • removed: method N.connect?(onMessage?: (data: HotPayload) => void): Promise<void> | void
  • removed: method N.disconnect?(): Promise<void> | void
  • removed: method N.invoke<T extends keyof InvokeMethods>(name: T, data: Parameters<InvokeMethods[T]>): Promise<ReturnType<Awaited<InvokeMethods[T]>>>
  • removed: method N.send(data: HotPayload): Promise<void>
  • removed: property E.externalize: string
  • removed: property E.type: 'module' | 'commonjs' | 'builtin' | 'network'
  • removed: property F.cached?: boolean
  • removed: property F.startOffset?: number
  • removed: property M.timeout?: number
  • removed: property V.code: string
  • removed: property V.file: string | null
  • removed: property V.id: string
  • removed: property V.invalidate: boolean
  • removed: property V.url: string
  • removed: type a = CachedFetchResult | ExternalFetchResult | ViteFetchResult
  • removed: type b = { onMessage: (data: HotPayload) => void; onDisconnection: () => void }
  • removed: const module: any
  • removed: export = module
  • added: property CustomEventMap.'vite:client:connect': undefined
  • added: property CustomEventMap.'vite:client:disconnect': undefined
  • added: declare global
  • added: property ImportGlobOptions.base?: string
  • removed: index ImportMetaEnv[key: ImportMetaEnvFallbackKey]: any
  • changed: interface ImportMetaEnv → interface ImportMetaEnv extends Record<ImportMetaEnvFallbackKey, any>
  • removed: type SassLegacyPreprocessBaseOptions = Omit<SassLegacyStringOptionsAsync, | 'data' | 'file' | 'outFile' | 'sourceMap' | 'omitSourceMapUrl' | 'sourceMapEmbed' | 'sourceMapRoot'>
  • added: type TerserMinifyOptions = Terser.MinifyOptions
  • added: type TerserMinifyOutput = Terser.MinifyOutput