nitro-nightly 4.0.0-20251010-091516-7cafddba → 4.0.0-20251030-121649-98b56dfe

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 (252) hide show
  1. package/dist/_build/common.mjs +763 -0
  2. package/dist/_build/rolldown.mjs +216 -0
  3. package/dist/_build/rollup.mjs +359 -0
  4. package/dist/_build/vite.build.mjs +67 -0
  5. package/dist/_build/vite.plugin.mjs +747 -0
  6. package/dist/_chunks/B-7HiF0V.mjs +1303 -0
  7. package/dist/_chunks/B3asVbT4.mjs +151 -0
  8. package/dist/_chunks/B5ooyfLk.mjs +372 -0
  9. package/dist/_chunks/DXMHy5ca.mjs +43 -0
  10. package/dist/_dev.d.mts +12 -0
  11. package/dist/_dev.mjs +675 -0
  12. package/dist/_libs/acorn.mjs +5034 -0
  13. package/dist/_libs/c12.mjs +2798 -0
  14. package/dist/_libs/chokidar.mjs +1560 -0
  15. package/dist/_libs/citty.mjs +333 -0
  16. package/dist/_libs/commondir.mjs +22 -0
  17. package/dist/_libs/compatx.mjs +46 -0
  18. package/dist/_libs/confbox.mjs +2920 -0
  19. package/dist/_libs/debug.mjs +848 -0
  20. package/dist/_libs/deepmerge.mjs +86 -0
  21. package/dist/_libs/depd.mjs +314 -0
  22. package/dist/_libs/dot-prop.mjs +138 -0
  23. package/dist/_libs/duplexer.mjs +71 -0
  24. package/dist/_libs/ee-first.mjs +68 -0
  25. package/dist/_libs/encodeurl.mjs +49 -0
  26. package/dist/_libs/escape-html.mjs +58 -0
  27. package/dist/_libs/escape-string-regexp.mjs +8 -0
  28. package/dist/_libs/estree-walker.mjs +330 -0
  29. package/dist/_libs/etag.mjs +75 -0
  30. package/dist/_libs/fdir.mjs +514 -0
  31. package/dist/_libs/fresh.mjs +85 -0
  32. package/dist/_libs/function-bind.mjs +63 -0
  33. package/dist/_libs/gen-mapping.mjs +612 -0
  34. package/dist/_libs/giget.mjs +19076 -0
  35. package/dist/_libs/gzip-size.mjs +21 -0
  36. package/dist/_libs/hasown.mjs +14 -0
  37. package/dist/_libs/http-errors.mjs +436 -0
  38. package/dist/_libs/httpxy.mjs +410 -0
  39. package/dist/_libs/is-core-module.mjs +220 -0
  40. package/dist/_libs/is-module.mjs +13 -0
  41. package/dist/_libs/is-reference.mjs +32 -0
  42. package/dist/_libs/js-tokens.mjs +382 -0
  43. package/dist/_libs/klona.mjs +90 -0
  44. package/dist/_libs/knitwork.mjs +124 -0
  45. package/dist/_libs/local-pkg.mjs +1686 -0
  46. package/dist/_libs/magic-string.mjs +939 -0
  47. package/dist/_libs/mime-db.mjs +7642 -0
  48. package/dist/_libs/mime-types.mjs +162 -0
  49. package/dist/_libs/mime.mjs +1391 -0
  50. package/dist/_libs/node-fetch-native.mjs +173 -0
  51. package/dist/_libs/on-finished.mjs +170 -0
  52. package/dist/_libs/parseurl.mjs +103 -0
  53. package/dist/_libs/path-parse.mjs +47 -0
  54. package/dist/_libs/pathe.mjs +41 -0
  55. package/dist/_libs/picomatch.mjs +1673 -0
  56. package/dist/_libs/plugin-alias.mjs +64 -0
  57. package/dist/_libs/plugin-commonjs.mjs +1489 -0
  58. package/dist/_libs/plugin-inject.mjs +135 -0
  59. package/dist/_libs/plugin-json.mjs +36 -0
  60. package/dist/_libs/plugin-node-resolve.mjs +1553 -0
  61. package/dist/_libs/plugin-replace.mjs +104 -0
  62. package/dist/_libs/pretty-bytes.mjs +116 -0
  63. package/dist/_libs/range-parser.mjs +102 -0
  64. package/dist/_libs/remapping.mjs +117 -0
  65. package/dist/_libs/rou3.mjs +311 -0
  66. package/dist/_libs/send.mjs +857 -0
  67. package/dist/_libs/serve-static.mjs +124 -0
  68. package/dist/_libs/std-env.mjs +158 -0
  69. package/dist/_libs/strip-literal.mjs +51 -0
  70. package/dist/_libs/tinyglobby.mjs +292 -0
  71. package/dist/_libs/ultrahtml.mjs +138 -0
  72. package/dist/_libs/unimport.mjs +3520 -0
  73. package/dist/_libs/untyped.mjs +271 -0
  74. package/dist/_libs/unwasm.mjs +5825 -0
  75. package/dist/_libs/vite-plugin-fullstack.mjs +561 -0
  76. package/dist/_presets.mjs +1723 -0
  77. package/dist/builder.d.mts +54 -0
  78. package/dist/builder.mjs +45 -0
  79. package/dist/cli/_chunks/build.mjs +43 -0
  80. package/dist/cli/_chunks/common.mjs +15 -0
  81. package/dist/cli/_chunks/detect-acorn.mjs +12 -0
  82. package/dist/cli/_chunks/dev.mjs +79 -0
  83. package/dist/cli/_chunks/dist.mjs +3 -0
  84. package/dist/cli/_chunks/dist2.mjs +4 -0
  85. package/dist/cli/_chunks/esm.mjs +3 -0
  86. package/dist/cli/_chunks/json5.mjs +4 -0
  87. package/dist/cli/_chunks/jsonc.mjs +4 -0
  88. package/dist/cli/_chunks/list.mjs +27 -0
  89. package/dist/cli/_chunks/multipart-parser.mjs +6 -0
  90. package/dist/cli/_chunks/prepare.mjs +19 -0
  91. package/dist/cli/_chunks/run.mjs +55 -0
  92. package/dist/cli/_chunks/task.mjs +16 -0
  93. package/dist/cli/_chunks/toml.mjs +4 -0
  94. package/dist/cli/_chunks/yaml.mjs +4 -0
  95. package/dist/cli/index.d.mts +1 -1
  96. package/dist/cli/index.mjs +20 -476
  97. package/dist/node_modules/@speed-highlight/core/dist/index.js +1 -1
  98. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +1 -1
  99. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  100. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  101. package/dist/node_modules/cookie-es/package.json +37 -0
  102. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  103. package/dist/node_modules/hookable/package.json +29 -26
  104. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  105. package/dist/node_modules/rendu/package.json +47 -0
  106. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  107. package/dist/presets/_nitro/runtime/nitro-dev.mjs +44 -38
  108. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  109. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +9 -12
  110. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  111. package/dist/presets/_nitro/runtime/service-worker.mjs +14 -11
  112. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  113. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +6 -5
  114. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  115. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  116. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  117. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -27
  118. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +7 -7
  119. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  120. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  121. package/dist/presets/azure/runtime/azure-swa.mjs +22 -21
  122. package/dist/presets/bun/runtime/bun.d.mts +1 -0
  123. package/dist/presets/bun/runtime/bun.mjs +18 -17
  124. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  125. package/dist/presets/cloudflare/runtime/_module-handler.mjs +79 -87
  126. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  127. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +55 -61
  128. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  129. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +12 -14
  130. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  131. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -39
  132. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  133. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  134. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  135. package/dist/presets/deno/runtime/deno-deploy.d.mts +1 -0
  136. package/dist/presets/deno/runtime/deno-deploy.mjs +12 -11
  137. package/dist/presets/deno/runtime/deno-server.d.mts +2 -1
  138. package/dist/presets/deno/runtime/deno-server.mjs +31 -39
  139. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  140. package/dist/presets/netlify/runtime/netlify-edge.mjs +14 -11
  141. package/dist/presets/netlify/runtime/netlify.mjs +11 -17
  142. package/dist/presets/node/runtime/node-cluster.mjs +49 -48
  143. package/dist/presets/node/runtime/node-middleware.d.mts +3 -2
  144. package/dist/presets/node/runtime/node-middleware.mjs +7 -6
  145. package/dist/presets/node/runtime/node-server.mjs +34 -24
  146. package/dist/presets/standard/runtime/server.d.mts +1 -3
  147. package/dist/presets/standard/runtime/server.mjs +1 -3
  148. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  149. package/dist/presets/stormkit/runtime/stormkit.mjs +20 -20
  150. package/dist/presets/vercel/runtime/vercel.d.mts +3 -3
  151. package/dist/presets/vercel/runtime/vercel.mjs +15 -14
  152. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  153. package/dist/presets/winterjs/runtime/winterjs.mjs +72 -68
  154. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  155. package/dist/runtime/index.d.mts +13 -2
  156. package/dist/runtime/index.mjs +13 -8
  157. package/dist/runtime/internal/app.d.mts +3 -1
  158. package/dist/runtime/internal/app.mjs +179 -140
  159. package/dist/runtime/internal/cache.d.mts +10 -4
  160. package/dist/runtime/internal/cache.mjs +247 -216
  161. package/dist/runtime/internal/context.d.mts +9 -9
  162. package/dist/runtime/internal/context.mjs +17 -10
  163. package/dist/runtime/internal/database.mjs +8 -10
  164. package/dist/runtime/internal/error/dev.d.mts +5 -4
  165. package/dist/runtime/internal/error/dev.mjs +106 -105
  166. package/dist/runtime/internal/error/prod.d.mts +5 -4
  167. package/dist/runtime/internal/error/prod.mjs +51 -59
  168. package/dist/runtime/internal/error/utils.d.mts +4 -4
  169. package/dist/runtime/internal/error/utils.mjs +1 -1
  170. package/dist/runtime/internal/index.d.mts +2 -0
  171. package/dist/runtime/internal/index.mjs +2 -0
  172. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +14 -14
  173. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +248 -209
  174. package/dist/runtime/internal/meta.d.mts +1 -1
  175. package/dist/runtime/internal/meta.mjs +1 -1
  176. package/dist/runtime/internal/plugin.d.mts +2 -2
  177. package/dist/runtime/internal/plugin.mjs +1 -1
  178. package/dist/runtime/internal/renderer.mjs +40 -32
  179. package/dist/runtime/internal/route-rules.d.mts +8 -8
  180. package/dist/runtime/internal/route-rules.mjs +53 -51
  181. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  182. package/dist/runtime/internal/routes/dev-tasks.mjs +15 -17
  183. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  184. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  185. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  186. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  187. package/dist/runtime/internal/routes/renderer-template.dev.mjs +10 -17
  188. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  189. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  190. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  191. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  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 +40 -35
  195. package/dist/runtime/internal/shutdown.d.mts +2 -8
  196. package/dist/runtime/internal/shutdown.mjs +32 -30
  197. package/dist/runtime/internal/static.mjs +63 -74
  198. package/dist/runtime/internal/storage.mjs +2 -2
  199. package/dist/runtime/internal/task.d.mts +6 -6
  200. package/dist/runtime/internal/task.mjs +56 -60
  201. package/dist/runtime/internal/utils.d.mts +1 -1
  202. package/dist/runtime/internal/utils.mjs +4 -10
  203. package/dist/types/index.d.mts +2594 -2286
  204. package/dist/types/index.mjs +1 -1
  205. package/dist/vite.d.mts +56 -47
  206. package/dist/vite.mjs +55 -68
  207. package/lib/index.d.mts +1 -0
  208. package/lib/index.mjs +1 -0
  209. package/lib/runtime/meta.mjs +35 -0
  210. package/package.json +49 -50
  211. package/dist/_chunks/app.mjs +0 -19797
  212. package/dist/_chunks/build.mjs +0 -84
  213. package/dist/_chunks/build2.mjs +0 -318
  214. package/dist/_chunks/build3.mjs +0 -6452
  215. package/dist/_chunks/detect-acorn.mjs +0 -503
  216. package/dist/_chunks/index.mjs +0 -22242
  217. package/dist/_chunks/index2.mjs +0 -297
  218. package/dist/_chunks/index3.mjs +0 -1058
  219. package/dist/_chunks/index4.mjs +0 -1206
  220. package/dist/_chunks/info.mjs +0 -11157
  221. package/dist/_chunks/json5.mjs +0 -68
  222. package/dist/_chunks/jsonc.mjs +0 -51
  223. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  224. package/dist/_chunks/plugin.mjs +0 -960
  225. package/dist/_chunks/server.mjs +0 -254
  226. package/dist/_chunks/snapshot.mjs +0 -284
  227. package/dist/_chunks/toml.mjs +0 -259
  228. package/dist/_chunks/yaml.mjs +0 -86
  229. package/dist/cli/build.mjs +0 -54
  230. package/dist/cli/common.mjs +0 -13
  231. package/dist/cli/dev.mjs +0 -95
  232. package/dist/cli/index2.mjs +0 -17
  233. package/dist/cli/list.mjs +0 -34
  234. package/dist/cli/prepare.mjs +0 -24
  235. package/dist/cli/run.mjs +0 -60
  236. package/dist/index.d.mts +0 -52
  237. package/dist/index.mjs +0 -55
  238. package/dist/node_modules/klona/dist/index.mjs +0 -81
  239. package/dist/node_modules/klona/full/index.mjs +0 -53
  240. package/dist/node_modules/klona/package.json +0 -74
  241. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  242. package/dist/node_modules/std-env/package.json +0 -46
  243. package/dist/presets.mjs +0 -2460
  244. package/dist/runtime/internal/debug.d.mts +0 -2
  245. package/dist/runtime/internal/debug.mjs +0 -5
  246. package/dist/runtime/internal/empty.d.mts +0 -0
  247. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  248. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  249. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  250. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  251. package/lib/runtime-meta.mjs +0 -38
  252. /package/lib/{runtime-meta.d.mts → runtime/meta.d.mts} +0 -0
