/* 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