nitro-nightly 4.0.0-20251010-091516-7cafddba → 4.0.0-20251030-121649-98b56dfe

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 (252) hide show
  1. package/dist/_build/common.mjs +763 -0
  2. package/dist/_build/rolldown.mjs +216 -0
  3. package/dist/_build/rollup.mjs +359 -0
  4. package/dist/_build/vite.build.mjs +67 -0
  5. package/dist/_build/vite.plugin.mjs +747 -0
  6. package/dist/_chunks/B-7HiF0V.mjs +1303 -0
  7. package/dist/_chunks/B3asVbT4.mjs +151 -0
  8. package/dist/_chunks/B5ooyfLk.mjs +372 -0
  9. package/dist/_chunks/DXMHy5ca.mjs +43 -0
  10. package/dist/_dev.d.mts +12 -0
  11. package/dist/_dev.mjs +675 -0
  12. package/dist/_libs/acorn.mjs +5034 -0
  13. package/dist/_libs/c12.mjs +2798 -0
  14. package/dist/_libs/chokidar.mjs +1560 -0
  15. package/dist/_libs/citty.mjs +333 -0
  16. package/dist/_libs/commondir.mjs +22 -0
  17. package/dist/_libs/compatx.mjs +46 -0
  18. package/dist/_libs/confbox.mjs +2920 -0
  19. package/dist/_libs/debug.mjs +848 -0
  20. package/dist/_libs/deepmerge.mjs +86 -0
  21. package/dist/_libs/depd.mjs +314 -0
  22. package/dist/_libs/dot-prop.mjs +138 -0
  23. package/dist/_libs/duplexer.mjs +71 -0
  24. package/dist/_libs/ee-first.mjs +68 -0
  25. package/dist/_libs/encodeurl.mjs +49 -0
  26. package/dist/_libs/escape-html.mjs +58 -0
  27. package/dist/_libs/escape-string-regexp.mjs +8 -0
  28. package/dist/_libs/estree-walker.mjs +330 -0
  29. package/dist/_libs/etag.mjs +75 -0
  30. package/dist/_libs/fdir.mjs +514 -0
  31. package/dist/_libs/fresh.mjs +85 -0
  32. package/dist/_libs/function-bind.mjs +63 -0
  33. package/dist/_libs/gen-mapping.mjs +612 -0
  34. package/dist/_libs/giget.mjs +19076 -0
  35. package/dist/_libs/gzip-size.mjs +21 -0
  36. package/dist/_libs/hasown.mjs +14 -0
  37. package/dist/_libs/http-errors.mjs +436 -0
  38. package/dist/_libs/httpxy.mjs +410 -0
  39. package/dist/_libs/is-core-module.mjs +220 -0
  40. package/dist/_libs/is-module.mjs +13 -0
  41. package/dist/_libs/is-reference.mjs +32 -0
  42. package/dist/_libs/js-tokens.mjs +382 -0
  43. package/dist/_libs/klona.mjs +90 -0
  44. package/dist/_libs/knitwork.mjs +124 -0
  45. package/dist/_libs/local-pkg.mjs +1686 -0
  46. package/dist/_libs/magic-string.mjs +939 -0
  47. package/dist/_libs/mime-db.mjs +7642 -0
  48. package/dist/_libs/mime-types.mjs +162 -0
  49. package/dist/_libs/mime.mjs +1391 -0
  50. package/dist/_libs/node-fetch-native.mjs +173 -0
  51. package/dist/_libs/on-finished.mjs +170 -0
  52. package/dist/_libs/parseurl.mjs +103 -0
  53. package/dist/_libs/path-parse.mjs +47 -0
  54. package/dist/_libs/pathe.mjs +41 -0
  55. package/dist/_libs/picomatch.mjs +1673 -0
  56. package/dist/_libs/plugin-alias.mjs +64 -0
  57. package/dist/_libs/plugin-commonjs.mjs +1489 -0
  58. package/dist/_libs/plugin-inject.mjs +135 -0
  59. package/dist/_libs/plugin-json.mjs +36 -0
  60. package/dist/_libs/plugin-node-resolve.mjs +1553 -0
  61. package/dist/_libs/plugin-replace.mjs +104 -0
  62. package/dist/_libs/pretty-bytes.mjs +116 -0
  63. package/dist/_libs/range-parser.mjs +102 -0
  64. package/dist/_libs/remapping.mjs +117 -0
  65. package/dist/_libs/rou3.mjs +311 -0
  66. package/dist/_libs/send.mjs +857 -0
  67. package/dist/_libs/serve-static.mjs +124 -0
  68. package/dist/_libs/std-env.mjs +158 -0
  69. package/dist/_libs/strip-literal.mjs +51 -0
  70. package/dist/_libs/tinyglobby.mjs +292 -0
  71. package/dist/_libs/ultrahtml.mjs +138 -0
  72. package/dist/_libs/unimport.mjs +3520 -0
  73. package/dist/_libs/untyped.mjs +271 -0
  74. package/dist/_libs/unwasm.mjs +5825 -0
  75. package/dist/_libs/vite-plugin-fullstack.mjs +561 -0
  76. package/dist/_presets.mjs +1723 -0
  77. package/dist/builder.d.mts +54 -0
  78. package/dist/builder.mjs +45 -0
  79. package/dist/cli/_chunks/build.mjs +43 -0
  80. package/dist/cli/_chunks/common.mjs +15 -0
  81. package/dist/cli/_chunks/detect-acorn.mjs +12 -0
  82. package/dist/cli/_chunks/dev.mjs +79 -0
  83. package/dist/cli/_chunks/dist.mjs +3 -0
  84. package/dist/cli/_chunks/dist2.mjs +4 -0
  85. package/dist/cli/_chunks/esm.mjs +3 -0
  86. package/dist/cli/_chunks/json5.mjs +4 -0
  87. package/dist/cli/_chunks/jsonc.mjs +4 -0
  88. package/dist/cli/_chunks/list.mjs +27 -0
  89. package/dist/cli/_chunks/multipart-parser.mjs +6 -0
  90. package/dist/cli/_chunks/prepare.mjs +19 -0
  91. package/dist/cli/_chunks/run.mjs +55 -0
  92. package/dist/cli/_chunks/task.mjs +16 -0
  93. package/dist/cli/_chunks/toml.mjs +4 -0
  94. package/dist/cli/_chunks/yaml.mjs +4 -0
  95. package/dist/cli/index.d.mts +1 -1
  96. package/dist/cli/index.mjs +20 -476
  97. package/dist/node_modules/@speed-highlight/core/dist/index.js +1 -1
  98. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +1 -1
  99. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  100. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  101. package/dist/node_modules/cookie-es/package.json +37 -0
  102. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  103. package/dist/node_modules/hookable/package.json +29 -26
  104. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  105. package/dist/node_modules/rendu/package.json +47 -0
  106. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  107. package/dist/presets/_nitro/runtime/nitro-dev.mjs +44 -38
  108. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  109. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +9 -12
  110. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  111. package/dist/presets/_nitro/runtime/service-worker.mjs +14 -11
  112. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  113. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +6 -5
  114. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  115. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  116. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  117. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -27
  118. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +7 -7
  119. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  120. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  121. package/dist/presets/azure/runtime/azure-swa.mjs +22 -21
  122. package/dist/presets/bun/runtime/bun.d.mts +1 -0
  123. package/dist/presets/bun/runtime/bun.mjs +18 -17
  124. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  125. package/dist/presets/cloudflare/runtime/_module-handler.mjs +79 -87
  126. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  127. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +55 -61
  128. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  129. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +12 -14
  130. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  131. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -39
  132. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  133. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  134. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  135. package/dist/presets/deno/runtime/deno-deploy.d.mts +1 -0
  136. package/dist/presets/deno/runtime/deno-deploy.mjs +12 -11
  137. package/dist/presets/deno/runtime/deno-server.d.mts +2 -1
  138. package/dist/presets/deno/runtime/deno-server.mjs +31 -39
  139. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  140. package/dist/presets/netlify/runtime/netlify-edge.mjs +14 -11
  141. package/dist/presets/netlify/runtime/netlify.mjs +11 -17
  142. package/dist/presets/node/runtime/node-cluster.mjs +49 -48
  143. package/dist/presets/node/runtime/node-middleware.d.mts +3 -2
  144. package/dist/presets/node/runtime/node-middleware.mjs +7 -6
  145. package/dist/presets/node/runtime/node-server.mjs +34 -24
  146. package/dist/presets/standard/runtime/server.d.mts +1 -3
  147. package/dist/presets/standard/runtime/server.mjs +1 -3
  148. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  149. package/dist/presets/stormkit/runtime/stormkit.mjs +20 -20
  150. package/dist/presets/vercel/runtime/vercel.d.mts +3 -3
  151. package/dist/presets/vercel/runtime/vercel.mjs +15 -14
  152. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  153. package/dist/presets/winterjs/runtime/winterjs.mjs +72 -68
  154. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  155. package/dist/runtime/index.d.mts +13 -2
  156. package/dist/runtime/index.mjs +13 -8
  157. package/dist/runtime/internal/app.d.mts +3 -1
  158. package/dist/runtime/internal/app.mjs +179 -140
  159. package/dist/runtime/internal/cache.d.mts +10 -4
  160. package/dist/runtime/internal/cache.mjs +247 -216
  161. package/dist/runtime/internal/context.d.mts +9 -9
  162. package/dist/runtime/internal/context.mjs +17 -10
  163. package/dist/runtime/internal/database.mjs +8 -10
  164. package/dist/runtime/internal/error/dev.d.mts +5 -4
  165. package/dist/runtime/internal/error/dev.mjs +106 -105
  166. package/dist/runtime/internal/error/prod.d.mts +5 -4
  167. package/dist/runtime/internal/error/prod.mjs +51 -59
  168. package/dist/runtime/internal/error/utils.d.mts +4 -4
  169. package/dist/runtime/internal/error/utils.mjs +1 -1
  170. package/dist/runtime/internal/index.d.mts +2 -0
  171. package/dist/runtime/internal/index.mjs +2 -0
  172. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +14 -14
  173. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +248 -209
  174. package/dist/runtime/internal/meta.d.mts +1 -1
  175. package/dist/runtime/internal/meta.mjs +1 -1
  176. package/dist/runtime/internal/plugin.d.mts +2 -2
  177. package/dist/runtime/internal/plugin.mjs +1 -1
  178. package/dist/runtime/internal/renderer.mjs +40 -32
  179. package/dist/runtime/internal/route-rules.d.mts +8 -8
  180. package/dist/runtime/internal/route-rules.mjs +53 -51
  181. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  182. package/dist/runtime/internal/routes/dev-tasks.mjs +15 -17
  183. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  184. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  185. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  186. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  187. package/dist/runtime/internal/routes/renderer-template.dev.mjs +10 -17
  188. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  189. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  190. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  191. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  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 +40 -35
  195. package/dist/runtime/internal/shutdown.d.mts +2 -8
  196. package/dist/runtime/internal/shutdown.mjs +32 -30
  197. package/dist/runtime/internal/static.mjs +63 -74
  198. package/dist/runtime/internal/storage.mjs +2 -2
  199. package/dist/runtime/internal/task.d.mts +6 -6
  200. package/dist/runtime/internal/task.mjs +56 -60
  201. package/dist/runtime/internal/utils.d.mts +1 -1
  202. package/dist/runtime/internal/utils.mjs +4 -10
  203. package/dist/types/index.d.mts +2594 -2286
  204. package/dist/types/index.mjs +1 -1
  205. package/dist/vite.d.mts +56 -47
  206. package/dist/vite.mjs +55 -68
  207. package/lib/index.d.mts +1 -0
  208. package/lib/index.mjs +1 -0
  209. package/lib/runtime/meta.mjs +35 -0
  210. package/package.json +49 -50
  211. package/dist/_chunks/app.mjs +0 -19797
  212. package/dist/_chunks/build.mjs +0 -84
  213. package/dist/_chunks/build2.mjs +0 -318
  214. package/dist/_chunks/build3.mjs +0 -6452
  215. package/dist/_chunks/detect-acorn.mjs +0 -503
  216. package/dist/_chunks/index.mjs +0 -22242
  217. package/dist/_chunks/index2.mjs +0 -297
  218. package/dist/_chunks/index3.mjs +0 -1058
  219. package/dist/_chunks/index4.mjs +0 -1206
  220. package/dist/_chunks/info.mjs +0 -11157
  221. package/dist/_chunks/json5.mjs +0 -68
  222. package/dist/_chunks/jsonc.mjs +0 -51
  223. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  224. package/dist/_chunks/plugin.mjs +0 -960
  225. package/dist/_chunks/server.mjs +0 -254
  226. package/dist/_chunks/snapshot.mjs +0 -284
  227. package/dist/_chunks/toml.mjs +0 -259
  228. package/dist/_chunks/yaml.mjs +0 -86
  229. package/dist/cli/build.mjs +0 -54
  230. package/dist/cli/common.mjs +0 -13
  231. package/dist/cli/dev.mjs +0 -95
  232. package/dist/cli/index2.mjs +0 -17
  233. package/dist/cli/list.mjs +0 -34
  234. package/dist/cli/prepare.mjs +0 -24
  235. package/dist/cli/run.mjs +0 -60
  236. package/dist/index.d.mts +0 -52
  237. package/dist/index.mjs +0 -55
  238. package/dist/node_modules/klona/dist/index.mjs +0 -81
  239. package/dist/node_modules/klona/full/index.mjs +0 -53
  240. package/dist/node_modules/klona/package.json +0 -74
  241. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  242. package/dist/node_modules/std-env/package.json +0 -46
  243. package/dist/presets.mjs +0 -2460
  244. package/dist/runtime/internal/debug.d.mts +0 -2
  245. package/dist/runtime/internal/debug.mjs +0 -5
  246. package/dist/runtime/internal/empty.d.mts +0 -0
  247. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  248. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  249. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  250. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  251. package/lib/runtime-meta.mjs +0 -38
  252. /package/lib/{runtime-meta.d.mts → runtime/meta.d.mts} +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
