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,153 +1,192 @@
1
1
  import { H3Core, toRequest } from "h3";
2
- import { createHooks } from "hookable";
2
+ import { HookableCore } from "hookable";
3
3
  import { nitroAsyncContext } from "./context.mjs";
4
+ // IMPORTANT: virtual imports and user code should be imported last to avoid initialization order issues
4
5
  import errorHandler from "#nitro-internal-virtual/error-handler";
5
6
  import { plugins } from "#nitro-internal-virtual/plugins";
6
- import {
7
- findRoute,
8
- findRouteRules,
9
- globalMiddleware,
10
- findRoutedMiddleware
11
- } from "#nitro-internal-virtual/routing";
7
+ import { findRoute, findRouteRules, globalMiddleware, findRoutedMiddleware } from "#nitro-internal-virtual/routing";
8
+ import { hasRouteRules, hasRoutedMiddleware, hasGlobalMiddleware, hasRoutes, hasHooks, hasPlugins } from "#nitro-internal-virtual/feature-flags";
12
9
  export function useNitroApp() {
13
- return useNitroApp.__instance__ ??= initNitroApp();
10
+ return useNitroApp.__instance__ ??= initNitroApp();
11
+ }
12
+ export function useNitroHooks() {
13
+ const nitroApp = useNitroApp();
14
+ const hooks = nitroApp.hooks;
15
+ if (hooks) {
16
+ return hooks;
17
+ }
18
+ return nitroApp.hooks = new HookableCore();
14
19
  }
15
20
  function initNitroApp() {
16
- const nitroApp = createNitroApp();
17
- for (const plugin of plugins) {
18
- try {
19
- plugin(nitroApp);
20
- } catch (error) {
21
- nitroApp.captureError(error, { tags: ["plugin"] });
22
- throw error;
23
- }
24
- }
25
- return nitroApp;
21
+ const nitroApp = createNitroApp();
22
+ if (hasPlugins) {
23
+ for (const plugin of plugins) {
24
+ try {
25
+ plugin(nitroApp);
26
+ } catch (error) {
27
+ nitroApp.captureError(error, { tags: ["plugin"] });
28
+ throw error;
29
+ }
30
+ }
31
+ }
32
+ return nitroApp;
26
33
  }
27
34
  function createNitroApp() {
28
- const hooks = createHooks();
29
- const captureError = (error, errorCtx) => {
30
- const promise = hooks.callHookParallel("error", error, errorCtx).catch((hookError) => {
31
- console.error("Error while capturing another error", hookError);
32
- });
33
- if (errorCtx?.event) {
34
- const errors = errorCtx.event.req.context?.nitro?.errors;
35
- if (errors) {
36
- errors.push({ error, context: errorCtx });
37
- }
38
- if (typeof errorCtx.event.req.waitUntil === "function") {
39
- errorCtx.event.req.waitUntil(promise);
40
- }
41
- }
42
- };
43
- const h3App = createH3App(captureError);
44
- let fetchHandler = async (req) => {
45
- req.context ??= {};
46
- req.context.nitro = req.context.nitro || { errors: [] };
47
- const event = { req };
48
- const nitroApp = useNitroApp();
49
- await nitroApp.hooks.callHook("request", event).catch((error) => {
50
- captureError(error, { event, tags: ["request"] });
51
- });
52
- const response = await h3App.request(req, void 0, req.context);
53
- await nitroApp.hooks.callHook("response", response, event).catch((error) => {
54
- captureError(error, { event, tags: ["request", "response"] });
55
- });
56
- return response;
57
- };
58
- if (import.meta._asyncContext) {
59
- const originalFetchHandler = fetchHandler;
60
- fetchHandler = (req) => {
61
- const asyncCtx = { request: req };
62
- return nitroAsyncContext.callAsync(
63
- asyncCtx,
64
- () => originalFetchHandler(req)
65
- );
66
- };
67
- }
68
- const requestHandler = (input, init, context) => {
69
- const req = toRequest(input, init);
70
- req.context = { ...req.context, ...context };
71
- return Promise.resolve(fetchHandler(req));
72
- };
73
- const originalFetch = globalThis.fetch;
74
- const nitroFetch = (input, init) => {
75
- if (typeof input === "string" && input.startsWith("/")) {
76
- return requestHandler(input, init);
77
- }
78
- if (input instanceof Request && "_request" in input) {
79
- input = input._request;
80
- }
81
- return originalFetch(input, init);
82
- };
83
- globalThis.fetch = nitroFetch;
84
- const app = {
85
- _h3: h3App,
86
- hooks,
87
- fetch: requestHandler,
88
- captureError
89
- };
90
- return app;
35
+ const hooks = hasHooks ? new HookableCore() : undefined;
36
+ const captureError = (error, errorCtx) => {
37
+ const promise = hasHooks && hooks.callHook("error", error, errorCtx)?.catch?.((hookError) => {
38
+ console.error("Error while capturing another error", hookError);
39
+ });
40
+ if (errorCtx?.event) {
41
+ const errors = errorCtx.event.req.context?.nitro?.errors;
42
+ if (errors) {
43
+ errors.push({
44
+ error,
45
+ context: errorCtx
46
+ });
47
+ }
48
+ if (hasHooks && typeof errorCtx.event.req.waitUntil === "function") {
49
+ errorCtx.event.req.waitUntil(promise);
50
+ }
51
+ }
52
+ };
53
+ const h3App = createH3App({ onError(error, event) {
54
+ hasHooks && captureError(error, { event });
55
+ return errorHandler(error, event);
56
+ } });
57
+ if (hasHooks) {
58
+ h3App.config.onRequest = (event) => {
59
+ return hooks.callHook("request", event)?.catch?.((error) => {
60
+ captureError(error, {
61
+ event,
62
+ tags: ["request"]
63
+ });
64
+ });
65
+ };
66
+ h3App.config.onResponse = (res, event) => {
67
+ return hooks.callHook("response", res, event)?.catch?.((error) => {
68
+ captureError(error, {
69
+ event,
70
+ tags: ["response"]
71
+ });
72
+ });
73
+ };
74
+ }
75
+ let appHandler = (req) => {
76
+ req.context ||= {};
77
+ req.context.nitro = req.context.nitro || { errors: [] };
78
+ return h3App.fetch(req);
79
+ };
80
+ // Experimental async context support
81
+ if (import.meta._asyncContext) {
82
+ const originalHandler = appHandler;
83
+ appHandler = (req) => {
84
+ const asyncCtx = { request: req };
85
+ return nitroAsyncContext.callAsync(asyncCtx, () => originalHandler(req));
86
+ };
87
+ }
88
+ const request = (input, init, context) => {
89
+ const req = toRequest(input, init);
90
+ req.context = {
91
+ ...req.context,
92
+ ...context
93
+ };
94
+ return Promise.resolve(appHandler(req));
95
+ };
96
+ const nativeFetch = globalThis.fetch;
97
+ globalThis.fetch = (input, init) => {
98
+ if (typeof input === "string" && input.charCodeAt(0) === 47) {
99
+ return request(input, init);
100
+ }
101
+ input = input._request || input;
102
+ return nativeFetch(input, init);
103
+ };
104
+ const app = {
105
+ fetch: appHandler,
106
+ request,
107
+ h3: h3App,
108
+ hooks,
109
+ captureError
110
+ };
111
+ return app;
91
112
  }
