nitro-nightly 4.0.0-20251030-091344-d4418b98 → 4.0.0-20251030-122334-09c1a7a8

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 (334) hide show
  1. package/dist/_build/common.mjs +763 -0
  2. package/dist/_build/rolldown.mjs +216 -0
  3. package/dist/_build/rollup.mjs +359 -0
  4. package/dist/_build/vite.build.mjs +67 -0
  5. package/dist/_build/vite.plugin.mjs +762 -0
  6. package/dist/_chunks/B-7HiF0V.mjs +1303 -0
  7. package/dist/_chunks/B3asVbT4.mjs +151 -0
  8. package/dist/_chunks/B5ooyfLk.mjs +372 -0
  9. package/dist/_chunks/DXMHy5ca.mjs +43 -0
  10. package/dist/_dev.d.mts +12 -0
  11. package/dist/_dev.mjs +675 -0
  12. package/dist/_libs/acorn.mjs +5034 -0
  13. package/dist/_libs/c12.mjs +2798 -0
  14. package/dist/_libs/chokidar.mjs +1560 -0
  15. package/dist/_libs/citty.mjs +333 -0
  16. package/dist/_libs/commondir.mjs +22 -0
  17. package/dist/_libs/compatx.mjs +46 -0
  18. package/dist/_libs/confbox.mjs +2920 -0
  19. package/dist/_libs/debug.mjs +848 -0
  20. package/dist/_libs/deepmerge.mjs +86 -0
  21. package/dist/_libs/depd.mjs +314 -0
  22. package/dist/_libs/dot-prop.mjs +138 -0
  23. package/dist/_libs/duplexer.mjs +71 -0
  24. package/dist/_libs/ee-first.mjs +68 -0
  25. package/dist/_libs/encodeurl.mjs +49 -0
  26. package/dist/_libs/escape-html.mjs +58 -0
  27. package/dist/_libs/escape-string-regexp.mjs +8 -0
  28. package/dist/_libs/estree-walker.mjs +330 -0
  29. package/dist/_libs/etag.mjs +75 -0
  30. package/dist/{_chunks/_deps → _libs}/fdir.mjs +49 -104
  31. package/dist/_libs/fresh.mjs +85 -0
  32. package/dist/_libs/function-bind.mjs +63 -0
  33. package/dist/_libs/gen-mapping.mjs +612 -0
  34. package/dist/_libs/giget.mjs +19076 -0
  35. package/dist/_libs/gzip-size.mjs +21 -0
  36. package/dist/_libs/hasown.mjs +14 -0
  37. package/dist/_libs/http-errors.mjs +436 -0
  38. package/dist/_libs/httpxy.mjs +410 -0
  39. package/dist/_libs/is-core-module.mjs +220 -0
  40. package/dist/_libs/is-module.mjs +13 -0
  41. package/dist/_libs/is-reference.mjs +32 -0
  42. package/dist/{_chunks/_deps → _libs}/js-tokens.mjs +83 -112
  43. package/dist/_libs/klona.mjs +90 -0
  44. package/dist/_libs/knitwork.mjs +124 -0
  45. package/dist/_libs/local-pkg.mjs +1686 -0
  46. package/dist/{_chunks/_deps → _libs}/magic-string.mjs +272 -629
  47. package/dist/_libs/mime-db.mjs +7642 -0
  48. package/dist/_libs/mime-types.mjs +162 -0
  49. package/dist/_libs/mime.mjs +1391 -0
  50. package/dist/_libs/node-fetch-native.mjs +173 -0
  51. package/dist/_libs/on-finished.mjs +170 -0
  52. package/dist/_libs/parseurl.mjs +103 -0
  53. package/dist/_libs/path-parse.mjs +47 -0
  54. package/dist/_libs/pathe.mjs +41 -0
  55. package/dist/_libs/picomatch.mjs +1673 -0
  56. package/dist/_libs/plugin-alias.mjs +64 -0
  57. package/dist/_libs/plugin-commonjs.mjs +1489 -0
  58. package/dist/_libs/plugin-inject.mjs +135 -0
  59. package/dist/_libs/plugin-json.mjs +36 -0
  60. package/dist/_libs/plugin-node-resolve.mjs +1553 -0
  61. package/dist/_libs/plugin-replace.mjs +104 -0
  62. package/dist/_libs/pretty-bytes.mjs +116 -0
  63. package/dist/_libs/range-parser.mjs +102 -0
  64. package/dist/_libs/remapping.mjs +117 -0
  65. package/dist/{_chunks/_deps → _libs}/rou3.mjs +7 -22
  66. package/dist/_libs/send.mjs +857 -0
  67. package/dist/_libs/serve-static.mjs +124 -0
  68. package/dist/_libs/std-env.mjs +158 -0
  69. package/dist/_libs/strip-literal.mjs +51 -0
  70. package/dist/{_chunks/_deps → _libs}/tinyglobby.mjs +32 -33
  71. package/dist/_libs/ultrahtml.mjs +138 -0
  72. package/dist/_libs/unimport.mjs +3520 -0
  73. package/dist/_libs/untyped.mjs +271 -0
  74. package/dist/_libs/unwasm.mjs +5825 -0
  75. package/dist/{_chunks/_deps/@pi0 → _libs}/vite-plugin-fullstack.mjs +28 -42
  76. package/dist/_presets.mjs +1723 -0
  77. package/dist/builder.d.mts +37 -35
  78. package/dist/builder.mjs +45 -117
  79. package/dist/cli/_chunks/build.mjs +43 -0
  80. package/dist/cli/_chunks/common.mjs +15 -0
  81. package/dist/cli/_chunks/detect-acorn.mjs +12 -0
  82. package/dist/cli/_chunks/dev.mjs +79 -0
  83. package/dist/cli/_chunks/dist.mjs +3 -0
  84. package/dist/cli/_chunks/dist2.mjs +4 -0
  85. package/dist/cli/_chunks/esm.mjs +3 -0
  86. package/dist/cli/_chunks/json5.mjs +4 -0
  87. package/dist/cli/_chunks/jsonc.mjs +4 -0
  88. package/dist/cli/_chunks/list.mjs +27 -0
  89. package/dist/cli/_chunks/multipart-parser.mjs +6 -0
  90. package/dist/cli/_chunks/prepare.mjs +19 -0
  91. package/dist/cli/_chunks/run.mjs +55 -0
  92. package/dist/cli/_chunks/task.mjs +16 -0
  93. package/dist/cli/_chunks/toml.mjs +4 -0
  94. package/dist/cli/_chunks/yaml.mjs +4 -0
  95. package/dist/cli/index.d.mts +1 -1
  96. package/dist/cli/index.mjs +19 -18
  97. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  98. package/dist/presets/_nitro/runtime/nitro-dev.mjs +42 -33
  99. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  100. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +4 -8
  101. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  102. package/dist/presets/_nitro/runtime/service-worker.mjs +14 -11
  103. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  104. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +6 -5
  105. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  106. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  107. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  108. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -27
  109. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +7 -7
  110. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  111. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  112. package/dist/presets/azure/runtime/azure-swa.mjs +22 -21
  113. package/dist/presets/bun/runtime/bun.d.mts +1 -0
  114. package/dist/presets/bun/runtime/bun.mjs +18 -17
  115. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  116. package/dist/presets/cloudflare/runtime/_module-handler.mjs +78 -87
  117. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  118. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +53 -58
  119. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  120. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +12 -14
  121. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  122. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -39
  123. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  124. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +86 -76
  125. package/dist/presets/deno/runtime/deno-deploy.d.mts +1 -0
  126. package/dist/presets/deno/runtime/deno-deploy.mjs +12 -11
  127. package/dist/presets/deno/runtime/deno-server.d.mts +2 -1
  128. package/dist/presets/deno/runtime/deno-server.mjs +31 -39
  129. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  130. package/dist/presets/netlify/runtime/netlify-edge.mjs +14 -11
  131. package/dist/presets/netlify/runtime/netlify.mjs +11 -17
  132. package/dist/presets/node/runtime/node-cluster.mjs +49 -48
  133. package/dist/presets/node/runtime/node-middleware.d.mts +3 -2
  134. package/dist/presets/node/runtime/node-middleware.mjs +7 -6
  135. package/dist/presets/node/runtime/node-server.mjs +33 -23
  136. package/dist/presets/standard/runtime/server.d.mts +1 -3
  137. package/dist/presets/standard/runtime/server.mjs +1 -3
  138. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  139. package/dist/presets/stormkit/runtime/stormkit.mjs +20 -20
  140. package/dist/presets/vercel/runtime/vercel.d.mts +3 -3
  141. package/dist/presets/vercel/runtime/vercel.mjs +15 -14
  142. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  143. package/dist/presets/winterjs/runtime/winterjs.mjs +72 -68
  144. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  145. package/dist/runtime/index.d.mts +12 -1
  146. package/dist/runtime/index.mjs +12 -7
  147. package/dist/runtime/internal/app.mjs +175 -162
  148. package/dist/runtime/internal/cache.d.mts +10 -4
  149. package/dist/runtime/internal/cache.mjs +247 -216
  150. package/dist/runtime/internal/context.d.mts +9 -9
  151. package/dist/runtime/internal/context.mjs +17 -10
  152. package/dist/runtime/internal/database.mjs +8 -10
  153. package/dist/runtime/internal/error/dev.d.mts +5 -4
  154. package/dist/runtime/internal/error/dev.mjs +106 -105
  155. package/dist/runtime/internal/error/prod.d.mts +2 -2
  156. package/dist/runtime/internal/error/prod.mjs +48 -52
  157. package/dist/runtime/internal/error/utils.d.mts +4 -4
  158. package/dist/runtime/internal/error/utils.mjs +1 -1
  159. package/dist/runtime/internal/index.d.mts +2 -0
  160. package/dist/runtime/internal/index.mjs +2 -0
  161. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +14 -14
  162. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +248 -209
  163. package/dist/runtime/internal/meta.d.mts +1 -1
  164. package/dist/runtime/internal/meta.mjs +1 -1
  165. package/dist/runtime/internal/plugin.d.mts +2 -2
  166. package/dist/runtime/internal/plugin.mjs +1 -1
  167. package/dist/runtime/internal/renderer.mjs +39 -31
  168. package/dist/runtime/internal/route-rules.d.mts +8 -8
  169. package/dist/runtime/internal/route-rules.mjs +53 -51
  170. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -30
  171. package/dist/runtime/internal/routes/dev-tasks.mjs +15 -17
  172. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  173. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  174. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  175. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  176. package/dist/runtime/internal/routes/renderer-template.dev.mjs +10 -17
  177. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  178. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  179. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  180. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  181. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  182. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  183. package/dist/runtime/internal/runtime-config.mjs +40 -35
  184. package/dist/runtime/internal/shutdown.d.mts +2 -7
  185. package/dist/runtime/internal/shutdown.mjs +30 -29
  186. package/dist/runtime/internal/static.mjs +63 -74
  187. package/dist/runtime/internal/storage.mjs +2 -2
  188. package/dist/runtime/internal/task.d.mts +6 -6
  189. package/dist/runtime/internal/task.mjs +56 -59
  190. package/dist/runtime/internal/utils.d.mts +1 -1
  191. package/dist/runtime/internal/utils.mjs +4 -10
  192. package/dist/types/index.d.mts +2566 -3851
  193. package/dist/types/index.mjs +1 -1
  194. package/dist/vite.d.mts +61 -51
  195. package/dist/vite.mjs +55 -132
  196. package/package.json +10 -10
  197. package/dist/_build/build.mjs +0 -368
  198. package/dist/_build/build2.mjs +0 -556
  199. package/dist/_build/info.mjs +0 -1002
  200. package/dist/_build/prepare.mjs +0 -1511
  201. package/dist/_build/snapshot.mjs +0 -185
  202. package/dist/_build/vite.mjs +0 -959
  203. package/dist/_build/vite2.mjs +0 -149
  204. package/dist/_chunks/_deps/@jridgewell/gen-mapping.mjs +0 -189
  205. package/dist/_chunks/_deps/@jridgewell/remapping.mjs +0 -137
  206. package/dist/_chunks/_deps/@jridgewell/resolve-uri.mjs +0 -231
  207. package/dist/_chunks/_deps/@jridgewell/sourcemap-codec.mjs +0 -173
  208. package/dist/_chunks/_deps/@jridgewell/trace-mapping.mjs +0 -170
  209. package/dist/_chunks/_deps/@rollup/plugin-alias.mjs +0 -89
  210. package/dist/_chunks/_deps/@rollup/plugin-commonjs.mjs +0 -2376
  211. package/dist/_chunks/_deps/@rollup/plugin-inject.mjs +0 -212
  212. package/dist/_chunks/_deps/@rollup/plugin-json.mjs +0 -37
  213. package/dist/_chunks/_deps/@rollup/plugin-node-resolve.mjs +0 -1386
  214. package/dist/_chunks/_deps/@rollup/plugin-replace.mjs +0 -133
  215. package/dist/_chunks/_deps/@rollup/pluginutils.mjs +0 -346
  216. package/dist/_chunks/_deps/acorn.mjs +0 -6225
  217. package/dist/_chunks/_deps/c12.mjs +0 -510
  218. package/dist/_chunks/_deps/chokidar.mjs +0 -1428
  219. package/dist/_chunks/_deps/citty.mjs +0 -460
  220. package/dist/_chunks/_deps/commondir.mjs +0 -77
  221. package/dist/_chunks/_deps/compatx.mjs +0 -76
  222. package/dist/_chunks/_deps/confbox.mjs +0 -300
  223. package/dist/_chunks/_deps/debug.mjs +0 -885
  224. package/dist/_chunks/_deps/deepmerge.mjs +0 -147
  225. package/dist/_chunks/_deps/depd.mjs +0 -550
  226. package/dist/_chunks/_deps/dot-prop.mjs +0 -282
  227. package/dist/_chunks/_deps/dotenv.mjs +0 -555
  228. package/dist/_chunks/_deps/duplexer.mjs +0 -1
  229. package/dist/_chunks/_deps/ee-first.mjs +0 -104
  230. package/dist/_chunks/_deps/encodeurl.mjs +0 -69
  231. package/dist/_chunks/_deps/escape-html.mjs +0 -87
  232. package/dist/_chunks/_deps/escape-string-regexp.mjs +0 -13
  233. package/dist/_chunks/_deps/estree-walker.mjs +0 -433
  234. package/dist/_chunks/_deps/etag.mjs +0 -147
  235. package/dist/_chunks/_deps/exsolve.mjs +0 -1416
  236. package/dist/_chunks/_deps/fresh.mjs +0 -145
  237. package/dist/_chunks/_deps/function-bind.mjs +0 -106
  238. package/dist/_chunks/_deps/giget.mjs +0 -451
  239. package/dist/_chunks/_deps/gzip-size.mjs +0 -19
  240. package/dist/_chunks/_deps/hasown.mjs +0 -19
  241. package/dist/_chunks/_deps/http-errors.mjs +0 -307
  242. package/dist/_chunks/_deps/httpxy.mjs +0 -580
  243. package/dist/_chunks/_deps/inherits.mjs +0 -57
  244. package/dist/_chunks/_deps/is-core-module.mjs +0 -596
  245. package/dist/_chunks/_deps/is-module.mjs +0 -25
  246. package/dist/_chunks/_deps/is-reference.mjs +0 -31
  247. package/dist/_chunks/_deps/klona.mjs +0 -137
  248. package/dist/_chunks/_deps/knitwork.mjs +0 -172
  249. package/dist/_chunks/_deps/local-pkg.mjs +0 -163
  250. package/dist/_chunks/_deps/mime-db.mjs +0 -11685
  251. package/dist/_chunks/_deps/mime-types.mjs +0 -287
  252. package/dist/_chunks/_deps/mime.mjs +0 -1172
  253. package/dist/_chunks/_deps/mlly.mjs +0 -2413
  254. package/dist/_chunks/_deps/ms.mjs +0 -172
  255. package/dist/_chunks/_deps/node-fetch-native.mjs +0 -3
  256. package/dist/_chunks/_deps/nypm.mjs +0 -219
  257. package/dist/_chunks/_deps/on-finished.mjs +0 -246
  258. package/dist/_chunks/_deps/parseurl.mjs +0 -168
  259. package/dist/_chunks/_deps/path-parse.mjs +0 -85
  260. package/dist/_chunks/_deps/pathe.mjs +0 -251
  261. package/dist/_chunks/_deps/perfect-debounce.mjs +0 -88
  262. package/dist/_chunks/_deps/picomatch.mjs +0 -2144
  263. package/dist/_chunks/_deps/pkg-types.mjs +0 -247
  264. package/dist/_chunks/_deps/pretty-bytes.mjs +0 -180
  265. package/dist/_chunks/_deps/quansync.mjs +0 -99
  266. package/dist/_chunks/_deps/range-parser.mjs +0 -171
  267. package/dist/_chunks/_deps/rc9.mjs +0 -219
  268. package/dist/_chunks/_deps/readdirp.mjs +0 -245
  269. package/dist/_chunks/_deps/resolve.mjs +0 -1260
  270. package/dist/_chunks/_deps/send.mjs +0 -1022
  271. package/dist/_chunks/_deps/serve-static.mjs +0 -228
  272. package/dist/_chunks/_deps/setprototypeof.mjs +0 -26
  273. package/dist/_chunks/_deps/statuses.mjs +0 -457
  274. package/dist/_chunks/_deps/std-env.mjs +0 -3
  275. package/dist/_chunks/_deps/strip-literal.mjs +0 -67
  276. package/dist/_chunks/_deps/supports-color.mjs +0 -44
  277. package/dist/_chunks/_deps/tinyexec.mjs +0 -552
  278. package/dist/_chunks/_deps/toidentifier.mjs +0 -41
  279. package/dist/_chunks/_deps/ultrahtml.mjs +0 -3
  280. package/dist/_chunks/_deps/unimport.mjs +0 -2267
  281. package/dist/_chunks/_deps/unplugin-utils.mjs +0 -65
  282. package/dist/_chunks/_deps/unplugin.mjs +0 -1294
  283. package/dist/_chunks/_deps/untyped.mjs +0 -375
  284. package/dist/_chunks/_deps/unwasm.mjs +0 -6959
  285. package/dist/_chunks/_deps/webpack-virtual-modules.mjs +0 -360
  286. package/dist/_chunks/_presets/_all.mjs +0 -59
  287. package/dist/_chunks/_presets/_nitro.mjs +0 -74
  288. package/dist/_chunks/_presets/_resolve.mjs +0 -64
  289. package/dist/_chunks/_presets/_static.mjs +0 -69
  290. package/dist/_chunks/_presets/_types.mjs +0 -3
  291. package/dist/_chunks/_presets/_utils.mjs +0 -31
  292. package/dist/_chunks/_presets/alwaysdata.mjs +0 -17
  293. package/dist/_chunks/_presets/aws-amplify.mjs +0 -111
  294. package/dist/_chunks/_presets/aws-lambda.mjs +0 -23
  295. package/dist/_chunks/_presets/azure.mjs +0 -162
  296. package/dist/_chunks/_presets/bun.mjs +0 -19
  297. package/dist/_chunks/_presets/cleavr.mjs +0 -15
  298. package/dist/_chunks/_presets/cloudflare.mjs +0 -608
  299. package/dist/_chunks/_presets/deno.mjs +0 -196
  300. package/dist/_chunks/_presets/digitalocean.mjs +0 -14
  301. package/dist/_chunks/_presets/firebase.mjs +0 -47
  302. package/dist/_chunks/_presets/flightcontrol.mjs +0 -14
  303. package/dist/_chunks/_presets/genezio.mjs +0 -13
  304. package/dist/_chunks/_presets/heroku.mjs +0 -14
  305. package/dist/_chunks/_presets/iis.mjs +0 -194
  306. package/dist/_chunks/_presets/index.mjs +0 -62
  307. package/dist/_chunks/_presets/koyeb.mjs +0 -14
  308. package/dist/_chunks/_presets/netlify.mjs +0 -241
  309. package/dist/_chunks/_presets/node.mjs +0 -54
  310. package/dist/_chunks/_presets/platform.mjs +0 -14
  311. package/dist/_chunks/_presets/render.mjs +0 -14
  312. package/dist/_chunks/_presets/standard.mjs +0 -23
  313. package/dist/_chunks/_presets/stormkit.mjs +0 -18
  314. package/dist/_chunks/_presets/vercel.mjs +0 -375
  315. package/dist/_chunks/_presets/winterjs.mjs +0 -22
  316. package/dist/_chunks/_presets/zeabur.mjs +0 -69
  317. package/dist/_chunks/_presets/zerops.mjs +0 -27
  318. package/dist/_chunks/app.mjs +0 -600
  319. package/dist/_chunks/builder.mjs +0 -648
  320. package/dist/_chunks/server.mjs +0 -256
  321. package/dist/_cli/build.mjs +0 -49
  322. package/dist/_cli/common.mjs +0 -13
  323. package/dist/_cli/dev.mjs +0 -121
  324. package/dist/_cli/index.mjs +0 -16
  325. package/dist/_cli/list.mjs +0 -33
  326. package/dist/_cli/prepare.mjs +0 -23
  327. package/dist/_cli/run.mjs +0 -59
  328. package/dist/presets/cloudflare/runtime/shims/workers.dev.d.mts +0 -21
  329. package/dist/runtime/internal/empty.d.mts +0 -0
  330. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  331. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  332. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  333. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  334. /package/lib/{indexd.mts → index.d.mts} +0 -0