1
  import "#nitro-internal-pollyfills";
2
- import type { APIGatewayProxyEventV2 } from "aws-lambda";
3
- export declare const handler: import("aws-lambda").StreamifyHandler<APIGatewayProxyEventV2, void>;
2
+ export declare const handler: unknown;
@@ -2,32 +2,30 @@ import "#nitro-internal-pollyfills";
2
2
  import { useNitroApp } from "nitro/runtime";
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
+ if (response.body) {
14
+ const writer = awslambda.HttpResponseStream.from(
15
+ // @ts-expect-error TODO: IMPORTANT! It should be a Writable according to the aws-lambda types
16
+ responseStream,
17
+ httpResponseMetadata
18
+ );
19
+ const reader = response.body.getReader();
20
+ await streamToNodeStream(reader, responseStream);
21
+ writer.end();
22
+ }
23
+ });
26
24
  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();
25
+ let readResult = await reader.read();
26
+ while (!readResult.done) {
27
+ writer.write(readResult.value);
28
+ readResult = await reader.read();
29
+ }
30
+ writer.end();
33
31
  }
@@ -3,11 +3,11 @@ import { useNitroApp } from "nitro/runtime";
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
1
  import "#nitro-internal-pollyfills";
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);
@@ -4,25 +4,26 @@ import { useNitroApp } from "nitro/runtime";
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 response = await nitroApp.request(url, {
18
+ method: req.method || undefined,
19
+ body: req.bufferBody ?? req.rawBody
20
+ });
21
+ // (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
22
+ // (v4) https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-node?tabs=typescript%2Cwindows%2Cazure-cli&pivots=nodejs-model-v4#http-response
23
+ context.res = {
24
+ status: response.status,
25
+ body: response.body,
26
+ cookies: getAzureParsedCookiesFromHeaders(response.headers),
27
+ headers: Object.fromEntries([...response.headers.entries()].filter(([key]) => key !== "set-cookie"))
28
+ };
28
29
  }
