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.
		
		
		
		
		
			
		
			
				
					383 lines
				
				12 KiB
			
		
		
			
		
	
	
					383 lines
				
				12 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import type { Location, Path, To } from "./history";
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Map of routeId -> data returned from a loader/action/error
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface RouteData {
							 | 
						||
| 
								 | 
							
								    [routeId: string]: any;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export declare enum ResultType {
							 | 
						||
| 
								 | 
							
								    data = "data",
							 | 
						||
| 
								 | 
							
								    deferred = "deferred",
							 | 
						||
| 
								 | 
							
								    redirect = "redirect",
							 | 
						||
| 
								 | 
							
								    error = "error"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Successful result from a loader or action
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface SuccessResult {
							 | 
						||
| 
								 | 
							
								    type: ResultType.data;
							 | 
						||
| 
								 | 
							
								    data: any;
							 | 
						||
| 
								 | 
							
								    statusCode?: number;
							 | 
						||
| 
								 | 
							
								    headers?: Headers;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Successful defer() result from a loader or action
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface DeferredResult {
							 | 
						||
| 
								 | 
							
								    type: ResultType.deferred;
							 | 
						||
| 
								 | 
							
								    deferredData: DeferredData;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Redirect result from a loader or action
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface RedirectResult {
							 | 
						||
| 
								 | 
							
								    type: ResultType.redirect;
							 | 
						||
| 
								 | 
							
								    status: number;
							 | 
						||
| 
								 | 
							
								    location: string;
							 | 
						||
| 
								 | 
							
								    revalidate: boolean;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Unsuccessful result from a loader or action
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface ErrorResult {
							 | 
						||
| 
								 | 
							
								    type: ResultType.error;
							 | 
						||
| 
								 | 
							
								    error: any;
							 | 
						||
| 
								 | 
							
								    headers?: Headers;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Result from a loader or action - potentially successful or unsuccessful
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare type DataResult = SuccessResult | DeferredResult | RedirectResult | ErrorResult;
							 | 
						||
| 
								 | 
							
								export declare type MutationFormMethod = "post" | "put" | "patch" | "delete";
							 | 
						||
| 
								 | 
							
								export declare type FormMethod = "get" | MutationFormMethod;
							 | 
						||
| 
								 | 
							
								export declare type FormEncType = "application/x-www-form-urlencoded" | "multipart/form-data";
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 * Internal interface to pass around for action submissions, not intended for
							 | 
						||
| 
								 | 
							
								 * external consumption
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface Submission {
							 | 
						||
| 
								 | 
							
								    formMethod: FormMethod;
							 | 
						||
| 
								 | 
							
								    formAction: string;
							 | 
						||
| 
								 | 
							
								    formEncType: FormEncType;
							 | 
						||
| 
								 | 
							
								    formData: FormData;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 * Arguments passed to route loader/action functions.  Same for now but we keep
							 | 
						||
| 
								 | 
							
								 * this as a private implementation detail in case they diverge in the future.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								interface DataFunctionArgs {
							 | 
						||
| 
								 | 
							
								    request: Request;
							 | 
						||
| 
								 | 
							
								    params: Params;
							 | 
						||
| 
								 | 
							
								    context?: any;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Arguments passed to loader functions
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface LoaderFunctionArgs extends DataFunctionArgs {
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Arguments passed to action functions
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface ActionFunctionArgs extends DataFunctionArgs {
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Route loader function signature
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface LoaderFunction {
							 | 
						||
| 
								 | 
							
								    (args: LoaderFunctionArgs): Promise<Response> | Response | Promise<any> | any;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Route action function signature
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface ActionFunction {
							 | 
						||
| 
								 | 
							
								    (args: ActionFunctionArgs): Promise<Response> | Response | Promise<any> | any;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Route shouldRevalidate function signature.  This runs after any submission
							 | 
						||
| 
								 | 
							
								 * (navigation or fetcher), so we flatten the navigation/fetcher submission
							 | 
						||
| 
								 | 
							
								 * onto the arguments.  It shouldn't matter whether it came from a navigation
							 | 
						||
| 
								 | 
							
								 * or a fetcher, what really matters is the URLs and the formData since loaders
							 | 
						||
| 
								 | 
							
								 * have to re-run based on the data models that were potentially mutated.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface ShouldRevalidateFunction {
							 | 
						||
| 
								 | 
							
								    (args: {
							 | 
						||
| 
								 | 
							
								        currentUrl: URL;
							 | 
						||
| 
								 | 
							
								        currentParams: AgnosticDataRouteMatch["params"];
							 | 
						||
| 
								 | 
							
								        nextUrl: URL;
							 | 
						||
| 
								 | 
							
								        nextParams: AgnosticDataRouteMatch["params"];
							 | 
						||
| 
								 | 
							
								        formMethod?: Submission["formMethod"];
							 | 
						||
| 
								 | 
							
								        formAction?: Submission["formAction"];
							 | 
						||
| 
								 | 
							
								        formEncType?: Submission["formEncType"];
							 | 
						||
| 
								 | 
							
								        formData?: Submission["formData"];
							 | 
						||
| 
								 | 
							
								        actionResult?: DataResult;
							 | 
						||
| 
								 | 
							
								        defaultShouldRevalidate: boolean;
							 | 
						||
| 
								 | 
							
								    }): boolean;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Base RouteObject with common props shared by all types of routes
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								declare type AgnosticBaseRouteObject = {
							 | 
						||
| 
								 | 
							
								    caseSensitive?: boolean;
							 | 
						||
| 
								 | 
							
								    path?: string;
							 | 
						||
| 
								 | 
							
								    id?: string;
							 | 
						||
| 
								 | 
							
								    loader?: LoaderFunction;
							 | 
						||
| 
								 | 
							
								    action?: ActionFunction;
							 | 
						||
| 
								 | 
							
								    hasErrorBoundary?: boolean;
							 | 
						||
| 
								 | 
							
								    shouldRevalidate?: ShouldRevalidateFunction;
							 | 
						||
| 
								 | 
							
								    handle?: any;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Index routes must not have children
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {
							 | 
						||
| 
								 | 
							
								    children?: undefined;
							 | 
						||
| 
								 | 
							
								    index: true;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Non-index routes may have children, but cannot have index
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {
							 | 
						||
| 
								 | 
							
								    children?: AgnosticRouteObject[];
							 | 
						||
| 
								 | 
							
								    index?: false;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A route object represents a logical route, with (optionally) its child
							 | 
						||
| 
								 | 
							
								 * routes organized in a tree-like structure.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare type AgnosticRouteObject = AgnosticIndexRouteObject | AgnosticNonIndexRouteObject;
							 | 
						||
| 
								 | 
							
								export declare type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {
							 | 
						||
| 
								 | 
							
								    id: string;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								export declare type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {
							 | 
						||
| 
								 | 
							
								    children?: AgnosticDataRouteObject[];
							 | 
						||
| 
								 | 
							
								    id: string;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A data route object, which is just a RouteObject with a required unique ID
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare type AgnosticDataRouteObject = AgnosticDataIndexRouteObject | AgnosticDataNonIndexRouteObject;
							 | 
						||
| 
								 | 
							
								declare type _PathParam<Path extends string> = Path extends `${infer L}/${infer R}` ? _PathParam<L> | _PathParam<R> : Path extends `:${infer Param}` ? Param : never;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Examples:
							 | 
						||
| 
								 | 
							
								 * "/a/b/*" -> "*"
							 | 
						||
| 
								 | 
							
								 * ":a" -> "a"
							 | 
						||
| 
								 | 
							
								 * "/a/:b" -> "b"
							 | 
						||
| 
								 | 
							
								 * "/a/blahblahblah:b" -> "b"
							 | 
						||
| 
								 | 
							
								 * "/:a/:b" -> "a" | "b"
							 | 
						||
| 
								 | 
							
								 * "/:a/b/:c/*" -> "a" | "c" | "*"
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								declare type PathParam<Path extends string> = Path extends "*" ? "*" : Path extends `${infer Rest}/*` ? "*" | _PathParam<Rest> : _PathParam<Path>;
							 | 
						||
| 
								 | 
							
								export declare type ParamParseKey<Segment extends string> = [
							 | 
						||
| 
								 | 
							
								    PathParam<Segment>
							 | 
						||
| 
								 | 
							
								] extends [never] ? string : PathParam<Segment>;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The parameters that were parsed from the URL path.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare type Params<Key extends string = string> = {
							 | 
						||
| 
								 | 
							
								    readonly [key in Key]: string | undefined;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A RouteMatch contains info about how a route matched a URL.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface AgnosticRouteMatch<ParamKey extends string = string, RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject> {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * The names and values of dynamic parameters in the URL.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    params: Params<ParamKey>;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * The portion of the URL pathname that was matched.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    pathname: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * The portion of the URL pathname that was matched before child routes.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    pathnameBase: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * The route object that was used to match.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    route: RouteObjectType;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export interface AgnosticDataRouteMatch extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export declare function convertRoutesToDataRoutes(routes: AgnosticRouteObject[], parentPath?: number[], allIds?: Set<string>): AgnosticDataRouteObject[];
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Matches the given routes to a location and returns the match data.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @see https://reactrouter.com/utils/match-routes
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function matchRoutes<RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject>(routes: RouteObjectType[], locationArg: Partial<Location> | string, basename?: string): AgnosticRouteMatch<string, RouteObjectType>[] | null;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a path with params interpolated.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @see https://reactrouter.com/utils/generate-path
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function generatePath<Path extends string>(originalPath: Path, params?: {
							 | 
						||
| 
								 | 
							
								    [key in PathParam<Path>]: string;
							 | 
						||
| 
								 | 
							
								}): string;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A PathPattern is used to match on some portion of a URL pathname.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface PathPattern<Path extends string = string> {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * A string to match against a URL pathname. May contain `:id`-style segments
							 | 
						||
| 
								 | 
							
								     * to indicate placeholders for dynamic parameters. May also end with `/*` to
							 | 
						||
| 
								 | 
							
								     * indicate matching the rest of the URL pathname.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    path: Path;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Should be `true` if the static portions of the `path` should be matched in
							 | 
						||
| 
								 | 
							
								     * the same case.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    caseSensitive?: boolean;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Should be `true` if this pattern should match the entire URL pathname.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    end?: boolean;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A PathMatch contains info about how a PathPattern matched on a URL pathname.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface PathMatch<ParamKey extends string = string> {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * The names and values of dynamic parameters in the URL.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    params: Params<ParamKey>;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * The portion of the URL pathname that was matched.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    pathname: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * The portion of the URL pathname that was matched before child routes.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    pathnameBase: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * The pattern that was used to match.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    pattern: PathPattern;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Performs pattern matching on a URL pathname and returns information about
							 | 
						||
| 
								 | 
							
								 * the match.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @see https://reactrouter.com/utils/match-path
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function matchPath<ParamKey extends ParamParseKey<Path>, Path extends string>(pattern: PathPattern<Path> | Path, pathname: string): PathMatch<ParamKey> | null;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function stripBasename(pathname: string, basename: string): string | null;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function warning(cond: any, message: string): void;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a resolved path object relative to the given pathname.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @see https://reactrouter.com/utils/resolve-path
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function resolvePath(to: To, fromPathname?: string): Path;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * When processing relative navigation we want to ignore ancestor routes that
							 | 
						||
| 
								 | 
							
								 * do not contribute to the path, such that index/pathless layout routes don't
							 | 
						||
| 
								 | 
							
								 * interfere.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * For example, when moving a route element into an index route and/or a
							 | 
						||
| 
								 | 
							
								 * pathless layout route, relative link behavior contained within should stay
							 | 
						||
| 
								 | 
							
								 * the same.  Both of the following examples should link back to the root:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *   <Route path="/">
							 | 
						||
| 
								 | 
							
								 *     <Route path="accounts" element={<Link to=".."}>
							 | 
						||
| 
								 | 
							
								 *   </Route>
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *   <Route path="/">
							 | 
						||
| 
								 | 
							
								 *     <Route path="accounts">
							 | 
						||
| 
								 | 
							
								 *       <Route element={<AccountsLayout />}>       // <-- Does not contribute
							 | 
						||
| 
								 | 
							
								 *         <Route index element={<Link to=".."} />  // <-- Does not contribute
							 | 
						||
| 
								 | 
							
								 *       </Route
							 | 
						||
| 
								 | 
							
								 *     </Route>
							 | 
						||
| 
								 | 
							
								 *   </Route>
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function getPathContributingMatches<T extends AgnosticRouteMatch = AgnosticRouteMatch>(matches: T[]): T[];
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function resolveTo(toArg: To, routePathnames: string[], locationPathname: string, isPathRelative?: boolean): Path;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function getToPathname(to: To): string | undefined;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare const joinPaths: (paths: string[]) => string;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare const normalizePathname: (pathname: string) => string;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare const normalizeSearch: (search: string) => string;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare const normalizeHash: (hash: string) => string;
							 | 
						||
| 
								 | 
							
								export declare type JsonFunction = <Data>(data: Data, init?: number | ResponseInit) => Response;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * This is a shortcut for creating `application/json` responses. Converts `data`
							 | 
						||
| 
								 | 
							
								 * to JSON and sets the `Content-Type` header.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare const json: JsonFunction;
							 | 
						||
| 
								 | 
							
								export interface TrackedPromise extends Promise<any> {
							 | 
						||
| 
								 | 
							
								    _tracked?: boolean;
							 | 
						||
| 
								 | 
							
								    _data?: any;
							 | 
						||
| 
								 | 
							
								    _error?: any;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export declare class AbortedDeferredError extends Error {
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export declare class DeferredData {
							 | 
						||
| 
								 | 
							
								    private pendingKeys;
							 | 
						||
| 
								 | 
							
								    private controller;
							 | 
						||
| 
								 | 
							
								    private abortPromise;
							 | 
						||
| 
								 | 
							
								    private unlistenAbortSignal;
							 | 
						||
| 
								 | 
							
								    private subscriber?;
							 | 
						||
| 
								 | 
							
								    data: Record<string, unknown>;
							 | 
						||
| 
								 | 
							
								    constructor(data: Record<string, unknown>);
							 | 
						||
| 
								 | 
							
								    private trackPromise;
							 | 
						||
| 
								 | 
							
								    private onSettle;
							 | 
						||
| 
								 | 
							
								    subscribe(fn: (aborted: boolean) => void): void;
							 | 
						||
| 
								 | 
							
								    cancel(): void;
							 | 
						||
| 
								 | 
							
								    resolveData(signal: AbortSignal): Promise<boolean>;
							 | 
						||
| 
								 | 
							
								    get done(): boolean;
							 | 
						||
| 
								 | 
							
								    get unwrappedData(): {};
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export declare function defer(data: Record<string, unknown>): DeferredData;
							 | 
						||
| 
								 | 
							
								export declare type RedirectFunction = (url: string, init?: number | ResponseInit) => Response;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A redirect response. Sets the status code and the `Location` header.
							 | 
						||
| 
								 | 
							
								 * Defaults to "302 Found".
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare const redirect: RedirectFunction;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare class ErrorResponse {
							 | 
						||
| 
								 | 
							
								    status: number;
							 | 
						||
| 
								 | 
							
								    statusText: string;
							 | 
						||
| 
								 | 
							
								    data: any;
							 | 
						||
| 
								 | 
							
								    error?: Error;
							 | 
						||
| 
								 | 
							
								    internal: boolean;
							 | 
						||
| 
								 | 
							
								    constructor(status: number, statusText: string | undefined, data: any, internal?: boolean);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Check if the given error is an ErrorResponse generated from a 4xx/5xx
							 | 
						||
| 
								 | 
							
								 * Response throw from an action/loader
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function isRouteErrorResponse(e: any): e is ErrorResponse;
							 | 
						||
| 
								 | 
							
								export {};
							 |