nitro 3.0.1-alpha.0 → 3.0.1-alpha.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 (316) hide show
  1. package/README.md +2 -0
  2. package/dist/_build/common.mjs +24940 -0
  3. package/dist/_build/rolldown.mjs +172 -0
  4. package/dist/_build/rollup.mjs +201 -0
  5. package/dist/_build/vite.build.mjs +16 -0
  6. package/dist/_chunks/dev.mjs +707 -0
  7. package/dist/_chunks/nitro.mjs +1191 -0
  8. package/dist/_chunks/nitro2.mjs +101 -0
  9. package/dist/_chunks/utils.mjs +254 -0
  10. package/dist/_common.mjs +45 -0
  11. package/dist/_dev.d.mts +12 -0
  12. package/dist/_libs/c12+giget+readdirp+chokidar.d.mts +214 -0
  13. package/dist/_libs/citty.mjs +363 -0
  14. package/dist/_libs/commondir+is-reference.mjs +1300 -0
  15. package/dist/_libs/compatx.d.mts +47 -0
  16. package/dist/_libs/compatx.mjs +46 -0
  17. package/dist/_libs/confbox.mjs +2509 -0
  18. package/dist/_libs/esbuild.d.mts +20 -0
  19. package/dist/_libs/escape-string-regexp.mjs +8 -0
  20. package/dist/_libs/estree-walker.mjs +187 -0
  21. package/dist/_libs/hasown+resolve+deepmerge.mjs +1972 -0
  22. package/dist/_libs/httpxy.d.mts +79 -0
  23. package/dist/_libs/httpxy.mjs +415 -0
  24. package/dist/_libs/klona.mjs +38 -0
  25. package/dist/_libs/magic-string.d.mts +220 -0
  26. package/dist/_libs/mlly.d.mts +57 -0
  27. package/dist/_libs/nypm+giget+tinyexec.mjs +3603 -0
  28. package/dist/_libs/pkg-types.d.mts +23 -0
  29. package/dist/_libs/plugin-alias.mjs +66 -0
  30. package/dist/_libs/plugin-inject.mjs +135 -0
  31. package/dist/_libs/plugin-json.mjs +36 -0
  32. package/dist/_libs/pluginutils+plugin-commonjs.d.mts +241 -0
  33. package/dist/_libs/pluginutils.mjs +652 -0
  34. package/dist/_libs/rc9+c12+dotenv.mjs +972 -0
  35. package/dist/_libs/readdirp+chokidar.mjs +1611 -0
  36. package/dist/_libs/remapping.mjs +117 -0
  37. package/dist/_libs/resolve-uri+gen-mapping.mjs +448 -0
  38. package/dist/_libs/rou3.d.mts +43 -0
  39. package/dist/_libs/rou3.mjs +322 -0
  40. package/dist/_libs/std-env.d.mts +4 -0
  41. package/dist/_libs/tsconfck.mjs +832 -0
  42. package/dist/_libs/ultrahtml.mjs +138 -0
  43. package/dist/_libs/unimport+unplugin.mjs +1785 -0
  44. package/dist/_libs/unplugin+unimport.d.mts +426 -0
  45. package/dist/_libs/unwasm.d.mts +29 -0
  46. package/dist/_presets.mjs +1802 -0
  47. package/dist/builder.d.mts +63 -0
  48. package/dist/builder.mjs +9 -0
  49. package/dist/cli/_chunks/build.mjs +48 -0
  50. package/dist/cli/_chunks/common.mjs +15 -0
  51. package/dist/cli/_chunks/dev.mjs +62 -0
  52. package/dist/cli/_chunks/list.mjs +27 -0
  53. package/dist/cli/_chunks/prepare.mjs +19 -0
  54. package/dist/cli/_chunks/run.mjs +55 -0
  55. package/dist/cli/_chunks/task.mjs +16 -0
  56. package/dist/cli/index.d.mts +1 -1
  57. package/dist/cli/index.mjs +20 -476
  58. package/dist/node_modules/@poppinss/colors/build/index.js +130 -160
  59. package/dist/node_modules/@poppinss/colors/package.json +20 -18
  60. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
  61. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  62. package/dist/node_modules/@poppinss/exception/build/index.js +36 -55
  63. package/dist/node_modules/@poppinss/exception/package.json +19 -16
  64. package/dist/node_modules/@sindresorhus/is/distribution/index.js +47 -6
  65. package/dist/node_modules/@sindresorhus/is/package.json +1 -1
  66. package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
  67. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  68. package/dist/node_modules/@speed-highlight/core/package.json +8 -4
  69. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  70. package/dist/node_modules/cookie-es/package.json +37 -0
  71. package/dist/node_modules/hookable/dist/index.mjs +244 -268
  72. package/dist/node_modules/hookable/package.json +29 -26
  73. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  74. package/dist/node_modules/rendu/package.json +47 -0
  75. package/dist/node_modules/ufo/dist/index.mjs +16 -9
  76. package/dist/node_modules/ufo/package.json +15 -14
  77. package/dist/node_modules/unctx/package.json +16 -16
  78. package/dist/node_modules/youch/build/{chunk-4XB2BYKC.js → chunk-7QV3D5YX.js} +2 -4
  79. package/dist/node_modules/youch/build/{chunk-PUHGL6HA.js → chunk-AUGPHE32.js} +2 -4
  80. package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-CM7DWJNZ.js} +4 -5
  81. package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-EJH674NB.js} +6 -5
  82. package/dist/node_modules/youch/build/{chunk-EUJBVOYB.js → chunk-OIJ3WD7L.js} +2 -4
  83. package/dist/node_modules/youch/build/{chunk-HFSXRSKS.js → chunk-P36L72PL.js} +5 -3
  84. package/dist/node_modules/youch/build/{chunk-4YEN7HVQ.js → chunk-PE3GG3TN.js} +5 -1
  85. package/dist/node_modules/youch/build/{chunk-PINJDICN.js → chunk-X53OIOJH.js} +2 -4
  86. package/dist/node_modules/youch/build/index.js +22 -15
  87. package/dist/node_modules/youch/build/public/error_info/style.css +1 -0
  88. package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
  89. package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
  90. package/dist/node_modules/youch/build/public/error_stack/style.css +2 -3
  91. package/dist/node_modules/youch/build/public/header/script.js +0 -2
  92. package/dist/node_modules/youch/build/public/layout/script.js +0 -8
  93. package/dist/node_modules/youch/build/public/layout/style.css +4 -0
  94. package/dist/node_modules/youch/package.json +16 -17
  95. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +2 -1
  96. package/dist/presets/_nitro/runtime/nitro-dev.mjs +47 -42
  97. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +3 -3
  98. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +11 -15
  99. package/dist/presets/_nitro/runtime/service-worker.d.mts +2 -1
  100. package/dist/presets/_nitro/runtime/service-worker.mjs +17 -14
  101. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +2 -1
  102. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +8 -7
  103. package/dist/presets/aws-lambda/runtime/_utils.d.mts +3 -13
  104. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  105. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +2 -3
  106. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -29
  107. package/dist/presets/aws-lambda/runtime/aws-lambda.d.mts +1 -1
  108. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +9 -9
  109. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  110. package/dist/presets/azure/runtime/azure-swa.d.mts +3 -3
  111. package/dist/presets/azure/runtime/azure-swa.mjs +25 -23
  112. package/dist/presets/bun/runtime/bun.d.mts +3 -1
  113. package/dist/presets/bun/runtime/bun.mjs +34 -22
  114. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +12 -9
  115. package/dist/presets/cloudflare/runtime/_module-handler.mjs +84 -90
  116. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +7 -15
  117. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +62 -64
  118. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +2 -8
  119. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +15 -18
  120. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +13 -13
  121. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -43
  122. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  123. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  124. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  125. package/dist/presets/deno/runtime/deno-deploy.d.mts +5 -1
  126. package/dist/presets/deno/runtime/deno-deploy.mjs +15 -13
  127. package/dist/presets/deno/runtime/deno-server.d.mts +1 -4
  128. package/dist/presets/deno/runtime/deno-server.mjs +32 -53
  129. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -2
  130. package/dist/presets/netlify/runtime/netlify-edge.mjs +18 -14
  131. package/dist/presets/netlify/runtime/netlify.d.mts +3 -2
  132. package/dist/presets/netlify/runtime/netlify.mjs +15 -19
  133. package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
  134. package/dist/presets/node/runtime/node-cluster.mjs +49 -54
  135. package/dist/presets/node/runtime/node-middleware.d.mts +3 -4
  136. package/dist/presets/node/runtime/node-middleware.mjs +9 -9
  137. package/dist/presets/node/runtime/node-server.d.mts +1 -1
  138. package/dist/presets/node/runtime/node-server.mjs +36 -34
  139. package/dist/presets/standard/runtime/server.d.mts +2 -4
  140. package/dist/presets/standard/runtime/server.mjs +3 -5
  141. package/dist/presets/stormkit/runtime/stormkit.d.mts +14 -14
  142. package/dist/presets/stormkit/runtime/stormkit.mjs +22 -22
  143. package/dist/presets/vercel/runtime/isr.d.mts +2 -0
  144. package/dist/presets/vercel/runtime/isr.mjs +19 -0
  145. package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
  146. package/dist/presets/vercel/runtime/vercel.node.mjs +24 -0
  147. package/dist/presets/vercel/runtime/vercel.web.d.mts +8 -0
  148. package/dist/presets/vercel/runtime/vercel.web.mjs +25 -0
  149. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -1
  150. package/dist/presets/winterjs/runtime/winterjs.mjs +74 -70
  151. package/dist/presets/zeabur/runtime/zeabur.d.mts +2 -2
  152. package/dist/presets/zeabur/runtime/zeabur.mjs +2 -2
  153. package/dist/runtime/app.d.mts +1 -0
  154. package/dist/runtime/app.mjs +1 -0
  155. package/dist/runtime/cache.d.mts +1 -0
  156. package/dist/runtime/cache.mjs +1 -0
  157. package/dist/runtime/config.d.mts +3 -0
  158. package/dist/runtime/config.mjs +4 -0
  159. package/dist/runtime/context.d.mts +1 -0
  160. package/dist/runtime/context.mjs +1 -0
  161. package/dist/runtime/database.d.mts +1 -0
  162. package/dist/runtime/database.mjs +1 -0
  163. package/dist/runtime/internal/app.d.mts +15 -1
  164. package/dist/runtime/internal/app.mjs +199 -144
  165. package/dist/runtime/internal/cache.d.mts +9 -5
  166. package/dist/runtime/internal/cache.mjs +248 -219
  167. package/dist/runtime/internal/context.d.mts +9 -9
  168. package/dist/runtime/internal/context.mjs +17 -10
  169. package/dist/runtime/internal/database.mjs +9 -11
  170. package/dist/runtime/internal/error/dev.d.mts +4 -4
  171. package/dist/runtime/internal/error/dev.mjs +106 -105
  172. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  173. package/dist/runtime/internal/error/hooks.mjs +9 -0
  174. package/dist/runtime/internal/error/prod.d.mts +5 -4
  175. package/dist/runtime/internal/error/prod.mjs +51 -59
  176. package/dist/runtime/internal/error/utils.d.mts +4 -4
  177. package/dist/runtime/internal/error/utils.mjs +1 -1
  178. package/dist/runtime/internal/meta.d.mts +1 -1
  179. package/dist/runtime/internal/meta.mjs +1 -1
  180. package/dist/runtime/internal/plugin.d.mts +2 -2
  181. package/dist/runtime/internal/plugin.mjs +1 -1
  182. package/dist/runtime/internal/route-rules.d.mts +4 -8
  183. package/dist/runtime/internal/route-rules.mjs +54 -52
  184. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  185. package/dist/runtime/internal/routes/dev-tasks.mjs +17 -19
  186. package/dist/runtime/internal/routes/openapi.mjs +82 -88
  187. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  188. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  189. package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
  190. package/dist/runtime/internal/routes/renderer-template.mjs +2 -2
  191. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  192. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  193. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  194. package/dist/runtime/internal/runtime-config.mjs +44 -39
  195. package/dist/runtime/internal/static.mjs +63 -74
  196. package/dist/runtime/internal/storage.mjs +3 -3
  197. package/dist/runtime/internal/task.d.mts +6 -6
  198. package/dist/runtime/internal/task.mjs +57 -61
  199. package/dist/runtime/internal/vite/dev-entry.mjs +11 -2
  200. package/dist/runtime/internal/vite/{dev-worker.mjs → node-runner.mjs} +54 -57
  201. package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
  202. package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +2 -2
  203. package/dist/runtime/meta.mjs +26 -0
  204. package/dist/runtime/nitro.d.mts +9 -0
  205. package/dist/runtime/nitro.mjs +32 -0
  206. package/dist/runtime/runtime-config.d.mts +1 -0
  207. package/dist/runtime/runtime-config.mjs +1 -0
  208. package/dist/runtime/storage.d.mts +1 -0
  209. package/dist/runtime/storage.mjs +1 -0
  210. package/dist/runtime/task.d.mts +1 -0
  211. package/dist/runtime/task.mjs +1 -0
  212. package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
  213. package/dist/runtime/virtual/database.d.mts +8 -0
  214. package/dist/runtime/virtual/database.mjs +2 -0
  215. package/dist/runtime/virtual/error-handler.d.mts +6 -0
  216. package/dist/runtime/virtual/error-handler.mjs +9 -0
  217. package/dist/runtime/virtual/feature-flags.d.mts +7 -0
  218. package/dist/runtime/virtual/feature-flags.mjs +7 -0
  219. package/dist/runtime/virtual/plugins.d.mts +3 -0
  220. package/dist/runtime/virtual/plugins.mjs +2 -0
  221. package/dist/runtime/virtual/polyfills.d.mts +3 -0
  222. package/dist/runtime/virtual/polyfills.mjs +2 -0
  223. package/dist/runtime/virtual/public-assets.d.mts +9 -0
  224. package/dist/runtime/virtual/public-assets.mjs +8 -0
  225. package/dist/runtime/virtual/renderer-template.d.mts +4 -0
  226. package/dist/runtime/virtual/renderer-template.mjs +7 -0
  227. package/dist/runtime/virtual/routing-meta.d.mts +7 -0
  228. package/dist/runtime/virtual/routing-meta.mjs +2 -0
  229. package/dist/runtime/virtual/routing.d.mts +8 -0
  230. package/dist/runtime/virtual/routing.mjs +11 -0
  231. package/dist/runtime/virtual/runtime-config.d.mts +3 -0
  232. package/dist/runtime/virtual/runtime-config.mjs +5 -0
  233. package/dist/runtime/virtual/server-assets.d.mts +6 -0
  234. package/dist/runtime/virtual/server-assets.mjs +12 -0
  235. package/dist/runtime/virtual/storage.d.mts +3 -0
  236. package/dist/runtime/virtual/storage.mjs +5 -0
  237. package/dist/runtime/virtual/tasks.d.mts +10 -0
  238. package/dist/runtime/virtual/tasks.mjs +3 -0
  239. package/dist/runtime/vite.d.mts +8 -0
  240. package/dist/runtime/vite.mjs +9 -0
  241. package/dist/types/index.d.mts +2561 -2312
  242. package/dist/types/index.mjs +10 -0
  243. package/dist/vite.d.mts +44 -51
  244. package/dist/vite.mjs +737 -68
  245. package/lib/tsconfig.json +27 -0
  246. package/lib/vite.types.d.mts +26 -0
  247. package/lib/vite.types.mjs +2 -0
  248. package/package.json +118 -101
  249. package/dist/_chunks/app.mjs +0 -19797
  250. package/dist/_chunks/build.mjs +0 -84
  251. package/dist/_chunks/build2.mjs +0 -318
  252. package/dist/_chunks/build3.mjs +0 -6452
  253. package/dist/_chunks/detect-acorn.mjs +0 -503
  254. package/dist/_chunks/index.mjs +0 -22242
  255. package/dist/_chunks/index2.mjs +0 -297
  256. package/dist/_chunks/index3.mjs +0 -1058
  257. package/dist/_chunks/index4.mjs +0 -1206
  258. package/dist/_chunks/info.mjs +0 -11157
  259. package/dist/_chunks/json5.mjs +0 -68
  260. package/dist/_chunks/jsonc.mjs +0 -51
  261. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  262. package/dist/_chunks/plugin.mjs +0 -960
  263. package/dist/_chunks/server.mjs +0 -254
  264. package/dist/_chunks/snapshot.mjs +0 -284
  265. package/dist/_chunks/toml.mjs +0 -259
  266. package/dist/_chunks/yaml.mjs +0 -86
  267. package/dist/cli/build.mjs +0 -54
  268. package/dist/cli/common.mjs +0 -13
  269. package/dist/cli/dev.mjs +0 -95
  270. package/dist/cli/index2.mjs +0 -17
  271. package/dist/cli/list.mjs +0 -34
  272. package/dist/cli/prepare.mjs +0 -24
  273. package/dist/cli/run.mjs +0 -60
  274. package/dist/index.d.mts +0 -52
  275. package/dist/index.mjs +0 -55
  276. package/dist/node_modules/cookie/dist/index.js +0 -239
  277. package/dist/node_modules/cookie/package.json +0 -42
  278. package/dist/node_modules/kleur/index.js +0 -110
  279. package/dist/node_modules/klona/dist/index.mjs +0 -81
  280. package/dist/node_modules/klona/full/index.mjs +0 -53
  281. package/dist/node_modules/klona/package.json +0 -74
  282. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  283. package/dist/node_modules/std-env/package.json +0 -46
  284. package/dist/node_modules/youch/build/chunk-OSUFJZHZ.js +0 -6
  285. package/dist/presets/vercel/runtime/vercel.d.mts +0 -8
  286. package/dist/presets/vercel/runtime/vercel.mjs +0 -17
  287. package/dist/presets.mjs +0 -2460
  288. package/dist/runtime/index.d.mts +0 -11
  289. package/dist/runtime/index.mjs +0 -17
  290. package/dist/runtime/internal/debug.d.mts +0 -2
  291. package/dist/runtime/internal/debug.mjs +0 -5
  292. package/dist/runtime/internal/empty.d.mts +0 -0
  293. package/dist/runtime/internal/index.d.mts +0 -3
  294. package/dist/runtime/internal/index.mjs +0 -3
  295. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
  296. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
  297. package/dist/runtime/internal/renderer.d.mts +0 -3
  298. package/dist/runtime/internal/renderer.mjs +0 -36
  299. package/dist/runtime/internal/shutdown.d.mts +0 -9
  300. package/dist/runtime/internal/shutdown.mjs +0 -34
  301. package/dist/runtime/internal/utils.d.mts +0 -1
  302. package/dist/runtime/internal/utils.mjs +0 -15
  303. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  304. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  305. package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
  306. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  307. package/lib/config.d.mts +0 -9
  308. package/lib/config.mjs +0 -5
  309. package/lib/deps/ofetch.mjs +0 -1
  310. package/lib/deps/ofetch.mts +0 -1
  311. package/lib/meta.d.mts +0 -5
  312. package/lib/meta.mjs +0 -21
  313. package/lib/runtime-meta.mjs +0 -38
  314. /package/dist/runtime/{internal/vite/dev-worker.d.mts → virtual/_runtime_warn.d.mts} +0 -0
  315. /package/lib/{deps/h3.d.mts → h3.d.mts} +0 -0
  316. /package/lib/{deps/h3.mjs → h3.mjs} +0 -0
