| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 | /// <reference types="node" />/// <reference types="node" />import type { ComponentType } from 'react';import type { DomainLocale } from '../../../server/config';import type { MittEmitter } from '../mitt';import type { ParsedUrlQuery } from 'querystring';import type { RouterEvent } from '../../../client/router';import type { StyleSheetTuple } from '../../../client/page-loader';import type { UrlObject } from 'url';import type PageLoader from '../../../client/page-loader';import { NextPageContext, NEXT_DATA } from '../utils';declare global {    interface Window {        __NEXT_DATA__: NEXT_DATA;    }}interface RouteProperties {    shallow: boolean;}interface TransitionOptions {    shallow?: boolean;    locale?: string | false;    scroll?: boolean;    unstable_skipClientCache?: boolean;}interface NextHistoryState {    url: string;    as: string;    options: TransitionOptions;}export declare type HistoryState = null | {    __NA: true;    __N?: false;} | {    __N: false;    __NA?: false;} | ({    __NA?: false;    __N: true;    key: string;} & NextHistoryState);interface MiddlewareEffectParams<T extends FetchDataOutput> {    fetchData?: () => Promise<T>;    locale?: string;    asPath: string;    router: Router;}export declare function matchesMiddleware<T extends FetchDataOutput>(options: MiddlewareEffectParams<T>): Promise<boolean>;/** * Detects whether a given url is routable by the Next.js router (browser only). */export declare function isLocalURL(url: string): boolean;export declare function interpolateAs(route: string, asPathname: string, query: ParsedUrlQuery): {    params: string[];    result: string;};/** * Resolves a given hyperlink with a certain router state (basePath not included). * Preserves absolute urls. */export declare function resolveHref(router: NextRouter, href: Url, resolveAs?: boolean): string;declare type Url = UrlObject | string;export declare type BaseRouter = {    route: string;    pathname: string;    query: ParsedUrlQuery;    asPath: string;    basePath: string;    locale?: string | undefined;    locales?: string[] | undefined;    defaultLocale?: string | undefined;    domainLocales?: DomainLocale[] | undefined;    isLocaleDomain: boolean;};export declare type NextRouter = BaseRouter & Pick<Router, 'push' | 'replace' | 'reload' | 'back' | 'prefetch' | 'beforePopState' | 'events' | 'isFallback' | 'isReady' | 'isPreview'>;export declare type PrefetchOptions = {    priority?: boolean;    locale?: string | false;    unstable_skipClientCache?: boolean;};export declare type PrivateRouteInfo = (Omit<CompletePrivateRouteInfo, 'styleSheets'> & {    initial: true;}) | CompletePrivateRouteInfo;export declare type CompletePrivateRouteInfo = {    Component: ComponentType;    styleSheets: StyleSheetTuple[];    __N_SSG?: boolean;    __N_SSP?: boolean;    props?: Record<string, any>;    err?: Error;    error?: any;    route?: string;    resolvedAs?: string;    query?: ParsedUrlQuery;};export declare type AppProps = Pick<CompletePrivateRouteInfo, 'Component' | 'err'> & {    router: Router;} & Record<string, any>;export declare type AppComponent = ComponentType<AppProps>;declare type Subscription = (data: PrivateRouteInfo, App: AppComponent, resetScroll: {    x: number;    y: number;} | null) => Promise<void>;declare type BeforePopStateCallback = (state: NextHistoryState) => boolean;declare type ComponentLoadCancel = (() => void) | null;declare type HistoryMethod = 'replaceState' | 'pushState';interface FetchDataOutput {    dataHref: string;    json: Record<string, any> | null;    response: Response;    text: string;    cacheKey: string;}interface NextDataCache {    [asPath: string]: Promise<FetchDataOutput>;}export declare function createKey(): string;export default class Router implements BaseRouter {    basePath: string;    /**     * Map of all components loaded in `Router`     */    components: {        [pathname: string]: PrivateRouteInfo;    };    sdc: NextDataCache;    sub: Subscription;    clc: ComponentLoadCancel;    pageLoader: PageLoader;    _bps: BeforePopStateCallback | undefined;    events: MittEmitter<RouterEvent>;    _wrapApp: (App: AppComponent) => any;    isSsr: boolean;    _inFlightRoute?: string | undefined;    _shallow?: boolean | undefined;    locales?: string[] | undefined;    defaultLocale?: string | undefined;    domainLocales?: DomainLocale[] | undefined;    isReady: boolean;    isLocaleDomain: boolean;    isFirstPopStateEvent: boolean;    _initialMatchesMiddlewarePromise: Promise<boolean>;    private state;    private _key;    static events: MittEmitter<RouterEvent>;    constructor(pathname: string, query: ParsedUrlQuery, as: string, { initialProps, pageLoader, App, wrapApp, Component, err, subscription, isFallback, locale, locales, defaultLocale, domainLocales, isPreview, }: {        subscription: Subscription;        initialProps: any;        pageLoader: any;        Component: ComponentType;        App: AppComponent;        wrapApp: (WrapAppComponent: AppComponent) => any;        err?: Error;        isFallback: boolean;        locale?: string;        locales?: string[];        defaultLocale?: string;        domainLocales?: DomainLocale[];        isPreview?: boolean;    });    onPopState: (e: PopStateEvent) => void;    reload(): void;    /**     * Go back in history     */    back(): void;    /**     * Performs a `pushState` with arguments     * @param url of the route     * @param as masks `url` for the browser     * @param options object you can define `shallow` and other options     */    push(url: Url, as?: Url, options?: TransitionOptions): Promise<boolean>;    /**     * Performs a `replaceState` with arguments     * @param url of the route     * @param as masks `url` for the browser     * @param options object you can define `shallow` and other options     */    replace(url: Url, as?: Url, options?: TransitionOptions): Promise<boolean>;    private change;    changeState(method: HistoryMethod, url: string, as: string, options?: TransitionOptions): void;    handleRouteInfoError(err: Error & {        code?: any;        cancelled?: boolean;    }, pathname: string, query: ParsedUrlQuery, as: string, routeProps: RouteProperties, loadErrorFail?: boolean): Promise<CompletePrivateRouteInfo>;    getRouteInfo({ route: requestedRoute, pathname, query, as, resolvedAs, routeProps, locale, hasMiddleware, isPreview, unstable_skipClientCache, }: {        route: string;        pathname: string;        query: ParsedUrlQuery;        as: string;        resolvedAs: string;        hasMiddleware?: boolean;        routeProps: RouteProperties;        locale: string | undefined;        isPreview: boolean;        unstable_skipClientCache?: boolean;    }): Promise<PrivateRouteInfo | {        type: "redirect-external";        destination: string;    } | {        type: "redirect-internal";        newAs: string;        newUrl: string;    }>;    private set;    /**     * Callback to execute before replacing router state     * @param cb callback to be executed     */    beforePopState(cb: BeforePopStateCallback): void;    onlyAHashChange(as: string): boolean;    scrollToHash(as: string): void;    urlIsNew(asPath: string): boolean;    /**     * Prefetch page code, you may wait for the data during page rendering.     * This feature only works in production!     * @param url the href of prefetched page     * @param asPath the as path of the prefetched page     */    prefetch(url: string, asPath?: string, options?: PrefetchOptions): Promise<void>;    fetchComponent(route: string): Promise<import("../../../client/page-loader").GoodPageCache>;    _getData<T>(fn: () => Promise<T>): Promise<T>;    _getFlightData(dataHref: string): Promise<{        data: string;    }>;    getInitialProps(Component: ComponentType, ctx: NextPageContext): Promise<any>;    get route(): string;    get pathname(): string;    get query(): ParsedUrlQuery;    get asPath(): string;    get locale(): string | undefined;    get isFallback(): boolean;    get isPreview(): boolean;}export {};
 |