vinext 0.0.0 → 0.0.2

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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/build/static-export.d.ts +78 -0
  4. package/dist/build/static-export.d.ts.map +1 -0
  5. package/dist/build/static-export.js +553 -0
  6. package/dist/build/static-export.js.map +1 -0
  7. package/dist/check.d.ts +52 -0
  8. package/dist/check.d.ts.map +1 -0
  9. package/dist/check.js +483 -0
  10. package/dist/check.js.map +1 -0
  11. package/dist/cli.d.ts +15 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +565 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/client/entry.d.ts +2 -0
  16. package/dist/client/entry.d.ts.map +1 -0
  17. package/dist/client/entry.js +85 -0
  18. package/dist/client/entry.js.map +1 -0
  19. package/dist/cloudflare/index.d.ts +8 -0
  20. package/dist/cloudflare/index.d.ts.map +1 -0
  21. package/dist/cloudflare/index.js +8 -0
  22. package/dist/cloudflare/index.js.map +1 -0
  23. package/dist/cloudflare/kv-cache-handler.d.ts +68 -0
  24. package/dist/cloudflare/kv-cache-handler.d.ts.map +1 -0
  25. package/dist/cloudflare/kv-cache-handler.js +304 -0
  26. package/dist/cloudflare/kv-cache-handler.js.map +1 -0
  27. package/dist/cloudflare/tpr.d.ts +78 -0
  28. package/dist/cloudflare/tpr.d.ts.map +1 -0
  29. package/dist/cloudflare/tpr.js +672 -0
  30. package/dist/cloudflare/tpr.js.map +1 -0
  31. package/dist/config/config-matchers.d.ts +106 -0
  32. package/dist/config/config-matchers.d.ts.map +1 -0
  33. package/dist/config/config-matchers.js +499 -0
  34. package/dist/config/config-matchers.js.map +1 -0
  35. package/dist/config/next-config.d.ts +153 -0
  36. package/dist/config/next-config.d.ts.map +1 -0
  37. package/dist/config/next-config.js +274 -0
  38. package/dist/config/next-config.js.map +1 -0
  39. package/dist/deploy.d.ts +87 -0
  40. package/dist/deploy.d.ts.map +1 -0
  41. package/dist/deploy.js +644 -0
  42. package/dist/deploy.js.map +1 -0
  43. package/dist/index.d.ts +156 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +3296 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/init.d.ts +55 -0
  48. package/dist/init.d.ts.map +1 -0
  49. package/dist/init.js +201 -0
  50. package/dist/init.js.map +1 -0
  51. package/dist/routing/app-router.d.ts +96 -0
  52. package/dist/routing/app-router.d.ts.map +1 -0
  53. package/dist/routing/app-router.js +815 -0
  54. package/dist/routing/app-router.js.map +1 -0
  55. package/dist/routing/pages-router.d.ts +52 -0
  56. package/dist/routing/pages-router.d.ts.map +1 -0
  57. package/dist/routing/pages-router.js +239 -0
  58. package/dist/routing/pages-router.js.map +1 -0
  59. package/dist/server/api-handler.d.ts +18 -0
  60. package/dist/server/api-handler.d.ts.map +1 -0
  61. package/dist/server/api-handler.js +169 -0
  62. package/dist/server/api-handler.js.map +1 -0
  63. package/dist/server/app-dev-server.d.ts +42 -0
  64. package/dist/server/app-dev-server.d.ts.map +1 -0
  65. package/dist/server/app-dev-server.js +2718 -0
  66. package/dist/server/app-dev-server.js.map +1 -0
  67. package/dist/server/app-router-entry.d.ts +18 -0
  68. package/dist/server/app-router-entry.d.ts.map +1 -0
  69. package/dist/server/app-router-entry.js +34 -0
  70. package/dist/server/app-router-entry.js.map +1 -0
  71. package/dist/server/dev-server.d.ts +40 -0
  72. package/dist/server/dev-server.d.ts.map +1 -0
  73. package/dist/server/dev-server.js +758 -0
  74. package/dist/server/dev-server.js.map +1 -0
  75. package/dist/server/html.d.ts +22 -0
  76. package/dist/server/html.d.ts.map +1 -0
  77. package/dist/server/html.js +29 -0
  78. package/dist/server/html.js.map +1 -0
  79. package/dist/server/image-optimization.d.ts +56 -0
  80. package/dist/server/image-optimization.d.ts.map +1 -0
  81. package/dist/server/image-optimization.js +103 -0
  82. package/dist/server/image-optimization.js.map +1 -0
  83. package/dist/server/instrumentation.d.ts +68 -0
  84. package/dist/server/instrumentation.d.ts.map +1 -0
  85. package/dist/server/instrumentation.js +90 -0
  86. package/dist/server/instrumentation.js.map +1 -0
  87. package/dist/server/isr-cache.d.ts +61 -0
  88. package/dist/server/isr-cache.d.ts.map +1 -0
  89. package/dist/server/isr-cache.js +134 -0
  90. package/dist/server/isr-cache.js.map +1 -0
  91. package/dist/server/metadata-routes.d.ts +103 -0
  92. package/dist/server/metadata-routes.d.ts.map +1 -0
  93. package/dist/server/metadata-routes.js +270 -0
  94. package/dist/server/metadata-routes.js.map +1 -0
  95. package/dist/server/middleware.d.ts +77 -0
  96. package/dist/server/middleware.d.ts.map +1 -0
  97. package/dist/server/middleware.js +228 -0
  98. package/dist/server/middleware.js.map +1 -0
  99. package/dist/server/prod-server.d.ts +78 -0
  100. package/dist/server/prod-server.d.ts.map +1 -0
  101. package/dist/server/prod-server.js +712 -0
  102. package/dist/server/prod-server.js.map +1 -0
  103. package/dist/shims/amp.d.ts +17 -0
  104. package/dist/shims/amp.d.ts.map +1 -0
  105. package/dist/shims/amp.js +21 -0
  106. package/dist/shims/amp.js.map +1 -0
  107. package/dist/shims/app.d.ts +12 -0
  108. package/dist/shims/app.d.ts.map +1 -0
  109. package/dist/shims/app.js +2 -0
  110. package/dist/shims/app.js.map +1 -0
  111. package/dist/shims/cache-runtime.d.ts +68 -0
  112. package/dist/shims/cache-runtime.d.ts.map +1 -0
  113. package/dist/shims/cache-runtime.js +437 -0
  114. package/dist/shims/cache-runtime.js.map +1 -0
  115. package/dist/shims/cache.d.ts +243 -0
  116. package/dist/shims/cache.d.ts.map +1 -0
  117. package/dist/shims/cache.js +415 -0
  118. package/dist/shims/cache.js.map +1 -0
  119. package/dist/shims/client-only.d.ts +18 -0
  120. package/dist/shims/client-only.d.ts.map +1 -0
  121. package/dist/shims/client-only.js +18 -0
  122. package/dist/shims/client-only.js.map +1 -0
  123. package/dist/shims/config.d.ts +27 -0
  124. package/dist/shims/config.d.ts.map +1 -0
  125. package/dist/shims/config.js +30 -0
  126. package/dist/shims/config.js.map +1 -0
  127. package/dist/shims/constants.d.ts +13 -0
  128. package/dist/shims/constants.d.ts.map +1 -0
  129. package/dist/shims/constants.js +13 -0
  130. package/dist/shims/constants.js.map +1 -0
  131. package/dist/shims/document.d.ts +33 -0
  132. package/dist/shims/document.d.ts.map +1 -0
  133. package/dist/shims/document.js +32 -0
  134. package/dist/shims/document.js.map +1 -0
  135. package/dist/shims/dynamic.d.ts +33 -0
  136. package/dist/shims/dynamic.d.ts.map +1 -0
  137. package/dist/shims/dynamic.js +149 -0
  138. package/dist/shims/dynamic.js.map +1 -0
  139. package/dist/shims/error-boundary.d.ts +33 -0
  140. package/dist/shims/error-boundary.d.ts.map +1 -0
  141. package/dist/shims/error-boundary.js +88 -0
  142. package/dist/shims/error-boundary.js.map +1 -0
  143. package/dist/shims/error.d.ts +16 -0
  144. package/dist/shims/error.d.ts.map +1 -0
  145. package/dist/shims/error.js +45 -0
  146. package/dist/shims/error.js.map +1 -0
  147. package/dist/shims/fetch-cache.d.ts +61 -0
  148. package/dist/shims/fetch-cache.d.ts.map +1 -0
  149. package/dist/shims/fetch-cache.js +307 -0
  150. package/dist/shims/fetch-cache.js.map +1 -0
  151. package/dist/shims/font-google.d.ts +122 -0
  152. package/dist/shims/font-google.d.ts.map +1 -0
  153. package/dist/shims/font-google.js +387 -0
  154. package/dist/shims/font-google.js.map +1 -0
  155. package/dist/shims/font-local.d.ts +61 -0
  156. package/dist/shims/font-local.d.ts.map +1 -0
  157. package/dist/shims/font-local.js +303 -0
  158. package/dist/shims/font-local.js.map +1 -0
  159. package/dist/shims/form.d.ts +30 -0
  160. package/dist/shims/form.d.ts.map +1 -0
  161. package/dist/shims/form.js +78 -0
  162. package/dist/shims/form.js.map +1 -0
  163. package/dist/shims/head-state.d.ts +11 -0
  164. package/dist/shims/head-state.d.ts.map +1 -0
  165. package/dist/shims/head-state.js +47 -0
  166. package/dist/shims/head-state.js.map +1 -0
  167. package/dist/shims/head.d.ts +28 -0
  168. package/dist/shims/head.d.ts.map +1 -0
  169. package/dist/shims/head.js +148 -0
  170. package/dist/shims/head.js.map +1 -0
  171. package/dist/shims/headers.d.ts +150 -0
  172. package/dist/shims/headers.d.ts.map +1 -0
  173. package/dist/shims/headers.js +412 -0
  174. package/dist/shims/headers.js.map +1 -0
  175. package/dist/shims/image-config.d.ts +30 -0
  176. package/dist/shims/image-config.d.ts.map +1 -0
  177. package/dist/shims/image-config.js +91 -0
  178. package/dist/shims/image-config.js.map +1 -0
  179. package/dist/shims/image.d.ts +63 -0
  180. package/dist/shims/image.d.ts.map +1 -0
  181. package/dist/shims/image.js +284 -0
  182. package/dist/shims/image.js.map +1 -0
  183. package/dist/shims/internal/api-utils.d.ts +12 -0
  184. package/dist/shims/internal/api-utils.d.ts.map +1 -0
  185. package/dist/shims/internal/api-utils.js +7 -0
  186. package/dist/shims/internal/api-utils.js.map +1 -0
  187. package/dist/shims/internal/app-router-context.d.ts +21 -0
  188. package/dist/shims/internal/app-router-context.d.ts.map +1 -0
  189. package/dist/shims/internal/app-router-context.js +15 -0
  190. package/dist/shims/internal/app-router-context.js.map +1 -0
  191. package/dist/shims/internal/cookies.d.ts +9 -0
  192. package/dist/shims/internal/cookies.d.ts.map +1 -0
  193. package/dist/shims/internal/cookies.js +9 -0
  194. package/dist/shims/internal/cookies.js.map +1 -0
  195. package/dist/shims/internal/router-context.d.ts +2 -0
  196. package/dist/shims/internal/router-context.d.ts.map +1 -0
  197. package/dist/shims/internal/router-context.js +9 -0
  198. package/dist/shims/internal/router-context.js.map +1 -0
  199. package/dist/shims/internal/utils.d.ts +48 -0
  200. package/dist/shims/internal/utils.d.ts.map +1 -0
  201. package/dist/shims/internal/utils.js +35 -0
  202. package/dist/shims/internal/utils.js.map +1 -0
  203. package/dist/shims/internal/work-unit-async-storage.d.ts +12 -0
  204. package/dist/shims/internal/work-unit-async-storage.d.ts.map +1 -0
  205. package/dist/shims/internal/work-unit-async-storage.js +13 -0
  206. package/dist/shims/internal/work-unit-async-storage.js.map +1 -0
  207. package/dist/shims/layout-segment-context.d.ts +21 -0
  208. package/dist/shims/layout-segment-context.d.ts.map +1 -0
  209. package/dist/shims/layout-segment-context.js +27 -0
  210. package/dist/shims/layout-segment-context.js.map +1 -0
  211. package/dist/shims/legacy-image.d.ts +52 -0
  212. package/dist/shims/legacy-image.d.ts.map +1 -0
  213. package/dist/shims/legacy-image.js +46 -0
  214. package/dist/shims/legacy-image.js.map +1 -0
  215. package/dist/shims/link.d.ts +48 -0
  216. package/dist/shims/link.d.ts.map +1 -0
  217. package/dist/shims/link.js +395 -0
  218. package/dist/shims/link.js.map +1 -0
  219. package/dist/shims/metadata.d.ts +184 -0
  220. package/dist/shims/metadata.d.ts.map +1 -0
  221. package/dist/shims/metadata.js +472 -0
  222. package/dist/shims/metadata.js.map +1 -0
  223. package/dist/shims/navigation-state.d.ts +14 -0
  224. package/dist/shims/navigation-state.d.ts.map +1 -0
  225. package/dist/shims/navigation-state.js +77 -0
  226. package/dist/shims/navigation-state.js.map +1 -0
  227. package/dist/shims/navigation.d.ts +201 -0
  228. package/dist/shims/navigation.d.ts.map +1 -0
  229. package/dist/shims/navigation.js +672 -0
  230. package/dist/shims/navigation.js.map +1 -0
  231. package/dist/shims/og.d.ts +20 -0
  232. package/dist/shims/og.d.ts.map +1 -0
  233. package/dist/shims/og.js +19 -0
  234. package/dist/shims/og.js.map +1 -0
  235. package/dist/shims/router-state.d.ts +11 -0
  236. package/dist/shims/router-state.d.ts.map +1 -0
  237. package/dist/shims/router-state.js +56 -0
  238. package/dist/shims/router-state.js.map +1 -0
  239. package/dist/shims/router.d.ts +103 -0
  240. package/dist/shims/router.d.ts.map +1 -0
  241. package/dist/shims/router.js +536 -0
  242. package/dist/shims/router.js.map +1 -0
  243. package/dist/shims/script.d.ts +58 -0
  244. package/dist/shims/script.d.ts.map +1 -0
  245. package/dist/shims/script.js +163 -0
  246. package/dist/shims/script.js.map +1 -0
  247. package/dist/shims/server-only.d.ts +19 -0
  248. package/dist/shims/server-only.d.ts.map +1 -0
  249. package/dist/shims/server-only.js +19 -0
  250. package/dist/shims/server-only.js.map +1 -0
  251. package/dist/shims/server.d.ts +178 -0
  252. package/dist/shims/server.d.ts.map +1 -0
  253. package/dist/shims/server.js +377 -0
  254. package/dist/shims/server.js.map +1 -0
  255. package/dist/shims/web-vitals.d.ts +24 -0
  256. package/dist/shims/web-vitals.d.ts.map +1 -0
  257. package/dist/shims/web-vitals.js +17 -0
  258. package/dist/shims/web-vitals.js.map +1 -0
  259. package/dist/utils/hash.d.ts +6 -0
  260. package/dist/utils/hash.d.ts.map +1 -0
  261. package/dist/utils/hash.js +20 -0
  262. package/dist/utils/hash.js.map +1 -0
  263. package/dist/utils/project.d.ts +36 -0
  264. package/dist/utils/project.d.ts.map +1 -0
  265. package/dist/utils/project.js +112 -0
  266. package/dist/utils/project.js.map +1 -0
  267. package/dist/utils/query.d.ts +10 -0
  268. package/dist/utils/query.d.ts.map +1 -0
  269. package/dist/utils/query.js +27 -0
  270. package/dist/utils/query.js.map +1 -0
  271. package/package.json +65 -7
  272. package/index.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * vinext deploy — one-command Cloudflare Workers deployment.\n *\n * Takes any Next.js app and deploys it to Cloudflare Workers:\n *\n * 1. Detects App Router vs Pages Router\n * 2. Auto-generates missing config files (wrangler.jsonc, worker/index.ts, vite.config.ts)\n * 3. Ensures dependencies are installed (@cloudflare/vite-plugin, wrangler, @vitejs/plugin-rsc)\n * 4. Runs the Vite build\n * 5. Deploys to Cloudflare Workers via wrangler\n *\n * Design: Everything is auto-generated into a `.vinext/` directory (not the\n * project root) to avoid cluttering the user's project. If the user already\n * has these files, we use theirs.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { execSync, type ExecSyncOptions } from \"node:child_process\";\nimport { createBuilder, build } from \"vite\";\nimport {\n ensureESModule as _ensureESModule,\n renameCJSConfigs as _renameCJSConfigs,\n detectPackageManager as _detectPackageManager,\n} from \"./utils/project.js\";\nimport { runTPR } from \"./cloudflare/tpr.js\";\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport interface DeployOptions {\n /** Project root directory */\n root: string;\n /** Deploy to preview environment (default: production) */\n preview?: boolean;\n /** Custom project name for the Worker */\n name?: string;\n /** Skip the build step (assume already built) */\n skipBuild?: boolean;\n /** Dry run — generate config files but don't build or deploy */\n dryRun?: boolean;\n /** Enable experimental TPR (Traffic-aware Pre-Rendering) */\n experimentalTPR?: boolean;\n /** TPR: traffic coverage percentage target (0–100, default: 90) */\n tprCoverage?: number;\n /** TPR: hard cap on number of pages to pre-render (default: 1000) */\n tprLimit?: number;\n /** TPR: analytics lookback window in hours (default: 24) */\n tprWindow?: number;\n}\n\ninterface ProjectInfo {\n root: string;\n isAppRouter: boolean;\n isPagesRouter: boolean;\n hasViteConfig: boolean;\n hasWranglerConfig: boolean;\n hasWorkerEntry: boolean;\n hasCloudflarePlugin: boolean;\n hasRscPlugin: boolean;\n hasWrangler: boolean;\n projectName: string;\n /** Pages that use `revalidate` (ISR) */\n hasISR: boolean;\n /** package.json has \"type\": \"module\" */\n hasTypeModule: boolean;\n /** .mdx files detected in app/ or pages/ */\n hasMDX: boolean;\n /** CodeHike is a dependency */\n hasCodeHike: boolean;\n /** Native Node modules that need stubbing for Workers */\n nativeModulesToStub: string[];\n}\n\n// ─── Detection ───────────────────────────────────────────────────────────────\n\nexport function detectProject(root: string): ProjectInfo {\n const hasApp =\n fs.existsSync(path.join(root, \"app\")) ||\n fs.existsSync(path.join(root, \"src\", \"app\"));\n const hasPages =\n fs.existsSync(path.join(root, \"pages\")) ||\n fs.existsSync(path.join(root, \"src\", \"pages\"));\n\n // Prefer App Router if both exist\n const isAppRouter = hasApp;\n const isPagesRouter = !hasApp && hasPages;\n\n const hasViteConfig =\n fs.existsSync(path.join(root, \"vite.config.ts\")) ||\n fs.existsSync(path.join(root, \"vite.config.js\")) ||\n fs.existsSync(path.join(root, \"vite.config.mjs\"));\n\n const hasWranglerConfig =\n fs.existsSync(path.join(root, \"wrangler.jsonc\")) ||\n fs.existsSync(path.join(root, \"wrangler.json\")) ||\n fs.existsSync(path.join(root, \"wrangler.toml\"));\n\n const hasWorkerEntry =\n fs.existsSync(path.join(root, \"worker\", \"index.ts\")) ||\n fs.existsSync(path.join(root, \"worker\", \"index.js\"));\n\n // Check node_modules for installed packages\n const hasCloudflarePlugin = fs.existsSync(\n path.join(root, \"node_modules\", \"@cloudflare\", \"vite-plugin\"),\n );\n const hasRscPlugin = fs.existsSync(\n path.join(root, \"node_modules\", \"@vitejs\", \"plugin-rsc\"),\n );\n const hasWrangler = fs.existsSync(\n path.join(root, \"node_modules\", \".bin\", \"wrangler\"),\n );\n\n // Derive project name from package.json or directory name\n let projectName = path.basename(root);\n const pkgPath = path.join(root, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n if (pkg.name) {\n // Sanitize: Workers names must be lowercase alphanumeric + hyphens\n projectName = pkg.name\n .replace(/^@[^/]+\\//, \"\") // strip npm scope\n .replace(/[^a-z0-9-]/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n }\n } catch {\n // ignore parse errors\n }\n }\n\n // Detect ISR usage (rough heuristic: search for `revalidate` exports)\n const hasISR = detectISR(root, isAppRouter);\n\n // Detect \"type\": \"module\" in package.json\n let hasTypeModule = false;\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n hasTypeModule = pkg.type === \"module\";\n } catch {\n // ignore\n }\n }\n\n // Detect MDX usage\n const hasMDX = detectMDX(root, isAppRouter, hasPages);\n\n // Detect CodeHike dependency\n let hasCodeHike = false;\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };\n hasCodeHike = \"codehike\" in allDeps;\n } catch {\n // ignore\n }\n }\n\n // Detect native Node modules that need stubbing for Workers\n const nativeModulesToStub = detectNativeModules(root);\n\n return {\n root,\n isAppRouter,\n isPagesRouter,\n hasViteConfig,\n hasWranglerConfig,\n hasWorkerEntry,\n hasCloudflarePlugin,\n hasRscPlugin,\n hasWrangler,\n projectName,\n hasISR,\n hasTypeModule,\n hasMDX,\n hasCodeHike,\n nativeModulesToStub,\n };\n}\n\nfunction detectISR(root: string, isAppRouter: boolean): boolean {\n if (!isAppRouter) return false;\n try {\n // Check root-level app/ first, then fall back to src/app/\n let appDir = path.join(root, \"app\");\n if (!fs.existsSync(appDir)) {\n appDir = path.join(root, \"src\", \"app\");\n }\n if (!fs.existsSync(appDir)) return false;\n // Quick check: search .ts/.tsx files in app/ for `export const revalidate`\n return scanDirForPattern(appDir, /export\\s+const\\s+revalidate\\s*=/);\n } catch {\n return false;\n }\n}\n\nfunction scanDirForPattern(dir: string, pattern: RegExp): boolean {\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n if (entry.isDirectory() && !entry.name.startsWith(\".\") && entry.name !== \"node_modules\") {\n if (scanDirForPattern(fullPath, pattern)) return true;\n } else if (entry.isFile() && /\\.(ts|tsx|js|jsx)$/.test(entry.name)) {\n try {\n const content = fs.readFileSync(fullPath, \"utf-8\");\n if (pattern.test(content)) return true;\n } catch {\n // skip unreadable files\n }\n }\n }\n return false;\n}\n\n/**\n * Detect .mdx files in the project's app/ or pages/ directory,\n * or `pageExtensions` including \"mdx\" in next.config.\n */\nfunction detectMDX(root: string, isAppRouter: boolean, hasPages: boolean): boolean {\n // Check next.config for pageExtensions with mdx\n const configFiles = [\"next.config.ts\", \"next.config.mjs\", \"next.config.js\", \"next.config.cjs\"];\n for (const f of configFiles) {\n const p = path.join(root, f);\n if (fs.existsSync(p)) {\n try {\n const content = fs.readFileSync(p, \"utf-8\");\n if (/pageExtensions.*mdx/i.test(content) || /@next\\/mdx/.test(content)) return true;\n } catch {\n // ignore\n }\n }\n }\n\n // Check for .mdx files in app/ or pages/ (with src/ fallback)\n const dirs: string[] = [];\n if (isAppRouter) {\n const appDir = fs.existsSync(path.join(root, \"app\"))\n ? path.join(root, \"app\")\n : path.join(root, \"src\", \"app\");\n dirs.push(appDir);\n }\n if (hasPages) {\n const pagesDir = fs.existsSync(path.join(root, \"pages\"))\n ? path.join(root, \"pages\")\n : path.join(root, \"src\", \"pages\");\n dirs.push(pagesDir);\n }\n\n for (const dir of dirs) {\n if (fs.existsSync(dir) && scanDirForExtension(dir, \".mdx\")) return true;\n }\n\n return false;\n}\n\nfunction scanDirForExtension(dir: string, ext: string): boolean {\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n if (entry.isDirectory() && !entry.name.startsWith(\".\") && entry.name !== \"node_modules\") {\n if (scanDirForExtension(fullPath, ext)) return true;\n } else if (entry.isFile() && entry.name.endsWith(ext)) {\n return true;\n }\n }\n return false;\n}\n\n/** Known native Node modules that can't run in Workers */\nconst NATIVE_MODULES_TO_STUB = [\n \"@resvg/resvg-js\",\n \"satori\",\n \"lightningcss\",\n \"@napi-rs/canvas\",\n \"sharp\",\n];\n\n/**\n * Detect native Node modules in dependencies that need stubbing for Workers.\n */\nfunction detectNativeModules(root: string): string[] {\n const pkgPath = path.join(root, \"package.json\");\n if (!fs.existsSync(pkgPath)) return [];\n\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };\n return NATIVE_MODULES_TO_STUB.filter((mod) => mod in allDeps);\n } catch {\n return [];\n }\n}\n\n// ─── Project Preparation (pre-build transforms) ─────────────────────────────\n//\n// These are delegated to shared utilities in ./utils/project.ts so they can\n// be reused by both `vinext deploy` and `vinext init`.\n\n/** @see {@link _ensureESModule} */\nexport const ensureESModule = _ensureESModule;\n\n/** @see {@link _renameCJSConfigs} */\nexport const renameCJSConfigs = _renameCJSConfigs;\n\n// ─── File Generation ─────────────────────────────────────────────────────────\n\n/** Generate wrangler.jsonc content */\nexport function generateWranglerConfig(info: ProjectInfo): string {\n const today = new Date().toISOString().split(\"T\")[0];\n\n const config: Record<string, unknown> = {\n $schema: \"node_modules/wrangler/config-schema.json\",\n name: info.projectName,\n compatibility_date: today,\n compatibility_flags: [\"nodejs_compat\"],\n main: \"./worker/index.ts\",\n assets: {\n not_found_handling: \"none\",\n // Expose static assets to the Worker via env.ASSETS so the image\n // optimization handler can fetch source images programmatically.\n binding: \"ASSETS\",\n },\n // Cloudflare Images binding for next/image optimization.\n // Enables resize, format negotiation (AVIF/WebP), and quality transforms\n // at the edge. No user setup needed — wrangler creates the binding automatically.\n images: {\n binding: \"IMAGES\",\n },\n };\n\n if (info.hasISR) {\n config.kv_namespaces = [\n {\n binding: \"VINEXT_CACHE\",\n id: \"<your-kv-namespace-id>\",\n },\n ];\n }\n\n return JSON.stringify(config, null, 2) + \"\\n\";\n}\n\n/** Generate worker/index.ts for App Router */\nexport function generateAppRouterWorkerEntry(): string {\n return `/**\n * Cloudflare Worker entry point — auto-generated by vinext deploy.\n * Edit freely or delete to regenerate on next deploy.\n *\n * For apps without image optimization, you can use vinext/server/app-router-entry\n * directly in wrangler.jsonc: \"main\": \"vinext/server/app-router-entry\"\n */\nimport { handleImageOptimization } from \"vinext/server/image-optimization\";\nimport handler from \"vinext/server/app-router-entry\";\n\ninterface Env {\n ASSETS: Fetcher;\n IMAGES: {\n input(stream: ReadableStream): {\n transform(options: Record<string, unknown>): {\n output(options: { format: string; quality: number }): Promise<{ response(): Response }>;\n };\n };\n };\n}\n\nexport default {\n async fetch(request: Request, env: Env): Promise<Response> {\n const url = new URL(request.url);\n\n // Image optimization via Cloudflare Images binding\n if (url.pathname === \"/_vinext/image\") {\n return handleImageOptimization(request, {\n fetchAsset: (path) => env.ASSETS.fetch(new Request(new URL(path, request.url))),\n transformImage: async (body, { width, format, quality }) => {\n const result = await env.IMAGES.input(body).transform(width > 0 ? { width } : {}).output({ format, quality });\n return result.response();\n },\n });\n }\n\n // Delegate everything else to vinext\n return handler.fetch(request);\n },\n};\n`;\n}\n\n/** Generate worker/index.ts for Pages Router */\nexport function generatePagesRouterWorkerEntry(): string {\n return `/**\n * Cloudflare Worker entry point — auto-generated by vinext deploy.\n * Edit freely or delete to regenerate on next deploy.\n */\nimport { handleImageOptimization } from \"vinext/server/image-optimization\";\n\n// @ts-expect-error — virtual module resolved by vinext at build time\nimport { renderPage, handleApiRoute } from \"virtual:vinext-server-entry\";\n\ninterface Env {\n ASSETS: Fetcher;\n IMAGES: {\n input(stream: ReadableStream): {\n transform(options: Record<string, unknown>): {\n output(options: { format: string; quality: number }): Promise<{ response(): Response }>;\n };\n };\n };\n}\n\nexport default {\n async fetch(request: Request, env: Env): Promise<Response> {\n try {\n const url = new URL(request.url);\n const pathname = url.pathname;\n const urlWithQuery = pathname + url.search;\n\n // Block protocol-relative URL open redirect attacks (//evil.com/).\n if (pathname.startsWith(\"//\")) {\n return new Response(\"404 Not Found\", { status: 404 });\n }\n\n // ── Image optimization via Cloudflare Images binding ──────────\n if (pathname === \"/_vinext/image\") {\n return handleImageOptimization(request, {\n fetchAsset: (path) => env.ASSETS.fetch(new Request(new URL(path, request.url))),\n transformImage: async (body, { width, format, quality }) => {\n const result = await env.IMAGES.input(body).transform(width > 0 ? { width } : {}).output({ format, quality });\n return result.response();\n },\n });\n }\n\n // API routes\n if (pathname.startsWith(\"/api/\") || pathname === \"/api\") {\n return await handleApiRoute(request, urlWithQuery);\n }\n\n // Page routes\n return await renderPage(request, urlWithQuery, null);\n } catch (error) {\n console.error(\"[vinext] Worker error:\", error);\n return new Response(\"Internal Server Error\", { status: 500 });\n }\n },\n};\n`;\n}\n\n/** Generate vite.config.ts for App Router */\nexport function generateAppRouterViteConfig(info?: ProjectInfo): string {\n const imports: string[] = [\n `import { defineConfig } from \"vite\";`,\n `import vinext from \"vinext\";`,\n `import rsc from \"@vitejs/plugin-rsc\";`,\n `import { cloudflare } from \"@cloudflare/vite-plugin\";`,\n ];\n\n if (info?.nativeModulesToStub && info.nativeModulesToStub.length > 0) {\n imports.push(`import path from \"node:path\";`);\n }\n\n const plugins: string[] = [];\n\n if (info?.hasMDX) {\n plugins.push(` // vinext auto-injects @mdx-js/rollup with plugins from next.config`);\n }\n plugins.push(` vinext(),`);\n\n plugins.push(` rsc({\n entries: {\n rsc: \"virtual:vinext-rsc-entry\",\n ssr: \"virtual:vinext-app-ssr-entry\",\n client: \"virtual:vinext-app-browser-entry\",\n },\n }),`);\n\n plugins.push(` cloudflare({\n viteEnvironment: {\n name: \"rsc\",\n childEnvironments: [\"ssr\"],\n },\n }),`);\n\n // Build resolve.alias for native module stubs (tsconfig paths are handled\n // automatically by vite-tsconfig-paths inside the vinext plugin)\n let resolveBlock = \"\";\n const aliases: string[] = [];\n\n if (info?.nativeModulesToStub && info.nativeModulesToStub.length > 0) {\n for (const mod of info.nativeModulesToStub) {\n aliases.push(` \"${mod}\": path.resolve(__dirname, \"empty-stub.js\"),`);\n }\n }\n\n if (aliases.length > 0) {\n resolveBlock = `\\n resolve: {\\n alias: {\\n${aliases.join(\"\\n\")}\\n },\\n },`;\n }\n\n return `${imports.join(\"\\n\")}\n\nexport default defineConfig({\n plugins: [\n${plugins.join(\"\\n\")}\n ],${resolveBlock}\n});\n`;\n}\n\n/** Generate vite.config.ts for Pages Router */\nexport function generatePagesRouterViteConfig(info?: ProjectInfo): string {\n const imports: string[] = [\n `import { defineConfig } from \"vite\";`,\n `import vinext from \"vinext\";`,\n `import { cloudflare } from \"@cloudflare/vite-plugin\";`,\n ];\n\n if (info?.nativeModulesToStub && info.nativeModulesToStub.length > 0) {\n imports.push(`import path from \"node:path\";`);\n }\n\n // Build resolve.alias for native module stubs (tsconfig paths are handled\n // automatically by vite-tsconfig-paths inside the vinext plugin)\n let resolveBlock = \"\";\n const aliases: string[] = [];\n\n if (info?.nativeModulesToStub && info.nativeModulesToStub.length > 0) {\n for (const mod of info.nativeModulesToStub) {\n aliases.push(` \"${mod}\": path.resolve(__dirname, \"empty-stub.js\"),`);\n }\n }\n\n if (aliases.length > 0) {\n resolveBlock = `\\n resolve: {\\n alias: {\\n${aliases.join(\"\\n\")}\\n },\\n },`;\n }\n\n return `${imports.join(\"\\n\")}\n\nexport default defineConfig({\n plugins: [\n vinext(),\n cloudflare(),\n ],${resolveBlock}\n});\n`;\n}\n\n// ─── Dependency Management ───────────────────────────────────────────────────\n\ninterface MissingDep {\n name: string;\n version: string;\n}\n\nexport function getMissingDeps(info: ProjectInfo): MissingDep[] {\n const missing: MissingDep[] = [];\n\n if (!info.hasCloudflarePlugin) {\n missing.push({ name: \"@cloudflare/vite-plugin\", version: \"latest\" });\n }\n if (!info.hasWrangler) {\n missing.push({ name: \"wrangler\", version: \"latest\" });\n }\n if (info.isAppRouter && !info.hasRscPlugin) {\n missing.push({ name: \"@vitejs/plugin-rsc\", version: \"latest\" });\n }\n if (info.hasMDX) {\n // Check if @mdx-js/rollup is already installed\n const hasMdxRollup = fs.existsSync(\n path.join(info.root, \"node_modules\", \"@mdx-js\", \"rollup\"),\n );\n if (!hasMdxRollup) {\n missing.push({ name: \"@mdx-js/rollup\", version: \"latest\" });\n }\n }\n\n return missing;\n}\n\nfunction installDeps(root: string, deps: MissingDep[]): void {\n if (deps.length === 0) return;\n\n const depsStr = deps.map((d) => `${d.name}@${d.version}`).join(\" \");\n const installCmd = detectPackageManager(root);\n\n console.log(` Installing: ${deps.map((d) => d.name).join(\", \")}`);\n execSync(`${installCmd} ${depsStr}`, {\n cwd: root,\n stdio: \"inherit\",\n });\n}\n\nconst detectPackageManager = _detectPackageManager;\n\n// ─── File Writing ────────────────────────────────────────────────────────────\n\ninterface GeneratedFile {\n path: string;\n content: string;\n description: string;\n}\n\nexport function getFilesToGenerate(info: ProjectInfo): GeneratedFile[] {\n const files: GeneratedFile[] = [];\n\n if (!info.hasWranglerConfig) {\n files.push({\n path: path.join(info.root, \"wrangler.jsonc\"),\n content: generateWranglerConfig(info),\n description: \"wrangler.jsonc\",\n });\n }\n\n if (!info.hasWorkerEntry) {\n const workerContent = info.isAppRouter\n ? generateAppRouterWorkerEntry()\n : generatePagesRouterWorkerEntry();\n files.push({\n path: path.join(info.root, \"worker\", \"index.ts\"),\n content: workerContent,\n description: \"worker/index.ts\",\n });\n }\n\n if (!info.hasViteConfig) {\n const viteContent = info.isAppRouter\n ? generateAppRouterViteConfig(info)\n : generatePagesRouterViteConfig(info);\n files.push({\n path: path.join(info.root, \"vite.config.ts\"),\n content: viteContent,\n description: \"vite.config.ts\",\n });\n }\n\n return files;\n}\n\nfunction writeGeneratedFiles(files: GeneratedFile[]): void {\n for (const file of files) {\n const dir = path.dirname(file.path);\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n fs.writeFileSync(file.path, file.content, \"utf-8\");\n console.log(` Created ${file.description}`);\n }\n}\n\n// ─── Build ───────────────────────────────────────────────────────────────────\n\nasync function runBuild(info: ProjectInfo): Promise<void> {\n console.log(\"\\n Building for Cloudflare Workers...\\n\");\n\n // Use Vite's JS API for the build. The user's vite.config.ts (or our\n // generated one) has the cloudflare() plugin which handles the Worker\n // output format. We just need to trigger the build.\n //\n // For App Router, createBuilder().buildApp() handles multi-environment builds.\n // For Pages Router, a single build() call suffices (cloudflare plugin manages it).\n\n if (info.isAppRouter) {\n const builder = await createBuilder({ root: info.root });\n await builder.buildApp();\n } else {\n await build({ root: info.root });\n }\n}\n\n// ─── Deploy ──────────────────────────────────────────────────────────────────\n\nfunction runWranglerDeploy(root: string, preview: boolean): string {\n const wranglerBin = path.join(root, \"node_modules\", \".bin\", \"wrangler\");\n\n const execOpts: ExecSyncOptions = {\n cwd: root,\n stdio: \"pipe\",\n encoding: \"utf-8\",\n };\n\n // wrangler deploy outputs the URL to stdout\n const args = preview ? [\"deploy\", \"--env\", \"preview\"] : [\"deploy\"];\n const cmd = `\"${wranglerBin}\" ${args.join(\" \")}`;\n\n console.log(preview ? \"\\n Deploying to preview...\" : \"\\n Deploying to production...\");\n\n const output = execSync(cmd, execOpts) as string;\n\n // Parse the deployed URL from wrangler output\n // Wrangler prints: \"Published <name> (version_id)\\n https://<name>.<subdomain>.workers.dev\"\n const urlMatch = output.match(/https:\\/\\/[^\\s]+\\.workers\\.dev[^\\s]*/);\n const deployedUrl = urlMatch ? urlMatch[0] : null;\n\n // Also print raw output for transparency\n if (output.trim()) {\n for (const line of output.trim().split(\"\\n\")) {\n console.log(` ${line}`);\n }\n }\n\n return deployedUrl ?? \"(URL not detected in wrangler output)\";\n}\n\n// ─── Main Entry ──────────────────────────────────────────────────────────────\n\nexport async function deploy(options: DeployOptions): Promise<void> {\n const root = path.resolve(options.root);\n\n console.log(\"\\n vinext deploy\\n\");\n\n // Step 1: Detect project structure\n const info = detectProject(root);\n\n if (!info.isAppRouter && !info.isPagesRouter) {\n console.error(\" Error: No app/ or pages/ directory found.\");\n console.error(\" vinext deploy requires a Next.js project with an app/ or pages/ directory\");\n console.error(\" (also checks src/app/ and src/pages/).\\n\");\n process.exit(1);\n }\n\n if (options.name) {\n info.projectName = options.name;\n }\n\n console.log(` Project: ${info.projectName}`);\n console.log(` Router: ${info.isAppRouter ? \"App Router\" : \"Pages Router\"}`);\n console.log(` ISR: ${info.hasISR ? \"detected\" : \"none\"}`);\n\n // Step 2: Check and install missing dependencies\n const missingDeps = getMissingDeps(info);\n if (missingDeps.length > 0) {\n console.log();\n installDeps(root, missingDeps);\n // Re-detect after install\n info.hasCloudflarePlugin = true;\n info.hasWrangler = true;\n if (info.isAppRouter) info.hasRscPlugin = true;\n }\n\n // Step 3: Ensure ESM + rename CJS configs\n if (!info.hasTypeModule) {\n const renamedConfigs = renameCJSConfigs(root);\n for (const [oldName, newName] of renamedConfigs) {\n console.log(` Renamed ${oldName} → ${newName} (CJS → .cjs)`);\n }\n if (ensureESModule(root)) {\n console.log(` Added \"type\": \"module\" to package.json`);\n info.hasTypeModule = true;\n }\n }\n\n // Step 4: Generate missing config files\n const filesToGenerate = getFilesToGenerate(info);\n if (filesToGenerate.length > 0) {\n console.log();\n writeGeneratedFiles(filesToGenerate);\n }\n\n if (options.dryRun) {\n console.log(\"\\n Dry run complete. Files generated but no build or deploy performed.\\n\");\n return;\n }\n\n // Step 5: Build\n if (!options.skipBuild) {\n await runBuild(info);\n } else {\n console.log(\"\\n Skipping build (--skip-build)\");\n }\n\n // Step 6: TPR — pre-render hot pages into KV cache (experimental, opt-in)\n if (options.experimentalTPR) {\n console.log();\n const tprResult = await runTPR({\n root,\n coverage: Math.max(1, Math.min(100, options.tprCoverage ?? 90)),\n limit: Math.max(1, options.tprLimit ?? 1000),\n window: Math.max(1, options.tprWindow ?? 24),\n });\n\n if (tprResult.skipped) {\n console.log(` TPR: Skipped (${tprResult.skipped})`);\n }\n }\n\n // Step 7: Deploy via wrangler\n const url = runWranglerDeploy(root, options.preview ?? false);\n\n console.log(\"\\n ─────────────────────────────────────────\");\n console.log(` Deployed to: ${url}`);\n console.log(\" ─────────────────────────────────────────\\n\");\n}\n"]}
