MCPcopy
hub / github.com/vitejs/vite / lexAcceptedHmrDeps

Function lexAcceptedHmrDeps

packages/vite/src/node/server/hmr.ts:1000–1102  ·  view source on GitHub ↗
(
  code: string,
  start: number,
  urls: Set<{ url: string; start: number; end: number }>,
)

Source from the content-addressed store, hash-verified

998 * @returns selfAccepts
999 */
1000export function lexAcceptedHmrDeps(
1001 code: string,
1002 start: number,
1003 urls: Set<{ url: string; start: number; end: number }>,
1004): boolean {
1005 let state: LexerState = LexerState.inCall
1006 // the state can only be 2 levels deep so no need for a stack
1007 let prevState: LexerState = LexerState.inCall
1008 let currentDep: string = ''
1009
1010 function addDep(index: number) {
1011 urls.add({
1012 url: currentDep,
1013 start: index - currentDep.length - 1,
1014 end: index + 1,
1015 })
1016 currentDep = ''
1017 }
1018
1019 for (let i = start; i < code.length; i++) {
1020 const char = code.charAt(i)
1021 switch (state) {
1022 case LexerState.inCall:
1023 case LexerState.inArray:
1024 if (char === `'`) {
1025 prevState = state
1026 state = LexerState.inSingleQuoteString
1027 } else if (char === `"`) {
1028 prevState = state
1029 state = LexerState.inDoubleQuoteString
1030 } else if (char === '`') {
1031 prevState = state
1032 state = LexerState.inTemplateString
1033 } else if (whitespaceRE.test(char)) {
1034 continue
1035 } else {
1036 if (state === LexerState.inCall) {
1037 if (char === `[`) {
1038 state = LexerState.inArray
1039 } else {
1040 // reaching here means the first arg is neither a string literal
1041 // nor an Array literal (direct callback) or there is no arg
1042 // in both case this indicates a self-accepting module
1043 return true // done
1044 }
1045 } else {
1046 if (char === `]`) {
1047 return false // done
1048 } else if (char === ',') {
1049 continue
1050 } else {
1051 error(i)
1052 }
1053 }
1054 }
1055 break
1056 case LexerState.inSingleQuoteString:
1057 if (char === `'`) {

Callers 2

transformFunction · 0.90
lexAcceptedHmrExportsFunction · 0.85

Calls 2

addDepFunction · 0.85
errorFunction · 0.70

Tested by

no test coverage detected