UNPKG

ciorent

Version:

A lightweight, low-overhead concurrency library

1 lines 1.39 kB
import{loadedResolve,loadResolve}from"./utils.js";export let map=(arr,fn)=>{for(let i=0;i<arr.length;i++)arr[i]=arr[i].then(fn);return arr};let resolveFind=async(fn,promise,state)=>{try{let result=await promise;let findResult=fn(result);if(findResult instanceof Promise?await findResult:findResult)return state[1](result);if(--state[0]===0)state[1]()}catch{if(--state[0]===0)state[1]();return promise}};export let find=(arr,fn)=>{let promise=new Promise(loadResolve);for(let i=0,state=[arr.length,loadedResolve];i<arr.length;i++)resolveFind(fn,arr[i],state);return promise};let resolveSome=async(fn,promise,state)=>{try{let result=fn(await promise);if(typeof result===`boolean`?result:await result)return state[1](true);if(--state[0]===0)state[1](false)}catch{if(--state[0]===0)state[1](false);return promise}};export let some=(arr,fn)=>{let promise=new Promise(loadResolve);for(let i=0,state=[arr.length,loadedResolve];i<arr.length;i++)resolveSome(fn,arr[i],state);return promise};let resolveEvery=async(fn,promise,state)=>{try{let result=fn(await promise);if(typeof result===`boolean`?!result:!await result)return state[1](false);if(--state[0]===0)state[1](true)}catch{if(--state[0]===0)state[1](true);return promise}};export let every=(arr,fn)=>{let promise=new Promise(loadResolve);for(let i=0,state=[arr.length,loadedResolve];i<arr.length;i++)resolveEvery(fn,arr[i],state);return promise};