nitro 3.0.0 → 3.0.1-alpha.1

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 (293) hide show
  1. package/dist/_build/common.mjs +68 -0
  2. package/dist/_build/common2.mjs +772 -0
  3. package/dist/_build/rolldown.mjs +206 -0
  4. package/dist/_build/rollup.mjs +289 -0
  5. package/dist/_build/vite.build.mjs +56 -0
  6. package/dist/_build/vite.plugin.mjs +768 -0
  7. package/dist/_chunks/ANM1K1bE.mjs +304 -0
  8. package/dist/_chunks/B-D1JOIz.mjs +1355 -0
  9. package/dist/_chunks/BX9-zVkM.mjs +59 -0
  10. package/dist/_chunks/Bqks5huO.mjs +31 -0
  11. package/dist/_chunks/C7CbzoI1.mjs +39 -0
  12. package/dist/_dev.d.mts +12 -0
  13. package/dist/_dev.mjs +705 -0
  14. package/dist/_libs/acorn.mjs +5034 -0
  15. package/dist/_libs/c12.mjs +2858 -0
  16. package/dist/_libs/chokidar.mjs +1561 -0
  17. package/dist/_libs/citty.mjs +333 -0
  18. package/dist/_libs/commondir.mjs +22 -0
  19. package/dist/_libs/compatx.mjs +46 -0
  20. package/dist/_libs/confbox.mjs +2920 -0
  21. package/dist/_libs/deepmerge.mjs +86 -0
  22. package/dist/_libs/dot-prop.mjs +138 -0
  23. package/dist/_libs/duplexer.mjs +71 -0
  24. package/dist/_libs/escape-string-regexp.mjs +8 -0
  25. package/dist/_libs/estree-walker.mjs +330 -0
  26. package/dist/_libs/etag.mjs +80 -0
  27. package/dist/_libs/fdir.mjs +514 -0
  28. package/dist/_libs/function-bind.mjs +63 -0
  29. package/dist/_libs/gen-mapping.mjs +612 -0
  30. package/dist/_libs/giget.mjs +19289 -0
  31. package/dist/_libs/gzip-size.mjs +21 -0
  32. package/dist/_libs/hasown.mjs +14 -0
  33. package/dist/_libs/httpxy.mjs +410 -0
  34. package/dist/_libs/is-core-module.mjs +220 -0
  35. package/dist/_libs/is-module.mjs +13 -0
  36. package/dist/_libs/is-reference.mjs +32 -0
  37. package/dist/_libs/js-tokens.mjs +382 -0
  38. package/dist/_libs/klona.mjs +38 -0
  39. package/dist/_libs/knitwork.mjs +124 -0
  40. package/dist/_libs/local-pkg.mjs +1686 -0
  41. package/dist/_libs/magic-string.mjs +939 -0
  42. package/dist/_libs/mime.mjs +1391 -0
  43. package/dist/_libs/node-fetch-native.mjs +173 -0
  44. package/dist/_libs/path-parse.mjs +47 -0
  45. package/dist/_libs/pathe.mjs +41 -0
  46. package/dist/_libs/picomatch.mjs +1673 -0
  47. package/dist/_libs/plugin-alias.mjs +64 -0
  48. package/dist/_libs/plugin-commonjs.mjs +1491 -0
  49. package/dist/_libs/plugin-inject.mjs +135 -0
  50. package/dist/_libs/plugin-json.mjs +36 -0
  51. package/dist/_libs/plugin-node-resolve.mjs +1553 -0
  52. package/dist/_libs/plugin-replace.mjs +104 -0
  53. package/dist/_libs/pretty-bytes.mjs +116 -0
  54. package/dist/_libs/remapping.mjs +117 -0
  55. package/dist/_libs/rou3.mjs +319 -0
  56. package/dist/_libs/std-env.mjs +158 -0
  57. package/dist/_libs/strip-literal.mjs +51 -0
  58. package/dist/_libs/tinyglobby.mjs +292 -0
  59. package/dist/_libs/tsconfck.mjs +832 -0
  60. package/dist/_libs/ultrahtml.mjs +138 -0
  61. package/dist/_libs/unimport.mjs +3520 -0
  62. package/dist/_libs/untyped.mjs +271 -0
  63. package/dist/_libs/unwasm.mjs +5836 -0
  64. package/dist/_libs/vite-plugin-fullstack.mjs +561 -0
  65. package/dist/_presets.mjs +1752 -0
  66. package/dist/builder.d.mts +63 -0
  67. package/dist/builder.mjs +33 -0
  68. package/dist/cli/_chunks/build.mjs +48 -0
  69. package/dist/cli/_chunks/common.mjs +15 -0
  70. package/dist/cli/_chunks/detect-acorn.mjs +12 -0
  71. package/dist/cli/_chunks/dev.mjs +68 -0
  72. package/dist/cli/_chunks/dist.mjs +3 -0
  73. package/dist/cli/_chunks/dist2.mjs +3 -0
  74. package/dist/cli/_chunks/dist3.mjs +3 -0
  75. package/dist/cli/_chunks/dist4.mjs +4 -0
  76. package/dist/cli/_chunks/dist5.mjs +4 -0
  77. package/dist/cli/_chunks/esm.mjs +3 -0
  78. package/dist/cli/_chunks/json5.mjs +4 -0
  79. package/dist/cli/_chunks/jsonc.mjs +4 -0
  80. package/dist/cli/_chunks/list.mjs +27 -0
  81. package/dist/cli/_chunks/multipart-parser.mjs +6 -0
  82. package/dist/cli/_chunks/prepare.mjs +19 -0
  83. package/dist/cli/_chunks/run.mjs +55 -0
  84. package/dist/cli/_chunks/task.mjs +16 -0
  85. package/dist/cli/_chunks/toml.mjs +4 -0
  86. package/dist/cli/_chunks/yaml.mjs +4 -0
  87. package/dist/cli/index.d.mts +1 -1
  88. package/dist/cli/index.mjs +20 -476
  89. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
  90. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  91. package/dist/node_modules/@sindresorhus/is/distribution/index.js +1 -1
  92. package/dist/node_modules/@sindresorhus/is/package.json +1 -1
  93. package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
  94. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  95. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  96. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  97. package/dist/node_modules/cookie-es/package.json +37 -0
  98. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  99. package/dist/node_modules/hookable/package.json +29 -26
  100. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  101. package/dist/node_modules/rendu/package.json +47 -0
  102. package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-F4I6KX4R.js} +2 -1
  103. package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-YYEJ3AGB.js} +4 -1
  104. package/dist/node_modules/youch/build/index.js +16 -8
  105. package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
  106. package/dist/node_modules/youch/build/public/header/script.js +0 -2
  107. package/dist/node_modules/youch/build/public/layout/script.js +0 -8
  108. package/dist/node_modules/youch/build/public/layout/style.css +4 -0
  109. package/dist/node_modules/youch/package.json +16 -17
  110. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  111. package/dist/presets/_nitro/runtime/nitro-dev.mjs +48 -42
  112. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  113. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +10 -14
  114. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  115. package/dist/presets/_nitro/runtime/service-worker.mjs +15 -12
  116. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  117. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +7 -6
  118. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  119. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  120. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  121. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +26 -28
  122. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +8 -8
  123. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  124. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  125. package/dist/presets/azure/runtime/azure-swa.mjs +24 -22
  126. package/dist/presets/bun/runtime/bun.d.mts +2 -0
  127. package/dist/presets/bun/runtime/bun.mjs +34 -21
  128. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  129. package/dist/presets/cloudflare/runtime/_module-handler.mjs +80 -88
  130. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  131. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +60 -63
  132. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  133. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +14 -16
  134. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  135. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +40 -42
  136. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  137. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  138. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  139. package/dist/presets/deno/runtime/deno-deploy.d.mts +4 -0
  140. package/dist/presets/deno/runtime/deno-deploy.mjs +15 -12
  141. package/dist/presets/deno/runtime/deno-server.d.mts +0 -3
  142. package/dist/presets/deno/runtime/deno-server.mjs +32 -52
  143. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  144. package/dist/presets/netlify/runtime/netlify-edge.mjs +15 -12
  145. package/dist/presets/netlify/runtime/netlify.mjs +12 -18
  146. package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
  147. package/dist/presets/node/runtime/node-cluster.mjs +50 -54
  148. package/dist/presets/node/runtime/node-middleware.d.mts +2 -3
  149. package/dist/presets/node/runtime/node-middleware.mjs +9 -8
  150. package/dist/presets/node/runtime/node-server.mjs +37 -34
  151. package/dist/presets/standard/runtime/server.d.mts +1 -3
  152. package/dist/presets/standard/runtime/server.mjs +2 -4
  153. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  154. package/dist/presets/stormkit/runtime/stormkit.mjs +21 -21
  155. package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
  156. package/dist/presets/vercel/runtime/vercel.node.mjs +15 -0
  157. package/dist/presets/vercel/runtime/{vercel.d.mts → vercel.web.d.mts} +3 -3
  158. package/dist/presets/vercel/runtime/vercel.web.mjs +20 -0
  159. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  160. package/dist/presets/winterjs/runtime/winterjs.mjs +73 -69
  161. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  162. package/dist/presets/zeabur/runtime/zeabur.mjs +1 -1
  163. package/dist/runtime/app.d.mts +1 -0
  164. package/dist/runtime/app.mjs +1 -0
  165. package/dist/runtime/cache.d.mts +1 -0
  166. package/dist/runtime/cache.mjs +1 -0
  167. package/dist/runtime/config.d.mts +3 -0
  168. package/dist/runtime/config.mjs +4 -0
  169. package/dist/runtime/context.d.mts +1 -0
  170. package/dist/runtime/context.mjs +1 -0
  171. package/dist/runtime/database.d.mts +1 -0
  172. package/dist/runtime/database.mjs +1 -0
  173. package/dist/runtime/internal/app.d.mts +11 -1
  174. package/dist/runtime/internal/app.mjs +188 -140
  175. package/dist/runtime/internal/cache.d.mts +9 -5
  176. package/dist/runtime/internal/cache.mjs +248 -219
  177. package/dist/runtime/internal/context.d.mts +9 -9
  178. package/dist/runtime/internal/context.mjs +17 -10
  179. package/dist/runtime/internal/database.mjs +8 -10
  180. package/dist/runtime/internal/error/dev.d.mts +5 -4
  181. package/dist/runtime/internal/error/dev.mjs +106 -105
  182. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  183. package/dist/runtime/internal/error/hooks.mjs +9 -0
  184. package/dist/runtime/internal/error/prod.d.mts +5 -4
  185. package/dist/runtime/internal/error/prod.mjs +51 -59
  186. package/dist/runtime/internal/error/utils.d.mts +4 -4
  187. package/dist/runtime/internal/error/utils.mjs +1 -1
  188. package/dist/runtime/internal/meta.d.mts +1 -1
  189. package/dist/runtime/internal/meta.mjs +1 -1
  190. package/dist/runtime/internal/plugin.d.mts +2 -2
  191. package/dist/runtime/internal/plugin.mjs +1 -1
  192. package/dist/runtime/internal/route-rules.d.mts +8 -8
  193. package/dist/runtime/internal/route-rules.mjs +54 -52
  194. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  195. package/dist/runtime/internal/routes/dev-tasks.mjs +16 -18
  196. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  197. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  198. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  199. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  200. package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
  201. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  202. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  203. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  204. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  205. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  206. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  207. package/dist/runtime/internal/runtime-config.mjs +40 -35
  208. package/dist/runtime/internal/static.mjs +63 -74
  209. package/dist/runtime/internal/storage.mjs +2 -2
  210. package/dist/runtime/internal/task.d.mts +6 -6
  211. package/dist/runtime/internal/task.mjs +56 -60
  212. package/dist/runtime/internal/vite/dev-entry.mjs +11 -1
  213. package/dist/runtime/internal/vite/dev-worker.mjs +9 -57
  214. package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
  215. package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +1 -1
  216. package/dist/runtime/meta.mjs +26 -0
  217. package/dist/runtime/nitro.d.mts +12 -0
  218. package/dist/runtime/nitro.mjs +32 -0
  219. package/dist/runtime/runtime-config.d.mts +1 -0
  220. package/dist/runtime/runtime-config.mjs +1 -0
  221. package/dist/runtime/storage.d.mts +1 -0
  222. package/dist/runtime/storage.mjs +1 -0
  223. package/dist/runtime/task.d.mts +1 -0
  224. package/dist/runtime/task.mjs +1 -0
  225. package/dist/runtime/vite-runtime.d.mts +8 -0
  226. package/dist/runtime/vite-runtime.mjs +9 -0
  227. package/dist/types/index.d.mts +2625 -2297
  228. package/dist/types/index.mjs +1 -1
  229. package/dist/vite.d.mts +49 -51
  230. package/dist/vite.mjs +44 -68
  231. package/lib/tsconfig.json +27 -0
  232. package/package.json +86 -76
  233. package/dist/_chunks/app.mjs +0 -19797
  234. package/dist/_chunks/build.mjs +0 -84
  235. package/dist/_chunks/build2.mjs +0 -318
  236. package/dist/_chunks/build3.mjs +0 -6452
  237. package/dist/_chunks/detect-acorn.mjs +0 -503
  238. package/dist/_chunks/index.mjs +0 -22242
  239. package/dist/_chunks/index2.mjs +0 -297
  240. package/dist/_chunks/index3.mjs +0 -1058
  241. package/dist/_chunks/index4.mjs +0 -1206
  242. package/dist/_chunks/info.mjs +0 -11157
  243. package/dist/_chunks/json5.mjs +0 -68
  244. package/dist/_chunks/jsonc.mjs +0 -51
  245. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  246. package/dist/_chunks/plugin.mjs +0 -960
  247. package/dist/_chunks/server.mjs +0 -254
  248. package/dist/_chunks/snapshot.mjs +0 -284
  249. package/dist/_chunks/toml.mjs +0 -259
  250. package/dist/_chunks/yaml.mjs +0 -86
  251. package/dist/cli/build.mjs +0 -54
  252. package/dist/cli/common.mjs +0 -13
  253. package/dist/cli/dev.mjs +0 -95
  254. package/dist/cli/index2.mjs +0 -17
  255. package/dist/cli/list.mjs +0 -34
  256. package/dist/cli/prepare.mjs +0 -24
  257. package/dist/cli/run.mjs +0 -60
  258. package/dist/index.d.mts +0 -52
  259. package/dist/index.mjs +0 -55
  260. package/dist/node_modules/cookie/dist/index.js +0 -239
  261. package/dist/node_modules/cookie/package.json +0 -42
  262. package/dist/node_modules/klona/dist/index.mjs +0 -81
  263. package/dist/node_modules/klona/full/index.mjs +0 -53
  264. package/dist/node_modules/klona/package.json +0 -74
  265. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  266. package/dist/node_modules/std-env/package.json +0 -46
  267. package/dist/presets/vercel/runtime/vercel.mjs +0 -17
  268. package/dist/presets.mjs +0 -2460
  269. package/dist/runtime/index.d.mts +0 -11
  270. package/dist/runtime/index.mjs +0 -17
  271. package/dist/runtime/internal/debug.d.mts +0 -2
  272. package/dist/runtime/internal/debug.mjs +0 -5
  273. package/dist/runtime/internal/empty.d.mts +0 -0
  274. package/dist/runtime/internal/index.d.mts +0 -3
  275. package/dist/runtime/internal/index.mjs +0 -3
  276. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
  277. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
  278. package/dist/runtime/internal/renderer.d.mts +0 -3
  279. package/dist/runtime/internal/renderer.mjs +0 -36
  280. package/dist/runtime/internal/shutdown.d.mts +0 -9
  281. package/dist/runtime/internal/shutdown.mjs +0 -34
  282. package/dist/runtime/internal/utils.d.mts +0 -1
  283. package/dist/runtime/internal/utils.mjs +0 -15
  284. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  285. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  286. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  287. package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
  288. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  289. package/lib/config.d.mts +0 -9
  290. package/lib/config.mjs +0 -5
  291. package/lib/meta.d.mts +0 -5
  292. package/lib/meta.mjs +0 -21
  293. package/lib/runtime-meta.mjs +0 -38
