/home/techb158/balavpn.abdallabala.com/node_modules/next/dist/server
Edit: /home/techb158/balavpn.abdallabala.com/node_modules/next/dist/server/config-shared.d.ts (49280B)
import type { webpack } from 'next/dist/compiled/webpack/webpack';
import type { Header, Redirect, Rewrite, RouteHas } from '../lib/load-custom-routes';
import type { ImageConfig, ImageConfigComplete } from '../shared/lib/image-config';
import type { SubresourceIntegrityAlgorithm } from '../build/webpack/plugins/subresource-integrity-plugin';
import type { WEB_VITALS } from '../shared/lib/utils';
import type { NextParsedUrlQuery } from './request-meta';
import type { SizeLimit } from '../types';
import type { SupportedTestRunners } from '../cli/next-test';
import type { ExperimentalPPRConfig } from './lib/experimental/ppr';
import type { ManifestRewriteRoute, ManifestHeaderRoute, ManifestRedirectRoute, ManifestRoute } from '../build';
import type { RenderingMode } from '../build/rendering-mode';
import type { Revalidate } from './lib/cache-control';
import type { AdapterOutputType } from '../shared/lib/constants';
import type { MiddlewareMatcher } from '../build/analysis/get-page-static-info';
export type NextConfigComplete = Required
& {
images: Required;
typescript: Required;
configOrigin?: string;
configFile?: string;
configFileName: string;
htmlLimitedBots: string | undefined;
experimental: Omit;
};
export type AdapterOutputs = Array<{
/**
* id is a unique identifier for the output
*/
id: string;
/**
* pathname is the URL path that the output is meant to
* be routable to at e.g. /blog/[slug] or /_next/static/chunks/chunk.js
*/
pathname: string;
/**
* runtime for the route, this doesn't apply for prerender or static
*/
runtime?: 'nodejs' | 'edge';
/**
* config related to the route
*/
config?: {
/**
* maxDuration is a segment config to signal the max
* execution duration a route should be allowed before
* it's timed out
*/
maxDuration?: number;
/**
* preferredRegion is a segment config to signal deployment
* region preferences to the provider being used
*/
preferredRegion?: string | string[];
/**
* allowQuery is the allowed query values to be passed
* to an ISR function and what should be considered for the cacheKey
* e.g. for /blog/[slug], "slug" is the only allowQuery
*/
allowQuery?: string[];
/**
* allowHeader is the allowed headers to be passed to an
* ISR function to prevent accidentally poisoning the cache
* from leaking additional information that can impact the render
*/
allowHeader?: string[];
/**
* bypass for is a list of has conditions the cache
* should be bypassed and invoked directly e.g. action header
*/
bypassFor?: RouteHas[];
/**
* renderingMode signals PPR or not for a prerender
*/
renderingMode?: RenderingMode;
/**
* matchers are the configured matchers for middleware
*/
matchers?: MiddlewareMatcher[];
/**
* bypassToken is the generated token that signals a prerender cache
* should be bypassed
*/
bypassToken?: string;
/**
* postponed is the PPR state when it postponed and is used for resuming
*/
postponed?: string;
};
/**
* For prerenders the parent output is the originating
* page that the prerender is created from
*/
parentOutputId?: string;
/**
* fallback is initial cache data generated during build for a prerender
*/
fallback?: {
/**
* path to the fallback file can be HTML/JSON/RSC
*/
filePath: string;
/**
* initialStatus is the status code that should be applied
* when serving the fallback
*/
initialStatus?: number;
/**
* initialHeaders are the headers that should be sent when
* serving the fallback
*/
initialHeaders?: Record;
/**
* initial expiration is how long until the fallback entry
* is considered expired and no longer valid to serve
*/
initialExpiration?: number;
/**
* initial revalidate is how long until the fallback is
* considered stale and should be revalidated
*/
initialRevalidate?: Revalidate;
};
/**
* assets are all necessary traced assets that could be
* loaded by the output to handle a request e.g. traced
* node_modules or necessary manifests for Next.js
*/
assets?: Record;
/**
* filePath is present for all cases except a Prerender
* which may or may not have a fallback (initial cache entry).
* The parent output will have a filePath for a prerender though
*/
filePath?: string;
/**
* type of output
*/
type: AdapterOutputType;
}>;
export interface NextAdapter {
name: string;
modifyConfig?: (config: NextConfigComplete) => Promise | NextConfigComplete;
onBuildComplete?: (ctx: {
routes: {
headers: Array;
redirects: Array;
rewrites: {
beforeFiles: Array;
afterFiles: Array;
fallback: Array;
};
dynamicRoutes: ReadonlyArray;
};
outputs: AdapterOutputs;
}) => Promise | void;
}
export type I18NDomains = readonly DomainLocale[];
export interface I18NConfig {
defaultLocale: string;
domains?: I18NDomains;
localeDetection?: false;
locales: readonly string[];
}
export interface DomainLocale {
defaultLocale: string;
domain: string;
http?: true;
locales?: readonly string[];
}
export interface ESLintConfig {
/** Only run ESLint on these directories with `next lint` and `next build`. */
dirs?: string[];
/** Do not run ESLint during production builds (`next build`). */
ignoreDuringBuilds?: boolean;
}
export interface TypeScriptConfig {
/** Do not run TypeScript during production builds (`next build`). */
ignoreBuildErrors?: boolean;
/** Relative path to a custom tsconfig file */
tsconfigPath?: string;
}
export interface EmotionConfig {
sourceMap?: boolean;
autoLabel?: 'dev-only' | 'always' | 'never';
labelFormat?: string;
importMap?: {
[importName: string]: {
[exportName: string]: {
canonicalImport?: [string, string];
styledBaseImport?: [string, string];
};
};
};
}
export interface StyledComponentsConfig {
/**
* Enabled by default in development, disabled in production to reduce file size,
* setting this will override the default for all environments.
*/
displayName?: boolean;
topLevelImportPaths?: string[];
ssr?: boolean;
fileName?: boolean;
meaninglessFileNames?: string[];
minify?: boolean;
transpileTemplateLiterals?: boolean;
namespace?: string;
pure?: boolean;
cssProp?: boolean;
}
type JSONValue = string | number | boolean | JSONValue[] | {
[k: string]: JSONValue;
};
/**
* @deprecated Use `TurbopackRuleConfigItem` instead.
*/
export type TurbopackLoaderItem = string | {
loader: string;
options: Record;
};
export type TurbopackLoaderBuiltinCondition = 'default' | 'browser' | 'foreign' | 'development' | 'production' | 'node' | 'edge-light';
export type TurbopackRuleCondition = {
path?: string | RegExp;
content?: RegExp;
};
export type TurbopackRuleConfigItemOrShortcut = TurbopackLoaderItem[] | TurbopackRuleConfigItem;
export type TurbopackRuleConfigItemOptions = {
loaders: TurbopackLoaderItem[];
as?: string;
};
export type TurbopackRuleConfigItem = TurbopackRuleConfigItemOptions | {
[condition in TurbopackLoaderBuiltinCondition]?: TurbopackRuleConfigItem;
} | false;
export interface TurbopackOptions {
/**
* (`next --turbopack` only) A mapping of aliased imports to modules to load in their place.
*
* @see [Resolve Alias](https://nextjs.org/docs/app/api-reference/next-config-js/turbo#resolve-alias)
*/
resolveAlias?: Record>;
/**
* (`next --turbopack` only) A list of extensions to resolve when importing files.
*
* @see [Resolve Extensions](https://nextjs.org/docs/app/api-reference/next-config-js/turbo#resolve-extensions)
*/
resolveExtensions?: string[];
/**
* (`next --turbopack` only) A list of webpack loaders to apply when running with Turbopack.
*
* @see [Turbopack Loaders](https://nextjs.org/docs/app/api-reference/next-config-js/turbo#webpack-loaders)
*/
rules?: Record;
/**
* (`next --turbopack` only) A list of conditions to apply when running webpack loaders with Turbopack.
*
* @see [Turbopack Loaders](https://nextjs.org/docs/app/api-reference/next-config-js/turbo#webpack-loaders)
*/
conditions?: Record;
/**
* The module ID strategy to use for Turbopack.
* If not set, the default is `'named'` for development and `'deterministic'`
* for production.
*/
moduleIds?: 'named' | 'deterministic';
/**
* This is the repo root usually and only files above this
* directory can be resolved by turbopack.
*/
root?: string;
}
export interface DeprecatedExperimentalTurboOptions extends TurbopackOptions {
/**
* (`next --turbopack` only) A list of webpack loaders to apply when running with Turbopack.
*
* @deprecated Use `rules` instead.
* @see [Turbopack Loaders](https://nextjs.org/docs/app/api-reference/next-config-js/turbo#webpack-loaders)
*/
loaders?: Record;
/**
* A target memory limit for turbo, in bytes.
* @deprecated Use `experimental.turbopackMemoryLimit` instead.
*/
memoryLimit?: number;
/**
* Enable minification. Defaults to true in build mode and false in dev mode.
* @deprecated Use `experimental.turbopackMinify` instead.
*/
minify?: boolean;
/**
* Enable tree shaking for the turbopack dev server and build.
* @deprecated Use `experimental.turbopackTreeShaking` instead.
*/
treeShaking?: boolean;
/**
* Enable source maps. Defaults to true.
* @deprecated Use `experimental.turbopackSourceMaps` instead.
*/
sourceMaps?: boolean;
}
export interface WebpackConfigContext {
/** Next.js root directory */
dir: string;
/** Indicates if the compilation will be done in development */
dev: boolean;
/** It's `true` for server-side compilation, and `false` for client-side compilation */
isServer: boolean;
/** The build id, used as a unique identifier between builds */
buildId: string;
/** The next.config.js merged with default values */
config: NextConfigComplete;
/** Default loaders used internally by Next.js */
defaultLoaders: {
/** Default babel-loader configuration */
babel: any;
};
/** Number of total Next.js pages */
totalPages: number;
/** The webpack configuration */
webpack: any;
/** The current server runtime */
nextRuntime?: 'nodejs' | 'edge';
}
export interface NextJsWebpackConfig {
(
/** Existing Webpack config */
config: any, context: WebpackConfigContext): any;
}
/**
* Set of options for the react compiler next.js
* currently supports.
*
* This can be changed without breaking changes while supporting
* react compiler in the experimental phase.
*/
export interface ReactCompilerOptions {
compilationMode?: 'infer' | 'annotation' | 'all';
panicThreshold?: 'ALL_ERRORS' | 'CRITICAL_ERRORS' | 'NONE';
}
export interface IncomingRequestLoggingConfig {
/**
* A regular expression array to match incoming requests that should not be logged.
* You can specify multiple patterns to match incoming requests that should not be logged.
*/
ignore?: RegExp[];
}
export interface LoggingConfig {
fetches?: {
fullUrl?: boolean;
/**
* If true, fetch requests that are restored from the HMR cache are logged
* during an HMR refresh request, i.e. when editing a server component.
*/
hmrRefreshes?: boolean;
};
/**
* If set to false, incoming request logging is disabled.
* You can specify a pattern to match incoming requests that should not be logged.
*/
incomingRequests?: boolean | IncomingRequestLoggingConfig;
}
export interface ExperimentalConfig {
adapterPath?: string;
useSkewCookie?: boolean;
cacheHandlers?: {
default?: string;
remote?: string;
static?: string;
[handlerName: string]: string | undefined;
};
multiZoneDraftMode?: boolean;
appNavFailHandling?: boolean;
prerenderEarlyExit?: boolean;
linkNoTouchStart?: boolean;
caseSensitiveRoutes?: boolean;
clientSegmentCache?: boolean | 'client-only';
clientParamParsing?: boolean;
dynamicOnHover?: boolean;
appDocumentPreloading?: boolean;
preloadEntriesOnStart?: boolean;
clientRouterFilter?: boolean;
clientRouterFilterRedirects?: boolean;
/**
* This config can be used to override the cache behavior for the client router.
* These values indicate the time, in seconds, that the cache should be considered
* reusable. When the `prefetch` Link prop is left unspecified, this will use the `dynamic` value.
* When the `prefetch` Link prop is set to `true`, this will use the `static` value.
*/
staleTimes?: {
dynamic?: number;
static?: number;
};
cacheLife?: {
[profile: string]: {
stale?: number;
revalidate?: number;
expire?: number;
};
};
clientRouterFilterAllowedRate?: number;
externalMiddlewareRewritesResolve?: boolean;
extensionAlias?: Record;
allowedRevalidateHeaderKeys?: string[];
fetchCacheKeyPrefix?: string;
imgOptConcurrency?: number | null;
imgOptTimeoutInSeconds?: number;
imgOptMaxInputPixels?: number;
imgOptSequentialRead?: boolean | null;
imgOptSkipMetadata?: boolean | null;
optimisticClientCache?: boolean;
/**
* @deprecated use config.expireTime instead
*/
expireTime?: number;
middlewarePrefetch?: 'strict' | 'flexible';
manualClientBasePath?: boolean;
/**
* CSS Chunking strategy. Defaults to `true` ("loose" mode), which guesses dependencies
* between CSS files to keep ordering of them.
* An alternative is 'strict', which will try to keep correct ordering as
* much as possible, even when this leads to many requests.
*/
cssChunking?: boolean | 'strict';
disablePostcssPresetEnv?: boolean;
cpus?: number;
memoryBasedWorkersCount?: boolean;
proxyTimeout?: number;
isrFlushToDisk?: boolean;
workerThreads?: boolean;
optimizeCss?: boolean | Record;
nextScriptWorkers?: boolean;
scrollRestoration?: boolean;
externalDir?: boolean;
/** @deprecated built-in amp support will be removed in Next 16 */
amp?: {
optimizer?: any;
validator?: string;
skipValidation?: boolean;
};
disableOptimizedLoading?: boolean;
gzipSize?: boolean;
craCompat?: boolean;
esmExternals?: boolean | 'loose';
fullySpecified?: boolean;
urlImports?: NonNullable['buildHttp'];
swcTraceProfiling?: boolean;
forceSwcTransforms?: boolean;
swcPlugins?: Array<[string, Record]>;
largePageDataBytes?: number;
/**
* If set to `false`, webpack won't fall back to polyfill Node.js modules in the browser
* Full list of old polyfills is accessible here:
* [webpack/webpack#ModuleNotoundError.js#L13-L42](https://github.com/webpack/webpack/blob/2a0536cf510768111a3a6dceeb14cb79b9f59273/lib/ModuleNotFoundError.js#L13-L42)
*/
fallbackNodePolyfills?: false;
sri?: {
algorithm?: SubresourceIntegrityAlgorithm;
};
webVitalsAttribution?: Array<(typeof WEB_VITALS)[number]>;
/**
* Automatically apply the "modularizeImports" optimization to imports of the specified packages.
*/
optimizePackageImports?: string[];
/**
* Optimize React APIs for server builds.
*/
optimizeServerReact?: boolean;
/**
* @deprecated Use `config.turbopack` instead.
*/
turbo?: DeprecatedExperimentalTurboOptions;
/**
* A target memory limit for turbo, in bytes.
*/
turbopackMemoryLimit?: number;
/**
* Enable minification. Defaults to true in build mode and false in dev mode.
*/
turbopackMinify?: boolean;
/**
* Enable scope hoisting. Defaults to true in build mode. Always disabled in development mode.
*/
turbopackScopeHoisting?: boolean;
/**
* Enable persistent caching for the turbopack dev server and build.
*/
turbopackPersistentCaching?: boolean;
/**
* Enable source maps. Defaults to true.
*/
turbopackSourceMaps?: boolean;
/**
* Enable tree shaking for the turbopack dev server and build.
*/
turbopackTreeShaking?: boolean;
/**
* Enable removing unused exports for turbopack dev server and build.
*/
turbopackRemoveUnusedExports?: boolean;
/**
* For use with `@next/mdx`. Compile MDX files using the new Rust compiler.
* @see https://nextjs.org/docs/app/api-reference/next-config-js/mdxRs
*/
mdxRs?: boolean | {
development?: boolean;
jsx?: boolean;
jsxRuntime?: string;
jsxImportSource?: string;
providerImportSource?: string;
mdxType?: 'gfm' | 'commonmark';
};
/**
* Enable type checking for Link and Router.push, etc.
* @deprecated Use `typedRoutes` instead — this feature is now stable.
* @see https://nextjs.org/docs/app/api-reference/config/typescript#statically-typed-links
*/
typedRoutes?: boolean;
/**
* Enable type-checking and autocompletion for environment variables.
*
* @default false
*/
typedEnv?: boolean;
/**
* Runs the compilations for server and edge in parallel instead of in serial.
* This will make builds faster if there is enough server and edge functions
* in the application at the cost of more memory.
*
* NOTE: This option is only valid when the build process can use workers. See
* the documentation for `webpackBuildWorker` for more details.
*/
parallelServerCompiles?: boolean;
/**
* Runs the logic to collect build traces for the server routes in parallel
* with other work during the compilation. This will increase the speed of
* the build at the cost of more memory. This option may incur some additional
* work compared to if the option was disabled since the work is started
* before data from the client compilation is available to potentially reduce
* the amount of code that needs to be traced. Despite that, this may still
* result in faster builds for some applications.
*
* Valid values are:
* - `true`: Collect the server build traces in parallel.
* - `false`: Do not collect the server build traces in parallel.
* - `undefined`: Collect server build traces in parallel only in the `experimental-compile` mode.
*
* NOTE: This option is only valid when the build process can use workers. See
* the documentation for `webpackBuildWorker` for more details.
*/
parallelServerBuildTraces?: boolean;
/**
* Run the Webpack build in a separate process to optimize memory usage during build.
* Valid values are:
* - `false`: Disable the Webpack build worker
* - `true`: Enable the Webpack build worker
* - `undefined`: Enable the Webpack build worker only if the webpack config is not customized
*/
webpackBuildWorker?: boolean;
/**
* Enables optimizations to reduce memory usage in Webpack. This reduces the max size of the heap
* but may increase compile times slightly.
* Valid values are:
* - `false`: Disable Webpack memory optimizations (default).
* - `true`: Enables Webpack memory optimizations.
*/
webpackMemoryOptimizations?: boolean;
/**
* The array of the meta tags to the client injected by tracing propagation data.
*/
clientTraceMetadata?: string[];
/**
* Enables experimental Partial Prerendering feature of Next.js.
* Using this feature will enable the `react@experimental` for the `app` directory.
*/
ppr?: ExperimentalPPRConfig;
/**
* Enables experimental taint APIs in React.
* Using this feature will enable the `react@experimental` for the `app` directory.
*/
taint?: boolean;
/**
* Enables the Back/Forward Cache for the router.
*/
routerBFCache?: boolean;
/**
* Uninstalls all "unhandledRejection" and "uncaughtException" listeners from
* the global process so that we can override the behavior, which in some
* runtimes is to exit the process.
*
* This is experimental until we've considered the impact in various
* deployment environments.
*/
removeUncaughtErrorAndRejectionListeners?: boolean;
/**
* During an RSC request, validates that the request headers match the
* cache-busting search parameter sent by the client.
*/
validateRSCRequestHeaders?: boolean;
serverActions?: {
/**
* Allows adjusting body parser size limit for server actions.
*/
bodySizeLimit?: SizeLimit;
/**
* Allowed origins that can bypass Server Action's CSRF check. This is helpful
* when you have reverse proxy in front of your app.
* @example
* ["my-app.com", "*.my-app.com"]
*/
allowedOrigins?: string[];
};
/**
* enables the minification of server code.
*/
serverMinification?: boolean;
/**
* Enables source maps while generating static pages.
* Helps with errors during the prerender phase in `next build`.
*/
enablePrerenderSourceMaps?: boolean;
/**
* Enables source maps generation for the server production bundle.
*/
serverSourceMaps?: boolean;
useWasmBinary?: boolean;
/**
* Use lightningcss instead of postcss-loader
*/
useLightningcss?: boolean;
/**
* Enables view transitions by using the {@link https://github.com/facebook/react/pull/31975 unstable_ViewTransition} Component.
*/
viewTransition?: boolean;
/**
* Enables `fetch` requests to be proxied to the experimental test proxy server
*/
testProxy?: boolean;
/**
* Set a default test runner to be used by `next experimental-test`.
*/
defaultTestRunner?: SupportedTestRunners;
/**
* Allow NODE_ENV=development even for `next build`.
*/
allowDevelopmentBuild?: true;
/**
* @deprecated use `config.bundlePagesRouterDependencies` instead
*
*/
bundlePagesExternals?: boolean;
/**
* @deprecated use `config.serverExternalPackages` instead
*
*/
serverComponentsExternalPackages?: string[];
/**
* Enable experimental React compiler optimization.
* Configuration accepts partial config object to the compiler, if provided
* compiler will be enabled.
*/
reactCompiler?: boolean | ReactCompilerOptions;
/**
* The number of times to retry static generation (per page) before giving up.
*/
staticGenerationRetryCount?: number;
/**
* The amount of pages to export per worker during static generation.
*/
staticGenerationMaxConcurrency?: number;
/**
* The minimum number of pages to be chunked into each export worker.
*/
staticGenerationMinPagesPerWorker?: number;
/**
* Allows previously fetched data to be re-used when editing server components.
*/
serverComponentsHmrCache?: boolean;
/**
* When enabled, will cause IO in App Router to be excluded from prerenders,
* unless explicitly cached. This also enables the experimental Partial
* Prerendering feature of Next.js, and it enables `react@experimental` being
* used for the `app` directory.
*/
cacheComponents?: boolean;
/**
* @deprecated Use `experimental.cacheComponents` instead.
*/
dynamicIO?: boolean;
/**
* Render