vinext 0.0.52 → 0.0.54

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 (330) hide show
  1. package/README.md +1 -1
  2. package/dist/build/clean-output.d.ts +14 -0
  3. package/dist/build/clean-output.js +36 -0
  4. package/dist/build/clean-output.js.map +1 -0
  5. package/dist/build/inline-css.d.ts +7 -0
  6. package/dist/build/inline-css.js +50 -0
  7. package/dist/build/inline-css.js.map +1 -0
  8. package/dist/build/prerender.d.ts +6 -2
  9. package/dist/build/prerender.js +51 -12
  10. package/dist/build/prerender.js.map +1 -1
  11. package/dist/build/run-prerender.js +10 -1
  12. package/dist/build/run-prerender.js.map +1 -1
  13. package/dist/build/static-export.d.ts +5 -0
  14. package/dist/build/static-export.js +8 -3
  15. package/dist/build/static-export.js.map +1 -1
  16. package/dist/check.js +4 -0
  17. package/dist/check.js.map +1 -1
  18. package/dist/cli.js +19 -4
  19. package/dist/cli.js.map +1 -1
  20. package/dist/client/instrumentation-client-inject.d.ts +34 -0
  21. package/dist/client/instrumentation-client-inject.js +57 -0
  22. package/dist/client/instrumentation-client-inject.js.map +1 -0
  23. package/dist/client/navigation-runtime.d.ts +16 -2
  24. package/dist/client/navigation-runtime.js +16 -1
  25. package/dist/client/navigation-runtime.js.map +1 -1
  26. package/dist/client/vinext-next-data.d.ts +2 -1
  27. package/dist/client/vinext-next-data.js.map +1 -1
  28. package/dist/client/window-next.d.ts +17 -2
  29. package/dist/client/window-next.js.map +1 -1
  30. package/dist/cloudflare/tpr.js +1 -1
  31. package/dist/cloudflare/tpr.js.map +1 -1
  32. package/dist/config/config-matchers.js +2 -1
  33. package/dist/config/config-matchers.js.map +1 -1
  34. package/dist/config/next-config.d.ts +95 -4
  35. package/dist/config/next-config.js +173 -14
  36. package/dist/config/next-config.js.map +1 -1
  37. package/dist/deploy.js +42 -7
  38. package/dist/deploy.js.map +1 -1
  39. package/dist/entries/app-browser-entry.d.ts +11 -1
  40. package/dist/entries/app-browser-entry.js +16 -6
  41. package/dist/entries/app-browser-entry.js.map +1 -1
  42. package/dist/entries/app-rsc-entry.d.ts +12 -3
  43. package/dist/entries/app-rsc-entry.js +41 -8
  44. package/dist/entries/app-rsc-entry.js.map +1 -1
  45. package/dist/entries/app-rsc-manifest.d.ts +21 -1
  46. package/dist/entries/app-rsc-manifest.js +6 -4
  47. package/dist/entries/app-rsc-manifest.js.map +1 -1
  48. package/dist/entries/pages-client-entry.d.ts +4 -1
  49. package/dist/entries/pages-client-entry.js +40 -3
  50. package/dist/entries/pages-client-entry.js.map +1 -1
  51. package/dist/entries/pages-server-entry.js +292 -34
  52. package/dist/entries/pages-server-entry.js.map +1 -1
  53. package/dist/entries/runtime-entry-module.d.ts +1 -10
  54. package/dist/entries/runtime-entry-module.js +2 -12
  55. package/dist/entries/runtime-entry-module.js.map +1 -1
  56. package/dist/index.js +91 -10
  57. package/dist/index.js.map +1 -1
  58. package/dist/plugins/fonts.js +25 -2
  59. package/dist/plugins/fonts.js.map +1 -1
  60. package/dist/plugins/remove-console.d.ts +16 -0
  61. package/dist/plugins/remove-console.js +176 -0
  62. package/dist/plugins/remove-console.js.map +1 -0
  63. package/dist/routing/app-route-graph.d.ts +24 -1
  64. package/dist/routing/app-route-graph.js +52 -4
  65. package/dist/routing/app-route-graph.js.map +1 -1
  66. package/dist/routing/app-router.d.ts +2 -2
  67. package/dist/routing/app-router.js +2 -2
  68. package/dist/routing/app-router.js.map +1 -1
  69. package/dist/routing/file-matcher.d.ts +21 -1
  70. package/dist/routing/file-matcher.js +39 -1
  71. package/dist/routing/file-matcher.js.map +1 -1
  72. package/dist/routing/pages-router.d.ts +1 -1
  73. package/dist/routing/pages-router.js +10 -3
  74. package/dist/routing/pages-router.js.map +1 -1
  75. package/dist/routing/route-trie.js +13 -18
  76. package/dist/routing/route-trie.js.map +1 -1
  77. package/dist/routing/utils.d.ts +11 -1
  78. package/dist/routing/utils.js +15 -1
  79. package/dist/routing/utils.js.map +1 -1
  80. package/dist/server/api-handler.js +19 -10
  81. package/dist/server/api-handler.js.map +1 -1
  82. package/dist/server/app-browser-action-result.d.ts +16 -1
  83. package/dist/server/app-browser-action-result.js +15 -1
  84. package/dist/server/app-browser-action-result.js.map +1 -1
  85. package/dist/server/app-browser-entry.js +47 -28
  86. package/dist/server/app-browser-entry.js.map +1 -1
  87. package/dist/server/app-browser-navigation-controller.d.ts +2 -0
  88. package/dist/server/app-browser-navigation-controller.js +4 -0
  89. package/dist/server/app-browser-navigation-controller.js.map +1 -1
  90. package/dist/server/app-elements-wire.d.ts +13 -4
  91. package/dist/server/app-elements-wire.js +10 -1
  92. package/dist/server/app-elements-wire.js.map +1 -1
  93. package/dist/server/app-elements.d.ts +2 -2
  94. package/dist/server/app-elements.js +2 -2
  95. package/dist/server/app-elements.js.map +1 -1
  96. package/dist/server/app-fallback-renderer.d.ts +27 -8
  97. package/dist/server/app-fallback-renderer.js +19 -8
  98. package/dist/server/app-fallback-renderer.js.map +1 -1
  99. package/dist/server/app-history-state.js +6 -2
  100. package/dist/server/app-history-state.js.map +1 -1
  101. package/dist/server/app-inline-css-client.d.ts +7 -0
  102. package/dist/server/app-inline-css-client.js +37 -0
  103. package/dist/server/app-inline-css-client.js.map +1 -0
  104. package/dist/server/app-interception-context-header.d.ts +33 -0
  105. package/dist/server/app-interception-context-header.js +44 -0
  106. package/dist/server/app-interception-context-header.js.map +1 -0
  107. package/dist/server/app-mounted-slots-header.d.ts +19 -0
  108. package/dist/server/app-mounted-slots-header.js +40 -1
  109. package/dist/server/app-mounted-slots-header.js.map +1 -1
  110. package/dist/server/app-optimistic-routing.js +26 -18
  111. package/dist/server/app-optimistic-routing.js.map +1 -1
  112. package/dist/server/app-page-boundary-render.d.ts +1 -0
  113. package/dist/server/app-page-boundary-render.js +2 -0
  114. package/dist/server/app-page-boundary-render.js.map +1 -1
  115. package/dist/server/app-page-boundary.d.ts +22 -1
  116. package/dist/server/app-page-boundary.js +30 -3
  117. package/dist/server/app-page-boundary.js.map +1 -1
  118. package/dist/server/app-page-cache.d.ts +9 -3
  119. package/dist/server/app-page-cache.js +14 -8
  120. package/dist/server/app-page-cache.js.map +1 -1
  121. package/dist/server/app-page-dispatch.d.ts +13 -1
  122. package/dist/server/app-page-dispatch.js +136 -82
  123. package/dist/server/app-page-dispatch.js.map +1 -1
  124. package/dist/server/app-page-element-builder.d.ts +2 -1
  125. package/dist/server/app-page-element-builder.js +17 -30
  126. package/dist/server/app-page-element-builder.js.map +1 -1
  127. package/dist/server/app-page-execution.d.ts +1 -0
  128. package/dist/server/app-page-execution.js +2 -0
  129. package/dist/server/app-page-execution.js.map +1 -1
  130. package/dist/server/app-page-head.d.ts +1 -0
  131. package/dist/server/app-page-head.js +8 -0
  132. package/dist/server/app-page-head.js.map +1 -1
  133. package/dist/server/app-page-render-identity.d.ts +22 -0
  134. package/dist/server/app-page-render-identity.js +42 -0
  135. package/dist/server/app-page-render-identity.js.map +1 -0
  136. package/dist/server/app-page-render-observation.js +1 -1
  137. package/dist/server/app-page-render.d.ts +9 -1
  138. package/dist/server/app-page-render.js +8 -2
  139. package/dist/server/app-page-render.js.map +1 -1
  140. package/dist/server/app-page-request.d.ts +6 -3
  141. package/dist/server/app-page-request.js +5 -2
  142. package/dist/server/app-page-request.js.map +1 -1
  143. package/dist/server/app-page-response.d.ts +11 -1
  144. package/dist/server/app-page-response.js +16 -4
  145. package/dist/server/app-page-response.js.map +1 -1
  146. package/dist/server/app-page-route-wiring.d.ts +16 -0
  147. package/dist/server/app-page-route-wiring.js +25 -10
  148. package/dist/server/app-page-route-wiring.js.map +1 -1
  149. package/dist/server/app-page-stream.d.ts +12 -0
  150. package/dist/server/app-page-stream.js +3 -0
  151. package/dist/server/app-page-stream.js.map +1 -1
  152. package/dist/server/app-route-handler-dispatch.d.ts +1 -0
  153. package/dist/server/app-route-handler-dispatch.js +3 -0
  154. package/dist/server/app-route-handler-dispatch.js.map +1 -1
  155. package/dist/server/app-route-handler-execution.d.ts +1 -0
  156. package/dist/server/app-route-handler-execution.js +1 -0
  157. package/dist/server/app-route-handler-execution.js.map +1 -1
  158. package/dist/server/app-route-handler-response.js +38 -6
  159. package/dist/server/app-route-handler-response.js.map +1 -1
  160. package/dist/server/app-rsc-handler.d.ts +16 -3
  161. package/dist/server/app-rsc-handler.js +60 -11
  162. package/dist/server/app-rsc-handler.js.map +1 -1
  163. package/dist/server/app-rsc-request-normalization.d.ts +2 -1
  164. package/dist/server/app-rsc-request-normalization.js +6 -4
  165. package/dist/server/app-rsc-request-normalization.js.map +1 -1
  166. package/dist/server/app-segment-config.d.ts +4 -1
  167. package/dist/server/app-segment-config.js +6 -1
  168. package/dist/server/app-segment-config.js.map +1 -1
  169. package/dist/server/app-server-action-execution.d.ts +22 -3
  170. package/dist/server/app-server-action-execution.js +46 -7
  171. package/dist/server/app-server-action-execution.js.map +1 -1
  172. package/dist/server/app-ssr-entry.d.ts +6 -0
  173. package/dist/server/app-ssr-entry.js +57 -6
  174. package/dist/server/app-ssr-entry.js.map +1 -1
  175. package/dist/server/app-ssr-error-meta.js +3 -3
  176. package/dist/server/app-ssr-error-meta.js.map +1 -1
  177. package/dist/server/app-ssr-stream.d.ts +25 -1
  178. package/dist/server/app-ssr-stream.js +237 -19
  179. package/dist/server/app-ssr-stream.js.map +1 -1
  180. package/dist/server/app-static-generation.d.ts +1 -0
  181. package/dist/server/app-static-generation.js +2 -1
  182. package/dist/server/app-static-generation.js.map +1 -1
  183. package/dist/server/client-trace-metadata.d.ts +31 -0
  184. package/dist/server/client-trace-metadata.js +83 -0
  185. package/dist/server/client-trace-metadata.js.map +1 -0
  186. package/dist/server/cookie-utils.d.ts +13 -0
  187. package/dist/server/cookie-utils.js +20 -0
  188. package/dist/server/cookie-utils.js.map +1 -0
  189. package/dist/server/default-not-found-module.d.ts +20 -0
  190. package/dist/server/default-not-found-module.js +20 -0
  191. package/dist/server/default-not-found-module.js.map +1 -0
  192. package/dist/server/dev-server.d.ts +8 -1
  193. package/dist/server/dev-server.js +56 -11
  194. package/dist/server/dev-server.js.map +1 -1
  195. package/dist/server/headers.d.ts +5 -1
  196. package/dist/server/headers.js +5 -1
  197. package/dist/server/headers.js.map +1 -1
  198. package/dist/server/html.d.ts +2 -1
  199. package/dist/server/html.js +6 -1
  200. package/dist/server/html.js.map +1 -1
  201. package/dist/server/image-optimization.d.ts +13 -4
  202. package/dist/server/image-optimization.js +15 -4
  203. package/dist/server/image-optimization.js.map +1 -1
  204. package/dist/server/isr-cache.d.ts +7 -5
  205. package/dist/server/isr-cache.js +17 -6
  206. package/dist/server/isr-cache.js.map +1 -1
  207. package/dist/server/middleware-runtime.js +1 -2
  208. package/dist/server/middleware-runtime.js.map +1 -1
  209. package/dist/server/middleware.js +1 -1
  210. package/dist/server/middleware.js.map +1 -1
  211. package/dist/server/pages-api-route.d.ts +18 -0
  212. package/dist/server/pages-api-route.js +3 -1
  213. package/dist/server/pages-api-route.js.map +1 -1
  214. package/dist/server/pages-body-parser-config.d.ts +60 -0
  215. package/dist/server/pages-body-parser-config.js +79 -0
  216. package/dist/server/pages-body-parser-config.js.map +1 -0
  217. package/dist/server/pages-data-route.js +1 -0
  218. package/dist/server/pages-data-route.js.map +1 -1
  219. package/dist/server/pages-default-404.d.ts +31 -0
  220. package/dist/server/pages-default-404.js +40 -0
  221. package/dist/server/pages-default-404.js.map +1 -0
  222. package/dist/server/pages-document-initial-props.d.ts +7 -0
  223. package/dist/server/pages-document-initial-props.js +14 -0
  224. package/dist/server/pages-document-initial-props.js.map +1 -0
  225. package/dist/server/pages-node-compat.d.ts +10 -0
  226. package/dist/server/pages-node-compat.js +12 -1
  227. package/dist/server/pages-node-compat.js.map +1 -1
  228. package/dist/server/pages-page-data.d.ts +40 -0
  229. package/dist/server/pages-page-data.js +19 -14
  230. package/dist/server/pages-page-data.js.map +1 -1
  231. package/dist/server/pages-page-method.d.ts +48 -0
  232. package/dist/server/pages-page-method.js +19 -0
  233. package/dist/server/pages-page-method.js.map +1 -0
  234. package/dist/server/pages-page-response.d.ts +8 -0
  235. package/dist/server/pages-page-response.js +21 -11
  236. package/dist/server/pages-page-response.js.map +1 -1
  237. package/dist/server/pages-serializable-props.d.ts +25 -0
  238. package/dist/server/pages-serializable-props.js +69 -0
  239. package/dist/server/pages-serializable-props.js.map +1 -0
  240. package/dist/server/prerender-route-params.d.ts +14 -0
  241. package/dist/server/prerender-route-params.js +94 -0
  242. package/dist/server/prerender-route-params.js.map +1 -0
  243. package/dist/server/prod-server.d.ts +3 -23
  244. package/dist/server/prod-server.js +43 -57
  245. package/dist/server/prod-server.js.map +1 -1
  246. package/dist/server/proxy-trust.d.ts +41 -0
  247. package/dist/server/proxy-trust.js +70 -0
  248. package/dist/server/proxy-trust.js.map +1 -0
  249. package/dist/server/request-pipeline.d.ts +3 -3
  250. package/dist/server/request-pipeline.js +5 -4
  251. package/dist/server/request-pipeline.js.map +1 -1
  252. package/dist/server/seed-cache.js +12 -6
  253. package/dist/server/seed-cache.js.map +1 -1
  254. package/dist/server/server-action-not-found.js +3 -2
  255. package/dist/server/server-action-not-found.js.map +1 -1
  256. package/dist/server/static-file-cache.js +2 -1
  257. package/dist/server/static-file-cache.js.map +1 -1
  258. package/dist/server/streaming-metadata.d.ts +5 -0
  259. package/dist/server/streaming-metadata.js +10 -0
  260. package/dist/server/streaming-metadata.js.map +1 -0
  261. package/dist/shims/app-router-scroll-state.d.ts +14 -0
  262. package/dist/shims/app-router-scroll-state.js +51 -0
  263. package/dist/shims/app-router-scroll-state.js.map +1 -0
  264. package/dist/shims/app-router-scroll.d.ts +28 -0
  265. package/dist/shims/app-router-scroll.js +115 -0
  266. package/dist/shims/app-router-scroll.js.map +1 -0
  267. package/dist/shims/before-interactive-context.d.ts +30 -0
  268. package/dist/shims/before-interactive-context.js +10 -0
  269. package/dist/shims/before-interactive-context.js.map +1 -0
  270. package/dist/shims/cache-runtime.d.ts +1 -1
  271. package/dist/shims/cache-runtime.js +14 -1
  272. package/dist/shims/cache-runtime.js.map +1 -1
  273. package/dist/shims/cache.d.ts +6 -0
  274. package/dist/shims/cache.js +7 -0
  275. package/dist/shims/cache.js.map +1 -1
  276. package/dist/shims/default-not-found.d.ts +12 -0
  277. package/dist/shims/default-not-found.js +61 -0
  278. package/dist/shims/default-not-found.js.map +1 -0
  279. package/dist/shims/error.js +3 -0
  280. package/dist/shims/error.js.map +1 -1
  281. package/dist/shims/font-local.d.ts +5 -0
  282. package/dist/shims/font-local.js +6 -2
  283. package/dist/shims/font-local.js.map +1 -1
  284. package/dist/shims/head.js +4 -4
  285. package/dist/shims/head.js.map +1 -1
  286. package/dist/shims/headers.d.ts +13 -2
  287. package/dist/shims/headers.js +73 -22
  288. package/dist/shims/headers.js.map +1 -1
  289. package/dist/shims/image.d.ts +1 -1
  290. package/dist/shims/image.js +4 -4
  291. package/dist/shims/image.js.map +1 -1
  292. package/dist/shims/internal/app-route-detection.d.ts +37 -0
  293. package/dist/shims/internal/app-route-detection.js +69 -0
  294. package/dist/shims/internal/app-route-detection.js.map +1 -0
  295. package/dist/shims/internal/pages-data-target.d.ts +58 -0
  296. package/dist/shims/internal/pages-data-target.js +91 -0
  297. package/dist/shims/internal/pages-data-target.js.map +1 -0
  298. package/dist/shims/internal/pages-data-url.d.ts +42 -0
  299. package/dist/shims/internal/pages-data-url.js +73 -0
  300. package/dist/shims/internal/pages-data-url.js.map +1 -0
  301. package/dist/shims/link.d.ts +18 -2
  302. package/dist/shims/link.js +129 -15
  303. package/dist/shims/link.js.map +1 -1
  304. package/dist/shims/metadata.d.ts +9 -7
  305. package/dist/shims/metadata.js +70 -7
  306. package/dist/shims/metadata.js.map +1 -1
  307. package/dist/shims/navigation.d.ts +1 -2
  308. package/dist/shims/navigation.js +94 -20
  309. package/dist/shims/navigation.js.map +1 -1
  310. package/dist/shims/router.d.ts +5 -0
  311. package/dist/shims/router.js +389 -80
  312. package/dist/shims/router.js.map +1 -1
  313. package/dist/shims/script.d.ts +11 -1
  314. package/dist/shims/script.js +158 -15
  315. package/dist/shims/script.js.map +1 -1
  316. package/dist/shims/server.js +1 -0
  317. package/dist/shims/server.js.map +1 -1
  318. package/dist/shims/url-utils.d.ts +2 -1
  319. package/dist/shims/url-utils.js +15 -4
  320. package/dist/shims/url-utils.js.map +1 -1
  321. package/dist/utils/html-limited-bots.d.ts +5 -0
  322. package/dist/utils/html-limited-bots.js +15 -0
  323. package/dist/utils/html-limited-bots.js.map +1 -0
  324. package/dist/utils/path.d.ts +13 -0
  325. package/dist/utils/path.js +16 -0
  326. package/dist/utils/path.js.map +1 -0
  327. package/dist/utils/query.d.ts +6 -0
  328. package/dist/utils/query.js +10 -1
  329. package/dist/utils/query.js.map +1 -1
  330. package/package.json +1 -1
