MCPcopy
hub / github.com/nuxt/nuxt / processMessage

Function processMessage

packages/vite/src/plugins/vite-node.ts:355–422  ·  view source on GitHub ↗
(request: ViteNodeRequest)

Source from the content-addressed store, hash-verified

353 socket.setKeepAlive(true, 0)
354
355 async function processMessage (request: ViteNodeRequest) {
356 try {
357 switch (request.type) {
358 case 'manifest': {
359 const manifestData = getManifest(nuxt, ssrServer, resolveClientEntry(clientServer.config))
360 sendResponse<typeof request.type>(socket, request.id, manifestData)
361 return
362 }
363 case 'invalidates': {
364 collectInvalidatedSsrModules()
365 const responsePayload = Array.from(invalidates)
366 invalidates.clear()
367 sendResponse<typeof request.type>(socket, request.id, responsePayload)
368 return
369 }
370 case 'resolve': {
371 const { id: resolveId, importer } = request.payload
372 if (!resolveId) {
373 throw { status: 400, message: 'Missing id for resolve' } satisfies ErrorPartial
374 }
375 const ssrNode = nuxt.options.experimental.viteEnvironmentApi
376 ? ssrServer.environments.ssr.pluginContainer
377 : getNode(ssrServer)
378 const resolvedResult = await ssrNode.resolveId(resolveId, importer).catch(() => null)
379 sendResponse<typeof request.type>(socket, request.id, resolvedResult)
380 return
381 }
382 case 'module': {
383 if (request.payload.moduleId === '/') {
384 throw { status: 400, message: 'Invalid moduleId' } satisfies ErrorPartial
385 }
386 const ssrNode = nuxt.options.experimental.viteEnvironmentApi
387 ? ssrServer.environments.ssr
388 : getNode(ssrServer)
389 const response = await ssrNode.fetchModule(request.payload.moduleId)
390 .catch(async (err) => {
391 const errorData: Record<string, any> = {
392 code: 'VITE_ERROR',
393 id: request.payload.moduleId,
394 stack: err.stack || '',
395 message: err.message || '',
396 }
397 if (err.frame) { errorData.frame = err.frame }
398
399 if (!errorData.frame && err.code === 'PARSE_ERROR') {
400 try {
401 const clientNode = nuxt.options.experimental.viteEnvironmentApi
402 ? ssrServer.environments.client
403 : getNode(ssrServer)
404 errorData.frame = await clientNode.transformRequest(request.payload.moduleId)
405 .then(res => `${err.message || ''}\n${res?.code}`).catch(() => undefined)
406 } catch {
407 // Ignore transform errors
408 }
409 }
410 throw { data: errorData, message: err.message || 'Error fetching module' } satisfies ErrorPartial
411 }) as Exclude<FetchResult, { cache: true }>
412 sendResponse<typeof request.type>(socket, request.id, response)

Callers 1

Calls 8

resolveClientEntryFunction · 0.90
sendResponseFunction · 0.85
getNodeFunction · 0.85
sendErrorFunction · 0.85
resolveIdMethod · 0.80
fetchModuleMethod · 0.80
getManifestFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…