elysia 2.0.0-beta.2 → 2.0.0-beta.21

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 (339) hide show
  1. package/dist/adapter/bun/index.d.ts +18 -2
  2. package/dist/adapter/bun/index.js +467 -110
  3. package/dist/adapter/bun/index.mjs +467 -112
  4. package/dist/adapter/types.d.ts +2 -21
  5. package/dist/adapter/utils.d.ts +14 -3
  6. package/dist/adapter/utils.js +146 -87
  7. package/dist/adapter/utils.mjs +148 -90
  8. package/dist/adapter/web-standard/handler.d.ts +1 -1
  9. package/dist/adapter/web-standard/handler.js +47 -36
  10. package/dist/adapter/web-standard/handler.mjs +48 -37
  11. package/dist/adapter/web-standard/index.js +2 -30
  12. package/dist/adapter/web-standard/index.mjs +2 -30
  13. package/dist/adapter/web-standard/utils.js +5 -18
  14. package/dist/adapter/web-standard/utils.mjs +5 -18
  15. package/dist/base.d.ts +99 -67
  16. package/dist/base.js +678 -510
  17. package/dist/base.mjs +682 -514
  18. package/dist/compile/aot-capture.d.ts +2 -13
  19. package/dist/compile/aot-capture.js +26 -69
  20. package/dist/compile/aot-capture.mjs +28 -67
  21. package/dist/compile/aot-emit.d.ts +9 -7
  22. package/dist/compile/aot-emit.js +42 -19
  23. package/dist/compile/aot-emit.mjs +42 -20
  24. package/dist/compile/aot.d.ts +17 -19
  25. package/dist/compile/aot.js +41 -51
  26. package/dist/compile/aot.mjs +39 -49
  27. package/dist/compile/handler/descriptor.d.ts +9 -12
  28. package/dist/compile/handler/descriptor.js +19 -44
  29. package/dist/compile/handler/descriptor.mjs +20 -42
  30. package/dist/compile/handler/frozen-validator.d.ts +5 -10
  31. package/dist/compile/handler/frozen-validator.js +55 -105
  32. package/dist/compile/handler/frozen-validator.mjs +53 -105
  33. package/dist/compile/handler/index.d.ts +7 -5
  34. package/dist/compile/handler/index.js +270 -111
  35. package/dist/compile/handler/index.mjs +270 -113
  36. package/dist/compile/handler/jit.d.ts +19 -17
  37. package/dist/compile/handler/jit.js +222 -149
  38. package/dist/compile/handler/jit.mjs +224 -152
  39. package/dist/compile/handler/params.d.ts +1 -4
  40. package/dist/compile/handler/params.js +10 -5
  41. package/dist/compile/handler/params.mjs +14 -8
  42. package/dist/compile/handler/reconstruct.d.ts +2 -2
  43. package/dist/compile/handler/reconstruct.js +6 -4
  44. package/dist/compile/handler/reconstruct.mjs +6 -4
  45. package/dist/compile/handler/static-clone-resolver.d.ts +6 -0
  46. package/dist/compile/handler/static-clone-resolver.js +8 -0
  47. package/dist/compile/handler/static-clone-resolver.mjs +7 -0
  48. package/dist/compile/handler/utils.d.ts +22 -11
  49. package/dist/compile/handler/utils.js +159 -253
  50. package/dist/compile/handler/utils.mjs +155 -252
  51. package/dist/compile/jit-probe.d.ts +2 -2
  52. package/dist/compile/jit-probe.js +2 -3
  53. package/dist/compile/jit-probe.mjs +2 -3
  54. package/dist/compile/lexer.d.ts +7 -4
  55. package/dist/compile/lexer.js +268 -6
  56. package/dist/compile/lexer.mjs +268 -4
  57. package/dist/compile/utils.js +7 -4
  58. package/dist/compile/utils.mjs +7 -4
  59. package/dist/compiled.d.ts +0 -1
  60. package/dist/compiled.js +0 -1
  61. package/dist/compiled.mjs +0 -1
  62. package/dist/context.d.ts +14 -4
  63. package/dist/context.js +17 -32
  64. package/dist/context.mjs +19 -34
  65. package/dist/cookie/config.d.ts +7 -2
  66. package/dist/cookie/config.js +76 -16
  67. package/dist/cookie/config.mjs +77 -18
  68. package/dist/cookie/cookie.d.ts +1 -1
  69. package/dist/cookie/cookie.js +8 -10
  70. package/dist/cookie/cookie.mjs +8 -10
  71. package/dist/cookie/crypto.d.ts +8 -7
  72. package/dist/cookie/crypto.js +51 -40
  73. package/dist/cookie/crypto.mjs +51 -41
  74. package/dist/cookie/error.d.ts +1 -2
  75. package/dist/cookie/error.js +6 -4
  76. package/dist/cookie/error.mjs +6 -4
  77. package/dist/cookie/lib.js +7 -2
  78. package/dist/cookie/lib.mjs +7 -2
  79. package/dist/cookie/serialize.js +1 -1
  80. package/dist/cookie/serialize.mjs +1 -1
  81. package/dist/cookie/types.d.ts +10 -0
  82. package/dist/cookie/utils.d.ts +4 -8
  83. package/dist/cookie/utils.js +86 -52
  84. package/dist/cookie/utils.mjs +89 -54
  85. package/dist/error.d.ts +113 -103
  86. package/dist/error.js +181 -117
  87. package/dist/error.mjs +179 -118
  88. package/dist/generation.d.ts +2 -2
  89. package/dist/handler/error.d.ts +26 -15
  90. package/dist/handler/error.js +77 -96
  91. package/dist/handler/error.mjs +74 -97
  92. package/dist/handler/fetch.js +87 -108
  93. package/dist/handler/fetch.mjs +89 -110
  94. package/dist/handler/utils.d.ts +12 -6
  95. package/dist/handler/utils.js +84 -28
  96. package/dist/handler/utils.mjs +80 -28
  97. package/dist/index.d.ts +12 -12
  98. package/dist/index.js +2 -9
  99. package/dist/index.mjs +1 -1
  100. package/dist/memory.js +1 -1
  101. package/dist/memory.mjs +1 -1
  102. package/dist/package.js +1 -1
  103. package/dist/package.mjs +1 -1
  104. package/dist/plugin/aot/bun.d.ts +8 -1
  105. package/dist/plugin/aot/bun.js +16 -9
  106. package/dist/plugin/aot/bun.mjs +17 -10
  107. package/dist/plugin/aot/core.d.ts +52 -60
  108. package/dist/plugin/aot/core.js +208 -109
  109. package/dist/plugin/aot/core.mjs +205 -111
  110. package/dist/plugin/aot/esbuild.js +8 -5
  111. package/dist/plugin/aot/esbuild.mjs +9 -6
  112. package/dist/plugin/aot/hooks.d.ts +6 -17
  113. package/dist/plugin/aot/hooks.js +36 -14
  114. package/dist/plugin/aot/hooks.mjs +37 -16
  115. package/dist/plugin/aot/rspack-loader.d.ts +1 -5
  116. package/dist/plugin/aot/rspack-loader.js +1 -10
  117. package/dist/plugin/aot/rspack-loader.mjs +1 -10
  118. package/dist/plugin/aot/rspack.js +2 -5
  119. package/dist/plugin/aot/rspack.mjs +3 -6
  120. package/dist/plugin/aot/source.d.ts +6 -42
  121. package/dist/plugin/aot/source.js +71 -71
  122. package/dist/plugin/aot/source.mjs +72 -72
  123. package/dist/plugin/aot/treeshake.js +2 -6
  124. package/dist/plugin/aot/treeshake.mjs +2 -6
  125. package/dist/plugin/aot/unplugin.d.ts +1 -4
  126. package/dist/plugin/aot/unplugin.js +4 -13
  127. package/dist/plugin/aot/unplugin.mjs +4 -13
  128. package/dist/plugin/aot/vite.d.ts +2 -6
  129. package/dist/plugin/aot/worker.js +2 -2
  130. package/dist/plugin/aot/worker.mjs +2 -2
  131. package/dist/plugin/auto-head.js +1 -10
  132. package/dist/plugin/auto-head.mjs +1 -10
  133. package/dist/plugin/trace.d.ts +2 -1
  134. package/dist/route-table.d.ts +3 -0
  135. package/dist/route-table.js +16 -11
  136. package/dist/route-table.mjs +16 -11
  137. package/dist/schema-snapshot.d.ts +0 -4
  138. package/dist/schema-snapshot.js +32 -49
  139. package/dist/schema-snapshot.mjs +32 -49
  140. package/dist/sucrose.d.ts +6 -55
  141. package/dist/sucrose.js +103 -731
  142. package/dist/sucrose.mjs +102 -724
  143. package/dist/trace.d.ts +5 -8
  144. package/dist/trace.js +23 -134
  145. package/dist/trace.mjs +24 -135
  146. package/dist/type/bridge-live.d.ts +4 -2
  147. package/dist/type/bridge-live.js +6 -3
  148. package/dist/type/bridge-live.mjs +4 -2
  149. package/dist/type/bridge.d.ts +6 -4
  150. package/dist/type/bridge.js +17 -9
  151. package/dist/type/bridge.mjs +5 -3
  152. package/dist/type/coerce-plan.d.ts +5 -5
  153. package/dist/type/coerce-plan.js +41 -39
  154. package/dist/type/coerce-plan.mjs +43 -39
  155. package/dist/type/coerce.d.ts +3 -7
  156. package/dist/type/coerce.js +18 -75
  157. package/dist/type/coerce.mjs +19 -76
  158. package/dist/type/compat.d.ts +3 -0
  159. package/dist/type/compat.js +23 -14
  160. package/dist/type/compat.mjs +20 -10
  161. package/dist/type/elysia/array-buffer.d.ts +4 -1
  162. package/dist/type/elysia/array-buffer.js +17 -17
  163. package/dist/type/elysia/array-buffer.mjs +17 -17
  164. package/dist/type/elysia/array-string.js +2 -40
  165. package/dist/type/elysia/array-string.mjs +2 -39
  166. package/dist/type/elysia/array.js +5 -9
  167. package/dist/type/elysia/array.mjs +5 -9
  168. package/dist/type/elysia/boolean-string.js +2 -3
  169. package/dist/type/elysia/boolean-string.mjs +1 -1
  170. package/dist/type/elysia/boolean.js +3 -12
  171. package/dist/type/elysia/boolean.mjs +3 -11
  172. package/dist/type/elysia/cookie.d.ts +3 -4
  173. package/dist/type/elysia/cookie.js +5 -15
  174. package/dist/type/elysia/cookie.mjs +5 -15
  175. package/dist/type/elysia/date.js +13 -20
  176. package/dist/type/elysia/date.mjs +10 -16
  177. package/dist/type/elysia/file-type.d.ts +11 -4
  178. package/dist/type/elysia/file-type.js +17 -2
  179. package/dist/type/elysia/file-type.mjs +17 -3
  180. package/dist/type/elysia/file.d.ts +1 -3
  181. package/dist/type/elysia/file.js +11 -27
  182. package/dist/type/elysia/file.mjs +11 -12
  183. package/dist/type/elysia/files.js +7 -11
  184. package/dist/type/elysia/files.mjs +7 -10
  185. package/dist/type/elysia/form.js +2 -3
  186. package/dist/type/elysia/form.mjs +3 -3
  187. package/dist/type/elysia/integer-string.d.ts +1 -1
  188. package/dist/type/elysia/integer-string.js +4 -30
  189. package/dist/type/elysia/integer-string.mjs +5 -30
  190. package/dist/type/elysia/integer.js +3 -12
  191. package/dist/type/elysia/integer.mjs +3 -11
  192. package/dist/type/elysia/intersect.js +0 -5
  193. package/dist/type/elysia/intersect.mjs +0 -5
  194. package/dist/type/elysia/json-string.d.ts +7 -0
  195. package/dist/type/elysia/json-string.js +47 -0
  196. package/dist/type/elysia/json-string.mjs +46 -0
  197. package/dist/type/elysia/keep-config.d.ts +14 -0
  198. package/dist/type/elysia/keep-config.js +62 -0
  199. package/dist/type/elysia/keep-config.mjs +53 -0
  200. package/dist/type/elysia/maybe-empty.js +3 -4
  201. package/dist/type/elysia/maybe-empty.mjs +1 -1
  202. package/dist/type/elysia/nullable.js +2 -3
  203. package/dist/type/elysia/nullable.mjs +1 -1
  204. package/dist/type/elysia/number.d.ts +2 -1
  205. package/dist/type/elysia/number.js +19 -11
  206. package/dist/type/elysia/number.mjs +18 -10
  207. package/dist/type/elysia/numeric-enum.d.ts +1 -1
  208. package/dist/type/elysia/numeric-enum.js +4 -5
  209. package/dist/type/elysia/numeric-enum.mjs +3 -3
  210. package/dist/type/elysia/numeric.d.ts +4 -2
  211. package/dist/type/elysia/numeric.js +20 -17
  212. package/dist/type/elysia/numeric.mjs +19 -16
  213. package/dist/type/elysia/object-string.js +2 -37
  214. package/dist/type/elysia/object-string.mjs +2 -36
  215. package/dist/type/elysia/object.js +5 -9
  216. package/dist/type/elysia/object.mjs +5 -9
  217. package/dist/type/elysia/optional.js +8 -8
  218. package/dist/type/elysia/optional.mjs +7 -7
  219. package/dist/type/elysia/problem.d.ts +20 -0
  220. package/dist/type/elysia/problem.js +25 -0
  221. package/dist/type/elysia/problem.mjs +24 -0
  222. package/dist/type/elysia/string.js +4 -3
  223. package/dist/type/elysia/string.mjs +4 -2
  224. package/dist/type/elysia/uint8-array.d.ts +1 -1
  225. package/dist/type/elysia/uint8-array.js +5 -20
  226. package/dist/type/elysia/uint8-array.mjs +5 -19
  227. package/dist/type/elysia/union-enum.js +7 -8
  228. package/dist/type/elysia/union-enum.mjs +6 -6
  229. package/dist/type/elysia/union.js +0 -5
  230. package/dist/type/elysia/union.mjs +0 -5
  231. package/dist/type/elysia/utils.d.ts +2 -4
  232. package/dist/type/elysia/utils.js +10 -21
  233. package/dist/type/elysia/utils.mjs +7 -15
  234. package/dist/type/exports.d.ts +4 -2
  235. package/dist/type/exports.js +23 -2
  236. package/dist/type/exports.mjs +11 -2
  237. package/dist/type/index.d.ts +10 -2
  238. package/dist/type/index.js +62 -15
  239. package/dist/type/index.mjs +65 -11
  240. package/dist/type/shared.d.ts +3 -9
  241. package/dist/type/shared.js +44 -97
  242. package/dist/type/shared.mjs +43 -97
  243. package/dist/type/sync-require.d.ts +11 -0
  244. package/dist/type/sync-require.js +14 -0
  245. package/dist/type/sync-require.mjs +12 -0
  246. package/dist/type/typebox-system-lite.d.ts +2 -0
  247. package/dist/type/typebox-system-lite.js +34 -0
  248. package/dist/type/typebox-system-lite.mjs +3 -0
  249. package/dist/type/typebox-system-require.d.ts +7 -0
  250. package/dist/type/typebox-system-require.js +24 -0
  251. package/dist/type/typebox-system-require.mjs +23 -0
  252. package/dist/type/typebox-type-live.d.ts +11 -0
  253. package/dist/type/typebox-type-live.js +45 -0
  254. package/dist/type/typebox-type-live.mjs +20 -0
  255. package/dist/type/typebox-type.d.ts +34 -0
  256. package/dist/type/typebox-type.js +199 -0
  257. package/dist/type/typebox-type.mjs +86 -0
  258. package/dist/type/typebox-value-live.d.ts +11 -0
  259. package/dist/type/typebox-value-live.js +31 -0
  260. package/dist/type/typebox-value-live.mjs +13 -0
  261. package/dist/type/typebox-value-ops.d.ts +4 -0
  262. package/dist/type/typebox-value-ops.js +90 -0
  263. package/dist/type/typebox-value-ops.mjs +5 -0
  264. package/dist/type/typebox-value-require.d.ts +8 -0
  265. package/dist/type/typebox-value-require.js +28 -0
  266. package/dist/type/typebox-value-require.mjs +25 -0
  267. package/dist/type/typebox-value.d.ts +35 -0
  268. package/dist/type/typebox-value.js +161 -0
  269. package/dist/type/typebox-value.mjs +74 -0
  270. package/dist/type/utils.js +1 -10
  271. package/dist/type/utils.mjs +1 -10
  272. package/dist/type/validator/clean-safe.d.ts +2 -4
  273. package/dist/type/validator/clean-safe.js +15 -11
  274. package/dist/type/validator/clean-safe.mjs +16 -10
  275. package/dist/type/validator/custom-error.js +12 -16
  276. package/dist/type/validator/custom-error.mjs +11 -14
  277. package/dist/type/validator/default-precompute.d.ts +9 -1
  278. package/dist/type/validator/default-precompute.js +40 -77
  279. package/dist/type/validator/default-precompute.mjs +37 -74
  280. package/dist/type/validator/exact-mirror-live.d.ts +8 -0
  281. package/dist/type/validator/exact-mirror-live.js +22 -0
  282. package/dist/type/validator/exact-mirror-live.mjs +17 -0
  283. package/dist/type/validator/exact-mirror-require.d.ts +4 -0
  284. package/dist/type/validator/exact-mirror-require.js +11 -0
  285. package/dist/type/validator/exact-mirror-require.mjs +9 -0
  286. package/dist/type/validator/exact-mirror.js +8 -8
  287. package/dist/type/validator/exact-mirror.mjs +9 -8
  288. package/dist/type/validator/frozen-check.js +5 -6
  289. package/dist/type/validator/frozen-check.mjs +6 -7
  290. package/dist/type/validator/index.d.ts +1 -0
  291. package/dist/type/validator/index.js +169 -166
  292. package/dist/type/validator/index.mjs +162 -158
  293. package/dist/type/validator/string-codec-aot.d.ts +2 -1
  294. package/dist/type/validator/string-codec-aot.js +8 -2
  295. package/dist/type/validator/string-codec-aot.mjs +7 -2
  296. package/dist/type/validator/validator-cache.d.ts +5 -4
  297. package/dist/type/validator/validator-cache.js +41 -24
  298. package/dist/type/validator/validator-cache.mjs +40 -22
  299. package/dist/types.d.ts +263 -95
  300. package/dist/universal/constants.d.ts +2 -1
  301. package/dist/universal/constants.js +3 -1
  302. package/dist/universal/constants.mjs +2 -1
  303. package/dist/universal/env.js +2 -3
  304. package/dist/universal/env.mjs +2 -3
  305. package/dist/universal/file.d.ts +6 -4
  306. package/dist/universal/file.js +11 -16
  307. package/dist/universal/file.mjs +12 -16
  308. package/dist/universal/index.d.ts +2 -2
  309. package/dist/universal/is-production.d.ts +1 -2
  310. package/dist/universal/is-production.js +1 -3
  311. package/dist/universal/is-production.mjs +2 -3
  312. package/dist/universal/server.d.ts +0 -272
  313. package/dist/utils.d.ts +43 -7
  314. package/dist/utils.js +181 -126
  315. package/dist/utils.mjs +168 -126
  316. package/dist/validator/index.d.ts +1 -1
  317. package/dist/validator/index.js +17 -30
  318. package/dist/validator/index.mjs +18 -31
  319. package/dist/validator/route.js +2 -1
  320. package/dist/validator/route.mjs +2 -1
  321. package/dist/ws/context.d.ts +8 -1
  322. package/dist/ws/context.js +68 -44
  323. package/dist/ws/context.mjs +67 -44
  324. package/dist/ws/parser.js +10 -20
  325. package/dist/ws/parser.mjs +10 -20
  326. package/dist/ws/route.d.ts +2 -2
  327. package/dist/ws/route.js +249 -141
  328. package/dist/ws/route.mjs +254 -146
  329. package/dist/ws/types.d.ts +2 -2
  330. package/package.json +23 -49
  331. package/dist/compile/analysis-cache.d.ts +0 -6
  332. package/dist/compile/analysis-cache.js +0 -12
  333. package/dist/compile/analysis-cache.mjs +0 -11
  334. package/dist/cookie/index.d.ts +0 -7
  335. package/dist/cookie/index.js +0 -13
  336. package/dist/cookie/index.mjs +0 -7
  337. package/dist/handler/index.d.ts +0 -2
  338. package/dist/handler/index.js +0 -5
  339. package/dist/handler/index.mjs +0 -3
