vinext 0.0.0 → 0.0.2

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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/build/static-export.d.ts +78 -0
  4. package/dist/build/static-export.d.ts.map +1 -0
  5. package/dist/build/static-export.js +553 -0
  6. package/dist/build/static-export.js.map +1 -0
  7. package/dist/check.d.ts +52 -0
  8. package/dist/check.d.ts.map +1 -0
  9. package/dist/check.js +483 -0
  10. package/dist/check.js.map +1 -0
  11. package/dist/cli.d.ts +15 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +565 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/client/entry.d.ts +2 -0
  16. package/dist/client/entry.d.ts.map +1 -0
  17. package/dist/client/entry.js +85 -0
  18. package/dist/client/entry.js.map +1 -0
  19. package/dist/cloudflare/index.d.ts +8 -0
  20. package/dist/cloudflare/index.d.ts.map +1 -0
  21. package/dist/cloudflare/index.js +8 -0
  22. package/dist/cloudflare/index.js.map +1 -0
  23. package/dist/cloudflare/kv-cache-handler.d.ts +68 -0
  24. package/dist/cloudflare/kv-cache-handler.d.ts.map +1 -0
  25. package/dist/cloudflare/kv-cache-handler.js +304 -0
  26. package/dist/cloudflare/kv-cache-handler.js.map +1 -0
  27. package/dist/cloudflare/tpr.d.ts +78 -0
  28. package/dist/cloudflare/tpr.d.ts.map +1 -0
  29. package/dist/cloudflare/tpr.js +672 -0
  30. package/dist/cloudflare/tpr.js.map +1 -0
  31. package/dist/config/config-matchers.d.ts +106 -0
  32. package/dist/config/config-matchers.d.ts.map +1 -0
  33. package/dist/config/config-matchers.js +499 -0
  34. package/dist/config/config-matchers.js.map +1 -0
  35. package/dist/config/next-config.d.ts +153 -0
  36. package/dist/config/next-config.d.ts.map +1 -0
  37. package/dist/config/next-config.js +274 -0
  38. package/dist/config/next-config.js.map +1 -0
  39. package/dist/deploy.d.ts +87 -0
  40. package/dist/deploy.d.ts.map +1 -0
  41. package/dist/deploy.js +644 -0
  42. package/dist/deploy.js.map +1 -0
  43. package/dist/index.d.ts +156 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +3296 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/init.d.ts +55 -0
  48. package/dist/init.d.ts.map +1 -0
  49. package/dist/init.js +201 -0
  50. package/dist/init.js.map +1 -0
  51. package/dist/routing/app-router.d.ts +96 -0
  52. package/dist/routing/app-router.d.ts.map +1 -0
  53. package/dist/routing/app-router.js +815 -0
  54. package/dist/routing/app-router.js.map +1 -0
  55. package/dist/routing/pages-router.d.ts +52 -0
  56. package/dist/routing/pages-router.d.ts.map +1 -0
  57. package/dist/routing/pages-router.js +239 -0
  58. package/dist/routing/pages-router.js.map +1 -0
  59. package/dist/server/api-handler.d.ts +18 -0
  60. package/dist/server/api-handler.d.ts.map +1 -0
  61. package/dist/server/api-handler.js +169 -0
  62. package/dist/server/api-handler.js.map +1 -0
  63. package/dist/server/app-dev-server.d.ts +42 -0
  64. package/dist/server/app-dev-server.d.ts.map +1 -0
  65. package/dist/server/app-dev-server.js +2718 -0
  66. package/dist/server/app-dev-server.js.map +1 -0
  67. package/dist/server/app-router-entry.d.ts +18 -0
  68. package/dist/server/app-router-entry.d.ts.map +1 -0
  69. package/dist/server/app-router-entry.js +34 -0
  70. package/dist/server/app-router-entry.js.map +1 -0
  71. package/dist/server/dev-server.d.ts +40 -0
  72. package/dist/server/dev-server.d.ts.map +1 -0
  73. package/dist/server/dev-server.js +758 -0
  74. package/dist/server/dev-server.js.map +1 -0
  75. package/dist/server/html.d.ts +22 -0
  76. package/dist/server/html.d.ts.map +1 -0
  77. package/dist/server/html.js +29 -0
  78. package/dist/server/html.js.map +1 -0
  79. package/dist/server/image-optimization.d.ts +56 -0
  80. package/dist/server/image-optimization.d.ts.map +1 -0
  81. package/dist/server/image-optimization.js +103 -0
  82. package/dist/server/image-optimization.js.map +1 -0
  83. package/dist/server/instrumentation.d.ts +68 -0
  84. package/dist/server/instrumentation.d.ts.map +1 -0
  85. package/dist/server/instrumentation.js +90 -0
  86. package/dist/server/instrumentation.js.map +1 -0
  87. package/dist/server/isr-cache.d.ts +61 -0
  88. package/dist/server/isr-cache.d.ts.map +1 -0
  89. package/dist/server/isr-cache.js +134 -0
  90. package/dist/server/isr-cache.js.map +1 -0
  91. package/dist/server/metadata-routes.d.ts +103 -0
  92. package/dist/server/metadata-routes.d.ts.map +1 -0
  93. package/dist/server/metadata-routes.js +270 -0
  94. package/dist/server/metadata-routes.js.map +1 -0
  95. package/dist/server/middleware.d.ts +77 -0
  96. package/dist/server/middleware.d.ts.map +1 -0
  97. package/dist/server/middleware.js +228 -0
  98. package/dist/server/middleware.js.map +1 -0
  99. package/dist/server/prod-server.d.ts +78 -0
  100. package/dist/server/prod-server.d.ts.map +1 -0
  101. package/dist/server/prod-server.js +712 -0
  102. package/dist/server/prod-server.js.map +1 -0
  103. package/dist/shims/amp.d.ts +17 -0
  104. package/dist/shims/amp.d.ts.map +1 -0
  105. package/dist/shims/amp.js +21 -0
  106. package/dist/shims/amp.js.map +1 -0
  107. package/dist/shims/app.d.ts +12 -0
  108. package/dist/shims/app.d.ts.map +1 -0
  109. package/dist/shims/app.js +2 -0
  110. package/dist/shims/app.js.map +1 -0
  111. package/dist/shims/cache-runtime.d.ts +68 -0
  112. package/dist/shims/cache-runtime.d.ts.map +1 -0
  113. package/dist/shims/cache-runtime.js +437 -0
  114. package/dist/shims/cache-runtime.js.map +1 -0
  115. package/dist/shims/cache.d.ts +243 -0
  116. package/dist/shims/cache.d.ts.map +1 -0
  117. package/dist/shims/cache.js +415 -0
  118. package/dist/shims/cache.js.map +1 -0
  119. package/dist/shims/client-only.d.ts +18 -0
  120. package/dist/shims/client-only.d.ts.map +1 -0
  121. package/dist/shims/client-only.js +18 -0
  122. package/dist/shims/client-only.js.map +1 -0
  123. package/dist/shims/config.d.ts +27 -0
  124. package/dist/shims/config.d.ts.map +1 -0
  125. package/dist/shims/config.js +30 -0
  126. package/dist/shims/config.js.map +1 -0
  127. package/dist/shims/constants.d.ts +13 -0
  128. package/dist/shims/constants.d.ts.map +1 -0
  129. package/dist/shims/constants.js +13 -0
  130. package/dist/shims/constants.js.map +1 -0
  131. package/dist/shims/document.d.ts +33 -0
  132. package/dist/shims/document.d.ts.map +1 -0
  133. package/dist/shims/document.js +32 -0
  134. package/dist/shims/document.js.map +1 -0
  135. package/dist/shims/dynamic.d.ts +33 -0
  136. package/dist/shims/dynamic.d.ts.map +1 -0
  137. package/dist/shims/dynamic.js +149 -0
  138. package/dist/shims/dynamic.js.map +1 -0
  139. package/dist/shims/error-boundary.d.ts +33 -0
  140. package/dist/shims/error-boundary.d.ts.map +1 -0
  141. package/dist/shims/error-boundary.js +88 -0
  142. package/dist/shims/error-boundary.js.map +1 -0
  143. package/dist/shims/error.d.ts +16 -0
  144. package/dist/shims/error.d.ts.map +1 -0
  145. package/dist/shims/error.js +45 -0
  146. package/dist/shims/error.js.map +1 -0
  147. package/dist/shims/fetch-cache.d.ts +61 -0
  148. package/dist/shims/fetch-cache.d.ts.map +1 -0
  149. package/dist/shims/fetch-cache.js +307 -0
  150. package/dist/shims/fetch-cache.js.map +1 -0
  151. package/dist/shims/font-google.d.ts +122 -0
  152. package/dist/shims/font-google.d.ts.map +1 -0
  153. package/dist/shims/font-google.js +387 -0
  154. package/dist/shims/font-google.js.map +1 -0
  155. package/dist/shims/font-local.d.ts +61 -0
  156. package/dist/shims/font-local.d.ts.map +1 -0
  157. package/dist/shims/font-local.js +303 -0
  158. package/dist/shims/font-local.js.map +1 -0
  159. package/dist/shims/form.d.ts +30 -0
  160. package/dist/shims/form.d.ts.map +1 -0
  161. package/dist/shims/form.js +78 -0
  162. package/dist/shims/form.js.map +1 -0
  163. package/dist/shims/head-state.d.ts +11 -0
  164. package/dist/shims/head-state.d.ts.map +1 -0
  165. package/dist/shims/head-state.js +47 -0
  166. package/dist/shims/head-state.js.map +1 -0
  167. package/dist/shims/head.d.ts +28 -0
  168. package/dist/shims/head.d.ts.map +1 -0
  169. package/dist/shims/head.js +148 -0
  170. package/dist/shims/head.js.map +1 -0
  171. package/dist/shims/headers.d.ts +150 -0
  172. package/dist/shims/headers.d.ts.map +1 -0
  173. package/dist/shims/headers.js +412 -0
  174. package/dist/shims/headers.js.map +1 -0
  175. package/dist/shims/image-config.d.ts +30 -0
  176. package/dist/shims/image-config.d.ts.map +1 -0
  177. package/dist/shims/image-config.js +91 -0
  178. package/dist/shims/image-config.js.map +1 -0
  179. package/dist/shims/image.d.ts +63 -0
  180. package/dist/shims/image.d.ts.map +1 -0
  181. package/dist/shims/image.js +284 -0
  182. package/dist/shims/image.js.map +1 -0
  183. package/dist/shims/internal/api-utils.d.ts +12 -0
  184. package/dist/shims/internal/api-utils.d.ts.map +1 -0
  185. package/dist/shims/internal/api-utils.js +7 -0
  186. package/dist/shims/internal/api-utils.js.map +1 -0
  187. package/dist/shims/internal/app-router-context.d.ts +21 -0
  188. package/dist/shims/internal/app-router-context.d.ts.map +1 -0
  189. package/dist/shims/internal/app-router-context.js +15 -0
  190. package/dist/shims/internal/app-router-context.js.map +1 -0
  191. package/dist/shims/internal/cookies.d.ts +9 -0
  192. package/dist/shims/internal/cookies.d.ts.map +1 -0
  193. package/dist/shims/internal/cookies.js +9 -0
  194. package/dist/shims/internal/cookies.js.map +1 -0
  195. package/dist/shims/internal/router-context.d.ts +2 -0
  196. package/dist/shims/internal/router-context.d.ts.map +1 -0
  197. package/dist/shims/internal/router-context.js +9 -0
  198. package/dist/shims/internal/router-context.js.map +1 -0
  199. package/dist/shims/internal/utils.d.ts +48 -0
  200. package/dist/shims/internal/utils.d.ts.map +1 -0
  201. package/dist/shims/internal/utils.js +35 -0
  202. package/dist/shims/internal/utils.js.map +1 -0
  203. package/dist/shims/internal/work-unit-async-storage.d.ts +12 -0
  204. package/dist/shims/internal/work-unit-async-storage.d.ts.map +1 -0
  205. package/dist/shims/internal/work-unit-async-storage.js +13 -0
  206. package/dist/shims/internal/work-unit-async-storage.js.map +1 -0
  207. package/dist/shims/layout-segment-context.d.ts +21 -0
  208. package/dist/shims/layout-segment-context.d.ts.map +1 -0
  209. package/dist/shims/layout-segment-context.js +27 -0
  210. package/dist/shims/layout-segment-context.js.map +1 -0
  211. package/dist/shims/legacy-image.d.ts +52 -0
  212. package/dist/shims/legacy-image.d.ts.map +1 -0
  213. package/dist/shims/legacy-image.js +46 -0
  214. package/dist/shims/legacy-image.js.map +1 -0
  215. package/dist/shims/link.d.ts +48 -0
  216. package/dist/shims/link.d.ts.map +1 -0
  217. package/dist/shims/link.js +395 -0
  218. package/dist/shims/link.js.map +1 -0
  219. package/dist/shims/metadata.d.ts +184 -0
  220. package/dist/shims/metadata.d.ts.map +1 -0
  221. package/dist/shims/metadata.js +472 -0
  222. package/dist/shims/metadata.js.map +1 -0
  223. package/dist/shims/navigation-state.d.ts +14 -0
  224. package/dist/shims/navigation-state.d.ts.map +1 -0
  225. package/dist/shims/navigation-state.js +77 -0
  226. package/dist/shims/navigation-state.js.map +1 -0
  227. package/dist/shims/navigation.d.ts +201 -0
  228. package/dist/shims/navigation.d.ts.map +1 -0
  229. package/dist/shims/navigation.js +672 -0
  230. package/dist/shims/navigation.js.map +1 -0
  231. package/dist/shims/og.d.ts +20 -0
  232. package/dist/shims/og.d.ts.map +1 -0
  233. package/dist/shims/og.js +19 -0
  234. package/dist/shims/og.js.map +1 -0
  235. package/dist/shims/router-state.d.ts +11 -0
  236. package/dist/shims/router-state.d.ts.map +1 -0
  237. package/dist/shims/router-state.js +56 -0
  238. package/dist/shims/router-state.js.map +1 -0
  239. package/dist/shims/router.d.ts +103 -0
  240. package/dist/shims/router.d.ts.map +1 -0
  241. package/dist/shims/router.js +536 -0
  242. package/dist/shims/router.js.map +1 -0
  243. package/dist/shims/script.d.ts +58 -0
  244. package/dist/shims/script.d.ts.map +1 -0
  245. package/dist/shims/script.js +163 -0
  246. package/dist/shims/script.js.map +1 -0
  247. package/dist/shims/server-only.d.ts +19 -0
  248. package/dist/shims/server-only.d.ts.map +1 -0
  249. package/dist/shims/server-only.js +19 -0
  250. package/dist/shims/server-only.js.map +1 -0
  251. package/dist/shims/server.d.ts +178 -0
  252. package/dist/shims/server.d.ts.map +1 -0
  253. package/dist/shims/server.js +377 -0
  254. package/dist/shims/server.js.map +1 -0
  255. package/dist/shims/web-vitals.d.ts +24 -0
  256. package/dist/shims/web-vitals.d.ts.map +1 -0
  257. package/dist/shims/web-vitals.js +17 -0
  258. package/dist/shims/web-vitals.js.map +1 -0
  259. package/dist/utils/hash.d.ts +6 -0
  260. package/dist/utils/hash.d.ts.map +1 -0
  261. package/dist/utils/hash.js +20 -0
  262. package/dist/utils/hash.js.map +1 -0
  263. package/dist/utils/project.d.ts +36 -0
  264. package/dist/utils/project.d.ts.map +1 -0
  265. package/dist/utils/project.js +112 -0
  266. package/dist/utils/project.js.map +1 -0
  267. package/dist/utils/query.d.ts +10 -0
  268. package/dist/utils/query.d.ts.map +1 -0
  269. package/dist/utils/query.js +27 -0
  270. package/dist/utils/query.js.map +1 -0
  271. package/package.json +65 -7
  272. package/index.js +0 -1
