{"version":3,"file":"workbox-32092201.js","sources":["node_modules/workbox-core/_version.js","node_modules/workbox-core/_private/logger.js","node_modules/workbox-core/models/messages/messages.js","node_modules/workbox-core/models/messages/messageGenerator.js","node_modules/workbox-core/_private/WorkboxError.js","node_modules/workbox-core/_private/assert.js","node_modules/workbox-routing/_version.js","node_modules/workbox-routing/utils/constants.js","node_modules/workbox-routing/utils/normalizeHandler.js","node_modules/workbox-routing/Route.js","node_modules/workbox-routing/RegExpRoute.js","node_modules/workbox-core/_private/getFriendlyURL.js","node_modules/workbox-routing/Router.js","node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","node_modules/workbox-routing/registerRoute.js","node_modules/workbox-core/_private/timeout.js","node_modules/workbox-core/_private/cacheNames.js","node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","node_modules/workbox-core/_private/Deferred.js","node_modules/workbox-core/models/quotaErrorCallbacks.js","node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","node_modules/workbox-strategies/_version.js","node_modules/workbox-strategies/StrategyHandler.js","node_modules/workbox-strategies/Strategy.js","node_modules/workbox-strategies/utils/messages.js","node_modules/workbox-strategies/NetworkOnly.js","node_modules/workbox-core/clientsClaim.js"],"sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n    self['workbox:core:6.0.2'] && _();\n}\ncatch (e) { }\n","/*\n  Copyright 2019 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst logger = (process.env.NODE_ENV === 'production' ? null : (() => {\n    // Don't overwrite this value if it's already set.\n    // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n    if (!('__WB_DISABLE_DEV_LOGS' in self)) {\n        self.__WB_DISABLE_DEV_LOGS = false;\n    }\n    let inGroup = false;\n    const methodToColorMap = {\n        debug: `#7f8c8d`,\n        log: `#2ecc71`,\n        warn: `#f39c12`,\n        error: `#c0392b`,\n        groupCollapsed: `#3498db`,\n        groupEnd: null,\n    };\n    const print = function (method, args) {\n        if (self.__WB_DISABLE_DEV_LOGS) {\n            return;\n        }\n        if (method === 'groupCollapsed') {\n            // Safari doesn't print all console.groupCollapsed() arguments:\n            // https://bugs.webkit.org/show_bug.cgi?id=182754\n            if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n                console[method](...args);\n                return;\n            }\n        }\n        const styles = [\n            `background: ${methodToColorMap[method]}`,\n            `border-radius: 0.5em`,\n            `color: white`,\n            `font-weight: bold`,\n            `padding: 2px 0.5em`,\n        ];\n        // When in a group, the workbox prefix is not displayed.\n        const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n        console[method](...logPrefix, ...args);\n        if (method === 'groupCollapsed') {\n            inGroup = true;\n        }\n        if (method === 'groupEnd') {\n            inGroup = false;\n        }\n    };\n    const api = {};\n    const loggerMethods = Object.keys(methodToColorMap);\n    for (const key of loggerMethods) {\n        const method = key;\n        api[method] = (...args) => {\n            print(method, args);\n        };\n    }\n    return api;\n})());\nexport { logger };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../../_version.js';\nexport const messages = {\n    'invalid-value': ({ paramName, validValueDescription, value }) => {\n        if (!paramName || !validValueDescription) {\n            throw new Error(`Unexpected input to 'invalid-value' error.`);\n        }\n        return `The '${paramName}' parameter was given a value with an ` +\n            `unexpected value. ${validValueDescription} Received a value of ` +\n            `${JSON.stringify(value)}.`;\n    },\n    'not-an-array': ({ moduleName, className, funcName, paramName }) => {\n        if (!moduleName || !className || !funcName || !paramName) {\n            throw new Error(`Unexpected input to 'not-an-array' error.`);\n        }\n        return `The parameter '${paramName}' passed into ` +\n            `'${moduleName}.${className}.${funcName}()' must be an array.`;\n    },\n    'incorrect-type': ({ expectedType, paramName, moduleName, className, funcName }) => {\n        if (!expectedType || !paramName || !moduleName || !funcName) {\n            throw new Error(`Unexpected input to 'incorrect-type' error.`);\n        }\n        return `The parameter '${paramName}' passed into ` +\n            `'${moduleName}.${className ? (className + '.') : ''}` +\n            `${funcName}()' must be of type ${expectedType}.`;\n    },\n    'incorrect-class': ({ expectedClass, paramName, moduleName, className, funcName, isReturnValueProblem }) => {\n        if (!expectedClass || !moduleName || !funcName) {\n            throw new Error(`Unexpected input to 'incorrect-class' error.`);\n        }\n        if (isReturnValueProblem) {\n            return `The return value from ` +\n                `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n                `must be an instance of class ${expectedClass.name}.`;\n        }\n        return `The parameter '${paramName}' passed into ` +\n            `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n            `must be an instance of class ${expectedClass.name}.`;\n    },\n    'missing-a-method': ({ expectedMethod, paramName, moduleName, className, funcName }) => {\n        if (!expectedMethod || !paramName || !moduleName || !className\n            || !funcName) {\n            throw new Error(`Unexpected input to 'missing-a-method' error.`);\n        }\n        return `${moduleName}.${className}.${funcName}() expected the ` +\n            `'${paramName}' parameter to expose a '${expectedMethod}' method.`;\n    },\n    'add-to-cache-list-unexpected-type': ({ entry }) => {\n        return `An unexpected entry was passed to ` +\n            `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` +\n            `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` +\n            `strings with one or more characters, objects with a url property or ` +\n            `Request objects.`;\n    },\n    'add-to-cache-list-conflicting-entries': ({ firstEntry, secondEntry }) => {\n        if (!firstEntry || !secondEntry) {\n            throw new Error(`Unexpected input to ` +\n                `'add-to-cache-list-duplicate-entries' error.`);\n        }\n        return `Two of the entries passed to ` +\n            `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n            `${firstEntry._entryId} but different revision details. Workbox is ` +\n            `unable to cache and version the asset correctly. Please remove one ` +\n            `of the entries.`;\n    },\n    'plugin-error-request-will-fetch': ({ thrownError }) => {\n        if (!thrownError) {\n            throw new Error(`Unexpected input to ` +\n                `'plugin-error-request-will-fetch', error.`);\n        }\n        return `An error was thrown by a plugins 'requestWillFetch()' method. ` +\n            `The thrown error message was: '${thrownError.message}'.`;\n    },\n    'invalid-cache-name': ({ cacheNameId, value }) => {\n        if (!cacheNameId) {\n            throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`);\n        }\n        return `You must provide a name containing at least one character for ` +\n            `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` +\n            `'${JSON.stringify(value)}'`;\n    },\n    'unregister-route-but-not-found-with-method': ({ method }) => {\n        if (!method) {\n            throw new Error(`Unexpected input to ` +\n                `'unregister-route-but-not-found-with-method' error.`);\n        }\n        return `The route you're trying to unregister was not  previously ` +\n            `registered for the method type '${method}'.`;\n    },\n    'unregister-route-route-not-registered': () => {\n        return `The route you're trying to unregister was not previously ` +\n            `registered.`;\n    },\n    'queue-replay-failed': ({ name }) => {\n        return `Replaying the background sync queue '${name}' failed.`;\n    },\n    'duplicate-queue-name': ({ name }) => {\n        return `The Queue name '${name}' is already being used. ` +\n            `All instances of backgroundSync.Queue must be given unique names.`;\n    },\n    'expired-test-without-max-age': ({ methodName, paramName }) => {\n        return `The '${methodName}()' method can only be used when the ` +\n            `'${paramName}' is used in the constructor.`;\n    },\n    'unsupported-route-type': ({ moduleName, className, funcName, paramName }) => {\n        return `The supplied '${paramName}' parameter was an unsupported type. ` +\n            `Please check the docs for ${moduleName}.${className}.${funcName} for ` +\n            `valid input types.`;\n    },\n    'not-array-of-class': ({ value, expectedClass, moduleName, className, funcName, paramName }) => {\n        return `The supplied '${paramName}' parameter must be an array of ` +\n            `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` +\n            `Please check the call to ${moduleName}.${className}.${funcName}() ` +\n            `to fix the issue.`;\n    },\n    'max-entries-or-age-required': ({ moduleName, className, funcName }) => {\n        return `You must define either config.maxEntries or config.maxAgeSeconds` +\n            `in ${moduleName}.${className}.${funcName}`;\n    },\n    'statuses-or-headers-required': ({ moduleName, className, funcName }) => {\n        return `You must define either config.statuses or config.headers` +\n            `in ${moduleName}.${className}.${funcName}`;\n    },\n    'invalid-string': ({ moduleName, funcName, paramName }) => {\n        if (!paramName || !moduleName || !funcName) {\n            throw new Error(`Unexpected input to 'invalid-string' error.`);\n        }\n        return `When using strings, the '${paramName}' parameter must start with ` +\n            `'http' (for cross-origin matches) or '/' (for same-origin matches). ` +\n            `Please see the docs for ${moduleName}.${funcName}() for ` +\n            `more info.`;\n    },\n    'channel-name-required': () => {\n        return `You must provide a channelName to construct a ` +\n            `BroadcastCacheUpdate instance.`;\n    },\n    'invalid-responses-are-same-args': () => {\n        return `The arguments passed into responsesAreSame() appear to be ` +\n            `invalid. Please ensure valid Responses are used.`;\n    },\n    'expire-custom-caches-only': () => {\n        return `You must provide a 'cacheName' property when using the ` +\n            `expiration plugin with a runtime caching strategy.`;\n    },\n    'unit-must-be-bytes': ({ normalizedRangeHeader }) => {\n        if (!normalizedRangeHeader) {\n            throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`);\n        }\n        return `The 'unit' portion of the Range header must be set to 'bytes'. ` +\n            `The Range header provided was \"${normalizedRangeHeader}\"`;\n    },\n    'single-range-only': ({ normalizedRangeHeader }) => {\n        if (!normalizedRangeHeader) {\n            throw new Error(`Unexpected input to 'single-range-only' error.`);\n        }\n        return `Multiple ranges are not supported. Please use a  single start ` +\n            `value, and optional end value. The Range header provided was ` +\n            `\"${normalizedRangeHeader}\"`;\n    },\n    'invalid-range-values': ({ normalizedRangeHeader }) => {\n        if (!normalizedRangeHeader) {\n            throw new Error(`Unexpected input to 'invalid-range-values' error.`);\n        }\n        return `The Range header is missing both start and end values. At least ` +\n            `one of those values is needed. The Range header provided was ` +\n            `\"${normalizedRangeHeader}\"`;\n    },\n    'no-range-header': () => {\n        return `No Range header was found in the Request provided.`;\n    },\n    'range-not-satisfiable': ({ size, start, end }) => {\n        return `The start (${start}) and end (${end}) values in the Range are ` +\n            `not satisfiable by the cached response, which is ${size} bytes.`;\n    },\n    'attempt-to-cache-non-get-request': ({ url, method }) => {\n        return `Unable to cache '${url}' because it is a '${method}' request and ` +\n            `only 'GET' requests can be cached.`;\n    },\n    'cache-put-with-no-response': ({ url }) => {\n        return `There was an attempt to cache '${url}' but the response was not ` +\n            `defined.`;\n    },\n    'no-response': ({ url, error }) => {\n        let message = `The strategy could not generate a response for '${url}'.`;\n        if (error) {\n            message += ` The underlying error is ${error}.`;\n        }\n        return message;\n    },\n    'bad-precaching-response': ({ url, status }) => {\n        return `The precaching request for '${url}' failed` +\n            (status ? ` with an HTTP status of ${status}.` : `.`);\n    },\n    'non-precached-url': ({ url }) => {\n        return `createHandlerBoundToURL('${url}') was called, but that URL is ` +\n            `not precached. Please pass in a URL that is precached instead.`;\n    },\n    'add-to-cache-list-conflicting-integrities': ({ url }) => {\n        return `Two of the entries passed to ` +\n            `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n            `${url} with different integrity values. Please remove one of them.`;\n    },\n    'missing-precache-entry': ({ cacheName, url }) => {\n        return `Unable to find a precached response in ${cacheName} for ${url}.`;\n    },\n    'cross-origin-copy-response': ({ origin }) => {\n        return `workbox-core.copyResponse() can only be used with same-origin ` +\n            `responses. It was passed a response with origin ${origin}.`;\n    },\n};\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n    let msg = code;\n    if (args.length > 0) {\n        msg += ` :: ${JSON.stringify(args)}`;\n    }\n    return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n    const message = messages[code];\n    if (!message) {\n        throw new Error(`Unable to find message for code '${code}'.`);\n    }\n    return message(details);\n};\nexport const messageGenerator = (process.env.NODE_ENV === 'production') ?\n    fallback : generatorFunction;\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n    /**\n     *\n     * @param {string} errorCode The error code that\n     * identifies this particular error.\n     * @param {Object=} details Any relevant arguments\n     * that will help developers identify issues should\n     * be added as a key on the context object.\n     */\n    constructor(errorCode, details) {\n        const message = messageGenerator(errorCode, details);\n        super(message);\n        this.name = errorCode;\n        this.details = details;\n    }\n}\nexport { WorkboxError };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from '../_private/WorkboxError.js';\nimport '../_version.js';\n/*\n * This method throws if the supplied value is not an array.\n * The destructed values are required to produce a meaningful error for users.\n * The destructed and restructured object is so it's clear what is\n * needed.\n */\nconst isArray = (value, details) => {\n    if (!Array.isArray(value)) {\n        throw new WorkboxError('not-an-array', details);\n    }\n};\nconst hasMethod = (object, expectedMethod, details) => {\n    const type = typeof object[expectedMethod];\n    if (type !== 'function') {\n        details['expectedMethod'] = expectedMethod;\n        throw new WorkboxError('missing-a-method', details);\n    }\n};\nconst isType = (object, expectedType, details) => {\n    if (typeof object !== expectedType) {\n        details['expectedType'] = expectedType;\n        throw new WorkboxError('incorrect-type', details);\n    }\n};\nconst isInstance = (object, expectedClass, details) => {\n    if (!(object instanceof expectedClass)) {\n        details['expectedClass'] = expectedClass;\n        throw new WorkboxError('incorrect-class', details);\n    }\n};\nconst isOneOf = (value, validValues, details) => {\n    if (!validValues.includes(value)) {\n        details['validValueDescription'] =\n            `Valid values are ${JSON.stringify(validValues)}.`;\n        throw new WorkboxError('invalid-value', details);\n    }\n};\nconst isArrayOfClass = (value, expectedClass, details) => {\n    const error = new WorkboxError('not-array-of-class', details);\n    if (!Array.isArray(value)) {\n        throw error;\n    }\n    for (const item of value) {\n        if (!(item instanceof expectedClass)) {\n            throw error;\n        }\n    }\n};\nconst finalAssertExports = process.env.NODE_ENV === 'production' ? null : {\n    hasMethod,\n    isArray,\n    isInstance,\n    isOneOf,\n    isType,\n    isArrayOfClass,\n};\nexport { finalAssertExports as assert };\n","\"use strict\";\n// @ts-ignore\ntry {\n    self['workbox:routing:6.0.2'] && _();\n}\ncatch (e) { }\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array<string>}\n *\n * @private\n */\nexport const validMethods = [\n    'DELETE',\n    'GET',\n    'HEAD',\n    'PATCH',\n    'POST',\n    'PUT',\n];\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n    if (handler && typeof handler === 'object') {\n        if (process.env.NODE_ENV !== 'production') {\n            assert.hasMethod(handler, 'handle', {\n                moduleName: 'workbox-routing',\n                className: 'Route',\n                funcName: 'constructor',\n                paramName: 'handler',\n            });\n        }\n        return handler;\n    }\n    else {\n        if (process.env.NODE_ENV !== 'production') {\n            assert.isType(handler, 'function', {\n                moduleName: 'workbox-routing',\n                className: 'Route',\n                funcName: 'constructor',\n                paramName: 'handler',\n            });\n        }\n        return { handle: handler };\n    }\n};\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof module:workbox-routing\n */\nclass Route {\n    /**\n     * Constructor for Route class.\n     *\n     * @param {module:workbox-routing~matchCallback} match\n     * A callback function that determines whether the route matches a given\n     * `fetch` event by returning a non-falsy value.\n     * @param {module:workbox-routing~handlerCallback} handler A callback\n     * function that returns a Promise resolving to a Response.\n     * @param {string} [method='GET'] The HTTP method to match the Route\n     * against.\n     */\n    constructor(match, handler, method = defaultMethod) {\n        if (process.env.NODE_ENV !== 'production') {\n            assert.isType(match, 'function', {\n                moduleName: 'workbox-routing',\n                className: 'Route',\n                funcName: 'constructor',\n                paramName: 'match',\n            });\n            if (method) {\n                assert.isOneOf(method, validMethods, { paramName: 'method' });\n            }\n        }\n        // These values are referenced directly by Router so cannot be\n        // altered by minificaton.\n        this.handler = normalizeHandler(handler);\n        this.match = match;\n        this.method = method;\n    }\n}\nexport { Route };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * [Route]{@link module:workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * [See the module docs for info.]{@link https://developers.google.com/web/tools/workbox/modules/workbox-routing}\n *\n * @memberof module:workbox-routing\n * @extends module:workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n    /**\n     * If the regular expression contains\n     * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n     * the captured values will be passed to the\n     * [handler's]{@link module:workbox-routing~handlerCallback} `params`\n     * argument.\n     *\n     * @param {RegExp} regExp The regular expression to match against URLs.\n     * @param {module:workbox-routing~handlerCallback} handler A callback\n     * function that returns a Promise resulting in a Response.\n     * @param {string} [method='GET'] The HTTP method to match the Route\n     * against.\n     */\n    constructor(regExp, handler, method) {\n        if (process.env.NODE_ENV !== 'production') {\n            assert.isInstance(regExp, RegExp, {\n                moduleName: 'workbox-routing',\n                className: 'RegExpRoute',\n                funcName: 'constructor',\n                paramName: 'pattern',\n            });\n        }\n        const match = ({ url }) => {\n            const result = regExp.exec(url.href);\n            // Return immediately if there's no match.\n            if (!result) {\n                return;\n            }\n            // Require that the match start at the first character in the URL string\n            // if it's a cross-origin request.\n            // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n            // behind this behavior.\n            if ((url.origin !== location.origin) && (result.index !== 0)) {\n                if (process.env.NODE_ENV !== 'production') {\n                    logger.debug(`The regular expression '${regExp}' only partially matched ` +\n                        `against the cross-origin URL '${url}'. RegExpRoute's will only ` +\n                        `handle cross-origin requests if they match the entire URL.`);\n                }\n                return;\n            }\n            // If the route matches, but there aren't any capture groups defined, then\n            // this will return [], which is truthy and therefore sufficient to\n            // indicate a match.\n            // If there are capture groups, then it will return their values.\n            return result.slice(1);\n        };\n        super(match, handler, method);\n    }\n}\nexport { RegExpRoute };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n    const urlObj = new URL(String(url), location.href);\n    // See https://github.com/GoogleChrome/workbox/issues/2323\n    // We want to include everything, except for the origin if it's same-origin.\n    return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a FetchEvent through one or more\n * [Routes]{@link module:workbox-routing.Route} responding  with a Request if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof module:workbox-routing\n */\nclass Router {\n    /**\n     * Initializes a new Router.\n     */\n    constructor() {\n        this._routes = new Map();\n        this._defaultHandlerMap = new Map();\n    }\n    /**\n     * @return {Map<string, Array<module:workbox-routing.Route>>} routes A `Map` of HTTP\n     * method name ('GET', etc.) to an array of all the corresponding `Route`\n     * instances that are registered.\n     */\n    get routes() {\n        return this._routes;\n    }\n    /**\n     * Adds a fetch event listener to respond to events when a route matches\n     * the event's request.\n     */\n    addFetchListener() {\n        // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n        self.addEventListener('fetch', ((event) => {\n            const { request } = event;\n            const responsePromise = this.handleRequest({ request, event });\n            if (responsePromise) {\n                event.respondWith(responsePromise);\n            }\n        }));\n    }\n    /**\n     * Adds a message event listener for URLs to cache from the window.\n     * This is useful to cache resources loaded on the page prior to when the\n     * service worker started controlling it.\n     *\n     * The format of the message data sent from the window should be as follows.\n     * Where the `urlsToCache` array may consist of URL strings or an array of\n     * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n     *\n     * ```\n     * {\n     *   type: 'CACHE_URLS',\n     *   payload: {\n     *     urlsToCache: [\n     *       './script1.js',\n     *       './script2.js',\n     *       ['./script3.js', {mode: 'no-cors'}],\n     *     ],\n     *   },\n     * }\n     * ```\n     */\n    addCacheListener() {\n        // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n        self.addEventListener('message', ((event) => {\n            if (event.data && event.data.type === 'CACHE_URLS') {\n                const { payload } = event.data;\n                if (process.env.NODE_ENV !== 'production') {\n                    logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n                }\n                const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n                    if (typeof entry === 'string') {\n                        entry = [entry];\n                    }\n                    const request = new Request(...entry);\n                    return this.handleRequest({ request, event });\n                    // TODO(philipwalton): TypeScript errors without this typecast for\n                    // some reason (probably a bug). The real type here should work but\n                    // doesn't: `Array<Promise<Response> | undefined>`.\n                })); // TypeScript\n                event.waitUntil(requestPromises);\n                // If a MessageChannel was used, reply to the message on success.\n                if (event.ports && event.ports[0]) {\n                    requestPromises.then(() => event.ports[0].postMessage(true));\n                }\n            }\n        }));\n    }\n    /**\n     * Apply the routing rules to a FetchEvent object to get a Response from an\n     * appropriate Route's handler.\n     *\n     * @param {Object} options\n     * @param {Request} options.request The request to handle.\n     * @param {ExtendableEvent} options.event The event that triggered the\n     *     request.\n     * @return {Promise<Response>|undefined} A promise is returned if a\n     *     registered route can handle the request. If there is no matching\n     *     route and there's no `defaultHandler`, `undefined` is returned.\n     */\n    handleRequest({ request, event }) {\n        if (process.env.NODE_ENV !== 'production') {\n            assert.isInstance(request, Request, {\n                moduleName: 'workbox-routing',\n                className: 'Router',\n                funcName: 'handleRequest',\n                paramName: 'options.request',\n            });\n        }\n        const url = new URL(request.url, location.href);\n        if (!url.protocol.startsWith('http')) {\n            if (process.env.NODE_ENV !== 'production') {\n                logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n            }\n            return;\n        }\n        const sameOrigin = url.origin === location.origin;\n        const { params, route } = this.findMatchingRoute({\n            event,\n            request,\n            sameOrigin,\n            url,\n        });\n        let handler = route && route.handler;\n        const debugMessages = [];\n        if (process.env.NODE_ENV !== 'production') {\n            if (handler) {\n                debugMessages.push([\n                    `Found a route to handle this request:`, route,\n                ]);\n                if (params) {\n                    debugMessages.push([\n                        `Passing the following params to the route's handler:`, params,\n                    ]);\n                }\n            }\n        }\n        // If we don't have a handler because there was no matching route, then\n        // fall back to defaultHandler if that's defined.\n        const method = request.method;\n        if (!handler && this._defaultHandlerMap.has(method)) {\n            if (process.env.NODE_ENV !== 'production') {\n                debugMessages.push(`Failed to find a matching route. Falling ` +\n                    `back to the default handler for ${method}.`);\n            }\n            handler = this._defaultHandlerMap.get(method);\n        }\n        if (!handler) {\n            if (process.env.NODE_ENV !== 'production') {\n                // No handler so Workbox will do nothing. If logs is set of debug\n                // i.e. verbose, we should print out this information.\n                logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n            }\n            return;\n        }\n        if (process.env.NODE_ENV !== 'production') {\n            // We have a handler, meaning Workbox is going to handle the route.\n            // print the routing details to the console.\n            logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n            debugMessages.forEach((msg) => {\n                if (Array.isArray(msg)) {\n                    logger.log(...msg);\n                }\n                else {\n                    logger.log(msg);\n                }\n            });\n            logger.groupEnd();\n        }\n        // Wrap in try and catch in case the handle method throws a synchronous\n        // error. It should still callback to the catch handler.\n        let responsePromise;\n        try {\n            responsePromise = handler.handle({ url, request, event, params });\n        }\n        catch (err) {\n            responsePromise = Promise.reject(err);\n        }\n        if (responsePromise instanceof Promise && this._catchHandler) {\n            responsePromise = responsePromise.catch((err) => {\n                if (process.env.NODE_ENV !== 'production') {\n                    // Still include URL here as it will be async from the console group\n                    // and may not make sense without the URL\n                    logger.groupCollapsed(`Error thrown when responding to: ` +\n                        ` ${getFriendlyURL(url)}. Falling back to Catch Handler.`);\n                    logger.error(`Error thrown by:`, route);\n                    logger.error(err);\n                    logger.groupEnd();\n                }\n                return this._catchHandler.handle({ url, request, event });\n            });\n        }\n        return responsePromise;\n    }\n    /**\n     * Checks a request and URL (and optionally an event) against the list of\n     * registered routes, and if there's a match, returns the corresponding\n     * route along with any params generated by the match.\n     *\n     * @param {Object} options\n     * @param {URL} options.url\n     * @param {Request} options.request The request to match.\n     * @param {Event} options.event The corresponding event.\n     * @return {Object} An object with `route` and `params` properties.\n     *     They are populated if a matching route was found or `undefined`\n     *     otherwise.\n     */\n    findMatchingRoute({ url, sameOrigin, request, event }) {\n        const routes = this._routes.get(request.method) || [];\n        for (const route of routes) {\n            let params;\n            const matchResult = route.match({ url, sameOrigin, request, event });\n            if (matchResult) {\n                if (process.env.NODE_ENV !== 'production') {\n                    // Warn developers that using an async matchCallback is almost always\n                    // not the right thing to do. \n                    if (matchResult instanceof Promise) {\n                        logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n                            `matchCallback function was used. Please convert the ` +\n                            `following route to use a synchronous matchCallback function:`, route);\n                    }\n                }\n                // See https://github.com/GoogleChrome/workbox/issues/2079\n                params = matchResult;\n                if (Array.isArray(matchResult) && matchResult.length === 0) {\n                    // Instead of passing an empty array in as params, use undefined.\n                    params = undefined;\n                }\n                else if ((matchResult.constructor === Object &&\n                    Object.keys(matchResult).length === 0)) {\n                    // Instead of passing an empty object in as params, use undefined.\n                    params = undefined;\n                }\n                else if (typeof matchResult === 'boolean') {\n                    // For the boolean value true (rather than just something truth-y),\n                    // don't set params.\n                    // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n                    params = undefined;\n                }\n                // Return early if have a match.\n                return { route, params };\n            }\n        }\n        // If no match was found above, return and empty object.\n        return {};\n    }\n    /**\n     * Define a default `handler` that's called when no routes explicitly\n     * match the incoming request.\n     *\n     * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n     *\n     * Without a default handler, unmatched requests will go against the\n     * network as if there were no service worker present.\n     *\n     * @param {module:workbox-routing~handlerCallback} handler A callback\n     * function that returns a Promise resulting in a Response.\n     * @param {string} [method='GET'] The HTTP method to associate with this\n     * default handler. Each method has its own default.\n     */\n    setDefaultHandler(handler, method = defaultMethod) {\n        this._defaultHandlerMap.set(method, normalizeHandler(handler));\n    }\n    /**\n     * If a Route throws an error while handling a request, this `handler`\n     * will be called and given a chance to provide a response.\n     *\n     * @param {module:workbox-routing~handlerCallback} handler A callback\n     * function that returns a Promise resulting in a Response.\n     */\n    setCatchHandler(handler) {\n        this._catchHandler = normalizeHandler(handler);\n    }\n    /**\n     * Registers a route with the router.\n     *\n     * @param {module:workbox-routing.Route} route The route to register.\n     */\n    registerRoute(route) {\n        if (process.env.NODE_ENV !== 'production') {\n            assert.isType(route, 'object', {\n                moduleName: 'workbox-routing',\n                className: 'Router',\n                funcName: 'registerRoute',\n                paramName: 'route',\n            });\n            assert.hasMethod(route, 'match', {\n                moduleName: 'workbox-routing',\n                className: 'Router',\n                funcName: 'registerRoute',\n                paramName: 'route',\n            });\n            assert.isType(route.handler, 'object', {\n                moduleName: 'workbox-routing',\n                className: 'Router',\n                funcName: 'registerRoute',\n                paramName: 'route',\n            });\n            assert.hasMethod(route.handler, 'handle', {\n                moduleName: 'workbox-routing',\n                className: 'Router',\n                funcName: 'registerRoute',\n                paramName: 'route.handler',\n            });\n            assert.isType(route.method, 'string', {\n                moduleName: 'workbox-routing',\n                className: 'Router',\n                funcName: 'registerRoute',\n                paramName: 'route.method',\n            });\n        }\n        if (!this._routes.has(route.method)) {\n            this._routes.set(route.method, []);\n        }\n        // Give precedence to all of the earlier routes by adding this additional\n        // route to the end of the array.\n        this._routes.get(route.method).push(route);\n    }\n    /**\n     * Unregisters a route with the router.\n     *\n     * @param {module:workbox-routing.Route} route The route to unregister.\n     */\n    unregisterRoute(route) {\n        if (!this._routes.has(route.method)) {\n            throw new WorkboxError('unregister-route-but-not-found-with-method', {\n                method: route.method,\n            });\n        }\n        const routeIndex = this._routes.get(route.method).indexOf(route);\n        if (routeIndex > -1) {\n            this._routes.get(route.method).splice(routeIndex, 1);\n        }\n        else {\n            throw new WorkboxError('unregister-route-route-not-registered');\n        }\n    }\n}\nexport { Router };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n    if (!defaultRouter) {\n        defaultRouter = new Router();\n        // The helpers that use the default Router assume these listeners exist.\n        defaultRouter.addFetchListener();\n        defaultRouter.addCacheListener();\n    }\n    return defaultRouter;\n};\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call [registerRoute()]{@link module:workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|module:workbox-routing.Route~matchCallback|module:workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {module:workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {module:workbox-routing.Route} The generated `Route`(Useful for\n * unregistering).\n *\n * @memberof module:workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n    let route;\n    if (typeof capture === 'string') {\n        const captureUrl = new URL(capture, location.href);\n        if (process.env.NODE_ENV !== 'production') {\n            if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n                throw new WorkboxError('invalid-string', {\n                    moduleName: 'workbox-routing',\n                    funcName: 'registerRoute',\n                    paramName: 'capture',\n                });\n            }\n            // We want to check if Express-style wildcards are in the pathname only.\n            // TODO: Remove this log message in v4.\n            const valueToCheck = capture.startsWith('http') ?\n                captureUrl.pathname : capture;\n            // See https://github.com/pillarjs/path-to-regexp#parameters\n            const wildcards = '[*:?+]';\n            if ((new RegExp(`${wildcards}`)).exec(valueToCheck)) {\n                logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n                    `character (${wildcards}). Strings are now always interpreted as ` +\n                    `exact matches; use a RegExp for partial or wildcard matches.`);\n            }\n        }\n        const matchCallback = ({ url }) => {\n            if (process.env.NODE_ENV !== 'production') {\n                if ((url.pathname === captureUrl.pathname) &&\n                    (url.origin !== captureUrl.origin)) {\n                    logger.debug(`${capture} only partially matches the cross-origin URL ` +\n                        `${url}. This route will only handle cross-origin requests ` +\n                        `if they match the entire URL.`);\n                }\n            }\n            return url.href === captureUrl.href;\n        };\n        // If `capture` is a string then `handler` and `method` must be present.\n        route = new Route(matchCallback, handler, method);\n    }\n    else if (capture instanceof RegExp) {\n        // If `capture` is a `RegExp` then `handler` and `method` must be present.\n        route = new RegExpRoute(capture, handler, method);\n    }\n    else if (typeof capture === 'function') {\n        // If `capture` is a function then `handler` and `method` must be present.\n        route = new Route(capture, handler, method);\n    }\n    else if (capture instanceof Route) {\n        route = capture;\n    }\n    else {\n        throw new WorkboxError('unsupported-route-type', {\n            moduleName: 'workbox-routing',\n            funcName: 'registerRoute',\n            paramName: 'capture',\n        });\n    }\n    const defaultRouter = getOrCreateDefaultRouter();\n    defaultRouter.registerRoute(route);\n    return route;\n}\nexport { registerRoute };\n","/*\n  Copyright 2019 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n    return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n    googleAnalytics: 'googleAnalytics',\n    precache: 'precache-v2',\n    prefix: 'workbox',\n    runtime: 'runtime',\n    suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n    return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n        .filter((value) => value && value.length > 0)\n        .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n    for (const key of Object.keys(_cacheNameDetails)) {\n        fn(key);\n    }\n};\nexport const cacheNames = {\n    updateDetails: (details) => {\n        eachCacheNameDetail((key) => {\n            if (typeof details[key] === 'string') {\n                _cacheNameDetails[key] = details[key];\n            }\n        });\n    },\n    getGoogleAnalyticsName: (userCacheName) => {\n        return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n    },\n    getPrecacheName: (userCacheName) => {\n        return userCacheName || _createCacheName(_cacheNameDetails.precache);\n    },\n    getPrefix: () => {\n        return _cacheNameDetails.prefix;\n    },\n    getRuntimeName: (userCacheName) => {\n        return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n    },\n    getSuffix: () => {\n        return _cacheNameDetails.suffix;\n    },\n};\n","/*\n  Copyright 2020 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n    const strippedURL = new URL(fullURL);\n    for (const param of ignoreParams) {\n        strippedURL.searchParams.delete(param);\n    }\n    return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array<string>} ignoreParams\n * @return {Promise<Response|undefined>}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n    const strippedRequestURL = stripParams(request.url, ignoreParams);\n    // If the request doesn't include any ignored params, match as normal.\n    if (request.url === strippedRequestURL) {\n        return cache.match(request, matchOptions);\n    }\n    // Otherwise, match by comparing keys\n    const keysOptions = { ...matchOptions, ignoreSearch: true };\n    const cacheKeys = await cache.keys(request, keysOptions);\n    for (const cacheKey of cacheKeys) {\n        const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n        if (strippedRequestURL === strippedCacheKeyURL) {\n            return cache.match(cacheKey, matchOptions);\n        }\n    }\n    return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n    /**\n     * Creates a promise and exposes its resolve and reject functions as methods.\n     */\n    constructor() {\n        this.promise = new Promise((resolve, reject) => {\n            this.resolve = resolve;\n            this.reject = reject;\n        });\n    }\n}\nexport { Deferred };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof module:workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n    if (process.env.NODE_ENV !== 'production') {\n        logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n            `callbacks to clean up caches.`);\n    }\n    for (const callback of quotaErrorCallbacks) {\n        await callback();\n        if (process.env.NODE_ENV !== 'production') {\n            logger.log(callback, 'is complete.');\n        }\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        logger.log('Finished running callbacks.');\n    }\n}\nexport { executeQuotaErrorCallbacks };\n","\"use strict\";\n// @ts-ignore\ntry {\n    self['workbox:strategies:6.0.2'] && _();\n}\ncatch (e) { }\n","/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n    return (typeof input === 'string') ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * [handle()]{@link module:workbox-strategies.Strategy~handle} or\n * [handleAll()]{@link module:workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof module:workbox-strategies\n */\nclass StrategyHandler {\n    /**\n     * Creates a new instance associated with the passed strategy and event\n     * that's handling the request.\n     *\n     * The constructor also initializes the state that will be passed to each of\n     * the plugins handling this request.\n     *\n     * @param {module:workbox-strategies.Strategy} strategy\n     * @param {Object} options\n     * @param {Request|string} options.request A request to run this strategy for.\n     * @param {ExtendableEvent} options.event The event associated with the\n     *     request.\n     * @param {URL} [options.url]\n     * @param {*} [options.params]\n     *     [match callback]{@link module:workbox-routing~matchCallback},\n     *     (if applicable).\n     */\n    constructor(strategy, options) {\n        this._cacheKeys = {};\n        /**\n         * The request the strategy is performing (passed to the strategy's\n         * `handle()` or `handleAll()` method).\n         * @name request\n         * @instance\n         * @type {Request}\n         * @memberof module:workbox-strategies.StrategyHandler\n         */\n        /**\n         * The event associated with this request.\n         * @name event\n         * @instance\n         * @type {ExtendableEvent}\n         * @memberof module:workbox-strategies.StrategyHandler\n         */\n        /**\n         * A `URL` instance of `request.url` (if passed to the strategy's\n         * `handle()` or `handleAll()` method).\n         * Note: the `url` param will be present if the strategy was invoked\n         * from a workbox `Route` object.\n         * @name url\n         * @instance\n         * @type {URL|undefined}\n         * @memberof module:workbox-strategies.StrategyHandler\n         */\n        /**\n         * A `param` value (if passed to the strategy's\n         * `handle()` or `handleAll()` method).\n         * Note: the `param` param will be present if the strategy was invoked\n         * from a workbox `Route` object and the\n         * [match callback]{@link module:workbox-routing~matchCallback} returned\n         * a truthy value (it will be that value).\n         * @name params\n         * @instance\n         * @type {*|undefined}\n         * @memberof module:workbox-strategies.StrategyHandler\n         */\n        if (process.env.NODE_ENV !== 'production') {\n            assert.isInstance(options.event, ExtendableEvent, {\n                moduleName: 'workbox-strategies',\n                className: 'StrategyHandler',\n                funcName: 'constructor',\n                paramName: 'options.event',\n            });\n        }\n        Object.assign(this, options);\n        this.event = options.event;\n        this._strategy = strategy;\n        this._handlerDeferred = new Deferred();\n        this._extendLifetimePromises = [];\n        // Copy the plugins list (since it's mutable on the strategy),\n        // so any mutations don't affect this handler instance.\n        this._plugins = [...strategy.plugins];\n        this._pluginStateMap = new Map();\n        for (const plugin of this._plugins) {\n            this._pluginStateMap.set(plugin, {});\n        }\n        this.event.waitUntil(this._handlerDeferred.promise);\n    }\n    /**\n     * Fetches a given request (and invokes any applicable plugin callback\n     * methods) using the `fetchOptions` and `plugins` defined on the strategy\n     * object.\n     *\n     * The following plugin lifecycle methods are invoked when using this method:\n     * - `requestWillFetch()`\n     * - `fetchDidSucceed()`\n     * - `fetchDidFail()`\n     *\n     * @param {Request|string} input The URL or request to fetch.\n     * @return {Promise<Response>}\n     */\n    fetch(input) {\n        return this.waitUntil((async () => {\n            const { event } = this;\n            let request = toRequest(input);\n            if (request.mode === 'navigate' &&\n                event instanceof FetchEvent &&\n                event.preloadResponse) {\n                const possiblePreloadResponse = await event.preloadResponse;\n                if (possiblePreloadResponse) {\n                    if (process.env.NODE_ENV !== 'production') {\n                        logger.log(`Using a preloaded navigation response for ` +\n                            `'${getFriendlyURL(request.url)}'`);\n                    }\n                    return possiblePreloadResponse;\n                }\n            }\n            // If there is a fetchDidFail plugin, we need to save a clone of the\n            // original request before it's either modified by a requestWillFetch\n            // plugin or before the original request's body is consumed via fetch().\n            const originalRequest = this.hasCallback('fetchDidFail') ?\n                request.clone() : null;\n            try {\n                for (const cb of this.iterateCallbacks('requestWillFetch')) {\n                    request = await cb({ request: request.clone(), event });\n                }\n            }\n            catch (err) {\n                throw new WorkboxError('plugin-error-request-will-fetch', {\n                    thrownError: err,\n                });\n            }\n            // The request can be altered by plugins with `requestWillFetch` making\n            // the original request (most likely from a `fetch` event) different\n            // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n            const pluginFilteredRequest = request.clone();\n            try {\n                let fetchResponse;\n                // See https://github.com/GoogleChrome/workbox/issues/1796\n                fetchResponse = await fetch(request, request.mode === 'navigate' ?\n                    undefined : this._strategy.fetchOptions);\n                if (process.env.NODE_ENV !== 'production') {\n                    logger.debug(`Network request for ` +\n                        `'${getFriendlyURL(request.url)}' returned a response with ` +\n                        `status '${fetchResponse.status}'.`);\n                }\n                for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n                    fetchResponse = await callback({\n                        event,\n                        request: pluginFilteredRequest,\n                        response: fetchResponse,\n                    });\n                }\n                return fetchResponse;\n            }\n            catch (error) {\n                if (process.env.NODE_ENV !== 'production') {\n                    logger.error(`Network request for ` +\n                        `'${getFriendlyURL(request.url)}' threw an error.`, error);\n                }\n                // `originalRequest` will only exist if a `fetchDidFail` callback\n                // is being used (see above).\n                if (originalRequest) {\n                    await this.runCallbacks('fetchDidFail', {\n                        error,\n                        event,\n                        originalRequest: originalRequest.clone(),\n                        request: pluginFilteredRequest.clone(),\n                    });\n                }\n                throw error;\n            }\n        })());\n    }\n    /**\n     * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n     * the response generated by `this.fetch()`.\n     *\n     * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n     * so you do not have to manually call `waitUntil()` on the event.\n     *\n     * @param {Request|string} input The request or URL to fetch and cache.\n     * @return {Promise<Response>}\n     */\n    async fetchAndCachePut(input) {\n        const response = await this.fetch(input);\n        const responseClone = response.clone();\n        this.waitUntil(this.cachePut(input, responseClone));\n        return response;\n    }\n    /**\n     * Matches a request from the cache (and invokes any applicable plugin\n     * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n     * defined on the strategy object.\n     *\n     * The following plugin lifecycle methods are invoked when using this method:\n     * - cacheKeyWillByUsed()\n     * - cachedResponseWillByUsed()\n     *\n     * @param {Request|string} key The Request or URL to use as the cache key.\n     * @return {Promise<Response|undefined>} A matching response, if found.\n     */\n    cacheMatch(key) {\n        return this.waitUntil((async () => {\n            const request = toRequest(key);\n            let cachedResponse;\n            const { cacheName, matchOptions } = this._strategy;\n            const effectiveRequest = await this.getCacheKey(request, 'read');\n            const multiMatchOptions = { ...matchOptions, ...{ cacheName } };\n            cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n            if (process.env.NODE_ENV !== 'production') {\n                if (cachedResponse) {\n                    logger.debug(`Found a cached response in '${cacheName}'.`);\n                }\n                else {\n                    logger.debug(`No cached response found in '${cacheName}'.`);\n                }\n            }\n            for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n                cachedResponse = (await callback({\n                    cacheName,\n                    matchOptions,\n                    cachedResponse,\n                    request: effectiveRequest,\n                    event: this.event,\n                })) || undefined;\n            }\n            return cachedResponse;\n        })());\n    }\n    /**\n     * Puts a request/response pair in the cache (and invokes any applicable\n     * plugin callback methods) using the `cacheName` and `plugins` defined on\n     * the strategy object.\n     *\n     * The following plugin lifecycle methods are invoked when using this method:\n     * - cacheKeyWillByUsed()\n     * - cacheWillUpdate()\n     * - cacheDidUpdate()\n     *\n     * @param {Request|string} key The request or URL to use as the cache key.\n     * @param {Promise<void>} response The response to cache.\n     */\n    async cachePut(key, response) {\n        const request = toRequest(key);\n        // Run in the next task to avoid blocking other cache reads.\n        // https://github.com/w3c/ServiceWorker/issues/1397\n        await timeout(0);\n        const effectiveRequest = await this.getCacheKey(request, 'write');\n        if (process.env.NODE_ENV !== 'production') {\n            if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n                throw new WorkboxError('attempt-to-cache-non-get-request', {\n                    url: getFriendlyURL(effectiveRequest.url),\n                    method: effectiveRequest.method,\n                });\n            }\n        }\n        if (!response) {\n            if (process.env.NODE_ENV !== 'production') {\n                logger.error(`Cannot cache non-existent response for ` +\n                    `'${getFriendlyURL(effectiveRequest.url)}'.`);\n            }\n            throw new WorkboxError('cache-put-with-no-response', {\n                url: getFriendlyURL(effectiveRequest.url),\n            });\n        }\n        const responseToCache = await this._ensureResponseSafeToCache(response);\n        if (!responseToCache) {\n            if (process.env.NODE_ENV !== 'production') {\n                logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n                    `will not be cached.`, responseToCache);\n            }\n            return;\n        }\n        const { cacheName, matchOptions } = this._strategy;\n        const cache = await self.caches.open(cacheName);\n        const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n        const oldResponse = hasCacheUpdateCallback ? await cacheMatchIgnoreParams(\n        // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n        // feature. Consider into ways to only add this behavior if using\n        // precaching.\n        cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions) :\n            null;\n        if (process.env.NODE_ENV !== 'production') {\n            logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n                `for ${getFriendlyURL(effectiveRequest.url)}.`);\n        }\n        try {\n            await cache.put(effectiveRequest, hasCacheUpdateCallback ?\n                responseToCache.clone() : responseToCache);\n        }\n        catch (error) {\n            // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n            if (error.name === 'QuotaExceededError') {\n                await executeQuotaErrorCallbacks();\n            }\n            throw error;\n        }\n        for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n            await callback({\n                cacheName,\n                oldResponse,\n                newResponse: responseToCache.clone(),\n                request: effectiveRequest,\n                event: this.event,\n            });\n        }\n    }\n    /**\n     * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n     * executes any of those callbacks found in sequence. The final `Request`\n     * object returned by the last plugin is treated as the cache key for cache\n     * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n     * been registered, the passed request is returned unmodified\n     *\n     * @param {Request} request\n     * @param {string} mode\n     * @return {Promise<Request>}\n     */\n    async getCacheKey(request, mode) {\n        if (!this._cacheKeys[mode]) {\n            let effectiveRequest = request;\n            for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n                effectiveRequest = toRequest(await callback({\n                    mode,\n                    request: effectiveRequest,\n                    event: this.event,\n                    params: this.params,\n                }));\n            }\n            this._cacheKeys[mode] = effectiveRequest;\n        }\n        return this._cacheKeys[mode];\n    }\n    /**\n     * Returns true if the strategy has at least one plugin with the given\n     * callback.\n     *\n     * @param {string} name The name of the callback to check for.\n     * @return {boolean}\n     */\n    hasCallback(name) {\n        for (const plugin of this._strategy.plugins) {\n            if (name in plugin) {\n                return true;\n            }\n        }\n        return false;\n    }\n    /**\n     * Runs all plugin callbacks matching the given name, in order, passing the\n     * given param object (merged ith the current plugin state) as the only\n     * argument.\n     *\n     * Note: since this method runs all plugins, it's not suitable for cases\n     * where the return value of a callback needs to be applied prior to calling\n     * the next callback. See\n     * [`iterateCallbacks()`]{@link module:workbox-strategies.StrategyHandler#iterateCallbacks}\n     * below for how to handle that case.\n     *\n     * @param {string} name The name of the callback to run within each plugin.\n     * @param {Object} param The object to pass as the first (and only) param\n     *     when executing each callback. This object will be merged with the\n     *     current plugin state prior to callback execution.\n     */\n    async runCallbacks(name, param) {\n        for (const callback of this.iterateCallbacks(name)) {\n            // TODO(philipwalton): not sure why `any` is needed. It seems like\n            // this should work with `as WorkboxPluginCallbackParam[C]`.\n            await callback(param);\n        }\n    }\n    /**\n     * Accepts a callback and returns an iterable of matching plugin callbacks,\n     * where each callback is wrapped with the current handler state (i.e. when\n     * you call each callback, whatever object parameter you pass it will\n     * be merged with the plugin's current state).\n     *\n     * @param {string} name The name fo the callback to run\n     * @return {Array<Function>}\n     */\n    *iterateCallbacks(name) {\n        for (const plugin of this._strategy.plugins) {\n            if (typeof plugin[name] === 'function') {\n                const state = this._pluginStateMap.get(plugin);\n                const statefulCallback = (param) => {\n                    const statefulParam = { ...param, state };\n                    // TODO(philipwalton): not sure why `any` is needed. It seems like\n                    // this should work with `as WorkboxPluginCallbackParam[C]`.\n                    return plugin[name](statefulParam);\n                };\n                yield statefulCallback;\n            }\n        }\n    }\n    /**\n     * Adds a promise to the\n     * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n     * of the event event associated with the request being handled (usually a\n     * `FetchEvent`).\n     *\n     * Note: you can await\n     * [`doneWaiting()`]{@link module:workbox-strategies.StrategyHandler~doneWaiting}\n     * to know when all added promises have settled.\n     *\n     * @param {Promise} promise A promise to add to the extend lifetime promises\n     *     of the event that triggered the request.\n     */\n    waitUntil(promise) {\n        this._extendLifetimePromises.push(promise);\n        return promise;\n    }\n    /**\n     * Returns a promise that resolves once all promises passed to\n     * [`waitUntil()`]{@link module:workbox-strategies.StrategyHandler~waitUntil}\n     * have settled.\n     *\n     * Note: any work done after `doneWaiting()` settles should be manually\n     * passed to an event's `waitUntil()` method (not this handler's\n     * `waitUntil()` method), otherwise the service worker thread my be killed\n     * prior to your work completing.\n     */\n    async doneWaiting() {\n        let promise;\n        while (promise = this._extendLifetimePromises.shift()) {\n            await promise;\n        }\n    }\n    /**\n     * Stops running the strategy and immediately resolves any pending\n     * `waitUntil()` promises.\n     */\n    destroy() {\n        this._handlerDeferred.resolve();\n    }\n    /**\n     * This method will call cacheWillUpdate on the available plugins (or use\n     * status === 200) to determine if the Response is safe and valid to cache.\n     *\n     * @param {Request} options.request\n     * @param {Response} options.response\n     * @return {Promise<Response|undefined>}\n     *\n     * @private\n     */\n    async _ensureResponseSafeToCache(response) {\n        let responseToCache = response;\n        let pluginsUsed = false;\n        for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n            responseToCache = (await callback({\n                request: this.request,\n                response: responseToCache,\n                event: this.event,\n            })) || undefined;\n            pluginsUsed = true;\n            if (!responseToCache) {\n                break;\n            }\n        }\n        if (!pluginsUsed) {\n            if (responseToCache && responseToCache.status !== 200) {\n                responseToCache = undefined;\n            }\n            if (process.env.NODE_ENV !== 'production') {\n                if (responseToCache) {\n                    if (responseToCache.status !== 200) {\n                        if (responseToCache.status === 0) {\n                            logger.warn(`The response for '${this.request.url}' ` +\n                                `is an opaque response. The caching strategy that you're ` +\n                                `using will not cache opaque responses by default.`);\n                        }\n                        else {\n                            logger.debug(`The response for '${this.request.url}' ` +\n                                `returned a status code of '${response.status}' and won't ` +\n                                `be cached as a result.`);\n                        }\n                    }\n                }\n            }\n        }\n        return responseToCache;\n    }\n}\nexport { StrategyHandler };\n","/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof module:workbox-strategies\n */\nclass Strategy {\n    /**\n     * Creates a new instance of the strategy and sets all documented option\n     * properties as public instance properties.\n     *\n     * Note: if a custom strategy class extends the base Strategy class and does\n     * not need more than these properties, it does not need to define its own\n     * constructor.\n     *\n     * @param {Object} [options]\n     * @param {string} [options.cacheName] Cache name to store and retrieve\n     * requests. Defaults to the cache names provided by\n     * [workbox-core]{@link module:workbox-core.cacheNames}.\n     * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n     * to use in conjunction with this caching strategy.\n     * @param {Object} [options.fetchOptions] Values passed along to the\n     * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n     * of all fetch() requests made by this strategy.\n     * @param {Object} [options.matchOptions] The\n     * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n     * for any `cache.match()` or `cache.put()` calls made by this strategy.\n     */\n    constructor(options = {}) {\n        /**\n         * Cache name to store and retrieve\n         * requests. Defaults to the cache names provided by\n         * [workbox-core]{@link module:workbox-core.cacheNames}.\n         *\n         * @type {string}\n         */\n        this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n        /**\n         * The list\n         * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n         * used by this strategy.\n         *\n         * @type {Array<Object>}\n         */\n        this.plugins = options.plugins || [];\n        /**\n         * Values passed along to the\n         * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n         * of all fetch() requests made by this strategy.\n         *\n         * @type {Object}\n         */\n        this.fetchOptions = options.fetchOptions;\n        /**\n         * The\n         * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n         * for any `cache.match()` or `cache.put()` calls made by this strategy.\n         *\n         * @type {Object}\n         */\n        this.matchOptions = options.matchOptions;\n    }\n    /**\n     * Perform a request strategy and returns a `Promise` that will resolve with\n     * a `Response`, invoking all relevant plugin callbacks.\n     *\n     * When a strategy instance is registered with a Workbox\n     * [route]{@link module:workbox-routing.Route}, this method is automatically\n     * called when the route matches.\n     *\n     * Alternatively, this method can be used in a standalone `FetchEvent`\n     * listener by passing it to `event.respondWith()`.\n     *\n     * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n     *     properties listed below.\n     * @param {Request|string} options.request A request to run this strategy for.\n     * @param {ExtendableEvent} options.event The event associated with the\n     *     request.\n     * @param {URL} [options.url]\n     * @param {*} [options.params]\n     */\n    handle(options) {\n        const [responseDone] = this.handleAll(options);\n        return responseDone;\n    }\n    /**\n     * Similar to [`handle()`]{@link module:workbox-strategies.Strategy~handle}, but\n     * instead of just returning a `Promise` that resolves to a `Response` it\n     * it will return an tuple of [response, done] promises, where the former\n     * (`response`) is equivalent to what `handle()` returns, and the latter is a\n     * Promise that will resolve once any promises that were added to\n     * `event.waitUntil()` as part of performing the strategy have completed.\n     *\n     * You can await the `done` promise to ensure any extra work performed by\n     * the strategy (usually caching responses) completes successfully.\n     *\n     * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n     *     properties listed below.\n     * @param {Request|string} options.request A request to run this strategy for.\n     * @param {ExtendableEvent} options.event The event associated with the\n     *     request.\n     * @param {URL} [options.url]\n     * @param {*} [options.params]\n     * @return {Array<Promise>} A tuple of [response, done]\n     *     promises that can be used to determine when the response resolves as\n     *     well as when the handler has completed all its work.\n     */\n    handleAll(options) {\n        // Allow for flexible options to be passed.\n        if (options instanceof FetchEvent) {\n            options = {\n                event: options,\n                request: options.request,\n            };\n        }\n        const event = options.event;\n        const request = typeof options.request === 'string' ?\n            new Request(options.request) :\n            options.request;\n        const params = 'params' in options ? options.params : undefined;\n        const handler = new StrategyHandler(this, { event, request, params });\n        const responseDone = this._getResponse(handler, request, event);\n        const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n        // Return an array of promises, suitable for use with Promise.all().\n        return [responseDone, handlerDone];\n    }\n    async _getResponse(handler, request, event) {\n        await handler.runCallbacks('handlerWillStart', { event, request });\n        let response = undefined;\n        try {\n            response = await this._handle(request, handler);\n            // The \"official\" Strategy subclasses all throw this error automatically,\n            // but in case a third-party Strategy doesn't, ensure that we have a\n            // consistent failure when there's no response or an error response.\n            if (!response || response.type === 'error') {\n                throw new WorkboxError('no-response', { url: request.url });\n            }\n        }\n        catch (error) {\n            for (const callback of handler.iterateCallbacks('handlerDidError')) {\n                response = await callback({ error, event, request });\n                if (response) {\n                    break;\n                }\n            }\n            if (!response) {\n                throw error;\n            }\n            else if (process.env.NODE_ENV !== 'production') {\n                logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n                    `an ${error} error occurred. Using a fallback response provided by ` +\n                    `a handlerDidError plugin.`);\n            }\n        }\n        for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n            response = await callback({ event, request, response });\n        }\n        return response;\n    }\n    async _awaitComplete(responseDone, handler, request, event) {\n        let response;\n        let error;\n        try {\n            response = await responseDone;\n        }\n        catch (error) {\n            // Ignore errors, as response errors should be caught via the `response`\n            // promise above. The `done` promise will only throw for errors in\n            // promises passed to `handler.waitUntil()`.\n        }\n        try {\n            await handler.runCallbacks('handlerDidRespond', {\n                event,\n                request,\n                response,\n            });\n            await handler.doneWaiting();\n        }\n        catch (waitUntilError) {\n            error = waitUntilError;\n        }\n        await handler.runCallbacks('handlerDidComplete', {\n            event,\n            request,\n            response,\n            error,\n        });\n        handler.destroy();\n        if (error) {\n            throw error;\n        }\n    }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the [`handler`]{@link module:workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {module:workbox-strategies.StrategyHandler} handler\n * @return {Promise<Response>}\n *\n * @memberof module:workbox-strategies.Strategy\n */\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport '../_version.js';\nexport const messages = {\n    strategyStart: (strategyName, request) => `Using ${strategyName} to respond to '${getFriendlyURL(request.url)}'`,\n    printFinalResponse: (response) => {\n        if (response) {\n            logger.groupCollapsed(`View the final response here.`);\n            logger.log(response || '[No response returned]');\n            logger.groupEnd();\n        }\n    },\n};\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [network-only]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-only}\n * request strategy.\n *\n * This class is useful if you want to take advantage of any\n * [Workbox plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}.\n *\n * If the network request fails, this will throw a `WorkboxError` exception.\n *\n * @extends module:workbox-strategies.Strategy\n * @memberof module:workbox-strategies\n */\nclass NetworkOnly extends Strategy {\n    /**\n     * @param {Object} [options]\n     * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n     * to use in conjunction with this caching strategy.\n     * @param {Object} [options.fetchOptions] Values passed along to the\n     * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n     * of all fetch() requests made by this strategy.\n     * @param {number} [options.networkTimeoutSeconds] If set, any network requests\n     * that fail to respond within the timeout will result in a network error.\n     */\n    constructor(options = {}) {\n        super(options);\n        this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;\n    }\n    /**\n     * @private\n     * @param {Request|string} request A request to run this strategy for.\n     * @param {module:workbox-strategies.StrategyHandler} handler The event that\n     *     triggered the request.\n     * @return {Promise<Response>}\n     */\n    async _handle(request, handler) {\n        if (process.env.NODE_ENV !== 'production') {\n            assert.isInstance(request, Request, {\n                moduleName: 'workbox-strategies',\n                className: this.constructor.name,\n                funcName: '_handle',\n                paramName: 'request',\n            });\n        }\n        let error = undefined;\n        let response;\n        try {\n            const promises = [handler.fetch(request)];\n            if (this._networkTimeoutSeconds) {\n                const timeoutPromise = timeout(this._networkTimeoutSeconds * 1000);\n                promises.push(timeoutPromise);\n            }\n            response = await Promise.race(promises);\n            if (!response) {\n                throw new Error(`Timed out the network response after ` +\n                    `${this._networkTimeoutSeconds} seconds.`);\n            }\n        }\n        catch (err) {\n            error = err;\n        }\n        if (process.env.NODE_ENV !== 'production') {\n            logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n            if (response) {\n                logger.log(`Got response from network.`);\n            }\n            else {\n                logger.log(`Unable to get a response from the network.`);\n            }\n            messages.printFinalResponse(response);\n            logger.groupEnd();\n        }\n        if (!response) {\n            throw new WorkboxError('no-response', { url: request.url, error });\n        }\n        return response;\n    }\n}\nexport { NetworkOnly };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport './_version.js';\n/**\n * Claim any currently available clients once the service worker\n * becomes active. This is normally used in conjunction with `skipWaiting()`.\n *\n * @memberof module:workbox-core\n */\nfunction clientsClaim() {\n    self.addEventListener('activate', () => self.clients.claim());\n}\nexport { clientsClaim };\n"],"names":["self","_","e","logger","__WB_DISABLE_DEV_LOGS","inGroup","methodToColorMap","debug","log","warn","error","groupCollapsed","groupEnd","print","method","args","test","navigator","userAgent","console","styles","logPrefix","join","api","loggerMethods","Object","keys","key","messages","paramName","validValueDescription","value","Error","JSON","stringify","moduleName","className","funcName","expectedType","expectedClass","isReturnValueProblem","name","expectedMethod","entry","firstEntry","secondEntry","_entryId","thrownError","message","cacheNameId","methodName","normalizedRangeHeader","size","start","end","url","status","cacheName","origin","generatorFunction","code","details","messageGenerator","WorkboxError","constructor","errorCode","isArray","Array","hasMethod","object","type","isType","isInstance","isOneOf","validValues","includes","isArrayOfClass","item","finalAssertExports","defaultMethod","validMethods","normalizeHandler","handler","assert","handle","Route","match","RegExpRoute","regExp","RegExp","result","exec","href","location","index","slice","getFriendlyURL","urlObj","URL","String","replace","Router","_routes","Map","_defaultHandlerMap","routes","addFetchListener","addEventListener","event","request","responsePromise","handleRequest","respondWith","addCacheListener","data","payload","urlsToCache","requestPromises","Promise","all","map","Request","waitUntil","ports","then","postMessage","protocol","startsWith","sameOrigin","params","route","findMatchingRoute","debugMessages","push","has","get","forEach","msg","err","reject","_catchHandler","catch","matchResult","length","undefined","setDefaultHandler","set","setCatchHandler","registerRoute","unregisterRoute","routeIndex","indexOf","splice","defaultRouter","getOrCreateDefaultRouter","capture","captureUrl","valueToCheck","pathname","wildcards","matchCallback","timeout","ms","resolve","setTimeout","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","filter","eachCacheNameDetail","fn","cacheNames","updateDetails","getGoogleAnalyticsName","userCacheName","getPrecacheName","getPrefix","getRuntimeName","getSuffix","stripParams","fullURL","ignoreParams","strippedURL","param","searchParams","delete","cacheMatchIgnoreParams","cache","matchOptions","strippedRequestURL","keysOptions","ignoreSearch","cacheKeys","cacheKey","strippedCacheKeyURL","Deferred","promise","quotaErrorCallbacks","Set","executeQuotaErrorCallbacks","callback","toRequest","input","StrategyHandler","strategy","options","_cacheKeys","ExtendableEvent","assign","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","plugins","_pluginStateMap","plugin","fetch","mode","FetchEvent","preloadResponse","possiblePreloadResponse","originalRequest","hasCallback","clone","cb","iterateCallbacks","pluginFilteredRequest","fetchResponse","fetchOptions","response","runCallbacks","fetchAndCachePut","responseClone","cachePut","cacheMatch","cachedResponse","effectiveRequest","getCacheKey","multiMatchOptions","caches","responseToCache","_ensureResponseSafeToCache","open","hasCacheUpdateCallback","oldResponse","put","newResponse","state","statefulCallback","statefulParam","doneWaiting","shift","destroy","pluginsUsed","Strategy","responseDone","handleAll","_getResponse","handlerDone","_awaitComplete","_handle","waitUntilError","strategyStart","strategyName","printFinalResponse","NetworkOnly","_networkTimeoutSeconds","networkTimeoutSeconds","promises","timeoutPromise","race","clientsClaim","clients","claim"],"mappings":"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B;;IC5BtB;IACA;AACA;IACA;IACA;IACA;IACA;IAOA;IACA;IACA;IACA;IACA;;IACA,MAAMc,QAAN,CAAe;IACX;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACIpM,EAAAA,WAAW,CAACmJ,OAAO,GAAG,EAAX,EAAe;IACtB;IACR;IACA;IACA;IACA;IACA;IACA;IACQ,SAAK1J,SAAL,GAAiBwH,UAAU,CAACM,cAAX,CAA0B4B,OAAO,CAAC1J,SAAlC,CAAjB;IACA;IACR;IACA;IACA;IACA;IACA;IACA;;IACQ,SAAKkK,OAAL,GAAeR,OAAO,CAACQ,OAAR,IAAmB,EAAlC;IACA;IACR;IACA;IACA;IACA;IACA;IACA;;IACQ,SAAKe,YAAL,GAAoBvB,OAAO,CAACuB,YAA5B;IACA;IACR;IACA;IACA;IACA;IACA;IACA;;IACQ,SAAKxC,YAAL,GAAoBiB,OAAO,CAACjB,YAA5B;IACH;IACD;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;IACI9G,EAAAA,MAAM,CAAC+H,OAAD,EAAU;IACZ,UAAM,CAACkD,YAAD,IAAiB,KAAKC,SAAL,CAAenD,OAAf,CAAvB;IACA,WAAOkD,YAAP;IACH;IACD;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;IACIC,EAAAA,SAAS,CAACnD,OAAD,EAAU;IACf;IACA,QAAIA,OAAO,YAAYa,UAAvB,EAAmC;IAC/Bb,MAAAA,OAAO,GAAG;IACNvG,QAAAA,KAAK,EAAEuG,OADD;IAENtG,QAAAA,OAAO,EAAEsG,OAAO,CAACtG;IAFX,OAAV;IAIH;;IACD,UAAMD,KAAK,GAAGuG,OAAO,CAACvG,KAAtB;IACA,UAAMC,OAAO,GAAG,OAAOsG,OAAO,CAACtG,OAAf,KAA2B,QAA3B,GACZ,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"}