///
///
///
import type { IncomingMessage } from 'http';
import type { ParsedUrlQuery } from 'querystring';
import type { UrlWithParsedQuery } from 'url';
import type { BaseNextRequest } from './base-http';
import type { CloneableBody } from './body-streams';
import type { RouteMatch } from './future/route-matches/route-match';
import type { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers';
export declare const NEXT_REQUEST_META: unique symbol;
export type NextIncomingMessage = (BaseNextRequest | IncomingMessage) & {
[NEXT_REQUEST_META]?: RequestMeta;
};
export interface RequestMeta {
__NEXT_INIT_QUERY?: ParsedUrlQuery;
__NEXT_INIT_URL?: string;
__NEXT_CLONABLE_BODY?: CloneableBody;
__nextHadTrailingSlash?: boolean;
/**
* True when the request matched a locale domain that was configured in the
* next.config.js file.
*/
__nextIsLocaleDomain?: boolean;
/**
* True when the request had locale information stripped from the pathname
* part of the URL.
*/
__nextStrippedLocale?: boolean;
_nextDidRewrite?: boolean;
_nextHadBasePath?: boolean;
_nextRewroteUrl?: string;
_nextMiddlewareCookie?: string[];
_protocol?: string;
_nextDataNormalizing?: boolean;
_nextMatch?: RouteMatch;
_nextIncrementalCache?: any;
_nextMinimalMode?: boolean;
}
/**
* Gets the request metadata. If no key is provided, the entire metadata object
* is returned.
*
* @param req the request to get the metadata from
* @param key the key to get from the metadata (optional)
* @returns the value for the key or the entire metadata object
*/
export declare function getRequestMeta(req: NextIncomingMessage, key?: undefined): RequestMeta;
export declare function getRequestMeta(req: NextIncomingMessage, key: K): RequestMeta[K];
/**
* Sets the request metadata.
*
* @param req the request to set the metadata on
* @param meta the metadata to set
* @returns the mutated request metadata
*/
export declare function setRequestMeta(req: NextIncomingMessage, meta: RequestMeta): RequestMeta;
/**
* Adds a value to the request metadata.
*
* @param request the request to mutate
* @param key the key to set
* @param value the value to set
* @returns the mutated request metadata
*/
export declare function addRequestMeta(request: NextIncomingMessage, key: K, value: RequestMeta[K]): RequestMeta;
/**
* Removes a key from the request metadata.
*
* @param request the request to mutate
* @param key the key to remove
* @returns the mutated request metadata
*/
export declare function removeRequestMeta(request: NextIncomingMessage, key: K): RequestMeta;
type NextQueryMetadata = {
__nextNotFoundSrcPage?: string;
__nextDefaultLocale?: string;
__nextFallback?: 'true';
/**
* The locale that was inferred or explicitly set for the request.
*
* When this property is mutated, it's important to also update the request
* metadata for `_nextInferredDefaultLocale` to ensure that the correct
* behavior is applied.
*/
__nextLocale?: string;
/**
* `1` when the request did not have a locale in the pathname part of the
* URL but the default locale was inferred from either the domain or the
* configuration.
*/
__nextInferredLocaleFromDefault?: '1';
__nextSsgPath?: string;
_nextBubbleNoFallback?: '1';
__nextDataReq?: '1';
__nextCustomErrorRender?: '1';
[NEXT_RSC_UNION_QUERY]?: string;
};
export type NextParsedUrlQuery = ParsedUrlQuery & NextQueryMetadata & {
amp?: '1';
};
export interface NextUrlWithParsedQuery extends UrlWithParsedQuery {
query: NextParsedUrlQuery;
}
export declare function getNextInternalQuery(query: NextParsedUrlQuery): NextQueryMetadata;
export {};