You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

69 lines
2.4 KiB

/*
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.
*/
import {logger} from 'workbox-core/_private/logger.mjs';
import {getOrCreatePrecacheController} from './utils/getOrCreatePrecacheController.mjs';
import {precachePlugins} from './utils/precachePlugins.mjs';
import './_version.mjs';
const installListener = (event) => {
const precacheController = getOrCreatePrecacheController();
const plugins = precachePlugins.get();
event.waitUntil(
precacheController.install({event, plugins})
.catch((error) => {
if (process.env.NODE_ENV !== 'production') {
logger.error(`Service worker installation failed. It will ` +
`be retried automatically during the next navigation.`);
}
// Re-throw the error to ensure installation fails.
throw error;
})
);
};
const activateListener = (event) => {
const precacheController = getOrCreatePrecacheController();
const plugins = precachePlugins.get();
event.waitUntil(precacheController.activate({event, plugins}));
};
/**
* Adds items to the precache list, removing any duplicates and
* stores the files in the
* ["precache cache"]{@link module:workbox-core.cacheNames} when the service
* worker installs.
*
* This method can be called multiple times.
*
* Please note: This method **will not** serve any of the cached files for you.
* It only precaches files. To respond to a network request you call
* [addRoute()]{@link module:workbox-precaching.addRoute}.
*
* If you have a single array of files to precache, you can just call
* [precacheAndRoute()]{@link module:workbox-precaching.precacheAndRoute}.
*
* @param {Array<Object|string>} entries Array of entries to precache.
*
* @alias workbox.precaching.precache
*/
export const precache = (entries) => {
const precacheController = getOrCreatePrecacheController();
precacheController.addToCacheList(entries);
if (entries.length > 0) {
// NOTE: these listeners will only be added once (even if the `precache()`
// method is called multiple times) because event listeners are implemented
// as a set, where each listener must be unique.
addEventListener('install', installListener);
addEventListener('activate', activateListener);
}
};