nitro-nightly 4.0.0-20251030-091344-d4418b98 → 4.0.0-20251030-122334-09c1a7a8

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 (334) 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 +762 -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/{_chunks/_deps → _libs}/fdir.mjs +49 -104
  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/{_chunks/_deps → _libs}/js-tokens.mjs +83 -112
  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/{_chunks/_deps → _libs}/magic-string.mjs +272 -629
  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/{_chunks/_deps → _libs}/rou3.mjs +7 -22
  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/{_chunks/_deps → _libs}/tinyglobby.mjs +32 -33
  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/{_chunks/_deps/@pi0 → _libs}/vite-plugin-fullstack.mjs +28 -42
  76. package/dist/_presets.mjs +1723 -0
  77. package/dist/builder.d.mts +37 -35
  78. package/dist/builder.mjs +45 -117
  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 +19 -18
  97. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  98. package/dist/presets/_nitro/runtime/nitro-dev.mjs +42 -33
  99. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  100. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +4 -8
  101. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  102. package/dist/presets/_nitro/runtime/service-worker.mjs +14 -11
  103. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  104. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +6 -5
  105. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  106. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  107. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  108. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -27
  109. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +7 -7
  110. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  111. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  112. package/dist/presets/azure/runtime/azure-swa.mjs +22 -21
  113. package/dist/presets/bun/runtime/bun.d.mts +1 -0
  114. package/dist/presets/bun/runtime/bun.mjs +18 -17
  115. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  116. package/dist/presets/cloudflare/runtime/_module-handler.mjs +78 -87
  117. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  118. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +53 -58
  119. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  120. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +12 -14
  121. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  122. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -39
  123. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  124. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +86 -76
  125. package/dist/presets/deno/runtime/deno-deploy.d.mts +1 -0
  126. package/dist/presets/deno/runtime/deno-deploy.mjs +12 -11
  127. package/dist/presets/deno/runtime/deno-server.d.mts +2 -1
  128. package/dist/presets/deno/runtime/deno-server.mjs +31 -39
  129. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  130. package/dist/presets/netlify/runtime/netlify-edge.mjs +14 -11
  131. package/dist/presets/netlify/runtime/netlify.mjs +11 -17
  132. package/dist/presets/node/runtime/node-cluster.mjs +49 -48
  133. package/dist/presets/node/runtime/node-middleware.d.mts +3 -2
  134. package/dist/presets/node/runtime/node-middleware.mjs +7 -6
  135. package/dist/presets/node/runtime/node-server.mjs +33 -23
  136. package/dist/presets/standard/runtime/server.d.mts +1 -3
  137. package/dist/presets/standard/runtime/server.mjs +1 -3
  138. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  139. package/dist/presets/stormkit/runtime/stormkit.mjs +20 -20
  140. package/dist/presets/vercel/runtime/vercel.d.mts +3 -3
  141. package/dist/presets/vercel/runtime/vercel.mjs +15 -14
  142. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  143. package/dist/presets/winterjs/runtime/winterjs.mjs +72 -68
  144. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  145. package/dist/runtime/index.d.mts +12 -1
  146. package/dist/runtime/index.mjs +12 -7
  147. package/dist/runtime/internal/app.mjs +175 -162
  148. package/dist/runtime/internal/cache.d.mts +10 -4
  149. package/dist/runtime/internal/cache.mjs +247 -216
  150. package/dist/runtime/internal/context.d.mts +9 -9
  151. package/dist/runtime/internal/context.mjs +17 -10
  152. package/dist/runtime/internal/database.mjs +8 -10
  153. package/dist/runtime/internal/error/dev.d.mts +5 -4
  154. package/dist/runtime/internal/error/dev.mjs +106 -105
  155. package/dist/runtime/internal/error/prod.d.mts +2 -2
  156. package/dist/runtime/internal/error/prod.mjs +48 -52
  157. package/dist/runtime/internal/error/utils.d.mts +4 -4
  158. package/dist/runtime/internal/error/utils.mjs +1 -1
  159. package/dist/runtime/internal/index.d.mts +2 -0
  160. package/dist/runtime/internal/index.mjs +2 -0
  161. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +14 -14
  162. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +248 -209
  163. package/dist/runtime/internal/meta.d.mts +1 -1
  164. package/dist/runtime/internal/meta.mjs +1 -1
  165. package/dist/runtime/internal/plugin.d.mts +2 -2
  166. package/dist/runtime/internal/plugin.mjs +1 -1
  167. package/dist/runtime/internal/renderer.mjs +39 -31
  168. package/dist/runtime/internal/route-rules.d.mts +8 -8
  169. package/dist/runtime/internal/route-rules.mjs +53 -51
  170. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -30
  171. package/dist/runtime/internal/routes/dev-tasks.mjs +15 -17
  172. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  173. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  174. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  175. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  176. package/dist/runtime/internal/routes/renderer-template.dev.mjs +10 -17
  177. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  178. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  179. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  180. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  181. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  182. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  183. package/dist/runtime/internal/runtime-config.mjs +40 -35
  184. package/dist/runtime/internal/shutdown.d.mts +2 -7
  185. package/dist/runtime/internal/shutdown.mjs +30 -29
  186. package/dist/runtime/internal/static.mjs +63 -74
  187. package/dist/runtime/internal/storage.mjs +2 -2
  188. package/dist/runtime/internal/task.d.mts +6 -6
  189. package/dist/runtime/internal/task.mjs +56 -59
  190. package/dist/runtime/internal/utils.d.mts +1 -1
  191. package/dist/runtime/internal/utils.mjs +4 -10
  192. package/dist/types/index.d.mts +2566 -3851
  193. package/dist/types/index.mjs +1 -1
  194. package/dist/vite.d.mts +61 -51
  195. package/dist/vite.mjs +55 -132
  196. package/package.json +10 -10
  197. package/dist/_build/build.mjs +0 -368
  198. package/dist/_build/build2.mjs +0 -556
  199. package/dist/_build/info.mjs +0 -1002
  200. package/dist/_build/prepare.mjs +0 -1511
  201. package/dist/_build/snapshot.mjs +0 -185
  202. package/dist/_build/vite.mjs +0 -959
  203. package/dist/_build/vite2.mjs +0 -149
  204. package/dist/_chunks/_deps/@jridgewell/gen-mapping.mjs +0 -189
  205. package/dist/_chunks/_deps/@jridgewell/remapping.mjs +0 -137
  206. package/dist/_chunks/_deps/@jridgewell/resolve-uri.mjs +0 -231
  207. package/dist/_chunks/_deps/@jridgewell/sourcemap-codec.mjs +0 -173
  208. package/dist/_chunks/_deps/@jridgewell/trace-mapping.mjs +0 -170
  209. package/dist/_chunks/_deps/@rollup/plugin-alias.mjs +0 -89
  210. package/dist/_chunks/_deps/@rollup/plugin-commonjs.mjs +0 -2376
  211. package/dist/_chunks/_deps/@rollup/plugin-inject.mjs +0 -212
  212. package/dist/_chunks/_deps/@rollup/plugin-json.mjs +0 -37
  213. package/dist/_chunks/_deps/@rollup/plugin-node-resolve.mjs +0 -1386
  214. package/dist/_chunks/_deps/@rollup/plugin-replace.mjs +0 -133
  215. package/dist/_chunks/_deps/@rollup/pluginutils.mjs +0 -346
  216. package/dist/_chunks/_deps/acorn.mjs +0 -6225
  217. package/dist/_chunks/_deps/c12.mjs +0 -510
  218. package/dist/_chunks/_deps/chokidar.mjs +0 -1428
  219. package/dist/_chunks/_deps/citty.mjs +0 -460
  220. package/dist/_chunks/_deps/commondir.mjs +0 -77
  221. package/dist/_chunks/_deps/compatx.mjs +0 -76
  222. package/dist/_chunks/_deps/confbox.mjs +0 -300
  223. package/dist/_chunks/_deps/debug.mjs +0 -885
  224. package/dist/_chunks/_deps/deepmerge.mjs +0 -147
  225. package/dist/_chunks/_deps/depd.mjs +0 -550
  226. package/dist/_chunks/_deps/dot-prop.mjs +0 -282
  227. package/dist/_chunks/_deps/dotenv.mjs +0 -555
  228. package/dist/_chunks/_deps/duplexer.mjs +0 -1
  229. package/dist/_chunks/_deps/ee-first.mjs +0 -104
  230. package/dist/_chunks/_deps/encodeurl.mjs +0 -69
  231. package/dist/_chunks/_deps/escape-html.mjs +0 -87
  232. package/dist/_chunks/_deps/escape-string-regexp.mjs +0 -13
  233. package/dist/_chunks/_deps/estree-walker.mjs +0 -433
  234. package/dist/_chunks/_deps/etag.mjs +0 -147
  235. package/dist/_chunks/_deps/exsolve.mjs +0 -1416
  236. package/dist/_chunks/_deps/fresh.mjs +0 -145
  237. package/dist/_chunks/_deps/function-bind.mjs +0 -106
  238. package/dist/_chunks/_deps/giget.mjs +0 -451
  239. package/dist/_chunks/_deps/gzip-size.mjs +0 -19
  240. package/dist/_chunks/_deps/hasown.mjs +0 -19
  241. package/dist/_chunks/_deps/http-errors.mjs +0 -307
  242. package/dist/_chunks/_deps/httpxy.mjs +0 -580
  243. package/dist/_chunks/_deps/inherits.mjs +0 -57
  244. package/dist/_chunks/_deps/is-core-module.mjs +0 -596
  245. package/dist/_chunks/_deps/is-module.mjs +0 -25
  246. package/dist/_chunks/_deps/is-reference.mjs +0 -31
  247. package/dist/_chunks/_deps/klona.mjs +0 -137
  248. package/dist/_chunks/_deps/knitwork.mjs +0 -172
  249. package/dist/_chunks/_deps/local-pkg.mjs +0 -163
  250. package/dist/_chunks/_deps/mime-db.mjs +0 -11685
  251. package/dist/_chunks/_deps/mime-types.mjs +0 -287
  252. package/dist/_chunks/_deps/mime.mjs +0 -1172
  253. package/dist/_chunks/_deps/mlly.mjs +0 -2413
  254. package/dist/_chunks/_deps/ms.mjs +0 -172
  255. package/dist/_chunks/_deps/node-fetch-native.mjs +0 -3
  256. package/dist/_chunks/_deps/nypm.mjs +0 -219
  257. package/dist/_chunks/_deps/on-finished.mjs +0 -246
  258. package/dist/_chunks/_deps/parseurl.mjs +0 -168
  259. package/dist/_chunks/_deps/path-parse.mjs +0 -85
  260. package/dist/_chunks/_deps/pathe.mjs +0 -251
  261. package/dist/_chunks/_deps/perfect-debounce.mjs +0 -88
  262. package/dist/_chunks/_deps/picomatch.mjs +0 -2144
  263. package/dist/_chunks/_deps/pkg-types.mjs +0 -247
  264. package/dist/_chunks/_deps/pretty-bytes.mjs +0 -180
  265. package/dist/_chunks/_deps/quansync.mjs +0 -99
  266. package/dist/_chunks/_deps/range-parser.mjs +0 -171
  267. package/dist/_chunks/_deps/rc9.mjs +0 -219
  268. package/dist/_chunks/_deps/readdirp.mjs +0 -245
  269. package/dist/_chunks/_deps/resolve.mjs +0 -1260
  270. package/dist/_chunks/_deps/send.mjs +0 -1022
  271. package/dist/_chunks/_deps/serve-static.mjs +0 -228
  272. package/dist/_chunks/_deps/setprototypeof.mjs +0 -26
  273. package/dist/_chunks/_deps/statuses.mjs +0 -457
  274. package/dist/_chunks/_deps/std-env.mjs +0 -3
  275. package/dist/_chunks/_deps/strip-literal.mjs +0 -67
  276. package/dist/_chunks/_deps/supports-color.mjs +0 -44
  277. package/dist/_chunks/_deps/tinyexec.mjs +0 -552
  278. package/dist/_chunks/_deps/toidentifier.mjs +0 -41
  279. package/dist/_chunks/_deps/ultrahtml.mjs +0 -3
  280. package/dist/_chunks/_deps/unimport.mjs +0 -2267
  281. package/dist/_chunks/_deps/unplugin-utils.mjs +0 -65
  282. package/dist/_chunks/_deps/unplugin.mjs +0 -1294
  283. package/dist/_chunks/_deps/untyped.mjs +0 -375
  284. package/dist/_chunks/_deps/unwasm.mjs +0 -6959
  285. package/dist/_chunks/_deps/webpack-virtual-modules.mjs +0 -360
  286. package/dist/_chunks/_presets/_all.mjs +0 -59
  287. package/dist/_chunks/_presets/_nitro.mjs +0 -74
  288. package/dist/_chunks/_presets/_resolve.mjs +0 -64
  289. package/dist/_chunks/_presets/_static.mjs +0 -69
  290. package/dist/_chunks/_presets/_types.mjs +0 -3
  291. package/dist/_chunks/_presets/_utils.mjs +0 -31
  292. package/dist/_chunks/_presets/alwaysdata.mjs +0 -17
  293. package/dist/_chunks/_presets/aws-amplify.mjs +0 -111
  294. package/dist/_chunks/_presets/aws-lambda.mjs +0 -23
  295. package/dist/_chunks/_presets/azure.mjs +0 -162
  296. package/dist/_chunks/_presets/bun.mjs +0 -19
  297. package/dist/_chunks/_presets/cleavr.mjs +0 -15
  298. package/dist/_chunks/_presets/cloudflare.mjs +0 -608
  299. package/dist/_chunks/_presets/deno.mjs +0 -196
  300. package/dist/_chunks/_presets/digitalocean.mjs +0 -14
  301. package/dist/_chunks/_presets/firebase.mjs +0 -47
  302. package/dist/_chunks/_presets/flightcontrol.mjs +0 -14
  303. package/dist/_chunks/_presets/genezio.mjs +0 -13
  304. package/dist/_chunks/_presets/heroku.mjs +0 -14
  305. package/dist/_chunks/_presets/iis.mjs +0 -194
  306. package/dist/_chunks/_presets/index.mjs +0 -62
  307. package/dist/_chunks/_presets/koyeb.mjs +0 -14
  308. package/dist/_chunks/_presets/netlify.mjs +0 -241
  309. package/dist/_chunks/_presets/node.mjs +0 -54
  310. package/dist/_chunks/_presets/platform.mjs +0 -14
  311. package/dist/_chunks/_presets/render.mjs +0 -14
  312. package/dist/_chunks/_presets/standard.mjs +0 -23
  313. package/dist/_chunks/_presets/stormkit.mjs +0 -18
  314. package/dist/_chunks/_presets/vercel.mjs +0 -375
  315. package/dist/_chunks/_presets/winterjs.mjs +0 -22
  316. package/dist/_chunks/_presets/zeabur.mjs +0 -69
  317. package/dist/_chunks/_presets/zerops.mjs +0 -27
  318. package/dist/_chunks/app.mjs +0 -600
  319. package/dist/_chunks/builder.mjs +0 -648
  320. package/dist/_chunks/server.mjs +0 -256
  321. package/dist/_cli/build.mjs +0 -49
  322. package/dist/_cli/common.mjs +0 -13
  323. package/dist/_cli/dev.mjs +0 -121
  324. package/dist/_cli/index.mjs +0 -16
  325. package/dist/_cli/list.mjs +0 -33
  326. package/dist/_cli/prepare.mjs +0 -23
  327. package/dist/_cli/run.mjs +0 -59
  328. package/dist/presets/cloudflare/runtime/shims/workers.dev.d.mts +0 -21
  329. package/dist/runtime/internal/empty.d.mts +0 -0
  330. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  331. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  332. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  333. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  334. /package/lib/{indexd.mts → index.d.mts} +0 -0
