next 15.4.0-canary.40 → 15.4.0-canary.42

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.
Files changed (59) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/define-env.d.ts +1 -2
  3. package/dist/build/define-env.js +19 -5
  4. package/dist/build/define-env.js.map +1 -1
  5. package/dist/build/index.js +2 -2
  6. package/dist/build/swc/index.js +1 -2
  7. package/dist/build/swc/index.js.map +1 -1
  8. package/dist/build/turbopack-build/impl.js +50 -0
  9. package/dist/build/turbopack-build/impl.js.map +1 -1
  10. package/dist/build/webpack-config.js +2 -3
  11. package/dist/build/webpack-config.js.map +1 -1
  12. package/dist/client/app-bootstrap.js +1 -1
  13. package/dist/client/index.js +1 -1
  14. package/dist/compiled/next-server/pages-turbo.runtime.prod.js +2 -2
  15. package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
  16. package/dist/compiled/next-server/pages.runtime.prod.js +2 -2
  17. package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
  18. package/dist/compiled/next-server/server.runtime.prod.js +1 -1
  19. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  20. package/dist/esm/build/define-env.js +19 -5
  21. package/dist/esm/build/define-env.js.map +1 -1
  22. package/dist/esm/build/index.js +2 -2
  23. package/dist/esm/build/swc/index.js +1 -2
  24. package/dist/esm/build/swc/index.js.map +1 -1
  25. package/dist/esm/build/turbopack-build/impl.js +9 -0
  26. package/dist/esm/build/turbopack-build/impl.js.map +1 -1
  27. package/dist/esm/build/webpack-config.js +2 -3
  28. package/dist/esm/build/webpack-config.js.map +1 -1
  29. package/dist/esm/client/app-bootstrap.js +1 -1
  30. package/dist/esm/client/index.js +1 -1
  31. package/dist/esm/server/config-schema.js +1 -0
  32. package/dist/esm/server/config-schema.js.map +1 -1
  33. package/dist/esm/server/config-shared.js.map +1 -1
  34. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  35. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  36. package/dist/esm/server/lib/app-info-log.js +1 -1
  37. package/dist/esm/server/lib/incremental-cache/index.js +4 -2
  38. package/dist/esm/server/lib/incremental-cache/index.js.map +1 -1
  39. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js +0 -1
  40. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  41. package/dist/esm/server/lib/start-server.js +1 -1
  42. package/dist/esm/shared/lib/canary-only.js +1 -1
  43. package/dist/server/config-schema.js +1 -0
  44. package/dist/server/config-schema.js.map +1 -1
  45. package/dist/server/config-shared.d.ts +5 -0
  46. package/dist/server/config-shared.js.map +1 -1
  47. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  48. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  49. package/dist/server/lib/app-info-log.js +1 -1
  50. package/dist/server/lib/incremental-cache/index.js +4 -2
  51. package/dist/server/lib/incremental-cache/index.js.map +1 -1
  52. package/dist/server/lib/router-utils/setup-dev-bundler.js +0 -1
  53. package/dist/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  54. package/dist/server/lib/start-server.js +1 -1
  55. package/dist/shared/lib/canary-only.js +1 -1
  56. package/dist/telemetry/anonymous-meta.js +1 -1
  57. package/dist/telemetry/events/session-stopped.js +2 -2
  58. package/dist/telemetry/events/version.js +2 -2
  59. package/package.json +15 -15
