/* 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.js'; import { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js'; import { precachePlugins } from './utils/precachePlugins.js'; import './_version.js'; 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(); event.waitUntil(precacheController.activate()); }; /** * 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} [entries=[]] Array of entries to precache. * * @memberof module:workbox-precaching */ function 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. // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705 self.addEventListener('install', installListener); self.addEventListener('activate', activateListener); } } export { precache };