@@ -5,232 +5,263 @@ import { hash } from "ohash";
5
5
  import { useNitroApp } from "./app.mjs";
6
6
  import { useStorage } from "./storage.mjs";
7
7
  function defaultCacheOptions() {
8
- return {
9
- name: "_",
10
- base: "/cache",
11
- swr: true,
12
- maxAge: 1
13
- };
8
+ return {
9
+ name: "_",
10
+ base: "/cache",
11
+ swr: true,
12
+ maxAge: 1
13
+ };
14
14
  }
15
15
  export function defineCachedFunction(fn, opts = {}) {
16
- opts = { ...defaultCacheOptions(), ...opts };
17
- const pending = {};
18
- const group = opts.group || "nitro/functions";
19
- const name = opts.name || fn.name || "_";
20
- const integrity = opts.integrity || hash([fn, opts]);
21
- const validate = opts.validate || ((entry) => entry.value !== void 0);
22
- async function get(key, resolver, shouldInvalidateCache, event) {
23
- const cacheKey = [opts.base, group, name, key + ".json"].filter(Boolean).join(":").replace(/:\/$/, ":index");
24
- let entry = await useStorage().getItem(cacheKey).catch((error) => {
25
- console.error(`[cache] Cache read error.`, error);
26
- useNitroApp().captureError(error, { event, tags: ["cache"] });
27
- }) || {};
28
- if (typeof entry !== "object") {
29
- entry = {};
30
- const error = new Error("Malformed data read from cache.");
31
- console.error("[cache]", error);
32
- useNitroApp().captureError(error, { event, tags: ["cache"] });
33
- }
34
- const ttl = (opts.maxAge ?? 0) * 1e3;
35
- if (ttl) {
36
- entry.expires = Date.now() + ttl;
37
- }
38
- const expired = shouldInvalidateCache || entry.integrity !== integrity || ttl && Date.now() - (entry.mtime || 0) > ttl || validate(entry) === false;
39
- const _resolve = async () => {
40
- const isPending = pending[key];
41
- if (!isPending) {
42
- if (entry.value !== void 0 && (opts.staleMaxAge || 0) >= 0 && opts.swr === false) {
43
- entry.value = void 0;
44
- entry.integrity = void 0;
45
- entry.mtime = void 0;
46
- entry.expires = void 0;
47
- }
48
- pending[key] = Promise.resolve(resolver());
49
- }
50
- try {
51
- entry.value = await pending[key];
52
- } catch (error) {
53
- if (!isPending) {
54
- delete pending[key];
55
- }
56
- throw error;
57
- }
58
- if (!isPending) {
59
- entry.mtime = Date.now();
60
- entry.integrity = integrity;
61
- delete pending[key];
62
- if (validate(entry) !== false) {
63
- let setOpts;
64
- if (opts.maxAge && !opts.swr) {
65
- setOpts = { ttl: opts.maxAge };
66
- }
67
- const promise = useStorage().setItem(cacheKey, entry, setOpts).catch((error) => {
68
- console.error(`[cache] Cache write error.`, error);
69
- useNitroApp().captureError(error, { event, tags: ["cache"] });
70
- });
71
- if (typeof event?.req?.waitUntil === "function") {
72
- event.req.waitUntil(promise);
73
- }
74
- }
75
- }
76
- };
77
- const _resolvePromise = expired ? _resolve() : Promise.resolve();
78
- if (entry.value === void 0) {
79
- await _resolvePromise;
80
- } else if (expired && event && event.req.waitUntil) {
81
- event.req.waitUntil(_resolvePromise);
82
- }
83
- if (opts.swr && validate(entry) !== false) {
84
- _resolvePromise.catch((error) => {
85
- console.error(`[cache] SWR handler error.`, error);
86
- useNitroApp().captureError(error, { event, tags: ["cache"] });
87
- });
88
- return entry;
89
- }
90
- return _resolvePromise.then(() => entry);
91
- }
92
- return async (...args) => {
93
- const shouldBypassCache = await opts.shouldBypassCache?.(...args);
94
- if (shouldBypassCache) {
95
- return fn(...args);
96
- }
97
- const key = await (opts.getKey || getKey)(...args);
98
- const shouldInvalidateCache = await opts.shouldInvalidateCache?.(...args);
99
- const entry = await get(
100
- key,
101
- () => fn(...args),
102
- shouldInvalidateCache,
103
- args[0] && isHTTPEvent(args[0]) ? args[0] : void 0
104
- );
105
- let value = entry.value;
106
- if (opts.transform) {
107
- value = await opts.transform(entry, ...args) || value;
108
- }
109
- return value;
110
- };
16
+ opts = {
17
+ ...defaultCacheOptions(),
18
+ ...opts
19
+ };
20
+ const pending = {};
21
+ // Normalize cache params
22
+ const group = opts.group || "nitro/functions";
23
+ const name = opts.name || fn.name || "_";
24
+ const integrity = opts.integrity || hash([fn, opts]);
25
+ const validate = opts.validate || ((entry) => entry.value !== undefined);
26
+ async function get(key, resolver, shouldInvalidateCache, event) {
27
+ // Use extension for key to avoid conflicting with parent namespace (foo/bar and foo/bar/baz)
28
+ const cacheKey = [
29
+ opts.base,
30
+ group,
31
+ name,
32
+ key + ".json"
33
+ ].filter(Boolean).join(":").replace(/:\/$/, ":index");
34
+ let entry = await useStorage().getItem(cacheKey).catch((error) => {
35
+ console.error(`[cache] Cache read error.`, error);
36
+ useNitroApp().captureError(error, {
37
+ event,
38
+ tags: ["cache"]
39
+ });
40
+ }) || {};
41
+ // https://github.com/nitrojs/nitro/issues/2160
42
+ if (typeof entry !== "object") {
43
+ entry = {};
44
+ const error = new Error("Malformed data read from cache.");
45
+ console.error("[cache]", error);
46
+ useNitroApp().captureError(error, {
47
+ event,
48
+ tags: ["cache"]
49
+ });
50
+ }
51
+ const ttl = (opts.maxAge ?? 0) * 1e3;
52
+ if (ttl) {
53
+ entry.expires = Date.now() + ttl;
54
+ }
55
+ const expired = shouldInvalidateCache || entry.integrity !== integrity || ttl && Date.now() - (entry.mtime || 0) > ttl || validate(entry) === false;
56
+ const _resolve = async () => {
57
+ const isPending = pending[key];
58
+ if (!isPending) {
59
+ if (entry.value !== undefined && (opts.staleMaxAge || 0) >= 0 && opts.swr === false) {
60
+ // Remove cached entry to prevent using expired cache on concurrent requests
61
+ entry.value = undefined;
62
+ entry.integrity = undefined;
63
+ entry.mtime = undefined;
64
+ entry.expires = undefined;
65
+ }
66
+ pending[key] = Promise.resolve(resolver());
67
+ }
68
+ try {
69
+ entry.value = await pending[key];
70
+ } catch (error) {
71
+ // Make sure entries that reject get removed.
72
+ if (!isPending) {
73
+ delete pending[key];
74
+ }
75
+ // Re-throw error to make sure the caller knows the task failed.
76
+ throw error;
77
+ }
78
+ if (!isPending) {
79
+ // Update mtime, integrity + validate and set the value in cache only the first time the request is made.
80
+ entry.mtime = Date.now();
81
+ entry.integrity = integrity;
82
+ delete pending[key];
83
+ if (validate(entry) !== false) {
84
+ let setOpts;
85
+ if (opts.maxAge && !opts.swr) {
86
+ setOpts = { ttl: opts.maxAge };
87
+ }
88
+ const promise = useStorage().setItem(cacheKey, entry, setOpts).catch((error) => {
89
+ console.error(`[cache] Cache write error.`, error);
90
+ useNitroApp().captureError(error, {
91
+ event,
92
+ tags: ["cache"]
93
+ });
94
+ });
95
+ if (typeof event?.req?.waitUntil === "function") {
96
+ event.req.waitUntil(promise);
97
+ }
98
+ }
99
+ }
100
+ };
101
+ const _resolvePromise = expired ? _resolve() : Promise.resolve();
102
+ if (entry.value === undefined) {
103
+ await _resolvePromise;
104
+ } else if (expired && event && event.req.waitUntil) {
105
+ event.req.waitUntil(_resolvePromise);
106
+ }
107
+ if (opts.swr && validate(entry) !== false) {
108
+ _resolvePromise.catch((error) => {
109
+ console.error(`[cache] SWR handler error.`, error);
110
+ useNitroApp().captureError(error, {
111
+ event,
112
+ tags: ["cache"]
113
+ });
114
+ });
115
+ return entry;
116
+ }
117
+ return _resolvePromise.then(() => entry);
118
+ }
119
+ return async (...args) => {
120
+ const shouldBypassCache = await opts.shouldBypassCache?.(...args);
121
+ if (shouldBypassCache) {
122
+ return fn(...args);
123
+ }
124
+ const key = await (opts.getKey || getKey)(...args);
125
+ const shouldInvalidateCache = await opts.shouldInvalidateCache?.(...args);
126
+ const entry = await get(key, () => fn(...args), shouldInvalidateCache, args[0] && isHTTPEvent(args[0]) ? args[0] : undefined);
127
+ let value = entry.value;
128
+ if (opts.transform) {
129
+ value = await opts.transform(entry, ...args) || value;
130
+ }
131
+ return value;
132
+ };
111
133
  }
