vinext 0.0.53 → 0.0.55

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 (276) hide show
  1. package/README.md +1 -0
  2. package/dist/build/inline-css.d.ts +7 -0
  3. package/dist/build/inline-css.js +50 -0
  4. package/dist/build/inline-css.js.map +1 -0
  5. package/dist/build/prerender.js +2 -1
  6. package/dist/build/prerender.js.map +1 -1
  7. package/dist/check.js +19 -3
  8. package/dist/check.js.map +1 -1
  9. package/dist/client/navigation-runtime.d.ts +3 -1
  10. package/dist/client/navigation-runtime.js +1 -1
  11. package/dist/client/navigation-runtime.js.map +1 -1
  12. package/dist/client/window-next.d.ts +7 -0
  13. package/dist/client/window-next.js.map +1 -1
  14. package/dist/config/next-config.d.ts +97 -2
  15. package/dist/config/next-config.js +155 -6
  16. package/dist/config/next-config.js.map +1 -1
  17. package/dist/config/tsconfig-paths.d.ts +12 -3
  18. package/dist/config/tsconfig-paths.js +55 -24
  19. package/dist/config/tsconfig-paths.js.map +1 -1
  20. package/dist/deploy.js +13 -0
  21. package/dist/deploy.js.map +1 -1
  22. package/dist/entries/app-browser-entry.d.ts +11 -1
  23. package/dist/entries/app-browser-entry.js +16 -6
  24. package/dist/entries/app-browser-entry.js.map +1 -1
  25. package/dist/entries/app-rsc-entry.d.ts +9 -1
  26. package/dist/entries/app-rsc-entry.js +30 -5
  27. package/dist/entries/app-rsc-entry.js.map +1 -1
  28. package/dist/entries/app-rsc-manifest.d.ts +21 -1
  29. package/dist/entries/app-rsc-manifest.js +28 -9
  30. package/dist/entries/app-rsc-manifest.js.map +1 -1
  31. package/dist/entries/pages-client-entry.d.ts +4 -1
  32. package/dist/entries/pages-client-entry.js +18 -2
  33. package/dist/entries/pages-client-entry.js.map +1 -1
  34. package/dist/entries/pages-server-entry.js +123 -8
  35. package/dist/entries/pages-server-entry.js.map +1 -1
  36. package/dist/entries/runtime-entry-module.d.ts +1 -10
  37. package/dist/entries/runtime-entry-module.js +2 -12
  38. package/dist/entries/runtime-entry-module.js.map +1 -1
  39. package/dist/index.js +144 -44
  40. package/dist/index.js.map +1 -1
  41. package/dist/plugins/import-meta-url.d.ts +16 -0
  42. package/dist/plugins/import-meta-url.js +193 -0
  43. package/dist/plugins/import-meta-url.js.map +1 -0
  44. package/dist/plugins/remove-console.d.ts +16 -0
  45. package/dist/plugins/remove-console.js +176 -0
  46. package/dist/plugins/remove-console.js.map +1 -0
  47. package/dist/routing/app-route-graph.d.ts +24 -1
  48. package/dist/routing/app-route-graph.js +52 -4
  49. package/dist/routing/app-route-graph.js.map +1 -1
  50. package/dist/routing/app-router.d.ts +2 -2
  51. package/dist/routing/app-router.js +2 -2
  52. package/dist/routing/app-router.js.map +1 -1
  53. package/dist/routing/file-matcher.d.ts +21 -1
  54. package/dist/routing/file-matcher.js +39 -1
  55. package/dist/routing/file-matcher.js.map +1 -1
  56. package/dist/routing/pages-router.d.ts +1 -1
  57. package/dist/routing/pages-router.js +10 -3
  58. package/dist/routing/pages-router.js.map +1 -1
  59. package/dist/server/api-handler.js +1 -1
  60. package/dist/server/app-browser-action-result.d.ts +9 -16
  61. package/dist/server/app-browser-action-result.js +25 -14
  62. package/dist/server/app-browser-action-result.js.map +1 -1
  63. package/dist/server/app-browser-entry.js +195 -60
  64. package/dist/server/app-browser-entry.js.map +1 -1
  65. package/dist/server/app-browser-mpa-navigation.d.ts +16 -0
  66. package/dist/server/app-browser-mpa-navigation.js +36 -0
  67. package/dist/server/app-browser-mpa-navigation.js.map +1 -0
  68. package/dist/server/app-browser-navigation-controller.d.ts +2 -0
  69. package/dist/server/app-browser-navigation-controller.js +4 -0
  70. package/dist/server/app-browser-navigation-controller.js.map +1 -1
  71. package/dist/server/app-browser-popstate.d.ts +3 -1
  72. package/dist/server/app-browser-popstate.js +15 -1
  73. package/dist/server/app-browser-popstate.js.map +1 -1
  74. package/dist/server/app-browser-state.js +2 -1
  75. package/dist/server/app-browser-state.js.map +1 -1
  76. package/dist/server/app-elements-wire.d.ts +13 -4
  77. package/dist/server/app-elements-wire.js +10 -1
  78. package/dist/server/app-elements-wire.js.map +1 -1
  79. package/dist/server/app-elements.d.ts +2 -2
  80. package/dist/server/app-elements.js +2 -2
  81. package/dist/server/app-elements.js.map +1 -1
  82. package/dist/server/app-fallback-renderer.d.ts +15 -5
  83. package/dist/server/app-fallback-renderer.js +10 -4
  84. package/dist/server/app-fallback-renderer.js.map +1 -1
  85. package/dist/server/app-inline-css-client.d.ts +7 -0
  86. package/dist/server/app-inline-css-client.js +37 -0
  87. package/dist/server/app-inline-css-client.js.map +1 -0
  88. package/dist/server/app-layout-param-observation.d.ts +30 -0
  89. package/dist/server/app-layout-param-observation.js +130 -0
  90. package/dist/server/app-layout-param-observation.js.map +1 -0
  91. package/dist/server/app-page-boundary-render.js +2 -2
  92. package/dist/server/app-page-boundary-render.js.map +1 -1
  93. package/dist/server/app-page-boundary.d.ts +21 -1
  94. package/dist/server/app-page-boundary.js +28 -3
  95. package/dist/server/app-page-boundary.js.map +1 -1
  96. package/dist/server/app-page-cache.d.ts +7 -3
  97. package/dist/server/app-page-cache.js +7 -7
  98. package/dist/server/app-page-cache.js.map +1 -1
  99. package/dist/server/app-page-dispatch.d.ts +10 -1
  100. package/dist/server/app-page-dispatch.js +126 -79
  101. package/dist/server/app-page-dispatch.js.map +1 -1
  102. package/dist/server/app-page-element-builder.js +12 -28
  103. package/dist/server/app-page-element-builder.js.map +1 -1
  104. package/dist/server/app-page-params.d.ts +2 -1
  105. package/dist/server/app-page-params.js +14 -1
  106. package/dist/server/app-page-params.js.map +1 -1
  107. package/dist/server/app-page-probe.d.ts +12 -1
  108. package/dist/server/app-page-probe.js +116 -1
  109. package/dist/server/app-page-probe.js.map +1 -1
  110. package/dist/server/app-page-render-identity.d.ts +22 -0
  111. package/dist/server/app-page-render-identity.js +42 -0
  112. package/dist/server/app-page-render-identity.js.map +1 -0
  113. package/dist/server/app-page-render.d.ts +8 -1
  114. package/dist/server/app-page-render.js +4 -1
  115. package/dist/server/app-page-render.js.map +1 -1
  116. package/dist/server/app-page-request.d.ts +6 -3
  117. package/dist/server/app-page-request.js +5 -2
  118. package/dist/server/app-page-request.js.map +1 -1
  119. package/dist/server/app-page-response.js +2 -2
  120. package/dist/server/app-page-response.js.map +1 -1
  121. package/dist/server/app-page-route-wiring.d.ts +15 -0
  122. package/dist/server/app-page-route-wiring.js +7 -5
  123. package/dist/server/app-page-route-wiring.js.map +1 -1
  124. package/dist/server/app-page-stream.d.ts +11 -0
  125. package/dist/server/app-page-stream.js +1 -0
  126. package/dist/server/app-page-stream.js.map +1 -1
  127. package/dist/server/app-route-handler-response.js +37 -5
  128. package/dist/server/app-route-handler-response.js.map +1 -1
  129. package/dist/server/app-rsc-cache-busting.d.ts +3 -2
  130. package/dist/server/app-rsc-cache-busting.js +9 -7
  131. package/dist/server/app-rsc-cache-busting.js.map +1 -1
  132. package/dist/server/app-rsc-handler.d.ts +14 -3
  133. package/dist/server/app-rsc-handler.js +56 -6
  134. package/dist/server/app-rsc-handler.js.map +1 -1
  135. package/dist/server/app-rsc-request-normalization.d.ts +2 -1
  136. package/dist/server/app-rsc-request-normalization.js +3 -2
  137. package/dist/server/app-rsc-request-normalization.js.map +1 -1
  138. package/dist/server/app-segment-config.d.ts +1 -1
  139. package/dist/server/app-segment-config.js +4 -1
  140. package/dist/server/app-segment-config.js.map +1 -1
  141. package/dist/server/app-server-action-execution.d.ts +26 -3
  142. package/dist/server/app-server-action-execution.js +240 -29
  143. package/dist/server/app-server-action-execution.js.map +1 -1
  144. package/dist/server/app-ssr-entry.d.ts +6 -0
  145. package/dist/server/app-ssr-entry.js +22 -7
  146. package/dist/server/app-ssr-entry.js.map +1 -1
  147. package/dist/server/app-ssr-error-meta.js +3 -3
  148. package/dist/server/app-ssr-error-meta.js.map +1 -1
  149. package/dist/server/app-ssr-stream.d.ts +2 -1
  150. package/dist/server/app-ssr-stream.js +176 -31
  151. package/dist/server/app-ssr-stream.js.map +1 -1
  152. package/dist/server/artifact-compatibility.d.ts +2 -1
  153. package/dist/server/artifact-compatibility.js +10 -1
  154. package/dist/server/artifact-compatibility.js.map +1 -1
  155. package/dist/server/client-reuse-manifest.d.ts +9 -4
  156. package/dist/server/client-reuse-manifest.js +2 -1
  157. package/dist/server/client-reuse-manifest.js.map +1 -1
  158. package/dist/server/client-trace-metadata.d.ts +31 -0
  159. package/dist/server/client-trace-metadata.js +83 -0
  160. package/dist/server/client-trace-metadata.js.map +1 -0
  161. package/dist/server/cookie-utils.d.ts +13 -0
  162. package/dist/server/cookie-utils.js +20 -0
  163. package/dist/server/cookie-utils.js.map +1 -0
  164. package/dist/server/dev-server.d.ts +8 -1
  165. package/dist/server/dev-server.js +83 -12
  166. package/dist/server/dev-server.js.map +1 -1
  167. package/dist/server/document-initial-head.d.ts +7 -0
  168. package/dist/server/document-initial-head.js +35 -0
  169. package/dist/server/document-initial-head.js.map +1 -0
  170. package/dist/server/html.d.ts +2 -1
  171. package/dist/server/html.js +6 -1
  172. package/dist/server/html.js.map +1 -1
  173. package/dist/server/isr-cache.d.ts +7 -5
  174. package/dist/server/isr-cache.js +17 -6
  175. package/dist/server/isr-cache.js.map +1 -1
  176. package/dist/server/middleware-runtime.js +1 -2
  177. package/dist/server/middleware-runtime.js.map +1 -1
  178. package/dist/server/pages-document-initial-props.d.ts +89 -0
  179. package/dist/server/pages-document-initial-props.js +140 -0
  180. package/dist/server/pages-document-initial-props.js.map +1 -0
  181. package/dist/server/pages-node-compat.js +1 -1
  182. package/dist/server/pages-page-data.js +3 -0
  183. package/dist/server/pages-page-data.js.map +1 -1
  184. package/dist/server/pages-page-method.d.ts +48 -0
  185. package/dist/server/pages-page-method.js +19 -0
  186. package/dist/server/pages-page-method.js.map +1 -0
  187. package/dist/server/pages-page-response.d.ts +20 -0
  188. package/dist/server/pages-page-response.js +37 -7
  189. package/dist/server/pages-page-response.js.map +1 -1
  190. package/dist/server/pages-serializable-props.d.ts +25 -0
  191. package/dist/server/pages-serializable-props.js +69 -0
  192. package/dist/server/pages-serializable-props.js.map +1 -0
  193. package/dist/server/prod-server.js +16 -6
  194. package/dist/server/prod-server.js.map +1 -1
  195. package/dist/server/server-action-not-found.js +3 -2
  196. package/dist/server/server-action-not-found.js.map +1 -1
  197. package/dist/server/skip-cache-proof.d.ts +23 -2
  198. package/dist/server/skip-cache-proof.js +81 -12
  199. package/dist/server/skip-cache-proof.js.map +1 -1
  200. package/dist/server/static-file-cache.js +2 -1
  201. package/dist/server/static-file-cache.js.map +1 -1
  202. package/dist/server/static-layout-client-reuse-proof.d.ts +16 -0
  203. package/dist/server/static-layout-client-reuse-proof.js +35 -0
  204. package/dist/server/static-layout-client-reuse-proof.js.map +1 -0
  205. package/dist/shims/app-router-scroll-state.d.ts +4 -2
  206. package/dist/shims/app-router-scroll-state.js +16 -3
  207. package/dist/shims/app-router-scroll-state.js.map +1 -1
  208. package/dist/shims/app-router-scroll.d.ts +16 -2
  209. package/dist/shims/app-router-scroll.js +18 -3
  210. package/dist/shims/app-router-scroll.js.map +1 -1
  211. package/dist/shims/cache.d.ts +27 -1
  212. package/dist/shims/cache.js +108 -6
  213. package/dist/shims/cache.js.map +1 -1
  214. package/dist/shims/document.d.ts +6 -0
  215. package/dist/shims/document.js +7 -8
  216. package/dist/shims/document.js.map +1 -1
  217. package/dist/shims/error-boundary.d.ts +4 -4
  218. package/dist/shims/error-boundary.js +27 -28
  219. package/dist/shims/error-boundary.js.map +1 -1
  220. package/dist/shims/error.js +3 -0
  221. package/dist/shims/error.js.map +1 -1
  222. package/dist/shims/fetch-cache.d.ts +3 -1
  223. package/dist/shims/fetch-cache.js +16 -5
  224. package/dist/shims/fetch-cache.js.map +1 -1
  225. package/dist/shims/hash-scroll.d.ts +4 -1
  226. package/dist/shims/hash-scroll.js +13 -1
  227. package/dist/shims/hash-scroll.js.map +1 -1
  228. package/dist/shims/head-state.d.ts +1 -0
  229. package/dist/shims/head-state.js +18 -3
  230. package/dist/shims/head-state.js.map +1 -1
  231. package/dist/shims/head.d.ts +35 -1
  232. package/dist/shims/head.js +113 -14
  233. package/dist/shims/head.js.map +1 -1
  234. package/dist/shims/headers.d.ts +7 -0
  235. package/dist/shims/headers.js +9 -1
  236. package/dist/shims/headers.js.map +1 -1
  237. package/dist/shims/internal/app-route-detection.d.ts +37 -0
  238. package/dist/shims/internal/app-route-detection.js +69 -0
  239. package/dist/shims/internal/app-route-detection.js.map +1 -0
  240. package/dist/shims/internal/pages-data-fetch-dedup.d.ts +56 -0
  241. package/dist/shims/internal/pages-data-fetch-dedup.js +70 -0
  242. package/dist/shims/internal/pages-data-fetch-dedup.js.map +1 -0
  243. package/dist/shims/link.d.ts +18 -2
  244. package/dist/shims/link.js +98 -8
  245. package/dist/shims/link.js.map +1 -1
  246. package/dist/shims/metadata.d.ts +7 -6
  247. package/dist/shims/metadata.js +9 -5
  248. package/dist/shims/metadata.js.map +1 -1
  249. package/dist/shims/navigation.d.ts +40 -3
  250. package/dist/shims/navigation.js +124 -25
  251. package/dist/shims/navigation.js.map +1 -1
  252. package/dist/shims/router.d.ts +5 -0
  253. package/dist/shims/router.js +51 -21
  254. package/dist/shims/router.js.map +1 -1
  255. package/dist/shims/script.d.ts +11 -1
  256. package/dist/shims/script.js +75 -6
  257. package/dist/shims/script.js.map +1 -1
  258. package/dist/shims/thenable-params.d.ts +5 -2
  259. package/dist/shims/thenable-params.js +25 -1
  260. package/dist/shims/thenable-params.js.map +1 -1
  261. package/dist/shims/unified-request-context.js +3 -0
  262. package/dist/shims/unified-request-context.js.map +1 -1
  263. package/dist/utils/client-build-manifest.d.ts +15 -0
  264. package/dist/utils/client-build-manifest.js +54 -0
  265. package/dist/utils/client-build-manifest.js.map +1 -0
  266. package/dist/utils/hash.js +1 -1
  267. package/dist/utils/hash.js.map +1 -1
  268. package/dist/utils/lazy-chunks.d.ts +1 -1
  269. package/dist/utils/lazy-chunks.js.map +1 -1
  270. package/dist/utils/path.d.ts +13 -0
  271. package/dist/utils/path.js +16 -0
  272. package/dist/utils/path.js.map +1 -0
  273. package/dist/utils/vite-version.d.ts +11 -0
  274. package/dist/utils/vite-version.js +36 -0
  275. package/dist/utils/vite-version.js.map +1 -0
  276. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { detectPackageManager } from "./utils/project.js";
