decorio
Version:
First-class ECMAScript decorators for caching, binding, and concurrency patterns
2 lines (1 loc) • 378 B
JavaScript
import{decorate as f,emplace as u}from"../internal/index.js";function m(c,s){return f(c,s,o=>{const r=new Map;return function(...t){const e=u(r,this,()=>({calls:new Map}));for(const[n,a]of e.calls.entries())if(n.length===t.length&&n.every((p,i)=>p===t[i]))return a;const l=o.apply(this,t).finally(()=>{e.calls.delete(t)});return e.calls.set(t,l),l}})}export{m as singleflight};