UNPKG

appcache-polyfill-sw

Version:

A service worker implementation of the behavior defined in a page's App Cache manifest.

3 lines (2 loc) 6.83 kB
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e=e||self).appcachePolyfill={})}(this,function(e){function r(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function t(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,void 0);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,void 0):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}var n,o=function(e,r,t){try{return Promise.resolve(function(r,t){try{var n=Promise.resolve(fetch(e)).then(function(e){if(!e.ok||new URL(e.url).origin!==location.origin)throw Error("Fallback request failure.");return e})}catch(e){return t()}return n&&n.then?n.then(void 0,t):n}(0,function(){return Promise.resolve(caches.open(t)).then(function(e){return e.match(r)})}))}catch(e){return Promise.reject(e)}};function i(e,r){return e.filter(function(e){return r.startsWith(e)}).reduce(function(e,r){return e.length>=r.length?e:r},"")}function u(e){var r=new URL(e);return r.hash="",r.href}function c(e){return new Promise(function(r,t){e.oncomplete=e.onsuccess=function(){return r(e.result)},e.onabort=e.onerror=function(){return t(e.error)}})}function s(){return n||(n=function(e,r){var t=indexedDB.open("keyval-store");t.onupgradeneeded=function(){return t.result.createObjectStore("keyval")};var n=c(t);return function(e,r){return n.then(function(t){return r(t.transaction("keyval",e).objectStore("keyval"))})}}()),n}function f(e,r,t){return void 0===t&&(t=s()),t("readwrite",function(t){return t.put(r,e),c(t.transaction)})}var a=function(e){try{return Promise.resolve(function(e,r){return void 0===r&&(r=s()),r("readonly",function(r){return c(r.get(e))})}(e)).then(function(e){return e||{}})}catch(e){return Promise.reject(e)}},l=function(e,r,t,n){try{var c,s=function(n){if(c)return n;var u=i(Object.keys(r.fallback),f);return u?o(e.request,r.fallback[u],t):r.network.indexOf(f)>=0||r.network.indexOf("*")>=0?fetch(e.request):Response.error()},f=u(e.request.url),a=function(){if(r.cache.indexOf(f)>=0||f===n)return Promise.resolve(caches.open(t)).then(function(e){return c=1,e.match(f)})}();return Promise.resolve(a&&a.then?a.then(s):s(a))}catch(e){return Promise.reject(e)}},h=function(e,r){try{return Promise.resolve(a("ManifestURLToHashes")).then(function(t){var n=t[e];if(n)return n.get(r)})}catch(e){return Promise.reject(e)}};e.handle=function(e){try{return Promise.resolve(function(e){try{if("true"===e.request.headers.get("X-Use-Fetch"))return Promise.resolve(fetch(e.request));var r=new URL(u(e.request.url));return"GET"!==e.request.method||r.protocol!==location.protocol?Promise.resolve(fetch(e.request)):Promise.resolve(function(e){try{var r,t=function(t){return r?t:"navigate"===e.request.mode?e.request.url:e.request.referrer},n=function(){if(e.clientId)return Promise.resolve(self.clients.get(e.clientId)).then(function(e){return r=1,e.url})}();return Promise.resolve(n&&n.then?n.then(t):t(n))}catch(e){return Promise.reject(e)}}(e)).then(function(r){var t=u(r);return Promise.resolve(a("PageURLToManifestURL")).then(function(r){var n=r[t];return n?function(e,r,t){try{var n,o=function(o){return n?o:Promise.resolve(function(e){try{return Promise.resolve(a("ManifestURLToHashes")).then(function(r){if(r){var t=r[e];if(t){var n=Array.from(t.keys());return n[n.length-1]}}})}catch(e){return Promise.reject(e)}}(r)).then(function(n){var o;function i(e){return o?e:Response.error()}var u=function(){if(n){var i=function(){return Promise.resolve(h(r,n)).then(function(r){if(r)return o=1,l(e,r,n,t)})},u=function(){if(e.clientId)return Promise.resolve(function(e,r){try{var t=function(){if(e)return Promise.resolve(a("ClientIdToHash")).then(function(t){return t[e]=r,Promise.resolve(f("ClientIdToHash",t)).then(function(){})})}();return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}}(e.clientId,n)).then(function(){})}();return u&&u.then?u.then(i):i()}}();return u&&u.then?u.then(i):i(u)})},i=function(){if(e.clientId)return Promise.resolve(a("ClientIdToHash")).then(function(o){var i=o[e.clientId];return function(){if(i)return Promise.resolve(h(r,i)).then(function(r){if(r)return n=1,l(e,r,i,t)})}()})}();return Promise.resolve(i&&i.then?i.then(o):o(i))}catch(e){return Promise.reject(e)}}(e,n,t):function(e){try{return Promise.resolve(a("ManifestURLToHashes")).then(function(r){for(var t,n="",u="",c=0,s=Object.values(r);c<s.length;c++){var f=Array.from(s[c].entries()),a=f[f.length-1],l=a[0],h=a[1],v=i(Object.keys(h.fallback),e.request.url);v&&v.length>=n.length&&(t=h,n=v,u=l)}return t&&n&&u?o(e.request,t.fallback[n],u):fetch(e.request)})}catch(e){return Promise.reject(e)}}(e)})})}catch(e){return Promise.reject(e)}}(e)).then(function(r){return"navigate"===e.request.mode&&e.waitUntil(function(){try{return Promise.resolve(self.clients.matchAll()).then(function(e){var r=e.map(function(e){return e.id});return Promise.resolve(function(e){try{var r=[];return Promise.resolve(a("ClientIdToHash")).then(function(t){for(var n=0,o=Object.entries(t);n<o.length;n++){var i=o[n],u=i[0],c=i[1];-1===e.indexOf(u)&&(delete t[u],r.push(c))}return Promise.resolve(f("ClientIdToHash",t)).then(function(){return r})})}catch(e){return Promise.reject(e)}}(r)).then(function(e){return Promise.resolve(function(){try{var e=new Set;return Promise.resolve(a("ManifestURLToHashes")).then(function(r){for(var n=0,o=Object.values(r);n<o.length;n++)for(var i,u=Array.from(o[n].keys()),c=t(u.slice(0,u.length-1));!(i=c()).done;)e.add(i.value);return e})}catch(e){return Promise.reject(e)}}()).then(function(r){var t=Array.from(r).filter(function(r){return e.includes(r)});return Promise.resolve(function(e){try{return Promise.resolve(a("ManifestURLToHashes")).then(function(r){for(var t=0,n=Object.values(r);t<n.length;t++)for(var o=n[t],i=0,u=Object.keys(o);i<u.length;i++){var c=u[i];e.includes(c)&&o.delete(c)}return Promise.resolve(f("ManifestURLToHashes",r)).then(function(){})})}catch(e){return Promise.reject(e)}}(t)).then(function(){return Promise.resolve(Promise.all(t.map(function(e){return caches.delete(e)}))).then(function(){})})})})})}catch(e){return Promise.reject(e)}}()),r})}catch(e){return Promise.reject(e)}}}); //# sourceMappingURL=index.umd.js.map