@@ -1,959 +0,0 @@
1
- import { e as copyPublicAssets, s as scanHandlers, h as prettyPath, p as prepare, c as createNitro } from './prepare.mjs';
2
- import consola from 'consola';
3
- import { existsSync, watch as watch$1 } from 'node:fs';
4
- import { defu } from 'defu';
5
- import 'ufo';
6
- import { runtimeDir, runtimeDependencies } from 'nitro/runtime/meta';
7
- import { r as resolveModulePath } from '../_chunks/_deps/exsolve.mjs';
8
- import { readFile, rm, mkdir, writeFile, readlink } from 'node:fs/promises';
9
- import 'node:zlib';
10
- import '../_chunks/_deps/mime.mjs';
11
- import 'node:worker_threads';
12
- import 'h3';
13
- import 'undici';
14
- import 'nitro/meta';
15
- import { NodeRequest, sendNodeResponse } from 'srvx/node';
16
- import { a as NodeDevWorker, N as NitroDevApp } from '../_chunks/app.mjs';
17
- import 'node:url';
18
- import { colors } from 'consola/utils';
19
- import 'ofetch';
20
- import { s as sanitizeFilePath } from '../_chunks/_deps/mlly.mjs';
21
- import { a as alias } from '../_chunks/_deps/@rollup/plugin-alias.mjs';
22
- import { i as inject } from '../_chunks/_deps/@rollup/plugin-inject.mjs';
23
- import { b as baseBuildConfig, a as baseBuildPlugins, r as replace, w as writeBuildInfo } from './info.mjs';
24
- import { r as resolve, d as dirname, n as normalize, b as basename, a as relative, j as join, i as isAbsolute } from '../_chunks/_deps/pathe.mjs';
25
- import { f as formatCompatibilityDate } from '../_chunks/_deps/compatx.mjs';
26
- import 'hookable';
27
- import 'jiti';
28
- import 'unstorage';
29
- import 'ohash';
30
- import { a, T } from '../_chunks/_deps/std-env.mjs';
31
- import '../_chunks/_deps/serve-static.mjs';
32
- import { resolve as resolve$1, join as join$1 } from 'node:path';
33
- import 'youch-core';
34
- import 'youch';
35
- import 'source-map';
36
- import 'srvx';
37
- import { DevEnvironment } from 'vite';
38
- import { watch } from '../_chunks/_deps/chokidar.mjs';
39
- import { d as debounce } from '../_chunks/_deps/perfect-debounce.mjs';
40
- import { getRandomPort } from 'get-port-please';
41
- import { spawn } from 'node:child_process';
42
- import { c as createProxyServer } from '../_chunks/_deps/httpxy.mjs';
43
- import { a as assetsPlugin } from '../_chunks/_deps/@pi0/vite-plugin-fullstack.mjs';
44
-
45
- const getViteRollupConfig = (ctx) => {
46
- const nitro = ctx.nitro;
47
- const base = baseBuildConfig(nitro);
48
- const chunkNamePrefixes = [
49
- [nitro.options.buildDir, "build"],
50
- [base.buildServerDir, "app"],
51
- [runtimeDir, "nitro"],
52
- [base.presetsDir, "nitro"],
53
- ["\0nitro-wasm:", "wasm"],
54
- ["\0", "virtual"]
55
- ];
56
- function getChunkGroup(id) {
57
- if (id.startsWith(runtimeDir) || id.startsWith(base.presetsDir)) {
58
- return "nitro";
59
- }
60
- }
61
- let config = {
62
- input: nitro.options.entry,
63
- external: [...base.env.external],
64
- plugins: [
65
- ctx.pluginConfig.experimental?.virtualBundle && virtualBundlePlugin(ctx._serviceBundles),
66
- ...baseBuildPlugins(nitro, base),
67
- alias({ entries: base.aliases }),
68
- replace({
69
- delimiters: base.replaceDelimiters,
70
- preventAssignment: true,
71
- values: base.replacements
72
- }),
73
- inject(base.env.inject)
74
- ].filter(Boolean),
75
- treeshake: {
76
- moduleSideEffects(id) {
77
- const normalizedId = normalize(id);
78
- const idWithoutNodeModules = normalizedId.split("node_modules/").pop();
79
- if (!idWithoutNodeModules) {
80
- return false;
81
- }
82
- if (normalizedId.startsWith(runtimeDir) || idWithoutNodeModules.startsWith(runtimeDir)) {
83
- return true;
84
- }
85
- return nitro.options.moduleSideEffects.some(
86
- (m) => normalizedId.startsWith(m) || idWithoutNodeModules.startsWith(m)
87
- );
88
- }
89
- },
90
- output: {
91
- dir: nitro.options.output.serverDir,
92
- entryFileNames: "index.mjs",
93
- chunkFileNames(chunk) {
94
- const id = normalize(chunk.moduleIds.at(-1) || "");
95
- for (const [dir, name] of chunkNamePrefixes) {
96
- if (id.startsWith(dir)) {
97
- return `chunks/${name}/[name].mjs`;
98
- }
99
- }
100
- const routeHandler = nitro.options.handlers.find(
101
- (h) => id.startsWith(h.handler)
102
- ) || nitro.scannedHandlers.find((h) => id.startsWith(h.handler));
103
- if (routeHandler?.route) {
104
- const path = routeHandler.route.replace(/:([^/]+)/g, "_$1").replace(/\/[^/]+$/g, "") || "/";
105
- return `chunks/routes/${path}/[name].mjs`.replace(/\/+/g, "/");
106
- }
107
- const taskHandler = Object.entries(nitro.options.tasks).find(
108
- ([_, task]) => task.handler === id
109
- );
110
- if (taskHandler) {
111
- return `chunks/tasks/[name].mjs`;
112
- }
113
- return `chunks/_/[name].mjs`;
114
- },
115
- manualChunks(id) {
116
- return getChunkGroup(id);
117
- },
118
- inlineDynamicImports: nitro.options.inlineDynamicImports,
119
- format: "esm",
120
- exports: "auto",
121
- intro: "",
122
- outro: "",
123
- generatedCode: {
124
- constBindings: true
125
- },
126
- sanitizeFileName: sanitizeFilePath,
127
- sourcemapExcludeSources: true,
128
- sourcemapIgnoreList(relativePath) {
129
- return relativePath.includes("node_modules");
130
- }
131
- }
132
- };
133
- config = defu(nitro.options.rollupConfig, config);
134
- if (config.output.inlineDynamicImports) {
135
- delete config.output.manualChunks;
136
- }
137
- return { config, base };
138
- };
139
- function virtualBundlePlugin(bundles) {
140
- let _modules = null;
141
- const getModules = () => {
142
- if (_modules) {
143
- return _modules;
144
- }
145
- _modules = /* @__PURE__ */ new Map();
146
- for (const bundle of Object.values(bundles)) {
147
- for (const [fileName, content] of Object.entries(bundle)) {
148
- if (content.type === "chunk") {
149
- const virtualModule = {
150
- code: content.code,
151
- map: null
152
- };
153
- const maybeMap = bundle[`${fileName}.map`];
154
- if (maybeMap && maybeMap.type === "asset") {
155
- virtualModule.map = maybeMap.source;
156
- }
157
- _modules.set(fileName, virtualModule);
158
- _modules.set(resolve(fileName), virtualModule);
159
- }
160
- }
161
- }
162
- return _modules;
163
- };
164
- return {
165
- name: "virtual-bundle",
166
- resolveId(id, importer) {
167
- const modules = getModules();
168
- if (modules.has(id)) {
169
- return resolve(id);
170
- }
171
- if (importer) {
172
- const resolved = resolve(dirname(importer), id);
173
- if (modules.has(resolved)) {
174
- return resolved;
175
- }
176
- }
177
- return null;
178
- },
179
- load(id) {
180
- const modules = getModules();
181
- const m = modules.get(id);
182
- if (!m) {
183
- return null;
184
- }
185
- return m;
186
- }
187
- };
188
- }
189
-
190
- const BuilderNames = {
191
- nitro: colors.magenta("Nitro"),
192
- client: colors.green("Client"),
193
- ssr: colors.blue("SSR")
194
- };
195
- async function buildEnvironments(ctx, builder) {
196
- const nitro = ctx.nitro;
197
- for (const [envName, env] of Object.entries(builder.environments)) {
198
- const fmtName = BuilderNames[envName] || (envName.length <= 3 ? envName.toUpperCase() : envName[0].toUpperCase() + envName.slice(1));
199
- if (envName === "nitro" || !env.config.build.rollupOptions.input || env.isBuilt) {
200
- if (!["nitro", "ssr", "client"].includes(envName)) {
201
- nitro.logger.info(
202
- env.isBuilt ? `Skipping ${fmtName} (already built)` : `Skipping ${fmtName} (no input defined)`
203
- );
204
- }
205
- continue;
206
- }
207
- if (!a && !T) console.log();
208
- nitro.logger.start(`Building [${fmtName}]`);
209
- await builder.build(env);
210
- }
211
- const nitroOptions = ctx.nitro.options;
212
- const clientInput = builder.environments.client?.config?.build?.rollupOptions?.input;
213
- if (nitroOptions.renderer?.template && nitroOptions.renderer?.template === clientInput) {
214
- const outputPath = resolve(
215
- nitroOptions.output.publicDir,
216
- basename(clientInput)
217
- );
218
- if (existsSync(outputPath)) {
219
- const html = await readFile(outputPath, "utf8").then(
220
- (r) => r.replace(
221
- "<!--ssr-outlet-->",
222
- `{{{ fetch($REQUEST, { viteEnv: "ssr" }) }}}`
223
- )
224
- );
225
- await rm(outputPath);
226
- const tmp = resolve(nitroOptions.buildDir, "vite/index.html");
227
- await mkdir(dirname(tmp), { recursive: true });
228
- await writeFile(tmp, html, "utf8");
229
- nitroOptions.renderer.template = tmp;
230
- }
231
- }
232
- await builder.writeAssetsManifest?.();
233
- if (!a && !T) console.log();
234
- const buildInfo = [
235
- ["preset", nitro.options.preset],
236
- ["compatibility", formatCompatibilityDate(nitro.options.compatibilityDate)]
237
- ].filter((e) => e[1]);
238
- nitro.logger.start(
239
- `Building [${BuilderNames.nitro}] ${colors.dim(`(${buildInfo.map(([k, v]) => `${k}: \`${v}\``).join(", ")})`)}`
240
- );
241
- await copyPublicAssets(nitro);
242
- await builder.build(builder.environments.nitro);
243
- await nitro.close();
244
- await nitro.hooks.callHook("compiled", nitro);
245
- await writeBuildInfo(nitro);
246
- const rOutput = relative(process.cwd(), nitro.options.output.dir);
247
- const rewriteRelativePaths = (input) => {
248
- return input.replace(/([\s:])\.\/(\S*)/g, `$1${rOutput}/$2`);
249
- };
250
- if (!a && !T) console.log();
251
- if (nitro.options.commands.preview) {
252
- nitro.logger.success(
253
- `You can preview this build using \`${rewriteRelativePaths(
254
- nitro.options.commands.preview
255
- )}\``
256
- );
257
- }
258
- if (nitro.options.commands.deploy) {
259
- nitro.logger.success(
260
- `You can deploy this build using \`${rewriteRelativePaths(
261
- nitro.options.commands.deploy
262
- )}\``
263
- );
264
- }
265
- }
266
- function prodSetup(ctx) {
267
- const services = ctx.pluginConfig.services || {};
268
- const serviceNames = Object.keys(services);
269
- const serviceEntries = serviceNames.map((name) => {
270
- let entry;
271
- if (ctx.pluginConfig.experimental?.virtualBundle) {
272
- entry = ctx._entryPoints[name];
273
- } else {
274
- entry = resolve(
275
- ctx.nitro.options.buildDir,
276
- "vite/services",
277
- name,
278
- ctx._entryPoints[name]
279
- );
280
- }
281
- return [name, entry];
282
- });
283
- return (
284
- /* js */
285
- `
286
- import { setupVite } from "${resolve(runtimeDir, "internal/vite/prod-setup.mjs")}";
287
-
288
- const manifest = ${JSON.stringify(ctx._manifest || {})};
289
-
290
- function lazyService(loader) {
291
- let promise, mod
292
- return {
293
- fetch(req) {
294
- if (mod) { return mod.fetch(req) }
295
- if (!promise) {
296
- promise = loader().then(_mod => (mod = _mod.default || _mod))
297
- }
298
- return promise.then(mod => mod.fetch(req))
299
- }
300
- }
301
- }
302
-
303
- const services = {
304
- ${serviceEntries.map(
305
- ([name, entry]) => (
306
- /* js */
307
- `[${JSON.stringify(name)}]: lazyService(() => import(${JSON.stringify(entry)}))`
308
- )
309
- ).join(",\n")}
310
- };
311
-
312
- setupVite({ manifest, services });
313
- `
314
- );
315
- }
316
-
317
- function createFetchableDevEnvironment(name, config, devServer, entry) {
318
- const transport = createTransport(name, devServer);
319
- const context = { hot: true, transport };
320
- return new FetchableDevEnvironment(name, config, context, devServer, entry);
321
- }
322
- class FetchableDevEnvironment extends DevEnvironment {
323
- devServer;
324
- constructor(name, config, context, devServer, entry) {
325
- super(name, config, context);
326
- this.devServer = devServer;
327
- this.devServer.sendMessage({
328
- type: "custom",
329
- event: "nitro:vite-env",
330
- data: { name, entry }
331
- });
332
- }
333
- async dispatchFetch(request) {
334
- return this.devServer.fetch(request);
335
- }
336
- async init(...args) {
337
- await this.devServer.init?.();
338
- return super.init(...args);
339
- }
340
- }
341
- function createTransport(name, hooks) {
342
- const listeners = /* @__PURE__ */ new WeakMap();
343
- return {
344
- send: (data) => hooks.sendMessage({ ...data, viteEnv: name }),
345
- on: (event, handler) => {
346
- if (event === "connection") return;
347
- const listener = (value) => {
348
- if (value?.type === "custom" && value.event === event && value.viteEnv === name) {
349
- handler(value.data, {
350
- send: (payload) => hooks.sendMessage({ ...payload, viteEnv: name })
351
- });
352
- }
353
- };
354
- listeners.set(handler, listener);
355
- hooks.onMessage(listener);
356
- },
357
- off: (event, handler) => {
358
- if (event === "connection") return;
359
- const listener = listeners.get(handler);
360
- if (listener) {
361
- hooks.offMessage(listener);
362
- listeners.delete(handler);
363
- }
364
- }
365
- };
366
- }
367
- async function configureViteDevServer(ctx, server) {
368
- const nitro = ctx.nitro;
369
- const nitroEnv = server.environments.nitro;
370
- const nitroConfigFile = nitro.options._c12.configFile;
371
- if (nitroConfigFile) {
372
- server.config.configFileDependencies.push(nitroConfigFile);
373
- }
374
- const reload = debounce(async () => {
375
- await scanHandlers(nitro);
376
- nitro.routing.sync();
377
- nitroEnv.moduleGraph.invalidateAll();
378
- nitroEnv.hot.send({ type: "full-reload" });
379
- });
380
- const scanDirs = nitro.options.scanDirs.flatMap((dir) => [
381
- join(dir, nitro.options.apiDir || "api"),
382
- join(dir, nitro.options.routesDir || "routes"),
383
- join(dir, "middleware"),
384
- join(dir, "plugins"),
385
- join(dir, "modules")
386
- ]);
387
- const watchReloadEvents = /* @__PURE__ */ new Set(["add", "addDir", "unlink", "unlinkDir"]);
388
- const scanDirsWatcher = watch(scanDirs, {
389
- ignoreInitial: true
390
- }).on("all", (event, path, stat) => {
391
- if (watchReloadEvents.has(event)) {
392
- reload();
393
- }
394
- });
395
- const srcDirWatcher = watch$1(
396
- nitro.options.srcDir,
397
- { persistent: false },
398
- (_event, filename) => {
399
- if (filename && /^server\.[mc]?[jt]sx?$/.test(filename)) {
400
- reload();
401
- }
402
- }
403
- );
404
- nitro.hooks.hook("close", () => {
405
- scanDirsWatcher.close();
406
- srcDirWatcher.close();
407
- });
408
- const hostIPC = {
409
- async transformHTML(html) {
410
- return server.transformIndexHtml("/", html).then(
411
- (r) => r.replace(
412
- "<!--ssr-outlet-->",
413
- `{{{ fetch($REQUEST, { viteEnv: "ssr" }) }}}`
414
- )
415
- );
416
- }
417
- };
418
- nitroEnv.devServer.onMessage(async (payload) => {
419
- if (payload.type === "custom" && payload.event === "nitro:vite-invoke") {
420
- const methodName = payload.data.name;
421
- const res = await hostIPC[methodName](payload.data.data).then((data) => ({ data })).catch((error) => ({ error }));
422
- nitroEnv.devServer.sendMessage({
423
- type: "custom",
424
- event: "nitro:vite-invoke-response",
425
- data: { id: payload.data.id, data: res }
426
- });
427
- }
428
- });
429
- const nitroDevMiddleware = async (nodeReq, nodeRes, next) => {
430
- if (/^\/@(?:vite|fs|id)\//.test(nodeReq.url) || nodeReq._nitroHandled) {
431
- return next();
432
- }
433
- nodeReq._nitroHandled = true;
434
- const req = new NodeRequest({ req: nodeReq, res: nodeRes });
435
- const devAppRes = await ctx.devApp.fetch(req);
436
- if (nodeRes.writableEnded || nodeRes.headersSent) {
437
- return;
438
- }
439
- if (devAppRes.status !== 404) {
440
- return await sendNodeResponse(nodeRes, devAppRes);
441
- }
442
- const envRes = await nitroEnv.dispatchFetch(req);
443
- if (nodeRes.writableEnded || nodeRes.headersSent) {
444
- return;
445
- }
446
- if (envRes.status !== 404) {
447
- return await sendNodeResponse(nodeRes, envRes);
448
- }
449
- return next();
450
- };
451
- server.middlewares.use(function nitroDevMiddlewarePre(req, res, next) {
452
- const fetchDest = req.headers["sec-fetch-dest"];
453
- if (fetchDest) {
454
- res.setHeader("vary", "sec-fetch-dest");
455
- }
456
- const ext = (req.url || "").match(/\.([a-z0-9]+)(?:[?#]|$)/i)?.[1] || "";
457
- if (!ext && (!fetchDest || /^(document|iframe|frame|empty)$/.test(fetchDest))) {
458
- nitroDevMiddleware(req, res, next);
459
- } else {
460
- next();
461
- }
462
- });
463
- return () => {
464
- server.middlewares.use(nitroDevMiddleware);
465
- };
466
- }
467
-
468
- function createDevWorker(ctx) {
469
- return new NodeDevWorker({
470
- name: "nitro-vite",
471
- entry: resolve$1(runtimeDir, "internal/vite/dev-worker.mjs"),
472
- hooks: {},
473
- data: {
474
- server: true,
475
- globals: {
476
- __NITRO_RUNTIME_CONFIG__: ctx.nitro.options.runtimeConfig
477
- }
478
- }
479
- });
480
- }
481
- function createNitroEnvironment(ctx) {
482
- return {
483
- consumer: "server",
484
- build: {
485
- rollupOptions: ctx.rollupConfig.config,
486
- minify: ctx.nitro.options.minify,
487
- emptyOutDir: false,
488
- commonjsOptions: {
489
- strictRequires: "auto",
490
- // TODO: set to true (default) in v3
491
- esmExternals: (id) => !id.startsWith("unenv/"),
492
- requireReturnsDefault: "auto",
493
- ...ctx.nitro.options.commonJS
494
- }
495
- },
496
- resolve: {
497
- noExternal: ctx.nitro.options.dev ? (
498
- // Workaround for dev: external dependencies are not resolvable with respect to nodeModulePaths
499
- new RegExp(runtimeDependencies.join("|"))
500
- ) : true,
501
- conditions: ctx.nitro.options.exportConditions,
502
- externalConditions: ctx.nitro.options.exportConditions
503
- },
504
- dev: {
505
- createEnvironment: (envName, envConfig) => createFetchableDevEnvironment(
506
- envName,
507
- envConfig,
508
- ctx.devWorker,
509
- resolve$1(runtimeDir, "internal/vite/dev-entry.mjs")
510
- )
511
- }
512
- };
513
- }
514
- function createServiceEnvironment(ctx, name, serviceConfig) {
515
- return {
516
- consumer: "server",
517
- build: {
518
- rollupOptions: { input: serviceConfig.entry },
519
- minify: ctx.nitro.options.minify,
520
- outDir: join$1(ctx.nitro.options.buildDir, "vite", "services", name),
521
- emptyOutDir: true
522
- },
523
- resolve: {
524
- conditions: ctx.nitro.options.exportConditions,
525
- externalConditions: ctx.nitro.options.exportConditions
526
- },
527
- dev: {
528
- createEnvironment: (envName, envConfig) => createFetchableDevEnvironment(
529
- envName,
530
- envConfig,
531
- ctx.devWorker,
532
- tryResolve(serviceConfig.entry)
533
- )
534
- }
535
- };
536
- }
537
- function createServiceEnvironments(ctx) {
538
- return Object.fromEntries(
539
- Object.entries(ctx.pluginConfig.services || {}).map(([name, config]) => [
540
- name,
541
- createServiceEnvironment(ctx, name, config)
542
- ])
543
- );
544
- }
545
- function tryResolve(id) {
546
- if (/^[~#/\0]/.test(id) || isAbsolute(id)) {
547
- return id;
548
- }
549
- const resolved = resolveModulePath(id, {
550
- suffixes: ["", "/index"],
551
- extensions: ["", ".ts", ".mjs", ".cjs", ".js", ".mts", ".cts"],
552
- try: true
553
- });
554
- return resolved || id;
555
- }
556
-
557
- function nitroPreviewPlugin(ctx) {
558
- return {
559
- name: "nitro:preview",
560
- apply: (_config, configEnv) => !!configEnv.isPreview,
561
- config(config) {
562
- return {
563
- preview: {
564
- port: config.preview?.port || 3e3
565
- }
566
- };
567
- },
568
- async configurePreviewServer(server) {
569
- const buildInfoPath = resolve(
570
- server.config.root,
571
- "node_modules/.nitro/last-build",
572
- "nitro.json"
573
- );
574
- if (!existsSync(buildInfoPath)) {
575
- console.warn(
576
- `[nitro] No build found. Please build your project before previewing.`
577
- );
578
- return;
579
- }
580
- const realBuildDir = await readlink("node_modules/.nitro/last-build");
581
- const buildInfo = JSON.parse(
582
- await readFile(buildInfoPath, "utf8")
583
- );
584
- const info = [
585
- ["Build Directory:", prettyPath(realBuildDir)],
586
- ["Date:", buildInfo.date && new Date(buildInfo.date).toLocaleString()],
587
- ["Nitro Version:", buildInfo.versions.nitro],
588
- ["Nitro Preset:", buildInfo.preset],
589
- buildInfo.framework?.name !== "nitro" && [
590
- "Framework:",
591
- buildInfo.framework?.name + (buildInfo.framework?.version ? ` (v${buildInfo.framework.version})` : "")
592
- ]
593
- ].filter((i) => i && i[1]);
594
- consola.box({
595
- title: " [Build Info] ",
596
- message: info.map((i) => `- ${i[0]} ${i[1]}`).join("\n")
597
- });
598
- if (!buildInfo.commands?.preview) {
599
- consola.warn("[nitro] No preview command found for this preset..");
600
- return;
601
- }
602
- const randomPort = await getRandomPort();
603
- consola.info(`Spawning preview server...`);
604
- const [command, ...args] = buildInfo.commands.preview.split(" ");
605
- let child;
606
- consola.info(buildInfo.commands?.preview);
607
- child = spawn(command, args, {
608
- stdio: "inherit",
609
- cwd: realBuildDir,
610
- env: {
611
- ...process.env,
612
- PORT: String(randomPort)
613
- }
614
- });
615
- process.on("exit", () => {
616
- child?.kill();
617
- child = void 0;
618
- });
619
- child.on("exit", (code) => {
620
- if (code && code !== 0) {
621
- consola.error(`[nitro] Preview server exited with code ${code}`);
622
- }
623
- });
624
- const proxy = createProxyServer({
625
- target: `http://localhost:${randomPort}`
626
- });
627
- server.middlewares.use((req, res, next) => {
628
- if (child && !child.killed) {
629
- proxy.web(req, res).catch(next);
630
- } else {
631
- res.end(`Nitro preview server is not running.`);
632
- }
633
- });
634
- }
635
- };
636
- }
637
-
638
- const DEFAULT_EXTENSIONS = [".ts", ".js", ".mts", ".mjs", ".tsx", ".jsx"];
639
- const debug = process.env.NITRO_DEBUG ? (...args) => console.log("[nitro]", ...args) : () => {
640
- };
641
- function nitro(pluginConfig = {}) {
642
- const ctx = createContext(pluginConfig);
643
- return [
644
- nitroInit(ctx),
645
- nitroEnv(ctx),
646
- nitroMain(ctx),
647
- nitroPrepare(ctx),
648
- nitroService(ctx),
649
- nitroPreviewPlugin(),
650
- pluginConfig.experimental?.assetsImport !== false && assetsPlugin({
651
- experimental: {
652
- // See https://github.com/hi-ogawa/vite-plugins/pull/1289
653
- clientBuildFallback: false
654
- }
655
- })
656
- ];
657
- }
658
- function nitroInit(ctx) {
659
- return {
660
- name: "nitro:init",
661
- sharedDuringBuild: true,
662
- apply: (_config, configEnv) => !configEnv.isPreview,
663
- async config(config, configEnv) {
664
- if (!ctx._initialized) {
665
- debug("[init] Initializing nitro");
666
- ctx._initialized = true;
667
- await setupNitroContext(ctx, configEnv, config);
668
- }
669
- },
670
- applyToEnvironment(env) {
671
- if (env.name === "nitro" && ctx.nitro?.options.dev) {
672
- debug("[init] Adding rollup plugins for dev");
673
- return [...ctx.rollupConfig?.config.plugins || []];
674
- }
675
- }
676
- };
677
- }
678
- function nitroEnv(ctx) {
679
- return {
680
- name: "nitro:env",
681
- sharedDuringBuild: true,
682
- apply: (_config, configEnv) => !configEnv.isPreview,
683
- async config(userConfig, _configEnv) {
684
- debug("[env] Extending config (environments)");
685
- const environments = {
686
- ...createServiceEnvironments(ctx),
687
- nitro: createNitroEnvironment(ctx)
688
- };
689
- environments.client = {
690
- consumer: userConfig.environments?.client?.consumer ?? "client",
691
- build: {
692
- rollupOptions: {
693
- input: userConfig.environments?.client?.build?.rollupOptions?.input ?? useNitro(ctx).options.renderer?.template
694
- }
695
- }
696
- };
697
- debug("[env] Environments:", Object.keys(environments).join(", "));
698
- return {
699
- environments
700
- };
701
- },
702
- configEnvironment(name, config) {
703
- if (config.consumer === "client") {
704
- debug(
705
- "[env] Configuring client environment",
706
- name === "client" ? "" : ` (${name})`
707
- );
708
- config.build.emptyOutDir = false;
709
- config.build.outDir = useNitro(ctx).options.output.publicDir;
710
- } else {
711
- if (ctx.pluginConfig.experimental?.virtualBundle && name in (ctx.pluginConfig.services || {})) {
712
- debug("[env] Configuring service environment for virtual:", name);
713
- config.build ??= {};
714
- config.build.write = config.build.write ?? false;
715
- }
716
- }
717
- }
718
- };
719
- }
720
- function nitroMain(ctx) {
721
- return {
722
- name: "nitro:main",
723
- sharedDuringBuild: true,
724
- apply: (_config, configEnv) => !configEnv.isPreview,
725
- async config(userConfig, _configEnv) {
726
- debug("[main] Extending config (appType, resolve, server)");
727
- if (!ctx.rollupConfig) {
728
- throw new Error("Nitro rollup config is not initialized yet.");
729
- }
730
- return {
731
- appType: userConfig.appType || "custom",
732
- resolve: {
733
- // TODO: environment specific aliases not working
734
- // https://github.com/vitejs/vite/pull/17583 (seems not effective)
735
- alias: ctx.rollupConfig.base.aliases
736
- },
737
- builder: {
738
- sharedConfigBuild: true
739
- },
740
- server: {
741
- port: Number.parseInt(process.env.PORT || "") || userConfig.server?.port || useNitro(ctx).options.devServer?.port || 3e3,
742
- // #3673, disable Vite's `cors` by default as Nitro handles all requests
743
- cors: false
744
- }
745
- };
746
- },
747
- configResolved(config) {
748
- if (config.command === "build") {
749
- debug("[main] Inferring caching routes");
750
- for (const env of Object.values(config.environments)) {
751
- if (env.consumer === "client") {
752
- const rule = ctx.nitro.options.routeRules[`/${env.build.assetsDir}/**`] ??= {};
753
- if (!rule.headers?.["cache-control"]) {
754
- rule.headers = {
755
- ...rule.headers,
756
- "cache-control": `public, max-age=31536000, immutable`
757
- };
758
- }
759
- }
760
- }
761
- }
762
- debug("[main] Syncing nitro routes");
763
- ctx.nitro.routing.sync();
764
- },
765
- buildApp: {
766
- order: "post",
767
- handler(builder) {
768
- debug("[main] Building environments");
769
- return buildEnvironments(ctx, builder);
770
- }
771
- },
772
- generateBundle: {
773
- handler(_options, bundle) {
774
- const environment = this.environment;
775
- debug(
776
- "[main] Generating manifest and entry points for environment:",
777
- environment.name
778
- );
779
- const { root } = environment.config;
780
- const services = ctx.pluginConfig.services || {};
781
- const serviceNames = Object.keys(services);
782
- const isRegisteredService = serviceNames.includes(environment.name);
783
- let entryFile;
784
- for (const [_name, file] of Object.entries(bundle)) {
785
- if (file.type === "chunk") {
786
- if (isRegisteredService && file.isEntry) {
787
- if (entryFile === void 0) {
788
- entryFile = file.fileName;
789
- } else {
790
- this.warn(
791
- `Multiple entry points found for service "${environment.name}"`
792
- );
793
- }
794
- }
795
- const filteredModuleIds = file.moduleIds.filter(
796
- (id) => id.startsWith(root)
797
- );
798
- for (const id of filteredModuleIds) {
799
- const originalFile = relative(root, id);
800
- ctx._manifest[originalFile] = { file: file.fileName };
801
- }
802
- }
803
- }
804
- if (isRegisteredService) {
805
- if (entryFile === void 0) {
806
- this.error(
807
- `No entry point found for service "${this.environment.name}".`
808
- );
809
- }
810
- ctx._entryPoints[this.environment.name] = entryFile;
811
- ctx._serviceBundles[this.environment.name] = bundle;
812
- }
813
- }
814
- },
815
- configureServer: (server) => {
816
- debug("[main] Configuring dev server");
817
- return configureViteDevServer(ctx, server);
818
- }
819
- };
820
- }
821
- function nitroPrepare(ctx) {
822
- return {
823
- name: "nitro:prepare",
824
- sharedDuringBuild: true,
825
- applyToEnvironment: (env) => env.name === "nitro",
826
- buildApp: {
827
- // Clean the output directory before any environment is built
828
- order: "pre",
829
- async handler() {
830
- debug("[prepare] Preparing output directory");
831
- const nitro2 = ctx.nitro;
832
- await prepare(nitro2);
833
- }
834
- }
835
- };
836
- }
837
- function nitroService(ctx) {
838
- return {
839
- name: "nitro:service",
840
- enforce: "pre",
841
- sharedDuringBuild: true,
842
- applyToEnvironment: (env) => env.name === "nitro",
843
- resolveId: {
844
- async handler(id) {
845
- if (id === "#nitro-vite-setup") {
846
- return { id, moduleSideEffects: true };
847
- }
848
- if (id === "#nitro-vite-services") {
849
- return id;
850
- }
851
- }
852
- },
853
- load: {
854
- async handler(id) {
855
- if (id === "#nitro-vite-setup") {
856
- return prodSetup(ctx);
857
- }
858
- }
859
- }
860
- };
861
- }
862
- function createContext(pluginConfig) {
863
- return {
864
- pluginConfig,
865
- _entryPoints: {},
866
- _manifest: {},
867
- _serviceBundles: {}
868
- };
869
- }
870
- function useNitro(ctx) {
871
- if (!ctx.nitro) {
872
- throw new Error("Nitro instance is not initialized yet.");
873
- }
874
- return ctx.nitro;
875
- }
876
- async function setupNitroContext(ctx, configEnv, userConfig) {
877
- ctx.nitro = ctx.pluginConfig._nitro || await createNitro({
878
- dev: configEnv.mode === "development",
879
- rootDir: userConfig.root,
880
- ...defu(ctx.pluginConfig.config, userConfig.nitro)
881
- });
882
- if (!ctx.pluginConfig.services?.ssr) {
883
- ctx.pluginConfig.services ??= {};
884
- if (userConfig.environments?.ssr === void 0) {
885
- const ssrEntry = resolveModulePath("./entry-server", {
886
- from: ["", "app", "src"].flatMap(
887
- (d) => ctx.nitro.options.scanDirs.map((s) => join(s, d) + "/")
888
- ),
889
- extensions: DEFAULT_EXTENSIONS,
890
- try: true
891
- });
892
- if (ssrEntry) {
893
- ctx.pluginConfig.services.ssr = { entry: ssrEntry };
894
- ctx.nitro.logger.info(
895
- `Using \`${prettyPath(ssrEntry)}\` as vite ssr entry.`
896
- );
897
- }
898
- } else {
899
- let ssrEntry = getEntry(
900
- userConfig.environments.ssr.build?.rollupOptions?.input
901
- );
902
- if (typeof ssrEntry === "string") {
903
- ssrEntry = resolveModulePath(ssrEntry, {
904
- from: ctx.nitro.options.scanDirs,
905
- extensions: DEFAULT_EXTENSIONS,
906
- suffixes: ["", "/index"],
907
- try: true
908
- }) || ssrEntry;
909
- ctx.pluginConfig.services.ssr = { entry: ssrEntry };
910
- } else {
911
- throw new TypeError(`Invalid input type for SSR entry point.`);
912
- }
913
- }
914
- }
915
- if (!ctx.nitro.options.renderer?.entry && !ctx.nitro.options.renderer?.template && ctx.pluginConfig.services.ssr?.entry) {
916
- ctx.nitro.options.renderer ??= {};
917
- ctx.nitro.options.renderer.entry = resolve(
918
- runtimeDir,
919
- "internal/vite/ssr-renderer"
920
- );
921
- }
922
- const publicDistDir = ctx._publicDistDir = userConfig.build?.outDir || resolve(ctx.nitro.options.buildDir, "vite/public");
923
- ctx.nitro.options.publicAssets.push({
924
- dir: publicDistDir,
925
- maxAge: 0,
926
- baseURL: "/",
927
- fallthrough: true
928
- });
929
- if (!ctx.nitro.options.dev) {
930
- ctx.nitro.options.unenv.push({
931
- meta: { name: "nitro-vite" },
932
- polyfill: ["#nitro-vite-setup"]
933
- });
934
- }
935
- await ctx.nitro.hooks.callHook("build:before", ctx.nitro);
936
- ctx.rollupConfig = await getViteRollupConfig(ctx);
937
- await ctx.nitro.hooks.callHook(
938
- "rollup:before",
939
- ctx.nitro,
940
- ctx.rollupConfig.config
941
- );
942
- if (ctx.nitro.options.dev && !ctx.devWorker) {
943
- ctx.devWorker = createDevWorker(ctx);
944
- }
945
- if (ctx.nitro.options.dev && !ctx.devApp) {
946
- ctx.devApp = new NitroDevApp(ctx.nitro);
947
- }
948
- }
949
- function getEntry(input) {
950
- if (typeof input === "string") {
951
- return input;
952
- } else if (Array.isArray(input) && input.length > 0) {
953
- return input[0];
954
- } else if (input && "index" in input) {
955
- return input.index;
956
- }
957
- }
958
-
959
- export { nitro as n };