Home / Function/ wrapCallSite() — vite Function Reference

wrapCallSite() — vite Function Reference

Architecture documentation for the wrapCallSite() function in interceptor.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  b30dd025_db49_148b_f0bc_60f33ba97a2d["wrapCallSite()"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b["interceptor.ts"]
  b30dd025_db49_148b_f0bc_60f33ba97a2d -->|defined in| 95cae2f2_ad8c_91c1_5a74_93d939dbc47b
  da4d3379_e9f7_bafd_68cb_bfdc14e6f52a["prepareStackTrace()"]
  da4d3379_e9f7_bafd_68cb_bfdc14e6f52a -->|calls| b30dd025_db49_148b_f0bc_60f33ba97a2d
  f5792b49_242f_3f04_074c_c9ee1ff25728["mapSourcePosition()"]
  b30dd025_db49_148b_f0bc_60f33ba97a2d -->|calls| f5792b49_242f_3f04_074c_c9ee1ff25728
  155e9353_a9fb_dc00_1709_d4629470386c["cloneCallSite()"]
  b30dd025_db49_148b_f0bc_60f33ba97a2d -->|calls| 155e9353_a9fb_dc00_1709_d4629470386c
  f40eaafa_db1a_03b4_c837_94e817990f37["mapEvalOrigin()"]
  b30dd025_db49_148b_f0bc_60f33ba97a2d -->|calls| f40eaafa_db1a_03b4_c837_94e817990f37
  style b30dd025_db49_148b_f0bc_60f33ba97a2d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/module-runner/sourcemap/interceptor.ts lines 347–409

function wrapCallSite(frame: CallSite, state: State) {
  // provides interface backward compatibility
  if (state === undefined) state = { nextPosition: null, curPosition: null }

  if (frame.isNative()) {
    state.curPosition = null
    return frame
  }

  // Most call sites will return the source file from getFileName(), but code
  // passed to eval() ending in "//# sourceURL=..." will return the source file
  // from getScriptNameOrSourceURL() instead
  const source = frame.getFileName() || frame.getScriptNameOrSourceURL()
  if (source) {
    const line = frame.getLineNumber() ?? 0
    const column = (frame.getColumnNumber() ?? 1) - 1

    const position = mapSourcePosition({
      name: null,
      source,
      line,
      column,
    })
    state.curPosition = position
    frame = cloneCallSite(frame)
    const originalFunctionName = frame.getFunctionName
    frame.getFunctionName = function () {
      const name = (() => {
        if (state.nextPosition == null) return originalFunctionName()

        return state.nextPosition.name || originalFunctionName()
      })()
      return name === 'eval' && '_vite' in position ? null : name
    }
    frame.getFileName = function () {
      return position.source ?? null
    }
    frame.getLineNumber = function () {
      return position.line
    }
    frame.getColumnNumber = function () {
      return position.column + 1
    }
    frame.getScriptNameOrSourceURL = function () {
      return position.source as string
    }
    return frame
  }

  // Code called using eval() needs special handling
  let origin = frame.isEval() && frame.getEvalOrigin()
  if (origin) {
    origin = mapEvalOrigin(origin)
    frame = cloneCallSite(frame)
    frame.getEvalOrigin = function () {
      return origin || undefined
    }
    return frame
  }

  // If we get here then we were unable to change the source position
  return frame
}

Domain

Subdomains

Frequently Asked Questions

What does wrapCallSite() do?
wrapCallSite() is a function in the vite codebase, defined in packages/vite/src/module-runner/sourcemap/interceptor.ts.
Where is wrapCallSite() defined?
wrapCallSite() is defined in packages/vite/src/module-runner/sourcemap/interceptor.ts at line 347.
What does wrapCallSite() call?
wrapCallSite() calls 3 function(s): cloneCallSite, mapEvalOrigin, mapSourcePosition.
What calls wrapCallSite()?
wrapCallSite() is called by 1 function(s): prepareStackTrace.

Analyze Your Own Codebase

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

Try Supermodel Free