92
- function createH3App(captureError) {
93
- const DEBUG_MODE = ["1", "true", "TRUE"].includes(process.env.DEBUG + "");
94
- const h3App = new H3Core({
95
- debug: DEBUG_MODE,
96
- onError: (error, event) => {
97
- captureError(error, { event, tags: ["request"] });
98
- return errorHandler(error, event);
99
- }
100
- });
101
- h3App._findRoute = (event) => findRoute(event.req.method, event.url.pathname);
102
- h3App._getMiddleware = (event, route) => {
103
- const pathname = event.url.pathname;
104
- const method = event.req.method;
105
- const { routeRules, routeRuleMiddleware } = getRouteRules(method, pathname);
106
- event.context.routeRules = routeRules;
107
- return [
108
- ...routeRuleMiddleware,
109
- ...globalMiddleware,
110
- ...findRoutedMiddleware(method, pathname).map((r) => r.data),
111
- ...route?.data?.middleware || []
112
- ].filter(Boolean);
113
- };
114
- return h3App;
113
+ function createH3App(config) {
114
+ // Create H3 app
115
+ const h3App = new H3Core(config);
116
+ // Compiled route matching
117
+ hasRoutes && (h3App["~findRoute"] = (event) => findRoute(event.req.method, event.url.pathname));
118
+ hasGlobalMiddleware && h3App["~middleware"].push(...globalMiddleware);
119
+ if (hasRouteRules || hasRoutedMiddleware) {
120
+ h3App["~getMiddleware"] = (event, route) => {
121
+ const needsRouting = hasRouteRules || hasRoutedMiddleware;
122
+ const pathname = needsRouting ? event.url.pathname : undefined;
123
+ const method = needsRouting ? event.req.method : undefined;
124
+ const middleware = [];
125
+ if (hasRouteRules) {
126
+ const routeRules = getRouteRules(method, pathname);
127
+ event.context.routeRules = routeRules?.routeRules;
128
+ if (routeRules?.routeRuleMiddleware.length) {
129
+ middleware.push(...routeRules.routeRuleMiddleware);
130
+ }
131
+ }
132
+ hasGlobalMiddleware && middleware.push(...h3App["~middleware"]);
133
+ hasRoutedMiddleware && middleware.push(...findRoutedMiddleware(method, pathname).map((r) => r.data));
134
+ if (hasRoutes && route?.data?.middleware?.length) {
135
+ middleware.push(...route.data.middleware);
136
+ }
137
+ return middleware;
138
+ };
139
+ }
140
+ return h3App;
115
141
  }
116
142
  function getRouteRules(method, pathname) {
117
- const m = findRouteRules(method, pathname);
118
- if (!m?.length) {
119
- return { routeRuleMiddleware: [] };
120
- }
121
- const routeRules = {};
122
- for (const layer of m) {
123
- for (const rule of layer.data) {
124
- const currentRule = routeRules[rule.name];
125
- if (currentRule) {
126
- if (rule.options === false) {
127
- delete routeRules[rule.name];
128
- continue;
129
- }
130
- if (typeof currentRule.options === "object" && typeof rule.options === "object") {
131
- currentRule.options = { ...currentRule.options, ...rule.options };
132
- } else {
133
- currentRule.options = rule.options;
134
- }
135
- currentRule.route = rule.route;
136
- currentRule.params = { ...currentRule.params, ...layer.params };
137
- } else if (rule.options !== false) {
138
- routeRules[rule.name] = { ...rule, params: layer.params };
139
- }
140
- }
141
- }
142
- const middleware = [];
143
- for (const rule of Object.values(routeRules)) {
144
- if (rule.options === false || !rule.handler) {
145
- continue;
146
- }
147
- middleware.push(rule.handler(rule));
148
- }
149
- return {
150
- routeRules,
151
- routeRuleMiddleware: middleware
152
- };
143
+ const m = findRouteRules(method, pathname);
144
+ if (!m?.length) {
145
+ return { routeRuleMiddleware: [] };
146
+ }
147
+ const routeRules = {};
148
+ for (const layer of m) {
149
+ for (const rule of layer.data) {
150
+ const currentRule = routeRules[rule.name];
151
+ if (currentRule) {
152
+ if (rule.options === false) {
153
+ // Remove/Reset existing rule with `false` value
154
+ delete routeRules[rule.name];
155
+ continue;
156
+ }
157
+ if (typeof currentRule.options === "object" && typeof rule.options === "object") {
158
+ // Merge nested rule objects
159
+ currentRule.options = {
160
+ ...currentRule.options,
161
+ ...rule.options
162
+ };
163
+ } else {
164
+ // Override rule if non object
165
+ currentRule.options = rule.options;
166
+ }
167
+ // Routing (route and params)
168
+ currentRule.route = rule.route;
169
+ currentRule.params = {
170
+ ...currentRule.params,
171
+ ...layer.params
172
+ };
173
+ } else if (rule.options !== false) {
174
+ routeRules[rule.name] = {
175
+ ...rule,
176
+ params: layer.params
177
+ };
178
+ }
179
+ }
180
+ }
181
+ const middleware = [];
182
+ for (const rule of Object.values(routeRules)) {
183
+ if (rule.options === false || !rule.handler) {
184
+ continue;
185
+ }
186
+ middleware.push(rule.handler(rule));
187
+ }
188
+ return {
189
+ routeRules,
190
+ routeRuleMiddleware: middleware
191
+ };
153
192
  }
@@ -1,7 +1,13 @@
1
1
  import type { EventHandler } from "h3";
2
2
  import type { CacheOptions, CachedEventHandlerOptions } from "nitro/types";
3
- export declare function defineCachedFunction<T, ArgsT extends unknown[] = any[]>(fn: (...args: ArgsT) => T | Promise<T>, opts?: CacheOptions<T, ArgsT>): (...args: ArgsT) => Promise<T>;
4
- export declare function cachedFunction<T, ArgsT extends unknown[] = any[]>(fn: (...args: ArgsT) => T | Promise<T>, opts?: CacheOptions<T>): (...args: ArgsT) => Promise<T | undefined>;
3
+ export declare function defineCachedFunction<
4
+ T,
5
+ ArgsT extends unknown[] = any[]
6
+ >(fn: (...args: ArgsT) => T | Promise<T>, opts?: CacheOptions<T, ArgsT>): (...args: ArgsT) => Promise<T>;
7
+ export declare function cachedFunction<
8
+ T,
9
+ ArgsT extends unknown[] = any[]
10
+ >(fn: (...args: ArgsT) => T | Promise<T>, opts?: CacheOptions<T>): (...args: ArgsT) => Promise<T | undefined>;
5
11
  export declare function defineCachedEventHandler(handler: EventHandler, opts?: CachedEventHandlerOptions): EventHandler;
6
- export declare const cachedEventHandler: typeof defineCachedEventHandler;
7
- export declare const defineCachedHandler: typeof defineCachedEventHandler;
12
+ export declare const cachedEventHandler: unknown;
13
+ export declare const defineCachedHandler: unknown;