nitro 3.0.1-alpha.0 → 3.0.1-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/README.md +2 -0
  2. package/dist/_build/common.mjs +24940 -0
  3. package/dist/_build/rolldown.mjs +172 -0
  4. package/dist/_build/rollup.mjs +201 -0
  5. package/dist/_build/vite.build.mjs +16 -0
  6. package/dist/_chunks/dev.mjs +707 -0
  7. package/dist/_chunks/nitro.mjs +1191 -0
  8. package/dist/_chunks/nitro2.mjs +101 -0
  9. package/dist/_chunks/utils.mjs +254 -0
  10. package/dist/_common.mjs +45 -0
  11. package/dist/_dev.d.mts +12 -0
  12. package/dist/_libs/c12+giget+readdirp+chokidar.d.mts +214 -0
  13. package/dist/_libs/citty.mjs +363 -0
  14. package/dist/_libs/commondir+is-reference.mjs +1300 -0
  15. package/dist/_libs/compatx.d.mts +47 -0
  16. package/dist/_libs/compatx.mjs +46 -0
  17. package/dist/_libs/confbox.mjs +2509 -0
  18. package/dist/_libs/esbuild.d.mts +20 -0
  19. package/dist/_libs/escape-string-regexp.mjs +8 -0
  20. package/dist/_libs/estree-walker.mjs +187 -0
  21. package/dist/_libs/hasown+resolve+deepmerge.mjs +1972 -0
  22. package/dist/_libs/httpxy.d.mts +79 -0
  23. package/dist/_libs/httpxy.mjs +415 -0
  24. package/dist/_libs/klona.mjs +38 -0
  25. package/dist/_libs/magic-string.d.mts +220 -0
  26. package/dist/_libs/mlly.d.mts +57 -0
  27. package/dist/_libs/nypm+giget+tinyexec.mjs +3603 -0
  28. package/dist/_libs/pkg-types.d.mts +23 -0
  29. package/dist/_libs/plugin-alias.mjs +66 -0
  30. package/dist/_libs/plugin-inject.mjs +135 -0
  31. package/dist/_libs/plugin-json.mjs +36 -0
  32. package/dist/_libs/pluginutils+plugin-commonjs.d.mts +241 -0
  33. package/dist/_libs/pluginutils.mjs +652 -0
  34. package/dist/_libs/rc9+c12+dotenv.mjs +972 -0
  35. package/dist/_libs/readdirp+chokidar.mjs +1611 -0
  36. package/dist/_libs/remapping.mjs +117 -0
  37. package/dist/_libs/resolve-uri+gen-mapping.mjs +448 -0
  38. package/dist/_libs/rou3.d.mts +43 -0
  39. package/dist/_libs/rou3.mjs +322 -0
  40. package/dist/_libs/std-env.d.mts +4 -0
  41. package/dist/_libs/tsconfck.mjs +832 -0
  42. package/dist/_libs/ultrahtml.mjs +138 -0
  43. package/dist/_libs/unimport+unplugin.mjs +1785 -0
  44. package/dist/_libs/unplugin+unimport.d.mts +426 -0
  45. package/dist/_libs/unwasm.d.mts +29 -0
  46. package/dist/_presets.mjs +1802 -0
  47. package/dist/builder.d.mts +63 -0
  48. package/dist/builder.mjs +9 -0
  49. package/dist/cli/_chunks/build.mjs +48 -0
  50. package/dist/cli/_chunks/common.mjs +15 -0
  51. package/dist/cli/_chunks/dev.mjs +62 -0
  52. package/dist/cli/_chunks/list.mjs +27 -0
  53. package/dist/cli/_chunks/prepare.mjs +19 -0
  54. package/dist/cli/_chunks/run.mjs +55 -0
  55. package/dist/cli/_chunks/task.mjs +16 -0
  56. package/dist/cli/index.d.mts +1 -1
  57. package/dist/cli/index.mjs +20 -476
  58. package/dist/node_modules/@poppinss/colors/build/index.js +130 -160
  59. package/dist/node_modules/@poppinss/colors/package.json +20 -18
  60. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
  61. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  62. package/dist/node_modules/@poppinss/exception/build/index.js +36 -55
  63. package/dist/node_modules/@poppinss/exception/package.json +19 -16
  64. package/dist/node_modules/@sindresorhus/is/distribution/index.js +47 -6
  65. package/dist/node_modules/@sindresorhus/is/package.json +1 -1
  66. package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
  67. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  68. package/dist/node_modules/@speed-highlight/core/package.json +8 -4
  69. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  70. package/dist/node_modules/cookie-es/package.json +37 -0
  71. package/dist/node_modules/hookable/dist/index.mjs +244 -268
  72. package/dist/node_modules/hookable/package.json +29 -26
  73. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  74. package/dist/node_modules/rendu/package.json +47 -0
  75. package/dist/node_modules/ufo/dist/index.mjs +16 -9
  76. package/dist/node_modules/ufo/package.json +15 -14
  77. package/dist/node_modules/unctx/package.json +16 -16
  78. package/dist/node_modules/youch/build/{chunk-4XB2BYKC.js → chunk-7QV3D5YX.js} +2 -4
  79. package/dist/node_modules/youch/build/{chunk-PUHGL6HA.js → chunk-AUGPHE32.js} +2 -4
  80. package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-CM7DWJNZ.js} +4 -5
  81. package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-EJH674NB.js} +6 -5
  82. package/dist/node_modules/youch/build/{chunk-EUJBVOYB.js → chunk-OIJ3WD7L.js} +2 -4
  83. package/dist/node_modules/youch/build/{chunk-HFSXRSKS.js → chunk-P36L72PL.js} +5 -3
  84. package/dist/node_modules/youch/build/{chunk-4YEN7HVQ.js → chunk-PE3GG3TN.js} +5 -1
  85. package/dist/node_modules/youch/build/{chunk-PINJDICN.js → chunk-X53OIOJH.js} +2 -4
  86. package/dist/node_modules/youch/build/index.js +22 -15
  87. package/dist/node_modules/youch/build/public/error_info/style.css +1 -0
  88. package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
  89. package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
  90. package/dist/node_modules/youch/build/public/error_stack/style.css +2 -3
  91. package/dist/node_modules/youch/build/public/header/script.js +0 -2
  92. package/dist/node_modules/youch/build/public/layout/script.js +0 -8
  93. package/dist/node_modules/youch/build/public/layout/style.css +4 -0
  94. package/dist/node_modules/youch/package.json +16 -17
  95. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +2 -1
  96. package/dist/presets/_nitro/runtime/nitro-dev.mjs +47 -42
  97. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +3 -3
  98. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +11 -15
  99. package/dist/presets/_nitro/runtime/service-worker.d.mts +2 -1
  100. package/dist/presets/_nitro/runtime/service-worker.mjs +17 -14
  101. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +2 -1
  102. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +8 -7
  103. package/dist/presets/aws-lambda/runtime/_utils.d.mts +3 -13
  104. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  105. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +2 -3
  106. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -29
  107. package/dist/presets/aws-lambda/runtime/aws-lambda.d.mts +1 -1
  108. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +9 -9
  109. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  110. package/dist/presets/azure/runtime/azure-swa.d.mts +3 -3
  111. package/dist/presets/azure/runtime/azure-swa.mjs +25 -23
  112. package/dist/presets/bun/runtime/bun.d.mts +3 -1
  113. package/dist/presets/bun/runtime/bun.mjs +34 -22
  114. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +12 -9
  115. package/dist/presets/cloudflare/runtime/_module-handler.mjs +84 -90
  116. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +7 -15
  117. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +62 -64
  118. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +2 -8
  119. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +15 -18
  120. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +13 -13
  121. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -43
  122. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  123. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  124. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  125. package/dist/presets/deno/runtime/deno-deploy.d.mts +5 -1
  126. package/dist/presets/deno/runtime/deno-deploy.mjs +15 -13
  127. package/dist/presets/deno/runtime/deno-server.d.mts +1 -4
  128. package/dist/presets/deno/runtime/deno-server.mjs +32 -53
  129. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -2
  130. package/dist/presets/netlify/runtime/netlify-edge.mjs +18 -14
  131. package/dist/presets/netlify/runtime/netlify.d.mts +3 -2
  132. package/dist/presets/netlify/runtime/netlify.mjs +15 -19
  133. package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
  134. package/dist/presets/node/runtime/node-cluster.mjs +49 -54
  135. package/dist/presets/node/runtime/node-middleware.d.mts +3 -4
  136. package/dist/presets/node/runtime/node-middleware.mjs +9 -9
  137. package/dist/presets/node/runtime/node-server.d.mts +1 -1
  138. package/dist/presets/node/runtime/node-server.mjs +36 -34
  139. package/dist/presets/standard/runtime/server.d.mts +2 -4
  140. package/dist/presets/standard/runtime/server.mjs +3 -5
  141. package/dist/presets/stormkit/runtime/stormkit.d.mts +14 -14
  142. package/dist/presets/stormkit/runtime/stormkit.mjs +22 -22
  143. package/dist/presets/vercel/runtime/isr.d.mts +2 -0
  144. package/dist/presets/vercel/runtime/isr.mjs +19 -0
  145. package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
  146. package/dist/presets/vercel/runtime/vercel.node.mjs +24 -0
  147. package/dist/presets/vercel/runtime/vercel.web.d.mts +8 -0
  148. package/dist/presets/vercel/runtime/vercel.web.mjs +25 -0
  149. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -1
  150. package/dist/presets/winterjs/runtime/winterjs.mjs +74 -70
  151. package/dist/presets/zeabur/runtime/zeabur.d.mts +2 -2
  152. package/dist/presets/zeabur/runtime/zeabur.mjs +2 -2
  153. package/dist/runtime/app.d.mts +1 -0
  154. package/dist/runtime/app.mjs +1 -0
  155. package/dist/runtime/cache.d.mts +1 -0
  156. package/dist/runtime/cache.mjs +1 -0
  157. package/dist/runtime/config.d.mts +3 -0
  158. package/dist/runtime/config.mjs +4 -0
  159. package/dist/runtime/context.d.mts +1 -0
  160. package/dist/runtime/context.mjs +1 -0
  161. package/dist/runtime/database.d.mts +1 -0
  162. package/dist/runtime/database.mjs +1 -0
  163. package/dist/runtime/internal/app.d.mts +15 -1
  164. package/dist/runtime/internal/app.mjs +199 -144
  165. package/dist/runtime/internal/cache.d.mts +9 -5
  166. package/dist/runtime/internal/cache.mjs +248 -219
  167. package/dist/runtime/internal/context.d.mts +9 -9
  168. package/dist/runtime/internal/context.mjs +17 -10
  169. package/dist/runtime/internal/database.mjs +9 -11
  170. package/dist/runtime/internal/error/dev.d.mts +4 -4
  171. package/dist/runtime/internal/error/dev.mjs +106 -105
  172. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  173. package/dist/runtime/internal/error/hooks.mjs +9 -0
  174. package/dist/runtime/internal/error/prod.d.mts +5 -4
  175. package/dist/runtime/internal/error/prod.mjs +51 -59
  176. package/dist/runtime/internal/error/utils.d.mts +4 -4
  177. package/dist/runtime/internal/error/utils.mjs +1 -1
  178. package/dist/runtime/internal/meta.d.mts +1 -1
  179. package/dist/runtime/internal/meta.mjs +1 -1
  180. package/dist/runtime/internal/plugin.d.mts +2 -2
  181. package/dist/runtime/internal/plugin.mjs +1 -1
  182. package/dist/runtime/internal/route-rules.d.mts +4 -8
  183. package/dist/runtime/internal/route-rules.mjs +54 -52
  184. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  185. package/dist/runtime/internal/routes/dev-tasks.mjs +17 -19
  186. package/dist/runtime/internal/routes/openapi.mjs +82 -88
  187. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  188. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  189. package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
  190. package/dist/runtime/internal/routes/renderer-template.mjs +2 -2
  191. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  192. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  193. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  194. package/dist/runtime/internal/runtime-config.mjs +44 -39
  195. package/dist/runtime/internal/static.mjs +63 -74
  196. package/dist/runtime/internal/storage.mjs +3 -3
  197. package/dist/runtime/internal/task.d.mts +6 -6
  198. package/dist/runtime/internal/task.mjs +57 -61
  199. package/dist/runtime/internal/vite/dev-entry.mjs +11 -2
  200. package/dist/runtime/internal/vite/{dev-worker.mjs → node-runner.mjs} +54 -57
  201. package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
  202. package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +2 -2
  203. package/dist/runtime/meta.mjs +26 -0
  204. package/dist/runtime/nitro.d.mts +9 -0
  205. package/dist/runtime/nitro.mjs +32 -0
  206. package/dist/runtime/runtime-config.d.mts +1 -0
  207. package/dist/runtime/runtime-config.mjs +1 -0
  208. package/dist/runtime/storage.d.mts +1 -0
  209. package/dist/runtime/storage.mjs +1 -0
  210. package/dist/runtime/task.d.mts +1 -0
  211. package/dist/runtime/task.mjs +1 -0
  212. package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
  213. package/dist/runtime/virtual/database.d.mts +8 -0
  214. package/dist/runtime/virtual/database.mjs +2 -0
  215. package/dist/runtime/virtual/error-handler.d.mts +6 -0
  216. package/dist/runtime/virtual/error-handler.mjs +9 -0
  217. package/dist/runtime/virtual/feature-flags.d.mts +7 -0
  218. package/dist/runtime/virtual/feature-flags.mjs +7 -0
  219. package/dist/runtime/virtual/plugins.d.mts +3 -0
  220. package/dist/runtime/virtual/plugins.mjs +2 -0
  221. package/dist/runtime/virtual/polyfills.d.mts +3 -0
  222. package/dist/runtime/virtual/polyfills.mjs +2 -0
  223. package/dist/runtime/virtual/public-assets.d.mts +9 -0
  224. package/dist/runtime/virtual/public-assets.mjs +8 -0
  225. package/dist/runtime/virtual/renderer-template.d.mts +4 -0
  226. package/dist/runtime/virtual/renderer-template.mjs +7 -0
  227. package/dist/runtime/virtual/routing-meta.d.mts +7 -0
  228. package/dist/runtime/virtual/routing-meta.mjs +2 -0
  229. package/dist/runtime/virtual/routing.d.mts +8 -0
  230. package/dist/runtime/virtual/routing.mjs +11 -0
  231. package/dist/runtime/virtual/runtime-config.d.mts +3 -0
  232. package/dist/runtime/virtual/runtime-config.mjs +5 -0
  233. package/dist/runtime/virtual/server-assets.d.mts +6 -0
  234. package/dist/runtime/virtual/server-assets.mjs +12 -0
  235. package/dist/runtime/virtual/storage.d.mts +3 -0
  236. package/dist/runtime/virtual/storage.mjs +5 -0
  237. package/dist/runtime/virtual/tasks.d.mts +10 -0
  238. package/dist/runtime/virtual/tasks.mjs +3 -0
  239. package/dist/runtime/vite.d.mts +8 -0
  240. package/dist/runtime/vite.mjs +9 -0
  241. package/dist/types/index.d.mts +2561 -2312
  242. package/dist/types/index.mjs +10 -0
  243. package/dist/vite.d.mts +44 -51
  244. package/dist/vite.mjs +737 -68
  245. package/lib/tsconfig.json +27 -0
  246. package/lib/vite.types.d.mts +26 -0
  247. package/lib/vite.types.mjs +2 -0
  248. package/package.json +118 -101
  249. package/dist/_chunks/app.mjs +0 -19797
  250. package/dist/_chunks/build.mjs +0 -84
  251. package/dist/_chunks/build2.mjs +0 -318
  252. package/dist/_chunks/build3.mjs +0 -6452
  253. package/dist/_chunks/detect-acorn.mjs +0 -503
  254. package/dist/_chunks/index.mjs +0 -22242
  255. package/dist/_chunks/index2.mjs +0 -297
  256. package/dist/_chunks/index3.mjs +0 -1058
  257. package/dist/_chunks/index4.mjs +0 -1206
  258. package/dist/_chunks/info.mjs +0 -11157
  259. package/dist/_chunks/json5.mjs +0 -68
  260. package/dist/_chunks/jsonc.mjs +0 -51
  261. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  262. package/dist/_chunks/plugin.mjs +0 -960
  263. package/dist/_chunks/server.mjs +0 -254
  264. package/dist/_chunks/snapshot.mjs +0 -284
  265. package/dist/_chunks/toml.mjs +0 -259
  266. package/dist/_chunks/yaml.mjs +0 -86
  267. package/dist/cli/build.mjs +0 -54
  268. package/dist/cli/common.mjs +0 -13
  269. package/dist/cli/dev.mjs +0 -95
  270. package/dist/cli/index2.mjs +0 -17
  271. package/dist/cli/list.mjs +0 -34
  272. package/dist/cli/prepare.mjs +0 -24
  273. package/dist/cli/run.mjs +0 -60
  274. package/dist/index.d.mts +0 -52
  275. package/dist/index.mjs +0 -55
  276. package/dist/node_modules/cookie/dist/index.js +0 -239
  277. package/dist/node_modules/cookie/package.json +0 -42
  278. package/dist/node_modules/kleur/index.js +0 -110
  279. package/dist/node_modules/klona/dist/index.mjs +0 -81
  280. package/dist/node_modules/klona/full/index.mjs +0 -53
  281. package/dist/node_modules/klona/package.json +0 -74
  282. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  283. package/dist/node_modules/std-env/package.json +0 -46
  284. package/dist/node_modules/youch/build/chunk-OSUFJZHZ.js +0 -6
  285. package/dist/presets/vercel/runtime/vercel.d.mts +0 -8
  286. package/dist/presets/vercel/runtime/vercel.mjs +0 -17
  287. package/dist/presets.mjs +0 -2460
  288. package/dist/runtime/index.d.mts +0 -11
  289. package/dist/runtime/index.mjs +0 -17
  290. package/dist/runtime/internal/debug.d.mts +0 -2
  291. package/dist/runtime/internal/debug.mjs +0 -5
  292. package/dist/runtime/internal/empty.d.mts +0 -0
  293. package/dist/runtime/internal/index.d.mts +0 -3
  294. package/dist/runtime/internal/index.mjs +0 -3
  295. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
  296. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
  297. package/dist/runtime/internal/renderer.d.mts +0 -3
  298. package/dist/runtime/internal/renderer.mjs +0 -36
  299. package/dist/runtime/internal/shutdown.d.mts +0 -9
  300. package/dist/runtime/internal/shutdown.mjs +0 -34
  301. package/dist/runtime/internal/utils.d.mts +0 -1
  302. package/dist/runtime/internal/utils.mjs +0 -15
  303. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  304. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  305. package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
  306. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  307. package/lib/config.d.mts +0 -9
  308. package/lib/config.mjs +0 -5
  309. package/lib/deps/ofetch.mjs +0 -1
  310. package/lib/deps/ofetch.mts +0 -1
  311. package/lib/meta.d.mts +0 -5
  312. package/lib/meta.mjs +0 -21
  313. package/lib/runtime-meta.mjs +0 -38
  314. /package/dist/runtime/{internal/vite/dev-worker.d.mts → virtual/_runtime_warn.d.mts} +0 -0
  315. /package/lib/{deps/h3.d.mts → h3.d.mts} +0 -0
  316. /package/lib/{deps/h3.mjs → h3.mjs} +0 -0
