@lzptec/concurrency
Version:
A Lightweight concurrency manager
2 lines • 3.36 kB
JavaScript
import {n as n$1,l as l$1,c,d as d$2,e,m,f as f$1,g,h as h$1,i,j,b as b$2,k as k$1,a as a$1}from'./chunk-F6AHWZHA.js';import {d as d$1,h,f,b as b$1,a,c as c$1,e as e$1}from'./chunk-6CP24U3Z.js';function J(p){if(!Number.isInteger(p.batchSize)||p.batchSize<0)throw new Error("Parameter `batchSize` must be a positive integer greater than 0!");if(typeof p.batchInterval=="number"){if(isNaN(p.batchInterval))throw new Error("Parameter `batchInterval` invalid!");if(p.batchInterval<0)throw new Error("Parameter `batchInterval` must be a positive number!")}}var d,b,v,B,n,l,I,K,k=class extends n$1{constructor(t){super();d$1(this,I);d$1(this,d);d$1(this,b,false);d$1(this,v,new h);d$1(this,B,Promise.resolve());this.options=t;}static async forEach(t){l$1(t.task);let{task:e}=c(t.task);await f(this,n,l).call(this,b$1(a({},t),{task:e}));}static async map(t){l$1(t.task);let{task:e,results:a$1}=d$2(t.task);return await f(this,n,l).call(this,b$1(a({},t),{task:e})),a$1}static async mapSettled(t){l$1(t.task);let{task:e$1,results:a$1}=e(t.task);return await f(this,n,l).call(this,b$1(a({},t),{task:e$1})),a$1}static async filter(t){m(t.predicate);let{task:e,results:a$1}=f$1(t.predicate);return await f(this,n,l).call(this,b$1(a({},t),{task:e})),a$1}static async some(t){m(t.predicate);let{task:e,results:a$1}=g(t.predicate);return await f(this,n,l).call(this,b$1(a({},t),{task:e})),a$1[0]}static async find(t){m(t.predicate);let{task:e,results:a$1}=h$1(t.predicate);return await f(this,n,l).call(this,b$1(a({},t),{task:e})),a$1[0]}static async every(t){m(t.predicate);let{task:e,results:a$1}=i(t.predicate);return await f(this,n,l).call(this,b$1(a({},t),{task:e})),a$1[0]}static async group(t){l$1(t.task);let{task:e,results:a$1}=j(t.task);return await f(this,n,l).call(this,b$1(a({},t),{task:e})),Object.fromEntries(a$1[0])}run(t,...e){return new Promise((h,u)=>{let i=()=>c$1(this,B).then(()=>t(...e)).then(h).catch(u);c$1(this,v).enqueue(i),c$1(this,B).then(()=>f(this,I,K).call(this));})}async[b$2](t,e){let a=k$1(t),h=false,{batchSize:u}=c$1(this,d);await new Promise((i,o)=>{let S=u;for(let y=0;y<u;y++)Promise.resolve(a.next()).then(async w=>{for(;!h&&!w.done;)await this.run(e,await w.value),w=await a.next();}).then(()=>--S===0?i():void 0).catch(()=>{h=true,o();});});}set options(t){J(t),e$1(this,d,a(a({},c$1(this,d)),t));}get options(){return a({},c$1(this,d))}};d=new WeakMap,b=new WeakMap,v=new WeakMap,B=new WeakMap,n=new WeakSet,l=async function(t){J(t);let e=k$1(t.input),{batchSize:a,batchInterval:h,task:u}=t,i=false;for(;!i;)await new Promise((o,S)=>{let y=a;for(let w=0;w<a;w++)(async()=>{var z;let j=await e.next();if(i=i||!!j.done,i)return;await u(await j.value)===a$1&&(i=true,(z=e.return)==null||z.call(e));})().then(()=>--y===0?o():void 0).catch(S);}),typeof h=="number"&&await new Promise(o=>setTimeout(o,h));},I=new WeakSet,K=async function(){if(c$1(this,b))return;e$1(this,b,true);let{batchSize:t,batchInterval:e}=c$1(this,d);for(;c$1(this,v).length;)await new Promise((a,h)=>{let u=t;for(let i=0;i<t;i++)c$1(this,B).then(async()=>{try{let o=c$1(this,v).dequeue();if(!o){--u===0&&a();return}await o(),--u===0&&a();}catch(o){h(o);}});}),typeof e=="number"&&await new Promise(a=>setTimeout(a,e));e$1(this,b,false);},d$1(k,n);Object.freeze(k);export{k as a};//# sourceMappingURL=chunk-VKMFYXJN.js.map
//# sourceMappingURL=chunk-VKMFYXJN.js.map