vinext 0.0.30 → 0.0.31

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 (435) hide show
  1. package/README.md +12 -6
  2. package/dist/build/prerender.d.ts +188 -0
  3. package/dist/build/prerender.js +675 -0
  4. package/dist/build/prerender.js.map +1 -0
  5. package/dist/build/report.d.ts +45 -46
  6. package/dist/build/report.js +247 -276
  7. package/dist/build/report.js.map +1 -1
  8. package/dist/build/run-prerender.d.ts +62 -0
  9. package/dist/build/run-prerender.js +183 -0
  10. package/dist/build/run-prerender.js.map +1 -0
  11. package/dist/build/server-manifest.d.ts +19 -0
  12. package/dist/build/server-manifest.js +29 -0
  13. package/dist/build/server-manifest.js.map +1 -0
  14. package/dist/build/static-export.d.ts +51 -66
  15. package/dist/build/static-export.js +51 -545
  16. package/dist/build/static-export.js.map +1 -1
  17. package/dist/check.d.ts +26 -24
  18. package/dist/check.js +591 -571
  19. package/dist/check.js.map +1 -1
  20. package/dist/cli.d.ts +1 -15
  21. package/dist/cli.js +430 -491
  22. package/dist/cli.js.map +1 -1
  23. package/dist/client/entry.d.ts +1 -2
  24. package/dist/client/entry.js +49 -62
  25. package/dist/client/entry.js.map +1 -1
  26. package/dist/client/validate-module-path.d.ts +4 -1
  27. package/dist/client/validate-module-path.js +23 -28
  28. package/dist/client/validate-module-path.js.map +1 -1
  29. package/dist/client/vinext-next-data.d.ts +15 -20
  30. package/dist/client/vinext-next-data.js +0 -1
  31. package/dist/cloudflare/index.d.ts +3 -8
  32. package/dist/cloudflare/index.js +3 -8
  33. package/dist/cloudflare/kv-cache-handler.d.ts +95 -105
  34. package/dist/cloudflare/kv-cache-handler.js +354 -380
  35. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  36. package/dist/cloudflare/tpr.d.ts +36 -34
  37. package/dist/cloudflare/tpr.js +460 -603
  38. package/dist/cloudflare/tpr.js.map +1 -1
  39. package/dist/config/config-matchers.d.ts +31 -40
  40. package/dist/config/config-matchers.js +727 -936
  41. package/dist/config/config-matchers.js.map +1 -1
  42. package/dist/config/dotenv.d.ts +18 -11
  43. package/dist/config/dotenv.js +79 -84
  44. package/dist/config/dotenv.js.map +1 -1
  45. package/dist/config/next-config.d.ts +156 -146
  46. package/dist/config/next-config.js +374 -464
  47. package/dist/config/next-config.js.map +1 -1
  48. package/dist/deploy.d.ts +87 -96
  49. package/dist/deploy.js +490 -628
  50. package/dist/deploy.js.map +1 -1
  51. package/dist/entries/app-browser-entry.d.ts +4 -1
  52. package/dist/entries/app-browser-entry.js +12 -8
  53. package/dist/entries/app-browser-entry.js.map +1 -1
  54. package/dist/entries/app-rsc-entry.d.ts +33 -20
  55. package/dist/entries/app-rsc-entry.js +442 -211
  56. package/dist/entries/app-rsc-entry.js.map +1 -1
  57. package/dist/entries/app-ssr-entry.d.ts +9 -1
  58. package/dist/entries/app-ssr-entry.js +61 -28
  59. package/dist/entries/app-ssr-entry.js.map +1 -1
  60. package/dist/entries/pages-client-entry.d.ts +6 -2
  61. package/dist/entries/pages-client-entry.js +30 -33
  62. package/dist/entries/pages-client-entry.js.map +1 -1
  63. package/dist/entries/pages-entry-helpers.d.ts +5 -1
  64. package/dist/entries/pages-entry-helpers.js +17 -14
  65. package/dist/entries/pages-entry-helpers.js.map +1 -1
  66. package/dist/entries/pages-server-entry.d.ts +6 -2
  67. package/dist/entries/pages-server-entry.js +84 -113
  68. package/dist/entries/pages-server-entry.js.map +1 -1
  69. package/dist/index.d.ts +82 -62
  70. package/dist/index.js +2172 -3133
  71. package/dist/index.js.map +1 -1
  72. package/dist/init.d.ts +40 -37
  73. package/dist/init.js +201 -258
  74. package/dist/init.js.map +1 -1
  75. package/dist/plugins/async-hooks-stub.d.ts +7 -3
  76. package/dist/plugins/async-hooks-stub.js +39 -42
  77. package/dist/plugins/async-hooks-stub.js.map +1 -1
  78. package/dist/plugins/client-reference-dedup.d.ts +7 -3
  79. package/dist/plugins/client-reference-dedup.js +63 -88
  80. package/dist/plugins/client-reference-dedup.js.map +1 -1
  81. package/dist/routing/app-router.d.ts +100 -96
  82. package/dist/routing/app-router.js +560 -670
  83. package/dist/routing/app-router.js.map +1 -1
  84. package/dist/routing/file-matcher.d.ts +18 -15
  85. package/dist/routing/file-matcher.js +65 -65
  86. package/dist/routing/file-matcher.js.map +1 -1
  87. package/dist/routing/pages-router.d.ts +23 -24
  88. package/dist/routing/pages-router.js +147 -172
  89. package/dist/routing/pages-router.js.map +1 -1
  90. package/dist/routing/route-trie.d.ts +23 -20
  91. package/dist/routing/route-trie.js +131 -151
  92. package/dist/routing/route-trie.js.map +1 -1
  93. package/dist/routing/route-validation.d.ts +5 -2
  94. package/dist/routing/route-validation.js +98 -130
  95. package/dist/routing/route-validation.js.map +1 -1
  96. package/dist/routing/utils.d.ts +10 -7
  97. package/dist/routing/utils.js +75 -111
  98. package/dist/routing/utils.js.map +1 -1
  99. package/dist/server/api-handler.d.ts +8 -13
  100. package/dist/server/api-handler.js +161 -193
  101. package/dist/server/api-handler.js.map +1 -1
  102. package/dist/server/app-router-entry.d.ts +6 -16
  103. package/dist/server/app-router-entry.js +26 -54
  104. package/dist/server/app-router-entry.js.map +1 -1
  105. package/dist/server/dev-module-runner.d.ts +11 -64
  106. package/dist/server/dev-module-runner.js +89 -101
  107. package/dist/server/dev-module-runner.js.map +1 -1
  108. package/dist/server/dev-origin-check.d.ts +12 -10
  109. package/dist/server/dev-origin-check.js +98 -108
  110. package/dist/server/dev-origin-check.js.map +1 -1
  111. package/dist/server/dev-server.d.ts +17 -14
  112. package/dist/server/dev-server.js +542 -869
  113. package/dist/server/dev-server.js.map +1 -1
  114. package/dist/server/html.d.ts +4 -1
  115. package/dist/server/html.js +25 -26
  116. package/dist/server/html.js.map +1 -1
  117. package/dist/server/image-optimization.d.ts +31 -28
  118. package/dist/server/image-optimization.js +181 -210
  119. package/dist/server/image-optimization.js.map +1 -1
  120. package/dist/server/instrumentation.d.ts +25 -22
  121. package/dist/server/instrumentation.js +110 -122
  122. package/dist/server/instrumentation.js.map +1 -1
  123. package/dist/server/isr-cache.d.ts +16 -26
  124. package/dist/server/isr-cache.js +106 -128
  125. package/dist/server/isr-cache.js.map +1 -1
  126. package/dist/server/metadata-routes.d.ts +85 -88
  127. package/dist/server/metadata-routes.js +270 -317
  128. package/dist/server/metadata-routes.js.map +1 -1
  129. package/dist/server/middleware-codegen.d.ts +7 -4
  130. package/dist/server/middleware-codegen.js +61 -61
  131. package/dist/server/middleware-codegen.js.map +1 -1
  132. package/dist/server/middleware-request-headers.d.ts +8 -6
  133. package/dist/server/middleware-request-headers.js +47 -65
  134. package/dist/server/middleware-request-headers.js.map +1 -1
  135. package/dist/server/middleware.d.ts +31 -47
  136. package/dist/server/middleware.js +273 -404
  137. package/dist/server/middleware.js.map +1 -1
  138. package/dist/server/normalize-path.d.ts +4 -1
  139. package/dist/server/normalize-path.js +33 -47
  140. package/dist/server/normalize-path.js.map +1 -1
  141. package/dist/server/pages-i18n.d.ts +38 -30
  142. package/dist/server/pages-i18n.js +112 -139
  143. package/dist/server/pages-i18n.js.map +1 -1
  144. package/dist/server/prod-server.d.ts +19 -31
  145. package/dist/server/prod-server.js +714 -945
  146. package/dist/server/prod-server.js.map +1 -1
  147. package/dist/server/request-log.d.ts +18 -12
  148. package/dist/server/request-log.js +45 -52
  149. package/dist/server/request-log.js.map +1 -1
  150. package/dist/server/request-pipeline.d.ts +9 -17
  151. package/dist/server/request-pipeline.js +133 -184
  152. package/dist/server/request-pipeline.js.map +1 -1
  153. package/dist/server/worker-utils.d.ts +4 -1
  154. package/dist/server/worker-utils.js +31 -37
  155. package/dist/server/worker-utils.js.map +1 -1
  156. package/dist/shims/amp.d.ts +5 -2
  157. package/dist/shims/amp.js +19 -15
  158. package/dist/shims/amp.js.map +1 -1
  159. package/dist/shims/app.d.ts +8 -10
  160. package/dist/shims/app.js +0 -1
  161. package/dist/shims/cache-runtime.d.ts +20 -45
  162. package/dist/shims/cache-runtime.js +271 -422
  163. package/dist/shims/cache-runtime.js.map +1 -1
  164. package/dist/shims/cache.d.ts +130 -121
  165. package/dist/shims/cache.js +339 -427
  166. package/dist/shims/cache.js.map +1 -1
  167. package/dist/shims/client-only.d.ts +1 -18
  168. package/dist/shims/client-only.js +0 -17
  169. package/dist/shims/compat-router.d.ts +4 -1
  170. package/dist/shims/compat-router.js +23 -19
  171. package/dist/shims/compat-router.js.map +1 -1
  172. package/dist/shims/config.d.ts +7 -5
  173. package/dist/shims/config.js +16 -23
  174. package/dist/shims/config.js.map +1 -1
  175. package/dist/shims/constants.d.ts +119 -118
  176. package/dist/shims/constants.js +159 -164
  177. package/dist/shims/constants.js.map +1 -1
  178. package/dist/shims/document.d.ts +20 -16
  179. package/dist/shims/document.js +41 -22
  180. package/dist/shims/document.js.map +1 -1
  181. package/dist/shims/dynamic.d.ts +13 -22
  182. package/dist/shims/dynamic.js +122 -136
  183. package/dist/shims/dynamic.js.map +1 -1
  184. package/dist/shims/error-boundary.d.ts +22 -15
  185. package/dist/shims/error-boundary.js +81 -79
  186. package/dist/shims/error-boundary.js.map +1 -1
  187. package/dist/shims/error.d.ts +11 -12
  188. package/dist/shims/error.js +35 -39
  189. package/dist/shims/error.js.map +1 -1
  190. package/dist/shims/fetch-cache.d.ts +16 -14
  191. package/dist/shims/fetch-cache.js +437 -645
  192. package/dist/shims/fetch-cache.js.map +1 -1
  193. package/dist/shims/font-google-base.d.ts +28 -26
  194. package/dist/shims/font-google-base.js +238 -325
  195. package/dist/shims/font-google-base.js.map +1 -1
  196. package/dist/shims/font-google.d.ts +3 -3
  197. package/dist/shims/font-google.generated.d.ts +1928 -1924
  198. package/dist/shims/font-google.generated.js +1928 -2133
  199. package/dist/shims/font-google.generated.js.map +1 -1
  200. package/dist/shims/font-google.js +3 -3
  201. package/dist/shims/font-local.d.ts +28 -26
  202. package/dist/shims/font-local.js +204 -260
  203. package/dist/shims/font-local.js.map +1 -1
  204. package/dist/shims/form.d.ts +13 -27
  205. package/dist/shims/form.js +128 -180
  206. package/dist/shims/form.js.map +1 -1
  207. package/dist/shims/head-state.d.ts +8 -13
  208. package/dist/shims/head-state.js +25 -42
  209. package/dist/shims/head-state.js.map +1 -1
  210. package/dist/shims/head.d.ts +16 -20
  211. package/dist/shims/head.js +172 -250
  212. package/dist/shims/head.js.map +1 -1
  213. package/dist/shims/headers.d.ts +84 -78
  214. package/dist/shims/headers.js +447 -575
  215. package/dist/shims/headers.js.map +1 -1
  216. package/dist/shims/i18n-context.d.ts +16 -20
  217. package/dist/shims/i18n-context.js +35 -48
  218. package/dist/shims/i18n-context.js.map +1 -1
  219. package/dist/shims/i18n-state.d.ts +8 -14
  220. package/dist/shims/i18n-state.js +34 -42
  221. package/dist/shims/i18n-state.js.map +1 -1
  222. package/dist/shims/image-config.d.ts +11 -8
  223. package/dist/shims/image-config.js +50 -83
  224. package/dist/shims/image-config.js.map +1 -1
  225. package/dist/shims/image.d.ts +37 -46
  226. package/dist/shims/image.js +283 -308
  227. package/dist/shims/image.js.map +1 -1
  228. package/dist/shims/internal/api-utils.d.ts +7 -4
  229. package/dist/shims/internal/api-utils.js +0 -6
  230. package/dist/shims/internal/app-router-context.d.ts +22 -17
  231. package/dist/shims/internal/app-router-context.js +17 -13
  232. package/dist/shims/internal/app-router-context.js.map +1 -1
  233. package/dist/shims/internal/cookies.d.ts +2 -9
  234. package/dist/shims/internal/cookies.js +2 -9
  235. package/dist/shims/internal/parse-cookie-header.d.ts +4 -1
  236. package/dist/shims/internal/parse-cookie-header.js +29 -29
  237. package/dist/shims/internal/parse-cookie-header.js.map +1 -1
  238. package/dist/shims/internal/router-context.d.ts +6 -1
  239. package/dist/shims/internal/router-context.js +11 -7
  240. package/dist/shims/internal/router-context.js.map +1 -1
  241. package/dist/shims/internal/utils.d.ts +40 -37
  242. package/dist/shims/internal/utils.js +24 -30
  243. package/dist/shims/internal/utils.js.map +1 -1
  244. package/dist/shims/internal/work-unit-async-storage.d.ts +6 -10
  245. package/dist/shims/internal/work-unit-async-storage.js +14 -11
  246. package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
  247. package/dist/shims/layout-segment-context.d.ts +11 -14
  248. package/dist/shims/layout-segment-context.js +24 -23
  249. package/dist/shims/layout-segment-context.js.map +1 -1
  250. package/dist/shims/legacy-image.d.ts +39 -46
  251. package/dist/shims/legacy-image.js +47 -42
  252. package/dist/shims/legacy-image.js.map +1 -1
  253. package/dist/shims/link.d.ts +32 -36
  254. package/dist/shims/link.js +255 -391
  255. package/dist/shims/link.js.map +1 -1
  256. package/dist/shims/metadata.d.ts +210 -202
  257. package/dist/shims/metadata.js +545 -546
  258. package/dist/shims/metadata.js.map +1 -1
  259. package/dist/shims/navigation-state.d.ts +10 -18
  260. package/dist/shims/navigation-state.js +66 -74
  261. package/dist/shims/navigation-state.js.map +1 -1
  262. package/dist/shims/navigation.d.ts +59 -63
  263. package/dist/shims/navigation.js +505 -704
  264. package/dist/shims/navigation.js.map +1 -1
  265. package/dist/shims/og.d.ts +2 -20
  266. package/dist/shims/og.js +2 -19
  267. package/dist/shims/readonly-url-search-params.d.ts +8 -5
  268. package/dist/shims/readonly-url-search-params.js +26 -22
  269. package/dist/shims/readonly-url-search-params.js.map +1 -1
  270. package/dist/shims/request-context.d.ts +8 -5
  271. package/dist/shims/request-context.js +50 -60
  272. package/dist/shims/request-context.js.map +1 -1
  273. package/dist/shims/request-state-types.d.ts +11 -11
  274. package/dist/shims/request-state-types.js +0 -1
  275. package/dist/shims/router-state.d.ts +13 -10
  276. package/dist/shims/router-state.js +34 -43
  277. package/dist/shims/router-state.js.map +1 -1
  278. package/dist/shims/router.d.ts +81 -85
  279. package/dist/shims/router.js +506 -628
  280. package/dist/shims/router.js.map +1 -1
  281. package/dist/shims/script.d.ts +39 -48
  282. package/dist/shims/script.js +107 -160
  283. package/dist/shims/script.js.map +1 -1
  284. package/dist/shims/server-only.d.ts +1 -19
  285. package/dist/shims/server-only.js +0 -18
  286. package/dist/shims/server.d.ts +175 -164
  287. package/dist/shims/server.js +462 -478
  288. package/dist/shims/server.js.map +1 -1
  289. package/dist/shims/unified-request-context.d.ts +20 -20
  290. package/dist/shims/unified-request-context.js +81 -99
  291. package/dist/shims/unified-request-context.js.map +1 -1
  292. package/dist/shims/url-safety.d.ts +4 -1
  293. package/dist/shims/url-safety.js +15 -11
  294. package/dist/shims/url-safety.js.map +1 -1
  295. package/dist/shims/url-utils.d.ts +8 -5
  296. package/dist/shims/url-utils.js +62 -93
  297. package/dist/shims/url-utils.js.map +1 -1
  298. package/dist/shims/web-vitals.d.ts +10 -8
  299. package/dist/shims/web-vitals.js +9 -15
  300. package/dist/shims/web-vitals.js.map +1 -1
  301. package/dist/utils/base-path.d.ts +5 -2
  302. package/dist/utils/base-path.js +21 -19
  303. package/dist/utils/base-path.js.map +1 -1
  304. package/dist/utils/domain-locale.d.ts +17 -9
  305. package/dist/utils/domain-locale.js +36 -56
  306. package/dist/utils/domain-locale.js.map +1 -1
  307. package/dist/utils/hash.d.ts +4 -1
  308. package/dist/utils/hash.js +19 -17
  309. package/dist/utils/hash.js.map +1 -1
  310. package/dist/utils/manifest-paths.d.ts +6 -3
  311. package/dist/utils/manifest-paths.js +15 -16
  312. package/dist/utils/manifest-paths.js.map +1 -1
  313. package/dist/utils/project.d.ts +13 -11
  314. package/dist/utils/project.js +169 -216
  315. package/dist/utils/project.js.map +1 -1
  316. package/dist/utils/query.d.ts +8 -6
  317. package/dist/utils/query.js +57 -67
  318. package/dist/utils/query.js.map +1 -1
  319. package/package.json +10 -9
  320. package/dist/build/report.d.ts.map +0 -1
  321. package/dist/build/static-export.d.ts.map +0 -1
  322. package/dist/check.d.ts.map +0 -1
  323. package/dist/cli.d.ts.map +0 -1
  324. package/dist/client/entry.d.ts.map +0 -1
  325. package/dist/client/validate-module-path.d.ts.map +0 -1
  326. package/dist/client/vinext-next-data.d.ts.map +0 -1
  327. package/dist/client/vinext-next-data.js.map +0 -1
  328. package/dist/cloudflare/index.d.ts.map +0 -1
  329. package/dist/cloudflare/index.js.map +0 -1
  330. package/dist/cloudflare/kv-cache-handler.d.ts.map +0 -1
  331. package/dist/cloudflare/tpr.d.ts.map +0 -1
  332. package/dist/config/config-matchers.d.ts.map +0 -1
  333. package/dist/config/dotenv.d.ts.map +0 -1
  334. package/dist/config/next-config.d.ts.map +0 -1
  335. package/dist/deploy.d.ts.map +0 -1
  336. package/dist/entries/app-browser-entry.d.ts.map +0 -1
  337. package/dist/entries/app-rsc-entry.d.ts.map +0 -1
  338. package/dist/entries/app-ssr-entry.d.ts.map +0 -1
  339. package/dist/entries/pages-client-entry.d.ts.map +0 -1
  340. package/dist/entries/pages-entry-helpers.d.ts.map +0 -1
  341. package/dist/entries/pages-server-entry.d.ts.map +0 -1
  342. package/dist/index.d.ts.map +0 -1
  343. package/dist/init.d.ts.map +0 -1
  344. package/dist/plugins/async-hooks-stub.d.ts.map +0 -1
  345. package/dist/plugins/client-reference-dedup.d.ts.map +0 -1
  346. package/dist/routing/app-router.d.ts.map +0 -1
  347. package/dist/routing/file-matcher.d.ts.map +0 -1
  348. package/dist/routing/pages-router.d.ts.map +0 -1
  349. package/dist/routing/route-trie.d.ts.map +0 -1
  350. package/dist/routing/route-validation.d.ts.map +0 -1
  351. package/dist/routing/utils.d.ts.map +0 -1
  352. package/dist/server/api-handler.d.ts.map +0 -1
  353. package/dist/server/app-router-entry.d.ts.map +0 -1
  354. package/dist/server/dev-module-runner.d.ts.map +0 -1
  355. package/dist/server/dev-origin-check.d.ts.map +0 -1
  356. package/dist/server/dev-server.d.ts.map +0 -1
  357. package/dist/server/html.d.ts.map +0 -1
  358. package/dist/server/image-optimization.d.ts.map +0 -1
  359. package/dist/server/instrumentation.d.ts.map +0 -1
  360. package/dist/server/isr-cache.d.ts.map +0 -1
  361. package/dist/server/metadata-routes.d.ts.map +0 -1
  362. package/dist/server/middleware-codegen.d.ts.map +0 -1
  363. package/dist/server/middleware-request-headers.d.ts.map +0 -1
  364. package/dist/server/middleware.d.ts.map +0 -1
  365. package/dist/server/normalize-path.d.ts.map +0 -1
  366. package/dist/server/pages-i18n.d.ts.map +0 -1
  367. package/dist/server/prod-server.d.ts.map +0 -1
  368. package/dist/server/request-log.d.ts.map +0 -1
  369. package/dist/server/request-pipeline.d.ts.map +0 -1
  370. package/dist/server/worker-utils.d.ts.map +0 -1
  371. package/dist/shims/amp.d.ts.map +0 -1
  372. package/dist/shims/app.d.ts.map +0 -1
  373. package/dist/shims/app.js.map +0 -1
  374. package/dist/shims/cache-runtime.d.ts.map +0 -1
  375. package/dist/shims/cache.d.ts.map +0 -1
  376. package/dist/shims/client-only.d.ts.map +0 -1
  377. package/dist/shims/client-only.js.map +0 -1
  378. package/dist/shims/compat-router.d.ts.map +0 -1
  379. package/dist/shims/config.d.ts.map +0 -1
  380. package/dist/shims/constants.d.ts.map +0 -1
  381. package/dist/shims/document.d.ts.map +0 -1
  382. package/dist/shims/dynamic.d.ts.map +0 -1
  383. package/dist/shims/error-boundary.d.ts.map +0 -1
  384. package/dist/shims/error.d.ts.map +0 -1
  385. package/dist/shims/fetch-cache.d.ts.map +0 -1
  386. package/dist/shims/font-google-base.d.ts.map +0 -1
  387. package/dist/shims/font-google.d.ts.map +0 -1
  388. package/dist/shims/font-google.generated.d.ts.map +0 -1
  389. package/dist/shims/font-google.js.map +0 -1
  390. package/dist/shims/font-local.d.ts.map +0 -1
  391. package/dist/shims/form.d.ts.map +0 -1
  392. package/dist/shims/head-state.d.ts.map +0 -1
  393. package/dist/shims/head.d.ts.map +0 -1
  394. package/dist/shims/headers.d.ts.map +0 -1
  395. package/dist/shims/i18n-context.d.ts.map +0 -1
  396. package/dist/shims/i18n-state.d.ts.map +0 -1
  397. package/dist/shims/image-config.d.ts.map +0 -1
  398. package/dist/shims/image.d.ts.map +0 -1
  399. package/dist/shims/internal/api-utils.d.ts.map +0 -1
  400. package/dist/shims/internal/api-utils.js.map +0 -1
  401. package/dist/shims/internal/app-router-context.d.ts.map +0 -1
  402. package/dist/shims/internal/cookies.d.ts.map +0 -1
  403. package/dist/shims/internal/cookies.js.map +0 -1
  404. package/dist/shims/internal/parse-cookie-header.d.ts.map +0 -1
  405. package/dist/shims/internal/router-context.d.ts.map +0 -1
  406. package/dist/shims/internal/utils.d.ts.map +0 -1
  407. package/dist/shims/internal/work-unit-async-storage.d.ts.map +0 -1
  408. package/dist/shims/layout-segment-context.d.ts.map +0 -1
  409. package/dist/shims/legacy-image.d.ts.map +0 -1
  410. package/dist/shims/link.d.ts.map +0 -1
  411. package/dist/shims/metadata.d.ts.map +0 -1
  412. package/dist/shims/navigation-state.d.ts.map +0 -1
  413. package/dist/shims/navigation.d.ts.map +0 -1
  414. package/dist/shims/og.d.ts.map +0 -1
  415. package/dist/shims/og.js.map +0 -1
  416. package/dist/shims/readonly-url-search-params.d.ts.map +0 -1
  417. package/dist/shims/request-context.d.ts.map +0 -1
  418. package/dist/shims/request-state-types.d.ts.map +0 -1
  419. package/dist/shims/request-state-types.js.map +0 -1
  420. package/dist/shims/router-state.d.ts.map +0 -1
  421. package/dist/shims/router.d.ts.map +0 -1
  422. package/dist/shims/script.d.ts.map +0 -1
  423. package/dist/shims/server-only.d.ts.map +0 -1
  424. package/dist/shims/server-only.js.map +0 -1
  425. package/dist/shims/server.d.ts.map +0 -1
  426. package/dist/shims/unified-request-context.d.ts.map +0 -1
  427. package/dist/shims/url-safety.d.ts.map +0 -1
  428. package/dist/shims/url-utils.d.ts.map +0 -1
  429. package/dist/shims/web-vitals.d.ts.map +0 -1
  430. package/dist/utils/base-path.d.ts.map +0 -1
  431. package/dist/utils/domain-locale.d.ts.map +0 -1
  432. package/dist/utils/hash.d.ts.map +0 -1
  433. package/dist/utils/manifest-paths.d.ts.map +0 -1
  434. package/dist/utils/project.d.ts.map +0 -1
  435. package/dist/utils/query.d.ts.map +0 -1
