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
@@ -3,7 +3,8 @@ import { applyLocaleToRoutes, isExternalUrl } from "./config-matchers.js";
3
3
  import { isUnknownRecord } from "../utils/record.js";
4
4
  import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from "../shims/constants.js";
5
5
  import { getHtmlLimitedBotRegex } from "../utils/html-limited-bots.js";
6
- import { loadTsconfigPathAliasesForRoot } from "./tsconfig-paths.js";
6
+ import { loadTsconfigResolutionForRoot } from "./tsconfig-paths.js";
7
+ import { getViteMajorVersion } from "../utils/vite-version.js";
7
8
  import { createRequire } from "node:module";
8
9
  import fs from "node:fs";
9
10
  import path from "node:path";
@@ -291,7 +292,9 @@ async function loadNextConfig(root, phase = DEFAULT_PHASE) {
291
292
  const configPath = findNextConfigPath(root);
292
293
  if (!configPath) return null;
293
294
  const filename = path.basename(configPath);
294
- const tsconfigAliases = loadTsconfigPathAliasesForRoot(root);
295
+ const isTypeScriptConfig = /\.[cm]?ts$/.test(configPath);
296
+ const tsconfigResolution = loadTsconfigResolutionForRoot(root);
297
+ const useNativeTsconfigPaths = !!(isTypeScriptConfig ? tsconfigResolution.baseUrl : null) && getViteMajorVersion() >= 8;
295
298
  const normalizedConfigPath = safeRealpath(path.resolve(configPath));
296
299
  try {
297
300
  const { runnerImport } = await import("vite");
@@ -300,7 +303,8 @@ async function loadNextConfig(root, phase = DEFAULT_PHASE) {
300
303
  logLevel: "error",
301
304
  clearScreen: false,
302
305
  resolve: {
303
- alias: tsconfigAliases,
306
+ alias: tsconfigResolution.aliases,
307
+ ...useNativeTsconfigPaths ? { tsconfigPaths: true } : {},
304
308
  extensions: [
305
309
  ".mjs",
306
310
  ".js",
@@ -313,7 +317,7 @@ async function loadNextConfig(root, phase = DEFAULT_PHASE) {
313
317
  ".json"
314
318
  ]
315
319
  },
316
- plugins: [.../\.[cm]?ts$/.test(configPath) ? [cjsGlobalsInjectorPlugin(configPath)] : [], commonjs({ filter: (id) => {
320
+ plugins: [...isTypeScriptConfig ? [cjsGlobalsInjectorPlugin(configPath)] : [], commonjs({ filter: (id) => {
317
321
  const idPath = id.startsWith("file://") ? fileURLToPath(id) : id.split("?")[0];
318
322
  if (safeRealpath(path.resolve(idPath)) === normalizedConfigPath) return false;
319
323
  return id.includes("node_modules") ? true : void 0;
@@ -423,6 +427,49 @@ function readStringArray(value) {
423
427
  return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
424
428
  }
425
429
  /**
430
+ * Serialize a `compiler.define` / `compiler.defineServer` map into the
431
+ * Vite-friendly `Record<string, string>` shape where each value is already
432
+ * a JSON-encoded literal of source code. Entries whose values are not a
433
+ * string/number/boolean are silently dropped, matching how Next.js types
434
+ * the API (other shapes are not part of the contract).
435
+ *
436
+ * Mirrors Next.js: packages/next/src/build/define-env.ts (serializeDefineEnv).
437
+ */
438
+ function serializeCompilerDefine(value) {
439
+ if (!isUnknownRecord(value)) return {};
440
+ const out = {};
441
+ for (const [key, raw] of Object.entries(value)) if (typeof raw === "string" || typeof raw === "number" || typeof raw === "boolean") out[key] = JSON.stringify(raw);
442
+ return out;
443
+ }
444
+ /**
445
+ * Defaults for `experimental.staleTimes` (in seconds), matching Next.js'
446
+ * `config-shared.ts` defaults.
447
+ */
448
+ const DEFAULT_STALE_TIMES = {
449
+ dynamic: 0,
450
+ static: 300
451
+ };
452
+ /**
453
+ * Parse `experimental.staleTimes` from a raw next.config object.
454
+ *
455
+ * Mirrors Next.js' `build/define-env.ts` parsing logic:
456
+ * - missing / NaN / negative values fall back to the documented defaults
457
+ * (`dynamic: 0`, `static: 300`) — matching Next.js parity and the
458
+ * non-negative guard in `resolvePrefetchCacheTtl`
459
+ * - all values are in seconds
460
+ *
461
+ * @see https://nextjs.org/docs/app/api-reference/config/next-config-js/staleTimes
462
+ */
463
+ function resolveStaleTimes(experimental) {
464
+ const staleTimes = readOptionalRecord(experimental?.staleTimes);
465
+ const dynamicRaw = Number(staleTimes?.dynamic);
466
+ const staticRaw = Number(staleTimes?.static);
467
+ return {
468
+ dynamic: Number.isFinite(dynamicRaw) && dynamicRaw >= 0 ? dynamicRaw : DEFAULT_STALE_TIMES.dynamic,
469
+ static: Number.isFinite(staticRaw) && staticRaw >= 0 ? staticRaw : DEFAULT_STALE_TIMES.static
470
+ };
471
+ }
472
+ /**
426
473
  * Resolve a NextConfig into a fully-resolved ResolvedNextConfig.
427
474
  * Awaits async functions for redirects/rewrites/headers.
428
475
  */
@@ -438,6 +485,7 @@ async function resolveNextConfig(config, root = process.cwd()) {
438
485
  output: "",
439
486
  pageExtensions: normalizePageExtensions(),
440
487
  cacheComponents: false,
488
+ prefetchInlining: false,
441
489
  redirects: [],
442
490
  rewrites: {
443
491
  beforeFiles: [],
@@ -452,6 +500,7 @@ async function resolveNextConfig(config, root = process.cwd()) {
452
500
  allowedDevOrigins: [],
453
501
  serverActionsAllowedOrigins: [],
454
502
  optimizePackageImports: [],
503
+ inlineCss: false,
455
504
  serverActionsBodySizeLimit: 1 * 1024 * 1024,
456
505
  expireTime: DEFAULT_EXPIRE_TIME,
457
506
  htmlLimitedBots: void 0,
@@ -459,11 +508,18 @@ async function resolveNextConfig(config, root = process.cwd()) {
459
508
  cacheHandler: void 0,
460
509
  cacheMaxMemorySize: void 0,
461
510
  enablePrerenderSourceMaps: true,
511
+ appShells: false,
462
512
  hashSalt: process.env.NEXT_HASH_SALT ?? "",
463
513
  buildId,
464
514
  deploymentId,
465
515
  sassOptions: null,
466
- instrumentationClientInject: []
516
+ removeConsole: false,
517
+ disableOptimizedLoading: false,
518
+ compilerDefine: {},
519
+ compilerDefineServer: {},
520
+ instrumentationClientInject: [],
521
+ clientTraceMetadata: void 0,
522
+ staleTimes: { ...DEFAULT_STALE_TIMES }
467
523
  };
468
524
  detectNextIntlConfig(root, resolved);
469
525
  return resolved;
@@ -516,11 +572,24 @@ async function resolveNextConfig(config, root = process.cwd()) {
516
572
  const htmlLimitedBots = resolveHtmlLimitedBots(config.htmlLimitedBots);
517
573
  const rawOptimize = experimental?.optimizePackageImports;
518
574
  const optimizePackageImports = Array.isArray(rawOptimize) ? rawOptimize.filter((x) => typeof x === "string") : [];
575
+ const inlineCss = experimental?.inlineCss === true;
576
+ const prefetchInlining = experimental?.prefetchInlining === true || isUnknownRecord(experimental?.prefetchInlining);
577
+ const appShells = experimental?.appShells === true;
578
+ if (appShells) {
579
+ const missingCoFlags = [];
580
+ if (!config.cacheComponents) missingCoFlags.push("cacheComponents");
581
+ if (experimental?.prefetchInlining !== true) missingCoFlags.push("experimental.prefetchInlining");
582
+ if (experimental?.varyParams !== true) missingCoFlags.push("experimental.varyParams");
583
+ if (experimental?.optimisticRouting !== true) missingCoFlags.push("experimental.optimisticRouting");
584
+ if (experimental?.cachedNavigations !== true) missingCoFlags.push("experimental.cachedNavigations");
585
+ if (missingCoFlags.length > 0) console.warn(`[vinext] experimental.appShells is enabled but requires the following co-flags which are not yet supported or not enabled: ${missingCoFlags.join(", ")}. App Shell prefetching behavior is not implemented in vinext (see issue #1614). The flag will be accepted for config compatibility but has no functional effect.`);
586
+ }
519
587
  const topLevelServerExternalPackages = Array.isArray(config.serverExternalPackages) ? readStringArray(config.serverExternalPackages) : void 0;
520
588
  const legacyServerComponentsExternal = readStringArray(experimental?.serverComponentsExternalPackages);
521
589
  const serverExternalPackages = topLevelServerExternalPackages ?? legacyServerComponentsExternal;
522
590
  if (experimental?.swcEnvOptions !== void 0) console.warn("[vinext] next.config option \"experimental.swcEnvOptions\" is not applicable and will be ignored (vinext uses Vite, not SWC). A Vite-compatible polyfill solution may be explored in the future.");
523
591
  if (experimental?.rootParams !== void 0) console.warn("[vinext] `experimental.rootParams` is no longer needed, because `next/root-params` is available by default. You can remove it from next.config.(js|mjs|ts).");
592
+ if (experimental?.cachedNavigations === true && !config.cacheComponents) console.warn("[vinext] `experimental.cachedNavigations` requires `cacheComponents: true` to have any effect. Set `cacheComponents: true` in your next.config, or remove `experimental.cachedNavigations`.");
524
593
  if (config.webpack !== void 0) if (mdx || Object.keys(webpackProbe.aliases).length > 0) console.warn("[vinext] next.config option \"webpack\" is only partially supported. vinext preserves resolve.alias entries and MDX loader settings, but other webpack customization is ignored");
525
594
  else console.warn("[vinext] next.config option \"webpack\" is not yet supported and will be ignored");
526
595
  const output = readOptionalString(config.output) ?? "";
@@ -555,6 +624,7 @@ async function resolveNextConfig(config, root = process.cwd()) {
555
624
  pageExtensions,
556
625
  instrumentationClientInject: Array.isArray(config.instrumentationClientInject) ? config.instrumentationClientInject.filter((x) => typeof x === "string") : [],
557
626
  cacheComponents: config.cacheComponents ?? false,
627
+ prefetchInlining,
558
628
  redirects,
559
629
  rewrites,
560
630
  headers,
@@ -565,6 +635,7 @@ async function resolveNextConfig(config, root = process.cwd()) {
565
635
  allowedDevOrigins,
566
636
  serverActionsAllowedOrigins,
567
637
  optimizePackageImports,
638
+ inlineCss,
568
639
  serverActionsBodySizeLimit,
569
640
  expireTime: typeof config.expireTime === "number" ? config.expireTime : DEFAULT_EXPIRE_TIME,
570
641
  htmlLimitedBots,
@@ -572,10 +643,17 @@ async function resolveNextConfig(config, root = process.cwd()) {
572
643
  cacheHandler,
573
644
  cacheMaxMemorySize,
574
645
  enablePrerenderSourceMaps: config.enablePrerenderSourceMaps ?? true,
646
+ appShells,
575
647
  hashSalt,
576
648
  buildId,
577
649
  deploymentId,
578
- sassOptions: readOptionalRecord(config.sassOptions) ?? null
650
+ sassOptions: readOptionalRecord(config.sassOptions) ?? null,
651
+ removeConsole: config.compiler?.removeConsole === true ? true : isUnknownRecord(config.compiler?.removeConsole) ? { exclude: readStringArray(config.compiler.removeConsole.exclude) } : false,
652
+ disableOptimizedLoading: experimental?.disableOptimizedLoading === true,
653
+ compilerDefine: serializeCompilerDefine(config.compiler?.define),
654
+ compilerDefineServer: serializeCompilerDefine(config.compiler?.defineServer),
655
+ clientTraceMetadata: Array.isArray(experimental?.clientTraceMetadata) ? experimental.clientTraceMetadata.filter((value) => typeof value === "string") : void 0,
656
+ staleTimes: resolveStaleTimes(experimental)
579
657
  };
580
658
  detectNextIntlConfig(root, resolved);
581
659
  if (resolved.basePath !== "" && resolved.basePath !== "/" && resolved.assetPrefix === "") resolved.assetPrefix = resolved.basePath;
@@ -619,6 +697,7 @@ async function probeWebpackConfig(config, root) {
619
697
  try {
620
698
  const finalConfig = await config.webpack(mockConfig, mockOptions) ?? mockConfig;
621
699
  const rules = finalConfig.module?.rules ?? mockModuleRules;
700
+ invokeLoaderSideEffects(rules, root);
622
701
  return {
623
702
  aliases: normalizeAliasEntries(finalConfig.resolve?.alias, root),
624
703
  mdx: extractMdxOptionsFromRules(rules)
@@ -631,6 +710,76 @@ async function probeWebpackConfig(config, root) {
631
710
  }
632
711
  }
633
712
  /**
713
+ * Walk webpack module rules and invoke each referenced loader once with a
714
+ * dummy source string. Loaders that mutate `process.env` at compile time (a
715
+ * pattern supported by Next.js' webpack pipeline — see issue #1500) get a
716
+ * chance to land their mutations before vinext computes its defines.
717
+ * Failures are swallowed: a loader throwing on dummy input must not break
718
+ * the build, since vinext doesn't actually use the loader's transform output.
719
+ */
720
+ function invokeLoaderSideEffects(rules, root) {
721
+ const require = createRequire(path.join(root, "package.json"));
722
+ const seen = /* @__PURE__ */ new Set();
723
+ const invokeLoaderEntry = (entry, ruleOptions) => {
724
+ if (!entry) return;
725
+ let loaderPath;
726
+ let loaderFn;
727
+ let options = ruleOptions;
728
+ if (typeof entry === "string") loaderPath = entry;
729
+ else if (typeof entry === "function") loaderFn = entry;
730
+ else if (typeof entry === "object") {
731
+ const e = entry;
732
+ if (typeof e.loader === "string") loaderPath = e.loader;
733
+ else if (typeof e.loader === "function") loaderFn = e.loader;
734
+ if (e.options !== void 0) options = e.options;
735
+ }
736
+ if (loaderPath !== void 0) {
737
+ if (seen.has(loaderPath)) return;
738
+ seen.add(loaderPath);
739
+ if (loaderPath.includes("next-babel-loader") || loaderPath.includes("mdx") || loaderPath.startsWith("next/dist/build/webpack")) return;
740
+ try {
741
+ loaderFn = require(loaderPath);
742
+ if (loaderFn && typeof loaderFn === "object" && typeof loaderFn.default === "function") loaderFn = loaderFn.default;
743
+ } catch {
744
+ return;
745
+ }
746
+ }
747
+ if (typeof loaderFn !== "function") return;
748
+ if (seen.has(loaderFn)) return;
749
+ seen.add(loaderFn);
750
+ try {
751
+ const loaderThis = {
752
+ async: () => () => {},
753
+ callback: () => {},
754
+ emitError: () => {},
755
+ emitWarning: () => {},
756
+ cacheable: () => {},
757
+ getOptions: () => options ?? {},
758
+ query: options ?? {},
759
+ resourcePath: "",
760
+ resource: "",
761
+ rootContext: root,
762
+ context: root,
763
+ mode: "production"
764
+ };
765
+ loaderFn.call(loaderThis, "");
766
+ } catch {}
767
+ };
768
+ const visit = (rule) => {
769
+ if (!rule || typeof rule !== "object") return;
770
+ if (Array.isArray(rule)) {
771
+ for (const child of rule) visit(child);
772
+ return;
773
+ }
774
+ if (Array.isArray(rule.oneOf)) for (const child of rule.oneOf) visit(child);
775
+ if (Array.isArray(rule.rules)) for (const child of rule.rules) visit(child);
776
+ const uses = Array.isArray(rule.use) ? rule.use : rule.use ? [rule.use] : [];
777
+ for (const use of uses) invokeLoaderEntry(use);
778
+ if (rule.loader !== void 0) invokeLoaderEntry(rule.loader, rule.options);
779
+ };
780
+ for (const rule of rules) visit(rule);
781
+ }
782
+ /**
634
783
  * Extract MDX compilation options (remark/rehype/recma plugins) from
635
784
  * a Next.js config that uses @next/mdx.
636
785
  *