@@ -1,62 +1,64 @@
1
1
  import { proxyRequest, redirect as sendRedirect } from "h3";
2
2
  import { joinURL, withQuery, withoutBase } from "ufo";
3
3
  import { defineCachedEventHandler } from "./cache.mjs";
4
+ // Headers route rule
4
5
  export const headers = ((m) => function headersRouteRule(event) {
5
- for (const [key, value] of Object.entries(m.options || {})) {
6
- event.res.headers.set(key, value);
7
- }
6
+ for (const [key, value] of Object.entries(m.options || {})) {
7
+ event.res.headers.set(key, value);
8
+ }
8
9
  });
10
+ // Redirect route rule
9
11
  export const redirect = ((m) => function redirectRouteRule(event) {
10
- let target = m.options?.to;
11
- if (!target) {
12
- return;
13
- }
14
- if (target.endsWith("/**")) {
15
- let targetPath = event.url.pathname + event.url.search;
16
- const strpBase = m.options._redirectStripBase;
17
- if (strpBase) {
18
- targetPath = withoutBase(targetPath, strpBase);
19
- }
20
- target = joinURL(target.slice(0, -3), targetPath);
21
- } else if (event.url.search) {
22
- target = withQuery(target, Object.fromEntries(event.url.searchParams));
23
- }
24
- return sendRedirect(target, m.options?.status);
12
+ let target = m.options?.to;
13
+ if (!target) {
14
+ return;
15
+ }
16
+ if (target.endsWith("/**")) {
17
+ let targetPath = event.url.pathname + event.url.search;
18
+ const strpBase = m.options._redirectStripBase;
19
+ if (strpBase) {
20
+ targetPath = withoutBase(targetPath, strpBase);
21
+ }
22
+ target = joinURL(target.slice(0, -3), targetPath);
23
+ } else if (event.url.search) {
24
+ target = withQuery(target, Object.fromEntries(event.url.searchParams));
25
+ }
26
+ return sendRedirect(target, m.options?.status);
25
27
  });
