import type { HTTPMethod } from "../constants.js"; import type { Route } from "../Route.js"; import type { RouteHandler, RouteHandlerCallbackOptions, RouteMatchCallback, RouteMatchCallbackOptions } from "../types.js"; /** * A class that can be used to process a `fetch` event using one or more route(s), responding with a response * if a matching route exists. * * If no route matches given a request, the router will use the default handler if one is defined. * * Should the matching route throw an error, the router will use the catch handler if one is defined to * gracefully deal with issues and respond with a response. * * If a request matches multiple routes, the earliest registered route will be used to respond to the it. * @deprecated */ export declare class Router { private readonly _routes; private readonly _defaultHandlerMap; private _fetchListenerHandler; private _cacheListenerHandler; private _catchHandler?; /** * Initializes a new Router. */ constructor(); /** * @returns routes A `Map` of HTTP method name (`'GET'`, etc.) to an array of all * the corresponding {@linkcode Route} instances that are registered. */ get routes(): Map; /** * Adds a `fetch` event listener to respond to events when a route matches * the event's request. Effectively no-op if `addFetchListener` has been * called, but `removeFetchListener` has not. */ addFetchListener(): void; /** * Removes `fetch` event listener added by `addFetchListener`. * Effectively no-op if either `addFetchListener` has not been called or, * if it has, so has `removeFetchListener`. */ removeFetchListener(): 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. Effectively no-op if `addCacheListener` * has been called, but `removeCacheListener` hasn't. * * 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; /** * Removes the `message` event listener added by `addCacheListener`. * Effectively no-op if either `addCacheListener` has not been called or, * if it has, so has `removeCacheListener`. */ removeCacheListener(): void; /** * Apply the routing rules to a `fetch` event to get a response from an * appropriate route. * * @param options * @returns 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, }: { /** * The request to handle. */ request: Request; /** * The event that triggered the request. */ event: ExtendableEvent; }): Promise | 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 options * @returns 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 handler A callback function that returns a promise resulting in a response. * @param method The HTTP method to associate with this default handler. Each method * has its own default. Defaults to `'GET'`. */ 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 handler A callback function that returns a Promise resulting * in a Response. */ setCatchHandler(handler: RouteHandler): void; /** * Registers a `RegExp`, string, or function with a caching * strategy to the router. * * @param capture If the capture param is a {@linkcode Route} object, all other arguments will be ignored. * @param handler A callback function that returns a promise resulting in a response. * This parameter is required if `capture` is not a {@linkcode Route} object. * @param method The HTTP method to match the route against. Defaults to `'GET'`. * @returns The generated {@linkcode Route} object. */ registerCapture(capture: RegExp | string | RouteMatchCallback | Route, handler?: RouteHandler, method?: HTTPMethod): Route; /** * Registers a route with the router. * * @param route The route to register. */ registerRoute(route: Route): void; /** * Unregisters a route from the router. * * @param route The route to unregister. */ unregisterRoute(route: Route): void; } //# sourceMappingURL=Router.d.ts.map