Files
dockerStuff/config/tandoor/staticfiles/vue3/service-worker.js
2025-11-16 21:46:46 +00:00

3 lines
40 KiB
JavaScript

try{self["workbox:core:7.2.0"]&&_()}catch{}const le=(n,...e)=>{let t=n;return e.length>0&&(t+=` :: ${JSON.stringify(e)}`),t},ue=le;class l extends Error{constructor(e,t){const s=ue(e,t);super(s),this.name=e,this.details=t}}const f={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:typeof registration<"u"?registration.scope:""},L=n=>[f.prefix,n,f.suffix].filter(e=>e&&e.length>0).join("-"),de=n=>{for(const e of Object.keys(f))n(e)},D={updateDetails:n=>{de(e=>{typeof n[e]=="string"&&(f[e]=n[e])})},getGoogleAnalyticsName:n=>n||L(f.googleAnalytics),getPrecacheName:n=>n||L(f.precache),getPrefix:()=>f.prefix,getRuntimeName:n=>n||L(f.runtime),getSuffix:()=>f.suffix};function j(n,e){const t=e();return n.waitUntil(t),t}try{self["workbox:precaching:7.2.0"]&&_()}catch{}const fe="__WB_REVISION__";function pe(n){if(!n)throw new l("add-to-cache-list-unexpected-type",{entry:n});if(typeof n=="string"){const r=new URL(n,location.href);return{cacheKey:r.href,url:r.href}}const{revision:e,url:t}=n;if(!t)throw new l("add-to-cache-list-unexpected-type",{entry:n});if(!e){const r=new URL(t,location.href);return{cacheKey:r.href,url:r.href}}const s=new URL(t,location.href),a=new URL(t,location.href);return s.searchParams.set(fe,e),{cacheKey:s.href,url:a.href}}class me{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:s})=>{if(e.type==="install"&&t&&t.originalRequest&&t.originalRequest instanceof Request){const a=t.originalRequest.url;s?this.notUpdatedURLs.push(a):this.updatedURLs.push(a)}return s}}}class ye{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:t,params:s})=>{const a=s?.cacheKey||this._precacheController.getCacheKeyForURL(t.url);return a?new Request(a,{headers:t.headers}):t},this._precacheController=e}}let w;function ge(){if(w===void 0){const n=new Response("");if("body"in n)try{new Response(n.body),w=!0}catch{w=!1}w=!1}return w}async function we(n,e){let t=null;if(n.url&&(t=new URL(n.url).origin),t!==self.location.origin)throw new l("cross-origin-copy-response",{origin:t});const s=n.clone(),r={headers:new Headers(s.headers),status:s.status,statusText:s.statusText},i=ge()?s.body:await s.blob();return new Response(i,r)}const _e=n=>new URL(String(n),location.href).href.replace(new RegExp(`^${location.origin}`),"");function W(n,e){const t=new URL(n);for(const s of e)t.searchParams.delete(s);return t.href}async function Re(n,e,t,s){const a=W(e.url,t);if(e.url===a)return n.match(e,s);const r=Object.assign(Object.assign({},s),{ignoreSearch:!0}),i=await n.keys(e,r);for(const c of i){const o=W(c.url,t);if(a===o)return n.match(c,s)}}class be{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}const J=new Set;async function Ee(){for(const n of J)await n()}function X(n){return new Promise(e=>setTimeout(e,n))}try{self["workbox:strategies:7.2.0"]&&_()}catch{}function N(n){return typeof n=="string"?new Request(n):n}class Ce{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new be,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const s of this._plugins)this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:t}=this;let s=N(e);if(s.mode==="navigate"&&t instanceof FetchEvent&&t.preloadResponse){const i=await t.preloadResponse;if(i)return i}const a=this.hasCallback("fetchDidFail")?s.clone():null;try{for(const i of this.iterateCallbacks("requestWillFetch"))s=await i({request:s.clone(),event:t})}catch(i){if(i instanceof Error)throw new l("plugin-error-request-will-fetch",{thrownErrorMessage:i.message})}const r=s.clone();try{let i;i=await fetch(s,s.mode==="navigate"?void 0:this._strategy.fetchOptions);for(const c of this.iterateCallbacks("fetchDidSucceed"))i=await c({event:t,request:r,response:i});return i}catch(i){throw a&&await this.runCallbacks("fetchDidFail",{error:i,event:t,originalRequest:a.clone(),request:r.clone()}),i}}async fetchAndCachePut(e){const t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){const t=N(e);let s;const{cacheName:a,matchOptions:r}=this._strategy,i=await this.getCacheKey(t,"read"),c=Object.assign(Object.assign({},r),{cacheName:a});s=await caches.match(i,c);for(const o of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await o({cacheName:a,matchOptions:r,cachedResponse:s,request:i,event:this.event})||void 0;return s}async cachePut(e,t){const s=N(e);await X(0);const a=await this.getCacheKey(s,"write");if(!t)throw new l("cache-put-with-no-response",{url:_e(a.url)});const r=await this._ensureResponseSafeToCache(t);if(!r)return!1;const{cacheName:i,matchOptions:c}=this._strategy,o=await self.caches.open(i),h=this.hasCallback("cacheDidUpdate"),g=h?await Re(o,a.clone(),["__WB_REVISION__"],c):null;try{await o.put(a,h?r.clone():r)}catch(u){if(u instanceof Error)throw u.name==="QuotaExceededError"&&await Ee(),u}for(const u of this.iterateCallbacks("cacheDidUpdate"))await u({cacheName:i,oldResponse:g,newResponse:r.clone(),request:a,event:this.event});return!0}async getCacheKey(e,t){const s=`${e.url} | ${t}`;if(!this._cacheKeys[s]){let a=e;for(const r of this.iterateCallbacks("cacheKeyWillBeUsed"))a=N(await r({mode:t,request:a,event:this.event,params:this.params}));this._cacheKeys[s]=a}return this._cacheKeys[s]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if(typeof t[e]=="function"){const s=this._pluginStateMap.get(t);yield r=>{const i=Object.assign(Object.assign({},r),{state:s});return t[e](i)}}}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,s=!1;for(const a of this.iterateCallbacks("cacheWillUpdate"))if(t=await a({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return s||t&&t.status!==200&&(t=void 0),t}}class T{constructor(e={}){this.cacheName=D.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,s=typeof e.request=="string"?new Request(e.request):e.request,a="params"in e?e.params:void 0,r=new Ce(this,{event:t,request:s,params:a}),i=this._getResponse(r,s,t),c=this._awaitComplete(i,r,s,t);return[i,c]}async _getResponse(e,t,s){await e.runCallbacks("handlerWillStart",{event:s,request:t});let a;try{if(a=await this._handle(t,e),!a||a.type==="error")throw new l("no-response",{url:t.url})}catch(r){if(r instanceof Error){for(const i of e.iterateCallbacks("handlerDidError"))if(a=await i({error:r,event:s,request:t}),a)break}if(!a)throw r}for(const r of e.iterateCallbacks("handlerWillRespond"))a=await r({event:s,request:t,response:a});return a}async _awaitComplete(e,t,s,a){let r,i;try{r=await e}catch{}try{await t.runCallbacks("handlerDidRespond",{event:a,request:s,response:r}),await t.doneWaiting()}catch(c){c instanceof Error&&(i=c)}if(await t.runCallbacks("handlerDidComplete",{event:a,request:s,response:r,error:i}),t.destroy(),i)throw i}}class y extends T{constructor(e={}){e.cacheName=D.getPrecacheName(e.cacheName),super(e),this._fallbackToNetwork=e.fallbackToNetwork!==!1,this.plugins.push(y.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const s=await t.cacheMatch(e);return s||(t.event&&t.event.type==="install"?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,t){let s;const a=t.params||{};if(this._fallbackToNetwork){const r=a.integrity,i=e.integrity,c=!i||i===r;s=await t.fetch(new Request(e,{integrity:e.mode!=="no-cors"?i||r:void 0})),r&&c&&e.mode!=="no-cors"&&(this._useDefaultCacheabilityPluginIfNeeded(),await t.cachePut(e,s.clone()))}else throw new l("missing-precache-entry",{cacheName:this.cacheName,url:e.url});return s}async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded();const s=await t.fetch(e);if(!await t.cachePut(e,s.clone()))throw new l("bad-precaching-response",{url:e.url,status:s.status});return s}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[s,a]of this.plugins.entries())a!==y.copyRedirectedCacheableResponsesPlugin&&(a===y.defaultPrecacheCacheabilityPlugin&&(e=s),a.cacheWillUpdate&&t++);t===0?this.plugins.push(y.defaultPrecacheCacheabilityPlugin):t>1&&e!==null&&this.plugins.splice(e,1)}}y.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:n}){return!n||n.status>=400?null:n}};y.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:n}){return n.redirected?await we(n):n}};class xe{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new y({cacheName:D.getPrecacheName(e),plugins:[...t,new ye({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const t=[];for(const s of e){typeof s=="string"?t.push(s):s&&s.revision===void 0&&t.push(s.url);const{cacheKey:a,url:r}=pe(s),i=typeof s!="string"&&s.revision?"reload":"default";if(this._urlsToCacheKeys.has(r)&&this._urlsToCacheKeys.get(r)!==a)throw new l("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(r),secondEntry:a});if(typeof s!="string"&&s.integrity){if(this._cacheKeysToIntegrities.has(a)&&this._cacheKeysToIntegrities.get(a)!==s.integrity)throw new l("add-to-cache-list-conflicting-integrities",{url:r});this._cacheKeysToIntegrities.set(a,s.integrity)}if(this._urlsToCacheKeys.set(r,a),this._urlsToCacheModes.set(r,i),t.length>0){const c=`Workbox is precaching URLs without revision info: ${t.join(", ")}
This is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(c)}}}install(e){return j(e,async()=>{const t=new me;this.strategy.plugins.push(t);for(const[r,i]of this._urlsToCacheKeys){const c=this._cacheKeysToIntegrities.get(i),o=this._urlsToCacheModes.get(r),h=new Request(r,{integrity:c,cache:o,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:i},request:h,event:e}))}const{updatedURLs:s,notUpdatedURLs:a}=t;return{updatedURLs:s,notUpdatedURLs:a}})}activate(e){return j(e,async()=>{const t=await self.caches.open(this.strategy.cacheName),s=await t.keys(),a=new Set(this._urlsToCacheKeys.values()),r=[];for(const i of s)a.has(i.url)||(await t.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s)return(await self.caches.open(this.strategy.cacheName)).match(s)}createHandlerBoundToURL(e){const t=this.getCacheKeyForURL(e);if(!t)throw new l("non-precached-url",{url:e});return s=>(s.request=new Request(e),s.params=Object.assign({cacheKey:t},s.params),this.strategy.handle(s))}}let I;const Z=()=>(I||(I=new xe),I);try{self["workbox:routing:7.2.0"]&&_()}catch{}const ee="GET",k=n=>n&&typeof n=="object"?n:{handle:n};class C{constructor(e,t,s=ee){this.handler=k(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=k(e)}}class De extends C{constructor(e,t,s){const a=({url:r})=>{const i=e.exec(r.href);if(i&&!(r.origin!==location.origin&&i.index!==0))return i.slice(1)};super(a,t,s)}}class Te{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)})}addCacheListener(){self.addEventListener("message",e=>{if(e.data&&e.data.type==="CACHE_URLS"){const{payload:t}=e.data,s=Promise.all(t.urlsToCache.map(a=>{typeof a=="string"&&(a=[a]);const r=new Request(...a);return this.handleRequest({request:r,event:e})}));e.waitUntil(s),e.ports&&e.ports[0]&&s.then(()=>e.ports[0].postMessage(!0))}})}handleRequest({request:e,event:t}){const s=new URL(e.url,location.href);if(!s.protocol.startsWith("http"))return;const a=s.origin===location.origin,{params:r,route:i}=this.findMatchingRoute({event:t,request:e,sameOrigin:a,url:s});let c=i&&i.handler;const o=e.method;if(!c&&this._defaultHandlerMap.has(o)&&(c=this._defaultHandlerMap.get(o)),!c)return;let h;try{h=c.handle({url:s,request:e,event:t,params:r})}catch(u){h=Promise.reject(u)}const g=i&&i.catchHandler;return h instanceof Promise&&(this._catchHandler||g)&&(h=h.catch(async u=>{if(g)try{return await g.handle({url:s,request:e,event:t,params:r})}catch(F){F instanceof Error&&(u=F)}if(this._catchHandler)return this._catchHandler.handle({url:s,request:e,event:t});throw u})),h}findMatchingRoute({url:e,sameOrigin:t,request:s,event:a}){const r=this._routes.get(s.method)||[];for(const i of r){let c;const o=i.match({url:e,sameOrigin:t,request:s,event:a});if(o)return c=o,(Array.isArray(c)&&c.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o=="boolean")&&(c=void 0),{route:i,params:c}}return{}}setDefaultHandler(e,t=ee){this._defaultHandlerMap.set(t,k(e))}setCatchHandler(e){this._catchHandler=k(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 l("unregister-route-but-not-found-with-method",{method:e.method});const t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new l("unregister-route-route-not-registered")}}let R;const te=()=>(R||(R=new Te,R.addFetchListener(),R.addCacheListener()),R);function m(n,e,t){let s;if(typeof n=="string"){const r=new URL(n,location.href),i=({url:c})=>c.href===r.href;s=new C(i,e,t)}else if(n instanceof RegExp)s=new De(n,e,t);else if(typeof n=="function")s=new C(n,e,t);else if(n instanceof C)s=n;else throw new l("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});return te().registerRoute(s),s}function Ne(n,e=[]){for(const t of[...n.searchParams.keys()])e.some(s=>s.test(t))&&n.searchParams.delete(t);return n}function*ke(n,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:t="index.html",cleanURLs:s=!0,urlManipulation:a}={}){const r=new URL(n,location.href);r.hash="",yield r.href;const i=Ne(r,e);if(yield i.href,t&&i.pathname.endsWith("/")){const c=new URL(i.href);c.pathname+=t,yield c.href}if(s){const c=new URL(i.href);c.pathname+=".html",yield c.href}if(a){const c=a({url:r});for(const o of c)yield o.href}}class Pe extends C{constructor(e,t){const s=({request:a})=>{const r=e.getURLsToCacheKeys();for(const i of ke(a.url,t)){const c=r.get(i);if(c){const o=e.getIntegrityForCacheKey(c);return{cacheKey:c,integrity:o}}}};super(s,e.strategy)}}function Se(n){const e=Z(),t=new Pe(e,n);m(t)}const Le="-precache-",Ie=async(n,e=Le)=>{const s=(await self.caches.keys()).filter(a=>a.includes(e)&&a.includes(self.registration.scope)&&a!==n);return await Promise.all(s.map(a=>self.caches.delete(a))),s};function Ue(){self.addEventListener("activate",n=>{const e=D.getPrecacheName();n.waitUntil(Ie(e).then(t=>{}))})}function qe(n){Z().precache(n)}function ve(n,e){qe(n),Se(e)}function Ae(n){te().setCatchHandler(n)}class Me extends T{async _handle(e,t){let s=await t.cacheMatch(e),a;if(!s)try{s=await t.fetchAndCachePut(e)}catch(r){r instanceof Error&&(a=r)}if(!s)throw new l("no-response",{url:e.url,error:a});return s}}const se={cacheWillUpdate:async({response:n})=>n.status===200||n.status===0?n:null};class P extends T{constructor(e={}){super(e),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(se),this._networkTimeoutSeconds=e.networkTimeoutSeconds||0}async _handle(e,t){const s=[],a=[];let r;if(this._networkTimeoutSeconds){const{id:o,promise:h}=this._getTimeoutPromise({request:e,logs:s,handler:t});r=o,a.push(h)}const i=this._getNetworkPromise({timeoutId:r,request:e,logs:s,handler:t});a.push(i);const c=await t.waitUntil((async()=>await t.waitUntil(Promise.race(a))||await i)());if(!c)throw new l("no-response",{url:e.url});return c}_getTimeoutPromise({request:e,logs:t,handler:s}){let a;return{promise:new Promise(i=>{a=setTimeout(async()=>{i(await s.cacheMatch(e))},this._networkTimeoutSeconds*1e3)}),id:a}}async _getNetworkPromise({timeoutId:e,request:t,logs:s,handler:a}){let r,i;try{i=await a.fetchAndCachePut(t)}catch(c){c instanceof Error&&(r=c)}return e&&clearTimeout(e),(r||!i)&&(i=await a.cacheMatch(t)),i}}class Oe extends T{constructor(e={}){super(e),this._networkTimeoutSeconds=e.networkTimeoutSeconds||0}async _handle(e,t){let s,a;try{const r=[t.fetch(e)];if(this._networkTimeoutSeconds){const i=X(this._networkTimeoutSeconds*1e3);r.push(i)}if(a=await Promise.race(r),!a)throw new Error(`Timed out the network response after ${this._networkTimeoutSeconds} seconds.`)}catch(r){r instanceof Error&&(s=r)}if(!a)throw new l("no-response",{url:e.url,error:s});return a}}class ne extends T{constructor(e={}){super(e),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(se)}async _handle(e,t){const s=t.fetchAndCachePut(e).catch(()=>{});t.waitUntil(s);let a=await t.cacheMatch(e),r;if(!a)try{a=await s}catch(i){i instanceof Error&&(r=i)}if(!a)throw new l("no-response",{url:e.url,error:r});return a}}function ae(n){n.then(()=>{})}const Ke=(n,e)=>e.some(t=>n instanceof t);let H,Q;function Be(){return H||(H=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Fe(){return Q||(Q=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const re=new WeakMap,M=new WeakMap,ie=new WeakMap,U=new WeakMap,B=new WeakMap;function je(n){const e=new Promise((t,s)=>{const a=()=>{n.removeEventListener("success",r),n.removeEventListener("error",i)},r=()=>{t(p(n.result)),a()},i=()=>{s(n.error),a()};n.addEventListener("success",r),n.addEventListener("error",i)});return e.then(t=>{t instanceof IDBCursor&&re.set(t,n)}).catch(()=>{}),B.set(e,n),e}function We(n){if(M.has(n))return;const e=new Promise((t,s)=>{const a=()=>{n.removeEventListener("complete",r),n.removeEventListener("error",i),n.removeEventListener("abort",i)},r=()=>{t(),a()},i=()=>{s(n.error||new DOMException("AbortError","AbortError")),a()};n.addEventListener("complete",r),n.addEventListener("error",i),n.addEventListener("abort",i)});M.set(n,e)}let O={get(n,e,t){if(n instanceof IDBTransaction){if(e==="done")return M.get(n);if(e==="objectStoreNames")return n.objectStoreNames||ie.get(n);if(e==="store")return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return p(n[e])},set(n,e,t){return n[e]=t,!0},has(n,e){return n instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in n}};function He(n){O=n(O)}function Qe(n){return n===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...t){const s=n.call(q(this),e,...t);return ie.set(s,e.sort?e.sort():[e]),p(s)}:Fe().includes(n)?function(...e){return n.apply(q(this),e),p(re.get(this))}:function(...e){return p(n.apply(q(this),e))}}function Ve(n){return typeof n=="function"?Qe(n):(n instanceof IDBTransaction&&We(n),Ke(n,Be())?new Proxy(n,O):n)}function p(n){if(n instanceof IDBRequest)return je(n);if(U.has(n))return U.get(n);const e=Ve(n);return e!==n&&(U.set(n,e),B.set(e,n)),e}const q=n=>B.get(n);function ce(n,e,{blocked:t,upgrade:s,blocking:a,terminated:r}={}){const i=indexedDB.open(n,e),c=p(i);return s&&i.addEventListener("upgradeneeded",o=>{s(p(i.result),o.oldVersion,o.newVersion,p(i.transaction),o)}),t&&i.addEventListener("blocked",o=>t(o.oldVersion,o.newVersion,o)),c.then(o=>{r&&o.addEventListener("close",()=>r()),a&&o.addEventListener("versionchange",h=>a(h.oldVersion,h.newVersion,h))}).catch(()=>{}),c}function $e(n,{blocked:e}={}){const t=indexedDB.deleteDatabase(n);return e&&t.addEventListener("blocked",s=>e(s.oldVersion,s)),p(t).then(()=>{})}const Ge=["get","getKey","getAll","getAllKeys","count"],ze=["put","add","delete","clear"],v=new Map;function V(n,e){if(!(n instanceof IDBDatabase&&!(e in n)&&typeof e=="string"))return;if(v.get(e))return v.get(e);const t=e.replace(/FromIndex$/,""),s=e!==t,a=ze.includes(t);if(!(t in(s?IDBIndex:IDBObjectStore).prototype)||!(a||Ge.includes(t)))return;const r=async function(i,...c){const o=this.transaction(i,a?"readwrite":"readonly");let h=o.store;return s&&(h=h.index(c.shift())),(await Promise.all([h[t](...c),a&&o.done]))[0]};return v.set(e,r),r}He(n=>({...n,get:(e,t,s)=>V(e,t)||n.get(e,t,s),has:(e,t)=>!!V(e,t)||n.has(e,t)}));try{self["workbox:expiration:7.2.0"]&&_()}catch{}const Ye="workbox-expiration",b="cache-entries",$=n=>{const e=new URL(n,location.href);return e.hash="",e.href};class Je{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const t=e.createObjectStore(b,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&$e(this._cacheName)}async setTimestamp(e,t){e=$(e);const s={url:e,timestamp:t,cacheName:this._cacheName,id:this._getId(e)},r=(await this.getDb()).transaction(b,"readwrite",{durability:"relaxed"});await r.store.put(s),await r.done}async getTimestamp(e){const s=await(await this.getDb()).get(b,this._getId(e));return s?.timestamp}async expireEntries(e,t){const s=await this.getDb();let a=await s.transaction(b).store.index("timestamp").openCursor(null,"prev");const r=[];let i=0;for(;a;){const o=a.value;o.cacheName===this._cacheName&&(e&&o.timestamp<e||t&&i>=t?r.push(a.value):i++),a=await a.continue()}const c=[];for(const o of r)await s.delete(b,o.id),c.push(o.url);return c}_getId(e){return this._cacheName+"|"+$(e)}async getDb(){return this._db||(this._db=await ce(Ye,1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}}class Xe{constructor(e,t={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new Je(e)}async expireEntries(){if(this._isRunning){this._rerunRequested=!0;return}this._isRunning=!0;const e=this._maxAgeSeconds?Date.now()-this._maxAgeSeconds*1e3:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),s=await self.caches.open(this._cacheName);for(const a of t)await s.delete(a,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,ae(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),s=Date.now()-this._maxAgeSeconds*1e3;return t!==void 0?t<s:!0}else return!1}async delete(){this._rerunRequested=!1,await this._timestampModel.expireEntries(1/0)}}function Ze(n){J.add(n)}class S{constructor(e={}){this.cachedResponseWillBeUsed=async({event:t,request:s,cacheName:a,cachedResponse:r})=>{if(!r)return null;const i=this._isResponseDateFresh(r),c=this._getCacheExpiration(a);ae(c.expireEntries());const o=c.updateTimestamp(s.url);if(t)try{t.waitUntil(o)}catch{}return i?r:null},this.cacheDidUpdate=async({cacheName:t,request:s})=>{const a=this._getCacheExpiration(t);await a.updateTimestamp(s.url),await a.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&Ze(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(e){if(e===D.getRuntimeName())throw new l("expire-custom-caches-only");let t=this._cacheExpirations.get(e);return t||(t=new Xe(e,this._config),this._cacheExpirations.set(e,t)),t}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);if(t===null)return!0;const s=Date.now();return t>=s-this._maxAgeSeconds*1e3}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),a=new Date(t).getTime();return isNaN(a)?null:a}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}try{self["workbox:background-sync:7.2.0"]&&_()}catch{}const G=3,et="workbox-background-sync",d="requests",E="queueName";class tt{constructor(){this._db=null}async addEntry(e){const s=(await this.getDb()).transaction(d,"readwrite",{durability:"relaxed"});await s.store.add(e),await s.done}async getFirstEntryId(){const t=await(await this.getDb()).transaction(d).store.openCursor();return t?.value.id}async getAllEntriesByQueueName(e){const s=await(await this.getDb()).getAllFromIndex(d,E,IDBKeyRange.only(e));return s||new Array}async getEntryCountByQueueName(e){return(await this.getDb()).countFromIndex(d,E,IDBKeyRange.only(e))}async deleteEntry(e){await(await this.getDb()).delete(d,e)}async getFirstEntryByQueueName(e){return await this.getEndEntryFromIndex(IDBKeyRange.only(e),"next")}async getLastEntryByQueueName(e){return await this.getEndEntryFromIndex(IDBKeyRange.only(e),"prev")}async getEndEntryFromIndex(e,t){const a=await(await this.getDb()).transaction(d).store.index(E).openCursor(e,t);return a?.value}async getDb(){return this._db||(this._db=await ce(et,G,{upgrade:this._upgradeDb})),this._db}_upgradeDb(e,t){t>0&&t<G&&e.objectStoreNames.contains(d)&&e.deleteObjectStore(d),e.createObjectStore(d,{autoIncrement:!0,keyPath:"id"}).createIndex(E,E,{unique:!1})}}class st{constructor(e){this._queueName=e,this._queueDb=new tt}async pushEntry(e){delete e.id,e.queueName=this._queueName,await this._queueDb.addEntry(e)}async unshiftEntry(e){const t=await this._queueDb.getFirstEntryId();t?e.id=t-1:delete e.id,e.queueName=this._queueName,await this._queueDb.addEntry(e)}async popEntry(){return this._removeEntry(await this._queueDb.getLastEntryByQueueName(this._queueName))}async shiftEntry(){return this._removeEntry(await this._queueDb.getFirstEntryByQueueName(this._queueName))}async getAll(){return await this._queueDb.getAllEntriesByQueueName(this._queueName)}async size(){return await this._queueDb.getEntryCountByQueueName(this._queueName)}async deleteEntry(e){await this._queueDb.deleteEntry(e)}async _removeEntry(e){return e&&await this.deleteEntry(e.id),e}}const nt=["method","referrer","referrerPolicy","mode","credentials","cache","redirect","integrity","keepalive"];class x{static async fromRequest(e){const t={url:e.url,headers:{}};e.method!=="GET"&&(t.body=await e.clone().arrayBuffer());for(const[s,a]of e.headers.entries())t.headers[s]=a;for(const s of nt)e[s]!==void 0&&(t[s]=e[s]);return new x(t)}constructor(e){e.mode==="navigate"&&(e.mode="same-origin"),this._requestData=e}toObject(){const e=Object.assign({},this._requestData);return e.headers=Object.assign({},this._requestData.headers),e.body&&(e.body=e.body.slice(0)),e}toRequest(){return new Request(this._requestData.url,this._requestData)}clone(){return new x(this.toObject())}}const z="workbox-background-sync",at=60*24*7,A=new Set,Y=n=>{const e={request:new x(n.requestData).toRequest(),timestamp:n.timestamp};return n.metadata&&(e.metadata=n.metadata),e};class rt{constructor(e,{forceSyncFallback:t,onSync:s,maxRetentionTime:a}={}){if(this._syncInProgress=!1,this._requestsAddedDuringSync=!1,A.has(e))throw new l("duplicate-queue-name",{name:e});A.add(e),this._name=e,this._onSync=s||this.replayRequests,this._maxRetentionTime=a||at,this._forceSyncFallback=!!t,this._queueStore=new st(this._name),this._addSyncListener()}get name(){return this._name}async pushRequest(e){await this._addRequest(e,"push")}async unshiftRequest(e){await this._addRequest(e,"unshift")}async popRequest(){return this._removeRequest("pop")}async shiftRequest(){return this._removeRequest("shift")}async getAll(){const e=await this._queueStore.getAll(),t=Date.now(),s=[];for(const a of e){const r=this._maxRetentionTime*60*1e3;t-a.timestamp>r?await this._queueStore.deleteEntry(a.id):s.push(Y(a))}return s}async size(){return await this._queueStore.size()}async _addRequest({request:e,metadata:t,timestamp:s=Date.now()},a){const i={requestData:(await x.fromRequest(e.clone())).toObject(),timestamp:s};switch(t&&(i.metadata=t),a){case"push":await this._queueStore.pushEntry(i);break;case"unshift":await this._queueStore.unshiftEntry(i);break}this._syncInProgress?this._requestsAddedDuringSync=!0:await this.registerSync()}async _removeRequest(e){const t=Date.now();let s;switch(e){case"pop":s=await this._queueStore.popEntry();break;case"shift":s=await this._queueStore.shiftEntry();break}if(s){const a=this._maxRetentionTime*60*1e3;return t-s.timestamp>a?this._removeRequest(e):Y(s)}else return}async replayRequests(){let e;for(;e=await this.shiftRequest();)try{await fetch(e.request.clone())}catch{throw await this.unshiftRequest(e),new l("queue-replay-failed",{name:this._name})}}async registerSync(){if("sync"in self.registration&&!this._forceSyncFallback)try{await self.registration.sync.register(`${z}:${this._name}`)}catch{}}_addSyncListener(){"sync"in self.registration&&!this._forceSyncFallback?self.addEventListener("sync",e=>{if(e.tag===`${z}:${this._name}`){const t=async()=>{this._syncInProgress=!0;let s;try{await this._onSync({queue:this})}catch(a){if(a instanceof Error)throw s=a,s}finally{this._requestsAddedDuringSync&&!(s&&!e.lastChance)&&await this.registerSync(),this._syncInProgress=!1,this._requestsAddedDuringSync=!1}};e.waitUntil(t())}}):this._onSync({queue:this})}static get _queueNames(){return A}}function it(){self.addEventListener("activate",()=>self.clients.claim())}Ue();ve([{"revision":null,"url":"assets/404Page-D8Iz8kbs.js"},{"revision":null,"url":"assets/AccessTokenEditor-XW2vIaqd.js"},{"revision":null,"url":"assets/AccountSettings-ZDlmay-5.js"},{"revision":null,"url":"assets/AddToShoppingDialog-BlK8uFkX.css"},{"revision":null,"url":"assets/AddToShoppingDialog.vue_vue_type_script_setup_true_lang-ByrmCw9F.js"},{"revision":null,"url":"assets/AiProviderEditor-D3yUbBJX.css"},{"revision":null,"url":"assets/AiProviderEditor-DzRhWxiT.js"},{"revision":null,"url":"assets/ApiSettings-Ne4Z0qVl.js"},{"revision":null,"url":"assets/ar-BDXh-_3C.js"},{"revision":null,"url":"assets/AutomationEditor-CpKec65v.js"},{"revision":null,"url":"assets/BatchDeleteDialog.vue_vue_type_script_setup_true_lang-D0heUVsC.js"},{"revision":null,"url":"assets/bg-DDDDzuan.js"},{"revision":null,"url":"assets/BooksPage-DdovBkHb.js"},{"revision":null,"url":"assets/BookViewPage-B02kp2SW.js"},{"revision":null,"url":"assets/BtnCopy.vue_vue_type_script_setup_true_lang-B_1A58TG.js"},{"revision":null,"url":"assets/ca-CEBLhZOQ.js"},{"revision":null,"url":"assets/ClosableHelpAlert.vue_vue_type_script_setup_true_lang-Bq7D6yIF.js"},{"revision":null,"url":"assets/ConnectorConfigEditor-Csg2P1sE.js"},{"revision":null,"url":"assets/CookLogEditor-DASldgxP.js"},{"revision":null,"url":"assets/CosmeticSettings-CLYHAOXx.js"},{"revision":null,"url":"assets/cs-DFyd9c9k.js"},{"revision":null,"url":"assets/CustomFilterEditor-CLji5GA1.js"},{"revision":null,"url":"assets/da-DrdOkoKH.js"},{"revision":null,"url":"assets/DatabaseLinkCol.vue_vue_type_script_setup_true_lang-Bnq1B2KL.js"},{"revision":null,"url":"assets/DatabasePage-WBAB7B7z.js"},{"revision":null,"url":"assets/de-Q6I-zzSV.js"},{"revision":null,"url":"assets/DeleteConfirmDialog.vue_vue_type_script_setup_true_lang-C6y9GBNB.js"},{"revision":null,"url":"assets/el-CXFvhoSx.js"},{"revision":null,"url":"assets/es-ClzzUe4s.js"},{"revision":null,"url":"assets/ExportDataSettings-DvEaRn4n.js"},{"revision":null,"url":"assets/fdc-CkSQIsAv.js"},{"revision":null,"url":"assets/FdcSearchDialog.vue_vue_type_script_setup_true_lang-C-bx54-t.js"},{"revision":null,"url":"assets/fi-DW6Il2MS.js"},{"revision":null,"url":"assets/fileDrop-BjiZTCss.js"},{"revision":null,"url":"assets/FoodEditor-3gejC5zm.js"},{"revision":null,"url":"assets/fr-uXhop3AL.js"},{"revision":null,"url":"assets/he-Bh0dztVQ.js"},{"revision":null,"url":"assets/HelpPage-2fX8Gbzu.js"},{"revision":null,"url":"assets/HierarchyEditor-iHBLPXCx.css"},{"revision":null,"url":"assets/HierarchyEditor.vue_vue_type_script_setup_true_lang-VFBtIeub.js"},{"revision":null,"url":"assets/hr-CmQ59hjm.js"},{"revision":null,"url":"assets/hu-BRmV9lyl.js"},{"revision":null,"url":"assets/hy-i83WSdtt.js"},{"revision":null,"url":"assets/id-_g7fzN6n.js"},{"revision":null,"url":"assets/IngredientEditorPage-C6Hu5jvm.js"},{"revision":null,"url":"assets/IngredientsTable.vue_vue_type_script_setup_true_lang-ClY6kQB1.js"},{"revision":null,"url":"assets/integration_utils-sX7uYpAT.js"},{"revision":null,"url":"assets/InviteLinkEditor-CVYwkQ1F.js"},{"revision":null,"url":"assets/is-BupYkle_.js"},{"revision":null,"url":"assets/it-3Km58jic.js"},{"revision":null,"url":"assets/KeywordEditor-B_K-9QDF.js"},{"revision":null,"url":"assets/KeywordsBar.vue_vue_type_script_setup_true_lang-9vWdzSaj.js"},{"revision":null,"url":"assets/logo_color-BwefLr6I.js"},{"revision":null,"url":"assets/lt-DI6-8Opr.js"},{"revision":null,"url":"assets/lv-8fcXHcg-.js"},{"revision":null,"url":"assets/main-BhFWIRV_.js"},{"revision":null,"url":"assets/main-DLwZVHuS.css"},{"revision":null,"url":"assets/MealPlanEditor-8ZJIBqi6.js"},{"revision":null,"url":"assets/MealPlanSettings-9gU5vdbh.js"},{"revision":null,"url":"assets/MealTypeEditor-CeNz0Pzn.js"},{"revision":null,"url":"assets/MealTypeEditor-DBVmorf5.css"},{"revision":null,"url":"assets/model_utils-CVQgSPL_.js"},{"revision":null,"url":"assets/ModelDeletePage-C4erPWw9.js"},{"revision":null,"url":"assets/ModelEditPage-BDgAqMDH.js"},{"revision":null,"url":"assets/ModelListPage-kwiBvRmX.js"},{"revision":null,"url":"assets/ModelMergeDialog.vue_vue_type_script_setup_true_lang-BaAGJhdt.js"},{"revision":null,"url":"assets/nb_NO-DGleYvLk.js"},{"revision":null,"url":"assets/nl-CACKGPAl.js"},{"revision":null,"url":"assets/number_utils-1sJWKMUK.js"},{"revision":null,"url":"assets/number_utils-RsCANmDP.css"},{"revision":null,"url":"assets/NumberScalerDialog.vue_vue_type_script_setup_true_lang-BKqLc88N.js"},{"revision":null,"url":"assets/OpenDataImportSettings-CAAW1WFm.js"},{"revision":null,"url":"assets/OpenDataImportSettings.vue_vue_type_script_setup_true_lang-DCLFRok1.js"},{"revision":null,"url":"assets/pl-Bw1QwrJF.js"},{"revision":null,"url":"assets/PrivateRecipeBadge.vue_vue_type_script_setup_true_lang-CuYHMwhT.js"},{"revision":null,"url":"assets/PropertiesEditor.vue_vue_type_script_setup_true_lang-nI_GsYpC.js"},{"revision":null,"url":"assets/PropertyEditor-BAth2eIg.js"},{"revision":null,"url":"assets/PropertyEditorPage-DFfeym2k.js"},{"revision":null,"url":"assets/PropertyTypeEditor-g4a-YJm5.js"},{"revision":null,"url":"assets/pt_BR-CmypOiSZ.js"},{"revision":null,"url":"assets/pt-BQYvA8U5.js"},{"revision":null,"url":"assets/RecipeBookEditor-Bfg_IQG9.js"},{"revision":null,"url":"assets/RecipeCard-rQ-GRttr.css"},{"revision":null,"url":"assets/RecipeCard-ZQiVryVZ.js"},{"revision":null,"url":"assets/RecipeEditor-DEQYHWxs.css"},{"revision":null,"url":"assets/RecipeEditor-Z3qd3Db3.js"},{"revision":null,"url":"assets/RecipeImportPage-DvlxImUu.js"},{"revision":null,"url":"assets/RecipeViewPage-CDj_dH5L.js"},{"revision":null,"url":"assets/RecipeViewPage-CM8b9YNn.css"},{"revision":null,"url":"assets/ro-hKXgEgct.js"},{"revision":null,"url":"assets/ru-D8rOoH45.js"},{"revision":null,"url":"assets/SearchPage-C45eZpxy.css"},{"revision":null,"url":"assets/SearchPage-DRMC5092.js"},{"revision":null,"url":"assets/SearchSettings-Bh4iR-uS.js"},{"revision":null,"url":"assets/SettingsPage-BOXp8G3y.js"},{"revision":null,"url":"assets/ShoppingListEntryEditor-BO9U6pqW.js"},{"revision":null,"url":"assets/ShoppingListEntryInput-gUOw6bx_.css"},{"revision":null,"url":"assets/ShoppingListEntryInput.vue_vue_type_style_index_1_lang-DiO3wd3y.js"},{"revision":null,"url":"assets/ShoppingListPage-B_cxskGt.js"},{"revision":null,"url":"assets/ShoppingSettings-BX-lg7k4.js"},{"revision":null,"url":"assets/sl-B3Ayx07P.js"},{"revision":null,"url":"assets/SpaceEditor-BVY5PqRN.js"},{"revision":null,"url":"assets/SpaceEditor-Dwzvf-gD.css"},{"revision":null,"url":"assets/SpaceEditor.vue_vue_type_script_setup_true_lang-BWOLGWRZ.js"},{"revision":null,"url":"assets/SpaceSettings-sHmxWilN.js"},{"revision":null,"url":"assets/SpaceSetupPage-1bx6rG8x.js"},{"revision":null,"url":"assets/StartPage-CQln-PMM.js"},{"revision":null,"url":"assets/step_utils-C0FnMRXv.js"},{"revision":null,"url":"assets/StorageEditor-Bh3NIW08.js"},{"revision":null,"url":"assets/SupermarketCategoryEditor-CEyiKvko.js"},{"revision":null,"url":"assets/SupermarketEditor-DNtaUxLT.js"},{"revision":null,"url":"assets/SupermarketEditor.vue_vue_type_script_setup_true_lang-DaKxST5A.js"},{"revision":null,"url":"assets/sv-DTzfOfRk.js"},{"revision":null,"url":"assets/SyncEditor-Dx5MYHUU.js"},{"revision":null,"url":"assets/TestPage-C_oxH9Tf.js"},{"revision":null,"url":"assets/tr-BDuxtq3u.js"},{"revision":null,"url":"assets/uk-DvAHrEDJ.js"},{"revision":null,"url":"assets/UnitConversionEditor-D05heADw.js"},{"revision":null,"url":"assets/UnitEditor-DgXFUq4e.js"},{"revision":null,"url":"assets/useFileApi-4KcBp6Fj.js"},{"revision":null,"url":"assets/useModelEditorFunctions-Du2kfr61.js"},{"revision":null,"url":"assets/UserFileEditor-DKIOLwh6.js"},{"revision":null,"url":"assets/UserSpaceEditor-BmTIwJyp.js"},{"revision":null,"url":"assets/VAutocomplete-b809Bykv.js"},{"revision":null,"url":"assets/VAutocomplete-hzGuLlUI.css"},{"revision":null,"url":"assets/VColorPicker-C1f4VLsZ.css"},{"revision":null,"url":"assets/VColorPicker-DN5Oz5I8.js"},{"revision":null,"url":"assets/VDataTableServer-PUUq4Eqa.js"},{"revision":null,"url":"assets/VFileUpload-BVkHABkL.css"},{"revision":null,"url":"assets/VFileUpload-DmaEfjuX.js"},{"revision":null,"url":"assets/VListItemAction-BR9wagZD.js"},{"revision":null,"url":"assets/VRating-BGFrV4il.js"},{"revision":null,"url":"assets/VRating-DXAcz2oI.css"},{"revision":null,"url":"assets/VStepper-CIVMPw6C.css"},{"revision":null,"url":"assets/VStepper-lPKDXqVi.js"},{"revision":null,"url":"assets/VSwitch-BzI8Cngm.js"},{"revision":null,"url":"assets/VSwitch-Mm7Rd7At.css"},{"revision":null,"url":"assets/VTabs-BQFRhgOd.js"},{"revision":null,"url":"assets/VTabs-Bv8FUb0o.css"},{"revision":null,"url":"assets/VTextarea-BTR7f0gW.css"},{"revision":null,"url":"assets/VTextarea-Dyu7dPGe.js"},{"revision":null,"url":"assets/VTooltip-CP00KBBq.js"},{"revision":null,"url":"assets/VTooltip-Czf-fUM7.css"},{"revision":null,"url":"assets/WelcomePage-DtDFi2zH.js"},{"revision":null,"url":"assets/zh_Hans-PGOfrnqh.js"},{"revision":null,"url":"assets/zh_Hant-cAZlEyrm.js"},{"revision":"be6aad568a9de402ad83ef7601f9d6ce","url":"registerSW.js"},{"revision":"484f96e63b3baa1129bef780beaa35cc","url":"manifest.webmanifest"}]);self.skipWaiting();it();const oe="offline-html";let ct=typeof window<"u"?localStorage.getItem("SCRIPT_NAME"):"/";var he=ct+"offline/";self.addEventListener("install",async n=>{n.waitUntil(caches.open(oe).then(e=>e.add(new Request(he,{cache:"reload"}))))});Ae(({event:n})=>{switch(n.request.destination){case"document":return console.log("Triggered fallback HTML"),caches.open(oe).then(e=>e.match(he));default:return console.log("Triggered response ERROR"),Response.error()}});m(({request:n})=>n.destination==="image",new Me({cacheName:"images",plugins:[new S({maxEntries:20})]}));m(({request:n})=>n.destination==="script"||n.destination==="style",new P({cacheName:"assets"}));m(new RegExp("jsreverse"),new ne({cacheName:"assets"}));m(new RegExp("jsi18n"),new ne({cacheName:"assets"}));m(new RegExp("api/recipe/([0-9]+)"),new P({cacheName:"api-recipe",plugins:[new S({maxEntries:50})]}));const K=new rt("shopping-sync-queue",{maxRetentionTime:7*24*60});m(new RegExp("api/shopping-list-entry/([0-9]+)"),new Oe({plugins:[{fetchDidFail:async({request:n})=>{await K.pushRequest({request:n})}}]}),"PATCH");addEventListener("message",n=>{n.data.type==="BGSYNC_REPLAY_REQUESTS"&&K.replayRequests().then(e=>{n.ports[0].postMessage("REPLAY_SUCCESS SW")}).catch(e=>{n.ports[0].postMessage("REPLAY_FAILURE")}),n.data.type==="BGSYNC_COUNT_QUEUE"&&K.getAll().then(e=>{n.ports[0].postMessage(e.length)})});m(new RegExp("api/*"),new P({cacheName:"api",plugins:[new S({maxEntries:50})]}));m(({request:n})=>n.destination==="document",new P({cacheName:"html",plugins:[new S({maxAgeSeconds:60*60*24*30,maxEntries:50})]}));