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,102 +1,116 @@
1
1
  import { stringifyQuery } from "ufo";
2
+ // Incoming (AWS => Web)
2
3
  export function awsRequest(event, context) {
3
- const method = awsEventMethod(event);
4
- const url = awsEventURL(event);
5
- const headers = awsEventHeaders(event);
6
- const body = awsEventBody(event);
7
- const req = new Request(url, { method, headers, body });
8
- req.runtime ??= { name: "aws-lambda" };
9
- req.runtime.aws ??= { event, context };
10
- return new Request(url, { method, headers, body });
4
+ const method = awsEventMethod(event);
5
+ const url = awsEventURL(event);
6
+ const headers = awsEventHeaders(event);
7
+ const body = awsEventBody(event);
8
+ const req = new Request(url, {
9
+ method,
10
+ headers,
11
+ body
12
+ });
13
+ // srvx compatibility
14
+ req.runtime ??= { name: "aws-lambda" };
15
+ // @ts-expect-error (add to srvx types)
16
+ req.runtime.aws ??= {
17
+ event,
18
+ context
19
+ };
20
+ return new Request(url, {
21
+ method,
22
+ headers,
23
+ body
24
+ });
11
25
  }
12
26
  function awsEventMethod(event) {
13
- return event.httpMethod || event.requestContext?.http?.method || "GET";
27
+ return event.httpMethod || event.requestContext?.http?.method || "GET";
14
28
  }
15
29
  function awsEventURL(event) {
16
- const hostname = event.headers.host || event.headers.Host || event.requestContext?.domainName || ".";
17
- const path = event.path || event.rawPath;
18
- const query = awsEventQuery(event);
19
- const protocol = (event.headers["X-Forwarded-Proto"] || event.headers["x-forwarded-proto"]) === "http" ? "http" : "https";
20
- return new URL(
21
- `${path}${query ? `?${query}` : ""}`,
22
- `${protocol}://${hostname}`
23
- );
30
+ const hostname = event.headers.host || event.headers.Host || event.requestContext?.domainName || ".";
31
+ const path = event.path || event.rawPath;
32
+ const query = awsEventQuery(event);
33
+ const protocol = (event.headers["X-Forwarded-Proto"] || event.headers["x-forwarded-proto"]) === "http" ? "http" : "https";
34
+ return new URL(`${path}${query ? `?${query}` : ""}`, `${protocol}://${hostname}`);
24
35
  }
25
36
  function awsEventQuery(event) {
26
- if (typeof event.rawQueryString === "string") {
27
- return event.rawQueryString;
28
- }
29
- const queryObj = {
30
- ...event.queryStringParameters,
31
- ...event.multiValueQueryStringParameters
32
- };
33
- return stringifyQuery(queryObj);
37
+ if (typeof event.rawQueryString === "string") {
38
+ return event.rawQueryString;
39
+ }
40
+ const queryObj = {
41
+ ...event.queryStringParameters,
42
+ ...event.multiValueQueryStringParameters
43
+ };
44
+ return stringifyQuery(queryObj);
34
45
  }
35
46
  function awsEventHeaders(event) {
36
- const headers = new Headers();
37
- for (const [key, value] of Object.entries(event.headers)) {
38
- if (value) {
39
- headers.set(key, value);
40
- }
41
- }
42
- if ("cookies" in event && event.cookies) {
43
- for (const cookie of event.cookies) {
44
- headers.append("cookie", cookie);
45
- }
46
- }
47
- return headers;
47
+ const headers = new Headers();
48
+ for (const [key, value] of Object.entries(event.headers)) {
49
+ if (value) {
50
+ headers.set(key, value);
51
+ }
52
+ }
53
+ if ("cookies" in event && event.cookies) {
54
+ for (const cookie of event.cookies) {
55
+ headers.append("cookie", cookie);
56
+ }
57
+ }
58
+ return headers;
48
59
  }
49
60
  function awsEventBody(event) {
50
- if (!event.body) {
51
- return void 0;
52
- }
53
- if (event.isBase64Encoded) {
54
- return Buffer.from(event.body || "", "base64");
55
- }
56
- return event.body;
61
+ if (!event.body) {
62
+ return undefined;
63
+ }
64
+ if (event.isBase64Encoded) {
65
+ return Buffer.from(event.body || "", "base64");
66
+ }
67
+ return event.body;
57
68
  }
