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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/README.md +2 -0
  2. package/dist/_build/common.mjs +24940 -0
  3. package/dist/_build/rolldown.mjs +172 -0
  4. package/dist/_build/rollup.mjs +201 -0
  5. package/dist/_build/vite.build.mjs +16 -0
  6. package/dist/_chunks/dev.mjs +707 -0
  7. package/dist/_chunks/nitro.mjs +1191 -0
  8. package/dist/_chunks/nitro2.mjs +101 -0
  9. package/dist/_chunks/utils.mjs +254 -0
  10. package/dist/_common.mjs +45 -0
  11. package/dist/_dev.d.mts +12 -0
  12. package/dist/_libs/c12+giget+readdirp+chokidar.d.mts +214 -0
  13. package/dist/_libs/citty.mjs +363 -0
  14. package/dist/_libs/commondir+is-reference.mjs +1300 -0
  15. package/dist/_libs/compatx.d.mts +47 -0
  16. package/dist/_libs/compatx.mjs +46 -0
  17. package/dist/_libs/confbox.mjs +2509 -0
  18. package/dist/_libs/esbuild.d.mts +20 -0
  19. package/dist/_libs/escape-string-regexp.mjs +8 -0
  20. package/dist/_libs/estree-walker.mjs +187 -0
  21. package/dist/_libs/hasown+resolve+deepmerge.mjs +1972 -0
  22. package/dist/_libs/httpxy.d.mts +79 -0
  23. package/dist/_libs/httpxy.mjs +415 -0
  24. package/dist/_libs/klona.mjs +38 -0
  25. package/dist/_libs/magic-string.d.mts +220 -0
  26. package/dist/_libs/mlly.d.mts +57 -0
  27. package/dist/_libs/nypm+giget+tinyexec.mjs +3603 -0
  28. package/dist/_libs/pkg-types.d.mts +23 -0
  29. package/dist/_libs/plugin-alias.mjs +66 -0
  30. package/dist/_libs/plugin-inject.mjs +135 -0
  31. package/dist/_libs/plugin-json.mjs +36 -0
  32. package/dist/_libs/pluginutils+plugin-commonjs.d.mts +241 -0
  33. package/dist/_libs/pluginutils.mjs +652 -0
  34. package/dist/_libs/rc9+c12+dotenv.mjs +972 -0
  35. package/dist/_libs/readdirp+chokidar.mjs +1611 -0
  36. package/dist/_libs/remapping.mjs +117 -0
  37. package/dist/_libs/resolve-uri+gen-mapping.mjs +448 -0
  38. package/dist/_libs/rou3.d.mts +43 -0
  39. package/dist/_libs/rou3.mjs +322 -0
  40. package/dist/_libs/std-env.d.mts +4 -0
  41. package/dist/_libs/tsconfck.mjs +832 -0
  42. package/dist/_libs/ultrahtml.mjs +138 -0
  43. package/dist/_libs/unimport+unplugin.mjs +1785 -0
  44. package/dist/_libs/unplugin+unimport.d.mts +426 -0
  45. package/dist/_libs/unwasm.d.mts +29 -0
  46. package/dist/_presets.mjs +1802 -0
  47. package/dist/builder.d.mts +63 -0
  48. package/dist/builder.mjs +9 -0
  49. package/dist/cli/_chunks/build.mjs +48 -0
  50. package/dist/cli/_chunks/common.mjs +15 -0
  51. package/dist/cli/_chunks/dev.mjs +62 -0
  52. package/dist/cli/_chunks/list.mjs +27 -0
  53. package/dist/cli/_chunks/prepare.mjs +19 -0
  54. package/dist/cli/_chunks/run.mjs +55 -0
  55. package/dist/cli/_chunks/task.mjs +16 -0
  56. package/dist/cli/index.d.mts +1 -1
  57. package/dist/cli/index.mjs +20 -476
  58. package/dist/node_modules/@poppinss/colors/build/index.js +130 -160
  59. package/dist/node_modules/@poppinss/colors/package.json +20 -18
  60. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
  61. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  62. package/dist/node_modules/@poppinss/exception/build/index.js +36 -55
  63. package/dist/node_modules/@poppinss/exception/package.json +19 -16
  64. package/dist/node_modules/@sindresorhus/is/distribution/index.js +47 -6
  65. package/dist/node_modules/@sindresorhus/is/package.json +1 -1
  66. package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
  67. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  68. package/dist/node_modules/@speed-highlight/core/package.json +8 -4
  69. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  70. package/dist/node_modules/cookie-es/package.json +37 -0
  71. package/dist/node_modules/hookable/dist/index.mjs +244 -268
  72. package/dist/node_modules/hookable/package.json +29 -26
  73. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  74. package/dist/node_modules/rendu/package.json +47 -0
  75. package/dist/node_modules/ufo/dist/index.mjs +16 -9
  76. package/dist/node_modules/ufo/package.json +15 -14
  77. package/dist/node_modules/unctx/package.json +16 -16
  78. package/dist/node_modules/youch/build/{chunk-4XB2BYKC.js → chunk-7QV3D5YX.js} +2 -4
  79. package/dist/node_modules/youch/build/{chunk-PUHGL6HA.js → chunk-AUGPHE32.js} +2 -4
  80. package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-CM7DWJNZ.js} +4 -5
  81. package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-EJH674NB.js} +6 -5
  82. package/dist/node_modules/youch/build/{chunk-EUJBVOYB.js → chunk-OIJ3WD7L.js} +2 -4
  83. package/dist/node_modules/youch/build/{chunk-HFSXRSKS.js → chunk-P36L72PL.js} +5 -3
  84. package/dist/node_modules/youch/build/{chunk-4YEN7HVQ.js → chunk-PE3GG3TN.js} +5 -1
  85. package/dist/node_modules/youch/build/{chunk-PINJDICN.js → chunk-X53OIOJH.js} +2 -4
  86. package/dist/node_modules/youch/build/index.js +22 -15
  87. package/dist/node_modules/youch/build/public/error_info/style.css +1 -0
  88. package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
  89. package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
  90. package/dist/node_modules/youch/build/public/error_stack/style.css +2 -3
  91. package/dist/node_modules/youch/build/public/header/script.js +0 -2
  92. package/dist/node_modules/youch/build/public/layout/script.js +0 -8
  93. package/dist/node_modules/youch/build/public/layout/style.css +4 -0
  94. package/dist/node_modules/youch/package.json +16 -17
  95. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +2 -1
  96. package/dist/presets/_nitro/runtime/nitro-dev.mjs +47 -42
  97. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +3 -3
  98. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +11 -15
  99. package/dist/presets/_nitro/runtime/service-worker.d.mts +2 -1
  100. package/dist/presets/_nitro/runtime/service-worker.mjs +17 -14
  101. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +2 -1
  102. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +8 -7
  103. package/dist/presets/aws-lambda/runtime/_utils.d.mts +3 -13
  104. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  105. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +2 -3
  106. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -29
  107. package/dist/presets/aws-lambda/runtime/aws-lambda.d.mts +1 -1
  108. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +9 -9
  109. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  110. package/dist/presets/azure/runtime/azure-swa.d.mts +3 -3
  111. package/dist/presets/azure/runtime/azure-swa.mjs +25 -23
  112. package/dist/presets/bun/runtime/bun.d.mts +3 -1
  113. package/dist/presets/bun/runtime/bun.mjs +34 -22
  114. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +12 -9
  115. package/dist/presets/cloudflare/runtime/_module-handler.mjs +84 -90
  116. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +7 -15
  117. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +62 -64
  118. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +2 -8
  119. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +15 -18
  120. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +13 -13
  121. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -43
  122. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  123. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  124. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  125. package/dist/presets/deno/runtime/deno-deploy.d.mts +5 -1
  126. package/dist/presets/deno/runtime/deno-deploy.mjs +15 -13
  127. package/dist/presets/deno/runtime/deno-server.d.mts +1 -4
  128. package/dist/presets/deno/runtime/deno-server.mjs +32 -53
  129. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -2
  130. package/dist/presets/netlify/runtime/netlify-edge.mjs +18 -14
  131. package/dist/presets/netlify/runtime/netlify.d.mts +3 -2
  132. package/dist/presets/netlify/runtime/netlify.mjs +15 -19
  133. package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
  134. package/dist/presets/node/runtime/node-cluster.mjs +49 -54
  135. package/dist/presets/node/runtime/node-middleware.d.mts +3 -4
  136. package/dist/presets/node/runtime/node-middleware.mjs +9 -9
  137. package/dist/presets/node/runtime/node-server.d.mts +1 -1
  138. package/dist/presets/node/runtime/node-server.mjs +36 -34
  139. package/dist/presets/standard/runtime/server.d.mts +2 -4
  140. package/dist/presets/standard/runtime/server.mjs +3 -5
  141. package/dist/presets/stormkit/runtime/stormkit.d.mts +14 -14
  142. package/dist/presets/stormkit/runtime/stormkit.mjs +22 -22
  143. package/dist/presets/vercel/runtime/isr.d.mts +2 -0
  144. package/dist/presets/vercel/runtime/isr.mjs +19 -0
  145. package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
  146. package/dist/presets/vercel/runtime/vercel.node.mjs +24 -0
  147. package/dist/presets/vercel/runtime/vercel.web.d.mts +8 -0
  148. package/dist/presets/vercel/runtime/vercel.web.mjs +25 -0
  149. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -1
  150. package/dist/presets/winterjs/runtime/winterjs.mjs +74 -70
  151. package/dist/presets/zeabur/runtime/zeabur.d.mts +2 -2
  152. package/dist/presets/zeabur/runtime/zeabur.mjs +2 -2
  153. package/dist/runtime/app.d.mts +1 -0
  154. package/dist/runtime/app.mjs +1 -0
  155. package/dist/runtime/cache.d.mts +1 -0
  156. package/dist/runtime/cache.mjs +1 -0
  157. package/dist/runtime/config.d.mts +3 -0
  158. package/dist/runtime/config.mjs +4 -0
  159. package/dist/runtime/context.d.mts +1 -0
  160. package/dist/runtime/context.mjs +1 -0
  161. package/dist/runtime/database.d.mts +1 -0
  162. package/dist/runtime/database.mjs +1 -0
  163. package/dist/runtime/internal/app.d.mts +15 -1
  164. package/dist/runtime/internal/app.mjs +199 -144
  165. package/dist/runtime/internal/cache.d.mts +9 -5
  166. package/dist/runtime/internal/cache.mjs +248 -219
  167. package/dist/runtime/internal/context.d.mts +9 -9
  168. package/dist/runtime/internal/context.mjs +17 -10
  169. package/dist/runtime/internal/database.mjs +9 -11
  170. package/dist/runtime/internal/error/dev.d.mts +4 -4
  171. package/dist/runtime/internal/error/dev.mjs +106 -105
  172. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  173. package/dist/runtime/internal/error/hooks.mjs +9 -0
  174. package/dist/runtime/internal/error/prod.d.mts +5 -4
  175. package/dist/runtime/internal/error/prod.mjs +51 -59
  176. package/dist/runtime/internal/error/utils.d.mts +4 -4
  177. package/dist/runtime/internal/error/utils.mjs +1 -1
  178. package/dist/runtime/internal/meta.d.mts +1 -1
  179. package/dist/runtime/internal/meta.mjs +1 -1
  180. package/dist/runtime/internal/plugin.d.mts +2 -2
  181. package/dist/runtime/internal/plugin.mjs +1 -1
  182. package/dist/runtime/internal/route-rules.d.mts +4 -8
  183. package/dist/runtime/internal/route-rules.mjs +54 -52
  184. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  185. package/dist/runtime/internal/routes/dev-tasks.mjs +17 -19
  186. package/dist/runtime/internal/routes/openapi.mjs +82 -88
  187. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  188. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  189. package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
  190. package/dist/runtime/internal/routes/renderer-template.mjs +2 -2
  191. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  192. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  193. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  194. package/dist/runtime/internal/runtime-config.mjs +44 -39
  195. package/dist/runtime/internal/static.mjs +63 -74
  196. package/dist/runtime/internal/storage.mjs +3 -3
  197. package/dist/runtime/internal/task.d.mts +6 -6
  198. package/dist/runtime/internal/task.mjs +57 -61
  199. package/dist/runtime/internal/vite/dev-entry.mjs +11 -2
  200. package/dist/runtime/internal/vite/{dev-worker.mjs → node-runner.mjs} +54 -57
  201. package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
  202. package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +2 -2
  203. package/dist/runtime/meta.mjs +26 -0
  204. package/dist/runtime/nitro.d.mts +9 -0
  205. package/dist/runtime/nitro.mjs +32 -0
  206. package/dist/runtime/runtime-config.d.mts +1 -0
  207. package/dist/runtime/runtime-config.mjs +1 -0
  208. package/dist/runtime/storage.d.mts +1 -0
  209. package/dist/runtime/storage.mjs +1 -0
  210. package/dist/runtime/task.d.mts +1 -0
  211. package/dist/runtime/task.mjs +1 -0
  212. package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
  213. package/dist/runtime/virtual/database.d.mts +8 -0
  214. package/dist/runtime/virtual/database.mjs +2 -0
  215. package/dist/runtime/virtual/error-handler.d.mts +6 -0
  216. package/dist/runtime/virtual/error-handler.mjs +9 -0
  217. package/dist/runtime/virtual/feature-flags.d.mts +7 -0
  218. package/dist/runtime/virtual/feature-flags.mjs +7 -0
  219. package/dist/runtime/virtual/plugins.d.mts +3 -0
  220. package/dist/runtime/virtual/plugins.mjs +2 -0
  221. package/dist/runtime/virtual/polyfills.d.mts +3 -0
  222. package/dist/runtime/virtual/polyfills.mjs +2 -0
  223. package/dist/runtime/virtual/public-assets.d.mts +9 -0
  224. package/dist/runtime/virtual/public-assets.mjs +8 -0
  225. package/dist/runtime/virtual/renderer-template.d.mts +4 -0
  226. package/dist/runtime/virtual/renderer-template.mjs +7 -0
  227. package/dist/runtime/virtual/routing-meta.d.mts +7 -0
  228. package/dist/runtime/virtual/routing-meta.mjs +2 -0
  229. package/dist/runtime/virtual/routing.d.mts +8 -0
  230. package/dist/runtime/virtual/routing.mjs +11 -0
  231. package/dist/runtime/virtual/runtime-config.d.mts +3 -0
  232. package/dist/runtime/virtual/runtime-config.mjs +5 -0
  233. package/dist/runtime/virtual/server-assets.d.mts +6 -0
  234. package/dist/runtime/virtual/server-assets.mjs +12 -0
  235. package/dist/runtime/virtual/storage.d.mts +3 -0
  236. package/dist/runtime/virtual/storage.mjs +5 -0
  237. package/dist/runtime/virtual/tasks.d.mts +10 -0
  238. package/dist/runtime/virtual/tasks.mjs +3 -0
  239. package/dist/runtime/vite.d.mts +8 -0
  240. package/dist/runtime/vite.mjs +9 -0
  241. package/dist/types/index.d.mts +2561 -2312
  242. package/dist/types/index.mjs +10 -0
  243. package/dist/vite.d.mts +44 -51
  244. package/dist/vite.mjs +737 -68
  245. package/lib/tsconfig.json +27 -0
  246. package/lib/vite.types.d.mts +26 -0
  247. package/lib/vite.types.mjs +2 -0
  248. package/package.json +118 -101
  249. package/dist/_chunks/app.mjs +0 -19797
  250. package/dist/_chunks/build.mjs +0 -84
  251. package/dist/_chunks/build2.mjs +0 -318
  252. package/dist/_chunks/build3.mjs +0 -6452
  253. package/dist/_chunks/detect-acorn.mjs +0 -503
  254. package/dist/_chunks/index.mjs +0 -22242
  255. package/dist/_chunks/index2.mjs +0 -297
  256. package/dist/_chunks/index3.mjs +0 -1058
  257. package/dist/_chunks/index4.mjs +0 -1206
  258. package/dist/_chunks/info.mjs +0 -11157
  259. package/dist/_chunks/json5.mjs +0 -68
  260. package/dist/_chunks/jsonc.mjs +0 -51
  261. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  262. package/dist/_chunks/plugin.mjs +0 -960
  263. package/dist/_chunks/server.mjs +0 -254
  264. package/dist/_chunks/snapshot.mjs +0 -284
  265. package/dist/_chunks/toml.mjs +0 -259
  266. package/dist/_chunks/yaml.mjs +0 -86
  267. package/dist/cli/build.mjs +0 -54
  268. package/dist/cli/common.mjs +0 -13
  269. package/dist/cli/dev.mjs +0 -95
  270. package/dist/cli/index2.mjs +0 -17
  271. package/dist/cli/list.mjs +0 -34
  272. package/dist/cli/prepare.mjs +0 -24
  273. package/dist/cli/run.mjs +0 -60
  274. package/dist/index.d.mts +0 -52
  275. package/dist/index.mjs +0 -55
  276. package/dist/node_modules/cookie/dist/index.js +0 -239
  277. package/dist/node_modules/cookie/package.json +0 -42
  278. package/dist/node_modules/kleur/index.js +0 -110
  279. package/dist/node_modules/klona/dist/index.mjs +0 -81
  280. package/dist/node_modules/klona/full/index.mjs +0 -53
  281. package/dist/node_modules/klona/package.json +0 -74
  282. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  283. package/dist/node_modules/std-env/package.json +0 -46
  284. package/dist/node_modules/youch/build/chunk-OSUFJZHZ.js +0 -6
  285. package/dist/presets/vercel/runtime/vercel.d.mts +0 -8
  286. package/dist/presets/vercel/runtime/vercel.mjs +0 -17
  287. package/dist/presets.mjs +0 -2460
  288. package/dist/runtime/index.d.mts +0 -11
  289. package/dist/runtime/index.mjs +0 -17
  290. package/dist/runtime/internal/debug.d.mts +0 -2
  291. package/dist/runtime/internal/debug.mjs +0 -5
  292. package/dist/runtime/internal/empty.d.mts +0 -0
  293. package/dist/runtime/internal/index.d.mts +0 -3
  294. package/dist/runtime/internal/index.mjs +0 -3
  295. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
  296. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
  297. package/dist/runtime/internal/renderer.d.mts +0 -3
  298. package/dist/runtime/internal/renderer.mjs +0 -36
  299. package/dist/runtime/internal/shutdown.d.mts +0 -9
  300. package/dist/runtime/internal/shutdown.mjs +0 -34
  301. package/dist/runtime/internal/utils.d.mts +0 -1
  302. package/dist/runtime/internal/utils.mjs +0 -15
  303. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  304. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  305. package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
  306. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  307. package/lib/config.d.mts +0 -9
  308. package/lib/config.mjs +0 -5
  309. package/lib/deps/ofetch.mjs +0 -1
  310. package/lib/deps/ofetch.mts +0 -1
  311. package/lib/meta.d.mts +0 -5
  312. package/lib/meta.mjs +0 -21
  313. package/lib/runtime-meta.mjs +0 -38
  314. /package/dist/runtime/{internal/vite/dev-worker.d.mts → virtual/_runtime_warn.d.mts} +0 -0
  315. /package/lib/{deps/h3.d.mts → h3.d.mts} +0 -0
  316. /package/lib/{deps/h3.mjs → h3.mjs} +0 -0
