vite-plugin-react-server 1.1.14 → 1.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/plugin/config/defaults.js +2 -2
  3. package/dist/plugin/config/defaults.js.map +1 -1
  4. package/dist/plugin/config/extMap.d.ts +3 -0
  5. package/dist/plugin/config/extMap.d.ts.map +1 -0
  6. package/dist/plugin/config/extMap.js +27 -0
  7. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  8. package/dist/plugin/config/resolveOptions.js +8 -32
  9. package/dist/plugin/config/resolveOptions.js.map +1 -1
  10. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  11. package/dist/plugin/config/resolveUserConfig.js +44 -11
  12. package/dist/plugin/config/resolveUserConfig.js.map +1 -1
  13. package/dist/plugin/helpers/inputNormalizer.d.ts +1 -8
  14. package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
  15. package/dist/plugin/helpers/inputNormalizer.js +9 -5
  16. package/dist/plugin/helpers/inputNormalizer.js.map +1 -1
  17. package/dist/plugin/loader/sourceMap.d.ts.map +1 -1
  18. package/dist/plugin/loader/sourceMap.js +1 -1
  19. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js +0 -19
  20. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js.map +1 -1
  21. package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts.map +1 -1
  22. package/dist/plugin/react-client/configureWorkerRequestHandler.js +1 -4
  23. package/dist/plugin/react-client/configureWorkerRequestHandler.js.map +1 -1
  24. package/dist/plugin/source-map/createMappingsSerializer.d.ts.map +1 -1
  25. package/dist/plugin/source-map/createMappingsSerializer.js +0 -1
  26. package/dist/plugin/source-map/readMappings.d.ts.map +1 -1
  27. package/dist/plugin/source-map/readMappings.js +0 -1
  28. package/dist/plugin/transformer/plugin.server.d.ts.map +1 -1
  29. package/dist/plugin/transformer/plugin.server.js +1 -10
  30. package/dist/plugin/transformer/plugin.server.js.map +1 -1
  31. package/dist/plugin/types.d.ts +6 -0
  32. package/dist/plugin/types.d.ts.map +1 -1
  33. package/dist/plugin/worker/rsc/handlers.d.ts.map +1 -1
  34. package/dist/plugin/worker/rsc/handlers.js +4 -2
  35. package/dist/plugin/worker/rsc/handlers.js.map +1 -1
  36. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  37. package/dist/plugin/worker/rsc/messageHandler.js +0 -1
  38. package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
  39. package/dist/plugin/worker/rsc/rsc-worker.development.js +1 -0
  40. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -1
  41. package/dist/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +1 -1
  43. package/plugin/config/defaults.tsx +2 -2
  44. package/plugin/config/extMap.ts +48 -0
  45. package/plugin/config/resolveOptions.ts +25 -52
  46. package/plugin/config/resolveUserConfig.ts +52 -11
  47. package/plugin/helpers/inputNormalizer.ts +21 -14
  48. package/plugin/loader/sourceMap.ts +1 -1
  49. package/plugin/loader/transformModuleWithPreservedFunctions.ts +1 -1
  50. package/plugin/react-client/configureWorkerRequestHandler.ts +0 -3
  51. package/plugin/source-map/createMappingsSerializer.ts +0 -1
  52. package/plugin/source-map/readMappings.ts +0 -1
  53. package/plugin/transformer/plugin.server.ts +1 -10
  54. package/plugin/types.ts +6 -0
  55. package/plugin/worker/rsc/handlers.ts +181 -178
  56. package/plugin/worker/rsc/messageHandler.tsx +0 -1
  57. package/plugin/worker/rsc/rsc-worker.development.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sources":["../../../../plugin/worker/rsc/handlers.ts"],"sourcesContent":["import { sendRscWorkerMessage } from \"../sendMessage.js\";\nimport type { StreamHandlers } from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\nimport { userOptions } from \"./userOptions.js\";\nimport { addCssFileContent, addModuleId } from \"./state.js\";\nimport { join } from \"path\";\nimport { ReactDOMServer } from \"../../vendor/vendor.server.js\";\nimport { PassThrough } from \"node:stream\";\n\nexport const handlers: Required<StreamHandlers> = {\n onError: (id, error, errorInfo) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id: id,\n errorInfo,\n error: toError(error),\n });\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id: id,\n });\n },\n onData: (id, data: any) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id: id,\n chunk: data,\n });\n },\n onEnd: (id: string) => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id: id,\n });\n },\n onMetrics: (id: string, metrics: any) => {\n sendRscWorkerMessage ({\n type: \"RSC_METRICS\",\n id: id,\n metrics,\n });\n },\n onHmrAccept: (id, routes) => {\n sendRscWorkerMessage({\n type: \"HMR_ACCEPT\",\n id: id,\n routes: routes,\n });\n },\n onHmrUpdate: (id, routes) => {\n sendRscWorkerMessage({\n type: \"HMR_UPDATE\",\n id: id,\n routes: routes,\n });\n },\n onServerModule: (id, url, source) => {\n addModuleId(id, url);\n sendRscWorkerMessage({\n type: \"SERVER_MODULE\",\n id,\n url,\n source,\n });\n },\n onServerActionResponse: (id, result) => {\n const stream = ReactDOMServer.renderToPipeableStream(\n {\n type: \"server-action-response\",\n returnValue: result\n },\n userOptions.moduleBasePath,\n {\n onError(error: Error) {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error)\n });\n }\n }\n );\n\n const passThrough = new PassThrough();\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk\n });\n });\n\n passThrough.on(\"end\", () => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id\n });\n });\n\n passThrough.on(\"error\", (error) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error)\n });\n });\n },\n onServerAction: async (id, args) => {\n try {\n // Parse the server action ID to get the file path and export name\n const [filePath, exportName] = id.split(\"#\");\n if (!filePath || !exportName) {\n throw new Error(`Invalid server action ID format: ${id}. Expected format: \"path/to/file.ts#exportName\"`);\n }\n\n // Convert the server action ID to a file path\n const actionPath = filePath.startsWith(\"/\") ? filePath.slice(1) : filePath;\n const fullPath = join(userOptions.projectRoot, actionPath);\n\n // Load the server action module\n const module = await import(fullPath);\n const action = module[exportName];\n\n if (typeof action !== \"function\") {\n throw new Error(`Server action not found: ${id}`);\n }\n\n // Execute the server action\n const result = await action(...args);\n\n // Send success response using RSC stream\n const stream = ReactDOMServer.renderToPipeableStream(\n {\n type: \"server-action-response\",\n returnValue: result\n },\n userOptions.moduleBasePath,\n {\n onError(error: Error) {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error)\n });\n }\n }\n );\n\n const passThrough = new PassThrough();\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk\n });\n });\n\n passThrough.on(\"end\", () => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id\n });\n });\n\n passThrough.on(\"error\", (error) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error)\n });\n });\n } catch (error: unknown) {\n const errorMessage = toError(error).message;\n // Send error response using RSC stream\n const stream = ReactDOMServer.renderToPipeableStream(\n {\n type: \"server-action-response\",\n returnValue: { success: false, error: errorMessage }\n },\n userOptions.moduleBasePath,\n {\n onError(error: Error) {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error)\n });\n }\n }\n );\n\n const passThrough = new PassThrough();\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk\n });\n });\n\n passThrough.on(\"end\", () => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id\n });\n });\n\n passThrough.on(\"error\", (error) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error)\n });\n });\n }\n },\n onShutdown: (id: string) => {\n // Send SHUTDOWN_COMPLETE message to signal that shutdown is complete\n sendRscWorkerMessage({\n type: \"SHUTDOWN_COMPLETE\",\n id: id,\n });\n },\n onCssFile: (id, code) => {\n if (id) {\n // Add to CSS registry\n addCssFileContent(id, code, userOptions);\n \n // Send CSS file message\n sendRscWorkerMessage({\n type: \"CSS_FILE\",\n id,\n content: code\n });\n }\n }, \n };"],"names":["error"],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sources":["../../../../plugin/worker/rsc/handlers.ts"],"sourcesContent":["import { sendRscWorkerMessage } from \"../sendMessage.js\";\nimport type { StreamHandlers } from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\nimport { userOptions } from \"./userOptions.js\";\nimport { addCssFileContent, addModuleId } from \"./state.js\";\nimport { join } from \"path\";\nimport { ReactDOMServer } from \"../../vendor/vendor.server.js\";\nimport { PassThrough } from \"node:stream\";\n\nexport const handlers: Required<StreamHandlers> = {\n onError: (id, error, errorInfo) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id: id,\n errorInfo,\n error: toError(error),\n });\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id: id,\n });\n },\n onData: (id, data: any) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id: id,\n chunk: data,\n });\n },\n onEnd: (id: string) => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id: id,\n });\n },\n onMetrics: (id: string, metrics: any) => {\n sendRscWorkerMessage({\n type: \"RSC_METRICS\",\n id: id,\n metrics,\n });\n },\n onHmrAccept: (id, routes) => {\n sendRscWorkerMessage({\n type: \"HMR_ACCEPT\",\n id: id,\n routes: routes,\n });\n },\n onHmrUpdate: (id, routes) => {\n sendRscWorkerMessage({\n type: \"HMR_UPDATE\",\n id: id,\n routes: routes,\n });\n },\n onServerModule: (id, url, source) => {\n addModuleId(id, url);\n sendRscWorkerMessage({\n type: \"SERVER_MODULE\",\n id,\n url,\n source,\n });\n },\n onServerActionResponse: (id, result) => {\n const stream = ReactDOMServer.renderToPipeableStream(\n {\n type: \"server-action-response\",\n returnValue: result,\n },\n userOptions.moduleBasePath,\n {\n onError(error: Error) {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n },\n }\n );\n\n const passThrough = new PassThrough();\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk,\n });\n });\n\n passThrough.on(\"end\", () => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id,\n });\n });\n\n passThrough.on(\"error\", (error) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n });\n },\n onServerAction: async (id, args) => {\n try {\n // Parse the server action ID to get the file path and export name\n const [filePath, exportName] = id.split(\"#\");\n if (!filePath || !exportName) {\n throw new Error(\n `Invalid server action ID format: ${id}. Expected format: \"path/to/file.ts#exportName\"`\n );\n }\n // Convert the server action ID to a file path\n const actionPath = filePath.startsWith(userOptions.moduleBasePath)\n ? filePath.slice(userOptions.moduleBasePath.length)\n : filePath;\n const fullPath = join(userOptions.projectRoot, actionPath);\n\n // Load the server action module\n const module = await import(fullPath);\n const action = module[exportName];\n\n if (typeof action !== \"function\") {\n throw new Error(`Server action not found: ${id}`);\n }\n\n // Execute the server action\n const result = await action(...args);\n\n // Send success response using RSC stream\n const stream = ReactDOMServer.renderToPipeableStream(\n {\n type: \"server-action-response\",\n returnValue: result,\n },\n userOptions.moduleBasePath,\n {\n onError(error: Error) {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n },\n }\n );\n\n const passThrough = new PassThrough();\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk,\n });\n });\n\n passThrough.on(\"end\", () => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id,\n });\n });\n\n passThrough.on(\"error\", (error) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n });\n } catch (error: unknown) {\n const errorMessage = toError(error).message;\n // Send error response using RSC stream\n const stream = ReactDOMServer.renderToPipeableStream(\n {\n type: \"server-action-response\",\n returnValue: { success: false, error: errorMessage },\n },\n userOptions.moduleBasePath,\n {\n onError(error: Error) {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n },\n }\n );\n\n const passThrough = new PassThrough();\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk,\n });\n });\n\n passThrough.on(\"end\", () => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id,\n });\n });\n\n passThrough.on(\"error\", (error) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n });\n }\n },\n onShutdown: (id: string) => {\n // Send SHUTDOWN_COMPLETE message to signal that shutdown is complete\n sendRscWorkerMessage({\n type: \"SHUTDOWN_COMPLETE\",\n id: id,\n });\n },\n onCssFile: (id, code) => {\n if (id) {\n // Add to CSS registry\n addCssFileContent(id, code, userOptions);\n\n // Send CSS file message\n sendRscWorkerMessage({\n type: \"CSS_FILE\",\n id,\n content: code,\n });\n }\n },\n};\n"],"names":["error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AASrB,wBAAsB,cAAc,CAClC,GAAG,EAAE,qBAAqB,EAC1B,IAAI,8CAAa,iBA2ElB"}
