nitro 3.0.0 → 3.0.1-alpha.1

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 (293) hide show
  1. package/dist/_build/common.mjs +68 -0
  2. package/dist/_build/common2.mjs +772 -0
  3. package/dist/_build/rolldown.mjs +206 -0
  4. package/dist/_build/rollup.mjs +289 -0
  5. package/dist/_build/vite.build.mjs +56 -0
  6. package/dist/_build/vite.plugin.mjs +768 -0
  7. package/dist/_chunks/ANM1K1bE.mjs +304 -0
  8. package/dist/_chunks/B-D1JOIz.mjs +1355 -0
  9. package/dist/_chunks/BX9-zVkM.mjs +59 -0
  10. package/dist/_chunks/Bqks5huO.mjs +31 -0
  11. package/dist/_chunks/C7CbzoI1.mjs +39 -0
  12. package/dist/_dev.d.mts +12 -0
  13. package/dist/_dev.mjs +705 -0
  14. package/dist/_libs/acorn.mjs +5034 -0
  15. package/dist/_libs/c12.mjs +2858 -0
  16. package/dist/_libs/chokidar.mjs +1561 -0
  17. package/dist/_libs/citty.mjs +333 -0
  18. package/dist/_libs/commondir.mjs +22 -0
  19. package/dist/_libs/compatx.mjs +46 -0
  20. package/dist/_libs/confbox.mjs +2920 -0
  21. package/dist/_libs/deepmerge.mjs +86 -0
  22. package/dist/_libs/dot-prop.mjs +138 -0
  23. package/dist/_libs/duplexer.mjs +71 -0
  24. package/dist/_libs/escape-string-regexp.mjs +8 -0
  25. package/dist/_libs/estree-walker.mjs +330 -0
  26. package/dist/_libs/etag.mjs +80 -0
  27. package/dist/_libs/fdir.mjs +514 -0
  28. package/dist/_libs/function-bind.mjs +63 -0
  29. package/dist/_libs/gen-mapping.mjs +612 -0
  30. package/dist/_libs/giget.mjs +19289 -0
  31. package/dist/_libs/gzip-size.mjs +21 -0
  32. package/dist/_libs/hasown.mjs +14 -0
  33. package/dist/_libs/httpxy.mjs +410 -0
  34. package/dist/_libs/is-core-module.mjs +220 -0
  35. package/dist/_libs/is-module.mjs +13 -0
  36. package/dist/_libs/is-reference.mjs +32 -0
  37. package/dist/_libs/js-tokens.mjs +382 -0
  38. package/dist/_libs/klona.mjs +38 -0
  39. package/dist/_libs/knitwork.mjs +124 -0
  40. package/dist/_libs/local-pkg.mjs +1686 -0
  41. package/dist/_libs/magic-string.mjs +939 -0
  42. package/dist/_libs/mime.mjs +1391 -0
  43. package/dist/_libs/node-fetch-native.mjs +173 -0
  44. package/dist/_libs/path-parse.mjs +47 -0
  45. package/dist/_libs/pathe.mjs +41 -0
  46. package/dist/_libs/picomatch.mjs +1673 -0
  47. package/dist/_libs/plugin-alias.mjs +64 -0
  48. package/dist/_libs/plugin-commonjs.mjs +1491 -0
  49. package/dist/_libs/plugin-inject.mjs +135 -0
  50. package/dist/_libs/plugin-json.mjs +36 -0
  51. package/dist/_libs/plugin-node-resolve.mjs +1553 -0
  52. package/dist/_libs/plugin-replace.mjs +104 -0
  53. package/dist/_libs/pretty-bytes.mjs +116 -0
  54. package/dist/_libs/remapping.mjs +117 -0
  55. package/dist/_libs/rou3.mjs +319 -0
  56. package/dist/_libs/std-env.mjs +158 -0
  57. package/dist/_libs/strip-literal.mjs +51 -0
  58. package/dist/_libs/tinyglobby.mjs +292 -0
  59. package/dist/_libs/tsconfck.mjs +832 -0
  60. package/dist/_libs/ultrahtml.mjs +138 -0
  61. package/dist/_libs/unimport.mjs +3520 -0
  62. package/dist/_libs/untyped.mjs +271 -0
  63. package/dist/_libs/unwasm.mjs +5836 -0
  64. package/dist/_libs/vite-plugin-fullstack.mjs +561 -0
  65. package/dist/_presets.mjs +1752 -0
  66. package/dist/builder.d.mts +63 -0
  67. package/dist/builder.mjs +33 -0
  68. package/dist/cli/_chunks/build.mjs +48 -0
  69. package/dist/cli/_chunks/common.mjs +15 -0
  70. package/dist/cli/_chunks/detect-acorn.mjs +12 -0
  71. package/dist/cli/_chunks/dev.mjs +68 -0
  72. package/dist/cli/_chunks/dist.mjs +3 -0
  73. package/dist/cli/_chunks/dist2.mjs +3 -0
  74. package/dist/cli/_chunks/dist3.mjs +3 -0
  75. package/dist/cli/_chunks/dist4.mjs +4 -0
  76. package/dist/cli/_chunks/dist5.mjs +4 -0
  77. package/dist/cli/_chunks/esm.mjs +3 -0
  78. package/dist/cli/_chunks/json5.mjs +4 -0
  79. package/dist/cli/_chunks/jsonc.mjs +4 -0
  80. package/dist/cli/_chunks/list.mjs +27 -0
  81. package/dist/cli/_chunks/multipart-parser.mjs +6 -0
  82. package/dist/cli/_chunks/prepare.mjs +19 -0
  83. package/dist/cli/_chunks/run.mjs +55 -0
  84. package/dist/cli/_chunks/task.mjs +16 -0
  85. package/dist/cli/_chunks/toml.mjs +4 -0
  86. package/dist/cli/_chunks/yaml.mjs +4 -0
  87. package/dist/cli/index.d.mts +1 -1
  88. package/dist/cli/index.mjs +20 -476
  89. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
  90. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  91. package/dist/node_modules/@sindresorhus/is/distribution/index.js +1 -1
  92. package/dist/node_modules/@sindresorhus/is/package.json +1 -1
  93. package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
  94. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  95. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  96. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  97. package/dist/node_modules/cookie-es/package.json +37 -0
  98. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  99. package/dist/node_modules/hookable/package.json +29 -26
  100. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  101. package/dist/node_modules/rendu/package.json +47 -0
  102. package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-F4I6KX4R.js} +2 -1
  103. package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-YYEJ3AGB.js} +4 -1
  104. package/dist/node_modules/youch/build/index.js +16 -8
  105. package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
  106. package/dist/node_modules/youch/build/public/header/script.js +0 -2
  107. package/dist/node_modules/youch/build/public/layout/script.js +0 -8
  108. package/dist/node_modules/youch/build/public/layout/style.css +4 -0
  109. package/dist/node_modules/youch/package.json +16 -17
  110. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  111. package/dist/presets/_nitro/runtime/nitro-dev.mjs +48 -42
  112. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  113. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +10 -14
  114. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  115. package/dist/presets/_nitro/runtime/service-worker.mjs +15 -12
  116. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  117. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +7 -6
  118. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  119. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  120. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  121. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +26 -28
  122. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +8 -8
  123. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  124. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  125. package/dist/presets/azure/runtime/azure-swa.mjs +24 -22
  126. package/dist/presets/bun/runtime/bun.d.mts +2 -0
  127. package/dist/presets/bun/runtime/bun.mjs +34 -21
  128. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  129. package/dist/presets/cloudflare/runtime/_module-handler.mjs +80 -88
  130. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  131. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +60 -63
  132. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  133. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +14 -16
  134. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  135. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +40 -42
  136. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  137. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  138. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  139. package/dist/presets/deno/runtime/deno-deploy.d.mts +4 -0
  140. package/dist/presets/deno/runtime/deno-deploy.mjs +15 -12
  141. package/dist/presets/deno/runtime/deno-server.d.mts +0 -3
  142. package/dist/presets/deno/runtime/deno-server.mjs +32 -52
  143. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  144. package/dist/presets/netlify/runtime/netlify-edge.mjs +15 -12
  145. package/dist/presets/netlify/runtime/netlify.mjs +12 -18
  146. package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
  147. package/dist/presets/node/runtime/node-cluster.mjs +50 -54
  148. package/dist/presets/node/runtime/node-middleware.d.mts +2 -3
  149. package/dist/presets/node/runtime/node-middleware.mjs +9 -8
  150. package/dist/presets/node/runtime/node-server.mjs +37 -34
  151. package/dist/presets/standard/runtime/server.d.mts +1 -3
  152. package/dist/presets/standard/runtime/server.mjs +2 -4
  153. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  154. package/dist/presets/stormkit/runtime/stormkit.mjs +21 -21
  155. package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
  156. package/dist/presets/vercel/runtime/vercel.node.mjs +15 -0
  157. package/dist/presets/vercel/runtime/{vercel.d.mts → vercel.web.d.mts} +3 -3
  158. package/dist/presets/vercel/runtime/vercel.web.mjs +20 -0
  159. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  160. package/dist/presets/winterjs/runtime/winterjs.mjs +73 -69
  161. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  162. package/dist/presets/zeabur/runtime/zeabur.mjs +1 -1
  163. package/dist/runtime/app.d.mts +1 -0
  164. package/dist/runtime/app.mjs +1 -0
  165. package/dist/runtime/cache.d.mts +1 -0
  166. package/dist/runtime/cache.mjs +1 -0
  167. package/dist/runtime/config.d.mts +3 -0
  168. package/dist/runtime/config.mjs +4 -0
  169. package/dist/runtime/context.d.mts +1 -0
  170. package/dist/runtime/context.mjs +1 -0
  171. package/dist/runtime/database.d.mts +1 -0
  172. package/dist/runtime/database.mjs +1 -0
  173. package/dist/runtime/internal/app.d.mts +11 -1
  174. package/dist/runtime/internal/app.mjs +188 -140
  175. package/dist/runtime/internal/cache.d.mts +9 -5
  176. package/dist/runtime/internal/cache.mjs +248 -219
  177. package/dist/runtime/internal/context.d.mts +9 -9
  178. package/dist/runtime/internal/context.mjs +17 -10
  179. package/dist/runtime/internal/database.mjs +8 -10
  180. package/dist/runtime/internal/error/dev.d.mts +5 -4
  181. package/dist/runtime/internal/error/dev.mjs +106 -105
  182. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  183. package/dist/runtime/internal/error/hooks.mjs +9 -0
  184. package/dist/runtime/internal/error/prod.d.mts +5 -4
  185. package/dist/runtime/internal/error/prod.mjs +51 -59
  186. package/dist/runtime/internal/error/utils.d.mts +4 -4
  187. package/dist/runtime/internal/error/utils.mjs +1 -1
  188. package/dist/runtime/internal/meta.d.mts +1 -1
  189. package/dist/runtime/internal/meta.mjs +1 -1
  190. package/dist/runtime/internal/plugin.d.mts +2 -2
  191. package/dist/runtime/internal/plugin.mjs +1 -1
  192. package/dist/runtime/internal/route-rules.d.mts +8 -8
  193. package/dist/runtime/internal/route-rules.mjs +54 -52
  194. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  195. package/dist/runtime/internal/routes/dev-tasks.mjs +16 -18
  196. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  197. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  198. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  199. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  200. package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
  201. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  202. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  203. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  204. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  205. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  206. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  207. package/dist/runtime/internal/runtime-config.mjs +40 -35
  208. package/dist/runtime/internal/static.mjs +63 -74
  209. package/dist/runtime/internal/storage.mjs +2 -2
  210. package/dist/runtime/internal/task.d.mts +6 -6
  211. package/dist/runtime/internal/task.mjs +56 -60
  212. package/dist/runtime/internal/vite/dev-entry.mjs +11 -1
  213. package/dist/runtime/internal/vite/dev-worker.mjs +9 -57
  214. package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
  215. package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +1 -1
  216. package/dist/runtime/meta.mjs +26 -0
  217. package/dist/runtime/nitro.d.mts +12 -0
  218. package/dist/runtime/nitro.mjs +32 -0
  219. package/dist/runtime/runtime-config.d.mts +1 -0
  220. package/dist/runtime/runtime-config.mjs +1 -0
  221. package/dist/runtime/storage.d.mts +1 -0
  222. package/dist/runtime/storage.mjs +1 -0
  223. package/dist/runtime/task.d.mts +1 -0
  224. package/dist/runtime/task.mjs +1 -0
  225. package/dist/runtime/vite-runtime.d.mts +8 -0
  226. package/dist/runtime/vite-runtime.mjs +9 -0
  227. package/dist/types/index.d.mts +2625 -2297
  228. package/dist/types/index.mjs +1 -1
  229. package/dist/vite.d.mts +49 -51
  230. package/dist/vite.mjs +44 -68
  231. package/lib/tsconfig.json +27 -0
  232. package/package.json +86 -76
  233. package/dist/_chunks/app.mjs +0 -19797
  234. package/dist/_chunks/build.mjs +0 -84
  235. package/dist/_chunks/build2.mjs +0 -318
  236. package/dist/_chunks/build3.mjs +0 -6452
  237. package/dist/_chunks/detect-acorn.mjs +0 -503
  238. package/dist/_chunks/index.mjs +0 -22242
  239. package/dist/_chunks/index2.mjs +0 -297
  240. package/dist/_chunks/index3.mjs +0 -1058
  241. package/dist/_chunks/index4.mjs +0 -1206
  242. package/dist/_chunks/info.mjs +0 -11157
  243. package/dist/_chunks/json5.mjs +0 -68
  244. package/dist/_chunks/jsonc.mjs +0 -51
  245. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  246. package/dist/_chunks/plugin.mjs +0 -960
  247. package/dist/_chunks/server.mjs +0 -254
  248. package/dist/_chunks/snapshot.mjs +0 -284
  249. package/dist/_chunks/toml.mjs +0 -259
  250. package/dist/_chunks/yaml.mjs +0 -86
  251. package/dist/cli/build.mjs +0 -54
  252. package/dist/cli/common.mjs +0 -13
  253. package/dist/cli/dev.mjs +0 -95
  254. package/dist/cli/index2.mjs +0 -17
  255. package/dist/cli/list.mjs +0 -34
  256. package/dist/cli/prepare.mjs +0 -24
  257. package/dist/cli/run.mjs +0 -60
  258. package/dist/index.d.mts +0 -52
  259. package/dist/index.mjs +0 -55
  260. package/dist/node_modules/cookie/dist/index.js +0 -239
  261. package/dist/node_modules/cookie/package.json +0 -42
  262. package/dist/node_modules/klona/dist/index.mjs +0 -81
  263. package/dist/node_modules/klona/full/index.mjs +0 -53
  264. package/dist/node_modules/klona/package.json +0 -74
  265. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  266. package/dist/node_modules/std-env/package.json +0 -46
  267. package/dist/presets/vercel/runtime/vercel.mjs +0 -17
  268. package/dist/presets.mjs +0 -2460
  269. package/dist/runtime/index.d.mts +0 -11
  270. package/dist/runtime/index.mjs +0 -17
  271. package/dist/runtime/internal/debug.d.mts +0 -2
  272. package/dist/runtime/internal/debug.mjs +0 -5
  273. package/dist/runtime/internal/empty.d.mts +0 -0
  274. package/dist/runtime/internal/index.d.mts +0 -3
  275. package/dist/runtime/internal/index.mjs +0 -3
  276. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
  277. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
  278. package/dist/runtime/internal/renderer.d.mts +0 -3
  279. package/dist/runtime/internal/renderer.mjs +0 -36
  280. package/dist/runtime/internal/shutdown.d.mts +0 -9
  281. package/dist/runtime/internal/shutdown.mjs +0 -34
  282. package/dist/runtime/internal/utils.d.mts +0 -1
  283. package/dist/runtime/internal/utils.mjs +0 -15
  284. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  285. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  286. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  287. package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
  288. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  289. package/lib/config.d.mts +0 -9
  290. package/lib/config.mjs +0 -5
  291. package/lib/meta.d.mts +0 -5
  292. package/lib/meta.mjs +0 -21
  293. package/lib/runtime-meta.mjs +0 -38
