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,44 +1,46 @@
1
- import "#nitro-internal-pollyfills";
2
- import { Server as HttpServer } from "node:http";
3
- import { Server as HttpsServer } from "node:https";
1
+ import "#nitro/virtual/polyfills";
2
+ import { NodeRequest, serve } from "srvx/node";
4
3
  import wsAdapter from "crossws/adapters/node";
5
- import destr from "destr";
6
- import { toNodeHandler } from "srvx/node";
7
- import { useNitroApp, useRuntimeConfig } from "nitro/runtime";
8
- import {
9
- setupGracefulShutdown,
10
- startScheduleRunner,
11
- trapUnhandledNodeErrors
12
- } from "nitro/runtime/internal";
4
+ import { useNitroApp } from "nitro/app";
5
+ import { startScheduleRunner } from "#nitro/runtime/task";
6
+ import { trapUnhandledErrors } from "#nitro/runtime/error/hooks";
7
+ import { resolveWebsocketHooks } from "#nitro/runtime/app";
8
+ const port = Number.parseInt(process.env.NITRO_PORT || process.env.PORT || "") || 3e3;
9
+ const host = process.env.NITRO_HOST || process.env.HOST;
13
10
  const cert = process.env.NITRO_SSL_CERT;
14
11
  const key = process.env.NITRO_SSL_KEY;
12
+ // const socketPath = process.env.NITRO_UNIX_SOCKET; // TODO
15
13
  const nitroApp = useNitroApp();
