swr-store
Version:
SWR stores for data-fetching
2 lines (1 loc) • 5.6 kB
JavaScript
;var x=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var H=(t,e)=>{for(var n in e)x(t,n,{get:e[n],enumerable:!0})},k=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of _(e))!j.call(t,a)&&a!==n&&x(t,a,{get:()=>e[a],enumerable:!(r=G(e,a))||r.enumerable});return t};var B=t=>k(x({},"__esModule",{value:!0}),t);var ee={};H(ee,{createSWRStore:()=>C,mutate:()=>w,subscribe:()=>g,trigger:()=>h});module.exports=B(ee);var P=require("dequal/lite");function p(){return{cache:new Map,subscribers:new Map}}function q(t,e,n){let r=t.cache.get(e);if(r)return r;let a={value:n};return t.cache.set(e,a),a}function R(t,e,n){let r=t.subscribers.get(e);return r||(r=new Set,t.subscribers.set(e,r)),r.add(n),()=>{r&&r.delete(n)}}function b(t,e,n,r=!0){let a=q(t,e,n);if(a.value=n,r){let s=t.subscribers.get(e);s||(s=new Set,t.subscribers.set(e,s));for(let o of s.keys())o(n)}}function L(t,e){let n=t.subscribers.get(e);return n?n.size:0}var T=p();function I(t,e){return R(T,t,e)}function f(t,e){b(T,t,e)}function v(t){let e=T.cache.get(t);if(e)return e.value}function y(t){return L(T,t)}var E=p();function W(t,e){return R(E,t,e)}function m(t,e,n=!0){b(E,t,e,n)}function h(t,e=!0){m(t,e)}function w(t,e,n=!0,r=P.dequal){m(t,n);let a=v(t);if(a&&a.result.status==="success"&&e.status==="success"&&r(a.result.data,e.data)){a.timestamp=Date.now();return}f(t,{result:e,timestamp:Date.now(),isValidating:!1})}function g(t,e){return I(t,r=>{e(r)})}var V=require("dequal/lite");function J(...t){return JSON.stringify(t)}var $={revalidateOnFocus:!1,revalidateOnNetwork:!1,revalidateOnVisibility:!1,refreshWhenHidden:!1,refreshWhenBlurred:!1,refreshWhenOffline:!1,freshAge:2e3,staleAge:3e4,key:J,compare:V.dequal,maxRetryInterval:5e3},D=$;var K=typeof window!="undefined"&&typeof window.document!="undefined"&&typeof window.document.createElement!="undefined",F=K;function Q(){let t=()=>{},e=()=>{};return{promise:new Promise((r,a)=>{t=r,e=a}),resolve:t,reject:e}}function M(t,e){let n=!0,r,a=Q(),s=(o=10,i=0)=>{let u=l=>{!n||typeof e.count=="number"&&e.count<=i?a.reject(l):r=window.setTimeout(()=>{s(Math.max(10,Math.min(e.interval,o*2)),i+1)},o)};try{t().then(a.resolve,u)}catch(l){u(l)}};return s(),{resolvable:a,cancel:()=>{r&&clearTimeout(r),n=!1}}}var A=0;function X(){let t=A;return A+=1,t}var O=new Map,{assign:N}=Object;function U(t,e,n){let r={shouldRevalidate:!0,initialData:t.initialData,hydrate:!1},a=N({},r,n),s=t.key(...e),o=Date.now(),i=v(s);if(!i&&a.initialData&&(i={result:{data:a.initialData,status:"success"},timestamp:o,isValidating:!1},a.hydrate&&f(s,i)),i){if(!a.shouldRevalidate||i.timestamp+t.freshAge>o)return i.result;if(i.result.status==="pending"){let d=O.get(s);d&&d.cancel()}}let u=M(()=>t.get(...e),{count:t.maxRetryCount,interval:t.maxRetryInterval});O.set(s,u);let l=u.resolvable.promise,S={data:l,status:"pending"};return l.then(d=>{let c=v(s);(()=>c==null?!0:c.timestamp>o?!1:c.result.status==="success"?!t.compare(c.result.data,d):!0)()&&f(s,{result:{data:d,status:"success"},timestamp:c&&c.timestamp?c.timestamp:Date.now(),isValidating:!1})},d=>{let c=v(s);(()=>c==null?!0:!(c.timestamp>o))()&&f(s,{result:{data:d,status:"failure"},timestamp:c&&c.timestamp?c.timestamp:Date.now(),isValidating:!1})}),i&&i.timestamp+t.freshAge+t.staleAge>o?(i.timestamp=o,i.isValidating=!0,i.result):(f(s,{result:S,timestamp:o,isValidating:!0}),S)}function Y(t,e,n,r){if(y(e)>0)return;let a=[],s=i=>{a.push(i())},o=()=>{m(e,!0)};s(()=>W(e,u=>{U(n,r,{shouldRevalidate:u})})),F&&(n.refreshInterval!=null&&(n.refreshWhenBlurred&&s(()=>{let i,u=()=>{window.clearInterval(i),i=window.setInterval(o,n.refreshInterval)},l=()=>{window.clearInterval(i),i=void 0};return window.addEventListener("blur",u,!1),window.addEventListener("focus",l,!1),()=>{window.removeEventListener("blur",u,!1),window.removeEventListener("focus",l,!1),window.clearInterval(i)}}),n.refreshWhenOffline&&s(()=>{let i,u=()=>{window.clearInterval(i),i=window.setInterval(o,n.refreshInterval)},l=()=>{window.clearInterval(i),i=void 0};return window.addEventListener("offline",u,!1),window.addEventListener("online",l,!1),()=>{window.removeEventListener("offline",u,!1),window.removeEventListener("online",l,!1),window.clearInterval(i)}}),n.refreshWhenHidden&&s(()=>{let i,u=()=>{window.clearInterval(i),document.visibilityState==="visible"?i=void 0:i=window.setInterval(o,n.refreshInterval)};return document.addEventListener("visibilitychange",u,!1),()=>{document.removeEventListener("visibilitychange",u,!1),window.clearInterval(i)}}),n.refreshWhenHidden||n.refreshWhenBlurred||n.refreshWhenOffline||s(()=>{let i=window.setInterval(o,n.refreshInterval);return()=>{window.clearInterval(i)}})),n.revalidateOnFocus&&s(()=>(window.addEventListener("focus",o,!1),()=>{window.removeEventListener("focus",o,!1)})),n.revalidateOnNetwork&&s(()=>(window.addEventListener("online",o,!1),()=>{window.removeEventListener("online",o,!1)})),n.revalidateOnVisibility&&s(()=>{let i=()=>{document.visibilityState==="visible"&&o()};return window.addEventListener("visibilitychange",i,!1),()=>{window.removeEventListener("visibilitychange",i,!1)}})),t.set(e,a)}function Z(t,e){if(y(e)===0){let n=t.get(e);if(n){for(let r=0,a=n.length;r<a;r+=1)n[r]();t.delete(e)}}}function C(t){let e=N({},D,t),n=new Map;return{id:`SWRStore-${X()}`,trigger:(r,a=!0)=>{let s=e.key(...r);h(s,a)},mutate:(r,a,s=!0,o=e.compare)=>{let i=e.key(...r);w(i,a,s,o)},get:(r,a)=>U(e,r,a),subscribe:(r,a)=>{let s=e.key(...r);Y(n,s,e,r);let o=g(s,a);return()=>{o(),Z(n,s)}}}}