2
2
  import { normalizePathnameForRouteMatchStrict } from "./routing/utils.js";
3
- import { createValidFileMatcher } from "./routing/file-matcher.js";
3
+ import { buildViteResolveExtensions, createValidFileMatcher } from "./routing/file-matcher.js";
4
4
  import { hasBasePath } from "./utils/base-path.js";
5
5
  import { apiRouter, invalidateRouteCache, matchRoute, pagesRouter } from "./routing/pages-router.js";
6
6
  import { INTERNAL_HEADERS, VINEXT_INTERNAL_HEADERS, VINEXT_MW_CTX_HEADER, VINEXT_TIMING_HEADER } from "./server/headers.js";
@@ -8,12 +8,12 @@ import { buildRequestHeadersFromMiddlewareResponse } from "./server/middleware-r
8
8
  import { normalizePath as normalizePath$1 } from "./server/normalize-path.js";
9
9
  import { isExternalUrl, matchHeaders, matchRedirect, matchRewrite, proxyExternalRequest, requestContextFromRequest, sanitizeDestination } from "./config/config-matchers.js";
10
10
  import { filterInternalHeaders, isOpenRedirectShaped, normalizeTrailingSlash } from "./server/request-pipeline.js";
11
- import { mergeRewriteQuery } from "./utils/query.js";
12
11
  import { findMiddlewareFile, runMiddleware } from "./server/middleware.js";