package/dist/cli.js CHANGED
@@ -1,456 +1,391 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * vinext CLI drop-in replacement for the `next` command
4
- *
5
- * vinext dev Start development server (Vite)
6
- * vinext build Build for production
7
- * vinext start Start production server
8
- * vinext deploy Deploy to Cloudflare Workers
9
- * vinext lint Run linter (delegates to eslint/oxlint)
10
- *
11
- * Automatically configures Vite with the vinext plugin — no vite.config.ts
12
- * needed for most Next.js apps.
13
- */
14
- import vinext, { clientOutputConfig, clientTreeshakeConfig } from "./index.js";
2
+ import { detectPackageManager, ensureViteConfigCompatibility } from "./utils/project.js";
3
+ import { formatReport, runCheck } from "./check.js";
4
+ import { loadNextConfig, resolveNextConfig } from "./config/next-config.js";
5
+ import { getReactUpgradeDeps, init } from "./init.js";
15
6
  import { printBuildReport } from "./build/report.js";
16
- import path from "node:path";
7
+ import { runPrerender } from "./build/run-prerender.js";
8
+ import { loadDotenv } from "./config/dotenv.js";
9
+ import { deploy, parseDeployArgs } from "./deploy.js";
10
+ import vinext, { clientOutputConfig, clientTreeshakeConfig } from "./index.js";
11
+ import { createRequire } from "node:module";
17
12
  import fs from "node:fs";