@@ -1,6 +1,8 @@
1
1
  import { normalizePageExtensions } from "../routing/file-matcher.js";
2
2
  import { applyLocaleToRoutes, isExternalUrl } from "./config-matchers.js";
3
+ import { isUnknownRecord } from "../utils/record.js";
3
4
  import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from "../shims/constants.js";
5
+ import { getHtmlLimitedBotRegex } from "../utils/html-limited-bots.js";
4
6
  import { loadTsconfigPathAliasesForRoot } from "./tsconfig-paths.js";
5
7
  import { createRequire } from "node:module";
6
8
  import fs from "node:fs";
@@ -398,6 +400,71 @@ function resolveCacheHandlerPathToFilesystem(filePath) {
398
400
  if (filePath.startsWith("file://")) return fileURLToPath(filePath);
399
401
  return filePath;
400
402
  }
403
+ function resolveHtmlLimitedBots(value) {
404
+ const source = value instanceof RegExp ? value.source : typeof value === "string" ? value : void 0;
405
+ if (!source) return void 0;
406
+ try {
407
+ getHtmlLimitedBotRegex(source);
408
+ } catch (error) {
409
+ throw new Error("Invalid next.config option \"htmlLimitedBots\": expected a valid regular expression source", { cause: error });
410
+ }
411
+ return source;
412
+ }
413
+ function readOptionalRecord(value) {
414
+ return isUnknownRecord(value) ? value : void 0;
415
+ }
416
+ function readOptionalString(value) {
417
+ return typeof value === "string" ? value : void 0;
418
+ }
419
+ function readOptionalBodySizeLimit(value) {
420
+ return typeof value === "string" || typeof value === "number" ? value : void 0;
421
+ }
422
+ function readStringArray(value) {
423
+ return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
424
+ }
425
+ /**
426
+ * Serialize a `compiler.define` / `compiler.defineServer` map into the
427
+ * Vite-friendly `Record<string, string>` shape where each value is already
428
+ * a JSON-encoded literal of source code. Entries whose values are not a
429
+ * string/number/boolean are silently dropped, matching how Next.js types
430
+ * the API (other shapes are not part of the contract).
431
+ *
432
+ * Mirrors Next.js: packages/next/src/build/define-env.ts (serializeDefineEnv).
433
+ */
434
+ function serializeCompilerDefine(value) {
435
+ if (!isUnknownRecord(value)) return {};
436
+ const out = {};
437
+ for (const [key, raw] of Object.entries(value)) if (typeof raw === "string" || typeof raw === "number" || typeof raw === "boolean") out[key] = JSON.stringify(raw);
438
+ return out;
439
+ }
440
+ /**
441
+ * Defaults for `experimental.staleTimes` (in seconds), matching Next.js'
442
+ * `config-shared.ts` defaults.
443
+ */
444
+ const DEFAULT_STALE_TIMES = {
445
+ dynamic: 0,
446
+ static: 300
447
+ };
448
+ /**
449
+ * Parse `experimental.staleTimes` from a raw next.config object.
450
+ *
451
+ * Mirrors Next.js' `build/define-env.ts` parsing logic:
452
+ * - missing / NaN / negative values fall back to the documented defaults
453
+ * (`dynamic: 0`, `static: 300`) — matching Next.js parity and the
454
+ * non-negative guard in `resolvePrefetchCacheTtl`
455
+ * - all values are in seconds
456
+ *
457
+ * @see https://nextjs.org/docs/app/api-reference/config/next-config-js/staleTimes
458
+ */
459
+ function resolveStaleTimes(experimental) {
460
+ const staleTimes = readOptionalRecord(experimental?.staleTimes);
461
+ const dynamicRaw = Number(staleTimes?.dynamic);
462
+ const staticRaw = Number(staleTimes?.static);
463
+ return {
464
+ dynamic: Number.isFinite(dynamicRaw) && dynamicRaw >= 0 ? dynamicRaw : DEFAULT_STALE_TIMES.dynamic,
465
+ static: Number.isFinite(staticRaw) && staticRaw >= 0 ? staticRaw : DEFAULT_STALE_TIMES.static
466
+ };
467
+ }
401
468
  /**
402
469
  * Resolve a NextConfig into a fully-resolved ResolvedNextConfig.
403
470
  * Awaits async functions for redirects/rewrites/headers.
@@ -428,8 +495,10 @@ async function resolveNextConfig(config, root = process.cwd()) {
428
495
  allowedDevOrigins: [],
429
496
  serverActionsAllowedOrigins: [],
430
497
  optimizePackageImports: [],
498
+ inlineCss: false,
431
499
  serverActionsBodySizeLimit: 1 * 1024 * 1024,
432
500
  expireTime: DEFAULT_EXPIRE_TIME,
501
+ htmlLimitedBots: void 0,
433
502
  serverExternalPackages: [],
434
503
  cacheHandler: void 0,
435
504
  cacheMaxMemorySize: void 0,
@@ -437,7 +506,14 @@ async function resolveNextConfig(config, root = process.cwd()) {
437
506
  hashSalt: process.env.NEXT_HASH_SALT ?? "",
438
507
  buildId,
439
508
  deploymentId,
440
- sassOptions: null
509
+ sassOptions: null,
510
+ removeConsole: false,
511
+ disableOptimizedLoading: false,
512
+ compilerDefine: {},
513
+ compilerDefineServer: {},
514
+ instrumentationClientInject: [],
515
+ clientTraceMetadata: void 0,
516
+ staleTimes: { ...DEFAULT_STALE_TIMES }
441
517
  };
442
518
  detectNextIntlConfig(root, resolved);
443
519
  return resolved;
@@ -482,20 +558,23 @@ async function resolveNextConfig(config, root = process.cwd()) {
482
558
  ...webpackProbe.aliases
483
559
  };
484
560
  const allowedDevOrigins = Array.isArray(config.allowedDevOrigins) ? config.allowedDevOrigins : [];
485
- const experimental = config.experimental;
486
- const serverActionsConfig = experimental?.serverActions;
487
- const serverActionsAllowedOrigins = Array.isArray(serverActionsConfig?.allowedOrigins) ? serverActionsConfig.allowedOrigins : [];
488
- const serverActionsBodySizeLimit = parseBodySizeLimit(serverActionsConfig?.bodySizeLimit);
489
- const hashSalt = (experimental?.outputHashSalt ?? "") + (process.env.NEXT_HASH_SALT ?? "");
561
+ const experimental = readOptionalRecord(config.experimental);
562
+ const serverActionsConfig = readOptionalRecord(experimental?.serverActions);
563
+ const serverActionsAllowedOrigins = readStringArray(serverActionsConfig?.allowedOrigins);
564
+ const serverActionsBodySizeLimit = parseBodySizeLimit(readOptionalBodySizeLimit(serverActionsConfig?.bodySizeLimit));
565
+ const hashSalt = (readOptionalString(experimental?.outputHashSalt) ?? "") + (process.env.NEXT_HASH_SALT ?? "");
566
+ const htmlLimitedBots = resolveHtmlLimitedBots(config.htmlLimitedBots);
490
567
  const rawOptimize = experimental?.optimizePackageImports;
491
568
  const optimizePackageImports = Array.isArray(rawOptimize) ? rawOptimize.filter((x) => typeof x === "string") : [];
492
- const legacyServerComponentsExternal = experimental?.serverComponentsExternalPackages;
493
- const serverExternalPackages = Array.isArray(config.serverExternalPackages) ? config.serverExternalPackages : Array.isArray(legacyServerComponentsExternal) ? legacyServerComponentsExternal : [];
569
+ const inlineCss = experimental?.inlineCss === true;
570
+ const topLevelServerExternalPackages = Array.isArray(config.serverExternalPackages) ? readStringArray(config.serverExternalPackages) : void 0;
571
+ const legacyServerComponentsExternal = readStringArray(experimental?.serverComponentsExternalPackages);
572
+ const serverExternalPackages = topLevelServerExternalPackages ?? legacyServerComponentsExternal;
494
573
  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.");
495
574
  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).");
496
575
  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");
497
576
  else console.warn("[vinext] next.config option \"webpack\" is not yet supported and will be ignored");
498
- const output = config.output ?? "";
577
+ const output = readOptionalString(config.output) ?? "";
499
578
  if (output && output !== "export" && output !== "standalone") console.warn(`[vinext] Unknown output mode "${output}", ignoring`);
500
579
  const pageExtensions = normalizePageExtensions(config.pageExtensions);
501
580
  let i18n = null;
@@ -525,6 +604,7 @@ async function resolveNextConfig(config, root = process.cwd()) {
525
604
  trailingSlash: config.trailingSlash ?? false,
526
605
  output: output === "export" || output === "standalone" ? output : "",
527
606
  pageExtensions,
607
+ instrumentationClientInject: Array.isArray(config.instrumentationClientInject) ? config.instrumentationClientInject.filter((x) => typeof x === "string") : [],
528
608
  cacheComponents: config.cacheComponents ?? false,
529
609
  redirects,
530
610
  rewrites,
@@ -536,8 +616,10 @@ async function resolveNextConfig(config, root = process.cwd()) {
536
616
  allowedDevOrigins,
537
617
  serverActionsAllowedOrigins,
538
618
  optimizePackageImports,
619
+ inlineCss,
539
620
  serverActionsBodySizeLimit,
540
621
  expireTime: typeof config.expireTime === "number" ? config.expireTime : DEFAULT_EXPIRE_TIME,
622
+ htmlLimitedBots,
541
623
  serverExternalPackages,
542
624
  cacheHandler,
543
625
  cacheMaxMemorySize,
@@ -545,7 +627,13 @@ async function resolveNextConfig(config, root = process.cwd()) {
545
627
  hashSalt,
546
628
  buildId,
547
629
  deploymentId,
548
- sassOptions: config.sassOptions && typeof config.sassOptions === "object" ? config.sassOptions : null
630
+ sassOptions: readOptionalRecord(config.sassOptions) ?? null,
631
+ removeConsole: config.compiler?.removeConsole === true ? true : isUnknownRecord(config.compiler?.removeConsole) ? { exclude: readStringArray(config.compiler.removeConsole.exclude) } : false,
632
+ disableOptimizedLoading: experimental?.disableOptimizedLoading === true,
633
+ compilerDefine: serializeCompilerDefine(config.compiler?.define),
634
+ compilerDefineServer: serializeCompilerDefine(config.compiler?.defineServer),
635
+ clientTraceMetadata: Array.isArray(experimental?.clientTraceMetadata) ? experimental.clientTraceMetadata.filter((value) => typeof value === "string") : void 0,
636
+ staleTimes: resolveStaleTimes(experimental)
549
637
  };
550
638
  detectNextIntlConfig(root, resolved);
551
639
  if (resolved.basePath !== "" && resolved.basePath !== "/" && resolved.assetPrefix === "") resolved.assetPrefix = resolved.basePath;
@@ -561,11 +649,11 @@ function normalizeAliasEntries(aliases, root) {
561
649
  return normalized;
562
650
  }
563
651
  function extractTurboAliases(config, root) {
564
- const experimentalTurbo = config.experimental?.turbo;
565
- const topLevelTurbopack = config.turbopack;
652
+ const experimentalTurbo = readOptionalRecord(readOptionalRecord(config.experimental)?.turbo);
653
+ const topLevelTurbopack = readOptionalRecord(config.turbopack);
566
654
  return {
567
- ...normalizeAliasEntries(experimentalTurbo?.resolveAlias, root),
568
- ...normalizeAliasEntries(topLevelTurbopack?.resolveAlias, root)
655
+ ...normalizeAliasEntries(readOptionalRecord(experimentalTurbo?.resolveAlias), root),
656
+ ...normalizeAliasEntries(readOptionalRecord(topLevelTurbopack?.resolveAlias), root)
569
657
  };
570
658
  }
571
659
  async function probeWebpackConfig(config, root) {
@@ -589,6 +677,7 @@ async function probeWebpackConfig(config, root) {
589
677
  try {
590
678
  const finalConfig = await config.webpack(mockConfig, mockOptions) ?? mockConfig;
591
679
  const rules = finalConfig.module?.rules ?? mockModuleRules;
680
+ invokeLoaderSideEffects(rules, root);
592
681
  return {
593
682
  aliases: normalizeAliasEntries(finalConfig.resolve?.alias, root),
594
683
  mdx: extractMdxOptionsFromRules(rules)
@@ -601,6 +690,76 @@ async function probeWebpackConfig(config, root) {
601
690
  }
602
691
  }
603
692
  /**
693
+ * Walk webpack module rules and invoke each referenced loader once with a
694
+ * dummy source string. Loaders that mutate `process.env` at compile time (a
695
+ * pattern supported by Next.js' webpack pipeline — see issue #1500) get a
696
+ * chance to land their mutations before vinext computes its defines.
697
+ * Failures are swallowed: a loader throwing on dummy input must not break
698
+ * the build, since vinext doesn't actually use the loader's transform output.
699
+ */
700
+ function invokeLoaderSideEffects(rules, root) {
701
+ const require = createRequire(path.join(root, "package.json"));
702
+ const seen = /* @__PURE__ */ new Set();
703
+ const invokeLoaderEntry = (entry, ruleOptions) => {
704
+ if (!entry) return;
705
+ let loaderPath;
706
+ let loaderFn;
707
+ let options = ruleOptions;
708
+ if (typeof entry === "string") loaderPath = entry;
709
+ else if (typeof entry === "function") loaderFn = entry;
710
+ else if (typeof entry === "object") {
711
+ const e = entry;
712
+ if (typeof e.loader === "string") loaderPath = e.loader;
713
+ else if (typeof e.loader === "function") loaderFn = e.loader;
714
+ if (e.options !== void 0) options = e.options;
715
+ }
716
+ if (loaderPath !== void 0) {
717
+ if (seen.has(loaderPath)) return;
718
+ seen.add(loaderPath);
719
+ if (loaderPath.includes("next-babel-loader") || loaderPath.includes("mdx") || loaderPath.startsWith("next/dist/build/webpack")) return;
720
+ try {
721
+ loaderFn = require(loaderPath);
722
+ if (loaderFn && typeof loaderFn === "object" && typeof loaderFn.default === "function") loaderFn = loaderFn.default;
723
+ } catch {
724
+ return;
725
+ }
726
+ }
727
+ if (typeof loaderFn !== "function") return;
728
+ if (seen.has(loaderFn)) return;
729
+ seen.add(loaderFn);
730
+ try {
731
+ const loaderThis = {
732
+ async: () => () => {},
733
+ callback: () => {},
734
+ emitError: () => {},
735
+ emitWarning: () => {},
736
+ cacheable: () => {},
737
+ getOptions: () => options ?? {},
738
+ query: options ?? {},
739
+ resourcePath: "",
740
+ resource: "",
741
+ rootContext: root,
742
+ context: root,
743
+ mode: "production"
744
+ };
745
+ loaderFn.call(loaderThis, "");
746
+ } catch {}
747
+ };
748
+ const visit = (rule) => {
749
+ if (!rule || typeof rule !== "object") return;
750
+ if (Array.isArray(rule)) {
751
+ for (const child of rule) visit(child);
752
+ return;
753
+ }
754
+ if (Array.isArray(rule.oneOf)) for (const child of rule.oneOf) visit(child);
755
+ if (Array.isArray(rule.rules)) for (const child of rule.rules) visit(child);
756
+ const uses = Array.isArray(rule.use) ? rule.use : rule.use ? [rule.use] : [];
757
+ for (const use of uses) invokeLoaderEntry(use);
758
+ if (rule.loader !== void 0) invokeLoaderEntry(rule.loader, rule.options);
759
+ };
760
+ for (const rule of rules) visit(rule);
761
+ }
762
+ /**
604
763
  * Extract MDX compilation options (remark/rehype/recma plugins) from
605
764
  * a Next.js config that uses @next/mdx.
606
765
  *