13
12
  import { generateServerEntry } from "./entries/pages-server-entry.js";
14
13
  import { generateClientEntry } from "./entries/pages-client-entry.js";
15
14
  import { appRouteGraph, appRouter, invalidateAppRouteCache } from "./routing/app-router.js";
16
15
  import { findInstrumentationClientFile, findInstrumentationFile, runInstrumentation } from "./server/instrumentation.js";
16
+ import { mergeRewriteQuery } from "./utils/query.js";
17
17
  import { logRequest, now } from "./server/request-log.js";
18
18
  import { normalizeDefaultLocalePathname, stripI18nLocaleForApiRoute } from "./server/pages-i18n.js";
19
19
  import { createSSRHandler } from "./server/dev-server.js";
@@ -26,16 +26,18 @@ import { createDirectRunner } from "./server/dev-module-runner.js";
26
26
  import { validateDevRequest } from "./server/dev-origin-check.js";
27
27
  import { generateRscEntry } from "./entries/app-rsc-entry.js";
28
28
  import { generateSsrEntry } from "./entries/app-ssr-entry.js";
29
- import { generateBrowserEntry } from "./entries/app-browser-entry.js";
29
+ import { generateBrowserEntry, isLinkPrefetchRoute, toLinkPrefetchRoute } from "./entries/app-browser-entry.js";
30
30
  import { collectRouteClassificationManifest } from "./build/route-classification-manifest.js";