13
+ import path from "node:path";
18
14
  import { pathToFileURL } from "node:url";
19
- import { createRequire } from "node:module";
20
15
  import { execFileSync } from "node:child_process";
21
- import { detectPackageManager, ensureViteConfigCompatibility } from "./utils/project.js";
22
- import { deploy as runDeploy, parseDeployArgs } from "./deploy.js";
23
- import { runCheck, formatReport } from "./check.js";
24
- import { init as runInit, getReactUpgradeDeps } from "./init.js";
25
- import { loadDotenv } from "./config/dotenv.js";
16
+ //#region src/cli.ts
17
+ /**
18
+ * vinext CLI drop-in replacement for the `next` command
19
+ *
20
+ * vinext dev Start development server (Vite)
21
+ * vinext build Build for production
22
+ * vinext start Start production server
23
+ * vinext deploy Deploy to Cloudflare Workers
24
+ * vinext lint Run linter (delegates to eslint/oxlint)
25
+ *
26
+ * Automatically configures Vite with the vinext plugin — no vite.config.ts
27
+ * needed for most Next.js apps.
28
+ */
26
29
  let _viteModule = null;
27
30
  /**
28
- * Dynamically load Vite from the project root. Falls back to the bundled
29
- * copy if the project doesn't have its own Vite installation.
30
- */
31
+ * Dynamically load Vite from the project root. Falls back to the bundled
32
+ * copy if the project doesn't have its own Vite installation.
33
+ */
31
34
  async function loadVite() {
32
- if (_viteModule)
33
- return _viteModule;
34
- const projectRoot = process.cwd();
35
- let vitePath;
36
- try {
37
- // Resolve "vite" from the project root, not from vinext's location
38
- const require = createRequire(path.join(projectRoot, "package.json"));
39
- vitePath = require.resolve("vite");
40
- }
41
- catch {
42
- // Fallback: use the Vite that ships with vinext (works for non-linked installs)
43
- vitePath = "vite";
44
- }
45
- // On Windows, absolute paths must be file:// URLs for ESM import().
46
- // The fallback ("vite") is a bare specifier and works as-is.
47
- const viteUrl = vitePath === "vite" ? vitePath : pathToFileURL(vitePath).href;
48
- const vite = (await import(/* @vite-ignore */ viteUrl));
49
- _viteModule = vite;
50
- return vite;
35
+ if (_viteModule) return _viteModule;
36
+ const projectRoot = process.cwd();
37
+ let vitePath;
38
+ try {
39
+ vitePath = createRequire(path.join(projectRoot, "package.json")).resolve("vite");
40
+ } catch {
41
+ vitePath = "vite";
42
+ }
43
+ const vite = await (vitePath === "vite" ? import(vitePath) : import(pathToFileURL(vitePath).href));
44
+ _viteModule = vite;
45
+ return vite;
51
46
  }
