UNPKG

next-yak

Version:

next-yak is a CSS-in-JS solution tailored for Next.js that seamlessly combines the expressive power of styled-components syntax with efficient build-time extraction of CSS using Next.js's built-in CSS configuration

59 lines (58 loc) 1.58 kB
import { register } from "node:module"; import { MessageChannel, parentPort, workerData } from "node:worker_threads"; import { pathToFileURL } from "node:url"; //#region isolated-source-eval/worker.ts if (!parentPort) throw new Error("This file must be run as a worker thread"); const loaderDataUrl = workerData.loaderDataUrl; const { port1, port2 } = new MessageChannel(); register(loaderDataUrl, { parentURL: import.meta.url, data: { port: port2 }, transferList: [port2] }); function requestDeps() { return new Promise((resolve) => { port1.once("message", (deps) => { resolve(deps); }); port1.postMessage("getDeps"); }); } parentPort.on("message", async (msg) => { if (msg.type !== "evaluate") return; try { const ns = await import(pathToFileURL(msg.absolutePath).href); const deps = await requestDeps(); if (!deps.includes(msg.absolutePath)) deps.unshift(msg.absolutePath); const value = {}; for (const key of Object.keys(ns)) value[key] = ns[key]; parentPort.postMessage({ type: "result", id: msg.id, ok: true, value, dependencies: deps }); } catch (err) { const error = err instanceof Error ? { message: err.message, stack: err.stack ?? "" } : { message: String(err), stack: "" }; const deps = await requestDeps(); if (!deps.includes(msg.absolutePath)) deps.unshift(msg.absolutePath); parentPort.postMessage({ type: "result", id: msg.id, ok: false, error, dependencies: deps }); } }); parentPort.postMessage({ type: "ready" }); //#endregion export {}; //# sourceMappingURL=worker.js.map