vinext 0.0.25 → 0.0.27

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 (226) hide show
  1. package/README.md +95 -86
  2. package/dist/build/static-export.d.ts.map +1 -1
  3. package/dist/build/static-export.js +3 -8
  4. package/dist/build/static-export.js.map +1 -1
  5. package/dist/check.d.ts.map +1 -1
  6. package/dist/check.js +154 -50
  7. package/dist/check.js.map +1 -1
  8. package/dist/cli.js +42 -12
  9. package/dist/cli.js.map +1 -1
  10. package/dist/client/entry.js.map +1 -1
  11. package/dist/client/vinext-next-data.d.ts +22 -0
  12. package/dist/client/vinext-next-data.d.ts.map +1 -0
  13. package/dist/client/vinext-next-data.js +2 -0
  14. package/dist/client/vinext-next-data.js.map +1 -0
  15. package/dist/cloudflare/kv-cache-handler.d.ts +32 -1
  16. package/dist/cloudflare/kv-cache-handler.d.ts.map +1 -1
  17. package/dist/cloudflare/kv-cache-handler.js +47 -21
  18. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  19. package/dist/cloudflare/tpr.d.ts.map +1 -1
  20. package/dist/cloudflare/tpr.js +15 -4
  21. package/dist/cloudflare/tpr.js.map +1 -1
  22. package/dist/config/config-matchers.d.ts +27 -0
  23. package/dist/config/config-matchers.d.ts.map +1 -1
  24. package/dist/config/config-matchers.js +312 -62
  25. package/dist/config/config-matchers.js.map +1 -1
  26. package/dist/config/dotenv.d.ts.map +1 -1
  27. package/dist/config/dotenv.js +1 -6
  28. package/dist/config/dotenv.js.map +1 -1
  29. package/dist/config/next-config.d.ts +38 -4
  30. package/dist/config/next-config.d.ts.map +1 -1
  31. package/dist/config/next-config.js +194 -31
  32. package/dist/config/next-config.js.map +1 -1
  33. package/dist/deploy.d.ts +11 -0
  34. package/dist/deploy.d.ts.map +1 -1
  35. package/dist/deploy.js +74 -39
  36. package/dist/deploy.js.map +1 -1
  37. package/dist/entries/app-browser-entry.d.ts +9 -0
  38. package/dist/entries/app-browser-entry.d.ts.map +1 -0
  39. package/dist/entries/app-browser-entry.js +340 -0
  40. package/dist/entries/app-browser-entry.js.map +1 -0
  41. package/dist/{server/app-dev-server.d.ts → entries/app-rsc-entry.d.ts} +4 -17
  42. package/dist/entries/app-rsc-entry.d.ts.map +1 -0
  43. package/dist/{server/app-dev-server.js → entries/app-rsc-entry.js} +438 -1232
  44. package/dist/entries/app-rsc-entry.js.map +1 -0
  45. package/dist/entries/app-ssr-entry.d.ts +8 -0
  46. package/dist/entries/app-ssr-entry.d.ts.map +1 -0
  47. package/dist/entries/app-ssr-entry.js +449 -0
  48. package/dist/entries/app-ssr-entry.js.map +1 -0
  49. package/dist/entries/pages-client-entry.d.ts +4 -0
  50. package/dist/entries/pages-client-entry.d.ts.map +1 -0
  51. package/dist/entries/pages-client-entry.js +96 -0
  52. package/dist/entries/pages-client-entry.js.map +1 -0
  53. package/dist/entries/pages-entry-helpers.d.ts +7 -0
  54. package/dist/entries/pages-entry-helpers.d.ts.map +1 -0
  55. package/dist/entries/pages-entry-helpers.js +18 -0
  56. package/dist/entries/pages-entry-helpers.js.map +1 -0
  57. package/dist/entries/pages-server-entry.d.ts +8 -0
  58. package/dist/entries/pages-server-entry.d.ts.map +1 -0
  59. package/dist/entries/pages-server-entry.js +1015 -0
  60. package/dist/entries/pages-server-entry.js.map +1 -0
  61. package/dist/index.d.ts +2 -26
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +407 -1357
  64. package/dist/index.js.map +1 -1
  65. package/dist/init.d.ts.map +1 -1
  66. package/dist/init.js +6 -5
  67. package/dist/init.js.map +1 -1
  68. package/dist/routing/app-router.d.ts +2 -0
  69. package/dist/routing/app-router.d.ts.map +1 -1
  70. package/dist/routing/app-router.js +10 -18
  71. package/dist/routing/app-router.js.map +1 -1
  72. package/dist/routing/file-matcher.d.ts.map +1 -1
  73. package/dist/routing/file-matcher.js.map +1 -1
  74. package/dist/routing/pages-router.d.ts +2 -0
  75. package/dist/routing/pages-router.d.ts.map +1 -1
  76. package/dist/routing/pages-router.js +8 -5
  77. package/dist/routing/pages-router.js.map +1 -1
  78. package/dist/routing/utils.d.ts.map +1 -1
  79. package/dist/routing/utils.js.map +1 -1
  80. package/dist/server/api-handler.d.ts.map +1 -1
  81. package/dist/server/api-handler.js +7 -2
  82. package/dist/server/api-handler.js.map +1 -1
  83. package/dist/server/app-router-entry.d.ts +3 -2
  84. package/dist/server/app-router-entry.d.ts.map +1 -1
  85. package/dist/server/app-router-entry.js +8 -4
  86. package/dist/server/app-router-entry.js.map +1 -1
  87. package/dist/server/dev-module-runner.d.ts.map +1 -1
  88. package/dist/server/dev-module-runner.js +1 -1
  89. package/dist/server/dev-module-runner.js.map +1 -1
  90. package/dist/server/dev-origin-check.d.ts.map +1 -1
  91. package/dist/server/dev-origin-check.js.map +1 -1
  92. package/dist/server/dev-server.d.ts.map +1 -1
  93. package/dist/server/dev-server.js +30 -18
  94. package/dist/server/dev-server.js.map +1 -1
  95. package/dist/server/image-optimization.d.ts.map +1 -1
  96. package/dist/server/image-optimization.js.map +1 -1
  97. package/dist/server/instrumentation.d.ts +1 -1
  98. package/dist/server/instrumentation.js +2 -2
  99. package/dist/server/instrumentation.js.map +1 -1
  100. package/dist/server/isr-cache.d.ts +13 -1
  101. package/dist/server/isr-cache.d.ts.map +1 -1
  102. package/dist/server/isr-cache.js +10 -1
  103. package/dist/server/isr-cache.js.map +1 -1
  104. package/dist/server/metadata-routes.d.ts.map +1 -1
  105. package/dist/server/metadata-routes.js +6 -18
  106. package/dist/server/metadata-routes.js.map +1 -1
  107. package/dist/server/middleware-codegen.d.ts +1 -1
  108. package/dist/server/middleware-codegen.d.ts.map +1 -1
  109. package/dist/server/middleware-codegen.js +13 -11
  110. package/dist/server/middleware-codegen.js.map +1 -1
  111. package/dist/server/middleware-request-headers.d.ts +9 -0
  112. package/dist/server/middleware-request-headers.d.ts.map +1 -0
  113. package/dist/server/middleware-request-headers.js +77 -0
  114. package/dist/server/middleware-request-headers.js.map +1 -0
  115. package/dist/server/middleware.d.ts.map +1 -1
  116. package/dist/server/middleware.js +38 -19
  117. package/dist/server/middleware.js.map +1 -1
  118. package/dist/server/normalize-path.js.map +1 -1
  119. package/dist/server/prod-server.d.ts +1 -1
  120. package/dist/server/prod-server.d.ts.map +1 -1
  121. package/dist/server/prod-server.js +71 -41
  122. package/dist/server/prod-server.js.map +1 -1
  123. package/dist/server/request-pipeline.d.ts +93 -0
  124. package/dist/server/request-pipeline.d.ts.map +1 -0
  125. package/dist/server/request-pipeline.js +200 -0
  126. package/dist/server/request-pipeline.js.map +1 -0
  127. package/dist/shims/cache-runtime.d.ts.map +1 -1
  128. package/dist/shims/cache-runtime.js +21 -16
  129. package/dist/shims/cache-runtime.js.map +1 -1
  130. package/dist/shims/cache.d.ts.map +1 -1
  131. package/dist/shims/cache.js +18 -17
  132. package/dist/shims/cache.js.map +1 -1
  133. package/dist/shims/constants.d.ts +120 -3
  134. package/dist/shims/constants.d.ts.map +1 -1
  135. package/dist/shims/constants.js +165 -3
  136. package/dist/shims/constants.js.map +1 -1
  137. package/dist/shims/dynamic.d.ts.map +1 -1
  138. package/dist/shims/dynamic.js +1 -1
  139. package/dist/shims/dynamic.js.map +1 -1
  140. package/dist/shims/error-boundary.d.ts.map +1 -1
  141. package/dist/shims/error-boundary.js +2 -3
  142. package/dist/shims/error-boundary.js.map +1 -1
  143. package/dist/shims/error.d.ts.map +1 -1
  144. package/dist/shims/error.js +1 -3
  145. package/dist/shims/error.js.map +1 -1
  146. package/dist/shims/fetch-cache.d.ts.map +1 -1
  147. package/dist/shims/fetch-cache.js +53 -29
  148. package/dist/shims/fetch-cache.js.map +1 -1
  149. package/dist/shims/font-google-base.d.ts.map +1 -1
  150. package/dist/shims/font-google-base.js +16 -4
  151. package/dist/shims/font-google-base.js.map +1 -1
  152. package/dist/shims/font-google.d.ts +1 -1
  153. package/dist/shims/font-google.d.ts.map +1 -1
  154. package/dist/shims/font-google.generated.d.ts.map +1 -1
  155. package/dist/shims/font-google.generated.js +412 -206
  156. package/dist/shims/font-google.generated.js.map +1 -1
  157. package/dist/shims/font-google.js +1 -1
  158. package/dist/shims/font-google.js.map +1 -1
  159. package/dist/shims/font-local.d.ts.map +1 -1
  160. package/dist/shims/font-local.js +13 -3
  161. package/dist/shims/font-local.js.map +1 -1
  162. package/dist/shims/form.d.ts.map +1 -1
  163. package/dist/shims/form.js +2 -2
  164. package/dist/shims/form.js.map +1 -1
  165. package/dist/shims/head.d.ts.map +1 -1
  166. package/dist/shims/head.js +10 -8
  167. package/dist/shims/head.js.map +1 -1
  168. package/dist/shims/headers.d.ts +23 -5
  169. package/dist/shims/headers.d.ts.map +1 -1
  170. package/dist/shims/headers.js +98 -37
  171. package/dist/shims/headers.js.map +1 -1
  172. package/dist/shims/image.d.ts.map +1 -1
  173. package/dist/shims/image.js +35 -8
  174. package/dist/shims/image.js.map +1 -1
  175. package/dist/shims/legacy-image.d.ts.map +1 -1
  176. package/dist/shims/legacy-image.js +1 -1
  177. package/dist/shims/legacy-image.js.map +1 -1
  178. package/dist/shims/link.d.ts.map +1 -1
  179. package/dist/shims/link.js +31 -17
  180. package/dist/shims/link.js.map +1 -1
  181. package/dist/shims/metadata.d.ts +19 -3
  182. package/dist/shims/metadata.d.ts.map +1 -1
  183. package/dist/shims/metadata.js +19 -11
  184. package/dist/shims/metadata.js.map +1 -1
  185. package/dist/shims/navigation-state.d.ts.map +1 -1
  186. package/dist/shims/navigation-state.js +3 -2
  187. package/dist/shims/navigation-state.js.map +1 -1
  188. package/dist/shims/navigation.d.ts.map +1 -1
  189. package/dist/shims/navigation.js +26 -19
  190. package/dist/shims/navigation.js.map +1 -1
  191. package/dist/shims/og.d.ts +6 -6
  192. package/dist/shims/og.js +6 -6
  193. package/dist/shims/og.js.map +1 -1
  194. package/dist/shims/request-context.d.ts +50 -0
  195. package/dist/shims/request-context.d.ts.map +1 -0
  196. package/dist/shims/request-context.js +59 -0
  197. package/dist/shims/request-context.js.map +1 -0
  198. package/dist/shims/router-state.d.ts.map +1 -1
  199. package/dist/shims/router-state.js +2 -1
  200. package/dist/shims/router-state.js.map +1 -1
  201. package/dist/shims/router.d.ts.map +1 -1
  202. package/dist/shims/router.js +18 -25
  203. package/dist/shims/router.js.map +1 -1
  204. package/dist/shims/script.d.ts.map +1 -1
  205. package/dist/shims/script.js.map +1 -1
  206. package/dist/shims/server.d.ts +13 -0
  207. package/dist/shims/server.d.ts.map +1 -1
  208. package/dist/shims/server.js +100 -34
  209. package/dist/shims/server.js.map +1 -1
  210. package/dist/shims/url-utils.d.ts.map +1 -1
  211. package/dist/shims/url-utils.js +1 -3
  212. package/dist/shims/url-utils.js.map +1 -1
  213. package/dist/utils/base-path.d.ts +17 -0
  214. package/dist/utils/base-path.d.ts.map +1 -0
  215. package/dist/utils/base-path.js +25 -0
  216. package/dist/utils/base-path.js.map +1 -0
  217. package/dist/utils/project.d.ts +15 -0
  218. package/dist/utils/project.d.ts.map +1 -1
  219. package/dist/utils/project.js +50 -4
  220. package/dist/utils/project.js.map +1 -1
  221. package/dist/utils/query.d.ts.map +1 -1
  222. package/dist/utils/query.js +3 -1
  223. package/dist/utils/query.js.map +1 -1
  224. package/package.json +47 -33
  225. package/dist/server/app-dev-server.d.ts.map +0 -1
  226. package/dist/server/app-dev-server.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/shims/cache.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * next/cache shim\n *\n * Provides the Next.js caching API surface: revalidateTag, revalidatePath,\n * unstable_cache. Backed by a pluggable CacheHandler that defaults to\n * in-memory but can be swapped for Cloudflare KV, Redis, DynamoDB, etc.\n *\n * The CacheHandler interface matches Next.js 16's CacheHandler class, so\n * existing community adapters (@neshca/cache-handler, @opennextjs/aws, etc.)\n * can be used directly.\n *\n * Configuration (in vite.config.ts or next.config.js):\n * vinext({ cacheHandler: './my-cache-handler.ts' })\n *\n * Or set at runtime:\n * import { setCacheHandler } from 'next/cache';\n * setCacheHandler(new MyCacheHandler());\n */\n\nimport { markDynamicUsage as _markDynamic } from \"./headers.js\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { fnv1a64 } from \"../utils/hash.js\";\n\n// ---------------------------------------------------------------------------\n// Lazy accessor for cache context — avoids circular imports with cache-runtime.\n// The cache-runtime module sets this on load.\n// ---------------------------------------------------------------------------\n\ninterface CacheContextLike {\n tags: string[];\n lifeConfigs: import(\"./cache-runtime.js\").CacheContext[\"lifeConfigs\"];\n variant: string;\n}\n\n/** @internal Set by cache-runtime.ts on import to avoid circular dependency */\nlet _getCacheContextFn: (() => CacheContextLike | null) | null = null;\n\n/**\n * Register the cache context accessor. Called by cache-runtime.ts on load.\n * @internal\n */\nexport function _registerCacheContextAccessor(fn: () => CacheContextLike | null): void {\n _getCacheContextFn = fn;\n}\n\n// ---------------------------------------------------------------------------\n// CacheHandler interface — matches Next.js 16's CacheHandler class shape.\n// Implement this to provide a custom cache backend.\n// ---------------------------------------------------------------------------\n\nexport interface CacheHandlerValue {\n lastModified: number;\n age?: number;\n cacheState?: string;\n value: IncrementalCacheValue | null;\n}\n\n/** Discriminated union of cache value types. */\nexport type IncrementalCacheValue =\n | CachedFetchValue\n | CachedAppPageValue\n | CachedPagesValue\n | CachedRouteValue\n | CachedRedirectValue\n | CachedImageValue;\n\nexport interface CachedFetchValue {\n kind: \"FETCH\";\n data: {\n headers: Record<string, string>;\n body: string;\n url: string;\n status?: number;\n };\n tags?: string[];\n revalidate: number | false;\n}\n\nexport interface CachedAppPageValue {\n kind: \"APP_PAGE\";\n html: string;\n rscData: ArrayBuffer | undefined;\n headers: Record<string, string | string[]> | undefined;\n postponed: string | undefined;\n status: number | undefined;\n}\n\nexport interface CachedPagesValue {\n kind: \"PAGES\";\n html: string;\n pageData: object;\n headers: Record<string, string | string[]> | undefined;\n status: number | undefined;\n}\n\nexport interface CachedRouteValue {\n kind: \"APP_ROUTE\";\n body: ArrayBuffer;\n status: number;\n headers: Record<string, string | string[]>;\n}\n\nexport interface CachedRedirectValue {\n kind: \"REDIRECT\";\n props: object;\n}\n\nexport interface CachedImageValue {\n kind: \"IMAGE\";\n etag: string;\n buffer: ArrayBuffer;\n extension: string;\n revalidate?: number;\n}\n\nexport interface CacheHandlerContext {\n dev?: boolean;\n maxMemoryCacheSize?: number;\n revalidatedTags?: string[];\n [key: string]: unknown;\n}\n\nexport interface CacheHandler {\n get(\n key: string,\n ctx?: Record<string, unknown>,\n ): Promise<CacheHandlerValue | null>;\n\n set(\n key: string,\n data: IncrementalCacheValue | null,\n ctx?: Record<string, unknown>,\n ): Promise<void>;\n\n revalidateTag(\n tags: string | string[],\n durations?: { expire?: number },\n ): Promise<void>;\n\n resetRequestCache?(): void;\n}\n\n// ---------------------------------------------------------------------------\n// Default in-memory adapter — works everywhere, suitable for dev and\n// single-process production. Not shared across workers/instances.\n// ---------------------------------------------------------------------------\n\ninterface MemoryEntry {\n value: IncrementalCacheValue | null;\n tags: string[];\n lastModified: number;\n revalidateAt: number | null;\n}\n\nexport class MemoryCacheHandler implements CacheHandler {\n private store = new Map<string, MemoryEntry>();\n private tagRevalidatedAt = new Map<string, number>();\n\n async get(\n key: string,\n _ctx?: Record<string, unknown>,\n ): Promise<CacheHandlerValue | null> {\n const entry = this.store.get(key);\n if (!entry) return null;\n\n // Check tag-based invalidation first — if tag was invalidated, treat as hard miss\n for (const tag of entry.tags) {\n const revalidatedAt = this.tagRevalidatedAt.get(tag);\n if (revalidatedAt && revalidatedAt >= entry.lastModified) {\n this.store.delete(key);\n return null;\n }\n }\n\n // Check time-based expiry — return stale entry with cacheState=\"stale\"\n // instead of deleting, so ISR can serve stale-while-revalidate\n if (entry.revalidateAt !== null && Date.now() > entry.revalidateAt) {\n return {\n lastModified: entry.lastModified,\n value: entry.value,\n cacheState: \"stale\",\n };\n }\n\n return {\n lastModified: entry.lastModified,\n value: entry.value,\n };\n }\n\n async set(\n key: string,\n data: IncrementalCacheValue | null,\n ctx?: Record<string, unknown>,\n ): Promise<void> {\n const tags: string[] = [];\n if (data && \"tags\" in data && Array.isArray(data.tags)) {\n tags.push(...data.tags);\n }\n if (ctx && \"tags\" in ctx && Array.isArray(ctx.tags)) {\n tags.push(...(ctx.tags as string[]));\n }\n\n let revalidateAt: number | null = null;\n if (ctx) {\n // Handle both old-style { revalidate } and new-style { cacheControl: { revalidate } }\n const revalidate =\n (ctx as any).cacheControl?.revalidate ?? (ctx as any).revalidate;\n if (typeof revalidate === \"number\" && revalidate > 0) {\n revalidateAt = Date.now() + revalidate * 1000;\n }\n }\n if (data && \"revalidate\" in data && typeof data.revalidate === \"number\") {\n revalidateAt = Date.now() + data.revalidate * 1000;\n }\n\n this.store.set(key, {\n value: data,\n tags,\n lastModified: Date.now(),\n revalidateAt,\n });\n }\n\n async revalidateTag(\n tags: string | string[],\n _durations?: { expire?: number },\n ): Promise<void> {\n const tagList = Array.isArray(tags) ? tags : [tags];\n const now = Date.now();\n for (const tag of tagList) {\n this.tagRevalidatedAt.set(tag, now);\n }\n }\n\n resetRequestCache(): void {\n // No-op for the simple memory cache. In a production adapter,\n // this would clear per-request caches (e.g., dedup fetch calls).\n }\n}\n\n// ---------------------------------------------------------------------------\n// Active cache handler — the singleton used by next/cache API functions.\n// Defaults to MemoryCacheHandler, can be swapped at runtime.\n// ---------------------------------------------------------------------------\n\nlet activeHandler: CacheHandler = new MemoryCacheHandler();\n\n/**\n * Set a custom CacheHandler. Call this during server startup to\n * plug in Cloudflare KV, Redis, DynamoDB, or any other backend.\n *\n * The handler must implement the CacheHandler interface (same shape\n * as Next.js 16's CacheHandler class).\n */\nexport function setCacheHandler(handler: CacheHandler): void {\n activeHandler = handler;\n}\n\n/**\n * Get the active CacheHandler (for internal use or testing).\n */\nexport function getCacheHandler(): CacheHandler {\n return activeHandler;\n}\n\n// ---------------------------------------------------------------------------\n// Public API — what app code imports from 'next/cache'\n// ---------------------------------------------------------------------------\n\n/**\n * Revalidate cached data associated with a specific cache tag.\n *\n * Works with both `fetch(..., { next: { tags: ['myTag'] } })` and\n * `unstable_cache(fn, keys, { tags: ['myTag'] })`.\n */\n/**\n * Revalidate cached data associated with a specific cache tag.\n *\n * Next.js 16 updated signature: requires a cacheLife profile as second argument\n * for stale-while-revalidate (SWR) behavior. The single-argument form is\n * deprecated but still supported for backward compatibility.\n *\n * @param tag - Cache tag to revalidate\n * @param profile - cacheLife profile name (e.g. 'max', 'hours') or inline { expire: number }\n */\nexport async function revalidateTag(\n tag: string,\n profile?: string | { expire?: number },\n): Promise<void> {\n // Resolve the profile to durations for the handler\n let durations: { expire?: number } | undefined;\n if (typeof profile === \"string\") {\n const resolved = cacheLifeProfiles[profile];\n if (resolved) {\n durations = { expire: resolved.expire };\n }\n } else if (profile && typeof profile === \"object\") {\n durations = profile;\n }\n await activeHandler.revalidateTag(tag, durations);\n}\n\n/**\n * Revalidate cached data associated with a specific path.\n *\n * Under the hood, Next.js converts paths to internal tags.\n * We use a `_N_T_/path` prefix convention for path-based tags.\n */\nexport async function revalidatePath(\n path: string,\n _type?: \"page\" | \"layout\",\n): Promise<void> {\n // Next.js internally converts paths to tags with a prefix\n const pathTag = `_N_T_${path}`;\n await activeHandler.revalidateTag([path, pathTag]);\n}\n\n/**\n * Expire and immediately refresh cached data for a tag (Next.js 16).\n *\n * Server Actions-only API that provides read-your-writes semantics:\n * the cache entry is expired and fresh data is read within the same request,\n * so the user immediately sees their changes.\n *\n * Use this for interactive features (forms, user settings) where users\n * expect to see their updates instantly.\n *\n * @param tag - Cache tag to expire and refresh\n */\nexport async function updateTag(tag: string): Promise<void> {\n // Expire the tag immediately (same as revalidateTag without SWR)\n await activeHandler.revalidateTag(tag);\n}\n\n/**\n * Refresh uncached data on the page (Next.js 16).\n *\n * Server Actions-only API that signals the client to re-fetch dynamic\n * (uncached) data without touching the cache. Complementary to the\n * client-side router.refresh().\n *\n * Use this when you need to refresh data like notification counts,\n * live metrics, or status indicators after performing a server action.\n */\nexport function refresh(): void {\n // In our implementation, this is a signal that the client should\n // refresh dynamic data. The actual refresh happens on the client side\n // via the RSC protocol — the server action response triggers a\n // client-side navigation refresh.\n // For now, this is a no-op on the server; the Server Action response\n // mechanism already handles re-rendering the affected RSC tree.\n}\n\n/**\n * Opt out of static rendering and indicate a particular component should not be cached.\n *\n * In Next.js, calling noStore() inside a Server Component ensures the component\n * is dynamically rendered. In our implementation, this is a no-op since we don't\n * have the same static/dynamic rendering split — all server rendering is on-demand.\n * It's provided for API compatibility so apps importing it don't break.\n */\nexport function unstable_noStore(): void {\n // Signal dynamic usage so ISR-configured routes bypass the cache\n _markDynamic();\n}\n\n// Also export as `noStore` (Next.js 15+ naming)\nexport { unstable_noStore as noStore };\n\n// ---------------------------------------------------------------------------\n// Request-scoped cacheLife for page-level \"use cache\" directives.\n// When cacheLife() is called outside a \"use cache\" function context (e.g.,\n// in a page component with file-level \"use cache\"), the resolved config is\n// stored here so the server can read it after rendering and apply ISR caching.\n//\n// Uses AsyncLocalStorage for request isolation on concurrent workers.\n// ---------------------------------------------------------------------------\ninterface CacheState {\n requestScopedCacheLife: CacheLifeConfig | null;\n}\n\nconst _ALS_KEY = Symbol.for(\"vinext.cache.als\");\nconst _FALLBACK_KEY = Symbol.for(\"vinext.cache.fallback\");\nconst _g = globalThis as unknown as Record<PropertyKey, unknown>;\nconst _cacheAls = (_g[_ALS_KEY] ??= new AsyncLocalStorage<CacheState>()) as AsyncLocalStorage<CacheState>;\n\nconst _cacheFallbackState = (_g[_FALLBACK_KEY] ??= {\n requestScopedCacheLife: null,\n} satisfies CacheState) as CacheState;\n\nfunction _getCacheState(): CacheState {\n return _cacheAls.getStore() ?? _cacheFallbackState;\n}\n\n/**\n * Run a function within a cache state ALS scope.\n * Ensures per-request isolation for request-scoped cacheLife config\n * on concurrent runtimes.\n * @internal\n */\nexport function _runWithCacheState<T>(fn: () => T | Promise<T>): T | Promise<T> {\n const state: CacheState = {\n requestScopedCacheLife: null,\n };\n return _cacheAls.run(state, fn);\n}\n\n/**\n * Initialize cache ALS for a new request. Call at request entry.\n * Only needed when not using _runWithCacheState() (legacy path).\n * @internal\n */\nexport function _initRequestScopedCacheState(): void {\n const state = _cacheAls.getStore();\n if (state) {\n state.requestScopedCacheLife = null;\n } else {\n _cacheFallbackState.requestScopedCacheLife = null;\n }\n}\n\n/**\n * Set a request-scoped cache life config. Called by cacheLife() when outside\n * a \"use cache\" function context.\n * @internal\n */\nexport function _setRequestScopedCacheLife(config: CacheLifeConfig): void {\n const state = _getCacheState();\n if (state.requestScopedCacheLife === null) {\n state.requestScopedCacheLife = { ...config };\n } else {\n // Minimum-wins rule\n if (config.stale !== undefined) {\n state.requestScopedCacheLife.stale = state.requestScopedCacheLife.stale !== undefined\n ? Math.min(state.requestScopedCacheLife.stale, config.stale)\n : config.stale;\n }\n if (config.revalidate !== undefined) {\n state.requestScopedCacheLife.revalidate = state.requestScopedCacheLife.revalidate !== undefined\n ? Math.min(state.requestScopedCacheLife.revalidate, config.revalidate)\n : config.revalidate;\n }\n if (config.expire !== undefined) {\n state.requestScopedCacheLife.expire = state.requestScopedCacheLife.expire !== undefined\n ? Math.min(state.requestScopedCacheLife.expire, config.expire)\n : config.expire;\n }\n }\n}\n\n/**\n * Consume and reset the request-scoped cache life. Returns null if none was set.\n * @internal\n */\nexport function _consumeRequestScopedCacheLife(): CacheLifeConfig | null {\n const state = _getCacheState();\n const config = state.requestScopedCacheLife;\n state.requestScopedCacheLife = null;\n return config;\n}\n\n// ---------------------------------------------------------------------------\n// cacheLife / cacheTag — Next.js 15+ \"use cache\" APIs\n// ---------------------------------------------------------------------------\n\n/**\n * Cache life configuration. Controls stale-while-revalidate behavior.\n */\nexport interface CacheLifeConfig {\n /** How long (seconds) the client can cache without checking the server */\n stale?: number;\n /** How frequently (seconds) the server cache refreshes */\n revalidate?: number;\n /** Max staleness (seconds) before deoptimizing to dynamic */\n expire?: number;\n}\n\n/**\n * Built-in cache life profiles matching Next.js 16.\n */\nexport const cacheLifeProfiles: Record<string, CacheLifeConfig> = {\n default: { revalidate: 900, expire: 4294967294 },\n seconds: { stale: 30, revalidate: 1, expire: 60 },\n minutes: { stale: 300, revalidate: 60, expire: 3600 },\n hours: { stale: 300, revalidate: 3600, expire: 86400 },\n days: { stale: 300, revalidate: 86400, expire: 604800 },\n weeks: { stale: 300, revalidate: 604800, expire: 2592000 },\n max: { stale: 300, revalidate: 2592000, expire: 31536000 },\n};\n\n/**\n * Set the cache lifetime for a \"use cache\" function.\n *\n * Accepts either a built-in profile name (e.g., \"hours\", \"days\") or a custom\n * configuration object. In Next.js, this only works inside \"use cache\" functions.\n *\n * When called inside a \"use cache\" function, this sets the cache TTL.\n * The \"minimum-wins\" rule applies: if called multiple times, the shortest\n * duration for each field wins.\n *\n * When called outside a \"use cache\" context, this is a validated no-op.\n */\nexport function cacheLife(profile: string | CacheLifeConfig): void {\n let resolvedConfig: CacheLifeConfig;\n\n if (typeof profile === \"string\") {\n // Validate the profile name exists\n if (!cacheLifeProfiles[profile]) {\n console.warn(\n `[vinext] cacheLife: unknown profile \"${profile}\". ` +\n `Available profiles: ${Object.keys(cacheLifeProfiles).join(\", \")}`,\n );\n return;\n }\n resolvedConfig = { ...cacheLifeProfiles[profile] };\n } else if (typeof profile === \"object\" && profile !== null) {\n // Validate the config shape\n if (\n profile.expire !== undefined &&\n profile.revalidate !== undefined &&\n profile.expire < profile.revalidate\n ) {\n console.warn(\n \"[vinext] cacheLife: expire must be >= revalidate\",\n );\n }\n resolvedConfig = { ...profile };\n } else {\n return;\n }\n\n // If we're inside a \"use cache\" context, push the config\n try {\n const ctx = _getCacheContextFn?.();\n if (ctx) {\n ctx.lifeConfigs.push(resolvedConfig);\n return;\n }\n } catch {\n // Fall through to request-scoped\n }\n\n // Outside a \"use cache\" context (e.g., page component with file-level \"use cache\"):\n // store as request-scoped so the server can read it after rendering.\n _setRequestScopedCacheLife(resolvedConfig);\n}\n\n/**\n * Tag a \"use cache\" function's cached result for on-demand revalidation.\n *\n * Tags set here can be invalidated via revalidateTag(). In Next.js, this only\n * works inside \"use cache\" functions.\n *\n * When called inside a \"use cache\" function, tags are attached to the cached\n * entry. They can later be invalidated via revalidateTag().\n *\n * When called outside a \"use cache\" context, this is a no-op.\n */\nexport function cacheTag(...tags: string[]): void {\n try {\n const ctx = _getCacheContextFn?.();\n if (ctx) {\n ctx.tags.push(...tags);\n }\n } catch {\n // Not in a cache context — no-op\n }\n}\n\n// ---------------------------------------------------------------------------\n// unstable_cache — the older caching API\n// ---------------------------------------------------------------------------\n\n/**\n * AsyncLocalStorage to track whether we're inside an unstable_cache() callback.\n * Stored on globalThis via Symbol so headers.ts can detect the scope without\n * a direct import (avoiding circular dependencies).\n */\nconst _UNSTABLE_CACHE_ALS_KEY = Symbol.for(\"vinext.unstableCache.als\");\nconst _unstableCacheAls = (\n (_g[_UNSTABLE_CACHE_ALS_KEY] ??= new AsyncLocalStorage<boolean>()) as AsyncLocalStorage<boolean>\n);\nconst UNSTABLE_CACHE_UNDEFINED_SENTINEL = \"__vinext_unstable_cache_undefined__\";\n\nfunction serializeUnstableCacheResult(value: unknown): string {\n return value === undefined\n ? UNSTABLE_CACHE_UNDEFINED_SENTINEL\n : JSON.stringify(value);\n}\n\nfunction deserializeUnstableCacheResult(body: string): unknown {\n if (body === UNSTABLE_CACHE_UNDEFINED_SENTINEL) {\n return undefined;\n }\n\n return JSON.parse(body);\n}\n\n/**\n * Check if the current execution context is inside an unstable_cache() callback.\n * Used by headers(), cookies(), and connection() to throw errors when\n * dynamic request APIs are called inside a cache scope.\n */\nexport function isInsideUnstableCacheScope(): boolean {\n return _unstableCacheAls.getStore() === true;\n}\n\ninterface UnstableCacheOptions {\n revalidate?: number | false;\n tags?: string[];\n}\n\n/**\n * Wrap an async function with caching.\n *\n * Returns a new function that caches results. The cache key is derived\n * from keyParts + serialized arguments.\n */\nexport function unstable_cache<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n keyParts?: string[],\n options?: UnstableCacheOptions,\n): T {\n const baseKey = keyParts\n ? keyParts.join(\":\")\n : fnv1a64(fn.toString());\n const tags = options?.tags ?? [];\n const revalidateSeconds = options?.revalidate;\n\n const cachedFn = async (...args: any[]): Promise<any> => {\n const argsKey = JSON.stringify(args);\n const cacheKey = `unstable_cache:${baseKey}:${argsKey}`;\n\n // Try to get from cache. Check cacheState so time-expired entries\n // trigger a re-fetch instead of being served indefinitely.\n const existing = await activeHandler.get(cacheKey, {\n kind: \"FETCH\",\n tags,\n });\n if (existing?.value && existing.value.kind === \"FETCH\" && existing.cacheState !== \"stale\") {\n try {\n return deserializeUnstableCacheResult(existing.value.data.body);\n } catch {\n // Corrupted entry, fall through to re-fetch\n }\n }\n\n // Cache miss — call the function inside the unstable_cache ALS scope\n // so that headers()/cookies()/connection() can detect they're in a\n // cache scope and throw an appropriate error.\n const result = await _unstableCacheAls.run(true, () => fn(...args));\n\n // Store in cache using the FETCH kind\n const cacheValue: CachedFetchValue = {\n kind: \"FETCH\",\n data: {\n headers: {},\n body: serializeUnstableCacheResult(result),\n url: cacheKey,\n },\n tags,\n // revalidate: false means \"cache indefinitely\" (no time-based expiry).\n // A positive number means time-based revalidation in seconds.\n // When unset (undefined), default to false (indefinite) matching\n // Next.js behavior for unstable_cache without explicit revalidate.\n revalidate: typeof revalidateSeconds === \"number\" ? revalidateSeconds : false,\n };\n\n await activeHandler.set(cacheKey, cacheValue, {\n fetchCache: true,\n tags,\n revalidate: revalidateSeconds,\n });\n\n return result;\n };\n\n return cachedFn as T;\n}\n"]}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/shims/cache.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * next/cache shim\n *\n * Provides the Next.js caching API surface: revalidateTag, revalidatePath,\n * unstable_cache. Backed by a pluggable CacheHandler that defaults to\n * in-memory but can be swapped for Cloudflare KV, Redis, DynamoDB, etc.\n *\n * The CacheHandler interface matches Next.js 16's CacheHandler class, so\n * existing community adapters (@neshca/cache-handler, @opennextjs/aws, etc.)\n * can be used directly.\n *\n * Configuration (in vite.config.ts or next.config.js):\n * vinext({ cacheHandler: './my-cache-handler.ts' })\n *\n * Or set at runtime:\n * import { setCacheHandler } from 'next/cache';\n * setCacheHandler(new MyCacheHandler());\n */\n\nimport { markDynamicUsage as _markDynamic } from \"./headers.js\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { fnv1a64 } from \"../utils/hash.js\";\n\n// ---------------------------------------------------------------------------\n// Lazy accessor for cache context — avoids circular imports with cache-runtime.\n// The cache-runtime module sets this on load.\n// ---------------------------------------------------------------------------\n\ninterface CacheContextLike {\n tags: string[];\n lifeConfigs: import(\"./cache-runtime.js\").CacheContext[\"lifeConfigs\"];\n variant: string;\n}\n\n/** @internal Set by cache-runtime.ts on import to avoid circular dependency */\nlet _getCacheContextFn: (() => CacheContextLike | null) | null = null;\n\n/**\n * Register the cache context accessor. Called by cache-runtime.ts on load.\n * @internal\n */\nexport function _registerCacheContextAccessor(fn: () => CacheContextLike | null): void {\n _getCacheContextFn = fn;\n}\n\n// ---------------------------------------------------------------------------\n// CacheHandler interface — matches Next.js 16's CacheHandler class shape.\n// Implement this to provide a custom cache backend.\n// ---------------------------------------------------------------------------\n\nexport interface CacheHandlerValue {\n lastModified: number;\n age?: number;\n cacheState?: string;\n value: IncrementalCacheValue | null;\n}\n\n/** Discriminated union of cache value types. */\nexport type IncrementalCacheValue =\n | CachedFetchValue\n | CachedAppPageValue\n | CachedPagesValue\n | CachedRouteValue\n | CachedRedirectValue\n | CachedImageValue;\n\nexport interface CachedFetchValue {\n kind: \"FETCH\";\n data: {\n headers: Record<string, string>;\n body: string;\n url: string;\n status?: number;\n };\n tags?: string[];\n revalidate: number | false;\n}\n\nexport interface CachedAppPageValue {\n kind: \"APP_PAGE\";\n html: string;\n rscData: ArrayBuffer | undefined;\n headers: Record<string, string | string[]> | undefined;\n postponed: string | undefined;\n status: number | undefined;\n}\n\nexport interface CachedPagesValue {\n kind: \"PAGES\";\n html: string;\n pageData: object;\n headers: Record<string, string | string[]> | undefined;\n status: number | undefined;\n}\n\nexport interface CachedRouteValue {\n kind: \"APP_ROUTE\";\n body: ArrayBuffer;\n status: number;\n headers: Record<string, string | string[]>;\n}\n\nexport interface CachedRedirectValue {\n kind: \"REDIRECT\";\n props: object;\n}\n\nexport interface CachedImageValue {\n kind: \"IMAGE\";\n etag: string;\n buffer: ArrayBuffer;\n extension: string;\n revalidate?: number;\n}\n\nexport interface CacheHandlerContext {\n dev?: boolean;\n maxMemoryCacheSize?: number;\n revalidatedTags?: string[];\n [key: string]: unknown;\n}\n\nexport interface CacheHandler {\n get(key: string, ctx?: Record<string, unknown>): Promise<CacheHandlerValue | null>;\n\n set(\n key: string,\n data: IncrementalCacheValue | null,\n ctx?: Record<string, unknown>,\n ): Promise<void>;\n\n revalidateTag(tags: string | string[], durations?: { expire?: number }): Promise<void>;\n\n resetRequestCache?(): void;\n}\n\n// ---------------------------------------------------------------------------\n// Default in-memory adapter — works everywhere, suitable for dev and\n// single-process production. Not shared across workers/instances.\n// ---------------------------------------------------------------------------\n\ninterface MemoryEntry {\n value: IncrementalCacheValue | null;\n tags: string[];\n lastModified: number;\n revalidateAt: number | null;\n}\n\nexport class MemoryCacheHandler implements CacheHandler {\n private store = new Map<string, MemoryEntry>();\n private tagRevalidatedAt = new Map<string, number>();\n\n async get(key: string, _ctx?: Record<string, unknown>): Promise<CacheHandlerValue | null> {\n const entry = this.store.get(key);\n if (!entry) return null;\n\n // Check tag-based invalidation first — if tag was invalidated, treat as hard miss\n for (const tag of entry.tags) {\n const revalidatedAt = this.tagRevalidatedAt.get(tag);\n if (revalidatedAt && revalidatedAt >= entry.lastModified) {\n this.store.delete(key);\n return null;\n }\n }\n\n // Check time-based expiry — return stale entry with cacheState=\"stale\"\n // instead of deleting, so ISR can serve stale-while-revalidate\n if (entry.revalidateAt !== null && Date.now() > entry.revalidateAt) {\n return {\n lastModified: entry.lastModified,\n value: entry.value,\n cacheState: \"stale\",\n };\n }\n\n return {\n lastModified: entry.lastModified,\n value: entry.value,\n };\n }\n\n async set(\n key: string,\n data: IncrementalCacheValue | null,\n ctx?: Record<string, unknown>,\n ): Promise<void> {\n const tags: string[] = [];\n if (data && \"tags\" in data && Array.isArray(data.tags)) {\n tags.push(...data.tags);\n }\n if (ctx && \"tags\" in ctx && Array.isArray(ctx.tags)) {\n tags.push(...(ctx.tags as string[]));\n }\n\n let revalidateAt: number | null = null;\n if (ctx) {\n // Handle both old-style { revalidate } and new-style { cacheControl: { revalidate } }\n const revalidate = (ctx as any).cacheControl?.revalidate ?? (ctx as any).revalidate;\n if (typeof revalidate === \"number\" && revalidate > 0) {\n revalidateAt = Date.now() + revalidate * 1000;\n }\n }\n if (data && \"revalidate\" in data && typeof data.revalidate === \"number\") {\n revalidateAt = Date.now() + data.revalidate * 1000;\n }\n\n this.store.set(key, {\n value: data,\n tags,\n lastModified: Date.now(),\n revalidateAt,\n });\n }\n\n async revalidateTag(tags: string | string[], _durations?: { expire?: number }): Promise<void> {\n const tagList = Array.isArray(tags) ? tags : [tags];\n const now = Date.now();\n for (const tag of tagList) {\n this.tagRevalidatedAt.set(tag, now);\n }\n }\n\n resetRequestCache(): void {\n // No-op for the simple memory cache. In a production adapter,\n // this would clear per-request caches (e.g., dedup fetch calls).\n }\n}\n\n// ---------------------------------------------------------------------------\n// Active cache handler — the singleton used by next/cache API functions.\n// Defaults to MemoryCacheHandler, can be swapped at runtime.\n// ---------------------------------------------------------------------------\n\nlet activeHandler: CacheHandler = new MemoryCacheHandler();\n\n/**\n * Set a custom CacheHandler. Call this during server startup to\n * plug in Cloudflare KV, Redis, DynamoDB, or any other backend.\n *\n * The handler must implement the CacheHandler interface (same shape\n * as Next.js 16's CacheHandler class).\n */\nexport function setCacheHandler(handler: CacheHandler): void {\n activeHandler = handler;\n}\n\n/**\n * Get the active CacheHandler (for internal use or testing).\n */\nexport function getCacheHandler(): CacheHandler {\n return activeHandler;\n}\n\n// ---------------------------------------------------------------------------\n// Public API — what app code imports from 'next/cache'\n// ---------------------------------------------------------------------------\n\n/**\n * Revalidate cached data associated with a specific cache tag.\n *\n * Works with both `fetch(..., { next: { tags: ['myTag'] } })` and\n * `unstable_cache(fn, keys, { tags: ['myTag'] })`.\n */\n/**\n * Revalidate cached data associated with a specific cache tag.\n *\n * Next.js 16 updated signature: requires a cacheLife profile as second argument\n * for stale-while-revalidate (SWR) behavior. The single-argument form is\n * deprecated but still supported for backward compatibility.\n *\n * @param tag - Cache tag to revalidate\n * @param profile - cacheLife profile name (e.g. 'max', 'hours') or inline { expire: number }\n */\nexport async function revalidateTag(\n tag: string,\n profile?: string | { expire?: number },\n): Promise<void> {\n // Resolve the profile to durations for the handler\n let durations: { expire?: number } | undefined;\n if (typeof profile === \"string\") {\n const resolved = cacheLifeProfiles[profile];\n if (resolved) {\n durations = { expire: resolved.expire };\n }\n } else if (profile && typeof profile === \"object\") {\n durations = profile;\n }\n await activeHandler.revalidateTag(tag, durations);\n}\n\n/**\n * Revalidate cached data associated with a specific path.\n *\n * Under the hood, Next.js converts paths to internal tags.\n * We use a `_N_T_/path` prefix convention for path-based tags.\n */\nexport async function revalidatePath(path: string, _type?: \"page\" | \"layout\"): Promise<void> {\n // Next.js internally converts paths to tags with a prefix\n const pathTag = `_N_T_${path}`;\n await activeHandler.revalidateTag([path, pathTag]);\n}\n\n/**\n * Expire and immediately refresh cached data for a tag (Next.js 16).\n *\n * Server Actions-only API that provides read-your-writes semantics:\n * the cache entry is expired and fresh data is read within the same request,\n * so the user immediately sees their changes.\n *\n * Use this for interactive features (forms, user settings) where users\n * expect to see their updates instantly.\n *\n * @param tag - Cache tag to expire and refresh\n */\nexport async function updateTag(tag: string): Promise<void> {\n // Expire the tag immediately (same as revalidateTag without SWR)\n await activeHandler.revalidateTag(tag);\n}\n\n/**\n * Refresh uncached data on the page (Next.js 16).\n *\n * Server Actions-only API that signals the client to re-fetch dynamic\n * (uncached) data without touching the cache. Complementary to the\n * client-side router.refresh().\n *\n * Use this when you need to refresh data like notification counts,\n * live metrics, or status indicators after performing a server action.\n */\nexport function refresh(): void {\n // In our implementation, this is a signal that the client should\n // refresh dynamic data. The actual refresh happens on the client side\n // via the RSC protocol — the server action response triggers a\n // client-side navigation refresh.\n // For now, this is a no-op on the server; the Server Action response\n // mechanism already handles re-rendering the affected RSC tree.\n}\n\n/**\n * Opt out of static rendering and indicate a particular component should not be cached.\n *\n * In Next.js, calling noStore() inside a Server Component ensures the component\n * is dynamically rendered. In our implementation, this is a no-op since we don't\n * have the same static/dynamic rendering split — all server rendering is on-demand.\n * It's provided for API compatibility so apps importing it don't break.\n */\nexport function unstable_noStore(): void {\n // Signal dynamic usage so ISR-configured routes bypass the cache\n _markDynamic();\n}\n\n// Also export as `noStore` (Next.js 15+ naming)\nexport { unstable_noStore as noStore };\n\n// ---------------------------------------------------------------------------\n// Request-scoped cacheLife for page-level \"use cache\" directives.\n// When cacheLife() is called outside a \"use cache\" function context (e.g.,\n// in a page component with file-level \"use cache\"), the resolved config is\n// stored here so the server can read it after rendering and apply ISR caching.\n//\n// Uses AsyncLocalStorage for request isolation on concurrent workers.\n// ---------------------------------------------------------------------------\ninterface CacheState {\n requestScopedCacheLife: CacheLifeConfig | null;\n}\n\nconst _ALS_KEY = Symbol.for(\"vinext.cache.als\");\nconst _FALLBACK_KEY = Symbol.for(\"vinext.cache.fallback\");\nconst _g = globalThis as unknown as Record<PropertyKey, unknown>;\nconst _cacheAls = (_g[_ALS_KEY] ??=\n new AsyncLocalStorage<CacheState>()) as AsyncLocalStorage<CacheState>;\n\nconst _cacheFallbackState = (_g[_FALLBACK_KEY] ??= {\n requestScopedCacheLife: null,\n} satisfies CacheState) as CacheState;\n\nfunction _getCacheState(): CacheState {\n return _cacheAls.getStore() ?? _cacheFallbackState;\n}\n\n/**\n * Run a function within a cache state ALS scope.\n * Ensures per-request isolation for request-scoped cacheLife config\n * on concurrent runtimes.\n * @internal\n */\nexport function _runWithCacheState<T>(fn: () => T | Promise<T>): T | Promise<T> {\n const state: CacheState = {\n requestScopedCacheLife: null,\n };\n return _cacheAls.run(state, fn);\n}\n\n/**\n * Initialize cache ALS for a new request. Call at request entry.\n * Only needed when not using _runWithCacheState() (legacy path).\n * @internal\n */\nexport function _initRequestScopedCacheState(): void {\n const state = _cacheAls.getStore();\n if (state) {\n state.requestScopedCacheLife = null;\n } else {\n _cacheFallbackState.requestScopedCacheLife = null;\n }\n}\n\n/**\n * Set a request-scoped cache life config. Called by cacheLife() when outside\n * a \"use cache\" function context.\n * @internal\n */\nexport function _setRequestScopedCacheLife(config: CacheLifeConfig): void {\n const state = _getCacheState();\n if (state.requestScopedCacheLife === null) {\n state.requestScopedCacheLife = { ...config };\n } else {\n // Minimum-wins rule\n if (config.stale !== undefined) {\n state.requestScopedCacheLife.stale =\n state.requestScopedCacheLife.stale !== undefined\n ? Math.min(state.requestScopedCacheLife.stale, config.stale)\n : config.stale;\n }\n if (config.revalidate !== undefined) {\n state.requestScopedCacheLife.revalidate =\n state.requestScopedCacheLife.revalidate !== undefined\n ? Math.min(state.requestScopedCacheLife.revalidate, config.revalidate)\n : config.revalidate;\n }\n if (config.expire !== undefined) {\n state.requestScopedCacheLife.expire =\n state.requestScopedCacheLife.expire !== undefined\n ? Math.min(state.requestScopedCacheLife.expire, config.expire)\n : config.expire;\n }\n }\n}\n\n/**\n * Consume and reset the request-scoped cache life. Returns null if none was set.\n * @internal\n */\nexport function _consumeRequestScopedCacheLife(): CacheLifeConfig | null {\n const state = _getCacheState();\n const config = state.requestScopedCacheLife;\n state.requestScopedCacheLife = null;\n return config;\n}\n\n// ---------------------------------------------------------------------------\n// cacheLife / cacheTag — Next.js 15+ \"use cache\" APIs\n// ---------------------------------------------------------------------------\n\n/**\n * Cache life configuration. Controls stale-while-revalidate behavior.\n */\nexport interface CacheLifeConfig {\n /** How long (seconds) the client can cache without checking the server */\n stale?: number;\n /** How frequently (seconds) the server cache refreshes */\n revalidate?: number;\n /** Max staleness (seconds) before deoptimizing to dynamic */\n expire?: number;\n}\n\n/**\n * Built-in cache life profiles matching Next.js 16.\n */\nexport const cacheLifeProfiles: Record<string, CacheLifeConfig> = {\n default: { revalidate: 900, expire: 4294967294 },\n seconds: { stale: 30, revalidate: 1, expire: 60 },\n minutes: { stale: 300, revalidate: 60, expire: 3600 },\n hours: { stale: 300, revalidate: 3600, expire: 86400 },\n days: { stale: 300, revalidate: 86400, expire: 604800 },\n weeks: { stale: 300, revalidate: 604800, expire: 2592000 },\n max: { stale: 300, revalidate: 2592000, expire: 31536000 },\n};\n\n/**\n * Set the cache lifetime for a \"use cache\" function.\n *\n * Accepts either a built-in profile name (e.g., \"hours\", \"days\") or a custom\n * configuration object. In Next.js, this only works inside \"use cache\" functions.\n *\n * When called inside a \"use cache\" function, this sets the cache TTL.\n * The \"minimum-wins\" rule applies: if called multiple times, the shortest\n * duration for each field wins.\n *\n * When called outside a \"use cache\" context, this is a validated no-op.\n */\nexport function cacheLife(profile: string | CacheLifeConfig): void {\n let resolvedConfig: CacheLifeConfig;\n\n if (typeof profile === \"string\") {\n // Validate the profile name exists\n if (!cacheLifeProfiles[profile]) {\n console.warn(\n `[vinext] cacheLife: unknown profile \"${profile}\". ` +\n `Available profiles: ${Object.keys(cacheLifeProfiles).join(\", \")}`,\n );\n return;\n }\n resolvedConfig = { ...cacheLifeProfiles[profile] };\n } else if (typeof profile === \"object\" && profile !== null) {\n // Validate the config shape\n if (\n profile.expire !== undefined &&\n profile.revalidate !== undefined &&\n profile.expire < profile.revalidate\n ) {\n console.warn(\"[vinext] cacheLife: expire must be >= revalidate\");\n }\n resolvedConfig = { ...profile };\n } else {\n return;\n }\n\n // If we're inside a \"use cache\" context, push the config\n try {\n const ctx = _getCacheContextFn?.();\n if (ctx) {\n ctx.lifeConfigs.push(resolvedConfig);\n return;\n }\n } catch {\n // Fall through to request-scoped\n }\n\n // Outside a \"use cache\" context (e.g., page component with file-level \"use cache\"):\n // store as request-scoped so the server can read it after rendering.\n _setRequestScopedCacheLife(resolvedConfig);\n}\n\n/**\n * Tag a \"use cache\" function's cached result for on-demand revalidation.\n *\n * Tags set here can be invalidated via revalidateTag(). In Next.js, this only\n * works inside \"use cache\" functions.\n *\n * When called inside a \"use cache\" function, tags are attached to the cached\n * entry. They can later be invalidated via revalidateTag().\n *\n * When called outside a \"use cache\" context, this is a no-op.\n */\nexport function cacheTag(...tags: string[]): void {\n try {\n const ctx = _getCacheContextFn?.();\n if (ctx) {\n ctx.tags.push(...tags);\n }\n } catch {\n // Not in a cache context — no-op\n }\n}\n\n// ---------------------------------------------------------------------------\n// unstable_cache — the older caching API\n// ---------------------------------------------------------------------------\n\n/**\n * AsyncLocalStorage to track whether we're inside an unstable_cache() callback.\n * Stored on globalThis via Symbol so headers.ts can detect the scope without\n * a direct import (avoiding circular dependencies).\n */\nconst _UNSTABLE_CACHE_ALS_KEY = Symbol.for(\"vinext.unstableCache.als\");\nconst _unstableCacheAls = (_g[_UNSTABLE_CACHE_ALS_KEY] ??=\n new AsyncLocalStorage<boolean>()) as AsyncLocalStorage<boolean>;\nconst UNSTABLE_CACHE_UNDEFINED_SENTINEL = \"__vinext_unstable_cache_undefined__\";\n\nfunction serializeUnstableCacheResult(value: unknown): string {\n return value === undefined ? UNSTABLE_CACHE_UNDEFINED_SENTINEL : JSON.stringify(value);\n}\n\nfunction deserializeUnstableCacheResult(body: string): unknown {\n if (body === UNSTABLE_CACHE_UNDEFINED_SENTINEL) {\n return undefined;\n }\n\n return JSON.parse(body);\n}\n\n/**\n * Check if the current execution context is inside an unstable_cache() callback.\n * Used by headers(), cookies(), and connection() to throw errors when\n * dynamic request APIs are called inside a cache scope.\n */\nexport function isInsideUnstableCacheScope(): boolean {\n return _unstableCacheAls.getStore() === true;\n}\n\ninterface UnstableCacheOptions {\n revalidate?: number | false;\n tags?: string[];\n}\n\n/**\n * Wrap an async function with caching.\n *\n * Returns a new function that caches results. The cache key is derived\n * from keyParts + serialized arguments.\n */\nexport function unstable_cache<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n keyParts?: string[],\n options?: UnstableCacheOptions,\n): T {\n const baseKey = keyParts ? keyParts.join(\":\") : fnv1a64(fn.toString());\n const tags = options?.tags ?? [];\n const revalidateSeconds = options?.revalidate;\n\n const cachedFn = async (...args: any[]): Promise<any> => {\n const argsKey = JSON.stringify(args);\n const cacheKey = `unstable_cache:${baseKey}:${argsKey}`;\n\n // Try to get from cache. Check cacheState so time-expired entries\n // trigger a re-fetch instead of being served indefinitely.\n const existing = await activeHandler.get(cacheKey, {\n kind: \"FETCH\",\n tags,\n });\n if (existing?.value && existing.value.kind === \"FETCH\" && existing.cacheState !== \"stale\") {\n try {\n return deserializeUnstableCacheResult(existing.value.data.body);\n } catch {\n // Corrupted entry, fall through to re-fetch\n }\n }\n\n // Cache miss — call the function inside the unstable_cache ALS scope\n // so that headers()/cookies()/connection() can detect they're in a\n // cache scope and throw an appropriate error.\n const result = await _unstableCacheAls.run(true, () => fn(...args));\n\n // Store in cache using the FETCH kind\n const cacheValue: CachedFetchValue = {\n kind: \"FETCH\",\n data: {\n headers: {},\n body: serializeUnstableCacheResult(result),\n url: cacheKey,\n },\n tags,\n // revalidate: false means \"cache indefinitely\" (no time-based expiry).\n // A positive number means time-based revalidation in seconds.\n // When unset (undefined), default to false (indefinite) matching\n // Next.js behavior for unstable_cache without explicit revalidate.\n revalidate: typeof revalidateSeconds === \"number\" ? revalidateSeconds : false,\n };\n\n await activeHandler.set(cacheKey, cacheValue, {\n fetchCache: true,\n tags,\n revalidate: revalidateSeconds,\n });\n\n return result;\n };\n\n return cachedFn as T;\n}\n"]}