52
47
  /**
53
- * Get the Vite version string. Returns "unknown" before loadVite() is called.
54
- */
48
+ * Get the Vite version string. Returns "unknown" before loadVite() is called.
49
+ */
55
50
  function getViteVersion() {
56
- return _viteModule?.version ?? "unknown";
51
+ return _viteModule?.version ?? "unknown";
57
52
  }
58
- const VERSION = JSON.parse(fs.readFileSync(new URL("../package.json", import.meta.url), "utf-8"))
59
- .version;
60
- // ─── CLI Argument Parsing ──────────────────────────────────────────────────────
53
+ const VERSION = JSON.parse(fs.readFileSync(new URL("../package.json", import.meta.url), "utf-8")).version;
61
54
  const command = process.argv[2];
62
55
  const rawArgs = process.argv.slice(3);
63
56
  function parseArgs(args) {
64
- const result = {};
65
- for (let i = 0; i < args.length; i++) {
66
- const arg = args[i];
67
- if (arg === "--help" || arg === "-h") {
68
- result.help = true;
69
- }
70
- else if (arg === "--verbose") {
71
- result.verbose = true;
72
- }
73
- else if (arg === "--turbopack") {
74
- result.turbopack = true; // no-op, accepted for script compat
75
- }
76
- else if (arg === "--experimental-https") {
77
- result.experimental = true; // no-op
78
- }
79
- else if (arg === "--port" || arg === "-p") {
80
- result.port = parseInt(args[++i], 10);
81
- }
82
- else if (arg.startsWith("--port=")) {
83
- result.port = parseInt(arg.split("=")[1], 10);
84
- }
85
- else if (arg === "--hostname" || arg === "-H") {
86
- result.hostname = args[++i];
87
- }
88
- else if (arg.startsWith("--hostname=")) {
89
- result.hostname = arg.split("=")[1];
90
- }
91
- }
92
- return result;
57
+ const result = {};
58
+ for (let i = 0; i < args.length; i++) {
59
+ const arg = args[i];
60
+ if (arg === "--help" || arg === "-h") result.help = true;
61
+ else if (arg === "--verbose") result.verbose = true;
62
+ else if (arg === "--turbopack") result.turbopack = true;
63
+ else if (arg === "--experimental-https") result.experimental = true;
64
+ else if (arg === "--prerender-all") result.prerenderAll = true;
65
+ else if (arg === "--port" || arg === "-p") result.port = parseInt(args[++i], 10);
66
+ else if (arg.startsWith("--port=")) result.port = parseInt(arg.split("=")[1], 10);
67
+ else if (arg === "--hostname" || arg === "-H") result.hostname = args[++i];
68
+ else if (arg.startsWith("--hostname=")) result.hostname = arg.split("=")[1];
69
+ }
70
+ return result;
93
71
  }
