/* PWA v0.6.0-front */ /* Note: This file is dynamically generated. To manipulate the contents of this file, use the `wp_front_service_worker` action in WordPress. /* /* Source wp-base-config: */ !function(){"use strict";try{self["workbox:sw:5.1.4"]&&_()}catch(t){}const t={backgroundSync:"background-sync",broadcastUpdate:"broadcast-update",cacheableResponse:"cacheable-response",core:"core",expiration:"expiration",googleAnalytics:"offline-ga",navigationPreload:"navigation-preload",precaching:"precaching",rangeRequests:"range-requests",routing:"routing",strategies:"strategies",streams:"streams"};self.workbox=new class{constructor(){return this.v={},this.t={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.s=this.t.debug?"dev":"prod",this.o=!1,new Proxy(this,{get(e,s){if(e[s])return e[s];const o=t[s];return o&&e.loadModule("workbox-"+o),e[s]}})}setConfig(t={}){if(this.o)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.t,t),this.s=this.t.debug?"dev":"prod"}loadModule(t){const e=this.i(t);try{importScripts(e),this.o=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}i(t){if(this.t.modulePathCb)return this.t.modulePathCb(t,this.t.debug);let e=["https://storage.googleapis.com/workbox-cdn/releases/5.1.4"];const s=`${t}.${this.s}.js`,o=this.t.modulePathPrefix;return o&&(e=o.split("/"),""===e[e.length-1]&&e.splice(e.length-1,1)),e.push(s),e.join("/")}}}(); workbox.setConfig( {"debug":false,"modulePathPrefix":"https:\/\/cakebycourtney.com\/wp-content\/plugins\/pwa\/wp-includes\/js\/workbox-v5.1.4\/"} ); workbox.core.setCacheNameDetails( {"prefix":"wp-\/","precache":"precache-front","suffix":"v1"} ); workbox.core.skipWaiting(); workbox.core.clientsClaim(); /* global workbox */ /** * Handle registering caching strategies. */ if (!self.wp) { self.wp = {}; } wp.serviceWorker = workbox; /* * Skip the waiting phase for the Service Worker when a message with a 'skipWaiting' action is sent from a client. * Note that this message is not currently being sent in the codebase, but the logic remains here to provide a * mechanism for clients to skip waiting if they want to. */ self.addEventListener('message', function (event) { if ('skipWaiting' === event.data.action) { self.skipWaiting(); } }); /* Source wp-precaching-routes: */ // IIFE is used for lexical scoping instead of just a braces block due to bug in Safari. (() => { wp.serviceWorker.precaching.precache([{"url":"https:\/\/cakebycourtney.com\/?wp_error_template=offline","revision":"0.6.0;cake-by-courtney-2021=1.0.0;options=72db244bad1b32fef70be3a854c50d99;nav=563e5c3f9ea9775528b7a42273954781;deps=286f2f158c00084882f9efded09c04f8;b0f78a24a94e63103f6d5031e4a72b1a"},{"url":"https:\/\/cakebycourtney.com\/?wp_error_template=500","revision":"0.6.0;cake-by-courtney-2021=1.0.0;options=72db244bad1b32fef70be3a854c50d99;nav=563e5c3f9ea9775528b7a42273954781;deps=286f2f158c00084882f9efded09c04f8;6528bd5160f699b82c6a5700416ef20e"}]); // @todo Should not these parameters be specific to each entry as opposed to all entries? // @todo Should not the strategy be tied to each entry as well? // @todo Use networkFirst instead of cacheFirst when WP_DEBUG. wp.serviceWorker.precaching.addRoute({ ignoreUrlParametersMatching: [/^utm_/, /^wp-mce-/, /^ver$/], // @todo Add urlManipulation which allows for the list of ignoreUrlParametersMatching to be supplied with each entry. }); })(); /* Source wp-offline-commenting: */ // IIFE is used for lexical scoping instead of just a braces block due to bug with const in Safari. (() => { const queue = new wp.serviceWorker.backgroundSync.Queue( 'wpPendingComments' ); const errorMessages = {"clientOffline":"It seems you are offline. Please check your internet connection and try again.","serverOffline":"The server appears to be down, or your connection isn't working as expected. Please try again later.","error":"Something prevented the page from being rendered. Please try again.","comment":"Your comment will be submitted once you are back online!"}; const commentHandler = ({ event }) => { const clone = event.request.clone(); return fetch(event.request) .then((response) => { if (response.status < 500) { return response; } // @todo This is duplicated with code in service-worker-navigation-routing.js. return response.text().then(function (errorText) { return caches .match( wp.serviceWorker.precaching.getCacheKeyForURL( "https:\/\/cakebycourtney.com\/?wp_error_template=500" ) ) .then(function (errorResponse) { if (!errorResponse) { return response; } return errorResponse.text().then(function (text) { const init = { status: errorResponse.status, statusText: errorResponse.statusText, headers: errorResponse.headers, }; let body = text.replace( /[<]!--WP_SERVICE_WORKER_ERROR_MESSAGE-->/, errorMessages.error ); body = body.replace( /([<]!--WP_SERVICE_WORKER_ERROR_TEMPLATE_BEGIN-->)((?:.|\n)+?)([<]!--WP_SERVICE_WORKER_ERROR_TEMPLATE_END-->)/, (details) => { if (!errorText) { return ''; // Remove the details from the document entirely. } const src = 'data:text/html;base64,' + btoa(errorText); // The errorText encoded as a text/html data URL. const srcdoc = errorText .replace(/&/g, '&') .replace(/'/g, ''') .replace(/"/g, '"') .replace(//g, '>'); const iframe = ``; details = details.replace( '{{{error_details_iframe}}}', iframe ); // The following are in case the user wants to include the `; details = details.replace( '{{{error_details_iframe}}}', iframe ); // The following are in case the user wants to include the