1
+ {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AASrB,wBAAsB,cAAc,CAClC,GAAG,EAAE,qBAAqB,EAC1B,IAAI,8CAAa,iBA0ElB"}
@@ -24,7 +24,6 @@ async function messageHandler(msg, port = parentPort) {
24
24
  case "INITIALIZED_REACT_LOADER":
25
25
  case "INITIALIZED_CSS_LOADER":
26
26
  case "INITIALIZED_ENV_LOADER":
27
- console.log("Initialized ", msg.id);
28
27
  return;
29
28
  case "HMR_UPDATE":
30
29
  hmrState.set(msg.id, {
@@ -1 +1 @@
1
- {"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"sourcesContent":["import { parentPort } from \"node:worker_threads\";\nimport {\n activeStreams,\n hmrState,\n} from \"./state.js\";\nimport { handleRender } from \"./handleRender.js\";\nimport type {\n RscWorkerInputMessage,\n} from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\nimport { handlers } from \"./handlers.js\";\n\n// In test mode, we want errors to propagate up immediately\nconst isTestEnv = process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\nconst isDevEnv = process.env[\"NODE_ENV\"] !== \"production\";\n\n\nexport async function messageHandler(\n msg: RscWorkerInputMessage,\n port = parentPort\n) {\n try {\n if (!port) {\n throw new Error(\"No port found\");\n }\n switch (msg.type) {\n case \"RSC_RENDER\":\n return await handleRender(msg, handlers);\n case \"SERVER_ACTION\":\n return handlers.onServerAction(msg.id, msg.args);\n case \"INITIALIZED_REACT_LOADER\":\n case \"INITIALIZED_CSS_LOADER\":\n case \"INITIALIZED_ENV_LOADER\":\n console.log(\"Initialized \", msg.id);\n return;\n case \"HMR_UPDATE\":\n // Mark the module as invalidated\n hmrState.set(msg.id, {\n timestamp: msg.timestamp || Date.now(),\n invalidated: true,\n routes: msg.routes || [],\n });\n // Notify the main thread that we've processed the update\n handlers.onHmrUpdate(msg.id, msg.routes || []);\n return;\n case \"HMR_CLEANUP\":\n // Clear the invalidation state\n hmrState.delete(msg.id);\n // Notify the main thread that we've processed the cleanup\n handlers.onHmrAccept(msg.id, msg.routes || []);\n return;\n case \"CSS_FILE\":\n handlers.onCssFile(msg.id, msg.content);\n return;\n case \"SERVER_MODULE\":\n handlers.onServerModule(msg.id, msg.url, msg.source);\n return;\n case \"SHUTDOWN\": {\n // If id is \"*\", clean up all render states\n if (msg.id === \"*\") {\n activeStreams.forEach((stream, renderId) => {\n stream.end();\n activeStreams.delete(renderId);\n });\n parentPort?.removeAllListeners();\n } else {\n activeStreams.delete(msg.id);\n }\n handlers.onShutdown(msg.id);\n return;\n }\n default: {\n console.log(\"Unknown message\", msg);\n return;\n }\n }\n } catch (error) {\n const err = toError(error);\n if (isDevEnv) {\n console.error(err);\n }\n // In dev mode, try to send error message before exiting\n if (parentPort) {\n port?.postMessage({\n type: \"ERROR\",\n id: \"rsc-worker\",\n error: err,\n });\n }\n if (!isDevEnv || isTestEnv) {\n // In test mode or production mode, just throw the error to fail fast\n throw err;\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"sourcesContent":["import { parentPort } from \"node:worker_threads\";\nimport {\n activeStreams,\n hmrState,\n} from \"./state.js\";\nimport { handleRender } from \"./handleRender.js\";\nimport type {\n RscWorkerInputMessage,\n} from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\nimport { handlers } from \"./handlers.js\";\n\n// In test mode, we want errors to propagate up immediately\nconst isTestEnv = process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\nconst isDevEnv = process.env[\"NODE_ENV\"] !== \"production\";\n\n\nexport async function messageHandler(\n msg: RscWorkerInputMessage,\n port = parentPort\n) {\n try {\n if (!port) {\n throw new Error(\"No port found\");\n }\n switch (msg.type) {\n case \"RSC_RENDER\":\n return await handleRender(msg, handlers);\n case \"SERVER_ACTION\":\n return handlers.onServerAction(msg.id, msg.args);\n case \"INITIALIZED_REACT_LOADER\":\n case \"INITIALIZED_CSS_LOADER\":\n case \"INITIALIZED_ENV_LOADER\":\n return;\n case \"HMR_UPDATE\":\n // Mark the module as invalidated\n hmrState.set(msg.id, {\n timestamp: msg.timestamp || Date.now(),\n invalidated: true,\n routes: msg.routes || [],\n });\n // Notify the main thread that we've processed the update\n handlers.onHmrUpdate(msg.id, msg.routes || []);\n return;\n case \"HMR_CLEANUP\":\n // Clear the invalidation state\n hmrState.delete(msg.id);\n // Notify the main thread that we've processed the cleanup\n handlers.onHmrAccept(msg.id, msg.routes || []);\n return;\n case \"CSS_FILE\":\n handlers.onCssFile(msg.id, msg.content);\n return;\n case \"SERVER_MODULE\":\n handlers.onServerModule(msg.id, msg.url, msg.source);\n return;\n case \"SHUTDOWN\": {\n // If id is \"*\", clean up all render states\n if (msg.id === \"*\") {\n activeStreams.forEach((stream, renderId) => {\n stream.end();\n activeStreams.delete(renderId);\n });\n parentPort?.removeAllListeners();\n } else {\n activeStreams.delete(msg.id);\n }\n handlers.onShutdown(msg.id);\n return;\n }\n default: {\n console.log(\"Unknown message\", msg);\n return;\n }\n }\n } catch (error) {\n const err = toError(error);\n if (isDevEnv) {\n console.error(err);\n }\n // In dev mode, try to send error message before exiting\n if (parentPort) {\n port?.postMessage({\n type: \"ERROR\",\n id: \"rsc-worker\",\n error: err,\n });\n }\n if (!isDevEnv || isTestEnv) {\n // In test mode or production mode, just throw the error to fail fast\n throw err;\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -79,6 +79,7 @@ try {
79
79
  register(envLoaderPath, {
80
80
  parentURL: pluginRoot,
81
81
  data: {
82
+ id: "env-loader",
82
83
  port: envLoaderChannel.port1,
83
84
  resolvedConfig: workerData.resolvedConfig
84
85
  },
@@ -1 +1 @@
1
- {"version":3,"file":"rsc-worker.development.js","sources":["../../../../plugin/worker/rsc/rsc-worker.development.ts"],"sourcesContent":["import { parentPort, MessageChannel, workerData } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { register } from \"node:module\";\nimport { register as registerTsx } from \"tsx/esm/api\";\nimport { join } from \"node:path\";\nimport { pluginRoot } from \"../../root.js\";\nimport type {\n HmrAcceptMessage,\n HmrUpdateMessage,\n ReadyMessage,\n} from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\n\n// Initialize worker\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// In test mode, we want errors to propagate up immediately\nconst isTestEnv = process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\nconst isDevEnv = process.env[\"NODE_ENV\"] !== \"production\";\nconst verbose = workerData.verbose;\n\nconst developmentMessageHandler = (msg: any) => {\n if (verbose) {\n if (\"chunk\" in msg) {\n let preview = Buffer.from(msg.chunk).toString(\"utf-8\");\n console.log(`[rsc-worker:${msg.type}] ${preview}`);\n } else {\n console.log(`[rsc-worker:${msg.type}] ${JSON.stringify(msg)}`);\n }\n }\n messageHandler(msg);\n};\n\nconst developmentCssLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[css-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\nconst developmentEnvLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[env-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\nconst developmentReactLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[react-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\ntry {\n // Create channels for each loader\n const reactLoaderChannel = new MessageChannel();\n const cssLoaderChannel = new MessageChannel();\n const envLoaderChannel = new MessageChannel();\n\n // Set up message handlers before transferring ports\n reactLoaderChannel.port2.on(\"message\", developmentReactLoaderMessageHandler);\n cssLoaderChannel.port2.on(\"message\", developmentCssLoaderMessageHandler);\n envLoaderChannel.port2.on(\"message\", developmentEnvLoaderMessageHandler);\n\n const reactLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/react-loader.server.js\");\n const cssLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/css-loader.development.js\");\n const envLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/env-loader.development.js\");\n\n register(cssLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"css-loader\",\n port: cssLoaderChannel.port1,\n userOptions: workerData.userOptions,\n resolvedConfig: workerData.resolvedConfig,\n },\n transferList: [cssLoaderChannel.port1],\n });\n\n // Register tsx\n registerTsx();\n\n // Register loaders with their ports\n register(reactLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"react-loader\",\n port: reactLoaderChannel.port1,\n userOptions: workerData.userOptions,\n },\n transferList: [reactLoaderChannel.port1],\n });\n\n // Register env-loader (ensure this the last)\n register(envLoaderPath, {\n parentURL: pluginRoot,\n data: {\n port: envLoaderChannel.port1,\n resolvedConfig: workerData.resolvedConfig,\n },\n transferList: [envLoaderChannel.port1],\n });\n\n // Set up message handling\n parentPort!.on(\"message\", developmentMessageHandler);\n\n const { hmrPort } = workerData;\n if (hmrPort) {\n // Start the message port\n hmrPort.start();\n\n // Listen for HMR messages\n hmrPort.on(\"message\", (message: any) => {\n if (message.type === \"HMR_UPDATE\") {\n // Invalidate the module in the worker\n parentPort!.postMessage({\n type: \"HMR_UPDATE\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrUpdateMessage);\n } else if (message.type === \"HMR_ACCEPT\") {\n // Handle the update\n parentPort!.postMessage({\n type: \"HMR_ACCEPT\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrAcceptMessage);\n }\n });\n }\n\n // Notify parent that we're ready\n parentPort!.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n id: \"rsc-worker\",\n } satisfies ReadyMessage);\n\n if (process.env[\"NODE_ENV\"] === \"production\") {\n throw new Error(\"This module should not run in production mode.\");\n }\n} catch (error) {\n if (isDevEnv) {\n console.error(error);\n }\n // In dev mode, try to send error message before exiting\n if (parentPort) {\n parentPort?.postMessage({\n type: \"ERROR\",\n id: \"rsc-worker\",\n error: toError(error),\n });\n }\n if (!isDevEnv || isTestEnv) {\n // In test mode or production mode, just throw the error to fail fast\n throw error;\n }\n}\n"],"names":["registerTsx"],"mappings":"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"}
1
+ {"version":3,"file":"rsc-worker.development.js","sources":["../../../../plugin/worker/rsc/rsc-worker.development.ts"],"sourcesContent":["import { parentPort, MessageChannel, workerData } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { register } from \"node:module\";\nimport { register as registerTsx } from \"tsx/esm/api\";\nimport { join } from \"node:path\";\nimport { pluginRoot } from \"../../root.js\";\nimport type {\n HmrAcceptMessage,\n HmrUpdateMessage,\n ReadyMessage,\n} from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\n\n// Initialize worker\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// In test mode, we want errors to propagate up immediately\nconst isTestEnv = process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\nconst isDevEnv = process.env[\"NODE_ENV\"] !== \"production\";\nconst verbose = workerData.verbose;\n\nconst developmentMessageHandler = (msg: any) => {\n if (verbose) {\n if (\"chunk\" in msg) {\n let preview = Buffer.from(msg.chunk).toString(\"utf-8\");\n console.log(`[rsc-worker:${msg.type}] ${preview}`);\n } else {\n console.log(`[rsc-worker:${msg.type}] ${JSON.stringify(msg)}`);\n }\n }\n messageHandler(msg);\n};\n\nconst developmentCssLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[css-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\nconst developmentEnvLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[env-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\nconst developmentReactLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[react-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\ntry {\n // Create channels for each loader\n const reactLoaderChannel = new MessageChannel();\n const cssLoaderChannel = new MessageChannel();\n const envLoaderChannel = new MessageChannel();\n\n // Set up message handlers before transferring ports\n reactLoaderChannel.port2.on(\"message\", developmentReactLoaderMessageHandler);\n cssLoaderChannel.port2.on(\"message\", developmentCssLoaderMessageHandler);\n envLoaderChannel.port2.on(\"message\", developmentEnvLoaderMessageHandler);\n\n const reactLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/react-loader.server.js\");\n const cssLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/css-loader.development.js\");\n const envLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/env-loader.development.js\");\n\n register(cssLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"css-loader\",\n port: cssLoaderChannel.port1,\n userOptions: workerData.userOptions,\n resolvedConfig: workerData.resolvedConfig,\n },\n transferList: [cssLoaderChannel.port1],\n });\n\n // Register tsx\n registerTsx();\n\n // Register loaders with their ports\n register(reactLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"react-loader\",\n port: reactLoaderChannel.port1,\n userOptions: workerData.userOptions,\n },\n transferList: [reactLoaderChannel.port1],\n });\n\n // Register env-loader (ensure this the last)\n register(envLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"env-loader\",\n port: envLoaderChannel.port1,\n resolvedConfig: workerData.resolvedConfig,\n },\n transferList: [envLoaderChannel.port1],\n });\n\n // Set up message handling\n parentPort!.on(\"message\", developmentMessageHandler);\n\n const { hmrPort } = workerData;\n if (hmrPort) {\n // Start the message port\n hmrPort.start();\n\n // Listen for HMR messages\n hmrPort.on(\"message\", (message: any) => {\n if (message.type === \"HMR_UPDATE\") {\n // Invalidate the module in the worker\n parentPort!.postMessage({\n type: \"HMR_UPDATE\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrUpdateMessage);\n } else if (message.type === \"HMR_ACCEPT\") {\n // Handle the update\n parentPort!.postMessage({\n type: \"HMR_ACCEPT\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrAcceptMessage);\n }\n });\n }\n\n // Notify parent that we're ready\n parentPort!.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n id: \"rsc-worker\",\n } satisfies ReadyMessage);\n\n if (process.env[\"NODE_ENV\"] === \"production\") {\n throw new Error(\"This module should not run in production mode.\");\n }\n} catch (error) {\n if (isDevEnv) {\n console.error(error);\n }\n // In dev mode, try to send error message before exiting\n if (parentPort) {\n parentPort?.postMessage({\n type: \"ERROR\",\n id: \"rsc-worker\",\n error: toError(error),\n });\n }\n if (!isDevEnv || isTestEnv) {\n // In test mode or production mode, just throw the error to fail fast\n throw error;\n }\n}\n"],"names":["registerTsx"],"mappings":"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"}