69
+ // Outgoing (Web => AWS)
58
70
  export function awsResponseHeaders(response) {
59
- const headers = /* @__PURE__ */ Object.create(null);
60
- for (const [key, value] of response.headers) {
61
- if (value) {
62
- headers[key] = Array.isArray(value) ? value.join(",") : String(value);
63
- }
64
- }
65
- const cookies = response.headers.getSetCookie();
66
- return cookies.length > 0 ? {
67
- headers,
68
- cookies,
69
- // ApiGateway v2
70
- multiValueHeaders: { "set-cookie": cookies }
71
- // ApiGateway v1
72
- } : { headers };
71
+ const headers = Object.create(null);
72
+ for (const [key, value] of response.headers) {
73
+ if (value) {
74
+ headers[key] = Array.isArray(value) ? value.join(",") : String(value);
75
+ }
76
+ }
77
+ const cookies = response.headers.getSetCookie();
78
+ return cookies.length > 0 ? {
79
+ headers,
80
+ cookies,
81
+ multiValueHeaders: { "set-cookie": cookies }
82
+ } : { headers };
73
83
  }
84
+ // AWS Lambda proxy integrations requires base64 encoded buffers
85
+ // binaryMediaTypes should be */*
86
+ // see https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings.html
74
87
  export async function awsResponseBody(response) {
75
- if (!response.body) {
76
- return { body: "" };
77
- }
78
- const buffer = await toBuffer(response.body);
79
- const contentType = response.headers.get("content-type") || "";
80
- return isTextType(contentType) ? { body: buffer.toString("utf8") } : { body: buffer.toString("base64"), isBase64Encoded: true };
88
+ if (!response.body) {
89
+ return { body: "" };
90
+ }
91
+ const buffer = await toBuffer(response.body);
92
+ const contentType = response.headers.get("content-type") || "";
93
+ return isTextType(contentType) ? { body: buffer.toString("utf8") } : {
94
+ body: buffer.toString("base64"),
95
+ isBase64Encoded: true
96
+ };
81
97
  }
82
98
  function isTextType(contentType = "") {
83
- return /^text\/|\/(javascript|json|xml)|utf-?8/i.test(contentType);
99
+ return /^text\/|\/(javascript|json|xml)|utf-?8/i.test(contentType);
84
100
  }
85
101
  function toBuffer(data) {
86
- return new Promise((resolve, reject) => {
87
- const chunks = [];
88
- data.pipeTo(
89
- new WritableStream({
90
- write(chunk) {
91
- chunks.push(chunk);
92
- },
93
- close() {
94
- resolve(Buffer.concat(chunks));
95
- },
96
- abort(reason) {
97
- reject(reason);
98
- }
99
- })
100
- ).catch(reject);
101
- });
102
+ return new Promise((resolve, reject) => {
103
+ const chunks = [];
104
+ data.pipeTo(new WritableStream({
105
+ write(chunk) {
106
+ chunks.push(chunk);
107
+ },
108
+ close() {
109
+ resolve(Buffer.concat(chunks));
110
+ },
111
+ abort(reason) {
112
+ reject(reason);
113
+ }
114
+ })).catch(reject);
115
+ });
102
116
  }
@@ -1,3 +1,2 @@
1
- import "#nitro-internal-pollyfills";
2
- import type { APIGatewayProxyEventV2 } from "aws-lambda";
3
- export declare const handler: import("aws-lambda").StreamifyHandler<APIGatewayProxyEventV2, void>;
1
+ import "#nitro/virtual/polyfills";
2
+ export declare const handler: unknown;
@@ -1,33 +1,29 @@
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 { awsRequest, awsResponseHeaders } from "./_utils.mjs";
4
4
  const nitroApp = useNitroApp();
