appcache-polyfill-sw
Version:
A service worker implementation of the behavior defined in a page's App Cache manifest.
3 lines (2 loc) • 6.64 kB
JavaScript
function e(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 r(r,t){var n;if("undefined"==typeof Symbol||null==r[Symbol.iterator]){if(Array.isArray(r)||(n=function(r,t){if(r){if("string"==typeof r)return e(r,void 0);var n=Object.prototype.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(r,void 0):void 0}}(r))||t&&r&&"number"==typeof r.length){n&&(r=n);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[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=r[Symbol.iterator]()).next.bind(n)}var t,n=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 o(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 i(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 c(){return t||(t=function(e,r){var t=indexedDB.open("keyval-store");t.onupgradeneeded=function(){return t.result.createObjectStore("keyval")};var n=i(t);return function(e,r){return n.then(function(t){return r(t.transaction("keyval",e).objectStore("keyval"))})}}()),t}function s(e,r,t){return void 0===t&&(t=c()),t("readwrite",function(t){return t.put(r,e),i(t.transaction)})}var a=function(e){try{return Promise.resolve(function(e,r){return void 0===r&&(r=c()),r("readonly",function(r){return i(r.get(e))})}(e)).then(function(e){return e||{}})}catch(e){return Promise.reject(e)}},f=function(e,r,t,i){try{var c,s=function(u){if(c)return u;var i=o(Object.keys(r.fallback),a);return i?n(e.request,r.fallback[i],t):r.network.indexOf(a)>=0||r.network.indexOf("*")>=0?fetch(e.request):Response.error()},a=u(e.request.url),f=function(){if(r.cache.indexOf(a)>=0||a===i)return Promise.resolve(caches.open(t)).then(function(e){return c=1,e.match(a)})}();return Promise.resolve(f&&f.then?f.then(s):s(f))}catch(e){return Promise.reject(e)}},l=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)}};exports.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 u=r[t];return u?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 u(e){return o?e:Response.error()}var i=function(){if(n){var u=function(){return Promise.resolve(l(r,n)).then(function(r){if(r)return o=1,f(e,r,n,t)})},i=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(s("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 i&&i.then?i.then(u):u()}}();return i&&i.then?i.then(u):u(i)})},u=function(){if(e.clientId)return Promise.resolve(a("ClientIdToHash")).then(function(o){var u=o[e.clientId];return function(){if(u)return Promise.resolve(l(r,u)).then(function(r){if(r)return n=1,f(e,r,u,t)})}()})}();return Promise.resolve(u&&u.then?u.then(o):o(u))}catch(e){return Promise.reject(e)}}(e,u,t):function(e){try{return Promise.resolve(a("ManifestURLToHashes")).then(function(r){for(var t,u="",i="",c=0,s=Object.values(r);c<s.length;c++){var a=Array.from(s[c].entries()),f=a[a.length-1],l=f[0],h=f[1],v=o(Object.keys(h.fallback),e.request.url);v&&v.length>=u.length&&(t=h,u=v,i=l)}return t&&u&&i?n(e.request,t.fallback[u],i):fetch(e.request)})}catch(e){return Promise.reject(e)}}(e)})})}catch(e){return Promise.reject(e)}}(e)).then(function(t){return"navigate"===e.request.mode&&e.waitUntil(function(){try{return Promise.resolve(self.clients.matchAll()).then(function(e){var t=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 u=o[n],i=u[0],c=u[1];-1===e.indexOf(i)&&(delete t[i],r.push(c))}return Promise.resolve(s("ClientIdToHash",t)).then(function(){return r})})}catch(e){return Promise.reject(e)}}(t)).then(function(e){return Promise.resolve(function(){try{var e=new Set;return Promise.resolve(a("ManifestURLToHashes")).then(function(t){for(var n=0,o=Object.values(t);n<o.length;n++)for(var u,i=Array.from(o[n].keys()),c=r(i.slice(0,i.length-1));!(u=c()).done;)e.add(u.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],u=0,i=Object.keys(o);u<i.length;u++){var c=i[u];e.includes(c)&&o.delete(c)}return Promise.resolve(s("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)}}()),t})}catch(e){return Promise.reject(e)}};
//# sourceMappingURL=index.js.map