@@ -347,13 +347,15 @@ export class IncrementalCache {
347
347
  if (ctx.fetchCache && // we don't show this error/warning when a custom cache handler is being used
348
348
  // as it might not have this limit
349
349
  !this.hasCustomCacheHandler && itemSize > 2 * 1024 * 1024) {
350
+ const warningText = `Failed to set Next.js data cache for ${ctx.fetchUrl || pathname}, items over 2MB can not be cached (${itemSize} bytes)`;
350
351
  if (this.dev) {
351
- throw Object.defineProperty(new Error(`Failed to set Next.js data cache, items over 2MB can not be cached (${itemSize} bytes)`), "__NEXT_ERROR_CODE", {
352
- value: "E86",
352
+ throw Object.defineProperty(new Error(warningText), "__NEXT_ERROR_CODE", {
353
+ value: "E394",
353
354
  enumerable: false,
354
355
  configurable: true
355
356
  });
356
357
  }
358
+ console.warn(warningText);
357
359
  return;
358
360
  }
359
361
  try {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/lib/incremental-cache/index.ts"],"sourcesContent":["import type { CacheFs } from '../../../shared/lib/utils'\nimport type { PrerenderManifest } from '../../../build'\nimport {\n type IncrementalCacheValue,\n type IncrementalCacheEntry,\n type IncrementalCache as IncrementalCacheType,\n IncrementalCacheKind,\n CachedRouteKind,\n type IncrementalResponseCacheEntry,\n type IncrementalFetchCacheEntry,\n type GetIncrementalFetchCacheContext,\n type GetIncrementalResponseCacheContext,\n type CachedFetchValue,\n type SetIncrementalFetchCacheContext,\n type SetIncrementalResponseCacheContext,\n} from '../../response-cache'\nimport type { DeepReadonly } from '../../../shared/lib/deep-readonly'\n\nimport FileSystemCache from './file-system-cache'\nimport { normalizePagePath } from '../../../shared/lib/page-path/normalize-page-path'\n\nimport {\n CACHE_ONE_YEAR,\n PRERENDER_REVALIDATE_HEADER,\n} from '../../../lib/constants'\nimport { toRoute } from '../to-route'\nimport { SharedCacheControls } from './shared-cache-controls'\nimport {\n getPrerenderResumeDataCache,\n getRenderResumeDataCache,\n workUnitAsyncStorage,\n} from '../../app-render/work-unit-async-storage.external'\nimport { InvariantError } from '../../../shared/lib/invariant-error'\nimport type { Revalidate } from '../cache-control'\nimport { getPreviouslyRevalidatedTags } from '../../server-utils'\nimport { workAsyncStorage } from '../../app-render/work-async-storage.external'\n\nexport interface CacheHandlerContext {\n fs?: CacheFs\n dev?: boolean\n flushToDisk?: boolean\n serverDistDir?: string\n maxMemoryCacheSize?: number\n fetchCacheKeyPrefix?: string\n prerenderManifest?: PrerenderManifest\n revalidatedTags: string[]\n _requestHeaders: IncrementalCache['requestHeaders']\n}\n\nexport interface CacheHandlerValue {\n lastModified?: number\n age?: number\n cacheState?: string\n value: IncrementalCacheValue | null\n}\n\nexport class CacheHandler {\n // eslint-disable-next-line\n constructor(_ctx: CacheHandlerContext) {}\n\n public async get(\n _cacheKey: string,\n _ctx: GetIncrementalFetchCacheContext | GetIncrementalResponseCacheContext\n ): Promise<CacheHandlerValue | null> {\n return {} as any\n }\n\n public async set(\n _cacheKey: string,\n _data: IncrementalCacheValue | null,\n _ctx: SetIncrementalFetchCacheContext | SetIncrementalResponseCacheContext\n ): Promise<void> {}\n\n public async revalidateTag(\n ..._args: Parameters<IncrementalCache['revalidateTag']>\n ): Promise<void> {}\n\n public resetRequestCache(): void {}\n}\n\nexport class IncrementalCache implements IncrementalCacheType {\n readonly dev?: boolean\n readonly disableForTestmode?: boolean\n readonly cacheHandler?: CacheHandler\n readonly hasCustomCacheHandler: boolean\n readonly prerenderManifest: DeepReadonly<PrerenderManifest>\n readonly requestHeaders: Record<string, undefined | string | string[]>\n readonly requestProtocol?: 'http' | 'https'\n readonly allowedRevalidateHeaderKeys?: string[]\n readonly minimalMode?: boolean\n readonly fetchCacheKeyPrefix?: string\n readonly revalidatedTags?: string[]\n readonly isOnDemandRevalidate?: boolean\n\n private readonly locks = new Map<string, Promise<void>>()\n\n /**\n * The cache controls for routes. This will source the values from the\n * prerender manifest until the in-memory cache is updated with new values.\n */\n private readonly cacheControls: SharedCacheControls\n\n constructor({\n fs,\n dev,\n flushToDisk,\n minimalMode,\n serverDistDir,\n requestHeaders,\n requestProtocol,\n maxMemoryCacheSize,\n getPrerenderManifest,\n fetchCacheKeyPrefix,\n CurCacheHandler,\n allowedRevalidateHeaderKeys,\n }: {\n fs?: CacheFs\n dev: boolean\n minimalMode?: boolean\n serverDistDir?: string\n flushToDisk?: boolean\n requestProtocol?: 'http' | 'https'\n allowedRevalidateHeaderKeys?: string[]\n requestHeaders: IncrementalCache['requestHeaders']\n maxMemoryCacheSize?: number\n getPrerenderManifest: () => DeepReadonly<PrerenderManifest>\n fetchCacheKeyPrefix?: string\n CurCacheHandler?: typeof CacheHandler\n }) {\n const debug = !!process.env.NEXT_PRIVATE_DEBUG_CACHE\n this.hasCustomCacheHandler = Boolean(CurCacheHandler)\n\n const cacheHandlersSymbol = Symbol.for('@next/cache-handlers')\n const _globalThis: typeof globalThis & {\n [cacheHandlersSymbol]?: {\n FetchCache?: typeof CacheHandler\n }\n } = globalThis\n\n if (!CurCacheHandler) {\n // if we have a global cache handler available leverage it\n const globalCacheHandler = _globalThis[cacheHandlersSymbol]\n\n if (globalCacheHandler?.FetchCache) {\n CurCacheHandler = globalCacheHandler.FetchCache\n } else {\n if (fs && serverDistDir) {\n if (debug) {\n console.log('using filesystem cache handler')\n }\n CurCacheHandler = FileSystemCache\n }\n }\n } else if (debug) {\n console.log('using custom cache handler', CurCacheHandler.name)\n }\n\n if (process.env.__NEXT_TEST_MAX_ISR_CACHE) {\n // Allow cache size to be overridden for testing purposes\n maxMemoryCacheSize = parseInt(process.env.__NEXT_TEST_MAX_ISR_CACHE, 10)\n }\n this.dev = dev\n this.disableForTestmode = process.env.NEXT_PRIVATE_TEST_PROXY === 'true'\n // this is a hack to avoid Webpack knowing this is equal to this.minimalMode\n // because we replace this.minimalMode to true in production bundles.\n const minimalModeKey = 'minimalMode'\n this[minimalModeKey] = minimalMode\n this.requestHeaders = requestHeaders\n this.requestProtocol = requestProtocol\n this.allowedRevalidateHeaderKeys = allowedRevalidateHeaderKeys\n this.prerenderManifest = getPrerenderManifest()\n this.cacheControls = new SharedCacheControls(this.prerenderManifest)\n this.fetchCacheKeyPrefix = fetchCacheKeyPrefix\n let revalidatedTags: string[] = []\n\n if (\n requestHeaders[PRERENDER_REVALIDATE_HEADER] ===\n this.prerenderManifest?.preview?.previewModeId\n ) {\n this.isOnDemandRevalidate = true\n }\n\n if (minimalMode) {\n revalidatedTags = getPreviouslyRevalidatedTags(\n requestHeaders,\n this.prerenderManifest?.preview?.previewModeId\n )\n }\n\n if (CurCacheHandler) {\n this.cacheHandler = new CurCacheHandler({\n dev,\n fs,\n flushToDisk,\n serverDistDir,\n revalidatedTags,\n maxMemoryCacheSize,\n _requestHeaders: requestHeaders,\n fetchCacheKeyPrefix,\n })\n }\n }\n\n private calculateRevalidate(\n pathname: string,\n fromTime: number,\n dev: boolean,\n isFallback: boolean | undefined\n ): Revalidate {\n // in development we don't have a prerender-manifest\n // and default to always revalidating to allow easier debugging\n if (dev)\n return Math.floor(performance.timeOrigin + performance.now() - 1000)\n\n const cacheControl = this.cacheControls.get(toRoute(pathname))\n\n // if an entry isn't present in routes we fallback to a default\n // of revalidating after 1 second unless it's a fallback request.\n const initialRevalidateSeconds = cacheControl\n ? cacheControl.revalidate\n : isFallback\n ? false\n : 1\n\n const revalidateAfter =\n typeof initialRevalidateSeconds === 'number'\n ? initialRevalidateSeconds * 1000 + fromTime\n : initialRevalidateSeconds\n\n return revalidateAfter\n }\n\n _getPathname(pathname: string, fetchCache?: boolean) {\n return fetchCache ? pathname : normalizePagePath(pathname)\n }\n\n resetRequestCache() {\n this.cacheHandler?.resetRequestCache?.()\n }\n\n async lock(cacheKey: string) {\n let unlockNext: () => Promise<void> = () => Promise.resolve()\n const existingLock = this.locks.get(cacheKey)\n\n if (existingLock) {\n await existingLock\n }\n\n const newLock = new Promise<void>((resolve) => {\n unlockNext = async () => {\n resolve()\n this.locks.delete(cacheKey) // Remove the lock upon release\n }\n })\n\n this.locks.set(cacheKey, newLock)\n return unlockNext\n }\n\n async revalidateTag(tags: string | string[]): Promise<void> {\n return this.cacheHandler?.revalidateTag(tags)\n }\n\n // x-ref: https://github.com/facebook/react/blob/2655c9354d8e1c54ba888444220f63e836925caa/packages/react/src/ReactFetch.js#L23\n async generateCacheKey(\n url: string,\n init: RequestInit | Request = {}\n ): Promise<string> {\n // this should be bumped anytime a fix is made to cache entries\n // that should bust the cache\n const MAIN_KEY_PREFIX = 'v3'\n\n const bodyChunks: string[] = []\n\n const encoder = new TextEncoder()\n const decoder = new TextDecoder()\n\n if (init.body) {\n // handle ReadableStream body\n if (typeof (init.body as any).getReader === 'function') {\n const readableBody = init.body as ReadableStream<Uint8Array | string>\n\n const chunks: Uint8Array[] = []\n\n try {\n await readableBody.pipeTo(\n new WritableStream({\n write(chunk) {\n if (typeof chunk === 'string') {\n chunks.push(encoder.encode(chunk))\n bodyChunks.push(chunk)\n } else {\n chunks.push(chunk)\n bodyChunks.push(decoder.decode(chunk, { stream: true }))\n }\n },\n })\n )\n\n // Flush the decoder.\n bodyChunks.push(decoder.decode())\n\n // Create a new buffer with all the chunks.\n const length = chunks.reduce((total, arr) => total + arr.length, 0)\n const arrayBuffer = new Uint8Array(length)\n\n // Push each of the chunks into the new array buffer.\n let offset = 0\n for (const chunk of chunks) {\n arrayBuffer.set(chunk, offset)\n offset += chunk.length\n }\n\n ;(init as any)._ogBody = arrayBuffer\n } catch (err) {\n console.error('Problem reading body', err)\n }\n } // handle FormData or URLSearchParams bodies\n else if (typeof (init.body as any).keys === 'function') {\n const formData = init.body as FormData\n ;(init as any)._ogBody = init.body\n for (const key of new Set([...formData.keys()])) {\n const values = formData.getAll(key)\n bodyChunks.push(\n `${key}=${(\n await Promise.all(\n values.map(async (val) => {\n if (typeof val === 'string') {\n return val\n } else {\n return await val.text()\n }\n })\n )\n ).join(',')}`\n )\n }\n // handle blob body\n } else if (typeof (init.body as any).arrayBuffer === 'function') {\n const blob = init.body as Blob\n const arrayBuffer = await blob.arrayBuffer()\n bodyChunks.push(await blob.text())\n ;(init as any)._ogBody = new Blob([arrayBuffer], { type: blob.type })\n } else if (typeof init.body === 'string') {\n bodyChunks.push(init.body)\n ;(init as any)._ogBody = init.body\n }\n }\n\n const headers =\n typeof (init.headers || {}).keys === 'function'\n ? Object.fromEntries(init.headers as Headers)\n : Object.assign({}, init.headers)\n\n // w3c trace context headers can break request caching and deduplication\n // so we remove them from the cache key\n if ('traceparent' in headers) delete headers['traceparent']\n if ('tracestate' in headers) delete headers['tracestate']\n\n const cacheString = JSON.stringify([\n MAIN_KEY_PREFIX,\n this.fetchCacheKeyPrefix || '',\n url,\n init.method,\n headers,\n init.mode,\n init.redirect,\n init.credentials,\n init.referrer,\n init.referrerPolicy,\n init.integrity,\n init.cache,\n bodyChunks,\n ])\n\n if (process.env.NEXT_RUNTIME === 'edge') {\n function bufferToHex(buffer: ArrayBuffer): string {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n const buffer = encoder.encode(cacheString)\n return bufferToHex(await crypto.subtle.digest('SHA-256', buffer))\n } else {\n const crypto = require('crypto') as typeof import('crypto')\n return crypto.createHash('sha256').update(cacheString).digest('hex')\n }\n }\n\n async get(\n cacheKey: string,\n ctx: GetIncrementalFetchCacheContext\n ): Promise<IncrementalFetchCacheEntry | null>\n async get(\n cacheKey: string,\n ctx: GetIncrementalResponseCacheContext\n ): Promise<IncrementalResponseCacheEntry | null>\n async get(\n cacheKey: string,\n ctx: GetIncrementalFetchCacheContext | GetIncrementalResponseCacheContext\n ): Promise<IncrementalCacheEntry | null> {\n // Unlike other caches if we have a resume data cache, we use it even if\n // testmode would normally disable it or if requestHeaders say 'no-cache'.\n if (ctx.kind === IncrementalCacheKind.FETCH) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n const resumeDataCache = workUnitStore\n ? getRenderResumeDataCache(workUnitStore)\n : null\n if (resumeDataCache) {\n const memoryCacheData = resumeDataCache.fetch.get(cacheKey)\n if (memoryCacheData?.kind === CachedRouteKind.FETCH) {\n return { isStale: false, value: memoryCacheData }\n }\n }\n }\n\n // we don't leverage the prerender cache in dev mode\n // so that getStaticProps is always called for easier debugging\n if (\n this.disableForTestmode ||\n (this.dev &&\n (ctx.kind !== IncrementalCacheKind.FETCH ||\n this.requestHeaders['cache-control'] === 'no-cache'))\n ) {\n return null\n }\n\n cacheKey = this._getPathname(\n cacheKey,\n ctx.kind === IncrementalCacheKind.FETCH\n )\n\n const cacheData = await this.cacheHandler?.get(cacheKey, ctx)\n\n if (ctx.kind === IncrementalCacheKind.FETCH) {\n if (!cacheData) {\n return null\n }\n\n if (cacheData.value?.kind !== CachedRouteKind.FETCH) {\n throw new InvariantError(\n `Expected cached value for cache key ${JSON.stringify(cacheKey)} to be a \"FETCH\" kind, got ${JSON.stringify(cacheData.value?.kind)} instead.`\n )\n }\n\n const workStore = workAsyncStorage.getStore()\n const combinedTags = [...(ctx.tags || []), ...(ctx.softTags || [])]\n // if a tag was revalidated we don't return stale data\n if (\n combinedTags.some(\n (tag) =>\n this.revalidatedTags?.includes(tag) ||\n workStore?.pendingRevalidatedTags?.includes(tag)\n )\n ) {\n return null\n }\n\n const revalidate = ctx.revalidate || cacheData.value.revalidate\n const age =\n (performance.timeOrigin +\n performance.now() -\n (cacheData.lastModified || 0)) /\n 1000\n\n const isStale = age > revalidate\n const data = cacheData.value.data\n\n return {\n isStale,\n value: { kind: CachedRouteKind.FETCH, data, revalidate },\n }\n } else if (cacheData?.value?.kind === CachedRouteKind.FETCH) {\n throw new InvariantError(\n `Expected cached value for cache key ${JSON.stringify(cacheKey)} not to be a ${JSON.stringify(ctx.kind)} kind, got \"FETCH\" instead.`\n )\n }\n\n let entry: IncrementalResponseCacheEntry | null = null\n const cacheControl = this.cacheControls.get(toRoute(cacheKey))\n\n let isStale: boolean | -1 | undefined\n let revalidateAfter: Revalidate\n\n if (cacheData?.lastModified === -1) {\n isStale = -1\n revalidateAfter = -1 * CACHE_ONE_YEAR\n } else {\n revalidateAfter = this.calculateRevalidate(\n cacheKey,\n cacheData?.lastModified || performance.timeOrigin + performance.now(),\n this.dev ?? false,\n ctx.isFallback\n )\n isStale =\n revalidateAfter !== false &&\n revalidateAfter < performance.timeOrigin + performance.now()\n ? true\n : undefined\n }\n\n if (cacheData) {\n entry = {\n isStale,\n cacheControl,\n revalidateAfter,\n value: cacheData.value,\n }\n }\n\n if (\n !cacheData &&\n this.prerenderManifest.notFoundRoutes.includes(cacheKey)\n ) {\n // for the first hit after starting the server the cache\n // may not have a way to save notFound: true so if\n // the prerender-manifest marks this as notFound then we\n // return that entry and trigger a cache set to give it a\n // chance to update in-memory entries\n entry = {\n isStale,\n value: null,\n cacheControl,\n revalidateAfter,\n }\n this.set(cacheKey, entry.value, { ...ctx, cacheControl })\n }\n return entry\n }\n\n async set(\n pathname: string,\n data: CachedFetchValue | null,\n ctx: SetIncrementalFetchCacheContext\n ): Promise<void>\n async set(\n pathname: string,\n data: Exclude<IncrementalCacheValue, CachedFetchValue> | null,\n ctx: SetIncrementalResponseCacheContext\n ): Promise<void>\n async set(\n pathname: string,\n data: IncrementalCacheValue | null,\n ctx: SetIncrementalFetchCacheContext | SetIncrementalResponseCacheContext\n ): Promise<void> {\n // Even if we otherwise disable caching for testMode or if no fetchCache is\n // configured we still always stash results in the resume data cache if one\n // exists. This is because this is a transient in memory cache that\n // populates caches ahead of a dynamic render in dev mode to allow the RSC\n // debug info to have the right environment associated to it.\n if (data?.kind === CachedRouteKind.FETCH) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n const prerenderResumeDataCache = workUnitStore\n ? getPrerenderResumeDataCache(workUnitStore)\n : null\n if (prerenderResumeDataCache) {\n prerenderResumeDataCache.fetch.set(pathname, data)\n }\n }\n\n if (this.disableForTestmode || (this.dev && !ctx.fetchCache)) return\n\n pathname = this._getPathname(pathname, ctx.fetchCache)\n\n // FetchCache has upper limit of 2MB per-entry currently\n const itemSize = JSON.stringify(data).length\n if (\n ctx.fetchCache &&\n // we don't show this error/warning when a custom cache handler is being used\n // as it might not have this limit\n !this.hasCustomCacheHandler &&\n itemSize > 2 * 1024 * 1024\n ) {\n if (this.dev) {\n throw new Error(\n `Failed to set Next.js data cache, items over 2MB can not be cached (${itemSize} bytes)`\n )\n }\n return\n }\n\n try {\n if (!ctx.fetchCache && ctx.cacheControl) {\n this.cacheControls.set(toRoute(pathname), ctx.cacheControl)\n }\n\n await this.cacheHandler?.set(pathname, data, ctx)\n } catch (error) {\n console.warn('Failed to update prerender cache for', pathname, error)\n }\n }\n}\n"],"names":["IncrementalCacheKind","CachedRouteKind","FileSystemCache","normalizePagePath","CACHE_ONE_YEAR","PRERENDER_REVALIDATE_HEADER","toRoute","SharedCacheControls","getPrerenderResumeDataCache","getRenderResumeDataCache","workUnitAsyncStorage","InvariantError","getPreviouslyRevalidatedTags","workAsyncStorage","CacheHandler","constructor","_ctx","get","_cacheKey","set","_data","revalidateTag","_args","resetRequestCache","IncrementalCache","fs","dev","flushToDisk","minimalMode","serverDistDir","requestHeaders","requestProtocol","maxMemoryCacheSize","getPrerenderManifest","fetchCacheKeyPrefix","CurCacheHandler","allowedRevalidateHeaderKeys","locks","Map","debug","process","env","NEXT_PRIVATE_DEBUG_CACHE","hasCustomCacheHandler","Boolean","cacheHandlersSymbol","Symbol","for","_globalThis","globalThis","globalCacheHandler","FetchCache","console","log","name","__NEXT_TEST_MAX_ISR_CACHE","parseInt","disableForTestmode","NEXT_PRIVATE_TEST_PROXY","minimalModeKey","prerenderManifest","cacheControls","revalidatedTags","preview","previewModeId","isOnDemandRevalidate","cacheHandler","_requestHeaders","calculateRevalidate","pathname","fromTime","isFallback","Math","floor","performance","timeOrigin","now","cacheControl","initialRevalidateSeconds","revalidate","revalidateAfter","_getPathname","fetchCache","lock","cacheKey","unlockNext","Promise","resolve","existingLock","newLock","delete","tags","generateCacheKey","url","init","MAIN_KEY_PREFIX","bodyChunks","encoder","TextEncoder","decoder","TextDecoder","body","getReader","readableBody","chunks","pipeTo","WritableStream","write","chunk","push","encode","decode","stream","length","reduce","total","arr","arrayBuffer","Uint8Array","offset","_ogBody","err","error","keys","formData","key","Set","values","getAll","all","map","val","text","join","blob","Blob","type","headers","Object","fromEntries","assign","cacheString","JSON","stringify","method","mode","redirect","credentials","referrer","referrerPolicy","integrity","cache","NEXT_RUNTIME","bufferToHex","buffer","Array","prototype","call","b","toString","padStart","crypto","subtle","digest","require","createHash","update","ctx","cacheData","kind","FETCH","workUnitStore","getStore","resumeDataCache","memoryCacheData","fetch","isStale","value","workStore","combinedTags","softTags","some","tag","includes","pendingRevalidatedTags","age","lastModified","data","entry","undefined","notFoundRoutes","prerenderResumeDataCache","itemSize","Error","warn"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/server/lib/incremental-cache/index.ts"],"sourcesContent":["import type { CacheFs } from '../../../shared/lib/utils'\nimport type { PrerenderManifest } from '../../../build'\nimport {\n type IncrementalCacheValue,\n type IncrementalCacheEntry,\n type IncrementalCache as IncrementalCacheType,\n IncrementalCacheKind,\n CachedRouteKind,\n type IncrementalResponseCacheEntry,\n type IncrementalFetchCacheEntry,\n type GetIncrementalFetchCacheContext,\n type GetIncrementalResponseCacheContext,\n type CachedFetchValue,\n type SetIncrementalFetchCacheContext,\n type SetIncrementalResponseCacheContext,\n} from '../../response-cache'\nimport type { DeepReadonly } from '../../../shared/lib/deep-readonly'\n\nimport FileSystemCache from './file-system-cache'\nimport { normalizePagePath } from '../../../shared/lib/page-path/normalize-page-path'\n\nimport {\n CACHE_ONE_YEAR,\n PRERENDER_REVALIDATE_HEADER,\n} from '../../../lib/constants'\nimport { toRoute } from '../to-route'\nimport { SharedCacheControls } from './shared-cache-controls'\nimport {\n getPrerenderResumeDataCache,\n getRenderResumeDataCache,\n workUnitAsyncStorage,\n} from '../../app-render/work-unit-async-storage.external'\nimport { InvariantError } from '../../../shared/lib/invariant-error'\nimport type { Revalidate } from '../cache-control'\nimport { getPreviouslyRevalidatedTags } from '../../server-utils'\nimport { workAsyncStorage } from '../../app-render/work-async-storage.external'\n\nexport interface CacheHandlerContext {\n fs?: CacheFs\n dev?: boolean\n flushToDisk?: boolean\n serverDistDir?: string\n maxMemoryCacheSize?: number\n fetchCacheKeyPrefix?: string\n prerenderManifest?: PrerenderManifest\n revalidatedTags: string[]\n _requestHeaders: IncrementalCache['requestHeaders']\n}\n\nexport interface CacheHandlerValue {\n lastModified?: number\n age?: number\n cacheState?: string\n value: IncrementalCacheValue | null\n}\n\nexport class CacheHandler {\n // eslint-disable-next-line\n constructor(_ctx: CacheHandlerContext) {}\n\n public async get(\n _cacheKey: string,\n _ctx: GetIncrementalFetchCacheContext | GetIncrementalResponseCacheContext\n ): Promise<CacheHandlerValue | null> {\n return {} as any\n }\n\n public async set(\n _cacheKey: string,\n _data: IncrementalCacheValue | null,\n _ctx: SetIncrementalFetchCacheContext | SetIncrementalResponseCacheContext\n ): Promise<void> {}\n\n public async revalidateTag(\n ..._args: Parameters<IncrementalCache['revalidateTag']>\n ): Promise<void> {}\n\n public resetRequestCache(): void {}\n}\n\nexport class IncrementalCache implements IncrementalCacheType {\n readonly dev?: boolean\n readonly disableForTestmode?: boolean\n readonly cacheHandler?: CacheHandler\n readonly hasCustomCacheHandler: boolean\n readonly prerenderManifest: DeepReadonly<PrerenderManifest>\n readonly requestHeaders: Record<string, undefined | string | string[]>\n readonly requestProtocol?: 'http' | 'https'\n readonly allowedRevalidateHeaderKeys?: string[]\n readonly minimalMode?: boolean\n readonly fetchCacheKeyPrefix?: string\n readonly revalidatedTags?: string[]\n readonly isOnDemandRevalidate?: boolean\n\n private readonly locks = new Map<string, Promise<void>>()\n\n /**\n * The cache controls for routes. This will source the values from the\n * prerender manifest until the in-memory cache is updated with new values.\n */\n private readonly cacheControls: SharedCacheControls\n\n constructor({\n fs,\n dev,\n flushToDisk,\n minimalMode,\n serverDistDir,\n requestHeaders,\n requestProtocol,\n maxMemoryCacheSize,\n getPrerenderManifest,\n fetchCacheKeyPrefix,\n CurCacheHandler,\n allowedRevalidateHeaderKeys,\n }: {\n fs?: CacheFs\n dev: boolean\n minimalMode?: boolean\n serverDistDir?: string\n flushToDisk?: boolean\n requestProtocol?: 'http' | 'https'\n allowedRevalidateHeaderKeys?: string[]\n requestHeaders: IncrementalCache['requestHeaders']\n maxMemoryCacheSize?: number\n getPrerenderManifest: () => DeepReadonly<PrerenderManifest>\n fetchCacheKeyPrefix?: string\n CurCacheHandler?: typeof CacheHandler\n }) {\n const debug = !!process.env.NEXT_PRIVATE_DEBUG_CACHE\n this.hasCustomCacheHandler = Boolean(CurCacheHandler)\n\n const cacheHandlersSymbol = Symbol.for('@next/cache-handlers')\n const _globalThis: typeof globalThis & {\n [cacheHandlersSymbol]?: {\n FetchCache?: typeof CacheHandler\n }\n } = globalThis\n\n if (!CurCacheHandler) {\n // if we have a global cache handler available leverage it\n const globalCacheHandler = _globalThis[cacheHandlersSymbol]\n\n if (globalCacheHandler?.FetchCache) {\n CurCacheHandler = globalCacheHandler.FetchCache\n } else {\n if (fs && serverDistDir) {\n if (debug) {\n console.log('using filesystem cache handler')\n }\n CurCacheHandler = FileSystemCache\n }\n }\n } else if (debug) {\n console.log('using custom cache handler', CurCacheHandler.name)\n }\n\n if (process.env.__NEXT_TEST_MAX_ISR_CACHE) {\n // Allow cache size to be overridden for testing purposes\n maxMemoryCacheSize = parseInt(process.env.__NEXT_TEST_MAX_ISR_CACHE, 10)\n }\n this.dev = dev\n this.disableForTestmode = process.env.NEXT_PRIVATE_TEST_PROXY === 'true'\n // this is a hack to avoid Webpack knowing this is equal to this.minimalMode\n // because we replace this.minimalMode to true in production bundles.\n const minimalModeKey = 'minimalMode'\n this[minimalModeKey] = minimalMode\n this.requestHeaders = requestHeaders\n this.requestProtocol = requestProtocol\n this.allowedRevalidateHeaderKeys = allowedRevalidateHeaderKeys\n this.prerenderManifest = getPrerenderManifest()\n this.cacheControls = new SharedCacheControls(this.prerenderManifest)\n this.fetchCacheKeyPrefix = fetchCacheKeyPrefix\n let revalidatedTags: string[] = []\n\n if (\n requestHeaders[PRERENDER_REVALIDATE_HEADER] ===\n this.prerenderManifest?.preview?.previewModeId\n ) {\n this.isOnDemandRevalidate = true\n }\n\n if (minimalMode) {\n revalidatedTags = getPreviouslyRevalidatedTags(\n requestHeaders,\n this.prerenderManifest?.preview?.previewModeId\n )\n }\n\n if (CurCacheHandler) {\n this.cacheHandler = new CurCacheHandler({\n dev,\n fs,\n flushToDisk,\n serverDistDir,\n revalidatedTags,\n maxMemoryCacheSize,\n _requestHeaders: requestHeaders,\n fetchCacheKeyPrefix,\n })\n }\n }\n\n private calculateRevalidate(\n pathname: string,\n fromTime: number,\n dev: boolean,\n isFallback: boolean | undefined\n ): Revalidate {\n // in development we don't have a prerender-manifest\n // and default to always revalidating to allow easier debugging\n if (dev)\n return Math.floor(performance.timeOrigin + performance.now() - 1000)\n\n const cacheControl = this.cacheControls.get(toRoute(pathname))\n\n // if an entry isn't present in routes we fallback to a default\n // of revalidating after 1 second unless it's a fallback request.\n const initialRevalidateSeconds = cacheControl\n ? cacheControl.revalidate\n : isFallback\n ? false\n : 1\n\n const revalidateAfter =\n typeof initialRevalidateSeconds === 'number'\n ? initialRevalidateSeconds * 1000 + fromTime\n : initialRevalidateSeconds\n\n return revalidateAfter\n }\n\n _getPathname(pathname: string, fetchCache?: boolean) {\n return fetchCache ? pathname : normalizePagePath(pathname)\n }\n\n resetRequestCache() {\n this.cacheHandler?.resetRequestCache?.()\n }\n\n async lock(cacheKey: string) {\n let unlockNext: () => Promise<void> = () => Promise.resolve()\n const existingLock = this.locks.get(cacheKey)\n\n if (existingLock) {\n await existingLock\n }\n\n const newLock = new Promise<void>((resolve) => {\n unlockNext = async () => {\n resolve()\n this.locks.delete(cacheKey) // Remove the lock upon release\n }\n })\n\n this.locks.set(cacheKey, newLock)\n return unlockNext\n }\n\n async revalidateTag(tags: string | string[]): Promise<void> {\n return this.cacheHandler?.revalidateTag(tags)\n }\n\n // x-ref: https://github.com/facebook/react/blob/2655c9354d8e1c54ba888444220f63e836925caa/packages/react/src/ReactFetch.js#L23\n async generateCacheKey(\n url: string,\n init: RequestInit | Request = {}\n ): Promise<string> {\n // this should be bumped anytime a fix is made to cache entries\n // that should bust the cache\n const MAIN_KEY_PREFIX = 'v3'\n\n const bodyChunks: string[] = []\n\n const encoder = new TextEncoder()\n const decoder = new TextDecoder()\n\n if (init.body) {\n // handle ReadableStream body\n if (typeof (init.body as any).getReader === 'function') {\n const readableBody = init.body as ReadableStream<Uint8Array | string>\n\n const chunks: Uint8Array[] = []\n\n try {\n await readableBody.pipeTo(\n new WritableStream({\n write(chunk) {\n if (typeof chunk === 'string') {\n chunks.push(encoder.encode(chunk))\n bodyChunks.push(chunk)\n } else {\n chunks.push(chunk)\n bodyChunks.push(decoder.decode(chunk, { stream: true }))\n }\n },\n })\n )\n\n // Flush the decoder.\n bodyChunks.push(decoder.decode())\n\n // Create a new buffer with all the chunks.\n const length = chunks.reduce((total, arr) => total + arr.length, 0)\n const arrayBuffer = new Uint8Array(length)\n\n // Push each of the chunks into the new array buffer.\n let offset = 0\n for (const chunk of chunks) {\n arrayBuffer.set(chunk, offset)\n offset += chunk.length\n }\n\n ;(init as any)._ogBody = arrayBuffer\n } catch (err) {\n console.error('Problem reading body', err)\n }\n } // handle FormData or URLSearchParams bodies\n else if (typeof (init.body as any).keys === 'function') {\n const formData = init.body as FormData\n ;(init as any)._ogBody = init.body\n for (const key of new Set([...formData.keys()])) {\n const values = formData.getAll(key)\n bodyChunks.push(\n `${key}=${(\n await Promise.all(\n values.map(async (val) => {\n if (typeof val === 'string') {\n return val\n } else {\n return await val.text()\n }\n })\n )\n ).join(',')}`\n )\n }\n // handle blob body\n } else if (typeof (init.body as any).arrayBuffer === 'function') {\n const blob = init.body as Blob\n const arrayBuffer = await blob.arrayBuffer()\n bodyChunks.push(await blob.text())\n ;(init as any)._ogBody = new Blob([arrayBuffer], { type: blob.type })\n } else if (typeof init.body === 'string') {\n bodyChunks.push(init.body)\n ;(init as any)._ogBody = init.body\n }\n }\n\n const headers =\n typeof (init.headers || {}).keys === 'function'\n ? Object.fromEntries(init.headers as Headers)\n : Object.assign({}, init.headers)\n\n // w3c trace context headers can break request caching and deduplication\n // so we remove them from the cache key\n if ('traceparent' in headers) delete headers['traceparent']\n if ('tracestate' in headers) delete headers['tracestate']\n\n const cacheString = JSON.stringify([\n MAIN_KEY_PREFIX,\n this.fetchCacheKeyPrefix || '',\n url,\n init.method,\n headers,\n init.mode,\n init.redirect,\n init.credentials,\n init.referrer,\n init.referrerPolicy,\n init.integrity,\n init.cache,\n bodyChunks,\n ])\n\n if (process.env.NEXT_RUNTIME === 'edge') {\n function bufferToHex(buffer: ArrayBuffer): string {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n const buffer = encoder.encode(cacheString)\n return bufferToHex(await crypto.subtle.digest('SHA-256', buffer))\n } else {\n const crypto = require('crypto') as typeof import('crypto')\n return crypto.createHash('sha256').update(cacheString).digest('hex')\n }\n }\n\n async get(\n cacheKey: string,\n ctx: GetIncrementalFetchCacheContext\n ): Promise<IncrementalFetchCacheEntry | null>\n async get(\n cacheKey: string,\n ctx: GetIncrementalResponseCacheContext\n ): Promise<IncrementalResponseCacheEntry | null>\n async get(\n cacheKey: string,\n ctx: GetIncrementalFetchCacheContext | GetIncrementalResponseCacheContext\n ): Promise<IncrementalCacheEntry | null> {\n // Unlike other caches if we have a resume data cache, we use it even if\n // testmode would normally disable it or if requestHeaders say 'no-cache'.\n if (ctx.kind === IncrementalCacheKind.FETCH) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n const resumeDataCache = workUnitStore\n ? getRenderResumeDataCache(workUnitStore)\n : null\n if (resumeDataCache) {\n const memoryCacheData = resumeDataCache.fetch.get(cacheKey)\n if (memoryCacheData?.kind === CachedRouteKind.FETCH) {\n return { isStale: false, value: memoryCacheData }\n }\n }\n }\n\n // we don't leverage the prerender cache in dev mode\n // so that getStaticProps is always called for easier debugging\n if (\n this.disableForTestmode ||\n (this.dev &&\n (ctx.kind !== IncrementalCacheKind.FETCH ||\n this.requestHeaders['cache-control'] === 'no-cache'))\n ) {\n return null\n }\n\n cacheKey = this._getPathname(\n cacheKey,\n ctx.kind === IncrementalCacheKind.FETCH\n )\n\n const cacheData = await this.cacheHandler?.get(cacheKey, ctx)\n\n if (ctx.kind === IncrementalCacheKind.FETCH) {\n if (!cacheData) {\n return null\n }\n\n if (cacheData.value?.kind !== CachedRouteKind.FETCH) {\n throw new InvariantError(\n `Expected cached value for cache key ${JSON.stringify(cacheKey)} to be a \"FETCH\" kind, got ${JSON.stringify(cacheData.value?.kind)} instead.`\n )\n }\n\n const workStore = workAsyncStorage.getStore()\n const combinedTags = [...(ctx.tags || []), ...(ctx.softTags || [])]\n // if a tag was revalidated we don't return stale data\n if (\n combinedTags.some(\n (tag) =>\n this.revalidatedTags?.includes(tag) ||\n workStore?.pendingRevalidatedTags?.includes(tag)\n )\n ) {\n return null\n }\n\n const revalidate = ctx.revalidate || cacheData.value.revalidate\n const age =\n (performance.timeOrigin +\n performance.now() -\n (cacheData.lastModified || 0)) /\n 1000\n\n const isStale = age > revalidate\n const data = cacheData.value.data\n\n return {\n isStale,\n value: { kind: CachedRouteKind.FETCH, data, revalidate },\n }\n } else if (cacheData?.value?.kind === CachedRouteKind.FETCH) {\n throw new InvariantError(\n `Expected cached value for cache key ${JSON.stringify(cacheKey)} not to be a ${JSON.stringify(ctx.kind)} kind, got \"FETCH\" instead.`\n )\n }\n\n let entry: IncrementalResponseCacheEntry | null = null\n const cacheControl = this.cacheControls.get(toRoute(cacheKey))\n\n let isStale: boolean | -1 | undefined\n let revalidateAfter: Revalidate\n\n if (cacheData?.lastModified === -1) {\n isStale = -1\n revalidateAfter = -1 * CACHE_ONE_YEAR\n } else {\n revalidateAfter = this.calculateRevalidate(\n cacheKey,\n cacheData?.lastModified || performance.timeOrigin + performance.now(),\n this.dev ?? false,\n ctx.isFallback\n )\n isStale =\n revalidateAfter !== false &&\n revalidateAfter < performance.timeOrigin + performance.now()\n ? true\n : undefined\n }\n\n if (cacheData) {\n entry = {\n isStale,\n cacheControl,\n revalidateAfter,\n value: cacheData.value,\n }\n }\n\n if (\n !cacheData &&\n this.prerenderManifest.notFoundRoutes.includes(cacheKey)\n ) {\n // for the first hit after starting the server the cache\n // may not have a way to save notFound: true so if\n // the prerender-manifest marks this as notFound then we\n // return that entry and trigger a cache set to give it a\n // chance to update in-memory entries\n entry = {\n isStale,\n value: null,\n cacheControl,\n revalidateAfter,\n }\n this.set(cacheKey, entry.value, { ...ctx, cacheControl })\n }\n return entry\n }\n\n async set(\n pathname: string,\n data: CachedFetchValue | null,\n ctx: SetIncrementalFetchCacheContext\n ): Promise<void>\n async set(\n pathname: string,\n data: Exclude<IncrementalCacheValue, CachedFetchValue> | null,\n ctx: SetIncrementalResponseCacheContext\n ): Promise<void>\n async set(\n pathname: string,\n data: IncrementalCacheValue | null,\n ctx: SetIncrementalFetchCacheContext | SetIncrementalResponseCacheContext\n ): Promise<void> {\n // Even if we otherwise disable caching for testMode or if no fetchCache is\n // configured we still always stash results in the resume data cache if one\n // exists. This is because this is a transient in memory cache that\n // populates caches ahead of a dynamic render in dev mode to allow the RSC\n // debug info to have the right environment associated to it.\n if (data?.kind === CachedRouteKind.FETCH) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n const prerenderResumeDataCache = workUnitStore\n ? getPrerenderResumeDataCache(workUnitStore)\n : null\n if (prerenderResumeDataCache) {\n prerenderResumeDataCache.fetch.set(pathname, data)\n }\n }\n\n if (this.disableForTestmode || (this.dev && !ctx.fetchCache)) return\n\n pathname = this._getPathname(pathname, ctx.fetchCache)\n\n // FetchCache has upper limit of 2MB per-entry currently\n const itemSize = JSON.stringify(data).length\n if (\n ctx.fetchCache &&\n // we don't show this error/warning when a custom cache handler is being used\n // as it might not have this limit\n !this.hasCustomCacheHandler &&\n itemSize > 2 * 1024 * 1024\n ) {\n const warningText = `Failed to set Next.js data cache for ${ctx.fetchUrl || pathname}, items over 2MB can not be cached (${itemSize} bytes)`\n\n if (this.dev) {\n throw new Error(warningText)\n }\n console.warn(warningText)\n return\n }\n\n try {\n if (!ctx.fetchCache && ctx.cacheControl) {\n this.cacheControls.set(toRoute(pathname), ctx.cacheControl)\n }\n\n await this.cacheHandler?.set(pathname, data, ctx)\n } catch (error) {\n console.warn('Failed to update prerender cache for', pathname, error)\n }\n }\n}\n"],"names":["IncrementalCacheKind","CachedRouteKind","FileSystemCache","normalizePagePath","CACHE_ONE_YEAR","PRERENDER_REVALIDATE_HEADER","toRoute","SharedCacheControls","getPrerenderResumeDataCache","getRenderResumeDataCache","workUnitAsyncStorage","InvariantError","getPreviouslyRevalidatedTags","workAsyncStorage","CacheHandler","constructor","_ctx","get","_cacheKey","set","_data","revalidateTag","_args","resetRequestCache","IncrementalCache","fs","dev","flushToDisk","minimalMode","serverDistDir","requestHeaders","requestProtocol","maxMemoryCacheSize","getPrerenderManifest","fetchCacheKeyPrefix","CurCacheHandler","allowedRevalidateHeaderKeys","locks","Map","debug","process","env","NEXT_PRIVATE_DEBUG_CACHE","hasCustomCacheHandler","Boolean","cacheHandlersSymbol","Symbol","for","_globalThis","globalThis","globalCacheHandler","FetchCache","console","log","name","__NEXT_TEST_MAX_ISR_CACHE","parseInt","disableForTestmode","NEXT_PRIVATE_TEST_PROXY","minimalModeKey","prerenderManifest","cacheControls","revalidatedTags","preview","previewModeId","isOnDemandRevalidate","cacheHandler","_requestHeaders","calculateRevalidate","pathname","fromTime","isFallback","Math","floor","performance","timeOrigin","now","cacheControl","initialRevalidateSeconds","revalidate","revalidateAfter","_getPathname","fetchCache","lock","cacheKey","unlockNext","Promise","resolve","existingLock","newLock","delete","tags","generateCacheKey","url","init","MAIN_KEY_PREFIX","bodyChunks","encoder","TextEncoder","decoder","TextDecoder","body","getReader","readableBody","chunks","pipeTo","WritableStream","write","chunk","push","encode","decode","stream","length","reduce","total","arr","arrayBuffer","Uint8Array","offset","_ogBody","err","error","keys","formData","key","Set","values","getAll","all","map","val","text","join","blob","Blob","type","headers","Object","fromEntries","assign","cacheString","JSON","stringify","method","mode","redirect","credentials","referrer","referrerPolicy","integrity","cache","NEXT_RUNTIME","bufferToHex","buffer","Array","prototype","call","b","toString","padStart","crypto","subtle","digest","require","createHash","update","ctx","cacheData","kind","FETCH","workUnitStore","getStore","resumeDataCache","memoryCacheData","fetch","isStale","value","workStore","combinedTags","softTags","some","tag","includes","pendingRevalidatedTags","age","lastModified","data","entry","undefined","notFoundRoutes","prerenderResumeDataCache","itemSize","warningText","fetchUrl","Error","warn"],"mappings":"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","ignoreList":[0]}
@@ -493,7 +493,6 @@ async function startWatcher(opts) {
493
493
  hasRewrites,
494
494
  isClient,
495
495
  isEdgeServer,
496
- isNodeOrEdgeCompilation: isNodeServer || isEdgeServer,
497
496
  isNodeServer,
498
497
  middlewareMatchers: undefined
499
498
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/lib/router-utils/setup-dev-bundler.ts"],"sourcesContent":["import type { NextConfigComplete } from '../../config-shared'\nimport type { FilesystemDynamicRoute } from './filesystem'\nimport type { UnwrapPromise } from '../../../lib/coalesced-function'\nimport {\n getPageStaticInfo,\n type MiddlewareMatcher,\n} from '../../../build/analysis/get-page-static-info'\nimport type { RoutesManifest } from '../../../build'\nimport type { MiddlewareRouteMatch } from '../../../shared/lib/router/utils/middleware-route-matcher'\nimport type { PropagateToWorkersField } from './types'\nimport type { NextJsHotReloaderInterface } from '../../dev/hot-reloader-types'\n\nimport { createDefineEnv } from '../../../build/swc'\nimport fs from 'fs'\nimport { mkdir } from 'fs/promises'\nimport url from 'url'\nimport path from 'path'\nimport qs from 'querystring'\nimport Watchpack from 'next/dist/compiled/watchpack'\nimport { loadEnvConfig } from '@next/env'\nimport findUp from 'next/dist/compiled/find-up'\nimport { buildCustomRoute } from './filesystem'\nimport * as Log from '../../../build/output/log'\nimport HotReloaderWebpack from '../../dev/hot-reloader-webpack'\nimport { setGlobal } from '../../../trace/shared'\nimport type { Telemetry } from '../../../telemetry/storage'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport loadJsConfig from '../../../build/load-jsconfig'\nimport { createValidFileMatcher } from '../find-page-file'\nimport {\n EVENT_BUILD_FEATURE_USAGE,\n eventCliSession,\n} from '../../../telemetry/events'\nimport { getSortedRoutes } from '../../../shared/lib/router/utils'\nimport {\n getStaticInfoIncludingLayouts,\n sortByPageExts,\n} from '../../../build/entries'\nimport { verifyTypeScriptSetup } from '../../../lib/verify-typescript-setup'\nimport { verifyPartytownSetup } from '../../../lib/verify-partytown-setup'\nimport { getRouteRegex } from '../../../shared/lib/router/utils/route-regex'\nimport { normalizeAppPath } from '../../../shared/lib/router/utils/app-paths'\nimport { buildDataRoute } from './build-data-route'\nimport { getRouteMatcher } from '../../../shared/lib/router/utils/route-matcher'\nimport { normalizePathSep } from '../../../shared/lib/page-path/normalize-path-sep'\nimport { createClientRouterFilter } from '../../../lib/create-client-router-filter'\nimport { absolutePathToPage } from '../../../shared/lib/page-path/absolute-path-to-page'\nimport { generateInterceptionRoutesRewrites } from '../../../lib/generate-interception-routes-rewrites'\n\nimport {\n CLIENT_STATIC_FILES_PATH,\n DEV_CLIENT_PAGES_MANIFEST,\n DEV_CLIENT_MIDDLEWARE_MANIFEST,\n PHASE_DEVELOPMENT_SERVER,\n TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST,\n ROUTES_MANIFEST,\n PRERENDER_MANIFEST,\n} from '../../../shared/lib/constants'\n\nimport { getMiddlewareRouteMatcher } from '../../../shared/lib/router/utils/middleware-route-matcher'\n\nimport {\n isMiddlewareFile,\n NestedMiddlewareError,\n isInstrumentationHookFile,\n getPossibleMiddlewareFilenames,\n getPossibleInstrumentationHookFilenames,\n} from '../../../build/utils'\nimport { devPageFiles } from '../../../build/webpack/plugins/next-types-plugin/shared'\nimport type { LazyRenderServerInstance } from '../router-server'\nimport { HMR_ACTIONS_SENT_TO_BROWSER } from '../../dev/hot-reloader-types'\nimport { PAGE_TYPES } from '../../../lib/page-types'\nimport { createHotReloaderTurbopack } from '../../dev/hot-reloader-turbopack'\nimport { generateEncryptionKeyBase64 } from '../../app-render/encryption-utils-server'\nimport { isMetadataRouteFile } from '../../../lib/metadata/is-metadata-route'\nimport { normalizeMetadataPageToRoute } from '../../../lib/metadata/get-metadata-route'\nimport { createEnvDefinitions } from '../experimental/create-env-definitions'\nimport { JsConfigPathsPlugin } from '../../../build/webpack/plugins/jsconfig-paths-plugin'\nimport { store as consoleStore } from '../../../build/output/store'\nimport {\n isPersistentCachingEnabled,\n ModuleBuildError,\n TurbopackInternalError,\n} from '../../../shared/lib/turbopack/utils'\nimport { getDefineEnv } from '../../../build/define-env'\n\nexport type SetupOpts = {\n renderServer: LazyRenderServerInstance\n dir: string\n turbo?: boolean\n appDir?: string\n pagesDir?: string\n telemetry: Telemetry\n isCustomServer?: boolean\n fsChecker: UnwrapPromise<\n ReturnType<typeof import('./filesystem').setupFsCheck>\n >\n nextConfig: NextConfigComplete\n port: number\n onDevServerCleanup: ((listener: () => Promise<void>) => void) | undefined\n resetFetch: () => void\n}\n\nexport interface DevRoutesManifest {\n version: number\n caseSensitive: RoutesManifest['caseSensitive']\n basePath: RoutesManifest['basePath']\n rewrites: RoutesManifest['rewrites']\n redirects: RoutesManifest['redirects']\n headers: RoutesManifest['headers']\n i18n: RoutesManifest['i18n']\n skipMiddlewareUrlNormalize: RoutesManifest['skipMiddlewareUrlNormalize']\n}\n\nexport type ServerFields = {\n actualMiddlewareFile?: string | undefined\n actualInstrumentationHookFile?: string | undefined\n appPathRoutes?: Record<string, string | string[]>\n middleware?:\n | {\n page: string\n match: MiddlewareRouteMatch\n matchers?: MiddlewareMatcher[]\n }\n | undefined\n hasAppNotFound?: boolean\n interceptionRoutes?: ReturnType<\n typeof import('./filesystem').buildCustomRoute\n >[]\n setIsrStatus?: (key: string, value: boolean) => void\n resetFetch?: () => void\n}\n\nasync function verifyTypeScript(opts: SetupOpts) {\n let usingTypeScript = false\n const verifyResult = await verifyTypeScriptSetup({\n dir: opts.dir,\n distDir: opts.nextConfig.distDir,\n intentDirs: [opts.pagesDir, opts.appDir].filter(Boolean) as string[],\n typeCheckPreflight: false,\n tsconfigPath: opts.nextConfig.typescript.tsconfigPath,\n disableStaticImages: opts.nextConfig.images.disableStaticImages,\n hasAppDir: !!opts.appDir,\n hasPagesDir: !!opts.pagesDir,\n })\n\n if (verifyResult.version) {\n usingTypeScript = true\n }\n return usingTypeScript\n}\n\nexport async function propagateServerField(\n opts: SetupOpts,\n field: PropagateToWorkersField,\n args: any\n) {\n await opts.renderServer?.instance?.propagateServerField(opts.dir, field, args)\n}\n\nasync function startWatcher(opts: SetupOpts) {\n const { nextConfig, appDir, pagesDir, dir, resetFetch } = opts\n const { useFileSystemPublicRoutes } = nextConfig\n const usingTypeScript = await verifyTypeScript(opts)\n\n const distDir = path.join(opts.dir, opts.nextConfig.distDir)\n\n // we ensure the types directory exists here\n if (usingTypeScript) {\n const distTypesDir = path.join(distDir, 'types')\n if (!fs.existsSync(distTypesDir)) {\n await mkdir(distTypesDir, { recursive: true })\n }\n }\n\n setGlobal('distDir', distDir)\n setGlobal('phase', PHASE_DEVELOPMENT_SERVER)\n\n const validFileMatcher = createValidFileMatcher(\n nextConfig.pageExtensions,\n appDir\n )\n\n const serverFields: ServerFields = {}\n\n // Update logging state once based on next.config.js when initializing\n consoleStore.setState({\n logging: nextConfig.logging !== false,\n })\n\n const hotReloader: NextJsHotReloaderInterface = opts.turbo\n ? await createHotReloaderTurbopack(opts, serverFields, distDir, resetFetch)\n : new HotReloaderWebpack(opts.dir, {\n appDir,\n pagesDir,\n distDir,\n config: opts.nextConfig,\n buildId: 'development',\n encryptionKey: await generateEncryptionKeyBase64({\n isBuild: false,\n distDir,\n }),\n telemetry: opts.telemetry,\n rewrites: opts.fsChecker.rewrites,\n previewProps: opts.fsChecker.prerenderManifest.preview,\n resetFetch,\n })\n\n await hotReloader.start()\n\n // have to write this after starting hot-reloader since that\n // cleans the dist dir\n const routesManifestPath = path.join(distDir, ROUTES_MANIFEST)\n const routesManifest: DevRoutesManifest = {\n version: 3,\n caseSensitive: !!nextConfig.experimental.caseSensitiveRoutes,\n basePath: nextConfig.basePath,\n rewrites: opts.fsChecker.rewrites,\n redirects: opts.fsChecker.redirects,\n headers: opts.fsChecker.headers,\n i18n: nextConfig.i18n || undefined,\n skipMiddlewareUrlNormalize: nextConfig.skipMiddlewareUrlNormalize,\n }\n await fs.promises.writeFile(\n routesManifestPath,\n JSON.stringify(routesManifest)\n )\n\n const prerenderManifestPath = path.join(distDir, PRERENDER_MANIFEST)\n await fs.promises.writeFile(\n prerenderManifestPath,\n JSON.stringify(opts.fsChecker.prerenderManifest, null, 2)\n )\n\n if (opts.nextConfig.experimental.nextScriptWorkers) {\n await verifyPartytownSetup(\n opts.dir,\n path.join(distDir, CLIENT_STATIC_FILES_PATH)\n )\n }\n\n opts.fsChecker.ensureCallback(async function ensure(item) {\n if (item.type === 'appFile' || item.type === 'pageFile') {\n await hotReloader.ensurePage({\n clientOnly: false,\n page: item.itemPath,\n isApp: item.type === 'appFile',\n definition: undefined,\n })\n }\n })\n\n let resolved = false\n let prevSortedRoutes: string[] = []\n\n await new Promise<void>(async (resolve, reject) => {\n if (pagesDir) {\n // Watchpack doesn't emit an event for an empty directory\n fs.readdir(pagesDir, (_, files) => {\n if (files?.length) {\n return\n }\n\n if (!resolved) {\n resolve()\n resolved = true\n }\n })\n }\n\n const pages = pagesDir ? [pagesDir] : []\n const app = appDir ? [appDir] : []\n const directories = [...pages, ...app]\n\n const rootDir = pagesDir || appDir\n const files = [\n ...getPossibleMiddlewareFilenames(\n path.join(rootDir!, '..'),\n nextConfig.pageExtensions\n ),\n ...getPossibleInstrumentationHookFilenames(\n path.join(rootDir!, '..'),\n nextConfig.pageExtensions\n ),\n ]\n let nestedMiddleware: string[] = []\n\n const envFiles = [\n '.env.development.local',\n '.env.local',\n '.env.development',\n '.env',\n ].map((file) => path.join(dir, file))\n\n files.push(...envFiles)\n\n // tsconfig/jsconfig paths hot-reloading\n const tsconfigPaths = [\n path.join(dir, 'tsconfig.json'),\n path.join(dir, 'jsconfig.json'),\n ] as const\n files.push(...tsconfigPaths)\n\n const wp = new Watchpack({\n ignored: (pathname: string) => {\n return (\n !files.some((file) => file.startsWith(pathname)) &&\n !directories.some(\n (d) => pathname.startsWith(d) || d.startsWith(pathname)\n )\n )\n },\n })\n const fileWatchTimes = new Map()\n let enabledTypeScript = usingTypeScript\n let previousClientRouterFilters: any\n let previousConflictingPagePaths: Set<string> = new Set()\n\n wp.on('aggregated', async () => {\n let middlewareMatchers: MiddlewareMatcher[] | undefined\n const routedPages: string[] = []\n const knownFiles = wp.getTimeInfoEntries()\n const appPaths: Record<string, string[]> = {}\n const pageNameSet = new Set<string>()\n const conflictingAppPagePaths = new Set<string>()\n const appPageFilePaths = new Map<string, string>()\n const pagesPageFilePaths = new Map<string, string>()\n\n let envChange = false\n let tsconfigChange = false\n let conflictingPageChange = 0\n let hasRootAppNotFound = false\n\n const { appFiles, pageFiles } = opts.fsChecker\n\n appFiles.clear()\n pageFiles.clear()\n devPageFiles.clear()\n\n const sortedKnownFiles: string[] = [...knownFiles.keys()].sort(\n sortByPageExts(nextConfig.pageExtensions)\n )\n\n for (const fileName of sortedKnownFiles) {\n if (\n !files.includes(fileName) &&\n !directories.some((d) => fileName.startsWith(d))\n ) {\n continue\n }\n const meta = knownFiles.get(fileName)\n\n const watchTime = fileWatchTimes.get(fileName)\n // If the file is showing up for the first time or the meta.timestamp is changed since last time\n const watchTimeChange =\n watchTime === undefined ||\n (watchTime && watchTime !== meta?.timestamp)\n fileWatchTimes.set(fileName, meta?.timestamp)\n\n if (envFiles.includes(fileName)) {\n if (watchTimeChange) {\n envChange = true\n }\n continue\n }\n\n if (tsconfigPaths.includes(fileName)) {\n if (fileName.endsWith('tsconfig.json')) {\n enabledTypeScript = true\n }\n if (watchTimeChange) {\n tsconfigChange = true\n }\n continue\n }\n\n if (\n meta?.accuracy === undefined ||\n !validFileMatcher.isPageFile(fileName)\n ) {\n continue\n }\n\n const isAppPath = Boolean(\n appDir &&\n normalizePathSep(fileName).startsWith(\n normalizePathSep(appDir) + '/'\n )\n )\n const isPagePath = Boolean(\n pagesDir &&\n normalizePathSep(fileName).startsWith(\n normalizePathSep(pagesDir) + '/'\n )\n )\n\n const rootFile = absolutePathToPage(fileName, {\n dir: dir,\n extensions: nextConfig.pageExtensions,\n keepIndex: false,\n pagesType: PAGE_TYPES.ROOT,\n })\n\n if (isMiddlewareFile(rootFile)) {\n const staticInfo = await getStaticInfoIncludingLayouts({\n pageFilePath: fileName,\n config: nextConfig,\n appDir: appDir,\n page: rootFile,\n isDev: true,\n isInsideAppDir: isAppPath,\n pageExtensions: nextConfig.pageExtensions,\n })\n if (nextConfig.output === 'export') {\n Log.error(\n 'Middleware cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/advanced-features/static-html-export'\n )\n continue\n }\n serverFields.actualMiddlewareFile = rootFile\n await propagateServerField(\n opts,\n 'actualMiddlewareFile',\n serverFields.actualMiddlewareFile\n )\n middlewareMatchers = staticInfo.middleware?.matchers || [\n { regexp: '.*', originalSource: '/:path*' },\n ]\n continue\n }\n if (isInstrumentationHookFile(rootFile)) {\n serverFields.actualInstrumentationHookFile = rootFile\n await propagateServerField(\n opts,\n 'actualInstrumentationHookFile',\n serverFields.actualInstrumentationHookFile\n )\n continue\n }\n\n if (fileName.endsWith('.ts') || fileName.endsWith('.tsx')) {\n enabledTypeScript = true\n }\n\n if (!(isAppPath || isPagePath)) {\n continue\n }\n\n // Collect all current filenames for the TS plugin to use\n devPageFiles.add(fileName)\n\n let pageName = absolutePathToPage(fileName, {\n dir: isAppPath ? appDir! : pagesDir!,\n extensions: nextConfig.pageExtensions,\n keepIndex: isAppPath,\n pagesType: isAppPath ? PAGE_TYPES.APP : PAGE_TYPES.PAGES,\n })\n\n if (\n isAppPath &&\n appDir &&\n isMetadataRouteFile(\n fileName.replace(appDir, ''),\n nextConfig.pageExtensions,\n true\n )\n ) {\n const staticInfo = await getPageStaticInfo({\n pageFilePath: fileName,\n nextConfig: {},\n page: pageName,\n isDev: true,\n pageType: PAGE_TYPES.APP,\n })\n\n pageName = normalizeMetadataPageToRoute(\n pageName,\n !!(staticInfo.generateSitemaps || staticInfo.generateImageMetadata)\n )\n }\n\n if (\n !isAppPath &&\n pageName.startsWith('/api/') &&\n nextConfig.output === 'export'\n ) {\n Log.error(\n 'API Routes cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/advanced-features/static-html-export'\n )\n continue\n }\n\n if (isAppPath) {\n const isRootNotFound = validFileMatcher.isRootNotFound(fileName)\n hasRootAppNotFound = true\n\n if (isRootNotFound) {\n continue\n }\n if (!isRootNotFound && !validFileMatcher.isAppRouterPage(fileName)) {\n continue\n }\n // Ignore files/directories starting with `_` in the app directory\n if (normalizePathSep(pageName).includes('/_')) {\n continue\n }\n\n const originalPageName = pageName\n pageName = normalizeAppPath(pageName).replace(/%5F/g, '_')\n if (!appPaths[pageName]) {\n appPaths[pageName] = []\n }\n appPaths[pageName].push(originalPageName)\n\n if (useFileSystemPublicRoutes) {\n appFiles.add(pageName)\n }\n\n if (routedPages.includes(pageName)) {\n continue\n }\n } else {\n if (useFileSystemPublicRoutes) {\n pageFiles.add(pageName)\n // always add to nextDataRoutes for now but in future only add\n // entries that actually use getStaticProps/getServerSideProps\n opts.fsChecker.nextDataRoutes.add(pageName)\n }\n }\n ;(isAppPath ? appPageFilePaths : pagesPageFilePaths).set(\n pageName,\n fileName\n )\n\n if (appDir && pageNameSet.has(pageName)) {\n conflictingAppPagePaths.add(pageName)\n } else {\n pageNameSet.add(pageName)\n }\n\n /**\n * If there is a middleware that is not declared in the root we will\n * warn without adding it so it doesn't make its way into the system.\n */\n if (/[\\\\\\\\/]_middleware$/.test(pageName)) {\n nestedMiddleware.push(pageName)\n continue\n }\n\n routedPages.push(pageName)\n }\n\n const numConflicting = conflictingAppPagePaths.size\n conflictingPageChange = numConflicting - previousConflictingPagePaths.size\n\n if (conflictingPageChange !== 0) {\n if (numConflicting > 0) {\n let errorMessage = `Conflicting app and page file${\n numConflicting === 1 ? ' was' : 's were'\n } found, please remove the conflicting files to continue:\\n`\n\n for (const p of conflictingAppPagePaths) {\n const appPath = path.relative(dir, appPageFilePaths.get(p)!)\n const pagesPath = path.relative(dir, pagesPageFilePaths.get(p)!)\n errorMessage += ` \"${pagesPath}\" - \"${appPath}\"\\n`\n }\n hotReloader.setHmrServerError(new Error(errorMessage))\n } else if (numConflicting === 0) {\n hotReloader.clearHmrServerError()\n await propagateServerField(opts, 'reloadMatchers', undefined)\n }\n }\n\n previousConflictingPagePaths = conflictingAppPagePaths\n\n let clientRouterFilters: any\n if (nextConfig.experimental.clientRouterFilter) {\n clientRouterFilters = createClientRouterFilter(\n Object.keys(appPaths),\n nextConfig.experimental.clientRouterFilterRedirects\n ? ((nextConfig as any)._originalRedirects || []).filter(\n (r: any) => !r.internal\n )\n : [],\n nextConfig.experimental.clientRouterFilterAllowedRate\n )\n\n if (\n !previousClientRouterFilters ||\n JSON.stringify(previousClientRouterFilters) !==\n JSON.stringify(clientRouterFilters)\n ) {\n envChange = true\n previousClientRouterFilters = clientRouterFilters\n }\n }\n\n if (!usingTypeScript && enabledTypeScript) {\n // we tolerate the error here as this is best effort\n // and the manual install command will be shown\n await verifyTypeScript(opts)\n .then(() => {\n tsconfigChange = true\n })\n .catch(() => {})\n }\n\n if (envChange || tsconfigChange) {\n if (envChange) {\n const { loadedEnvFiles } = loadEnvConfig(\n dir,\n process.env.NODE_ENV === 'development',\n Log,\n true,\n (envFilePath) => {\n Log.info(`Reload env: ${envFilePath}`)\n }\n )\n\n if (usingTypeScript && nextConfig.experimental?.typedEnv) {\n // do not await, this is not essential for further process\n createEnvDefinitions({\n distDir,\n loadedEnvFiles: [\n ...loadedEnvFiles,\n {\n path: nextConfig.configFileName,\n env: nextConfig.env,\n contents: '',\n },\n ],\n })\n }\n\n await propagateServerField(opts, 'loadEnvConfig', [\n { dev: true, forceReload: true, silent: true },\n ])\n }\n let tsconfigResult:\n | UnwrapPromise<ReturnType<typeof loadJsConfig>>\n | undefined\n\n if (tsconfigChange) {\n try {\n tsconfigResult = await loadJsConfig(dir, nextConfig)\n } catch (_) {\n /* do we want to log if there are syntax errors in tsconfig while editing? */\n }\n }\n\n if (hotReloader.turbopackProject) {\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n await hotReloader.turbopackProject.update({\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters,\n config: nextConfig,\n dev: true,\n distDir,\n fetchCacheKeyPrefix:\n opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // TODO: Implement\n middlewareMatchers: undefined,\n }),\n })\n }\n\n hotReloader.activeWebpackConfigs?.forEach((config, idx) => {\n const isClient = idx === 0\n const isNodeServer = idx === 1\n const isEdgeServer = idx === 2\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n if (tsconfigChange) {\n config.resolve?.plugins?.forEach((plugin: any) => {\n // look for the JsConfigPathsPlugin and update with\n // the latest paths/baseUrl config\n if (plugin instanceof JsConfigPathsPlugin && tsconfigResult) {\n const { resolvedBaseUrl, jsConfig } = tsconfigResult\n const currentResolvedBaseUrl = plugin.resolvedBaseUrl\n const resolvedUrlIndex = config.resolve?.modules?.findIndex(\n (item) => item === currentResolvedBaseUrl?.baseUrl\n )\n\n if (resolvedBaseUrl) {\n if (\n resolvedBaseUrl.baseUrl !== currentResolvedBaseUrl?.baseUrl\n ) {\n // remove old baseUrl and add new one\n if (resolvedUrlIndex && resolvedUrlIndex > -1) {\n config.resolve?.modules?.splice(resolvedUrlIndex, 1)\n }\n\n // If the resolvedBaseUrl is implicit we only remove the previous value.\n // Only add the baseUrl if it's explicitly set in tsconfig/jsconfig\n if (!resolvedBaseUrl.isImplicit) {\n config.resolve?.modules?.push(resolvedBaseUrl.baseUrl)\n }\n }\n }\n\n if (jsConfig?.compilerOptions?.paths && resolvedBaseUrl) {\n Object.keys(plugin.paths).forEach((key) => {\n delete plugin.paths[key]\n })\n Object.assign(plugin.paths, jsConfig.compilerOptions.paths)\n plugin.resolvedBaseUrl = resolvedBaseUrl\n }\n }\n })\n }\n\n if (envChange) {\n config.plugins?.forEach((plugin: any) => {\n // we look for the DefinePlugin definitions so we can\n // update them on the active compilers\n if (\n plugin &&\n typeof plugin.definitions === 'object' &&\n plugin.definitions.__NEXT_DEFINE_ENV\n ) {\n const newDefine = getDefineEnv({\n isTurbopack: false,\n clientRouterFilters,\n config: nextConfig,\n dev: true,\n distDir,\n fetchCacheKeyPrefix:\n opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeOrEdgeCompilation: isNodeServer || isEdgeServer,\n isNodeServer,\n middlewareMatchers: undefined,\n })\n\n Object.keys(plugin.definitions).forEach((key) => {\n if (!(key in newDefine)) {\n delete plugin.definitions[key]\n }\n })\n Object.assign(plugin.definitions, newDefine)\n }\n })\n }\n })\n await hotReloader.invalidate({\n reloadAfterInvalidation: envChange,\n })\n }\n\n if (nestedMiddleware.length > 0) {\n Log.error(\n new NestedMiddlewareError(\n nestedMiddleware,\n dir,\n (pagesDir || appDir)!\n ).message\n )\n nestedMiddleware = []\n }\n\n // Make sure to sort parallel routes to make the result deterministic.\n serverFields.appPathRoutes = Object.fromEntries(\n Object.entries(appPaths).map(([k, v]) => [k, v.sort()])\n )\n await propagateServerField(\n opts,\n 'appPathRoutes',\n serverFields.appPathRoutes\n )\n\n // TODO: pass this to fsChecker/next-dev-server?\n serverFields.middleware = middlewareMatchers\n ? {\n match: null as any,\n page: '/',\n matchers: middlewareMatchers,\n }\n : undefined\n\n await propagateServerField(opts, 'middleware', serverFields.middleware)\n serverFields.hasAppNotFound = hasRootAppNotFound\n\n opts.fsChecker.middlewareMatcher = serverFields.middleware?.matchers\n ? getMiddlewareRouteMatcher(serverFields.middleware?.matchers)\n : undefined\n\n const interceptionRoutes = generateInterceptionRoutesRewrites(\n Object.keys(appPaths),\n opts.nextConfig.basePath\n ).map((item) =>\n buildCustomRoute(\n 'before_files_rewrite',\n item,\n opts.nextConfig.basePath,\n opts.nextConfig.experimental.caseSensitiveRoutes\n )\n )\n\n opts.fsChecker.rewrites.beforeFiles.push(...interceptionRoutes)\n\n const exportPathMap =\n (typeof nextConfig.exportPathMap === 'function' &&\n (await nextConfig.exportPathMap?.(\n {},\n {\n dev: true,\n dir: opts.dir,\n outDir: null,\n distDir: distDir,\n buildId: 'development',\n }\n ))) ||\n {}\n\n const exportPathMapEntries = Object.entries(exportPathMap || {})\n\n if (exportPathMapEntries.length > 0) {\n opts.fsChecker.exportPathMapRoutes = exportPathMapEntries.map(\n ([key, value]) =>\n buildCustomRoute(\n 'before_files_rewrite',\n {\n source: key,\n destination: `${value.page}${\n value.query ? '?' : ''\n }${qs.stringify(value.query)}`,\n },\n opts.nextConfig.basePath,\n opts.nextConfig.experimental.caseSensitiveRoutes\n )\n )\n }\n\n try {\n // we serve a separate manifest with all pages for the client in\n // dev mode so that we can match a page after a rewrite on the client\n // before it has been built and is populated in the _buildManifest\n const sortedRoutes = getSortedRoutes(routedPages)\n\n opts.fsChecker.dynamicRoutes = sortedRoutes.map(\n (page): FilesystemDynamicRoute => {\n const regex = getRouteRegex(page)\n return {\n regex: regex.re.toString(),\n match: getRouteMatcher(regex),\n page,\n }\n }\n )\n\n const dataRoutes: typeof opts.fsChecker.dynamicRoutes = []\n\n for (const page of sortedRoutes) {\n const route = buildDataRoute(page, 'development')\n const routeRegex = getRouteRegex(route.page)\n dataRoutes.push({\n ...route,\n regex: routeRegex.re.toString(),\n match: getRouteMatcher({\n // TODO: fix this in the manifest itself, must also be fixed in\n // upstream builder that relies on this\n re: opts.nextConfig.i18n\n ? new RegExp(\n route.dataRouteRegex.replace(\n `/development/`,\n `/development/(?<nextLocale>[^/]+?)/`\n )\n )\n : new RegExp(route.dataRouteRegex),\n groups: routeRegex.groups,\n }),\n })\n }\n opts.fsChecker.dynamicRoutes.unshift(...dataRoutes)\n\n if (!prevSortedRoutes?.every((val, idx) => val === sortedRoutes[idx])) {\n const addedRoutes = sortedRoutes.filter(\n (route) => !prevSortedRoutes.includes(route)\n )\n const removedRoutes = prevSortedRoutes.filter(\n (route) => !sortedRoutes.includes(route)\n )\n\n // emit the change so clients fetch the update\n hotReloader.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE,\n data: [\n {\n devPagesManifest: true,\n },\n ],\n })\n\n addedRoutes.forEach((route) => {\n hotReloader.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.ADDED_PAGE,\n data: [route],\n })\n })\n\n removedRoutes.forEach((route) => {\n hotReloader.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.REMOVED_PAGE,\n data: [route],\n })\n })\n }\n prevSortedRoutes = sortedRoutes\n\n if (!resolved) {\n resolve()\n resolved = true\n }\n } catch (e) {\n if (!resolved) {\n reject(e)\n resolved = true\n } else {\n Log.warn('Failed to reload dynamic routes:', e)\n }\n } finally {\n // Reload the matchers. The filesystem would have been written to,\n // and the matchers need to re-scan it to update the router.\n await propagateServerField(opts, 'reloadMatchers', undefined)\n }\n })\n\n wp.watch({ directories: [dir], startTime: 0 })\n })\n\n const clientPagesManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${DEV_CLIENT_PAGES_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(clientPagesManifestPath)\n\n const devMiddlewareManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${DEV_CLIENT_MIDDLEWARE_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(devMiddlewareManifestPath)\n\n const devTurbopackMiddlewareManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(devTurbopackMiddlewareManifestPath)\n\n async function requestHandler(req: IncomingMessage, res: ServerResponse) {\n const parsedUrl = url.parse(req.url || '/')\n\n if (parsedUrl.pathname?.includes(clientPagesManifestPath)) {\n res.statusCode = 200\n res.setHeader('Content-Type', 'application/json; charset=utf-8')\n res.end(\n JSON.stringify({\n pages: prevSortedRoutes.filter(\n (route) => !opts.fsChecker.appFiles.has(route)\n ),\n })\n )\n return { finished: true }\n }\n\n if (\n parsedUrl.pathname?.includes(devMiddlewareManifestPath) ||\n parsedUrl.pathname?.includes(devTurbopackMiddlewareManifestPath)\n ) {\n res.statusCode = 200\n res.setHeader('Content-Type', 'application/json; charset=utf-8')\n res.end(JSON.stringify(serverFields.middleware?.matchers || []))\n return { finished: true }\n }\n return { finished: false }\n }\n\n function logErrorWithOriginalStack(\n err: unknown,\n type?: 'unhandledRejection' | 'uncaughtException' | 'warning' | 'app-dir'\n ) {\n if (err instanceof ModuleBuildError) {\n // Errors that may come from issues from the user's code\n Log.error(err.message)\n } else if (err instanceof TurbopackInternalError) {\n // An internal Turbopack error that has been handled by next-swc, written\n // to disk and a simplified message shown to user on the Rust side.\n } else if (type === 'warning') {\n Log.warn(err)\n } else if (type === 'app-dir') {\n Log.error(err)\n } else if (type) {\n Log.error(`${type}:`, err)\n } else {\n Log.error(err)\n }\n }\n\n return {\n serverFields,\n hotReloader,\n requestHandler,\n logErrorWithOriginalStack,\n\n async ensureMiddleware(requestUrl?: string) {\n if (!serverFields.actualMiddlewareFile) return\n return hotReloader.ensurePage({\n page: serverFields.actualMiddlewareFile,\n clientOnly: false,\n definition: undefined,\n url: requestUrl,\n })\n },\n }\n}\n\nexport async function setupDevBundler(opts: SetupOpts) {\n const isSrcDir = path\n .relative(opts.dir, opts.pagesDir || opts.appDir || '')\n .startsWith('src')\n\n const result = await startWatcher(opts)\n\n opts.telemetry.record(\n eventCliSession(\n path.join(opts.dir, opts.nextConfig.distDir),\n opts.nextConfig,\n {\n webpackVersion: 5,\n isSrcDir,\n turboFlag: !!opts.turbo,\n cliCommand: 'dev',\n appDir: !!opts.appDir,\n pagesDir: !!opts.pagesDir,\n isCustomServer: !!opts.isCustomServer,\n hasNowJson: !!(await findUp('now.json', { cwd: opts.dir })),\n }\n )\n )\n\n // Track build features for dev server here:\n opts.telemetry.record({\n eventName: EVENT_BUILD_FEATURE_USAGE,\n payload: {\n featureName: 'turbopackPersistentCaching',\n invocationCount: isPersistentCachingEnabled(opts.nextConfig) ? 1 : 0,\n },\n })\n\n return result\n}\n\nexport type DevBundler = Awaited<ReturnType<typeof setupDevBundler>>\n\n// Returns a trace rewritten through Turbopack's sourcemaps\n"],"names":["getPageStaticInfo","createDefineEnv","fs","mkdir","url","path","qs","Watchpack","loadEnvConfig","findUp","buildCustomRoute","Log","HotReloaderWebpack","setGlobal","loadJsConfig","createValidFileMatcher","EVENT_BUILD_FEATURE_USAGE","eventCliSession","getSortedRoutes","getStaticInfoIncludingLayouts","sortByPageExts","verifyTypeScriptSetup","verifyPartytownSetup","getRouteRegex","normalizeAppPath","buildDataRoute","getRouteMatcher","normalizePathSep","createClientRouterFilter","absolutePathToPage","generateInterceptionRoutesRewrites","CLIENT_STATIC_FILES_PATH","DEV_CLIENT_PAGES_MANIFEST","DEV_CLIENT_MIDDLEWARE_MANIFEST","PHASE_DEVELOPMENT_SERVER","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","ROUTES_MANIFEST","PRERENDER_MANIFEST","getMiddlewareRouteMatcher","isMiddlewareFile","NestedMiddlewareError","isInstrumentationHookFile","getPossibleMiddlewareFilenames","getPossibleInstrumentationHookFilenames","devPageFiles","HMR_ACTIONS_SENT_TO_BROWSER","PAGE_TYPES","createHotReloaderTurbopack","generateEncryptionKeyBase64","isMetadataRouteFile","normalizeMetadataPageToRoute","createEnvDefinitions","JsConfigPathsPlugin","store","consoleStore","isPersistentCachingEnabled","ModuleBuildError","TurbopackInternalError","getDefineEnv","verifyTypeScript","opts","usingTypeScript","verifyResult","dir","distDir","nextConfig","intentDirs","pagesDir","appDir","filter","Boolean","typeCheckPreflight","tsconfigPath","typescript","disableStaticImages","images","hasAppDir","hasPagesDir","version","propagateServerField","field","args","renderServer","instance","startWatcher","resetFetch","useFileSystemPublicRoutes","join","distTypesDir","existsSync","recursive","validFileMatcher","pageExtensions","serverFields","setState","logging","hotReloader","turbo","config","buildId","encryptionKey","isBuild","telemetry","rewrites","fsChecker","previewProps","prerenderManifest","preview","start","routesManifestPath","routesManifest","caseSensitive","experimental","caseSensitiveRoutes","basePath","redirects","headers","i18n","undefined","skipMiddlewareUrlNormalize","promises","writeFile","JSON","stringify","prerenderManifestPath","nextScriptWorkers","ensureCallback","ensure","item","type","ensurePage","clientOnly","page","itemPath","isApp","definition","resolved","prevSortedRoutes","Promise","resolve","reject","readdir","_","files","length","pages","app","directories","rootDir","nestedMiddleware","envFiles","map","file","push","tsconfigPaths","wp","ignored","pathname","some","startsWith","d","fileWatchTimes","Map","enabledTypeScript","previousClientRouterFilters","previousConflictingPagePaths","Set","on","middlewareMatchers","routedPages","knownFiles","getTimeInfoEntries","appPaths","pageNameSet","conflictingAppPagePaths","appPageFilePaths","pagesPageFilePaths","envChange","tsconfigChange","conflictingPageChange","hasRootAppNotFound","appFiles","pageFiles","clear","sortedKnownFiles","keys","sort","fileName","includes","meta","get","watchTime","watchTimeChange","timestamp","set","endsWith","accuracy","isPageFile","isAppPath","isPagePath","rootFile","extensions","keepIndex","pagesType","ROOT","staticInfo","pageFilePath","isDev","isInsideAppDir","output","error","actualMiddlewareFile","middleware","matchers","regexp","originalSource","actualInstrumentationHookFile","add","pageName","APP","PAGES","replace","pageType","generateSitemaps","generateImageMetadata","isRootNotFound","isAppRouterPage","originalPageName","nextDataRoutes","has","test","numConflicting","size","errorMessage","p","appPath","relative","pagesPath","setHmrServerError","Error","clearHmrServerError","clientRouterFilters","clientRouterFilter","Object","clientRouterFilterRedirects","_originalRedirects","r","internal","clientRouterFilterAllowedRate","then","catch","loadedEnvFiles","process","env","NODE_ENV","envFilePath","info","typedEnv","configFileName","contents","dev","forceReload","silent","tsconfigResult","turbopackProject","hasRewrites","afterFiles","beforeFiles","fallback","update","defineEnv","isTurbopack","fetchCacheKeyPrefix","activeWebpackConfigs","forEach","idx","isClient","isNodeServer","isEdgeServer","plugins","plugin","jsConfig","resolvedBaseUrl","currentResolvedBaseUrl","resolvedUrlIndex","modules","findIndex","baseUrl","splice","isImplicit","compilerOptions","paths","key","assign","definitions","__NEXT_DEFINE_ENV","newDefine","isNodeOrEdgeCompilation","invalidate","reloadAfterInvalidation","message","appPathRoutes","fromEntries","entries","k","v","match","hasAppNotFound","middlewareMatcher","interceptionRoutes","exportPathMap","outDir","exportPathMapEntries","exportPathMapRoutes","value","source","destination","query","sortedRoutes","dynamicRoutes","regex","re","toString","dataRoutes","route","routeRegex","RegExp","dataRouteRegex","groups","unshift","every","val","addedRoutes","removedRoutes","send","action","DEV_PAGES_MANIFEST_UPDATE","data","devPagesManifest","ADDED_PAGE","REMOVED_PAGE","e","warn","watch","startTime","clientPagesManifestPath","devVirtualFsItems","devMiddlewareManifestPath","devTurbopackMiddlewareManifestPath","requestHandler","req","res","parsedUrl","parse","statusCode","setHeader","end","finished","logErrorWithOriginalStack","err","ensureMiddleware","requestUrl","setupDevBundler","isSrcDir","result","record","webpackVersion","turboFlag","cliCommand","isCustomServer","hasNowJson","cwd","eventName","payload","featureName","invocationCount"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/server/lib/router-utils/setup-dev-bundler.ts"],"sourcesContent":["import type { NextConfigComplete } from '../../config-shared'\nimport type { FilesystemDynamicRoute } from './filesystem'\nimport type { UnwrapPromise } from '../../../lib/coalesced-function'\nimport {\n getPageStaticInfo,\n type MiddlewareMatcher,\n} from '../../../build/analysis/get-page-static-info'\nimport type { RoutesManifest } from '../../../build'\nimport type { MiddlewareRouteMatch } from '../../../shared/lib/router/utils/middleware-route-matcher'\nimport type { PropagateToWorkersField } from './types'\nimport type { NextJsHotReloaderInterface } from '../../dev/hot-reloader-types'\n\nimport { createDefineEnv } from '../../../build/swc'\nimport fs from 'fs'\nimport { mkdir } from 'fs/promises'\nimport url from 'url'\nimport path from 'path'\nimport qs from 'querystring'\nimport Watchpack from 'next/dist/compiled/watchpack'\nimport { loadEnvConfig } from '@next/env'\nimport findUp from 'next/dist/compiled/find-up'\nimport { buildCustomRoute } from './filesystem'\nimport * as Log from '../../../build/output/log'\nimport HotReloaderWebpack from '../../dev/hot-reloader-webpack'\nimport { setGlobal } from '../../../trace/shared'\nimport type { Telemetry } from '../../../telemetry/storage'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport loadJsConfig from '../../../build/load-jsconfig'\nimport { createValidFileMatcher } from '../find-page-file'\nimport {\n EVENT_BUILD_FEATURE_USAGE,\n eventCliSession,\n} from '../../../telemetry/events'\nimport { getSortedRoutes } from '../../../shared/lib/router/utils'\nimport {\n getStaticInfoIncludingLayouts,\n sortByPageExts,\n} from '../../../build/entries'\nimport { verifyTypeScriptSetup } from '../../../lib/verify-typescript-setup'\nimport { verifyPartytownSetup } from '../../../lib/verify-partytown-setup'\nimport { getRouteRegex } from '../../../shared/lib/router/utils/route-regex'\nimport { normalizeAppPath } from '../../../shared/lib/router/utils/app-paths'\nimport { buildDataRoute } from './build-data-route'\nimport { getRouteMatcher } from '../../../shared/lib/router/utils/route-matcher'\nimport { normalizePathSep } from '../../../shared/lib/page-path/normalize-path-sep'\nimport { createClientRouterFilter } from '../../../lib/create-client-router-filter'\nimport { absolutePathToPage } from '../../../shared/lib/page-path/absolute-path-to-page'\nimport { generateInterceptionRoutesRewrites } from '../../../lib/generate-interception-routes-rewrites'\n\nimport {\n CLIENT_STATIC_FILES_PATH,\n DEV_CLIENT_PAGES_MANIFEST,\n DEV_CLIENT_MIDDLEWARE_MANIFEST,\n PHASE_DEVELOPMENT_SERVER,\n TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST,\n ROUTES_MANIFEST,\n PRERENDER_MANIFEST,\n} from '../../../shared/lib/constants'\n\nimport { getMiddlewareRouteMatcher } from '../../../shared/lib/router/utils/middleware-route-matcher'\n\nimport {\n isMiddlewareFile,\n NestedMiddlewareError,\n isInstrumentationHookFile,\n getPossibleMiddlewareFilenames,\n getPossibleInstrumentationHookFilenames,\n} from '../../../build/utils'\nimport { devPageFiles } from '../../../build/webpack/plugins/next-types-plugin/shared'\nimport type { LazyRenderServerInstance } from '../router-server'\nimport { HMR_ACTIONS_SENT_TO_BROWSER } from '../../dev/hot-reloader-types'\nimport { PAGE_TYPES } from '../../../lib/page-types'\nimport { createHotReloaderTurbopack } from '../../dev/hot-reloader-turbopack'\nimport { generateEncryptionKeyBase64 } from '../../app-render/encryption-utils-server'\nimport { isMetadataRouteFile } from '../../../lib/metadata/is-metadata-route'\nimport { normalizeMetadataPageToRoute } from '../../../lib/metadata/get-metadata-route'\nimport { createEnvDefinitions } from '../experimental/create-env-definitions'\nimport { JsConfigPathsPlugin } from '../../../build/webpack/plugins/jsconfig-paths-plugin'\nimport { store as consoleStore } from '../../../build/output/store'\nimport {\n isPersistentCachingEnabled,\n ModuleBuildError,\n TurbopackInternalError,\n} from '../../../shared/lib/turbopack/utils'\nimport { getDefineEnv } from '../../../build/define-env'\n\nexport type SetupOpts = {\n renderServer: LazyRenderServerInstance\n dir: string\n turbo?: boolean\n appDir?: string\n pagesDir?: string\n telemetry: Telemetry\n isCustomServer?: boolean\n fsChecker: UnwrapPromise<\n ReturnType<typeof import('./filesystem').setupFsCheck>\n >\n nextConfig: NextConfigComplete\n port: number\n onDevServerCleanup: ((listener: () => Promise<void>) => void) | undefined\n resetFetch: () => void\n}\n\nexport interface DevRoutesManifest {\n version: number\n caseSensitive: RoutesManifest['caseSensitive']\n basePath: RoutesManifest['basePath']\n rewrites: RoutesManifest['rewrites']\n redirects: RoutesManifest['redirects']\n headers: RoutesManifest['headers']\n i18n: RoutesManifest['i18n']\n skipMiddlewareUrlNormalize: RoutesManifest['skipMiddlewareUrlNormalize']\n}\n\nexport type ServerFields = {\n actualMiddlewareFile?: string | undefined\n actualInstrumentationHookFile?: string | undefined\n appPathRoutes?: Record<string, string | string[]>\n middleware?:\n | {\n page: string\n match: MiddlewareRouteMatch\n matchers?: MiddlewareMatcher[]\n }\n | undefined\n hasAppNotFound?: boolean\n interceptionRoutes?: ReturnType<\n typeof import('./filesystem').buildCustomRoute\n >[]\n setIsrStatus?: (key: string, value: boolean) => void\n resetFetch?: () => void\n}\n\nasync function verifyTypeScript(opts: SetupOpts) {\n let usingTypeScript = false\n const verifyResult = await verifyTypeScriptSetup({\n dir: opts.dir,\n distDir: opts.nextConfig.distDir,\n intentDirs: [opts.pagesDir, opts.appDir].filter(Boolean) as string[],\n typeCheckPreflight: false,\n tsconfigPath: opts.nextConfig.typescript.tsconfigPath,\n disableStaticImages: opts.nextConfig.images.disableStaticImages,\n hasAppDir: !!opts.appDir,\n hasPagesDir: !!opts.pagesDir,\n })\n\n if (verifyResult.version) {\n usingTypeScript = true\n }\n return usingTypeScript\n}\n\nexport async function propagateServerField(\n opts: SetupOpts,\n field: PropagateToWorkersField,\n args: any\n) {\n await opts.renderServer?.instance?.propagateServerField(opts.dir, field, args)\n}\n\nasync function startWatcher(opts: SetupOpts) {\n const { nextConfig, appDir, pagesDir, dir, resetFetch } = opts\n const { useFileSystemPublicRoutes } = nextConfig\n const usingTypeScript = await verifyTypeScript(opts)\n\n const distDir = path.join(opts.dir, opts.nextConfig.distDir)\n\n // we ensure the types directory exists here\n if (usingTypeScript) {\n const distTypesDir = path.join(distDir, 'types')\n if (!fs.existsSync(distTypesDir)) {\n await mkdir(distTypesDir, { recursive: true })\n }\n }\n\n setGlobal('distDir', distDir)\n setGlobal('phase', PHASE_DEVELOPMENT_SERVER)\n\n const validFileMatcher = createValidFileMatcher(\n nextConfig.pageExtensions,\n appDir\n )\n\n const serverFields: ServerFields = {}\n\n // Update logging state once based on next.config.js when initializing\n consoleStore.setState({\n logging: nextConfig.logging !== false,\n })\n\n const hotReloader: NextJsHotReloaderInterface = opts.turbo\n ? await createHotReloaderTurbopack(opts, serverFields, distDir, resetFetch)\n : new HotReloaderWebpack(opts.dir, {\n appDir,\n pagesDir,\n distDir,\n config: opts.nextConfig,\n buildId: 'development',\n encryptionKey: await generateEncryptionKeyBase64({\n isBuild: false,\n distDir,\n }),\n telemetry: opts.telemetry,\n rewrites: opts.fsChecker.rewrites,\n previewProps: opts.fsChecker.prerenderManifest.preview,\n resetFetch,\n })\n\n await hotReloader.start()\n\n // have to write this after starting hot-reloader since that\n // cleans the dist dir\n const routesManifestPath = path.join(distDir, ROUTES_MANIFEST)\n const routesManifest: DevRoutesManifest = {\n version: 3,\n caseSensitive: !!nextConfig.experimental.caseSensitiveRoutes,\n basePath: nextConfig.basePath,\n rewrites: opts.fsChecker.rewrites,\n redirects: opts.fsChecker.redirects,\n headers: opts.fsChecker.headers,\n i18n: nextConfig.i18n || undefined,\n skipMiddlewareUrlNormalize: nextConfig.skipMiddlewareUrlNormalize,\n }\n await fs.promises.writeFile(\n routesManifestPath,\n JSON.stringify(routesManifest)\n )\n\n const prerenderManifestPath = path.join(distDir, PRERENDER_MANIFEST)\n await fs.promises.writeFile(\n prerenderManifestPath,\n JSON.stringify(opts.fsChecker.prerenderManifest, null, 2)\n )\n\n if (opts.nextConfig.experimental.nextScriptWorkers) {\n await verifyPartytownSetup(\n opts.dir,\n path.join(distDir, CLIENT_STATIC_FILES_PATH)\n )\n }\n\n opts.fsChecker.ensureCallback(async function ensure(item) {\n if (item.type === 'appFile' || item.type === 'pageFile') {\n await hotReloader.ensurePage({\n clientOnly: false,\n page: item.itemPath,\n isApp: item.type === 'appFile',\n definition: undefined,\n })\n }\n })\n\n let resolved = false\n let prevSortedRoutes: string[] = []\n\n await new Promise<void>(async (resolve, reject) => {\n if (pagesDir) {\n // Watchpack doesn't emit an event for an empty directory\n fs.readdir(pagesDir, (_, files) => {\n if (files?.length) {\n return\n }\n\n if (!resolved) {\n resolve()\n resolved = true\n }\n })\n }\n\n const pages = pagesDir ? [pagesDir] : []\n const app = appDir ? [appDir] : []\n const directories = [...pages, ...app]\n\n const rootDir = pagesDir || appDir\n const files = [\n ...getPossibleMiddlewareFilenames(\n path.join(rootDir!, '..'),\n nextConfig.pageExtensions\n ),\n ...getPossibleInstrumentationHookFilenames(\n path.join(rootDir!, '..'),\n nextConfig.pageExtensions\n ),\n ]\n let nestedMiddleware: string[] = []\n\n const envFiles = [\n '.env.development.local',\n '.env.local',\n '.env.development',\n '.env',\n ].map((file) => path.join(dir, file))\n\n files.push(...envFiles)\n\n // tsconfig/jsconfig paths hot-reloading\n const tsconfigPaths = [\n path.join(dir, 'tsconfig.json'),\n path.join(dir, 'jsconfig.json'),\n ] as const\n files.push(...tsconfigPaths)\n\n const wp = new Watchpack({\n ignored: (pathname: string) => {\n return (\n !files.some((file) => file.startsWith(pathname)) &&\n !directories.some(\n (d) => pathname.startsWith(d) || d.startsWith(pathname)\n )\n )\n },\n })\n const fileWatchTimes = new Map()\n let enabledTypeScript = usingTypeScript\n let previousClientRouterFilters: any\n let previousConflictingPagePaths: Set<string> = new Set()\n\n wp.on('aggregated', async () => {\n let middlewareMatchers: MiddlewareMatcher[] | undefined\n const routedPages: string[] = []\n const knownFiles = wp.getTimeInfoEntries()\n const appPaths: Record<string, string[]> = {}\n const pageNameSet = new Set<string>()\n const conflictingAppPagePaths = new Set<string>()\n const appPageFilePaths = new Map<string, string>()\n const pagesPageFilePaths = new Map<string, string>()\n\n let envChange = false\n let tsconfigChange = false\n let conflictingPageChange = 0\n let hasRootAppNotFound = false\n\n const { appFiles, pageFiles } = opts.fsChecker\n\n appFiles.clear()\n pageFiles.clear()\n devPageFiles.clear()\n\n const sortedKnownFiles: string[] = [...knownFiles.keys()].sort(\n sortByPageExts(nextConfig.pageExtensions)\n )\n\n for (const fileName of sortedKnownFiles) {\n if (\n !files.includes(fileName) &&\n !directories.some((d) => fileName.startsWith(d))\n ) {\n continue\n }\n const meta = knownFiles.get(fileName)\n\n const watchTime = fileWatchTimes.get(fileName)\n // If the file is showing up for the first time or the meta.timestamp is changed since last time\n const watchTimeChange =\n watchTime === undefined ||\n (watchTime && watchTime !== meta?.timestamp)\n fileWatchTimes.set(fileName, meta?.timestamp)\n\n if (envFiles.includes(fileName)) {\n if (watchTimeChange) {\n envChange = true\n }\n continue\n }\n\n if (tsconfigPaths.includes(fileName)) {\n if (fileName.endsWith('tsconfig.json')) {\n enabledTypeScript = true\n }\n if (watchTimeChange) {\n tsconfigChange = true\n }\n continue\n }\n\n if (\n meta?.accuracy === undefined ||\n !validFileMatcher.isPageFile(fileName)\n ) {\n continue\n }\n\n const isAppPath = Boolean(\n appDir &&\n normalizePathSep(fileName).startsWith(\n normalizePathSep(appDir) + '/'\n )\n )\n const isPagePath = Boolean(\n pagesDir &&\n normalizePathSep(fileName).startsWith(\n normalizePathSep(pagesDir) + '/'\n )\n )\n\n const rootFile = absolutePathToPage(fileName, {\n dir: dir,\n extensions: nextConfig.pageExtensions,\n keepIndex: false,\n pagesType: PAGE_TYPES.ROOT,\n })\n\n if (isMiddlewareFile(rootFile)) {\n const staticInfo = await getStaticInfoIncludingLayouts({\n pageFilePath: fileName,\n config: nextConfig,\n appDir: appDir,\n page: rootFile,\n isDev: true,\n isInsideAppDir: isAppPath,\n pageExtensions: nextConfig.pageExtensions,\n })\n if (nextConfig.output === 'export') {\n Log.error(\n 'Middleware cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/advanced-features/static-html-export'\n )\n continue\n }\n serverFields.actualMiddlewareFile = rootFile\n await propagateServerField(\n opts,\n 'actualMiddlewareFile',\n serverFields.actualMiddlewareFile\n )\n middlewareMatchers = staticInfo.middleware?.matchers || [\n { regexp: '.*', originalSource: '/:path*' },\n ]\n continue\n }\n if (isInstrumentationHookFile(rootFile)) {\n serverFields.actualInstrumentationHookFile = rootFile\n await propagateServerField(\n opts,\n 'actualInstrumentationHookFile',\n serverFields.actualInstrumentationHookFile\n )\n continue\n }\n\n if (fileName.endsWith('.ts') || fileName.endsWith('.tsx')) {\n enabledTypeScript = true\n }\n\n if (!(isAppPath || isPagePath)) {\n continue\n }\n\n // Collect all current filenames for the TS plugin to use\n devPageFiles.add(fileName)\n\n let pageName = absolutePathToPage(fileName, {\n dir: isAppPath ? appDir! : pagesDir!,\n extensions: nextConfig.pageExtensions,\n keepIndex: isAppPath,\n pagesType: isAppPath ? PAGE_TYPES.APP : PAGE_TYPES.PAGES,\n })\n\n if (\n isAppPath &&\n appDir &&\n isMetadataRouteFile(\n fileName.replace(appDir, ''),\n nextConfig.pageExtensions,\n true\n )\n ) {\n const staticInfo = await getPageStaticInfo({\n pageFilePath: fileName,\n nextConfig: {},\n page: pageName,\n isDev: true,\n pageType: PAGE_TYPES.APP,\n })\n\n pageName = normalizeMetadataPageToRoute(\n pageName,\n !!(staticInfo.generateSitemaps || staticInfo.generateImageMetadata)\n )\n }\n\n if (\n !isAppPath &&\n pageName.startsWith('/api/') &&\n nextConfig.output === 'export'\n ) {\n Log.error(\n 'API Routes cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/advanced-features/static-html-export'\n )\n continue\n }\n\n if (isAppPath) {\n const isRootNotFound = validFileMatcher.isRootNotFound(fileName)\n hasRootAppNotFound = true\n\n if (isRootNotFound) {\n continue\n }\n if (!isRootNotFound && !validFileMatcher.isAppRouterPage(fileName)) {\n continue\n }\n // Ignore files/directories starting with `_` in the app directory\n if (normalizePathSep(pageName).includes('/_')) {\n continue\n }\n\n const originalPageName = pageName\n pageName = normalizeAppPath(pageName).replace(/%5F/g, '_')\n if (!appPaths[pageName]) {\n appPaths[pageName] = []\n }\n appPaths[pageName].push(originalPageName)\n\n if (useFileSystemPublicRoutes) {\n appFiles.add(pageName)\n }\n\n if (routedPages.includes(pageName)) {\n continue\n }\n } else {\n if (useFileSystemPublicRoutes) {\n pageFiles.add(pageName)\n // always add to nextDataRoutes for now but in future only add\n // entries that actually use getStaticProps/getServerSideProps\n opts.fsChecker.nextDataRoutes.add(pageName)\n }\n }\n ;(isAppPath ? appPageFilePaths : pagesPageFilePaths).set(\n pageName,\n fileName\n )\n\n if (appDir && pageNameSet.has(pageName)) {\n conflictingAppPagePaths.add(pageName)\n } else {\n pageNameSet.add(pageName)\n }\n\n /**\n * If there is a middleware that is not declared in the root we will\n * warn without adding it so it doesn't make its way into the system.\n */\n if (/[\\\\\\\\/]_middleware$/.test(pageName)) {\n nestedMiddleware.push(pageName)\n continue\n }\n\n routedPages.push(pageName)\n }\n\n const numConflicting = conflictingAppPagePaths.size\n conflictingPageChange = numConflicting - previousConflictingPagePaths.size\n\n if (conflictingPageChange !== 0) {\n if (numConflicting > 0) {\n let errorMessage = `Conflicting app and page file${\n numConflicting === 1 ? ' was' : 's were'\n } found, please remove the conflicting files to continue:\\n`\n\n for (const p of conflictingAppPagePaths) {\n const appPath = path.relative(dir, appPageFilePaths.get(p)!)\n const pagesPath = path.relative(dir, pagesPageFilePaths.get(p)!)\n errorMessage += ` \"${pagesPath}\" - \"${appPath}\"\\n`\n }\n hotReloader.setHmrServerError(new Error(errorMessage))\n } else if (numConflicting === 0) {\n hotReloader.clearHmrServerError()\n await propagateServerField(opts, 'reloadMatchers', undefined)\n }\n }\n\n previousConflictingPagePaths = conflictingAppPagePaths\n\n let clientRouterFilters: any\n if (nextConfig.experimental.clientRouterFilter) {\n clientRouterFilters = createClientRouterFilter(\n Object.keys(appPaths),\n nextConfig.experimental.clientRouterFilterRedirects\n ? ((nextConfig as any)._originalRedirects || []).filter(\n (r: any) => !r.internal\n )\n : [],\n nextConfig.experimental.clientRouterFilterAllowedRate\n )\n\n if (\n !previousClientRouterFilters ||\n JSON.stringify(previousClientRouterFilters) !==\n JSON.stringify(clientRouterFilters)\n ) {\n envChange = true\n previousClientRouterFilters = clientRouterFilters\n }\n }\n\n if (!usingTypeScript && enabledTypeScript) {\n // we tolerate the error here as this is best effort\n // and the manual install command will be shown\n await verifyTypeScript(opts)\n .then(() => {\n tsconfigChange = true\n })\n .catch(() => {})\n }\n\n if (envChange || tsconfigChange) {\n if (envChange) {\n const { loadedEnvFiles } = loadEnvConfig(\n dir,\n process.env.NODE_ENV === 'development',\n Log,\n true,\n (envFilePath) => {\n Log.info(`Reload env: ${envFilePath}`)\n }\n )\n\n if (usingTypeScript && nextConfig.experimental?.typedEnv) {\n // do not await, this is not essential for further process\n createEnvDefinitions({\n distDir,\n loadedEnvFiles: [\n ...loadedEnvFiles,\n {\n path: nextConfig.configFileName,\n env: nextConfig.env,\n contents: '',\n },\n ],\n })\n }\n\n await propagateServerField(opts, 'loadEnvConfig', [\n { dev: true, forceReload: true, silent: true },\n ])\n }\n let tsconfigResult:\n | UnwrapPromise<ReturnType<typeof loadJsConfig>>\n | undefined\n\n if (tsconfigChange) {\n try {\n tsconfigResult = await loadJsConfig(dir, nextConfig)\n } catch (_) {\n /* do we want to log if there are syntax errors in tsconfig while editing? */\n }\n }\n\n if (hotReloader.turbopackProject) {\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n await hotReloader.turbopackProject.update({\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters,\n config: nextConfig,\n dev: true,\n distDir,\n fetchCacheKeyPrefix:\n opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // TODO: Implement\n middlewareMatchers: undefined,\n }),\n })\n }\n\n hotReloader.activeWebpackConfigs?.forEach((config, idx) => {\n const isClient = idx === 0\n const isNodeServer = idx === 1\n const isEdgeServer = idx === 2\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n if (tsconfigChange) {\n config.resolve?.plugins?.forEach((plugin: any) => {\n // look for the JsConfigPathsPlugin and update with\n // the latest paths/baseUrl config\n if (plugin instanceof JsConfigPathsPlugin && tsconfigResult) {\n const { resolvedBaseUrl, jsConfig } = tsconfigResult\n const currentResolvedBaseUrl = plugin.resolvedBaseUrl\n const resolvedUrlIndex = config.resolve?.modules?.findIndex(\n (item) => item === currentResolvedBaseUrl?.baseUrl\n )\n\n if (resolvedBaseUrl) {\n if (\n resolvedBaseUrl.baseUrl !== currentResolvedBaseUrl?.baseUrl\n ) {\n // remove old baseUrl and add new one\n if (resolvedUrlIndex && resolvedUrlIndex > -1) {\n config.resolve?.modules?.splice(resolvedUrlIndex, 1)\n }\n\n // If the resolvedBaseUrl is implicit we only remove the previous value.\n // Only add the baseUrl if it's explicitly set in tsconfig/jsconfig\n if (!resolvedBaseUrl.isImplicit) {\n config.resolve?.modules?.push(resolvedBaseUrl.baseUrl)\n }\n }\n }\n\n if (jsConfig?.compilerOptions?.paths && resolvedBaseUrl) {\n Object.keys(plugin.paths).forEach((key) => {\n delete plugin.paths[key]\n })\n Object.assign(plugin.paths, jsConfig.compilerOptions.paths)\n plugin.resolvedBaseUrl = resolvedBaseUrl\n }\n }\n })\n }\n\n if (envChange) {\n config.plugins?.forEach((plugin: any) => {\n // we look for the DefinePlugin definitions so we can\n // update them on the active compilers\n if (\n plugin &&\n typeof plugin.definitions === 'object' &&\n plugin.definitions.__NEXT_DEFINE_ENV\n ) {\n const newDefine = getDefineEnv({\n isTurbopack: false,\n clientRouterFilters,\n config: nextConfig,\n dev: true,\n distDir,\n fetchCacheKeyPrefix:\n opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeServer,\n middlewareMatchers: undefined,\n })\n\n Object.keys(plugin.definitions).forEach((key) => {\n if (!(key in newDefine)) {\n delete plugin.definitions[key]\n }\n })\n Object.assign(plugin.definitions, newDefine)\n }\n })\n }\n })\n await hotReloader.invalidate({\n reloadAfterInvalidation: envChange,\n })\n }\n\n if (nestedMiddleware.length > 0) {\n Log.error(\n new NestedMiddlewareError(\n nestedMiddleware,\n dir,\n (pagesDir || appDir)!\n ).message\n )\n nestedMiddleware = []\n }\n\n // Make sure to sort parallel routes to make the result deterministic.\n serverFields.appPathRoutes = Object.fromEntries(\n Object.entries(appPaths).map(([k, v]) => [k, v.sort()])\n )\n await propagateServerField(\n opts,\n 'appPathRoutes',\n serverFields.appPathRoutes\n )\n\n // TODO: pass this to fsChecker/next-dev-server?\n serverFields.middleware = middlewareMatchers\n ? {\n match: null as any,\n page: '/',\n matchers: middlewareMatchers,\n }\n : undefined\n\n await propagateServerField(opts, 'middleware', serverFields.middleware)\n serverFields.hasAppNotFound = hasRootAppNotFound\n\n opts.fsChecker.middlewareMatcher = serverFields.middleware?.matchers\n ? getMiddlewareRouteMatcher(serverFields.middleware?.matchers)\n : undefined\n\n const interceptionRoutes = generateInterceptionRoutesRewrites(\n Object.keys(appPaths),\n opts.nextConfig.basePath\n ).map((item) =>\n buildCustomRoute(\n 'before_files_rewrite',\n item,\n opts.nextConfig.basePath,\n opts.nextConfig.experimental.caseSensitiveRoutes\n )\n )\n\n opts.fsChecker.rewrites.beforeFiles.push(...interceptionRoutes)\n\n const exportPathMap =\n (typeof nextConfig.exportPathMap === 'function' &&\n (await nextConfig.exportPathMap?.(\n {},\n {\n dev: true,\n dir: opts.dir,\n outDir: null,\n distDir: distDir,\n buildId: 'development',\n }\n ))) ||\n {}\n\n const exportPathMapEntries = Object.entries(exportPathMap || {})\n\n if (exportPathMapEntries.length > 0) {\n opts.fsChecker.exportPathMapRoutes = exportPathMapEntries.map(\n ([key, value]) =>\n buildCustomRoute(\n 'before_files_rewrite',\n {\n source: key,\n destination: `${value.page}${\n value.query ? '?' : ''\n }${qs.stringify(value.query)}`,\n },\n opts.nextConfig.basePath,\n opts.nextConfig.experimental.caseSensitiveRoutes\n )\n )\n }\n\n try {\n // we serve a separate manifest with all pages for the client in\n // dev mode so that we can match a page after a rewrite on the client\n // before it has been built and is populated in the _buildManifest\n const sortedRoutes = getSortedRoutes(routedPages)\n\n opts.fsChecker.dynamicRoutes = sortedRoutes.map(\n (page): FilesystemDynamicRoute => {\n const regex = getRouteRegex(page)\n return {\n regex: regex.re.toString(),\n match: getRouteMatcher(regex),\n page,\n }\n }\n )\n\n const dataRoutes: typeof opts.fsChecker.dynamicRoutes = []\n\n for (const page of sortedRoutes) {\n const route = buildDataRoute(page, 'development')\n const routeRegex = getRouteRegex(route.page)\n dataRoutes.push({\n ...route,\n regex: routeRegex.re.toString(),\n match: getRouteMatcher({\n // TODO: fix this in the manifest itself, must also be fixed in\n // upstream builder that relies on this\n re: opts.nextConfig.i18n\n ? new RegExp(\n route.dataRouteRegex.replace(\n `/development/`,\n `/development/(?<nextLocale>[^/]+?)/`\n )\n )\n : new RegExp(route.dataRouteRegex),\n groups: routeRegex.groups,\n }),\n })\n }\n opts.fsChecker.dynamicRoutes.unshift(...dataRoutes)\n\n if (!prevSortedRoutes?.every((val, idx) => val === sortedRoutes[idx])) {\n const addedRoutes = sortedRoutes.filter(\n (route) => !prevSortedRoutes.includes(route)\n )\n const removedRoutes = prevSortedRoutes.filter(\n (route) => !sortedRoutes.includes(route)\n )\n\n // emit the change so clients fetch the update\n hotReloader.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE,\n data: [\n {\n devPagesManifest: true,\n },\n ],\n })\n\n addedRoutes.forEach((route) => {\n hotReloader.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.ADDED_PAGE,\n data: [route],\n })\n })\n\n removedRoutes.forEach((route) => {\n hotReloader.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.REMOVED_PAGE,\n data: [route],\n })\n })\n }\n prevSortedRoutes = sortedRoutes\n\n if (!resolved) {\n resolve()\n resolved = true\n }\n } catch (e) {\n if (!resolved) {\n reject(e)\n resolved = true\n } else {\n Log.warn('Failed to reload dynamic routes:', e)\n }\n } finally {\n // Reload the matchers. The filesystem would have been written to,\n // and the matchers need to re-scan it to update the router.\n await propagateServerField(opts, 'reloadMatchers', undefined)\n }\n })\n\n wp.watch({ directories: [dir], startTime: 0 })\n })\n\n const clientPagesManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${DEV_CLIENT_PAGES_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(clientPagesManifestPath)\n\n const devMiddlewareManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${DEV_CLIENT_MIDDLEWARE_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(devMiddlewareManifestPath)\n\n const devTurbopackMiddlewareManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(devTurbopackMiddlewareManifestPath)\n\n async function requestHandler(req: IncomingMessage, res: ServerResponse) {\n const parsedUrl = url.parse(req.url || '/')\n\n if (parsedUrl.pathname?.includes(clientPagesManifestPath)) {\n res.statusCode = 200\n res.setHeader('Content-Type', 'application/json; charset=utf-8')\n res.end(\n JSON.stringify({\n pages: prevSortedRoutes.filter(\n (route) => !opts.fsChecker.appFiles.has(route)\n ),\n })\n )\n return { finished: true }\n }\n\n if (\n parsedUrl.pathname?.includes(devMiddlewareManifestPath) ||\n parsedUrl.pathname?.includes(devTurbopackMiddlewareManifestPath)\n ) {\n res.statusCode = 200\n res.setHeader('Content-Type', 'application/json; charset=utf-8')\n res.end(JSON.stringify(serverFields.middleware?.matchers || []))\n return { finished: true }\n }\n return { finished: false }\n }\n\n function logErrorWithOriginalStack(\n err: unknown,\n type?: 'unhandledRejection' | 'uncaughtException' | 'warning' | 'app-dir'\n ) {\n if (err instanceof ModuleBuildError) {\n // Errors that may come from issues from the user's code\n Log.error(err.message)\n } else if (err instanceof TurbopackInternalError) {\n // An internal Turbopack error that has been handled by next-swc, written\n // to disk and a simplified message shown to user on the Rust side.\n } else if (type === 'warning') {\n Log.warn(err)\n } else if (type === 'app-dir') {\n Log.error(err)\n } else if (type) {\n Log.error(`${type}:`, err)\n } else {\n Log.error(err)\n }\n }\n\n return {\n serverFields,\n hotReloader,\n requestHandler,\n logErrorWithOriginalStack,\n\n async ensureMiddleware(requestUrl?: string) {\n if (!serverFields.actualMiddlewareFile) return\n return hotReloader.ensurePage({\n page: serverFields.actualMiddlewareFile,\n clientOnly: false,\n definition: undefined,\n url: requestUrl,\n })\n },\n }\n}\n\nexport async function setupDevBundler(opts: SetupOpts) {\n const isSrcDir = path\n .relative(opts.dir, opts.pagesDir || opts.appDir || '')\n .startsWith('src')\n\n const result = await startWatcher(opts)\n\n opts.telemetry.record(\n eventCliSession(\n path.join(opts.dir, opts.nextConfig.distDir),\n opts.nextConfig,\n {\n webpackVersion: 5,\n isSrcDir,\n turboFlag: !!opts.turbo,\n cliCommand: 'dev',\n appDir: !!opts.appDir,\n pagesDir: !!opts.pagesDir,\n isCustomServer: !!opts.isCustomServer,\n hasNowJson: !!(await findUp('now.json', { cwd: opts.dir })),\n }\n )\n )\n\n // Track build features for dev server here:\n opts.telemetry.record({\n eventName: EVENT_BUILD_FEATURE_USAGE,\n payload: {\n featureName: 'turbopackPersistentCaching',\n invocationCount: isPersistentCachingEnabled(opts.nextConfig) ? 1 : 0,\n },\n })\n\n return result\n}\n\nexport type DevBundler = Awaited<ReturnType<typeof setupDevBundler>>\n\n// Returns a trace rewritten through Turbopack's sourcemaps\n"],"names":["getPageStaticInfo","createDefineEnv","fs","mkdir","url","path","qs","Watchpack","loadEnvConfig","findUp","buildCustomRoute","Log","HotReloaderWebpack","setGlobal","loadJsConfig","createValidFileMatcher","EVENT_BUILD_FEATURE_USAGE","eventCliSession","getSortedRoutes","getStaticInfoIncludingLayouts","sortByPageExts","verifyTypeScriptSetup","verifyPartytownSetup","getRouteRegex","normalizeAppPath","buildDataRoute","getRouteMatcher","normalizePathSep","createClientRouterFilter","absolutePathToPage","generateInterceptionRoutesRewrites","CLIENT_STATIC_FILES_PATH","DEV_CLIENT_PAGES_MANIFEST","DEV_CLIENT_MIDDLEWARE_MANIFEST","PHASE_DEVELOPMENT_SERVER","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","ROUTES_MANIFEST","PRERENDER_MANIFEST","getMiddlewareRouteMatcher","isMiddlewareFile","NestedMiddlewareError","isInstrumentationHookFile","getPossibleMiddlewareFilenames","getPossibleInstrumentationHookFilenames","devPageFiles","HMR_ACTIONS_SENT_TO_BROWSER","PAGE_TYPES","createHotReloaderTurbopack","generateEncryptionKeyBase64","isMetadataRouteFile","normalizeMetadataPageToRoute","createEnvDefinitions","JsConfigPathsPlugin","store","consoleStore","isPersistentCachingEnabled","ModuleBuildError","TurbopackInternalError","getDefineEnv","verifyTypeScript","opts","usingTypeScript","verifyResult","dir","distDir","nextConfig","intentDirs","pagesDir","appDir","filter","Boolean","typeCheckPreflight","tsconfigPath","typescript","disableStaticImages","images","hasAppDir","hasPagesDir","version","propagateServerField","field","args","renderServer","instance","startWatcher","resetFetch","useFileSystemPublicRoutes","join","distTypesDir","existsSync","recursive","validFileMatcher","pageExtensions","serverFields","setState","logging","hotReloader","turbo","config","buildId","encryptionKey","isBuild","telemetry","rewrites","fsChecker","previewProps","prerenderManifest","preview","start","routesManifestPath","routesManifest","caseSensitive","experimental","caseSensitiveRoutes","basePath","redirects","headers","i18n","undefined","skipMiddlewareUrlNormalize","promises","writeFile","JSON","stringify","prerenderManifestPath","nextScriptWorkers","ensureCallback","ensure","item","type","ensurePage","clientOnly","page","itemPath","isApp","definition","resolved","prevSortedRoutes","Promise","resolve","reject","readdir","_","files","length","pages","app","directories","rootDir","nestedMiddleware","envFiles","map","file","push","tsconfigPaths","wp","ignored","pathname","some","startsWith","d","fileWatchTimes","Map","enabledTypeScript","previousClientRouterFilters","previousConflictingPagePaths","Set","on","middlewareMatchers","routedPages","knownFiles","getTimeInfoEntries","appPaths","pageNameSet","conflictingAppPagePaths","appPageFilePaths","pagesPageFilePaths","envChange","tsconfigChange","conflictingPageChange","hasRootAppNotFound","appFiles","pageFiles","clear","sortedKnownFiles","keys","sort","fileName","includes","meta","get","watchTime","watchTimeChange","timestamp","set","endsWith","accuracy","isPageFile","isAppPath","isPagePath","rootFile","extensions","keepIndex","pagesType","ROOT","staticInfo","pageFilePath","isDev","isInsideAppDir","output","error","actualMiddlewareFile","middleware","matchers","regexp","originalSource","actualInstrumentationHookFile","add","pageName","APP","PAGES","replace","pageType","generateSitemaps","generateImageMetadata","isRootNotFound","isAppRouterPage","originalPageName","nextDataRoutes","has","test","numConflicting","size","errorMessage","p","appPath","relative","pagesPath","setHmrServerError","Error","clearHmrServerError","clientRouterFilters","clientRouterFilter","Object","clientRouterFilterRedirects","_originalRedirects","r","internal","clientRouterFilterAllowedRate","then","catch","loadedEnvFiles","process","env","NODE_ENV","envFilePath","info","typedEnv","configFileName","contents","dev","forceReload","silent","tsconfigResult","turbopackProject","hasRewrites","afterFiles","beforeFiles","fallback","update","defineEnv","isTurbopack","fetchCacheKeyPrefix","activeWebpackConfigs","forEach","idx","isClient","isNodeServer","isEdgeServer","plugins","plugin","jsConfig","resolvedBaseUrl","currentResolvedBaseUrl","resolvedUrlIndex","modules","findIndex","baseUrl","splice","isImplicit","compilerOptions","paths","key","assign","definitions","__NEXT_DEFINE_ENV","newDefine","invalidate","reloadAfterInvalidation","message","appPathRoutes","fromEntries","entries","k","v","match","hasAppNotFound","middlewareMatcher","interceptionRoutes","exportPathMap","outDir","exportPathMapEntries","exportPathMapRoutes","value","source","destination","query","sortedRoutes","dynamicRoutes","regex","re","toString","dataRoutes","route","routeRegex","RegExp","dataRouteRegex","groups","unshift","every","val","addedRoutes","removedRoutes","send","action","DEV_PAGES_MANIFEST_UPDATE","data","devPagesManifest","ADDED_PAGE","REMOVED_PAGE","e","warn","watch","startTime","clientPagesManifestPath","devVirtualFsItems","devMiddlewareManifestPath","devTurbopackMiddlewareManifestPath","requestHandler","req","res","parsedUrl","parse","statusCode","setHeader","end","finished","logErrorWithOriginalStack","err","ensureMiddleware","requestUrl","setupDevBundler","isSrcDir","result","record","webpackVersion","turboFlag","cliCommand","isCustomServer","hasNowJson","cwd","eventName","payload","featureName","invocationCount"],"mappings":"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","ignoreList":[0]}
@@ -42,7 +42,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
42
42
  export async function startServer(serverOptions) {
43
43
  const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
44
44
  let { port } = serverOptions;
45
- process.title = `next-server (v${"15.4.0-canary.40"})`;
45
+ process.title = `next-server (v${"15.4.0-canary.42"})`;
46
46
  let handlersReady = ()=>{};
47
47
  let handlersError = ()=>{};
48
48
  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.0-canary.40") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
3
+ return !((_process_env___NEXT_VERSION = "15.4.0-canary.42") == 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){
@@ -234,6 +234,7 @@ const configSchema = _zod.z.lazy(()=>_zod.z.strictObject({
234
234
  })
235
235
  ]),
236
236
  define: _zod.z.record(_zod.z.string(), _zod.z.string()).optional(),
237
+ defineServer: _zod.z.record(_zod.z.string(), _zod.z.string()).optional(),
237
238
  runAfterProductionCompile: _zod.z.function().returns(_zod.z.promise(_zod.z.void())).optional()
238
239
  }).optional(),
239
240
  compress: _zod.z.boolean().optional(),