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
package/dist/_dev.mjs ADDED
@@ -0,0 +1,675 @@
1
+ import { s as __toESM } from "./_chunks/DXMHy5ca.mjs";
2
+ import { T as resolve$1, n as debounce } from "./_libs/c12.mjs";
3
+ import { n as a, t as T } from "./_libs/std-env.mjs";
4
+ import { t as createProxyServer } from "./_libs/httpxy.mjs";
5
+ import { i as watch$1 } from "./_libs/chokidar.mjs";
6
+ import { t as require_serve_static } from "./_libs/serve-static.mjs";
7
+ import consola$1 from "consola";
8
+ import { dirname, resolve } from "node:path";
9
+ import { existsSync } from "node:fs";
10
+ import { joinURL } from "ufo";
11
+ import { readFile, rm, writeFile } from "node:fs/promises";
12
+ import { Worker } from "node:worker_threads";
13
+ import { H3, HTTPError, defineHandler, fromNodeHandler, getRequestIP, getRequestURL, toEventHandler, withBase as withBase$1 } from "h3";
14
+ import { Agent } from "undici";
15
+ import { version } from "nitro/meta";
16
+ import { serve } from "srvx/node";
17
+ import { ErrorParser } from "youch-core";
18
+ import { Youch } from "youch";
19
+ import { SourceMapConsumer } from "source-map";
20
+ import { FastResponse } from "srvx";
21
+
22
+ //#region src/dev/proxy.ts
23
+ function createHTTPProxy(defaults = {}) {
24
+ const proxy = createProxyServer(defaults);
25
+ proxy.on("proxyReq", (proxyReq, req) => {
26
+ if (!proxyReq.hasHeader("x-forwarded-for")) {
27
+ const address = req.socket.remoteAddress;
28
+ if (address) proxyReq.appendHeader("x-forwarded-for", address);
29
+ }
30
+ if (!proxyReq.hasHeader("x-forwarded-port")) {
31
+ if (req?.socket?.localPort) proxyReq.setHeader("x-forwarded-port", req.socket.localPort);
32
+ }
33
+ if (!proxyReq.hasHeader("x-forwarded-Proto")) {
34
+ const encrypted = (req?.connection)?.encrypted;
35
+ proxyReq.setHeader("x-forwarded-proto", encrypted ? "https" : "http");
36
+ }
37
+ });
38
+ return {
39
+ proxy,
40
+ async handleEvent(event, opts) {
41
+ try {
42
+ return await fromNodeHandler((req, res) => proxy.web(req, res, opts))(event);
43
+ } catch (error) {
44
+ event.res.headers.set("refresh", "3");
45
+ throw new HTTPError({
46
+ status: 503,
47
+ message: "Dev server is unavailable.",
48
+ cause: error
49
+ });
50
+ }
51
+ }
52
+ };
53
+ }
54
+ function fetchAddress(addr, input, inputInit) {
55
+ let url;
56
+ let init;
57
+ if (input instanceof Request) {
58
+ url = new URL(input.url);
59
+ init = {
60
+ method: input.method,
61
+ headers: input.headers,
62
+ body: input.body,
63
+ ...inputInit
64
+ };
65
+ } else {
66
+ url = new URL(input);
67
+ init = inputInit;
68
+ }
69
+ init = {
70
+ duplex: "half",
71
+ redirect: "manual",
72
+ ...init
73
+ };
74
+ if (addr.socketPath) {
75
+ url.protocol = "http:";
76
+ return fetch(url, {
77
+ ...init,
78
+ ...fetchSocketOptions(addr.socketPath)
79
+ });
80
+ }
81
+ const origin = `http://${addr.host}${addr.port ? `:${addr.port}` : ""}`;
82
+ const outURL = new URL(url.pathname + url.search, origin);
83
+ return fetch(outURL, init);
84
+ }
85
+ function fetchSocketOptions(socketPath) {
86
+ if ("Bun" in globalThis) return { unix: socketPath };
87
+ if ("Deno" in globalThis) return { client: Deno.createHttpClient({
88
+ transport: "unix",
89
+ path: socketPath
90
+ }) };
91
+ return { dispatcher: new Agent({ connect: { socketPath } }) };
92
+ }
93
+
94
+ //#endregion
95
+ //#region src/dev/worker.ts
96
+ var NodeDevWorker = class {
97
+ closed = false;
98
+ #name;
99
+ #entry;
100
+ #data;
101
+ #hooks;
102
+ #worker;
103
+ #address;
104
+ #proxy;
105
+ #messageListeners;
106
+ constructor(opts) {
107
+ this.#name = opts.name;
108
+ this.#entry = opts.entry;
109
+ this.#data = opts.data;
110
+ this.#hooks = opts.hooks;
111
+ this.#proxy = createHTTPProxy();
112
+ this.#messageListeners = /* @__PURE__ */ new Set();
113
+ this.#initWorker();
114
+ }
115
+ get ready() {
116
+ return Boolean(!this.closed && this.#address && this.#proxy && this.#worker);
117
+ }
118
+ async fetch(input, init) {
119
+ for (let i = 0; i < 5 && !(this.#address && this.#proxy); i++) await new Promise((r) => setTimeout(r, 100 * Math.pow(2, i)));
120
+ if (!(this.#address && this.#proxy)) return new Response("Dev worker is unavailable", { status: 503 });
121
+ return fetchAddress(this.#address, input, init);
122
+ }
123
+ upgrade(req, socket, head) {
124
+ if (!this.ready) return;
125
+ return this.#proxy.proxy.ws(req, socket, {
126
+ target: this.#address,
127
+ xfwd: true
128
+ }, head);
129
+ }
130
+ sendMessage(message) {
131
+ if (!this.#worker) throw new Error("Dev worker should be initialized before sending messages.");
132
+ this.#worker.postMessage(message);
133
+ }
134
+ onMessage(listener) {
135
+ this.#messageListeners.add(listener);
136
+ }
137
+ offMessage(listener) {
138
+ this.#messageListeners.delete(listener);
139
+ }
140
+ async close(cause) {
141
+ if (this.closed) return;
142
+ this.closed = true;
143
+ this.#hooks.onClose?.(this, cause);
144
+ this.#hooks = {};
145
+ const onError = (error) => consola$1.error(error);
146
+ await this.#closeWorker().catch(onError);
147
+ await this.#closeProxy().catch(onError);
148
+ await this.#closeSocket().catch(onError);
149
+ }
150
+ [Symbol.for("nodejs.util.inspect.custom")]() {
151
+ const status = this.closed ? "closed" : this.ready ? "ready" : "pending";
152
+ return `NodeDevWorker#${this.#name}(${status})`;
153
+ }
154
+ #initWorker() {
155
+ if (!existsSync(this.#entry)) {
156
+ this.close(`worker entry not found in "${this.#entry}".`);
157
+ return;
158
+ }
159
+ const worker = new Worker(this.#entry, {
160
+ env: { ...process.env },
161
+ workerData: {
162
+ name: this.#name,
163
+ ...this.#data
164
+ }
165
+ });
166
+ worker.once("exit", (code) => {
167
+ worker._exitCode = code;
168
+ this.close(`worker exited with code ${code}`);
169
+ });
170
+ worker.once("error", (error) => {
171
+ consola$1.error(`Worker error:`, error);
172
+ this.close(error);
173
+ });
174
+ worker.on("message", (message) => {
175
+ if (message?.address) {
176
+ this.#address = message.address;
177
+ this.#hooks.onReady?.(this, this.#address);
178
+ }
179
+ for (const listener of this.#messageListeners) listener(message);
180
+ });
181
+ this.#worker = worker;
182
+ }
183
+ async #closeProxy() {
184
+ this.#proxy?.proxy?.close(() => {});
185
+ this.#proxy = void 0;
186
+ }
187
+ async #closeSocket() {
188
+ const socketPath = this.#address?.socketPath;
189
+ if (socketPath && socketPath[0] !== "\0" && !socketPath.startsWith(String.raw`\\.\pipe`)) await rm(socketPath).catch(() => {});
190
+ this.#address = void 0;
191
+ }
192
+ async #closeWorker() {
193
+ if (!this.#worker) return;
194
+ this.#worker.postMessage({ event: "shutdown" });
195
+ if (!this.#worker._exitCode && !a && !T) await new Promise((resolve$2) => {
196
+ const gracefulShutdownTimeoutMs = Number.parseInt(process.env.NITRO_SHUTDOWN_TIMEOUT || "", 10) || 5e3;
197
+ const timeout = setTimeout(() => {
198
+ if (process.env.DEBUG) consola$1.warn(`force closing dev worker...`);
199
+ }, gracefulShutdownTimeoutMs);
200
+ this.#worker?.on("message", (message) => {
201
+ if (message.event === "exit") {
202
+ clearTimeout(timeout);
203
+ resolve$2();
204
+ }
205
+ });
206
+ });
207
+ this.#worker.removeAllListeners();
208
+ await this.#worker.terminate().catch((error) => {
209
+ consola$1.error(error);
210
+ });
211
+ this.#worker = void 0;
212
+ }
213
+ };
214
+
215
+ //#endregion
216
+ //#region src/dev/vfs.ts
217
+ function createVFSHandler(nitro) {
218
+ return defineHandler(async (event) => {
219
+ const { socket } = event.runtime?.node?.req || {};
220
+ const ip = getRequestIP(event, { xForwardedFor: !socket?.remoteAddress && !socket?.localAddress && Object.keys(socket?.address?.() || {}).length === 0 && socket?.readable && socket?.writable && !socket?.remotePort });
221
+ if (!(ip && /^::1$|^127\.\d+\.\d+\.\d+$/.test(ip))) throw new HTTPError({
222
+ statusText: `Forbidden IP: "${ip || "?"}"`,
223
+ status: 403
224
+ });
225
+ const vfsEntries = {
226
+ ...nitro.vfs,
227
+ ...nitro.options.virtual
228
+ };
229
+ const url = event.context.params?._ || "";
230
+ const isJson = url.endsWith(".json") || event.req.headers.get("accept")?.includes("application/json");
231
+ const id = decodeURIComponent(url.replace(/^(\.json)?\/?/, "") || "");
232
+ if (id && !(id in vfsEntries)) throw new HTTPError({
233
+ message: "File not found",
234
+ status: 404
235
+ });
236
+ let content = id ? vfsEntries[id] : void 0;
237
+ if (typeof content === "function") content = await content();
238
+ if (isJson) return {
239
+ rootDir: nitro.options.rootDir,
240
+ entries: Object.keys(vfsEntries).map((id$1) => ({
241
+ id: id$1,
242
+ path: "/_vfs.json/" + encodeURIComponent(id$1)
243
+ })),
244
+ current: id ? {
245
+ id,
246
+ content
247
+ } : null
248
+ };
249
+ const directories = { [nitro.options.rootDir]: {} };
250
+ const fpaths = Object.keys(vfsEntries);
251
+ for (const item of fpaths) {
252
+ const segments = item.replace(nitro.options.rootDir, "").split("/").filter(Boolean);
253
+ let currentDir = item.startsWith(nitro.options.rootDir) ? directories[nitro.options.rootDir] : directories;
254
+ for (const segment of segments) {
255
+ if (!currentDir[segment]) currentDir[segment] = {};
256
+ currentDir = currentDir[segment];
257
+ }
258
+ }
259
+ const generateHTML = (directory, path$1 = []) => Object.entries(directory).map(([fname, value = {}]) => {
260
+ const subpath = [...path$1, fname];
261
+ const key = subpath.join("/");
262
+ const encodedUrl = encodeURIComponent(key);
263
+ const linkClass = url === `/${encodedUrl}` ? "bg-gray-700 text-white" : "hover:bg-gray-800 text-gray-200";
264
+ return Object.keys(value).length === 0 ? `
265
+ <li class="flex flex-nowrap">
266
+ <a href="/_vfs/${encodedUrl}" class="w-full text-sm px-2 py-1 border-b border-gray-10 ${linkClass}">
267
+ ${fname}
268
+ </a>
269
+ </li>
270
+ ` : `
271
+ <li>
272
+ <details ${url.startsWith(`/${encodedUrl}`) ? "open" : ""}>
273
+ <summary class="w-full text-sm px-2 py-1 border-b border-gray-10 hover:bg-gray-800 text-gray-200">
274
+ ${fname}
275
+ </summary>
276
+ <ul class="ml-4">
277
+ ${generateHTML(value, subpath)}
278
+ </ul>
279
+ </details>
280
+ </li>
281
+ `;
282
+ }).join("");
283
+ const rootDirectory = directories[nitro.options.rootDir];
284
+ delete directories[nitro.options.rootDir];
285
+ const files = `
286
+ <div class="h-full overflow-auto border-r border-gray:10">
287
+ <p class="text-white text-bold text-center py-1 opacity-50">Virtual Files</p>
288
+ <ul class="flex flex-col">${generateHTML(rootDirectory, [nitro.options.rootDir]) + generateHTML(directories)}</ul>
289
+ </div>
290
+ `;
291
+ const file = id ? editorTemplate({
292
+ readOnly: true,
293
+ language: id.endsWith("html") ? "html" : "javascript",
294
+ theme: "vs-dark",
295
+ value: content,
296
+ wordWrap: "wordWrapColumn",
297
+ wordWrapColumn: 80
298
+ }) : `
299
+ <div class="w-full h-full flex opacity-50">
300
+ <h1 class="text-white m-auto">Select a virtual file to inspect</h1>
301
+ </div>
302
+ `;
303
+ event.res.headers.set("Content-Type", "text/html; charset=utf-8");
304
+ return `
305
+ <!doctype html>
306
+ <html>
307
+ <head>
308
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@unocss/reset/tailwind.min.css" />
309
+ <link rel="stylesheet" data-name="vs/editor/editor.main" href="${vsUrl}/editor/editor.main.min.css">
310
+ <script src="https://cdn.jsdelivr.net/npm/@unocss/runtime"><\/script>
311
+ <style>
312
+ html {
313
+ background: #1E1E1E;
314
+ color: white;
315
+ }
316
+ [un-cloak] {
317
+ display: none;
318
+ }
319
+ </style>
320
+ </head>
321
+ <body class="bg-[#1E1E1E]">
322
+ <div un-cloak class="h-screen grid grid-cols-[300px_1fr]">
323
+ ${files}
324
+ ${file}
325
+ </div>
326
+ </body>
327
+ </html>`;
328
+ });
329
+ }
330
+ const monacoUrl = `https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.30.0/min`;
331
+ const vsUrl = `${monacoUrl}/vs`;
332
+ const editorTemplate = (options) => `
333
+ <div id="editor" class="min-h-screen w-full h-full"></div>
334
+ <script src="${vsUrl}/loader.min.js"><\/script>
335
+ <script>
336
+ require.config({ paths: { vs: '${vsUrl}' } })
337
+
338
+ const proxy = URL.createObjectURL(new Blob([\`
339
+ self.MonacoEnvironment = { baseUrl: '${monacoUrl}' }
340
+ importScripts('${vsUrl}/base/worker/workerMain.min.js')
341
+ \`], { type: 'text/javascript' }))
342
+ window.MonacoEnvironment = { getWorkerUrl: () => proxy }
343
+
344
+ setTimeout(() => {
345
+ require(['vs/editor/editor.main'], function () {
346
+ monaco.editor.create(document.getElementById('editor'), ${JSON.stringify(options)})
347
+ })
348
+ }, 0);
349
+ <\/script>
350
+ `;
351
+
352
+ //#endregion
353
+ //#region src/runtime/internal/error/utils.ts
354
+ function defineNitroErrorHandler(handler) {
355
+ return handler;
356
+ }
357
+
358
+ //#endregion
359
+ //#region src/runtime/internal/error/dev.ts
360
+ var dev_default = defineNitroErrorHandler(async function defaultNitroErrorHandler(error, event) {
361
+ const res = await defaultHandler(error, event);
362
+ return new FastResponse(typeof res.body === "string" ? res.body : JSON.stringify(res.body, null, 2), res);
363
+ });
364
+ async function defaultHandler(error, event, opts) {
365
+ const isSensitive = error.unhandled;
366
+ const status = error.status || 500;
367
+ const url = getRequestURL(event, {
368
+ xForwardedHost: true,
369
+ xForwardedProto: true
370
+ });
371
+ if (status === 404) {
372
+ const baseURL = import.meta.baseURL || "/";
373
+ if (/^\/[^/]/.test(baseURL) && !url.pathname.startsWith(baseURL)) return {
374
+ status: 302,
375
+ statusText: "Found",
376
+ headers: { location: `${baseURL}${url.pathname.slice(1)}${url.search}` },
377
+ body: `Redirecting...`
378
+ };
379
+ }
380
+ await loadStackTrace(error).catch(consola$1.error);
381
+ const youch = new Youch();
382
+ if (isSensitive && !opts?.silent) {
383
+ const tags = [error.unhandled && "[unhandled]"].filter(Boolean).join(" ");
384
+ const ansiError = await (await youch.toANSI(error)).replaceAll(process.cwd(), ".");
385
+ consola$1.error(`[request error] ${tags} [${event.req.method}] ${url}\n\n`, ansiError);
386
+ }
387
+ const useJSON = opts?.json || !event.req.headers.get("accept")?.includes("text/html");
388
+ const headers = {
389
+ "content-type": useJSON ? "application/json" : "text/html",
390
+ "x-content-type-options": "nosniff",
391
+ "x-frame-options": "DENY",
392
+ "referrer-policy": "no-referrer",
393
+ "content-security-policy": "script-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self';"
394
+ };
395
+ if (status === 404 || !event.res.headers.has("cache-control")) headers["cache-control"] = "no-cache";
396
+ const body = useJSON ? {
397
+ error: true,
398
+ url,
399
+ status,
400
+ statusText: error.statusText,
401
+ message: error.message,
402
+ data: error.data,
403
+ stack: error.stack?.split("\n").map((line) => line.trim())
404
+ } : await youch.toHTML(error, { request: {
405
+ url: url.href,
406
+ method: event.req.method,
407
+ headers: Object.fromEntries(event.req.headers.entries())
408
+ } });
409
+ return {
410
+ status,
411
+ statusText: error.statusText,
412
+ headers,
413
+ body
414
+ };
415
+ }
416
+ async function loadStackTrace(error) {
417
+ if (!(error instanceof Error)) return;
418
+ const parsed = await new ErrorParser().defineSourceLoader(sourceLoader).parse(error);
419
+ const stack = error.message + "\n" + parsed.frames.map((frame) => fmtFrame(frame)).join("\n");
420
+ Object.defineProperty(error, "stack", { value: stack });
421
+ if (error.cause) await loadStackTrace(error.cause).catch(consola$1.error);
422
+ }
423
+ async function sourceLoader(frame) {
424
+ if (!frame.fileName || frame.fileType !== "fs" || frame.type === "native") return;
425
+ if (frame.type === "app") {
426
+ const rawSourceMap = await readFile(`${frame.fileName}.map`, "utf8").catch(() => {});
427
+ if (rawSourceMap) {
428
+ const originalPosition = (await new SourceMapConsumer(rawSourceMap)).originalPositionFor({
429
+ line: frame.lineNumber,
430
+ column: frame.columnNumber
431
+ });
432
+ if (originalPosition.source && originalPosition.line) {
433
+ frame.fileName = resolve(dirname(frame.fileName), originalPosition.source);
434
+ frame.lineNumber = originalPosition.line;
435
+ frame.columnNumber = originalPosition.column || 0;
436
+ }
437
+ }
438
+ }
439
+ const contents = await readFile(frame.fileName, "utf8").catch(() => {});
440
+ return contents ? { contents } : void 0;
441
+ }
442
+ function fmtFrame(frame) {
443
+ if (frame.type === "native") return frame.raw;
444
+ const src = `${frame.fileName || ""}:${frame.lineNumber}:${frame.columnNumber})`;
445
+ return frame.functionName ? `at ${frame.functionName} (${src}` : `at ${src}`;
446
+ }
447
+
448
+ //#endregion
449
+ //#region src/dev/app.ts
450
+ var import_serve_static = /* @__PURE__ */ __toESM(require_serve_static(), 1);
451
+ var NitroDevApp = class {
452
+ nitro;
453
+ fetch;
454
+ constructor(nitro, catchAllHandler) {
455
+ this.nitro = nitro;
456
+ const app = this.#createApp(catchAllHandler);
457
+ this.fetch = app.fetch.bind(app);
458
+ }
459
+ #createApp(catchAllHandler) {
460
+ const app = new H3({
461
+ debug: true,
462
+ onError: async (error, event) => {
463
+ const errorHandler = this.nitro.options.devErrorHandler || dev_default;
464
+ await loadStackTrace(error).catch(() => {});
465
+ return errorHandler(error, event, { defaultHandler });
466
+ }
467
+ });
468
+ for (const h of this.nitro.options.devHandlers) {
469
+ const handler = toEventHandler(h.handler);
470
+ if (!handler) {
471
+ this.nitro.logger.warn("Invalid dev handler:", h);
472
+ continue;
473
+ }
474
+ if (h.middleware || !h.route) if (h.route) app.use(h.route, handler, { method: h.method });
475
+ else app.use(handler, { method: h.method });
476
+ else app.on(h.method || "", h.route, handler, { meta: h.meta });
477
+ }
478
+ app.get("/_vfs/**", createVFSHandler(this.nitro));
479
+ for (const asset of this.nitro.options.publicAssets) {
480
+ const assetRoute = joinURL(this.nitro.options.runtimeConfig.app.baseURL, asset.baseURL || "/", "**");
481
+ let handler = fromNodeHandler((0, import_serve_static.default)(asset.dir, { dotfiles: "allow" }));
482
+ if (asset.baseURL?.length || false) handler = withBase$1(asset.baseURL, handler);
483
+ app.use(assetRoute, handler);
484
+ }
485
+ const routes = Object.keys(this.nitro.options.devProxy).sort().reverse();
486
+ for (const route of routes) {
487
+ let opts = this.nitro.options.devProxy[route];
488
+ if (typeof opts === "string") opts = { target: opts };
489
+ const proxy = createHTTPProxy(opts);
490
+ app.all(route, proxy.handleEvent);
491
+ }
492
+ if (catchAllHandler) app.all("/**", catchAllHandler);
493
+ return app;
494
+ }
495
+ };
496
+
497
+ //#endregion
498
+ //#region src/dev/server.ts
499
+ function createDevServer(nitro) {
500
+ return new NitroDevServer(nitro);
501
+ }
502
+ var NitroDevServer = class NitroDevServer extends NitroDevApp {
503
+ #entry;
504
+ #workerData = {};
505
+ #listeners = [];
506
+ #watcher;
507
+ #workers = [];
508
+ #workerIdCtr = 0;
509
+ #workerError;
510
+ #building = true;
511
+ #buildError;
512
+ #messageListeners = /* @__PURE__ */ new Set();
513
+ constructor(nitro) {
514
+ super(nitro, async (event) => {
515
+ const worker = await this.#getWorker();
516
+ if (!worker) return this.#generateError();
517
+ return worker.fetch(event.req);
518
+ });
519
+ for (const key of Object.getOwnPropertyNames(NitroDevServer.prototype)) {
520
+ const value = this[key];
521
+ if (typeof value === "function" && key !== "constructor") this[key] = value.bind(this);
522
+ }
523
+ this.#entry = resolve$1(nitro.options.output.dir, nitro.options.output.serverDir, "index.mjs");
524
+ nitro.hooks.hook("close", () => this.close());
525
+ nitro.hooks.hook("dev:start", () => {
526
+ this.#building = true;
527
+ this.#buildError = void 0;
528
+ });
529
+ nitro.hooks.hook("dev:reload", (payload) => {
530
+ this.#buildError = void 0;
531
+ this.#building = false;
532
+ if (payload?.entry) this.#entry = payload.entry;
533
+ if (payload?.workerData) this.#workerData = payload.workerData;
534
+ this.reload();
535
+ });
536
+ nitro.hooks.hook("dev:error", (cause) => {
537
+ this.#buildError = cause;
538
+ this.#building = false;
539
+ for (const worker of this.#workers) worker.close();
540
+ });
541
+ if (nitro.options.devServer.watch.length > 0) {
542
+ const debouncedReload = debounce(() => this.reload());
543
+ this.#watcher = watch$1(nitro.options.devServer.watch, nitro.options.watchOptions);
544
+ this.#watcher.on("add", debouncedReload).on("change", debouncedReload);
545
+ }
546
+ }
547
+ async upgrade(req, socket, head) {
548
+ const worker = await this.#getWorker();
549
+ if (!worker) throw new HTTPError({
550
+ status: 503,
551
+ statusText: "No worker available."
552
+ });
553
+ return worker.upgrade(req, socket, head);
554
+ }
555
+ listen(opts) {
556
+ const server = serve({
557
+ ...opts,
558
+ fetch: this.fetch
559
+ });
560
+ this.#listeners.push(server);
561
+ if (server.node?.server) server.node.server.on("upgrade", (req, sock, head) => this.upgrade(req, sock, head));
562
+ return server;
563
+ }
564
+ async close() {
565
+ await Promise.all([
566
+ Promise.all(this.#listeners.map((l) => l.close())).then(() => {
567
+ this.#listeners = [];
568
+ }),
569
+ Promise.all(this.#workers.map((w) => w.close())).then(() => {
570
+ this.#workers = [];
571
+ }),
572
+ Promise.resolve(this.#watcher?.close()).then(() => {
573
+ this.#watcher = void 0;
574
+ })
575
+ ].map((p) => p.catch((error) => {
576
+ consola$1.error(error);
577
+ })));
578
+ }
579
+ reload() {
580
+ for (const worker$1 of this.#workers) worker$1.close();
581
+ const worker = new NodeDevWorker({
582
+ name: `Nitro_${this.#workerIdCtr++}`,
583
+ entry: this.#entry,
584
+ data: {
585
+ ...this.#workerData,
586
+ globals: {
587
+ __NITRO_RUNTIME_CONFIG__: this.nitro.options.runtimeConfig,
588
+ ...this.#workerData.globals
589
+ }
590
+ },
591
+ hooks: {
592
+ onClose: (worker$1, cause) => {
593
+ this.#workerError = cause;
594
+ const index = this.#workers.indexOf(worker$1);
595
+ if (index !== -1) this.#workers.splice(index, 1);
596
+ },
597
+ onReady: (worker$1, addr) => {
598
+ this.#writeBuildInfo(worker$1, addr);
599
+ }
600
+ }
601
+ });
602
+ if (!worker.closed) {
603
+ for (const listener of this.#messageListeners) worker.onMessage(listener);
604
+ this.#workers.unshift(worker);
605
+ }
606
+ }
607
+ sendMessage(message) {
608
+ for (const worker of this.#workers) if (!worker.closed) worker.sendMessage(message);
609
+ }
610
+ onMessage(listener) {
611
+ this.#messageListeners.add(listener);
612
+ for (const worker of this.#workers) worker.onMessage(listener);
613
+ }
614
+ offMessage(listener) {
615
+ this.#messageListeners.delete(listener);
616
+ for (const worker of this.#workers) worker.offMessage(listener);
617
+ }
618
+ #writeBuildInfo(_worker, addr) {
619
+ const buildInfoPath = resolve$1(this.nitro.options.buildDir, "nitro.json");
620
+ const buildInfo = {
621
+ date: (/* @__PURE__ */ new Date()).toJSON(),
622
+ preset: this.nitro.options.preset,
623
+ framework: this.nitro.options.framework,
624
+ versions: { nitro: version },
625
+ dev: {
626
+ pid: process.pid,
627
+ workerAddress: addr
628
+ }
629
+ };
630
+ writeFile(buildInfoPath, JSON.stringify(buildInfo, null, 2)).catch((error) => {
631
+ consola$1.error(error);
632
+ });
633
+ }
634
+ async #getWorker() {
635
+ let retry = 0;
636
+ const maxRetries = a || T ? 100 : 10;
637
+ while (this.#building || ++retry < maxRetries) {
638
+ if ((this.#workers.length === 0 || this.#buildError) && !this.#building) return;
639
+ const activeWorker = this.#workers.find((w) => w.ready);
640
+ if (activeWorker) return activeWorker;
641
+ await new Promise((resolve$2) => setTimeout(resolve$2, 600));
642
+ }
643
+ }
644
+ #generateError() {
645
+ const error = this.#buildError || this.#workerError;
646
+ if (error) {
647
+ try {
648
+ error.unhandled = false;
649
+ let id = error.id || error.path;
650
+ if (id) {
651
+ const cause = error.errors?.[0];
652
+ const loc = error.location || error.loc || cause?.location || cause?.loc;
653
+ if (loc) id += `:${loc.line}:${loc.column}`;
654
+ error.stack = (error.stack || "").replace(/(^\s*at\s+.+)/m, ` at ${id}\n$1`);
655
+ }
656
+ } catch {}
657
+ return new HTTPError(error);
658
+ }
659
+ return new Response(JSON.stringify({
660
+ error: "Dev server is unavailable.",
661
+ hint: "Please reload the page and check the console for errors if the issue persists."
662
+ }, null, 2), {
663
+ status: 503,
664
+ statusText: "Dev server is unavailable",
665
+ headers: {
666
+ "Content-Type": "application/json",
667
+ "Cache-Control": "no-store",
668
+ Refresh: "3"
669
+ }
670
+ });
671
+ }
672
+ };
673
+
674
+ //#endregion
675
+ export { NodeDevWorker as i, createDevServer as n, NitroDevApp as r, NitroDevServer as t };