@mui/internal-docs-infra
Version:
MUI Infra - internal documentation creation tools.
36 lines (32 loc) • 1.2 kB
JavaScript
// webpack does not like node: imports
// eslint-disable-next-line n/prefer-node-protocol
import { parentPort, workerData } from 'worker_threads';
import { SocketServer } from "./socketServer.mjs";
import { processTypes } from "./processTypes.mjs";
// Re-export types for convenience
// Get socket directory from worker data (if provided)
const socketDir = workerData?.socketDir;
// When true, start a socket server so other workers can connect via IPC.
const isServer = workerData?.isServer === true;
let socketServer = null;
// If told to be a server, start the socket server for other workers to connect to.
const socketReady = isServer ? SocketServer.create(processTypes, socketDir).then(async server => {
socketServer = server;
await server.start();
}) : Promise.resolve();
if (parentPort) {
parentPort.on('message', async request => {
await socketReady;
const response = await processTypes(request);
// Echo back the requestId for the worker manager to match responses
parentPort?.postMessage({
...response,
requestId: request.requestId
});
});
parentPort.on('close', () => {
if (socketServer) {
socketServer.shutdown();
}
});
}