UNPKG

vite-plugin-react-server

Version:
59 lines (56 loc) 2 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import { Worker } from 'node:worker_threads'; import { getNodePath, getMode } from '../config/getPaths.js'; import { getCondition } from '../config/getCondition.js'; async function createWorker(options) { const { projectRoot = process.cwd(), nodePath = getNodePath(projectRoot), condition = getCondition(), reverseCondition = true, maxListeners = 100, mode = getMode(), workerPath, resourceLimits = { maxOldGenerationSizeMb: 512, maxYoungGenerationSizeMb: 128 } } = options; const isTestEnv = process.env["VITEST"] || process.env["NODE_ENV"] === "test"; const nodeEnv = isTestEnv ? "development" : mode; const env = { ...process.env, NODE_ENV: nodeEnv, NODE_PATH: nodePath, NODE_OPTIONS: `${reverseCondition ? condition === "react-server" ? process.env["NODE_OPTIONS"]?.includes("react-server") ? process.env["NODE_OPTIONS"]?.replace("react-server", "react-client") : `${process.env["NODE_OPTIONS"] ?? ""} --conditions=react-client` : process.env["NODE_OPTIONS"]?.includes("react-client") ? process.env["NODE_OPTIONS"]?.replace("react-client", "react-server") : `${process.env["NODE_OPTIONS"] ?? ""} --conditions=react-server` : process.env["NODE_OPTIONS"]}` }; const worker = new Worker( workerPath.startsWith("/") ? workerPath : "./" + workerPath, { env, resourceLimits } ); worker.setMaxListeners(maxListeners); return await new Promise((resolve, reject) => { const timeout = setTimeout(() => { reject(new Error("Worker ready timeout")); }, 5e3); worker.once("message", (msg) => { if (msg.type === "READY" && msg.env === nodeEnv) { clearTimeout(timeout); resolve(worker); } }); worker.once("error", (error) => { clearTimeout(timeout); reject(error); }); }); } export { createWorker }; //# sourceMappingURL=createWorker.js.map