@@ -1,153 +1,208 @@
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
- import errorHandler from "#nitro-internal-virtual/error-handler";
5
- import { plugins } from "#nitro-internal-virtual/plugins";
6
- import {
7
- findRoute,
8
- findRouteRules,
9
- globalMiddleware,
10
- findRoutedMiddleware
11
- } from "#nitro-internal-virtual/routing";
4
+ // IMPORTANT: virtual imports and user code should be imported last to avoid initialization order issues
5
+ import errorHandler from "#nitro/virtual/error-handler";
6
+ import { plugins } from "#nitro/virtual/plugins";
7
+ import { findRoute, findRouteRules, globalMiddleware, findRoutedMiddleware } from "#nitro/virtual/routing";
8
+ import { hasRouteRules, hasRoutedMiddleware, hasGlobalMiddleware, hasRoutes, hasHooks, hasPlugins } from "#nitro/virtual/feature-flags";
9
+ const APP_ID = import.meta.prerender ? "prerender" : "default";
12
10
  export function useNitroApp() {
13
- return useNitroApp.__instance__ ??= initNitroApp();
11
+ let instance = useNitroApp._instance;
12
+ if (instance) {
13
+ return instance;
14
+ }
15
+ instance = useNitroApp._instance = createNitroApp();
16
+ globalThis.__nitro__ = globalThis.__nitro__ || {};
17
+ globalThis.__nitro__[APP_ID] = instance;
18
+ if (hasPlugins) {
19
+ initNitroPlugins(instance);
20
+ }
21
+ return instance;
14
22
  }
