1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /*
- Copyright 2018 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 { WorkboxError } from 'workbox-core/_private/WorkboxError.js';
- import '../_version.js';
- // Name of the search parameter used to store revision info.
- const REVISION_SEARCH_PARAM = '__WB_REVISION__';
- /**
- * Converts a manifest entry into a versioned URL suitable for precaching.
- *
- * @param {Object|string} entry
- * @return {string} A URL with versioning info.
- *
- * @private
- * @memberof module:workbox-precaching
- */
- export function createCacheKey(entry) {
- if (!entry) {
- throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });
- }
- // If a precache manifest entry is a string, it's assumed to be a versioned
- // URL, like '/app.abcd1234.js'. Return as-is.
- if (typeof entry === 'string') {
- const urlObject = new URL(entry, location.href);
- return {
- cacheKey: urlObject.href,
- url: urlObject.href,
- };
- }
- const { revision, url } = entry;
- if (!url) {
- throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });
- }
- // If there's just a URL and no revision, then it's also assumed to be a
- // versioned URL.
- if (!revision) {
- const urlObject = new URL(url, location.href);
- return {
- cacheKey: urlObject.href,
- url: urlObject.href,
- };
- }
- // Otherwise, construct a properly versioned URL using the custom Workbox
- // search parameter along with the revision info.
- const cacheKeyURL = new URL(url, location.href);
- const originalURL = new URL(url, location.href);
- cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);
- return {
- cacheKey: cacheKeyURL.href,
- url: originalURL.href,
- };
- }
|