28
+ // Proxy route rule
26
29
  export const proxy = ((m) => function proxyRouteRule(event) {
27
- let target = m.options?.to;
28
- if (!target) {
29
- return;
30
- }
31
- if (target.endsWith("/**")) {
32
- let targetPath = event.url.pathname + event.url.search;
33
- const strpBase = m.options._proxyStripBase;
34
- if (strpBase) {
35
- targetPath = withoutBase(targetPath, strpBase);
36
- }
37
- target = joinURL(target.slice(0, -3), targetPath);
38
- } else if (event.url.search) {
39
- target = withQuery(target, Object.fromEntries(event.url.searchParams));
40
- }
41
- return proxyRequest(event, target, {
42
- ...m.options
43
- });
30
+ let target = m.options?.to;
31
+ if (!target) {
32
+ return;
33
+ }
34
+ if (target.endsWith("/**")) {
35
+ let targetPath = event.url.pathname + event.url.search;
36
+ const strpBase = m.options._proxyStripBase;
37
+ if (strpBase) {
38
+ targetPath = withoutBase(targetPath, strpBase);
39
+ }
40
+ target = joinURL(target.slice(0, -3), targetPath);
41
+ } else if (event.url.search) {
42
+ target = withQuery(target, Object.fromEntries(event.url.searchParams));
43
+ }
44
+ return proxyRequest(event, target, { ...m.options });
44
45
  });
