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 1.01 kB
"use strict";function stackBuilder(e=!0){let r=[],s=[];return t=>{s.push(t);const o={id:s.length,promise:t};return new Promise(((t,i)=>{e&&r.push(t),o.promise.then((i=>{if(o.id===s.length){if(e)for(let e=0;e<r.length;e++)r[e](i);else t(i);s=[],r=[]}}),i)}))}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.stackBuilder=stackBuilder,exports.getLastPromise=getLastPromise,exports.raceBuilder=raceBuilder,exports.getRaceWonPromise=getRaceWonPromise;const storedPromiseStacks={};function getLastPromise(e,r,s=!0){return void 0===storedPromiseStacks[e]&&(storedPromiseStacks[e]=stackBuilder(s)),storedPromiseStacks[e](r)}function raceBuilder(e=!0){let r=[],s=!1;return t=>new Promise((o=>{e&&r.push(o),t.then((t=>{if(!s){if(s=!0,e)for(let e=0;e<r.length;e++)r[e](t);else o(t);r=[],s=!1}}))}))}const storedPromiseRaces={};function getRaceWonPromise(e,r,s=!0){return void 0===storedPromiseRaces[e]&&(storedPromiseRaces[e]=raceBuilder(s)),storedPromiseRaces[e](r)} //# sourceMappingURL=runManager.cjs.map