15
- 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;
23
+ export function useNitroHooks() {
24
+ const nitroApp = useNitroApp();
25
+ const hooks = nitroApp.hooks;
26
+ if (hooks) {
27
+ return hooks;
28
+ }
29
+ return nitroApp.hooks = new HookableCore();
30
+ }
31
+ export function serverFetch(resource, init, context) {
32
+ const req = toRequest(resource, init);
33
+ req.context = {
34
+ ...req.context,
35
+ ...context
36
+ };
37
+ const appHandler = useNitroApp().fetch;
38
+ try {
39
+ return Promise.resolve(appHandler(req));
40
+ } catch (error) {
41
+ return Promise.reject(error);
42
+ }
43
+ }
44
+ export async function resolveWebsocketHooks(req) {
45
+ // https://github.com/h3js/h3/blob/c11ca743d476e583b3b47de1717e6aae92114357/src/utils/ws.ts#L37
46
+ const hooks = (await serverFetch(req)).crossws;
47
+ return hooks || {};
48
+ }
49
+ export function fetch(resource, init, context) {
50
+ if (typeof resource === "string" && resource.charCodeAt(0) === 47) {
51
+ return serverFetch(resource, init, context);
52
+ }
53
+ resource = resource._request || resource;
54
+ return fetch(resource, init);
26
55
  }
