123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import { HandlerCallbackOptions, RouteHandlerObject, WorkboxPlugin } from 'workbox-core/types.js';
- import { StrategyHandler } from './StrategyHandler.js';
- import './_version.js';
- export interface StrategyOptions {
- cacheName?: string;
- plugins?: WorkboxPlugin[];
- fetchOptions?: RequestInit;
- matchOptions?: CacheQueryOptions;
- }
- /**
- * An abstract base class that all other strategy classes must extend from:
- *
- * @memberof workbox-strategies
- */
- declare abstract class Strategy implements RouteHandlerObject {
- cacheName: string;
- plugins: WorkboxPlugin[];
- fetchOptions?: RequestInit;
- matchOptions?: CacheQueryOptions;
- protected abstract _handle(request: Request, handler: StrategyHandler): Promise<Response | undefined>;
- /**
- * Creates a new instance of the strategy and sets all documented option
- * properties as public instance properties.
- *
- * Note: if a custom strategy class extends the base Strategy class and does
- * not need more than these properties, it does not need to define its own
- * constructor.
- *
- * @param {Object} [options]
- * @param {string} [options.cacheName] Cache name to store and retrieve
- * requests. Defaults to the cache names provided by
- * {@link workbox-core.cacheNames}.
- * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}
- * to use in conjunction with this caching strategy.
- * @param {Object} [options.fetchOptions] Values passed along to the
- * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)
- * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)
- * `fetch()` requests made by this strategy.
- * @param {Object} [options.matchOptions] The
- * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}
- * for any `cache.match()` or `cache.put()` calls made by this strategy.
- */
- constructor(options?: StrategyOptions);
- /**
- * Perform a request strategy and returns a `Promise` that will resolve with
- * a `Response`, invoking all relevant plugin callbacks.
- *
- * When a strategy instance is registered with a Workbox
- * {@link workbox-routing.Route}, this method is automatically
- * called when the route matches.
- *
- * Alternatively, this method can be used in a standalone `FetchEvent`
- * listener by passing it to `event.respondWith()`.
- *
- * @param {FetchEvent|Object} options A `FetchEvent` or an object with the
- * properties listed below.
- * @param {Request|string} options.request A request to run this strategy for.
- * @param {ExtendableEvent} options.event The event associated with the
- * request.
- * @param {URL} [options.url]
- * @param {*} [options.params]
- */
- handle(options: FetchEvent | HandlerCallbackOptions): Promise<Response>;
- /**
- * Similar to {@link workbox-strategies.Strategy~handle}, but
- * instead of just returning a `Promise` that resolves to a `Response` it
- * it will return an tuple of `[response, done]` promises, where the former
- * (`response`) is equivalent to what `handle()` returns, and the latter is a
- * Promise that will resolve once any promises that were added to
- * `event.waitUntil()` as part of performing the strategy have completed.
- *
- * You can await the `done` promise to ensure any extra work performed by
- * the strategy (usually caching responses) completes successfully.
- *
- * @param {FetchEvent|Object} options A `FetchEvent` or an object with the
- * properties listed below.
- * @param {Request|string} options.request A request to run this strategy for.
- * @param {ExtendableEvent} options.event The event associated with the
- * request.
- * @param {URL} [options.url]
- * @param {*} [options.params]
- * @return {Array<Promise>} A tuple of [response, done]
- * promises that can be used to determine when the response resolves as
- * well as when the handler has completed all its work.
- */
- handleAll(options: FetchEvent | HandlerCallbackOptions): [Promise<Response>, Promise<void>];
- _getResponse(handler: StrategyHandler, request: Request, event: ExtendableEvent): Promise<Response>;
- _awaitComplete(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent): Promise<void>;
- }
- export { Strategy };
- /**
- * Classes extending the `Strategy` based class should implement this method,
- * and leverage the {@link workbox-strategies.StrategyHandler}
- * arg to perform all fetching and cache logic, which will ensure all relevant
- * cache, cache options, fetch options and plugins are used (per the current
- * strategy instance).
- *
- * @name _handle
- * @instance
- * @abstract
- * @function
- * @param {Request} request
- * @param {workbox-strategies.StrategyHandler} handler
- * @return {Promise<Response>}
- *
- * @memberof workbox-strategies.Strategy
- */
|