2023-10-03 11:14:36 +08:00
|
|
|
/*
|
|
|
|
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 '../_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 {
|
|
|
|
constructor() {
|
|
|
|
this.updatedURLs = [];
|
|
|
|
this.notUpdatedURLs = [];
|
|
|
|
this.handlerWillStart = async ({ request, state, }) => {
|
|
|
|
// TODO: `state` should never be undefined...
|
|
|
|
if (state) {
|
|
|
|
state.originalRequest = request;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
this.cachedResponseWillBeUsed = async ({ event, state, cachedResponse, }) => {
|
|
|
|
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 };
|