@@ -1,14 +1,15 @@
1
1
  import "#nitro-internal-pollyfills";
2
2
  import { toNodeHandler } from "srvx/node";
3
- import { useNitroApp } from "nitro/runtime";
4
- import {
5
- startScheduleRunner,
6
- trapUnhandledNodeErrors
7
- } from "nitro/runtime/internal";
3
+ import wsAdapter from "crossws/adapters/node";
4
+ import { useNitroApp } from "nitro/app";
5
+ import { startScheduleRunner } from "nitro/~internal/runtime/task";
6
+ import { resolveWebsocketHooks } from "nitro/~internal/runtime/app";
7
+ import { hasWebSocket } from "#nitro-internal-virtual/feature-flags";
8
8
  const nitroApp = useNitroApp();
9
9
  export const middleware = toNodeHandler(nitroApp.fetch);
10
- export const websocket = import.meta._websocket ? void 0 : void 0;
11
- trapUnhandledNodeErrors();
10
+ const ws = hasWebSocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
11
+ export const handleUpgrade = ws?.handleUpgrade;
12
+ // Scheduled tasks
12
13
  if (import.meta._tasks) {
13
- startScheduleRunner();
14
+ startScheduleRunner();
14
15
  }
@@ -1,44 +1,47 @@
1
1
  import "#nitro-internal-pollyfills";
