next 15.4.2-canary.39 → 15.4.2-canary.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/next +1 -1
- package/dist/build/index.js +2 -2
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js +1 -1
- package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/pages-api.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
- package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/pages.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
- package/dist/esm/build/index.js +2 -2
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack-config.js +2 -2
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/server/config-schema.js +1 -0
- package/dist/esm/server/config-schema.js.map +1 -1
- package/dist/esm/server/config-shared.js +1 -0
- package/dist/esm/server/config-shared.js.map +1 -1
- package/dist/esm/server/config.js +8 -0
- package/dist/esm/server/config.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/image-optimizer.js +7 -4
- package/dist/esm/server/image-optimizer.js.map +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/esm/shared/lib/canary-only.js +1 -1
- package/dist/server/config-schema.js +1 -0
- package/dist/server/config-schema.js.map +1 -1
- package/dist/server/config-shared.d.ts +7 -1
- package/dist/server/config-shared.js +1 -0
- package/dist/server/config-shared.js.map +1 -1
- package/dist/server/config.js +8 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/image-optimizer.d.ts +2 -2
- package/dist/server/image-optimizer.js +7 -4
- package/dist/server/image-optimizer.js.map +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/shared/lib/canary-only.js +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- package/package.json +15 -15
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/server/image-optimizer.ts"],"sourcesContent":["import { createHash } from 'crypto'\nimport { promises } from 'fs'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport { mediaType } from 'next/dist/compiled/@hapi/accept'\nimport contentDisposition from 'next/dist/compiled/content-disposition'\nimport imageSizeOf from 'next/dist/compiled/image-size'\nimport { detector } from 'next/dist/compiled/image-detector/detector.js'\nimport isAnimated from 'next/dist/compiled/is-animated'\nimport { join } from 'path'\nimport nodeUrl, { type UrlWithParsedQuery } from 'url'\n\nimport { getImageBlurSvg } from '../shared/lib/image-blur-svg'\nimport type { ImageConfigComplete } from '../shared/lib/image-config'\nimport { hasLocalMatch } from '../shared/lib/match-local-pattern'\nimport { hasRemoteMatch } from '../shared/lib/match-remote-pattern'\nimport type { NextConfigComplete } from './config-shared'\nimport { createRequestResponseMocks } from './lib/mock-request'\nimport type { NextUrlWithParsedQuery } from './request-meta'\nimport {\n CachedRouteKind,\n type CachedImageValue,\n type IncrementalCacheEntry,\n type IncrementalCacheValue,\n type IncrementalResponseCacheEntry,\n} from './response-cache'\nimport { sendEtagResponse } from './send-payload'\nimport { getContentType, getExtension } from './serve-static'\nimport * as Log from '../build/output/log'\nimport isError from '../lib/is-error'\nimport { parseUrl } from '../lib/url'\nimport type { CacheControl } from './lib/cache-control'\nimport { InvariantError } from '../shared/lib/invariant-error'\n\ntype XCacheHeader = 'MISS' | 'HIT' | 'STALE'\n\nconst AVIF = 'image/avif'\nconst WEBP = 'image/webp'\nconst PNG = 'image/png'\nconst JPEG = 'image/jpeg'\nconst JXL = 'image/jxl'\nconst JP2 = 'image/jp2'\nconst HEIC = 'image/heic'\nconst GIF = 'image/gif'\nconst SVG = 'image/svg+xml'\nconst ICO = 'image/x-icon'\nconst ICNS = 'image/x-icns'\nconst TIFF = 'image/tiff'\nconst BMP = 'image/bmp'\nconst PDF = 'application/pdf'\nconst CACHE_VERSION = 4\nconst ANIMATABLE_TYPES = [WEBP, PNG, GIF]\nconst BYPASS_TYPES = [SVG, ICO, ICNS, BMP, JXL, HEIC]\nconst BLUR_IMG_SIZE = 8 // should match `next-image-loader`\nconst BLUR_QUALITY = 70 // should match `next-image-loader`\n\nlet _sharp: typeof import('sharp')\n\nexport function getSharp(concurrency: number | null | undefined) {\n if (_sharp) {\n return _sharp\n }\n try {\n _sharp = require('sharp') as typeof import('sharp')\n if (_sharp && _sharp.concurrency() > 1) {\n // Reducing concurrency should reduce the memory usage too.\n // We more aggressively reduce in dev but also reduce in prod.\n // https://sharp.pixelplumbing.com/api-utility#concurrency\n const divisor = process.env.NODE_ENV === 'development' ? 4 : 2\n _sharp.concurrency(\n concurrency ?? Math.floor(Math.max(_sharp.concurrency() / divisor, 1))\n )\n }\n } catch (e: unknown) {\n if (isError(e) && e.code === 'MODULE_NOT_FOUND') {\n throw new Error(\n 'Module `sharp` not found. Please run `npm install --cpu=wasm32 sharp` to install it.'\n )\n }\n throw e\n }\n return _sharp\n}\n\nexport interface ImageParamsResult {\n href: string\n isAbsolute: boolean\n isStatic: boolean\n width: number\n quality: number\n mimeType: string\n sizes: number[]\n minimumCacheTTL: number\n}\n\ninterface ImageUpstream {\n buffer: Buffer\n contentType: string | null | undefined\n cacheControl: string | null | undefined\n etag: string\n}\n\nfunction getSupportedMimeType(options: string[], accept = ''): string {\n const mimeType = mediaType(accept, options)\n return accept.includes(mimeType) ? mimeType : ''\n}\n\nexport function getHash(items: (string | number | Buffer)[]) {\n const hash = createHash('sha256')\n for (let item of items) {\n if (typeof item === 'number') hash.update(String(item))\n else {\n hash.update(item)\n }\n }\n // See https://en.wikipedia.org/wiki/Base64#URL_applications\n return hash.digest('base64url')\n}\n\nexport function extractEtag(\n etag: string | null | undefined,\n imageBuffer: Buffer\n) {\n if (etag) {\n // upstream etag needs to be base64url encoded due to weak etag signature\n // as we store this in the cache-entry file name.\n return Buffer.from(etag).toString('base64url')\n }\n return getImageEtag(imageBuffer)\n}\n\nexport function getImageEtag(image: Buffer) {\n return getHash([image])\n}\n\nasync function writeToCacheDir(\n dir: string,\n extension: string,\n maxAge: number,\n expireAt: number,\n buffer: Buffer,\n etag: string,\n upstreamEtag: string\n) {\n const filename = join(\n dir,\n `${maxAge}.${expireAt}.${etag}.${upstreamEtag}.${extension}`\n )\n\n await promises.rm(dir, { recursive: true, force: true }).catch(() => {})\n\n await promises.mkdir(dir, { recursive: true })\n await promises.writeFile(filename, buffer)\n}\n\n/**\n * Inspects the first few bytes of a buffer to determine if\n * it matches the \"magic number\" of known file signatures.\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n */\nexport async function detectContentType(\n buffer: Buffer\n): Promise<string | null> {\n if ([0xff, 0xd8, 0xff].every((b, i) => buffer[i] === b)) {\n return JPEG\n }\n if (\n [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every(\n (b, i) => buffer[i] === b\n )\n ) {\n return PNG\n }\n if ([0x47, 0x49, 0x46, 0x38].every((b, i) => buffer[i] === b)) {\n return GIF\n }\n if (\n [0x52, 0x49, 0x46, 0x46, 0, 0, 0, 0, 0x57, 0x45, 0x42, 0x50].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return WEBP\n }\n if ([0x3c, 0x3f, 0x78, 0x6d, 0x6c].every((b, i) => buffer[i] === b)) {\n return SVG\n }\n if ([0x3c, 0x73, 0x76, 0x67].every((b, i) => buffer[i] === b)) {\n return SVG\n }\n if (\n [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return AVIF\n }\n if ([0x00, 0x00, 0x01, 0x00].every((b, i) => buffer[i] === b)) {\n return ICO\n }\n if ([0x69, 0x63, 0x6e, 0x73].every((b, i) => buffer[i] === b)) {\n return ICNS\n }\n if ([0x49, 0x49, 0x2a, 0x00].every((b, i) => buffer[i] === b)) {\n return TIFF\n }\n if ([0x42, 0x4d].every((b, i) => buffer[i] === b)) {\n return BMP\n }\n if ([0xff, 0x0a].every((b, i) => buffer[i] === b)) {\n return JXL\n }\n if (\n [\n 0x00, 0x00, 0x00, 0x0c, 0x4a, 0x58, 0x4c, 0x20, 0x0d, 0x0a, 0x87, 0x0a,\n ].every((b, i) => buffer[i] === b)\n ) {\n return JXL\n }\n if (\n [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x68, 0x65, 0x69, 0x63].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return HEIC\n }\n if ([0x25, 0x50, 0x44, 0x46, 0x2d].every((b, i) => buffer[i] === b)) {\n return PDF\n }\n if (\n [\n 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a,\n ].every((b, i) => buffer[i] === b)\n ) {\n return JP2\n }\n\n let format:\n | import('sharp').Metadata['format']\n | ReturnType<typeof detector>\n | undefined\n format = detector(buffer)\n\n if (!format) {\n const sharp = getSharp(null)\n const meta = await sharp(buffer)\n .metadata()\n .catch((_) => null)\n format = meta?.format\n }\n\n switch (format) {\n case 'avif':\n return AVIF\n case 'webp':\n return WEBP\n case 'png':\n return PNG\n case 'jpeg':\n case 'jpg':\n return JPEG\n case 'gif':\n return GIF\n case 'svg':\n return SVG\n case 'jxl':\n case 'jxl-stream':\n return JXL\n case 'jp2':\n return JP2\n case 'tiff':\n case 'tif':\n return TIFF\n case 'pdf':\n return PDF\n case 'bmp':\n return BMP\n case 'ico':\n return ICO\n case 'icns':\n return ICNS\n case 'dcraw':\n case 'dz':\n case 'exr':\n case 'fits':\n case 'heif':\n case 'input':\n case 'magick':\n case 'openslide':\n case 'ppm':\n case 'rad':\n case 'raw':\n case 'v':\n case 'cur':\n case 'dds':\n case 'j2c':\n case 'ktx':\n case 'pnm':\n case 'psd':\n case 'tga':\n case undefined:\n default:\n return null\n }\n}\n\nexport class ImageOptimizerCache {\n private cacheDir: string\n private nextConfig: NextConfigComplete\n\n static validateParams(\n req: IncomingMessage,\n query: UrlWithParsedQuery['query'],\n nextConfig: NextConfigComplete,\n isDev: boolean\n ): ImageParamsResult | { errorMessage: string } {\n const imageData = nextConfig.images\n const {\n deviceSizes = [],\n imageSizes = [],\n domains = [],\n minimumCacheTTL = 60,\n formats = ['image/webp'],\n } = imageData\n const remotePatterns = nextConfig.images?.remotePatterns || []\n const localPatterns = nextConfig.images?.localPatterns\n const qualities = nextConfig.images?.qualities\n const { url, w, q } = query\n let href: string\n\n if (domains.length > 0) {\n Log.warnOnce(\n 'The \"images.domains\" configuration is deprecated. Please use \"images.remotePatterns\" configuration instead.'\n )\n }\n\n if (!url) {\n return { errorMessage: '\"url\" parameter is required' }\n } else if (Array.isArray(url)) {\n return { errorMessage: '\"url\" parameter cannot be an array' }\n }\n\n if (url.length > 3072) {\n return { errorMessage: '\"url\" parameter is too long' }\n }\n\n if (url.startsWith('//')) {\n return {\n errorMessage: '\"url\" parameter cannot be a protocol-relative URL (//)',\n }\n }\n\n let isAbsolute: boolean\n\n if (url.startsWith('/')) {\n href = url\n isAbsolute = false\n if (\n /\\/_next\\/image($|\\/)/.test(\n decodeURIComponent(parseUrl(url)?.pathname ?? '')\n )\n ) {\n return {\n errorMessage: '\"url\" parameter cannot be recursive',\n }\n }\n if (!hasLocalMatch(localPatterns, url)) {\n return { errorMessage: '\"url\" parameter is not allowed' }\n }\n } else {\n let hrefParsed: URL\n\n try {\n hrefParsed = new URL(url)\n href = hrefParsed.toString()\n isAbsolute = true\n } catch (_error) {\n return { errorMessage: '\"url\" parameter is invalid' }\n }\n\n if (!['http:', 'https:'].includes(hrefParsed.protocol)) {\n return { errorMessage: '\"url\" parameter is invalid' }\n }\n\n if (!hasRemoteMatch(domains, remotePatterns, hrefParsed)) {\n return { errorMessage: '\"url\" parameter is not allowed' }\n }\n }\n\n if (!w) {\n return { errorMessage: '\"w\" parameter (width) is required' }\n } else if (Array.isArray(w)) {\n return { errorMessage: '\"w\" parameter (width) cannot be an array' }\n } else if (!/^[0-9]+$/.test(w)) {\n return {\n errorMessage: '\"w\" parameter (width) must be an integer greater than 0',\n }\n }\n\n if (!q) {\n return { errorMessage: '\"q\" parameter (quality) is required' }\n } else if (Array.isArray(q)) {\n return { errorMessage: '\"q\" parameter (quality) cannot be an array' }\n } else if (!/^[0-9]+$/.test(q)) {\n return {\n errorMessage:\n '\"q\" parameter (quality) must be an integer between 1 and 100',\n }\n }\n\n const width = parseInt(w, 10)\n\n if (width <= 0 || isNaN(width)) {\n return {\n errorMessage: '\"w\" parameter (width) must be an integer greater than 0',\n }\n }\n\n const sizes = [...(deviceSizes || []), ...(imageSizes || [])]\n\n if (isDev) {\n sizes.push(BLUR_IMG_SIZE)\n }\n\n const isValidSize =\n sizes.includes(width) || (isDev && width <= BLUR_IMG_SIZE)\n\n if (!isValidSize) {\n return {\n errorMessage: `\"w\" parameter (width) of ${width} is not allowed`,\n }\n }\n\n const quality = parseInt(q, 10)\n\n if (isNaN(quality) || quality < 1 || quality > 100) {\n return {\n errorMessage:\n '\"q\" parameter (quality) must be an integer between 1 and 100',\n }\n }\n\n if (qualities) {\n if (isDev) {\n qualities.push(BLUR_QUALITY)\n }\n\n if (!qualities.includes(quality)) {\n return {\n errorMessage: `\"q\" parameter (quality) of ${q} is not allowed`,\n }\n }\n }\n\n const mimeType = getSupportedMimeType(formats || [], req.headers['accept'])\n\n const isStatic = url.startsWith(\n `${nextConfig.basePath || ''}/_next/static/media`\n )\n\n return {\n href,\n sizes,\n isAbsolute,\n isStatic,\n width,\n quality,\n mimeType,\n minimumCacheTTL,\n }\n }\n\n static getCacheKey({\n href,\n width,\n quality,\n mimeType,\n }: {\n href: string\n width: number\n quality: number\n mimeType: string\n }): string {\n return getHash([CACHE_VERSION, href, width, quality, mimeType])\n }\n\n constructor({\n distDir,\n nextConfig,\n }: {\n distDir: string\n nextConfig: NextConfigComplete\n }) {\n this.cacheDir = join(distDir, 'cache', 'images')\n this.nextConfig = nextConfig\n }\n\n async get(cacheKey: string): Promise<IncrementalResponseCacheEntry | null> {\n try {\n const cacheDir = join(this.cacheDir, cacheKey)\n const files = await promises.readdir(cacheDir)\n const now = Date.now()\n\n for (const file of files) {\n const [maxAgeSt, expireAtSt, etag, upstreamEtag, extension] =\n file.split('.', 5)\n const buffer = await promises.readFile(join(cacheDir, file))\n const expireAt = Number(expireAtSt)\n const maxAge = Number(maxAgeSt)\n\n return {\n value: {\n kind: CachedRouteKind.IMAGE,\n etag,\n buffer,\n extension,\n upstreamEtag,\n },\n revalidateAfter:\n Math.max(maxAge, this.nextConfig.images.minimumCacheTTL) * 1000 +\n Date.now(),\n cacheControl: { revalidate: maxAge, expire: undefined },\n isStale: now > expireAt,\n }\n }\n } catch (_) {\n // failed to read from cache dir, treat as cache miss\n }\n return null\n }\n async set(\n cacheKey: string,\n value: IncrementalCacheValue | null,\n {\n cacheControl,\n }: {\n cacheControl?: CacheControl\n }\n ) {\n if (!this.nextConfig.experimental.isrFlushToDisk) {\n return\n }\n\n if (value?.kind !== CachedRouteKind.IMAGE) {\n throw new Error('invariant attempted to set non-image to image-cache')\n }\n\n const revalidate = cacheControl?.revalidate\n\n if (typeof revalidate !== 'number') {\n throw new InvariantError('revalidate must be a number for image-cache')\n }\n\n const expireAt =\n Math.max(revalidate, this.nextConfig.images.minimumCacheTTL) * 1000 +\n Date.now()\n\n try {\n await writeToCacheDir(\n join(this.cacheDir, cacheKey),\n value.extension,\n revalidate,\n expireAt,\n value.buffer,\n value.etag,\n value.upstreamEtag\n )\n } catch (err) {\n Log.error(`Failed to write image to cache ${cacheKey}`, err)\n }\n }\n}\nexport class ImageError extends Error {\n statusCode: number\n\n constructor(statusCode: number, message: string) {\n super(message)\n\n // ensure an error status is used > 400\n if (statusCode >= 400) {\n this.statusCode = statusCode\n } else {\n this.statusCode = 500\n }\n }\n}\n\nfunction parseCacheControl(\n str: string | null | undefined\n): Map<string, string> {\n const map = new Map<string, string>()\n if (!str) {\n return map\n }\n for (let directive of str.split(',')) {\n let [key, value] = directive.trim().split('=', 2)\n key = key.toLowerCase()\n if (value) {\n value = value.toLowerCase()\n }\n map.set(key, value)\n }\n return map\n}\n\nexport function getMaxAge(str: string | null | undefined): number {\n const map = parseCacheControl(str)\n if (map) {\n let age = map.get('s-maxage') || map.get('max-age') || ''\n if (age.startsWith('\"') && age.endsWith('\"')) {\n age = age.slice(1, -1)\n }\n const n = parseInt(age, 10)\n if (!isNaN(n)) {\n return n\n }\n }\n return 0\n}\nexport function getPreviouslyCachedImageOrNull(\n upstreamImage: ImageUpstream,\n previousCacheEntry: IncrementalCacheEntry | null | undefined\n): CachedImageValue | null {\n if (\n previousCacheEntry?.value?.kind === 'IMAGE' &&\n // Images that are SVGs, animated or failed the optimization previously end up using upstreamEtag as their etag as well,\n // in these cases we want to trigger a new \"optimization\" attempt.\n previousCacheEntry.value.upstreamEtag !== previousCacheEntry.value.etag &&\n // and the upstream etag is the same as the previous cache entry's\n upstreamImage.etag === previousCacheEntry.value.upstreamEtag\n ) {\n return previousCacheEntry.value\n }\n return null\n}\n\nexport async function optimizeImage({\n buffer,\n contentType,\n quality,\n width,\n height,\n concurrency,\n limitInputPixels,\n sequentialRead,\n timeoutInSeconds,\n}: {\n buffer: Buffer\n contentType: string\n quality: number\n width: number\n height?: number\n concurrency?: number | null\n limitInputPixels?: number\n sequentialRead?: boolean | null\n timeoutInSeconds?: number\n}): Promise<Buffer> {\n const sharp = getSharp(concurrency)\n const transformer = sharp(buffer, {\n limitInputPixels,\n sequentialRead: sequentialRead ?? undefined,\n })\n .timeout({\n seconds: timeoutInSeconds ?? 7,\n })\n .rotate()\n\n if (height) {\n transformer.resize(width, height)\n } else {\n transformer.resize(width, undefined, {\n withoutEnlargement: true,\n })\n }\n\n if (contentType === AVIF) {\n transformer.avif({\n quality: Math.max(quality - 20, 1),\n effort: 3,\n })\n } else if (contentType === WEBP) {\n transformer.webp({ quality })\n } else if (contentType === PNG) {\n transformer.png({ quality })\n } else if (contentType === JPEG) {\n transformer.jpeg({ quality, mozjpeg: true })\n }\n\n const optimizedBuffer = await transformer.toBuffer()\n\n return optimizedBuffer\n}\n\nexport async function fetchExternalImage(href: string): Promise<ImageUpstream> {\n const res = await fetch(href, {\n signal: AbortSignal.timeout(7_000),\n }).catch((err) => err as Error)\n\n if (res instanceof Error) {\n const err = res as Error\n if (err.name === 'TimeoutError') {\n Log.error('upstream image response timed out for', href)\n throw new ImageError(\n 504,\n '\"url\" parameter is valid but upstream response timed out'\n )\n }\n throw err\n }\n\n if (!res.ok) {\n Log.error('upstream image response failed for', href, res.status)\n throw new ImageError(\n res.status,\n '\"url\" parameter is valid but upstream response is invalid'\n )\n }\n\n const buffer = Buffer.from(await res.arrayBuffer())\n const contentType = res.headers.get('Content-Type')\n const cacheControl = res.headers.get('Cache-Control')\n const etag = extractEtag(res.headers.get('ETag'), buffer)\n return { buffer, contentType, cacheControl, etag }\n}\n\nexport async function fetchInternalImage(\n href: string,\n _req: IncomingMessage,\n _res: ServerResponse,\n handleRequest: (\n newReq: IncomingMessage,\n newRes: ServerResponse,\n newParsedUrl?: NextUrlWithParsedQuery\n ) => Promise<void>\n): Promise<ImageUpstream> {\n try {\n const mocked = createRequestResponseMocks({\n url: href,\n method: _req.method || 'GET',\n socket: _req.socket,\n })\n\n await handleRequest(mocked.req, mocked.res, nodeUrl.parse(href, true))\n await mocked.res.hasStreamed\n\n if (!mocked.res.statusCode) {\n Log.error('image response failed for', href, mocked.res.statusCode)\n throw new ImageError(\n mocked.res.statusCode,\n '\"url\" parameter is valid but internal response is invalid'\n )\n }\n\n const buffer = Buffer.concat(mocked.res.buffers)\n const contentType = mocked.res.getHeader('Content-Type')\n const cacheControl = mocked.res.getHeader('Cache-Control')\n const etag = extractEtag(mocked.res.getHeader('ETag'), buffer)\n\n return { buffer, contentType, cacheControl, etag }\n } catch (err) {\n Log.error('upstream image response failed for', href, err)\n throw new ImageError(\n 500,\n '\"url\" parameter is valid but upstream response is invalid'\n )\n }\n}\n\nexport async function imageOptimizer(\n imageUpstream: ImageUpstream,\n paramsResult: Pick<\n ImageParamsResult,\n 'href' | 'width' | 'quality' | 'mimeType'\n >,\n nextConfig: {\n experimental: Pick<\n NextConfigComplete['experimental'],\n | 'imgOptConcurrency'\n | 'imgOptMaxInputPixels'\n | 'imgOptSequentialRead'\n | 'imgOptTimeoutInSeconds'\n >\n images: Pick<\n NextConfigComplete['images'],\n 'dangerouslyAllowSVG' | 'minimumCacheTTL'\n >\n },\n opts: {\n isDev?: boolean\n silent?: boolean\n previousCacheEntry?: IncrementalResponseCacheEntry | null\n }\n): Promise<{\n buffer: Buffer\n contentType: string\n maxAge: number\n etag: string\n upstreamEtag: string\n error?: unknown\n}> {\n const { href, quality, width, mimeType } = paramsResult\n const { buffer: upstreamBuffer, etag: upstreamEtag } = imageUpstream\n const maxAge = Math.max(\n nextConfig.images.minimumCacheTTL,\n getMaxAge(imageUpstream.cacheControl)\n )\n\n const upstreamType = await detectContentType(upstreamBuffer)\n\n if (\n !upstreamType ||\n !upstreamType.startsWith('image/') ||\n upstreamType.includes(',')\n ) {\n if (!opts.silent) {\n Log.error(\n \"The requested resource isn't a valid image for\",\n href,\n 'received',\n upstreamType\n )\n }\n throw new ImageError(400, \"The requested resource isn't a valid image.\")\n }\n if (\n upstreamType.startsWith('image/svg') &&\n !nextConfig.images.dangerouslyAllowSVG\n ) {\n if (!opts.silent) {\n Log.error(\n `The requested resource \"${href}\" has type \"${upstreamType}\" but dangerouslyAllowSVG is disabled. Consider adding the \"unoptimized\" property to the <Image>.`\n )\n }\n throw new ImageError(\n 400,\n '\"url\" parameter is valid but image type is not allowed'\n )\n }\n if (ANIMATABLE_TYPES.includes(upstreamType) && isAnimated(upstreamBuffer)) {\n if (!opts.silent) {\n Log.warnOnce(\n `The requested resource \"${href}\" is an animated image so it will not be optimized. Consider adding the \"unoptimized\" property to the <Image>.`\n )\n }\n return {\n buffer: upstreamBuffer,\n contentType: upstreamType,\n maxAge,\n etag: upstreamEtag,\n upstreamEtag,\n }\n }\n if (BYPASS_TYPES.includes(upstreamType)) {\n return {\n buffer: upstreamBuffer,\n contentType: upstreamType,\n maxAge,\n etag: upstreamEtag,\n upstreamEtag,\n }\n }\n\n let contentType: string\n\n if (mimeType) {\n contentType = mimeType\n } else if (\n getExtension(upstreamType) &&\n upstreamType !== WEBP &&\n upstreamType !== AVIF\n ) {\n contentType = upstreamType\n } else {\n contentType = JPEG\n }\n const previouslyCachedImage = getPreviouslyCachedImageOrNull(\n imageUpstream,\n opts.previousCacheEntry\n )\n if (previouslyCachedImage) {\n return {\n buffer: previouslyCachedImage.buffer,\n contentType,\n maxAge: opts?.previousCacheEntry?.cacheControl?.revalidate || maxAge,\n etag: previouslyCachedImage.etag,\n upstreamEtag: previouslyCachedImage.upstreamEtag,\n }\n }\n\n try {\n let optimizedBuffer = await optimizeImage({\n buffer: upstreamBuffer,\n contentType,\n quality,\n width,\n concurrency: nextConfig.experimental.imgOptConcurrency,\n limitInputPixels: nextConfig.experimental.imgOptMaxInputPixels,\n sequentialRead: nextConfig.experimental.imgOptSequentialRead,\n timeoutInSeconds: nextConfig.experimental.imgOptTimeoutInSeconds,\n })\n if (opts.isDev && width <= BLUR_IMG_SIZE && quality === BLUR_QUALITY) {\n // During `next dev`, we don't want to generate blur placeholders with webpack\n // because it can delay starting the dev server. Instead, `next-image-loader.js`\n // will inline a special url to lazily generate the blur placeholder at request time.\n const meta = await getImageSize(optimizedBuffer)\n const blurOpts = {\n blurWidth: meta.width,\n blurHeight: meta.height,\n blurDataURL: `data:${contentType};base64,${optimizedBuffer.toString(\n 'base64'\n )}`,\n }\n optimizedBuffer = Buffer.from(unescape(getImageBlurSvg(blurOpts)))\n contentType = 'image/svg+xml'\n }\n return {\n buffer: optimizedBuffer,\n contentType,\n maxAge,\n etag: getImageEtag(optimizedBuffer),\n upstreamEtag,\n }\n } catch (error) {\n if (upstreamType) {\n // If we fail to optimize, fallback to the original image\n return {\n buffer: upstreamBuffer,\n contentType: upstreamType,\n maxAge: nextConfig.images.minimumCacheTTL,\n etag: upstreamEtag,\n upstreamEtag,\n error,\n }\n } else {\n throw new ImageError(\n 400,\n 'Unable to optimize image and unable to fallback to upstream image'\n )\n }\n }\n}\n\nfunction getFileNameWithExtension(\n url: string,\n contentType: string | null\n): string {\n const [urlWithoutQueryParams] = url.split('?', 1)\n const fileNameWithExtension = urlWithoutQueryParams.split('/').pop()\n if (!contentType || !fileNameWithExtension) {\n return 'image.bin'\n }\n\n const [fileName] = fileNameWithExtension.split('.', 1)\n const extension = getExtension(contentType)\n return `${fileName}.${extension}`\n}\n\nfunction setResponseHeaders(\n req: IncomingMessage,\n res: ServerResponse,\n url: string,\n etag: string,\n contentType: string | null,\n isStatic: boolean,\n xCache: XCacheHeader,\n imagesConfig: ImageConfigComplete,\n maxAge: number,\n isDev: boolean\n) {\n res.setHeader('Vary', 'Accept')\n res.setHeader(\n 'Cache-Control',\n isStatic\n ? 'public, max-age=315360000, immutable'\n : `public, max-age=${isDev ? 0 : maxAge}, must-revalidate`\n )\n if (sendEtagResponse(req, res, etag)) {\n // already called res.end() so we're finished\n return { finished: true }\n }\n if (contentType) {\n res.setHeader('Content-Type', contentType)\n }\n\n const fileName = getFileNameWithExtension(url, contentType)\n res.setHeader(\n 'Content-Disposition',\n contentDisposition(fileName, { type: imagesConfig.contentDispositionType })\n )\n\n res.setHeader('Content-Security-Policy', imagesConfig.contentSecurityPolicy)\n res.setHeader('X-Nextjs-Cache', xCache)\n\n return { finished: false }\n}\n\nexport function sendResponse(\n req: IncomingMessage,\n res: ServerResponse,\n url: string,\n extension: string,\n buffer: Buffer,\n etag: string,\n isStatic: boolean,\n xCache: XCacheHeader,\n imagesConfig: ImageConfigComplete,\n maxAge: number,\n isDev: boolean\n) {\n const contentType = getContentType(extension)\n const result = setResponseHeaders(\n req,\n res,\n url,\n etag,\n contentType,\n isStatic,\n xCache,\n imagesConfig,\n maxAge,\n isDev\n )\n if (!result.finished) {\n res.setHeader('Content-Length', Buffer.byteLength(buffer))\n res.end(buffer)\n }\n}\n\nexport async function getImageSize(buffer: Buffer): Promise<{\n width?: number\n height?: number\n}> {\n const { width, height } = imageSizeOf(buffer)\n return { width, height }\n}\n"],"names":["createHash","promises","mediaType","contentDisposition","imageSizeOf","detector","isAnimated","join","nodeUrl","getImageBlurSvg","hasLocalMatch","hasRemoteMatch","createRequestResponseMocks","CachedRouteKind","sendEtagResponse","getContentType","getExtension","Log","isError","parseUrl","InvariantError","AVIF","WEBP","PNG","JPEG","JXL","JP2","HEIC","GIF","SVG","ICO","ICNS","TIFF","BMP","PDF","CACHE_VERSION","ANIMATABLE_TYPES","BYPASS_TYPES","BLUR_IMG_SIZE","BLUR_QUALITY","_sharp","getSharp","concurrency","require","divisor","process","env","NODE_ENV","Math","floor","max","e","code","Error","getSupportedMimeType","options","accept","mimeType","includes","getHash","items","hash","item","update","String","digest","extractEtag","etag","imageBuffer","Buffer","from","toString","getImageEtag","image","writeToCacheDir","dir","extension","maxAge","expireAt","buffer","upstreamEtag","filename","rm","recursive","force","catch","mkdir","writeFile","detectContentType","every","b","i","format","sharp","meta","metadata","_","undefined","ImageOptimizerCache","validateParams","req","query","nextConfig","isDev","imageData","images","deviceSizes","imageSizes","domains","minimumCacheTTL","formats","remotePatterns","localPatterns","qualities","url","w","q","href","length","warnOnce","errorMessage","Array","isArray","startsWith","isAbsolute","test","decodeURIComponent","pathname","hrefParsed","URL","_error","protocol","width","parseInt","isNaN","sizes","push","isValidSize","quality","headers","isStatic","basePath","getCacheKey","constructor","distDir","cacheDir","get","cacheKey","files","readdir","now","Date","file","maxAgeSt","expireAtSt","split","readFile","Number","value","kind","IMAGE","revalidateAfter","cacheControl","revalidate","expire","isStale","set","experimental","isrFlushToDisk","err","error","ImageError","statusCode","message","parseCacheControl","str","map","Map","directive","key","trim","toLowerCase","getMaxAge","age","endsWith","slice","n","getPreviouslyCachedImageOrNull","upstreamImage","previousCacheEntry","optimizeImage","contentType","height","limitInputPixels","sequentialRead","timeoutInSeconds","transformer","timeout","seconds","rotate","resize","withoutEnlargement","avif","effort","webp","png","jpeg","mozjpeg","optimizedBuffer","toBuffer","fetchExternalImage","res","fetch","signal","AbortSignal","name","ok","status","arrayBuffer","fetchInternalImage","_req","_res","handleRequest","mocked","method","socket","parse","hasStreamed","concat","buffers","getHeader","imageOptimizer","imageUpstream","paramsResult","opts","upstreamBuffer","upstreamType","silent","dangerouslyAllowSVG","previouslyCachedImage","imgOptConcurrency","imgOptMaxInputPixels","imgOptSequentialRead","imgOptTimeoutInSeconds","getImageSize","blurOpts","blurWidth","blurHeight","blurDataURL","unescape","getFileNameWithExtension","urlWithoutQueryParams","fileNameWithExtension","pop","fileName","setResponseHeaders","xCache","imagesConfig","setHeader","finished","type","contentDispositionType","contentSecurityPolicy","sendResponse","result","byteLength","end"],"mappings":"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","ignoreList":[0]}
|
1
|
+
{"version":3,"sources":["../../src/server/image-optimizer.ts"],"sourcesContent":["import { createHash } from 'crypto'\nimport { promises } from 'fs'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport { mediaType } from 'next/dist/compiled/@hapi/accept'\nimport contentDisposition from 'next/dist/compiled/content-disposition'\nimport imageSizeOf from 'next/dist/compiled/image-size'\nimport { detector } from 'next/dist/compiled/image-detector/detector.js'\nimport isAnimated from 'next/dist/compiled/is-animated'\nimport { join } from 'path'\nimport nodeUrl, { type UrlWithParsedQuery } from 'url'\n\nimport { getImageBlurSvg } from '../shared/lib/image-blur-svg'\nimport type { ImageConfigComplete } from '../shared/lib/image-config'\nimport { hasLocalMatch } from '../shared/lib/match-local-pattern'\nimport { hasRemoteMatch } from '../shared/lib/match-remote-pattern'\nimport type { NextConfigComplete } from './config-shared'\nimport { createRequestResponseMocks } from './lib/mock-request'\nimport type { NextUrlWithParsedQuery } from './request-meta'\nimport {\n CachedRouteKind,\n type CachedImageValue,\n type IncrementalCacheEntry,\n type IncrementalCacheValue,\n type IncrementalResponseCacheEntry,\n} from './response-cache'\nimport { sendEtagResponse } from './send-payload'\nimport { getContentType, getExtension } from './serve-static'\nimport * as Log from '../build/output/log'\nimport isError from '../lib/is-error'\nimport { parseUrl } from '../lib/url'\nimport type { CacheControl } from './lib/cache-control'\nimport { InvariantError } from '../shared/lib/invariant-error'\n\ntype XCacheHeader = 'MISS' | 'HIT' | 'STALE'\n\nconst AVIF = 'image/avif'\nconst WEBP = 'image/webp'\nconst PNG = 'image/png'\nconst JPEG = 'image/jpeg'\nconst JXL = 'image/jxl'\nconst JP2 = 'image/jp2'\nconst HEIC = 'image/heic'\nconst GIF = 'image/gif'\nconst SVG = 'image/svg+xml'\nconst ICO = 'image/x-icon'\nconst ICNS = 'image/x-icns'\nconst TIFF = 'image/tiff'\nconst BMP = 'image/bmp'\nconst PDF = 'application/pdf'\nconst CACHE_VERSION = 4\nconst ANIMATABLE_TYPES = [WEBP, PNG, GIF]\nconst BYPASS_TYPES = [SVG, ICO, ICNS, BMP, JXL, HEIC]\nconst BLUR_IMG_SIZE = 8 // should match `next-image-loader`\nconst BLUR_QUALITY = 70 // should match `next-image-loader`\n\nlet _sharp: typeof import('sharp')\n\nexport function getSharp(concurrency: number | null | undefined) {\n if (_sharp) {\n return _sharp\n }\n try {\n _sharp = require('sharp') as typeof import('sharp')\n if (_sharp && _sharp.concurrency() > 1) {\n // Reducing concurrency should reduce the memory usage too.\n // We more aggressively reduce in dev but also reduce in prod.\n // https://sharp.pixelplumbing.com/api-utility#concurrency\n const divisor = process.env.NODE_ENV === 'development' ? 4 : 2\n _sharp.concurrency(\n concurrency ?? Math.floor(Math.max(_sharp.concurrency() / divisor, 1))\n )\n }\n } catch (e: unknown) {\n if (isError(e) && e.code === 'MODULE_NOT_FOUND') {\n throw new Error(\n 'Module `sharp` not found. Please run `npm install --cpu=wasm32 sharp` to install it.'\n )\n }\n throw e\n }\n return _sharp\n}\n\nexport interface ImageParamsResult {\n href: string\n isAbsolute: boolean\n isStatic: boolean\n width: number\n quality: number\n mimeType: string\n sizes: number[]\n minimumCacheTTL: number\n}\n\ninterface ImageUpstream {\n buffer: Buffer\n contentType: string | null | undefined\n cacheControl: string | null | undefined\n etag: string\n}\n\nfunction getSupportedMimeType(options: string[], accept = ''): string {\n const mimeType = mediaType(accept, options)\n return accept.includes(mimeType) ? mimeType : ''\n}\n\nexport function getHash(items: (string | number | Buffer)[]) {\n const hash = createHash('sha256')\n for (let item of items) {\n if (typeof item === 'number') hash.update(String(item))\n else {\n hash.update(item)\n }\n }\n // See https://en.wikipedia.org/wiki/Base64#URL_applications\n return hash.digest('base64url')\n}\n\nexport function extractEtag(\n etag: string | null | undefined,\n imageBuffer: Buffer\n) {\n if (etag) {\n // upstream etag needs to be base64url encoded due to weak etag signature\n // as we store this in the cache-entry file name.\n return Buffer.from(etag).toString('base64url')\n }\n return getImageEtag(imageBuffer)\n}\n\nexport function getImageEtag(image: Buffer) {\n return getHash([image])\n}\n\nasync function writeToCacheDir(\n dir: string,\n extension: string,\n maxAge: number,\n expireAt: number,\n buffer: Buffer,\n etag: string,\n upstreamEtag: string\n) {\n const filename = join(\n dir,\n `${maxAge}.${expireAt}.${etag}.${upstreamEtag}.${extension}`\n )\n\n await promises.rm(dir, { recursive: true, force: true }).catch(() => {})\n\n await promises.mkdir(dir, { recursive: true })\n await promises.writeFile(filename, buffer)\n}\n\n/**\n * Inspects the first few bytes of a buffer to determine if\n * it matches the \"magic number\" of known file signatures.\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n */\nexport async function detectContentType(\n buffer: Buffer,\n skipMetadata: boolean | null | undefined,\n concurrency?: number | null | undefined\n): Promise<string | null> {\n if (buffer.byteLength === 0) {\n return null\n }\n if ([0xff, 0xd8, 0xff].every((b, i) => buffer[i] === b)) {\n return JPEG\n }\n if (\n [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every(\n (b, i) => buffer[i] === b\n )\n ) {\n return PNG\n }\n if ([0x47, 0x49, 0x46, 0x38].every((b, i) => buffer[i] === b)) {\n return GIF\n }\n if (\n [0x52, 0x49, 0x46, 0x46, 0, 0, 0, 0, 0x57, 0x45, 0x42, 0x50].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return WEBP\n }\n if ([0x3c, 0x3f, 0x78, 0x6d, 0x6c].every((b, i) => buffer[i] === b)) {\n return SVG\n }\n if ([0x3c, 0x73, 0x76, 0x67].every((b, i) => buffer[i] === b)) {\n return SVG\n }\n if (\n [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return AVIF\n }\n if ([0x00, 0x00, 0x01, 0x00].every((b, i) => buffer[i] === b)) {\n return ICO\n }\n if ([0x69, 0x63, 0x6e, 0x73].every((b, i) => buffer[i] === b)) {\n return ICNS\n }\n if ([0x49, 0x49, 0x2a, 0x00].every((b, i) => buffer[i] === b)) {\n return TIFF\n }\n if ([0x42, 0x4d].every((b, i) => buffer[i] === b)) {\n return BMP\n }\n if ([0xff, 0x0a].every((b, i) => buffer[i] === b)) {\n return JXL\n }\n if (\n [\n 0x00, 0x00, 0x00, 0x0c, 0x4a, 0x58, 0x4c, 0x20, 0x0d, 0x0a, 0x87, 0x0a,\n ].every((b, i) => buffer[i] === b)\n ) {\n return JXL\n }\n if (\n [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x68, 0x65, 0x69, 0x63].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return HEIC\n }\n if ([0x25, 0x50, 0x44, 0x46, 0x2d].every((b, i) => buffer[i] === b)) {\n return PDF\n }\n if (\n [\n 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a,\n ].every((b, i) => buffer[i] === b)\n ) {\n return JP2\n }\n\n let format:\n | import('sharp').Metadata['format']\n | ReturnType<typeof detector>\n | undefined\n format = detector(buffer)\n\n if (!format && !skipMetadata) {\n const sharp = getSharp(concurrency)\n const meta = await sharp(buffer)\n .metadata()\n .catch((_) => null)\n format = meta?.format\n }\n\n switch (format) {\n case 'avif':\n return AVIF\n case 'webp':\n return WEBP\n case 'png':\n return PNG\n case 'jpeg':\n case 'jpg':\n return JPEG\n case 'gif':\n return GIF\n case 'svg':\n return SVG\n case 'jxl':\n case 'jxl-stream':\n return JXL\n case 'jp2':\n return JP2\n case 'tiff':\n case 'tif':\n return TIFF\n case 'pdf':\n return PDF\n case 'bmp':\n return BMP\n case 'ico':\n return ICO\n case 'icns':\n return ICNS\n case 'dcraw':\n case 'dz':\n case 'exr':\n case 'fits':\n case 'heif':\n case 'input':\n case 'magick':\n case 'openslide':\n case 'ppm':\n case 'rad':\n case 'raw':\n case 'v':\n case 'cur':\n case 'dds':\n case 'j2c':\n case 'ktx':\n case 'pnm':\n case 'psd':\n case 'tga':\n case undefined:\n default:\n return null\n }\n}\n\nexport class ImageOptimizerCache {\n private cacheDir: string\n private nextConfig: NextConfigComplete\n\n static validateParams(\n req: IncomingMessage,\n query: UrlWithParsedQuery['query'],\n nextConfig: NextConfigComplete,\n isDev: boolean\n ): ImageParamsResult | { errorMessage: string } {\n const imageData = nextConfig.images\n const {\n deviceSizes = [],\n imageSizes = [],\n domains = [],\n minimumCacheTTL = 60,\n formats = ['image/webp'],\n } = imageData\n const remotePatterns = nextConfig.images?.remotePatterns || []\n const localPatterns = nextConfig.images?.localPatterns\n const qualities = nextConfig.images?.qualities\n const { url, w, q } = query\n let href: string\n\n if (domains.length > 0) {\n Log.warnOnce(\n 'The \"images.domains\" configuration is deprecated. Please use \"images.remotePatterns\" configuration instead.'\n )\n }\n\n if (!url) {\n return { errorMessage: '\"url\" parameter is required' }\n } else if (Array.isArray(url)) {\n return { errorMessage: '\"url\" parameter cannot be an array' }\n }\n\n if (url.length > 3072) {\n return { errorMessage: '\"url\" parameter is too long' }\n }\n\n if (url.startsWith('//')) {\n return {\n errorMessage: '\"url\" parameter cannot be a protocol-relative URL (//)',\n }\n }\n\n let isAbsolute: boolean\n\n if (url.startsWith('/')) {\n href = url\n isAbsolute = false\n if (\n /\\/_next\\/image($|\\/)/.test(\n decodeURIComponent(parseUrl(url)?.pathname ?? '')\n )\n ) {\n return {\n errorMessage: '\"url\" parameter cannot be recursive',\n }\n }\n if (!hasLocalMatch(localPatterns, url)) {\n return { errorMessage: '\"url\" parameter is not allowed' }\n }\n } else {\n let hrefParsed: URL\n\n try {\n hrefParsed = new URL(url)\n href = hrefParsed.toString()\n isAbsolute = true\n } catch (_error) {\n return { errorMessage: '\"url\" parameter is invalid' }\n }\n\n if (!['http:', 'https:'].includes(hrefParsed.protocol)) {\n return { errorMessage: '\"url\" parameter is invalid' }\n }\n\n if (!hasRemoteMatch(domains, remotePatterns, hrefParsed)) {\n return { errorMessage: '\"url\" parameter is not allowed' }\n }\n }\n\n if (!w) {\n return { errorMessage: '\"w\" parameter (width) is required' }\n } else if (Array.isArray(w)) {\n return { errorMessage: '\"w\" parameter (width) cannot be an array' }\n } else if (!/^[0-9]+$/.test(w)) {\n return {\n errorMessage: '\"w\" parameter (width) must be an integer greater than 0',\n }\n }\n\n if (!q) {\n return { errorMessage: '\"q\" parameter (quality) is required' }\n } else if (Array.isArray(q)) {\n return { errorMessage: '\"q\" parameter (quality) cannot be an array' }\n } else if (!/^[0-9]+$/.test(q)) {\n return {\n errorMessage:\n '\"q\" parameter (quality) must be an integer between 1 and 100',\n }\n }\n\n const width = parseInt(w, 10)\n\n if (width <= 0 || isNaN(width)) {\n return {\n errorMessage: '\"w\" parameter (width) must be an integer greater than 0',\n }\n }\n\n const sizes = [...(deviceSizes || []), ...(imageSizes || [])]\n\n if (isDev) {\n sizes.push(BLUR_IMG_SIZE)\n }\n\n const isValidSize =\n sizes.includes(width) || (isDev && width <= BLUR_IMG_SIZE)\n\n if (!isValidSize) {\n return {\n errorMessage: `\"w\" parameter (width) of ${width} is not allowed`,\n }\n }\n\n const quality = parseInt(q, 10)\n\n if (isNaN(quality) || quality < 1 || quality > 100) {\n return {\n errorMessage:\n '\"q\" parameter (quality) must be an integer between 1 and 100',\n }\n }\n\n if (qualities) {\n if (isDev) {\n qualities.push(BLUR_QUALITY)\n }\n\n if (!qualities.includes(quality)) {\n return {\n errorMessage: `\"q\" parameter (quality) of ${q} is not allowed`,\n }\n }\n }\n\n const mimeType = getSupportedMimeType(formats || [], req.headers['accept'])\n\n const isStatic = url.startsWith(\n `${nextConfig.basePath || ''}/_next/static/media`\n )\n\n return {\n href,\n sizes,\n isAbsolute,\n isStatic,\n width,\n quality,\n mimeType,\n minimumCacheTTL,\n }\n }\n\n static getCacheKey({\n href,\n width,\n quality,\n mimeType,\n }: {\n href: string\n width: number\n quality: number\n mimeType: string\n }): string {\n return getHash([CACHE_VERSION, href, width, quality, mimeType])\n }\n\n constructor({\n distDir,\n nextConfig,\n }: {\n distDir: string\n nextConfig: NextConfigComplete\n }) {\n this.cacheDir = join(distDir, 'cache', 'images')\n this.nextConfig = nextConfig\n }\n\n async get(cacheKey: string): Promise<IncrementalResponseCacheEntry | null> {\n try {\n const cacheDir = join(this.cacheDir, cacheKey)\n const files = await promises.readdir(cacheDir)\n const now = Date.now()\n\n for (const file of files) {\n const [maxAgeSt, expireAtSt, etag, upstreamEtag, extension] =\n file.split('.', 5)\n const buffer = await promises.readFile(join(cacheDir, file))\n const expireAt = Number(expireAtSt)\n const maxAge = Number(maxAgeSt)\n\n return {\n value: {\n kind: CachedRouteKind.IMAGE,\n etag,\n buffer,\n extension,\n upstreamEtag,\n },\n revalidateAfter:\n Math.max(maxAge, this.nextConfig.images.minimumCacheTTL) * 1000 +\n Date.now(),\n cacheControl: { revalidate: maxAge, expire: undefined },\n isStale: now > expireAt,\n }\n }\n } catch (_) {\n // failed to read from cache dir, treat as cache miss\n }\n return null\n }\n async set(\n cacheKey: string,\n value: IncrementalCacheValue | null,\n {\n cacheControl,\n }: {\n cacheControl?: CacheControl\n }\n ) {\n if (!this.nextConfig.experimental.isrFlushToDisk) {\n return\n }\n\n if (value?.kind !== CachedRouteKind.IMAGE) {\n throw new Error('invariant attempted to set non-image to image-cache')\n }\n\n const revalidate = cacheControl?.revalidate\n\n if (typeof revalidate !== 'number') {\n throw new InvariantError('revalidate must be a number for image-cache')\n }\n\n const expireAt =\n Math.max(revalidate, this.nextConfig.images.minimumCacheTTL) * 1000 +\n Date.now()\n\n try {\n await writeToCacheDir(\n join(this.cacheDir, cacheKey),\n value.extension,\n revalidate,\n expireAt,\n value.buffer,\n value.etag,\n value.upstreamEtag\n )\n } catch (err) {\n Log.error(`Failed to write image to cache ${cacheKey}`, err)\n }\n }\n}\nexport class ImageError extends Error {\n statusCode: number\n\n constructor(statusCode: number, message: string) {\n super(message)\n\n // ensure an error status is used > 400\n if (statusCode >= 400) {\n this.statusCode = statusCode\n } else {\n this.statusCode = 500\n }\n }\n}\n\nfunction parseCacheControl(\n str: string | null | undefined\n): Map<string, string> {\n const map = new Map<string, string>()\n if (!str) {\n return map\n }\n for (let directive of str.split(',')) {\n let [key, value] = directive.trim().split('=', 2)\n key = key.toLowerCase()\n if (value) {\n value = value.toLowerCase()\n }\n map.set(key, value)\n }\n return map\n}\n\nexport function getMaxAge(str: string | null | undefined): number {\n const map = parseCacheControl(str)\n if (map) {\n let age = map.get('s-maxage') || map.get('max-age') || ''\n if (age.startsWith('\"') && age.endsWith('\"')) {\n age = age.slice(1, -1)\n }\n const n = parseInt(age, 10)\n if (!isNaN(n)) {\n return n\n }\n }\n return 0\n}\nexport function getPreviouslyCachedImageOrNull(\n upstreamImage: ImageUpstream,\n previousCacheEntry: IncrementalCacheEntry | null | undefined\n): CachedImageValue | null {\n if (\n previousCacheEntry?.value?.kind === 'IMAGE' &&\n // Images that are SVGs, animated or failed the optimization previously end up using upstreamEtag as their etag as well,\n // in these cases we want to trigger a new \"optimization\" attempt.\n previousCacheEntry.value.upstreamEtag !== previousCacheEntry.value.etag &&\n // and the upstream etag is the same as the previous cache entry's\n upstreamImage.etag === previousCacheEntry.value.upstreamEtag\n ) {\n return previousCacheEntry.value\n }\n return null\n}\n\nexport async function optimizeImage({\n buffer,\n contentType,\n quality,\n width,\n height,\n concurrency,\n limitInputPixels,\n sequentialRead,\n timeoutInSeconds,\n}: {\n buffer: Buffer\n contentType: string\n quality: number\n width: number\n height?: number\n concurrency?: number | null\n limitInputPixels?: number\n sequentialRead?: boolean | null\n timeoutInSeconds?: number\n}): Promise<Buffer> {\n const sharp = getSharp(concurrency)\n const transformer = sharp(buffer, {\n limitInputPixels,\n sequentialRead: sequentialRead ?? undefined,\n })\n .timeout({\n seconds: timeoutInSeconds ?? 7,\n })\n .rotate()\n\n if (height) {\n transformer.resize(width, height)\n } else {\n transformer.resize(width, undefined, {\n withoutEnlargement: true,\n })\n }\n\n if (contentType === AVIF) {\n transformer.avif({\n quality: Math.max(quality - 20, 1),\n effort: 3,\n })\n } else if (contentType === WEBP) {\n transformer.webp({ quality })\n } else if (contentType === PNG) {\n transformer.png({ quality })\n } else if (contentType === JPEG) {\n transformer.jpeg({ quality, mozjpeg: true })\n }\n\n const optimizedBuffer = await transformer.toBuffer()\n\n return optimizedBuffer\n}\n\nexport async function fetchExternalImage(href: string): Promise<ImageUpstream> {\n const res = await fetch(href, {\n signal: AbortSignal.timeout(7_000),\n }).catch((err) => err as Error)\n\n if (res instanceof Error) {\n const err = res as Error\n if (err.name === 'TimeoutError') {\n Log.error('upstream image response timed out for', href)\n throw new ImageError(\n 504,\n '\"url\" parameter is valid but upstream response timed out'\n )\n }\n throw err\n }\n\n if (!res.ok) {\n Log.error('upstream image response failed for', href, res.status)\n throw new ImageError(\n res.status,\n '\"url\" parameter is valid but upstream response is invalid'\n )\n }\n\n const buffer = Buffer.from(await res.arrayBuffer())\n const contentType = res.headers.get('Content-Type')\n const cacheControl = res.headers.get('Cache-Control')\n const etag = extractEtag(res.headers.get('ETag'), buffer)\n return { buffer, contentType, cacheControl, etag }\n}\n\nexport async function fetchInternalImage(\n href: string,\n _req: IncomingMessage,\n _res: ServerResponse,\n handleRequest: (\n newReq: IncomingMessage,\n newRes: ServerResponse,\n newParsedUrl?: NextUrlWithParsedQuery\n ) => Promise<void>\n): Promise<ImageUpstream> {\n try {\n const mocked = createRequestResponseMocks({\n url: href,\n method: _req.method || 'GET',\n socket: _req.socket,\n })\n\n await handleRequest(mocked.req, mocked.res, nodeUrl.parse(href, true))\n await mocked.res.hasStreamed\n\n if (!mocked.res.statusCode) {\n Log.error('image response failed for', href, mocked.res.statusCode)\n throw new ImageError(\n mocked.res.statusCode,\n '\"url\" parameter is valid but internal response is invalid'\n )\n }\n\n const buffer = Buffer.concat(mocked.res.buffers)\n const contentType = mocked.res.getHeader('Content-Type')\n const cacheControl = mocked.res.getHeader('Cache-Control')\n const etag = extractEtag(mocked.res.getHeader('ETag'), buffer)\n\n return { buffer, contentType, cacheControl, etag }\n } catch (err) {\n Log.error('upstream image response failed for', href, err)\n throw new ImageError(\n 500,\n '\"url\" parameter is valid but upstream response is invalid'\n )\n }\n}\n\nexport async function imageOptimizer(\n imageUpstream: ImageUpstream,\n paramsResult: Pick<\n ImageParamsResult,\n 'href' | 'width' | 'quality' | 'mimeType'\n >,\n nextConfig: {\n experimental: Pick<\n NextConfigComplete['experimental'],\n | 'imgOptConcurrency'\n | 'imgOptMaxInputPixels'\n | 'imgOptSequentialRead'\n | 'imgOptSkipMetadata'\n | 'imgOptTimeoutInSeconds'\n >\n images: Pick<\n NextConfigComplete['images'],\n 'dangerouslyAllowSVG' | 'minimumCacheTTL'\n >\n },\n opts: {\n isDev?: boolean\n silent?: boolean\n previousCacheEntry?: IncrementalResponseCacheEntry | null\n }\n): Promise<{\n buffer: Buffer\n contentType: string\n maxAge: number\n etag: string\n upstreamEtag: string\n error?: unknown\n}> {\n const { href, quality, width, mimeType } = paramsResult\n const { buffer: upstreamBuffer, etag: upstreamEtag } = imageUpstream\n const maxAge = Math.max(\n nextConfig.images.minimumCacheTTL,\n getMaxAge(imageUpstream.cacheControl)\n )\n\n const upstreamType = await detectContentType(\n upstreamBuffer,\n nextConfig.experimental.imgOptSkipMetadata,\n nextConfig.experimental.imgOptConcurrency\n )\n\n if (\n !upstreamType ||\n !upstreamType.startsWith('image/') ||\n upstreamType.includes(',')\n ) {\n if (!opts.silent) {\n Log.error(\n \"The requested resource isn't a valid image for\",\n href,\n 'received',\n upstreamType\n )\n }\n throw new ImageError(400, \"The requested resource isn't a valid image.\")\n }\n if (\n upstreamType.startsWith('image/svg') &&\n !nextConfig.images.dangerouslyAllowSVG\n ) {\n if (!opts.silent) {\n Log.error(\n `The requested resource \"${href}\" has type \"${upstreamType}\" but dangerouslyAllowSVG is disabled. Consider adding the \"unoptimized\" property to the <Image>.`\n )\n }\n throw new ImageError(\n 400,\n '\"url\" parameter is valid but image type is not allowed'\n )\n }\n if (ANIMATABLE_TYPES.includes(upstreamType) && isAnimated(upstreamBuffer)) {\n if (!opts.silent) {\n Log.warnOnce(\n `The requested resource \"${href}\" is an animated image so it will not be optimized. Consider adding the \"unoptimized\" property to the <Image>.`\n )\n }\n return {\n buffer: upstreamBuffer,\n contentType: upstreamType,\n maxAge,\n etag: upstreamEtag,\n upstreamEtag,\n }\n }\n if (BYPASS_TYPES.includes(upstreamType)) {\n return {\n buffer: upstreamBuffer,\n contentType: upstreamType,\n maxAge,\n etag: upstreamEtag,\n upstreamEtag,\n }\n }\n\n let contentType: string\n\n if (mimeType) {\n contentType = mimeType\n } else if (\n getExtension(upstreamType) &&\n upstreamType !== WEBP &&\n upstreamType !== AVIF\n ) {\n contentType = upstreamType\n } else {\n contentType = JPEG\n }\n const previouslyCachedImage = getPreviouslyCachedImageOrNull(\n imageUpstream,\n opts.previousCacheEntry\n )\n if (previouslyCachedImage) {\n return {\n buffer: previouslyCachedImage.buffer,\n contentType,\n maxAge: opts?.previousCacheEntry?.cacheControl?.revalidate || maxAge,\n etag: previouslyCachedImage.etag,\n upstreamEtag: previouslyCachedImage.upstreamEtag,\n }\n }\n\n try {\n let optimizedBuffer = await optimizeImage({\n buffer: upstreamBuffer,\n contentType,\n quality,\n width,\n concurrency: nextConfig.experimental.imgOptConcurrency,\n limitInputPixels: nextConfig.experimental.imgOptMaxInputPixels,\n sequentialRead: nextConfig.experimental.imgOptSequentialRead,\n timeoutInSeconds: nextConfig.experimental.imgOptTimeoutInSeconds,\n })\n if (opts.isDev && width <= BLUR_IMG_SIZE && quality === BLUR_QUALITY) {\n // During `next dev`, we don't want to generate blur placeholders with webpack\n // because it can delay starting the dev server. Instead, `next-image-loader.js`\n // will inline a special url to lazily generate the blur placeholder at request time.\n const meta = await getImageSize(optimizedBuffer)\n const blurOpts = {\n blurWidth: meta.width,\n blurHeight: meta.height,\n blurDataURL: `data:${contentType};base64,${optimizedBuffer.toString(\n 'base64'\n )}`,\n }\n optimizedBuffer = Buffer.from(unescape(getImageBlurSvg(blurOpts)))\n contentType = 'image/svg+xml'\n }\n return {\n buffer: optimizedBuffer,\n contentType,\n maxAge,\n etag: getImageEtag(optimizedBuffer),\n upstreamEtag,\n }\n } catch (error) {\n if (upstreamType) {\n // If we fail to optimize, fallback to the original image\n return {\n buffer: upstreamBuffer,\n contentType: upstreamType,\n maxAge: nextConfig.images.minimumCacheTTL,\n etag: upstreamEtag,\n upstreamEtag,\n error,\n }\n } else {\n throw new ImageError(\n 400,\n 'Unable to optimize image and unable to fallback to upstream image'\n )\n }\n }\n}\n\nfunction getFileNameWithExtension(\n url: string,\n contentType: string | null\n): string {\n const [urlWithoutQueryParams] = url.split('?', 1)\n const fileNameWithExtension = urlWithoutQueryParams.split('/').pop()\n if (!contentType || !fileNameWithExtension) {\n return 'image.bin'\n }\n\n const [fileName] = fileNameWithExtension.split('.', 1)\n const extension = getExtension(contentType)\n return `${fileName}.${extension}`\n}\n\nfunction setResponseHeaders(\n req: IncomingMessage,\n res: ServerResponse,\n url: string,\n etag: string,\n contentType: string | null,\n isStatic: boolean,\n xCache: XCacheHeader,\n imagesConfig: ImageConfigComplete,\n maxAge: number,\n isDev: boolean\n) {\n res.setHeader('Vary', 'Accept')\n res.setHeader(\n 'Cache-Control',\n isStatic\n ? 'public, max-age=315360000, immutable'\n : `public, max-age=${isDev ? 0 : maxAge}, must-revalidate`\n )\n if (sendEtagResponse(req, res, etag)) {\n // already called res.end() so we're finished\n return { finished: true }\n }\n if (contentType) {\n res.setHeader('Content-Type', contentType)\n }\n\n const fileName = getFileNameWithExtension(url, contentType)\n res.setHeader(\n 'Content-Disposition',\n contentDisposition(fileName, { type: imagesConfig.contentDispositionType })\n )\n\n res.setHeader('Content-Security-Policy', imagesConfig.contentSecurityPolicy)\n res.setHeader('X-Nextjs-Cache', xCache)\n\n return { finished: false }\n}\n\nexport function sendResponse(\n req: IncomingMessage,\n res: ServerResponse,\n url: string,\n extension: string,\n buffer: Buffer,\n etag: string,\n isStatic: boolean,\n xCache: XCacheHeader,\n imagesConfig: ImageConfigComplete,\n maxAge: number,\n isDev: boolean\n) {\n const contentType = getContentType(extension)\n const result = setResponseHeaders(\n req,\n res,\n url,\n etag,\n contentType,\n isStatic,\n xCache,\n imagesConfig,\n maxAge,\n isDev\n )\n if (!result.finished) {\n res.setHeader('Content-Length', Buffer.byteLength(buffer))\n res.end(buffer)\n }\n}\n\nexport async function getImageSize(buffer: Buffer): Promise<{\n width?: number\n height?: number\n}> {\n const { width, height } = imageSizeOf(buffer)\n return { width, height }\n}\n"],"names":["createHash","promises","mediaType","contentDisposition","imageSizeOf","detector","isAnimated","join","nodeUrl","getImageBlurSvg","hasLocalMatch","hasRemoteMatch","createRequestResponseMocks","CachedRouteKind","sendEtagResponse","getContentType","getExtension","Log","isError","parseUrl","InvariantError","AVIF","WEBP","PNG","JPEG","JXL","JP2","HEIC","GIF","SVG","ICO","ICNS","TIFF","BMP","PDF","CACHE_VERSION","ANIMATABLE_TYPES","BYPASS_TYPES","BLUR_IMG_SIZE","BLUR_QUALITY","_sharp","getSharp","concurrency","require","divisor","process","env","NODE_ENV","Math","floor","max","e","code","Error","getSupportedMimeType","options","accept","mimeType","includes","getHash","items","hash","item","update","String","digest","extractEtag","etag","imageBuffer","Buffer","from","toString","getImageEtag","image","writeToCacheDir","dir","extension","maxAge","expireAt","buffer","upstreamEtag","filename","rm","recursive","force","catch","mkdir","writeFile","detectContentType","skipMetadata","byteLength","every","b","i","format","sharp","meta","metadata","_","undefined","ImageOptimizerCache","validateParams","req","query","nextConfig","isDev","imageData","images","deviceSizes","imageSizes","domains","minimumCacheTTL","formats","remotePatterns","localPatterns","qualities","url","w","q","href","length","warnOnce","errorMessage","Array","isArray","startsWith","isAbsolute","test","decodeURIComponent","pathname","hrefParsed","URL","_error","protocol","width","parseInt","isNaN","sizes","push","isValidSize","quality","headers","isStatic","basePath","getCacheKey","constructor","distDir","cacheDir","get","cacheKey","files","readdir","now","Date","file","maxAgeSt","expireAtSt","split","readFile","Number","value","kind","IMAGE","revalidateAfter","cacheControl","revalidate","expire","isStale","set","experimental","isrFlushToDisk","err","error","ImageError","statusCode","message","parseCacheControl","str","map","Map","directive","key","trim","toLowerCase","getMaxAge","age","endsWith","slice","n","getPreviouslyCachedImageOrNull","upstreamImage","previousCacheEntry","optimizeImage","contentType","height","limitInputPixels","sequentialRead","timeoutInSeconds","transformer","timeout","seconds","rotate","resize","withoutEnlargement","avif","effort","webp","png","jpeg","mozjpeg","optimizedBuffer","toBuffer","fetchExternalImage","res","fetch","signal","AbortSignal","name","ok","status","arrayBuffer","fetchInternalImage","_req","_res","handleRequest","mocked","method","socket","parse","hasStreamed","concat","buffers","getHeader","imageOptimizer","imageUpstream","paramsResult","opts","upstreamBuffer","upstreamType","imgOptSkipMetadata","imgOptConcurrency","silent","dangerouslyAllowSVG","previouslyCachedImage","imgOptMaxInputPixels","imgOptSequentialRead","imgOptTimeoutInSeconds","getImageSize","blurOpts","blurWidth","blurHeight","blurDataURL","unescape","getFileNameWithExtension","urlWithoutQueryParams","fileNameWithExtension","pop","fileName","setResponseHeaders","xCache","imagesConfig","setHeader","finished","type","contentDispositionType","contentSecurityPolicy","sendResponse","result","end"],"mappings":"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","ignoreList":[0]}
|
@@ -12,7 +12,7 @@ export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures
|
|
12
12
|
} else {
|
13
13
|
bundlerSuffix = '';
|
14
14
|
}
|
15
|
-
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.4.2-canary.
|
15
|
+
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.4.2-canary.40"}`))}${bundlerSuffix}`);
|
16
16
|
if (appUrl) {
|
17
17
|
Log.bootstrap(`- Local: ${appUrl}`);
|
18
18
|
}
|
@@ -111,7 +111,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
|
|
111
111
|
export async function startServer(serverOptions) {
|
112
112
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
113
113
|
let { port } = serverOptions;
|
114
|
-
process.title = `next-server (v${"15.4.2-canary.
|
114
|
+
process.title = `next-server (v${"15.4.2-canary.40"})`;
|
115
115
|
let handlersReady = ()=>{};
|
116
116
|
let handlersError = ()=>{};
|
117
117
|
let handlersPromise = new Promise((resolve, reject)=>{
|
@@ -1,6 +1,6 @@
|
|
1
1
|
export function isStableBuild() {
|
2
2
|
var _process_env___NEXT_VERSION;
|
3
|
-
return !((_process_env___NEXT_VERSION = "15.4.2-canary.
|
3
|
+
return !((_process_env___NEXT_VERSION = "15.4.2-canary.40") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
|
4
4
|
}
|
5
5
|
export class CanaryOnlyError extends Error {
|
6
6
|
constructor(arg){
|
@@ -334,6 +334,7 @@ const configSchema = _zod.z.lazy(()=>_zod.z.strictObject({
|
|
334
334
|
imgOptTimeoutInSeconds: _zod.z.number().int().optional(),
|
335
335
|
imgOptMaxInputPixels: _zod.z.number().int().optional(),
|
336
336
|
imgOptSequentialRead: _zod.z.boolean().optional().nullable(),
|
337
|
+
imgOptSkipMetadata: _zod.z.boolean().optional().nullable(),
|
337
338
|
isrFlushToDisk: _zod.z.boolean().optional(),
|
338
339
|
largePageDataBytes: _zod.z.number().optional(),
|
339
340
|
linkNoTouchStart: _zod.z.boolean().optional(),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/server/config-schema.ts"],"sourcesContent":["import type { NextConfig } from './config'\nimport { VALID_LOADERS } from '../shared/lib/image-config'\n\nimport { z } from 'next/dist/compiled/zod'\nimport type zod from 'next/dist/compiled/zod'\n\nimport type { SizeLimit } from '../types'\nimport type {\n ExportPathMap,\n TurbopackLoaderItem,\n DeprecatedExperimentalTurboOptions,\n TurbopackOptions,\n TurbopackRuleConfigItem,\n TurbopackRuleConfigItemOptions,\n TurbopackRuleConfigItemOrShortcut,\n TurbopackRuleCondition,\n} from './config-shared'\nimport type {\n Header,\n Rewrite,\n RouteHas,\n Redirect,\n} from '../lib/load-custom-routes'\nimport { SUPPORTED_TEST_RUNNERS_LIST } from '../cli/next-test'\n\n// A custom zod schema for the SizeLimit type\nconst zSizeLimit = z.custom<SizeLimit>((val) => {\n if (typeof val === 'number' || typeof val === 'string') {\n return true\n }\n return false\n})\n\nconst zExportMap: zod.ZodType<ExportPathMap> = z.record(\n z.string(),\n z.object({\n page: z.string(),\n query: z.any(), // NextParsedUrlQuery\n // private optional properties\n _fallbackRouteParams: z.array(z.string()).optional(),\n _isAppDir: z.boolean().optional(),\n _isDynamicError: z.boolean().optional(),\n _isRoutePPREnabled: z.boolean().optional(),\n _allowEmptyStaticShell: z.boolean().optional(),\n })\n)\n\nconst zRouteHas: zod.ZodType<RouteHas> = z.union([\n z.object({\n type: z.enum(['header', 'query', 'cookie']),\n key: z.string(),\n value: z.string().optional(),\n }),\n z.object({\n type: z.literal('host'),\n key: z.undefined().optional(),\n value: z.string(),\n }),\n])\n\nconst zRewrite: zod.ZodType<Rewrite> = z.object({\n source: z.string(),\n destination: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n internal: z.boolean().optional(),\n})\n\nconst zRedirect: zod.ZodType<Redirect> = z\n .object({\n source: z.string(),\n destination: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n internal: z.boolean().optional(),\n })\n .and(\n z.union([\n z.object({\n statusCode: z.never().optional(),\n permanent: z.boolean(),\n }),\n z.object({\n statusCode: z.number(),\n permanent: z.never().optional(),\n }),\n ])\n )\n\nconst zHeader: zod.ZodType<Header> = z.object({\n source: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n headers: z.array(z.object({ key: z.string(), value: z.string() })),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n\n internal: z.boolean().optional(),\n})\n\nconst zTurboLoaderItem: zod.ZodType<TurbopackLoaderItem> = z.union([\n z.string(),\n z.object({\n loader: z.string(),\n // Any JSON value can be used as turbo loader options, so use z.any() here\n options: z.record(z.string(), z.any()),\n }),\n])\n\nconst zTurboRuleConfigItemOptions: zod.ZodType<TurbopackRuleConfigItemOptions> =\n z.object({\n loaders: z.array(zTurboLoaderItem),\n as: z.string().optional(),\n })\n\nconst zTurboRuleConfigItem: zod.ZodType<TurbopackRuleConfigItem> = z.union([\n z.literal(false),\n z.record(\n z.string(),\n z.lazy(() => zTurboRuleConfigItem)\n ),\n zTurboRuleConfigItemOptions,\n])\nconst zTurboRuleConfigItemOrShortcut: zod.ZodType<TurbopackRuleConfigItemOrShortcut> =\n z.union([z.array(zTurboLoaderItem), zTurboRuleConfigItem])\n\nconst zTurboCondition: zod.ZodType<TurbopackRuleCondition> = z.object({\n path: z.union([z.string(), z.instanceof(RegExp)]),\n})\n\nconst zTurbopackConfig: zod.ZodType<TurbopackOptions> = z.strictObject({\n rules: z.record(z.string(), zTurboRuleConfigItemOrShortcut).optional(),\n conditions: z.record(z.string(), zTurboCondition).optional(),\n resolveAlias: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()),\n z.record(z.string(), z.union([z.string(), z.array(z.string())])),\n ])\n )\n .optional(),\n resolveExtensions: z.array(z.string()).optional(),\n moduleIds: z.enum(['named', 'deterministic']).optional(),\n root: z.string().optional(),\n})\n\n// Same as zTurbopackConfig but with deprecated properties. Unfortunately, base\n// properties are duplicated here as `ZodType`s do not export `extend()`.\nconst zDeprecatedExperimentalTurboConfig: zod.ZodType<DeprecatedExperimentalTurboOptions> =\n z.strictObject({\n loaders: z.record(z.string(), z.array(zTurboLoaderItem)).optional(),\n rules: z.record(z.string(), zTurboRuleConfigItemOrShortcut).optional(),\n resolveAlias: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()),\n z.record(z.string(), z.union([z.string(), z.array(z.string())])),\n ])\n )\n .optional(),\n resolveExtensions: z.array(z.string()).optional(),\n treeShaking: z.boolean().optional(),\n persistentCaching: z.union([z.number(), z.literal(false)]).optional(),\n memoryLimit: z.number().optional(),\n moduleIds: z.enum(['named', 'deterministic']).optional(),\n minify: z.boolean().optional(),\n sourceMaps: z.boolean().optional(),\n root: z.string().optional(),\n })\n\nexport const configSchema: zod.ZodType<NextConfig> = z.lazy(() =>\n z.strictObject({\n allowedDevOrigins: z.array(z.string()).optional(),\n amp: z\n .object({\n canonicalBase: z.string().optional(),\n })\n .optional(),\n assetPrefix: z.string().optional(),\n basePath: z.string().optional(),\n bundlePagesRouterDependencies: z.boolean().optional(),\n cacheHandler: z.string().min(1).optional(),\n cacheMaxMemorySize: z.number().optional(),\n cleanDistDir: z.boolean().optional(),\n compiler: z\n .strictObject({\n emotion: z\n .union([\n z.boolean(),\n z.object({\n sourceMap: z.boolean().optional(),\n autoLabel: z\n .union([\n z.literal('always'),\n z.literal('dev-only'),\n z.literal('never'),\n ])\n .optional(),\n labelFormat: z.string().min(1).optional(),\n importMap: z\n .record(\n z.string(),\n z.record(\n z.string(),\n z.object({\n canonicalImport: z\n .tuple([z.string(), z.string()])\n .optional(),\n styledBaseImport: z\n .tuple([z.string(), z.string()])\n .optional(),\n })\n )\n )\n .optional(),\n }),\n ])\n .optional(),\n reactRemoveProperties: z\n .union([\n z.boolean().optional(),\n z.object({\n properties: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n relay: z\n .object({\n src: z.string(),\n artifactDirectory: z.string().optional(),\n language: z.enum(['javascript', 'typescript', 'flow']).optional(),\n eagerEsModules: z.boolean().optional(),\n })\n .optional(),\n removeConsole: z\n .union([\n z.boolean().optional(),\n z.object({\n exclude: z.array(z.string()).min(1).optional(),\n }),\n ])\n .optional(),\n styledComponents: z.union([\n z.boolean().optional(),\n z.object({\n displayName: z.boolean().optional(),\n topLevelImportPaths: z.array(z.string()).optional(),\n ssr: z.boolean().optional(),\n fileName: z.boolean().optional(),\n meaninglessFileNames: z.array(z.string()).optional(),\n minify: z.boolean().optional(),\n transpileTemplateLiterals: z.boolean().optional(),\n namespace: z.string().min(1).optional(),\n pure: z.boolean().optional(),\n cssProp: z.boolean().optional(),\n }),\n ]),\n styledJsx: z.union([\n z.boolean().optional(),\n z.object({\n useLightningcss: z.boolean().optional(),\n }),\n ]),\n define: z.record(z.string(), z.string()).optional(),\n defineServer: z.record(z.string(), z.string()).optional(),\n runAfterProductionCompile: z\n .function()\n .returns(z.promise(z.void()))\n .optional(),\n })\n .optional(),\n compress: z.boolean().optional(),\n configOrigin: z.string().optional(),\n crossOrigin: z\n .union([z.literal('anonymous'), z.literal('use-credentials')])\n .optional(),\n deploymentId: z.string().optional(),\n devIndicators: z\n .union([\n z.object({\n buildActivityPosition: z\n .union([\n z.literal('bottom-left'),\n z.literal('bottom-right'),\n z.literal('top-left'),\n z.literal('top-right'),\n ])\n .optional(),\n position: z\n .union([\n z.literal('bottom-left'),\n z.literal('bottom-right'),\n z.literal('top-left'),\n z.literal('top-right'),\n ])\n .optional(),\n }),\n z.literal(false),\n ])\n .optional(),\n distDir: z.string().min(1).optional(),\n env: z.record(z.string(), z.union([z.string(), z.undefined()])).optional(),\n eslint: z\n .strictObject({\n dirs: z.array(z.string().min(1)).optional(),\n ignoreDuringBuilds: z.boolean().optional(),\n })\n .optional(),\n excludeDefaultMomentLocales: z.boolean().optional(),\n experimental: z\n .strictObject({\n adapterPath: z.string().optional(),\n useSkewCookie: z.boolean().optional(),\n after: z.boolean().optional(),\n appDocumentPreloading: z.boolean().optional(),\n appNavFailHandling: z.boolean().optional(),\n preloadEntriesOnStart: z.boolean().optional(),\n allowedRevalidateHeaderKeys: z.array(z.string()).optional(),\n amp: z\n .object({\n // AMP optimizer option is unknown, use z.any() here\n optimizer: z.any().optional(),\n skipValidation: z.boolean().optional(),\n validator: z.string().optional(),\n })\n .optional(),\n staleTimes: z\n .object({\n dynamic: z.number().optional(),\n static: z.number().optional(),\n })\n .optional(),\n cacheLife: z\n .record(\n z.object({\n stale: z.number().optional(),\n revalidate: z.number().optional(),\n expire: z.number().optional(),\n })\n )\n .optional(),\n cacheHandlers: z.record(z.string(), z.string().optional()).optional(),\n clientRouterFilter: z.boolean().optional(),\n clientRouterFilterRedirects: z.boolean().optional(),\n clientRouterFilterAllowedRate: z.number().optional(),\n cpus: z.number().optional(),\n memoryBasedWorkersCount: z.boolean().optional(),\n craCompat: z.boolean().optional(),\n caseSensitiveRoutes: z.boolean().optional(),\n clientSegmentCache: z\n .union([z.boolean(), z.literal('client-only')])\n .optional(),\n clientParamParsing: z.boolean().optional(),\n dynamicOnHover: z.boolean().optional(),\n disableOptimizedLoading: z.boolean().optional(),\n disablePostcssPresetEnv: z.boolean().optional(),\n cacheComponents: z.boolean().optional(),\n dynamicIO: z.boolean().optional(),\n inlineCss: z.boolean().optional(),\n esmExternals: z.union([z.boolean(), z.literal('loose')]).optional(),\n serverActions: z\n .object({\n bodySizeLimit: zSizeLimit.optional(),\n allowedOrigins: z.array(z.string()).optional(),\n })\n .optional(),\n // The original type was Record<string, any>\n extensionAlias: z.record(z.string(), z.any()).optional(),\n externalDir: z.boolean().optional(),\n externalMiddlewareRewritesResolve: z.boolean().optional(),\n fallbackNodePolyfills: z.literal(false).optional(),\n fetchCacheKeyPrefix: z.string().optional(),\n forceSwcTransforms: z.boolean().optional(),\n fullySpecified: z.boolean().optional(),\n gzipSize: z.boolean().optional(),\n imgOptConcurrency: z.number().int().optional().nullable(),\n imgOptTimeoutInSeconds: z.number().int().optional(),\n imgOptMaxInputPixels: z.number().int().optional(),\n imgOptSequentialRead: z.boolean().optional().nullable(),\n isrFlushToDisk: z.boolean().optional(),\n largePageDataBytes: z.number().optional(),\n linkNoTouchStart: z.boolean().optional(),\n manualClientBasePath: z.boolean().optional(),\n middlewarePrefetch: z.enum(['strict', 'flexible']).optional(),\n multiZoneDraftMode: z.boolean().optional(),\n cssChunking: z.union([z.boolean(), z.literal('strict')]).optional(),\n nextScriptWorkers: z.boolean().optional(),\n // The critter option is unknown, use z.any() here\n optimizeCss: z.union([z.boolean(), z.any()]).optional(),\n optimisticClientCache: z.boolean().optional(),\n parallelServerCompiles: z.boolean().optional(),\n parallelServerBuildTraces: z.boolean().optional(),\n ppr: z\n .union([z.boolean(), z.literal('incremental')])\n .readonly()\n .optional(),\n taint: z.boolean().optional(),\n prerenderEarlyExit: z.boolean().optional(),\n proxyTimeout: z.number().gte(0).optional(),\n rootParams: z.boolean().optional(),\n routerBFCache: z.boolean().optional(),\n removeUncaughtErrorAndRejectionListeners: z.boolean().optional(),\n validateRSCRequestHeaders: z.boolean().optional(),\n scrollRestoration: z.boolean().optional(),\n sri: z\n .object({\n algorithm: z.enum(['sha256', 'sha384', 'sha512']).optional(),\n })\n .optional(),\n swcPlugins: z\n // The specific swc plugin's option is unknown, use z.any() here\n .array(z.tuple([z.string(), z.record(z.string(), z.any())]))\n .optional(),\n swcTraceProfiling: z.boolean().optional(),\n // NonNullable<webpack.Configuration['experiments']>['buildHttp']\n urlImports: z.any().optional(),\n viewTransition: z.boolean().optional(),\n workerThreads: z.boolean().optional(),\n webVitalsAttribution: z\n .array(\n z.union([\n z.literal('CLS'),\n z.literal('FCP'),\n z.literal('FID'),\n z.literal('INP'),\n z.literal('LCP'),\n z.literal('TTFB'),\n ])\n )\n .optional(),\n // This is partial set of mdx-rs transform options we support, aligned\n // with next_core::next_config::MdxRsOptions. Ensure both types are kept in sync.\n mdxRs: z\n .union([\n z.boolean(),\n z.object({\n development: z.boolean().optional(),\n jsxRuntime: z.string().optional(),\n jsxImportSource: z.string().optional(),\n providerImportSource: z.string().optional(),\n mdxType: z.enum(['gfm', 'commonmark']).optional(),\n }),\n ])\n .optional(),\n typedRoutes: z.boolean().optional(),\n webpackBuildWorker: z.boolean().optional(),\n webpackMemoryOptimizations: z.boolean().optional(),\n /**\n * @deprecated Use `config.turbopack` instead.\n */\n turbo: zDeprecatedExperimentalTurboConfig.optional(),\n turbopackMemoryLimit: z.number().optional(),\n turbopackMinify: z.boolean().optional(),\n turbopackPersistentCaching: z.boolean().optional(),\n turbopackSourceMaps: z.boolean().optional(),\n turbopackTreeShaking: z.boolean().optional(),\n turbopackRemoveUnusedExports: z.boolean().optional(),\n turbopackScopeHoisting: z.boolean().optional(),\n /**\n * Use the system-provided CA roots instead of bundled CA roots for external HTTPS requests\n * made by Turbopack. Currently this is only used for fetching data from Google Fonts.\n *\n * This may be useful in cases where you or an employer are MITMing traffic.\n *\n * This option is experimental because:\n * - This may cause small performance problems, as it uses [`rustls-native-certs`](\n * https://github.com/rustls/rustls-native-certs).\n * - In the future, this may become the default, and this option may be eliminated, once\n * <https://github.com/seanmonstar/reqwest/issues/2159> is resolved.\n *\n * Users who need to configure this behavior system-wide can override the project\n * configuration using the `NEXT_TURBOPACK_EXPERIMENTAL_USE_SYSTEM_TLS_CERTS=1` environment\n * variable.\n *\n * This option is ignored on Windows on ARM, where the native TLS implementation is always\n * used.\n *\n * If you need to set a proxy, Turbopack [respects the common `HTTP_PROXY` and `HTTPS_PROXY`\n * environment variable convention](https://docs.rs/reqwest/latest/reqwest/#proxies). HTTP\n * proxies are supported, SOCKS proxies are not currently supported.\n */\n turbopackUseSystemTlsCerts: z.boolean().optional(),\n optimizePackageImports: z.array(z.string()).optional(),\n optimizeServerReact: z.boolean().optional(),\n clientTraceMetadata: z.array(z.string()).optional(),\n serverMinification: z.boolean().optional(),\n enablePrerenderSourceMaps: z.boolean().optional(),\n serverSourceMaps: z.boolean().optional(),\n useWasmBinary: z.boolean().optional(),\n useLightningcss: z.boolean().optional(),\n testProxy: z.boolean().optional(),\n defaultTestRunner: z.enum(SUPPORTED_TEST_RUNNERS_LIST).optional(),\n allowDevelopmentBuild: z.literal(true).optional(),\n reactCompiler: z.union([\n z.boolean(),\n z\n .object({\n compilationMode: z\n .enum(['infer', 'annotation', 'all'])\n .optional(),\n panicThreshold: z\n .enum(['ALL_ERRORS', 'CRITICAL_ERRORS', 'NONE'])\n .optional(),\n })\n .optional(),\n ]),\n staticGenerationRetryCount: z.number().int().optional(),\n staticGenerationMaxConcurrency: z.number().int().optional(),\n staticGenerationMinPagesPerWorker: z.number().int().optional(),\n typedEnv: z.boolean().optional(),\n serverComponentsHmrCache: z.boolean().optional(),\n authInterrupts: z.boolean().optional(),\n useCache: z.boolean().optional(),\n slowModuleDetection: z\n .object({\n buildTimeThresholdMs: z.number().int(),\n })\n .optional(),\n globalNotFound: z.boolean().optional(),\n devtoolSegmentExplorer: z.boolean().optional(),\n browserDebugInfoInTerminal: z\n .union([\n z.boolean(),\n z.object({\n depthLimit: z.number().int().positive().optional(),\n edgeLimit: z.number().int().positive().optional(),\n showSourceLocation: z.boolean().optional(),\n }),\n ])\n .optional(),\n optimizeRouterScrolling: z.boolean().optional(),\n })\n .optional(),\n exportPathMap: z\n .function()\n .args(\n zExportMap,\n z.object({\n dev: z.boolean(),\n dir: z.string(),\n outDir: z.string().nullable(),\n distDir: z.string(),\n buildId: z.string(),\n })\n )\n .returns(z.union([zExportMap, z.promise(zExportMap)]))\n .optional(),\n generateBuildId: z\n .function()\n .args()\n .returns(\n z.union([\n z.string(),\n z.null(),\n z.promise(z.union([z.string(), z.null()])),\n ])\n )\n .optional(),\n generateEtags: z.boolean().optional(),\n headers: z\n .function()\n .args()\n .returns(z.promise(z.array(zHeader)))\n .optional(),\n htmlLimitedBots: z.instanceof(RegExp).optional(),\n httpAgentOptions: z\n .strictObject({ keepAlive: z.boolean().optional() })\n .optional(),\n i18n: z\n .strictObject({\n defaultLocale: z.string().min(1),\n domains: z\n .array(\n z.strictObject({\n defaultLocale: z.string().min(1),\n domain: z.string().min(1),\n http: z.literal(true).optional(),\n locales: z.array(z.string().min(1)).optional(),\n })\n )\n .optional(),\n localeDetection: z.literal(false).optional(),\n locales: z.array(z.string().min(1)),\n })\n .nullable()\n .optional(),\n images: z\n .strictObject({\n localPatterns: z\n .array(\n z.strictObject({\n pathname: z.string().optional(),\n search: z.string().optional(),\n })\n )\n .max(25)\n .optional(),\n remotePatterns: z\n .array(\n z.union([\n z.instanceof(URL),\n z.strictObject({\n hostname: z.string(),\n pathname: z.string().optional(),\n port: z.string().max(5).optional(),\n protocol: z.enum(['http', 'https']).optional(),\n search: z.string().optional(),\n }),\n ])\n )\n .max(50)\n .optional(),\n unoptimized: z.boolean().optional(),\n contentSecurityPolicy: z.string().optional(),\n contentDispositionType: z.enum(['inline', 'attachment']).optional(),\n dangerouslyAllowSVG: z.boolean().optional(),\n deviceSizes: z\n .array(z.number().int().gte(1).lte(10000))\n .max(25)\n .optional(),\n disableStaticImages: z.boolean().optional(),\n domains: z.array(z.string()).max(50).optional(),\n formats: z\n .array(z.enum(['image/avif', 'image/webp']))\n .max(4)\n .optional(),\n imageSizes: z\n .array(z.number().int().gte(1).lte(10000))\n .min(0)\n .max(25)\n .optional(),\n loader: z.enum(VALID_LOADERS).optional(),\n loaderFile: z.string().optional(),\n minimumCacheTTL: z.number().int().gte(0).optional(),\n path: z.string().optional(),\n qualities: z\n .array(z.number().int().gte(1).lte(100))\n .min(1)\n .max(20)\n .optional(),\n })\n .optional(),\n logging: z\n .union([\n z.object({\n fetches: z\n .object({\n fullUrl: z.boolean().optional(),\n hmrRefreshes: z.boolean().optional(),\n })\n .optional(),\n incomingRequests: z\n .union([\n z.boolean(),\n z.object({\n ignore: z.array(z.instanceof(RegExp)),\n }),\n ])\n .optional(),\n }),\n z.literal(false),\n ])\n .optional(),\n modularizeImports: z\n .record(\n z.string(),\n z.object({\n transform: z.union([z.string(), z.record(z.string(), z.string())]),\n preventFullImport: z.boolean().optional(),\n skipDefaultConversion: z.boolean().optional(),\n })\n )\n .optional(),\n onDemandEntries: z\n .strictObject({\n maxInactiveAge: z.number().optional(),\n pagesBufferLength: z.number().optional(),\n })\n .optional(),\n output: z.enum(['standalone', 'export']).optional(),\n outputFileTracingRoot: z.string().optional(),\n outputFileTracingExcludes: z\n .record(z.string(), z.array(z.string()))\n .optional(),\n outputFileTracingIncludes: z\n .record(z.string(), z.array(z.string()))\n .optional(),\n pageExtensions: z.array(z.string()).min(1).optional(),\n poweredByHeader: z.boolean().optional(),\n productionBrowserSourceMaps: z.boolean().optional(),\n publicRuntimeConfig: z.record(z.string(), z.any()).optional(),\n reactProductionProfiling: z.boolean().optional(),\n reactStrictMode: z.boolean().nullable().optional(),\n reactMaxHeadersLength: z.number().nonnegative().int().optional(),\n redirects: z\n .function()\n .args()\n .returns(z.promise(z.array(zRedirect)))\n .optional(),\n rewrites: z\n .function()\n .args()\n .returns(\n z.promise(\n z.union([\n z.array(zRewrite),\n z.object({\n beforeFiles: z.array(zRewrite),\n afterFiles: z.array(zRewrite),\n fallback: z.array(zRewrite),\n }),\n ])\n )\n )\n .optional(),\n // sassOptions properties are unknown besides implementation, use z.any() here\n sassOptions: z\n .object({\n implementation: z.string().optional(),\n })\n .catchall(z.any())\n .optional(),\n serverExternalPackages: z.array(z.string()).optional(),\n serverRuntimeConfig: z.record(z.string(), z.any()).optional(),\n skipMiddlewareUrlNormalize: z.boolean().optional(),\n skipTrailingSlashRedirect: z.boolean().optional(),\n staticPageGenerationTimeout: z.number().optional(),\n expireTime: z.number().optional(),\n target: z.string().optional(),\n trailingSlash: z.boolean().optional(),\n transpilePackages: z.array(z.string()).optional(),\n turbopack: zTurbopackConfig.optional(),\n typescript: z\n .strictObject({\n ignoreBuildErrors: z.boolean().optional(),\n tsconfigPath: z.string().min(1).optional(),\n })\n .optional(),\n useFileSystemPublicRoutes: z.boolean().optional(),\n // The webpack config type is unknown, use z.any() here\n webpack: z.any().nullable().optional(),\n watchOptions: z\n .strictObject({\n pollIntervalMs: z.number().positive().finite().optional(),\n })\n .optional(),\n })\n)\n"],"names":["configSchema","zSizeLimit","z","custom","val","zExportMap","record","string","object","page","query","any","_fallbackRouteParams","array","optional","_isAppDir","boolean","_isDynamicError","_isRoutePPREnabled","_allowEmptyStaticShell","zRouteHas","union","type","enum","key","value","literal","undefined","zRewrite","source","destination","basePath","locale","has","missing","internal","zRedirect","and","statusCode","never","permanent","number","zHeader","headers","zTurboLoaderItem","loader","options","zTurboRuleConfigItemOptions","loaders","as","zTurboRuleConfigItem","lazy","zTurboRuleConfigItemOrShortcut","zTurboCondition","path","instanceof","RegExp","zTurbopackConfig","strictObject","rules","conditions","resolveAlias","resolveExtensions","moduleIds","root","zDeprecatedExperimentalTurboConfig","treeShaking","persistentCaching","memoryLimit","minify","sourceMaps","allowedDevOrigins","amp","canonicalBase","assetPrefix","bundlePagesRouterDependencies","cacheHandler","min","cacheMaxMemorySize","cleanDistDir","compiler","emotion","sourceMap","autoLabel","labelFormat","importMap","canonicalImport","tuple","styledBaseImport","reactRemoveProperties","properties","relay","src","artifactDirectory","language","eagerEsModules","removeConsole","exclude","styledComponents","displayName","topLevelImportPaths","ssr","fileName","meaninglessFileNames","transpileTemplateLiterals","namespace","pure","cssProp","styledJsx","useLightningcss","define","defineServer","runAfterProductionCompile","function","returns","promise","void","compress","configOrigin","crossOrigin","deploymentId","devIndicators","buildActivityPosition","position","distDir","env","eslint","dirs","ignoreDuringBuilds","excludeDefaultMomentLocales","experimental","adapterPath","useSkewCookie","after","appDocumentPreloading","appNavFailHandling","preloadEntriesOnStart","allowedRevalidateHeaderKeys","optimizer","skipValidation","validator","staleTimes","dynamic","static","cacheLife","stale","revalidate","expire","cacheHandlers","clientRouterFilter","clientRouterFilterRedirects","clientRouterFilterAllowedRate","cpus","memoryBasedWorkersCount","craCompat","caseSensitiveRoutes","clientSegmentCache","clientParamParsing","dynamicOnHover","disableOptimizedLoading","disablePostcssPresetEnv","cacheComponents","dynamicIO","inlineCss","esmExternals","serverActions","bodySizeLimit","allowedOrigins","extensionAlias","externalDir","externalMiddlewareRewritesResolve","fallbackNodePolyfills","fetchCacheKeyPrefix","forceSwcTransforms","fullySpecified","gzipSize","imgOptConcurrency","int","nullable","imgOptTimeoutInSeconds","imgOptMaxInputPixels","imgOptSequentialRead","isrFlushToDisk","largePageDataBytes","linkNoTouchStart","manualClientBasePath","middlewarePrefetch","multiZoneDraftMode","cssChunking","nextScriptWorkers","optimizeCss","optimisticClientCache","parallelServerCompiles","parallelServerBuildTraces","ppr","readonly","taint","prerenderEarlyExit","proxyTimeout","gte","rootParams","routerBFCache","removeUncaughtErrorAndRejectionListeners","validateRSCRequestHeaders","scrollRestoration","sri","algorithm","swcPlugins","swcTraceProfiling","urlImports","viewTransition","workerThreads","webVitalsAttribution","mdxRs","development","jsxRuntime","jsxImportSource","providerImportSource","mdxType","typedRoutes","webpackBuildWorker","webpackMemoryOptimizations","turbo","turbopackMemoryLimit","turbopackMinify","turbopackPersistentCaching","turbopackSourceMaps","turbopackTreeShaking","turbopackRemoveUnusedExports","turbopackScopeHoisting","turbopackUseSystemTlsCerts","optimizePackageImports","optimizeServerReact","clientTraceMetadata","serverMinification","enablePrerenderSourceMaps","serverSourceMaps","useWasmBinary","testProxy","defaultTestRunner","SUPPORTED_TEST_RUNNERS_LIST","allowDevelopmentBuild","reactCompiler","compilationMode","panicThreshold","staticGenerationRetryCount","staticGenerationMaxConcurrency","staticGenerationMinPagesPerWorker","typedEnv","serverComponentsHmrCache","authInterrupts","useCache","slowModuleDetection","buildTimeThresholdMs","globalNotFound","devtoolSegmentExplorer","browserDebugInfoInTerminal","depthLimit","positive","edgeLimit","showSourceLocation","optimizeRouterScrolling","exportPathMap","args","dev","dir","outDir","buildId","generateBuildId","null","generateEtags","htmlLimitedBots","httpAgentOptions","keepAlive","i18n","defaultLocale","domains","domain","http","locales","localeDetection","images","localPatterns","pathname","search","max","remotePatterns","URL","hostname","port","protocol","unoptimized","contentSecurityPolicy","contentDispositionType","dangerouslyAllowSVG","deviceSizes","lte","disableStaticImages","formats","imageSizes","VALID_LOADERS","loaderFile","minimumCacheTTL","qualities","logging","fetches","fullUrl","hmrRefreshes","incomingRequests","ignore","modularizeImports","transform","preventFullImport","skipDefaultConversion","onDemandEntries","maxInactiveAge","pagesBufferLength","output","outputFileTracingRoot","outputFileTracingExcludes","outputFileTracingIncludes","pageExtensions","poweredByHeader","productionBrowserSourceMaps","publicRuntimeConfig","reactProductionProfiling","reactStrictMode","reactMaxHeadersLength","nonnegative","redirects","rewrites","beforeFiles","afterFiles","fallback","sassOptions","implementation","catchall","serverExternalPackages","serverRuntimeConfig","skipMiddlewareUrlNormalize","skipTrailingSlashRedirect","staticPageGenerationTimeout","expireTime","target","trailingSlash","transpilePackages","turbopack","typescript","ignoreBuildErrors","tsconfigPath","useFileSystemPublicRoutes","webpack","watchOptions","pollIntervalMs","finite"],"mappings":"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","ignoreList":[0]}
|
1
|
+
{"version":3,"sources":["../../src/server/config-schema.ts"],"sourcesContent":["import type { NextConfig } from './config'\nimport { VALID_LOADERS } from '../shared/lib/image-config'\n\nimport { z } from 'next/dist/compiled/zod'\nimport type zod from 'next/dist/compiled/zod'\n\nimport type { SizeLimit } from '../types'\nimport type {\n ExportPathMap,\n TurbopackLoaderItem,\n DeprecatedExperimentalTurboOptions,\n TurbopackOptions,\n TurbopackRuleConfigItem,\n TurbopackRuleConfigItemOptions,\n TurbopackRuleConfigItemOrShortcut,\n TurbopackRuleCondition,\n} from './config-shared'\nimport type {\n Header,\n Rewrite,\n RouteHas,\n Redirect,\n} from '../lib/load-custom-routes'\nimport { SUPPORTED_TEST_RUNNERS_LIST } from '../cli/next-test'\n\n// A custom zod schema for the SizeLimit type\nconst zSizeLimit = z.custom<SizeLimit>((val) => {\n if (typeof val === 'number' || typeof val === 'string') {\n return true\n }\n return false\n})\n\nconst zExportMap: zod.ZodType<ExportPathMap> = z.record(\n z.string(),\n z.object({\n page: z.string(),\n query: z.any(), // NextParsedUrlQuery\n // private optional properties\n _fallbackRouteParams: z.array(z.string()).optional(),\n _isAppDir: z.boolean().optional(),\n _isDynamicError: z.boolean().optional(),\n _isRoutePPREnabled: z.boolean().optional(),\n _allowEmptyStaticShell: z.boolean().optional(),\n })\n)\n\nconst zRouteHas: zod.ZodType<RouteHas> = z.union([\n z.object({\n type: z.enum(['header', 'query', 'cookie']),\n key: z.string(),\n value: z.string().optional(),\n }),\n z.object({\n type: z.literal('host'),\n key: z.undefined().optional(),\n value: z.string(),\n }),\n])\n\nconst zRewrite: zod.ZodType<Rewrite> = z.object({\n source: z.string(),\n destination: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n internal: z.boolean().optional(),\n})\n\nconst zRedirect: zod.ZodType<Redirect> = z\n .object({\n source: z.string(),\n destination: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n internal: z.boolean().optional(),\n })\n .and(\n z.union([\n z.object({\n statusCode: z.never().optional(),\n permanent: z.boolean(),\n }),\n z.object({\n statusCode: z.number(),\n permanent: z.never().optional(),\n }),\n ])\n )\n\nconst zHeader: zod.ZodType<Header> = z.object({\n source: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n headers: z.array(z.object({ key: z.string(), value: z.string() })),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n\n internal: z.boolean().optional(),\n})\n\nconst zTurboLoaderItem: zod.ZodType<TurbopackLoaderItem> = z.union([\n z.string(),\n z.object({\n loader: z.string(),\n // Any JSON value can be used as turbo loader options, so use z.any() here\n options: z.record(z.string(), z.any()),\n }),\n])\n\nconst zTurboRuleConfigItemOptions: zod.ZodType<TurbopackRuleConfigItemOptions> =\n z.object({\n loaders: z.array(zTurboLoaderItem),\n as: z.string().optional(),\n })\n\nconst zTurboRuleConfigItem: zod.ZodType<TurbopackRuleConfigItem> = z.union([\n z.literal(false),\n z.record(\n z.string(),\n z.lazy(() => zTurboRuleConfigItem)\n ),\n zTurboRuleConfigItemOptions,\n])\nconst zTurboRuleConfigItemOrShortcut: zod.ZodType<TurbopackRuleConfigItemOrShortcut> =\n z.union([z.array(zTurboLoaderItem), zTurboRuleConfigItem])\n\nconst zTurboCondition: zod.ZodType<TurbopackRuleCondition> = z.object({\n path: z.union([z.string(), z.instanceof(RegExp)]),\n})\n\nconst zTurbopackConfig: zod.ZodType<TurbopackOptions> = z.strictObject({\n rules: z.record(z.string(), zTurboRuleConfigItemOrShortcut).optional(),\n conditions: z.record(z.string(), zTurboCondition).optional(),\n resolveAlias: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()),\n z.record(z.string(), z.union([z.string(), z.array(z.string())])),\n ])\n )\n .optional(),\n resolveExtensions: z.array(z.string()).optional(),\n moduleIds: z.enum(['named', 'deterministic']).optional(),\n root: z.string().optional(),\n})\n\n// Same as zTurbopackConfig but with deprecated properties. Unfortunately, base\n// properties are duplicated here as `ZodType`s do not export `extend()`.\nconst zDeprecatedExperimentalTurboConfig: zod.ZodType<DeprecatedExperimentalTurboOptions> =\n z.strictObject({\n loaders: z.record(z.string(), z.array(zTurboLoaderItem)).optional(),\n rules: z.record(z.string(), zTurboRuleConfigItemOrShortcut).optional(),\n resolveAlias: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()),\n z.record(z.string(), z.union([z.string(), z.array(z.string())])),\n ])\n )\n .optional(),\n resolveExtensions: z.array(z.string()).optional(),\n treeShaking: z.boolean().optional(),\n persistentCaching: z.union([z.number(), z.literal(false)]).optional(),\n memoryLimit: z.number().optional(),\n moduleIds: z.enum(['named', 'deterministic']).optional(),\n minify: z.boolean().optional(),\n sourceMaps: z.boolean().optional(),\n root: z.string().optional(),\n })\n\nexport const configSchema: zod.ZodType<NextConfig> = z.lazy(() =>\n z.strictObject({\n allowedDevOrigins: z.array(z.string()).optional(),\n amp: z\n .object({\n canonicalBase: z.string().optional(),\n })\n .optional(),\n assetPrefix: z.string().optional(),\n basePath: z.string().optional(),\n bundlePagesRouterDependencies: z.boolean().optional(),\n cacheHandler: z.string().min(1).optional(),\n cacheMaxMemorySize: z.number().optional(),\n cleanDistDir: z.boolean().optional(),\n compiler: z\n .strictObject({\n emotion: z\n .union([\n z.boolean(),\n z.object({\n sourceMap: z.boolean().optional(),\n autoLabel: z\n .union([\n z.literal('always'),\n z.literal('dev-only'),\n z.literal('never'),\n ])\n .optional(),\n labelFormat: z.string().min(1).optional(),\n importMap: z\n .record(\n z.string(),\n z.record(\n z.string(),\n z.object({\n canonicalImport: z\n .tuple([z.string(), z.string()])\n .optional(),\n styledBaseImport: z\n .tuple([z.string(), z.string()])\n .optional(),\n })\n )\n )\n .optional(),\n }),\n ])\n .optional(),\n reactRemoveProperties: z\n .union([\n z.boolean().optional(),\n z.object({\n properties: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n relay: z\n .object({\n src: z.string(),\n artifactDirectory: z.string().optional(),\n language: z.enum(['javascript', 'typescript', 'flow']).optional(),\n eagerEsModules: z.boolean().optional(),\n })\n .optional(),\n removeConsole: z\n .union([\n z.boolean().optional(),\n z.object({\n exclude: z.array(z.string()).min(1).optional(),\n }),\n ])\n .optional(),\n styledComponents: z.union([\n z.boolean().optional(),\n z.object({\n displayName: z.boolean().optional(),\n topLevelImportPaths: z.array(z.string()).optional(),\n ssr: z.boolean().optional(),\n fileName: z.boolean().optional(),\n meaninglessFileNames: z.array(z.string()).optional(),\n minify: z.boolean().optional(),\n transpileTemplateLiterals: z.boolean().optional(),\n namespace: z.string().min(1).optional(),\n pure: z.boolean().optional(),\n cssProp: z.boolean().optional(),\n }),\n ]),\n styledJsx: z.union([\n z.boolean().optional(),\n z.object({\n useLightningcss: z.boolean().optional(),\n }),\n ]),\n define: z.record(z.string(), z.string()).optional(),\n defineServer: z.record(z.string(), z.string()).optional(),\n runAfterProductionCompile: z\n .function()\n .returns(z.promise(z.void()))\n .optional(),\n })\n .optional(),\n compress: z.boolean().optional(),\n configOrigin: z.string().optional(),\n crossOrigin: z\n .union([z.literal('anonymous'), z.literal('use-credentials')])\n .optional(),\n deploymentId: z.string().optional(),\n devIndicators: z\n .union([\n z.object({\n buildActivityPosition: z\n .union([\n z.literal('bottom-left'),\n z.literal('bottom-right'),\n z.literal('top-left'),\n z.literal('top-right'),\n ])\n .optional(),\n position: z\n .union([\n z.literal('bottom-left'),\n z.literal('bottom-right'),\n z.literal('top-left'),\n z.literal('top-right'),\n ])\n .optional(),\n }),\n z.literal(false),\n ])\n .optional(),\n distDir: z.string().min(1).optional(),\n env: z.record(z.string(), z.union([z.string(), z.undefined()])).optional(),\n eslint: z\n .strictObject({\n dirs: z.array(z.string().min(1)).optional(),\n ignoreDuringBuilds: z.boolean().optional(),\n })\n .optional(),\n excludeDefaultMomentLocales: z.boolean().optional(),\n experimental: z\n .strictObject({\n adapterPath: z.string().optional(),\n useSkewCookie: z.boolean().optional(),\n after: z.boolean().optional(),\n appDocumentPreloading: z.boolean().optional(),\n appNavFailHandling: z.boolean().optional(),\n preloadEntriesOnStart: z.boolean().optional(),\n allowedRevalidateHeaderKeys: z.array(z.string()).optional(),\n amp: z\n .object({\n // AMP optimizer option is unknown, use z.any() here\n optimizer: z.any().optional(),\n skipValidation: z.boolean().optional(),\n validator: z.string().optional(),\n })\n .optional(),\n staleTimes: z\n .object({\n dynamic: z.number().optional(),\n static: z.number().optional(),\n })\n .optional(),\n cacheLife: z\n .record(\n z.object({\n stale: z.number().optional(),\n revalidate: z.number().optional(),\n expire: z.number().optional(),\n })\n )\n .optional(),\n cacheHandlers: z.record(z.string(), z.string().optional()).optional(),\n clientRouterFilter: z.boolean().optional(),\n clientRouterFilterRedirects: z.boolean().optional(),\n clientRouterFilterAllowedRate: z.number().optional(),\n cpus: z.number().optional(),\n memoryBasedWorkersCount: z.boolean().optional(),\n craCompat: z.boolean().optional(),\n caseSensitiveRoutes: z.boolean().optional(),\n clientSegmentCache: z\n .union([z.boolean(), z.literal('client-only')])\n .optional(),\n clientParamParsing: z.boolean().optional(),\n dynamicOnHover: z.boolean().optional(),\n disableOptimizedLoading: z.boolean().optional(),\n disablePostcssPresetEnv: z.boolean().optional(),\n cacheComponents: z.boolean().optional(),\n dynamicIO: z.boolean().optional(),\n inlineCss: z.boolean().optional(),\n esmExternals: z.union([z.boolean(), z.literal('loose')]).optional(),\n serverActions: z\n .object({\n bodySizeLimit: zSizeLimit.optional(),\n allowedOrigins: z.array(z.string()).optional(),\n })\n .optional(),\n // The original type was Record<string, any>\n extensionAlias: z.record(z.string(), z.any()).optional(),\n externalDir: z.boolean().optional(),\n externalMiddlewareRewritesResolve: z.boolean().optional(),\n fallbackNodePolyfills: z.literal(false).optional(),\n fetchCacheKeyPrefix: z.string().optional(),\n forceSwcTransforms: z.boolean().optional(),\n fullySpecified: z.boolean().optional(),\n gzipSize: z.boolean().optional(),\n imgOptConcurrency: z.number().int().optional().nullable(),\n imgOptTimeoutInSeconds: z.number().int().optional(),\n imgOptMaxInputPixels: z.number().int().optional(),\n imgOptSequentialRead: z.boolean().optional().nullable(),\n imgOptSkipMetadata: z.boolean().optional().nullable(),\n isrFlushToDisk: z.boolean().optional(),\n largePageDataBytes: z.number().optional(),\n linkNoTouchStart: z.boolean().optional(),\n manualClientBasePath: z.boolean().optional(),\n middlewarePrefetch: z.enum(['strict', 'flexible']).optional(),\n multiZoneDraftMode: z.boolean().optional(),\n cssChunking: z.union([z.boolean(), z.literal('strict')]).optional(),\n nextScriptWorkers: z.boolean().optional(),\n // The critter option is unknown, use z.any() here\n optimizeCss: z.union([z.boolean(), z.any()]).optional(),\n optimisticClientCache: z.boolean().optional(),\n parallelServerCompiles: z.boolean().optional(),\n parallelServerBuildTraces: z.boolean().optional(),\n ppr: z\n .union([z.boolean(), z.literal('incremental')])\n .readonly()\n .optional(),\n taint: z.boolean().optional(),\n prerenderEarlyExit: z.boolean().optional(),\n proxyTimeout: z.number().gte(0).optional(),\n rootParams: z.boolean().optional(),\n routerBFCache: z.boolean().optional(),\n removeUncaughtErrorAndRejectionListeners: z.boolean().optional(),\n validateRSCRequestHeaders: z.boolean().optional(),\n scrollRestoration: z.boolean().optional(),\n sri: z\n .object({\n algorithm: z.enum(['sha256', 'sha384', 'sha512']).optional(),\n })\n .optional(),\n swcPlugins: z\n // The specific swc plugin's option is unknown, use z.any() here\n .array(z.tuple([z.string(), z.record(z.string(), z.any())]))\n .optional(),\n swcTraceProfiling: z.boolean().optional(),\n // NonNullable<webpack.Configuration['experiments']>['buildHttp']\n urlImports: z.any().optional(),\n viewTransition: z.boolean().optional(),\n workerThreads: z.boolean().optional(),\n webVitalsAttribution: z\n .array(\n z.union([\n z.literal('CLS'),\n z.literal('FCP'),\n z.literal('FID'),\n z.literal('INP'),\n z.literal('LCP'),\n z.literal('TTFB'),\n ])\n )\n .optional(),\n // This is partial set of mdx-rs transform options we support, aligned\n // with next_core::next_config::MdxRsOptions. Ensure both types are kept in sync.\n mdxRs: z\n .union([\n z.boolean(),\n z.object({\n development: z.boolean().optional(),\n jsxRuntime: z.string().optional(),\n jsxImportSource: z.string().optional(),\n providerImportSource: z.string().optional(),\n mdxType: z.enum(['gfm', 'commonmark']).optional(),\n }),\n ])\n .optional(),\n typedRoutes: z.boolean().optional(),\n webpackBuildWorker: z.boolean().optional(),\n webpackMemoryOptimizations: z.boolean().optional(),\n /**\n * @deprecated Use `config.turbopack` instead.\n */\n turbo: zDeprecatedExperimentalTurboConfig.optional(),\n turbopackMemoryLimit: z.number().optional(),\n turbopackMinify: z.boolean().optional(),\n turbopackPersistentCaching: z.boolean().optional(),\n turbopackSourceMaps: z.boolean().optional(),\n turbopackTreeShaking: z.boolean().optional(),\n turbopackRemoveUnusedExports: z.boolean().optional(),\n turbopackScopeHoisting: z.boolean().optional(),\n /**\n * Use the system-provided CA roots instead of bundled CA roots for external HTTPS requests\n * made by Turbopack. Currently this is only used for fetching data from Google Fonts.\n *\n * This may be useful in cases where you or an employer are MITMing traffic.\n *\n * This option is experimental because:\n * - This may cause small performance problems, as it uses [`rustls-native-certs`](\n * https://github.com/rustls/rustls-native-certs).\n * - In the future, this may become the default, and this option may be eliminated, once\n * <https://github.com/seanmonstar/reqwest/issues/2159> is resolved.\n *\n * Users who need to configure this behavior system-wide can override the project\n * configuration using the `NEXT_TURBOPACK_EXPERIMENTAL_USE_SYSTEM_TLS_CERTS=1` environment\n * variable.\n *\n * This option is ignored on Windows on ARM, where the native TLS implementation is always\n * used.\n *\n * If you need to set a proxy, Turbopack [respects the common `HTTP_PROXY` and `HTTPS_PROXY`\n * environment variable convention](https://docs.rs/reqwest/latest/reqwest/#proxies). HTTP\n * proxies are supported, SOCKS proxies are not currently supported.\n */\n turbopackUseSystemTlsCerts: z.boolean().optional(),\n optimizePackageImports: z.array(z.string()).optional(),\n optimizeServerReact: z.boolean().optional(),\n clientTraceMetadata: z.array(z.string()).optional(),\n serverMinification: z.boolean().optional(),\n enablePrerenderSourceMaps: z.boolean().optional(),\n serverSourceMaps: z.boolean().optional(),\n useWasmBinary: z.boolean().optional(),\n useLightningcss: z.boolean().optional(),\n testProxy: z.boolean().optional(),\n defaultTestRunner: z.enum(SUPPORTED_TEST_RUNNERS_LIST).optional(),\n allowDevelopmentBuild: z.literal(true).optional(),\n reactCompiler: z.union([\n z.boolean(),\n z\n .object({\n compilationMode: z\n .enum(['infer', 'annotation', 'all'])\n .optional(),\n panicThreshold: z\n .enum(['ALL_ERRORS', 'CRITICAL_ERRORS', 'NONE'])\n .optional(),\n })\n .optional(),\n ]),\n staticGenerationRetryCount: z.number().int().optional(),\n staticGenerationMaxConcurrency: z.number().int().optional(),\n staticGenerationMinPagesPerWorker: z.number().int().optional(),\n typedEnv: z.boolean().optional(),\n serverComponentsHmrCache: z.boolean().optional(),\n authInterrupts: z.boolean().optional(),\n useCache: z.boolean().optional(),\n slowModuleDetection: z\n .object({\n buildTimeThresholdMs: z.number().int(),\n })\n .optional(),\n globalNotFound: z.boolean().optional(),\n devtoolSegmentExplorer: z.boolean().optional(),\n browserDebugInfoInTerminal: z\n .union([\n z.boolean(),\n z.object({\n depthLimit: z.number().int().positive().optional(),\n edgeLimit: z.number().int().positive().optional(),\n showSourceLocation: z.boolean().optional(),\n }),\n ])\n .optional(),\n optimizeRouterScrolling: z.boolean().optional(),\n })\n .optional(),\n exportPathMap: z\n .function()\n .args(\n zExportMap,\n z.object({\n dev: z.boolean(),\n dir: z.string(),\n outDir: z.string().nullable(),\n distDir: z.string(),\n buildId: z.string(),\n })\n )\n .returns(z.union([zExportMap, z.promise(zExportMap)]))\n .optional(),\n generateBuildId: z\n .function()\n .args()\n .returns(\n z.union([\n z.string(),\n z.null(),\n z.promise(z.union([z.string(), z.null()])),\n ])\n )\n .optional(),\n generateEtags: z.boolean().optional(),\n headers: z\n .function()\n .args()\n .returns(z.promise(z.array(zHeader)))\n .optional(),\n htmlLimitedBots: z.instanceof(RegExp).optional(),\n httpAgentOptions: z\n .strictObject({ keepAlive: z.boolean().optional() })\n .optional(),\n i18n: z\n .strictObject({\n defaultLocale: z.string().min(1),\n domains: z\n .array(\n z.strictObject({\n defaultLocale: z.string().min(1),\n domain: z.string().min(1),\n http: z.literal(true).optional(),\n locales: z.array(z.string().min(1)).optional(),\n })\n )\n .optional(),\n localeDetection: z.literal(false).optional(),\n locales: z.array(z.string().min(1)),\n })\n .nullable()\n .optional(),\n images: z\n .strictObject({\n localPatterns: z\n .array(\n z.strictObject({\n pathname: z.string().optional(),\n search: z.string().optional(),\n })\n )\n .max(25)\n .optional(),\n remotePatterns: z\n .array(\n z.union([\n z.instanceof(URL),\n z.strictObject({\n hostname: z.string(),\n pathname: z.string().optional(),\n port: z.string().max(5).optional(),\n protocol: z.enum(['http', 'https']).optional(),\n search: z.string().optional(),\n }),\n ])\n )\n .max(50)\n .optional(),\n unoptimized: z.boolean().optional(),\n contentSecurityPolicy: z.string().optional(),\n contentDispositionType: z.enum(['inline', 'attachment']).optional(),\n dangerouslyAllowSVG: z.boolean().optional(),\n deviceSizes: z\n .array(z.number().int().gte(1).lte(10000))\n .max(25)\n .optional(),\n disableStaticImages: z.boolean().optional(),\n domains: z.array(z.string()).max(50).optional(),\n formats: z\n .array(z.enum(['image/avif', 'image/webp']))\n .max(4)\n .optional(),\n imageSizes: z\n .array(z.number().int().gte(1).lte(10000))\n .min(0)\n .max(25)\n .optional(),\n loader: z.enum(VALID_LOADERS).optional(),\n loaderFile: z.string().optional(),\n minimumCacheTTL: z.number().int().gte(0).optional(),\n path: z.string().optional(),\n qualities: z\n .array(z.number().int().gte(1).lte(100))\n .min(1)\n .max(20)\n .optional(),\n })\n .optional(),\n logging: z\n .union([\n z.object({\n fetches: z\n .object({\n fullUrl: z.boolean().optional(),\n hmrRefreshes: z.boolean().optional(),\n })\n .optional(),\n incomingRequests: z\n .union([\n z.boolean(),\n z.object({\n ignore: z.array(z.instanceof(RegExp)),\n }),\n ])\n .optional(),\n }),\n z.literal(false),\n ])\n .optional(),\n modularizeImports: z\n .record(\n z.string(),\n z.object({\n transform: z.union([z.string(), z.record(z.string(), z.string())]),\n preventFullImport: z.boolean().optional(),\n skipDefaultConversion: z.boolean().optional(),\n })\n )\n .optional(),\n onDemandEntries: z\n .strictObject({\n maxInactiveAge: z.number().optional(),\n pagesBufferLength: z.number().optional(),\n })\n .optional(),\n output: z.enum(['standalone', 'export']).optional(),\n outputFileTracingRoot: z.string().optional(),\n outputFileTracingExcludes: z\n .record(z.string(), z.array(z.string()))\n .optional(),\n outputFileTracingIncludes: z\n .record(z.string(), z.array(z.string()))\n .optional(),\n pageExtensions: z.array(z.string()).min(1).optional(),\n poweredByHeader: z.boolean().optional(),\n productionBrowserSourceMaps: z.boolean().optional(),\n publicRuntimeConfig: z.record(z.string(), z.any()).optional(),\n reactProductionProfiling: z.boolean().optional(),\n reactStrictMode: z.boolean().nullable().optional(),\n reactMaxHeadersLength: z.number().nonnegative().int().optional(),\n redirects: z\n .function()\n .args()\n .returns(z.promise(z.array(zRedirect)))\n .optional(),\n rewrites: z\n .function()\n .args()\n .returns(\n z.promise(\n z.union([\n z.array(zRewrite),\n z.object({\n beforeFiles: z.array(zRewrite),\n afterFiles: z.array(zRewrite),\n fallback: z.array(zRewrite),\n }),\n ])\n )\n )\n .optional(),\n // sassOptions properties are unknown besides implementation, use z.any() here\n sassOptions: z\n .object({\n implementation: z.string().optional(),\n })\n .catchall(z.any())\n .optional(),\n serverExternalPackages: z.array(z.string()).optional(),\n serverRuntimeConfig: z.record(z.string(), z.any()).optional(),\n skipMiddlewareUrlNormalize: z.boolean().optional(),\n skipTrailingSlashRedirect: z.boolean().optional(),\n staticPageGenerationTimeout: z.number().optional(),\n expireTime: z.number().optional(),\n target: z.string().optional(),\n trailingSlash: z.boolean().optional(),\n transpilePackages: z.array(z.string()).optional(),\n turbopack: zTurbopackConfig.optional(),\n typescript: z\n .strictObject({\n ignoreBuildErrors: z.boolean().optional(),\n tsconfigPath: z.string().min(1).optional(),\n })\n .optional(),\n useFileSystemPublicRoutes: z.boolean().optional(),\n // The webpack config type is unknown, use z.any() here\n webpack: z.any().nullable().optional(),\n watchOptions: z\n .strictObject({\n pollIntervalMs: z.number().positive().finite().optional(),\n })\n .optional(),\n })\n)\n"],"names":["configSchema","zSizeLimit","z","custom","val","zExportMap","record","string","object","page","query","any","_fallbackRouteParams","array","optional","_isAppDir","boolean","_isDynamicError","_isRoutePPREnabled","_allowEmptyStaticShell","zRouteHas","union","type","enum","key","value","literal","undefined","zRewrite","source","destination","basePath","locale","has","missing","internal","zRedirect","and","statusCode","never","permanent","number","zHeader","headers","zTurboLoaderItem","loader","options","zTurboRuleConfigItemOptions","loaders","as","zTurboRuleConfigItem","lazy","zTurboRuleConfigItemOrShortcut","zTurboCondition","path","instanceof","RegExp","zTurbopackConfig","strictObject","rules","conditions","resolveAlias","resolveExtensions","moduleIds","root","zDeprecatedExperimentalTurboConfig","treeShaking","persistentCaching","memoryLimit","minify","sourceMaps","allowedDevOrigins","amp","canonicalBase","assetPrefix","bundlePagesRouterDependencies","cacheHandler","min","cacheMaxMemorySize","cleanDistDir","compiler","emotion","sourceMap","autoLabel","labelFormat","importMap","canonicalImport","tuple","styledBaseImport","reactRemoveProperties","properties","relay","src","artifactDirectory","language","eagerEsModules","removeConsole","exclude","styledComponents","displayName","topLevelImportPaths","ssr","fileName","meaninglessFileNames","transpileTemplateLiterals","namespace","pure","cssProp","styledJsx","useLightningcss","define","defineServer","runAfterProductionCompile","function","returns","promise","void","compress","configOrigin","crossOrigin","deploymentId","devIndicators","buildActivityPosition","position","distDir","env","eslint","dirs","ignoreDuringBuilds","excludeDefaultMomentLocales","experimental","adapterPath","useSkewCookie","after","appDocumentPreloading","appNavFailHandling","preloadEntriesOnStart","allowedRevalidateHeaderKeys","optimizer","skipValidation","validator","staleTimes","dynamic","static","cacheLife","stale","revalidate","expire","cacheHandlers","clientRouterFilter","clientRouterFilterRedirects","clientRouterFilterAllowedRate","cpus","memoryBasedWorkersCount","craCompat","caseSensitiveRoutes","clientSegmentCache","clientParamParsing","dynamicOnHover","disableOptimizedLoading","disablePostcssPresetEnv","cacheComponents","dynamicIO","inlineCss","esmExternals","serverActions","bodySizeLimit","allowedOrigins","extensionAlias","externalDir","externalMiddlewareRewritesResolve","fallbackNodePolyfills","fetchCacheKeyPrefix","forceSwcTransforms","fullySpecified","gzipSize","imgOptConcurrency","int","nullable","imgOptTimeoutInSeconds","imgOptMaxInputPixels","imgOptSequentialRead","imgOptSkipMetadata","isrFlushToDisk","largePageDataBytes","linkNoTouchStart","manualClientBasePath","middlewarePrefetch","multiZoneDraftMode","cssChunking","nextScriptWorkers","optimizeCss","optimisticClientCache","parallelServerCompiles","parallelServerBuildTraces","ppr","readonly","taint","prerenderEarlyExit","proxyTimeout","gte","rootParams","routerBFCache","removeUncaughtErrorAndRejectionListeners","validateRSCRequestHeaders","scrollRestoration","sri","algorithm","swcPlugins","swcTraceProfiling","urlImports","viewTransition","workerThreads","webVitalsAttribution","mdxRs","development","jsxRuntime","jsxImportSource","providerImportSource","mdxType","typedRoutes","webpackBuildWorker","webpackMemoryOptimizations","turbo","turbopackMemoryLimit","turbopackMinify","turbopackPersistentCaching","turbopackSourceMaps","turbopackTreeShaking","turbopackRemoveUnusedExports","turbopackScopeHoisting","turbopackUseSystemTlsCerts","optimizePackageImports","optimizeServerReact","clientTraceMetadata","serverMinification","enablePrerenderSourceMaps","serverSourceMaps","useWasmBinary","testProxy","defaultTestRunner","SUPPORTED_TEST_RUNNERS_LIST","allowDevelopmentBuild","reactCompiler","compilationMode","panicThreshold","staticGenerationRetryCount","staticGenerationMaxConcurrency","staticGenerationMinPagesPerWorker","typedEnv","serverComponentsHmrCache","authInterrupts","useCache","slowModuleDetection","buildTimeThresholdMs","globalNotFound","devtoolSegmentExplorer","browserDebugInfoInTerminal","depthLimit","positive","edgeLimit","showSourceLocation","optimizeRouterScrolling","exportPathMap","args","dev","dir","outDir","buildId","generateBuildId","null","generateEtags","htmlLimitedBots","httpAgentOptions","keepAlive","i18n","defaultLocale","domains","domain","http","locales","localeDetection","images","localPatterns","pathname","search","max","remotePatterns","URL","hostname","port","protocol","unoptimized","contentSecurityPolicy","contentDispositionType","dangerouslyAllowSVG","deviceSizes","lte","disableStaticImages","formats","imageSizes","VALID_LOADERS","loaderFile","minimumCacheTTL","qualities","logging","fetches","fullUrl","hmrRefreshes","incomingRequests","ignore","modularizeImports","transform","preventFullImport","skipDefaultConversion","onDemandEntries","maxInactiveAge","pagesBufferLength","output","outputFileTracingRoot","outputFileTracingExcludes","outputFileTracingIncludes","pageExtensions","poweredByHeader","productionBrowserSourceMaps","publicRuntimeConfig","reactProductionProfiling","reactStrictMode","reactMaxHeadersLength","nonnegative","redirects","rewrites","beforeFiles","afterFiles","fallback","sassOptions","implementation","catchall","serverExternalPackages","serverRuntimeConfig","skipMiddlewareUrlNormalize","skipTrailingSlashRedirect","staticPageGenerationTimeout","expireTime","target","trailingSlash","transpilePackages","turbopack","typescript","ignoreBuildErrors","tsconfigPath","useFileSystemPublicRoutes","webpack","watchOptions","pollIntervalMs","finite"],"mappings":"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","ignoreList":[0]}
|