16
- const server = cert && key ? new HttpsServer({ key, cert }, toNodeHandler(nitroApp.fetch)) : new HttpServer(toNodeHandler(nitroApp.fetch));
17
- const port = destr(process.env.NITRO_PORT || process.env.PORT) || 3e3;
18
- const host = process.env.NITRO_HOST || process.env.HOST;
19
- const path = process.env.NITRO_UNIX_SOCKET;
20
- const listener = server.listen(path ? { path } : { port, host }, (err) => {
21
- if (err) {
22
- console.error(err);
23
- process.exit(1);
24
- }
25
- const protocol = cert && key ? "https" : "http";
26
- const addressInfo = listener.address();
27
- if (typeof addressInfo === "string") {
28
- console.log(`Listening on unix socket ${addressInfo}`);
29
- return;
30
- }
31
- const baseURL = (useRuntimeConfig().app.baseURL || "").replace(/\/$/, "");
32
- const url = `${protocol}://${addressInfo.family === "IPv6" ? `[${addressInfo.address}]` : addressInfo.address}:${addressInfo.port}${baseURL}`;
33
- console.log(`Listening on ${url}`);
14
+ const server = serve({
15
+ port,
16
+ hostname: host,
17
+ tls: cert && key ? {
18
+ cert,
19
+ key
20
+ } : undefined,
21
+ fetch: nitroApp.fetch
34
22
  });
35
- trapUnhandledNodeErrors();
36
- setupGracefulShutdown(listener, nitroApp);
37
23
  if (import.meta._websocket) {
38
- const { handleUpgrade } = wsAdapter(nitroApp.h3App.websocket);
39
- server.on("upgrade", handleUpgrade);
24
+ const { handleUpgrade } = wsAdapter({ resolve: resolveWebsocketHooks });
25
+ server.node.server.on("upgrade", (req, socket, head) => {
26
+ handleUpgrade(
27
+ req,
28
+ socket,
29
+ head,
30
+ // @ts-expect-error (upgrade is not typed)
31
+ new NodeRequest({
32
+ req,
33
+ upgrade: {
34
+ socket,
35
+ head
36
+ }
37
+ })
38
+ );
39
+ });
40
40
  }
41
+ trapUnhandledErrors();
42
+ // Scheduled tasks
41
43
  if (import.meta._tasks) {
42
- startScheduleRunner();
44
+ startScheduleRunner();
43
45
  }
44
46
  export default {};
@@ -1,5 +1,3 @@
1
- import "#nitro-internal-pollyfills";
2
- declare const _default: {
3
- fetch: any;
4
- };
1
+ import "#nitro/virtual/polyfills";
2
+ declare const _default: {};
5
3
  export default _default;
@@ -1,6 +1,4 @@
1
- import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
1
+ import "#nitro/virtual/polyfills";
2
+ import { useNitroApp } from "nitro/app";
3
3
  const nitroApp = useNitroApp();
4
- export default {
5
- fetch: nitroApp.fetch
6
- };
4
+ export default { fetch: nitroApp.fetch };
@@ -1,21 +1,21 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
2
  import type { Handler } from "aws-lambda";
3
3
  type StormkitEvent = {
4
- url: string;
5
- path: string;
6
- method: string;
7
- body?: string;
8
- query?: Record<string, Array<string>>;
9
- headers?: Record<string, string>;
10
- rawHeaders?: Array<string>;
4
+ url: string;
5
+ path: string;
6
+ method: string;
7
+ body?: string;
8
+ query?: Record<string, Array<string>>;
9
+ headers?: Record<string, string>;
10
+ rawHeaders?: Array<string>;
11
11
  };
12
12
  type StormkitResponse = {
13
- headers?: Record<string, string>;
14
- body?: string;
15
- buffer?: string;
16
- statusCode: number;
17
- errorMessage?: string;
18
- errorStack?: string;
13
+ headers?: Record<string, string>;
14
+ body?: string;
15
+ buffer?: string;
16
+ statusCode: number;
17
+ errorMessage?: string;
18
+ errorStack?: string;
19
19
  };
20
20
  export declare const handler: Handler<StormkitEvent, StormkitResponse>;
21
21
  export {};
@@ -1,28 +1,28 @@
1
- import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
1
+ import "#nitro/virtual/polyfills";
2
+ import { useNitroApp } from "nitro/app";
3
3
  import { awsResponseBody } from "../../aws-lambda/runtime/_utils.mjs";
4
4
  const nitroApp = useNitroApp();
5
5
  export const handler = async function(event, context) {
6
- const req = new Request(event.url, {
7
- method: event.method || "GET",
8
- headers: event.headers,
9
- body: event.body
10
- });
11
- req.runtime ??= { name: "stormkit" };
12
- req.runtime.stormkit ??= { event, context };
13
- const response = await nitroApp.fetch(req);
14
- const { body, isBase64Encoded } = await awsResponseBody(response);
15
- return {
16
- statusCode: response.status,
17
- headers: normalizeOutgoingHeaders(response.headers),
18
- [isBase64Encoded ? "buffer" : "body"]: body
19
- };
6
+ const req = new Request(event.url, {
7
+ method: event.method || "GET",
8
+ headers: event.headers,
9
+ body: event.body
10
+ });
11
+ // srvx compatibility
12
+ req.runtime ??= { name: "stormkit" };
13
+ // @ts-expect-error (add to srvx types)
14
+ req.runtime.stormkit ??= {
15
+ event,
16
+ context
17
+ };
18
+ const response = await nitroApp.fetch(req);
19
+ const { body, isBase64Encoded } = await awsResponseBody(response);
20
+ return {
21
+ statusCode: response.status,
22
+ headers: normalizeOutgoingHeaders(response.headers),
23
+ [isBase64Encoded ? "buffer" : "body"]: body
24
+ };
20
25
  };
21
26
  function normalizeOutgoingHeaders(headers) {
22
- return Object.fromEntries(
23
- Object.entries(headers).map(([k, v]) => [
24
- k,
25
- Array.isArray(v) ? v.join(",") : String(v)
26
- ])
27
- );
27
+ return Object.fromEntries(Object.entries(headers).map(([k, v]) => [k, Array.isArray(v) ? v.join(",") : String(v)]));
28
28
  }
@@ -0,0 +1,2 @@
1
+ export declare const ISR_URL_PARAM = "__isr_route";
2
+ export declare function isrRouteRewrite(reqUrl: string, xNowRouteMatches: string | null): [pathname: string, search: string] | undefined;
@@ -0,0 +1,19 @@
1
+ export const ISR_URL_PARAM = "__isr_route";
2
+ export function isrRouteRewrite(reqUrl, xNowRouteMatches) {
3
+ if (xNowRouteMatches) {
4
+ const isrURL = new URLSearchParams(xNowRouteMatches).get(ISR_URL_PARAM);
5
+ if (isrURL) {
6
+ return [decodeURIComponent(isrURL), ""];
7
+ }
8
+ } else {
9
+ const queryIndex = reqUrl.indexOf("?");
10
+ if (queryIndex !== -1) {
11
+ const params = new URLSearchParams(reqUrl.slice(queryIndex + 1));
12
+ const isrURL = params.get(ISR_URL_PARAM);
13
+ if (isrURL) {
14
+ params.delete(ISR_URL_PARAM);
15
+ return [decodeURIComponent(isrURL), params.toString()];
16
+ }
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,3 @@
1
+ import "#nitro/virtual/polyfills";
2
+ import type { NodeServerRequest, NodeServerResponse } from "srvx";
3
+ export default function nodeHandler(req: NodeServerRequest, res: NodeServerResponse);
@@ -0,0 +1,24 @@
1
+ import "#nitro/virtual/polyfills";
2
+ import { toNodeHandler } from "srvx/node";
3
+ import { useNitroApp, getRouteRules } from "nitro/app";
4
+ import { isrRouteRewrite } from "./isr.mjs";
5
+ const nitroApp = useNitroApp();
6
+ const handler = toNodeHandler(nitroApp.fetch);
7
+ export default function nodeHandler(req, res) {
8
+ // https://vercel.com/docs/headers/request-headers#x-forwarded-for
9
+ // srvx node adapter uses req.socket.remoteAddress for req.ip
10
+ let ip;
11
+ Object.defineProperty(req.socket, "remoteAddress", { get() {
12
+ const h = req.headers["x-forwarded-for"];
13
+ return ip ??= h?.split?.(",").shift()?.trim();
14
+ } });
15
+ // ISR route rewrite
16
+ const isrURL = isrRouteRewrite(req.url, req.headers["x-now-route-matches"]);
17
+ if (isrURL) {
18
+ const { routeRules } = getRouteRules("", isrURL[0]);
19
+ if (routeRules?.isr) {
20
+ req.url = isrURL[0] + (isrURL[1] ? `?${isrURL[1]}` : "");
21
+ }
22
+ }
23
+ return handler(req, res);
24
+ }
@@ -0,0 +1,8 @@
1
+ import "#nitro/virtual/polyfills";
2
+ import type { ServerRequest } from "srvx";
3
+ declare const _default: {
4
+ fetch(req: ServerRequest, context: {
5
+ waitUntil: (promise: Promise<any>) => void;
6
+ });
7
+ };
8
+ export default _default;
@@ -0,0 +1,25 @@
1
+ import "#nitro/virtual/polyfills";
2
+ import { useNitroApp, getRouteRules } from "nitro/app";
3
+ import { isrRouteRewrite } from "./isr.mjs";
4
+ const nitroApp = useNitroApp();
5
+ export default { fetch(req, context) {
6
+ // ISR route rewrite
7
+ const isrURL = isrRouteRewrite(req.url, req.headers.get("x-now-route-matches"));
8
+ if (isrURL) {
9
+ const { routeRules } = getRouteRules("", isrURL[0]);
10
+ if (routeRules?.isr) {
11
+ req = new Request(new URL(isrURL[0] + (isrURL[1] ? `?${isrURL[1]}` : ""), req.url).href, req);
12
+ }
13
+ }
14
+ req.runtime = {
15
+ name: "vercel",
16
+ vercel: { context }
17
+ };
18
+ let ip;
19
+ Object.defineProperty(req, "ip", { get() {
20
+ const h = req.headers.get("x-forwarded-for");
21
+ return ip ??= h?.split(",").shift()?.trim();
22
+ } });
23
+ req.waitUntil = context?.waitUntil;
24
+ return nitroApp.fetch(req);
25
+ } };
@@ -1 +1,2 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
+ export {};
@@ -1,87 +1,91 @@
1
- import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
1
+ // @ts-nocheck TODO: Remove after removing polyfills
2
+ import "#nitro/virtual/polyfills";
3
+ import { useNitroApp } from "nitro/app";
3
4
  import { hasProtocol, joinURL } from "ufo";
4
5
  const nitroApp = useNitroApp();
6
+ // Use plain handler as winterjs Web API is incomplete
7
+ // TODO: Migrate to toWebHandler
5
8
  const _handler = toPlainHandler(nitroApp.h3App);
6
9
  async function _handleEvent(event) {
7
- try {
8
- const res = await _handler({
9
- path: event.request.url.pathname + (event.request.url.search ? `?${event.request.url.search}` : ""),
10
- method: event.request.getMethod() || "GET",
11
- body: event.request.body,
12
- headers: event.request.headers,
13
- context: {
14
- waitUntil: (promise) => event.waitUntil(promise),
15
- _platform: {
16
- winterjs: {
17
- event
18
- }
19
- }
20
- }
21
- });
22
- const body = typeof res.body === "string" ? res.body : await toBuffer(res.body);
23
- return new Response(body, {
24
- status: res.status,
25
- statusText: res.statusText,
26
- headers: res.headers
27
- });
28
- } catch (error) {
29
- const errString = error?.message + "\n" + error?.stack;
30
- console.error(errString);
31
- return new Response(errString, { status: 500 });
32
- }
10
+ try {
11
+ const res = await _handler({
12
+ path: event.request.url.pathname + (event.request.url.search ? `?${event.request.url.search}` : ""),
13
+ method: event.request.getMethod() || "GET",
14
+ body: event.request.body,
15
+ headers: event.request.headers,
16
+ context: {
17
+ waitUntil: (promise) => event.waitUntil(promise),
18
+ _platform: { winterjs: { event } }
19
+ }
20
+ });
21
+ const body = typeof res.body === "string" ? res.body : await toBuffer(res.body);
22
+ return new Response(body, {
23
+ status: res.status,
24
+ statusText: res.statusText,
25
+ headers: res.headers
26
+ });
27
+ } catch (error) {
28
+ const errString = error?.message + "\n" + error?.stack;
29
+ console.error(errString);
30
+ return new Response(errString, { status: 500 });
31
+ }
33
32
  }
34
33
  addEventListener("fetch", async (event) => {
35
- event.respondWith(await _handleEvent(event));
34
+ event.respondWith(await _handleEvent(event));
36
35
  });
36
+ // ------------------------------
37
+ // Polyfills for missing APIs
38
+ // ------------------------------
37
39
  function toBuffer(data) {
38
- return new Promise((resolve, reject) => {
39
- const chunks = [];
40
- data.pipeTo(
41
- new WritableStream({
42
- write(chunk) {
43
- chunks.push(chunk);
44
- },
45
- close() {
46
- resolve(Buffer.concat(chunks));
47
- },
48
- abort(reason) {
49
- reject(reason);
50
- }
51
- })
52
- ).catch(reject);
53
- });
40
+ return new Promise((resolve, reject) => {
41
+ const chunks = [];
42
+ data.pipeTo(new WritableStream({
43
+ write(chunk) {
44
+ chunks.push(chunk);
45
+ },
46
+ close() {
47
+ resolve(Buffer.concat(chunks));
48
+ },
49
+ abort(reason) {
50
+ reject(reason);
51
+ }
52
+ })).catch(reject);
53
+ });
54
54
  }
55
+ // Headers.entries
55
56
  if (!Headers.prototype.entries) {
56
- Headers.prototype.entries = function() {
57
- return [...this];
58
- };
57
+ // @ts-ignore
58
+ Headers.prototype.entries = function() {
59
+ return [...this];
60
+ };
59
61
  }
62
+ // URL.pathname
60
63
  if (!URL.prototype.pathname) {
61
- Object.defineProperty(URL.prototype, "pathname", {
62
- get() {
63
- return this.path || "/";
64
- }
65
- });
64
+ Object.defineProperty(URL.prototype, "pathname", { get() {
65
+ return this.path || "/";
66
+ } });
66
67
  }
68
+ // URL constructor (relative support)
67
69
  const _URL = globalThis.URL;
68
- globalThis.URL = class URL2 extends _URL {
69
- constructor(url, base) {
70
- if (!base || hasProtocol(url)) {
71
- super(url);
72
- return;
73
- }
74
- super(joinURL(base, url));
75
- }
70
+ globalThis.URL = class URL extends _URL {
71
+ constructor(url, base) {
72
+ if (!base || hasProtocol(url)) {
73
+ super(url);
74
+ return;
75
+ }
76
+ super(joinURL(base, url));
77
+ }
76
78
  };
79
+ // Response (avoid Promise body)
77
80
  const _Response = globalThis.Response;
78
- globalThis.Response = class Response2 extends _Response {
79
- _body;
80
- constructor(body, init) {
81
- super(body, init);
82
- this._body = body;
83
- }
84
- get body() {
85
- return this._body;
86
- }
81
+ globalThis.Response = class Response extends _Response {
82
+ _body;
83
+ constructor(body, init) {
84
+ super(body, init);
85
+ this._body = body;
86
+ }
87
+ get body() {
88
+ // TODO: Return ReadableStream (should be iterable)
89
+ return this._body;
90
+ }
87
91
  };
@@ -1,3 +1,3 @@
1
- import "#nitro-internal-pollyfills";
2
- declare const _default: any;
1
+ import "#nitro/virtual/polyfills";
2
+ declare const _default;
3
3
  export default _default;
@@ -1,4 +1,4 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
2
  import { toNodeHandler } from "srvx/node";
3
- import { useNitroApp } from "nitro/runtime";
3
+ import { useNitroApp } from "nitro/app";
4
4
  export default toNodeHandler(useNitroApp().fetch);
@@ -0,0 +1 @@
1
+ export { useNitroApp, useNitroHooks, serverFetch, getRouteRules, fetch } from "./internal/app.mjs";
@@ -0,0 +1 @@
1
+ export { useNitroApp, useNitroHooks, serverFetch, getRouteRules, fetch } from "./internal/app.mjs";
@@ -0,0 +1 @@
1
+ export { defineCachedFunction, defineCachedHandler } from "./internal/cache.mjs";
@@ -0,0 +1 @@
1
+ export { defineCachedFunction, defineCachedHandler } from "./internal/cache.mjs";
@@ -0,0 +1,3 @@
1
+ import type { NitroConfig } from "nitro/types";
2
+ export declare function defineConfig(config: Omit<NitroConfig, "rootDir">): Omit<NitroConfig, "rootDir">;
3
+ export { defineConfig as defineNitroConfig };
@@ -0,0 +1,4 @@
1
+ export function defineConfig(config) {
2
+ return config;
3
+ }
4
+ export { defineConfig as defineNitroConfig };
@@ -0,0 +1 @@
1
+ export { useRequest } from "./internal/context.mjs";
@@ -0,0 +1 @@
1
+ export { useRequest } from "./internal/context.mjs";
@@ -0,0 +1 @@
1
+ export { useDatabase } from "./internal/database.mjs";
@@ -0,0 +1 @@
1
+ export { useDatabase } from "./internal/database.mjs";
@@ -1,2 +1,16 @@
1
- import type { NitroApp } from "nitro/types";
1
+ import type { MatchedRouteRules, NitroApp, NitroRuntimeHooks } from "nitro/types";
2
+ import type { ServerRequest, ServerRequestContext } from "srvx";
3
+ import type { H3EventContext, Middleware, WebSocketHooks } from "h3";
4
+ import { HookableCore } from "hookable";
5
+ declare global {
6
+ var __nitro__: Partial<Record<"default" | "prerender" | (string & {}), NitroApp | undefined>> | undefined;
7
+ }
2
8
  export declare function useNitroApp(): NitroApp;
9
+ export declare function useNitroHooks(): HookableCore<NitroRuntimeHooks>;
10
+ export declare function serverFetch(resource: string | URL | Request, init?: RequestInit, context?: ServerRequestContext | H3EventContext): Promise<Response>;
11
+ export declare function resolveWebsocketHooks(req: ServerRequest): Promise<Partial<WebSocketHooks>>;
12
+ export declare function fetch(resource: string | URL | Request, init?: RequestInit, context?: ServerRequestContext | H3EventContext): Promise<Response>;
13
+ export declare function getRouteRules(method: string, pathname: string): {
14
+ routeRules?: MatchedRouteRules;
15
+ routeRuleMiddleware: Middleware[];
16
+ };