Home / File/ memoryFiles.ts — vite Source File

memoryFiles.ts — vite Source File

Architecture documentation for memoryFiles.ts, a typescript file in the vite codebase. 7 imports, 1 dependents.

File typescript ViteCore ConfigEngine 7 imports 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  d46a2918_0fad_3b8f_cba9_da7ff903ffa1["memoryFiles.ts"]
  abfc9e70_3c15_b3f0_a595_3cf27afb7e64["utils.ts"]
  d46a2918_0fad_3b8f_cba9_da7ff903ffa1 --> abfc9e70_3c15_b3f0_a595_3cf27afb7e64
  10b9dea8_362c_1af2_93be_afa4dd9aed9e["cleanUrl"]
  d46a2918_0fad_3b8f_cba9_da7ff903ffa1 --> 10b9dea8_362c_1af2_93be_afa4dd9aed9e
  f070fb78_2f2a_ef11_0530_d34862fa95ca["fullBundleEnvironment.ts"]
  d46a2918_0fad_3b8f_cba9_da7ff903ffa1 --> f070fb78_2f2a_ef11_0530_d34862fa95ca
  8fcd8920_61ef_93b8_499a_c18a48b852e5["FullBundleDevEnvironment"]
  d46a2918_0fad_3b8f_cba9_da7ff903ffa1 --> 8fcd8920_61ef_93b8_499a_c18a48b852e5
  d7782cd0_20c0_9082_ede6_be7af4e1592b["mrmime"]
  d46a2918_0fad_3b8f_cba9_da7ff903ffa1 --> d7782cd0_20c0_9082_ede6_be7af4e1592b
  9165291b_077b_bedb_8c23_36e44bc99390["connect"]
  d46a2918_0fad_3b8f_cba9_da7ff903ffa1 --> 9165291b_077b_bedb_8c23_36e44bc99390
  2616bf8c_8895_7af5_fb6e_8424b9e71ea7[".."]
  d46a2918_0fad_3b8f_cba9_da7ff903ffa1 --> 2616bf8c_8895_7af5_fb6e_8424b9e71ea7
  a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e["index.ts"]
  a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e --> d46a2918_0fad_3b8f_cba9_da7ff903ffa1
  style d46a2918_0fad_3b8f_cba9_da7ff903ffa1 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import * as mrmime from 'mrmime'
import type { Connect } from '#dep-types/connect'
import { cleanUrl } from '../../../shared/utils'
import type { ViteDevServer } from '..'
import { FullBundleDevEnvironment } from '../environments/fullBundleEnvironment'

export function memoryFilesMiddleware(
  server: ViteDevServer,
): Connect.NextHandleFunction {
  const memoryFiles =
    server.environments.client instanceof FullBundleDevEnvironment
      ? server.environments.client.memoryFiles
      : undefined
  if (!memoryFiles) {
    throw new Error('memoryFilesMiddleware can only be used for fullBundleMode')
  }
  const headers = server.config.server.headers

  return function viteMemoryFilesMiddleware(req, res, next) {
    const cleanedUrl = cleanUrl(req.url!)
    if (cleanedUrl.endsWith('.html')) {
      return next()
    }

    const pathname = decodeURIComponent(cleanedUrl)
    const filePath = pathname.slice(1) // remove first /

    const file = memoryFiles.get(filePath)
    if (file) {
      if (file.etag) {
        if (req.headers['if-none-match'] === file.etag) {
          res.statusCode = 304
          res.end()
          return
        }
        res.setHeader('Etag', file.etag)
      }

      const mime = mrmime.lookup(filePath)
      if (mime) {
        res.setHeader('Content-Type', mime)
      }

      for (const name in headers) {
        res.setHeader(name, headers[name]!)
      }

      return res.end(file.source)
    }
    next()
  }
}

Domain

Subdomains

Frequently Asked Questions

What does memoryFiles.ts do?
memoryFiles.ts is a source file in the vite codebase, written in typescript. It belongs to the ViteCore domain, ConfigEngine subdomain.
What functions are defined in memoryFiles.ts?
memoryFiles.ts defines 1 function(s): memoryFilesMiddleware.
What does memoryFiles.ts depend on?
memoryFiles.ts imports 7 module(s): .., FullBundleDevEnvironment, cleanUrl, connect, fullBundleEnvironment.ts, mrmime, utils.ts.
What files import memoryFiles.ts?
memoryFiles.ts is imported by 1 file(s): index.ts.
Where is memoryFiles.ts in the architecture?
memoryFiles.ts is located at packages/vite/src/node/server/middlewares/memoryFiles.ts (domain: ViteCore, subdomain: ConfigEngine, directory: packages/vite/src/node/server/middlewares).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free