UNPKG

react-suspense-fetch

Version:

A low-level library for React Suspense for Data Fetching

3 lines (2 loc) 1.18 kB
function e(e,t,r){const n=(e=>{if("WeakMap"===(null==e?void 0:e.type))return new WeakMap;const t="Map"===(null==e?void 0:e.type)&&e.areEqual;return t?(e=>{const t=new Map;return{set:(e,r)=>{t.set(e,r)},has:r=>{for(const[n]of t)if(e(n,r))return!0;return!1},get:r=>{for(const[n,o]of t)if(e(n,r))return o},delete:r=>{for(const[n]of t)e(n,r)&&t.delete(n)}}})(t):new Map})(t),o=e=>{if("WeakMap"===(null==t?void 0:t.type)&&("object"!=typeof(r=e)||null===r))throw new Error("WeakMap requires object input");var r},l=(e,t)=>{o(e),n.set(e,{get:()=>t,abort:()=>{}})};if(r)for(const[e,t]of r)l(e,t);const a=t=>{o(t),n.has(t)||n.set(t,(t=>{let r=null,n=null,o=null;const l=new AbortController;return r=(async()=>{try{n=await e(t,{signal:l.signal})}catch(e){o=e}finally{r=null}})(),{get:()=>{if(r)throw r;if(null!==o)throw o;return n},abort:()=>{l.abort()}}})(t))};return{prefetch:a,get:(e,t)=>{o(e),null!=t&&t.forcePrefetch&&a(e);const r=n.get(e);if(!r)throw new Error("prefetch() must be called before get()");return r.get()},preset:l,evict:e=>{o(e),n.delete(e)},abort:e=>{var t;o(e),null==(t=n.get(e))||t.abort()}}}export{e as createFetchStore}; //# sourceMappingURL=index.modern.js.map