UNPKG

workbox-core

Version:

This module is used by a number of the other Workbox modules to share common code.

57 lines (49 loc) 1.67 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 '../_version.js'; function stripParams(fullURL: string, ignoreParams: string[]) { const strippedURL = new URL(fullURL); for (const param of ignoreParams) { strippedURL.searchParams.delete(param); } return strippedURL.href; } /** * Matches an item in the cache, ignoring specific URL params. This is similar * to the `ignoreSearch` option, but it allows you to ignore just specific * params (while continuing to match on the others). * * @private * @param {Cache} cache * @param {Request} request * @param {Object} matchOptions * @param {Array<string>} ignoreParams * @return {Promise<Response|undefined>} */ async function cacheMatchIgnoreParams( cache: Cache, request: Request, ignoreParams: string[], matchOptions?: CacheQueryOptions, ): Promise<Response | undefined> { const strippedRequestURL = stripParams(request.url, ignoreParams); // If the request doesn't include any ignored params, match as normal. if (request.url === strippedRequestURL) { return cache.match(request, matchOptions); } // Otherwise, match by comparing keys const keysOptions = {...matchOptions, ignoreSearch: true}; const cacheKeys = await cache.keys(request, keysOptions); for (const cacheKey of cacheKeys) { const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams); if (strippedRequestURL === strippedCacheKeyURL) { return cache.match(cacheKey, matchOptions); } } return; } export {cacheMatchIgnoreParams};