This commit is contained in:
+58
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
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};
|
||||
Reference in New Issue
Block a user