vinext 0.0.30 → 0.0.32

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 +15 -7
  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 +581 -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 +681 -571
  19. package/dist/check.js.map +1 -1
  20. package/dist/cli.d.ts +1 -15
  21. package/dist/cli.js +432 -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 +376 -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 +444 -212
  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 +86 -114
  68. package/dist/entries/pages-server-entry.js.map +1 -1
  69. package/dist/index.d.ts +92 -60
  70. package/dist/index.js +2151 -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 +160 -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 +19 -15
  112. package/dist/server/dev-server.js +543 -871
  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 +34 -59
  121. package/dist/server/instrumentation.js +112 -125
  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 +32 -47
  136. package/dist/server/middleware.js +261 -409
  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 +715 -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 +6 -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 +439 -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 +17 -20
  211. package/dist/shims/head.js +194 -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 +7 -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 +213 -164
  287. package/dist/shims/server.js +545 -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,393 @@
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
+ const nextConfig = await resolveNextConfig(await loadNextConfig(process.cwd()), process.cwd());
276
+ let prerenderResult;
277
+ if (parsed.prerenderAll || nextConfig.output === "export") {
278
+ const label = parsed.prerenderAll ? "Pre-rendering all routes..." : "Pre-rendering all routes (output: 'export')...";
279
+ process.stdout.write("\x1B[0m");
280
+ console.log(` ${label}`);
281
+ prerenderResult = await runPrerender({ root: process.cwd() });
282
+ }
283
+ process.stdout.write("\x1B[0m");
284
+ await printBuildReport({
285
+ root: process.cwd(),
286
+ pageExtensions: nextConfig.pageExtensions,
287
+ prerenderResult: prerenderResult ?? void 0
288
+ });
289
+ console.log("\n Build complete. Run `vinext start` to start the production server.\n");
290
+ process.exit(0);
341
291
  }
342
292
  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
- });
293
+ const parsed = parseArgs(rawArgs);
294
+ if (parsed.help) return printHelp("start");
295
+ loadDotenv({
296
+ root: process.cwd(),
297
+ mode: "production"
298
+ });
299
+ const port = parsed.port ?? parseInt(process.env.PORT ?? "3000", 10);
300
+ const host = parsed.hostname ?? "0.0.0.0";
301
+ console.log(`\n vinext start (port ${port})\n`);
302
+ const { startProdServer } = await import(
303
+ /* @vite-ignore */
304
+ "./server/prod-server.js"
305
+ );
306
+ await startProdServer({
307
+ port,
308
+ host,
309
+ outDir: path.resolve(process.cwd(), "dist")
310
+ });
359
311
  }
360
312
  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
- }
313
+ if (parseArgs(rawArgs).help) return printHelp("lint");
314
+ console.log(`\n vinext lint\n`);
315
+ const cwd = process.cwd();
316
+ const hasOxlint = fs.existsSync(path.join(cwd, "node_modules", ".bin", "oxlint"));
317
+ const hasEslint = fs.existsSync(path.join(cwd, "node_modules", ".bin", "eslint"));
318
+ 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"));
319
+ try {
320
+ if (hasEslint && hasNextLintConfig) {
321
+ console.log(" Using eslint (with existing config)\n");
322
+ execFileSync("npx", ["eslint", "."], {
323
+ cwd,
324
+ stdio: "inherit"
325
+ });
326
+ } else if (hasOxlint) {
327
+ console.log(" Using oxlint\n");
328
+ execFileSync("npx", ["oxlint", "."], {
329
+ cwd,
330
+ stdio: "inherit"
331
+ });
332
+ } else if (hasEslint) {
333
+ console.log(" Using eslint\n");
334
+ execFileSync("npx", ["eslint", "."], {
335
+ cwd,
336
+ stdio: "inherit"
337
+ });
338
+ } else {
339
+ 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");
340
+ process.exit(1);
341
+ }
342
+ console.log("\n Lint passed.\n");
343
+ } catch {
344
+ process.exit(1);
345
+ }
404
346
  }
405
347
  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