27
56
  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;
57
+ const hooks = hasHooks ? new HookableCore() : undefined;
58
+ const captureError = (error, errorCtx) => {
59
+ const promise = hasHooks && hooks.callHook("error", error, errorCtx)?.catch?.((hookError) => {
60
+ console.error("Error while capturing another error", hookError);
61
+ });
62
+ if (errorCtx?.event) {
63
+ const errors = errorCtx.event.req.context?.nitro?.errors;
64
+ if (errors) {
65
+ errors.push({
66
+ error,
67
+ context: errorCtx
68
+ });
69
+ }
70
+ if (hasHooks && promise && typeof errorCtx.event.req.waitUntil === "function") {
71
+ errorCtx.event.req.waitUntil(promise);
72
+ }
73
+ }
74
+ };
75
+ const h3App = createH3App({ onError(error, event) {
76
+ hasHooks && captureError(error, { event });
77
+ return errorHandler(error, event);
78
+ } });
79
+ if (hasHooks) {
80
+ h3App.config.onRequest = (event) => {
81
+ return hooks.callHook("request", event)?.catch?.((error) => {
82
+ captureError(error, {
83
+ event,
84
+ tags: ["request"]
85
+ });
86
+ });
87
+ };
88
+ h3App.config.onResponse = (res, event) => {
89
+ return hooks.callHook("response", res, event)?.catch?.((error) => {
90
+ captureError(error, {
91
+ event,
92
+ tags: ["response"]
93
+ });
94
+ });
95
+ };
96
+ }
97
+ let appHandler = (req) => {
98
+ req.context ||= {};
99
+ req.context.nitro = req.context.nitro || { errors: [] };
100
+ return h3App.fetch(req);
101
+ };
102
+ // Experimental async context support
103
+ if (import.meta._asyncContext) {
104
+ const originalHandler = appHandler;
105
+ appHandler = (req) => {
106
+ const asyncCtx = { request: req };
107
+ return nitroAsyncContext.callAsync(asyncCtx, () => originalHandler(req));
108
+ };
109
+ }
110
+ const app = {
111
+ fetch: appHandler,
112
+ h3: h3App,
113
+ hooks,
114
+ captureError
115
+ };
116
+ return app;
117
+ }
118
+ function initNitroPlugins(app) {
119
+ for (const plugin of plugins) {
120
+ try {
121
+ plugin(app);
122
+ } catch (error) {
123
+ app.captureError?.(error, { tags: ["plugin"] });
124
+ throw error;
125
+ }
126
+ }
127
+ return app;
91
128
  }
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;
129
+ function createH3App(config) {
130
+ // Create H3 app
131
+ const h3App = new H3Core(config);
132
+ // Compiled route matching
133
+ hasRoutes && (h3App["~findRoute"] = (event) => findRoute(event.req.method, event.url.pathname));
134
+ hasGlobalMiddleware && h3App["~middleware"].push(...globalMiddleware);
135
+ if (hasRouteRules || hasRoutedMiddleware) {
136
+ h3App["~getMiddleware"] = (event, route) => {
137
+ const needsRouting = hasRouteRules || hasRoutedMiddleware;
138
+ const pathname = needsRouting ? event.url.pathname : undefined;
139
+ const method = needsRouting ? event.req.method : undefined;
140
+ const middleware = [];
141
+ if (hasRouteRules) {
142
+ const routeRules = getRouteRules(method, pathname);
143
+ event.context.routeRules = routeRules?.routeRules;
144
+ if (routeRules?.routeRuleMiddleware.length) {
145
+ middleware.push(...routeRules.routeRuleMiddleware);
146
+ }
147
+ }
148
+ hasGlobalMiddleware && middleware.push(...h3App["~middleware"]);
149
+ hasRoutedMiddleware && middleware.push(...findRoutedMiddleware(method, pathname).map((r) => r.data));
150
+ if (hasRoutes && route?.data?.middleware?.length) {
151
+ middleware.push(...route.data.middleware);
152
+ }
153
+ return middleware;
154
+ };
155
+ }
156
+ return h3App;
115
157
  }
