Home / Function/ ssrRewriteStacktrace() — vite Function Reference

ssrRewriteStacktrace() — vite Function Reference

Architecture documentation for the ssrRewriteStacktrace() function in ssrStacktrace.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  4c4e498d_8314_5c0d_260a_498ee4a73d2e["ssrRewriteStacktrace()"]
  e29c58b0_0755_ae27_7a1e_c5e90513f90f["ssrStacktrace.ts"]
  4c4e498d_8314_5c0d_260a_498ee4a73d2e -->|defined in| e29c58b0_0755_ae27_7a1e_c5e90513f90f
  24ecf2a1_3c09_d451_76f3_9485b4e993f8["_createServer()"]
  24ecf2a1_3c09_d451_76f3_9485b4e993f8 -->|calls| 4c4e498d_8314_5c0d_260a_498ee4a73d2e
  5028e255_92bf_a4fa_b8ac_c4b82ad977b0["ssrFixStacktrace()"]
  5028e255_92bf_a4fa_b8ac_c4b82ad977b0 -->|calls| 4c4e498d_8314_5c0d_260a_498ee4a73d2e
  8e8d1d74_9ced_63d4_2238_5e4541f0fa2d["calculateOffsetOnce()"]
  4c4e498d_8314_5c0d_260a_498ee4a73d2e -->|calls| 8e8d1d74_9ced_63d4_2238_5e4541f0fa2d
  style 4c4e498d_8314_5c0d_260a_498ee4a73d2e fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/ssr/ssrStacktrace.ts lines 23–73

export function ssrRewriteStacktrace(
  stack: string,
  moduleGraph: EnvironmentModuleGraph,
): { result: string; alreadyRewritten: boolean } {
  calculateOffsetOnce()

  let alreadyRewritten = false
  const rewritten = stack
    .split('\n')
    .map((line) => {
      return line.replace(
        /^ {4}at (?:(\S.*?)\s\()?(.+?):(\d+)(?::(\d+))?\)?/,
        (input, varName, id, originalLine, originalColumn) => {
          if (!id) return input

          const mod = moduleGraph.getModuleById(id)
          const rawSourceMap = mod?.transformResult?.map

          if (!rawSourceMap) {
            return input
          }

          const traced = new TraceMap(rawSourceMap as any)
          const line = Number(originalLine) - offset
          // stacktrace's column is 1-indexed, but sourcemap's one is 0-indexed
          const column = Number(originalColumn) - 1
          if (line <= 0 || column < 0) {
            alreadyRewritten = true
            return input
          }

          const pos = originalPositionFor(traced, { line, column })
          if (!pos.source) {
            return input
          }

          const trimmedVarName = varName?.trim()
          const sourceFile = path.resolve(path.dirname(id), pos.source)
          // stacktrace's column is 1-indexed, but sourcemap's one is 0-indexed
          const source = `${sourceFile}:${pos.line}:${pos.column + 1}`
          if (!trimmedVarName || trimmedVarName === 'eval') {
            return `    at ${source}`
          } else {
            return `    at ${trimmedVarName} (${source})`
          }
        },
      )
    })
    .join('\n')
  return { result: rewritten, alreadyRewritten }
}

Domain

Subdomains

Frequently Asked Questions

What does ssrRewriteStacktrace() do?
ssrRewriteStacktrace() is a function in the vite codebase, defined in packages/vite/src/node/ssr/ssrStacktrace.ts.
Where is ssrRewriteStacktrace() defined?
ssrRewriteStacktrace() is defined in packages/vite/src/node/ssr/ssrStacktrace.ts at line 23.
What does ssrRewriteStacktrace() call?
ssrRewriteStacktrace() calls 1 function(s): calculateOffsetOnce.
What calls ssrRewriteStacktrace()?
ssrRewriteStacktrace() is called by 2 function(s): _createServer, ssrFixStacktrace.

Analyze Your Own Codebase

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

Try Supermodel Free