{"version":3,"sources":["../../../src/build/swc/loaderWorkerPool.ts"],"sourcesContent":["import { Worker } from 'worker_threads'\n\nconst loaderWorkers: Record<string, Map<number, Worker>> = {}\n\nfunction getPoolId(cwd: string, filename: string) {\n  return `${cwd}:${filename}`\n}\n\nexport async function runLoaderWorkerPool(\n  bindings: typeof import('./generated-native'),\n  bindingPath: string\n) {\n  bindings.registerWorkerScheduler(\n    (creation) => {\n      const {\n        options: { filename, cwd },\n      } = creation\n\n      const poolId = getPoolId(cwd, filename)\n\n      const worker = new Worker(/* turbopackIgnore: true*/ filename, {\n        workerData: {\n          bindingPath,\n          cwd,\n        },\n      })\n\n      // This will cause handing when run in jest worker, but not as a first level thread of nodejs thread\n      // worker.unref()\n\n      const workers =\n        loaderWorkers[poolId] || (loaderWorkers[poolId] = new Map())\n\n      workers.set(worker.threadId, worker)\n    },\n    (termination) => {\n      const {\n        options: { filename, cwd },\n        workerId,\n      } = termination\n\n      const poolId = getPoolId(cwd, filename)\n      const workers = loaderWorkers[poolId]\n      workers.get(workerId)?.terminate()\n      workers.delete(workerId)\n    }\n  )\n}\n"],"names":["runLoaderWorkerPool","loaderWorkers","getPoolId","cwd","filename","bindings","bindingPath","registerWorkerScheduler","creation","options","poolId","worker","Worker","workerData","workers","Map","set","threadId","termination","workerId","get","terminate","delete"],"mappings":";;;;+BAQsBA;;;eAAAA;;;gCARC;AAEvB,MAAMC,gBAAqD,CAAC;AAE5D,SAASC,UAAUC,GAAW,EAAEC,QAAgB;IAC9C,OAAO,GAAGD,IAAI,CAAC,EAAEC,UAAU;AAC7B;AAEO,eAAeJ,oBACpBK,QAA6C,EAC7CC,WAAmB;IAEnBD,SAASE,uBAAuB,CAC9B,CAACC;QACC,MAAM,EACJC,SAAS,EAAEL,QAAQ,EAAED,GAAG,EAAE,EAC3B,GAAGK;QAEJ,MAAME,SAASR,UAAUC,KAAKC;QAE9B,MAAMO,SAAS,IAAIC,sBAAM,CAAC,wBAAwB,GAAGR,UAAU;YAC7DS,YAAY;gBACVP;gBACAH;YACF;QACF;QAEA,oGAAoG;QACpG,iBAAiB;QAEjB,MAAMW,UACJb,aAAa,CAACS,OAAO,IAAKT,CAAAA,aAAa,CAACS,OAAO,GAAG,IAAIK,KAAI;QAE5DD,QAAQE,GAAG,CAACL,OAAOM,QAAQ,EAAEN;IAC/B,GACA,CAACO;YAQCJ;QAPA,MAAM,EACJL,SAAS,EAAEL,QAAQ,EAAED,GAAG,EAAE,EAC1BgB,QAAQ,EACT,GAAGD;QAEJ,MAAMR,SAASR,UAAUC,KAAKC;QAC9B,MAAMU,UAAUb,aAAa,CAACS,OAAO;SACrCI,eAAAA,QAAQM,GAAG,CAACD,8BAAZL,aAAuBO,SAAS;QAChCP,QAAQQ,MAAM,CAACH;IACjB;AAEJ","ignoreList":[0]}