112
134
  export function cachedFunction(fn, opts = {}) {
113
- return defineCachedFunction(fn, opts);
135
+ return defineCachedFunction(fn, opts);
114
136
  }
115
137
  function getKey(...args) {
116
- return args.length > 0 ? hash(args) : "";
138
+ return args.length > 0 ? hash(args) : "";
117
139
  }
118
140
  function escapeKey(key) {
119
- return String(key).replace(/\W/g, "");
141
+ return String(key).replace(/\W/g, "");
120
142
  }
121
143
  export function defineCachedEventHandler(handler, opts = defaultCacheOptions()) {
122
- const variableHeaderNames = (opts.varies || []).filter(Boolean).map((h) => h.toLowerCase()).sort();
123
- const _opts = {
124
- ...opts,
125
- shouldBypassCache: (event) => {
126
- return event.req.method !== "GET" && event.req.method !== "HEAD";
127
- },
128
- getKey: async (event) => {
129
- const customKey = await opts.getKey?.(event);
130
- if (customKey) {
131
- return escapeKey(customKey);
132
- }
133
- const _path = event.url.pathname + event.url.search;
134
- let _pathname;
135
- try {
136
- _pathname = escapeKey(decodeURI(parseURL(_path).pathname)).slice(0, 16) || "index";
137
- } catch {
138
- _pathname = "-";
139
- }
140
- const _hashedPath = `${_pathname}.${hash(_path)}`;
141
- const _headers = variableHeaderNames.map((header) => [header, event.req.headers.get(header)]).map(([name, value]) => `${escapeKey(name)}.${hash(value)}`);
142
- return [_hashedPath, ..._headers].join(":");
143
- },
144
- validate: (entry) => {
145
- if (!entry.value) {
146
- return false;
147
- }
148
- if (entry.value.status >= 400) {
149
- return false;
150
- }
151
- if (entry.value.body === void 0) {
152
- return false;
153
- }
154
- if (entry.value.headers.etag === "undefined" || entry.value.headers["last-modified"] === "undefined") {
155
- return false;
156
- }
157
- return true;
158
- },
159
- group: opts.group || "nitro/handlers",
160
- integrity: opts.integrity || hash([handler, opts])
161
- };
162
- const _cachedHandler = cachedFunction(
163
- async (event) => {
164
- const filteredHeaders = [...event.req.headers.entries()].filter(
165
- ([key]) => !variableHeaderNames.includes(key.toLowerCase())
166
- );
167
- try {
168
- const originalReq = event.req;
169
- event.req = new Request(event.req.url, {
170
- method: event.req.method,
171
- headers: filteredHeaders
172
- });
173
- event.req.runtime = originalReq.runtime;
174
- event.req.waitUntil = originalReq.waitUntil;
175
- } catch (error) {
176
- console.error("[cache] Failed to filter headers:", error);
177
- }
178
- const rawValue = await handler(event);
179
- const res = await toResponse(rawValue, event);
180
- const body = await res.text();
181
- if (!res.headers.has("etag")) {
182
- res.headers.set("etag", `W/"${hash(body)}"`);
183
- }
184
- if (!res.headers.has("last-modified")) {
185
- res.headers.set("last-modified", (/* @__PURE__ */ new Date()).toUTCString());
186
- }
187
- const cacheControl = [];
188
- if (opts.swr) {
189
- if (opts.maxAge) {
190
- cacheControl.push(`s-maxage=${opts.maxAge}`);
191
- }
192
- if (opts.staleMaxAge) {
193
- cacheControl.push(`stale-while-revalidate=${opts.staleMaxAge}`);
194
- } else {
195
- cacheControl.push("stale-while-revalidate");
196
- }
197
- } else if (opts.maxAge) {
198
- cacheControl.push(`max-age=${opts.maxAge}`);
199
- }
200
- if (cacheControl.length > 0) {
201
- res.headers.set("cache-control", cacheControl.join(", "));
202
- }
203
- const cacheEntry = {
204
- status: res.status,
205
- statusText: res.statusText,
206
- headers: Object.fromEntries(res.headers.entries()),
207
- body
208
- };
209
- return cacheEntry;
210
- },
211
- _opts
212
- );
213
- return defineHandler(async (event) => {
214
- if (opts.headersOnly) {
215
- if (handleCacheHeaders(event, { maxAge: opts.maxAge })) {
216
- return;
217
- }
218
- return handler(event);
219
- }
220
- const response = await _cachedHandler(event);
221
- if (handleCacheHeaders(event, {
222
- modifiedTime: new Date(response.headers["last-modified"]),
223
- etag: response.headers.etag,
224
- maxAge: opts.maxAge
225
- })) {
226
- return;
227
- }
228
- return new FastResponse(response.body, {
229
- status: response.status,
230
- statusText: response.statusText,
231
- headers: response.headers
232
- });
233
- });
144
+ const variableHeaderNames = (opts.varies || []).filter(Boolean).map((h) => h.toLowerCase()).sort();
145
+ const _opts = {
146
+ ...opts,
147
+ shouldBypassCache: (event) => {
148
+ return event.req.method !== "GET" && event.req.method !== "HEAD";
149
+ },
150
+ getKey: async (event) => {
151
+ // Custom user-defined key
152
+ const customKey = await opts.getKey?.(event);
153
+ if (customKey) {
154
+ return escapeKey(customKey);
155
+ }
156
+ // Auto-generated key
157
+ const _path = event.url.pathname + event.url.search;
158
+ let _pathname;
159
+ try {
160
+ _pathname = escapeKey(decodeURI(parseURL(_path).pathname)).slice(0, 16) || "index";
161
+ } catch {
162
+ _pathname = "-";
163
+ }
164
+ const _hashedPath = `${_pathname}.${hash(_path)}`;
165
+ const _headers = variableHeaderNames.map((header) => [header, event.req.headers.get(header)]).map(([name, value]) => `${escapeKey(name)}.${hash(value)}`);
166
+ return [_hashedPath, ..._headers].join(":");
167
+ },
168
+ validate: (entry) => {
169
+ if (!entry.value) {
170
+ return false;
171
+ }
172
+ if (entry.value.status >= 400) {
173
+ return false;
174
+ }
175
+ if (entry.value.body === undefined) {
176
+ return false;
177
+ }
178
+ // https://github.com/nitrojs/nitro/pull/1857
179
+ if (entry.value.headers.etag === "undefined" || entry.value.headers["last-modified"] === "undefined") {
180
+ return false;
181
+ }
182
+ return true;
183
+ },
184
+ group: opts.group || "nitro/handlers",
185
+ integrity: opts.integrity || hash([handler, opts])
186
+ };
187
+ const _cachedHandler = cachedFunction(async (event) => {
188
+ // Filter non variable headers
189
+ const filteredHeaders = [...event.req.headers.entries()].filter(([key]) => !variableHeaderNames.includes(key.toLowerCase()));
190
+ try {
191
+ const originalReq = event.req;
192
+ // @ts-expect-error assigning to publicly readonly property
193
+ event.req = new Request(event.req.url, {
194
+ method: event.req.method,
195
+ headers: filteredHeaders
196
+ });
197
+ // Inherit srvx context
198
+ event.req.runtime = originalReq.runtime;
199
+ event.req.waitUntil = originalReq.waitUntil;
200
+ } catch (error) {
201
+ console.error("[cache] Failed to filter headers:", error);
202
+ }
203
+ // Call handler
204
+ const rawValue = await handler(event);
205
+ const res = await toResponse(rawValue, event);
206
+ // Stringified body
207
+ // TODO: support binary responses
208
+ const body = await res.text();
209
+ if (!res.headers.has("etag")) {
210
+ res.headers.set("etag", `W/"${hash(body)}"`);
211
+ }
212
+ if (!res.headers.has("last-modified")) {
213
+ res.headers.set("last-modified", new Date().toUTCString());
214
+ }
215
+ const cacheControl = [];
216
+ if (opts.swr) {
217
+ if (opts.maxAge) {
218
+ cacheControl.push(`s-maxage=${opts.maxAge}`);
219
+ }
220
+ if (opts.staleMaxAge) {
221
+ cacheControl.push(`stale-while-revalidate=${opts.staleMaxAge}`);
222
+ } else {
223
+ cacheControl.push("stale-while-revalidate");
224
+ }
225
+ } else if (opts.maxAge) {
226
+ cacheControl.push(`max-age=${opts.maxAge}`);
227
+ }
228
+ if (cacheControl.length > 0) {
229
+ res.headers.set("cache-control", cacheControl.join(", "));
230
+ }
231
+ const cacheEntry = {
232
+ status: res.status,
233
+ statusText: res.statusText,
234
+ headers: Object.fromEntries(res.headers.entries()),
235
+ body
236
+ };
237
+ return cacheEntry;
238
+ }, _opts);
239
+ return defineHandler(async (event) => {
240
+ // Headers-only mode
241
+ if (opts.headersOnly) {
242
+ // TODO: Send SWR too
243
+ if (handleCacheHeaders(event, { maxAge: opts.maxAge })) {
244
+ return;
245
+ }
246
+ return handler(event);
247
+ }
248
+ // Call with cache
249
+ const response = await _cachedHandler(event);
250
+ // Check for cache headers
251
+ if (handleCacheHeaders(event, {
252
+ modifiedTime: new Date(response.headers["last-modified"]),
253
+ etag: response.headers.etag,
254
+ maxAge: opts.maxAge
255
+ })) {
256
+ return;
257
+ }
258
+ // Send Response
259
+ return new FastResponse(response.body, {
260
+ status: response.status,
261
+ statusText: response.statusText,
262
+ headers: response.headers
263
+ });
264
+ });
234
265
  }