- });
348
+ const parsed = parseDeployArgs(rawArgs);
349
+ if (parsed.help) return printHelp("deploy");
350
+ await loadVite();
351
+ console.log(`\n vinext deploy (Vite ${getViteVersion()})\n`);
352
+ await deploy({
353
+ root: process.cwd(),
354
+ preview: parsed.preview,
355
+ env: parsed.env,
356
+ skipBuild: parsed.skipBuild,
357
+ dryRun: parsed.dryRun,
358
+ name: parsed.name,
359
+ prerenderAll: parsed.prerenderAll,
360
+ experimentalTPR: parsed.experimentalTPR,
361
+ tprCoverage: parsed.tprCoverage,
362
+ tprLimit: parsed.tprLimit,
363
+ tprWindow: parsed.tprWindow
364
+ });
423
365
  }
424
366
  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));
367
+ if (parseArgs(rawArgs).help) return printHelp("check");
368
+ const root = process.cwd();
369
+ console.log(`\n vinext check\n`);
370
+ console.log(" Scanning project...\n");
371
+ const result = runCheck(root);
372
+ console.log(formatReport(result));
433
373
  }
434
374
  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
- });
375
+ const parsed = parseArgs(rawArgs);
376
+ if (parsed.help) return printHelp("init");
377
+ console.log(`\n vinext init\n`);
378
+ const port = parsed.port ?? 3001;
379
+ const skipCheck = rawArgs.includes("--skip-check");
380
+ const force = rawArgs.includes("--force");
381
+ await init({
382
+ root: process.cwd(),
383
+ port,
384
+ skipCheck,
385
+ force
386
+ });
449
387
  }