5
- export const handler = awslambda.streamifyResponse(
6
- async (event, responseStream, context) => {
7
- const request = awsRequest(event, context);
8
- const response = await nitroApp.fetch(request);
9
- response.headers.set("transfer-encoding", "chunked");
10
- const httpResponseMetadata = {
11
- statusCode: response.status,
12
- ...awsResponseHeaders(response)
13
- };
14
- if (response.body) {
15
- const writer = awslambda.HttpResponseStream.from(
16
- // @ts-expect-error TODO: IMPORTANT! It should be a Writable according to the aws-lambda types
17
- responseStream,
18
- httpResponseMetadata
19
- );
20
- const reader = response.body.getReader();
21
- await streamToNodeStream(reader, responseStream);
22
- writer.end();
23
- }
24
- }
25
- );
5
+ export const handler = awslambda.streamifyResponse(async (event, responseStream, context) => {
6
+ const request = awsRequest(event, context);
7
+ const response = await nitroApp.fetch(request);
8
+ response.headers.set("transfer-encoding", "chunked");
9
+ const httpResponseMetadata = {
10
+ statusCode: response.status,
11
+ ...awsResponseHeaders(response)
12
+ };
13
+ const body = response.body ?? new ReadableStream({ start(controller) {
14
+ controller.enqueue("");
15
+ controller.close();
16
+ } });
17
+ const writer = awslambda.HttpResponseStream.from(responseStream, httpResponseMetadata);
18
+ const reader = body.getReader();
19
+ await streamToNodeStream(reader, responseStream);
20
+ writer.end();
21
+ });
26
22
  async function streamToNodeStream(reader, writer) {
27
- let readResult = await reader.read();
28
- while (!readResult.done) {
29
- writer.write(readResult.value);
30
- readResult = await reader.read();
31
- }
32
- writer.end();
23
+ let readResult = await reader.read();
24
+ while (!readResult.done) {
25
+ writer.write(readResult.value);
26
+ readResult = await reader.read();
27
+ }
28
+ writer.end();
33
29
  }
@@ -1,3 +1,3 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
2
  import type { APIGatewayProxyEvent, APIGatewayProxyEventV2, APIGatewayProxyResult, APIGatewayProxyResultV2, Context } from "aws-lambda";
3
3
  export declare function handler(event: APIGatewayProxyEvent | APIGatewayProxyEventV2, context: Context): Promise<APIGatewayProxyResult | APIGatewayProxyResultV2>;
@@ -1,13 +1,13 @@
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 { awsRequest, awsResponseHeaders, awsResponseBody } from "./_utils.mjs";
4
4
  const nitroApp = useNitroApp();
5
5
  export async function handler(event, context) {
6
- const request = awsRequest(event, context);
7
- const response = await nitroApp.fetch(request);
8
- return {
9
- statusCode: response.status,
10
- ...awsResponseHeaders(response),
11
- ...await awsResponseBody(response)
12
- };
6
+ const request = awsRequest(event, context);
7
+ const response = await nitroApp.fetch(request);
8
+ return {
9
+ statusCode: response.status,
10
+ ...awsResponseHeaders(response),
11
+ ...await awsResponseBody(response)
12
+ };
13
13
  }
@@ -1,50 +1,50 @@
1
1
  import { parse } from "cookie-es";
2
2
  export function getAzureParsedCookiesFromHeaders(headers) {
3
- const setCookieHeader = headers.getSetCookie();
4
- if (setCookieHeader.length === 0) {
5
- return [];
6
- }
7
- const azureCookies = [];
8
- for (const setCookieStr of setCookieHeader) {
9
- const setCookie = Object.entries(parse(setCookieStr));
10
- if (setCookie.length === 0) {
11
- continue;
12
- }
13
- const [[key, value], ..._setCookieOptions] = setCookie;
14
- const setCookieOptions = Object.fromEntries(
15
- _setCookieOptions.map(([k, v]) => [k.toLowerCase(), v])
16
- );
17
- const cookieObject = {
18
- name: key,
19
- value,
20
- domain: setCookieOptions.domain,
21
- path: setCookieOptions.path,
22
- expires: parseNumberOrDate(setCookieOptions.expires),
23
- sameSite: setCookieOptions.samesite,
24
- maxAge: parseNumber(setCookieOptions["max-age"]),
25
- secure: setCookieStr.includes("Secure") ? true : void 0,
26
- httpOnly: setCookieStr.includes("HttpOnly") ? true : void 0
27
- };
28
- azureCookies.push(cookieObject);
29
- }
30
- return azureCookies;
3
+ const setCookieHeader = headers.getSetCookie();
4
+ if (setCookieHeader.length === 0) {
5
+ return [];
6
+ }
7
+ const azureCookies = [];
8
+ for (const setCookieStr of setCookieHeader) {
9
+ const setCookie = Object.entries(parse(setCookieStr));
10
+ if (setCookie.length === 0) {
11
+ continue;
12
+ }
13
+ const [[key, value], ..._setCookieOptions] = setCookie;
14
+ const setCookieOptions = Object.fromEntries(_setCookieOptions.map(([k, v]) => [k.toLowerCase(), v]));
15
+ const cookieObject = {
16
+ name: key,
17
+ value,
18
+ domain: setCookieOptions.domain,
19
+ path: setCookieOptions.path,
20
+ expires: parseNumberOrDate(setCookieOptions.expires),
21
+ sameSite: setCookieOptions.samesite,
22
+ maxAge: parseNumber(setCookieOptions["max-age"]),
23
+ secure: setCookieStr.includes("Secure") ? true : undefined,
24
+ httpOnly: setCookieStr.includes("HttpOnly") ? true : undefined
25
+ };
26
+ azureCookies.push(cookieObject);
27
+ }
28
+ return azureCookies;
31
29
  }