94
- // ─── Build logger ─────────────────────────────────────────────────────────────
95
72
  /**
96
- * Create a custom Vite logger for build output.
97
- *
98
- * By default Vite/Rollup emit a lot of build noise: version banners, progress
99
- * lines, chunk size tables, minChunkSize diagnostics, and various internal
100
- * warnings that are either not actionable or already handled by vinext at
101
- * runtime. This logger suppresses all of that while keeping the things that
102
- * actually matter:
103
- *
104
- * KEPT
105
- * ✓ N modules transformed. — confirms the transform phase completed
106
- * ✓ built in Xs — build timing (useful perf signal)
107
- * Genuine warnings/errors — anything the user may need to act on
108
- *
109
- * SUPPRESSED (info)
110
- * vite vX.Y.Z building... — Vite version banner
111
- * transforming... / rendering chunks... / computing gzip size...
112
- * Initially, there are N chunks... — Rollup minChunkSize diagnostics
113
- * After merging chunks, there are...
114
- * X are below minChunkSize.
115
- * Blank lines
116
- * Chunk/asset size table rows — e.g. " dist/client/assets/foo.js 42 kB"
117
- * [rsc] / [ssr] / [client] / [worker] — RSC plugin env section headers
118
- *
119
- * SUPPRESSED (warn)
120
- * "dynamic import will not move module into another chunk" — internal chunking note
121
- * "X is not exported by virtual:vinext-*" — handled gracefully at runtime
122
- */
73
+ * Create a custom Vite logger for build output.
74
+ *
75
+ * By default Vite/Rollup emit a lot of build noise: version banners, progress
76
+ * lines, chunk size tables, minChunkSize diagnostics, and various internal
77
+ * warnings that are either not actionable or already handled by vinext at
78
+ * runtime. This logger suppresses all of that while keeping the things that
79
+ * actually matter:
80
+ *
81
+ * KEPT
82
+ * ✓ N modules transformed. — confirms the transform phase completed
83
+ * ✓ built in Xs — build timing (useful perf signal)
84
+ * Genuine warnings/errors — anything the user may need to act on
85
+ *
86
+ * SUPPRESSED (info)
87
+ * vite vX.Y.Z building... — Vite version banner
88
+ * transforming... / rendering chunks... / computing gzip size...
89
+ * Initially, there are N chunks... — Rollup minChunkSize diagnostics
90
+ * After merging chunks, there are...
91
+ * X are below minChunkSize.
92
+ * Blank lines
93
+ * Chunk/asset size table rows — e.g. " dist/client/assets/foo.js 42 kB"
94
+ * [rsc] / [ssr] / [client] / [worker] — RSC plugin env section headers
95
+ *
96
+ * SUPPRESSED (warn)
97
+ * "dynamic import will not move module into another chunk" — internal chunking note
98
+ * "X is not exported by virtual:vinext-*" — handled gracefully at runtime
99
+ */
123
100
  function createBuildLogger(vite) {
124
- const logger = vite.createLogger("info", { allowClearScreen: false });
125
- const originalInfo = logger.info.bind(logger);
126
- const originalWarn = logger.warn.bind(logger);
127
- // Strip ANSI escape codes for pattern matching (keep originals for output).
128
- const strip = (s) => s.replace(/\x1b\[[0-9;]*m/g, ""); // eslint-disable-line no-control-regex
129
- logger.info = (msg, options) => {
130
- const plain = strip(msg);
131
- // Always keep timing lines ("✓ built in 1.23s", "✓ 75 modules transformed.").
132
- if (plain.trimStart().startsWith("✓")) {
133
- originalInfo(msg, options);
134
- return;
135
- }
136
- // Vite version banner: "vite v6.x.x building for production..."
137
- if (/^vite v\d/.test(plain.trim()))
138
- return;
139
- // Rollup progress noise: "transforming...", "rendering chunks...", "computing gzip size..."
140
- if (/^(transforming|rendering chunks|computing gzip size)/.test(plain.trim()))
141
- return;
142
- // Rollup minChunkSize diagnostics:
143
- // "Initially, there are\n36 chunks, of which\n..."
144
- // "After merging chunks, there are\n..."
145
- // "X are below minChunkSize."
146
- if (/^(Initially,|After merging|are below minChunkSize)/.test(plain.trim()))
147
- return;
148
- // Blank / whitespace-only separator lines.
149
- if (/^\s*$/.test(plain))
150
- return;
151
- // Chunk/asset size table rows — e.g.:
152
- // " dist/client/assets/foo.js 42.10 kB │ gzip: 6.74 kB" (TTY: indented)
153
- // "dist/client/assets/foo.js 42.10 kB │ gzip: 6.74 kB" (non-TTY: at column 0)
154
- // Both start with "dist/" (possibly preceded by whitespace).
155
- if (/^\s*(dist\/|\.\/)/.test(plain))
156
- return;
157
- // @vitejs/plugin-rsc environment section headers ("[rsc]", "[ssr]", "[client]", "[worker]").
158
- if (/^\s*\[(rsc|ssr|client|worker)\]/.test(plain))
159
- return;
160
- originalInfo(msg, options);
161
- };
162
- logger.warn = (msg, options) => {
163
- const plain = strip(msg);
164
- // Rollup: "dynamic import will not move module into another chunk" — this is
165
- // emitted as a [plugin vite:reporter] warning with long absolute file paths.
166
- // It's an internal chunking note, not actionable.
167
- if (plain.includes("dynamic import will not move module into another chunk"))
168
- return;
169
- // Rollup: "X is not exported by Y" from virtual entry modules — these come from
170
- // Rollup's static analysis of the generated virtual:vinext-server-entry when the
171
- // user's middleware doesn't export the expected names. The vinext runtime handles
172
- // missing exports gracefully, so this is noise.
173
- if (plain.includes("is not exported by") && plain.includes("virtual:vinext"))
174
- return;
175
- originalWarn(msg, options);
176
- };
177
- return logger;
101
+ const logger = vite.createLogger("info", { allowClearScreen: false });
102
+ const originalInfo = logger.info.bind(logger);
103
+ const originalWarn = logger.warn.bind(logger);
104
+ const strip = (s) => s.replace(/\x1b\[[0-9;]*m/g, "");
105
+ logger.info = (msg, options) => {
106
+ const plain = strip(msg);
107
+ if (plain.trimStart().startsWith("✓")) {
108
+ originalInfo(msg, options);
109
+ return;
110
+ }
111
+ if (/^vite v\d/.test(plain.trim())) return;
112
+ if (/^(transforming|rendering chunks|computing gzip size)/.test(plain.trim())) return;
113
+ if (/^(Initially,|After merging|are below minChunkSize)/.test(plain.trim())) return;
114
+ if (/^\s*$/.test(plain)) return;
115
+ if (/^\s*(dist\/|\.\/)/.test(plain)) return;
116
+ // @vitejs/plugin-rsc environment section headers ("[rsc]", "[ssr]", "[client]", "[worker]").
117
+ if (/^\s*\[(rsc|ssr|client|worker)\]/.test(plain)) return;
118
+ originalInfo(msg, options);
119
+ };
120
+ logger.warn = (msg, options) => {
121
+ const plain = strip(msg);
122
+ if (plain.includes("dynamic import will not move module into another chunk")) return;
123
+ if (plain.includes("is not exported by") && plain.includes("virtual:vinext")) return;
124
+ originalWarn(msg, options);
125
+ };
126
+ return logger;
178
127
  }
179
- // ─── Auto-configuration ───────────────────────────────────────────────────────
180
128
  function hasAppDir() {
181
- return (fs.existsSync(path.join(process.cwd(), "app")) ||
182
- fs.existsSync(path.join(process.cwd(), "src", "app")));
129
+ return fs.existsSync(path.join(process.cwd(), "app")) || fs.existsSync(path.join(process.cwd(), "src", "app"));
130
+ }
131
+ function hasPagesDir() {
132
+ return fs.existsSync(path.join(process.cwd(), "pages")) || fs.existsSync(path.join(process.cwd(), "src", "pages"));
183
133
  }
184
134
  function hasViteConfig() {
185
- return (fs.existsSync(path.join(process.cwd(), "vite.config.ts")) ||
186
- fs.existsSync(path.join(process.cwd(), "vite.config.js")) ||
187
- fs.existsSync(path.join(process.cwd(), "vite.config.mjs")));
135
+ return fs.existsSync(path.join(process.cwd(), "vite.config.ts")) || fs.existsSync(path.join(process.cwd(), "vite.config.js")) || fs.existsSync(path.join(process.cwd(), "vite.config.mjs"));
188
136
  }
189
137
  /**
190
- * Build the Vite config automatically. If a vite.config.ts exists in the
191
- * project, Vite will merge our config with it (theirs takes precedence).
192
- * If there's no vite.config, this provides everything needed.
193
- */
138
+ * Build the Vite config automatically. If a vite.config.ts exists in the
139
+ * project, Vite will merge our config with it (theirs takes precedence).
140
+ * If there's no vite.config, this provides everything needed.
141
+ */
194
142
  function buildViteConfig(overrides = {}, logger) {
195
- const hasConfig = hasViteConfig();
196
- // If a vite.config exists, let Vite load it — only set root and overrides.
197
- // The user's config already has vinext() + rsc() plugins configured.
198
- // Adding them here too would duplicate the RSC transform (causes
199
- // "Identifier has already been declared" errors in production builds).
200
- if (hasConfig) {
201
- return {
202
- root: process.cwd(),
203
- ...(logger ? { customLogger: logger } : {}),
204
- ...overrides,
205
- };
206
- }
207
- // No vite.config — auto-configure everything.
208
- // vinext() auto-registers @vitejs/plugin-rsc when app/ is detected,
209
- // so we only need vinext() in the plugins array.
210
- const config = {
211
- root: process.cwd(),
212
- configFile: false,
213
- plugins: [vinext()],
214
- // Deduplicate React packages to prevent "Invalid hook call" errors
215
- // when vinext is symlinked (bun link / npm link) and both vinext's
216
- // and the project's node_modules contain React.
217
- resolve: {
218
- dedupe: ["react", "react-dom", "react/jsx-runtime", "react/jsx-dev-runtime"],
219
- },
220
- ...(logger ? { customLogger: logger } : {}),
221
- ...overrides,
222
- };
223
- return config;
143
+ if (hasViteConfig()) return {
144
+ root: process.cwd(),
145
+ ...logger ? { customLogger: logger } : {},
146
+ ...overrides
147
+ };
148
+ return {
149
+ root: process.cwd(),
150
+ configFile: false,
151
+ plugins: [vinext()],
152
+ resolve: { dedupe: [
153
+ "react",
154
+ "react-dom",
155
+ "react/jsx-runtime",
156
+ "react/jsx-dev-runtime"
157
+ ] },
158
+ ...logger ? { customLogger: logger } : {},
159
+ ...overrides
160
+ };
224
161
  }
225
162
  /**
226
- * Ensure the project's package.json has `"type": "module"` before Vite loads
227
- * the vite.config.ts. This prevents the esbuild CJS-bundling path that Vite
228
- * takes for projects without `"type": "module"`, which produces a `.mjs` temp
229
- * file containing `require()` calls — calls that fail on Node 22 when
230
- * targeting pure-ESM packages like `@cloudflare/vite-plugin`.
231
- *
232
- * This mirrors what `vinext init` does, but is applied lazily at dev/build
233
- * time for projects that were set up before `vinext init` added the step, or
234
- * that were migrated manually.
235
- */
163
+ * Ensure the project's package.json has `"type": "module"` before Vite loads
164
+ * the vite.config.ts. This prevents the esbuild CJS-bundling path that Vite
165
+ * takes for projects without `"type": "module"`, which produces a `.mjs` temp
166
+ * file containing `require()` calls — calls that fail on Node 22 when
167
+ * targeting pure-ESM packages like `@cloudflare/vite-plugin`.
168
+ *
169
+ * This mirrors what `vinext init` does, but is applied lazily at dev/build
170
+ * time for projects that were set up before `vinext init` added the step, or
171
+ * that were migrated manually.
172
+ */
236
173
  function applyViteConfigCompatibility(root) {
237
- const result = ensureViteConfigCompatibility(root);
238
- if (!result)
239
- return;
240
- for (const [oldName, newName] of result.renamed) {
241
- console.warn(` [vinext] Renamed ${oldName} → ${newName} (required for "type": "module")`);
242
- }
243
- if (result.addedTypeModule) {
244
- console.warn(` [vinext] Added "type": "module" to package.json (required for Vite ESM config loading).\n` +
245
- ` Run \`vinext init\` to review all project configuration.`);
246
- }
174
+ const result = ensureViteConfigCompatibility(root);
175
+ if (!result) return;
176
+ for (const [oldName, newName] of result.renamed) console.warn(` [vinext] Renamed ${oldName} → ${newName} (required for "type": "module")`);
177
+ if (result.addedTypeModule) console.warn(" [vinext] Added \"type\": \"module\" to package.json (required for Vite ESM config loading).\n Run `vinext init` to review all project configuration.");
247
178
  }
248
- // ─── Commands ─────────────────────────────────────────────────────────────────
249
179
  async function dev() {
250
- const parsed = parseArgs(rawArgs);
251
- if (parsed.help)
252
- return printHelp("dev");
253
- loadDotenv({
254
- root: process.cwd(),
255
- mode: "development",
256
- });
257
- // Ensure "type": "module" in package.json before Vite loads vite.config.ts.
258
- // Without this, Vite bundles the config as CJS and tries require() on pure-ESM
259
- // packages like @cloudflare/vite-plugin, which fails on Node 22.
260
- applyViteConfigCompatibility(process.cwd());
261
- const vite = await loadVite();
262
- const port = parsed.port ?? 3000;
263
- const host = parsed.hostname ?? "localhost";
264
- console.log(`\n vinext dev (Vite ${getViteVersion()})\n`);
265
- const config = buildViteConfig({
266
- server: { port, host },
267
- });
268
- const server = await vite.createServer(config);
269
- await server.listen();
270
- server.printUrls();
180
+ const parsed = parseArgs(rawArgs);
181
+ if (parsed.help) return printHelp("dev");
182
+ loadDotenv({
183
+ root: process.cwd(),
184
+ mode: "development"
185
+ });
186
+ applyViteConfigCompatibility(process.cwd());
187
+ const vite = await loadVite();
188
+ const port = parsed.port ?? 3e3;
189
+ const host = parsed.hostname ?? "localhost";
190
+ console.log(`\n vinext dev (Vite ${getViteVersion()})\n`);
191
+ const config = buildViteConfig({ server: {
192
+ port,
193
+ host
194
+ } });
195
+ const server = await vite.createServer(config);
196
+ await server.listen();
197
+ server.printUrls();
271
198
  }
272
199
  async function buildApp() {
273
- const parsed = parseArgs(rawArgs);
274
- if (parsed.help)
275
- return printHelp("build");
276
- loadDotenv({
277
- root: process.cwd(),
278
- mode: "production",
279
- });
280
- // Ensure "type": "module" in package.json before Vite loads vite.config.ts.
281
- // Without this, Vite bundles the config as CJS and tries require() on pure-ESM
282
- // packages like @cloudflare/vite-plugin, which fails on Node 22.
283
- applyViteConfigCompatibility(process.cwd());
284
- const vite = await loadVite();
285
- console.log(`\n vinext build (Vite ${getViteVersion()})\n`);
286
- const isApp = hasAppDir();
287
- // In verbose mode, skip the custom logger so raw Vite/Rollup output is shown.
288
- const logger = parsed.verbose
289
- ? vite.createLogger("info", { allowClearScreen: false })
290
- : createBuildLogger(vite);
291
- // For App Router: upgrade React if needed for react-server-dom-webpack compatibility.
292
- // Without this, builds with react<19.2.4 produce a Worker that crashes at
293
- // runtime with "Cannot read properties of undefined (reading 'moduleMap')".
294
- if (isApp) {
295
- const reactUpgrade = getReactUpgradeDeps(process.cwd());
296
- if (reactUpgrade.length > 0) {
297
- const installCmd = detectPackageManager(process.cwd()).replace(/ -D$/, "");
298
- const [pm, ...pmArgs] = installCmd.split(" ");
299
- console.log(" Upgrading React for RSC compatibility...");
300
- execFileSync(pm, [...pmArgs, ...reactUpgrade], { cwd: process.cwd(), stdio: "inherit" });
301
- }
302
- }
303
- if (isApp) {
304
- // App Router: use createBuilder for multi-environment RSC builds
305
- const config = buildViteConfig({}, logger);
306
- const builder = await vite.createBuilder(config);
307
- await builder.buildApp();
308
- }
309
- else {
310
- // Pages Router: client + SSR builds.
311
- // Use buildViteConfig() so that when a vite.config exists we don't
312
- // duplicate the vinext() plugin.
313
- console.log(" Building client...");
314
- await vite.build(buildViteConfig({
315
- build: {
316
- outDir: "dist/client",
317
- manifest: true,
318
- ssrManifest: true,
319
- rollupOptions: {
320
- input: "virtual:vinext-client-entry",
321
- output: clientOutputConfig,
322
- treeshake: clientTreeshakeConfig,
323
- },
324
- },
325
- }, logger));
326
- console.log(" Building server...");
327
- await vite.build(buildViteConfig({
328
- build: {
329
- outDir: "dist/server",
330
- ssr: "virtual:vinext-server-entry",
331
- rollupOptions: {
332
- output: {
333
- entryFileNames: "entry.js",
334
- },
335
- },
336
- },
337
- }, logger));
338
- }
339
- await printBuildReport({ root: process.cwd() });
340
- console.log("\n Build complete. Run `vinext start` to start the production server.\n");
200
+ const parsed = parseArgs(rawArgs);
201
+ if (parsed.help) return printHelp("build");
202
+ loadDotenv({
203
+ root: process.cwd(),
204
+ mode: "production"
205
+ });
206
+ applyViteConfigCompatibility(process.cwd());
207
+ const vite = await loadVite();
208
+ console.log(`\n vinext build (Vite ${getViteVersion()})\n`);
209
+ const isApp = hasAppDir();
210
+ const logger = parsed.verbose ? vite.createLogger("info", { allowClearScreen: false }) : createBuildLogger(vite);
211
+ if (isApp) {
212
+ const reactUpgrade = getReactUpgradeDeps(process.cwd());
213
+ if (reactUpgrade.length > 0) {
214
+ const [pm, ...pmArgs] = detectPackageManager(process.cwd()).replace(/ -D$/, "").split(" ");
215
+ console.log(" Upgrading React for RSC compatibility...");
216
+ execFileSync(pm, [...pmArgs, ...reactUpgrade], {
217
+ cwd: process.cwd(),
218
+ stdio: "inherit"
219
+ });
220
+ }
221
+ }
222
+ if (isApp) {
223
+ const config = buildViteConfig({}, logger);
224
+ await (await vite.createBuilder(config)).buildApp();
225
+ if (hasPagesDir()) {
226
+ console.log(" Building Pages Router server (hybrid)...");
227
+ const root = process.cwd();
228
+ let userTransformPlugins = [];
229
+ if (hasViteConfig()) {
230
+ const loaded = await vite.loadConfigFromFile({
231
+ command: "build",
232
+ mode: "production",
233
+ isSsrBuild: true
234
+ }, void 0, root);
235
+ if (loaded?.config.plugins) userTransformPlugins = loaded.config.plugins.flat(Infinity).filter((p) => !!p && typeof p.name === "string" && !p.name.startsWith("vinext:") && !p.name.startsWith("vite:react") && !p.name.startsWith("rsc:") && p.name !== "vite-rsc-load-module-dev-proxy" && p.name !== "vite-tsconfig-paths" && !p.name.startsWith("vite-plugin-cloudflare"));
236
+ }
237
+ await vite.build({
238
+ root,
239
+ configFile: false,
240
+ plugins: [...userTransformPlugins, vinext({ disableAppRouter: true })],
241
+ resolve: { dedupe: [
242
+ "react",
243
+ "react-dom",
244
+ "react/jsx-runtime",
245
+ "react/jsx-dev-runtime"
246
+ ] },
247
+ ...logger ? { customLogger: logger } : {},
248
+ build: {
249
+ outDir: "dist/server",
250
+ emptyOutDir: false,
251
+ ssr: "virtual:vinext-server-entry",
252
+ rollupOptions: { output: { entryFileNames: "entry.js" } }
253
+ }
254
+ });
255
+ }
256
+ } else {
257
+ console.log(" Building client...");
258
+ await vite.build(buildViteConfig({ build: {
259
+ outDir: "dist/client",
260
+ manifest: true,
261
+ ssrManifest: true,
262
+ rollupOptions: {
263
+ input: "virtual:vinext-client-entry",
264
+ output: clientOutputConfig,
265
+ treeshake: clientTreeshakeConfig
266
+ }
267
+ } }, logger));
268
+ console.log(" Building server...");
269
+ await vite.build(buildViteConfig({ build: {
270
+ outDir: "dist/server",
271
+ ssr: "virtual:vinext-server-entry",
272
+ rollupOptions: { output: { entryFileNames: "entry.js" } }
273
+ } }, logger));
274
+ }
275
+ let prerenderResult;
276
+ if (parsed.prerenderAll || (await resolveNextConfig(await loadNextConfig(process.cwd()), process.cwd())).output === "export") {
277
+ const label = parsed.prerenderAll ? "Pre-rendering all routes..." : "Pre-rendering all routes (output: 'export')...";
278
+ process.stdout.write("\x1B[0m");
279
+ console.log(` ${label}`);
280
+ prerenderResult = await runPrerender({ root: process.cwd() });
281
+ }
282
+ process.stdout.write("\x1B[0m");
283
+ await printBuildReport({
284
+ root: process.cwd(),
285
+ prerenderResult: prerenderResult ?? void 0
286
+ });
287
+ console.log("\n Build complete. Run `vinext start` to start the production server.\n");
288
+ process.exit(0);
341
289
  }
342
290
  async function start() {
343
- const parsed = parseArgs(rawArgs);
344
- if (parsed.help)
345
- return printHelp("start");
346
- loadDotenv({
347
- root: process.cwd(),
348
- mode: "production",
349
- });
350
- const port = parsed.port ?? parseInt(process.env.PORT ?? "3000", 10);
351
- const host = parsed.hostname ?? "0.0.0.0";
352
- console.log(`\n vinext start (port ${port})\n`);
353
- const { startProdServer } = (await import(/* @vite-ignore */ "./server/prod-server.js"));
354
- await startProdServer({
355
- port,
356
- host,
357
- outDir: path.resolve(process.cwd(), "dist"),
358
- });
291
+ const parsed = parseArgs(rawArgs);
292
+ if (parsed.help) return printHelp("start");
293
+ loadDotenv({
294
+ root: process.cwd(),
295
+ mode: "production"
296
+ });
297
+ const port = parsed.port ?? parseInt(process.env.PORT ?? "3000", 10);
298
+ const host = parsed.hostname ?? "0.0.0.0";
299
+ console.log(`\n vinext start (port ${port})\n`);
300
+ const { startProdServer } = await import(
301
+ /* @vite-ignore */
302
+ "./server/prod-server.js"
303
+ );
304
+ await startProdServer({
305
+ port,
306
+ host,
307
+ outDir: path.resolve(process.cwd(), "dist")
308
+ });
359
309
  }
360
310
  async function lint() {
361
- const parsed = parseArgs(rawArgs);
362
- if (parsed.help)
363
- return printHelp("lint");
364
- console.log(`\n vinext lint\n`);
365
- // Try oxlint first (fast), fall back to eslint
366
- const cwd = process.cwd();
367
- const hasOxlint = fs.existsSync(path.join(cwd, "node_modules", ".bin", "oxlint"));
368
- const hasEslint = fs.existsSync(path.join(cwd, "node_modules", ".bin", "eslint"));
369
- // Check for next lint config (eslint-config-next)
370
- const hasNextLintConfig = fs.existsSync(path.join(cwd, ".eslintrc.json")) ||
371
- fs.existsSync(path.join(cwd, ".eslintrc.js")) ||
372
- fs.existsSync(path.join(cwd, ".eslintrc.cjs")) ||
373
- fs.existsSync(path.join(cwd, "eslint.config.js")) ||
374
- fs.existsSync(path.join(cwd, "eslint.config.mjs"));
375
- try {
376
- if (hasEslint && hasNextLintConfig) {
377
- console.log(" Using eslint (with existing config)\n");
378
- execFileSync("npx", ["eslint", "."], { cwd, stdio: "inherit" });
379
- }
380
- else if (hasOxlint) {
381
- console.log(" Using oxlint\n");
382
- execFileSync("npx", ["oxlint", "."], { cwd, stdio: "inherit" });
383
- }
384
- else if (hasEslint) {
385
- console.log(" Using eslint\n");
386
- execFileSync("npx", ["eslint", "."], { cwd, stdio: "inherit" });
387
- }
388
- else {
389
- console.log(" No linter found. Install eslint or oxlint:\n\n" +
390
- " " +
391
- detectPackageManager(process.cwd()) +
392
- " eslint eslint-config-next\n" +
393
- " # or\n" +
394
- " " +
395
- detectPackageManager(process.cwd()) +
396
- " oxlint\n");
397
- process.exit(1);
398
- }
399
- console.log("\n Lint passed.\n");
400
- }
401
- catch {
402
- process.exit(1);
403
- }
311
+ if (parseArgs(rawArgs).help) return printHelp("lint");
312
+ console.log(`\n vinext lint\n`);
313
+ const cwd = process.cwd();
314
+ const hasOxlint = fs.existsSync(path.join(cwd, "node_modules", ".bin", "oxlint"));
315
+ const hasEslint = fs.existsSync(path.join(cwd, "node_modules", ".bin", "eslint"));
316
+ const hasNextLintConfig = fs.existsSync(path.join(cwd, ".eslintrc.json")) || fs.existsSync(path.join(cwd, ".eslintrc.js")) || fs.existsSync(path.join(cwd, ".eslintrc.cjs")) || fs.existsSync(path.join(cwd, "eslint.config.js")) || fs.existsSync(path.join(cwd, "eslint.config.mjs"));
317
+ try {
318
+ if (hasEslint && hasNextLintConfig) {
319
+ console.log(" Using eslint (with existing config)\n");
320
+ execFileSync("npx", ["eslint", "."], {
321
+ cwd,
322
+ stdio: "inherit"
323
+ });
324
+ } else if (hasOxlint) {
325
+ console.log(" Using oxlint\n");
326
+ execFileSync("npx", ["oxlint", "."], {
327
+ cwd,
328
+ stdio: "inherit"
329
+ });
330
+ } else if (hasEslint) {
331
+ console.log(" Using eslint\n");
332
+ execFileSync("npx", ["eslint", "."], {
333
+ cwd,
334
+ stdio: "inherit"
335
+ });
336
+ } else {
337
+ console.log(" No linter found. Install eslint or oxlint:\n\n " + detectPackageManager(process.cwd()) + " eslint eslint-config-next\n # or\n " + detectPackageManager(process.cwd()) + " oxlint\n");
338
+ process.exit(1);
339
+ }
340
+ console.log("\n Lint passed.\n");
341
+ } catch {
342
+ process.exit(1);
343
+ }
404
344
  }
405
345
  async function deployCommand() {
406
- const parsed = parseDeployArgs(rawArgs);
407
- if (parsed.help)
408
- return printHelp("deploy");
409
- await loadVite();
410
- console.log(`\n vinext deploy (Vite ${getViteVersion()})\n`);
411
- await runDeploy({
412
- root: process.cwd(),
413
- preview: parsed.preview,
414
- env: parsed.env,
415
- skipBuild: parsed.skipBuild,
416
- dryRun: parsed.dryRun,
417
- name: parsed.name,
418
- experimentalTPR: parsed.experimentalTPR,
419
- tprCoverage: parsed.tprCoverage,
420
- tprLimit: parsed.tprLimit,
421
- tprWindow: parsed.tprWindow,
422
- });
346
+ const parsed = parseDeployArgs(rawArgs);
347
+ if (parsed.help) return printHelp("deploy");
348
+ await loadVite();
349
+ console.log(`\n vinext deploy (Vite ${getViteVersion()})\n`);
350
+ await deploy({
351
+ root: process.cwd(),
352
+ preview: parsed.preview,
353
+ env: parsed.env,
354
+ skipBuild: parsed.skipBuild,
355
+ dryRun: parsed.dryRun,
356
+ name: parsed.name,
357
+ prerenderAll: parsed.prerenderAll,
358
+ experimentalTPR: parsed.experimentalTPR,
359
+ tprCoverage: parsed.tprCoverage,
360
+ tprLimit: parsed.tprLimit,
361
+ tprWindow: parsed.tprWindow
362
+ });
423
363
  }
424
364
  async function check() {
425
- const parsed = parseArgs(rawArgs);
426
- if (parsed.help)
427
- return printHelp("check");
428
- const root = process.cwd();
429
- console.log(`\n vinext check\n`);
430
- console.log(" Scanning project...\n");
431
- const result = runCheck(root);
432
- console.log(formatReport(result));
365
+ if (parseArgs(rawArgs).help) return printHelp("check");
366
+ const root = process.cwd();
367
+ console.log(`\n vinext check\n`);
368
+ console.log(" Scanning project...\n");
369
+ const result = runCheck(root);
370
+ console.log(formatReport(result));
433
371
  }
434
372
  async function initCommand() {
435
- const parsed = parseArgs(rawArgs);
436
- if (parsed.help)
437
- return printHelp("init");
438
- console.log(`\n vinext init\n`);
439
- // Parse init-specific flags
440
- const port = parsed.port ?? 3001;
441
- const skipCheck = rawArgs.includes("--skip-check");
442
- const force = rawArgs.includes("--force");
443
- await runInit({
444
- root: process.cwd(),
445
- port,
446
- skipCheck,
447
- force,
448
- });
373
+ const parsed = parseArgs(rawArgs);
374
+ if (parsed.help) return printHelp("init");
375
+ console.log(`\n vinext init\n`);
376
+ const port = parsed.port ?? 3001;
377
+ const skipCheck = rawArgs.includes("--skip-check");
378
+ const force = rawArgs.includes("--force");
379
+ await init({
380
+ root: process.cwd(),
381
+ port,
382
+ skipCheck,
383
+ force
384
+ });
449
385
  }
450
- // ─── Help ─────────────────────────────────────────────────────────────────────
451
386
  function printHelp(cmd) {
452
- if (cmd === "dev") {
453
- console.log(`
387
+ if (cmd === "dev") {
388
+ console.log(`
454
389
  vinext dev - Start development server
455
390
 
456
391
  Usage: vinext dev [options]
@@ -461,10 +396,10 @@ function printHelp(cmd) {
461
396
  --turbopack Accepted for compatibility (no-op, Vite is always used)
462
397
  -h, --help Show this help
463
398
  `);
464
- return;
465
- }
466
- if (cmd === "build") {
467
- console.log(`
399
+ return;
400
+ }
401
+ if (cmd === "build") {
402
+ console.log(`
468
403
  vinext build - Build for production
469
404
 
470
405
  Usage: vinext build [options]
@@ -473,13 +408,15 @@ function printHelp(cmd) {
473
408
  runs the appropriate multi-environment build via Vite.
474
409
 
475
410
  Options:
476
- --verbose Show full Vite/Rollup build output (suppressed by default)
477
- -h, --help Show this help
411
+ --verbose Show full Vite/Rollup build output (suppressed by default)
412
+ --prerender-all Pre-render discovered routes after building (future releases
413
+ will serve these files in vinext start)
414
+ -h, --help Show this help
478
415
  `);
479
- return;
480
- }
481
- if (cmd === "start") {
482
- console.log(`
416
+ return;
417
+ }
418
+ if (cmd === "start") {
419
+ console.log(`
483
420
  vinext start - Start production server
484
421
 
485
422
  Usage: vinext start [options]
@@ -492,10 +429,10 @@ function printHelp(cmd) {
492
429
  -H, --hostname <host> Hostname to bind to (default: 0.0.0.0)
493
430
  -h, --help Show this help
494
431
  `);
495
- return;
496
- }
497
- if (cmd === "deploy") {
498
- console.log(`
432
+ return;
433
+ }
434
+ if (cmd === "deploy") {
435
+ console.log(`
499
436
  vinext deploy - Deploy to Cloudflare Workers
500
437
 
501
438
  Usage: vinext deploy [options]
@@ -513,6 +450,8 @@ function printHelp(cmd) {
513
450
  --name <name> Custom Worker name (default: from package.json)
514
451
  --skip-build Skip the build step (use existing dist/)
515
452
  --dry-run Generate config files without building or deploying
453
+ --prerender-all Pre-render discovered routes after building (future
454
+ releases will auto-populate the remote cache)
516
455
  -h, --help Show this help
517
456
 
518
457
  Experimental:
@@ -537,10 +476,10 @@ function printHelp(cmd) {
537
476
  vinext deploy --experimental-tpr --tpr-coverage 95 Cover 95% of traffic
538
477
  vinext deploy --experimental-tpr --tpr-limit 500 Cap at 500 pages
539
478
  `);
540
- return;
541
- }
542
- if (cmd === "check") {
543
- console.log(`
479
+ return;
480
+ }
481
+ if (cmd === "check") {
482
+ console.log(`
544
483
  vinext check - Scan Next.js app for compatibility
545
484
 
546
485
  Usage: vinext check [options]
@@ -552,10 +491,10 @@ function printHelp(cmd) {
552
491
  Options:
553
492
  -h, --help Show this help
554
493
  `);
555
- return;
556
- }
557
- if (cmd === "init") {
558
- console.log(`
494
+ return;
495
+ }
496
+ if (cmd === "init") {
497
+ console.log(`
559
498
  vinext init - Migrate a Next.js project to run under vinext
560
499
 
561
500
  Usage: vinext init [options]
@@ -576,10 +515,10 @@ function printHelp(cmd) {
576
515
  vinext init --force Overwrite existing vite.config.ts
577
516
  vinext init --skip-check Skip the compatibility report
578
517
  `);
579
- return;
580
- }
581
- if (cmd === "lint") {
582
- console.log(`
518
+ return;
519
+ }
520
+ if (cmd === "lint") {
521
+ console.log(`
583
522
  vinext lint - Run linter
584
523
 
585
524
  Usage: vinext lint [options]
@@ -590,9 +529,9 @@ function printHelp(cmd) {
590
529
  Options:
591
530
  -h, --help Show this help
592
531
  `);
593
- return;
594
- }
595
- console.log(`
532
+ return;
533
+ }
534
+ console.log(`
596
535
  vinext v${VERSION} - Run Next.js apps on Vite
597
536
 
598
537
  Usage: vinext <command> [options]
@@ -624,63 +563,63 @@ function printHelp(cmd) {
624
563
  No vite.config.ts needed — just run \`vinext dev\` in your Next.js project.
625
564
  `);
626
565
  }
627
- // ─── Entry ────────────────────────────────────────────────────────────────────
628
566
  if (command === "--version" || command === "-v") {
629
- console.log(`vinext v${VERSION}`);
630
- process.exit(0);
567
+ console.log(`vinext v${VERSION}`);
568
+ process.exit(0);
631
569
  }
632
570
  if (command === "--help" || command === "-h" || !command) {
633
- printHelp();
634
- if (!command)
635
- process.exit(0);
636
- process.exit(0);
571
+ printHelp();
572
+ process.exit(0);
637
573
  }
638
574
  switch (command) {
639
- case "dev":
640
- dev().catch((e) => {
641
- console.error(e);
642
- process.exit(1);
643
- });
644
- break;
645
- case "build":
646
- buildApp().catch((e) => {
647
- console.error(e);
648
- process.exit(1);
649
- });
650
- break;
651
- case "start":
652
- start().catch((e) => {
653
- console.error(e);
654
- process.exit(1);
655
- });
656
- break;
657
- case "deploy":
658
- deployCommand().catch((e) => {
659
- console.error(e);
660
- process.exit(1);
661
- });
662
- break;
663
- case "init":
664
- initCommand().catch((e) => {
665
- console.error(e);
666
- process.exit(1);
667
- });
668
- break;
669
- case "check":
670
- check().catch((e) => {
671
- console.error(e);
672
- process.exit(1);
673
- });
674
- break;
675
- case "lint":
676
- lint().catch((e) => {
677
- console.error(e);
678
- process.exit(1);
679
- });
680
- break;
681
- default:
682
- console.error(`\n Unknown command: ${command}\n`);
683
- printHelp();
684
- process.exit(1);
575
+ case "dev":
576
+ dev().catch((e) => {
577
+ console.error(e);
578
+ process.exit(1);
579
+ });
580
+ break;
581
+ case "build":
582
+ buildApp().catch((e) => {
583
+ console.error(e);
584
+ process.exit(1);
585
+ });
586
+ break;
587
+ case "start":
588
+ start().catch((e) => {
589
+ console.error(e);
590
+ process.exit(1);
591
+ });
592
+ break;
593
+ case "deploy":
594
+ deployCommand().catch((e) => {
595
+ console.error(e);
596
+ process.exit(1);
597
+ });
598
+ break;
599
+ case "init":
600
+ initCommand().catch((e) => {
601
+ console.error(e);
602
+ process.exit(1);
603
+ });
604
+ break;
605
+ case "check":
606
+ check().catch((e) => {
607
+ console.error(e);
608
+ process.exit(1);
609
+ });
610
+ break;
611
+ case "lint":
612
+ lint().catch((e) => {
613
+ console.error(e);
614
+ process.exit(1);
615
+ });
616
+ break;
617
+ default:
618
+ console.error(`\n Unknown command: ${command}\n`);
619
+ printHelp();
620
+ process.exit(1);
685
621
  }
622
+ //#endregion
623
+ export {};
624
+
686
625
  //# sourceMappingURL=cli.js.map