235
266
  export const cachedEventHandler = defineCachedEventHandler;
236
267
  export const defineCachedHandler = defineCachedEventHandler;
@@ -1,12 +1,12 @@
1
1
  import type { ServerRequest } from "srvx";
2
- export declare const nitroAsyncContext: import("unctx/index").UseContext<NitroAsyncContext>;
2
+ export declare const nitroAsyncContext: unknown;
3
3
  /**
4
- *
5
- * Access to the current Nitro request.
6
- *
7
- * @experimental
8
- * - Requires `experimental.asyncContext: true` config to work.
9
- * - Works in Node.js and limited runtimes only
10
- *
11
- */
4
+ *
5
+ * Access to the current Nitro request.
6
+ *
7
+ * @experimental
8
+ * - Requires `experimental.asyncContext: true` config to work.
9
+ * - Works in Node.js and limited runtimes only
10
+ *
11
+ */
12
12
  export declare function useRequest(): ServerRequest;
@@ -2,16 +2,23 @@ import { AsyncLocalStorage } from "node:async_hooks";
2
2
  import { HTTPError } from "h3";
3
3
  import { getContext } from "unctx";
4
4
  export const nitroAsyncContext = /* @__PURE__ */ (() => getContext("nitro-app", {
5
- asyncContext: import.meta._asyncContext,
6
- AsyncLocalStorage: import.meta._asyncContext ? AsyncLocalStorage : void 0
5
+ asyncContext: import.meta._asyncContext,
6
+ AsyncLocalStorage: import.meta._asyncContext ? AsyncLocalStorage : undefined
7
7
  }))();