31
31
  import { planRouteClassificationInjection } from "./build/route-classification-injector.js";
32
32
  import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from "./shims/constants.js";
33
33
  import { ASSET_PREFIX_URL_DIR, resolveAssetUrlPrefix, resolveAssetsDir } from "./utils/asset-prefix.js";
34
34
  import { RESOLVED_VIRTUAL_GOOGLE_FONTS, VIRTUAL_GOOGLE_FONTS, createGoogleFontsPlugin, createLocalFontsPlugin, generateGoogleFontsVirtualModule, parseStaticObjectLiteral } from "./plugins/fonts.js";
35
+ import { getViteMajorVersion } from "./utils/vite-version.js";
35
36
  import { findNextConfigPath, loadNextConfig, resolveNextConfig, resolveNextConfigInput } from "./config/next-config.js";
36
37
  import { isNextDataPathname, parseNextDataPathname } from "./server/pages-data-route.js";
37
38
  import { precompressAssets } from "./build/precompress.js";
38
- import { manifestFileWithBase, manifestFilesWithBase } from "./utils/manifest-paths.js";
39
+ import { collectInlineCssManifest, injectInlineCssManifestGlobal } from "./build/inline-css.js";
40
+ import { manifestFilesWithBase } from "./utils/manifest-paths.js";
39
41
  import { asyncHooksStubPlugin } from "./plugins/async-hooks-stub.js";
