123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- import { Route } from './Route.js';
- import { HTTPMethod } from './utils/constants.js';
- import { Handler, HandlerCallbackOptions } from './_types.js';
- import './_version.js';
- /**
- * The Router can be used to process a FetchEvent through one or more
- * [Routes]{@link module:workbox-routing.Route} responding with a Request if
- * a matching route exists.
- *
- * If no route matches a given a request, the Router will use a "default"
- * handler if one is defined.
- *
- * Should the matching Route throw an error, the Router will use a "catch"
- * handler if one is defined to gracefully deal with issues and respond with a
- * Request.
- *
- * If a request matches multiple routes, the **earliest** registered route will
- * be used to respond to the request.
- *
- * @memberof module:workbox-routing
- */
- declare class Router {
- private readonly _routes;
- private _defaultHandler?;
- private _catchHandler?;
- /**
- * Initializes a new Router.
- */
- constructor();
- /**
- * @return {Map<string, Array<module:workbox-routing.Route>>} routes A `Map` of HTTP
- * method name ('GET', etc.) to an array of all the corresponding `Route`
- * instances that are registered.
- */
- get routes(): Map<HTTPMethod, Route[]>;
- /**
- * Adds a fetch event listener to respond to events when a route matches
- * the event's request.
- */
- addFetchListener(): void;
- /**
- * Adds a message event listener for URLs to cache from the window.
- * This is useful to cache resources loaded on the page prior to when the
- * service worker started controlling it.
- *
- * The format of the message data sent from the window should be as follows.
- * Where the `urlsToCache` array may consist of URL strings or an array of
- * URL string + `requestInit` object (the same as you'd pass to `fetch()`).
- *
- * ```
- * {
- * type: 'CACHE_URLS',
- * payload: {
- * urlsToCache: [
- * './script1.js',
- * './script2.js',
- * ['./script3.js', {mode: 'no-cors'}],
- * ],
- * },
- * }
- * ```
- */
- addCacheListener(): void;
- /**
- * Apply the routing rules to a FetchEvent object to get a Response from an
- * appropriate Route's handler.
- *
- * @param {Object} options
- * @param {Request} options.request The request to handle (this is usually
- * from a fetch event, but it does not have to be).
- * @param {FetchEvent} [options.event] The event that triggered the request,
- * if applicable.
- * @return {Promise<Response>|undefined} A promise is returned if a
- * registered route can handle the request. If there is no matching
- * route and there's no `defaultHandler`, `undefined` is returned.
- */
- handleRequest({ request, event }: {
- request: Request;
- event?: ExtendableEvent;
- }): Promise<Response> | undefined;
- /**
- * Checks a request and URL (and optionally an event) against the list of
- * registered routes, and if there's a match, returns the corresponding
- * route along with any params generated by the match.
- *
- * @param {Object} options
- * @param {URL} options.url
- * @param {Request} options.request The request to match.
- * @param {Event} [options.event] The corresponding event (unless N/A).
- * @return {Object} An object with `route` and `params` properties.
- * They are populated if a matching route was found or `undefined`
- * otherwise.
- */
- findMatchingRoute({ url, request, event }: {
- url: URL;
- request: Request;
- event?: ExtendableEvent;
- }): {
- route?: Route;
- params?: HandlerCallbackOptions['params'];
- };
- /**
- * Define a default `handler` that's called when no routes explicitly
- * match the incoming request.
- *
- * Without a default handler, unmatched requests will go against the
- * network as if there were no service worker present.
- *
- * @param {module:workbox-routing~handlerCallback} handler A callback
- * function that returns a Promise resulting in a Response.
- */
- setDefaultHandler(handler: Handler): void;
- /**
- * If a Route throws an error while handling a request, this `handler`
- * will be called and given a chance to provide a response.
- *
- * @param {module:workbox-routing~handlerCallback} handler A callback
- * function that returns a Promise resulting in a Response.
- */
- setCatchHandler(handler: Handler): void;
- /**
- * Registers a route with the router.
- *
- * @param {module:workbox-routing.Route} route The route to register.
- */
- registerRoute(route: Route): void;
- /**
- * Unregisters a route with the router.
- *
- * @param {module:workbox-routing.Route} route The route to unregister.
- */
- unregisterRoute(route: Route): void;
- }
- export { Router };
|