transformMiddleware() — vite Function Reference
Architecture documentation for the transformMiddleware() function in transform.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD 13770e2a_c6d8_fb1f_6562_e66de7bc1deb["transformMiddleware()"] 9da9b065_5c17_7764_d8e4_bd411021bf8d["transform.ts"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|defined in| 9da9b065_5c17_7764_d8e4_bd411021bf8d 24ecf2a1_3c09_d451_76f3_9485b4e993f8["_createServer()"] 24ecf2a1_3c09_d451_76f3_9485b4e993f8 -->|calls| 13770e2a_c6d8_fb1f_6562_e66de7bc1deb 1a3bec7b_1a11_316f_5831_a0535b829bbf["withTrailingSlash()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| 1a3bec7b_1a11_316f_5831_a0535b829bbf b911ab78_9579_c6d3_e21c_324ee411b2c6["isDocumentFetchDest()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| b911ab78_9579_c6d3_e21c_324ee411b2c6 3f57c8be_be57_4cf4_aa11_4ed077229c70["removeTimestampQuery()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| 3f57c8be_be57_4cf4_aa11_4ed077229c70 10b9dea8_362c_1af2_93be_afa4dd9aed9e["cleanUrl()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| 10b9dea8_362c_1af2_93be_afa4dd9aed9e 2f0da199_9f02_5b00_9a83_0406650f871a["fsPathFromId()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| 2f0da199_9f02_5b00_9a83_0406650f871a a4adb1a7_cf54_091f_eb63_8217e684a8e1["normalizePath()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| a4adb1a7_cf54_091f_eb63_8217e684a8e1 dfa2b928_25a4_a78f_1e11_1e7e643cae09["resolve()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| dfa2b928_25a4_a78f_1e11_1e7e643cae09 2ed2578e_588a_efd0_df6b_829e1a96adf2["parse()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| 2ed2578e_588a_efd0_df6b_829e1a96adf2 4a3d733d_b16c_c3d4_b881_522470dd9957["applySourcemapIgnoreList()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| 4a3d733d_b16c_c3d4_b881_522470dd9957 7c73fde5_2ada_95e2_0b3f_1ad78222da67["send()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| 7c73fde5_2ada_95e2_0b3f_1ad78222da67 339d40b3_de1a_5feb_2d6a_c19f0aafdfe2["isJSRequest()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| 339d40b3_de1a_5feb_2d6a_c19f0aafdfe2 13d1ff08_16f8_81bc_1a7a_cd281614a4d3["isImportRequest()"] 13770e2a_c6d8_fb1f_6562_e66de7bc1deb -->|calls| 13d1ff08_16f8_81bc_1a7a_cd281614a4d3 style 13770e2a_c6d8_fb1f_6562_e66de7bc1deb fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/server/middlewares/transform.ts lines 106–375
export function transformMiddleware(
server: ViteDevServer,
): Connect.NextHandleFunction {
// Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`
// check if public dir is inside root dir
const { root, publicDir } = server.config
const publicDirInRoot = publicDir.startsWith(withTrailingSlash(root))
const publicPath = `${publicDir.slice(root.length)}/`
return async function viteTransformMiddleware(req, res, next) {
const environment = server.environments.client
if (
(req.method !== 'GET' && req.method !== 'HEAD') ||
knownIgnoreList.has(req.url!) ||
isDocumentFetchDest(req)
) {
return next()
}
let url: string
try {
url = decodeURI(removeTimestampQuery(req.url!)).replace(
NULL_BYTE_PLACEHOLDER,
'\0',
)
} catch (e) {
if (e instanceof URIError) {
server.config.logger.warn(
colors.yellow(
`Malformed URI sequence in request URL: ${removeTimestampQuery(req.url!)}`,
),
)
return next()
}
return next(e)
}
const withoutQuery = cleanUrl(url)
try {
const isSourceMap = withoutQuery.endsWith('.map')
// since we generate source map references, handle those requests here
if (isSourceMap) {
const depsOptimizer = environment.depsOptimizer
if (depsOptimizer?.isOptimizedDepUrl(url)) {
// If the browser is requesting a source map for an optimized dep, it
// means that the dependency has already been pre-bundled and loaded
const sourcemapPath = url.startsWith(FS_PREFIX)
? fsPathFromId(url)
: normalizePath(path.resolve(server.config.root, url.slice(1)))
try {
const map = JSON.parse(
await fsp.readFile(sourcemapPath, 'utf-8'),
) as ExistingRawSourceMap
applySourcemapIgnoreList(
map,
sourcemapPath,
server.config.server.sourcemapIgnoreList,
server.config.logger,
)
return send(req, res, JSON.stringify(map), 'json', {
headers: server.config.server.headers,
})
} catch {
// Outdated source map request for optimized deps, this isn't an error
// but part of the normal flow when re-optimizing after missing deps
// Send back an empty source map so the browser doesn't issue warnings
const dummySourceMap = {
version: 3,
file: sourcemapPath.replace(/\.map$/, ''),
sources: [],
sourcesContent: [],
names: [],
mappings: ';;;;;;;;;',
}
return send(req, res, JSON.stringify(dummySourceMap), 'json', {
cacheControl: 'no-cache',
Domain
Subdomains
Calls
- applySourcemapIgnoreList()
- checkLoadingAccess()
- cleanUrl()
- error()
- fsPathFromId()
- injectQuery()
- isCSSRequest()
- isDirectCSSRequest()
- isDirectRequest()
- isDocumentFetchDest()
- isHTMLProxy()
- isImportRequest()
- isJSRequest()
- isServerAccessDeniedForTransform()
- normalizePath()
- parse()
- prettifyUrl()
- removeImportQuery()
- removeTimestampQuery()
- resolve()
- respondWithAccessDenied()
- send()
- transformRequest()
- unwrapId()
- warn()
- withTrailingSlash()
Called By
Source
Frequently Asked Questions
What does transformMiddleware() do?
transformMiddleware() is a function in the vite codebase, defined in packages/vite/src/node/server/middlewares/transform.ts.
Where is transformMiddleware() defined?
transformMiddleware() is defined in packages/vite/src/node/server/middlewares/transform.ts at line 106.
What does transformMiddleware() call?
transformMiddleware() calls 26 function(s): applySourcemapIgnoreList, checkLoadingAccess, cleanUrl, error, fsPathFromId, injectQuery, isCSSRequest, isDirectCSSRequest, and 18 more.
What calls transformMiddleware()?
transformMiddleware() is called by 1 function(s): _createServer.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free