40
42
  import { clientReferenceDedupPlugin } from "./plugins/client-reference-dedup.js";
41
43
  import { dataUrlCssPlugin } from "./plugins/css-data-url.js";
@@ -49,12 +51,15 @@ import { generateRouteTypes } from "./typegen.js";
49
51
  import { SSR_EXTERNAL_REACT_ENTRIES, VINEXT_OPTIMIZE_DEPS_EXCLUDE, mergeOptimizeDepsExclude } from "./plugins/rsc-client-shim-excludes.js";
50
52
  import { createServerExternalsManifestPlugin } from "./plugins/server-externals-manifest.js";
51
53
  import { computeLazyChunks } from "./utils/lazy-chunks.js";
54
+ import { findClientEntryFile, readClientBuildManifest } from "./utils/client-build-manifest.js";
52
55
  import { formatMissingCloudflarePluginError, hasWranglerConfig } from "./deploy.js";
53
56
  import { resolvePostcssStringPlugins } from "./plugins/postcss.js";
54
57
  import { buildSassPreprocessorOptions } from "./plugins/sass.js";
55
58
  import { createClientCodeSplittingConfig, createClientManualChunks, createClientOutputConfig, getBuildBundlerOptions, getClientTreeshakeConfigForVite, withBuildBundlerOptions } from "./build/client-build-config.js";
56
59
  import { augmentSsrManifestFromBundle, relativeWithinRoot, tryRealpathSync } from "./build/ssr-manifest.js";
57
60
  import { stripServerExports } from "./plugins/strip-server-exports.js";
61
+ import { removeConsoleCalls } from "./plugins/remove-console.js";
62
+ import { createImportMetaUrlPlugin } from "./plugins/import-meta-url.js";
58
63
  import { hasMdxFiles } from "./utils/mdx-scan.js";
59
64
  import { scanPublicFileRoutes } from "./utils/public-routes.js";
60
65
  import { staticExportApp, staticExportPages } from "./build/static-export.js";
@@ -73,6 +78,50 @@ function createRscCompatibilityId(nextConfig) {
73
78
  if (nextConfig.deploymentId) return nextConfig.deploymentId;
74
79
  return randomUUID();
75
80
  }
