vinext 1.0.0-beta.1 → 1.0.0-beta.3

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 (234) hide show
  1. package/README.md +10 -10
  2. package/dist/build/client-build-config.js +8 -1
  3. package/dist/build/report.d.ts +8 -1
  4. package/dist/build/report.js +12 -2
  5. package/dist/check.js +19 -2
  6. package/dist/cli.js +3 -2
  7. package/dist/config/config-matchers.d.ts +13 -37
  8. package/dist/config/config-matchers.js +35 -122
  9. package/dist/config/next-config.d.ts +15 -5
  10. package/dist/config/next-config.js +7 -1
  11. package/dist/config/request-context.d.ts +14 -0
  12. package/dist/config/request-context.js +26 -0
  13. package/dist/entries/app-browser-entry.d.ts +4 -10
  14. package/dist/entries/app-browser-entry.js +20 -4
  15. package/dist/entries/app-rsc-entry.js +30 -9
  16. package/dist/entries/app-rsc-manifest.js +36 -0
  17. package/dist/entries/pages-client-entry.js +0 -1
  18. package/dist/entries/pages-server-entry.js +13 -5
  19. package/dist/index.js +194 -101
  20. package/dist/init-cloudflare.d.ts +3 -1
  21. package/dist/init-cloudflare.js +59 -5
  22. package/dist/init.d.ts +6 -4
  23. package/dist/init.js +20 -22
  24. package/dist/plugins/extensionless-dynamic-import.js +23 -18
  25. package/dist/plugins/ignore-dynamic-requests.js +3 -1
  26. package/dist/plugins/import-meta-url.js +17 -6
  27. package/dist/plugins/og-assets.js +1 -1
  28. package/dist/plugins/require-context.js +20 -15
  29. package/dist/plugins/transform-cache.d.ts +19 -0
  30. package/dist/plugins/transform-cache.js +36 -0
  31. package/dist/routing/app-route-graph.d.ts +27 -11
  32. package/dist/routing/app-route-graph.js +158 -22
  33. package/dist/routing/app-router.js +12 -6
  34. package/dist/routing/file-matcher.d.ts +11 -22
  35. package/dist/routing/file-matcher.js +21 -33
  36. package/dist/routing/pages-router.js +23 -29
  37. package/dist/routing/route-matching.d.ts +14 -1
  38. package/dist/routing/route-matching.js +13 -1
  39. package/dist/routing/route-pattern.d.ts +2 -1
  40. package/dist/routing/route-pattern.js +7 -4
  41. package/dist/routing/route-trie.d.ts +5 -1
  42. package/dist/routing/route-trie.js +5 -2
  43. package/dist/server/api-handler.d.ts +2 -0
  44. package/dist/server/api-handler.js +3 -3
  45. package/dist/server/app-browser-entry.js +110 -37
  46. package/dist/server/app-browser-history-controller.d.ts +1 -1
  47. package/dist/server/app-browser-history-controller.js +3 -3
  48. package/dist/server/app-browser-navigation-controller.d.ts +23 -21
  49. package/dist/server/app-browser-navigation-controller.js +2 -2
  50. package/dist/server/app-browser-state.js +1 -1
  51. package/dist/server/app-browser-visible-commit.js +1 -1
  52. package/dist/server/app-fallback-renderer.d.ts +3 -0
  53. package/dist/server/app-fallback-renderer.js +4 -2
  54. package/dist/server/app-middleware.js +2 -1
  55. package/dist/server/app-page-boundary-render.d.ts +12 -1
  56. package/dist/server/app-page-boundary-render.js +84 -2
  57. package/dist/server/app-page-cache-finalizer.d.ts +1 -1
  58. package/dist/server/app-page-cache-finalizer.js +1 -1
  59. package/dist/server/app-page-cache.d.ts +2 -2
  60. package/dist/server/app-page-cache.js +16 -2
  61. package/dist/server/app-page-dispatch.d.ts +19 -2
  62. package/dist/server/app-page-dispatch.js +45 -23
  63. package/dist/server/app-page-element-builder.d.ts +9 -2
  64. package/dist/server/app-page-element-builder.js +144 -33
  65. package/dist/server/app-page-head.d.ts +56 -4
  66. package/dist/server/app-page-head.js +216 -85
  67. package/dist/server/app-page-http-access-fallback-metadata.d.ts +29 -0
  68. package/dist/server/app-page-http-access-fallback-metadata.js +114 -0
  69. package/dist/server/app-page-probe.d.ts +4 -0
  70. package/dist/server/app-page-probe.js +6 -2
  71. package/dist/server/app-page-render.d.ts +2 -2
  72. package/dist/server/app-page-render.js +1 -1
  73. package/dist/server/app-page-request.d.ts +15 -0
  74. package/dist/server/app-page-request.js +134 -14
  75. package/dist/server/app-page-response.js +1 -1
  76. package/dist/server/app-page-route-wiring.d.ts +16 -0
  77. package/dist/server/app-page-route-wiring.js +254 -52
  78. package/dist/server/app-pages-bridge.d.ts +1 -1
  79. package/dist/server/app-pages-bridge.js +2 -1
  80. package/dist/server/app-post-middleware-context.d.ts +1 -1
  81. package/dist/server/app-post-middleware-context.js +1 -1
  82. package/dist/server/app-route-handler-cache.js +4 -0
  83. package/dist/server/app-route-handler-dispatch.js +40 -20
  84. package/dist/server/app-route-handler-execution.d.ts +6 -1
  85. package/dist/server/app-route-handler-execution.js +42 -16
  86. package/dist/server/app-route-handler-policy.d.ts +2 -0
  87. package/dist/server/app-route-handler-policy.js +3 -3
  88. package/dist/server/app-route-handler-response.js +1 -1
  89. package/dist/server/app-route-module-loader.d.ts +9 -1
  90. package/dist/server/app-route-module-loader.js +4 -0
  91. package/dist/server/app-router-entry.js +6 -3
  92. package/dist/server/app-rsc-cache-busting.d.ts +1 -1
  93. package/dist/server/app-rsc-errors.d.ts +1 -1
  94. package/dist/server/app-rsc-errors.js +22 -2
  95. package/dist/server/app-rsc-handler.d.ts +10 -5
  96. package/dist/server/app-rsc-handler.js +73 -33
  97. package/dist/server/app-rsc-request-normalization.d.ts +3 -2
  98. package/dist/server/app-rsc-request-normalization.js +8 -2
  99. package/dist/server/app-rsc-response-finalizer.d.ts +2 -2
  100. package/dist/server/app-rsc-response-finalizer.js +5 -11
  101. package/dist/server/app-rsc-route-matching.d.ts +29 -0
  102. package/dist/server/app-rsc-route-matching.js +93 -11
  103. package/dist/server/app-segment-config.js +13 -3
  104. package/dist/server/app-server-action-execution.d.ts +3 -1
  105. package/dist/server/app-server-action-execution.js +9 -7
  106. package/dist/server/app-ssr-entry.js +6 -6
  107. package/dist/server/app-ssr-stream.d.ts +1 -7
  108. package/dist/server/app-ssr-stream.js +2 -10
  109. package/dist/server/cache-control.d.ts +2 -2
  110. package/dist/server/cache-control.js +2 -1
  111. package/dist/server/config-headers.d.ts +24 -0
  112. package/dist/server/config-headers.js +52 -0
  113. package/dist/server/dev-initial-server-error.d.ts +1 -1
  114. package/dist/server/dev-server.d.ts +3 -1
  115. package/dist/server/dev-server.js +170 -321
  116. package/dist/server/headers.d.ts +2 -2
  117. package/dist/server/headers.js +4 -3
  118. package/dist/server/isr-cache.d.ts +11 -34
  119. package/dist/server/isr-cache.js +33 -43
  120. package/dist/server/isr-decision.d.ts +2 -2
  121. package/dist/server/middleware-matcher-pattern.d.ts +22 -0
  122. package/dist/server/middleware-matcher-pattern.js +219 -0
  123. package/dist/server/middleware-matcher.d.ts +2 -7
  124. package/dist/server/middleware-matcher.js +13 -60
  125. package/dist/server/middleware-path-to-regexp.d.ts +14 -0
  126. package/dist/server/middleware-path-to-regexp.js +228 -0
  127. package/dist/server/middleware-runtime.js +4 -3
  128. package/dist/server/middleware.d.ts +1 -1
  129. package/dist/server/middleware.js +2 -1
  130. package/dist/server/pages-api-route.d.ts +2 -0
  131. package/dist/server/pages-api-route.js +4 -1
  132. package/dist/server/pages-data-route.d.ts +11 -1
  133. package/dist/server/pages-data-route.js +16 -1
  134. package/dist/server/pages-dev-hydration.js +0 -1
  135. package/dist/server/pages-get-initial-props.d.ts +16 -3
  136. package/dist/server/pages-get-initial-props.js +17 -10
  137. package/dist/server/pages-i18n.js +64 -16
  138. package/dist/server/pages-node-compat.d.ts +2 -0
  139. package/dist/server/pages-node-compat.js +7 -3
  140. package/dist/server/pages-page-data.d.ts +64 -10
  141. package/dist/server/pages-page-data.js +349 -80
  142. package/dist/server/pages-page-handler.d.ts +9 -3
  143. package/dist/server/pages-page-handler.js +131 -36
  144. package/dist/server/pages-page-response.d.ts +5 -3
  145. package/dist/server/pages-page-response.js +24 -27
  146. package/dist/server/pages-readiness.d.ts +3 -3
  147. package/dist/server/pages-request-pipeline.d.ts +8 -0
  148. package/dist/server/pages-request-pipeline.js +30 -12
  149. package/dist/server/pages-revalidate.d.ts +1 -1
  150. package/dist/server/pages-revalidate.js +54 -8
  151. package/dist/server/pages-router-entry.d.ts +1 -0
  152. package/dist/server/pages-router-entry.js +16 -4
  153. package/dist/server/prerender-route-params.js +2 -2
  154. package/dist/server/prod-server.d.ts +3 -5
  155. package/dist/server/prod-server.js +72 -35
  156. package/dist/server/request-pipeline.d.ts +15 -29
  157. package/dist/server/request-pipeline.js +24 -59
  158. package/dist/server/revalidation-host.d.ts +11 -0
  159. package/dist/server/revalidation-host.js +19 -0
  160. package/dist/server/rsc-stream-hints.js +122 -18
  161. package/dist/server/worker-revalidation-context.d.ts +13 -0
  162. package/dist/server/worker-revalidation-context.js +29 -0
  163. package/dist/shims/app.d.ts +1 -1
  164. package/dist/shims/cache-handler.d.ts +1 -1
  165. package/dist/shims/cache-handler.js +10 -7
  166. package/dist/shims/cache-request-state.d.ts +27 -1
  167. package/dist/shims/cache-request-state.js +60 -1
  168. package/dist/shims/cache-runtime.d.ts +18 -1
  169. package/dist/shims/cache-runtime.js +26 -8
  170. package/dist/shims/cache.d.ts +5 -5
  171. package/dist/shims/cache.js +27 -11
  172. package/dist/shims/document.d.ts +42 -83
  173. package/dist/shims/document.js +62 -53
  174. package/dist/shims/dynamic.d.ts +5 -25
  175. package/dist/shims/dynamic.js +29 -8
  176. package/dist/shims/error.d.ts +1 -1
  177. package/dist/shims/error.js +2 -2
  178. package/dist/shims/fetch-cache.js +13 -4
  179. package/dist/shims/font-google-base.d.ts +11 -4
  180. package/dist/shims/font-google-base.js +17 -8
  181. package/dist/shims/font-local.d.ts +10 -3
  182. package/dist/shims/font-local.js +41 -10
  183. package/dist/shims/head.d.ts +13 -2
  184. package/dist/shims/head.js +3 -3
  185. package/dist/shims/headers.d.ts +37 -43
  186. package/dist/shims/headers.js +183 -74
  187. package/dist/shims/image.d.ts +27 -37
  188. package/dist/shims/image.js +21 -14
  189. package/dist/shims/internal/cookie-serialize.d.ts +12 -9
  190. package/dist/shims/internal/cookie-serialize.js +10 -7
  191. package/dist/shims/internal/hybrid-client-route-owner.js +3 -1
  192. package/dist/shims/internal/interpolate-as.d.ts +15 -1
  193. package/dist/shims/internal/interpolate-as.js +27 -2
  194. package/dist/shims/internal/utils.d.ts +3 -3
  195. package/dist/shims/legacy-image.d.ts +3 -37
  196. package/dist/shims/legacy-image.js +6 -16
  197. package/dist/shims/link.d.ts +15 -22
  198. package/dist/shims/link.js +34 -13
  199. package/dist/shims/metadata.d.ts +7 -17
  200. package/dist/shims/metadata.js +74 -24
  201. package/dist/shims/navigation-context-state.d.ts +1 -1
  202. package/dist/shims/navigation.d.ts +7 -3
  203. package/dist/shims/navigation.js +25 -14
  204. package/dist/shims/navigation.react-server.js +1 -1
  205. package/dist/shims/next-shims-augmentations.d.ts +1 -0
  206. package/dist/shims/next-shims-public.d.ts +1 -0
  207. package/dist/shims/public-shim-map.json.js +103 -0
  208. package/dist/shims/readonly-url-search-params.d.ts +3 -3
  209. package/dist/shims/readonly-url-search-params.js +3 -3
  210. package/dist/shims/request-context.d.ts +4 -1
  211. package/dist/shims/request-state-types.d.ts +1 -1
  212. package/dist/shims/router.d.ts +55 -21
  213. package/dist/shims/router.js +180 -44
  214. package/dist/shims/script.d.ts +6 -10
  215. package/dist/shims/script.js +7 -4
  216. package/dist/shims/server.d.ts +50 -26
  217. package/dist/shims/server.js +193 -55
  218. package/dist/shims/unified-request-context.d.ts +22 -3
  219. package/dist/shims/unified-request-context.js +84 -1
  220. package/dist/shims/url-safety.d.ts +1 -1
  221. package/dist/shims/url-safety.js +2 -2
  222. package/dist/typegen.d.ts +8 -2
  223. package/dist/typegen.js +76 -15
  224. package/dist/utils/cache-control-metadata.d.ts +2 -1
  225. package/dist/utils/cache-control-metadata.js +5 -1
  226. package/dist/utils/domain-locale.d.ts +2 -2
  227. package/dist/utils/external-url.d.ts +5 -0
  228. package/dist/utils/external-url.js +7 -0
  229. package/dist/utils/html-limited-bots.js +1 -1
  230. package/dist/utils/protocol-headers.d.ts +7 -1
  231. package/dist/utils/protocol-headers.js +7 -1
  232. package/dist/utils/regex-safety.d.ts +8 -0
  233. package/dist/utils/regex-safety.js +737 -0
  234. package/package.json +13 -2