32
30
  function parseNumberOrDate(expires) {
33
- const expiresAsNumber = parseNumber(expires);
34
- if (expiresAsNumber !== void 0) {
35
- return expiresAsNumber;
36
- }
37
- const expiresAsDate = new Date(expires);
38
- if (!Number.isNaN(expiresAsDate.getTime())) {
39
- return expiresAsDate;
40
- }
31
+ const expiresAsNumber = parseNumber(expires);
32
+ if (expiresAsNumber !== undefined) {
33
+ return expiresAsNumber;
34
+ }
35
+ // Convert to Date if possible
36
+ const expiresAsDate = new Date(expires);
37
+ if (!Number.isNaN(expiresAsDate.getTime())) {
38
+ return expiresAsDate;
39
+ }
41
40
  }
42
41
  function parseNumber(maxAge) {
43
- if (!maxAge) {
44
- return void 0;
45
- }
46
- const maxAgeAsNumber = Number(maxAge);
47
- if (!Number.isNaN(maxAgeAsNumber)) {
48
- return maxAgeAsNumber;
49
- }
42
+ if (!maxAge) {
43
+ return undefined;
44
+ }
45
+ // Convert to number if possible
46
+ const maxAgeAsNumber = Number(maxAge);
47
+ if (!Number.isNaN(maxAgeAsNumber)) {
48
+ return maxAgeAsNumber;
49
+ }
50
50
  }
@@ -1,5 +1,5 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
2
  import type { HttpRequest, HttpResponse } from "@azure/functions";
3
3
  export declare function handle(context: {
4
- res: HttpResponse;
5
- }, req: HttpRequest): Promise<void>;
4
+ res: HttpResponse;
5
+ }, req: HttpRequest);
@@ -1,28 +1,30 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
2
  import { parseURL } from "ufo";
3
- import { useNitroApp } from "nitro/runtime";
3
+ import { useNitroApp } from "nitro/app";
4
4
  import { getAzureParsedCookiesFromHeaders } from "./_utils.mjs";
5
5
  const nitroApp = useNitroApp();
6
6
  export async function handle(context, req) {
7
- let url;
8
- if (req.headers["x-ms-original-url"]) {
9
- const parsedURL = parseURL(req.headers["x-ms-original-url"]);
10
- url = parsedURL.pathname + parsedURL.search;
11
- } else {
12
- url = "/api/" + (req.params.url || "");
13
- }
14
- const response = await nitroApp.fetch(url, {
15
- method: req.method || void 0,
16
- // https://github.com/Azure/azure-functions-nodejs-worker/issues/294
17
- // https://github.com/Azure/azure-functions-host/issues/293
18
- body: req.bufferBody ?? req.rawBody
19
- });
20
- context.res = {
21
- status: response.status,
22
- body: response.body,
23
- cookies: getAzureParsedCookiesFromHeaders(response.headers),
24
- headers: Object.fromEntries(
25
- [...response.headers.entries()].filter(([key]) => key !== "set-cookie")
26
- )
27
- };
7
+ let url;
8
+ if (req.headers["x-ms-original-url"]) {
9
+ // This URL has been proxied as there was no static file matching it.
10
+ const parsedURL = parseURL(req.headers["x-ms-original-url"]);
11
+ url = parsedURL.pathname + parsedURL.search;
12
+ } else {
13
+ // Because Azure SWA handles /api/* calls differently they
14
+ // never hit the proxy and we have to reconstitute the URL.
15
+ url = "/api/" + (req.params.url || "");
16
+ }
17
+ const request = new Request(url, {
18
+ method: req.method || undefined,
19
+ body: req.bufferBody ?? req.rawBody
20
+ });
21
+ const response = await nitroApp.fetch(request);
22
+ // (v3 - current) https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-node?tabs=typescript%2Cwindows%2Cazure-cli&pivots=nodejs-model-v3#http-response
23
+ // (v4) https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-node?tabs=typescript%2Cwindows%2Cazure-cli&pivots=nodejs-model-v4#http-response
24
+ context.res = {
25
+ status: response.status,
26
+ body: response.body,
27
+ cookies: getAzureParsedCookiesFromHeaders(response.headers),
28
+ headers: Object.fromEntries([...response.headers.entries()].filter(([key]) => key !== "set-cookie"))
29
+ };
28
30
  }