81
+ function hasModuleLevelUseServerDirective(body) {
82
+ for (const node of body) {
83
+ if (node.type !== "ExpressionStatement") break;
84
+ const directive = node.directive;
85
+ const expression = node.expression;
86
+ const value = typeof directive === "string" ? directive : expression?.type === "Literal" ? expression.value : void 0;
87
+ if (value === "use server") return true;
88
+ if (typeof value !== "string") break;
89
+ }
90
+ return false;
91
+ }
92
+ function hasServerOnlyMarkerImport(code) {
93
+ if (!code.includes("server-only")) return false;
94
+ let ast;
95
+ try {
96
+ ast = parseAst(code);
97
+ } catch {
98
+ return false;
99
+ }
100
+ if (hasModuleLevelUseServerDirective(ast.body)) return false;
101
+ function walk(node) {
102
+ if (!node) return false;
103
+ if (Array.isArray(node)) return node.some((child) => walk(child));
104
+ if (typeof node !== "object") return false;
105
+ if (node.type === "ImportDeclaration") {
106
+ if (node.source?.value === "server-only") return true;
107
+ }
108
+ if (node.type === "CallExpression") {
109
+ const call = node;
110
+ if (call.callee?.type === "Identifier" && call.callee.name === "require" && call.arguments?.[0]?.type === "Literal" && call.arguments[0].value === "server-only") return true;
111
+ }
112
+ for (const key of Object.keys(node)) {
113
+ if (key === "type" || key === "start" || key === "end" || key === "loc" || key === "parent") continue;
114
+ const value = node[key];
115
+ if (Array.isArray(value)) {
116
+ if (value.some((child) => child && typeof child === "object" && walk(child))) return true;
117
+ } else if (value && typeof value === "object" && "type" in value) {
118
+ if (walk(value)) return true;
119
+ }
120
+ }
121
+ return false;
122
+ }
123
+ return walk(ast.body);
124
+ }
76
125
  const __dirname = import.meta.dirname;
