vinext 0.0.0 → 0.0.1

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 +3287 -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 +148 -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":"dev-server.js","sourceRoot":"","sources":["../../src/server/dev-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * HTML-safe JSON serialization for embedding data in <script> tags.
3
+ *
4
+ * JSON.stringify does NOT escape characters that are meaningful to the
5
+ * HTML parser. If a JSON string value contains "</script>", the browser
6
+ * closes the script tag early — anything after it executes as HTML.
7
+ * This is a well-known stored XSS vector in SSR frameworks.
8
+ *
9
+ * Next.js mitigates this with htmlEscapeJsonString(). We do the same.
10
+ *
11
+ * Characters escaped:
12
+ * < → \u003c (prevents </script> and <!-- breakout)
13
+ * > → \u003e (prevents --> and other HTML close sequences)
14
+ * & → \u0026 (prevents &lt; entity interpretation in XHTML)
15
+ * \u2028 → \\u2028 (line separator — invalid in JS string literals pre-ES2019)
16
+ * \u2029 → \\u2029 (paragraph separator — same)
17
+ *
18
+ * The result is valid JSON that is also safe to embed in any HTML context
19
+ * without additional escaping.
20
+ */
21
+ export declare function safeJsonStringify(data: unknown): string;
22
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/server/html.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOvD"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * HTML-safe JSON serialization for embedding data in <script> tags.
3
+ *
4
+ * JSON.stringify does NOT escape characters that are meaningful to the
5
+ * HTML parser. If a JSON string value contains "</script>", the browser
6
+ * closes the script tag early — anything after it executes as HTML.
7
+ * This is a well-known stored XSS vector in SSR frameworks.
8
+ *
9
+ * Next.js mitigates this with htmlEscapeJsonString(). We do the same.
10
+ *
11
+ * Characters escaped:
12
+ * < → \u003c (prevents </script> and <!-- breakout)
13
+ * > → \u003e (prevents --> and other HTML close sequences)
14
+ * & → \u0026 (prevents &lt; entity interpretation in XHTML)
15
+ * \u2028 → \\u2028 (line separator — invalid in JS string literals pre-ES2019)
16
+ * \u2029 → \\u2029 (paragraph separator — same)
17
+ *
18
+ * The result is valid JSON that is also safe to embed in any HTML context
19
+ * without additional escaping.
20
+ */
21
+ export function safeJsonStringify(data) {
22
+ return JSON.stringify(data)
23
+ .replace(/</g, "\\u003c")
24
+ .replace(/>/g, "\\u003e")
25
+ .replace(/&/g, "\\u0026")
26
+ .replace(/\u2028/g, "\\u2028")
27
+ .replace(/\u2029/g, "\\u2029");
28
+ }
29
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/server/html.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SACxB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;SAC7B,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Image optimization request handler.
3
+ *
4
+ * Handles `/_vinext/image?url=...&w=...&q=...` requests. In production
5
+ * on Cloudflare Workers, uses the Images binding (`env.IMAGES`) to
6
+ * resize and transcode on the fly. On other runtimes (Node.js dev/prod
7
+ * server), serves the original file as a passthrough with appropriate
8
+ * Cache-Control headers.
9
+ *
10
+ * Format negotiation: inspects the `Accept` header and serves AVIF, WebP,
11
+ * or JPEG depending on client support.
12
+ */
13
+ /** The pathname that triggers image optimization. */
14
+ export declare const IMAGE_OPTIMIZATION_PATH = "/_vinext/image";
15
+ /**
16
+ * Parse and validate image optimization query parameters.
17
+ * Returns null if the request is malformed.
18
+ */
19
+ export declare function parseImageParams(url: URL): {
20
+ imageUrl: string;
21
+ width: number;
22
+ quality: number;
23
+ } | null;
24
+ /**
25
+ * Negotiate the best output format based on the Accept header.
26
+ * Returns an IANA media type.
27
+ */
28
+ export declare function negotiateImageFormat(acceptHeader: string | null): string;
29
+ /**
30
+ * Standard Cache-Control header for optimized images.
31
+ * Optimized images are immutable because the URL encodes the transform params.
32
+ */
33
+ export declare const IMAGE_CACHE_CONTROL = "public, max-age=31536000, immutable";
34
+ /**
35
+ * Handlers for image optimization I/O operations.
36
+ * Workers provide these callbacks to adapt their specific bindings.
37
+ */
38
+ export interface ImageHandlers {
39
+ /** Fetch the source image from storage (e.g., Cloudflare ASSETS binding). */
40
+ fetchAsset: (path: string, request: Request) => Promise<Response>;
41
+ /** Optional: Transform the image (resize, format, quality). */
42
+ transformImage?: (body: ReadableStream, options: {
43
+ width: number;
44
+ format: string;
45
+ quality: number;
46
+ }) => Promise<Response>;
47
+ }
48
+ /**
49
+ * Handle image optimization requests.
50
+ *
51
+ * Parses and validates the request, fetches the source image via the provided
52
+ * handlers, optionally transforms it, and returns the response with appropriate
53
+ * cache headers.
54
+ */
55
+ export declare function handleImageOptimization(request: Request, handlers: ImageHandlers): Promise<Response>;
56
+ //# sourceMappingURL=image-optimization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-optimization.d.ts","sourceRoot":"","sources":["../../src/server/image-optimization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,qDAAqD;AACrD,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqBtG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAKxE;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,wCAAwC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE,+DAA+D;IAC/D,cAAc,CAAC,EAAE,CACf,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KACxD,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,QAAQ,CAAC,CA0CnB"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Image optimization request handler.
3
+ *
4
+ * Handles `/_vinext/image?url=...&w=...&q=...` requests. In production
5
+ * on Cloudflare Workers, uses the Images binding (`env.IMAGES`) to
6
+ * resize and transcode on the fly. On other runtimes (Node.js dev/prod
7
+ * server), serves the original file as a passthrough with appropriate
8
+ * Cache-Control headers.
9
+ *
10
+ * Format negotiation: inspects the `Accept` header and serves AVIF, WebP,
11
+ * or JPEG depending on client support.
12
+ */
13
+ /** The pathname that triggers image optimization. */
14
+ export const IMAGE_OPTIMIZATION_PATH = "/_vinext/image";
15
+ /**
16
+ * Parse and validate image optimization query parameters.
17
+ * Returns null if the request is malformed.
18
+ */
19
+ export function parseImageParams(url) {
20
+ const imageUrl = url.searchParams.get("url");
21
+ if (!imageUrl)
22
+ return null;
23
+ const w = parseInt(url.searchParams.get("w") || "0", 10);
24
+ const q = parseInt(url.searchParams.get("q") || "75", 10);
25
+ // Validate width (0 = no resize, otherwise must be positive)
26
+ if (Number.isNaN(w) || w < 0)
27
+ return null;
28
+ // Validate quality (1-100)
29
+ if (Number.isNaN(q) || q < 1 || q > 100)
30
+ return null;
31
+ // Prevent open redirect / SSRF — only allow path-relative URLs.
32
+ // Use an allowlist approach: the URL must start with "/" (but not "//")
33
+ // to be a valid relative path. This blocks absolute URLs (http://, https://),
34
+ // protocol-relative (//), and exotic schemes (data:, javascript:, ftp:, etc.).
35
+ if (!imageUrl.startsWith("/") || imageUrl.startsWith("//")) {
36
+ return null;
37
+ }
38
+ return { imageUrl, width: w, quality: q };
39
+ }
40
+ /**
41
+ * Negotiate the best output format based on the Accept header.
42
+ * Returns an IANA media type.
43
+ */
44
+ export function negotiateImageFormat(acceptHeader) {
45
+ if (!acceptHeader)
46
+ return "image/jpeg";
47
+ if (acceptHeader.includes("image/avif"))
48
+ return "image/avif";
49
+ if (acceptHeader.includes("image/webp"))
50
+ return "image/webp";
51
+ return "image/jpeg";
52
+ }
53
+ /**
54
+ * Standard Cache-Control header for optimized images.
55
+ * Optimized images are immutable because the URL encodes the transform params.
56
+ */
57
+ export const IMAGE_CACHE_CONTROL = "public, max-age=31536000, immutable";
58
+ /**
59
+ * Handle image optimization requests.
60
+ *
61
+ * Parses and validates the request, fetches the source image via the provided
62
+ * handlers, optionally transforms it, and returns the response with appropriate
63
+ * cache headers.
64
+ */
65
+ export async function handleImageOptimization(request, handlers) {
66
+ const url = new URL(request.url);
67
+ const params = parseImageParams(url);
68
+ if (!params) {
69
+ return new Response("Bad Request", { status: 400 });
70
+ }
71
+ const { imageUrl, width, quality } = params;
72
+ // Fetch source image
73
+ const source = await handlers.fetchAsset(imageUrl, request);
74
+ if (!source.ok || !source.body) {
75
+ return new Response("Image not found", { status: 404 });
76
+ }
77
+ // Negotiate output format from Accept header
78
+ const format = negotiateImageFormat(request.headers.get("Accept"));
79
+ // Transform if handler provided, otherwise serve original
80
+ if (handlers.transformImage) {
81
+ try {
82
+ const transformed = await handlers.transformImage(source.body, {
83
+ width,
84
+ format,
85
+ quality,
86
+ });
87
+ const headers = new Headers(transformed.headers);
88
+ headers.set("Cache-Control", IMAGE_CACHE_CONTROL);
89
+ headers.set("Vary", "Accept");
90
+ return new Response(transformed.body, { status: 200, headers });
91
+ }
92
+ catch (e) {
93
+ console.error("[vinext] Image optimization error:", e);
94
+ // Fall through to serve original
95
+ }
96
+ }
97
+ // Fallback: serve original image with cache headers
98
+ const headers = new Headers(source.headers);
99
+ headers.set("Cache-Control", IMAGE_CACHE_CONTROL);
100
+ headers.set("Vary", "Accept");
101
+ return new Response(source.body, { status: 200, headers });
102
+ }
103
+ //# sourceMappingURL=image-optimization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-optimization.js","sourceRoot":"","sources":["../../src/server/image-optimization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * instrumentation.ts support
3
+ *
4
+ * Next.js supports an `instrumentation.ts` file at the project root that
5
+ * exports a `register()` function. This function is called once when the
6
+ * server starts, before any request handling. It's the recommended way to
7
+ * set up observability tools (Sentry, Datadog, OpenTelemetry, etc.).
8
+ *
9
+ * Optionally, it can also export `onRequestError()` which is called when
10
+ * an unhandled error occurs during request handling.
11
+ *
12
+ * References:
13
+ * - https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation
14
+ */
15
+ /**
16
+ * Find the instrumentation file in the project root.
17
+ */
18
+ export declare function findInstrumentationFile(root: string): string | null;
19
+ /**
20
+ * The onRequestError handler type from Next.js instrumentation.
21
+ *
22
+ * Called when an unhandled error occurs during request handling.
23
+ * Provides the error, the request info, and an error context.
24
+ */
25
+ export interface OnRequestErrorContext {
26
+ /** The route path (e.g., '/blog/[slug]') */
27
+ routerKind: "Pages Router" | "App Router";
28
+ /** The matched route pattern */
29
+ routePath: string;
30
+ /** The route type */
31
+ routeType: "render" | "route" | "action" | "middleware";
32
+ /** HTTP status code that will be sent */
33
+ revalidateReason?: "on-demand" | "stale" | undefined;
34
+ }
35
+ export type OnRequestErrorHandler = (error: Error, request: {
36
+ path: string;
37
+ method: string;
38
+ headers: Record<string, string>;
39
+ }, context: OnRequestErrorContext) => void | Promise<void>;
40
+ /**
41
+ * Get the registered onRequestError handler (if any).
42
+ */
43
+ export declare function getOnRequestErrorHandler(): OnRequestErrorHandler | null;
44
+ /**
45
+ * Load and execute the instrumentation file.
46
+ *
47
+ * This should be called once during server startup. It:
48
+ * 1. Loads the instrumentation module via Vite's SSR module loader
49
+ * 2. Calls the `register()` function if exported
50
+ * 3. Stores the `onRequestError()` handler if exported
51
+ *
52
+ * @param server - Vite dev server (for SSR module loading)
53
+ * @param instrumentationPath - Absolute path to the instrumentation file
54
+ */
55
+ export declare function runInstrumentation(server: {
56
+ ssrLoadModule: (id: string) => Promise<Record<string, unknown>>;
57
+ }, instrumentationPath: string): Promise<void>;
58
+ /**
59
+ * Report a request error via the instrumentation handler.
60
+ *
61
+ * No-op if no onRequestError handler is registered.
62
+ */
63
+ export declare function reportRequestError(error: Error, request: {
64
+ path: string;
65
+ method: string;
66
+ headers: Record<string, string>;
67
+ }, context: OnRequestErrorContext): Promise<void>;
68
+ //# sourceMappingURL=instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/server/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAiBH;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnE;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,UAAU,EAAE,cAAc,GAAG,YAAY,CAAC;IAC1C,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,SAAS,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;IACxD,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD;AAED,MAAM,MAAM,qBAAqB,GAAG,CAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC1E,OAAO,EAAE,qBAAqB,KAC3B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAK1B;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,GAAG,IAAI,CAEvE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE,EAC3E,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC1E,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * instrumentation.ts support
3
+ *
4
+ * Next.js supports an `instrumentation.ts` file at the project root that
5
+ * exports a `register()` function. This function is called once when the
6
+ * server starts, before any request handling. It's the recommended way to
7
+ * set up observability tools (Sentry, Datadog, OpenTelemetry, etc.).
8
+ *
9
+ * Optionally, it can also export `onRequestError()` which is called when
10
+ * an unhandled error occurs during request handling.
11
+ *
12
+ * References:
13
+ * - https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation
14
+ */
15
+ import fs from "node:fs";
16
+ import path from "node:path";
17
+ /** Possible instrumentation file names. */
18
+ const INSTRUMENTATION_FILES = [
19
+ "instrumentation.ts",
20
+ "instrumentation.tsx",
21
+ "instrumentation.js",
22
+ "instrumentation.mjs",
23
+ "src/instrumentation.ts",
24
+ "src/instrumentation.tsx",
25
+ "src/instrumentation.js",
26
+ "src/instrumentation.mjs",
27
+ ];
28
+ /**
29
+ * Find the instrumentation file in the project root.
30
+ */
31
+ export function findInstrumentationFile(root) {
32
+ for (const file of INSTRUMENTATION_FILES) {
33
+ const fullPath = path.join(root, file);
34
+ if (fs.existsSync(fullPath)) {
35
+ return fullPath;
36
+ }
37
+ }
38
+ return null;
39
+ }
40
+ /** Module-level reference to the onRequestError handler. */
41
+ let _onRequestError = null;
42
+ /**
43
+ * Get the registered onRequestError handler (if any).
44
+ */
45
+ export function getOnRequestErrorHandler() {
46
+ return _onRequestError;
47
+ }
48
+ /**
49
+ * Load and execute the instrumentation file.
50
+ *
51
+ * This should be called once during server startup. It:
52
+ * 1. Loads the instrumentation module via Vite's SSR module loader
53
+ * 2. Calls the `register()` function if exported
54
+ * 3. Stores the `onRequestError()` handler if exported
55
+ *
56
+ * @param server - Vite dev server (for SSR module loading)
57
+ * @param instrumentationPath - Absolute path to the instrumentation file
58
+ */
59
+ export async function runInstrumentation(server, instrumentationPath) {
60
+ try {
61
+ const mod = await server.ssrLoadModule(instrumentationPath);
62
+ // Call register() if exported
63
+ if (typeof mod.register === "function") {
64
+ await mod.register();
65
+ }
66
+ // Store onRequestError handler if exported
67
+ if (typeof mod.onRequestError === "function") {
68
+ _onRequestError = mod.onRequestError;
69
+ }
70
+ }
71
+ catch (err) {
72
+ console.error("[vinext] Failed to load instrumentation:", err instanceof Error ? err.message : String(err));
73
+ }
74
+ }
75
+ /**
76
+ * Report a request error via the instrumentation handler.
77
+ *
78
+ * No-op if no onRequestError handler is registered.
79
+ */
80
+ export async function reportRequestError(error, request, context) {
81
+ if (!_onRequestError)
82
+ return;
83
+ try {
84
+ await _onRequestError(error, request, context);
85
+ }
86
+ catch (reportErr) {
87
+ console.error("[vinext] onRequestError handler threw:", reportErr instanceof Error ? reportErr.message : String(reportErr));
88
+ }
89
+ }
90
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/server/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,2CAA2C;AAC3C,MAAM,qBAAqB,GAAG;IAC5B,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,wBAAwB;IACxB,yBAAyB;IACzB,wBAAwB;IACxB,yBAAyB;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAyBD,4DAA4D;AAC5D,IAAI,eAAe,GAAiC,IAAI,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA2E,EAC3E,mBAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAE5D,8BAA8B;QAC9B,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvB,CAAC;QAED,2CAA2C;QAC3C,IAAI,OAAO,GAAG,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;YAC7C,eAAe,GAAG,GAAG,CAAC,cAAuC,CAAC;QAChE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,0CAA0C,EAC1C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAY,EACZ,OAA0E,EAC1E,OAA8B;IAE9B,IAAI,CAAC,eAAe;QAAE,OAAO;IAC7B,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CACX,wCAAwC,EACxC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CACnE,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * ISR (Incremental Static Regeneration) cache layer.
3
+ *
4
+ * Wraps the pluggable CacheHandler with stale-while-revalidate semantics:
5
+ * - Fresh hit: serve immediately
6
+ * - Stale hit: serve immediately + trigger background regeneration
7
+ * - Miss: render synchronously, cache, serve
8
+ *
9
+ * Background regeneration is deduped — only one regeneration per cache key
10
+ * runs at a time, preventing thundering herd on popular pages.
11
+ *
12
+ * This layer works with any CacheHandler backend (memory, Redis, KV, etc.)
13
+ * because it only uses the standard get/set interface.
14
+ */
15
+ import { type CacheHandlerValue, type IncrementalCacheValue, type CachedPagesValue, type CachedAppPageValue } from "../shims/cache.js";
16
+ export interface ISRCacheEntry {
17
+ value: CacheHandlerValue;
18
+ isStale: boolean;
19
+ }
20
+ /**
21
+ * Get a cache entry with staleness information.
22
+ *
23
+ * Returns { value, isStale: false } for fresh entries,
24
+ * { value, isStale: true } for expired-but-usable entries,
25
+ * or null for cache misses.
26
+ */
27
+ export declare function isrGet(key: string): Promise<ISRCacheEntry | null>;
28
+ /**
29
+ * Store a value in the ISR cache with a revalidation period.
30
+ */
31
+ export declare function isrSet(key: string, data: IncrementalCacheValue, revalidateSeconds: number, tags?: string[]): Promise<void>;
32
+ /**
33
+ * Trigger a background regeneration for a cache key.
34
+ *
35
+ * If a regeneration for this key is already in progress, this is a no-op.
36
+ * The renderFn should produce the new cache value and call isrSet internally.
37
+ */
38
+ export declare function triggerBackgroundRegeneration(key: string, renderFn: () => Promise<void>): void;
39
+ /**
40
+ * Build a CachedPagesValue for the Pages Router ISR cache.
41
+ */
42
+ export declare function buildPagesCacheValue(html: string, pageData: object, status?: number): CachedPagesValue;
43
+ /**
44
+ * Build a CachedAppPageValue for the App Router ISR cache.
45
+ */
46
+ export declare function buildAppPageCacheValue(html: string, rscData?: ArrayBuffer, status?: number): CachedAppPageValue;
47
+ /**
48
+ * Compute an ISR cache key for a given router type and pathname.
49
+ * Long pathnames are hashed to stay within KV key-length limits (512 bytes).
50
+ */
51
+ export declare function isrCacheKey(router: "pages" | "app", pathname: string): string;
52
+ /**
53
+ * Store the revalidate duration for a cache key.
54
+ * Uses insertion-order LRU eviction to prevent unbounded growth.
55
+ */
56
+ export declare function setRevalidateDuration(key: string, seconds: number): void;
57
+ /**
58
+ * Get the revalidate duration for a cache key.
59
+ */
60
+ export declare function getRevalidateDuration(key: string): number | undefined;
61
+ //# sourceMappingURL=isr-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isr-cache.d.ts","sourceRoot":"","sources":["../../src/server/isr-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CASvE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,EAC3B,iBAAiB,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,IAAI,CAAC,CAMf;AAQD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC5B,IAAI,CAYN;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB,CAQlB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,EACrB,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB,CASpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK7E;AAUD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAUxE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * ISR (Incremental Static Regeneration) cache layer.
3
+ *
4
+ * Wraps the pluggable CacheHandler with stale-while-revalidate semantics:
5
+ * - Fresh hit: serve immediately
6
+ * - Stale hit: serve immediately + trigger background regeneration
7
+ * - Miss: render synchronously, cache, serve
8
+ *
9
+ * Background regeneration is deduped — only one regeneration per cache key
10
+ * runs at a time, preventing thundering herd on popular pages.
11
+ *
12
+ * This layer works with any CacheHandler backend (memory, Redis, KV, etc.)
13
+ * because it only uses the standard get/set interface.
14
+ */
15
+ import { getCacheHandler, } from "../shims/cache.js";
16
+ import { fnv1a64 } from "../utils/hash.js";
17
+ /**
18
+ * Get a cache entry with staleness information.
19
+ *
20
+ * Returns { value, isStale: false } for fresh entries,
21
+ * { value, isStale: true } for expired-but-usable entries,
22
+ * or null for cache misses.
23
+ */
24
+ export async function isrGet(key) {
25
+ const handler = getCacheHandler();
26
+ const result = await handler.get(key);
27
+ if (!result || !result.value)
28
+ return null;
29
+ return {
30
+ value: result,
31
+ isStale: result.cacheState === "stale",
32
+ };
33
+ }
34
+ /**
35
+ * Store a value in the ISR cache with a revalidation period.
36
+ */
37
+ export async function isrSet(key, data, revalidateSeconds, tags) {
38
+ const handler = getCacheHandler();
39
+ await handler.set(key, data, {
40
+ revalidate: revalidateSeconds,
41
+ tags: tags ?? [],
42
+ });
43
+ }
44
+ // ---------------------------------------------------------------------------
45
+ // Background regeneration dedup
46
+ // ---------------------------------------------------------------------------
47
+ const pendingRegenerations = new Map();
48
+ /**
49
+ * Trigger a background regeneration for a cache key.
50
+ *
51
+ * If a regeneration for this key is already in progress, this is a no-op.
52
+ * The renderFn should produce the new cache value and call isrSet internally.
53
+ */
54
+ export function triggerBackgroundRegeneration(key, renderFn) {
55
+ if (pendingRegenerations.has(key))
56
+ return;
57
+ const promise = renderFn()
58
+ .catch((err) => {
59
+ console.error(`[vinext] ISR background regeneration failed for ${key}:`, err);
60
+ })
61
+ .finally(() => {
62
+ pendingRegenerations.delete(key);
63
+ });
64
+ pendingRegenerations.set(key, promise);
65
+ }
66
+ // ---------------------------------------------------------------------------
67
+ // Helpers for building ISR cache values
68
+ // ---------------------------------------------------------------------------
69
+ /**
70
+ * Build a CachedPagesValue for the Pages Router ISR cache.
71
+ */
72
+ export function buildPagesCacheValue(html, pageData, status) {
73
+ return {
74
+ kind: "PAGES",
75
+ html,
76
+ pageData,
77
+ headers: undefined,
78
+ status,
79
+ };
80
+ }
81
+ /**
82
+ * Build a CachedAppPageValue for the App Router ISR cache.
83
+ */
84
+ export function buildAppPageCacheValue(html, rscData, status) {
85
+ return {
86
+ kind: "APP_PAGE",
87
+ html,
88
+ rscData,
89
+ headers: undefined,
90
+ postponed: undefined,
91
+ status,
92
+ };
93
+ }
94
+ /**
95
+ * Compute an ISR cache key for a given router type and pathname.
96
+ * Long pathnames are hashed to stay within KV key-length limits (512 bytes).
97
+ */
98
+ export function isrCacheKey(router, pathname) {
99
+ const normalized = pathname === "/" ? "/" : pathname.replace(/\/$/, "");
100
+ const key = `${router}:${normalized}`;
101
+ if (key.length <= 200)
102
+ return key;
103
+ return `${router}:__hash:${fnv1a64(normalized)}`;
104
+ }
105
+ // ---------------------------------------------------------------------------
106
+ // Revalidate duration tracking — remembers how long each ISR key's TTL is
107
+ // so we can emit correct Cache-Control headers on cache hits.
108
+ // ---------------------------------------------------------------------------
109
+ const MAX_REVALIDATE_ENTRIES = 10_000;
110
+ const revalidateDurations = new Map();
111
+ /**
112
+ * Store the revalidate duration for a cache key.
113
+ * Uses insertion-order LRU eviction to prevent unbounded growth.
114
+ */
115
+ export function setRevalidateDuration(key, seconds) {
116
+ // Simple LRU: delete and re-insert to move to end (most recent)
117
+ revalidateDurations.delete(key);
118
+ revalidateDurations.set(key, seconds);
119
+ // Evict oldest entries if over limit
120
+ while (revalidateDurations.size > MAX_REVALIDATE_ENTRIES) {
121
+ const first = revalidateDurations.keys().next().value;
122
+ if (first !== undefined)
123
+ revalidateDurations.delete(first);
124
+ else
125
+ break;
126
+ }
127
+ }
128
+ /**
129
+ * Get the revalidate duration for a cache key.
130
+ */
131
+ export function getRevalidateDuration(key) {
132
+ return revalidateDurations.get(key);
133
+ }
134
+ //# sourceMappingURL=isr-cache.js.map