46
+ // Cache route rule
45
47
  export const cache = ((m) => function cacheRouteRule(event, next) {
46
- if (!event.context.matchedRoute) {
47
- return next();
48
- }
49
- const cachedHandlers = globalThis.__nitroCachedHandlers ??= /* @__PURE__ */ new Map();
50
- const { handler, route } = event.context.matchedRoute;
51
- const key = `${m.route}:${route}`;
52
- let cachedHandler = cachedHandlers.get(key);
53
- if (!cachedHandler) {
54
- cachedHandler = defineCachedEventHandler(handler, {
55
- group: "nitro/route-rules",
56
- name: key,
57
- ...m.options
58
- });
59
- cachedHandlers.set(key, cachedHandler);
60
- }
61
- return cachedHandler(event);
48
+ if (!event.context.matchedRoute) {
49
+ return next();
50
+ }
51
+ const cachedHandlers = globalThis.__nitroCachedHandlers ??= new Map();
52
+ const { handler, route } = event.context.matchedRoute;
53
+ const key = `${m.route}:${route}`;
54
+ let cachedHandler = cachedHandlers.get(key);
55
+ if (!cachedHandler) {
56
+ cachedHandler = defineCachedEventHandler(handler, {
57
+ group: "nitro/route-rules",
58
+ name: key,
59
+ ...m.options
60
+ });
61
+ cachedHandlers.set(key, cachedHandler);
62
+ }
63
+ return cachedHandler(event);
62
64
  });