77
126
  function resolveOptionalDependency(projectRoot, specifier) {
78
127
  try {
@@ -192,27 +241,6 @@ function loadTsconfigPathAliases(configPath, projectRoot, seen = /* @__PURE__ */
192
241
  };
193
242
  }
194
243
  /**
195
- * Detect Vite major version at runtime by resolving from cwd.
196
- * The plugin may be installed in a workspace root with Vite 7 but used
197
- * by a project that has Vite 8 — so we resolve from cwd, not from
198
- * the plugin's own location.
199
- */
200
- function getViteMajorVersion() {
201
- try {
202
- const vitePkg = createRequire(path.join(process.cwd(), "package.json"))("vite/package.json");
203
- const viteMajor = parseInt(vitePkg?.version, 10);
204
- if (vitePkg?.name === "vite" && Number.isFinite(viteMajor)) return viteMajor;
205
- const bundledViteMajor = parseInt(vitePkg?.bundledVersions?.vite, 10);
206
- if (Number.isFinite(bundledViteMajor)) return bundledViteMajor;
207
- console.warn(`[vinext] Could not determine Vite major version from ${vitePkg?.name ?? "vite/package.json"}; assuming Vite 7`);
208
- return 7;
209
- } catch (error) {
210
- const message = error instanceof Error ? error.message : String(error);
211
- console.warn(`[vinext] Failed to resolve vite/package.json (${message}); assuming Vite 7`);
212
- return 7;
213
- }
214
- }
215
- /**
216
244
  * Read the vinext package version once at plugin load. Surfaced via
217
245
  * `process.env.__NEXT_VERSION` define so `window.next.version` lands a
218
246
  * real string instead of the `"vinext"` fallback. Resolved relative to
@@ -389,7 +417,8 @@ function vinext(options = {}) {
389
417
  * __NEXT_DATA__ to determine which page to hydrate.
390
418
  */
391
419
  async function generateClientEntry$1() {
392
- return generateClientEntry(pagesDir, nextConfig, fileMatcher);
420
+ const appPrefetchRoutes = hasAppDir ? (await appRouter(appDir, nextConfig?.pageExtensions, fileMatcher)).filter(isLinkPrefetchRoute).map(toLinkPrefetchRoute) : [];
421
+ return generateClientEntry(pagesDir, nextConfig, fileMatcher, { appPrefetchRoutes });
393
422
  }
394
423
  async function writeRouteTypes() {
395
424
  if (!hasAppDir) return;
@@ -553,6 +582,8 @@ function vinext(options = {}) {
553
582
  defines[`process.env.${key}`] = JSON.stringify(value);
554
583
  }
555
584
  defines["process.env.__NEXT_ROUTER_BASEPATH"] = JSON.stringify(nextConfig.basePath);
585
+ defines["process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME"] = JSON.stringify(String(nextConfig.staleTimes.static));
586
+ defines["process.env.__VINEXT_PREFETCH_INLINING"] = JSON.stringify(nextConfig.prefetchInlining ? "true" : "false");
556
587
  defines["process.env.__VINEXT_TRAILING_SLASH"] = JSON.stringify(nextConfig.trailingSlash ? "true" : "false");
557
588
  defines["process.env.__VINEXT_IMAGE_REMOTE_PATTERNS"] = JSON.stringify(JSON.stringify(nextConfig.images?.remotePatterns ?? []));
558
589
  defines["process.env.__VINEXT_IMAGE_DOMAINS"] = JSON.stringify(JSON.stringify(nextConfig.images?.domains ?? []));
@@ -585,8 +616,14 @@ function vinext(options = {}) {
585
616
  defines["process.env.__VINEXT_BUILD_ID"] = JSON.stringify(nextConfig.buildId);
586
617
  defines["process.env.__VINEXT_RSC_COMPATIBILITY_ID"] = JSON.stringify(rscCompatibilityId);
587
618
  defines["process.env.__VINEXT_DEPLOYMENT_ID"] = JSON.stringify(nextConfig.deploymentId ?? "");
619
+ defines["process.env.NEXT_DEPLOYMENT_ID"] = nextConfig.deploymentId ? JSON.stringify(nextConfig.deploymentId) : "false";
588
620
  defines["process.env.__NEXT_VERSION"] = JSON.stringify(getVinextVersion());
589
- defines["process.env.__NEXT_APP_SHELLS"] = JSON.stringify(false);
621
+ defines["process.env.__NEXT_APP_SHELLS"] = JSON.stringify(nextConfig.appShells);
622
+ for (const [key, value] of Object.entries(nextConfig.compilerDefine)) {
623
+ if (key in defines) throw new Error(`The \`compiler.define\` option is configured to replace the \`${key}\` variable. This variable is either part of a built-in or is already configured.`);
624
+ defines[key] = value;
625
+ }
626
+ for (const key of Object.keys(nextConfig.compilerDefineServer)) if (key in defines) throw new Error(`The \`compiler.defineServer\` option is configured to replace the \`${key}\` variable. This variable is either part of a built-in or is already configured.`);
590
627
  nextShimMap = Object.fromEntries(Object.entries({
591
628
  "next/link": path.join(shimsDir, "link"),
592
629
  "next/head": path.join(shimsDir, "head"),
@@ -704,6 +741,7 @@ function vinext(options = {}) {
704
741
  ...nextConfig.aliases,
705
742
  ...nextShimMap
706
743
  },
744
+ extensions: buildViteResolveExtensions(nextConfig.pageExtensions),
707
745
  dedupe: [
708
746
  "react",
709
747
  "react-dom",
@@ -924,8 +962,11 @@ function vinext(options = {}) {
924
962
  allowedDevOrigins: nextConfig?.allowedDevOrigins,
925
963
  bodySizeLimit: nextConfig?.serverActionsBodySizeLimit,
926
964
  htmlLimitedBots: nextConfig?.htmlLimitedBots,
965
+ clientTraceMetadata: nextConfig?.clientTraceMetadata,
927
966
  assetPrefix: nextConfig?.assetPrefix,
928
967
  expireTime: nextConfig?.expireTime,
968
+ cacheMaxMemorySize: nextConfig?.cacheMaxMemorySize,
969
+ inlineCss: nextConfig?.inlineCss,
929
970
  i18n: nextConfig?.i18n,
930
971
  hasPagesDir,
931
972
  publicFiles: scanPublicFileRoutes(root),
@@ -1415,7 +1456,7 @@ function vinext(options = {}) {
1415
1456
  await proxyExternalRewriteNode(req, res, resolvedUrl);
1416
1457
  return;
1417
1458
  }
1418
- const handler = createSSRHandler(server, getPagesRunner(), routes, pagesDir, nextConfig?.i18n, fileMatcher, nextConfig?.basePath ?? "", nextConfig?.trailingSlash ?? false, middlewarePath !== null);
1459
+ const handler = createSSRHandler(server, getPagesRunner(), routes, pagesDir, nextConfig?.i18n, fileMatcher, nextConfig?.basePath ?? "", nextConfig?.trailingSlash ?? false, middlewarePath !== null, nextConfig?.clientTraceMetadata);
1419
1460
  const mwStatus = req.__vinextMiddlewareStatus;
1420
1461
  if (match) {
1421
1462
  applyDeferredMwHeaders();
@@ -1451,6 +1492,21 @@ function vinext(options = {}) {
1451
1492
  };
1452
1493
  }
1453
1494
  },
1495
+ {
1496
+ name: "vinext:validate-server-only-client-imports",
1497
+ transform: {
1498
+ filter: {
1499
+ id: /\.(tsx?|jsx?|mjs)$/,
1500
+ code: "server-only"
1501
+ },
1502
+ handler(code, id) {
1503
+ if (this.environment?.name !== "client") return null;
1504
+ if (id.startsWith("\0")) return null;
1505
+ if (!hasServerOnlyMarkerImport(code)) return null;
1506
+ throw new Error(`You're importing a module that depends on "server-only". This API is only available in Server Components in the App Router, but this module is reachable from a client bundle.`);
1507
+ }
1508
+ }
1509
+ },
1454
1510
  {
1455
1511
  name: "vinext:strip-server-exports",
1456
1512
  transform: {
@@ -1471,6 +1527,32 @@ function vinext(options = {}) {
1471
1527
  }
1472
1528
  }
1473
1529
  },
1530
+ {
1531
+ name: "vinext:remove-console",
1532
+ apply: "build",
1533
+ transform: {
1534
+ filter: { id: /\.(tsx?|jsx?|mjs)$/ },
1535
+ handler(code, id) {
1536
+ if (this.environment?.name !== "client") return null;
1537
+ if (!nextConfig.removeConsole) return null;
1538
+ if (id.includes("/node_modules/")) return null;
1539
+ const result = removeConsoleCalls(code, nextConfig.removeConsole);
1540
+ if (!result) return null;
1541
+ return {
1542
+ code: result,
1543
+ map: null
1544
+ };
1545
+ }
1546
+ }
1547
+ },
1548
+ {
1549
+ name: "vinext:compiler-define-server",
1550
+ configEnvironment(name) {
1551
+ if (Object.keys(nextConfig.compilerDefineServer).length === 0) return null;
1552
+ if (name === "client") return null;
1553
+ return { define: { ...nextConfig.compilerDefineServer } };
1554
+ }
1555
+ },
1474
1556
  {
1475
1557
  name: "vinext:image-imports",
1476
1558
  enforce: "pre",
@@ -1642,6 +1724,7 @@ function vinext(options = {}) {
1642
1724
  }
1643
1725
  }
1644
1726
  },
1727
+ createImportMetaUrlPlugin({ getRoot: () => root }),
1645
1728
  createOgInlineFetchAssetsPlugin(),
1646
1729
  ogAssetsPlugin,
1647
1730
  createServerExternalsManifestPlugin(),
@@ -1818,6 +1901,25 @@ function vinext(options = {}) {
1818
1901
  }
1819
1902
  };
1820
1903
  })(),
1904
+ {
1905
+ name: "vinext:inline-css-manifest",
1906
+ apply: "build",
1907
+ enforce: "post",
1908
+ closeBundle: {
1909
+ sequential: true,
1910
+ order: "post",
1911
+ handler() {
1912
+ if (this.environment?.name !== "client") return;
1913
+ if (!hasAppDir || nextConfig?.inlineCss !== true) return;
1914
+ const envConfig = this.environment?.config;
1915
+ if (!envConfig) return;
1916
+ const buildRoot = envConfig.root ?? process.cwd();
1917
+ const manifest = collectInlineCssManifest(path.resolve(buildRoot, "dist", "client"), nextConfig.assetPrefix);
1918
+ const rscOutDir = path.resolve(buildRoot, options.rscOutDir ?? path.join("dist", "server"));
1919
+ for (const entryFile of ["index.js", "index.mjs"]) if (injectInlineCssManifestGlobal(path.join(rscOutDir, entryFile), manifest)) break;
1920
+ }
1921
+ }
1922
+ },
1821
1923
  {
1822
1924
  name: "vinext:cloudflare-build",
1823
1925
  apply: "build",
@@ -1838,16 +1940,17 @@ function vinext(options = {}) {
1838
1940
  const clientBase = envConfig.base ?? "/";
1839
1941
  let lazyChunksData = null;
1840
1942
  let clientEntryFile = null;
1841
- const buildManifestPath = path.join(clientDir, ".vite", "manifest.json");
1842
- if (fs.existsSync(buildManifestPath)) try {
1843
- const buildManifest = JSON.parse(fs.readFileSync(buildManifestPath, "utf-8"));
1844
- for (const [, value] of Object.entries(buildManifest)) if (value && value.isEntry && value.file) {
1845
- clientEntryFile = manifestFileWithBase(value.file, clientBase);
1846
- break;
1847
- }
1943
+ const buildManifest = readClientBuildManifest(path.join(clientDir, ".vite", "manifest.json"));
1944
+ if (buildManifest) {
1945
+ clientEntryFile = findClientEntryFile({
1946
+ buildManifest,
1947
+ clientDir,
1948
+ assetsSubdir: resolveAssetsDir(nextConfig?.assetPrefix),
1949
+ assetBase: clientBase
1950
+ }) ?? null;
1848
1951
  const lazy = manifestFilesWithBase(computeLazyChunks(buildManifest), clientBase);
1849
1952
  if (lazy.length > 0) lazyChunksData = lazy;
1850
- } catch {}
1953
+ }
1851
1954
  let ssrManifestData = null;
1852
1955
  const ssrManifestPath = path.join(clientDir, ".vite", "ssr-manifest.json");
1853
1956
  if (fs.existsSync(ssrManifestPath)) try {
@@ -1876,14 +1979,11 @@ function vinext(options = {}) {
1876
1979
  if (!workerOutDir) return;
1877
1980
  const workerEntry = path.join(workerOutDir, "index.js");
1878
1981
  if (!fs.existsSync(workerEntry)) return;
1879
- if (!clientEntryFile) {
1880
- const assetsSubdir = resolveAssetsDir(nextConfig?.assetPrefix);
1881
- const assetsDir = path.join(clientDir, assetsSubdir);
1882
- if (fs.existsSync(assetsDir)) {
1883
- const entry = fs.readdirSync(assetsDir).find((f) => (f.includes("vinext-client-entry") || f.includes("vinext-app-browser-entry")) && f.endsWith(".js"));
1884
- if (entry) clientEntryFile = manifestFileWithBase(`${assetsSubdir}/${entry}`, clientBase);
1885
- }
1886
- }
1982
+ if (!clientEntryFile) clientEntryFile = findClientEntryFile({
1983
+ clientDir,
1984
+ assetsSubdir: resolveAssetsDir(nextConfig?.assetPrefix),
1985
+ assetBase: clientBase
1986
+ }) ?? null;
1887
1987
  if (clientEntryFile || ssrManifestData || lazyChunksData) {
1888
1988
  let code = fs.readFileSync(workerEntry, "utf-8");
1889
1989
  const globals = [];