@@ -1,8 +1,9 @@
1
1
  import { Route } from "../routing/pages-router.js";
2
2
  import { VinextNextData } from "../client/vinext-next-data.js";
3
- import { CachedPagesValue } from "../shims/cache-handler.js";
3
+ import { CachedPagesValue, CachedRedirectValue } from "../shims/cache-handler.js";
4
4
  import { ISRCacheEntry } from "./isr-cache.js";
5
5
  import { PagesPreviewData } from "./pages-preview.js";
6
+ import { PagesGetInitialPropsRouter } from "./pages-get-initial-props.js";
6
7
  import { PagesGsspResponse, PagesI18nRenderContext, PagesNextDataExtras } from "./pages-page-response.js";
7
8
  import { ReactNode } from "react";
8
9
 
@@ -11,6 +12,12 @@ type PagesRedirectResult = {
11
12
  destination: string;
12
13
  permanent?: boolean;
13
14
  statusCode?: number;
15
+ basePath?: boolean;
16
+ };
17
+ type ResolvedPagesRedirect = {
18
+ destination: string;
19
+ statusCode: number;
20
+ basePath?: boolean;
14
21
  };
15
22
  type PagesStaticPathsEntry = string | {
16
23
  params?: Record<string, unknown>;
@@ -21,11 +28,23 @@ type PagesStaticPathsResult = {
21
28
  paths?: PagesStaticPathsEntry[];
22
29
  };
23
30
  type PagesPagePropsResult = {
24
- props?: Record<string, unknown>;
31
+ props?: Record<string, unknown> | Promise<Record<string, unknown>>;
25
32
  redirect?: PagesRedirectResult;
26
33
  notFound?: boolean;
27
- revalidate?: number;
34
+ revalidate?: unknown;
28
35
  };
36
+ declare function assertPages404DoesNotReturnNotFound(routePattern: string, result: Pick<PagesPagePropsResult, "notFound"> | null | undefined): void;
37
+ /**
38
+ * Next.js preserves an omitted/false Pages `revalidate` result as an indefinite
39
+ * cache lifetime. The one-year sentinel is only an HTTP Cache-Control detail;
40
+ * storing it as a revalidation deadline would incorrectly regenerate static
41
+ * pages after one year.
42
+ *
43
+ * Next.js source:
44
+ * - packages/next/src/server/render.tsx (`metadata.cacheControl`)
45
+ * - packages/next/src/server/route-modules/pages/pages-handler.ts
46
+ */
47
+ declare function resolvePagesRevalidateSeconds(result: PagesPagePropsResult, routeUrl?: string): number | false;
29
48
  type PagesMutableGsspResponse = {
30
49
  headersSent: boolean;
31
50
  } & PagesGsspResponse;
@@ -35,8 +54,16 @@ type PagesGsspContextResponse = {
35
54
  responsePromise: Promise<Response>;
36
55
  };
37
56
  type PagesRenderProps = Record<string, unknown> & {
38
- pageProps: unknown;
57
+ pageProps?: unknown;
39
58
  };
59
+ /**
60
+ * Merge gSP/gSSP data into the custom App's raw pageProps value.
61
+ *
62
+ * Next.js deliberately uses Object.assign rather than object spread, so
63
+ * enumerable keys from arrays and primitive wrapper objects are retained.
64
+ * https://github.com/vercel/next.js/blob/canary/packages/next/src/server/render.tsx
65
+ */
66
+ declare function mergePagesDataProps(appPageProps: unknown, dataProps: unknown): Record<string, unknown>;
40
67
  type PagesPageModule = {
41
68
  default?: unknown;
42
69
  getStaticPaths?: (context: {
@@ -105,6 +132,7 @@ type RenderPagesIsrHtmlOptions = {
105
132
  };
106
133
  type ResolvePagesPageDataOptions = {
107
134
  applyRequestContexts: () => void;
135
+ basePath?: string;
108
136
  buildId: string | null;
109
137
  /**
110
138
  * When true, this is a `/_next/data/<buildId>/<page>.json` request. Callers
@@ -123,7 +151,7 @@ type ResolvePagesPageDataOptions = {
123
151
  i18n: PagesI18nRenderContext;
124
152
  isrCacheKey: (router: string, pathname: string) => string;
125
153
  isrGet: (key: string) => Promise<ISRCacheEntry | null>;
126
- isrSet: (key: string, data: CachedPagesValue, revalidateSeconds: number, tags?: string[], expireSeconds?: number) => Promise<void>;
154
+ isrSet: (key: string, data: CachedPagesValue | CachedRedirectValue | null, revalidateSeconds: number | false, tags?: string[], expireSeconds?: number) => Promise<void>;
127
155
  expireSeconds?: number;
128
156
  /**
129
157
  * When true, this dispatch corresponds to a build-time prerender (the
@@ -151,6 +179,12 @@ type ResolvePagesPageDataOptions = {
151
179
  * presence — see the security note in `isr-cache.ts`.
152
180
  */
153
181
  isOnDemandRevalidate?: boolean;
182
+ /**
183
+ * When true alongside an authenticated on-demand request, return a
184
+ * successful 404 no-op if no cache entry exists instead of generating a new
185
+ * fallback path. Mirrors Next.js `unstable_onlyGenerated`.
186
+ */
187
+ revalidateOnlyGenerated?: boolean;
154
188
  previewData?: PagesPreviewData | false;
155
189
  /**
156
190
  * The deployment ID used for deployment-skew protection. When set, it is
@@ -161,7 +195,8 @@ type ResolvePagesPageDataOptions = {
161
195
  deploymentId?: string;
162
196
  htmlLimitedBots?: string;
163
197
  pageModule: PagesPageModule;
164
- AppComponent?: unknown;
198
+ AppComponent?: unknown; /** The request-scoped `next/router` server instance when available. */
199
+ router?: PagesGetInitialPropsRouter;
165
200
  params: Record<string, unknown>;
166
201
  query: Record<string, unknown>;
167
202
  asPath?: string;
@@ -169,6 +204,12 @@ type ResolvePagesPageDataOptions = {
169
204
  route: Pick<Route, "isDynamic">;
170
205
  routePattern: string;
171
206
  routeUrl: string;
207
+ /**
208
+ * Filesystem-route identity used for Pages ISR reads and writes. Error pages
209
+ * render against the original request URL but cache under /404, /500, or
210
+ * /_error, matching Next.js's error-page cache-key override.
211
+ */
212
+ isrCachePathname?: string;
172
213
  runInFreshUnifiedContext: <T>(callback: () => Promise<T>) => Promise<T>;
173
214
  safeJsonStringify: (value: unknown) => string;
174
215
  sanitizeDestination: (destination: string) => string;
@@ -208,7 +249,8 @@ type ResolvePagesPageDataRenderResult = {
208
249
  kind: "render";
209
250
  documentReqRes: PagesGsspContextResponse | null;
210
251
  gsspRes: PagesGsspResponse | null;
211
- isrRevalidateSeconds: number | null;
252
+ isrRevalidateSeconds: number | false | null;
253
+ isrExpireSeconds?: number;
212
254
  pageProps: Record<string, unknown>;
213
255
  props: PagesRenderProps;
214
256
  /**
@@ -221,12 +263,24 @@ type ResolvePagesPageDataRenderResult = {
221
263
  };
222
264
  type ResolvePagesPageDataResponseResult = {
223
265
  kind: "response";
224
- response: Response;
266
+ response: Response; /** False when an on-demand request must be reported as a failed revalidation. */
267
+ onDemandRevalidateSuccess?: boolean;
225
268
  };
226
269
  type ResolvePagesPageDataNotFoundResult = {
227
- kind: "notFound";
270
+ kind: "notFound"; /** Current getStaticProps cache lifetime, when this is an SSG result. */
271
+ revalidateSeconds?: number | false;
272
+ expireSeconds?: number;
273
+ cacheState?: "MISS" | "HIT" | "STALE";
228
274
  };
229
275
  type ResolvePagesPageDataResult = ResolvePagesPageDataRenderResult | ResolvePagesPageDataResponseResult | ResolvePagesPageDataNotFoundResult;
276
+ /** Validate and normalize the redirect metadata returned by gSP/gSSP. */
277
+ declare function resolvePagesRedirect(redirect: PagesRedirectResult, options: {
278
+ method: "getStaticProps" | "getServerSideProps";
279
+ routeUrl: string;
280
+ sanitizeDestination: (destination: string) => string;
281
+ }): ResolvedPagesRedirect;
282
+ declare function resolvePagesRedirectLocation(redirect: ResolvedPagesRedirect, configuredBasePath?: string): string;
283
+ declare function buildPagesRedirectProps(redirect: ResolvedPagesRedirect, props: PagesRenderProps): PagesRenderProps;
230
284
  /**
231
285
  * Compare a `getStaticPaths` entry against the actual request params.
232
286
  *
@@ -252,4 +306,4 @@ declare function matchesPagesStaticPath(pathEntry: PagesStaticPathsEntry, params
252
306
  declare function renderPagesIsrHtml(options: RenderPagesIsrHtmlOptions): Promise<string>;
253
307
  declare function resolvePagesPageData(options: ResolvePagesPageDataOptions): Promise<ResolvePagesPageDataResult>;
254
308
  //#endregion
255
- export { PagesPageModule, PagesRouteParam, PagesStaticPathsEntry, ResolvePagesPageDataOptions, getPagesRouteParams, matchesPagesStaticPath, renderPagesIsrHtml, resolvePagesPageData };
309
+ export { PagesPageModule, PagesRedirectResult, PagesRouteParam, PagesStaticPathsEntry, ResolvePagesPageDataOptions, ResolvedPagesRedirect, assertPages404DoesNotReturnNotFound, buildPagesRedirectProps, getPagesRouteParams, matchesPagesStaticPath, mergePagesDataProps, renderPagesIsrHtml, resolvePagesPageData, resolvePagesRedirect, resolvePagesRedirectLocation, resolvePagesRevalidateSeconds };