xior
Version:
A lite http request lib based on fetch with plugins support and similar API to axios.
2 lines (1 loc) • 1.71 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});var _chunkVWMLZECEjs = require('../chunk-VWMLZECE.js');var _chunkPXDN3KFOjs = require('../chunk-PXDN3KFO.js');var _tinylru = require('tiny-lru');function F(C={}){let{enableCache:g,defaultCache:E=_tinylru.lru.call(void 0, C.cacheItems||100),useCacheFirst:q,onCacheRequest:x}=C;return function(t){return a=>_chunkPXDN3KFOjs.d.call(void 0, this,null,function*(){let{enableCache:h=g,defaultCache:I=E,useCacheFirst:m=q,onCacheRequest:f=x,paramsSerializer:O}=a,w=a.method===_chunkVWMLZECEjs.n||a.isGet,l=typeof h,u=l===_chunkVWMLZECEjs.b,c=_chunkVWMLZECEjs.i;if(u&&(c=h(a)),c===_chunkVWMLZECEjs.i&&(c=u||l===`${_chunkVWMLZECEjs.i}`?w:!!h),!c)return t(a);let o=I,r=_chunkVWMLZECEjs.v.call(void 0, a.url&&_chunkVWMLZECEjs.z.call(void 0, a.url)?a.url:_chunkVWMLZECEjs.A.call(void 0, a.baseURL,a.url),{a:a.data,b:a.params},O);try{if(m){let e=o.get(r);if(o.set(r,{loading:!0,res:e==null?void 0:e.res,cacheTime:e==null?void 0:e.cacheTime}),e!=null&&e.res)return e!=null&&e.loading||(f==null||f(a),_chunkPXDN3KFOjs.d.call(void 0, this,null,function*(){try{let b=yield t(a);o.set(r,{loading:!1,res:b,cacheTime:Date.now()})}catch(b){let i=o.get(r);m&&o.set(r,{loading:!1,res:i==null?void 0:i.res,cacheTime:i==null?void 0:i.cacheTime})}})),e.res.fromCache=!0,e.res.cacheTime=e==null?void 0:e.cacheTime,e==null?void 0:e.res}let n=yield t(a);return o.set(r,{loading:!1,res:n,cacheTime:Date.now()}),n}catch(n){let e=o.get(r);if(m&&o.set(r,{loading:!1,res:e==null?void 0:e.res,cacheTime:e==null?void 0:e.cacheTime}),e!=null&&e.res)return e.res.fromCache=!0,e.res.error=n,e.res.cacheTime=e==null?void 0:e.cacheTime,e.res;throw n}})}}exports.default = F;