axios-cache-interceptor
Version:
Cache interceptor for axios
12 lines (11 loc) • 22.3 kB
JavaScript
/*!
* Axios Cache Interceptor 1.12.0
* (c) 2021-present Arthur Fiorette & Contributors
* Released under the MIT License.
*/
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.AxiosCacheInterceptor={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Symbol(`cache-parser`);function n(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function r(e){return(typeof e==`string`||typeof e==`number`)&&(e=Number(e))>=0&&e<1/0}function i(e){return!0===e||typeof e==`number`||typeof e==`string`&&e!==`false`}var a=Number;function o(e){var o=Object.defineProperty({},t,{enumerable:!1,value:1});if(!e||typeof e!=`string`)return o;var s=function(e){for(var t,r={},i=function(e){var t=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,t){if(e){if(typeof e==`string`)return n(e,t);var r={}.toString.call(e).slice(8,-1);return r===`Object`&&e.constructor&&(r=e.constructor.name),r===`Map`||r===`Set`?Array.from(e):r===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}(e))){t&&(e=t);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}(e.toLowerCase().replace(/\s+/g,``).split(`,`));!(t=i()).done;){var a,o=t.value.split(`=`,2);r[o[0]]=(a=o[1])==null||a}return r}(e),c=s[`max-age`],l=s[`max-stale`],u=s[`min-fresh`],d=s[`s-maxage`],f=s[`stale-if-error`],p=s[`stale-while-revalidate`];return i(s.immutable)&&(o.immutable=!0),r(c)&&(o.maxAge=a(c)),r(l)&&(o.maxStale=a(l)),r(u)&&(o.minFresh=a(u)),i(s[`must-revalidate`])&&(o.mustRevalidate=!0),i(s[`must-understand`])&&(o.mustUnderstand=!0),i(s[`no-cache`])&&(o.noCache=!0),i(s[`no-store`])&&(o.noStore=!0),i(s[`no-transform`])&&(o.noTransform=!0),i(s[`only-if-cached`])&&(o.onlyIfCached=!0),i(s.private)&&(o.private=!0),i(s[`proxy-revalidate`])&&(o.proxyRevalidate=!0),i(s.public)&&(o.public=!0),r(d)&&(o.sMaxAge=a(d)),r(f)&&(o.staleIfError=a(f)),r(p)&&(o.staleWhileRevalidate=a(p)),o}let s={IfModifiedSince:`if-modified-since`,LastModified:`last-modified`,IfNoneMatch:`if-none-match`,CacheControl:`cache-control`,Pragma:`pragma`,ETag:`etag`,Expires:`expires`,Age:`age`,XAxiosCacheEtag:`x-axios-cache-etag`,XAxiosCacheLastModified:`x-axios-cache-last-modified`,XAxiosCacheStaleIfError:`x-axios-cache-stale-if-error`,Vary:`vary`},c=(e,t)=>{if(!e)return`not enough headers`;let n=e[s.CacheControl];if(n){let r=o(String(n));if(r.noCache||r.noStore||t===`server`&&r.private)return`dont cache`;if(r.immutable)return{cache:1e3*60*60*24*365};if(r.maxAge!==void 0){let t=e[s.Age];return{cache:t?(r.maxAge-Number(t))*1e3:r.maxAge*1e3,stale:r.maxStale===void 0?r.staleWhileRevalidate===void 0?void 0:r.staleWhileRevalidate*1e3:r.maxStale*1e3}}}let r=e[s.Expires];if(r){let e=Date.parse(String(r))-Date.now();return e>=0?{cache:e}:`dont cache`}return`not enough headers`};var l=Symbol();function u(){var e,t,n=new Promise(function(n,r){e=n,t=r});return n.resolve=e,n.reject=t,n[l]=1,n}function d(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function f(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return d(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function p(e,t,n){if(e===`*`||e===null)return!1;for(var r,i=Object.keys(t),a=Object.keys(n),o=f(e);!(r=o()).done;){for(var s,c=r.value,l=void 0,u=void 0,d=f(i);!(s=d()).done;){var p=s.value;if(p.toLowerCase()===c){var m;l=(m=t[p])==null||(m=m.toString())==null?void 0:m.trim();break}}for(var h,g=f(a);!(h=g()).done;){var _=h.value;if(_.toLowerCase()===c){var v;u=(v=n[_])==null||(v=v.toString())==null?void 0:v.trim();break}}if(l!=u)return!1}return!0}var m=/^[a-z0-9-]+$/i;function h(e,t){if(t===void 0&&(t=16),typeof e!=`string`)return null;if(e.includes(`*`))return`*`;for(var n=new Set,r=0;r<e.length;r++){var i=e[r];if(i!==` `&&i!==` `&&i!==`,`){for(var a=r;r<e.length&&e[r]!==`,`;)r++;var o=e.slice(a,r).trim().toLowerCase();if(o.length!==0&&m.test(o)&&(n.add(o),n.size>=t))break}}return n.size===0?null:Array.from(n)}function g(e,t){let n={};for(let i of t){var r;n[i]=(r=e.get(i))==null?void 0:r.toString()}return n}async function _(e,t){if(typeof t==`function`)return t(e);let{statusCheck:n,responseMatch:r,containsHeaders:i}=t;if(n&&!await n(e.status)||r&&!await r(e))return!1;if(i)for(let[t,n]of Object.entries(i)){var a;if(!await n((a=e.headers[t.toLowerCase()])==null?e.headers[t]:a))return!1}return!0}function v(e,t){return e instanceof RegExp?(e.lastIndex=0,e.test(t)):t.includes(e)}function y(e){return e?t=>e(t)||t===304:e=>e>=200&&e<300||e===304}function b(e=`get`,t=[]){return e=e.toLowerCase(),t.some(t=>t===e)}function x(e,t){var n;let{etag:r,modifiedSince:i}=t.cache,a=(n=e.data)==null||(n=n.meta)==null?void 0:n.revalidation;if(r){let n;if(a!=null&&a.etag)n=a.etag;else if(r===!0){var o;n=(o=e.data)==null?void 0:o.headers[s.ETag]}else n=r;n&&t.headers.set(s.IfNoneMatch,n)}if(i){let n;n=a!=null&&a.lastModified?a.lastModified===!0?new Date(e.createdAt).toUTCString():a.lastModified:i===!0?e.data.headers[s.LastModified]||new Date(e.createdAt).toUTCString():i.toUTCString(),t.headers.set(s.IfModifiedSince,n)}}function S(e,t){return e.status===304&&t?(e.cached=!0,e.data=t.data,e.status=t.status,e.statusText=t.statusText,e.headers={...t.headers,...e.headers},t):{data:e.data,status:e.status,statusText:e.statusText,headers:e.headers}}function C(e){let t=async n=>{var r;if(n.id=e.generateKey(n,{vary:n.cache&&Array.isArray(n.cache.vary)?g(n.headers,n.cache.vary):void 0}),n.cache===!1)return e.debug({id:n.id,msg:`Cache disabled: config.cache === false`}),n;if(n.cache={...e.defaults.cache,...n.cache},n.cache.enabled===!1)return e.debug({id:n.id,msg:`Cache disabled: config.cache.enabled === false`}),n;if(typeof n.cache.cachePredicate==`object`&&n.cache.cachePredicate.ignoreUrls&&n.url){for(let t of n.cache.cachePredicate.ignoreUrls)if(v(t,n.url))return e.debug({id:n.id,msg:`URL ignored: matches ignoreUrls pattern`,data:{url:n.url,pattern:t}}),n}if(typeof n.cache.cachePredicate==`object`&&n.cache.cachePredicate.allowUrls&&n.url){let t=!1;for(let r of n.cache.cachePredicate.allowUrls)if(v(r,n.url)){t=!0,e.debug({id:n.id,msg:`URL allowed: matches allowUrls pattern`,data:{url:n.url,pattern:r}});break}if(!t)return e.debug({id:n.id,msg:`URL rejected: not in allowUrls`,data:{url:n.url,allowUrls:n.cache.cachePredicate.allowUrls}}),n}if(n.cache.cacheTakeover&&(n.headers.set(s.CacheControl,`no-cache, no-store, must-revalidate, max-age=0`,!1),n.headers.set(s.Pragma,`no-cache`,!1),n.headers.set(s.Expires,`0`,!1)),!b(n.method,n.cache.methods))return e.debug({id:n.id,msg:`Method ${n.method} not cacheable (allowed: ${n.cache.methods})`}),n;let i=await e.storage.get(n.id,n),a=n.cache.override;if(n.cache.vary!==!1&&!((r=i.data)==null||(r=r.meta)==null)&&r.vary&&i.data.headers[s.Vary]){var o;let t=Array.isArray(n.cache.vary)?n.cache.vary:h(i.data.headers[s.Vary]);if(t&&t!==`*`&&!p(t,(o=i.data.meta)==null?void 0:o.vary,n.headers)){let r=g(n.headers,t),a=e.generateKey({...n,id:void 0},{vary:r});n.id!==a&&(e.debug({id:n.id,msg:`Vary mismatch, switching to vary-aware key`,data:{cachedHeaders:i.data.meta.vary,currentHeaders:r,vary:t,newKey:a}}),n.id=a,i=await e.storage.get(a,n))}}ignoreAndRequest:if(i.state===`empty`||i.state===`stale`||i.state===`must-revalidate`||a){if(e.waiting.has(n.id)&&!a&&(i=await e.storage.get(n.id,n),i.state!==`empty`&&i.state!==`must-revalidate`)){e.debug({id:n.id,msg:`Concurrent request found, reusing result`});break ignoreAndRequest}let t=u();if(e.waiting.set(n.id,t),t.catch(()=>void 0),await e.storage.set(n.id,{state:`loading`,previous:a?i.data?`stale`:`empty`:i.state,data:i.data,createdAt:a&&!i.createdAt?Date.now():i.createdAt},n),(i.state===`stale`||i.state===`must-revalidate`)&&!a&&(x(i,{...n,cache:n.cache}),e.debug({id:n.id,msg:`Stale revalidation: added conditional headers (If-None-Match/If-Modified-Since)`})),n.validateStatus=y(n.validateStatus),e.debug({id:n.id,msg:`Making network request`,data:{overrideCache:a,cacheState:i.state}}),i.state===`stale`||i.data&&i.state!==`must-revalidate`){var c,l;await((c=(l=n.cache).hydrate)==null?void 0:c.call(l,i))}return n}let d;if(i.state===`loading`){let r=e.waiting.get(n.id);if(!r){if(i.data){var f,m;await((f=(m=n.cache).hydrate)==null?void 0:f.call(m,i))}return n}e.debug({id:n.id,msg:`Concurrent request detected, waiting...`});try{var _;await r;let i=await e.storage.get(n.id,n);if(!i.data)return e.debug({id:n.id,msg:`Concurrent request completed without data, retrying`}),t(n);if(n.cache.vary!==!1&&(_=i.data.meta)!=null&&_.vary&&i.data.headers[s.Vary]){let r=Array.isArray(n.cache.vary)?n.cache.vary:h(i.data.headers[s.Vary]);if(r&&r!==`*`&&!p(r,i.data.meta.vary,n.headers))return e.debug({id:n.id,msg:`Vary mismatch after concurrent request, making own request`,data:{cachedVary:i.data.meta.vary,currentVary:g(n.headers,r)}}),t(n)}d=i.data}catch(t){throw e.debug({id:n.id,msg:`Concurrent request failed, propagating error`,data:t}),t}}else d=i.data;return n.transformResponse=void 0,n.adapter=function(){return Promise.resolve({config:n,data:d.data,headers:d.headers,status:d.status,statusText:d.statusText,cached:!0,stale:i.previous===`stale`,id:n.id})},e.debug({id:n.id,msg:`Using cached response`}),n};return{onFulfilled:t}}async function w(e,t,n){if(typeof n==`function`)return n(t);for(let[r,i]of Object.entries(n)){if(i===`delete`){await e.remove(r,t.config);continue}let n=await e.get(r,t.config);if(n.state===`loading`)continue;let a=await i(n,t);if(a===`delete`){await e.remove(r,t.config);continue}a!==`ignore`&&await e.set(r,a,t.config)}}function T(e){let t=(t,n,r)=>{let i=e.waiting.get(t);i&&(i[n](r),e.waiting.delete(t),e.debug({id:t,msg:`Found waiting deferred(s) and ${n} them`}))};return{onFulfilled:async n=>{if(!(n!=null&&n.config))throw e.debug({msg:`Unknown response received (not an Axios response)`,data:n}),n;n.id=n.config.id,n.cached!=null||(n.cached=!1);let r=n.config,i=r.cache;if(n.cached)return e.debug({id:n.id,msg:`Returned cached response`}),n;if(!i)return e.debug({id:n.id,msg:`Response received without cache config`,data:n}),n.cached=!1,n;if(i.update&&await w(e.storage,n,i.update),!b(r.method,i.methods))return e.debug({id:n.id,msg:`Method ${r.method} not cacheable (allowed: ${i.methods})`}),n;let a=await e.storage.get(n.id,r);if(a.state!==`loading`)return e.debug({id:n.id,msg:`Response received but storage not in loading state`,data:{cacheState:a.state}}),e.waiting.delete(n.id),n;if(!a.data&&!await _(n,i.cachePredicate))return t(n.id,`resolve`),e.debug({id:n.id,msg:`Cache predicate rejected this response`}),n;for(let e of Object.keys(n.headers))e.startsWith(`x-axios-cache`)&&delete n.headers[e];let o=i.ttl||-1,c;if(i.interpretHeader){let r=e.headerInterpreter(n.headers,e.location);if(r===`dont cache`)return t(n.id,`resolve`),e.debug({id:n.id,msg:`Cache-Control header indicates: do not cache`}),n;r!==`not enough headers`&&(typeof r==`number`?o=r:(o=r.cache,c=r.stale))}typeof o==`function`&&(o=await o(n));let l=S(n,a.data);if(i.etag||i.modifiedSince){if(l.meta!=null||(l.meta={}),l.meta.revalidation={},i.etag){let e=i.etag===!0?n.headers[s.ETag]:i.etag;e&&(l.meta.revalidation.etag=e)}i.modifiedSince&&(l.meta.revalidation.lastModified=i.modifiedSince===!0?n.headers[s.LastModified]||!0:i.modifiedSince.toUTCString())}if(i.vary!==!1&&n.headers[s.Vary]){let a=Array.isArray(i.vary)?i.vary:h(n.headers[s.Vary]);if(Array.isArray(a))l.meta!=null||(l.meta={}),l.meta.vary=g(r.headers,a),e.debug({id:n.id,msg:`Storing response with Vary metadata`,data:{vary:a,extracted:l.meta.vary}});else if(a===`*`)return e.debug({id:n.id,msg:`Vary: * detected, storing as stale`}),await e.storage.set(n.id,{state:`stale`,createdAt:Date.now(),data:l,ttl:o},r),t(n.id,`resolve`),n}e.debug({id:n.id,msg:`Caching response`,data:{ttl:o,staleTtl:c,interpretHeader:i.interpretHeader}});let u={state:`cached`,ttl:o,staleTtl:c,createdAt:Date.now(),data:l};return await e.storage.set(n.id,u,r),t(n.id,`resolve`),e.debug({id:n.id,msg:`Response cached successfully`,data:{state:u.state,ttl:u.ttl}}),n},onRejected:async n=>{if(!n.isAxiosError||!n.config)throw e.debug({msg:`A non-AxiosError was thrown and the cache interceptor could not identify the failing request. The deferred and loading cache entry cannot be cleaned up. Custom adapters must always throw an AxiosError. See https://axios-cache-interceptor.js.org/guide/interceptors#custom-adapters`,data:n}),n;let r=n.config,i=r.id,a=r.cache,c=n.response;if(!a||!i)throw e.debug({msg:`Request failed without cache config`,data:{error:n}}),n;if(!b(r.method,a.methods))throw e.debug({id:i,msg:`Method ${r.method} not cacheable (allowed: ${a.methods})`}),await e.storage.remove(i,r),t(i,`reject`,n),n;let l=await e.storage.get(i,r);if(l.state!==`loading`||l.previous!==`stale`)throw e.debug({id:i,msg:`Request error with unexpected cache state`,data:{cacheState:l.state,previous:l.state===`loading`?l.previous:void 0,errorCode:n.code}}),(n.code!==`ERR_CANCELED`||n.code===`ERR_CANCELED`&&l.state!==`cached`)&&await e.storage.remove(i,r),n.code===`ERR_CANCELED`?t(i,`resolve`):t(i,`reject`,n),n;if(a.staleIfError){let t=String(c==null?void 0:c.headers[s.CacheControl]),u=t&&o(t).staleIfError,d=typeof a.staleIfError==`function`?await a.staleIfError(c,l,n):a.staleIfError===!0&&u?u*1e3:a.staleIfError;if(e.debug({id:i,msg:`staleIfError config found for failed request`,data:{staleIfError:d,createdAt:l.createdAt}}),d===!0||typeof d==`number`&&l.createdAt+d>Date.now()){await e.storage.set(i,{state:`stale`,createdAt:Date.now(),data:l.data},r);let t=e.waiting.get(i);return t&&(t.resolve(),e.waiting.delete(i),e.debug({id:i,msg:`Found waiting deferred(s) and resolved them`})),e.debug({id:i,msg:`staleIfError: returning stale cache for failed request`}),{cached:!0,stale:!0,config:r,id:i,data:l.data.data,headers:l.data.headers,status:l.data.status,statusText:l.data.statusText}}}throw e.debug({id:i,msg:`Unhandled error, cleaning up`,data:{errorCode:n.code,errorMessage:n.message}}),await e.storage.remove(i,r),t(i,`reject`,n),n}}}let E=e=>!!e&&!!e[`is-storage`];function D(e){var t;if((t=e.meta)!=null&&t.revalidation)return;let n=e.headers[s.XAxiosCacheEtag],r=e.headers[s.XAxiosCacheLastModified];(n||r)&&(e.meta!=null||(e.meta={}),e.meta.revalidation={},n&&(e.meta.revalidation.etag=n),r&&(e.meta.revalidation.lastModified=r===`use-cache-timestamp`?!0:r),delete e.headers[s.XAxiosCacheEtag],delete e.headers[s.XAxiosCacheLastModified],delete e.headers[s.XAxiosCacheStaleIfError])}function O(e){var t;D(e.data);let n=e.data.headers,r=(t=e.data.meta)==null?void 0:t.revalidation;return s.ETag in n||s.LastModified in n||!!(r!=null&&r.etag||r!=null&&r.lastModified)}function k(e){return String(e.data.headers[s.CacheControl]).includes(`must-revalidate`)}function A(e){return O(e)?!0:e.state===`cached`&&e.staleTtl!==void 0&&Math.abs(Date.now()-(e.createdAt+e.ttl))<=e.staleTtl}function j(e){return e.ttl!==void 0&&e.createdAt+e.ttl<=Date.now()}let M={empty:0,"must-revalidate":1,stale:2,cached:3,loading:4};function N([,e],[,t]){let n=M[e.state]-M[t.state];return n===0?(e.createdAt||0)-(t.createdAt||0):n}function P(e,t){switch(e.state){case`loading`:return!1;case`empty`:case`must-revalidate`:return!0;case`cached`:return j(e)&&!A(e);case`stale`:return t!==void 0&&e.ttl!==void 0?Date.now()>e.createdAt+e.ttl+t:!1}}function F({set:e,find:t,remove:n,clear:r}){return{"is-storage":1,set:e,remove:n,clear:r,get:async(r,i)=>{let a=await t(r,i);if(!a)return{state:`empty`};if(a.state===`empty`||a.state===`loading`||a.state===`must-revalidate`)return a;if((a.state===`cached`||a.state===`stale`)&&D(a.data),a.state===`cached`){if(!j(a))return a;if(!A(a))return await n(r,i),{state:`empty`};if(a={state:`stale`,createdAt:a.createdAt,data:a.data,ttl:a.staleTtl===void 0?void 0:a.staleTtl+a.ttl},await e(r,a,i),k(a))return{...a,state:`must-revalidate`}}return!j(a)||O(a)?a:(await n(r,i),{state:`empty`})}}}let I=typeof structuredClone==`function`?structuredClone:e=>JSON.parse(JSON.stringify(e));function L(e=!1,t=300*1e3,n=1024,r=3600*1e3){function i(){return Array.from(a.data.entries()).sort(N)}let a=F({set:(t,r)=>{if(n&&a.data.size>=n&&(a.cleanup(),a.data.size>=n)){for(let[e]of i())if(a.data.delete(e),a.data.size<n)break}a.data.set(t,e===`double`?I(r):r)},remove:e=>{a.data.delete(e)},find:t=>{let n=a.data.get(t);return e&&n!==void 0?I(n):n},clear:()=>{a.data.clear()}});return a.data=new Map,a.cleanup=()=>{for(let[e,t]of i())P(t,r)&&a.data.delete(e)},t&&(a.cleaner=setInterval(a.cleanup,t),typeof a.cleaner==`object`&&`unref`in a.cleaner&&a.cleaner.unref()),a}function R(e,t){return e>t?1:-1}function z(e,t){return R(String(e[0]),String(t[0]))}function B(e,t){return 33*e^t}function V(e,t){var n=5381;if(typeof e==`object`&&e){var r=typeof e.entries==`function`,i=Object.keys(e).length>0;if(e.toString===Object.prototype.toString||e.toString===Array.prototype.toString||r&&!i){t||(t=new WeakSet),t.add(e);var a=r&&!i?Array.from(e.entries()):Object.keys(e).sort(R).map(function(t){return[t,e[t]]});r&&!i&&a.sort(z);for(var o=0;o<a.length;o++){var s=a[o],c=s[1];if(n=B(n,V(s[0],t)),typeof c==`object`&&c&&(c.toString===Object.prototype.toString||c.toString===Array.prototype.toString)){if(t.has(c))continue;t.add(c)}n=B(n,V(c,t))}return B(n,V(e.constructor,t))}}for(var l,u=typeof e,d=0;d<u.length;d++)n=B(n,u.charCodeAt(d));if(e instanceof Date)return B(n,e.getTime());if(u===`number`)return B(n,function(e){if(Number.isNaN(e))return 2146959360;if(e===1/0)return 2146435072;if(e===-1/0)return 4293918720;if(Math.abs(e)>2**53-1){for(var t=String(e),n=0,r=0;r<t.length;r++)n=B(n,t.charCodeAt(r));return n}return e}(e));if(u===`boolean`)return B(n,e?1:0);try{l=String(e)}catch{l=Object.prototype.toString.call(e)}for(var f=0;f<l.length;f++)n=B(n,l.charCodeAt(f));return n}let H=/^\/|\/$/g;function U(e){return(t,n)=>{if(t.id)return t.id;let r=e(t,n);return typeof r==`string`||typeof r==`number`?`${r}`:`${V(r)}`}}let W=U(({baseURL:e,url:t,method:n,params:r,data:i},a)=>(e=e===void 0?``:e.replace(H,``),t=t===void 0?``:t.replace(H,``),n=n===void 0?`get`:n.toLowerCase(),{url:e+(e&&t?`/`:``)+t,params:r,method:n,data:i,...a}));function G(e,t={}){var n,r,i,a,o,s,l,u,d,f,p;let m=e;if(m.defaults.cache)throw Error(`setupCache() should be called only once`);if(m.location=typeof window>`u`?`server`:`client`,m.storage=t.storage||L(),!E(m.storage))throw Error(`Use buildStorage() function`);return m.waiting=t.waiting||new Map,m.generateKey=t.generateKey||W,m.headerInterpreter=t.headerInterpreter||c,m.requestInterceptor=t.requestInterceptor||C(m),m.responseInterceptor=t.responseInterceptor||T(m),m.debug=t.debug||function(){},m.defaults.cache={enabled:(n=t.enabled)==null?!0:n,update:t.update||{},ttl:(r=t.ttl)==null?1e3*60*5:r,methods:t.methods||[`get`,`head`],cachePredicate:t.cachePredicate||{statusCheck:e=>[200,203,300,301,302,404,405,410,414,501].includes(e)},etag:(i=t.etag)==null?!0:i,modifiedSince:(a=t.modifiedSince)==null?t.etag===!1:a,interpretHeader:(o=t.interpretHeader)==null?!0:o,cacheTakeover:(s=t.cacheTakeover)==null?!0:s,staleIfError:(l=t.staleIfError)==null?!0:l,override:(u=t.override)==null?!1:u,hydrate:(d=t.hydrate)==null?void 0:d,vary:(f=t.vary)==null?!0:f},((p=t.register)==null||p)&&(m.interceptors.request.use(m.requestInterceptor.onFulfilled,m.requestInterceptor.onRejected),m.interceptors.response.use(m.responseInterceptor.onFulfilled,m.responseInterceptor.onRejected)),m}var K=class e{constructor(e,t,n){this.ok=!!e,this.ok?this.value=n:this.error=t}*[Symbol.iterator](){yield this.ok,yield this.error,yield this.value}static ok(t){return new e(!0,void 0,t)}static error(t){return new e(!1,t)}static try(t,...n){try{return typeof t==`function`&&(t=t.apply(void 0,n)),t instanceof Promise?t.then(e.ok,e.error):e.ok(t)}catch(t){return e.error(t)}}};K.error,K.ok,K.try;function q(e,t=`axios-cache-`,n=3600*1e3){function r(n,r){e.setItem(t+n,JSON.stringify(r))}return F({clear:()=>{for(let n in e)n.startsWith(t)&&e.removeItem(n)},find:n=>{let r=e.getItem(t+n);return r?JSON.parse(r):void 0},remove:n=>{e.removeItem(t+n)},set:(i,a)=>{let o=K.try(r,i,a);if(o.ok)return;if(!J(o.error))throw o.error;let s=Object.entries(e).filter(([e])=>e.startsWith(t)).map(([e,t])=>[e,JSON.parse(t)]);for(let[t,r]of s)P(r,n)&&e.removeItem(t);let c=K.try(r,i,a);if(c.ok)return;if(!J(c.error))throw c.error;let l=s.sort((e,t)=>(e[1].createdAt||0)-(t[1].createdAt||0));for(let t of l){e.removeItem(t[0]);let n=K.try(r,i,a);if(n.ok)return;if(!J(n.error))throw n.error}}})}function J(e){var t;return(e instanceof DOMException||typeof e==`object`&&!!e&&`name`in e&&((t=e.constructor)==null?void 0:t.name)===`DOMException`)&&`name`in e&&(e.name===`QuotaExceededError`||e.name===`NS_ERROR_DOM_QUOTA_REACHED`||e.name===`QUOTA_EXCEEDED_ERR`)}console.error(`You are using a development build. Make sure to use the correct build in production
https://axios-cache-interceptor.js.org/guide/getting-started
`),e.Header=s,e.buildKeyGenerator=U,e.buildMemoryStorage=L,e.buildStorage=F,e.buildWebStorage=q,e.canRemoveStorageEntry=P,e.canStale=A,e.createCacheResponse=S,e.createValidateStatus=y,e.defaultHeaderInterpreter=c,e.defaultKeyGenerator=W,e.defaultRequestInterceptor=C,e.defaultResponseInterceptor=T,e.isExpired=j,e.isMethodIn=b,e.isStorage=E,e.mustRevalidate=k,e.regexOrStringMatch=v,e.setupCache=G,e.storageEntriesSorter=N,e.testCachePredicate=_,e.updateCache=w,e.updateStaleRequest=x});
//# sourceMappingURL=index.bundle.js.map