@@ -1,100 +1,94 @@
1
1
  import { defineHandler, getRequestURL } from "h3";
2
2
  import { joinURL } from "ufo";
3
3
  import { defu } from "defu";
4
- import { handlersMeta } from "#nitro-internal-virtual/routing-meta";
4
+ import { handlersMeta } from "#nitro/virtual/routing-meta";
5
5
  import { useRuntimeConfig } from "../runtime-config.mjs";
6
+ // Served as /_openapi.json
6
7
  export default defineHandler((event) => {
7
- const runtimeConfig = useRuntimeConfig();
8
- const base = runtimeConfig.app?.baseURL;
9
- const url = joinURL(getRequestURL(event).origin, base);
10
- const meta = {
11
- title: "Nitro Server Routes",
12
- ...runtimeConfig.nitro?.openAPI?.meta
13
- };
14
- const {
15
- paths,
16
- globals: { components, ...globalsRest }
17
- } = getHandlersMeta();
18
- const extensible = Object.fromEntries(
19
- Object.entries(globalsRest).filter(([key]) => key.startsWith("x-"))
20
- );
21
- return {
22
- openapi: "3.1.0",
23
- info: {
24
- title: meta?.title,
25
- version: meta?.version,
26
- description: meta?.description
27
- },
28
- servers: [
29
- {
30
- url,
31
- description: "Local Development Server",
32
- variables: {}
33
- }
34
- ],
35
- paths,
36
- components,
37
- ...extensible
38
- };
8
+ const runtimeConfig = useRuntimeConfig();
9
+ const base = runtimeConfig.app?.baseURL;
10
+ const url = joinURL(getRequestURL(event).origin, base);
11
+ const meta = {
12
+ title: "Nitro Server Routes",
13
+ ...runtimeConfig.nitro?.openAPI?.meta
14
+ };
15
+ const { paths, globals: { components, ...globalsRest } } = getHandlersMeta();
16
+ const extensible = Object.fromEntries(Object.entries(globalsRest).filter(([key]) => key.startsWith("x-")));
17
+ return {
18
+ openapi: "3.1.0",
19
+ info: {
20
+ title: meta?.title,
21
+ version: meta?.version || "1.0.0",
22
+ description: meta?.description
23
+ },
24
+ servers: [{
25
+ url,
26
+ description: "Local Development Server",
27
+ variables: {}
28
+ }],
29
+ paths,
30
+ components,
31
+ ...extensible
32
+ };
39
33
  });