@@ -0,0 +1,156 @@
1
+ import type { Plugin } from "vite";
2
+ /**
3
+ * Safely parse a static JS object literal string into a plain object.
4
+ * Uses Vite's parseAst (Rollup/acorn) so no code is ever evaluated.
5
+ * Returns null if the expression contains anything dynamic (function calls,
6
+ * template literals, identifiers, computed properties, etc.).
7
+ *
8
+ * Supports: string literals, numeric literals, boolean literals,
9
+ * arrays of the above, and nested object literals.
10
+ */
11
+ declare function parseStaticObjectLiteral(objectStr: string): Record<string, unknown> | null;
12
+ /**
13
+ * Resolve PostCSS string plugin names in a project's PostCSS config.
14
+ *
15
+ * Next.js (via postcss-load-config) resolves string plugin names in the
16
+ * object form `{ plugins: { "pkg-name": opts } }` but NOT in the array form
17
+ * `{ plugins: ["pkg-name"] }`. Since many Next.js projects use the array
18
+ * form (particularly with Tailwind CSS v4), we detect this case and resolve
19
+ * the string names to actual plugin functions so Vite can use them.
20
+ *
21
+ * Returns the resolved PostCSS config object to inject into Vite's
22
+ * `css.postcss`, or `undefined` if no resolution is needed.
23
+ */
24
+ declare function resolvePostcssStringPlugins(projectRoot: string): Promise<{
25
+ plugins: any[];
26
+ } | undefined>;
27
+ /**
28
+ * manualChunks function for client builds.
29
+ *
30
+ * Splits the client bundle into:
31
+ * - "framework" — React, ReactDOM, and scheduler (loaded on every page)
32
+ * - "vinext" — vinext shims (router, head, link, etc.)
33
+ *
34
+ * All other vendor code is left to Rollup's default chunk-splitting
35
+ * algorithm. Rollup automatically deduplicates shared modules into
36
+ * common chunks based on the import graph — no manual intervention
37
+ * needed.
38
+ *
39
+ * Why not split every npm package into its own chunk?
40
+ * - Per-package splitting (`vendor-X`) creates 50-200+ chunks for a
41
+ * typical app, far exceeding the ~25-request sweet spot for HTTP/2.
42
+ * - gzip/brotli compress small files poorly — each file restarts with
43
+ * an empty dictionary, losing ~5-15% total compressed size vs fewer
44
+ * larger chunks (Khan Academy measured +2.5% wire size with 10x
45
+ * more files containing less raw code).
46
+ * - ES module evaluation has per-module overhead that compounds on
47
+ * mobile devices.
48
+ * - No major Vite-based framework (Remix, SvelteKit, Astro, TanStack)
49
+ * uses per-package splitting. Next.js only isolates packages >160KB.
50
+ * - Rollup's graph-based splitting already handles the common case
51
+ * well: shared dependencies between routes get their own chunks,
52
+ * and route-specific code stays in route chunks.
53
+ */
54
+ declare function clientManualChunks(id: string): string | undefined;
55
+ /**
56
+ * Rollup output config with manualChunks for client code-splitting.
57
+ * Used by both CLI builds and multi-environment builds.
58
+ *
59
+ * experimentalMinChunkSize merges tiny shared chunks (< 10KB) back into
60
+ * their importers. This reduces HTTP request count and improves gzip
61
+ * compression efficiency — small files restart the compression dictionary,
62
+ * adding ~5-15% wire overhead vs fewer larger chunks.
63
+ */
64
+ declare const clientOutputConfig: {
65
+ manualChunks: typeof clientManualChunks;
66
+ experimentalMinChunkSize: number;
67
+ };
68
+ /**
69
+ * Rollup treeshake configuration for production client builds.
70
+ *
71
+ * Uses the 'recommended' preset as a safe base, then overrides
72
+ * moduleSideEffects to strip unused re-exports from npm packages.
73
+ *
74
+ * The 'no-external' value for moduleSideEffects means:
75
+ * - Local project modules: preserve side effects (CSS imports, polyfills)
76
+ * - node_modules packages: treat as side-effect-free unless exports are used
77
+ *
78
+ * This is the single highest-impact optimization for large barrel-exporting
79
+ * libraries like mermaid, @mui/material, lucide-react, etc. These libraries
80
+ * re-export hundreds of sub-modules through barrel files. Without this,
81
+ * Rollup preserves every sub-module even when only a few exports are consumed.
82
+ *
83
+ * Why 'no-external' instead of false (global side-effect-free)?
84
+ * - User code may rely on import-time side effects (e.g., `import './global.css'`)
85
+ * - 'no-external' is safe for app code while still enabling aggressive DCE for deps
86
+ *
87
+ * Why not the 'smallest' preset?
88
+ * - 'smallest' also sets propertyReadSideEffects: false and
89
+ * tryCatchDeoptimization: false, which can break specific libraries
90
+ * that rely on property access side effects or try/catch for feature detection
91
+ * - 'recommended' + 'no-external' gives most of the benefit with less risk
92
+ */
93
+ declare const clientTreeshakeConfig: {
94
+ preset: "recommended";
95
+ moduleSideEffects: "no-external";
96
+ };
97
+ /**
98
+ * Compute the set of chunk filenames that are ONLY reachable through dynamic
99
+ * imports (i.e. behind React.lazy(), next/dynamic, or manual import()).
100
+ *
101
+ * These chunks should NOT be modulepreloaded in the HTML — they will be
102
+ * fetched on demand when the dynamic import executes.
103
+ *
104
+ * Algorithm: Starting from all entry chunks in the build manifest, walk the
105
+ * static `imports` tree (breadth-first). Any chunk file NOT reached by this
106
+ * walk is only reachable through `dynamicImports` and is therefore "lazy".
107
+ *
108
+ * @param buildManifest - Vite's build manifest (manifest.json), which is a
109
+ * Record<string, ManifestChunk> where each chunk has `file`, `imports`,
110
+ * `dynamicImports`, `isEntry`, and `isDynamicEntry` fields.
111
+ * @returns Array of chunk filenames (e.g. "assets/mermaid-NOHMQCX5.js") that
112
+ * should be excluded from modulepreload hints.
113
+ */
114
+ declare function computeLazyChunks(buildManifest: Record<string, {
115
+ file: string;
116
+ isEntry?: boolean;
117
+ isDynamicEntry?: boolean;
118
+ imports?: string[];
119
+ dynamicImports?: string[];
120
+ css?: string[];
121
+ }>): string[];
122
+ export interface VinextOptions {
123
+ /**
124
+ * Base directory containing the app/ and pages/ directories.
125
+ * Can be an absolute path or a path relative to the Vite root.
126
+ *
127
+ * By default, vinext auto-detects: checks for app/ and pages/ at the
128
+ * project root first, then falls back to src/app/ and src/pages/.
129
+ */
130
+ appDir?: string;
131
+ /**
132
+ * Auto-register @vitejs/plugin-rsc when an app/ directory is detected.
133
+ * Set to `false` to disable auto-registration (e.g. if you configure
134
+ * @vitejs/plugin-rsc manually with custom options).
135
+ * @default true
136
+ */
137
+ rsc?: boolean;
138
+ }
139
+ export default function vinext(options?: VinextOptions): Plugin[];
140
+ /**
141
+ * Match a Next.js route pattern (e.g. "/blog/:slug", "/docs/:path*") against a pathname.
142
+ * Returns matched params or null.
143
+ *
144
+ * Supports:
145
+ * :param — matches a single path segment
146
+ * :param* — matches zero or more segments (catch-all)
147
+ * :param+ — matches one or more segments
148
+ * (regex) — inline regex patterns in the source
149
+ */
150
+ export declare function matchConfigPattern(pathname: string, pattern: string): Record<string, string> | null;
151
+ export { staticExportPages, staticExportApp } from "./build/static-export.js";
152
+ export type { StaticExportResult, StaticExportOptions, AppStaticExportOptions } from "./build/static-export.js";
153
+ export { clientManualChunks, clientOutputConfig, clientTreeshakeConfig, computeLazyChunks };
154
+ export { resolvePostcssStringPlugins as _resolvePostcssStringPlugins };
155
+ export { parseStaticObjectLiteral as _parseStaticObjectLiteral };
156
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAqGlD;;;;;;;;GAQG;AACH,iBAAS,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAkBnF;AAuGD;;;;;;;;;;;GAWG;AACH,iBAAe,2BAA2B,CACxC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,EAAE,CAAA;CAAE,GAAG,SAAS,CAAC,CAqEzC;AA0CD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,iBAAS,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8B1D;AAED;;;;;;;;GAQG;AACH,QAAA,MAAM,kBAAkB;;;CAGvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,QAAA,MAAM,qBAAqB;;;CAG1B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,iBAAiB,CACxB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC,GACD,MAAM,EAAE,CAwDV;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,EAAE,CA2lFpE;AAgBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAqF/B;AAmMD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGhH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC;AAC5F,OAAO,EAAE,2BAA2B,IAAI,4BAA4B,EAAE,CAAC;AACvE,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,CAAC"}