@depup/nitro 3.0.260311-beta-depup.0

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 (370) hide show
  1. package/LICENSE +27 -0
  2. package/README.md +32 -0
  3. package/changes.json +14 -0
  4. package/dist/THIRD-PARTY-LICENSES.md +1646 -0
  5. package/dist/_build/common.mjs +29361 -0
  6. package/dist/_build/rolldown.mjs +173 -0
  7. package/dist/_build/rollup.mjs +194 -0
  8. package/dist/_build/vite.build.mjs +18 -0
  9. package/dist/_chunks/nitro.mjs +1159 -0
  10. package/dist/_chunks/nitro2.mjs +102 -0
  11. package/dist/_chunks/nitro3.mjs +129 -0
  12. package/dist/_chunks/utils.mjs +272 -0
  13. package/dist/_common.mjs +35 -0
  14. package/dist/_dev.d.mts +12 -0
  15. package/dist/_dev.mjs +519 -0
  16. package/dist/_libs/_.mjs +3 -0
  17. package/dist/_libs/_2.mjs +2 -0
  18. package/dist/_libs/_3.mjs +3 -0
  19. package/dist/_libs/_4.mjs +2 -0
  20. package/dist/_libs/_5.mjs +3 -0
  21. package/dist/_libs/_6.mjs +4 -0
  22. package/dist/_libs/_7.mjs +5 -0
  23. package/dist/_libs/c12+rc9.mjs +812 -0
  24. package/dist/_libs/c12+readdirp+chokidar.d.mts +230 -0
  25. package/dist/_libs/citty.mjs +361 -0
  26. package/dist/_libs/commondir+is-reference.mjs +1311 -0
  27. package/dist/_libs/compatx.d.mts +47 -0
  28. package/dist/_libs/compatx.mjs +45 -0
  29. package/dist/_libs/esbuild.d.mts +20 -0
  30. package/dist/_libs/escape-string-regexp.mjs +7 -0
  31. package/dist/_libs/estree+pluginutils.d.mts +241 -0
  32. package/dist/_libs/estree-walker.mjs +184 -0
  33. package/dist/_libs/exsolve.d.mts +1 -0
  34. package/dist/_libs/hasown+resolve+deepmerge.mjs +1949 -0
  35. package/dist/_libs/httpxy.d.mts +82 -0
  36. package/dist/_libs/httpxy.mjs +671 -0
  37. package/dist/_libs/js-tokens.d.mts +1 -0
  38. package/dist/_libs/klona.mjs +37 -0
  39. package/dist/_libs/magic-string.d.mts +220 -0
  40. package/dist/_libs/mlly.d.mts +57 -0
  41. package/dist/_libs/nypm+tinyexec.mjs +845 -0
  42. package/dist/_libs/perfect-debounce.mjs +88 -0
  43. package/dist/_libs/pkg-types.d.mts +23 -0
  44. package/dist/_libs/plugin-alias.mjs +64 -0
  45. package/dist/_libs/plugin-inject.mjs +131 -0
  46. package/dist/_libs/plugin-json.mjs +34 -0
  47. package/dist/_libs/pluginutils.mjs +646 -0
  48. package/dist/_libs/readdirp+chokidar.mjs +1606 -0
  49. package/dist/_libs/remapping.mjs +115 -0
  50. package/dist/_libs/resolve-uri+gen-mapping.mjs +442 -0
  51. package/dist/_libs/rou3.d.mts +44 -0
  52. package/dist/_libs/rou3.mjs +496 -0
  53. package/dist/_libs/std-env.d.mts +12 -0
  54. package/dist/_libs/strip-literal.d.mts +1 -0
  55. package/dist/_libs/tsconfck.mjs +813 -0
  56. package/dist/_libs/ultrahtml.mjs +127 -0
  57. package/dist/_libs/unimport+unplugin.mjs +1684 -0
  58. package/dist/_libs/unplugin+unimport.d.mts +423 -0
  59. package/dist/_libs/unwasm.d.mts +29 -0
  60. package/dist/_presets.mjs +1759 -0
  61. package/dist/builder.d.mts +64 -0
  62. package/dist/builder.mjs +15 -0
  63. package/dist/cli/_chunks/build.mjs +47 -0
  64. package/dist/cli/_chunks/common.mjs +14 -0
  65. package/dist/cli/_chunks/deploy.mjs +40 -0
  66. package/dist/cli/_chunks/dev.mjs +62 -0
  67. package/dist/cli/_chunks/docs.mjs +30 -0
  68. package/dist/cli/_chunks/list.mjs +25 -0
  69. package/dist/cli/_chunks/prepare.mjs +17 -0
  70. package/dist/cli/_chunks/preview.mjs +51 -0
  71. package/dist/cli/_chunks/run.mjs +53 -0
  72. package/dist/cli/_chunks/task.mjs +14 -0
  73. package/dist/cli/index.d.mts +1 -0
  74. package/dist/cli/index.mjs +22 -0
  75. package/dist/node_modules/@poppinss/colors/build/index.js +139 -0
  76. package/dist/node_modules/@poppinss/colors/package.json +118 -0
  77. package/dist/node_modules/@poppinss/dumper/build/chunk-26HALFTP.js +602 -0
  78. package/dist/node_modules/@poppinss/dumper/build/formatters/console/main.js +441 -0
  79. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +725 -0
  80. package/dist/node_modules/@poppinss/dumper/package.json +122 -0
  81. package/dist/node_modules/@poppinss/exception/build/index.js +44 -0
  82. package/dist/node_modules/@poppinss/exception/package.json +109 -0
  83. package/dist/node_modules/@sindresorhus/is/distribution/index.js +1354 -0
  84. package/dist/node_modules/@sindresorhus/is/distribution/utilities.js +3 -0
  85. package/dist/node_modules/@sindresorhus/is/package.json +81 -0
  86. package/dist/node_modules/@speed-highlight/core/dist/index.js +4 -0
  87. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -0
  88. package/dist/node_modules/@speed-highlight/core/package.json +94 -0
  89. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  90. package/dist/node_modules/cookie-es/package.json +37 -0
  91. package/dist/node_modules/croner/dist/croner.js +1 -0
  92. package/dist/node_modules/croner/package.json +73 -0
  93. package/dist/node_modules/defu/dist/defu.mjs +69 -0
  94. package/dist/node_modules/defu/package.json +43 -0
  95. package/dist/node_modules/destr/dist/index.mjs +72 -0
  96. package/dist/node_modules/destr/package.json +47 -0
  97. package/dist/node_modules/error-stack-parser-es/dist/index.mjs +38 -0
  98. package/dist/node_modules/error-stack-parser-es/dist/lite.mjs +167 -0
  99. package/dist/node_modules/error-stack-parser-es/package.json +83 -0
  100. package/dist/node_modules/get-port-please/dist/index.mjs +430 -0
  101. package/dist/node_modules/get-port-please/package.json +39 -0
  102. package/dist/node_modules/kleur/index.mjs +110 -0
  103. package/dist/node_modules/kleur/package.json +51 -0
  104. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  105. package/dist/node_modules/rendu/package.json +47 -0
  106. package/dist/node_modules/scule/dist/index.mjs +80 -0
  107. package/dist/node_modules/scule/package.json +43 -0
  108. package/dist/node_modules/source-map/lib/array-set.js +100 -0
  109. package/dist/node_modules/source-map/lib/base64-vlq.js +94 -0
  110. package/dist/node_modules/source-map/lib/base64.js +19 -0
  111. package/dist/node_modules/source-map/lib/binary-search.js +113 -0
  112. package/dist/node_modules/source-map/lib/mapping-list.js +83 -0
  113. package/dist/node_modules/source-map/lib/mappings.wasm +0 -0
  114. package/dist/node_modules/source-map/lib/read-wasm.js +27 -0
  115. package/dist/node_modules/source-map/lib/source-map-consumer.js +1081 -0
  116. package/dist/node_modules/source-map/lib/source-map-generator.js +439 -0
  117. package/dist/node_modules/source-map/lib/source-node.js +430 -0
  118. package/dist/node_modules/source-map/lib/url.js +13 -0
  119. package/dist/node_modules/source-map/lib/util.js +444 -0
  120. package/dist/node_modules/source-map/lib/wasm.js +138 -0
  121. package/dist/node_modules/source-map/package.json +79 -0
  122. package/dist/node_modules/source-map/source-map.js +10 -0
  123. package/dist/node_modules/supports-color/index.js +202 -0
  124. package/dist/node_modules/supports-color/package.json +64 -0
  125. package/dist/node_modules/ufo/dist/index.mjs +645 -0
  126. package/dist/node_modules/ufo/package.json +48 -0
  127. package/dist/node_modules/unctx/dist/index.mjs +131 -0
  128. package/dist/node_modules/unctx/package.json +67 -0
  129. package/dist/node_modules/youch/build/helpers-B9BQYaS6.js +23 -0
  130. package/dist/node_modules/youch/build/index.js +212 -0
  131. package/dist/node_modules/youch/build/public/error_cause/style.css +5 -0
  132. package/dist/node_modules/youch/build/public/error_info/script.js +13 -0
  133. package/dist/node_modules/youch/build/public/error_info/style.css +145 -0
  134. package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
  135. package/dist/node_modules/youch/build/public/error_stack/script.js +72 -0
  136. package/dist/node_modules/youch/build/public/error_stack/style.css +219 -0
  137. package/dist/node_modules/youch/build/public/error_stack_source/style.css +123 -0
  138. package/dist/node_modules/youch/build/public/header/script.js +14 -0
  139. package/dist/node_modules/youch/build/public/header/style.css +56 -0
  140. package/dist/node_modules/youch/build/public/layout/script.js +12 -0
  141. package/dist/node_modules/youch/build/public/layout/style.css +435 -0
  142. package/dist/node_modules/youch/build/public_dir-C5bujZKB.js +25 -0
  143. package/dist/node_modules/youch/build/src/templates/error_cause/main.js +44 -0
  144. package/dist/node_modules/youch/build/src/templates/error_info/main.js +72 -0
  145. package/dist/node_modules/youch/build/src/templates/error_metadata/main.js +65 -0
  146. package/dist/node_modules/youch/build/src/templates/error_stack/main.js +152 -0
  147. package/dist/node_modules/youch/build/src/templates/error_stack_source/main.js +46 -0
  148. package/dist/node_modules/youch/build/src/templates/header/main.js +24 -0
  149. package/dist/node_modules/youch/build/src/templates/layout/main.js +27 -0
  150. package/dist/node_modules/youch/package.json +135 -0
  151. package/dist/node_modules/youch-core/build/index.js +316 -0
  152. package/dist/node_modules/youch-core/package.json +124 -0
  153. package/dist/presets/_nitro/runtime/nitro-dev.mjs +20 -0
  154. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +15 -0
  155. package/dist/presets/_nitro/runtime/service-worker.mjs +23 -0
  156. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +14 -0
  157. package/dist/presets/aws-lambda/runtime/_utils.mjs +116 -0
  158. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +31 -0
  159. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +13 -0
  160. package/dist/presets/azure/runtime/_utils.mjs +50 -0
  161. package/dist/presets/azure/runtime/azure-swa.mjs +30 -0
  162. package/dist/presets/bun/runtime/bun.mjs +40 -0
  163. package/dist/presets/cloudflare/runtime/_module-handler.mjs +87 -0
  164. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +72 -0
  165. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +17 -0
  166. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +39 -0
  167. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +96 -0
  168. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  169. package/dist/presets/deno/runtime/deno-deploy.mjs +19 -0
  170. package/dist/presets/deno/runtime/deno-server.mjs +39 -0
  171. package/dist/presets/netlify/runtime/netlify-edge.mjs +20 -0
  172. package/dist/presets/netlify/runtime/netlify.mjs +20 -0
  173. package/dist/presets/node/runtime/node-cluster.mjs +54 -0
  174. package/dist/presets/node/runtime/node-middleware.mjs +14 -0
  175. package/dist/presets/node/runtime/node-server.mjs +47 -0
  176. package/dist/presets/standard/runtime/server.mjs +4 -0
  177. package/dist/presets/stormkit/runtime/stormkit.mjs +27 -0
  178. package/dist/presets/vercel/runtime/cron-handler.mjs +25 -0
  179. package/dist/presets/vercel/runtime/isr.mjs +19 -0
  180. package/dist/presets/vercel/runtime/vercel.node.mjs +24 -0
  181. package/dist/presets/vercel/runtime/vercel.web.mjs +23 -0
  182. package/dist/presets/winterjs/runtime/winterjs.mjs +91 -0
  183. package/dist/presets/zeabur/runtime/zeabur.mjs +4 -0
  184. package/dist/presets/zephyr/runtime/server.mjs +3 -0
  185. package/dist/runtime/app.d.mts +1 -0
  186. package/dist/runtime/app.mjs +1 -0
  187. package/dist/runtime/cache.d.mts +1 -0
  188. package/dist/runtime/cache.mjs +1 -0
  189. package/dist/runtime/config.d.mts +3 -0
  190. package/dist/runtime/config.mjs +4 -0
  191. package/dist/runtime/context.d.mts +1 -0
  192. package/dist/runtime/context.mjs +1 -0
  193. package/dist/runtime/database.d.mts +1 -0
  194. package/dist/runtime/database.mjs +1 -0
  195. package/dist/runtime/internal/app.d.mts +16 -0
  196. package/dist/runtime/internal/app.mjs +208 -0
  197. package/dist/runtime/internal/cache.d.mts +7 -0
  198. package/dist/runtime/internal/cache.mjs +41 -0
  199. package/dist/runtime/internal/context.d.mts +14 -0
  200. package/dist/runtime/internal/context.mjs +24 -0
  201. package/dist/runtime/internal/database.d.mts +2 -0
  202. package/dist/runtime/internal/database.mjs +12 -0
  203. package/dist/runtime/internal/empty.mjs +0 -0
  204. package/dist/runtime/internal/error/dev.d.mts +10 -0
  205. package/dist/runtime/internal/error/dev.mjs +121 -0
  206. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  207. package/dist/runtime/internal/error/hooks.mjs +9 -0
  208. package/dist/runtime/internal/error/prod.d.mts +6 -0
  209. package/dist/runtime/internal/error/prod.mjs +40 -0
  210. package/dist/runtime/internal/error/utils.d.mts +8 -0
  211. package/dist/runtime/internal/error/utils.mjs +3 -0
  212. package/dist/runtime/internal/meta.d.mts +2 -0
  213. package/dist/runtime/internal/meta.mjs +3 -0
  214. package/dist/runtime/internal/plugin.d.mts +3 -0
  215. package/dist/runtime/internal/plugin.mjs +4 -0
  216. package/dist/runtime/internal/route-rules.d.mts +9 -0
  217. package/dist/runtime/internal/route-rules.mjs +72 -0
  218. package/dist/runtime/internal/routes/dev-tasks.d.mts +3 -0
  219. package/dist/runtime/internal/routes/dev-tasks.mjs +25 -0
  220. package/dist/runtime/internal/routes/openapi.d.mts +3 -0
  221. package/dist/runtime/internal/routes/openapi.mjs +94 -0
  222. package/dist/runtime/internal/routes/renderer-template.d.mts +2 -0
  223. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +3 -0
  224. package/dist/runtime/internal/routes/renderer-template.dev.mjs +19 -0
  225. package/dist/runtime/internal/routes/renderer-template.mjs +4 -0
  226. package/dist/runtime/internal/routes/scalar.d.mts +3 -0
  227. package/dist/runtime/internal/routes/scalar.mjs +193 -0
  228. package/dist/runtime/internal/routes/swagger.d.mts +3 -0
  229. package/dist/runtime/internal/routes/swagger.mjs +42 -0
  230. package/dist/runtime/internal/runtime-config.d.mts +9 -0
  231. package/dist/runtime/internal/runtime-config.mjs +54 -0
  232. package/dist/runtime/internal/static.d.mts +3 -0
  233. package/dist/runtime/internal/static.mjs +67 -0
  234. package/dist/runtime/internal/storage.d.mts +2 -0
  235. package/dist/runtime/internal/storage.mjs +6 -0
  236. package/dist/runtime/internal/task.d.mts +19 -0
  237. package/dist/runtime/internal/task.mjs +69 -0
  238. package/dist/runtime/internal/vite/dev-entry.mjs +18 -0
  239. package/dist/runtime/internal/vite/dev-worker.mjs +264 -0
  240. package/dist/runtime/internal/vite/ssr-renderer.mjs +6 -0
  241. package/dist/runtime/meta.d.mts +5 -0
  242. package/dist/runtime/meta.mjs +27 -0
  243. package/dist/runtime/nitro.d.mts +11 -0
  244. package/dist/runtime/nitro.mjs +34 -0
  245. package/dist/runtime/runtime-config.d.mts +1 -0
  246. package/dist/runtime/runtime-config.mjs +1 -0
  247. package/dist/runtime/storage.d.mts +1 -0
  248. package/dist/runtime/storage.mjs +1 -0
  249. package/dist/runtime/task.d.mts +1 -0
  250. package/dist/runtime/task.mjs +1 -0
  251. package/dist/runtime/virtual/_runtime_warn.d.mts +1 -0
  252. package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
  253. package/dist/runtime/virtual/database.d.mts +8 -0
  254. package/dist/runtime/virtual/database.mjs +2 -0
  255. package/dist/runtime/virtual/error-handler.d.mts +6 -0
  256. package/dist/runtime/virtual/error-handler.mjs +9 -0
  257. package/dist/runtime/virtual/feature-flags.d.mts +7 -0
  258. package/dist/runtime/virtual/feature-flags.mjs +7 -0
  259. package/dist/runtime/virtual/plugins.d.mts +3 -0
  260. package/dist/runtime/virtual/plugins.mjs +2 -0
  261. package/dist/runtime/virtual/polyfills.d.mts +3 -0
  262. package/dist/runtime/virtual/polyfills.mjs +2 -0
  263. package/dist/runtime/virtual/public-assets.d.mts +9 -0
  264. package/dist/runtime/virtual/public-assets.mjs +8 -0
  265. package/dist/runtime/virtual/renderer-template.d.mts +4 -0
  266. package/dist/runtime/virtual/renderer-template.mjs +7 -0
  267. package/dist/runtime/virtual/routing-meta.d.mts +7 -0
  268. package/dist/runtime/virtual/routing-meta.mjs +2 -0
  269. package/dist/runtime/virtual/routing.d.mts +8 -0
  270. package/dist/runtime/virtual/routing.mjs +11 -0
  271. package/dist/runtime/virtual/runtime-config.d.mts +3 -0
  272. package/dist/runtime/virtual/runtime-config.mjs +5 -0
  273. package/dist/runtime/virtual/server-assets.d.mts +7 -0
  274. package/dist/runtime/virtual/server-assets.mjs +12 -0
  275. package/dist/runtime/virtual/storage.d.mts +3 -0
  276. package/dist/runtime/virtual/storage.mjs +5 -0
  277. package/dist/runtime/virtual/tasks.d.mts +10 -0
  278. package/dist/runtime/virtual/tasks.mjs +3 -0
  279. package/dist/runtime/vite.d.mts +8 -0
  280. package/dist/runtime/vite.mjs +9 -0
  281. package/dist/types/index.d.mts +3010 -0
  282. package/dist/types/index.mjs +1 -0
  283. package/dist/vite.d.mts +52 -0
  284. package/dist/vite.mjs +740 -0
  285. package/lib/h3.d.mts +1 -0
  286. package/lib/h3.mjs +1 -0
  287. package/lib/tsconfig.json +27 -0
  288. package/lib/vite.types.d.mts +26 -0
  289. package/lib/vite.types.mjs +2 -0
  290. package/package.json +256 -0
  291. package/skills/nitro/SKILL.md +10 -0
  292. package/skills/nitro/docs/TOC.md +83 -0
  293. package/skills/nitro/docs/_navigation.json +679 -0
  294. package/skills/nitro/docs/config/index.md +1147 -0
  295. package/skills/nitro/docs/deploy/index.md +64 -0
  296. package/skills/nitro/docs/deploy/providers/alwaysdata.md +50 -0
  297. package/skills/nitro/docs/deploy/providers/aws-amplify.md +81 -0
  298. package/skills/nitro/docs/deploy/providers/aws.md +47 -0
  299. package/skills/nitro/docs/deploy/providers/azure.md +72 -0
  300. package/skills/nitro/docs/deploy/providers/cleavr.md +33 -0
  301. package/skills/nitro/docs/deploy/providers/cloudflare.md +375 -0
  302. package/skills/nitro/docs/deploy/providers/deno-deploy.md +66 -0
  303. package/skills/nitro/docs/deploy/providers/digitalocean.md +46 -0
  304. package/skills/nitro/docs/deploy/providers/firebase.md +32 -0
  305. package/skills/nitro/docs/deploy/providers/flightcontrol.md +67 -0
  306. package/skills/nitro/docs/deploy/providers/genezio.md +67 -0
  307. package/skills/nitro/docs/deploy/providers/github-pages.md +68 -0
  308. package/skills/nitro/docs/deploy/providers/gitlab-pages.md +37 -0
  309. package/skills/nitro/docs/deploy/providers/heroku.md +84 -0
  310. package/skills/nitro/docs/deploy/providers/iis.md +38 -0
  311. package/skills/nitro/docs/deploy/providers/koyeb.md +109 -0
  312. package/skills/nitro/docs/deploy/providers/netlify.md +47 -0
  313. package/skills/nitro/docs/deploy/providers/platform-sh.md +37 -0
  314. package/skills/nitro/docs/deploy/providers/render.md +37 -0
  315. package/skills/nitro/docs/deploy/providers/stormkit.md +24 -0
  316. package/skills/nitro/docs/deploy/providers/vercel.md +179 -0
  317. package/skills/nitro/docs/deploy/providers/zeabur.md +19 -0
  318. package/skills/nitro/docs/deploy/providers/zephyr.md +99 -0
  319. package/skills/nitro/docs/deploy/providers/zerops.md +102 -0
  320. package/skills/nitro/docs/deploy/runtimes/bun.md +15 -0
  321. package/skills/nitro/docs/deploy/runtimes/deno.md +19 -0
  322. package/skills/nitro/docs/deploy/runtimes/node.md +63 -0
  323. package/skills/nitro/docs/docs/assets.md +166 -0
  324. package/skills/nitro/docs/docs/cache.md +408 -0
  325. package/skills/nitro/docs/docs/configuration.md +256 -0
  326. package/skills/nitro/docs/docs/database.md +185 -0
  327. package/skills/nitro/docs/docs/index.md +56 -0
  328. package/skills/nitro/docs/docs/lifecycle.md +204 -0
  329. package/skills/nitro/docs/docs/migration.md +215 -0
  330. package/skills/nitro/docs/docs/nightly.md +31 -0
  331. package/skills/nitro/docs/docs/plugins.md +164 -0
  332. package/skills/nitro/docs/docs/quick-start.md +110 -0
  333. package/skills/nitro/docs/docs/renderer.md +322 -0
  334. package/skills/nitro/docs/docs/routing.md +711 -0
  335. package/skills/nitro/docs/docs/server-entry.md +239 -0
  336. package/skills/nitro/docs/docs/storage.md +261 -0
  337. package/skills/nitro/docs/docs/tasks.md +277 -0
  338. package/skills/nitro/docs/examples/api-routes.md +145 -0
  339. package/skills/nitro/docs/examples/auto-imports.md +93 -0
  340. package/skills/nitro/docs/examples/cached-handler.md +81 -0
  341. package/skills/nitro/docs/examples/custom-error-handler.md +98 -0
  342. package/skills/nitro/docs/examples/database.md +157 -0
  343. package/skills/nitro/docs/examples/elysia.md +70 -0
  344. package/skills/nitro/docs/examples/express.md +78 -0
  345. package/skills/nitro/docs/examples/fastify.md +79 -0
  346. package/skills/nitro/docs/examples/hello-world.md +68 -0
  347. package/skills/nitro/docs/examples/hono.md +74 -0
  348. package/skills/nitro/docs/examples/import-alias.md +100 -0
  349. package/skills/nitro/docs/examples/index.md +3 -0
  350. package/skills/nitro/docs/examples/middleware.md +91 -0
  351. package/skills/nitro/docs/examples/mono-jsx.md +68 -0
  352. package/skills/nitro/docs/examples/nano-jsx.md +70 -0
  353. package/skills/nitro/docs/examples/plugins.md +91 -0
  354. package/skills/nitro/docs/examples/renderer.md +113 -0
  355. package/skills/nitro/docs/examples/runtime-config.md +97 -0
  356. package/skills/nitro/docs/examples/server-fetch.md +87 -0
  357. package/skills/nitro/docs/examples/shiki.md +198 -0
  358. package/skills/nitro/docs/examples/virtual-routes.md +74 -0
  359. package/skills/nitro/docs/examples/vite-nitro-plugin.md +79 -0
  360. package/skills/nitro/docs/examples/vite-rsc.md +1041 -0
  361. package/skills/nitro/docs/examples/vite-ssr-html.md +217 -0
  362. package/skills/nitro/docs/examples/vite-ssr-preact.md +247 -0
  363. package/skills/nitro/docs/examples/vite-ssr-react.md +226 -0
  364. package/skills/nitro/docs/examples/vite-ssr-solid.md +256 -0
  365. package/skills/nitro/docs/examples/vite-ssr-tsr-react.md +442 -0
  366. package/skills/nitro/docs/examples/vite-ssr-tss-react.md +444 -0
  367. package/skills/nitro/docs/examples/vite-ssr-vue-router.md +616 -0
  368. package/skills/nitro/docs/examples/vite-trpc.md +335 -0
  369. package/skills/nitro/docs/examples/websocket.md +282 -0
  370. package/skills/nitro/docs/index.md +121 -0