40
34
  function getHandlersMeta() {
41
- const paths = {};
42
- let globals = {};
43
- for (const h of handlersMeta) {
44
- const { route, parameters } = normalizeRoute(h.route || "");
45
- const tags = defaultTags(h.route || "");
46
- const method = (h.method || "get").toLowerCase();
47
- const { $global, ...openAPI } = h.meta?.openAPI || {};
48
- const item = {
49
- [method]: {
50
- tags,
51
- parameters,
52
- responses: {
53
- 200: { description: "OK" }
54
- },
55
- ...openAPI
56
- }
57
- };
58
- if ($global) {
59
- globals = defu($global, globals);
60
- }
61
- if (paths[route] === void 0) {
62
- paths[route] = item;
63
- } else {
64
- Object.assign(paths[route], item);
65
- }
66
- }
67
- return { paths, globals };
35
+ const paths = {};
36
+ let globals = {};
37
+ for (const h of handlersMeta) {
38
+ const { route, parameters } = normalizeRoute(h.route || "");
39
+ const tags = defaultTags(h.route || "");
40
+ const method = (h.method || "get").toLowerCase();
41
+ const { $global, ...openAPI } = h.meta?.openAPI || {};
42
+ const item = { [method]: {
43
+ tags,
44
+ parameters,
45
+ responses: { 200: { description: "OK" } },
46
+ ...openAPI
47
+ } };
48
+ if ($global) {
49
+ // TODO: Warn on conflicting global definitions?
50
+ globals = defu($global, globals);
51
+ }
52
+ if (paths[route] === undefined) {
53
+ paths[route] = item;
54
+ } else {
55
+ Object.assign(paths[route], item);
56
+ }
57
+ }
58
+ return {
59
+ paths,
60
+ globals
61
+ };
68
62
  }