@@ -1 +1,3 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
+ declare const _default: {};
3
+ export default _default;
@@ -1,27 +1,39 @@
1
- import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
3
- import { startScheduleRunner } from "nitro/runtime/internal";
1
+ import "#nitro/virtual/polyfills";
2
+ import { serve } from "srvx/bun";
4
3
  import wsAdapter from "crossws/adapters/bun";
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;
10
+ const cert = process.env.NITRO_SSL_CERT;
11
+ const key = process.env.NITRO_SSL_KEY;
12
+ // const socketPath = process.env.NITRO_UNIX_SOCKET; // TODO
5
13
  const nitroApp = useNitroApp();
6
- const ws = import.meta._websocket ? (
7
- // @ts-expect-error
8
- wsAdapter(nitroApp.h3App.websocket)
9
- ) : void 0;
10
- const server = Bun.serve({
11
- port: process.env.NITRO_PORT || process.env.PORT || 3e3,
12
- hostname: process.env.NITRO_HOST || process.env.HOST,
13
- websocket: import.meta._websocket ? ws.websocket : void 0,
14
- async fetch(bunReq, server2) {
15
- const req = bunReq;
16
- req.runtime ??= { name: "bun" };
17
- req.runtime.bun ??= { server: server2 };
18
- if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
19
- return ws.handleUpgrade(req, server2);
20
- }
21
- return nitroApp.fetch(req);
22
- }
14
+ let _fetch = nitroApp.fetch;
15
+ const ws = import.meta._websocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
16
+ if (import.meta._websocket) {
17
+ _fetch = (req) => {
18
+ if (req.headers.get("upgrade") === "websocket") {
19
+ return ws.handleUpgrade(req, req.runtime.bun.server);
20
+ }
21
+ return nitroApp.fetch(req);
22
+ };
23
+ }
24
+ serve({
25
+ port,
26
+ hostname: host,
27
+ tls: cert && key ? {
28
+ cert,
29
+ key
30
+ } : undefined,
31
+ fetch: _fetch,
32
+ bun: { websocket: import.meta._websocket ? ws?.websocket : undefined }
23
33
  });
24
- console.log(`Listening on ${server.url}...`);
34
+ trapUnhandledErrors();
35
+ // Scheduled tasks
25
36
  if (import.meta._tasks) {
26
- startScheduleRunner();
37
+ startScheduleRunner();
27
38
  }
39
+ export default {};
@@ -1,13 +1,16 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
2
  import type * as CF from "@cloudflare/workers-types";
3
- import type { ExportedHandler } from "@cloudflare/workers-types";
3
+ import type { ServerRuntimeContext } from "srvx";
4
4
  type MaybePromise<T> = T | Promise<T>;
5
5
  export declare function createHandler<Env>(hooks: {
6
- fetch: (...params: [
7
- ...Parameters<NonNullable<ExportedHandler<Env>["fetch"]>>,
8
- url: URL,
9
- cfContextExtras: any
10
- ]) => MaybePromise<Response | CF.Response | undefined>;
11
- }): ExportedHandler<Env>;
12
- export declare function fetchHandler(cfReq: Request | CF.Request, env: unknown, context: CF.ExecutionContext | DurableObjectState, url: URL | undefined, nitroApp: any, ctxExt: any): Promise<Response>;
6
+ fetch: (...params: [...Parameters<NonNullable<ExportedHandler<Env>["fetch"]>>, url: URL, cfContextExtras: any]) => MaybePromise<Response | CF.Response | undefined>;
7
+ }): {
8
+ fetch(request, env, context);
9
+ scheduled(controller, env, context);
10
+ email(message, env, context);
11
+ queue(batch, env, context);
12
+ tail(traces, env, context);
13
+ trace(traces, env, context);
14
+ };
15
+ export declare function augmentReq(cfReq: Request | CF.Request, ctx: NonNullable<ServerRuntimeContext["cloudflare"]>);
13
16
  export {};