@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
@@ -0,0 +1,239 @@
1
+ # Nitro Server Entry
2
+
3
+ > Use a server entry to create a global middleware that runs for all routes before they are matched.
4
+
5
+ The server entry is a special handler in Nitro that acts as a global middleware, running for every incoming request before routes are matched. It's commonly used for cross-cutting concerns like authentication, logging, request preprocessing, or creating custom routing logic.
6
+
7
+ ## Auto-detected `server.ts`
8
+
9
+ By default, Nitro automatically looks for a `server.ts` (or `.js`, `.mjs`, `.mts`, `.tsx`, `.jsx`) file in your project root directory.
10
+
11
+ If found, Nitro will use it as the server entry and run it for all incoming requests.
12
+
13
+ <code-group>
14
+
15
+ ```ts [server.ts]
16
+ export default {
17
+ async fetch(req: Request) {
18
+ const url = new URL(req.url);
19
+
20
+ // Handle specific routes
21
+ if (url.pathname === "/health") {
22
+ return new Response("OK", {
23
+ status: 200,
24
+ headers: { "content-type": "text/plain" }
25
+ });
26
+ }
27
+
28
+ // Add custom headers to all requests
29
+ // Return nothing to continue to the next handler
30
+ }
31
+ }
32
+ ```
33
+
34
+ ```ts [routes/api/hello.ts]
35
+ import { defineHandler } from "nitro";
36
+
37
+ export default defineHandler((event) => {
38
+ return { hello: "API" };
39
+ });
40
+ ```
41
+ </code-group>
42
+
43
+ <tip>
44
+
45
+ When `server.ts` is detected, Nitro will log in the terminal: `Detected \`server.ts` as server entry.`
46
+ </tip>
47
+
48
+ With this setup:
49
+
50
+ - `/health` → Handled by server entry (returns a response)
51
+ - `/api/hello` → Handled by the API route handler directly
52
+ - `/about`, etc. → Server entry runs first, then continues to the renderer if no response is returned
53
+
54
+ ## Framework compatibility
55
+ The server entry is a great way to integrate with other frameworks. Any framework that exposes a standard Web `fetch(request: Request): Response` interface can be used as a server entry.
56
+
57
+ ### Web-compatible frameworks
58
+
59
+ Frameworks that implement the Web `fetch` API work directly with `server.ts`:
60
+
61
+ <tabs>
62
+
63
+ <tabs-item>
64
+
65
+ ```ts [server.ts]
66
+ import { H3 } from "h3";
67
+
68
+ const app = new H3()
69
+
70
+ app.get("/", () => "⚡️ Hello from H3!");
71
+
72
+ export default app;
73
+ ```
74
+ </tabs-item>
75
+
76
+ <tabs-item>
77
+
78
+ ```ts [server.ts]
79
+ import { Hono } from "hono";
80
+
81
+ const app = new Hono();
82
+
83
+ app.get("/", (c) => c.text("🔥 Hello from Hono!"));
84
+
85
+ export default app;
86
+ ```
87
+ </tabs-item>
88
+
89
+ <tabs-item>
90
+
91
+ ```ts [server.ts]
92
+ import { Elysia } from "elysia";
93
+
94
+ const app = new Elysia();
95
+
96
+ app.get("/", () => "🦊 Hello from Elysia!");
97
+
98
+ export default app.compile();
99
+ ```
100
+ </tabs-item>
101
+ </tabs>
102
+
103
+ ### Node.js frameworks
104
+
105
+ For Node.js frameworks that use `(req, res)` style handlers (like [Express](https://expressjs.com/) or [Fastify](https://fastify.dev/)), name your server entry file `server.node.ts` instead of `server.ts`. Nitro will automatically detect the `.node.` suffix and convert the Node.js handler to a web-compatible fetch handler using [`srvx`](https://srvx.h3.dev/).
106
+
107
+ <tabs>
108
+
109
+ <tabs-item>
110
+
111
+ ```ts [server.node.ts]
112
+ import Express from "express";
113
+
114
+ const app = Express();
115
+
116
+ app.use("/", (_req, res) => {
117
+ res.send("Hello from Express with Nitro!");
118
+ });
119
+
120
+ export default app;
121
+ ```
122
+ </tabs-item>
123
+
124
+ <tabs-item>
125
+
126
+ ```ts [server.node.ts]
127
+ import Fastify from "fastify";
128
+
129
+ const app = Fastify();
130
+
131
+ app.get("/", () => "Hello, Fastify with Nitro!");
132
+
133
+ await app.ready();
134
+
135
+ export default app.routing;
136
+ ```
137
+ </tabs-item>
138
+ </tabs>
139
+
140
+ ## Configuration
141
+
142
+ ### Custom server entry file
143
+
144
+ You can specify a custom server entry file using the `serverEntry` option in your Nitro configuration:
145
+
146
+ ```ts [nitro.config.ts]
147
+ import { defineNitroConfig } from "nitro/config";
148
+
149
+ export default defineNitroConfig({
150
+ serverEntry: "./nitro.server.ts"
151
+ })
152
+ ```
153
+
154
+ You can also provide an object with `handler` and `format` options:
155
+
156
+ ```ts [nitro.config.ts]
157
+ import { defineNitroConfig } from "nitro/config";
158
+
159
+ export default defineNitroConfig({
160
+ serverEntry: {
161
+ handler: "./server.ts",
162
+ format: "node" // "web" (default) or "node"
163
+ }
164
+ })
165
+ ```
166
+
167
+ ### Handler format
168
+
169
+ The `format` option controls how Nitro treats the default export of your server entry:
170
+
171
+ - **`"web"`** (default) — Expects a Web-compatible handler with a `fetch(request: Request): Response` method.
172
+ - **`"node"`** — Expects a Node.js-style `(req, res)` handler. Nitro automatically converts it to a web-compatible handler.
173
+ When auto-detecting, the format is determined by the filename: `server.node.ts` uses `"node"` format, while `server.ts` uses `"web"` format.
174
+
175
+ ### Disabling server entry
176
+
177
+ Set `serverEntry` to `false` to disable auto-detection and prevent Nitro from using any server entry:
178
+
179
+ ```ts [nitro.config.ts]
180
+ import { defineNitroConfig } from "nitro/config";
181
+
182
+ export default defineNitroConfig({
183
+ serverEntry: false
184
+ })
185
+ ```
186
+
187
+ ## Using event handler
188
+
189
+ You can also export an event handler using `defineHandler` for better type inference and access to the h3 event object:
190
+
191
+ ```ts [server.ts]
192
+ import { defineHandler } from "nitro";
193
+
194
+ export default defineHandler((event) => {
195
+ // Add custom context
196
+ event.context.requestId = crypto.randomUUID();
197
+ event.context.timestamp = Date.now();
198
+
199
+ // Log the request
200
+ console.log(`[${event.context.requestId}] ${event.method} ${event.path}`);
201
+
202
+ // Continue to the next handler (don't return anything)
203
+ });
204
+ ```
205
+
206
+ <important>
207
+
208
+ If your server entry returns `undefined` or doesn't return anything, the request will continue to be processed by routes and the renderer. If it returns a response, the request lifecycle stops there.
209
+ </important>
210
+
211
+ ## Request lifecycle
212
+
213
+ The server entry is registered as a catch-all (`/**`) route handler. When a specific route (like `/api/hello`) matches a request, that route handler takes priority. For requests that don't match any specific route, the server entry runs before the renderer:
214
+
215
+ ```md
216
+ 1. Server hook: `request`
217
+ 2. Route rules (headers, redirects, etc.)
218
+ 3. Global middleware (middleware/)
219
+ 4. Route matching:
220
+ a. Specific routes (routes/) ← if matched, handles the request
221
+ b. Server entry ← runs for unmatched routes
222
+ c. Renderer (renderer.ts or index.html)
223
+ ```
224
+
225
+ When both a server entry and a renderer exist, they are chained: the server entry runs first, and if it doesn't return a response, the renderer handles the request.
226
+
227
+ ## Development mode
228
+
229
+ During development, Nitro watches for changes to your server entry file. When the file is created, modified, or deleted, the dev server automatically reloads to pick up the changes.
230
+
231
+ ## Best practices
232
+
233
+ - Use server entry for cross-cutting concerns that affect **all routes**
234
+ - Return `undefined` to continue processing, return a response to terminate
235
+ - Keep server entry logic lightweight for better performance
236
+ - Use global middleware for modular concerns instead of one large server entry
237
+ - Consider using [Nitro plugins](/docs/plugins) for initialization logic
238
+ - Avoid heavy computation in server entry (it runs for every request)
239
+ - Don't use server entry for route-specific logic (use route handlers instead as they are more performant)
@@ -0,0 +1,261 @@
1
+ # KV Storage
2
+
3
+ > Nitro provides a built-in storage layer that can abstract filesystem or database or any other data source.
4
+
5
+ Nitro has built-in integration with [unstorage](https://unstorage.unjs.io) to provide a runtime agnostic persistent layer.
6
+
7
+ ## Usage
8
+
9
+ To use the storage layer, you can use the `useStorage()` utility to access the storage instance.
10
+
11
+ ```ts
12
+ import { useStorage } from "nitro/storage";
13
+
14
+ // Default storage (in-memory)
15
+ await useStorage().setItem("test:foo", { hello: "world" });
16
+ const value = await useStorage().getItem("test:foo");
17
+
18
+ // You can specify a base prefix with useStorage(base)
19
+ const testStorage = useStorage("test");
20
+ await testStorage.setItem("foo", { hello: "world" });
21
+ await testStorage.getItem("foo"); // { hello: "world" }
22
+
23
+ // You can use generics to type the return value
24
+ await useStorage<{ hello: string }>("test").getItem("foo");
25
+ await useStorage("test").getItem<{ hello: string }>("foo");
26
+ ```
27
+
28
+ <read-more></read-more>
29
+
30
+ ### Available methods
31
+
32
+ The storage instance returned by `useStorage()` provides the following methods:
33
+
34
+ | Method | Description |
35
+ | --- | --- |
36
+ | `getItem(key)` | Get the value of a key. Returns `null` if the key does not exist. |
37
+ | `getItems(items)` | Get multiple items at once. Accepts an array of keys or `{ key, options }` objects. |
38
+ | `getItemRaw(key)` | Get the raw value of a key without parsing. Useful for binary data. |
39
+ | `setItem(key, value)` | Set the value of a key. |
40
+ | `setItems(items)` | Set multiple items at once. Accepts an array of `{ key, value }` objects. |
41
+ | `setItemRaw(key, value)` | Set the raw value of a key without serialization. |
42
+ | `hasItem(key)` | Check if a key exists. Returns a boolean. |
43
+ | `removeItem(key)` | Remove a key from storage. |
44
+ | `getKeys(base?)` | Get all keys, optionally filtered by a base prefix. |
45
+ | `clear(base?)` | Clear all keys, optionally filtered by a base prefix. |
46
+ | `getMeta(key)` | Get metadata for a key (e.g., `mtime`, `atime`, `ttl`). |
47
+ | `setMeta(key, meta)` | Set metadata for a key. |
48
+ | `removeMeta(key)` | Remove metadata for a key. |
49
+ | `mount(base, driver)` | Dynamically mount a storage driver at a base path. |
50
+ | `unmount(base)` | Unmount a storage driver from a base path. |
51
+ | `watch(callback)` | Watch for changes. Callback receives `(event, key)` where event is `"update"` or `"remove"`. |
52
+ | `unwatch()` | Stop watching for changes. |
53
+
54
+ Shorthand aliases are also available: `get`, `set`, `has`, `del`, `remove`, `keys`.
55
+
56
+ ```ts
57
+ import { useStorage } from "nitro/storage";
58
+
59
+ // Get all keys under a prefix
60
+ const keys = await useStorage("test").getKeys();
61
+
62
+ // Check if a key exists
63
+ const exists = await useStorage().hasItem("test:foo");
64
+
65
+ // Remove a key
66
+ await useStorage().removeItem("test:foo");
67
+
68
+ // Get raw binary data
69
+ const raw = await useStorage().getItemRaw("assets/server:image.png");
70
+
71
+ // Get metadata (type, etag, mtime, etc.)
72
+ const meta = await useStorage("assets/server").getMeta("file.txt");
73
+ ```
74
+
75
+ ## Configuration
76
+
77
+ You can mount one or multiple custom storage drivers using the `storage` option.
78
+
79
+ The key is the mount point name, and the value is the driver name and configuration.
80
+
81
+ ```ts [nitro.config.ts]
82
+ import { defineNitroConfig } from "nitro/config";
83
+
84
+ export default defineNitroConfig({
85
+ storage: {
86
+ redis: {
87
+ driver: "redis",
88
+ /* redis connector options */
89
+ }
90
+ }
91
+ })
92
+ ```
93
+
94
+ Then, you can use the redis storage using the `useStorage("redis")` function.
95
+
96
+ <read-more>
97
+
98
+ You can find the driver list on [unstorage documentation](https://unstorage.unjs.io/) with their configuration.
99
+ </read-more>
100
+
101
+ ### Development storage
102
+
103
+ You can use the `devStorage` option to override storage configuration during development and prerendering.
104
+
105
+ This is useful when your production driver is not available in development (e.g., a managed Redis instance).
106
+
107
+ ```ts [nitro.config.ts]
108
+ import { defineNitroConfig } from "nitro/config";
109
+
110
+ export default defineNitroConfig({
111
+ storage: {
112
+ db: {
113
+ driver: "redis",
114
+ host: "prod.example.com",
115
+ }
116
+ },
117
+ devStorage: {
118
+ db: {
119
+ driver: "fs",
120
+ base: "./.data/db"
121
+ }
122
+ }
123
+ })
124
+ ```
125
+
126
+ When running in development mode, `devStorage` mounts are merged on top of `storage` mounts, allowing you to use a local filesystem driver or an in-memory driver while developing.
127
+
128
+ ## Built-in mount points
129
+
130
+ Nitro automatically mounts the following storage paths:
131
+
132
+ ### `/assets`
133
+
134
+ Server assets are mounted at the `/assets` base path. This mount point provides read-only access to bundled server assets (see [Server assets](#server-assets)).
135
+
136
+ ```ts
137
+ import { useStorage } from "nitro/storage";
138
+
139
+ // Access server assets via the /assets mount
140
+ const content = await useStorage("assets/server").getItem("my-file.txt");
141
+ ```
142
+
143
+ ### Default (in-memory)
144
+
145
+ The root storage (without a base path) uses an in-memory driver by default. Data stored here is not persisted across restarts.
146
+
147
+ ```ts
148
+ import { useStorage } from "nitro/storage";
149
+
150
+ // In-memory by default, not persisted
151
+ await useStorage().setItem("counter", 1);
152
+ ```
153
+
154
+ To persist data, mount a driver with a persistent backend (e.g., `fs`, `redis`, etc.) using the `storage` configuration option.
155
+
156
+ ## Server assets
157
+
158
+ Nitro allows you to bundle files from an `assets/` directory at the root of your project. These files are accessible at runtime via the `assets/server` storage mount.
159
+
160
+ ```
161
+ my-project/
162
+ assets/
163
+ data.json
164
+ templates/
165
+ welcome.html
166
+ server/
167
+ routes/
168
+ index.ts
169
+ ```
170
+
171
+ ```ts [server/routes/index.ts]
172
+ import { useStorage } from "nitro/storage";
173
+
174
+ export default defineHandler(async () => {
175
+ const serverAssets = useStorage("assets/server");
176
+
177
+ const keys = await serverAssets.getKeys();
178
+ const data = await serverAssets.getItem("data.json");
179
+ const template = await serverAssets.getItem("templates/welcome.html");
180
+
181
+ return { keys, data, template };
182
+ });
183
+ ```
184
+
185
+ ### Custom asset directories
186
+
187
+ You can register additional asset directories using the `serverAssets` config option:
188
+
189
+ ```ts [nitro.config.ts]
190
+ import { defineNitroConfig } from "nitro/config";
191
+
192
+ export default defineNitroConfig({
193
+ serverAssets: [
194
+ {
195
+ baseName: "templates",
196
+ dir: "./templates",
197
+ }
198
+ ]
199
+ })
200
+ ```
201
+
202
+ Custom asset directories are accessible under `assets/<baseName>`:
203
+
204
+ ```ts
205
+ import { useStorage } from "nitro/storage";
206
+
207
+ const templates = useStorage("assets/templates");
208
+ const keys = await templates.getKeys();
209
+ const html = await templates.getItem("email.html");
210
+ ```
211
+
212
+ ### Asset metadata
213
+
214
+ Server assets include metadata such as content type, ETag, and modification time:
215
+
216
+ ```ts
217
+ import { useStorage } from "nitro/storage";
218
+
219
+ const serverAssets = useStorage("assets/server");
220
+
221
+ const meta = await serverAssets.getMeta("image.png");
222
+ // { type: "image/png", etag: "\"...\"", mtime: "2024-01-01T00:00:00.000Z" }
223
+
224
+ // Useful for setting response headers
225
+ const raw = await serverAssets.getItemRaw("image.png");
226
+ ```
227
+
228
+ <note>
229
+
230
+ In development, server assets are read directly from the filesystem. In production, they are bundled and inlined into the build output.
231
+ </note>
232
+
233
+ ## Runtime configuration
234
+
235
+ In scenarios where the mount point configuration is not known until runtime, Nitro can dynamically add mount points during startup using [plugins](/docs/plugins).
236
+
237
+ ```ts [plugins/storage.ts]
238
+ import { useStorage } from "nitro/storage";
239
+ import { definePlugin } from "nitro";
240
+ import redisDriver from "unstorage/drivers/redis";
241
+
242
+ export default definePlugin(() => {
243
+ const storage = useStorage()
244
+
245
+ // Dynamically pass in credentials from runtime configuration, or other sources
246
+ const driver = redisDriver({
247
+ base: "redis",
248
+ host: process.env.REDIS_HOST,
249
+ port: process.env.REDIS_PORT,
250
+ /* other redis connector options */
251
+ })
252
+
253
+ // Mount driver
254
+ storage.mount("redis", driver)
255
+ })
256
+ ```
257
+
258
+ <warning>
259
+
260
+ This is a temporary workaround, with a better solution coming in the future! Keep a lookout on the GitHub issue [here](https://github.com/nitrojs/nitro/issues/1161#issuecomment-1511444675).
261
+ </warning>