UNPKG

workbox-precaching

Version:

This module efficiently precaches assets.

54 lines (44 loc) 1.38 kB
/* Copyright 2020 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 {WorkboxPlugin, WorkboxPluginCallbackParam} from 'workbox-core/types.js'; import '../_version.js'; /** * A plugin, designed to be used with PrecacheController, to determine the * of assets that were updated (or not updated) during the install event. * * @private */ class PrecacheInstallReportPlugin implements WorkboxPlugin { updatedURLs: string[] = []; notUpdatedURLs: string[] = []; handlerWillStart: WorkboxPlugin['handlerWillStart'] = async ({ request, state, }: WorkboxPluginCallbackParam['handlerWillStart']) => { // TODO: `state` should never be undefined... if (state) { state.originalRequest = request; } } cachedResponseWillBeUsed: WorkboxPlugin['cachedResponseWillBeUsed'] = async ({ event, state, cachedResponse, }: WorkboxPluginCallbackParam['cachedResponseWillBeUsed']) => { if (event.type === 'install') { // TODO: `state` should never be undefined... const url = state!.originalRequest.url; if (cachedResponse) { this.notUpdatedURLs.push(url); } else { this.updatedURLs.push(url); } } return cachedResponse; } } export {PrecacheInstallReportPlugin};