Files
base/node_modules/workbox-precaching/src/utils/PrecacheInstallReportPlugin.ts
T
eewing c0fae761da
CI / build (push) Has been skipped
CI / deploy (push) Successful in 1m24s
PWA
2026-02-19 07:41:49 -06:00

59 lines
1.5 KiB
TypeScript

/*
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') {
if (
state &&
state.originalRequest &&
state.originalRequest instanceof Request
) {
// 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};