69
63
  function normalizeRoute(_route) {
70
- const parameters = [];
71
- let anonymousCtr = 0;
72
- const route = _route.replace(/:(\w+)/g, (_, name) => `{${name}}`).replace(/\/(\*)\//g, () => `/{param${++anonymousCtr}}/`).replace(/\*\*{/, "{").replace(/\/(\*\*)$/g, () => `/{*param${++anonymousCtr}}`);
73
- const paramMatches = route.matchAll(/{(\*?\w+)}/g);
74
- for (const match of paramMatches) {
75
- const name = match[1];
76
- if (!parameters.some((p) => p.name === name)) {
77
- parameters.push({
78
- name,
79
- in: "path",
80
- required: true,
81
- schema: { type: "string" }
82
- });
83
- }
84
- }
85
- return {
86
- route,
87
- parameters
88
- };
64
+ const parameters = [];
65
+ let anonymousCtr = 0;
66
+ const route = _route.replace(/:(\w+)/g, (_, name) => `{${name}}`).replace(/\/(\*)\//g, () => `/{param${++anonymousCtr}}/`).replace(/\*\*{/, "{").replace(/\/(\*\*)$/g, () => `/{*param${++anonymousCtr}}`);
67
+ const paramMatches = route.matchAll(/{(\*?\w+)}/g);
68
+ for (const match of paramMatches) {
69
+ const name = match[1];
70
+ if (!parameters.some((p) => p.name === name)) {
71
+ parameters.push({
72
+ name,
73
+ in: "path",
74
+ required: true,
75
+ schema: { type: "string" }
76
+ });
77
+ }
78
+ }
79
+ return {
80
+ route,
81
+ parameters
82
+ };
89
83
  }
90
84
  function defaultTags(route) {
91
- const tags = [];
92
- if (route.startsWith("/api/")) {
93
- tags.push("API Routes");
94
- } else if (route.startsWith("/_")) {
95
- tags.push("Internal");
96
- } else {
97
- tags.push("App Routes");
98
- }
99
- return tags;
85
+ const tags = [];
86
+ if (route.startsWith("/api/")) {
87
+ tags.push("API Routes");
88
+ } else if (route.startsWith("/_")) {
89
+ tags.push("Internal");
90
+ } else {
91
+ tags.push("App Routes");
92
+ }
93
+ return tags;
100
94
  }
@@ -1,2 +1,2 @@
1
1
  import type { H3Event } from "h3";
2
- export default function renderIndexHTML(event: H3Event): any;
2
+ export default function renderIndexHTML(event: H3Event);
@@ -1,3 +1,2 @@
1
1
  import type { H3Event } from "h3";
2
- import { HTTPResponse } from "h3";
3
- export default function renderIndexHTML(event: H3Event): Promise<Response | HTTPResponse>;
2
+ export default function renderIndexHTML(event: H3Event);
@@ -1,21 +1,19 @@
1
- import {
2
- rendererTemplate,
3
- rendererTemplateFile
4
- } from "#nitro-internal-virtual/renderer-template";
1
+ import { serverFetch } from "../app.mjs";
2
+ import { rendererTemplate, rendererTemplateFile, isStaticTemplate } from "#nitro/virtual/renderer-template";
5
3
  import { HTTPResponse } from "h3";
6
4
  import { hasTemplateSyntax, renderToResponse, compileTemplate } from "rendu";
7
5
  export default async function renderIndexHTML(event) {
8
- let html = await rendererTemplate(event.req);
9
- if (globalThis.__transform_html__) {
10
- html = await globalThis.__transform_html__(html);
11
- }
12
- if (!hasTemplateSyntax(html)) {
13
- return new HTTPResponse(html, {
14
- headers: { "content-type": "text/html; charset=utf-8" }
15
- });
16
- }
17
- const template = compileTemplate(html, { filename: rendererTemplateFile });
18
- return renderToResponse(template, {
19
- request: event.req
20
- });
6
+ let html = await rendererTemplate(event.req);
7
+ if (globalThis.__transform_html__) {
8
+ html = await globalThis.__transform_html__(html);
9
+ }
10
+ const isStatic = isStaticTemplate ?? !hasTemplateSyntax(html);
11
+ if (isStatic) {
12
+ return new HTTPResponse(html, { headers: { "content-type": "text/html; charset=utf-8" } });
13
+ }
14
+ const template = compileTemplate(html, { filename: rendererTemplateFile });
15
+ return renderToResponse(template, {
16
+ request: event.req,
17
+ context: { serverFetch }
18
+ });
21
19
  }
@@ -1,4 +1,4 @@
1
- import { rendererTemplate } from "#nitro-internal-virtual/renderer-template";
1
+ import { rendererTemplate } from "#nitro/virtual/renderer-template";
2
2
  export default function renderIndexHTML(event) {
3
- return rendererTemplate(event.req);
3
+ return rendererTemplate(event.req);
4
4
  }
@@ -1,21 +1,24 @@
1
1
  import { defineHandler } from "h3";
2
2
  import { useRuntimeConfig } from "../runtime-config.mjs";
3
+ // Served as /_scalar
3
4
  export default defineHandler((event) => {
4
- const runtimeConfig = useRuntimeConfig();
5
- const title = runtimeConfig.nitro.openAPI?.meta?.title || "API Reference";
6
- const description = runtimeConfig.nitro.openAPI?.meta?.description || "";
7
- const openAPIEndpoint = runtimeConfig.nitro.openAPI?.route || "./_openapi.json";
8
- const _config = runtimeConfig.nitro.openAPI?.ui?.scalar;
9
- const scalarConfig = {
10
- ..._config,
11
- url: openAPIEndpoint,
12
- // @ts-expect-error (missing types?)
13
- spec: { url: openAPIEndpoint, ..._config?.spec }
14
- };
15
- event.res.headers.set("Content-Type", "text/html");
16
- return (
17
- /* html */
18
- `<!doctype html>
5
+ const runtimeConfig = useRuntimeConfig();
6
+ const title = runtimeConfig.nitro?.openAPI?.meta?.title || "API Reference";
7
+ const description = runtimeConfig.nitro?.openAPI?.meta?.description || "";
8
+ const openAPIEndpoint = runtimeConfig.nitro?.openAPI?.route || "./_openapi.json";
9
+ // https://github.com/scalar/scalar
10
+ const _config = runtimeConfig.nitro?.openAPI?.ui?.scalar;
11
+ const scalarConfig = {
12
+ ..._config,
13
+ url: openAPIEndpoint,
14
+ spec: {
15
+ url: openAPIEndpoint,
16
+ ..._config?.spec
17
+ }
18
+ };
19
+ // The default page title
20
+ event.res.headers.set("Content-Type", "text/html");
21
+ return `<!doctype html>
19
22
  <html lang="en">
20
23
  <head>
21
24
  <meta charset="utf-8" />
@@ -29,16 +32,13 @@ export default defineHandler((event) => {
29
32
  <body>
30
33
  <script
31
34
  id="api-reference"
32
- data-configuration="${JSON.stringify(scalarConfig).split('"').join("&quot;")}"
35
+ data-configuration="${JSON.stringify(scalarConfig).split("\"").join("&quot;")}"
33
36
  ><\/script>
34
37
  <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"><\/script>
35
38
  </body>
36
- </html>`
37
- );
39
+ </html>`;
38
40
  });
39
- const customTheme = (
40
- /* css */
41
- `/* basic theme */
41
+ const customTheme = `/* basic theme */
42
42
  .light-mode,
43
43
  .light-mode .dark-mode {
44
44
  --theme-background-1: #fff;
@@ -190,5 +190,4 @@ const customTheme = (
190
190
  }
191
191
  .section-container:nth-of-type(2) {
192
192
  overflow: hidden;
193
- }`
194
- );
193
+ }`;
@@ -1,15 +1,14 @@
1
1
  import { defineHandler } from "h3";
2
2
  import { useRuntimeConfig } from "../runtime-config.mjs";
3
+ // https://github.com/swagger-api/swagger-ui
3
4
  export default defineHandler((event) => {
4
- const runtimeConfig = useRuntimeConfig();
5
- const title = runtimeConfig.nitro.openAPI?.meta?.title || "API Reference";
6
- const description = runtimeConfig.nitro.openAPI?.meta?.description || "";
7
- const openAPIEndpoint = runtimeConfig.nitro.openAPI?.route || "./_openapi.json";
8
- const CDN_BASE = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@^5";
9
- event.res.headers.set("Content-Type", "text/html");
10
- return (
11
- /* html */
12
- `<!doctype html>
5
+ const runtimeConfig = useRuntimeConfig();
6
+ const title = runtimeConfig.nitro?.openAPI?.meta?.title || "API Reference";
7
+ const description = runtimeConfig.nitro?.openAPI?.meta?.description || "";
8
+ const openAPIEndpoint = runtimeConfig.nitro?.openAPI?.route || "./_openapi.json";
9
+ const CDN_BASE = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@^5";
10
+ event.res.headers.set("Content-Type", "text/html");
11
+ return `<!doctype html>
13
12
  <html lang="en">
14
13
  <head>
15
14
  <meta charset="utf-8" />
@@ -39,6 +38,5 @@ export default defineHandler((event) => {
39
38
  };
40
39
  <\/script>
41
40
  </body>
42
- </html> `
43
- );
41
+ </html> `;
44
42
  });
@@ -1,9 +1,9 @@
1
1
  import type { NitroRuntimeConfig } from "nitro/types";
2
2
  export declare function useRuntimeConfig(): NitroRuntimeConfig;
3
3
  type EnvOptions = {
4
- prefix?: string;
5
- altPrefix?: string;
6
- envExpansion?: boolean;
4
+ prefix?: string;
5
+ altPrefix?: string;
6
+ envExpansion?: boolean;
7
7
  };
8
- export declare function applyEnv(obj: Record<string, any>, opts: EnvOptions, parentKey?: string): Record<string, any>;
8
+ export declare function applyEnv(obj: Record<string, any>, opts: EnvOptions, parentKey?: string);
9
9
  export {};
@@ -1,49 +1,54 @@
1
1
  import { snakeCase } from "scule";
2
+ import { runtimeConfig } from "#nitro/virtual/runtime-config";
2
3
  export function useRuntimeConfig() {
3
- return useRuntimeConfig._cached ||= getRuntimeConfig();
4
+ return useRuntimeConfig._cached ||= getRuntimeConfig();
4
5
  }
5
6
  function getRuntimeConfig() {
6
- const runtimeConfig = globalThis.__NITRO_RUNTIME_CONFIG__ || process.env.RUNTIME_CONFIG || {};
7
- const env = globalThis.process?.env || {};
8
- applyEnv(runtimeConfig, {
9
- prefix: "NITRO_",
10
- altPrefix: runtimeConfig.nitro?.envPrefix ?? env?.NITRO_ENV_PREFIX ?? "_",
11
- envExpansion: runtimeConfig.nitro?.envExpansion ?? env?.NITRO_ENV_EXPANSION ?? false
12
- });
13
- return runtimeConfig;
14
- }
15
- function getEnv(key, opts) {
16
- const envKey = snakeCase(key).toUpperCase();
17
- return process.env[opts.prefix + envKey] ?? process.env[opts.altPrefix + envKey];
18
- }
19
- function _isObject(input) {
20
- return typeof input === "object" && !Array.isArray(input);
7
+ const env = globalThis.process?.env || {};
8
+ applyEnv(runtimeConfig, {
9
+ prefix: "NITRO_",
10
+ altPrefix: runtimeConfig.nitro?.envPrefix ?? env?.NITRO_ENV_PREFIX ?? "_",
11
+ envExpansion: Boolean(runtimeConfig.nitro?.envExpansion ?? env?.NITRO_ENV_EXPANSION ?? false)
12
+ });
13
+ return runtimeConfig;
21
14
  }
22
15
  export function applyEnv(obj, opts, parentKey = "") {
23
- for (const key in obj) {
24
- const subKey = parentKey ? `${parentKey}_${key}` : key;
25
- const envValue = getEnv(subKey, opts);
26
- if (_isObject(obj[key])) {
27
- if (_isObject(envValue)) {
28
- obj[key] = { ...obj[key], ...envValue };
29
- applyEnv(obj[key], opts, subKey);
30
- } else if (envValue === void 0) {
31
- applyEnv(obj[key], opts, subKey);
32
- } else {
33
- obj[key] = envValue ?? obj[key];
34
- }
35
- } else {
36
- obj[key] = envValue ?? obj[key];
37
- }
38
- if (opts.envExpansion && typeof obj[key] === "string") {
39
- obj[key] = _expandFromEnv(obj[key]);
40
- }
41
- }
42
- return obj;
16
+ for (const key in obj) {
17
+ const subKey = parentKey ? `${parentKey}_${key}` : key;
18
+ const envValue = getEnv(subKey, opts);
19
+ if (_isObject(obj[key])) {
20
+ // Same as before
21
+ if (_isObject(envValue)) {
22
+ obj[key] = {
23
+ ...obj[key],
24
+ ...envValue
25
+ };
26
+ applyEnv(obj[key], opts, subKey);
27
+ } else if (envValue === undefined) {
28
+ applyEnv(obj[key], opts, subKey);
29
+ } else {
30
+ obj[key] = envValue ?? obj[key];
31
+ }
32
+ } else {
33
+ obj[key] = envValue ?? obj[key];
34
+ }
35
+ // Experimental env expansion
36
+ if (opts.envExpansion && typeof obj[key] === "string") {
37
+ obj[key] = _expandFromEnv(obj[key]);
38
+ }
39
+ }
40
+ return obj;
43
41
  }
44
42
  const envExpandRx = /\{\{([^{}]*)\}\}/g;
45
43
  function _expandFromEnv(value) {
46
- return value.replace(envExpandRx, (match, key) => {
47
- return process.env[key] || match;
48
- });
44
+ return value.replace(envExpandRx, (match, key) => {
45
+ return process.env[key] || match;
46
+ });
47
+ }
48
+ function getEnv(key, opts) {
49
+ const envKey = snakeCase(key).toUpperCase();
50
+ return process.env[opts.prefix + envKey] ?? process.env[opts.altPrefix + envKey];
51
+ }
52
+ function _isObject(input) {
53
+ return input !== null && typeof input === "object" && !Array.isArray(input);
49
54
  }
@@ -1,77 +1,66 @@
1
1
  import { HTTPError, defineHandler } from "h3";
2
- import {
3
- decodePath,
4
- joinURL,
5
- withLeadingSlash,
6
- withoutTrailingSlash
7
- } from "ufo";
8
- import {
9
- getAsset,
10
- isPublicAssetURL,
11
- readAsset
12
- } from "#nitro-internal-virtual/public-assets";
13
- const METHODS = /* @__PURE__ */ new Set(["HEAD", "GET"]);
14
- const EncodingMap = { gzip: ".gz", br: ".br" };
2
+ import { decodePath, joinURL, withLeadingSlash, withoutTrailingSlash } from "ufo";
3
+ import { getAsset, isPublicAssetURL, readAsset } from "#nitro/virtual/public-assets";
4
+ const METHODS = new Set(["HEAD", "GET"]);
5
+ const EncodingMap = {
6
+ gzip: ".gz",
7
+ br: ".br"
8
+ };
15
9
  export default defineHandler((event) => {
16
- if (event.req.method && !METHODS.has(event.req.method)) {
17
- return;
18
- }
19
- let id = decodePath(
20
- withLeadingSlash(withoutTrailingSlash(event.url.pathname))
21
- );
22
- let asset;
23
- const encodingHeader = event.req.headers.get("accept-encoding") || "";
24
- const encodings = [
25
- ...encodingHeader.split(",").map((e) => EncodingMap[e.trim()]).filter(Boolean).sort(),
26
- ""
27
- ];
28
- if (encodings.length > 1) {
29
- event.res.headers.append("Vary", "Accept-Encoding");
30
- }
31
- for (const encoding of encodings) {
32
- for (const _id of [id + encoding, joinURL(id, "index.html" + encoding)]) {
33
- const _asset = getAsset(_id);
34
- if (_asset) {
35
- asset = _asset;
36
- id = _id;
37
- break;
38
- }
39
- }
40
- }
41
- if (!asset) {
42
- if (isPublicAssetURL(id)) {
43
- event.res.headers.delete("Cache-Control");
44
- throw new HTTPError({ status: 404 });
45
- }
46
- return;
47
- }
48
- const ifNotMatch = event.req.headers.get("if-none-match") === asset.etag;
49
- if (ifNotMatch) {
50
- event.res.status = 304;
51
- event.res.statusText = "Not Modified";
52
- return "";
53
- }
54
- const ifModifiedSinceH = event.req.headers.get("if-modified-since");
55
- const mtimeDate = new Date(asset.mtime);
56
- if (ifModifiedSinceH && asset.mtime && new Date(ifModifiedSinceH) >= mtimeDate) {
57
- event.res.status = 304;
58
- event.res.statusText = "Not Modified";
59
- return "";
60
- }
61
- if (asset.type) {
62
- event.res.headers.set("Content-Type", asset.type);
63
- }
64
- if (asset.etag && !event.res.headers.has("ETag")) {
65
- event.res.headers.set("ETag", asset.etag);
66
- }
67
- if (asset.mtime && !event.res.headers.has("Last-Modified")) {
68
- event.res.headers.set("Last-Modified", mtimeDate.toUTCString());
69
- }
70
- if (asset.encoding && !event.res.headers.has("Content-Encoding")) {
71
- event.res.headers.set("Content-Encoding", asset.encoding);
72
- }
73
- if (asset.size > 0 && !event.res.headers.has("Content-Length")) {
74
- event.res.headers.set("Content-Length", asset.size.toString());
75
- }
76
- return readAsset(id);
10
+ if (event.req.method && !METHODS.has(event.req.method)) {
11
+ return;
12
+ }
13
+ let id = decodePath(withLeadingSlash(withoutTrailingSlash(event.url.pathname)));
14
+ let asset;
15
+ const encodingHeader = event.req.headers.get("accept-encoding") || "";
16
+ const encodings = [...encodingHeader.split(",").map((e) => EncodingMap[e.trim()]).filter(Boolean).sort(), ""];
17
+ if (encodings.length > 1) {
18
+ event.res.headers.append("Vary", "Accept-Encoding");
19
+ }
20
+ for (const encoding of encodings) {
21
+ for (const _id of [id + encoding, joinURL(id, "index.html" + encoding)]) {
22
+ const _asset = getAsset(_id);
23
+ if (_asset) {
24
+ asset = _asset;
25
+ id = _id;
26
+ break;
27
+ }
28
+ }
29
+ }
30
+ if (!asset) {
31
+ if (isPublicAssetURL(id)) {
32
+ event.res.headers.delete("Cache-Control");
33
+ throw new HTTPError({ status: 404 });
34
+ }
35
+ return;
36
+ }
37
+ const ifNotMatch = event.req.headers.get("if-none-match") === asset.etag;
38
+ if (ifNotMatch) {
39
+ event.res.status = 304;
40
+ event.res.statusText = "Not Modified";
41
+ return "";
42
+ }
43
+ const ifModifiedSinceH = event.req.headers.get("if-modified-since");
44
+ const mtimeDate = new Date(asset.mtime);
45
+ if (ifModifiedSinceH && asset.mtime && new Date(ifModifiedSinceH) >= mtimeDate) {
46
+ event.res.status = 304;
47
+ event.res.statusText = "Not Modified";
48
+ return "";
49
+ }
50
+ if (asset.type) {
51
+ event.res.headers.set("Content-Type", asset.type);
52
+ }
53
+ if (asset.etag && !event.res.headers.has("ETag")) {
54
+ event.res.headers.set("ETag", asset.etag);
55
+ }
56
+ if (asset.mtime && !event.res.headers.has("Last-Modified")) {
57
+ event.res.headers.set("Last-Modified", mtimeDate.toUTCString());
58
+ }
59
+ if (asset.encoding && !event.res.headers.has("Content-Encoding")) {
60
+ event.res.headers.set("Content-Encoding", asset.encoding);
61
+ }
62
+ if (asset.size > 0 && !event.res.headers.has("Content-Length")) {
63
+ event.res.headers.set("Content-Length", asset.size.toString());
64
+ }
65
+ return readAsset(id);
77
66
  });
@@ -1,6 +1,6 @@
1
1
  import { prefixStorage } from "unstorage";
2
- import { initStorage } from "#nitro-internal-virtual/storage";
2
+ import { initStorage } from "#nitro/virtual/storage";
3
3
  export function useStorage(base = "") {
4
- const storage = useStorage._storage ??= initStorage();
5
- return base ? prefixStorage(storage, base) : storage;
4
+ const storage = useStorage._storage ??= initStorage();
5
+ return base ? prefixStorage(storage, base) : storage;
6
6
  }
@@ -2,16 +2,16 @@ import type { Task, TaskContext, TaskPayload, TaskResult } from "nitro/types";
2
2
  /** @experimental */
3
3
  export declare function defineTask<RT = unknown>(def: Task<RT>): Task<RT>;
4
4
  /** @experimental */
5
- export declare function runTask<RT = unknown>(name: string, { payload, context, }?: {
6
- payload?: TaskPayload;
7
- context?: TaskContext;
5
+ export declare function runTask<RT = unknown>(name: string, { payload, context }?: {
6
+ payload?: TaskPayload;
7
+ context?: TaskContext;
8
8
  }): Promise<TaskResult<RT>>;
9
9
  /** @experimental */
10
- export declare function startScheduleRunner(): void;
10
+ export declare function startScheduleRunner();
11
11
  /** @experimental */
12
12
  export declare function getCronTasks(cron: string): string[];
13
13
  /** @experimental */
14
14
  export declare function runCronTasks(cron: string, ctx: {
15
- payload?: TaskPayload;
16
- context?: TaskContext;
15
+ payload?: TaskPayload;
16
+ context?: TaskContext;
17
17
  }): Promise<TaskResult[]>;