8
+ /**
9
+ *
10
+ * Access to the current Nitro request.
11
+ *
12
+ * @experimental
13
+ * - Requires `experimental.asyncContext: true` config to work.
14
+ * - Works in Node.js and limited runtimes only
15
+ *
16
+ */
8
17
  export function useRequest() {
9
- try {
10
- return nitroAsyncContext.use().request;
11
- } catch {
12
- const hint = import.meta._asyncContext ? "Note: This is an experimental feature and might be broken on non-Node.js environments." : "Enable the experimental flag using `experimental.asyncContext: true`.";
13
- throw new HTTPError({
14
- message: `Nitro request context is not available. ${hint}`
15
- });
16
- }
18
+ try {
19
+ return nitroAsyncContext.use().request;
20
+ } catch {
21
+ const hint = import.meta._asyncContext ? "Note: This is an experimental feature and might be broken on non-Node.js environments." : "Enable the experimental flag using `experimental.asyncContext: true`.";
22
+ throw new HTTPError({ message: `Nitro request context is not available. ${hint}` });
23
+ }
17
24
  }
@@ -1,14 +1,12 @@
1
1
  import { createDatabase } from "db0";
2
2
  import { connectionConfigs } from "#nitro-internal-virtual/database";
3
- const instances = /* @__PURE__ */ Object.create(null);
3
+ const instances = Object.create(null);
4
4
  export function useDatabase(name = "default") {
5
- if (instances[name]) {
6
- return instances[name];
7
- }
8
- if (!connectionConfigs[name]) {
9
- throw new Error(`Database connection "${name}" not configured.`);
10
- }
11
- return instances[name] = createDatabase(
12
- connectionConfigs[name].connector(connectionConfigs[name].options || {})
13
- );
5
+ if (instances[name]) {
6
+ return instances[name];
7
+ }
8
+ if (!connectionConfigs[name]) {
9
+ throw new Error(`Database connection "${name}" not configured.`);
10
+ }
11
+ return instances[name] = createDatabase(connectionConfigs[name].connector(connectionConfigs[name].options || {}));
14
12
  }
@@ -1,9 +1,10 @@
1
1
  import type { HTTPError, HTTPEvent } from "h3";
2
2
  import type { InternalHandlerResponse } from "./utils.mjs";
3
- declare const _default: NitroErrorHandler;
3
+ declare const _default;
4
4
  export default _default;
5
5
  export declare function defaultHandler(error: HTTPError, event: HTTPEvent, opts?: {
6
- silent?: boolean;
7
- json?: boolean;
6
+ silent?: boolean;
7
+ json?: boolean;
8
8
  }): Promise<InternalHandlerResponse>;
9
- export declare function loadStackTrace(error: any): Promise<void>;
9
+ // ---- Source Map support ----
10
+ export declare function loadStackTrace(error: any);