UNPKG

@deskthing/cli

Version:
73 lines (72 loc) 2.48 kB
// src/emulator/server/serverProcess.ts import { pathToFileURL } from "node:url"; import { workerData, parentPort } from "node:worker_threads"; import { createRequire as DeskThingCreateRequire } from "module"; import { fileURLToPath as DeskThingFileURLToPath } from "url"; import { dirname as DeskThingDirname } from "node:path"; var require2 = DeskThingCreateRequire(import.meta.url); var __filename = DeskThingFileURLToPath(import.meta.url); var __dirname = DeskThingDirname(__filename); Object.entries(workerData).forEach(([key, value]) => { process.env[key] = value; }); 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); }; } var 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}` }); const importDeskThing = async () => { try { await import(serverUrl); process.send?.({ type: "server:log", payload: "DeskThing module loaded successfully." }); } catch (error) { const err = 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; console.error("\x1B[31m%s\x1B[0m", "Critical error in serverProcess: ", err); process.exit(1); } }; setupServer();