Skip to content

Commit 24e6a0c

Browse files
authored
refactor: use environment transform request (vitejs#20430)
1 parent d240f27 commit 24e6a0c

File tree

4 files changed

+23
-49
lines changed

4 files changed

+23
-49
lines changed

packages/vite/src/node/server/environment.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ import { EnvironmentModuleGraph } from './moduleGraph'
2222
import type { EnvironmentModuleNode } from './moduleGraph'
2323
import type { HotChannel, NormalizedHotChannel } from './hmr'
2424
import { getShortName, normalizeHotChannel, updateModules } from './hmr'
25-
import type { TransformResult } from './transformRequest'
25+
import type {
26+
TransformOptionsInternal,
27+
TransformResult,
28+
} from './transformRequest'
2629
import { transformRequest } from './transformRequest'
2730
import type { EnvironmentPluginContainer } from './pluginContainer'
2831
import {
@@ -206,8 +209,12 @@ export class DevEnvironment extends BaseEnvironment {
206209
}
207210
}
208211

209-
transformRequest(url: string): Promise<TransformResult | null> {
210-
return transformRequest(this, url)
212+
transformRequest(
213+
url: string,
214+
/** @internal */
215+
options?: TransformOptionsInternal,
216+
): Promise<TransformResult | null> {
217+
return transformRequest(this, url, options)
211218
}
212219

213220
async warmupRequest(url: string): Promise<void> {

packages/vite/src/node/server/index.ts

Lines changed: 5 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ import { ssrTransform } from '../ssr/ssrTransform'
4545
import { reloadOnTsconfigChange } from '../plugins/esbuild'
4646
import { bindCLIShortcuts } from '../shortcuts'
4747
import type { BindCLIShortcutsOptions } from '../shortcuts'
48-
import { ERR_OUTDATED_OPTIMIZED_DEP } from '../../shared/constants'
4948
import {
5049
CLIENT_DIR,
5150
DEFAULT_DEV_PORT,
@@ -67,7 +66,6 @@ import type { MinimalPluginContextWithoutEnvironment } from '../plugin'
6766
import type { PluginContainer } from './pluginContainer'
6867
import {
6968
BasicMinimalPluginContext,
70-
ERR_CLOSED_SERVER,
7169
basePluginContextMeta,
7270
createPluginContainer,
7371
} from './pluginContainer'
@@ -93,12 +91,11 @@ import { timeMiddleware } from './middlewares/time'
9391
import { ModuleGraph } from './mixedModuleGraph'
9492
import type { ModuleNode } from './mixedModuleGraph'
9593
import { notFoundMiddleware } from './middlewares/notFound'
96-
import { buildErrorMessage, errorMiddleware } from './middlewares/error'
94+
import { errorMiddleware } from './middlewares/error'
9795
import type { HmrOptions, NormalizedHotChannel } from './hmr'
9896
import { handleHMRUpdate, updateModules } from './hmr'
9997
import { openBrowser as _openBrowser } from './openBrowser'
10098
import type { TransformOptions, TransformResult } from './transformRequest'
101-
import { transformRequest } from './transformRequest'
10299
import { searchForPackageRoot, searchForWorkspaceRoot } from './searchRoot'
103100
import type { DevEnvironment } from './environment'
104101
import { hostValidationMiddleware } from './middlewares/hostCheck'
@@ -594,41 +591,18 @@ export async function _createServer(
594591
},
595592
})
596593
},
597-
// environment.transformRequest and .warmupRequest don't take an options param for now,
598-
// so the logic and error handling needs to be duplicated here.
599-
// The only param in options that could be important is `html`, but we may remove it as
600-
// that is part of the internal control flow for the vite dev server to be able to bail
601-
// out and do the html fallback
602594
transformRequest(url, options) {
603595
warnFutureDeprecation(
604596
config,
605597
'removeServerTransformRequest',
606598
'server.transformRequest() is deprecated. Use environment.transformRequest() instead.',
607599
)
608600
const environment = server.environments[options?.ssr ? 'ssr' : 'client']
609-
return transformRequest(environment, url, options)
601+
return environment.transformRequest(url)
610602
},
611-
async warmupRequest(url, options) {
612-
try {
613-
const environment = server.environments[options?.ssr ? 'ssr' : 'client']
614-
await transformRequest(environment, url, options)
615-
} catch (e) {
616-
if (
617-
e?.code === ERR_OUTDATED_OPTIMIZED_DEP ||
618-
e?.code === ERR_CLOSED_SERVER
619-
) {
620-
// these are expected errors
621-
return
622-
}
623-
// Unexpected error, log the issue but avoid an unhandled exception
624-
server.config.logger.error(
625-
buildErrorMessage(e, [`Pre-transform error: ${e.message}`], false),
626-
{
627-
error: e,
628-
timestamp: true,
629-
},
630-
)
631-
}
603+
warmupRequest(url, options) {
604+
const environment = server.environments[options?.ssr ? 'ssr' : 'client']
605+
return environment.warmupRequest(url)
632606
},
633607
transformIndexHtml(url, html, originalUrl) {
634608
return devHtmlTransformFn(server, url, html, originalUrl)

packages/vite/src/node/server/middlewares/transform.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,7 @@ import {
1818
removeTimestampQuery,
1919
} from '../../utils'
2020
import { send } from '../send'
21-
import {
22-
ERR_DENIED_ID,
23-
ERR_LOAD_URL,
24-
transformRequest,
25-
} from '../transformRequest'
21+
import { ERR_DENIED_ID, ERR_LOAD_URL } from '../transformRequest'
2622
import { applySourcemapIgnoreList } from '../sourcemap'
2723
import { isHTMLProxy } from '../../plugins/html'
2824
import {
@@ -262,7 +258,7 @@ export function transformMiddleware(
262258
}
263259

264260
// resolve, load and transform using the plugin container
265-
const result = await transformRequest(environment, url, {
261+
const result = await environment.transformRequest(url, {
266262
allowId(id) {
267263
return (
268264
id.startsWith('\0') ||

packages/vite/src/node/server/transformRequest.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ export interface TransformOptions {
5353
* @deprecated inferred from environment
5454
*/
5555
ssr?: boolean
56+
}
57+
58+
export interface TransformOptionsInternal {
5659
/**
5760
* @internal
5861
*/
@@ -69,14 +72,8 @@ export interface TransformOptions {
6972
export function transformRequest(
7073
environment: DevEnvironment,
7174
url: string,
72-
options: TransformOptions = {},
75+
options: TransformOptionsInternal = {},
7376
): Promise<TransformResult | null> {
74-
// Backward compatibility when only `ssr` is passed
75-
if (!options.ssr) {
76-
// Backward compatibility
77-
options = { ...options, ssr: environment.config.consumer === 'server' }
78-
}
79-
8077
if (environment._closing && environment.config.dev.recoverable)
8178
throwClosedServerError()
8279

@@ -147,7 +144,7 @@ export function transformRequest(
147144
async function doTransform(
148145
environment: DevEnvironment,
149146
url: string,
150-
options: TransformOptions,
147+
options: TransformOptionsInternal,
151148
timestamp: number,
152149
) {
153150
url = removeTimestampQuery(url)
@@ -237,7 +234,7 @@ async function loadAndTransform(
237234
environment: DevEnvironment,
238235
id: string,
239236
url: string,
240-
options: TransformOptions,
237+
options: TransformOptionsInternal,
241238
timestamp: number,
242239
mod?: EnvironmentModuleNode,
243240
resolved?: PartialResolvedId,

0 commit comments

Comments
 (0)