Home / File/ interceptor.ts — vite Source File

interceptor.ts — vite Source File

Architecture documentation for interceptor.ts, a typescript file in the vite codebase. 11 imports, 2 dependents.

File typescript ModuleRunner SourcemapHandler 11 imports 2 dependents 14 functions

Entity Profile

Dependency Diagram

graph LR
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b["interceptor.ts"]
  29e248d2_9983_1037_00e6_8bcd9ee87840["runner.ts"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> 29e248d2_9983_1037_00e6_8bcd9ee87840
  1d3ff778_7ac6_0038_640f_997e968c3c8f["ModuleRunner"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> 1d3ff778_7ac6_0038_640f_997e968c3c8f
  81939ddb_795d_a69b_d1ea_fb1af459ccc2["utils.ts"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> 81939ddb_795d_a69b_d1ea_fb1af459ccc2
  9f67d7a4_f300_a592_a5b0_c8f97c2d3564["evaluatedModules.ts"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> 9f67d7a4_f300_a592_a5b0_c8f97c2d3564
  d84d2810_d37a_ae7f_1268_3cbf7c3dad5f["EvaluatedModules"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> d84d2810_d37a_ae7f_1268_3cbf7c3dad5f
  abfc9e70_3c15_b3f0_a595_3cf27afb7e64["utils.ts"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> abfc9e70_3c15_b3f0_a595_3cf27afb7e64
  f094d39d_cd97_2548_86c3_38902c2f3301["slash"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> f094d39d_cd97_2548_86c3_38902c2f3301
  d4f6d186_baf8_38ee_e63e_b58f4d86f016["decoder.ts"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> d4f6d186_baf8_38ee_e63e_b58f4d86f016
  d26160cf_98b0_224e_37f8_05fe0a3df273["DecodedMap"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> d26160cf_98b0_224e_37f8_05fe0a3df273
  ce370f58_aa9b_2bcc_e6ca_6347a7feef3a["getOriginalPosition"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> ce370f58_aa9b_2bcc_e6ca_6347a7feef3a
  b84d7b55_2c14_7c59_01d9_b663416bfad1["trace-mapping"]
  95cae2f2_ad8c_91c1_5a74_93d939dbc47b --> b84d7b55_2c14_7c59_01d9_b663416bfad1
  bb968c6f_5ad4_dc29_bac1_0b2ebcedc26d["index.ts"]
  bb968c6f_5ad4_dc29_bac1_0b2ebcedc26d --> 95cae2f2_ad8c_91c1_5a74_93d939dbc47b
  bf48f7e9_65f6_54c3_7dce_f44769180bd7["types.ts"]
  bf48f7e9_65f6_54c3_7dce_f44769180bd7 --> 95cae2f2_ad8c_91c1_5a74_93d939dbc47b
  style 95cae2f2_ad8c_91c1_5a74_93d939dbc47b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { OriginalMapping } from '@jridgewell/trace-mapping'
import type { ModuleRunner } from '../runner'
import { posixDirname, posixResolve } from '../utils'
import type { EvaluatedModules } from '../evaluatedModules'
import { slash } from '../../shared/utils'
import { DecodedMap, getOriginalPosition } from './decoder'

interface RetrieveFileHandler {
  (path: string): string | null | undefined | false
}

interface RetrieveSourceMapHandler {
  (path: string): null | { url: string; map: any }
}

export interface InterceptorOptions {
  retrieveFile?: RetrieveFileHandler
  retrieveSourceMap?: RetrieveSourceMapHandler
}

const sourceMapCache: Record<string, CachedMapEntry> = {}
const fileContentsCache: Record<string, string> = {}

const evaluatedModulesCache = new Set<EvaluatedModules>()
const retrieveFileHandlers = new Set<RetrieveFileHandler>()
const retrieveSourceMapHandlers = new Set<RetrieveSourceMapHandler>()

const createExecHandlers = <T extends (...args: any) => any>(
  handlers: Set<T>,
) => {
  return ((...args: Parameters<T>) => {
    for (const handler of handlers) {
      const result = handler(...args)
      if (result) return result
    }
    return null
  }) as T
}

const retrieveFileFromHandlers = createExecHandlers(retrieveFileHandlers)
const retrieveSourceMapFromHandlers = createExecHandlers(
  retrieveSourceMapHandlers,
)

let overridden = false
const originalPrepare = Error.prepareStackTrace

function resetInterceptor(runner: ModuleRunner, options: InterceptorOptions) {
  evaluatedModulesCache.delete(runner.evaluatedModules)
  if (options.retrieveFile) retrieveFileHandlers.delete(options.retrieveFile)
  if (options.retrieveSourceMap)
    retrieveSourceMapHandlers.delete(options.retrieveSourceMap)
  if (evaluatedModulesCache.size === 0) {
    Error.prepareStackTrace = originalPrepare
    overridden = false
  }
}

export function interceptStackTrace(
  runner: ModuleRunner,
// ... (365 more lines)

Domain

Subdomains

Frequently Asked Questions

What does interceptor.ts do?
interceptor.ts is a source file in the vite codebase, written in typescript. It belongs to the ModuleRunner domain, SourcemapHandler subdomain.
What functions are defined in interceptor.ts?
interceptor.ts defines 14 function(s): CallSiteToString, cloneCallSite, createExecHandlers, getRunnerSourceMap, interceptStackTrace, mapEvalOrigin, mapSourcePosition, prepareStackTrace, resetInterceptor, retrieveFile, and 4 more.
What does interceptor.ts depend on?
interceptor.ts imports 11 module(s): DecodedMap, EvaluatedModules, ModuleRunner, decoder.ts, evaluatedModules.ts, getOriginalPosition, runner.ts, slash, and 3 more.
What files import interceptor.ts?
interceptor.ts is imported by 2 file(s): index.ts, types.ts.
Where is interceptor.ts in the architecture?
interceptor.ts is located at packages/vite/src/module-runner/sourcemap/interceptor.ts (domain: ModuleRunner, subdomain: SourcemapHandler, directory: packages/vite/src/module-runner/sourcemap).

Analyze Your Own Codebase

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

Try Supermodel Free