116
- 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
- };
158
+ export function getRouteRules(method, pathname) {
159
+ const m = findRouteRules(method, pathname);
160
+ if (!m?.length) {
161
+ return { routeRuleMiddleware: [] };
162
+ }
163
+ const routeRules = {};
164
+ for (const layer of m) {
165
+ for (const rule of layer.data) {
166
+ const currentRule = routeRules[rule.name];
167
+ if (currentRule) {
168
+ if (rule.options === false) {
169
+ // Remove/Reset existing rule with `false` value
170
+ delete routeRules[rule.name];
171
+ continue;
172
+ }
173
+ if (typeof currentRule.options === "object" && typeof rule.options === "object") {
174
+ // Merge nested rule objects
175
+ currentRule.options = {
176
+ ...currentRule.options,
177
+ ...rule.options
178
+ };
179
+ } else {
180
+ // Override rule if non object
181
+ currentRule.options = rule.options;
182
+ }
183
+ // Routing (route and params)
184
+ currentRule.route = rule.route;
185
+ currentRule.params = {
186
+ ...currentRule.params,
187
+ ...layer.params
188
+ };
189
+ } else if (rule.options !== false) {
190
+ routeRules[rule.name] = {
191
+ ...rule,
192
+ params: layer.params
193
+ };
194
+ }
195
+ }
196
+ }
197
+ const middleware = [];
198
+ for (const rule of Object.values(routeRules)) {
199
+ if (rule.options === false || !rule.handler) {
200
+ continue;
201
+ }
202
+ middleware.push(rule.handler(rule));
203
+ }
204
+ return {
205
+ routeRules,
206
+ routeRuleMiddleware: middleware
207
+ };
153
208
  }
@@ -1,7 +1,11 @@
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>;
5
- export declare function defineCachedEventHandler(handler: EventHandler, opts?: CachedEventHandlerOptions): EventHandler;
6
- export declare const cachedEventHandler: typeof defineCachedEventHandler;
7
- export declare const defineCachedHandler: typeof defineCachedEventHandler;
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>;
11
+ export declare function defineCachedHandler(handler: EventHandler, opts?: CachedEventHandlerOptions): EventHandler;