450
- // ─── Help ─────────────────────────────────────────────────────────────────────
451
388
  function printHelp(cmd) {
452
- if (cmd === "dev") {
453
- console.log(`
389
+ if (cmd === "dev") {
390
+ console.log(`
454
391
  vinext dev - Start development server
455
392
 
456
393
  Usage: vinext dev [options]
@@ -461,10 +398,10 @@ function printHelp(cmd) {
461
398
  --turbopack Accepted for compatibility (no-op, Vite is always used)
462
399
  -h, --help Show this help
463
400
  `);
464
- return;
465
- }
466
- if (cmd === "build") {
467
- console.log(`
401
+ return;
402
+ }
403
+ if (cmd === "build") {
404
+ console.log(`
468
405
  vinext build - Build for production
469
406
 
470
407
  Usage: vinext build [options]
@@ -473,13 +410,15 @@ function printHelp(cmd) {
473
410
  runs the appropriate multi-environment build via Vite.
474
411
 
475
412
  Options:
476
- --verbose Show full Vite/Rollup build output (suppressed by default)
477
- -h, --help Show this help
413
+ --verbose Show full Vite/Rollup build output (suppressed by default)
414
+ --prerender-all Pre-render discovered routes after building (future releases
415
+ will serve these files in vinext start)
416
+ -h, --help Show this help
478
417
  `);
479
- return;
480
- }
481
- if (cmd === "start") {
482
- console.log(`
418
+ return;
419
+ }
420
+ if (cmd === "start") {
421
+ console.log(`
483
422
  vinext start - Start production server
484
423
 
485
424
  Usage: vinext start [options]
@@ -492,10 +431,10 @@ function printHelp(cmd) {
492
431
  -H, --hostname <host> Hostname to bind to (default: 0.0.0.0)
493
432
  -h, --help Show this help
494
433
  `);
495
- return;
496
- }
497
- if (cmd === "deploy") {
498
- console.log(`
434
+ return;
435
+ }
436
+ if (cmd === "deploy") {
437
+ console.log(`
499
438
  vinext deploy - Deploy to Cloudflare Workers
500
439
 
501
440
  Usage: vinext deploy [options]
@@ -513,6 +452,8 @@ function printHelp(cmd) {
513
452
  --name <name> Custom Worker name (default: from package.json)
514
453
  --skip-build Skip the build step (use existing dist/)
515
454
  --dry-run Generate config files without building or deploying
455
+ --prerender-all Pre-render discovered routes after building (future
456
+ releases will auto-populate the remote cache)
516
457
  -h, --help Show this help
517
458
 
518
459
  Experimental:
@@ -537,10 +478,10 @@ function printHelp(cmd) {
537
478
  vinext deploy --experimental-tpr --tpr-coverage 95 Cover 95% of traffic
538
479
  vinext deploy --experimental-tpr --tpr-limit 500 Cap at 500 pages
539
480
  `);
540
- return;
541
- }
542
- if (cmd === "check") {
543
- console.log(`
481
+ return;
482
+ }
483
+ if (cmd === "check") {
484
+ console.log(`
544
485
  vinext check - Scan Next.js app for compatibility
545
486
 
546
487
  Usage: vinext check [options]
@@ -552,10 +493,10 @@ function printHelp(cmd) {
552
493
  Options:
553
494
  -h, --help Show this help
554
495
  `);
555
- return;
556
- }
557
- if (cmd === "init") {
558
- console.log(`
496
+ return;
497
+ }
498
+ if (cmd === "init") {
499
+ console.log(`
559
500
  vinext init - Migrate a Next.js project to run under vinext
560
501
 
561
502
  Usage: vinext init [options]
@@ -576,10 +517,10 @@ function printHelp(cmd) {
576
517
  vinext init --force Overwrite existing vite.config.ts
577
518
  vinext init --skip-check Skip the compatibility report
578
519
  `);
579
- return;
580
- }
581
- if (cmd === "lint") {
582
- console.log(`
520
+ return;
521
+ }
522
+ if (cmd === "lint") {
523
+ console.log(`
583
524
  vinext lint - Run linter
584
525
 
585
526
  Usage: vinext lint [options]
@@ -590,9 +531,9 @@ function printHelp(cmd) {
590
531
  Options:
591
532
  -h, --help Show this help
592
533
  `);
593
- return;
594
- }
595
- console.log(`
534
+ return;
535
+ }
536
+ console.log(`
596
537
  vinext v${VERSION} - Run Next.js apps on Vite
597
538
 
598
539
  Usage: vinext <command> [options]
@@ -624,63 +565,63 @@ function printHelp(cmd) {
624
565
  No vite.config.ts needed — just run \`vinext dev\` in your Next.js project.
625
566
  `);
626
567
  }
627
- // ─── Entry ────────────────────────────────────────────────────────────────────
628
568
  if (command === "--version" || command === "-v") {
629
- console.log(`vinext v${VERSION}`);
630
- process.exit(0);
569
+ console.log(`vinext v${VERSION}`);
570
+ process.exit(0);
631
571
  }
632
572
  if (command === "--help" || command === "-h" || !command) {
633
- printHelp();
634
- if (!command)
635
- process.exit(0);
636
- process.exit(0);
573
+ printHelp();
574
+ process.exit(0);
637
575
  }
638
576
  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);
577
+ case "dev":
578
+ dev().catch((e) => {
579
+ console.error(e);
580
+ process.exit(1);
581
+ });
582
+ break;
583
+ case "build":
584
+ buildApp().catch((e) => {
585
+ console.error(e);
586
+ process.exit(1);
587
+ });
588
+ break;
589
+ case "start":
590
+ start().catch((e) => {
591
+ console.error(e);
592
+ process.exit(1);
593
+ });
594
+ break;
595
+ case "deploy":
596
+ deployCommand().catch((e) => {
597
+ console.error(e);
598
+ process.exit(1);
599
+ });
600
+ break;
601
+ case "init":
602
+ initCommand().catch((e) => {
603
+ console.error(e);
604
+ process.exit(1);
605
+ });
606
+ break;
607
+ case "check":
608
+ check().catch((e) => {
609
+ console.error(e);
610
+ process.exit(1);
611
+ });
612
+ break;
613
+ case "lint":
614
+ lint().catch((e) => {
615
+ console.error(e);
616
+ process.exit(1);
617
+ });
618
+ break;
619
+ default:
620
+ console.error(`\n Unknown command: ${command}\n`);
621
+ printHelp();
622
+ process.exit(1);
685
623
  }
624
+ //#endregion
625
+ export {};
626
+
686
627
  //# sourceMappingURL=cli.js.map