@@ -4,10 +4,127 @@
4
4
  * Provides build/runtime phase constants used by next.config.js
5
5
  * and some third-party libraries.
6
6
  */
7
+ export declare const MODERN_BROWSERSLIST_TARGET: string[];
8
+ export type ValueOf<T> = Required<T>[keyof T];
9
+ export declare const COMPILER_NAMES: {
10
+ readonly client: "client";
11
+ readonly server: "server";
12
+ readonly edgeServer: "edge-server";
13
+ };
14
+ export type CompilerNameValues = ValueOf<typeof COMPILER_NAMES>;
15
+ export declare const COMPILER_INDEXES: {
16
+ [compilerKey in CompilerNameValues]: number;
17
+ };
18
+ export declare const UNDERSCORE_NOT_FOUND_ROUTE = "/_not-found";
19
+ export declare const UNDERSCORE_NOT_FOUND_ROUTE_ENTRY = "/_not-found/page";
20
+ export declare const UNDERSCORE_GLOBAL_ERROR_ROUTE = "/_global-error";
21
+ export declare const UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY = "/_global-error/page";
22
+ export declare enum AdapterOutputType {
23
+ /**
24
+ * `PAGES` represents all the React pages that are under `pages/`.
25
+ */
26
+ PAGES = "PAGES",
27
+ /**
28
+ * `PAGES_API` represents all the API routes under `pages/api/`.
29
+ */
30
+ PAGES_API = "PAGES_API",
31
+ /**
32
+ * `APP_PAGE` represents all the React pages that are under `app/` with the
33
+ * filename of `page.{j,t}s{,x}`.
34
+ */
35
+ APP_PAGE = "APP_PAGE",
36
+ /**
37
+ * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the
38
+ * filename of `route.{j,t}s{,x}`.
39
+ */
40
+ APP_ROUTE = "APP_ROUTE",
41
+ /**
42
+ * `PRERENDER` represents an ISR enabled route that might
43
+ * have a seeded cache entry or fallback generated during build
44
+ */
45
+ PRERENDER = "PRERENDER",
46
+ /**
47
+ * `STATIC_FILE` represents a static file (ie /_next/static)
48
+ */
49
+ STATIC_FILE = "STATIC_FILE",
50
+ /**
51
+ * `MIDDLEWARE` represents the middleware output if present
52
+ */
53
+ MIDDLEWARE = "MIDDLEWARE"
54
+ }
55
+ export declare const PHASE_EXPORT = "phase-export";
56
+ export declare const PHASE_ANALYZE = "phase-analyze";
7
57
  export declare const PHASE_PRODUCTION_BUILD = "phase-production-build";
