UNPKG

@pouchlab/worker-pool

Version:

A worker pool for bun,nodejs,browser,deno..run cpu intensive tasks in parallel

2 lines (1 loc) 1.08 kB
import i from"eventemitter3";import{Json as l}from"@pouchlab/core-utils";(function(){typeof self=="undefined"&&typeof global=="object"&&(global.self=global)})();var r=new i,o=self,t=0;async function d(s){try{let e=s.fn;if(e&&e.then||e.catch||e instanceof Promise){let n=await e.call(this);t=t-1,o.postMessage({msg:"count",num:t,wrk_id:s?.wrkid});let a=setTimeout(()=>{o.postMessage({iserror:!1,msg:n?.status||"completed",error:null,data:n||null,id:s.id}),clearTimeout(a)},s.delay||0)}else{let n=await e();t=t-1,o.postMessage({msg:"count",num:t,wrk_id:s?.wrkid});let a=setTimeout(()=>{o.postMessage({iserror:!1,msg:n?.status||"completed",error:null,data:n||null,id:s.id}),clearTimeout(a)},s.delay||0)}}catch(e){t=t-1,o.postMessage({msg:"count",num:t}),o.postMessage({iserror:!0,msg:"error occurred",error:e,data:null,id:s.id})}}r.on("scheduled_job",d);o.onmessage=async(s)=>{let e=l.parse(s.data);o.postMessage({data:{status:"running",id:e.id,fn:e.fn.toString()}}),t=t+1,o.postMessage({msg:"count",num:t,wrk_id:e?.wrkid}),r.emit("scheduled_job",e)};var f=o;export{f as default};