lexAcceptedHmrDeps() — vite Function Reference
Architecture documentation for the lexAcceptedHmrDeps() function in hmr.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD 8230fc64_ada4_2155_2691_f7082da49a38["lexAcceptedHmrDeps()"] 18db4f26_79f1_5b7d_b291_4feeaf95538f["hmr.ts"] 8230fc64_ada4_2155_2691_f7082da49a38 -->|defined in| 18db4f26_79f1_5b7d_b291_4feeaf95538f a1fc1de5_905b_efe7_d960_3597604fbdfe["importAnalysisPlugin()"] a1fc1de5_905b_efe7_d960_3597604fbdfe -->|calls| 8230fc64_ada4_2155_2691_f7082da49a38 44e0a3d7_a7b4_cd8f_2746_4ace7f111b32["lexAcceptedHmrExports()"] 44e0a3d7_a7b4_cd8f_2746_4ace7f111b32 -->|calls| 8230fc64_ada4_2155_2691_f7082da49a38 2e1469ca_9e59_dcc2_bdc7_05126c765fd0["error()"] 8230fc64_ada4_2155_2691_f7082da49a38 -->|calls| 2e1469ca_9e59_dcc2_bdc7_05126c765fd0 style 8230fc64_ada4_2155_2691_f7082da49a38 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/server/hmr.ts lines 957–1059
export function lexAcceptedHmrDeps(
code: string,
start: number,
urls: Set<{ url: string; start: number; end: number }>,
): boolean {
let state: LexerState = LexerState.inCall
// the state can only be 2 levels deep so no need for a stack
let prevState: LexerState = LexerState.inCall
let currentDep: string = ''
function addDep(index: number) {
urls.add({
url: currentDep,
start: index - currentDep.length - 1,
end: index + 1,
})
currentDep = ''
}
for (let i = start; i < code.length; i++) {
const char = code.charAt(i)
switch (state) {
case LexerState.inCall:
case LexerState.inArray:
if (char === `'`) {
prevState = state
state = LexerState.inSingleQuoteString
} else if (char === `"`) {
prevState = state
state = LexerState.inDoubleQuoteString
} else if (char === '`') {
prevState = state
state = LexerState.inTemplateString
} else if (whitespaceRE.test(char)) {
continue
} else {
if (state === LexerState.inCall) {
if (char === `[`) {
state = LexerState.inArray
} else {
// reaching here means the first arg is neither a string literal
// nor an Array literal (direct callback) or there is no arg
// in both case this indicates a self-accepting module
return true // done
}
} else {
if (char === `]`) {
return false // done
} else if (char === ',') {
continue
} else {
error(i)
}
}
}
break
case LexerState.inSingleQuoteString:
if (char === `'`) {
addDep(i)
if (prevState === LexerState.inCall) {
// accept('foo', ...)
return false
} else {
state = prevState
}
} else {
currentDep += char
}
break
case LexerState.inDoubleQuoteString:
if (char === `"`) {
addDep(i)
if (prevState === LexerState.inCall) {
// accept('foo', ...)
return false
} else {
state = prevState
}
} else {
currentDep += char
}
Domain
Subdomains
Defined In
Calls
Source
Frequently Asked Questions
What does lexAcceptedHmrDeps() do?
lexAcceptedHmrDeps() is a function in the vite codebase, defined in packages/vite/src/node/server/hmr.ts.
Where is lexAcceptedHmrDeps() defined?
lexAcceptedHmrDeps() is defined in packages/vite/src/node/server/hmr.ts at line 957.
What does lexAcceptedHmrDeps() call?
lexAcceptedHmrDeps() calls 1 function(s): error.
What calls lexAcceptedHmrDeps()?
lexAcceptedHmrDeps() is called by 2 function(s): importAnalysisPlugin, lexAcceptedHmrExports.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free