You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.4 KiB
45 lines
1.4 KiB
2 years ago
|
/*
|
||
|
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 };
|