@@ -3,98 +3,92 @@ import { joinURL } from "ufo";
3
3
  import { defu } from "defu";
4
4
  import { handlersMeta } from "#nitro-internal-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-internal-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
1
  import { rendererTemplate } from "#nitro-internal-virtual/renderer-template";
2
2
  export default function renderIndexHTML(event) {
3
- return rendererTemplate(event.req);
3
+ return rendererTemplate(event.req);
4
4
  }
@@ -1,3 +1,4 @@
1
1
  import { type EventHandler } from "h3";
2
+ // Served as /_scalar
2
3
  declare const _default: EventHandler;
3
4
  export default _default;
@@ -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,3 +1,4 @@
1
1
  import type { EventHandler } from "h3";
2
+ // https://github.com/swagger-api/swagger-ui
2
3
  declare const _default: EventHandler;
3
4
  export default _default;
@@ -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
+ import { runtimeConfig } from "#nitro-internal-virtual/runtime-config";
1
2
  import { snakeCase } from "scule";
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;
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;
14
14
  }
15
15
  function getEnv(key, opts) {
16
- const envKey = snakeCase(key).toUpperCase();
17
- return process.env[opts.prefix + envKey] ?? process.env[opts.altPrefix + envKey];
16
+ const envKey = snakeCase(key).toUpperCase();
17
+ return process.env[opts.prefix + envKey] ?? process.env[opts.altPrefix + envKey];
18
18
  }
