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