MCPcopy
hub / github.com/nuxt/nuxt / createViteNodeSocketServer

Function createViteNodeSocketServer

packages/vite/src/plugins/vite-node.ts:342–524  ·  view source on GitHub ↗
(nuxt: Nuxt, ssrServer: ViteDevServer, clientServer: ViteDevServer, invalidates: Set<string>, collectInvalidatedSsrModules: () => void, config: ViteNodeServerOptions)

Source from the content-addressed store, hash-verified

340}
341
342function createViteNodeSocketServer (nuxt: Nuxt, ssrServer: ViteDevServer, clientServer: ViteDevServer, invalidates: Set<string>, collectInvalidatedSsrModules: () => void, config: ViteNodeServerOptions) {
343 const server = net.createServer((socket) => {
344 const INITIAL_BUFFER_SIZE = 64 * 1024 // 64kB
345 const MAX_BUFFER_SIZE = 1024 * 1024 * 1024 // 1GB
346
347 let buffer = Buffer.alloc(INITIAL_BUFFER_SIZE)
348 let writeOffset = 0
349 let readOffset = 0
350
351 // Optimize socket settings for performance
352 socket.setNoDelay(true)
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') {

Callers 1

resolveServerFunction · 0.85

Calls 8

processMessageFunction · 0.85
sendErrorFunction · 0.85
listenAndRestrictFunction · 0.85
onMethod · 0.80
toStringMethod · 0.80
ensureBufferCapacityFunction · 0.70
compactBufferFunction · 0.70
resetBufferFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…