| 1 | import { Strategy } from 'workbox-strategies/Strategy.js';
|
|---|
| 2 | import { RouteHandlerCallback, WorkboxPlugin } from 'workbox-core/types.js';
|
|---|
| 3 | import { PrecacheEntry, InstallResult, CleanupResult } from './_types.js';
|
|---|
| 4 | import './_version.js';
|
|---|
| 5 | declare global {
|
|---|
| 6 | interface ServiceWorkerGlobalScope {
|
|---|
| 7 | __WB_MANIFEST: Array<PrecacheEntry | string>;
|
|---|
| 8 | }
|
|---|
| 9 | }
|
|---|
| 10 | interface PrecacheControllerOptions {
|
|---|
| 11 | cacheName?: string;
|
|---|
| 12 | plugins?: WorkboxPlugin[];
|
|---|
| 13 | fallbackToNetwork?: boolean;
|
|---|
| 14 | }
|
|---|
| 15 | /**
|
|---|
| 16 | * Performs efficient precaching of assets.
|
|---|
| 17 | *
|
|---|
| 18 | * @memberof workbox-precaching
|
|---|
| 19 | */
|
|---|
| 20 | declare class PrecacheController {
|
|---|
| 21 | private _installAndActiveListenersAdded?;
|
|---|
| 22 | private readonly _strategy;
|
|---|
| 23 | private readonly _urlsToCacheKeys;
|
|---|
| 24 | private readonly _urlsToCacheModes;
|
|---|
| 25 | private readonly _cacheKeysToIntegrities;
|
|---|
| 26 | /**
|
|---|
| 27 | * Create a new PrecacheController.
|
|---|
| 28 | *
|
|---|
| 29 | * @param {Object} [options]
|
|---|
| 30 | * @param {string} [options.cacheName] The cache to use for precaching.
|
|---|
| 31 | * @param {string} [options.plugins] Plugins to use when precaching as well
|
|---|
| 32 | * as responding to fetch events for precached assets.
|
|---|
| 33 | * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to
|
|---|
| 34 | * get the response from the network if there's a precache miss.
|
|---|
| 35 | */
|
|---|
| 36 | constructor({ cacheName, plugins, fallbackToNetwork, }?: PrecacheControllerOptions);
|
|---|
| 37 | /**
|
|---|
| 38 | * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and
|
|---|
| 39 | * used to cache assets and respond to fetch events.
|
|---|
| 40 | */
|
|---|
| 41 | get strategy(): Strategy;
|
|---|
| 42 | /**
|
|---|
| 43 | * Adds items to the precache list, removing any duplicates and
|
|---|
| 44 | * stores the files in the
|
|---|
| 45 | * {@link workbox-core.cacheNames|"precache cache"} when the service
|
|---|
| 46 | * worker installs.
|
|---|
| 47 | *
|
|---|
| 48 | * This method can be called multiple times.
|
|---|
| 49 | *
|
|---|
| 50 | * @param {Array<Object|string>} [entries=[]] Array of entries to precache.
|
|---|
| 51 | */
|
|---|
| 52 | precache(entries: Array<PrecacheEntry | string>): void;
|
|---|
| 53 | /**
|
|---|
| 54 | * This method will add items to the precache list, removing duplicates
|
|---|
| 55 | * and ensuring the information is valid.
|
|---|
| 56 | *
|
|---|
| 57 | * @param {Array<workbox-precaching.PrecacheController.PrecacheEntry|string>} entries
|
|---|
| 58 | * Array of entries to precache.
|
|---|
| 59 | */
|
|---|
| 60 | addToCacheList(entries: Array<PrecacheEntry | string>): void;
|
|---|
| 61 | /**
|
|---|
| 62 | * Precaches new and updated assets. Call this method from the service worker
|
|---|
| 63 | * install event.
|
|---|
| 64 | *
|
|---|
| 65 | * Note: this method calls `event.waitUntil()` for you, so you do not need
|
|---|
| 66 | * to call it yourself in your event handlers.
|
|---|
| 67 | *
|
|---|
| 68 | * @param {ExtendableEvent} event
|
|---|
| 69 | * @return {Promise<workbox-precaching.InstallResult>}
|
|---|
| 70 | */
|
|---|
| 71 | install(event: ExtendableEvent): Promise<InstallResult>;
|
|---|
| 72 | /**
|
|---|
| 73 | * Deletes assets that are no longer present in the current precache manifest.
|
|---|
| 74 | * Call this method from the service worker activate event.
|
|---|
| 75 | *
|
|---|
| 76 | * Note: this method calls `event.waitUntil()` for you, so you do not need
|
|---|
| 77 | * to call it yourself in your event handlers.
|
|---|
| 78 | *
|
|---|
| 79 | * @param {ExtendableEvent} event
|
|---|
| 80 | * @return {Promise<workbox-precaching.CleanupResult>}
|
|---|
| 81 | */
|
|---|
| 82 | activate(event: ExtendableEvent): Promise<CleanupResult>;
|
|---|
| 83 | /**
|
|---|
| 84 | * Returns a mapping of a precached URL to the corresponding cache key, taking
|
|---|
| 85 | * into account the revision information for the URL.
|
|---|
| 86 | *
|
|---|
| 87 | * @return {Map<string, string>} A URL to cache key mapping.
|
|---|
| 88 | */
|
|---|
| 89 | getURLsToCacheKeys(): Map<string, string>;
|
|---|
| 90 | /**
|
|---|
| 91 | * Returns a list of all the URLs that have been precached by the current
|
|---|
| 92 | * service worker.
|
|---|
| 93 | *
|
|---|
| 94 | * @return {Array<string>} The precached URLs.
|
|---|
| 95 | */
|
|---|
| 96 | getCachedURLs(): Array<string>;
|
|---|
| 97 | /**
|
|---|
| 98 | * Returns the cache key used for storing a given URL. If that URL is
|
|---|
| 99 | * unversioned, like `/index.html', then the cache key will be the original
|
|---|
| 100 | * URL with a search parameter appended to it.
|
|---|
| 101 | *
|
|---|
| 102 | * @param {string} url A URL whose cache key you want to look up.
|
|---|
| 103 | * @return {string} The versioned URL that corresponds to a cache key
|
|---|
| 104 | * for the original URL, or undefined if that URL isn't precached.
|
|---|
| 105 | */
|
|---|
| 106 | getCacheKeyForURL(url: string): string | undefined;
|
|---|
| 107 | /**
|
|---|
| 108 | * @param {string} url A cache key whose SRI you want to look up.
|
|---|
| 109 | * @return {string} The subresource integrity associated with the cache key,
|
|---|
| 110 | * or undefined if it's not set.
|
|---|
| 111 | */
|
|---|
| 112 | getIntegrityForCacheKey(cacheKey: string): string | undefined;
|
|---|
| 113 | /**
|
|---|
| 114 | * This acts as a drop-in replacement for
|
|---|
| 115 | * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)
|
|---|
| 116 | * with the following differences:
|
|---|
| 117 | *
|
|---|
| 118 | * - It knows what the name of the precache is, and only checks in that cache.
|
|---|
| 119 | * - It allows you to pass in an "original" URL without versioning parameters,
|
|---|
| 120 | * and it will automatically look up the correct cache key for the currently
|
|---|
| 121 | * active revision of that URL.
|
|---|
| 122 | *
|
|---|
| 123 | * E.g., `matchPrecache('index.html')` will find the correct precached
|
|---|
| 124 | * response for the currently active service worker, even if the actual cache
|
|---|
| 125 | * key is `'/index.html?__WB_REVISION__=1234abcd'`.
|
|---|
| 126 | *
|
|---|
| 127 | * @param {string|Request} request The key (without revisioning parameters)
|
|---|
| 128 | * to look up in the precache.
|
|---|
| 129 | * @return {Promise<Response|undefined>}
|
|---|
| 130 | */
|
|---|
| 131 | matchPrecache(request: string | Request): Promise<Response | undefined>;
|
|---|
| 132 | /**
|
|---|
| 133 | * Returns a function that looks up `url` in the precache (taking into
|
|---|
| 134 | * account revision information), and returns the corresponding `Response`.
|
|---|
| 135 | *
|
|---|
| 136 | * @param {string} url The precached URL which will be used to lookup the
|
|---|
| 137 | * `Response`.
|
|---|
| 138 | * @return {workbox-routing~handlerCallback}
|
|---|
| 139 | */
|
|---|
| 140 | createHandlerBoundToURL(url: string): RouteHandlerCallback;
|
|---|
| 141 | }
|
|---|
| 142 | export { PrecacheController };
|
|---|