package/dist/vite.mjs CHANGED
@@ -1,68 +1,737 @@
1
- export { n as nitro } from './_chunks/plugin.mjs';
2
- import './_chunks/index.mjs';
3
- import 'consola';
4
- import 'hookable';
5
- import 'nitro/runtime/meta';
6
- import 'node:fs';
7
- import 'node:fs/promises';
8
- import 'node:url';
9
- import 'node:os';
10
- import 'node:path';
11
- import 'node:assert';
12
- import 'node:process';
13
- import 'node:v8';
14
- import 'node:util';
15
- import 'jiti';
16
- import 'destr';
17
- import 'defu';
18
- import './_chunks/pathe.M-eThtNZ.mjs';
19
- import 'fs';
20
- import 'path';
21
- import 'os';
22
- import 'crypto';
23
- import './_chunks/app.mjs';
24
- import 'node:worker_threads';
25
- import 'std-env';
26
- import 'fs/promises';
27
- import 'events';
28
- import 'node:stream';
29
- import 'h3';
30
- import 'url';
31
- import 'tty';
32
- import 'util';
33
- import 'stream';
34
- import 'ufo';
35
- import 'node:http';
36
- import 'node:https';
37
- import 'node:events';
38
- import 'undici';
39
- import 'youch-core';
40
- import 'youch';
41
- import 'source-map';
42
- import 'srvx';
43
- import 'klona/full';
44
- import 'node:module';
45
- import 'ofetch';
46
- import 'klona';
47
- import 'unstorage';
48
- import 'ohash';
49
- import 'scule';
50
- import 'module';
51
- import 'consola/utils';
52
- import 'node:zlib';
53
- import 'nitro/meta';
54
- import 'srvx/node';
55
- import './_chunks/index2.mjs';
56
- import './_chunks/info.mjs';
57
- import 'unenv';
58
- import 'node:buffer';
59
- import 'node:querystring';
60
- import 'constants';
61
- import 'node:crypto';
62
- import 'db0';
63
- import 'esbuild';
64
- import 'nf3';
65
- import 'rendu';
66
- import 'vite';
67
- import 'get-port-please';
68
- import 'node:child_process';
1
+ import "./_common.mjs";
2
+ import { $ as resolveModulePath, B as T, D as prepare, I as prettyPath, O as copyPublicAssets, V as a, at as join$1, ct as resolve$1, d as libChunkName, f as baseBuildConfig, h as writeBuildInfo, it as isAbsolute$1, l as NODE_MODULES_RE, m as getBuildInfo, n as baseBuildPlugins, nt as dirname$1, st as relative$1, tt as basename$1, u as getChunkName } from "./_build/common.mjs";
3
+ import { i as debounce } from "./_libs/rc9+c12+dotenv.mjs";
4
+ import { t as formatCompatibilityDate } from "./_libs/compatx.mjs";
5
+ import { i as createNitro } from "./_chunks/nitro.mjs";
6
+ import "./_libs/tsconfck.mjs";
7
+ import { n as scanHandlers } from "./_chunks/nitro2.mjs";
8
+ import { i as NodeEnvRunner, r as NitroDevApp } from "./_chunks/dev.mjs";
9
+ import { n as watch$1 } from "./_libs/readdirp+chokidar.mjs";
10
+ import { n as assetsPlugin } from "./_libs/pluginutils.mjs";
11
+ import consola$1 from "consola";
12
+ import { existsSync, watch } from "node:fs";
13
+ import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
14
+ import { join, resolve } from "node:path";
15
+ import { defu } from "defu";
16
+ import { runtimeDependencies, runtimeDir } from "nitro/meta";
17
+ import { colors } from "consola/utils";
18
+ import { IncomingMessage } from "node:http";
19
+ import { NodeRequest, sendNodeResponse } from "srvx/node";
20
+ import { DevEnvironment } from "vite";
21
+ import { spawn } from "node:child_process";
22
+
23
+ //#region src/build/vite/bundler.ts
24
+ const getBundlerConfig = async (ctx) => {
25
+ const nitro$1 = ctx.nitro;
26
+ const base = baseBuildConfig(nitro$1);
27
+ const commonConfig = {
28
+ input: nitro$1.options.entry,
29
+ external: [...base.env.external],
30
+ plugins: [...await baseBuildPlugins(nitro$1, base)].filter(Boolean),
31
+ treeshake: { moduleSideEffects(id) {
32
+ return nitro$1.options.moduleSideEffects.some((p) => id.startsWith(p));
33
+ } },
34
+ onwarn(warning, warn) {
35
+ if (!base.ignoreWarningCodes.has(warning.code || "")) warn(warning);
36
+ },
37
+ output: {
38
+ dir: nitro$1.options.output.serverDir,
39
+ format: "esm",
40
+ entryFileNames: "index.mjs",
41
+ chunkFileNames: (chunk) => getChunkName(chunk, nitro$1),
42
+ inlineDynamicImports: nitro$1.options.inlineDynamicImports,
43
+ sourcemapIgnoreList: (id) => id.includes("node_modules")
44
+ }
45
+ };
46
+ if (ctx._isRolldown) return {
47
+ base,
48
+ rollupConfig: void 0,
49
+ rolldownConfig: defu({
50
+ transform: { inject: base.env.inject },
51
+ output: { codeSplitting: { groups: [{
52
+ test: NODE_MODULES_RE,
53
+ name: (id) => libChunkName(id)
54
+ }] } }
55
+ }, nitro$1.options.rolldownConfig, nitro$1.options.rollupConfig, commonConfig)
56
+ };
57
+ else {
58
+ const inject = (await import("./_libs/plugin-inject.mjs").then((n) => n.t)).default;
59
+ const alias = (await import("./_libs/plugin-alias.mjs").then((n) => n.n)).default;
60
+ return {
61
+ base,
62
+ rolldownConfig: void 0,
63
+ rollupConfig: defu({
64
+ plugins: [inject(base.env.inject), alias({ entries: base.aliases })],
65
+ output: {
66
+ sourcemapExcludeSources: true,
67
+ generatedCode: { constBindings: true },
68
+ manualChunks(id) {
69
+ if (NODE_MODULES_RE.test(id)) return libChunkName(id);
70
+ }
71
+ }
72
+ }, nitro$1.options.rolldownConfig, nitro$1.options.rollupConfig, commonConfig)
73
+ };
74
+ }
75
+ };
76
+
77
+ //#endregion
78
+ //#region src/build/vite/prod.ts
79
+ const BuilderNames = {
80
+ nitro: colors.magenta("Nitro"),
81
+ client: colors.green("Client"),
82
+ ssr: colors.blue("SSR")
83
+ };
84
+ async function buildEnvironments(ctx, builder) {
85
+ const nitro$1 = ctx.nitro;
86
+ for (const [envName, env] of Object.entries(builder.environments)) {
87
+ const fmtName = BuilderNames[envName] || (envName.length <= 3 ? envName.toUpperCase() : envName[0].toUpperCase() + envName.slice(1));
88
+ if (envName === "nitro" || !env.config.build.rollupOptions.input || env.isBuilt) {
89
+ if (![
90
+ "nitro",
91
+ "ssr",
92
+ "client"
93
+ ].includes(envName)) nitro$1.logger.info(env.isBuilt ? `Skipping ${fmtName} (already built)` : `Skipping ${fmtName} (no input defined)`);
94
+ continue;
95
+ }
96
+ if (!a && !T) console.log();
97
+ nitro$1.logger.start(`Building [${fmtName}]`);
98
+ await builder.build(env);
99
+ }
100
+ const nitroOptions = ctx.nitro.options;
101
+ const clientInput = builder.environments.client?.config?.build?.rollupOptions?.input;
102
+ if (nitroOptions.renderer?.template && nitroOptions.renderer?.template === clientInput) {
103
+ const outputPath = resolve$1(nitroOptions.output.publicDir, basename$1(clientInput));
104
+ if (existsSync(outputPath)) {
105
+ const html = await readFile(outputPath, "utf8").then((r) => r.replace("<!--ssr-outlet-->", `{{{ globalThis.__nitro_vite_envs__?.["ssr"]?.fetch($REQUEST) || "" }}}`));
106
+ await rm(outputPath);
107
+ const tmp = resolve$1(nitroOptions.buildDir, "vite/index.html");
108
+ await mkdir(dirname$1(tmp), { recursive: true });
109
+ await writeFile(tmp, html, "utf8");
110
+ nitroOptions.renderer.template = tmp;
111
+ }
112
+ }
113
+ await builder.writeAssetsManifest?.();
114
+ if (!a && !T) console.log();
115
+ const buildInfo = [["preset", nitro$1.options.preset], ["compatibility", formatCompatibilityDate(nitro$1.options.compatibilityDate)]].filter((e) => e[1]);
116
+ nitro$1.logger.start(`Building [${BuilderNames.nitro}] ${colors.dim(`(${buildInfo.map(([k, v]) => `${k}: \`${v}\``).join(", ")})`)}`);
117
+ await copyPublicAssets(nitro$1);
118
+ const assetDirs = new Set(Object.values(builder.environments).filter((env) => env.config.consumer === "client").map((env) => env.config.build.assetsDir).filter(Boolean));
119
+ for (const assetsDir of assetDirs) {
120
+ if (!existsSync(resolve$1(nitro$1.options.output.publicDir, assetsDir))) continue;
121
+ const rule = ctx.nitro.options.routeRules[`/${assetsDir}/**`] ??= {};
122
+ if (!rule.headers?.["cache-control"]) rule.headers = {
123
+ ...rule.headers,
124
+ "cache-control": `public, max-age=31536000, immutable`
125
+ };
126
+ }
127
+ ctx.nitro.routing.sync();
128
+ await builder.build(builder.environments.nitro);
129
+ await nitro$1.close();
130
+ await nitro$1.hooks.callHook("compiled", nitro$1);
131
+ await writeBuildInfo(nitro$1);
132
+ const rOutput = relative$1(process.cwd(), nitro$1.options.output.dir);
133
+ const rewriteRelativePaths = (input) => {
134
+ return input.replace(/([\s:])\.\/(\S*)/g, `$1${rOutput}/$2`);
135
+ };
136
+ if (!a && !T) console.log();
137
+ if (nitro$1.options.commands.preview) nitro$1.logger.success(`You can preview this build using \`${rewriteRelativePaths(nitro$1.options.commands.preview)}\``);
138
+ if (nitro$1.options.commands.deploy) nitro$1.logger.success(`You can deploy this build using \`${rewriteRelativePaths(nitro$1.options.commands.deploy)}\``);
139
+ }
140
+ function prodSetup(ctx) {
141
+ return `
142
+ function lazyService(loader) {
143
+ let promise, mod
144
+ return {
145
+ fetch(req) {
146
+ if (mod) { return mod.fetch(req) }
147
+ if (!promise) {
148
+ promise = loader().then(_mod => (mod = _mod.default || _mod))
149
+ }
150
+ return promise.then(mod => mod.fetch(req))
151
+ }
152
+ }
153
+ }
154
+
155
+ const services = {
156
+ ${Object.keys(ctx.services).map((name) => {
157
+ return [name, resolve$1(ctx.nitro.options.buildDir, "vite/services", name, ctx._entryPoints[name])];
158
+ }).map(([name, entry]) => `[${JSON.stringify(name)}]: lazyService(() => import(${JSON.stringify(entry)}))`).join(",\n")}
159
+ };
160
+
161
+ globalThis.__nitro_vite_envs__ = services;
162
+ `;
163
+ }
164
+
165
+ //#endregion
166
+ //#region src/build/vite/dev.ts
167
+ function createFetchableDevEnvironment(name, config, devServer, entry) {
168
+ return new FetchableDevEnvironment(name, config, {
169
+ hot: true,
170
+ transport: createTransport(name, devServer)
171
+ }, devServer, entry);
172
+ }
173
+ var FetchableDevEnvironment = class extends DevEnvironment {
174
+ devServer;
175
+ constructor(name, config, context, devServer, entry) {
176
+ super(name, config, context);
177
+ this.devServer = devServer;
178
+ this.devServer.sendMessage({
179
+ type: "custom",
180
+ event: "nitro:vite-env",
181
+ data: {
182
+ name,
183
+ entry
184
+ }
185
+ });
186
+ }
187
+ async dispatchFetch(request) {
188
+ return this.devServer.fetch(request);
189
+ }
190
+ async init(...args) {
191
+ await this.devServer.init?.();
192
+ return super.init(...args);
193
+ }
194
+ };
195
+ function createTransport(name, hooks) {
196
+ const listeners = /* @__PURE__ */ new WeakMap();
197
+ return {
198
+ send: (data) => hooks.sendMessage({
199
+ ...data,
200
+ viteEnv: name
201
+ }),
202
+ on: (event, handler) => {
203
+ if (event === "connection") return;
204
+ const listener = (value) => {
205
+ if (value?.type === "custom" && value.event === event && value.viteEnv === name) handler(value.data, { send: (payload) => hooks.sendMessage({
206
+ ...payload,
207
+ viteEnv: name
208
+ }) });
209
+ };
210
+ listeners.set(handler, listener);
211
+ hooks.onMessage(listener);
212
+ },
213
+ off: (event, handler) => {
214
+ if (event === "connection") return;
215
+ const listener = listeners.get(handler);
216
+ if (listener) {
217
+ hooks.offMessage(listener);
218
+ listeners.delete(handler);
219
+ }
220
+ }
221
+ };
222
+ }
223
+ async function configureViteDevServer(ctx, server) {
224
+ const nitro$1 = ctx.nitro;
225
+ const nitroEnv$1 = server.environments.nitro;
226
+ const nitroConfigFile = nitro$1.options._c12.configFile;
227
+ if (nitroConfigFile) server.config.configFileDependencies.push(nitroConfigFile);
228
+ if (nitro$1.options.features.websocket ?? nitro$1.options.experimental.websocket) server.httpServer.on("upgrade", (req, socket, head) => {
229
+ if (req.url?.startsWith("/?token")) return;
230
+ getEnvRunner(ctx).upgrade?.(req, socket, head);
231
+ });
232
+ const reload = debounce(async () => {
233
+ await scanHandlers(nitro$1);
234
+ nitro$1.routing.sync();
235
+ nitroEnv$1.moduleGraph.invalidateAll();
236
+ nitroEnv$1.hot.send({ type: "full-reload" });
237
+ });
238
+ const scanDirs = nitro$1.options.scanDirs.flatMap((dir) => [
239
+ join$1(dir, nitro$1.options.apiDir || "api"),
240
+ join$1(dir, nitro$1.options.routesDir || "routes"),
241
+ join$1(dir, "middleware"),
242
+ join$1(dir, "plugins"),
243
+ join$1(dir, "modules")
244
+ ]);
245
+ const watchReloadEvents = new Set([
246
+ "add",
247
+ "addDir",
248
+ "unlink",
249
+ "unlinkDir"
250
+ ]);
251
+ const scanDirsWatcher = watch$1(scanDirs, { ignoreInitial: true }).on("all", (event, path$1, stat$2) => {
252
+ if (watchReloadEvents.has(event)) reload();
253
+ });
254
+ const rootDirWatcher = watch(nitro$1.options.rootDir, { persistent: false }, (_event, filename) => {
255
+ if (filename && /^server\.[mc]?[jt]sx?$/.test(filename)) reload();
256
+ });
257
+ nitro$1.hooks.hook("close", () => {
258
+ scanDirsWatcher.close();
259
+ rootDirWatcher.close();
260
+ });
261
+ const hostIPC = { async transformHTML(html) {
262
+ return server.transformIndexHtml("/", html).then((r) => r.replace("<!--ssr-outlet-->", `{{{ globalThis.__nitro_vite_envs__?.["ssr"]?.fetch($REQUEST) || "" }}}`));
263
+ } };
264
+ nitroEnv$1.devServer.onMessage(async (payload) => {
265
+ if (payload.type === "custom" && payload.event === "nitro:vite-invoke") {
266
+ const res = await hostIPC[payload.data.name](payload.data.data).then((data) => ({ data })).catch((error) => ({ error }));
267
+ nitroEnv$1.devServer.sendMessage({
268
+ type: "custom",
269
+ event: "nitro:vite-invoke-response",
270
+ data: {
271
+ id: payload.data.id,
272
+ data: res
273
+ }
274
+ });
275
+ }
276
+ });
277
+ const nitroDevMiddleware = async (nodeReq, nodeRes, next) => {
278
+ if (!nodeReq.url || /^\/@(?:vite|fs|id)\//.test(nodeReq.url) || nodeReq._nitroHandled || server.middlewares.stack.map((mw) => mw.route).some((base) => base && nodeReq.url.startsWith(base))) return next();
279
+ nodeReq._nitroHandled = true;
280
+ try {
281
+ const req = new NodeRequest({
282
+ req: nodeReq,
283
+ res: nodeRes
284
+ });
285
+ const devAppRes = await ctx.devApp.fetch(req);
286
+ if (nodeRes.writableEnded || nodeRes.headersSent) return;
287
+ if (devAppRes.status !== 404) return await sendNodeResponse(nodeRes, devAppRes);
288
+ const envRes = await nitroEnv$1.dispatchFetch(req);
289
+ if (nodeRes.writableEnded || nodeRes.headersSent) return;
290
+ return await sendNodeResponse(nodeRes, envRes);
291
+ } catch (error) {
292
+ return next(error);
293
+ }
294
+ };
295
+ server.middlewares.use(function nitroDevMiddlewarePre(req, res, next) {
296
+ const fetchDest = req.headers["sec-fetch-dest"];
297
+ res.setHeader("vary", "sec-fetch-dest");
298
+ if ((!fetchDest || /^(document|iframe|frame|empty)$/.test(fetchDest)) && !req.url.match(/\.([a-z0-9]+)(?:[?#]|$)/i)?.[1] && !/^\/(?:__|@)/.test(req.url)) nitroDevMiddleware(req, res, next);
299
+ else next();
300
+ });
301
+ return () => {
302
+ server.middlewares.use(nitroDevMiddleware);
303
+ };
304
+ }
305
+
306
+ //#endregion
307
+ //#region src/build/vite/env.ts
308
+ function getEnvRunner(ctx) {
309
+ return ctx._envRunner ??= new NodeEnvRunner({
310
+ name: "nitro-vite",
311
+ entry: resolve(runtimeDir, "internal/vite/node-runner.mjs"),
312
+ data: { server: true }
313
+ });
314
+ }
315
+ function createNitroEnvironment(ctx) {
316
+ return {
317
+ consumer: "server",
318
+ build: {
319
+ rollupOptions: ctx.bundlerConfig.rollupConfig,
320
+ rolldownOptions: ctx.bundlerConfig.rolldownConfig,
321
+ minify: ctx.nitro.options.minify,
322
+ emptyOutDir: false,
323
+ sourcemap: ctx.nitro.options.sourcemap,
324
+ commonjsOptions: ctx.nitro.options.commonJS
325
+ },
326
+ resolve: {
327
+ noExternal: ctx.nitro.options.dev ? [
328
+ /^nitro$/,
329
+ /* @__PURE__ */ new RegExp(`^(${runtimeDependencies.join("|")})$`),
330
+ ...ctx.bundlerConfig.base.noExternal
331
+ ] : true,
332
+ conditions: ctx.nitro.options.exportConditions,
333
+ externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm|module/.test(c))
334
+ },
335
+ define: { "process.env.NODE_ENV": JSON.stringify(ctx.nitro.options.dev ? "development" : "production") },
336
+ dev: { createEnvironment: (envName, envConfig) => createFetchableDevEnvironment(envName, envConfig, getEnvRunner(ctx), resolve(runtimeDir, "internal/vite/dev-entry.mjs")) }
337
+ };
338
+ }
339
+ function createServiceEnvironment(ctx, name, serviceConfig) {
340
+ return {
341
+ consumer: "server",
342
+ build: {
343
+ rollupOptions: { input: { index: serviceConfig.entry } },
344
+ minify: ctx.nitro.options.minify,
345
+ sourcemap: ctx.nitro.options.sourcemap,
346
+ outDir: join(ctx.nitro.options.buildDir, "vite/services", name),
347
+ emptyOutDir: true
348
+ },
349
+ resolve: {
350
+ conditions: ctx.nitro.options.exportConditions,
351
+ externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm|module/.test(c))
352
+ },
353
+ dev: { createEnvironment: (envName, envConfig) => createFetchableDevEnvironment(envName, envConfig, getEnvRunner(ctx), tryResolve(serviceConfig.entry)) }
354
+ };
355
+ }
356
+ function createServiceEnvironments(ctx) {
357
+ return Object.fromEntries(Object.entries(ctx.services).map(([name, config]) => [name, createServiceEnvironment(ctx, name, config)]));
358
+ }
359
+ function tryResolve(id) {
360
+ if (/^[~#/\0]/.test(id) || isAbsolute$1(id)) return id;
361
+ return resolveModulePath(id, {
362
+ suffixes: ["", "/index"],
363
+ extensions: [
364
+ "",
365
+ ".ts",
366
+ ".mjs",
367
+ ".cjs",
368
+ ".js",
369
+ ".mts",
370
+ ".cts"
371
+ ],
372
+ try: true
373
+ }) || id;
374
+ }
375
+
376
+ //#endregion
377
+ //#region src/build/vite/preview.ts
378
+ function nitroPreviewPlugin(ctx) {
379
+ return {
380
+ name: "nitro:preview",
381
+ apply: (_config, configEnv) => !!configEnv.isPreview,
382
+ config(config) {
383
+ return { preview: { port: config.preview?.port || 3e3 } };
384
+ },
385
+ async configurePreviewServer(server) {
386
+ const { outputDir, buildInfo } = await getBuildInfo(server.config.root);
387
+ if (!buildInfo) throw this.error("Cannot load nitro build info. Make sure to build first.");
388
+ const info = [
389
+ ["Build Directory:", prettyPath(outputDir)],
390
+ ["Date:", buildInfo.date && new Date(buildInfo.date).toLocaleString()],
391
+ ["Nitro Version:", buildInfo.versions.nitro],
392
+ ["Nitro Preset:", buildInfo.preset],
393
+ buildInfo.framework?.name !== "nitro" && ["Framework:", buildInfo.framework?.name + (buildInfo.framework?.version ? ` (v${buildInfo.framework.version})` : "")]
394
+ ].filter((i) => i && i[1]);
395
+ consola$1.box({
396
+ title: " [Build Info] ",
397
+ message: info.map((i) => `- ${i[0]} ${i[1]}`).join("\n")
398
+ });
399
+ if (!buildInfo.commands?.preview) {
400
+ consola$1.warn("No nitro build preview command found for this preset.");
401
+ return;
402
+ }
403
+ const dotEnvEntries = await loadPreviewDotEnv(server.config.root);
404
+ if (dotEnvEntries.length > 0) consola$1.box({
405
+ title: " [Environment Variables] ",
406
+ message: [
407
+ "Loaded variables from .env files (preview mode only).",
408
+ "Set platform environment variables for production:",
409
+ ...dotEnvEntries.map(([key, val]) => ` - ${key}`)
410
+ ].join("\n")
411
+ });
412
+ const [command, ...args] = buildInfo.commands.preview.split(" ");
413
+ consola$1.info(`Spawning preview server...`);
414
+ consola$1.info(buildInfo.commands?.preview);
415
+ console.log("");
416
+ const { getRandomPort, waitForPort } = await import("get-port-please");
417
+ const randomPort = await getRandomPort();
418
+ const child = spawn(command, args, {
419
+ stdio: "inherit",
420
+ cwd: outputDir,
421
+ env: {
422
+ ...process.env,
423
+ ...Object.fromEntries(dotEnvEntries),
424
+ PORT: String(randomPort)
425
+ }
426
+ });
427
+ const killChild = (signal) => {
428
+ if (child && !child.killed) child.kill(signal);
429
+ };
430
+ for (const sig of ["SIGINT", "SIGHUP"]) process.once(sig, () => {
431
+ consola$1.info(`Stopping preview server...`);
432
+ killChild(sig);
433
+ process.exit();
434
+ });
435
+ server.httpServer.once("close", () => {
436
+ killChild("SIGTERM");
437
+ });
438
+ child.once("exit", (code) => {
439
+ if (code && code !== 0) consola$1.error(`[nitro] Preview server exited with code ${code}`);
440
+ });
441
+ const { createProxyServer } = await import("./_libs/httpxy.mjs").then((n) => n.n);
442
+ const proxy = createProxyServer({ target: `http://localhost:${randomPort}` });
443
+ server.middlewares.use((req, res, next) => {
444
+ if (child && !child.killed) proxy.web(req, res).catch(next);
445
+ else res.end(`Nitro preview server is not running.`);
446
+ });
447
+ await waitForPort(randomPort, {
448
+ retries: 20,
449
+ delay: 500
450
+ });
451
+ }
452
+ };
453
+ }
454
+ async function loadPreviewDotEnv(root) {
455
+ const { loadDotenv } = await import("./_libs/rc9+c12+dotenv.mjs").then((n) => n.t);
456
+ const env = await loadDotenv({
457
+ cwd: root,
458
+ fileName: [
459
+ ".env.preview",
460
+ ".env.production",
461
+ ".env"
462
+ ]
463
+ });
464
+ return Object.entries(env).filter(([_key, val]) => val);
465
+ }
466
+
467
+ //#endregion
468
+ //#region src/build/vite/plugin.ts
469
+ const DEFAULT_EXTENSIONS = [
470
+ ".ts",
471
+ ".js",
472
+ ".mts",
473
+ ".mjs",
474
+ ".tsx",
475
+ ".jsx"
476
+ ];
477
+ const debug = process.env.NITRO_DEBUG ? (...args) => console.log("[nitro]", ...args) : () => {};
478
+ function nitro(pluginConfig = {}) {
479
+ const ctx = createContext(pluginConfig);
480
+ return [
481
+ nitroInit(ctx),
482
+ nitroEnv(ctx),
483
+ nitroMain(ctx),
484
+ nitroPrepare(ctx),
485
+ nitroService(ctx),
486
+ nitroPreviewPlugin(ctx),
487
+ pluginConfig.experimental?.vite?.assetsImport !== false && assetsPlugin({ experimental: { clientBuildFallback: false } })
488
+ ].filter(Boolean);
489
+ }
490
+ function nitroInit(ctx) {
491
+ return {
492
+ name: "nitro:init",
493
+ sharedDuringBuild: true,
494
+ apply: (_config, configEnv) => !configEnv.isPreview,
495
+ async config(config, configEnv) {
496
+ ctx._isRolldown = !!this.meta.rolldownVersion;
497
+ if (!ctx._initialized) {
498
+ debug("[init] Initializing nitro");
499
+ ctx._initialized = true;
500
+ await setupNitroContext(ctx, configEnv, config);
501
+ }
502
+ },
503
+ applyToEnvironment(env) {
504
+ if (env.name === "nitro" && ctx.nitro?.options.dev) {
505
+ debug("[init] Adding rollup plugins for dev");
506
+ return [...ctx.bundlerConfig?.rolldownConfig?.plugins || ctx.bundlerConfig?.rollupConfig?.plugins || []];
507
+ }
508
+ }
509
+ };
510
+ }
511
+ function nitroEnv(ctx) {
512
+ return {
513
+ name: "nitro:env",
514
+ sharedDuringBuild: true,
515
+ apply: (_config, configEnv) => !configEnv.isPreview,
516
+ async config(userConfig, _configEnv) {
517
+ debug("[env] Extending config (environments)");
518
+ const environments = {
519
+ ...createServiceEnvironments(ctx),
520
+ nitro: createNitroEnvironment(ctx)
521
+ };
522
+ environments.client = {
523
+ consumer: userConfig.environments?.client?.consumer ?? "client",
524
+ build: { rollupOptions: { input: userConfig.environments?.client?.build?.rollupOptions?.input ?? useNitro(ctx).options.renderer?.template } }
525
+ };
526
+ debug("[env] Environments:", Object.keys(environments).join(", "));
527
+ return { environments };
528
+ },
529
+ configEnvironment(name, config) {
530
+ if (config.consumer === "client") {
531
+ debug("[env] Configuring client environment", name === "client" ? "" : ` (${name})`);
532
+ config.build.emptyOutDir = false;
533
+ config.build.outDir = useNitro(ctx).options.output.publicDir;
534
+ return;
535
+ }
536
+ if (name === "nitro" || ctx.services[name]) return;
537
+ const entry = getEntry(config.build?.rolldownOptions?.input || config.build?.rollupOptions?.input);
538
+ if (typeof entry !== "string") return;
539
+ const resolvedEntry = resolveModulePath(entry, {
540
+ from: [ctx.nitro.options.rootDir, ...ctx.nitro.options.scanDirs],
541
+ extensions: DEFAULT_EXTENSIONS,
542
+ suffixes: ["", "/index"],
543
+ try: true
544
+ }) || entry;
545
+ ctx.services[name] = { entry: resolvedEntry };
546
+ debug(`[env] Auto-detected service "${name}" with entry: ${resolvedEntry}`);
547
+ return createServiceEnvironment(ctx, name, { entry: resolvedEntry });
548
+ },
549
+ configResolved() {
550
+ if (!ctx.nitro.options.renderer?.handler && !ctx.nitro.options.renderer?.template && ctx.services.ssr?.entry) {
551
+ ctx.nitro.options.renderer ??= {};
552
+ ctx.nitro.options.renderer.handler = resolve$1(runtimeDir, "internal/vite/ssr-renderer");
553
+ ctx.nitro.routing.sync();
554
+ }
555
+ }
556
+ };
557
+ }
558
+ function nitroMain(ctx) {
559
+ return {
560
+ name: "nitro:main",
561
+ sharedDuringBuild: true,
562
+ apply: (_config, configEnv) => !configEnv.isPreview,
563
+ async config(userConfig, _configEnv) {
564
+ debug("[main] Extending config (appType, resolve, server)");
565
+ if (!ctx.bundlerConfig) throw new Error("Bundler config is not initialized yet!");
566
+ return {
567
+ appType: userConfig.appType || "custom",
568
+ resolve: { alias: ctx.bundlerConfig.base.aliases },
569
+ builder: { sharedConfigBuild: true },
570
+ server: {
571
+ port: Number.parseInt(process.env.PORT || "") || userConfig.server?.port || useNitro(ctx).options.devServer?.port || 3e3,
572
+ cors: false
573
+ }
574
+ };
575
+ },
576
+ buildApp: {
577
+ order: "post",
578
+ handler(builder) {
579
+ debug("[main] Building environments");
580
+ return buildEnvironments(ctx, builder);
581
+ }
582
+ },
583
+ generateBundle: { handler(_options, bundle) {
584
+ const environment = this.environment;
585
+ debug("[main] Generating manifest and entry points for environment:", environment.name);
586
+ const isRegisteredService = Object.keys(ctx.services).includes(environment.name);
587
+ let entryFile;
588
+ for (const [_name, file] of Object.entries(bundle)) if (file.type === "chunk" && isRegisteredService && file.isEntry) if (entryFile === void 0) entryFile = file.fileName;
589
+ else this.warn(`Multiple entry points found for service "${environment.name}"`);
590
+ if (isRegisteredService) {
591
+ if (entryFile === void 0) this.error(`No entry point found for service "${this.environment.name}".`);
592
+ ctx._entryPoints[this.environment.name] = entryFile;
593
+ }
594
+ } },
595
+ configureServer: (server) => {
596
+ debug("[main] Configuring dev server");
597
+ return configureViteDevServer(ctx, server);
598
+ },
599
+ async hotUpdate({ server, modules, timestamp }) {
600
+ const env = this.environment;
601
+ if (ctx.pluginConfig.experimental?.vite.serverReload === false || env.config.consumer === "client") return;
602
+ const clientEnvs = Object.values(server.environments).filter((env$1) => env$1.config.consumer === "client");
603
+ let hasServerOnlyModule = false;
604
+ const invalidated = /* @__PURE__ */ new Set();
605
+ for (const mod of modules) if (mod.id && !clientEnvs.some((env$1) => env$1.moduleGraph.getModuleById(mod.id))) {
606
+ hasServerOnlyModule = true;
607
+ env.moduleGraph.invalidateModule(mod, invalidated, timestamp, false);
608
+ }
609
+ if (hasServerOnlyModule) {
610
+ env.hot.send({ type: "full-reload" });
611
+ server.ws.send({ type: "full-reload" });
612
+ return [];
613
+ }
614
+ }
615
+ };
616
+ }
617
+ function nitroPrepare(ctx) {
618
+ return {
619
+ name: "nitro:prepare",
620
+ sharedDuringBuild: true,
621
+ applyToEnvironment: (env) => env.name === "nitro",
622
+ buildApp: {
623
+ order: "pre",
624
+ async handler() {
625
+ debug("[prepare] Preparing output directory");
626
+ const nitro = ctx.nitro;
627
+ await prepare(nitro);
628
+ }
629
+ }
630
+ };
631
+ }
632
+ function nitroService(ctx) {
633
+ return {
634
+ name: "nitro:service",
635
+ enforce: "pre",
636
+ sharedDuringBuild: true,
637
+ applyToEnvironment: (env) => env.name === "nitro",
638
+ resolveId: {
639
+ filter: { id: /^#nitro-vite-setup$/ },
640
+ async handler(id) {
641
+ if (id === "#nitro-vite-setup") return {
642
+ id,
643
+ moduleSideEffects: true
644
+ };
645
+ }
646
+ },
647
+ load: {
648
+ filter: { id: /^#nitro-vite-setup$/ },
649
+ async handler(id) {
650
+ if (id === "#nitro-vite-setup") return prodSetup(ctx);
651
+ }
652
+ }
653
+ };
654
+ }
655
+ function createContext(pluginConfig) {
656
+ return {
657
+ pluginConfig,
658
+ services: { ...pluginConfig.experimental?.vite?.services },
659
+ _entryPoints: {}
660
+ };
661
+ }
662
+ function useNitro(ctx) {
663
+ if (!ctx.nitro) throw new Error("Nitro instance is not initialized yet.");
664
+ return ctx.nitro;
665
+ }
666
+ async function setupNitroContext(ctx, configEnv, userConfig) {
667
+ const nitroConfig = {
668
+ dev: configEnv.command === "serve",
669
+ builder: "vite",
670
+ rootDir: userConfig.root,
671
+ ...defu(ctx.pluginConfig, ctx.pluginConfig.config, userConfig.nitro)
672
+ };
673
+ nitroConfig.modules ??= [];
674
+ for (const plugin of flattenPlugins(userConfig.plugins || [])) if (plugin.nitro) nitroConfig.modules.push(plugin.nitro);
675
+ ctx.nitro = ctx.pluginConfig._nitro || await createNitro(nitroConfig);
676
+ if (!ctx.services?.ssr) if (userConfig.environments?.ssr === void 0) {
677
+ const ssrEntry = resolveModulePath("./entry-server", {
678
+ from: [
679
+ "app",
680
+ "src",
681
+ ""
682
+ ].flatMap((d) => [ctx.nitro.options.rootDir, ...ctx.nitro.options.scanDirs].map((s) => join$1(s, d) + "/")),
683
+ extensions: DEFAULT_EXTENSIONS,
684
+ try: true
685
+ });
686
+ if (ssrEntry) {
687
+ ctx.services.ssr = { entry: ssrEntry };
688
+ ctx.nitro.logger.info(`Using \`${prettyPath(ssrEntry)}\` as vite ssr entry.`);
689
+ }
690
+ } else {
691
+ let ssrEntry = getEntry(userConfig.environments.ssr.build?.rollupOptions?.input);
692
+ if (typeof ssrEntry === "string") {
693
+ ssrEntry = resolveModulePath(ssrEntry, {
694
+ from: [ctx.nitro.options.rootDir, ...ctx.nitro.options.scanDirs],
695
+ extensions: DEFAULT_EXTENSIONS,
696
+ suffixes: ["", "/index"],
697
+ try: true
698
+ }) || ssrEntry;
699
+ ctx.services.ssr = { entry: ssrEntry };
700
+ }
701
+ }
702
+ if (ctx.nitro.options.serverEntry && ctx.nitro.options.serverEntry.handler === ctx.services.ssr?.entry) {
703
+ ctx.nitro.logger.warn(`Nitro server entry and Vite SSR both set to ${prettyPath(ctx.services.ssr.entry)}. Use a separate SSR entry (e.g. \`src/server.ts\`).`);
704
+ ctx.nitro.options.serverEntry = false;
705
+ }
706
+ const publicDistDir = ctx._publicDistDir = userConfig.build?.outDir || resolve$1(ctx.nitro.options.buildDir, "vite/public");
707
+ ctx.nitro.options.publicAssets.push({
708
+ dir: publicDistDir,
709
+ maxAge: 0,
710
+ baseURL: "/",
711
+ fallthrough: true
712
+ });
713
+ if (!ctx.nitro.options.dev) ctx.nitro.options.unenv.push({
714
+ meta: { name: "nitro-vite" },
715
+ polyfill: ["#nitro-vite-setup"]
716
+ });
717
+ await ctx.nitro.hooks.callHook("build:before", ctx.nitro);
718
+ ctx.bundlerConfig = await getBundlerConfig(ctx);
719
+ await ctx.nitro.hooks.callHook("rollup:before", ctx.nitro, ctx.bundlerConfig.rollupConfig || ctx.bundlerConfig.rolldownConfig);
720
+ if (ctx.nitro.options.dev) getEnvRunner(ctx);
721
+ ctx.nitro.fetch = (req) => getEnvRunner(ctx).fetch(req);
722
+ if (ctx.nitro.options.dev && !ctx.devApp) ctx.devApp = new NitroDevApp(ctx.nitro);
723
+ ctx.nitro.hooks.hook("close", async () => {
724
+ if (ctx._envRunner) await ctx._envRunner.close();
725
+ });
726
+ }
727
+ function getEntry(input) {
728
+ if (typeof input === "string") return input;
729
+ else if (Array.isArray(input) && input.length > 0) return input[0];
730
+ else if (input && "index" in input) return input.index;
731
+ }
732
+ function flattenPlugins(plugins) {
733
+ return plugins.flatMap((plugin) => Array.isArray(plugin) ? flattenPlugins(plugin) : [plugin]).filter((p) => p && !(p instanceof Promise));
734
+ }
735
+
736
+ //#endregion
737
+ export { nitro };