8
- export declare const PHASE_DEVELOPMENT_SERVER = "phase-development-server";
9
58
  export declare const PHASE_PRODUCTION_SERVER = "phase-production-server";
10
- export declare const PHASE_EXPORT = "phase-export";
11
- export declare const PHASE_INFO = "phase-info";
59
+ export declare const PHASE_DEVELOPMENT_SERVER = "phase-development-server";
12
60
  export declare const PHASE_TEST = "phase-test";
61
+ export declare const PHASE_INFO = "phase-info";
62
+ export type PHASE_TYPE = typeof PHASE_INFO | typeof PHASE_TEST | typeof PHASE_EXPORT | typeof PHASE_ANALYZE | typeof PHASE_PRODUCTION_BUILD | typeof PHASE_PRODUCTION_SERVER | typeof PHASE_DEVELOPMENT_SERVER;
63
+ export declare const PAGES_MANIFEST = "pages-manifest.json";
64
+ export declare const WEBPACK_STATS = "webpack-stats.json";
65
+ export declare const APP_PATHS_MANIFEST = "app-paths-manifest.json";
66
+ export declare const APP_PATH_ROUTES_MANIFEST = "app-path-routes-manifest.json";
67
+ export declare const BUILD_MANIFEST = "build-manifest.json";
68
+ export declare const FUNCTIONS_CONFIG_MANIFEST = "functions-config-manifest.json";
69
+ export declare const SUBRESOURCE_INTEGRITY_MANIFEST = "subresource-integrity-manifest";
70
+ export declare const NEXT_FONT_MANIFEST = "next-font-manifest";
71
+ export declare const EXPORT_MARKER = "export-marker.json";
72
+ export declare const EXPORT_DETAIL = "export-detail.json";
73
+ export declare const PRERENDER_MANIFEST = "prerender-manifest.json";
74
+ export declare const ROUTES_MANIFEST = "routes-manifest.json";
75
+ export declare const IMAGES_MANIFEST = "images-manifest.json";
76
+ export declare const SERVER_FILES_MANIFEST = "required-server-files";
77
+ export declare const DEV_CLIENT_PAGES_MANIFEST = "_devPagesManifest.json";
78
+ export declare const MIDDLEWARE_MANIFEST = "middleware-manifest.json";
79
+ export declare const TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST = "_clientMiddlewareManifest.json";
80
+ export declare const TURBOPACK_CLIENT_BUILD_MANIFEST = "client-build-manifest.json";
81
+ export declare const DEV_CLIENT_MIDDLEWARE_MANIFEST = "_devMiddlewareManifest.json";
82
+ export declare const REACT_LOADABLE_MANIFEST = "react-loadable-manifest.json";
83
+ export declare const SERVER_DIRECTORY = "server";
84
+ export declare const CONFIG_FILES: string[];
85
+ export declare const BUILD_ID_FILE = "BUILD_ID";
86
+ export declare const BLOCKED_PAGES: string[];
87
+ export declare const CLIENT_PUBLIC_FILES_PATH = "public";
88
+ export declare const CLIENT_STATIC_FILES_PATH = "static";
89
+ export declare const STRING_LITERAL_DROP_BUNDLE = "__NEXT_DROP_CLIENT_FILE__";
90
+ export declare const NEXT_BUILTIN_DOCUMENT = "__NEXT_BUILTIN_DOCUMENT__";
91
+ export declare const BARREL_OPTIMIZATION_PREFIX = "__barrel_optimize__";
92
+ export declare const CLIENT_REFERENCE_MANIFEST = "client-reference-manifest";
93
+ export declare const SERVER_REFERENCE_MANIFEST = "server-reference-manifest";
94
+ export declare const MIDDLEWARE_BUILD_MANIFEST = "middleware-build-manifest";
95
+ export declare const MIDDLEWARE_REACT_LOADABLE_MANIFEST = "middleware-react-loadable-manifest";
96
+ export declare const INTERCEPTION_ROUTE_REWRITE_MANIFEST = "interception-route-rewrite-manifest";
97
+ export declare const DYNAMIC_CSS_MANIFEST = "dynamic-css-manifest";
98
+ export declare const CLIENT_STATIC_FILES_RUNTIME_MAIN = "main";
99
+ export declare const CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = "main-app";
100
+ export declare const APP_CLIENT_INTERNALS = "app-pages-internals";
101
+ export declare const CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = "react-refresh";
102
+ export declare const CLIENT_STATIC_FILES_RUNTIME_WEBPACK = "webpack";
103
+ export declare const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = "polyfills";
104
+ export declare const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL: unique symbol;
105
+ export declare const DEFAULT_RUNTIME_WEBPACK = "webpack-runtime";
106
+ export declare const EDGE_RUNTIME_WEBPACK = "edge-runtime-webpack";
107
+ export declare const STATIC_PROPS_ID = "__N_SSG";
108
+ export declare const SERVER_PROPS_ID = "__N_SSP";
109
+ export declare const DEFAULT_SERIF_FONT: {
110
+ name: string;
111
+ xAvgCharWidth: number;
112
+ azAvgWidth: number;
113
+ unitsPerEm: number;
114
+ };
115
+ export declare const DEFAULT_SANS_SERIF_FONT: {
116
+ name: string;
117
+ xAvgCharWidth: number;
118
+ azAvgWidth: number;
119
+ unitsPerEm: number;
120
+ };
121
+ export declare const STATIC_STATUS_PAGES: string[];
122
+ export declare const TRACE_OUTPUT_VERSION = 1;
123
+ export declare const TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000;
124
+ export declare const RSC_MODULE_TYPES: {
125
+ readonly client: "client";
126
+ readonly server: "server";
127
+ };
128
+ export declare const EDGE_UNSUPPORTED_NODE_APIS: string[];
129
+ export declare const SYSTEM_ENTRYPOINTS: Set<string>;
13
130
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shims/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,UAAU,eAAe,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shims/constants.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,172 @@
4
4
  * Provides build/runtime phase constants used by next.config.js
