UNPKG

prutill

Version:

Environment-agnostic production-ready promise utility library for managing promise stacks and race conditions. Supports Node.js, Deno, and browsers.

2 lines 823 B
export function stackBuilder(e=!0){let r=[],t=[];return s=>{t.push(s);const o={id:t.length,promise:s};return new Promise(((s,i)=>{e&&r.push(s),o.promise.then((i=>{if(o.id===t.length){if(e)for(let e=0;e<r.length;e++)r[e](i);else s(i);t=[],r=[]}}),i)}))}}const storedPromiseStacks={};export function getLastPromise(e,r,t=!0){return void 0===storedPromiseStacks[e]&&(storedPromiseStacks[e]=stackBuilder(t)),storedPromiseStacks[e](r)}export function raceBuilder(e=!0){let r=[],t=!1;return s=>new Promise((o=>{e&&r.push(o),s.then((s=>{if(!t){if(t=!0,e)for(let e=0;e<r.length;e++)r[e](s);else o(s);r=[],t=!1}}))}))}const storedPromiseRaces={};export function getRaceWonPromise(e,r,t=!0){return void 0===storedPromiseRaces[e]&&(storedPromiseRaces[e]=raceBuilder(t)),storedPromiseRaces[e](r)} //# sourceMappingURL=runManager.js.map