package/dist/vite.mjs ADDED
@@ -0,0 +1,740 @@
1
+ import "./_libs/c12+rc9.mjs";
2
+ import { D as copyPublicAssets, E as prepare, F as prettyPath, H as v, V as m, at as dirname$1, ct as join$1, d as libChunkName, dt as resolve$1, f as baseBuildConfig, h as writeBuildInfo, it as basename$1, l as NODE_MODULES_RE, n as baseBuildPlugins, nt as resolveModulePath, st as isAbsolute$1, u as getChunkName } from "./_build/common.mjs";
3
+ import { t as formatCompatibilityDate } from "./_libs/compatx.mjs";
4
+ import "./_libs/klona.mjs";
5
+ import { i as createNitro, r as prerender } from "./_chunks/nitro.mjs";
6
+ import "./_libs/escape-string-regexp.mjs";
7
+ import "./_libs/tsconfck.mjs";
8
+ import { n as scanHandlers } from "./_chunks/nitro2.mjs";
9
+ import "./_libs/rou3.mjs";
10
+ import { n as watch$1 } from "./_libs/readdirp+chokidar.mjs";
11
+ import { t as debounce } from "./_libs/perfect-debounce.mjs";
12
+ import "./_libs/httpxy.mjs";
13
+ import { r as NitroDevApp } from "./_dev.mjs";
14
+ import "./_libs/ultrahtml.mjs";
15
+ import { t as startPreview } from "./_chunks/nitro3.mjs";
16
+ import { n as assetsPlugin } from "./_libs/pluginutils.mjs";
17
+ import { existsSync, watch } from "node:fs";
18
+ import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
19
+ import { join, resolve } from "node:path";
20
+ import { defu } from "defu";
21
+ import { runtimeDependencies, runtimeDir } from "nitro/meta";
22
+ import { colors } from "consola/utils";
23
+ import { RunnerManager, loadRunner } from "env-runner";
24
+ import { NodeRequest, sendNodeResponse } from "srvx/node";
25
+ import "node:http";
26
+ import { DevEnvironment } from "vite";
27
+ import { createViteHotChannel } from "env-runner/vite";
28
+ //#region src/build/vite/bundler.ts
29
+ const getBundlerConfig = async (ctx) => {
30
+ const nitro = ctx.nitro;
31
+ const base = baseBuildConfig(nitro);
32
+ const commonConfig = {
33
+ input: nitro.options.entry,
34
+ external: [...base.env.external],
35
+ plugins: [...await baseBuildPlugins(nitro, base)].filter(Boolean),
36
+ treeshake: { moduleSideEffects(id) {
37
+ return nitro.options.moduleSideEffects.some((p) => id.startsWith(p));
38
+ } },
39
+ onwarn(warning, warn) {
40
+ if (!base.ignoreWarningCodes.has(warning.code || "")) warn(warning);
41
+ },
42
+ output: {
43
+ dir: nitro.options.output.serverDir,
44
+ format: "esm",
45
+ entryFileNames: "index.mjs",
46
+ chunkFileNames: (chunk) => getChunkName(chunk, nitro),
47
+ inlineDynamicImports: nitro.options.inlineDynamicImports,
48
+ sourcemapIgnoreList: (id) => id.includes("node_modules")
49
+ }
50
+ };
51
+ if (ctx._isRolldown) {
52
+ const rolldownConfig = defu({
53
+ transform: { inject: base.env.inject },
54
+ output: { codeSplitting: { groups: [{
55
+ test: NODE_MODULES_RE,
56
+ name: (id) => libChunkName(id)
57
+ }] } }
58
+ }, nitro.options.rolldownConfig, nitro.options.rollupConfig, commonConfig);
59
+ const outputConfig = rolldownConfig.output;
60
+ if (outputConfig.inlineDynamicImports || outputConfig.format === "iife") {
61
+ delete outputConfig.inlineDynamicImports;
62
+ outputConfig.codeSplitting = false;
63
+ }
64
+ return {
65
+ base,
66
+ rolldownConfig
67
+ };
68
+ } else {
69
+ const inject = (await import("./_libs/_3.mjs")).default;
70
+ const alias = (await import("./_libs/plugin-alias.mjs").then((n) => n.n)).default;
71
+ const rollupConfig = defu({
72
+ plugins: [inject(base.env.inject), alias({ entries: base.aliases })],
73
+ output: {
74
+ sourcemapExcludeSources: true,
75
+ generatedCode: { constBindings: true },
76
+ manualChunks(id) {
77
+ if (NODE_MODULES_RE.test(id)) return libChunkName(id);
78
+ }
79
+ }
80
+ }, nitro.options.rolldownConfig, nitro.options.rollupConfig, commonConfig);
81
+ const outputConfig = rollupConfig.output;
82
+ if (outputConfig.inlineDynamicImports || outputConfig.format === "iife") delete outputConfig.manualChunks;
83
+ return {
84
+ base,
85
+ rollupConfig
86
+ };
87
+ }
88
+ };
89
+ //#endregion
90
+ //#region src/build/vite/prod.ts
91
+ const BuilderNames = {
92
+ nitro: colors.magenta("Nitro"),
93
+ client: colors.green("Client"),
94
+ ssr: colors.blue("SSR")
95
+ };
96
+ async function buildEnvironments(ctx, builder) {
97
+ const nitro = ctx.nitro;
98
+ for (const [envName, env] of Object.entries(builder.environments)) {
99
+ const fmtName = BuilderNames[envName] || (envName.length <= 3 ? envName.toUpperCase() : envName[0].toUpperCase() + envName.slice(1));
100
+ if (envName === "nitro" || !env.config.build.rollupOptions.input || env.isBuilt) {
101
+ if (![
102
+ "nitro",
103
+ "ssr",
104
+ "client"
105
+ ].includes(envName)) nitro.logger.info(env.isBuilt ? `Skipping ${fmtName} (already built)` : `Skipping ${fmtName} (no input defined)`);
106
+ continue;
107
+ }
108
+ if (!v && !m) console.log();
109
+ nitro.logger.start(`Building [${fmtName}]`);
110
+ await builder.build(env);
111
+ }
112
+ const nitroOptions = ctx.nitro.options;
113
+ const clientInput = builder.environments.client?.config?.build?.rollupOptions?.input;
114
+ if (nitroOptions.renderer?.template && nitroOptions.renderer?.template === clientInput) {
115
+ const outputPath = resolve$1(nitroOptions.output.publicDir, basename$1(clientInput));
116
+ if (existsSync(outputPath)) {
117
+ const html = await readFile(outputPath, "utf8").then((r) => r.replace("<!--ssr-outlet-->", `{{{ globalThis.__nitro_vite_envs__?.["ssr"]?.fetch($REQUEST) || "" }}}`));
118
+ await rm(outputPath);
119
+ const tmp = resolve$1(nitroOptions.buildDir, "vite/index.html");
120
+ await mkdir(dirname$1(tmp), { recursive: true });
121
+ await writeFile(tmp, html, "utf8");
122
+ nitroOptions.renderer.template = tmp;
123
+ }
124
+ }
125
+ await builder.writeAssetsManifest?.();
126
+ if (!v && !m) console.log();
127
+ const buildInfo = [["preset", nitro.options.preset], ["compatibility", formatCompatibilityDate(nitro.options.compatibilityDate)]].filter((e) => e[1]);
128
+ nitro.logger.start(`Building [${BuilderNames.nitro}] ${colors.dim(`(${buildInfo.map(([k, v]) => `${k}: \`${v}\``).join(", ")})`)}`);
129
+ await copyPublicAssets(nitro);
130
+ const assetDirs = new Set(Object.values(builder.environments).filter((env) => env.config.consumer === "client").map((env) => env.config.build.assetsDir).filter(Boolean));
131
+ for (const assetsDir of assetDirs) {
132
+ if (!existsSync(resolve$1(nitro.options.output.publicDir, assetsDir))) continue;
133
+ const rule = ctx.nitro.options.routeRules[`/${assetsDir}/**`] ??= {};
134
+ if (!rule.headers?.["cache-control"]) rule.headers = {
135
+ ...rule.headers,
136
+ "cache-control": `public, max-age=31536000, immutable`
137
+ };
138
+ }
139
+ ctx.nitro.routing.sync();
140
+ await prerender(nitro);
141
+ const output = await builder.build(builder.environments.nitro);
142
+ await nitro.close();
143
+ await nitro.hooks.callHook("compiled", nitro);
144
+ await writeBuildInfo(nitro, output);
145
+ if (!v && !m) console.log();
146
+ nitro.logger.success("You can preview this build using `npx vite preview`");
147
+ if (nitro.options.commands.deploy) nitro.logger.success("You can deploy this build using `npx nitro deploy --prebuilt`");
148
+ }
149
+ function prodSetup(ctx) {
150
+ return `
151
+ function lazyService(loader) {
152
+ let promise, mod
153
+ return {
154
+ fetch(req) {
155
+ if (mod) { return mod.fetch(req) }
156
+ if (!promise) {
157
+ promise = loader().then(_mod => (mod = _mod.default || _mod))
158
+ }
159
+ return promise.then(mod => mod.fetch(req))
160
+ }
161
+ }
162
+ }
163
+
164
+ const services = {
165
+ ${Object.keys(ctx.services).map((name) => {
166
+ return [name, resolve$1(ctx.nitro.options.buildDir, "vite/services", name, ctx._entryPoints[name])];
167
+ }).map(([name, entry]) => `[${JSON.stringify(name)}]: lazyService(() => import(${JSON.stringify(entry)}))`).join(",\n")}
168
+ };
169
+
170
+ globalThis.__nitro_vite_envs__ = services;
171
+ `;
172
+ }
173
+ //#endregion
174
+ //#region src/build/vite/dev.ts
175
+ function createFetchableDevEnvironment(name, config, devServer, entry, opts) {
176
+ return new FetchableDevEnvironment(name, config, {
177
+ hot: true,
178
+ transport: createViteHotChannel(devServer, name)
179
+ }, devServer, entry, opts);
180
+ }
181
+ var FetchableDevEnvironment = class extends DevEnvironment {
182
+ devServer;
183
+ #entry;
184
+ #preventExternalize;
185
+ constructor(name, config, context, devServer, entry, opts) {
186
+ super(name, config, context);
187
+ this.devServer = devServer;
188
+ this.#entry = entry;
189
+ this.#preventExternalize = opts?.preventExternalize ?? false;
190
+ }
191
+ async fetchModule(id, importer, options) {
192
+ if (this.#preventExternalize && !id.startsWith("file://") && importer && id[0] !== "." && id[0] !== "/") {
193
+ const resolved = await this.pluginContainer.resolveId(id, importer);
194
+ if (resolved && !resolved.external) return super.fetchModule(resolved.id, importer, options);
195
+ }
196
+ return super.fetchModule(id, importer, options);
197
+ }
198
+ async dispatchFetch(request) {
199
+ return this.devServer.fetch(request);
200
+ }
201
+ async init(...args) {
202
+ await this.devServer.init?.();
203
+ await super.init(...args);
204
+ this.devServer.sendMessage({
205
+ type: "custom",
206
+ event: "nitro:vite-env",
207
+ data: {
208
+ name: this.name,
209
+ entry: this.#entry
210
+ }
211
+ });
212
+ }
213
+ };
214
+ async function configureViteDevServer(ctx, server) {
215
+ const nitro = ctx.nitro;
216
+ const nitroEnv = server.environments.nitro;
217
+ const nitroConfigFile = nitro.options._c12.configFile;
218
+ if (nitroConfigFile) server.config.configFileDependencies.push(nitroConfigFile);
219
+ if (nitro.options.features.websocket ?? nitro.options.experimental.websocket) server.httpServer.on("upgrade", (req, socket, head) => {
220
+ if (req.headers["sec-websocket-protocol"]?.startsWith("vite-")) return;
221
+ getEnvRunner(ctx).upgrade?.({ node: {
222
+ req,
223
+ socket,
224
+ head
225
+ } });
226
+ });
227
+ const reload = debounce(async () => {
228
+ await scanHandlers(nitro);
229
+ nitro.routing.sync();
230
+ nitroEnv.moduleGraph.invalidateAll();
231
+ nitroEnv.hot.send({ type: "full-reload" });
232
+ });
233
+ const scanDirs = nitro.options.scanDirs.flatMap((dir) => [
234
+ join$1(dir, nitro.options.apiDir || "api"),
235
+ join$1(dir, nitro.options.routesDir || "routes"),
236
+ join$1(dir, "middleware"),
237
+ join$1(dir, "plugins"),
238
+ join$1(dir, "modules")
239
+ ]);
240
+ const watchReloadEvents = new Set([
241
+ "add",
242
+ "addDir",
243
+ "unlink",
244
+ "unlinkDir"
245
+ ]);
246
+ const scanDirsWatcher = watch$1(scanDirs, { ignoreInitial: true }).on("all", (event, path, stat) => {
247
+ if (watchReloadEvents.has(event)) reload();
248
+ });
249
+ const rootDirWatcher = watch(nitro.options.rootDir, { persistent: false }, (_event, filename) => {
250
+ if (filename && /^server\.[mc]?[jt]sx?$/.test(filename)) reload();
251
+ });
252
+ nitro.hooks.hook("close", () => {
253
+ scanDirsWatcher.close();
254
+ rootDirWatcher.close();
255
+ });
256
+ nitroEnv.devServer.onMessage(async (message) => {
257
+ if (message?.__rpc === "transformHTML") try {
258
+ const html = (await server.transformIndexHtml("/", message.data)).replace("<!--ssr-outlet-->", `{{{ globalThis.__nitro_vite_envs__?.["ssr"]?.fetch($REQUEST) || "" }}}`);
259
+ nitroEnv.devServer.sendMessage({
260
+ __rpc_id: message.__rpc_id,
261
+ data: html
262
+ });
263
+ } catch (error) {
264
+ nitroEnv.devServer.sendMessage({
265
+ __rpc_id: message.__rpc_id,
266
+ error: error instanceof Error ? error.message : String(error)
267
+ });
268
+ }
269
+ });
270
+ const nitroDevMiddleware = async (nodeReq, nodeRes, next) => {
271
+ 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();
272
+ nodeReq._nitroHandled = true;
273
+ try {
274
+ const req = new NodeRequest({
275
+ req: nodeReq,
276
+ res: nodeRes
277
+ });
278
+ const devAppRes = await ctx.devApp.fetch(req);
279
+ if (nodeRes.writableEnded || nodeRes.headersSent) return;
280
+ if (devAppRes.status !== 404) return await sendNodeResponse(nodeRes, devAppRes);
281
+ const envRes = await nitroEnv.dispatchFetch(req);
282
+ if (nodeRes.writableEnded || nodeRes.headersSent) return;
283
+ return await sendNodeResponse(nodeRes, envRes);
284
+ } catch (error) {
285
+ return next(error);
286
+ }
287
+ };
288
+ server.middlewares.use(function nitroDevMiddlewarePre(req, res, next) {
289
+ const fetchDest = req.headers["sec-fetch-dest"];
290
+ res.setHeader("vary", "sec-fetch-dest");
291
+ if ((!fetchDest || /^(document|iframe|frame|empty)$/.test(fetchDest)) && !req.url.match(/\.([a-z0-9]+)(?:[?#]|$)/i)?.[1] && !/^\/(?:__|@)/.test(req.url)) nitroDevMiddleware(req, res, next);
292
+ else next();
293
+ });
294
+ return () => {
295
+ server.middlewares.use(nitroDevMiddleware);
296
+ };
297
+ }
298
+ //#endregion
299
+ //#region src/build/vite/env.ts
300
+ function createNitroEnvironment(ctx) {
301
+ const isWorkerdRunner = _isWorkerdRunner(ctx);
302
+ return {
303
+ consumer: "server",
304
+ build: {
305
+ rollupOptions: ctx.bundlerConfig.rollupConfig,
306
+ rolldownOptions: ctx.bundlerConfig.rolldownConfig,
307
+ minify: ctx.nitro.options.minify,
308
+ emptyOutDir: false,
309
+ sourcemap: ctx.nitro.options.sourcemap,
310
+ commonjsOptions: ctx.nitro.options.commonJS,
311
+ copyPublicDir: false
312
+ },
313
+ resolve: {
314
+ noExternal: ctx.nitro.options.dev ? isWorkerdRunner ? true : [
315
+ /^nitro$/,
316
+ new RegExp(`^(${runtimeDependencies.join("|")})$`),
317
+ ...ctx.bundlerConfig.base.noExternal
318
+ ] : true,
319
+ conditions: isWorkerdRunner ? [
320
+ "workerd",
321
+ "worker",
322
+ ...ctx.nitro.options.exportConditions.filter((c) => c !== "node")
323
+ ] : ctx.nitro.options.exportConditions,
324
+ externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm|module/.test(c))
325
+ },
326
+ define: { "process.env.NODE_ENV": JSON.stringify(ctx.nitro.options.dev ? "development" : "production") },
327
+ dev: { createEnvironment: (envName, envConfig) => {
328
+ const entry = resolve(runtimeDir, "internal/vite/dev-entry.mjs");
329
+ const env = createFetchableDevEnvironment(envName, envConfig, getEnvRunner(ctx), entry, { preventExternalize: isWorkerdRunner });
330
+ ctx._transformRequest = (id) => env.transformRequest(id);
331
+ (ctx._viteEnvs ??= /* @__PURE__ */ new Map()).set(envName, entry);
332
+ return env;
333
+ } }
334
+ };
335
+ }
336
+ function createServiceEnvironment(ctx, name, serviceConfig) {
337
+ const isWorkerdRunner = _isWorkerdRunner(ctx);
338
+ return {
339
+ consumer: "server",
340
+ build: {
341
+ rollupOptions: { input: { index: serviceConfig.entry } },
342
+ minify: ctx.nitro.options.minify,
343
+ sourcemap: ctx.nitro.options.sourcemap,
344
+ outDir: join(ctx.nitro.options.buildDir, "vite/services", name),
345
+ emptyOutDir: true,
346
+ copyPublicDir: false
347
+ },
348
+ resolve: {
349
+ ...isWorkerdRunner ? { noExternal: true } : {},
350
+ conditions: isWorkerdRunner ? [
351
+ "workerd",
352
+ "worker",
353
+ ...ctx.nitro.options.exportConditions.filter((c) => c !== "node")
354
+ ] : ctx.nitro.options.exportConditions,
355
+ externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm|module/.test(c))
356
+ },
357
+ dev: { createEnvironment: (envName, envConfig) => {
358
+ const entry = tryResolve(serviceConfig.entry);
359
+ (ctx._viteEnvs ??= /* @__PURE__ */ new Map()).set(envName, entry);
360
+ return createFetchableDevEnvironment(envName, envConfig, getEnvRunner(ctx), entry, { preventExternalize: isWorkerdRunner });
361
+ } }
362
+ };
363
+ }
364
+ function createServiceEnvironments(ctx) {
365
+ return Object.fromEntries(Object.entries(ctx.services).map(([name, config]) => [name, createServiceEnvironment(ctx, name, config)]));
366
+ }
367
+ async function initEnvRunner(ctx) {
368
+ if (ctx._envRunner) return ctx._envRunner;
369
+ if (!ctx._initPromise) ctx._initPromise = (async () => {
370
+ const manager = new RunnerManager();
371
+ let _retries = 0;
372
+ manager.onClose((_runner, cause) => {
373
+ if (_retries++ < 3) {
374
+ ctx.nitro.logger.info("Restarting env runner...", cause ? `Cause: ${cause}` : "");
375
+ _loadRunner(ctx, manager);
376
+ } else ctx.nitro.logger.error("Env runner failed after 3 retries.", cause ? `Last cause: ${cause}` : "");
377
+ });
378
+ manager.onReady(() => {
379
+ _retries = 0;
380
+ if (ctx._viteEnvs) for (const [name, entry] of ctx._viteEnvs) manager.sendMessage({
381
+ type: "custom",
382
+ event: "nitro:vite-env",
383
+ data: {
384
+ name,
385
+ entry
386
+ }
387
+ });
388
+ });
389
+ await _loadRunner(ctx, manager);
390
+ ctx._envRunner = manager;
391
+ return manager;
392
+ })();
393
+ return await ctx._initPromise;
394
+ }
395
+ function getEnvRunner(ctx) {
396
+ if (!ctx._envRunner) throw new Error("Env runner not initialized. Call initEnvRunner() first.");
397
+ return ctx._envRunner;
398
+ }
399
+ async function _loadRunner(ctx, manager) {
400
+ const runnerName = ctx.nitro.options.devServer.runner || process.env.NITRO_DEV_RUNNER || "node-worker";
401
+ const entry = resolve(runtimeDir, "internal/vite/dev-worker.mjs");
402
+ let runner;
403
+ if (runnerName === "miniflare") {
404
+ const { MiniflareEnvRunner } = await import("env-runner/runners/miniflare");
405
+ runner = new MiniflareEnvRunner({
406
+ name: "nitro-vite",
407
+ data: { entry }
408
+ });
409
+ } else runner = await loadRunner(runnerName, {
410
+ name: "nitro-vite",
411
+ data: { entry }
412
+ });
413
+ await manager.reload(runner);
414
+ }
415
+ function _isWorkerdRunner(ctx) {
416
+ return (ctx.nitro.options.devServer.runner || process.env.NITRO_DEV_RUNNER || "node-worker") === "miniflare";
417
+ }
418
+ function tryResolve(id) {
419
+ if (/^[~#/\0]/.test(id) || isAbsolute$1(id)) return id;
420
+ return resolveModulePath(id, {
421
+ suffixes: ["", "/index"],
422
+ extensions: [
423
+ "",
424
+ ".ts",
425
+ ".mjs",
426
+ ".cjs",
427
+ ".js",
428
+ ".mts",
429
+ ".cts"
430
+ ],
431
+ try: true
432
+ }) || id;
433
+ }
434
+ //#endregion
435
+ //#region src/build/vite/preview.ts
436
+ function nitroPreviewPlugin(ctx) {
437
+ return {
438
+ name: "nitro:preview",
439
+ apply: (_config, configEnv) => !!configEnv.isPreview,
440
+ config(config) {
441
+ return { preview: { port: config.preview?.port || 3e3 } };
442
+ },
443
+ async configurePreviewServer(server) {
444
+ const preview = await startPreview({
445
+ rootDir: server.config.root,
446
+ loader: { nodeServer: server.httpServer }
447
+ });
448
+ server.httpServer.once("close", async () => {
449
+ await preview.close();
450
+ });
451
+ const { NodeRequest, sendNodeResponse } = await import("srvx/node");
452
+ server.middlewares.use(async (req, res, next) => {
453
+ const nodeReq = new NodeRequest({
454
+ req,
455
+ res
456
+ });
457
+ await sendNodeResponse(res, await preview.fetch(nodeReq)).catch(next);
458
+ });
459
+ if (preview.upgrade) server.httpServer.on("upgrade", (req, socket, head) => {
460
+ preview.upgrade(req, socket, head);
461
+ });
462
+ }
463
+ };
464
+ }
465
+ //#endregion
466
+ //#region src/build/vite/plugin.ts
467
+ const DEFAULT_EXTENSIONS = [
468
+ ".ts",
469
+ ".js",
470
+ ".mts",
471
+ ".mjs",
472
+ ".tsx",
473
+ ".jsx"
474
+ ];
475
+ const debug = process.env.NITRO_DEBUG ? (...args) => console.log("[nitro]", ...args) : () => {};
476
+ function nitro(pluginConfig = {}) {
477
+ if (globalThis.__nitro_build__) return [];
478
+ const ctx = createContext(pluginConfig);
479
+ return [
480
+ nitroInit(ctx),
481
+ nitroEnv(ctx),
482
+ nitroMain(ctx),
483
+ nitroPrepare(ctx),
484
+ nitroService(ctx),
485
+ nitroPreviewPlugin(ctx),
486
+ pluginConfig.experimental?.vite?.assetsImport !== false && assetsPlugin({ experimental: { clientBuildFallback: false } })
487
+ ].filter(Boolean);
488
+ }
489
+ function nitroInit(ctx) {
490
+ return {
491
+ name: "nitro:init",
492
+ sharedDuringBuild: true,
493
+ apply: (_config, configEnv) => !configEnv.isPreview,
494
+ async config(config, configEnv) {
495
+ ctx._isRolldown = !!this.meta.rolldownVersion;
496
+ if (!ctx._initialized) {
497
+ debug("[init] Initializing nitro");
498
+ ctx._initialized = true;
499
+ await setupNitroContext(ctx, configEnv, config);
500
+ }
501
+ },
502
+ applyToEnvironment(env) {
503
+ if (env.name === "nitro" && ctx.nitro?.options.dev) {
504
+ debug("[init] Adding rollup plugins for dev");
505
+ return [...ctx.bundlerConfig?.rolldownConfig?.plugins || ctx.bundlerConfig?.rollupConfig?.plugins || []];
506
+ }
507
+ }
508
+ };
509
+ }
510
+ function nitroEnv(ctx) {
511
+ return {
512
+ name: "nitro:env",
513
+ sharedDuringBuild: true,
514
+ apply: (_config, configEnv) => !configEnv.isPreview,
515
+ async config(userConfig, _configEnv) {
516
+ debug("[env] Extending config (environments)");
517
+ const environments = {
518
+ ...createServiceEnvironments(ctx),
519
+ nitro: createNitroEnvironment(ctx)
520
+ };
521
+ environments.client = {
522
+ consumer: userConfig.environments?.client?.consumer ?? "client",
523
+ build: { rollupOptions: { input: userConfig.environments?.client?.build?.rollupOptions?.input ?? useNitro(ctx).options.renderer?.template } }
524
+ };
525
+ debug("[env] Environments:", Object.keys(environments).join(", "));
526
+ return { environments };
527
+ },
528
+ configEnvironment(name, config) {
529
+ if (config.consumer === "client") {
530
+ debug("[env] Configuring client environment", name === "client" ? "" : ` (${name})`);
531
+ config.build.emptyOutDir = false;
532
+ config.build.outDir = useNitro(ctx).options.output.publicDir;
533
+ config.build.copyPublicDir ??= false;
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
+ if (ctx.pluginConfig.experimental?.vite?.serverReload === false) return;
601
+ const env = this.environment;
602
+ if (env.config.consumer === "client") return;
603
+ const clientEnvs = Object.values(server.environments).filter((env) => env.config.consumer === "client");
604
+ const serverOnlyModules = [];
605
+ const sharedModules = [];
606
+ const invalidated = /* @__PURE__ */ new Set();
607
+ for (const mod of modules) if (mod.id && !clientEnvs.some((env) => env.moduleGraph.getModuleById(mod.id))) {
608
+ serverOnlyModules.push(mod);
609
+ env.moduleGraph.invalidateModule(mod, invalidated, timestamp, false);
610
+ } else sharedModules.push(mod);
611
+ if (serverOnlyModules.length > 0) {
612
+ env.hot.send({ type: "full-reload" });
613
+ if (sharedModules.length === 0 && serverOnlyModules.some((m) => m.environment !== "ssr")) server.ws.send({ type: "full-reload" });
614
+ return sharedModules;
615
+ }
616
+ }
617
+ };
618
+ }
619
+ function nitroPrepare(ctx) {
620
+ return {
621
+ name: "nitro:prepare",
622
+ sharedDuringBuild: true,
623
+ applyToEnvironment: (env) => env.name === "nitro",
624
+ buildApp: {
625
+ order: "pre",
626
+ async handler() {
627
+ debug("[prepare] Preparing output directory");
628
+ const nitro = ctx.nitro;
629
+ await prepare(nitro);
630
+ }
631
+ }
632
+ };
633
+ }
634
+ function nitroService(ctx) {
635
+ return {
636
+ name: "nitro:service",
637
+ enforce: "pre",
638
+ sharedDuringBuild: true,
639
+ applyToEnvironment: (env) => env.name === "nitro",
640
+ resolveId: {
641
+ filter: { id: /^#nitro-vite-setup$/ },
642
+ async handler(id) {
643
+ if (id === "#nitro-vite-setup") return {
644
+ id,
645
+ moduleSideEffects: true
646
+ };
647
+ }
648
+ },
649
+ load: {
650
+ filter: { id: /^#nitro-vite-setup$/ },
651
+ async handler(id) {
652
+ if (id === "#nitro-vite-setup") return prodSetup(ctx);
653
+ }
654
+ }
655
+ };
656
+ }
657
+ function createContext(pluginConfig) {
658
+ return {
659
+ pluginConfig,
660
+ services: { ...pluginConfig.experimental?.vite?.services },
661
+ _entryPoints: {}
662
+ };
663
+ }
664
+ function useNitro(ctx) {
665
+ if (!ctx.nitro) throw new Error("Nitro instance is not initialized yet.");
666
+ return ctx.nitro;
667
+ }
668
+ async function setupNitroContext(ctx, configEnv, userConfig) {
669
+ const nitroConfig = {
670
+ dev: configEnv.command === "serve",
671
+ builder: "vite",
672
+ rootDir: userConfig.root,
673
+ ...defu(ctx.pluginConfig, ctx.pluginConfig.config, userConfig.nitro)
674
+ };
675
+ nitroConfig.modules ??= [];
676
+ for (const plugin of flattenPlugins(userConfig.plugins || [])) if (plugin.nitro) nitroConfig.modules.push(plugin.nitro);
677
+ const dotenvFileNames = [".env", ".env.local"];
678
+ if (configEnv.mode) dotenvFileNames.push(`.env.${configEnv.mode}`, `.env.${configEnv.mode}.local`);
679
+ ctx.nitro = ctx.pluginConfig._nitro || await createNitro(nitroConfig, { dotenv: { fileName: dotenvFileNames } });
680
+ if (!ctx.services?.ssr) if (userConfig.environments?.ssr === void 0) {
681
+ const ssrEntry = resolveModulePath("./entry-server", {
682
+ from: [
683
+ "app",
684
+ "src",
685
+ ""
686
+ ].flatMap((d) => [ctx.nitro.options.rootDir, ...ctx.nitro.options.scanDirs].map((s) => join$1(s, d) + "/")),
687
+ extensions: DEFAULT_EXTENSIONS,
688
+ try: true
689
+ });
690
+ if (ssrEntry) {
691
+ ctx.services.ssr = { entry: ssrEntry };
692
+ ctx.nitro.logger.info(`Using \`${prettyPath(ssrEntry)}\` as vite ssr entry.`);
693
+ }
694
+ } else {
695
+ let ssrEntry = getEntry(userConfig.environments.ssr.build?.rollupOptions?.input);
696
+ if (typeof ssrEntry === "string") {
697
+ ssrEntry = resolveModulePath(ssrEntry, {
698
+ from: [ctx.nitro.options.rootDir, ...ctx.nitro.options.scanDirs],
699
+ extensions: DEFAULT_EXTENSIONS,
700
+ suffixes: ["", "/index"],
701
+ try: true
702
+ }) || ssrEntry;
703
+ ctx.services.ssr = { entry: ssrEntry };
704
+ }
705
+ }
706
+ if (ctx.nitro.options.serverEntry && ctx.nitro.options.serverEntry.handler === ctx.services.ssr?.entry) {
707
+ 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\`).`);
708
+ ctx.nitro.options.serverEntry = false;
709
+ }
710
+ const publicDistDir = ctx._publicDistDir = userConfig.build?.outDir || resolve$1(ctx.nitro.options.buildDir, "vite/public");
711
+ ctx.nitro.options.publicAssets.push({
712
+ dir: publicDistDir,
713
+ maxAge: 0,
714
+ baseURL: "/",
715
+ fallthrough: true
716
+ });
717
+ if (!ctx.nitro.options.dev) ctx.nitro.options.unenv.push({
718
+ meta: { name: "nitro-vite" },
719
+ polyfill: ["#nitro-vite-setup"]
720
+ });
721
+ await ctx.nitro.hooks.callHook("build:before", ctx.nitro);
722
+ ctx.bundlerConfig = await getBundlerConfig(ctx);
723
+ await ctx.nitro.hooks.callHook("rollup:before", ctx.nitro, ctx.bundlerConfig.rollupConfig || ctx.bundlerConfig.rolldownConfig);
724
+ if (ctx.nitro.options.dev) await initEnvRunner(ctx);
725
+ ctx.nitro.fetch = (req) => getEnvRunner(ctx).fetch(req);
726
+ if (ctx.nitro.options.dev && !ctx.devApp) ctx.devApp = new NitroDevApp(ctx.nitro);
727
+ ctx.nitro.hooks.hook("close", async () => {
728
+ if (ctx._envRunner) await ctx._envRunner.close();
729
+ });
730
+ }
731
+ function getEntry(input) {
732
+ if (typeof input === "string") return input;
733
+ else if (Array.isArray(input) && input.length > 0) return input[0];
734
+ else if (input && "index" in input) return input.index;
735
+ }
736
+ function flattenPlugins(plugins) {
737
+ return plugins.flatMap((plugin) => Array.isArray(plugin) ? flattenPlugins(plugin) : [plugin]).filter((p) => p && !(p instanceof Promise));
738
+ }
739
+ //#endregion
740
+ export { nitro };