@@ -1,3 +1,2 @@
1
- import { H3 } from "h3";
2
- declare const _default: H3;
1
+ declare const _default;
3
2
  export default _default;
@@ -2,22 +2,20 @@ import { H3 } from "h3";
2
2
  import { runTask } from "nitro/runtime";
3
3
  import { scheduledTasks, tasks } from "#nitro-internal-virtual/tasks";
4
4
  export default new H3().get("/_nitro/tasks", async () => {
5
- const _tasks = await Promise.all(
6
- Object.entries(tasks).map(async ([name, task]) => {
7
- const _task = await task.resolve?.();
8
- return [name, { description: _task?.meta?.description }];
9
- })
10
- );
11
- return {
12
- tasks: Object.fromEntries(_tasks),
13
- scheduledTasks
14
- };
5
+ const _tasks = await Promise.all(Object.entries(tasks).map(async ([name, task]) => {
6
+ const _task = await task.resolve?.();
7
+ return [name, { description: _task?.meta?.description }];
8
+ }));
9
+ return {
10
+ tasks: Object.fromEntries(_tasks),
11
+ scheduledTasks
12
+ };
15
13
  }).get("/_nitro/tasks/:name", async (event) => {
16
- const name = event.context.params?.name;
17
- const body = await event.req.json().catch(() => ({}));
18
- const payload = {
19
- ...Object.fromEntries(event.url.searchParams.entries()),
20
- ...body
21
- };
22
- return await runTask(name, { payload });
14
+ const name = event.context.params?.name;
15
+ const body = await event.req.json().catch(() => ({}));
16
+ const payload = {
17
+ ...Object.fromEntries(event.url.searchParams.entries()),
18
+ ...body
19
+ };
20
+ return await runTask(name, { payload });
23
21
  });
@@ -1,3 +1,4 @@
1
1
  import type { EventHandler } from "h3";
2
+ // Served as /_openapi.json
2
3
  declare const _default: EventHandler;
3
4
  export default _default;
@@ -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,14 @@
1
- import {
2
- rendererTemplate,
3
- rendererTemplateFile
4
- } from "#nitro-internal-virtual/renderer-template";
1
+ import { rendererTemplate, rendererTemplateFile } from "#nitro-internal-virtual/renderer-template";
5
2
  import { HTTPResponse } from "h3";
6
3
  import { hasTemplateSyntax, renderToResponse, compileTemplate } from "rendu";
7
4
  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
- });
5
+ let html = await rendererTemplate(event.req);
6
+ if (globalThis.__transform_html__) {
7
+ html = await globalThis.__transform_html__(html);
8
+ }
9
+ if (!hasTemplateSyntax(html)) {
10
+ return new HTTPResponse(html, { headers: { "content-type": "text/html; charset=utf-8" } });
11
+ }
12
+ const template = compileTemplate(html, { filename: rendererTemplateFile });
13
+ return renderToResponse(template, { request: event.req });
21
14
  }
@@ -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
1
  import { snakeCase } from "scule";
2
2
  export function useRuntimeConfig() {
3
- return useRuntimeConfig._cached ||= getRuntimeConfig();
3
+ return useRuntimeConfig._cached ||= getRuntimeConfig();
4
4
  }
5
5
  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;
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
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,9 +1,3 @@
1
1
  import type { Server as HttpServer } from "node:http";
2
- import type { NitroApp } from "nitro/types";
3
- export declare function getGracefulShutdownConfig(): {
4
- disabled: boolean;
5
- signals: string[];
6
- timeout: number;
7
- forceExit: boolean;
8
- };
9
- export declare function setupGracefulShutdown(listener: HttpServer, nitroApp: NitroApp): void;
2
+ export declare function getGracefulShutdownConfig(): {};
3
+ export declare function setupGracefulShutdown(listener: HttpServer);