5
5
  * and some third-party libraries.
6
6
  */
7
+ export const MODERN_BROWSERSLIST_TARGET = ["chrome 111", "edge 111", "firefox 111", "safari 16.4"];
8
+ export const COMPILER_NAMES = {
9
+ client: "client",
10
+ server: "server",
11
+ edgeServer: "edge-server",
12
+ };
13
+ export const COMPILER_INDEXES = {
14
+ [COMPILER_NAMES.client]: 0,
15
+ [COMPILER_NAMES.server]: 1,
16
+ [COMPILER_NAMES.edgeServer]: 2,
17
+ };
18
+ // Re-export entry constants for backward compatibility
19
+ export const UNDERSCORE_NOT_FOUND_ROUTE = "/_not-found";
20
+ export const UNDERSCORE_NOT_FOUND_ROUTE_ENTRY = `${UNDERSCORE_NOT_FOUND_ROUTE}/page`;
21
+ export const UNDERSCORE_GLOBAL_ERROR_ROUTE = "/_global-error";
22
+ export const UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY = `${UNDERSCORE_GLOBAL_ERROR_ROUTE}/page`;
23
+ export var AdapterOutputType;
24
+ (function (AdapterOutputType) {
25
+ /**
26
+ * `PAGES` represents all the React pages that are under `pages/`.
27
+ */
28
+ AdapterOutputType["PAGES"] = "PAGES";
29
+ /**
30
+ * `PAGES_API` represents all the API routes under `pages/api/`.
31
+ */
32
+ AdapterOutputType["PAGES_API"] = "PAGES_API";
33
+ /**
34
+ * `APP_PAGE` represents all the React pages that are under `app/` with the
35
+ * filename of `page.{j,t}s{,x}`.
36
+ */
37
+ AdapterOutputType["APP_PAGE"] = "APP_PAGE";
38
+ /**
39
+ * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the
40
+ * filename of `route.{j,t}s{,x}`.
41
+ */
42
+ AdapterOutputType["APP_ROUTE"] = "APP_ROUTE";
43
+ /**
44
+ * `PRERENDER` represents an ISR enabled route that might
45
+ * have a seeded cache entry or fallback generated during build
46
+ */
47
+ AdapterOutputType["PRERENDER"] = "PRERENDER";
48
+ /**
49
+ * `STATIC_FILE` represents a static file (ie /_next/static)
50
+ */
51
+ AdapterOutputType["STATIC_FILE"] = "STATIC_FILE";
52
+ /**
53
+ * `MIDDLEWARE` represents the middleware output if present
54
+ */
55
+ AdapterOutputType["MIDDLEWARE"] = "MIDDLEWARE";
56
+ })(AdapterOutputType || (AdapterOutputType = {}));
57
+ export const PHASE_EXPORT = "phase-export";
58
+ export const PHASE_ANALYZE = "phase-analyze";
7
59
  export const PHASE_PRODUCTION_BUILD = "phase-production-build";
