UNPKG

decorio

Version:

First-class ECMAScript decorators for caching, binding, and concurrency patterns

2 lines (1 loc) 423 B
import{decorate as a,emplace as u}from"../internal/index.js";function f(s,o){return a(s,o,i=>{const e=new Map;return function(...t){const n=u(e,this,()=>({args:null,result:null}));if(n.args&&n.args.length===t.length&&n.args.every((l,c)=>l===t[c]))return n.result;const r=i.apply(this,t);return e.set(this,{args:t,result:r}),r instanceof Promise&&r.catch(()=>{e.get(this)?.args===t&&e.delete(this)}),r}})}export{f as once};