You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
5.0 KiB
135 lines
5.0 KiB
import { RouteHandler, RouteHandlerCallbackOptions, RouteMatchCallbackOptions } from 'workbox-core/types.js'; |
|
import { HTTPMethod } from './utils/constants.js'; |
|
import { Route } from './Route.js'; |
|
import './_version.js'; |
|
/** |
|
* The Router can be used to process a `FetchEvent` using one or more |
|
* {@link workbox-routing.Route}, responding with a `Response` 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 workbox-routing |
|
*/ |
|
declare class Router { |
|
private readonly _routes; |
|
private readonly _defaultHandlerMap; |
|
private _catchHandler?; |
|
/** |
|
* Initializes a new Router. |
|
*/ |
|
constructor(); |
|
/** |
|
* @return {Map<string, Array<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. |
|
* @param {ExtendableEvent} options.event The event that triggered the |
|
* request. |
|
* @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 {boolean} options.sameOrigin The result of comparing `url.origin` |
|
* against the current origin. |
|
* @param {Request} options.request The request to match. |
|
* @param {Event} options.event The corresponding event. |
|
* @return {Object} An object with `route` and `params` properties. |
|
* They are populated if a matching route was found or `undefined` |
|
* otherwise. |
|
*/ |
|
findMatchingRoute({ url, sameOrigin, request, event, }: RouteMatchCallbackOptions): { |
|
route?: Route; |
|
params?: RouteHandlerCallbackOptions['params']; |
|
}; |
|
/** |
|
* Define a default `handler` that's called when no routes explicitly |
|
* match the incoming request. |
|
* |
|
* Each HTTP method ('GET', 'POST', etc.) gets its own default handler. |
|
* |
|
* Without a default handler, unmatched requests will go against the |
|
* network as if there were no service worker present. |
|
* |
|
* @param {workbox-routing~handlerCallback} handler A callback |
|
* function that returns a Promise resulting in a Response. |
|
* @param {string} [method='GET'] The HTTP method to associate with this |
|
* default handler. Each method has its own default. |
|
*/ |
|
setDefaultHandler(handler: RouteHandler, method?: HTTPMethod): 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 {workbox-routing~handlerCallback} handler A callback |
|
* function that returns a Promise resulting in a Response. |
|
*/ |
|
setCatchHandler(handler: RouteHandler): void; |
|
/** |
|
* Registers a route with the router. |
|
* |
|
* @param {workbox-routing.Route} route The route to register. |
|
*/ |
|
registerRoute(route: Route): void; |
|
/** |
|
* Unregisters a route with the router. |
|
* |
|
* @param {workbox-routing.Route} route The route to unregister. |
|
*/ |
|
unregisterRoute(route: Route): void; |
|
} |
|
export { Router };
|
|
|