19
19
  function _isObject(input) {
20
- return typeof input === "object" && !Array.isArray(input);
20
+ return typeof input === "object" && !Array.isArray(input);
21
21
  }
22
22
  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;
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
+ // Same as before
28
+ if (_isObject(envValue)) {
29
+ obj[key] = {
30
+ ...obj[key],
31
+ ...envValue
32
+ };
33
+ applyEnv(obj[key], opts, subKey);
34
+ } else if (envValue === undefined) {
35
+ applyEnv(obj[key], opts, subKey);
36
+ } else {
37
+ obj[key] = envValue ?? obj[key];
38
+ }
39
+ } else {
40
+ obj[key] = envValue ?? obj[key];
41
+ }
42
+ // Experimental env expansion
43
+ if (opts.envExpansion && typeof obj[key] === "string") {
44
+ obj[key] = _expandFromEnv(obj[key]);
45
+ }
46
+ }
47
+ return obj;
43
48
  }
44
49
  const envExpandRx = /\{\{([^{}]*)\}\}/g;
45
50
  function _expandFromEnv(value) {
46
- return value.replace(envExpandRx, (match, key) => {
47
- return process.env[key] || match;
48
- });
51
+ return value.replace(envExpandRx, (match, key) => {
52
+ return process.env[key] || match;
53
+ });
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-internal-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
2
  import { initStorage } from "#nitro-internal-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[]>;