UNPKG

@deskthing/cli

Version:
84 lines (67 loc) 2.28 kB
import { pathToFileURL } from "node:url"; import { workerData, parentPort } from "node:worker_threads" // Set environment variables from workerData Object.entries(workerData).forEach(([key, value]) => { process.env[key] = value as string }); function setupConsoleCapture() { const originalConsoleLog = console.log; const originalConsoleError = console.error; const originalConsoleWarn = console.warn; const originalConsoleInfo = console.info; console.log = (...args) => { parentPort?.postMessage({ log: args.map(arg => String(arg)).join(' ') }); originalConsoleLog(...args); }; console.error = (...args) => { parentPort?.postMessage({ error: args.map(arg => String(arg)).join(' ') }); originalConsoleError(...args); }; console.warn = (...args) => { parentPort?.postMessage({ log: args.map(arg => String(arg)).join(' ') }); originalConsoleWarn(...args); }; console.info = (...args) => { parentPort?.postMessage({ log: args.map(arg => String(arg)).join(' ') }); originalConsoleInfo(...args); }; } const setupServer = async () => { setupConsoleCapture() process.env.DESKTHING_ENV = "development"; const serverPath = process.env.SERVER_INDEX_PATH; if (!serverPath) { throw new Error("SERVER_INDEX_PATH is not defined!"); } const serverUrl = pathToFileURL(serverPath).href; parentPort?.postMessage({ type: "server:log", payload: `Starting up... ${serverUrl}`, }); // keep alive const importDeskThing = async () => { try { // await import(serverUrl); process.send?.({ type: "server:log", payload: "DeskThing module loaded successfully.", }); } catch (error) { const err = error as Error; console.error("\x1b[31m%s\x1b[0m", "Critical error in serverProcess: ", err); parentPort?.postMessage?.({ type: "server:log", payload: `Failed to load DeskThing: ${err?.message}`, }); throw error } }; try { await importDeskThing(); } catch (error) { const err = error as Error; console.error("\x1b[31m%s\x1b[0m", "Critical error in serverProcess: ", err); process.exit(1); } }; setupServer();