next
Version:
The React Framework
40 lines (39 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "runLoaderWorkerPool", {
enumerable: true,
get: function() {
return runLoaderWorkerPool;
}
});
const _worker_threads = require("worker_threads");
const loaderWorkers = {};
function getPoolId(cwd, filename) {
return `${cwd}:${filename}`;
}
async function runLoaderWorkerPool(bindings, bindingPath) {
bindings.registerWorkerScheduler((creation)=>{
const { options: { filename, cwd } } = creation;
const poolId = getPoolId(cwd, filename);
const worker = new _worker_threads.Worker(/* turbopackIgnore: true*/ filename, {
workerData: {
bindingPath,
cwd
}
});
// This will cause handing when run in jest worker, but not as a first level thread of nodejs thread
// worker.unref()
const workers = loaderWorkers[poolId] || (loaderWorkers[poolId] = new Map());
workers.set(worker.threadId, worker);
}, (termination)=>{
var _workers_get;
const { options: { filename, cwd }, workerId } = termination;
const poolId = getPoolId(cwd, filename);
const workers = loaderWorkers[poolId];
(_workers_get = workers.get(workerId)) == null ? void 0 : _workers_get.terminate();
workers.delete(workerId);
});
}
//# sourceMappingURL=loaderWorkerPool.js.map