@@ -1 +1,2 @@
1
1
  import "#nitro-internal-pollyfills";
2
+ export {};
@@ -3,25 +3,26 @@ import { useNitroApp } from "nitro/runtime";
3
3
  import { startScheduleRunner } from "nitro/runtime/internal";
4
4
  import wsAdapter from "crossws/adapters/bun";
5
5
  const nitroApp = useNitroApp();
6
- const ws = import.meta._websocket ? (
7
- // @ts-expect-error
8
- wsAdapter(nitroApp.h3App.websocket)
9
- ) : void 0;
6
+ const ws = import.meta._websocket ? wsAdapter(nitroApp.h3App.websocket) : undefined;
7
+ // @ts-expect-error
10
8
  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
- }
9
+ port: process.env.NITRO_PORT || process.env.PORT || 3e3,
10
+ hostname: process.env.NITRO_HOST || process.env.HOST,
11
+ websocket: import.meta._websocket ? ws.websocket : undefined,
12
+ async fetch(bunReq, server) {
13
+ // srvx compatibility
14
+ const req = bunReq;
15
+ req.runtime ??= { name: "bun" };
16
+ req.runtime.bun ??= { server };
17
+ // https://crossws.unjs.io/adapters/bun
18
+ if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
19
+ return ws.handleUpgrade(req, server);
20
+ }
21
+ return nitroApp.fetch(req);
22
+ }
23
23
  });
24
24
  console.log(`Listening on ${server.url}...`);
25
+ // Scheduled tasks
25
26
  if (import.meta._tasks) {
26
- startScheduleRunner();
27
+ startScheduleRunner();
27
28
  }
@@ -3,11 +3,14 @@ import type * as CF from "@cloudflare/workers-types";
3
3
  import type { ExportedHandler } from "@cloudflare/workers-types";
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 fetchHandler(cfReq: Request | CF.Request, env: unknown, context: CF.ExecutionContext | DurableObjectState, url: URL, nitroApp, ctxExt: any);
13
16
  export {};