-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserviceWorker.js
1 lines (1 loc) · 9.82 KB
/
serviceWorker.js
1
"use strict";(()=>{try{self["workbox:core:7.0.0"]&&_()}catch{}var I=(o,...e)=>{let t=o;return e.length>0&&(t+=` :: ${JSON.stringify(e)}`),t};var L=I;var c=class extends Error{constructor(e,t){let r=L(e,t);super(r),this.name=e,this.details=t}};try{self["workbox:routing:7.0.0"]&&_()}catch{}var x="GET";var m=o=>o&&typeof o=="object"?o:{handle:o};var p=class{constructor(e,t,r=x){this.handler=m(t),this.match=e,this.method=r}setCatchHandler(e){this.catchHandler=m(e)}};var y=class extends p{constructor(e,t,r){let n=({url:a})=>{let s=e.exec(a.href);if(s&&!(a.origin!==location.origin&&s.index!==0))return s.slice(1)};super(n,t,r)}};var C=o=>new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),"");var E=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",e=>{let{request:t}=e,r=this.handleRequest({request:t,event:e});r&&e.respondWith(r)})}addCacheListener(){self.addEventListener("message",e=>{if(e.data&&e.data.type==="CACHE_URLS"){let{payload:t}=e.data,r=Promise.all(t.urlsToCache.map(n=>{typeof n=="string"&&(n=[n]);let a=new Request(...n);return this.handleRequest({request:a,event:e})}));e.waitUntil(r),e.ports&&e.ports[0]&&r.then(()=>e.ports[0].postMessage(!0))}})}handleRequest({request:e,event:t}){let r=new URL(e.url,location.href);if(!r.protocol.startsWith("http"))return;let n=r.origin===location.origin,{params:a,route:s}=this.findMatchingRoute({event:t,request:e,sameOrigin:n,url:r}),i=s&&s.handler,u=[],w=e.method;if(!i&&this._defaultHandlerMap.has(w)&&(i=this._defaultHandlerMap.get(w)),!i)return;let f;try{f=i.handle({url:r,request:e,event:t,params:a})}catch(N){f=Promise.reject(N)}let l=s&&s.catchHandler;return f instanceof Promise&&(this._catchHandler||l)&&(f=f.catch(async N=>{if(l)try{return await l.handle({url:r,request:e,event:t,params:a})}catch(P){P instanceof Error&&(N=P)}if(this._catchHandler)return this._catchHandler.handle({url:r,request:e,event:t});throw N})),f}findMatchingRoute({url:e,sameOrigin:t,request:r,event:n}){let a=this._routes.get(r.method)||[];for(let s of a){let i,u=s.match({url:e,sameOrigin:t,request:r,event:n});if(u)return i=u,(Array.isArray(i)&&i.length===0||u.constructor===Object&&Object.keys(u).length===0||typeof u=="boolean")&&(i=void 0),{route:s,params:i}}return{}}setDefaultHandler(e,t=x){this._defaultHandlerMap.set(t,m(e))}setCatchHandler(e){this._catchHandler=m(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new c("unregister-route-but-not-found-with-method",{method:e.method});let t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new c("unregister-route-route-not-registered")}};var b,k=()=>(b||(b=new E,b.addFetchListener(),b.addCacheListener()),b);function D(o,e,t){let r;if(typeof o=="string"){let a=new URL(o,location.href),s=({url:i})=>i.href===a.href;r=new p(s,e,t)}else if(o instanceof RegExp)r=new y(o,e,t);else if(typeof o=="function")r=new p(o,e,t);else if(o instanceof p)r=o;else throw new c("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});return k().registerRoute(r),r}var h={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:typeof registration<"u"?registration.scope:""},T=o=>[h.prefix,o,h.suffix].filter(e=>e&&e.length>0).join("-"),G=o=>{for(let e of Object.keys(h))o(e)},A={updateDetails:o=>{G(e=>{typeof o[e]=="string"&&(h[e]=o[e])})},getGoogleAnalyticsName:o=>o||T(h.googleAnalytics),getPrecacheName:o=>o||T(h.precache),getPrefix:()=>h.prefix,getRuntimeName:o=>o||T(h.runtime),getSuffix:()=>h.suffix};function F(o,e){let t=new URL(o);for(let r of e)t.searchParams.delete(r);return t.href}async function W(o,e,t,r){let n=F(e.url,t);if(e.url===n)return o.match(e,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),s=await o.keys(e,a);for(let i of s){let u=F(i.url,t);if(n===u)return o.match(i,r)}}var $=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};var M=new Set;async function H(){for(let o of M)await o()}function U(o){return new Promise(e=>setTimeout(e,o))}try{self["workbox:strategies:7.0.0"]&&_()}catch{}function O(o){return typeof o=="string"?new Request(o):o}var R=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new $,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let r of this._plugins)this._pluginStateMap.set(r,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:t}=this,r=O(e);if(r.mode==="navigate"&&t instanceof FetchEvent&&t.preloadResponse){let s=await t.preloadResponse;if(s)return s}let n=this.hasCallback("fetchDidFail")?r.clone():null;try{for(let s of this.iterateCallbacks("requestWillFetch"))r=await s({request:r.clone(),event:t})}catch(s){if(s instanceof Error)throw new c("plugin-error-request-will-fetch",{thrownErrorMessage:s.message})}let a=r.clone();try{let s;s=await fetch(r,r.mode==="navigate"?void 0:this._strategy.fetchOptions);for(let i of this.iterateCallbacks("fetchDidSucceed"))s=await i({event:t,request:a,response:s});return s}catch(s){throw n&&await this.runCallbacks("fetchDidFail",{error:s,event:t,originalRequest:n.clone(),request:a.clone()}),s}}async fetchAndCachePut(e){let t=await this.fetch(e),r=t.clone();return this.waitUntil(this.cachePut(e,r)),t}async cacheMatch(e){let t=O(e),r,{cacheName:n,matchOptions:a}=this._strategy,s=await this.getCacheKey(t,"read"),i=Object.assign(Object.assign({},a),{cacheName:n});r=await caches.match(s,i);for(let u of this.iterateCallbacks("cachedResponseWillBeUsed"))r=await u({cacheName:n,matchOptions:a,cachedResponse:r,request:s,event:this.event})||void 0;return r}async cachePut(e,t){let r=O(e);await U(0);let n=await this.getCacheKey(r,"write");if(!t)throw new c("cache-put-with-no-response",{url:C(n.url)});let a=await this._ensureResponseSafeToCache(t);if(!a)return!1;let{cacheName:s,matchOptions:i}=this._strategy,u=await self.caches.open(s),w=this.hasCallback("cacheDidUpdate"),f=w?await W(u,n.clone(),["__WB_REVISION__"],i):null;try{await u.put(n,w?a.clone():a)}catch(l){if(l instanceof Error)throw l.name==="QuotaExceededError"&&await H(),l}for(let l of this.iterateCallbacks("cacheDidUpdate"))await l({cacheName:s,oldResponse:f,newResponse:a.clone(),request:n,event:this.event});return!0}async getCacheKey(e,t){let r=`${e.url} | ${t}`;if(!this._cacheKeys[r]){let n=e;for(let a of this.iterateCallbacks("cacheKeyWillBeUsed"))n=O(await a({mode:t,request:n,event:this.event,params:this.params}));this._cacheKeys[r]=n}return this._cacheKeys[r]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let r of this.iterateCallbacks(e))await r(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]=="function"){let r=this._pluginStateMap.get(t);yield a=>{let s=Object.assign(Object.assign({},a),{state:r});return t[e](s)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){let e;for(;e=this._extendLifetimePromises.shift();)await e}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,r=!1;for(let n of this.iterateCallbacks("cacheWillUpdate"))if(t=await n({request:this.request,response:t,event:this.event})||void 0,r=!0,!t)break;return r||t&&t.status!==200&&(t=void 0),t}};var d=class{constructor(e={}){this.cacheName=A.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,r=typeof e.request=="string"?new Request(e.request):e.request,n="params"in e?e.params:void 0,a=new R(this,{event:t,request:r,params:n}),s=this._getResponse(a,r,t),i=this._awaitComplete(s,a,r,t);return[s,i]}async _getResponse(e,t,r){await e.runCallbacks("handlerWillStart",{event:r,request:t});let n;try{if(n=await this._handle(t,e),!n||n.type==="error")throw new c("no-response",{url:t.url})}catch(a){if(a instanceof Error){for(let s of e.iterateCallbacks("handlerDidError"))if(n=await s({error:a,event:r,request:t}),n)break}if(!n)throw a}for(let a of e.iterateCallbacks("handlerWillRespond"))n=await a({event:r,request:t,response:n});return n}async _awaitComplete(e,t,r,n){let a,s;try{a=await e}catch{}try{await t.runCallbacks("handlerDidRespond",{event:n,request:r,response:a}),await t.doneWaiting()}catch(i){i instanceof Error&&(s=i)}if(await t.runCallbacks("handlerDidComplete",{event:n,request:r,response:a,error:s}),t.destroy(),s)throw s}};var q={cacheWillUpdate:async({response:o})=>o.status===200||o.status===0?o:null};var v=class extends d{constructor(e={}){super(e),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(q)}async _handle(e,t){let r=[],n=t.fetchAndCachePut(e).catch(()=>{});t.waitUntil(n);let a=await t.cacheMatch(e),s;if(!a)try{a=await n}catch(i){i instanceof Error&&(s=i)}if(!a)throw new c("no-response",{url:e.url,error:s});return a}};try{self["workbox:navigation-preload:7.0.0"]&&_()}catch{}function g(){return!!(self.registration&&self.registration.navigationPreload)}function S(o){g()&&self.addEventListener("activate",e=>{e.waitUntil(self.registration.navigationPreload.enable().then(()=>{o&&self.registration.navigationPreload.setHeaderValue(o)}))})}var V="modo",j="index.html";self.addEventListener("message",o=>{o.data&&o.data.type==="SKIP_WAITING"&&self.skipWaiting()});self.addEventListener("install",async o=>{o.waitUntil(caches.open(V).then(e=>e.add(j)))});g()&&S();D(new RegExp("/*"),new v({cacheName:V}));self.addEventListener("fetch",o=>{o.request.mode==="navigate"&&o.respondWith((async()=>{try{let e=await o.preloadResponse;return e||await fetch(o.request)}catch{return await(await caches.open(V)).match(j)}})())});})();