2
- import { Server as HttpServer } from "node:http";
3
- import { Server as HttpsServer } from "node:https";
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/~internal/runtime/task";
6
+ import { trapUnhandledErrors } from "nitro/~internal/runtime/error/hooks";
7
+ import { resolveWebsocketHooks } from "nitro/~internal/runtime/app";
8
+ import { hasWebSocket } from "#nitro-internal-virtual/feature-flags";
9
+ const port = Number.parseInt(process.env.NITRO_PORT || process.env.PORT || "") || 3e3;
10
+ const host = process.env.NITRO_HOST || process.env.HOST;
13
11
  const cert = process.env.NITRO_SSL_CERT;
14
12
  const key = process.env.NITRO_SSL_KEY;
13
+ // const socketPath = process.env.NITRO_UNIX_SOCKET; // TODO
15
14
  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}`);
15
+ const server = serve({
16
+ port,
17
+ hostname: host,
18
+ tls: cert && key ? {
19
+ cert,
20
+ key
21
+ } : undefined,
22
+ fetch: nitroApp.fetch
34
23
  });
35
- trapUnhandledNodeErrors();
36
- setupGracefulShutdown(listener, nitroApp);
37
- if (import.meta._websocket) {
38
- const { handleUpgrade } = wsAdapter(nitroApp.h3App.websocket);
39
- server.on("upgrade", handleUpgrade);
24
+ if (hasWebSocket) {
25
+ const { handleUpgrade } = wsAdapter({ resolve: resolveWebsocketHooks });
26
+ server.node.server.on("upgrade", (req, socket, head) => {
27
+ handleUpgrade(
28
+ req,
29
+ socket,
30
+ head,
31
+ // @ts-expect-error (upgrade is not typed)
32
+ new NodeRequest({
33
+ req,
34
+ upgrade: {
35
+ socket,
36
+ head
37
+ }
38
+ })
39
+ );
40
+ });
40
41
  }
42
+ trapUnhandledErrors();
43
+ // Scheduled tasks
41
44
  if (import.meta._tasks) {
42
- startScheduleRunner();
45
+ startScheduleRunner();
43
46
  }
44
47
  export default {};
@@ -1,5 +1,3 @@
1
1
  import "#nitro-internal-pollyfills";
2
- declare const _default: {
3
- fetch: any;
4
- };
2
+ declare const _default: {};
5
3
  export default _default;
@@ -1,6 +1,4 @@
1
1
  import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
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
1
  import "#nitro-internal-pollyfills";
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
1
  import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
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,3 @@
1
+ import "#nitro-internal-pollyfills";
2
+ import type { NodeServerRequest, NodeServerResponse } from "srvx";
3
+ export default function nodeHandler(req: NodeServerRequest, res: NodeServerResponse);
@@ -0,0 +1,15 @@
1
+ import "#nitro-internal-pollyfills";
2
+ import { toNodeHandler } from "srvx/node";
3
+ import { useNitroApp } from "nitro/app";
4
+ const nitroApp = useNitroApp();
5
+ const handler = toNodeHandler(nitroApp.fetch);
6
+ export default function nodeHandler(req, res) {
7
+ const query = req.headers["x-now-route-matches"];
8
+ if (query) {
9
+ const url = new URLSearchParams(query).get("url");
10
+ if (url) {
11
+ req.url = decodeURIComponent(url);
12
+ }
13
+ }
14
+ return handler(req, res);
15
+ }
@@ -1,8 +1,8 @@
1
1
  import "#nitro-internal-pollyfills";
2
2
  import type { ServerRequest } from "srvx";
3
3
  declare const _default: {
4
- fetch(req: ServerRequest, context: {
5
- waitUntil: (promise: Promise<any>) => void;
6
- }): any;
4
+ fetch(req: ServerRequest, context: {
5
+ waitUntil: (promise: Promise<any>) => void;
6
+ });
7
7
  };
8
8
  export default _default;
@@ -0,0 +1,20 @@
1
+ import "#nitro-internal-pollyfills";
2
+ import { useNitroApp } from "nitro/app";
3
+ const nitroApp = useNitroApp();
4
+ export default { fetch(req, context) {
5
+ // Check for ISR request
6
+ const query = req.headers.get("x-now-route-matches");
7
+ if (query) {
8
+ const urlParam = new URLSearchParams(query).get("url");
9
+ if (urlParam) {
10
+ const url = new URL(decodeURIComponent(urlParam), req.url).href;
11
+ req = new Request(url, req);
12
+ }
13
+ }
14
+ // srvx compatibility
15
+ req.runtime ??= { name: "vercel" };
16
+ // @ts-expect-error (add to srvx types)
17
+ req.runtime.vercel = { context };
18
+ req.waitUntil = context?.waitUntil;
19
+ return nitroApp.fetch(req);
20
+ } };
@@ -1 +1,3 @@
1
+ // @ts-nocheck TODO: Remove after removing polyfills
1
2
  import "#nitro-internal-pollyfills";
3
+ export {};
@@ -1,87 +1,91 @@
1
+ // @ts-nocheck TODO: Remove after removing polyfills
1
2
  import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
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
1
  import "#nitro-internal-pollyfills";
2
- declare const _default: any;
2
+ declare const _default;
3
3
  export default _default;
@@ -1,4 +1,4 @@
1
1
  import "#nitro-internal-pollyfills";
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, fetch } from "./internal/app.mjs";
@@ -0,0 +1 @@
1
+ export { useNitroApp, useNitroHooks, serverFetch, 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,12 @@
1
- import type { NitroApp } from "nitro/types";
1
+ import type { NitroApp, NitroRuntimeHooks } from "nitro/types";
2
+ import type { ServerRequest, ServerRequestContext } from "srvx";
3
+ import type { H3EventContext, WebSocketHooks } from "h3";
4
+ import { HookableCore } from "hookable";
5
+ declare global {
6
+ var __nitro__: NitroApp | 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>;