8
- export const PHASE_DEVELOPMENT_SERVER = "phase-development-server";
9
60
  export const PHASE_PRODUCTION_SERVER = "phase-production-server";
10
- export const PHASE_EXPORT = "phase-export";
11
- export const PHASE_INFO = "phase-info";
61
+ export const PHASE_DEVELOPMENT_SERVER = "phase-development-server";
12
62
  export const PHASE_TEST = "phase-test";
63
+ export const PHASE_INFO = "phase-info";
64
+ export const PAGES_MANIFEST = "pages-manifest.json";
65
+ export const WEBPACK_STATS = "webpack-stats.json";
66
+ export const APP_PATHS_MANIFEST = "app-paths-manifest.json";
67
+ export const APP_PATH_ROUTES_MANIFEST = "app-path-routes-manifest.json";
68
+ export const BUILD_MANIFEST = "build-manifest.json";
69
+ export const FUNCTIONS_CONFIG_MANIFEST = "functions-config-manifest.json";
70
+ export const SUBRESOURCE_INTEGRITY_MANIFEST = "subresource-integrity-manifest";
71
+ export const NEXT_FONT_MANIFEST = "next-font-manifest";
72
+ export const EXPORT_MARKER = "export-marker.json";
73
+ export const EXPORT_DETAIL = "export-detail.json";
74
+ export const PRERENDER_MANIFEST = "prerender-manifest.json";
75
+ export const ROUTES_MANIFEST = "routes-manifest.json";
76
+ export const IMAGES_MANIFEST = "images-manifest.json";
77
+ export const SERVER_FILES_MANIFEST = "required-server-files";
78
+ export const DEV_CLIENT_PAGES_MANIFEST = "_devPagesManifest.json";
79
+ export const MIDDLEWARE_MANIFEST = "middleware-manifest.json";
80
+ export const TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST = "_clientMiddlewareManifest.json";
81
+ export const TURBOPACK_CLIENT_BUILD_MANIFEST = "client-build-manifest.json";
82
+ export const DEV_CLIENT_MIDDLEWARE_MANIFEST = "_devMiddlewareManifest.json";
83
+ export const REACT_LOADABLE_MANIFEST = "react-loadable-manifest.json";
84
+ export const SERVER_DIRECTORY = "server";
85
+ export const CONFIG_FILES = [
86
+ "next.config.js",
87
+ "next.config.mjs",
88
+ "next.config.ts",
89
+ // process.features can be undefined on Edge runtime
90
+ // TODO: Remove `as any` once we bump @types/node to v22.10.0+
91
+ ...(process?.features?.typescript ? ["next.config.mts"] : []),
92
+ ];
93
+ export const BUILD_ID_FILE = "BUILD_ID";
94
+ export const BLOCKED_PAGES = ["/_document", "/_app", "/_error"];
95
+ export const CLIENT_PUBLIC_FILES_PATH = "public";
96
+ export const CLIENT_STATIC_FILES_PATH = "static";
97
+ export const STRING_LITERAL_DROP_BUNDLE = "__NEXT_DROP_CLIENT_FILE__";
98
+ export const NEXT_BUILTIN_DOCUMENT = "__NEXT_BUILTIN_DOCUMENT__";
99
+ export const BARREL_OPTIMIZATION_PREFIX = "__barrel_optimize__";
100
+ // server/[entry]/page_client-reference-manifest.js
101
+ export const CLIENT_REFERENCE_MANIFEST = "client-reference-manifest";
102
+ // server/server-reference-manifest
103
+ export const SERVER_REFERENCE_MANIFEST = "server-reference-manifest";
104
+ // server/middleware-build-manifest.js
105
+ export const MIDDLEWARE_BUILD_MANIFEST = "middleware-build-manifest";
106
+ // server/middleware-react-loadable-manifest.js
107
+ export const MIDDLEWARE_REACT_LOADABLE_MANIFEST = "middleware-react-loadable-manifest";
108
+ // server/interception-route-rewrite-manifest.js
109
+ export const INTERCEPTION_ROUTE_REWRITE_MANIFEST = "interception-route-rewrite-manifest";
110
+ // server/dynamic-css-manifest.js
111
+ export const DYNAMIC_CSS_MANIFEST = "dynamic-css-manifest";
112
+ // static/runtime/main.js
113
+ export const CLIENT_STATIC_FILES_RUNTIME_MAIN = `main`;
114
+ export const CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = `${CLIENT_STATIC_FILES_RUNTIME_MAIN}-app`;
115
+ // next internal client components chunk for layouts
116
+ export const APP_CLIENT_INTERNALS = "app-pages-internals";
117
+ // static/runtime/react-refresh.js
118
+ export const CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = `react-refresh`;
119
+ // static/runtime/webpack.js
120
+ export const CLIENT_STATIC_FILES_RUNTIME_WEBPACK = `webpack`;
121
+ // static/runtime/polyfills.js
122
+ export const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = "polyfills";
123
+ export const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL = Symbol(CLIENT_STATIC_FILES_RUNTIME_POLYFILLS);
124
+ export const DEFAULT_RUNTIME_WEBPACK = "webpack-runtime";
125
+ export const EDGE_RUNTIME_WEBPACK = "edge-runtime-webpack";
126
+ export const STATIC_PROPS_ID = "__N_SSG";
127
+ export const SERVER_PROPS_ID = "__N_SSP";
128
+ export const DEFAULT_SERIF_FONT = {
129
+ name: "Times New Roman",
130
+ xAvgCharWidth: 821,
131
+ azAvgWidth: 854.3953488372093,
132
+ unitsPerEm: 2048,
133
+ };
134
+ export const DEFAULT_SANS_SERIF_FONT = {
135
+ name: "Arial",
136
+ xAvgCharWidth: 904,
137
+ azAvgWidth: 934.5116279069767,
138
+ unitsPerEm: 2048,
139
+ };
140
+ export const STATIC_STATUS_PAGES = ["/500"];
141
+ export const TRACE_OUTPUT_VERSION = 1;
142
+ // in `MB`
143
+ export const TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000;
144
+ export const RSC_MODULE_TYPES = {
145
+ client: "client",
146
+ server: "server",
147
+ };
148
+ // comparing
149
+ // https://nextjs.org/docs/api-reference/edge-runtime
150
+ // with
151
+ // https://nodejs.org/docs/latest/api/globals.html
152
+ export const EDGE_UNSUPPORTED_NODE_APIS = [
153
+ "clearImmediate",
154
+ "setImmediate",
155
+ "BroadcastChannel",
156
+ "ByteLengthQueuingStrategy",
157
+ "CompressionStream",
158
+ "CountQueuingStrategy",
159
+ "DecompressionStream",
160
+ "DomException",
161
+ "MessageChannel",
162
+ "MessageEvent",
163
+ "MessagePort",
164
+ "ReadableByteStreamController",
165
+ "ReadableStreamBYOBRequest",
166
+ "ReadableStreamDefaultController",
167
+ "TransformStreamDefaultController",
168
+ "WritableStreamDefaultController",
169
+ ];
170
+ export const SYSTEM_ENTRYPOINTS = new Set([
171
+ CLIENT_STATIC_FILES_RUNTIME_MAIN,
172
+ CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,
173
+ CLIENT_STATIC_FILES_RUNTIME_MAIN_APP,
174
+ ]);
13
175
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shims/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAC/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AACnE,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC","sourcesContent":["/**\n * next/constants shim\n *\n * Provides build/runtime phase constants used by next.config.js\n * and some third-party libraries.\n */\n\nexport const PHASE_PRODUCTION_BUILD = \"phase-production-build\";\nexport const PHASE_DEVELOPMENT_SERVER = \"phase-development-server\";\nexport const PHASE_PRODUCTION_SERVER = \"phase-production-server\";\nexport const PHASE_EXPORT = \"phase-export\";\nexport const PHASE_INFO = \"phase-info\";\nexport const PHASE_TEST = \"phase-test\";\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shims/constants.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * next/constants shim\n *\n * Provides build/runtime phase constants used by next.config.js\n * and some third-party libraries.\n */\n\nexport const MODERN_BROWSERSLIST_TARGET = [\"chrome 111\", \"edge 111\", \"firefox 111\", \"safari 16.4\"];\n\nexport type ValueOf<T> = Required<T>[keyof T];\n\nexport const COMPILER_NAMES = {\n client: \"client\",\n server: \"server\",\n edgeServer: \"edge-server\",\n} as const;\n\nexport type CompilerNameValues = ValueOf<typeof COMPILER_NAMES>;\n\nexport const COMPILER_INDEXES: {\n [compilerKey in CompilerNameValues]: number;\n} = {\n [COMPILER_NAMES.client]: 0,\n [COMPILER_NAMES.server]: 1,\n [COMPILER_NAMES.edgeServer]: 2,\n} as const;\n\n// Re-export entry constants for backward compatibility\nexport const UNDERSCORE_NOT_FOUND_ROUTE = \"/_not-found\";\nexport const UNDERSCORE_NOT_FOUND_ROUTE_ENTRY = `${UNDERSCORE_NOT_FOUND_ROUTE}/page`;\nexport const UNDERSCORE_GLOBAL_ERROR_ROUTE = \"/_global-error\";\nexport const UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY = `${UNDERSCORE_GLOBAL_ERROR_ROUTE}/page`;\n\nexport enum AdapterOutputType {\n /**\n * `PAGES` represents all the React pages that are under `pages/`.\n */\n PAGES = \"PAGES\",\n\n /**\n * `PAGES_API` represents all the API routes under `pages/api/`.\n */\n PAGES_API = \"PAGES_API\",\n /**\n * `APP_PAGE` represents all the React pages that are under `app/` with the\n * filename of `page.{j,t}s{,x}`.\n */\n APP_PAGE = \"APP_PAGE\",\n\n /**\n * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n * filename of `route.{j,t}s{,x}`.\n */\n APP_ROUTE = \"APP_ROUTE\",\n\n /**\n * `PRERENDER` represents an ISR enabled route that might\n * have a seeded cache entry or fallback generated during build\n */\n PRERENDER = \"PRERENDER\",\n\n /**\n * `STATIC_FILE` represents a static file (ie /_next/static)\n */\n STATIC_FILE = \"STATIC_FILE\",\n\n /**\n * `MIDDLEWARE` represents the middleware output if present\n */\n MIDDLEWARE = \"MIDDLEWARE\",\n}\n\nexport const PHASE_EXPORT = \"phase-export\";\nexport const PHASE_ANALYZE = \"phase-analyze\";\nexport const PHASE_PRODUCTION_BUILD = \"phase-production-build\";\nexport const PHASE_PRODUCTION_SERVER = \"phase-production-server\";\nexport const PHASE_DEVELOPMENT_SERVER = \"phase-development-server\";\nexport const PHASE_TEST = \"phase-test\";\nexport const PHASE_INFO = \"phase-info\";\n\nexport type PHASE_TYPE =\n | typeof PHASE_INFO\n | typeof PHASE_TEST\n | typeof PHASE_EXPORT\n | typeof PHASE_ANALYZE\n | typeof PHASE_PRODUCTION_BUILD\n | typeof PHASE_PRODUCTION_SERVER\n | typeof PHASE_DEVELOPMENT_SERVER;\n\nexport const PAGES_MANIFEST = \"pages-manifest.json\";\nexport const WEBPACK_STATS = \"webpack-stats.json\";\nexport const APP_PATHS_MANIFEST = \"app-paths-manifest.json\";\nexport const APP_PATH_ROUTES_MANIFEST = \"app-path-routes-manifest.json\";\nexport const BUILD_MANIFEST = \"build-manifest.json\";\nexport const FUNCTIONS_CONFIG_MANIFEST = \"functions-config-manifest.json\";\nexport const SUBRESOURCE_INTEGRITY_MANIFEST = \"subresource-integrity-manifest\";\nexport const NEXT_FONT_MANIFEST = \"next-font-manifest\";\nexport const EXPORT_MARKER = \"export-marker.json\";\nexport const EXPORT_DETAIL = \"export-detail.json\";\nexport const PRERENDER_MANIFEST = \"prerender-manifest.json\";\nexport const ROUTES_MANIFEST = \"routes-manifest.json\";\nexport const IMAGES_MANIFEST = \"images-manifest.json\";\nexport const SERVER_FILES_MANIFEST = \"required-server-files\";\nexport const DEV_CLIENT_PAGES_MANIFEST = \"_devPagesManifest.json\";\nexport const MIDDLEWARE_MANIFEST = \"middleware-manifest.json\";\nexport const TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST = \"_clientMiddlewareManifest.json\";\nexport const TURBOPACK_CLIENT_BUILD_MANIFEST = \"client-build-manifest.json\";\nexport const DEV_CLIENT_MIDDLEWARE_MANIFEST = \"_devMiddlewareManifest.json\";\nexport const REACT_LOADABLE_MANIFEST = \"react-loadable-manifest.json\";\nexport const SERVER_DIRECTORY = \"server\";\nexport const CONFIG_FILES = [\n \"next.config.js\",\n \"next.config.mjs\",\n \"next.config.ts\",\n // process.features can be undefined on Edge runtime\n // TODO: Remove `as any` once we bump @types/node to v22.10.0+\n ...((process?.features as any)?.typescript ? [\"next.config.mts\"] : []),\n];\nexport const BUILD_ID_FILE = \"BUILD_ID\";\nexport const BLOCKED_PAGES = [\"/_document\", \"/_app\", \"/_error\"];\nexport const CLIENT_PUBLIC_FILES_PATH = \"public\";\nexport const CLIENT_STATIC_FILES_PATH = \"static\";\nexport const STRING_LITERAL_DROP_BUNDLE = \"__NEXT_DROP_CLIENT_FILE__\";\nexport const NEXT_BUILTIN_DOCUMENT = \"__NEXT_BUILTIN_DOCUMENT__\";\nexport const BARREL_OPTIMIZATION_PREFIX = \"__barrel_optimize__\";\n\n// server/[entry]/page_client-reference-manifest.js\nexport const CLIENT_REFERENCE_MANIFEST = \"client-reference-manifest\";\n// server/server-reference-manifest\nexport const SERVER_REFERENCE_MANIFEST = \"server-reference-manifest\";\n// server/middleware-build-manifest.js\nexport const MIDDLEWARE_BUILD_MANIFEST = \"middleware-build-manifest\";\n// server/middleware-react-loadable-manifest.js\nexport const MIDDLEWARE_REACT_LOADABLE_MANIFEST = \"middleware-react-loadable-manifest\";\n// server/interception-route-rewrite-manifest.js\nexport const INTERCEPTION_ROUTE_REWRITE_MANIFEST = \"interception-route-rewrite-manifest\";\n// server/dynamic-css-manifest.js\nexport const DYNAMIC_CSS_MANIFEST = \"dynamic-css-manifest\";\n\n// static/runtime/main.js\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN = `main`;\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = `${CLIENT_STATIC_FILES_RUNTIME_MAIN}-app`;\n// next internal client components chunk for layouts\nexport const APP_CLIENT_INTERNALS = \"app-pages-internals\";\n// static/runtime/react-refresh.js\nexport const CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = `react-refresh`;\n// static/runtime/webpack.js\nexport const CLIENT_STATIC_FILES_RUNTIME_WEBPACK = `webpack`;\n// static/runtime/polyfills.js\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = \"polyfills\";\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL = Symbol(\n CLIENT_STATIC_FILES_RUNTIME_POLYFILLS,\n);\nexport const DEFAULT_RUNTIME_WEBPACK = \"webpack-runtime\";\nexport const EDGE_RUNTIME_WEBPACK = \"edge-runtime-webpack\";\nexport const STATIC_PROPS_ID = \"__N_SSG\";\nexport const SERVER_PROPS_ID = \"__N_SSP\";\nexport const DEFAULT_SERIF_FONT = {\n name: \"Times New Roman\",\n xAvgCharWidth: 821,\n azAvgWidth: 854.3953488372093,\n unitsPerEm: 2048,\n};\nexport const DEFAULT_SANS_SERIF_FONT = {\n name: \"Arial\",\n xAvgCharWidth: 904,\n azAvgWidth: 934.5116279069767,\n unitsPerEm: 2048,\n};\nexport const STATIC_STATUS_PAGES = [\"/500\"];\nexport const TRACE_OUTPUT_VERSION = 1;\n// in `MB`\nexport const TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000;\n\nexport const RSC_MODULE_TYPES = {\n client: \"client\",\n server: \"server\",\n} as const;\n\n// comparing\n// https://nextjs.org/docs/api-reference/edge-runtime\n// with\n// https://nodejs.org/docs/latest/api/globals.html\nexport const EDGE_UNSUPPORTED_NODE_APIS = [\n \"clearImmediate\",\n \"setImmediate\",\n \"BroadcastChannel\",\n \"ByteLengthQueuingStrategy\",\n \"CompressionStream\",\n \"CountQueuingStrategy\",\n \"DecompressionStream\",\n \"DomException\",\n \"MessageChannel\",\n \"MessageEvent\",\n \"MessagePort\",\n \"ReadableByteStreamController\",\n \"ReadableStreamBYOBRequest\",\n \"ReadableStreamDefaultController\",\n \"TransformStreamDefaultController\",\n \"WritableStreamDefaultController\",\n];\n\nexport const SYSTEM_ENTRYPOINTS = new Set<string>([\n CLIENT_STATIC_FILES_RUNTIME_MAIN,\n CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,\n CLIENT_STATIC_FILES_RUNTIME_MAIN_APP,\n]);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../../src/shims/dynamic.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AACH,OAAc,EAAkB,KAAK,aAAa,EAAuB,MAAM,OAAO,CAAC;AAEvF,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;QAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5F,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAgDjF;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAG/C;AAED,iBAAS,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACxC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CAAC,CAAC,CAAC,CAkGlB;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../../src/shims/dynamic.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AACH,OAAc,EAAkB,KAAK,aAAa,EAAuB,MAAM,OAAO,CAAC;AAEvF,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;QAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5F,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAqDjF;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAG/C;AAED,iBAAS,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACxC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CAAC,CAAC,CAAC,CA0FlB;AAED,eAAe,OAAO,CAAC"}
@@ -27,7 +27,7 @@ function getDynamicErrorBoundary() {
27
27
  return DynamicErrorBoundary;
28
28
  if (!React.Component)
29
29
  return null;
30
- DynamicErrorBoundary = class extends React.Component {
30
+ DynamicErrorBoundary = class extends (React.Component) {
31
31
  constructor(props) {
32
32
  super(props);
33
33
  this.state = { error: null };
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../../src/shims/dynamic.ts"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n/**\n * next/dynamic shim\n *\n * SSR-safe dynamic imports. On the server, uses React.lazy + Suspense so that\n * renderToReadableStream suspends until the dynamically-imported component is\n * available. On the client, also uses React.lazy for code splitting.\n *\n * Supports:\n * - dynamic(() => import('./Component'))\n * - dynamic(() => import('./Component'), { loading: () => <Spinner /> })\n * - dynamic(() => import('./Component'), { ssr: false })\n */\nimport React, { lazy, Suspense, type ComponentType, useState, useEffect } from \"react\";\n\ninterface DynamicOptions {\n loading?: ComponentType<{ error?: Error | null; isLoading?: boolean; pastDelay?: boolean }>;\n ssr?: boolean;\n}\n\ntype Loader<P> = () => Promise<{ default: ComponentType<P> } | ComponentType<P>>;\n\n/**\n * Lightweight error boundary that renders the loading component with the error\n * when a dynamic() loader rejects. Without this, loader failures would propagate\n * uncaught through React's rendering — this preserves the Next.js behavior where\n * the `loading` component can display errors.\n *\n * Lazily created because React.Component is not available in the RSC environment\n * (server components use a slimmed-down React that doesn't include class components).\n */\nlet DynamicErrorBoundary: any;\nfunction getDynamicErrorBoundary() {\n if (DynamicErrorBoundary) return DynamicErrorBoundary;\n if (!React.Component) return null;\n DynamicErrorBoundary = class extends React.Component<\n { fallback: ComponentType<{ error?: Error | null; isLoading?: boolean; pastDelay?: boolean }>; children: React.ReactNode },\n { error: Error | null }\n > {\n constructor(props: any) {\n super(props);\n this.state = { error: null };\n }\n static getDerivedStateFromError(error: unknown) {\n return { error: error instanceof Error ? error : new Error(String(error)) };\n }\n render() {\n if (this.state.error) {\n return React.createElement(this.props.fallback, {\n isLoading: false,\n pastDelay: true,\n error: this.state.error,\n });\n }\n return this.props.children;\n }\n };\n return DynamicErrorBoundary;\n}\n\n// Detect server vs client\nconst isServer = typeof window === \"undefined\";\n\n// Legacy preload queue — kept for backward compatibility with Pages Router\n// which calls flushPreloads() before rendering. The App Router uses React.lazy\n// + Suspense instead, so this queue is no longer populated.\nconst preloadQueue: Promise<void>[] = [];\n\n/**\n * Wait for all pending dynamic() preloads to resolve, then clear the queue.\n * Called by the Pages Router SSR handler before rendering.\n * No-op for the App Router path which uses React.lazy + Suspense.\n */\nexport function flushPreloads(): Promise<void[]> {\n const pending = preloadQueue.splice(0);\n return Promise.all(pending);\n}\n\nfunction dynamic<P extends object = object>(\n loader: Loader<P>,\n options?: DynamicOptions,\n): ComponentType<P> {\n const { loading: LoadingComponent, ssr = true } = options ?? {};\n\n // ssr: false — render nothing on the server, lazy-load on client\n if (!ssr) {\n if (isServer) {\n // On the server, just render the loading state or nothing\n const SSRFalse = (_props: P) => {\n return LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n };\n SSRFalse.displayName = \"DynamicSSRFalse\";\n return SSRFalse;\n }\n\n // Client: use lazy with Suspense\n const LazyComponent = lazy(async () => {\n const mod = await loader();\n if (\"default\" in mod) return mod as { default: ComponentType<P> };\n return { default: mod as ComponentType<P> };\n });\n\n const ClientSSRFalse = (props: P) => {\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n\n if (!mounted) {\n return LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n }\n\n const fallback = LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n return React.createElement(\n Suspense,\n { fallback },\n React.createElement(LazyComponent, props),\n );\n };\n\n ClientSSRFalse.displayName = \"DynamicClientSSRFalse\";\n return ClientSSRFalse;\n }\n\n // SSR-enabled path\n if (isServer) {\n // Use React.lazy so that renderToReadableStream can suspend until the\n // dynamically-imported component is available. The previous eager-load\n // pattern relied on flushPreloads() being called before rendering, which\n // works for the Pages Router but not the App Router where client modules\n // are loaded lazily during RSC stream deserialization (issue #75).\n const LazyServer = lazy(async () => {\n const mod = await loader();\n if (\"default\" in mod) return mod as { default: ComponentType<P> };\n return { default: mod as ComponentType<P> };\n });\n\n const ServerDynamic = (props: P) => {\n const fallback = LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n const lazyElement = React.createElement(LazyServer, props);\n // Wrap with error boundary so loader rejections render the loading\n // component with the error instead of propagating uncaught.\n const ErrorBoundary = LoadingComponent ? getDynamicErrorBoundary() : null;\n const content = ErrorBoundary\n ? React.createElement(ErrorBoundary, { fallback: LoadingComponent }, lazyElement)\n : lazyElement;\n return React.createElement(Suspense, { fallback }, content);\n };\n\n ServerDynamic.displayName = \"DynamicServer\";\n return ServerDynamic;\n }\n\n // Client path: standard React.lazy with Suspense\n const LazyComponent = lazy(async () => {\n const mod = await loader();\n if (\"default\" in mod) return mod as { default: ComponentType<P> };\n return { default: mod as ComponentType<P> };\n });\n\n const ClientDynamic = (props: P) => {\n const fallback = LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n return React.createElement(\n Suspense,\n { fallback },\n React.createElement(LazyComponent, props),\n );\n };\n\n ClientDynamic.displayName = \"DynamicClient\";\n return ClientDynamic;\n}\n\nexport default dynamic;\n"]}
1
+ {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../../src/shims/dynamic.ts"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n/**\n * next/dynamic shim\n *\n * SSR-safe dynamic imports. On the server, uses React.lazy + Suspense so that\n * renderToReadableStream suspends until the dynamically-imported component is\n * available. On the client, also uses React.lazy for code splitting.\n *\n * Supports:\n * - dynamic(() => import('./Component'))\n * - dynamic(() => import('./Component'), { loading: () => <Spinner /> })\n * - dynamic(() => import('./Component'), { ssr: false })\n */\nimport React, { lazy, Suspense, type ComponentType, useState, useEffect } from \"react\";\n\ninterface DynamicOptions {\n loading?: ComponentType<{ error?: Error | null; isLoading?: boolean; pastDelay?: boolean }>;\n ssr?: boolean;\n}\n\ntype Loader<P> = () => Promise<{ default: ComponentType<P> } | ComponentType<P>>;\n\n/**\n * Lightweight error boundary that renders the loading component with the error\n * when a dynamic() loader rejects. Without this, loader failures would propagate\n * uncaught through React's rendering — this preserves the Next.js behavior where\n * the `loading` component can display errors.\n *\n * Lazily created because React.Component is not available in the RSC environment\n * (server components use a slimmed-down React that doesn't include class components).\n */\nlet DynamicErrorBoundary: any;\nfunction getDynamicErrorBoundary() {\n if (DynamicErrorBoundary) return DynamicErrorBoundary;\n if (!React.Component) return null;\n DynamicErrorBoundary = class extends (\n React.Component<\n {\n fallback: ComponentType<{ error?: Error | null; isLoading?: boolean; pastDelay?: boolean }>;\n children: React.ReactNode;\n },\n { error: Error | null }\n >\n ) {\n constructor(props: any) {\n super(props);\n this.state = { error: null };\n }\n static getDerivedStateFromError(error: unknown) {\n return { error: error instanceof Error ? error : new Error(String(error)) };\n }\n render() {\n if (this.state.error) {\n return React.createElement(this.props.fallback, {\n isLoading: false,\n pastDelay: true,\n error: this.state.error,\n });\n }\n return this.props.children;\n }\n };\n return DynamicErrorBoundary;\n}\n\n// Detect server vs client\nconst isServer = typeof window === \"undefined\";\n\n// Legacy preload queue — kept for backward compatibility with Pages Router\n// which calls flushPreloads() before rendering. The App Router uses React.lazy\n// + Suspense instead, so this queue is no longer populated.\nconst preloadQueue: Promise<void>[] = [];\n\n/**\n * Wait for all pending dynamic() preloads to resolve, then clear the queue.\n * Called by the Pages Router SSR handler before rendering.\n * No-op for the App Router path which uses React.lazy + Suspense.\n */\nexport function flushPreloads(): Promise<void[]> {\n const pending = preloadQueue.splice(0);\n return Promise.all(pending);\n}\n\nfunction dynamic<P extends object = object>(\n loader: Loader<P>,\n options?: DynamicOptions,\n): ComponentType<P> {\n const { loading: LoadingComponent, ssr = true } = options ?? {};\n\n // ssr: false — render nothing on the server, lazy-load on client\n if (!ssr) {\n if (isServer) {\n // On the server, just render the loading state or nothing\n const SSRFalse = (_props: P) => {\n return LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n };\n SSRFalse.displayName = \"DynamicSSRFalse\";\n return SSRFalse;\n }\n\n // Client: use lazy with Suspense\n const LazyComponent = lazy(async () => {\n const mod = await loader();\n if (\"default\" in mod) return mod as { default: ComponentType<P> };\n return { default: mod as ComponentType<P> };\n });\n\n const ClientSSRFalse = (props: P) => {\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n\n if (!mounted) {\n return LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n }\n\n const fallback = LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n return React.createElement(Suspense, { fallback }, React.createElement(LazyComponent, props));\n };\n\n ClientSSRFalse.displayName = \"DynamicClientSSRFalse\";\n return ClientSSRFalse;\n }\n\n // SSR-enabled path\n if (isServer) {\n // Use React.lazy so that renderToReadableStream can suspend until the\n // dynamically-imported component is available. The previous eager-load\n // pattern relied on flushPreloads() being called before rendering, which\n // works for the Pages Router but not the App Router where client modules\n // are loaded lazily during RSC stream deserialization (issue #75).\n const LazyServer = lazy(async () => {\n const mod = await loader();\n if (\"default\" in mod) return mod as { default: ComponentType<P> };\n return { default: mod as ComponentType<P> };\n });\n\n const ServerDynamic = (props: P) => {\n const fallback = LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n const lazyElement = React.createElement(LazyServer, props);\n // Wrap with error boundary so loader rejections render the loading\n // component with the error instead of propagating uncaught.\n const ErrorBoundary = LoadingComponent ? getDynamicErrorBoundary() : null;\n const content = ErrorBoundary\n ? React.createElement(ErrorBoundary, { fallback: LoadingComponent }, lazyElement)\n : lazyElement;\n return React.createElement(Suspense, { fallback }, content);\n };\n\n ServerDynamic.displayName = \"DynamicServer\";\n return ServerDynamic;\n }\n\n // Client path: standard React.lazy with Suspense\n const LazyComponent = lazy(async () => {\n const mod = await loader();\n if (\"default\" in mod) return mod as { default: ComponentType<P> };\n return { default: mod as ComponentType<P> };\n });\n\n const ClientDynamic = (props: P) => {\n const fallback = LoadingComponent\n ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })\n : null;\n return React.createElement(Suspense, { fallback }, React.createElement(LazyComponent, props));\n };\n\n ClientDynamic.displayName = \"DynamicClient\";\n return ClientDynamic;\n}\n\nexport default dynamic;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/shims/error-boundary.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC;IACnE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAChD,kBAAkB,EAClB,kBAAkB,CACnB;gBACa,KAAK,EAAE,kBAAkB;IAKrC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAiBjE,KAAK,aAEH;IAEF,MAAM;CASP;AAMD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AA8DD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAO7E"}
1
+ {"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/shims/error-boundary.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC;IACnE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;gBAC5E,KAAK,EAAE,kBAAkB;IAKrC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAiBjE,KAAK,aAEH;IAEF,MAAM;CAOP;AAMD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AA2DD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAO7E"}
@@ -33,7 +33,7 @@ export class ErrorBoundary extends React.Component {
33
33
  render() {
34
34
  if (this.state.error) {
35
35
  const FallbackComponent = this.props.fallback;
36
- return (_jsx(FallbackComponent, { error: this.state.error, reset: this.reset }));
36
+ return _jsx(FallbackComponent, { error: this.state.error, reset: this.reset });
37
37
  }
38
38
  return this.props.children;
39
39
  }
@@ -62,8 +62,7 @@ class NotFoundBoundaryInner extends React.Component {
62
62
  static getDerivedStateFromError(error) {
63
63
  if (error && typeof error === "object" && "digest" in error) {
64
64
  const digest = String(error.digest);
65
- if (digest === "NEXT_NOT_FOUND" ||
66
- digest.startsWith("NEXT_HTTP_ERROR_FALLBACK;404")) {
65
+ if (digest === "NEXT_NOT_FOUND" || digest.startsWith("NEXT_HTTP_ERROR_FALLBACK;404")) {
67
66
  return { notFound: true };
68
67
  }
69
68
  }