@@ -1,17 +1,18 @@
1
1
  import { isBun } from "../../universal/constants.mjs";
2
- import { ElysiaFile, mime } from "../../universal/file.mjs";
2
+ import { ElysiaFile } from "../../universal/file.mjs";
3
3
  import { formToFormData, isElysiaForm, isNotEmpty, nullObject } from "../../utils.mjs";
4
+ import { isProduction } from "../../universal/is-production.mjs";
4
5
  import { ElysiaStatus, PROBLEM_JSON, internalServerErrorBody } from "../../error.mjs";
5
6
  import { defaultHeaders } from "../default-headers.mjs";
6
7
  import { createResponseHandler, createStreamHandler, handleFile, handleSet, materializeSetHeaders } from "../utils.mjs";
8
+ import { Cookie } from "../../cookie/cookie.mjs";
7
9
 
8
10
  //#region src/adapter/web-standard/handler.ts
9
11
  const textPlainInit = { headers: { "content-type": "text/plain" } };
10
12
  function handleElysiaFile(file, set = { headers: nullObject() }, request) {
11
- const path = file.path;
12
- const contentType = mime[path.slice(path.lastIndexOf(".") + 1).toLowerCase()];
13
+ const contentType = file.type;
13
14
  const headers = materializeSetHeaders(set);
14
- if (contentType) headers["content-type"] = contentType;
15
+ if (contentType !== "application/octet-stream") headers["content-type"] = contentType;
15
16
  const stats = file.stats;
16
17
  if (stats) return stats.then((stat) => {
17
18
  const size = stat.size;
@@ -21,12 +22,16 @@ function handleElysiaFile(file, set = { headers: nullObject() }, request) {
21
22
  return handleFile(file.value, set, request);
22
23
  }
23
24
  function responseTag(response) {
25
+ if (typeof response === "string") return "String";
24
26
  if (response == null) return;
25
- return Object.getPrototypeOf(response)?.constructor?.name;
27
+ const constructor = Object.getPrototypeOf(response)?.constructor;
28
+ if (typeof constructor !== "function") return typeof response.next === "function" ? "" : void 0;
29
+ return constructor.name;
26
30
  }
27
31
  function mapResponseWithSet(response, set, request, owned) {
28
32
  handleSet(set);
29
33
  const headers = set.headers;
34
+ if (!isBun && (set.status === 204 || set.status === 304 || set.status === 205) && !(response instanceof Response) && !(response instanceof ElysiaStatus)) return new Response(null, set);
30
35
  switch (responseTag(response)) {
31
36
  case "String":
32
37
  if (!isBun && !headers["content-type"]) materializeSetHeaders(set)["content-type"] = "text/plain";
@@ -37,14 +42,11 @@ function mapResponseWithSet(response, set, request, owned) {
37
42
  if (typeof response?.next === "function") return handleStream(response, set, request, void 0, owned);
38
43
  return Response.json(response, set);
39
44
  case "Number":
40
- case "Boolean": return new Response(typeof response === "boolean" ? response ? "true" : "false" : response.toString(), set);
45
+ case "Boolean": return new Response(String(response), set);
41
46
  case "ElysiaFile": return handleElysiaFile(response, set, request);
42
47
  case "File":
43
48
  case "Blob": return handleFile(response, set, request);
44
- case "ElysiaStatus":
45
- set.status = response.code;
46
- if (response.headers) Object.assign(materializeSetHeaders(set), response.headers);
47
- return mapResponseWithSet(response.response, set, request, owned);
49
+ case "ElysiaStatus": return withStatus(response, set, request, owned);
48
50
  case void 0: return response ? Response.json(response, set) : new Response(null, set);
49
51
  case "Response": return handleResponse(response, set, request, owned);
50
52
  case "Error": return errorToResponse(response, set, request, owned);
@@ -54,14 +56,24 @@ function mapResponseWithSet(response, set, request, owned) {
54
56
  default: return mapFallback(response, set, request, owned);
55
57
  }
56
58
  }
59
+ function withStatus(response, set, request, owned) {
60
+ if (set) set.status = response.status;
61
+ else set = {
62
+ status: response.status,
63
+ headers: nullObject()
64
+ };
65
+ if (response.headers) Object.assign(materializeSetHeaders(set), response.headers);
66
+ return mapResponseWithSet(response.response, set, request, owned);
67
+ }
68
+ const checkRemovedSetRedirect = !isProduction();
57
69
  function mapResponse(response, set, request, owned) {
70
+ if (checkRemovedSetRedirect && Object.hasOwn(set, "redirect") && !isProduction()) {
71
+ delete set.redirect;
72
+ throw new Error("[Elysia] set.redirect was removed in 2.0 — return redirect(url) instead");
73
+ }
58
74
  const headers = set.headers;
59
75
  if (set.status !== void 0 || set.cookie || headers["\0"] === headers || isNotEmpty(headers)) return mapResponseWithSet(response, set, request, owned);
60
- if (response instanceof ElysiaStatus) {
61
- set.status = response.code;
62
- if (response.headers) Object.assign(set.headers, response.headers);
63
- return mapResponse(response.response, set, request, owned);
64
- }
76
+ if (response instanceof ElysiaStatus) return withStatus(response, set, request, owned);
65
77
  if (response instanceof Response) return owned ? handleResponse(response, void 0, request, true) : response;
66
78
  if (response instanceof Promise) return response.then((x) => mapResponse(x, set, request, owned));
67
79
  if (typeof response?.next === "function" || response instanceof ReadableStream) return handleStream(response, set, request, void 0, owned);
@@ -75,14 +87,11 @@ function mapCompactResponse(response, request, owned) {
75
87
  case "ElysiaForm": return new Response(formToFormData(response));
76
88
  case "Object": return Response.json(response);
77
89
  case "Number":
78
- case "Boolean": return new Response(typeof response === "boolean" ? response ? "true" : "false" : response.toString());
90
+ case "Boolean": return new Response(String(response));
79
91
  case "ElysiaFile": return handleElysiaFile(response, void 0, request);
80
92
  case "File":
81
93
  case "Blob": return handleFile(response, void 0, request);
82
- case "ElysiaStatus": return mapResponse(response.response, {
83
- status: response.code,
84
- headers: response.headers ? Object.assign(nullObject(), response.headers) : nullObject()
85
- }, request, owned);
94
+ case "ElysiaStatus": return withStatus(response, void 0, request, owned);
86
95
  case void 0: return response ? Response.json(response) : new Response("");
87
96
  case "Response": return owned ? handleResponse(response, void 0, request, true) : response;
88
97
  case "Error": return errorToResponse(response, void 0, request, owned);
@@ -114,28 +123,30 @@ function errorToResponse(error, set, request, owned = false) {
114
123
  }
115
124
  function mapFallback(response, set, request, owned = false) {
116
125
  if (response instanceof Response) return handleResponse(response, set, request, owned);
117
- if (response instanceof Promise) return response.then((x) => set ? mapResponse(x, set, request, owned) : mapCompactResponse(x, request, owned));
118
126
  if (response instanceof Error) return errorToResponse(response, set, request, owned);
119
- if (response instanceof ElysiaStatus) if (set) {
120
- set.status = response.code;
121
- if (response.headers) set.headers = {
122
- ...set.headers,
123
- ...response.headers
124
- };
125
- return mapResponse(response.response, set, request, owned);
126
- } else return mapResponse(response.response, {
127
- status: response.code,
128
- headers: response.headers ? { ...response.headers } : {}
129
- }, request, owned);
130
- if (response instanceof ElysiaFile) return handleElysiaFile(response, void 0, request);
127
+ if (response instanceof ElysiaStatus) {
128
+ if (set && response.headers) {
129
+ set.status = response.status;
130
+ set.headers = {
131
+ ...set.headers,
132
+ ...response.headers
133
+ };
134
+ return mapResponse(response.response, set, request, owned);
135
+ }
136
+ return withStatus(response, set, request, owned);
137
+ }
138
+ if (response instanceof ElysiaFile) return handleElysiaFile(response, set, request);
131
139
  if (isElysiaForm(response)) return new Response(formToFormData(response), set);
132
140
  if (typeof response?.next === "function" || response instanceof ReadableStream) return handleStream(response, set, request, void 0, owned);
133
- if (typeof response?.then === "function") return response.then((x) => set ? mapResponse(x, set, request, owned) : mapCompactResponse(x, request, owned));
134
- if (Array.isArray(response)) return Response.json(response);
135
- if (typeof response?.toResponse === "function") return set ? mapResponse(response.toResponse(), set, request, owned) : mapCompactResponse(response.toResponse(), request, owned);
136
- if (responseTag(response) === "Cookie") return set ? mapResponse(response.value, set, request, owned) : mapCompactResponse(response.value, request, owned);
141
+ if (typeof response?.then === "function") return response.then((x) => remap(x, set, request, owned));
142
+ if (Array.isArray(response)) return Response.json(response, set);
143
+ if (typeof response?.toResponse === "function") return remap(response.toResponse(), set, request, owned);
144
+ if (responseTag(response) === "Cookie" && Cookie.isCookie(response)) return remap(response.value, set, request, owned);
137
145
  return new Response(response, set);
138
146
  }
147
+ function remap(response, set, request, owned) {
148
+ return set ? mapResponse(response, set, request, owned) : mapCompactResponse(response, request, owned);
149
+ }
139
150
  const handleResponse = createResponseHandler({
140
151
  mapResponse,
141
152
  mapCompactResponse
@@ -1,49 +1,21 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_universal_constants = require('../../universal/constants.js');
3
2
  const require_adapter_index = require('../index.js');
4
- const require_adapter_utils = require('../utils.js');
5
3
  const require_adapter_web_standard_handler = require('./handler.js');
6
4
  const require_adapter_web_standard_utils = require('./utils.js');
7
5
  const require_parse_query = require('../../parse-query.js');
8
6
 
9
7
  //#region src/adapter/web-standard/index.ts
10
- function lowercaseContentType(ct) {
11
- for (let i = 0; i < ct.length; i++) {
12
- const code = ct.charCodeAt(i);
13
- if (code >= 65 && code <= 90) return ct.toLowerCase();
14
- }
15
- return ct;
16
- }
17
- function parseFormData(context, contentType) {
18
- contentType ??= context.request.headers.get("content-type") ?? "";
19
- const ct = lowercaseContentType(contentType);
20
- if (require_universal_constants.isBun && ct !== contentType) {
21
- const fullCt = context.request.headers.get("content-type") ?? "";
22
- const semi = fullCt.indexOf(";");
23
- const fixedCt = semi === -1 ? lowercaseContentType(fullCt) : lowercaseContentType(fullCt.slice(0, semi)) + fullCt.slice(semi);
24
- const headers = new Headers(context.request.headers);
25
- headers.set("content-type", fixedCt);
26
- return new Request(context.request.url, {
27
- method: context.request.method,
28
- headers,
29
- body: context.request.body,
30
- duplex: "half"
31
- }).formData().then(require_adapter_web_standard_utils.formDataToObject);
32
- }
8
+ function parseFormData(context) {
33
9
  return context.request.formData().then(require_adapter_web_standard_utils.formDataToObject);
34
10
  }
35
11
  const WebStandardAdapter = require_adapter_index.createAdapter({
36
- name: "web-standard",
37
- runtime: "unknown",
38
- isWebStandard: true,
39
12
  parse: {
40
13
  arrayBuffer: (context) => context.request.arrayBuffer(),
41
14
  formData: parseFormData,
42
15
  json: (context) => context.request.json(),
43
16
  text: (context) => context.request.text(),
44
17
  urlencoded: (context) => context.request.text().then(require_parse_query.parseQuery),
45
- default(context, contentType, normalized) {
46
- const ct = normalized ? contentType : require_adapter_utils.normalizeContentType(contentType);
18
+ default(context, ct) {
47
19
  switch (ct.charCodeAt(12)) {
48
20
  case 106:
49
21
  if (ct === "application/json") return context.request.json();
@@ -1,48 +1,20 @@
1
- import { isBun } from "../../universal/constants.mjs";
2
1
  import { createAdapter } from "../index.mjs";
3
- import { normalizeContentType } from "../utils.mjs";
4
2
  import { mapCompactResponse, mapResponse } from "./handler.mjs";
5
3
  import { formDataToObject } from "./utils.mjs";
6
4
  import { parseQuery } from "../../parse-query.mjs";
7
5
 
8
6
  //#region src/adapter/web-standard/index.ts
9
- function lowercaseContentType(ct) {
10
- for (let i = 0; i < ct.length; i++) {
11
- const code = ct.charCodeAt(i);
12
- if (code >= 65 && code <= 90) return ct.toLowerCase();
13
- }
14
- return ct;
15
- }
16
- function parseFormData(context, contentType) {
17
- contentType ??= context.request.headers.get("content-type") ?? "";
18
- const ct = lowercaseContentType(contentType);
19
- if (isBun && ct !== contentType) {
20
- const fullCt = context.request.headers.get("content-type") ?? "";
21
- const semi = fullCt.indexOf(";");
22
- const fixedCt = semi === -1 ? lowercaseContentType(fullCt) : lowercaseContentType(fullCt.slice(0, semi)) + fullCt.slice(semi);
23
- const headers = new Headers(context.request.headers);
24
- headers.set("content-type", fixedCt);
25
- return new Request(context.request.url, {
26
- method: context.request.method,
27
- headers,
28
- body: context.request.body,
29
- duplex: "half"
30
- }).formData().then(formDataToObject);
31
- }
7
+ function parseFormData(context) {
32
8
  return context.request.formData().then(formDataToObject);
33
9
  }
34
10
  const WebStandardAdapter = createAdapter({
35
- name: "web-standard",
36
- runtime: "unknown",
37
- isWebStandard: true,
38
11
  parse: {
39
12
  arrayBuffer: (context) => context.request.arrayBuffer(),
40
13
  formData: parseFormData,
41
14
  json: (context) => context.request.json(),
42
15
  text: (context) => context.request.text(),
43
16
  urlencoded: (context) => context.request.text().then(parseQuery),
44
- default(context, contentType, normalized) {
45
- const ct = normalized ? contentType : normalizeContentType(contentType);
17
+ default(context, ct) {
46
18
  switch (ct.charCodeAt(12)) {
47
19
  case 106:
48
20
  if (ct === "application/json") return context.request.json();
@@ -32,7 +32,7 @@ function resolveValue(entries) {
32
32
  return typeof v === "string" ? tryParseJson(v) ?? v : v;
33
33
  }
34
34
  let jsonObj;
35
- let fileCount = 0;
35
+ let files;
36
36
  const result = new Array(length);
37
37
  for (let i = 0; i < length; i++) {
38
38
  const e = entries[i];
@@ -41,26 +41,13 @@ function resolveValue(entries) {
41
41
  if (jsonObj === void 0 && parsed && !Array.isArray(parsed)) jsonObj = parsed;
42
42
  result[i] = parsed ?? e;
43
43
  } else {
44
- if (HAS_FILE && e instanceof File) fileCount++;
44
+ if (HAS_FILE && e instanceof File) (files ??= []).push(e);
45
45
  result[i] = e;
46
46
  }
47
47
  }
48
- if (fileCount && jsonObj) {
49
- if (fileCount === 1 && !("file" in jsonObj)) for (let i = 0; i < length; i++) {
50
- const e = entries[i];
51
- if (HAS_FILE && e instanceof File) {
52
- jsonObj.file = e;
53
- break;
54
- }
55
- }
56
- else if (!("files" in jsonObj)) {
57
- const files = [];
58
- for (let i = 0; i < length; i++) {
59
- const e = entries[i];
60
- if (HAS_FILE && e instanceof File) files.push(e);
61
- }
62
- jsonObj.files = files;
63
- }
48
+ if (files && jsonObj) {
49
+ if (files.length === 1 && !("file" in jsonObj)) jsonObj.file = files[0];
50
+ else if (!("files" in jsonObj)) jsonObj.files = files;
64
51
  return jsonObj;
65
52
  }
66
53
  return result;
@@ -31,7 +31,7 @@ function resolveValue(entries) {
31
31
  return typeof v === "string" ? tryParseJson(v) ?? v : v;
32
32
  }
33
33
  let jsonObj;
34
- let fileCount = 0;
34
+ let files;
35
35
  const result = new Array(length);
36
36
  for (let i = 0; i < length; i++) {
37
37
  const e = entries[i];
@@ -40,26 +40,13 @@ function resolveValue(entries) {
40
40
  if (jsonObj === void 0 && parsed && !Array.isArray(parsed)) jsonObj = parsed;
41
41
  result[i] = parsed ?? e;
42
42
  } else {
43
- if (HAS_FILE && e instanceof File) fileCount++;
43
+ if (HAS_FILE && e instanceof File) (files ??= []).push(e);
44
44
  result[i] = e;
45
45
  }
46
46
  }
47
- if (fileCount && jsonObj) {
48
- if (fileCount === 1 && !("file" in jsonObj)) for (let i = 0; i < length; i++) {
49
- const e = entries[i];
50
- if (HAS_FILE && e instanceof File) {
51
- jsonObj.file = e;
52
- break;
53
- }
54
- }
55
- else if (!("files" in jsonObj)) {
56
- const files = [];
57
- for (let i = 0; i < length; i++) {
58
- const e = entries[i];
59
- if (HAS_FILE && e instanceof File) files.push(e);
60
- }
61
- jsonObj.files = files;
62
- }
47
+ if (files && jsonObj) {
48
+ if (files.length === 1 && !("file" in jsonObj)) jsonObj.file = files[0];
49
+ else if (!("files" in jsonObj)) jsonObj.files = files;
63
50
  return jsonObj;
64
51
  }
65
52
  return result;