Home / Function/ transformMiddleware() — vite Function Reference

transformMiddleware() — vite Function Reference

Architecture documentation for the transformMiddleware() function in transform.ts from the vite codebase.

Function typescript ViteCore ConfigEngine calls 26 called by 1

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

Called By

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