remotecacher
Version:
RemoteCacher makes it simple to store remote data in your browser's native localStorage
1 lines • 4.55 kB
JavaScript
!function webpackUniversalModuleDefinition(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.RemoteCacher=r():e.RemoteCacher=r()}(window,(function(){return function(e){var r={};function __webpack_require__(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,__webpack_require__),o.l=!0,o.exports}return __webpack_require__.m=e,__webpack_require__.c=r,__webpack_require__.d=function(e,r,t){__webpack_require__.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,r){if(1&r&&(e=__webpack_require__(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(__webpack_require__.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)__webpack_require__.d(t,o,function(r){return e[r]}.bind(null,o));return t},__webpack_require__.n=function(e){var r=e&&e.__esModule?function getDefault(){return e.default}:function getModuleExports(){return e};return __webpack_require__.d(r,"a",r),r},__webpack_require__.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s="ISKu")}({ISKu:function(e,r,t){"use strict";t.r(r);const o='Missing "cacheKey" parameter while calling cache()',n='Missing "source" parameter while calling cache(). This parameter is required when fetching new data',a="Error occurred while attempting to get cached data",c="Error while attempting to use window",i="Could not find localStorage",u="Fetch is not available in window",l="Attempting to set invalid or no/zero data",w="Data could not be stored",_="Unable to return cached data",f="No matching key found in localStorage";function isLocalStorageAvailable(){try{return!!window.localStorage}catch(e){throw new Error(c,e)}}function getCache(e,r){if(!isLocalStorageAvailable())throw new Error(a);return window.localStorage.getItem(e)&&function isCachedDataFresh(e,r){if(!isLocalStorageAvailable())throw new Error(c);if(!window.localStorage.getItem(e))return!1;try{const t=JSON.parse(window.localStorage.getItem(e)).timestamp+1e3*r;return Date.now()<=t}catch(e){throw new Error(_,e)}}(e,r)&&window.localStorage.getItem(e)?JSON.parse(window.localStorage.getItem(e)):null}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){_defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function _defineProperty(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}async function fetchData(e,r,t,o){if(!window||!window.fetch)throw new Error(u);return await fetch(e,_objectSpread({},r,{body:null!==t?JSON.stringify(t):t})).then(e=>e.json()).then(e=>(function setCache(e,r){if(!e||!r)throw new Error(l);if(!isLocalStorageAvailable())throw new Error(a);try{return"object"==typeof e?(window.localStorage.setItem(r,JSON.stringify(e)),JSON.parse(window.localStorage.getItem(r))):(window.localStorage.setItem(r,e),JSON.parse(window.localStorage.getItem(r)))}catch(e){throw new Error(w,e)}})(_objectSpread({},e,{timestamp:Date.now()}),o)).catch(e=>{throw new Error("Error occurred while fetching",e)})}async function cache(e){let{cacheKey:r,source:t,body:a=null,headers:c={method:"GET"},cacheTtl:i=3600}=e;if(!r)throw new Error(o);let u=getCache(r,i);if(u)return u;if(t)return await fetchData(t,c,a,r);throw new Error(n)}function evict(){!function evictCache(e){if(!window.localStorage)throw new Error(i);if(e&&"string"==typeof e)try{window.localStorage.removeItem(e)}catch(e){throw new Error(f,e)}else window.localStorage.clear()}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)}t.d(r,"cache",(function(){return cache})),t.d(r,"evict",(function(){return evict}))}})}));