@@ -0,0 +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;\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 _cacheEnterWith(state: CacheState): void {\n const enterWith = (_cacheAls as any).enterWith;\n if (typeof enterWith === \"function\") {\n try {\n enterWith.call(_cacheAls, state);\n return;\n } catch {\n // Fall through to best-effort fallback.\n }\n }\n _cacheFallbackState.requestScopedCacheLife = state.requestScopedCacheLife;\n}\n\nfunction _getCacheState(): CacheState {\n return _cacheAls.getStore() ?? _cacheFallbackState;\n}\n\n/**\n * Initialize cache ALS for a new request. Call at request entry.\n * @internal\n */\nexport function _initRequestScopedCacheState(): void {\n _cacheEnterWith({ requestScopedCacheLife: null });\n _cacheFallbackState.requestScopedCacheLife = null;\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\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\n const existing = await activeHandler.get(cacheKey, {\n kind: \"FETCH\",\n tags,\n });\n if (existing?.value && existing.value.kind === \"FETCH\") {\n try {\n return JSON.parse(existing.value.data.body);\n } catch {\n // Corrupted entry, fall through to re-fetch\n }\n }\n\n // Cache miss — call the function\n const result = await fn(...args);\n\n // Store in cache using the FETCH kind\n const cacheValue: CachedFetchValue = {\n kind: \"FETCH\",\n data: {\n headers: {},\n body: JSON.stringify(result),\n url: cacheKey,\n },\n tags,\n revalidate: typeof revalidateSeconds === \"number\" ? revalidateSeconds : 0,\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"]}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shim for the `client-only` package.
3
+ *
4
+ * The real `client-only` npm package uses the `react-server` export
5
+ * condition: it's a no-op in client bundles, and throws when imported
6
+ * in a server (RSC) environment.
7
+ *
8
+ * In Vite with @vitejs/plugin-rsc, the environment system already
9
+ * separates server and client module graphs. If the real package is
10
+ * installed it works automatically. This shim exists as a fallback so
11
+ * users don't need to install `client-only` as a separate dependency.
12
+ *
13
+ * Build-time enforcement (preventing client code from being imported
14
+ * in server components) is handled by the RSC plugin's environment
15
+ * system and "use client" / "use server" directives, not by this module.
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=client-only.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-only.d.ts","sourceRoot":"","sources":["../../src/shims/client-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shim for the `client-only` package.
3
+ *
4
+ * The real `client-only` npm package uses the `react-server` export
5
+ * condition: it's a no-op in client bundles, and throws when imported
6
+ * in a server (RSC) environment.
7
+ *
8
+ * In Vite with @vitejs/plugin-rsc, the environment system already
9
+ * separates server and client module graphs. If the real package is
10
+ * installed it works automatically. This shim exists as a fallback so
11
+ * users don't need to install `client-only` as a separate dependency.
12
+ *
13
+ * Build-time enforcement (preventing client code from being imported
14
+ * in server components) is handled by the RSC plugin's environment
15
+ * system and "use client" / "use server" directives, not by this module.
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=client-only.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-only.js","sourceRoot":"","sources":["../../src/shims/client-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG","sourcesContent":["/**\n * Shim for the `client-only` package.\n *\n * The real `client-only` npm package uses the `react-server` export\n * condition: it's a no-op in client bundles, and throws when imported\n * in a server (RSC) environment.\n *\n * In Vite with @vitejs/plugin-rsc, the environment system already\n * separates server and client module graphs. If the real package is\n * installed it works automatically. This shim exists as a fallback so\n * users don't need to install `client-only` as a separate dependency.\n *\n * Build-time enforcement (preventing client code from being imported\n * in server components) is handled by the RSC plugin's environment\n * system and \"use client\" / \"use server\" directives, not by this module.\n */\n\n// Intentionally empty — this is a marker import, not a runtime API.\nexport {};\n"]}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * next/config shim
3
+ *
4
+ * Provides runtime config support (publicRuntimeConfig / serverRuntimeConfig)
5
+ * from next.config.js. Note: next/config was removed in Next.js 16, but many
6
+ * apps still use it. This shim keeps them working during migration.
7
+ *
8
+ * Usage in apps:
9
+ * import getConfig from "next/config";
10
+ * const { publicRuntimeConfig, serverRuntimeConfig } = getConfig();
11
+ */
12
+ interface RuntimeConfig {
13
+ serverRuntimeConfig: Record<string, unknown>;
14
+ publicRuntimeConfig: Record<string, unknown>;
15
+ }
16
+ /**
17
+ * Set the runtime config. Called during app bootstrap (by the plugin)
18
+ * with values from next.config.js.
19
+ */
20
+ export declare function setConfig(configValue: RuntimeConfig): void;
21
+ /**
22
+ * Get the current runtime config.
23
+ * Default export — matches `import getConfig from "next/config"`.
24
+ */
25
+ export default function getConfig(): RuntimeConfig;
26
+ export {};
27
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shims/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,UAAU,aAAa;IACrB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAOD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,aAAa,GAAG,IAAI,CAE1D;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,IAAI,aAAa,CAEjD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * next/config shim
3
+ *
4
+ * Provides runtime config support (publicRuntimeConfig / serverRuntimeConfig)
5
+ * from next.config.js. Note: next/config was removed in Next.js 16, but many
6
+ * apps still use it. This shim keeps them working during migration.
7
+ *
8
+ * Usage in apps:
9
+ * import getConfig from "next/config";
10
+ * const { publicRuntimeConfig, serverRuntimeConfig } = getConfig();
11
+ */
12
+ let runtimeConfig = {
13
+ serverRuntimeConfig: {},
14
+ publicRuntimeConfig: {},
15
+ };
16
+ /**
17
+ * Set the runtime config. Called during app bootstrap (by the plugin)
18
+ * with values from next.config.js.
19
+ */
20
+ export function setConfig(configValue) {
21
+ runtimeConfig = configValue;
22
+ }
23
+ /**
24
+ * Get the current runtime config.
25
+ * Default export — matches `import getConfig from "next/config"`.
26
+ */
27
+ export default function getConfig() {
28
+ return runtimeConfig;
29
+ }
30
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shims/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,IAAI,aAAa,GAAkB;IACjC,mBAAmB,EAAE,EAAE;IACvB,mBAAmB,EAAE,EAAE;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,WAA0B;IAClD,aAAa,GAAG,WAAW,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS;IAC/B,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["/**\n * next/config shim\n *\n * Provides runtime config support (publicRuntimeConfig / serverRuntimeConfig)\n * from next.config.js. Note: next/config was removed in Next.js 16, but many\n * apps still use it. This shim keeps them working during migration.\n *\n * Usage in apps:\n * import getConfig from \"next/config\";\n * const { publicRuntimeConfig, serverRuntimeConfig } = getConfig();\n */\n\ninterface RuntimeConfig {\n serverRuntimeConfig: Record<string, unknown>;\n publicRuntimeConfig: Record<string, unknown>;\n}\n\nlet runtimeConfig: RuntimeConfig = {\n serverRuntimeConfig: {},\n publicRuntimeConfig: {},\n};\n\n/**\n * Set the runtime config. Called during app bootstrap (by the plugin)\n * with values from next.config.js.\n */\nexport function setConfig(configValue: RuntimeConfig): void {\n runtimeConfig = configValue;\n}\n\n/**\n * Get the current runtime config.\n * Default export — matches `import getConfig from \"next/config\"`.\n */\nexport default function getConfig(): RuntimeConfig {\n return runtimeConfig;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * next/constants shim
3
+ *
4
+ * Provides build/runtime phase constants used by next.config.js
5
+ * and some third-party libraries.
6
+ */
7
+ export declare const PHASE_PRODUCTION_BUILD = "phase-production-build";
8
+ export declare const PHASE_DEVELOPMENT_SERVER = "phase-development-server";
9
+ 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";
12
+ export declare const PHASE_TEST = "phase-test";
13
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * next/constants shim
3
+ *
4
+ * Provides build/runtime phase constants used by next.config.js
5
+ * and some third-party libraries.
6
+ */
7
+ export const PHASE_PRODUCTION_BUILD = "phase-production-build";
8
+ export const PHASE_DEVELOPMENT_SERVER = "phase-development-server";
9
+ export const PHASE_PRODUCTION_SERVER = "phase-production-server";
10
+ export const PHASE_EXPORT = "phase-export";
11
+ export const PHASE_INFO = "phase-info";
12
+ export const PHASE_TEST = "phase-test";
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * next/document shim
3
+ *
4
+ * Provides Html, Head, Main, NextScript components for custom _document.tsx.
5
+ * During SSR these render placeholder markers that the dev server replaces
6
+ * with actual content.
7
+ */
8
+ import React from "react";
9
+ export declare function Html({ children, lang, ...props }: React.HTMLAttributes<HTMLHtmlElement> & {
10
+ children?: React.ReactNode;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ /**
13
+ * Document Head - renders <head> with children.
14
+ * The dev server injects meta tags, styles, etc.
15
+ */
16
+ export declare function Head({ children }: {
17
+ children?: React.ReactNode;
18
+ }): import("react/jsx-runtime").JSX.Element;
19
+ /**
20
+ * Main - renders the page content container.
21
+ */
22
+ export declare function Main(): import("react/jsx-runtime").JSX.Element;
23
+ /**
24
+ * NextScript - renders a placeholder that the dev-server replaces with
25
+ * actual hydration scripts (__NEXT_DATA__ + entry module).
26
+ * Uses dangerouslySetInnerHTML so the HTML comment survives renderToString.
27
+ */
28
+ export declare function NextScript(): import("react/jsx-runtime").JSX.Element;
29
+ /**
30
+ * Default Document component - used when no custom _document.tsx exists.
31
+ */
32
+ export default function Document(): import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/shims/document.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAMxE;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAQhE;AAED;;GAEG;AACH,wBAAgB,IAAI,4CAEnB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,4CAEzB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,4CAU/B"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function Html({ children, lang, ...props }) {
3
+ return (_jsx("html", { lang: lang, ...props, children: children }));
4
+ }
5
+ /**
6
+ * Document Head - renders <head> with children.
7
+ * The dev server injects meta tags, styles, etc.
8
+ */
9
+ export function Head({ children }) {
10
+ return (_jsxs("head", { children: [_jsx("meta", { charSet: "utf-8" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }), children] }));
11
+ }
12
+ /**
13
+ * Main - renders the page content container.
14
+ */
15
+ export function Main() {
16
+ return _jsx("div", { id: "__next", dangerouslySetInnerHTML: { __html: "__NEXT_MAIN__" } });
17
+ }
18
+ /**
19
+ * NextScript - renders a placeholder that the dev-server replaces with
20
+ * actual hydration scripts (__NEXT_DATA__ + entry module).
21
+ * Uses dangerouslySetInnerHTML so the HTML comment survives renderToString.
22
+ */
23
+ export function NextScript() {
24
+ return _jsx("span", { dangerouslySetInnerHTML: { __html: "<!-- __NEXT_SCRIPTS__ -->" } });
25
+ }
26
+ /**
27
+ * Default Document component - used when no custom _document.tsx exists.
28
+ */
29
+ export default function Document() {
30
+ return (_jsxs(Html, { children: [_jsx(Head, {}), _jsxs("body", { children: [_jsx(Main, {}), _jsx(NextScript, {})] })] }));
31
+ }
32
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/shims/document.tsx"],"names":[],"mappings":";AASA,MAAM,UAAU,IAAI,CAAC,EACnB,QAAQ,EACR,IAAI,EACJ,GAAG,KAAK,EAC+D;IACvE,OAAO,CACL,eAAM,IAAI,EAAE,IAAI,KAAM,KAAK,YACxB,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAkC;IAC/D,OAAO,CACL,2BACE,eAAM,OAAO,EAAC,OAAO,GAAG,EACxB,eAAM,IAAI,EAAC,UAAU,EAAC,OAAO,EAAC,qCAAqC,GAAG,EACrE,QAAQ,IACJ,CACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI;IAClB,OAAO,cAAK,EAAE,EAAC,QAAQ,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GAAI,CAAC;AACnF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,eAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,2BAA2B,EAAE,GAAI,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ;IAC9B,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,KAAG,EACR,2BACE,KAAC,IAAI,KAAG,EACR,KAAC,UAAU,KAAG,IACT,IACF,CACR,CAAC;AACJ,CAAC","sourcesContent":["/**\n * next/document shim\n *\n * Provides Html, Head, Main, NextScript components for custom _document.tsx.\n * During SSR these render placeholder markers that the dev server replaces\n * with actual content.\n */\nimport React from \"react\";\n\nexport function Html({\n children,\n lang,\n ...props\n}: React.HTMLAttributes<HTMLHtmlElement> & { children?: React.ReactNode }) {\n return (\n <html lang={lang} {...props}>\n {children}\n </html>\n );\n}\n\n/**\n * Document Head - renders <head> with children.\n * The dev server injects meta tags, styles, etc.\n */\nexport function Head({ children }: { children?: React.ReactNode }) {\n return (\n <head>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n {children}\n </head>\n );\n}\n\n/**\n * Main - renders the page content container.\n */\nexport function Main() {\n return <div id=\"__next\" dangerouslySetInnerHTML={{ __html: \"__NEXT_MAIN__\" }} />;\n}\n\n/**\n * NextScript - renders a placeholder that the dev-server replaces with\n * actual hydration scripts (__NEXT_DATA__ + entry module).\n * Uses dangerouslySetInnerHTML so the HTML comment survives renderToString.\n */\nexport function NextScript() {\n return <span dangerouslySetInnerHTML={{ __html: \"<!-- __NEXT_SCRIPTS__ -->\" }} />;\n}\n\n/**\n * Default Document component - used when no custom _document.tsx exists.\n */\nexport default function Document() {\n return (\n <Html>\n <Head />\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n );\n}\n"]}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * next/dynamic shim
3
+ *
4
+ * SSR-safe dynamic imports. On the server, uses React.lazy + Suspense so that
5
+ * renderToReadableStream suspends until the dynamically-imported component is
6
+ * available. On the client, also uses React.lazy for code splitting.
7
+ *
8
+ * Supports:
9
+ * - dynamic(() => import('./Component'))
10
+ * - dynamic(() => import('./Component'), { loading: () => <Spinner /> })
11
+ * - dynamic(() => import('./Component'), { ssr: false })
12
+ */
13
+ import { type ComponentType } from "react";
14
+ interface DynamicOptions {
15
+ loading?: ComponentType<{
16
+ error?: Error | null;
17
+ isLoading?: boolean;
18
+ pastDelay?: boolean;
19
+ }>;
20
+ ssr?: boolean;
21
+ }
22
+ type Loader<P> = () => Promise<{
23
+ default: ComponentType<P>;
24
+ } | ComponentType<P>>;
25
+ /**
26
+ * Wait for all pending dynamic() preloads to resolve, then clear the queue.
27
+ * Called by the Pages Router SSR handler before rendering.
28
+ * No-op for the App Router path which uses React.lazy + Suspense.
29
+ */
30
+ export declare function flushPreloads(): Promise<void[]>;
31
+ declare function dynamic<P extends object = object>(loader: Loader<P>, options?: DynamicOptions): ComponentType<P>;
32
+ export default dynamic;
33
+ //# sourceMappingURL=dynamic.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,149 @@
1
+ "use client";
2
+ /**
3
+ * next/dynamic shim
4
+ *
5
+ * SSR-safe dynamic imports. On the server, uses React.lazy + Suspense so that
6
+ * renderToReadableStream suspends until the dynamically-imported component is
7
+ * available. On the client, also uses React.lazy for code splitting.
8
+ *
9
+ * Supports:
10
+ * - dynamic(() => import('./Component'))
11
+ * - dynamic(() => import('./Component'), { loading: () => <Spinner /> })
12
+ * - dynamic(() => import('./Component'), { ssr: false })
13
+ */
14
+ import React, { lazy, Suspense, useState, useEffect } from "react";
15
+ /**
16
+ * Lightweight error boundary that renders the loading component with the error
17
+ * when a dynamic() loader rejects. Without this, loader failures would propagate
18
+ * uncaught through React's rendering — this preserves the Next.js behavior where
19
+ * the `loading` component can display errors.
20
+ *
21
+ * Lazily created because React.Component is not available in the RSC environment
22
+ * (server components use a slimmed-down React that doesn't include class components).
23
+ */
24
+ let DynamicErrorBoundary;
25
+ function getDynamicErrorBoundary() {
26
+ if (DynamicErrorBoundary)
27
+ return DynamicErrorBoundary;
28
+ if (!React.Component)
29
+ return null;
30
+ DynamicErrorBoundary = class extends React.Component {
31
+ constructor(props) {
32
+ super(props);
33
+ this.state = { error: null };
34
+ }
35
+ static getDerivedStateFromError(error) {
36
+ return { error: error instanceof Error ? error : new Error(String(error)) };
37
+ }
38
+ render() {
39
+ if (this.state.error) {
40
+ return React.createElement(this.props.fallback, {
41
+ isLoading: false,
42
+ pastDelay: true,
43
+ error: this.state.error,
44
+ });
45
+ }
46
+ return this.props.children;
47
+ }
48
+ };
49
+ return DynamicErrorBoundary;
50
+ }
51
+ // Detect server vs client
52
+ const isServer = typeof window === "undefined";
53
+ // Legacy preload queue — kept for backward compatibility with Pages Router
54
+ // which calls flushPreloads() before rendering. The App Router uses React.lazy
55
+ // + Suspense instead, so this queue is no longer populated.
56
+ const preloadQueue = [];
57
+ /**
58
+ * Wait for all pending dynamic() preloads to resolve, then clear the queue.
59
+ * Called by the Pages Router SSR handler before rendering.
60
+ * No-op for the App Router path which uses React.lazy + Suspense.
61
+ */
62
+ export function flushPreloads() {
63
+ const pending = preloadQueue.splice(0);
64
+ return Promise.all(pending);
65
+ }
66
+ function dynamic(loader, options) {
67
+ const { loading: LoadingComponent, ssr = true } = options ?? {};
68
+ // ssr: false — render nothing on the server, lazy-load on client
69
+ if (!ssr) {
70
+ if (isServer) {
71
+ // On the server, just render the loading state or nothing
72
+ const SSRFalse = (_props) => {
73
+ return LoadingComponent
74
+ ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })
75
+ : null;
76
+ };
77
+ SSRFalse.displayName = "DynamicSSRFalse";
78
+ return SSRFalse;
79
+ }
80
+ // Client: use lazy with Suspense
81
+ const LazyComponent = lazy(async () => {
82
+ const mod = await loader();
83
+ if ("default" in mod)
84
+ return mod;
85
+ return { default: mod };
86
+ });
87
+ const ClientSSRFalse = (props) => {
88
+ const [mounted, setMounted] = useState(false);
89
+ useEffect(() => setMounted(true), []);
90
+ if (!mounted) {
91
+ return LoadingComponent
92
+ ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })
93
+ : null;
94
+ }
95
+ const fallback = LoadingComponent
96
+ ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })
97
+ : null;
98
+ return React.createElement(Suspense, { fallback }, React.createElement(LazyComponent, props));
99
+ };
100
+ ClientSSRFalse.displayName = "DynamicClientSSRFalse";
101
+ return ClientSSRFalse;
102
+ }
103
+ // SSR-enabled path
104
+ if (isServer) {
105
+ // Use React.lazy so that renderToReadableStream can suspend until the
106
+ // dynamically-imported component is available. The previous eager-load
107
+ // pattern relied on flushPreloads() being called before rendering, which
108
+ // works for the Pages Router but not the App Router where client modules
109
+ // are loaded lazily during RSC stream deserialization (issue #75).
110
+ const LazyServer = lazy(async () => {
111
+ const mod = await loader();
112
+ if ("default" in mod)
113
+ return mod;
114
+ return { default: mod };
115
+ });
116
+ const ServerDynamic = (props) => {
117
+ const fallback = LoadingComponent
118
+ ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })
119
+ : null;
120
+ const lazyElement = React.createElement(LazyServer, props);
121
+ // Wrap with error boundary so loader rejections render the loading
122
+ // component with the error instead of propagating uncaught.
123
+ const ErrorBoundary = LoadingComponent ? getDynamicErrorBoundary() : null;
124
+ const content = ErrorBoundary
125
+ ? React.createElement(ErrorBoundary, { fallback: LoadingComponent }, lazyElement)
126
+ : lazyElement;
127
+ return React.createElement(Suspense, { fallback }, content);
128
+ };
129
+ ServerDynamic.displayName = "DynamicServer";
130
+ return ServerDynamic;
131
+ }
132
+ // Client path: standard React.lazy with Suspense
133
+ const LazyComponent = lazy(async () => {
134
+ const mod = await loader();
135
+ if ("default" in mod)
136
+ return mod;
137
+ return { default: mod };
138
+ });
139
+ const ClientDynamic = (props) => {
140
+ const fallback = LoadingComponent
141
+ ? React.createElement(LoadingComponent, { isLoading: true, pastDelay: true, error: null })
142
+ : null;
143
+ return React.createElement(Suspense, { fallback }, React.createElement(LazyComponent, props));
144
+ };
145
+ ClientDynamic.displayName = "DynamicClient";
146
+ return ClientDynamic;
147
+ }
148
+ export default dynamic;
149
+ //# sourceMappingURL=dynamic.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,33 @@
1
+ import React from "react";
2
+ interface ErrorBoundaryProps {
3
+ fallback: React.ComponentType<{
4
+ error: Error;
5
+ reset: () => void;
6
+ }>;
7
+ children: React.ReactNode;
8
+ }
9
+ interface ErrorBoundaryState {
10
+ error: Error | null;
11
+ }
12
+ /**
13
+ * Generic ErrorBoundary used to wrap route segments with error.tsx.
14
+ * This must be a client component since error boundaries use
15
+ * componentDidCatch / getDerivedStateFromError.
16
+ */
17
+ export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {
18
+ constructor(props: ErrorBoundaryProps);
19
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState;
20
+ reset: () => void;
21
+ render(): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
22
+ }
23
+ interface NotFoundBoundaryProps {
24
+ fallback: React.ReactNode;
25
+ children: React.ReactNode;
26
+ }
27
+ /**
28
+ * Wrapper that reads the current pathname and passes it to the inner class
29
+ * component. This enables automatic reset on client-side navigation.
30
+ */
31
+ export declare function NotFoundBoundary({ fallback, children }: NotFoundBoundaryProps): import("react/jsx-runtime").JSX.Element;
32
+ export {};
33
+ //# sourceMappingURL=error-boundary.d.ts.map
@@ -0,0 +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"}