1140 lines
55 KiB
JavaScript
1140 lines
55 KiB
JavaScript
"use strict";
|
|
(self["webpackChunkjjbook"] = self["webpackChunkjjbook"] || []).push([["src_sw_js"],{
|
|
|
|
/***/ "./src/sw.js":
|
|
/*!*******************!*\
|
|
!*** ./src/sw.js ***!
|
|
\*******************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "default": () => (/* binding */ swCustom)
|
|
/* harmony export */ });
|
|
/* harmony import */ var workbox_routing__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! workbox-routing */ "./node_modules/workbox-routing/index.mjs");
|
|
/* harmony import */ var workbox_strategies__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! workbox-strategies */ "./node_modules/workbox-strategies/index.mjs");
|
|
|
|
|
|
|
|
// default fn export receiving some useful params
|
|
function swCustom(params) {
|
|
const {
|
|
debug,
|
|
// :boolean
|
|
offlineMode // :boolean
|
|
} = params;
|
|
|
|
// Cache responses from external resources
|
|
(0,workbox_routing__WEBPACK_IMPORTED_MODULE_0__.registerRoute)(context => {
|
|
return [/githubusercontent/, /\/awesome-interview\//].some(regex => context.url.href.match(regex));
|
|
}, new workbox_strategies__WEBPACK_IMPORTED_MODULE_1__.StaleWhileRevalidate());
|
|
}
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-routing/NavigationRoute.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/workbox-routing/NavigationRoute.js ***!
|
|
\*********************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "NavigationRoute": () => (/* binding */ NavigationRoute)
|
|
/* harmony export */ });
|
|
/* harmony import */ var workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! workbox-core/_private/assert.js */ "./node_modules/workbox-core/_private/assert.js");
|
|
/* harmony import */ var workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! workbox-core/_private/logger.js */ "./node_modules/workbox-core/_private/logger.js");
|
|
/* harmony import */ var _Route_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Route.js */ "./node_modules/workbox-routing/Route.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-routing/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
* NavigationRoute makes it easy to create a
|
|
* {@link workbox-routing.Route} that matches for browser
|
|
* [navigation requests]{@link https://developers.google.com/web/fundamentals/primers/service-workers/high-performance-loading#first_what_are_navigation_requests}.
|
|
*
|
|
* It will only match incoming Requests whose
|
|
* {@link https://fetch.spec.whatwg.org/#concept-request-mode|mode}
|
|
* is set to `navigate`.
|
|
*
|
|
* You can optionally only apply this route to a subset of navigation requests
|
|
* by using one or both of the `denylist` and `allowlist` parameters.
|
|
*
|
|
* @memberof workbox-routing
|
|
* @extends workbox-routing.Route
|
|
*/
|
|
class NavigationRoute extends _Route_js__WEBPACK_IMPORTED_MODULE_2__.Route {
|
|
/**
|
|
* If both `denylist` and `allowlist` are provided, the `denylist` will
|
|
* take precedence and the request will not match this route.
|
|
*
|
|
* The regular expressions in `allowlist` and `denylist`
|
|
* are matched against the concatenated
|
|
* [`pathname`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/pathname}
|
|
* and [`search`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search}
|
|
* portions of the requested URL.
|
|
*
|
|
* *Note*: These RegExps may be evaluated against every destination URL during
|
|
* a navigation. Avoid using
|
|
* [complex RegExps](https://github.com/GoogleChrome/workbox/issues/3077),
|
|
* or else your users may see delays when navigating your site.
|
|
*
|
|
* @param {workbox-routing~handlerCallback} handler A callback
|
|
* function that returns a Promise resulting in a Response.
|
|
* @param {Object} options
|
|
* @param {Array<RegExp>} [options.denylist] If any of these patterns match,
|
|
* the route will not handle the request (even if a allowlist RegExp matches).
|
|
* @param {Array<RegExp>} [options.allowlist=[/./]] If any of these patterns
|
|
* match the URL's pathname and search parameter, the route will handle the
|
|
* request (assuming the denylist doesn't match).
|
|
*/
|
|
constructor(handler, { allowlist = [/./], denylist = [] } = {}) {
|
|
if (true) {
|
|
workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__.assert.isArrayOfClass(allowlist, RegExp, {
|
|
moduleName: 'workbox-routing',
|
|
className: 'NavigationRoute',
|
|
funcName: 'constructor',
|
|
paramName: 'options.allowlist',
|
|
});
|
|
workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__.assert.isArrayOfClass(denylist, RegExp, {
|
|
moduleName: 'workbox-routing',
|
|
className: 'NavigationRoute',
|
|
funcName: 'constructor',
|
|
paramName: 'options.denylist',
|
|
});
|
|
}
|
|
super((options) => this._match(options), handler);
|
|
this._allowlist = allowlist;
|
|
this._denylist = denylist;
|
|
}
|
|
/**
|
|
* Routes match handler.
|
|
*
|
|
* @param {Object} options
|
|
* @param {URL} options.url
|
|
* @param {Request} options.request
|
|
* @return {boolean}
|
|
*
|
|
* @private
|
|
*/
|
|
_match({ url, request }) {
|
|
if (request && request.mode !== 'navigate') {
|
|
return false;
|
|
}
|
|
const pathnameAndSearch = url.pathname + url.search;
|
|
for (const regExp of this._denylist) {
|
|
if (regExp.test(pathnameAndSearch)) {
|
|
if (true) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.log(`The navigation route ${pathnameAndSearch} is not ` +
|
|
`being used, since the URL matches this denylist pattern: ` +
|
|
`${regExp.toString()}`);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
if (this._allowlist.some((regExp) => regExp.test(pathnameAndSearch))) {
|
|
if (true) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.debug(`The navigation route ${pathnameAndSearch} ` + `is being used.`);
|
|
}
|
|
return true;
|
|
}
|
|
if (true) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.log(`The navigation route ${pathnameAndSearch} is not ` +
|
|
`being used, since the URL being navigated to doesn't ` +
|
|
`match the allowlist.`);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-routing/index.js":
|
|
/*!***********************************************!*\
|
|
!*** ./node_modules/workbox-routing/index.js ***!
|
|
\***********************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "NavigationRoute": () => (/* reexport safe */ _NavigationRoute_js__WEBPACK_IMPORTED_MODULE_0__.NavigationRoute),
|
|
/* harmony export */ "RegExpRoute": () => (/* reexport safe */ _RegExpRoute_js__WEBPACK_IMPORTED_MODULE_1__.RegExpRoute),
|
|
/* harmony export */ "Route": () => (/* reexport safe */ _Route_js__WEBPACK_IMPORTED_MODULE_3__.Route),
|
|
/* harmony export */ "Router": () => (/* reexport safe */ _Router_js__WEBPACK_IMPORTED_MODULE_4__.Router),
|
|
/* harmony export */ "registerRoute": () => (/* reexport safe */ _registerRoute_js__WEBPACK_IMPORTED_MODULE_2__.registerRoute),
|
|
/* harmony export */ "setCatchHandler": () => (/* reexport safe */ _setCatchHandler_js__WEBPACK_IMPORTED_MODULE_5__.setCatchHandler),
|
|
/* harmony export */ "setDefaultHandler": () => (/* reexport safe */ _setDefaultHandler_js__WEBPACK_IMPORTED_MODULE_6__.setDefaultHandler)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _NavigationRoute_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NavigationRoute.js */ "./node_modules/workbox-routing/NavigationRoute.js");
|
|
/* harmony import */ var _RegExpRoute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RegExpRoute.js */ "./node_modules/workbox-routing/RegExpRoute.js");
|
|
/* harmony import */ var _registerRoute_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./registerRoute.js */ "./node_modules/workbox-routing/registerRoute.js");
|
|
/* harmony import */ var _Route_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Route.js */ "./node_modules/workbox-routing/Route.js");
|
|
/* harmony import */ var _Router_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Router.js */ "./node_modules/workbox-routing/Router.js");
|
|
/* harmony import */ var _setCatchHandler_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./setCatchHandler.js */ "./node_modules/workbox-routing/setCatchHandler.js");
|
|
/* harmony import */ var _setDefaultHandler_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./setDefaultHandler.js */ "./node_modules/workbox-routing/setDefaultHandler.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-routing/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_7__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* @module workbox-routing
|
|
*/
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-routing/setCatchHandler.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/workbox-routing/setCatchHandler.js ***!
|
|
\*********************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "setCatchHandler": () => (/* binding */ setCatchHandler)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _utils_getOrCreateDefaultRouter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/getOrCreateDefaultRouter.js */ "./node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-routing/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
/*
|
|
Copyright 2019 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
/**
|
|
* If a Route throws an error while handling a request, this `handler`
|
|
* will be called and given a chance to provide a response.
|
|
*
|
|
* @param {workbox-routing~handlerCallback} handler A callback
|
|
* function that returns a Promise resulting in a Response.
|
|
*
|
|
* @memberof workbox-routing
|
|
*/
|
|
function setCatchHandler(handler) {
|
|
const defaultRouter = (0,_utils_getOrCreateDefaultRouter_js__WEBPACK_IMPORTED_MODULE_0__.getOrCreateDefaultRouter)();
|
|
defaultRouter.setCatchHandler(handler);
|
|
}
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-routing/setDefaultHandler.js":
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/workbox-routing/setDefaultHandler.js ***!
|
|
\***********************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "setDefaultHandler": () => (/* binding */ setDefaultHandler)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _utils_getOrCreateDefaultRouter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/getOrCreateDefaultRouter.js */ "./node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-routing/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
/*
|
|
Copyright 2019 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
/**
|
|
* Define a default `handler` that's called when no routes explicitly
|
|
* match the incoming request.
|
|
*
|
|
* Without a default handler, unmatched requests will go against the
|
|
* network as if there were no service worker present.
|
|
*
|
|
* @param {workbox-routing~handlerCallback} handler A callback
|
|
* function that returns a Promise resulting in a Response.
|
|
*
|
|
* @memberof workbox-routing
|
|
*/
|
|
function setDefaultHandler(handler) {
|
|
const defaultRouter = (0,_utils_getOrCreateDefaultRouter_js__WEBPACK_IMPORTED_MODULE_0__.getOrCreateDefaultRouter)();
|
|
defaultRouter.setDefaultHandler(handler);
|
|
}
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-strategies/CacheFirst.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/workbox-strategies/CacheFirst.js ***!
|
|
\*******************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "CacheFirst": () => (/* binding */ CacheFirst)
|
|
/* harmony export */ });
|
|
/* harmony import */ var workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! workbox-core/_private/assert.js */ "./node_modules/workbox-core/_private/assert.js");
|
|
/* harmony import */ var workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! workbox-core/_private/logger.js */ "./node_modules/workbox-core/_private/logger.js");
|
|
/* harmony import */ var workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! workbox-core/_private/WorkboxError.js */ "./node_modules/workbox-core/_private/WorkboxError.js");
|
|
/* harmony import */ var _Strategy_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Strategy.js */ "./node_modules/workbox-strategies/Strategy.js");
|
|
/* harmony import */ var _utils_messages_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/messages.js */ "./node_modules/workbox-strategies/utils/messages.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-strategies/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* An implementation of a [cache-first](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#cache-first-falling-back-to-network)
|
|
* request strategy.
|
|
*
|
|
* A cache first strategy is useful for assets that have been revisioned,
|
|
* such as URLs like `/styles/example.a8f5f1.css`, since they
|
|
* can be cached for long periods of time.
|
|
*
|
|
* If the network request fails, and there is no cache match, this will throw
|
|
* a `WorkboxError` exception.
|
|
*
|
|
* @extends workbox-strategies.Strategy
|
|
* @memberof workbox-strategies
|
|
*/
|
|
class CacheFirst extends _Strategy_js__WEBPACK_IMPORTED_MODULE_3__.Strategy {
|
|
/**
|
|
* @private
|
|
* @param {Request|string} request A request to run this strategy for.
|
|
* @param {workbox-strategies.StrategyHandler} handler The event that
|
|
* triggered the request.
|
|
* @return {Promise<Response>}
|
|
*/
|
|
async _handle(request, handler) {
|
|
const logs = [];
|
|
if (true) {
|
|
workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__.assert.isInstance(request, Request, {
|
|
moduleName: 'workbox-strategies',
|
|
className: this.constructor.name,
|
|
funcName: 'makeRequest',
|
|
paramName: 'request',
|
|
});
|
|
}
|
|
let response = await handler.cacheMatch(request);
|
|
let error = undefined;
|
|
if (!response) {
|
|
if (true) {
|
|
logs.push(`No response found in the '${this.cacheName}' cache. ` +
|
|
`Will respond with a network request.`);
|
|
}
|
|
try {
|
|
response = await handler.fetchAndCachePut(request);
|
|
}
|
|
catch (err) {
|
|
if (err instanceof Error) {
|
|
error = err;
|
|
}
|
|
}
|
|
if (true) {
|
|
if (response) {
|
|
logs.push(`Got response from network.`);
|
|
}
|
|
else {
|
|
logs.push(`Unable to get a response from the network.`);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (true) {
|
|
logs.push(`Found a cached response in the '${this.cacheName}' cache.`);
|
|
}
|
|
}
|
|
if (true) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupCollapsed(_utils_messages_js__WEBPACK_IMPORTED_MODULE_4__.messages.strategyStart(this.constructor.name, request));
|
|
for (const log of logs) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.log(log);
|
|
}
|
|
_utils_messages_js__WEBPACK_IMPORTED_MODULE_4__.messages.printFinalResponse(response);
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupEnd();
|
|
}
|
|
if (!response) {
|
|
throw new workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_2__.WorkboxError('no-response', { url: request.url, error });
|
|
}
|
|
return response;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-strategies/CacheOnly.js":
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/workbox-strategies/CacheOnly.js ***!
|
|
\******************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "CacheOnly": () => (/* binding */ CacheOnly)
|
|
/* harmony export */ });
|
|
/* harmony import */ var workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! workbox-core/_private/assert.js */ "./node_modules/workbox-core/_private/assert.js");
|
|
/* harmony import */ var workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! workbox-core/_private/logger.js */ "./node_modules/workbox-core/_private/logger.js");
|
|
/* harmony import */ var workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! workbox-core/_private/WorkboxError.js */ "./node_modules/workbox-core/_private/WorkboxError.js");
|
|
/* harmony import */ var _Strategy_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Strategy.js */ "./node_modules/workbox-strategies/Strategy.js");
|
|
/* harmony import */ var _utils_messages_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/messages.js */ "./node_modules/workbox-strategies/utils/messages.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-strategies/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* An implementation of a [cache-only](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#cache-only)
|
|
* request strategy.
|
|
*
|
|
* This class is useful if you want to take advantage of any
|
|
* [Workbox plugins](https://developer.chrome.com/docs/workbox/using-plugins/).
|
|
*
|
|
* If there is no cache match, this will throw a `WorkboxError` exception.
|
|
*
|
|
* @extends workbox-strategies.Strategy
|
|
* @memberof workbox-strategies
|
|
*/
|
|
class CacheOnly extends _Strategy_js__WEBPACK_IMPORTED_MODULE_3__.Strategy {
|
|
/**
|
|
* @private
|
|
* @param {Request|string} request A request to run this strategy for.
|
|
* @param {workbox-strategies.StrategyHandler} handler The event that
|
|
* triggered the request.
|
|
* @return {Promise<Response>}
|
|
*/
|
|
async _handle(request, handler) {
|
|
if (true) {
|
|
workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__.assert.isInstance(request, Request, {
|
|
moduleName: 'workbox-strategies',
|
|
className: this.constructor.name,
|
|
funcName: 'makeRequest',
|
|
paramName: 'request',
|
|
});
|
|
}
|
|
const response = await handler.cacheMatch(request);
|
|
if (true) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupCollapsed(_utils_messages_js__WEBPACK_IMPORTED_MODULE_4__.messages.strategyStart(this.constructor.name, request));
|
|
if (response) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.log(`Found a cached response in the '${this.cacheName}' ` + `cache.`);
|
|
_utils_messages_js__WEBPACK_IMPORTED_MODULE_4__.messages.printFinalResponse(response);
|
|
}
|
|
else {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.log(`No response found in the '${this.cacheName}' cache.`);
|
|
}
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupEnd();
|
|
}
|
|
if (!response) {
|
|
throw new workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_2__.WorkboxError('no-response', { url: request.url });
|
|
}
|
|
return response;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-strategies/NetworkFirst.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/workbox-strategies/NetworkFirst.js ***!
|
|
\*********************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "NetworkFirst": () => (/* binding */ NetworkFirst)
|
|
/* harmony export */ });
|
|
/* harmony import */ var workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! workbox-core/_private/assert.js */ "./node_modules/workbox-core/_private/assert.js");
|
|
/* harmony import */ var workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! workbox-core/_private/logger.js */ "./node_modules/workbox-core/_private/logger.js");
|
|
/* harmony import */ var workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! workbox-core/_private/WorkboxError.js */ "./node_modules/workbox-core/_private/WorkboxError.js");
|
|
/* harmony import */ var _plugins_cacheOkAndOpaquePlugin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./plugins/cacheOkAndOpaquePlugin.js */ "./node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js");
|
|
/* harmony import */ var _Strategy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Strategy.js */ "./node_modules/workbox-strategies/Strategy.js");
|
|
/* harmony import */ var _utils_messages_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/messages.js */ "./node_modules/workbox-strategies/utils/messages.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-strategies/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_6__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* An implementation of a
|
|
* [network first](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#network-first-falling-back-to-cache)
|
|
* request strategy.
|
|
*
|
|
* By default, this strategy will cache responses with a 200 status code as
|
|
* well as [opaque responses](https://developer.chrome.com/docs/workbox/caching-resources-during-runtime/#opaque-responses).
|
|
* Opaque responses are are cross-origin requests where the response doesn't
|
|
* support [CORS](https://enable-cors.org/).
|
|
*
|
|
* If the network request fails, and there is no cache match, this will throw
|
|
* a `WorkboxError` exception.
|
|
*
|
|
* @extends workbox-strategies.Strategy
|
|
* @memberof workbox-strategies
|
|
*/
|
|
class NetworkFirst extends _Strategy_js__WEBPACK_IMPORTED_MODULE_4__.Strategy {
|
|
/**
|
|
* @param {Object} [options]
|
|
* @param {string} [options.cacheName] Cache name to store and retrieve
|
|
* requests. Defaults to cache names provided by
|
|
* {@link workbox-core.cacheNames}.
|
|
* @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}
|
|
* to use in conjunction with this caching strategy.
|
|
* @param {Object} [options.fetchOptions] Values passed along to the
|
|
* [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)
|
|
* of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)
|
|
* `fetch()` requests made by this strategy.
|
|
* @param {Object} [options.matchOptions] [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)
|
|
* @param {number} [options.networkTimeoutSeconds] If set, any network requests
|
|
* that fail to respond within the timeout will fallback to the cache.
|
|
*
|
|
* This option can be used to combat
|
|
* "[lie-fi]{@link https://developers.google.com/web/fundamentals/performance/poor-connectivity/#lie-fi}"
|
|
* scenarios.
|
|
*/
|
|
constructor(options = {}) {
|
|
super(options);
|
|
// If this instance contains no plugins with a 'cacheWillUpdate' callback,
|
|
// prepend the `cacheOkAndOpaquePlugin` plugin to the plugins list.
|
|
if (!this.plugins.some((p) => 'cacheWillUpdate' in p)) {
|
|
this.plugins.unshift(_plugins_cacheOkAndOpaquePlugin_js__WEBPACK_IMPORTED_MODULE_3__.cacheOkAndOpaquePlugin);
|
|
}
|
|
this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;
|
|
if (true) {
|
|
if (this._networkTimeoutSeconds) {
|
|
workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__.assert.isType(this._networkTimeoutSeconds, 'number', {
|
|
moduleName: 'workbox-strategies',
|
|
className: this.constructor.name,
|
|
funcName: 'constructor',
|
|
paramName: 'networkTimeoutSeconds',
|
|
});
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* @private
|
|
* @param {Request|string} request A request to run this strategy for.
|
|
* @param {workbox-strategies.StrategyHandler} handler The event that
|
|
* triggered the request.
|
|
* @return {Promise<Response>}
|
|
*/
|
|
async _handle(request, handler) {
|
|
const logs = [];
|
|
if (true) {
|
|
workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__.assert.isInstance(request, Request, {
|
|
moduleName: 'workbox-strategies',
|
|
className: this.constructor.name,
|
|
funcName: 'handle',
|
|
paramName: 'makeRequest',
|
|
});
|
|
}
|
|
const promises = [];
|
|
let timeoutId;
|
|
if (this._networkTimeoutSeconds) {
|
|
const { id, promise } = this._getTimeoutPromise({ request, logs, handler });
|
|
timeoutId = id;
|
|
promises.push(promise);
|
|
}
|
|
const networkPromise = this._getNetworkPromise({
|
|
timeoutId,
|
|
request,
|
|
logs,
|
|
handler,
|
|
});
|
|
promises.push(networkPromise);
|
|
const response = await handler.waitUntil((async () => {
|
|
// Promise.race() will resolve as soon as the first promise resolves.
|
|
return ((await handler.waitUntil(Promise.race(promises))) ||
|
|
// If Promise.race() resolved with null, it might be due to a network
|
|
// timeout + a cache miss. If that were to happen, we'd rather wait until
|
|
// the networkPromise resolves instead of returning null.
|
|
// Note that it's fine to await an already-resolved promise, so we don't
|
|
// have to check to see if it's still "in flight".
|
|
(await networkPromise));
|
|
})());
|
|
if (true) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupCollapsed(_utils_messages_js__WEBPACK_IMPORTED_MODULE_5__.messages.strategyStart(this.constructor.name, request));
|
|
for (const log of logs) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.log(log);
|
|
}
|
|
_utils_messages_js__WEBPACK_IMPORTED_MODULE_5__.messages.printFinalResponse(response);
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupEnd();
|
|
}
|
|
if (!response) {
|
|
throw new workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_2__.WorkboxError('no-response', { url: request.url });
|
|
}
|
|
return response;
|
|
}
|
|
/**
|
|
* @param {Object} options
|
|
* @param {Request} options.request
|
|
* @param {Array} options.logs A reference to the logs array
|
|
* @param {Event} options.event
|
|
* @return {Promise<Response>}
|
|
*
|
|
* @private
|
|
*/
|
|
_getTimeoutPromise({ request, logs, handler, }) {
|
|
let timeoutId;
|
|
const timeoutPromise = new Promise((resolve) => {
|
|
const onNetworkTimeout = async () => {
|
|
if (true) {
|
|
logs.push(`Timing out the network response at ` +
|
|
`${this._networkTimeoutSeconds} seconds.`);
|
|
}
|
|
resolve(await handler.cacheMatch(request));
|
|
};
|
|
timeoutId = setTimeout(onNetworkTimeout, this._networkTimeoutSeconds * 1000);
|
|
});
|
|
return {
|
|
promise: timeoutPromise,
|
|
id: timeoutId,
|
|
};
|
|
}
|
|
/**
|
|
* @param {Object} options
|
|
* @param {number|undefined} options.timeoutId
|
|
* @param {Request} options.request
|
|
* @param {Array} options.logs A reference to the logs Array.
|
|
* @param {Event} options.event
|
|
* @return {Promise<Response>}
|
|
*
|
|
* @private
|
|
*/
|
|
async _getNetworkPromise({ timeoutId, request, logs, handler, }) {
|
|
let error;
|
|
let response;
|
|
try {
|
|
response = await handler.fetchAndCachePut(request);
|
|
}
|
|
catch (fetchError) {
|
|
if (fetchError instanceof Error) {
|
|
error = fetchError;
|
|
}
|
|
}
|
|
if (timeoutId) {
|
|
clearTimeout(timeoutId);
|
|
}
|
|
if (true) {
|
|
if (response) {
|
|
logs.push(`Got response from network.`);
|
|
}
|
|
else {
|
|
logs.push(`Unable to get a response from the network. Will respond ` +
|
|
`with a cached response.`);
|
|
}
|
|
}
|
|
if (error || !response) {
|
|
response = await handler.cacheMatch(request);
|
|
if (true) {
|
|
if (response) {
|
|
logs.push(`Found a cached response in the '${this.cacheName}'` + ` cache.`);
|
|
}
|
|
else {
|
|
logs.push(`No response found in the '${this.cacheName}' cache.`);
|
|
}
|
|
}
|
|
}
|
|
return response;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-strategies/NetworkOnly.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/workbox-strategies/NetworkOnly.js ***!
|
|
\********************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "NetworkOnly": () => (/* binding */ NetworkOnly)
|
|
/* harmony export */ });
|
|
/* harmony import */ var workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! workbox-core/_private/assert.js */ "./node_modules/workbox-core/_private/assert.js");
|
|
/* harmony import */ var workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! workbox-core/_private/logger.js */ "./node_modules/workbox-core/_private/logger.js");
|
|
/* harmony import */ var workbox_core_private_timeout_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! workbox-core/_private/timeout.js */ "./node_modules/workbox-core/_private/timeout.js");
|
|
/* harmony import */ var workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! workbox-core/_private/WorkboxError.js */ "./node_modules/workbox-core/_private/WorkboxError.js");
|
|
/* harmony import */ var _Strategy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Strategy.js */ "./node_modules/workbox-strategies/Strategy.js");
|
|
/* harmony import */ var _utils_messages_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/messages.js */ "./node_modules/workbox-strategies/utils/messages.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-strategies/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_6__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* An implementation of a
|
|
* [network-only](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#network-only)
|
|
* request strategy.
|
|
*
|
|
* This class is useful if you want to take advantage of any
|
|
* [Workbox plugins](https://developer.chrome.com/docs/workbox/using-plugins/).
|
|
*
|
|
* If the network request fails, this will throw a `WorkboxError` exception.
|
|
*
|
|
* @extends workbox-strategies.Strategy
|
|
* @memberof workbox-strategies
|
|
*/
|
|
class NetworkOnly extends _Strategy_js__WEBPACK_IMPORTED_MODULE_4__.Strategy {
|
|
/**
|
|
* @param {Object} [options]
|
|
* @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}
|
|
* to use in conjunction with this caching strategy.
|
|
* @param {Object} [options.fetchOptions] Values passed along to the
|
|
* [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)
|
|
* of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)
|
|
* `fetch()` requests made by this strategy.
|
|
* @param {number} [options.networkTimeoutSeconds] If set, any network requests
|
|
* that fail to respond within the timeout will result in a network error.
|
|
*/
|
|
constructor(options = {}) {
|
|
super(options);
|
|
this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;
|
|
}
|
|
/**
|
|
* @private
|
|
* @param {Request|string} request A request to run this strategy for.
|
|
* @param {workbox-strategies.StrategyHandler} handler The event that
|
|
* triggered the request.
|
|
* @return {Promise<Response>}
|
|
*/
|
|
async _handle(request, handler) {
|
|
if (true) {
|
|
workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__.assert.isInstance(request, Request, {
|
|
moduleName: 'workbox-strategies',
|
|
className: this.constructor.name,
|
|
funcName: '_handle',
|
|
paramName: 'request',
|
|
});
|
|
}
|
|
let error = undefined;
|
|
let response;
|
|
try {
|
|
const promises = [
|
|
handler.fetch(request),
|
|
];
|
|
if (this._networkTimeoutSeconds) {
|
|
const timeoutPromise = (0,workbox_core_private_timeout_js__WEBPACK_IMPORTED_MODULE_2__.timeout)(this._networkTimeoutSeconds * 1000);
|
|
promises.push(timeoutPromise);
|
|
}
|
|
response = await Promise.race(promises);
|
|
if (!response) {
|
|
throw new Error(`Timed out the network response after ` +
|
|
`${this._networkTimeoutSeconds} seconds.`);
|
|
}
|
|
}
|
|
catch (err) {
|
|
if (err instanceof Error) {
|
|
error = err;
|
|
}
|
|
}
|
|
if (true) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupCollapsed(_utils_messages_js__WEBPACK_IMPORTED_MODULE_5__.messages.strategyStart(this.constructor.name, request));
|
|
if (response) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.log(`Got response from network.`);
|
|
}
|
|
else {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.log(`Unable to get a response from the network.`);
|
|
}
|
|
_utils_messages_js__WEBPACK_IMPORTED_MODULE_5__.messages.printFinalResponse(response);
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupEnd();
|
|
}
|
|
if (!response) {
|
|
throw new workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_3__.WorkboxError('no-response', { url: request.url, error });
|
|
}
|
|
return response;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-strategies/StaleWhileRevalidate.js":
|
|
/*!*****************************************************************!*\
|
|
!*** ./node_modules/workbox-strategies/StaleWhileRevalidate.js ***!
|
|
\*****************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "StaleWhileRevalidate": () => (/* binding */ StaleWhileRevalidate)
|
|
/* harmony export */ });
|
|
/* harmony import */ var workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! workbox-core/_private/assert.js */ "./node_modules/workbox-core/_private/assert.js");
|
|
/* harmony import */ var workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! workbox-core/_private/logger.js */ "./node_modules/workbox-core/_private/logger.js");
|
|
/* harmony import */ var workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! workbox-core/_private/WorkboxError.js */ "./node_modules/workbox-core/_private/WorkboxError.js");
|
|
/* harmony import */ var _plugins_cacheOkAndOpaquePlugin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./plugins/cacheOkAndOpaquePlugin.js */ "./node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js");
|
|
/* harmony import */ var _Strategy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Strategy.js */ "./node_modules/workbox-strategies/Strategy.js");
|
|
/* harmony import */ var _utils_messages_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/messages.js */ "./node_modules/workbox-strategies/utils/messages.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-strategies/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_6__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* An implementation of a
|
|
* [stale-while-revalidate](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#stale-while-revalidate)
|
|
* request strategy.
|
|
*
|
|
* Resources are requested from both the cache and the network in parallel.
|
|
* The strategy will respond with the cached version if available, otherwise
|
|
* wait for the network response. The cache is updated with the network response
|
|
* with each successful request.
|
|
*
|
|
* By default, this strategy will cache responses with a 200 status code as
|
|
* well as [opaque responses](https://developer.chrome.com/docs/workbox/caching-resources-during-runtime/#opaque-responses).
|
|
* Opaque responses are cross-origin requests where the response doesn't
|
|
* support [CORS](https://enable-cors.org/).
|
|
*
|
|
* If the network request fails, and there is no cache match, this will throw
|
|
* a `WorkboxError` exception.
|
|
*
|
|
* @extends workbox-strategies.Strategy
|
|
* @memberof workbox-strategies
|
|
*/
|
|
class StaleWhileRevalidate extends _Strategy_js__WEBPACK_IMPORTED_MODULE_4__.Strategy {
|
|
/**
|
|
* @param {Object} [options]
|
|
* @param {string} [options.cacheName] Cache name to store and retrieve
|
|
* requests. Defaults to cache names provided by
|
|
* {@link workbox-core.cacheNames}.
|
|
* @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}
|
|
* to use in conjunction with this caching strategy.
|
|
* @param {Object} [options.fetchOptions] Values passed along to the
|
|
* [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)
|
|
* of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)
|
|
* `fetch()` requests made by this strategy.
|
|
* @param {Object} [options.matchOptions] [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)
|
|
*/
|
|
constructor(options = {}) {
|
|
super(options);
|
|
// If this instance contains no plugins with a 'cacheWillUpdate' callback,
|
|
// prepend the `cacheOkAndOpaquePlugin` plugin to the plugins list.
|
|
if (!this.plugins.some((p) => 'cacheWillUpdate' in p)) {
|
|
this.plugins.unshift(_plugins_cacheOkAndOpaquePlugin_js__WEBPACK_IMPORTED_MODULE_3__.cacheOkAndOpaquePlugin);
|
|
}
|
|
}
|
|
/**
|
|
* @private
|
|
* @param {Request|string} request A request to run this strategy for.
|
|
* @param {workbox-strategies.StrategyHandler} handler The event that
|
|
* triggered the request.
|
|
* @return {Promise<Response>}
|
|
*/
|
|
async _handle(request, handler) {
|
|
const logs = [];
|
|
if (true) {
|
|
workbox_core_private_assert_js__WEBPACK_IMPORTED_MODULE_0__.assert.isInstance(request, Request, {
|
|
moduleName: 'workbox-strategies',
|
|
className: this.constructor.name,
|
|
funcName: 'handle',
|
|
paramName: 'request',
|
|
});
|
|
}
|
|
const fetchAndCachePromise = handler.fetchAndCachePut(request).catch(() => {
|
|
// Swallow this error because a 'no-response' error will be thrown in
|
|
// main handler return flow. This will be in the `waitUntil()` flow.
|
|
});
|
|
void handler.waitUntil(fetchAndCachePromise);
|
|
let response = await handler.cacheMatch(request);
|
|
let error;
|
|
if (response) {
|
|
if (true) {
|
|
logs.push(`Found a cached response in the '${this.cacheName}'` +
|
|
` cache. Will update with the network response in the background.`);
|
|
}
|
|
}
|
|
else {
|
|
if (true) {
|
|
logs.push(`No response found in the '${this.cacheName}' cache. ` +
|
|
`Will wait for the network response.`);
|
|
}
|
|
try {
|
|
// NOTE(philipwalton): Really annoying that we have to type cast here.
|
|
// https://github.com/microsoft/TypeScript/issues/20006
|
|
response = (await fetchAndCachePromise);
|
|
}
|
|
catch (err) {
|
|
if (err instanceof Error) {
|
|
error = err;
|
|
}
|
|
}
|
|
}
|
|
if (true) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupCollapsed(_utils_messages_js__WEBPACK_IMPORTED_MODULE_5__.messages.strategyStart(this.constructor.name, request));
|
|
for (const log of logs) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.log(log);
|
|
}
|
|
_utils_messages_js__WEBPACK_IMPORTED_MODULE_5__.messages.printFinalResponse(response);
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.groupEnd();
|
|
}
|
|
if (!response) {
|
|
throw new workbox_core_private_WorkboxError_js__WEBPACK_IMPORTED_MODULE_2__.WorkboxError('no-response', { url: request.url, error });
|
|
}
|
|
return response;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-strategies/index.js":
|
|
/*!**************************************************!*\
|
|
!*** ./node_modules/workbox-strategies/index.js ***!
|
|
\**************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "CacheFirst": () => (/* reexport safe */ _CacheFirst_js__WEBPACK_IMPORTED_MODULE_0__.CacheFirst),
|
|
/* harmony export */ "CacheOnly": () => (/* reexport safe */ _CacheOnly_js__WEBPACK_IMPORTED_MODULE_1__.CacheOnly),
|
|
/* harmony export */ "NetworkFirst": () => (/* reexport safe */ _NetworkFirst_js__WEBPACK_IMPORTED_MODULE_2__.NetworkFirst),
|
|
/* harmony export */ "NetworkOnly": () => (/* reexport safe */ _NetworkOnly_js__WEBPACK_IMPORTED_MODULE_3__.NetworkOnly),
|
|
/* harmony export */ "StaleWhileRevalidate": () => (/* reexport safe */ _StaleWhileRevalidate_js__WEBPACK_IMPORTED_MODULE_4__.StaleWhileRevalidate),
|
|
/* harmony export */ "Strategy": () => (/* reexport safe */ _Strategy_js__WEBPACK_IMPORTED_MODULE_5__.Strategy),
|
|
/* harmony export */ "StrategyHandler": () => (/* reexport safe */ _StrategyHandler_js__WEBPACK_IMPORTED_MODULE_6__.StrategyHandler)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _CacheFirst_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CacheFirst.js */ "./node_modules/workbox-strategies/CacheFirst.js");
|
|
/* harmony import */ var _CacheOnly_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CacheOnly.js */ "./node_modules/workbox-strategies/CacheOnly.js");
|
|
/* harmony import */ var _NetworkFirst_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NetworkFirst.js */ "./node_modules/workbox-strategies/NetworkFirst.js");
|
|
/* harmony import */ var _NetworkOnly_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./NetworkOnly.js */ "./node_modules/workbox-strategies/NetworkOnly.js");
|
|
/* harmony import */ var _StaleWhileRevalidate_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./StaleWhileRevalidate.js */ "./node_modules/workbox-strategies/StaleWhileRevalidate.js");
|
|
/* harmony import */ var _Strategy_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Strategy.js */ "./node_modules/workbox-strategies/Strategy.js");
|
|
/* harmony import */ var _StrategyHandler_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./StrategyHandler.js */ "./node_modules/workbox-strategies/StrategyHandler.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./_version.js */ "./node_modules/workbox-strategies/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_7__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* There are common caching strategies that most service workers will need
|
|
* and use. This module provides simple implementations of these strategies.
|
|
*
|
|
* @module workbox-strategies
|
|
*/
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js":
|
|
/*!***************************************************************************!*\
|
|
!*** ./node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js ***!
|
|
\***************************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "cacheOkAndOpaquePlugin": () => (/* binding */ cacheOkAndOpaquePlugin)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_version.js */ "./node_modules/workbox-strategies/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
const cacheOkAndOpaquePlugin = {
|
|
/**
|
|
* Returns a valid response (to allow caching) if the status is 200 (OK) or
|
|
* 0 (opaque).
|
|
*
|
|
* @param {Object} options
|
|
* @param {Response} options.response
|
|
* @return {Response|null}
|
|
*
|
|
* @private
|
|
*/
|
|
cacheWillUpdate: async ({ response }) => {
|
|
if (response.status === 200 || response.status === 0) {
|
|
return response;
|
|
}
|
|
return null;
|
|
},
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-strategies/utils/messages.js":
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/workbox-strategies/utils/messages.js ***!
|
|
\***********************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "messages": () => (/* binding */ messages)
|
|
/* harmony export */ });
|
|
/* harmony import */ var workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! workbox-core/_private/logger.js */ "./node_modules/workbox-core/_private/logger.js");
|
|
/* harmony import */ var workbox_core_private_getFriendlyURL_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! workbox-core/_private/getFriendlyURL.js */ "./node_modules/workbox-core/_private/getFriendlyURL.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_version.js */ "./node_modules/workbox-strategies/_version.js");
|
|
/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_version_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Use of this source code is governed by an MIT-style
|
|
license that can be found in the LICENSE file or at
|
|
https://opensource.org/licenses/MIT.
|
|
*/
|
|
|
|
|
|
|
|
const messages = {
|
|
strategyStart: (strategyName, request) => `Using ${strategyName} to respond to '${(0,workbox_core_private_getFriendlyURL_js__WEBPACK_IMPORTED_MODULE_1__.getFriendlyURL)(request.url)}'`,
|
|
printFinalResponse: (response) => {
|
|
if (response) {
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_0__.logger.groupCollapsed(`View the final response here.`);
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_0__.logger.log(response || '[No response returned]');
|
|
workbox_core_private_logger_js__WEBPACK_IMPORTED_MODULE_0__.logger.groupEnd();
|
|
}
|
|
},
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-routing/index.mjs":
|
|
/*!************************************************!*\
|
|
!*** ./node_modules/workbox-routing/index.mjs ***!
|
|
\************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "NavigationRoute": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.NavigationRoute),
|
|
/* harmony export */ "RegExpRoute": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.RegExpRoute),
|
|
/* harmony export */ "Route": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.Route),
|
|
/* harmony export */ "Router": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.Router),
|
|
/* harmony export */ "registerRoute": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.registerRoute),
|
|
/* harmony export */ "setCatchHandler": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.setCatchHandler),
|
|
/* harmony export */ "setDefaultHandler": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.setDefaultHandler)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./node_modules/workbox-routing/index.js");
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/workbox-strategies/index.mjs":
|
|
/*!***************************************************!*\
|
|
!*** ./node_modules/workbox-strategies/index.mjs ***!
|
|
\***************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "CacheFirst": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.CacheFirst),
|
|
/* harmony export */ "CacheOnly": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.CacheOnly),
|
|
/* harmony export */ "NetworkFirst": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.NetworkFirst),
|
|
/* harmony export */ "NetworkOnly": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.NetworkOnly),
|
|
/* harmony export */ "StaleWhileRevalidate": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.StaleWhileRevalidate),
|
|
/* harmony export */ "Strategy": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.Strategy),
|
|
/* harmony export */ "StrategyHandler": () => (/* reexport safe */ _index_js__WEBPACK_IMPORTED_MODULE_0__.StrategyHandler)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./node_modules/workbox-strategies/index.js");
|
|
|
|
|
|
/***/ })
|
|
|
|
}]);
|
|
//# sourceMappingURL=src_sw_js.sw.js.map
|