elysia 1.4.28 → 2.0.0-beta.0

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 (454) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +29 -0
  2. package/dist/_virtual/_rolldown/runtime.mjs +38 -0
  3. package/dist/adapter/bun/index.d.ts +7 -6
  4. package/dist/adapter/bun/index.js +219 -380
  5. package/dist/adapter/bun/index.mjs +217 -382
  6. package/dist/adapter/constants.d.ts +6 -0
  7. package/dist/adapter/constants.js +10 -0
  8. package/dist/adapter/constants.mjs +9 -0
  9. package/dist/adapter/default-headers.d.ts +4 -0
  10. package/dist/adapter/default-headers.js +7 -0
  11. package/dist/adapter/default-headers.mjs +5 -0
  12. package/dist/adapter/index.d.ts +8 -1
  13. package/dist/adapter/index.js +7 -14
  14. package/dist/adapter/index.mjs +5 -0
  15. package/dist/adapter/origin.d.ts +63 -0
  16. package/dist/adapter/origin.js +64 -0
  17. package/dist/adapter/origin.mjs +62 -0
  18. package/dist/adapter/response-ownership.d.ts +5 -0
  19. package/dist/adapter/response-ownership.js +13 -0
  20. package/dist/adapter/response-ownership.mjs +10 -0
  21. package/dist/adapter/skip-clone.d.ts +4 -0
  22. package/dist/adapter/skip-clone.js +7 -0
  23. package/dist/adapter/skip-clone.mjs +5 -0
  24. package/dist/adapter/types.d.ts +50 -125
  25. package/dist/adapter/types.js +1 -14
  26. package/dist/adapter/types.mjs +1 -0
  27. package/dist/adapter/utils.d.ts +47 -19
  28. package/dist/adapter/utils.js +561 -311
  29. package/dist/adapter/utils.mjs +551 -283
  30. package/dist/adapter/web-standard/handler.d.ts +11 -9
  31. package/dist/adapter/web-standard/handler.js +146 -415
  32. package/dist/adapter/web-standard/handler.mjs +144 -400
  33. package/dist/adapter/web-standard/index.d.ts +5 -2
  34. package/dist/adapter/web-standard/index.js +68 -161
  35. package/dist/adapter/web-standard/index.mjs +68 -146
  36. package/dist/adapter/web-standard/utils.d.ts +4 -0
  37. package/dist/adapter/web-standard/utils.js +153 -0
  38. package/dist/adapter/web-standard/utils.mjs +152 -0
  39. package/dist/base.d.ts +898 -0
  40. package/dist/base.js +1564 -0
  41. package/dist/base.mjs +1561 -0
  42. package/dist/compile/analysis-cache.d.ts +6 -0
  43. package/dist/compile/analysis-cache.js +12 -0
  44. package/dist/compile/analysis-cache.mjs +11 -0
  45. package/dist/compile/aot-capture.d.ts +24 -0
  46. package/dist/compile/aot-capture.js +376 -0
  47. package/dist/compile/aot-capture.mjs +365 -0
  48. package/dist/compile/aot-emit.d.ts +29 -0
  49. package/dist/compile/aot-emit.js +107 -0
  50. package/dist/compile/aot-emit.mjs +101 -0
  51. package/dist/compile/aot-reconstruct.d.ts +30 -0
  52. package/dist/compile/aot-reconstruct.js +156 -0
  53. package/dist/compile/aot-reconstruct.mjs +147 -0
  54. package/dist/compile/aot.d.ts +287 -0
  55. package/dist/compile/aot.js +220 -0
  56. package/dist/compile/aot.mjs +200 -0
  57. package/dist/compile/handler/descriptor.d.ts +77 -0
  58. package/dist/compile/handler/descriptor.js +199 -0
  59. package/dist/compile/handler/descriptor.mjs +194 -0
  60. package/dist/compile/handler/frozen-validator.d.ts +39 -0
  61. package/dist/compile/handler/frozen-validator.js +319 -0
  62. package/dist/compile/handler/frozen-validator.mjs +313 -0
  63. package/dist/compile/handler/index.d.ts +19 -0
  64. package/dist/compile/handler/index.js +379 -0
  65. package/dist/compile/handler/index.mjs +371 -0
  66. package/dist/compile/handler/jit.d.ts +43 -0
  67. package/dist/compile/handler/jit.js +536 -0
  68. package/dist/compile/handler/jit.mjs +532 -0
  69. package/dist/compile/handler/params.d.ts +28 -0
  70. package/dist/compile/handler/params.js +78 -0
  71. package/dist/compile/handler/params.mjs +76 -0
  72. package/dist/compile/handler/reconstruct.d.ts +12 -0
  73. package/dist/compile/handler/reconstruct.js +50 -0
  74. package/dist/compile/handler/reconstruct.mjs +49 -0
  75. package/dist/compile/handler/utils.d.ts +45 -0
  76. package/dist/compile/handler/utils.js +514 -0
  77. package/dist/compile/handler/utils.mjs +498 -0
  78. package/dist/compile/jit-probe.d.ts +15 -0
  79. package/dist/compile/jit-probe.js +28 -0
  80. package/dist/compile/jit-probe.mjs +26 -0
  81. package/dist/compile/lexer.d.ts +7 -0
  82. package/dist/compile/lexer.js +53 -0
  83. package/dist/compile/lexer.mjs +48 -0
  84. package/dist/compile/utils.d.ts +8 -0
  85. package/dist/compile/utils.js +23 -0
  86. package/dist/compile/utils.mjs +19 -0
  87. package/dist/compiled.d.ts +17 -0
  88. package/dist/compiled.js +20 -0
  89. package/dist/compiled.mjs +16 -0
  90. package/dist/constants.d.ts +137 -0
  91. package/dist/constants.js +96 -0
  92. package/dist/constants.mjs +88 -0
  93. package/dist/context.d.ts +86 -129
  94. package/dist/context.js +110 -13
  95. package/dist/context.mjs +108 -0
  96. package/dist/cookie/config.d.ts +31 -0
  97. package/dist/cookie/config.js +98 -0
  98. package/dist/cookie/config.mjs +95 -0
  99. package/dist/cookie/cookie.d.ts +26 -0
  100. package/dist/cookie/cookie.js +105 -0
  101. package/dist/cookie/cookie.mjs +104 -0
  102. package/dist/cookie/crypto.d.ts +20 -0
  103. package/dist/cookie/crypto.js +168 -0
  104. package/dist/cookie/crypto.mjs +151 -0
  105. package/dist/cookie/error.d.ts +17 -0
  106. package/dist/cookie/error.js +25 -0
  107. package/dist/cookie/error.mjs +24 -0
  108. package/dist/cookie/index.d.ts +7 -0
  109. package/dist/cookie/index.js +13 -0
  110. package/dist/cookie/index.mjs +7 -0
  111. package/dist/cookie/lib.d.ts +7 -0
  112. package/dist/cookie/lib.js +76 -0
  113. package/dist/cookie/lib.mjs +74 -0
  114. package/dist/cookie/serialize.d.ts +6 -0
  115. package/dist/cookie/serialize.js +32 -0
  116. package/dist/cookie/serialize.mjs +31 -0
  117. package/dist/cookie/types.d.ts +113 -0
  118. package/dist/cookie/types.js +1 -0
  119. package/dist/cookie/types.mjs +1 -0
  120. package/dist/cookie/utils.d.ts +25 -0
  121. package/dist/cookie/utils.js +182 -0
  122. package/dist/cookie/utils.mjs +171 -0
  123. package/dist/error.d.ts +226 -188
  124. package/dist/error.js +519 -357
  125. package/dist/error.mjs +503 -327
  126. package/dist/generation.d.ts +30 -0
  127. package/dist/generation.js +23 -0
  128. package/dist/generation.mjs +17 -0
  129. package/dist/handler/error.d.ts +7 -0
  130. package/dist/handler/error.js +105 -0
  131. package/dist/handler/error.mjs +104 -0
  132. package/dist/handler/fetch.d.ts +8 -0
  133. package/dist/handler/fetch.js +371 -0
  134. package/dist/handler/fetch.mjs +367 -0
  135. package/dist/handler/index.d.ts +2 -0
  136. package/dist/handler/index.js +5 -0
  137. package/dist/handler/index.mjs +3 -0
  138. package/dist/handler/utils.d.ts +15 -0
  139. package/dist/handler/utils.js +48 -0
  140. package/dist/handler/utils.mjs +42 -0
  141. package/dist/index.d.ts +23 -2198
  142. package/dist/index.js +62 -1948
  143. package/dist/index.mjs +20 -1986
  144. package/dist/memory.d.ts +4 -0
  145. package/dist/memory.js +17 -0
  146. package/dist/memory.mjs +16 -0
  147. package/dist/package.js +11 -0
  148. package/dist/package.mjs +5 -0
  149. package/dist/parse-query.d.ts +7 -9
  150. package/dist/parse-query.js +154 -164
  151. package/dist/parse-query.mjs +150 -133
  152. package/dist/plugin/aot/bun.d.ts +26 -0
  153. package/dist/plugin/aot/bun.js +35 -0
  154. package/dist/plugin/aot/bun.mjs +34 -0
  155. package/dist/plugin/aot/core.d.ts +291 -0
  156. package/dist/plugin/aot/core.js +505 -0
  157. package/dist/plugin/aot/core.mjs +481 -0
  158. package/dist/plugin/aot/esbuild.d.ts +28 -0
  159. package/dist/plugin/aot/esbuild.js +48 -0
  160. package/dist/plugin/aot/esbuild.mjs +46 -0
  161. package/dist/plugin/aot/hooks.d.ts +28 -0
  162. package/dist/plugin/aot/hooks.js +114 -0
  163. package/dist/plugin/aot/hooks.mjs +112 -0
  164. package/dist/plugin/aot/rspack-loader.d.ts +23 -0
  165. package/dist/plugin/aot/rspack-loader.js +44 -0
  166. package/dist/plugin/aot/rspack-loader.mjs +40 -0
  167. package/dist/plugin/aot/rspack.d.ts +23 -0
  168. package/dist/plugin/aot/rspack.js +85 -0
  169. package/dist/plugin/aot/rspack.mjs +82 -0
  170. package/dist/plugin/aot/source.d.ts +60 -0
  171. package/dist/plugin/aot/source.js +422 -0
  172. package/dist/plugin/aot/source.mjs +418 -0
  173. package/dist/plugin/aot/treeshake.d.ts +4 -0
  174. package/dist/plugin/aot/treeshake.js +95 -0
  175. package/dist/plugin/aot/treeshake.mjs +94 -0
  176. package/dist/plugin/aot/unplugin.d.ts +50 -0
  177. package/dist/plugin/aot/unplugin.js +64 -0
  178. package/dist/plugin/aot/unplugin.mjs +62 -0
  179. package/dist/plugin/aot/vite.d.ts +30 -0
  180. package/dist/plugin/aot/vite.js +34 -0
  181. package/dist/plugin/aot/vite.mjs +33 -0
  182. package/dist/plugin/aot/worker.d.ts +1 -0
  183. package/dist/plugin/aot/worker.js +28 -0
  184. package/dist/plugin/aot/worker.mjs +27 -0
  185. package/dist/plugin/auto-head.d.ts +6 -0
  186. package/dist/plugin/auto-head.js +38 -0
  187. package/dist/plugin/auto-head.mjs +36 -0
  188. package/dist/plugin/trace.d.ts +10 -0
  189. package/dist/plugin/trace.js +39 -0
  190. package/dist/plugin/trace.mjs +36 -0
  191. package/dist/plugin/websocket.d.ts +6 -0
  192. package/dist/plugin/websocket.js +61 -0
  193. package/dist/plugin/websocket.mjs +60 -0
  194. package/dist/route-table.d.ts +28 -0
  195. package/dist/route-table.js +64 -0
  196. package/dist/route-table.mjs +61 -0
  197. package/dist/schema-snapshot.d.ts +9 -0
  198. package/dist/schema-snapshot.js +271 -0
  199. package/dist/schema-snapshot.mjs +269 -0
  200. package/dist/sucrose.d.ts +28 -63
  201. package/dist/sucrose.js +814 -306
  202. package/dist/sucrose.mjs +805 -274
  203. package/dist/trace.d.ts +145 -130
  204. package/dist/trace.js +387 -135
  205. package/dist/trace.mjs +385 -113
  206. package/dist/type/bridge-live.d.ts +15 -0
  207. package/dist/type/bridge-live.js +39 -0
  208. package/dist/type/bridge-live.mjs +17 -0
  209. package/dist/type/bridge.d.ts +56 -0
  210. package/dist/type/bridge.js +180 -0
  211. package/dist/type/bridge.mjs +63 -0
  212. package/dist/type/coerce-plan.d.ts +38 -0
  213. package/dist/type/coerce-plan.js +107 -0
  214. package/dist/type/coerce-plan.mjs +98 -0
  215. package/dist/type/coerce.d.ts +43 -0
  216. package/dist/type/coerce.js +351 -0
  217. package/dist/type/coerce.mjs +339 -0
  218. package/dist/type/compat.d.ts +8 -0
  219. package/dist/type/compat.js +46 -0
  220. package/dist/type/compat.mjs +44 -0
  221. package/dist/type/constants.d.ts +25 -0
  222. package/dist/type/constants.js +36 -0
  223. package/dist/type/constants.mjs +32 -0
  224. package/dist/type/elysia/accelerate.d.ts +6 -0
  225. package/dist/type/elysia/accelerate.js +12 -0
  226. package/dist/type/elysia/accelerate.mjs +10 -0
  227. package/dist/type/elysia/array-buffer.d.ts +6 -0
  228. package/dist/type/elysia/array-buffer.js +27 -0
  229. package/dist/type/elysia/array-buffer.mjs +25 -0
  230. package/dist/type/elysia/array-string.d.ts +7 -0
  231. package/dist/type/elysia/array-string.js +28 -0
  232. package/dist/type/elysia/array-string.mjs +26 -0
  233. package/dist/type/elysia/array.d.ts +6 -0
  234. package/dist/type/elysia/array.js +32 -0
  235. package/dist/type/elysia/array.mjs +31 -0
  236. package/dist/type/elysia/boolean-string.d.ts +6 -0
  237. package/dist/type/elysia/boolean-string.js +24 -0
  238. package/dist/type/elysia/boolean-string.mjs +22 -0
  239. package/dist/type/elysia/boolean.d.ts +6 -0
  240. package/dist/type/elysia/boolean.js +20 -0
  241. package/dist/type/elysia/boolean.mjs +18 -0
  242. package/dist/type/elysia/cookie.d.ts +15 -0
  243. package/dist/type/elysia/cookie.js +51 -0
  244. package/dist/type/elysia/cookie.mjs +50 -0
  245. package/dist/type/elysia/date.d.ts +7 -0
  246. package/dist/type/elysia/date.js +98 -0
  247. package/dist/type/elysia/date.mjs +96 -0
  248. package/dist/type/elysia/file-type.d.ts +25 -0
  249. package/dist/type/elysia/file-type.js +81 -0
  250. package/dist/type/elysia/file-type.mjs +71 -0
  251. package/dist/type/elysia/file.d.ts +9 -0
  252. package/dist/type/elysia/file.js +64 -0
  253. package/dist/type/elysia/file.mjs +48 -0
  254. package/dist/type/elysia/files.d.ts +8 -0
  255. package/dist/type/elysia/files.js +45 -0
  256. package/dist/type/elysia/files.mjs +43 -0
  257. package/dist/type/elysia/form.d.ts +8 -0
  258. package/dist/type/elysia/form.js +17 -0
  259. package/dist/type/elysia/form.mjs +15 -0
  260. package/dist/type/elysia/integer-string.d.ts +7 -0
  261. package/dist/type/elysia/integer-string.js +40 -0
  262. package/dist/type/elysia/integer-string.mjs +38 -0
  263. package/dist/type/elysia/integer.d.ts +6 -0
  264. package/dist/type/elysia/integer.js +20 -0
  265. package/dist/type/elysia/integer.mjs +18 -0
  266. package/dist/type/elysia/intersect.d.ts +6 -0
  267. package/dist/type/elysia/intersect.js +20 -0
  268. package/dist/type/elysia/intersect.mjs +19 -0
  269. package/dist/type/elysia/maybe-empty.d.ts +7 -0
  270. package/dist/type/elysia/maybe-empty.js +21 -0
  271. package/dist/type/elysia/maybe-empty.mjs +19 -0
  272. package/dist/type/elysia/no-validate.d.ts +6 -0
  273. package/dist/type/elysia/no-validate.js +9 -0
  274. package/dist/type/elysia/no-validate.mjs +8 -0
  275. package/dist/type/elysia/nullable.d.ts +7 -0
  276. package/dist/type/elysia/nullable.js +15 -0
  277. package/dist/type/elysia/nullable.mjs +13 -0
  278. package/dist/type/elysia/number.d.ts +6 -0
  279. package/dist/type/elysia/number.js +20 -0
  280. package/dist/type/elysia/number.mjs +18 -0
  281. package/dist/type/elysia/numeric-enum.d.ts +11 -0
  282. package/dist/type/elysia/numeric-enum.js +26 -0
  283. package/dist/type/elysia/numeric-enum.mjs +24 -0
  284. package/dist/type/elysia/numeric.d.ts +7 -0
  285. package/dist/type/elysia/numeric.js +62 -0
  286. package/dist/type/elysia/numeric.mjs +60 -0
  287. package/dist/type/elysia/object-string.d.ts +7 -0
  288. package/dist/type/elysia/object-string.js +28 -0
  289. package/dist/type/elysia/object-string.mjs +26 -0
  290. package/dist/type/elysia/object.d.ts +6 -0
  291. package/dist/type/elysia/object.js +47 -0
  292. package/dist/type/elysia/object.mjs +46 -0
  293. package/dist/type/elysia/optional.d.ts +6 -0
  294. package/dist/type/elysia/optional.js +22 -0
  295. package/dist/type/elysia/optional.mjs +21 -0
  296. package/dist/type/elysia/string.d.ts +6 -0
  297. package/dist/type/elysia/string.js +43 -0
  298. package/dist/type/elysia/string.mjs +41 -0
  299. package/dist/type/elysia/uint8-array.d.ts +6 -0
  300. package/dist/type/elysia/uint8-array.js +27 -0
  301. package/dist/type/elysia/uint8-array.mjs +25 -0
  302. package/dist/type/elysia/union-enum.d.ts +8 -0
  303. package/dist/type/elysia/union-enum.js +31 -0
  304. package/dist/type/elysia/union-enum.mjs +29 -0
  305. package/dist/type/elysia/union.d.ts +6 -0
  306. package/dist/type/elysia/union.js +20 -0
  307. package/dist/type/elysia/union.mjs +19 -0
  308. package/dist/type/elysia/utils.d.ts +53 -0
  309. package/dist/type/elysia/utils.js +98 -0
  310. package/dist/type/elysia/utils.mjs +88 -0
  311. package/dist/type/exports.d.ts +36 -0
  312. package/dist/type/exports.js +68 -0
  313. package/dist/type/exports.mjs +36 -0
  314. package/dist/type/index.d.ts +13 -0
  315. package/dist/type/index.js +81 -0
  316. package/dist/type/index.mjs +68 -0
  317. package/dist/type/shared.d.ts +27 -0
  318. package/dist/type/shared.js +171 -0
  319. package/dist/type/shared.mjs +161 -0
  320. package/dist/type/types.d.ts +206 -0
  321. package/dist/type/types.js +1 -0
  322. package/dist/type/types.mjs +1 -0
  323. package/dist/type/utils.d.ts +7 -0
  324. package/dist/type/utils.js +43 -0
  325. package/dist/type/utils.mjs +41 -0
  326. package/dist/type/validator/clean-safe.d.ts +8 -0
  327. package/dist/type/validator/clean-safe.js +82 -0
  328. package/dist/type/validator/clean-safe.mjs +77 -0
  329. package/dist/type/validator/custom-error.d.ts +10 -0
  330. package/dist/type/validator/custom-error.js +191 -0
  331. package/dist/type/validator/custom-error.mjs +188 -0
  332. package/dist/type/validator/default-precompute.d.ts +26 -0
  333. package/dist/type/validator/default-precompute.js +432 -0
  334. package/dist/type/validator/default-precompute.mjs +421 -0
  335. package/dist/type/validator/exact-mirror.d.ts +7 -0
  336. package/dist/type/validator/exact-mirror.js +19 -0
  337. package/dist/type/validator/exact-mirror.mjs +15 -0
  338. package/dist/type/validator/frozen-check.d.ts +11 -0
  339. package/dist/type/validator/frozen-check.js +20 -0
  340. package/dist/type/validator/frozen-check.mjs +19 -0
  341. package/dist/type/validator/index.d.ts +32 -0
  342. package/dist/type/validator/index.js +657 -0
  343. package/dist/type/validator/index.mjs +651 -0
  344. package/dist/type/validator/string-codec-aot.d.ts +8 -0
  345. package/dist/type/validator/string-codec-aot.js +68 -0
  346. package/dist/type/validator/string-codec-aot.mjs +66 -0
  347. package/dist/type/validator/validator-cache.d.ts +26 -0
  348. package/dist/type/validator/validator-cache.js +247 -0
  349. package/dist/type/validator/validator-cache.mjs +242 -0
  350. package/dist/types.d.ts +938 -1235
  351. package/dist/types.js +1 -14
  352. package/dist/types.mjs +1 -0
  353. package/dist/universal/constants.d.ts +6 -0
  354. package/dist/universal/constants.js +19 -0
  355. package/dist/universal/constants.mjs +15 -0
  356. package/dist/universal/env.d.ts +5 -1
  357. package/dist/universal/env.js +12 -26
  358. package/dist/universal/env.mjs +10 -5
  359. package/dist/universal/file.d.ts +55 -86
  360. package/dist/universal/file.js +116 -157
  361. package/dist/universal/file.mjs +111 -132
  362. package/dist/universal/index.d.ts +5 -3
  363. package/dist/universal/index.js +8 -27
  364. package/dist/universal/index.mjs +4 -5
  365. package/dist/universal/is-production.d.ts +5 -0
  366. package/dist/universal/is-production.js +10 -0
  367. package/dist/universal/is-production.mjs +8 -0
  368. package/dist/universal/server.d.ts +318 -313
  369. package/dist/universal/server.js +1 -14
  370. package/dist/universal/server.mjs +1 -0
  371. package/dist/utils.d.ts +162 -191
  372. package/dist/utils.js +732 -693
  373. package/dist/utils.mjs +683 -631
  374. package/dist/validator/index.d.ts +63 -0
  375. package/dist/validator/index.js +299 -0
  376. package/dist/validator/index.mjs +296 -0
  377. package/dist/validator/route.d.ts +32 -0
  378. package/dist/validator/route.js +51 -0
  379. package/dist/validator/route.mjs +50 -0
  380. package/dist/ws/context.d.ts +49 -0
  381. package/dist/ws/context.js +152 -0
  382. package/dist/ws/context.mjs +150 -0
  383. package/dist/ws/index.d.ts +5 -77
  384. package/dist/ws/index.js +11 -180
  385. package/dist/ws/index.mjs +5 -157
  386. package/dist/ws/parser.d.ts +5 -0
  387. package/dist/ws/parser.js +69 -0
  388. package/dist/ws/parser.mjs +66 -0
  389. package/dist/ws/route.d.ts +16 -0
  390. package/dist/ws/route.js +560 -0
  391. package/dist/ws/route.mjs +554 -0
  392. package/dist/ws/types.d.ts +154 -57
  393. package/dist/ws/types.js +1 -14
  394. package/dist/ws/types.mjs +1 -0
  395. package/package.json +179 -120
  396. package/bunfig.toml +0 -2
  397. package/dist/adapter/bun/compose.d.ts +0 -3
  398. package/dist/adapter/bun/compose.js +0 -90
  399. package/dist/adapter/bun/compose.mjs +0 -74
  400. package/dist/adapter/bun/handler-native.d.ts +0 -3
  401. package/dist/adapter/bun/handler-native.js +0 -42
  402. package/dist/adapter/bun/handler-native.mjs +0 -22
  403. package/dist/adapter/bun/handler.d.ts +0 -7
  404. package/dist/adapter/bun/handler.js +0 -363
  405. package/dist/adapter/bun/handler.mjs +0 -346
  406. package/dist/adapter/cloudflare-worker/index.d.ts +0 -20
  407. package/dist/adapter/cloudflare-worker/index.js +0 -59
  408. package/dist/adapter/cloudflare-worker/index.mjs +0 -39
  409. package/dist/compose.d.ts +0 -30
  410. package/dist/compose.js +0 -1324
  411. package/dist/compose.mjs +0 -1336
  412. package/dist/cookies.d.ts +0 -158
  413. package/dist/cookies.js +0 -250
  414. package/dist/cookies.mjs +0 -221
  415. package/dist/dynamic-handle.d.ts +0 -15
  416. package/dist/dynamic-handle.js +0 -521
  417. package/dist/dynamic-handle.mjs +0 -509
  418. package/dist/formats.d.ts +0 -79
  419. package/dist/formats.js +0 -153
  420. package/dist/formats.mjs +0 -132
  421. package/dist/manifest.d.ts +0 -0
  422. package/dist/manifest.js +0 -1
  423. package/dist/manifest.mjs +0 -0
  424. package/dist/replace-schema.d.ts +0 -60
  425. package/dist/replace-schema.js +0 -140
  426. package/dist/replace-schema.mjs +0 -115
  427. package/dist/schema.d.ts +0 -107
  428. package/dist/schema.js +0 -833
  429. package/dist/schema.mjs +0 -814
  430. package/dist/type-system/format.d.ts +0 -55
  431. package/dist/type-system/format.js +0 -197
  432. package/dist/type-system/format.mjs +0 -175
  433. package/dist/type-system/index.d.ts +0 -45
  434. package/dist/type-system/index.js +0 -406
  435. package/dist/type-system/index.mjs +0 -394
  436. package/dist/type-system/types.d.ts +0 -155
  437. package/dist/type-system/types.js +0 -14
  438. package/dist/type-system/types.mjs +0 -0
  439. package/dist/type-system/utils.d.ts +0 -62
  440. package/dist/type-system/utils.js +0 -141
  441. package/dist/type-system/utils.mjs +0 -111
  442. package/dist/universal/request.d.ts +0 -29
  443. package/dist/universal/request.js +0 -126
  444. package/dist/universal/request.mjs +0 -105
  445. package/dist/universal/types.d.ts +0 -124
  446. package/dist/universal/types.js +0 -41
  447. package/dist/universal/types.mjs +0 -19
  448. package/dist/universal/utils.d.ts +0 -3
  449. package/dist/universal/utils.js +0 -41
  450. package/dist/universal/utils.mjs +0 -18
  451. package/dist/ws/bun.d.ts +0 -419
  452. package/dist/ws/bun.js +0 -14
  453. package/dist/ws/bun.mjs +0 -0
  454. package/knip.json +0 -22
package/dist/compose.js DELETED
@@ -1,1324 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: !0 });
10
- }, __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from == "object" || typeof from == "function")
12
- for (let key of __getOwnPropNames(from))
13
- !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- return to;
15
- };
16
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
- // If the importer is in node compatibility mode or this is not an ESM
18
- // file that has been converted to a CommonJS file using a Babel-
19
- // compatible transform (i.e. "__esModule" has not been set), then set
20
- // "default" to the CommonJS "module.exports" for node compatibility.
21
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
22
- mod
23
- )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
24
- var compose_exports = {};
25
- __export(compose_exports, {
26
- composeErrorHandler: () => composeErrorHandler,
27
- composeGeneralHandler: () => composeGeneralHandler,
28
- composeHandler: () => composeHandler,
29
- createHoc: () => createHoc,
30
- createOnRequestHandler: () => createOnRequestHandler,
31
- isAsync: () => isAsync
32
- });
33
- module.exports = __toCommonJS(compose_exports);
34
- var import_index = require('./index.js'), import_value = require("@sinclair/typebox/value"), import_typebox = require("@sinclair/typebox"), import_fast_decode_uri_component = __toESM(require("fast-decode-uri-component")), import_parse_query = require('./parse-query.js'), import_utils = require('./utils.js'), import_utils2 = require('./universal/utils.js'), import_error = require('./error.js'), import_error2 = require('./error.js'), import_trace = require('./trace.js'), import_schema = require('./schema.js'), import_sucrose = require('./sucrose.js'), import_cookies = require('./cookies.js'), import_utils3 = require('./type-system/utils.js'), import_utils4 = require('./adapter/utils.js'), import_replace_schema = require('./replace-schema.js');
35
- const allocateIf = (value, condition) => condition ? value : "", defaultParsers = [
36
- "json",
37
- "text",
38
- "urlencoded",
39
- "arrayBuffer",
40
- "formdata",
41
- "application/json",
42
- // eslint-disable-next-line sonarjs/no-duplicate-string
43
- "text/plain",
44
- // eslint-disable-next-line sonarjs/no-duplicate-string
45
- "application/x-www-form-urlencoded",
46
- // eslint-disable-next-line sonarjs/no-duplicate-string
47
- "application/octet-stream",
48
- // eslint-disable-next-line sonarjs/no-duplicate-string
49
- "multipart/form-data"
50
- ], createReport = ({
51
- context = "c",
52
- trace = [],
53
- addFn
54
- }) => {
55
- if (!trace.length)
56
- return () => ({
57
- resolveChild() {
58
- return () => {
59
- };
60
- },
61
- resolve() {
62
- }
63
- });
64
- for (let i = 0; i < trace.length; i++)
65
- addFn(
66
- `let report${i},reportChild${i},reportErr${i},reportErrChild${i};let trace${i}=${context}[ELYSIA_TRACE]?.[${i}]??trace[${i}](${context});
67
- `
68
- );
69
- return (event, {
70
- name,
71
- total = 0,
72
- alias
73
- } = {}) => {
74
- name || (name = "anonymous");
75
- const reporter = event === "error" ? "reportErr" : "report";
76
- for (let i = 0; i < trace.length; i++)
77
- addFn(
78
- `${alias ? "const " : ""}${alias ?? reporter}${i}=trace${i}.${event}({id,event:'${event}',name:'${name}',begin:performance.now(),total:${total}})
79
- `
80
- ), alias && addFn(`${reporter}${i}=${alias}${i}
81
- `);
82
- return {
83
- resolve() {
84
- for (let i = 0; i < trace.length; i++)
85
- addFn(`${alias ?? reporter}${i}.resolve()
86
- `);
87
- },
88
- resolveChild(name2) {
89
- for (let i = 0; i < trace.length; i++)
90
- addFn(
91
- `${reporter}Child${i}=${reporter}${i}.resolveChild?.shift()?.({id,event:'${event}',name:'${name2}',begin:performance.now()})
92
- `
93
- );
94
- return (binding) => {
95
- for (let i = 0; i < trace.length; i++)
96
- addFn(
97
- binding ? `if(${binding} instanceof Error){${reporter}Child${i}?.(${binding}) }else{${reporter}Child${i}?.()}` : `${reporter}Child${i}?.()
98
- `
99
- );
100
- };
101
- }
102
- };
103
- };
104
- }, composeCleaner = ({
105
- schema,
106
- name,
107
- type,
108
- typeAlias = type,
109
- normalize,
110
- ignoreTryCatch = !1
111
- }) => !normalize || !schema.Clean ? "" : normalize === !0 || normalize === "exactMirror" ? ignoreTryCatch ? `${name}=validator.${typeAlias}.Clean(${name})
112
- ` : `try{${name}=validator.${typeAlias}.Clean(${name})
113
- }catch{}` : normalize === "typebox" ? `${name}=validator.${typeAlias}.Clean(${name})
114
- ` : "", composeValidationFactory = ({
115
- injectResponse = "",
116
- normalize = !1,
117
- validator,
118
- encodeSchema = !1,
119
- isStaticResponse = !1,
120
- hasSanitize = !1,
121
- allowUnsafeValidationDetails = !1
122
- }) => ({
123
- validate: (type, value = `c.${type}`, error) => `c.set.status=422;throw new ValidationError('${type}',validator.${type},${value},${allowUnsafeValidationDetails}${error ? "," + error : ""})`,
124
- response: (name = "r") => {
125
- if (isStaticResponse || !validator.response) return "";
126
- let code = injectResponse + `
127
- `;
128
- code += `if(${name} instanceof ElysiaCustomStatusResponse){c.set.status=${name}.code
129
- ${name}=${name}.response}if(${name} instanceof Response === false && typeof ${name}?.next !== 'function' && !(${name} instanceof ReadableStream))switch(c.set.status){`;
130
- for (const [status2, value] of Object.entries(validator.response)) {
131
- if (code += `
132
- case ${status2}:
133
- `, value.provider === "standard") {
134
- code += `let vare${status2}=validator.response[${status2}].Check(${name})
135
- if(vare${status2} instanceof Promise)vare${status2}=await vare${status2}
136
- if(vare${status2}.issues)throw new ValidationError('response',validator.response[${status2}],${name},${allowUnsafeValidationDetails},vare${status2}.issues)
137
- ${name}=vare${status2}.value
138
- c.set.status=${status2}
139
- break
140
- `;
141
- continue;
142
- }
143
- let noValidate = value.schema?.noValidate === !0;
144
- if (!noValidate && value.schema?.$ref && value.schema?.$defs) {
145
- const refKey = value.schema.$ref, defKey = typeof refKey == "string" && refKey.includes("/") ? refKey.split("/").pop() : refKey;
146
- value.schema.$defs[defKey]?.noValidate === !0 && (noValidate = !0);
147
- }
148
- const appliedCleaner = noValidate || hasSanitize, clean = ({ ignoreTryCatch = !1 } = {}) => composeCleaner({
149
- name,
150
- schema: value,
151
- type: "response",
152
- typeAlias: `response[${status2}]`,
153
- normalize,
154
- ignoreTryCatch
155
- });
156
- appliedCleaner && (code += clean());
157
- const applyErrorCleaner = !appliedCleaner && normalize && !noValidate;
158
- encodeSchema && value.hasTransform && !noValidate ? (code += `try{${name}=validator.response[${status2}].Encode(${name})
159
- `, appliedCleaner || (code += clean({ ignoreTryCatch: !0 })), code += `c.set.status=${status2}}catch{` + (applyErrorCleaner ? `try{
160
- ` + clean({ ignoreTryCatch: !0 }) + `${name}=validator.response[${status2}].Encode(${name})
161
- }catch{throw new ValidationError('response',validator.response[${status2}],${name},${allowUnsafeValidationDetails})}` : `throw new ValidationError('response',validator.response[${status2}],${name},${allowUnsafeValidationDetails})`) + "}") : (appliedCleaner || (code += clean()), noValidate || (code += `if(validator.response[${status2}].Check(${name})===false)throw new ValidationError('response',validator.response[${status2}],${name},${allowUnsafeValidationDetails})
162
- c.set.status=${status2}
163
- `)), code += `break
164
- `;
165
- }
166
- return code + "}";
167
- }
168
- }), isAsyncName = (v) => (v?.fn ?? v).constructor.name === "AsyncFunction", matchResponseClone = /=>\s?response\.clone\(/, matchFnReturn = /(?:return|=>)\s?\S+\(|a(?:sync|wait)/, isAsync = (v) => {
169
- const isObject = typeof v == "object";
170
- if (isObject && v.isAsync !== void 0) return v.isAsync;
171
- const fn = isObject ? v.fn : v;
172
- if (fn.constructor.name === "AsyncFunction" || fn.constructor.name === "AsyncGeneratorFunction")
173
- return !0;
174
- const literal = fn.toString();
175
- if (matchResponseClone.test(literal))
176
- return isObject && (v.isAsync = !1), !1;
177
- const result = matchFnReturn.test(literal);
178
- return isObject && (v.isAsync = result), result;
179
- }, hasReturn = (v) => {
180
- const isObject = typeof v == "object";
181
- if (isObject && v.hasReturn !== void 0) return v.hasReturn;
182
- const fnLiteral = isObject ? v.fn.toString() : v.toString(), parenthesisEnd = fnLiteral.indexOf(")"), arrowIndex = fnLiteral.indexOf("=>", parenthesisEnd);
183
- if (arrowIndex !== -1) {
184
- let afterArrow = arrowIndex + 2, charCode;
185
- for (; afterArrow < fnLiteral.length && ((charCode = fnLiteral.charCodeAt(afterArrow)) === 32 || // space
186
- charCode === 9 || // tab
187
- charCode === 10 || // newline
188
- charCode === 13); )
189
- afterArrow++;
190
- if (afterArrow < fnLiteral.length && fnLiteral.charCodeAt(afterArrow) !== 123)
191
- return isObject && (v.hasReturn = !0), !0;
192
- }
193
- const result = fnLiteral.includes("return");
194
- return isObject && (v.hasReturn = result), result;
195
- }, isGenerator = (v) => {
196
- const fn = v?.fn ?? v;
197
- return fn.constructor.name === "AsyncGeneratorFunction" || fn.constructor.name === "GeneratorFunction";
198
- }, coerceTransformDecodeError = (fnLiteral, type, allowUnsafeValidationDetails = !1, value = `c.${type}`) => `try{${fnLiteral}}catch(error){if(error.constructor.name === 'TransformDecodeError'){c.set.status=422
199
- throw error.error ?? new ValidationError('${type}',validator.${type},${value},${allowUnsafeValidationDetails})}}`, setImmediateFn = import_utils.hasSetImmediate ? "setImmediate" : "Promise.resolve().then", composeHandler = ({
200
- app,
201
- path,
202
- method,
203
- hooks,
204
- validator,
205
- handler,
206
- allowMeta = !1,
207
- inference
208
- }) => {
209
- const adapter = app["~adapter"].composeHandler, adapterHandler = app["~adapter"].handler, isHandleFn = typeof handler == "function";
210
- if (!isHandleFn) {
211
- handler = adapterHandler.mapResponse(handler, {
212
- // @ts-expect-error private property
213
- headers: app.setHeaders ?? {}
214
- });
215
- const isResponse = handler instanceof Response || // @ts-ignore If it's not instanceof Response, it might be a polyfill (only on Node)
216
- handler?.constructor?.name === "Response" && typeof handler?.clone == "function";
217
- if (hooks.parse?.length && hooks.transform?.length && hooks.beforeHandle?.length && hooks.afterHandle?.length)
218
- return isResponse ? Function(
219
- "a",
220
- `"use strict";
221
- return function(){return a.clone()}`
222
- )(handler) : Function(
223
- "a",
224
- `"use strict";
225
- return function(){return a}`
226
- )(handler);
227
- if (isResponse) {
228
- const response = handler;
229
- handler = () => response.clone();
230
- }
231
- }
232
- const handle = isHandleFn ? "handler(c)" : "handler", hasTrace = !!hooks.trace?.length;
233
- let fnLiteral = "";
234
- if (inference = (0, import_sucrose.sucrose)(
235
- Object.assign({ handler }, hooks),
236
- inference,
237
- app.config.sucrose
238
- ), adapter.declare) {
239
- const literal = adapter.declare(inference);
240
- literal && (fnLiteral += literal);
241
- }
242
- inference.server && (fnLiteral += `Object.defineProperty(c,'server',{get:function(){return getServer()}})
243
- `), validator.createBody?.(), validator.createQuery?.(), validator.createHeaders?.(), validator.createParams?.(), validator.createCookie?.(), validator.createResponse?.();
244
- const hasValidation = !!validator.body || !!validator.headers || !!validator.params || !!validator.query || !!validator.cookie || !!validator.response, hasQuery = inference.query || !!validator.query, requestNoBody = hooks.parse?.length === 1 && // @ts-expect-error
245
- hooks.parse[0].fn === "none", hasBody = method !== "" && method !== "GET" && method !== "HEAD" && (inference.body || !!validator.body || !!hooks.parse?.length) && !requestNoBody, defaultHeaders = app.setHeaders, hasDefaultHeaders = defaultHeaders && !!Object.keys(defaultHeaders).length, hasHeaders = inference.headers || !!validator.headers || adapter.preferWebstandardHeaders !== !0 && inference.body, hasCookie = inference.cookie || !!validator.cookie, cookieMeta = validator.cookie?.config ? (0, import_utils.mergeCookie)(validator?.cookie?.config, app.config.cookie) : app.config.cookie;
246
- let _encodeCookie = "";
247
- const encodeCookie = () => {
248
- if (_encodeCookie) return _encodeCookie;
249
- if (cookieMeta?.sign) {
250
- if (cookieMeta.secrets === "")
251
- throw new Error(
252
- `cookie secret can't be an empty string at (${method}) ${path}`,
253
- {
254
- cause: `(${method}) ${path}`
255
- }
256
- );
257
- if (!cookieMeta.secrets)
258
- throw new Error(
259
- `cookie secret must be defined (${method}) ${path}`,
260
- {
261
- cause: `(${method}) ${path}`
262
- }
263
- );
264
- const secret = cookieMeta.secrets ? typeof cookieMeta.secrets == "string" ? cookieMeta.secrets : cookieMeta.secrets[0] : void 0;
265
- if (_encodeCookie += `const _setCookie = c.set.cookie
266
- if(_setCookie){`, cookieMeta.sign === !0)
267
- _encodeCookie += `for(const [key, cookie] of Object.entries(_setCookie)){c.set.cookie[key].value=await signCookie(cookie.value,${secret ? JSON.stringify(secret) : "undefined"})}`;
268
- else {
269
- typeof cookieMeta.sign == "string" && (cookieMeta.sign = [cookieMeta.sign]);
270
- for (const name of cookieMeta.sign)
271
- _encodeCookie += `if(_setCookie[${JSON.stringify(name)}]?.value)c.set.cookie[${JSON.stringify(name)}].value=await signCookie(_setCookie[${JSON.stringify(name)}].value,${secret ? JSON.stringify(secret) : "undefined"})
272
- `;
273
- }
274
- _encodeCookie += `}
275
- `;
276
- }
277
- return _encodeCookie;
278
- }, normalize = app.config.normalize, encodeSchema = app.config.encodeSchema, allowUnsafeValidationDetails = app.config.allowUnsafeValidationDetails, validation = composeValidationFactory({
279
- normalize,
280
- validator,
281
- encodeSchema,
282
- isStaticResponse: handler instanceof Response,
283
- hasSanitize: !!app.config.sanitize,
284
- allowUnsafeValidationDetails
285
- });
286
- hasHeaders && (fnLiteral += adapter.headers), hasTrace && (fnLiteral += `const id=c[ELYSIA_REQUEST_ID]
287
- `);
288
- const report = createReport({
289
- trace: hooks.trace,
290
- addFn: (word) => {
291
- fnLiteral += word;
292
- }
293
- });
294
- if (fnLiteral += "try{", hasCookie) {
295
- const get = (name, defaultValue) => {
296
- const value = cookieMeta?.[name] ?? defaultValue;
297
- return value === void 0 ? "" : value ? typeof value == "string" ? `${name}:${JSON.stringify(value)},` : value instanceof Date ? `${name}: new Date(${value.getTime()}),` : `${name}:${value},` : typeof defaultValue == "string" ? `${name}:"${defaultValue}",` : `${name}:${defaultValue},`;
298
- }, options = cookieMeta ? `{secrets:${cookieMeta.secrets !== void 0 && cookieMeta.secrets !== null ? typeof cookieMeta.secrets == "string" ? JSON.stringify(cookieMeta.secrets) : "[" + cookieMeta.secrets.map((x) => JSON.stringify(x)).join(",") + "]" : "undefined"},sign:${cookieMeta.sign === !0 ? !0 : cookieMeta.sign !== void 0 ? typeof cookieMeta.sign == "string" ? JSON.stringify(cookieMeta.sign) : "[" + cookieMeta.sign.map((x) => JSON.stringify(x)).join(",") + "]" : "undefined"},` + get("domain") + get("expires") + get("httpOnly") + get("maxAge") + get("path", "/") + get("priority") + get("sameSite") + get("secure") + "}" : "undefined";
299
- hasHeaders ? fnLiteral += `
300
- c.cookie=await parseCookie(c.set,c.headers.cookie,${options})
301
- ` : fnLiteral += `
302
- c.cookie=await parseCookie(c.set,c.request.headers.get('cookie'),${options})
303
- `;
304
- }
305
- if (hasQuery) {
306
- let arrayProperties = {}, objectProperties = {}, hasArrayProperty = !1, hasObjectProperty = !1;
307
- if (validator.query?.schema) {
308
- const schema = (0, import_schema.unwrapImportSchema)(validator.query?.schema), properties = (0, import_schema.getSchemaProperties)(schema);
309
- if (properties)
310
- for (const [key, value] of Object.entries(properties))
311
- (0, import_schema.hasElysiaMeta)("ArrayQuery", value) && (arrayProperties[key] = !0, hasArrayProperty = !0), (0, import_schema.hasElysiaMeta)("ObjectString", value) && (objectProperties[key] = !0, hasObjectProperty = !0);
312
- }
313
- fnLiteral += `if(c.qi===-1){c.query=Object.create(null)}else{c.query=parseQueryFromURL(c.url,c.qi+1${//
314
- hasArrayProperty ? "," + JSON.stringify(arrayProperties) : hasObjectProperty ? ",undefined" : ""}${//
315
- hasObjectProperty ? "," + JSON.stringify(objectProperties) : ""})}`;
316
- }
317
- const isAsyncHandler = typeof handler == "function" && isAsync(handler), saveResponse = hasTrace || hooks.afterResponse?.length ? "c.response=c.responseValue= " : "", responseKeys = Object.keys(validator.response ?? {}), hasMultipleResponses = responseKeys.length > 1, hasSingle200 = responseKeys.length === 0 || responseKeys.length === 1 && responseKeys[0] === "200", maybeAsync = hasCookie || hasBody || isAsyncHandler || !!hooks.parse?.length || !!hooks.afterHandle?.some(isAsync) || !!hooks.beforeHandle?.some(isAsync) || !!hooks.transform?.some(isAsync) || !!hooks.mapResponse?.some(isAsync) || validator.body?.provider === "standard" || validator.headers?.provider === "standard" || validator.query?.provider === "standard" || validator.params?.provider === "standard" || validator.cookie?.provider === "standard" || Object.values(validator.response ?? {}).find(
318
- (x) => x.provider === "standard"
319
- ), maybeStream = (typeof handler == "function" ? isGenerator(handler) : !1) || !!hooks.beforeHandle?.some(isGenerator) || !!hooks.afterHandle?.some(isGenerator) || !!hooks.transform?.some(isGenerator), hasSet = inference.cookie || inference.set || hasHeaders || hasTrace || hasMultipleResponses || !hasSingle200 || isHandleFn && hasDefaultHeaders || maybeStream;
320
- let _afterResponse;
321
- const afterResponse = (hasStream = !0) => {
322
- if (_afterResponse !== void 0) return _afterResponse;
323
- if (!hooks.afterResponse?.length && !hasTrace) return "";
324
- let afterResponse2 = "";
325
- afterResponse2 += `
326
- ${setImmediateFn}(async()=>{if(c.responseValue){if(c.responseValue instanceof ElysiaCustomStatusResponse) c.set.status=c.responseValue.code
327
- ` + (hasStream ? `if(typeof afterHandlerStreamListener!=='undefined')for await(const v of afterHandlerStreamListener){}
328
- ` : "") + `}
329
- `;
330
- const reporter = createReport({
331
- trace: hooks.trace,
332
- addFn: (word) => {
333
- afterResponse2 += word;
334
- }
335
- })("afterResponse", {
336
- total: hooks.afterResponse?.length
337
- });
338
- if (hooks.afterResponse?.length && hooks.afterResponse)
339
- for (let i = 0; i < hooks.afterResponse.length; i++) {
340
- const endUnit = reporter.resolveChild(
341
- hooks.afterResponse[i].fn.name
342
- ), prefix = isAsync(hooks.afterResponse[i]) ? "await " : "";
343
- afterResponse2 += `
344
- ${prefix}e.afterResponse[${i}](c)
345
- `, endUnit();
346
- }
347
- return reporter.resolve(), afterResponse2 += `})
348
- `, _afterResponse = afterResponse2;
349
- }, mapResponse = (r = "r") => {
350
- const after = afterResponse(), response = `${maybeStream && maybeAsync ? "await " : ""}${hasSet ? "mapResponse" : "mapCompactResponse"}(${saveResponse}${r}${hasSet ? ",c.set" : ""}${mapResponseContext})
351
- `;
352
- return after ? `const _res=${response}` + after + "return _res" : `return ${response}`;
353
- }, mapResponseContext = adapter.mapResponseContext ? `,${adapter.mapResponseContext}` : "";
354
- (hasTrace || inference.route) && (fnLiteral += `c.route=\`${path}\`
355
- `), (hasTrace || hooks.afterResponse?.length) && (fnLiteral += `let afterHandlerStreamListener
356
- `);
357
- const parseReporter = report("parse", {
358
- total: hooks.parse?.length
359
- });
360
- if (hasBody) {
361
- const hasBodyInference = !!hooks.parse?.length || inference.body || validator.body;
362
- adapter.parser.declare && (fnLiteral += adapter.parser.declare), fnLiteral += `
363
- try{`;
364
- let parser = typeof hooks.parse == "string" ? hooks.parse : Array.isArray(hooks.parse) && hooks.parse.length === 1 ? typeof hooks.parse[0] == "string" ? hooks.parse[0] : typeof hooks.parse[0].fn == "string" ? hooks.parse[0].fn : void 0 : void 0;
365
- if (!parser && validator.body && !hooks.parse?.length) {
366
- const schema = validator.body.schema;
367
- schema && schema.anyOf && schema[import_typebox.Kind] === "Union" && schema.anyOf?.length === 2 && schema.anyOf?.find((x) => x[import_typebox.Kind] === "ElysiaForm") && (parser = "formdata");
368
- }
369
- if (parser && defaultParsers.includes(parser)) {
370
- const reporter = report("parse", {
371
- total: hooks.parse?.length
372
- }), isOptionalBody = !!validator.body?.isOptional;
373
- switch (parser) {
374
- case "json":
375
- case "application/json":
376
- fnLiteral += adapter.parser.json(isOptionalBody);
377
- break;
378
- case "text":
379
- case "text/plain":
380
- fnLiteral += adapter.parser.text(isOptionalBody);
381
- break;
382
- case "urlencoded":
383
- case "application/x-www-form-urlencoded":
384
- fnLiteral += adapter.parser.urlencoded(isOptionalBody);
385
- break;
386
- case "arrayBuffer":
387
- case "application/octet-stream":
388
- fnLiteral += adapter.parser.arrayBuffer(isOptionalBody);
389
- break;
390
- case "formdata":
391
- case "multipart/form-data":
392
- fnLiteral += adapter.parser.formData(isOptionalBody);
393
- break;
394
- default:
395
- parser in app["~parser"] && (fnLiteral += hasHeaders ? "let contentType = c.headers['content-type']" : "let contentType = c.request.headers.get('content-type')", fnLiteral += `
396
- if(contentType){const index=contentType.indexOf(';')
397
- if(index!==-1)contentType=contentType.substring(0,index)}
398
- else{contentType=''}c.contentType=contentType
399
- let result=parser['${parser}'](c, contentType)
400
- if(result instanceof Promise)result=await result
401
- if(result instanceof ElysiaCustomStatusResponse)throw result
402
- if(result!==undefined)c.body=result
403
- delete c.contentType
404
- `);
405
- break;
406
- }
407
- reporter.resolve();
408
- } else if (hasBodyInference) {
409
- fnLiteral += `
410
- `, fnLiteral += `let contentType
411
- if(c.request.body)`, fnLiteral += hasHeaders ? `contentType=c.headers['content-type']
412
- ` : `contentType=c.request.headers.get('content-type')
413
- `;
414
- let hasDefaultParser = !1;
415
- if (hooks.parse?.length)
416
- fnLiteral += `if(contentType){
417
- const index=contentType.indexOf(';')
418
-
419
- if(index!==-1)contentType=contentType.substring(0,index)}else{contentType=''}let used=false
420
- c.contentType=contentType
421
- `;
422
- else {
423
- hasDefaultParser = !0;
424
- const isOptionalBody = !!validator.body?.isOptional;
425
- fnLiteral += `if(contentType)switch(contentType.charCodeAt(12)){
426
- case 106:` + adapter.parser.json(isOptionalBody) + `break
427
- case 120:` + adapter.parser.urlencoded(isOptionalBody) + `break
428
- case 111:` + adapter.parser.arrayBuffer(isOptionalBody) + `break
429
- case 114:` + adapter.parser.formData(isOptionalBody) + `break
430
- default:if(contentType.charCodeAt(0)===116){` + adapter.parser.text(isOptionalBody) + `}break
431
- }`;
432
- }
433
- const reporter = report("parse", {
434
- total: hooks.parse?.length
435
- });
436
- if (hooks.parse)
437
- for (let i = 0; i < hooks.parse.length; i++) {
438
- const name = `bo${i}`;
439
- if (i !== 0 && (fnLiteral += `
440
- if(!used){`), typeof hooks.parse[i].fn == "string") {
441
- const endUnit = reporter.resolveChild(
442
- hooks.parse[i].fn
443
- ), isOptionalBody = !!validator.body?.isOptional;
444
- switch (hooks.parse[i].fn) {
445
- case "json":
446
- case "application/json":
447
- hasDefaultParser = !0, fnLiteral += adapter.parser.json(isOptionalBody);
448
- break;
449
- case "text":
450
- case "text/plain":
451
- hasDefaultParser = !0, fnLiteral += adapter.parser.text(isOptionalBody);
452
- break;
453
- case "urlencoded":
454
- case "application/x-www-form-urlencoded":
455
- hasDefaultParser = !0, fnLiteral += adapter.parser.urlencoded(isOptionalBody);
456
- break;
457
- case "arrayBuffer":
458
- case "application/octet-stream":
459
- hasDefaultParser = !0, fnLiteral += adapter.parser.arrayBuffer(isOptionalBody);
460
- break;
461
- case "formdata":
462
- case "multipart/form-data":
463
- hasDefaultParser = !0, fnLiteral += adapter.parser.formData(isOptionalBody);
464
- break;
465
- default:
466
- fnLiteral += `let ${name}=parser['${hooks.parse[i].fn}'](c,contentType)
467
- if(${name} instanceof Promise)${name}=await ${name}
468
- if(${name}!==undefined){c.body=${name};used=true;}
469
- `;
470
- }
471
- endUnit();
472
- } else {
473
- const endUnit = reporter.resolveChild(
474
- hooks.parse[i].fn.name
475
- );
476
- fnLiteral += `let ${name}=e.parse[${i}]
477
- ${name}=${name}(c,contentType)
478
- if(${name} instanceof Promise)${name}=await ${name}
479
- if(${name}!==undefined){c.body=${name};used=true}`, endUnit();
480
- }
481
- if (i !== 0 && (fnLiteral += "}"), hasDefaultParser) break;
482
- }
483
- if (reporter.resolve(), !hasDefaultParser) {
484
- const isOptionalBody = !!validator.body?.isOptional;
485
- hooks.parse?.length && (fnLiteral += `
486
- if(!used){
487
- `), fnLiteral += `switch(contentType){case 'application/json':
488
- ` + adapter.parser.json(isOptionalBody) + `break
489
- case 'text/plain':` + adapter.parser.text(isOptionalBody) + `break
490
- case 'application/x-www-form-urlencoded':` + adapter.parser.urlencoded(isOptionalBody) + `break
491
- case 'application/octet-stream':` + adapter.parser.arrayBuffer(isOptionalBody) + `break
492
- case 'multipart/form-data':` + adapter.parser.formData(isOptionalBody) + `break
493
- `;
494
- for (const key of Object.keys(app["~parser"]))
495
- fnLiteral += `case '${key}':let bo${key}=parser['${key}'](c,contentType)
496
- if(bo${key} instanceof Promise)bo${key}=await bo${key}
497
- if(bo${key} instanceof ElysiaCustomStatusResponse){` + mapResponse(`bo${key}`) + `}if(bo${key}!==undefined)c.body=bo${key}
498
- break
499
- `;
500
- hooks.parse?.length && (fnLiteral += "}"), fnLiteral += "}";
501
- }
502
- hooks.parse?.length && (fnLiteral += `
503
- delete c.contentType`);
504
- }
505
- fnLiteral += "}catch(error){throw new ParseError(error)}";
506
- }
507
- if (parseReporter.resolve(), hooks?.transform || hasTrace) {
508
- const reporter = report("transform", {
509
- total: hooks.transform?.length
510
- });
511
- if (hooks.transform?.length) {
512
- fnLiteral += `let transformed
513
- `;
514
- for (let i = 0; i < hooks.transform.length; i++) {
515
- const transform = hooks.transform[i], endUnit = reporter.resolveChild(transform.fn.name);
516
- fnLiteral += isAsync(transform) ? `transformed=await e.transform[${i}](c)
517
- ` : `transformed=e.transform[${i}](c)
518
- `, transform.subType === "mapDerive" ? fnLiteral += "if(transformed instanceof ElysiaCustomStatusResponse){" + mapResponse("transformed") + `}else{transformed.request=c.request
519
- transformed.store=c.store
520
- transformed.qi=c.qi
521
- transformed.path=c.path
522
- transformed.url=c.url
523
- transformed.redirect=c.redirect
524
- transformed.set=c.set
525
- transformed.error=c.error
526
- c=transformed}` : fnLiteral += "if(transformed instanceof ElysiaCustomStatusResponse){" + mapResponse("transformed") + `}else Object.assign(c,transformed)
527
- `, endUnit();
528
- }
529
- }
530
- reporter.resolve();
531
- }
532
- const fileUnions = [];
533
- if (validator) {
534
- if (validator.headers) {
535
- if (validator.headers.hasDefault)
536
- for (const [key, value] of Object.entries(
537
- import_value.Value.Default(
538
- // @ts-ignore
539
- validator.headers.schema,
540
- {}
541
- )
542
- )) {
543
- const parsed = typeof value == "object" ? JSON.stringify(value) : typeof value == "string" ? `'${value}'` : value;
544
- parsed !== void 0 && (fnLiteral += `c.headers['${key}']??=${parsed}
545
- `);
546
- }
547
- fnLiteral += composeCleaner({
548
- name: "c.headers",
549
- schema: validator.headers,
550
- type: "headers",
551
- normalize
552
- }), validator.headers.isOptional && (fnLiteral += "if(isNotEmpty(c.headers)){"), validator.headers?.provider === "standard" ? fnLiteral += `let vah=validator.headers.Check(c.headers)
553
- if(vah instanceof Promise)vah=await vah
554
- if(vah.issues){` + validation.validate("headers", void 0, "vah.issues") + `}else{c.headers=vah.value}
555
- ` : validator.headers?.schema?.noValidate !== !0 && (fnLiteral += "if(validator.headers.Check(c.headers) === false){" + validation.validate("headers") + "}"), validator.headers.hasTransform && (fnLiteral += coerceTransformDecodeError(
556
- `c.headers=validator.headers.Decode(c.headers)
557
- `,
558
- "headers",
559
- allowUnsafeValidationDetails
560
- )), validator.headers.isOptional && (fnLiteral += "}");
561
- }
562
- if (validator.params) {
563
- if (validator.params.hasDefault)
564
- for (const [key, value] of Object.entries(
565
- import_value.Value.Default(
566
- // @ts-ignore
567
- validator.params.schema,
568
- {}
569
- )
570
- )) {
571
- const parsed = typeof value == "object" ? JSON.stringify(value) : typeof value == "string" ? `'${value}'` : value;
572
- parsed !== void 0 && (fnLiteral += `c.params['${key}']??=${parsed}
573
- `);
574
- }
575
- validator.params.provider === "standard" ? fnLiteral += `let vap=validator.params.Check(c.params)
576
- if(vap instanceof Promise)vap=await vap
577
- if(vap.issues){` + validation.validate("params", void 0, "vap.issues") + `}else{c.params=vap.value}
578
- ` : validator.params?.schema?.noValidate !== !0 && (fnLiteral += "if(validator.params.Check(c.params)===false){" + validation.validate("params") + "}"), validator.params.hasTransform && (fnLiteral += coerceTransformDecodeError(
579
- `c.params=validator.params.Decode(c.params)
580
- `,
581
- "params",
582
- allowUnsafeValidationDetails
583
- ));
584
- }
585
- if (validator.query) {
586
- if (import_typebox.Kind in validator.query?.schema && validator.query.hasDefault)
587
- for (const [key, value] of Object.entries(
588
- import_value.Value.Default(
589
- // @ts-ignore
590
- validator.query.schema,
591
- {}
592
- )
593
- )) {
594
- const parsed = typeof value == "object" ? JSON.stringify(value) : typeof value == "string" ? `'${value}'` : value;
595
- parsed !== void 0 && (fnLiteral += `if(c.query['${key}']===undefined)c.query['${key}']=${parsed}
596
- `);
597
- }
598
- fnLiteral += composeCleaner({
599
- name: "c.query",
600
- schema: validator.query,
601
- type: "query",
602
- normalize
603
- }), validator.query.isOptional && (fnLiteral += "if(isNotEmpty(c.query)){"), validator.query.provider === "standard" ? fnLiteral += `let vaq=validator.query.Check(c.query)
604
- if(vaq instanceof Promise)vaq=await vaq
605
- if(vaq.issues){` + validation.validate("query", void 0, "vaq.issues") + `}else{c.query=vaq.value}
606
- ` : validator.query?.schema?.noValidate !== !0 && (fnLiteral += "if(validator.query.Check(c.query)===false){" + validation.validate("query") + "}"), validator.query.hasTransform && (fnLiteral += coerceTransformDecodeError(
607
- `c.query=validator.query.Decode(c.query)
608
- `,
609
- "query",
610
- allowUnsafeValidationDetails
611
- ), fnLiteral += coerceTransformDecodeError(
612
- `c.query=validator.query.Decode(c.query)
613
- `,
614
- "query",
615
- allowUnsafeValidationDetails
616
- )), validator.query.isOptional && (fnLiteral += "}");
617
- }
618
- if (hasBody && validator.body) {
619
- (validator.body.hasTransform || validator.body.isOptional) && (fnLiteral += `const isNotEmptyObject=c.body&&(typeof c.body==="object"&&(isNotEmpty(c.body)||c.body instanceof ArrayBuffer))
620
- `);
621
- const hasUnion = (0, import_schema.isUnion)(validator.body.schema);
622
- let hasNonUnionFileWithDefault = !1;
623
- if (validator.body.hasDefault) {
624
- let value = import_value.Value.Default(
625
- validator.body.schema,
626
- validator.body.schema.type === "object" || (0, import_schema.unwrapImportSchema)(validator.body.schema)[import_typebox.Kind] === "Object" ? {} : void 0
627
- );
628
- const schema = (0, import_schema.unwrapImportSchema)(validator.body.schema);
629
- if (!hasUnion && value && typeof value == "object" && ((0, import_schema.hasType)("File", schema) || (0, import_schema.hasType)("Files", schema))) {
630
- hasNonUnionFileWithDefault = !0;
631
- for (const [k, v] of Object.entries(value))
632
- (v === "File" || v === "Files") && delete value[k];
633
- (0, import_utils.isNotEmpty)(value) || (value = void 0);
634
- }
635
- const parsed = typeof value == "object" ? JSON.stringify(value) : typeof value == "string" ? `'${value}'` : value;
636
- value != null && (Array.isArray(value) ? fnLiteral += `if(!c.body)c.body=${parsed}
637
- ` : typeof value == "object" ? fnLiteral += `c.body=Object.assign(${parsed},c.body)
638
- ` : fnLiteral += `c.body=${parsed}
639
- `), fnLiteral += composeCleaner({
640
- name: "c.body",
641
- schema: validator.body,
642
- type: "body",
643
- normalize
644
- }), validator.body.provider === "standard" ? fnLiteral += `let vab=validator.body.Check(c.body)
645
- if(vab instanceof Promise)vab=await vab
646
- if(vab.issues){` + validation.validate("body", void 0, "vab.issues") + `}else{c.body=vab.value}
647
- ` : validator.body?.schema?.noValidate !== !0 && (validator.body.isOptional ? fnLiteral += "if(isNotEmptyObject&&validator.body.Check(c.body)===false){" + validation.validate("body") + "}" : fnLiteral += "if(validator.body.Check(c.body)===false){" + validation.validate("body") + "}");
648
- } else
649
- fnLiteral += composeCleaner({
650
- name: "c.body",
651
- schema: validator.body,
652
- type: "body",
653
- normalize
654
- }), validator.body.provider === "standard" ? fnLiteral += `let vab=validator.body.Check(c.body)
655
- if(vab instanceof Promise)vab=await vab
656
- if(vab.issues){` + validation.validate("body", void 0, "vab.issues") + `}else{c.body=vab.value}
657
- ` : validator.body?.schema?.noValidate !== !0 && (validator.body.isOptional ? fnLiteral += "if(isNotEmptyObject&&validator.body.Check(c.body)===false){" + validation.validate("body") + "}" : fnLiteral += "if(validator.body.Check(c.body)===false){" + validation.validate("body") + "}");
658
- if (validator.body.hasTransform && (fnLiteral += coerceTransformDecodeError(
659
- `if(isNotEmptyObject)c.body=validator.body.Decode(c.body)
660
- `,
661
- "body",
662
- allowUnsafeValidationDetails
663
- )), hasUnion && validator.body.schema.anyOf?.length) {
664
- const iterator = Object.values(
665
- validator.body.schema.anyOf
666
- );
667
- for (let i = 0; i < iterator.length; i++) {
668
- const type = iterator[i];
669
- if ((0, import_schema.hasType)("File", type) || (0, import_schema.hasType)("Files", type)) {
670
- const candidate = (0, import_schema.getSchemaValidator)(type, {
671
- // @ts-expect-error private property
672
- modules: app.definitions.typebox,
673
- dynamic: !app.config.aot,
674
- // @ts-expect-error private property
675
- models: app.definitions.type,
676
- normalize: app.config.normalize,
677
- additionalCoerce: (0, import_replace_schema.coercePrimitiveRoot)(),
678
- sanitize: () => app.config.sanitize
679
- });
680
- if (candidate) {
681
- const isFirst = fileUnions.length === 0, properties = (0, import_schema.getSchemaProperties)(candidate.schema) ?? (0, import_schema.getSchemaProperties)(type);
682
- if (!properties) continue;
683
- const iterator2 = Object.entries(properties);
684
- let validator2 = isFirst ? `
685
- ` : " else ";
686
- validator2 += `if(fileUnions[${fileUnions.length}].Check(c.body)){`;
687
- let validateFile = "", validatorLength = 0;
688
- for (let i2 = 0; i2 < iterator2.length; i2++) {
689
- const [k, v] = iterator2[i2];
690
- !v.extension || v[import_typebox.Kind] !== "File" && v[import_typebox.Kind] !== "Files" || (validatorLength && (validateFile += ","), validateFile += `fileType(c.body.${k},${JSON.stringify(v.extension)},'body.${k}')`, validatorLength++);
691
- }
692
- validateFile && (validatorLength === 1 ? validator2 += `await ${validateFile}
693
- ` : validatorLength > 1 && (validator2 += `await Promise.all([${validateFile}])
694
- `), validator2 += "}", fnLiteral += validator2, fileUnions.push(candidate));
695
- }
696
- }
697
- }
698
- } else if (hasNonUnionFileWithDefault || !hasUnion && ((0, import_schema.hasType)(
699
- "File",
700
- (0, import_schema.unwrapImportSchema)(validator.body.schema)
701
- ) || (0, import_schema.hasType)(
702
- "Files",
703
- (0, import_schema.unwrapImportSchema)(validator.body.schema)
704
- ))) {
705
- let validateFile = "";
706
- const bodyProperties = (0, import_schema.getSchemaProperties)(
707
- (0, import_schema.unwrapImportSchema)(validator.body.schema)
708
- );
709
- let i = 0;
710
- if (bodyProperties)
711
- for (const [k, v] of Object.entries(bodyProperties))
712
- !v.extension || v[import_typebox.Kind] !== "File" && v[import_typebox.Kind] !== "Files" || (i && (validateFile += ","), validateFile += `fileType(c.body.${k},${JSON.stringify(v.extension)},'body.${k}')`, i++);
713
- i && (fnLiteral += `
714
- `), i === 1 ? fnLiteral += `await ${validateFile}
715
- ` : i > 1 && (fnLiteral += `await Promise.all([${validateFile}])
716
- `);
717
- }
718
- }
719
- validator.cookie && (validator.cookie.config = (0, import_utils.mergeCookie)(
720
- validator.cookie.config,
721
- app.config.cookie ?? {}
722
- ), fnLiteral += `let cookieValue={}
723
- for(const [key,value] of Object.entries(c.cookie))cookieValue[key]=value.value
724
- `, validator.cookie.isOptional && (fnLiteral += "if(isNotEmpty(c.cookie)){"), validator.cookie.provider === "standard" ? (fnLiteral += `let vac=validator.cookie.Check(cookieValue)
725
- if(vac instanceof Promise)vac=await vac
726
- if(vac.issues){` + validation.validate("cookie", void 0, "vac.issues") + `}else{cookieValue=vac.value}
727
- `, fnLiteral += `for(const k of Object.keys(cookieValue))c.cookie[k].value=cookieValue[k]
728
- `) : validator.cookie?.schema?.noValidate !== !0 && (fnLiteral += "if(validator.cookie.Check(cookieValue)===false){" + validation.validate("cookie", "cookieValue") + "}", validator.cookie.hasTransform && (fnLiteral += coerceTransformDecodeError(
729
- "for(const [key,value] of Object.entries(validator.cookie.Decode(cookieValue))){c.cookie[key].value = value}",
730
- "cookie",
731
- allowUnsafeValidationDetails
732
- ))), validator.cookie.isOptional && (fnLiteral += "}"));
733
- }
734
- if (hooks?.beforeHandle || hasTrace) {
735
- const reporter = report("beforeHandle", {
736
- total: hooks.beforeHandle?.length
737
- });
738
- let hasResolve = !1;
739
- if (hooks.beforeHandle?.length)
740
- for (let i = 0; i < hooks.beforeHandle.length; i++) {
741
- const beforeHandle = hooks.beforeHandle[i], endUnit = reporter.resolveChild(beforeHandle.fn.name), returning = hasReturn(beforeHandle);
742
- if (beforeHandle.subType === "resolve" || beforeHandle.subType === "mapResolve")
743
- hasResolve || (hasResolve = !0, fnLiteral += `
744
- let resolved
745
- `), fnLiteral += isAsync(beforeHandle) ? `resolved=await e.beforeHandle[${i}](c);
746
- ` : `resolved=e.beforeHandle[${i}](c);
747
- `, beforeHandle.subType === "mapResolve" ? fnLiteral += "if(resolved instanceof ElysiaCustomStatusResponse){" + mapResponse("resolved") + `}else{resolved.request=c.request
748
- resolved.store=c.store
749
- resolved.qi=c.qi
750
- resolved.path=c.path
751
- resolved.url=c.url
752
- resolved.redirect=c.redirect
753
- resolved.set=c.set
754
- resolved.error=c.error
755
- c=resolved}` : fnLiteral += "if(resolved instanceof ElysiaCustomStatusResponse){" + mapResponse("resolved") + `}else Object.assign(c, resolved)
756
- `, endUnit();
757
- else if (!returning)
758
- fnLiteral += isAsync(beforeHandle) ? `await e.beforeHandle[${i}](c)
759
- ` : `e.beforeHandle[${i}](c)
760
- `, endUnit();
761
- else {
762
- if (fnLiteral += isAsync(beforeHandle) ? `be=await e.beforeHandle[${i}](c)
763
- ` : `be=e.beforeHandle[${i}](c)
764
- `, endUnit("be"), fnLiteral += "if(be!==undefined){", reporter.resolve(), hooks.afterHandle?.length || hasTrace) {
765
- report("handle", {
766
- name: isHandleFn ? handler.name : void 0
767
- }).resolve();
768
- const reporter2 = report("afterHandle", {
769
- total: hooks.afterHandle?.length
770
- });
771
- if (hooks.afterHandle?.length)
772
- for (let i2 = 0; i2 < hooks.afterHandle.length; i2++) {
773
- const hook = hooks.afterHandle[i2], returning2 = hasReturn(hook), endUnit2 = reporter2.resolveChild(
774
- hook.fn.name
775
- );
776
- fnLiteral += `c.response=c.responseValue=be
777
- `, returning2 ? (fnLiteral += isAsync(hook.fn) ? `af=await e.afterHandle[${i2}](c)
778
- ` : `af=e.afterHandle[${i2}](c)
779
- `, fnLiteral += `if(af!==undefined) c.response=c.responseValue=be=af
780
- `) : fnLiteral += isAsync(hook.fn) ? `await e.afterHandle[${i2}](c, be)
781
- ` : `e.afterHandle[${i2}](c, be)
782
- `, endUnit2("af");
783
- }
784
- reporter2.resolve();
785
- }
786
- validator.response && (fnLiteral += validation.response("be"));
787
- const mapResponseReporter = report("mapResponse", {
788
- total: hooks.mapResponse?.length
789
- });
790
- if (hooks.mapResponse?.length) {
791
- fnLiteral += `c.response=c.responseValue=be
792
- `;
793
- for (let i2 = 0; i2 < hooks.mapResponse.length; i2++) {
794
- const mapResponse2 = hooks.mapResponse[i2], endUnit2 = mapResponseReporter.resolveChild(
795
- mapResponse2.fn.name
796
- );
797
- fnLiteral += `if(mr===undefined){mr=${isAsyncName(mapResponse2) ? "await " : ""}e.mapResponse[${i2}](c)
798
- if(mr!==undefined)be=c.response=c.responseValue=mr}`, endUnit2();
799
- }
800
- }
801
- mapResponseReporter.resolve(), fnLiteral += afterResponse(), fnLiteral += encodeCookie(), fnLiteral += `return mapEarlyResponse(${saveResponse}be,c.set${mapResponseContext})}
802
- `;
803
- }
804
- }
805
- reporter.resolve();
806
- }
807
- function reportHandler(name) {
808
- const handleReporter = report("handle", {
809
- name,
810
- alias: "reportHandler"
811
- });
812
- return () => {
813
- hasTrace && (fnLiteral += 'if(r&&(r[Symbol.iterator]||r[Symbol.asyncIterator])&&typeof r.next==="function"){' + (maybeAsync ? "" : "(async()=>{") + `const stream=await tee(r,3)
814
- r=stream[0]
815
- ` + (hooks.afterHandle?.length ? `c.response=c.responseValue=r
816
- ` : "") + `const listener=stream[1]
817
- ` + (hasTrace || hooks.afterResponse?.length ? `afterHandlerStreamListener=stream[2]
818
- ` : "") + `${setImmediateFn}(async ()=>{if(listener)for await(const v of listener){}
819
- `, handleReporter.resolve(), fnLiteral += "})" + (maybeAsync ? "" : "})()") + "}else{", handleReporter.resolve(), fnLiteral += `}
820
- `);
821
- };
822
- }
823
- if (hooks.afterHandle?.length || hasTrace) {
824
- const resolveHandler = reportHandler(
825
- isHandleFn ? handler.name : void 0
826
- );
827
- hooks.afterHandle?.length ? fnLiteral += isAsyncHandler ? `let r=c.response=c.responseValue=await ${handle}
828
- ` : `let r=c.response=c.responseValue=${handle}
829
- ` : fnLiteral += isAsyncHandler ? `let r=await ${handle}
830
- ` : `let r=${handle}
831
- `, resolveHandler();
832
- const reporter = report("afterHandle", {
833
- total: hooks.afterHandle?.length
834
- });
835
- if (hooks.afterHandle?.length)
836
- for (let i = 0; i < hooks.afterHandle.length; i++) {
837
- const hook = hooks.afterHandle[i], returning = hasReturn(hook), endUnit = reporter.resolveChild(hook.fn.name);
838
- returning ? (fnLiteral += isAsync(hook.fn) ? `af=await e.afterHandle[${i}](c)
839
- ` : `af=e.afterHandle[${i}](c)
840
- `, endUnit("af"), validator.response ? (fnLiteral += "if(af!==undefined){", reporter.resolve(), fnLiteral += validation.response("af"), fnLiteral += "c.response=c.responseValue=af}") : (fnLiteral += "if(af!==undefined){", reporter.resolve(), fnLiteral += "c.response=c.responseValue=af}")) : (fnLiteral += isAsync(hook.fn) ? `await e.afterHandle[${i}](c)
841
- ` : `e.afterHandle[${i}](c)
842
- `, endUnit());
843
- }
844
- reporter.resolve(), hooks.afterHandle?.length && (fnLiteral += `r=c.response
845
- `), validator.response && (fnLiteral += validation.response()), fnLiteral += encodeCookie();
846
- const mapResponseReporter = report("mapResponse", {
847
- total: hooks.mapResponse?.length
848
- });
849
- if (hooks.mapResponse?.length)
850
- for (let i = 0; i < hooks.mapResponse.length; i++) {
851
- const mapResponse2 = hooks.mapResponse[i], endUnit = mapResponseReporter.resolveChild(
852
- mapResponse2.fn.name
853
- );
854
- fnLiteral += `mr=${isAsyncName(mapResponse2) ? "await " : ""}e.mapResponse[${i}](c)
855
- if(mr!==undefined)r=c.response=c.responseValue=mr
856
- `, endUnit();
857
- }
858
- mapResponseReporter.resolve(), fnLiteral += mapResponse();
859
- } else {
860
- const resolveHandler = reportHandler(
861
- isHandleFn ? handler.name : void 0
862
- );
863
- if (validator.response || hooks.mapResponse?.length || hasTrace) {
864
- fnLiteral += isAsyncHandler ? `let r=await ${handle}
865
- ` : `let r=${handle}
866
- `, resolveHandler(), validator.response && (fnLiteral += validation.response());
867
- const mapResponseReporter = report("mapResponse", {
868
- total: hooks.mapResponse?.length
869
- });
870
- if (hooks.mapResponse?.length) {
871
- fnLiteral += `
872
- c.response=c.responseValue=r
873
- `;
874
- for (let i = 0; i < hooks.mapResponse.length; i++) {
875
- const mapResponse2 = hooks.mapResponse[i], endUnit = mapResponseReporter.resolveChild(
876
- mapResponse2.fn.name
877
- );
878
- fnLiteral += `
879
- if(mr===undefined){mr=${isAsyncName(mapResponse2) ? "await " : ""}e.mapResponse[${i}](c)
880
- if(mr!==undefined)r=c.response=c.responseValue=mr}
881
- `, endUnit();
882
- }
883
- }
884
- mapResponseReporter.resolve(), fnLiteral += encodeCookie(), handler instanceof Response ? (fnLiteral += afterResponse(), fnLiteral += inference.set ? `if(isNotEmpty(c.set.headers)||c.set.status!==200||c.set.redirect||c.set.cookie)return mapResponse(${saveResponse}${handle}.clone(),c.set${mapResponseContext})
885
- else return ${handle}.clone()` : `return ${handle}.clone()`, fnLiteral += `
886
- `) : fnLiteral += mapResponse();
887
- } else if (hasCookie || hasTrace) {
888
- fnLiteral += isAsyncHandler ? `let r=await ${handle}
889
- ` : `let r=${handle}
890
- `, resolveHandler();
891
- const mapResponseReporter = report("mapResponse", {
892
- total: hooks.mapResponse?.length
893
- });
894
- if (hooks.mapResponse?.length) {
895
- fnLiteral += `c.response=c.responseValue= r
896
- `;
897
- for (let i = 0; i < hooks.mapResponse.length; i++) {
898
- const mapResponse2 = hooks.mapResponse[i], endUnit = mapResponseReporter.resolveChild(
899
- mapResponse2.fn.name
900
- );
901
- fnLiteral += `if(mr===undefined){mr=${isAsyncName(mapResponse2) ? "await " : ""}e.mapResponse[${i}](c)
902
- if(mr!==undefined)r=c.response=c.responseValue=mr}`, endUnit();
903
- }
904
- }
905
- mapResponseReporter.resolve(), fnLiteral += encodeCookie() + mapResponse();
906
- } else {
907
- resolveHandler();
908
- const handled = isAsyncHandler ? `await ${handle}` : handle;
909
- handler instanceof Response ? (fnLiteral += afterResponse(), fnLiteral += inference.set ? `if(isNotEmpty(c.set.headers)||c.set.status!==200||c.set.redirect||c.set.cookie)return mapResponse(${saveResponse}${handle}.clone(),c.set${mapResponseContext})
910
- else return ${handle}.clone()
911
- ` : `return ${handle}.clone()
912
- `) : fnLiteral += mapResponse(handled);
913
- }
914
- }
915
- if (fnLiteral += `
916
- }catch(error){`, !maybeAsync && hooks.error?.length && (fnLiteral += "return(async()=>{"), fnLiteral += `const set=c.set
917
- if(!set.status||set.status<300)set.status=error?.status||500
918
- `, hasCookie && (fnLiteral += encodeCookie()), hasTrace && hooks.trace)
919
- for (let i = 0; i < hooks.trace.length; i++)
920
- fnLiteral += `report${i}?.resolve(error);reportChild${i}?.(error)
921
- `;
922
- const errorReporter = report("error", {
923
- total: hooks.error?.length
924
- });
925
- if (hooks.error?.length) {
926
- fnLiteral += `c.error=error
927
- `, hasValidation ? fnLiteral += `if(error instanceof TypeBoxError){c.code="VALIDATION"
928
- c.set.status=422}else{c.code=error.code??error[ERROR_CODE]??"UNKNOWN"}` : fnLiteral += `c.code=error.code??error[ERROR_CODE]??"UNKNOWN"
929
- `, fnLiteral += `let er
930
- `, hooks.mapResponse?.length && (fnLiteral += `let mep
931
- `);
932
- for (let i = 0; i < hooks.error.length; i++) {
933
- const endUnit = errorReporter.resolveChild(hooks.error[i].fn.name);
934
- if (isAsync(hooks.error[i]) ? fnLiteral += `er=await e.error[${i}](c)
935
- ` : fnLiteral += `er=e.error[${i}](c)
936
- if(er instanceof Promise)er=await er
937
- `, endUnit(), hooks.mapResponse?.length) {
938
- const mapResponseReporter = report("mapResponse", {
939
- total: hooks.mapResponse?.length
940
- });
941
- for (let i2 = 0; i2 < hooks.mapResponse.length; i2++) {
942
- const mapResponse2 = hooks.mapResponse[i2], endUnit2 = mapResponseReporter.resolveChild(
943
- mapResponse2.fn.name
944
- );
945
- fnLiteral += `c.response=c.responseValue=er
946
- mep=e.mapResponse[${i2}](c)
947
- if(mep instanceof Promise)mep=await mep
948
- if(mep!==undefined)er=mep
949
- `, endUnit2();
950
- }
951
- mapResponseReporter.resolve();
952
- }
953
- if (fnLiteral += `er=mapEarlyResponse(er,set${mapResponseContext})
954
- `, fnLiteral += "if(er){", hasTrace && hooks.trace) {
955
- for (let i2 = 0; i2 < hooks.trace.length; i2++)
956
- fnLiteral += `report${i2}.resolve()
957
- `;
958
- errorReporter.resolve();
959
- }
960
- fnLiteral += afterResponse(!1), fnLiteral += "return er}";
961
- }
962
- }
963
- errorReporter.resolve(), fnLiteral += "return handleError(c,error,true)", !maybeAsync && hooks.error?.length && (fnLiteral += "})()"), fnLiteral += "}";
964
- const adapterVariables = adapter.inject ? Object.keys(adapter.inject).join(",") + "," : "";
965
- let init = "const {handler,handleError,hooks:e, " + allocateIf("validator,", hasValidation) + "mapResponse,mapCompactResponse,mapEarlyResponse,isNotEmpty,utils:{" + allocateIf("parseQuery,", hasBody) + allocateIf("parseQueryFromURL,", hasQuery) + "},error:{" + allocateIf("ValidationError,", hasValidation) + allocateIf("ParseError", hasBody) + "},fileType,schema,definitions,tee,ERROR_CODE," + allocateIf("parseCookie,", hasCookie) + allocateIf("signCookie,", hasCookie) + allocateIf("decodeURIComponent,", hasQuery) + "ElysiaCustomStatusResponse," + allocateIf("ELYSIA_TRACE,", hasTrace) + allocateIf("ELYSIA_REQUEST_ID,", hasTrace) + allocateIf("parser,", hooks.parse?.length) + allocateIf("getServer,", inference.server) + allocateIf("fileUnions,", fileUnions.length) + adapterVariables + allocateIf("TypeBoxError", hasValidation) + `}=hooks
966
- const trace=e.trace
967
- return ${maybeAsync ? "async " : ""}function handle(c){`;
968
- hooks.beforeHandle?.length && (init += `let be
969
- `), hooks.afterHandle?.length && (init += `let af
970
- `), hooks.mapResponse?.length && (init += `let mr
971
- `), allowMeta && (init += `c.schema=schema
972
- c.defs=definitions
973
- `), fnLiteral = init + fnLiteral + "}", init = "";
974
- try {
975
- return Function(
976
- "hooks",
977
- `"use strict";
978
- ` + fnLiteral
979
- )({
980
- handler,
981
- hooks: (0, import_utils.lifeCycleToFn)(hooks),
982
- validator: hasValidation ? validator : void 0,
983
- // @ts-expect-error
984
- handleError: app.handleError,
985
- mapResponse: adapterHandler.mapResponse,
986
- mapCompactResponse: adapterHandler.mapCompactResponse,
987
- mapEarlyResponse: adapterHandler.mapEarlyResponse,
988
- isNotEmpty: import_utils.isNotEmpty,
989
- utils: {
990
- parseQuery: hasBody ? import_parse_query.parseQuery : void 0,
991
- parseQueryFromURL: hasQuery ? validator.query?.provider === "standard" ? import_parse_query.parseQueryStandardSchema : import_parse_query.parseQueryFromURL : void 0
992
- },
993
- error: {
994
- ValidationError: hasValidation ? import_error2.ValidationError : void 0,
995
- ParseError: hasBody ? import_error.ParseError : void 0
996
- },
997
- fileType: import_utils3.fileType,
998
- schema: app.router.history,
999
- // @ts-expect-error
1000
- definitions: app.definitions.type,
1001
- tee: import_utils4.tee,
1002
- ERROR_CODE: import_error2.ERROR_CODE,
1003
- parseCookie: hasCookie ? import_cookies.parseCookie : void 0,
1004
- signCookie: hasCookie ? import_utils.signCookie : void 0,
1005
- Cookie: hasCookie ? import_index.Cookie : void 0,
1006
- decodeURIComponent: hasQuery ? import_fast_decode_uri_component.default : void 0,
1007
- ElysiaCustomStatusResponse: import_error2.ElysiaCustomStatusResponse,
1008
- ELYSIA_TRACE: hasTrace ? import_trace.ELYSIA_TRACE : void 0,
1009
- ELYSIA_REQUEST_ID: hasTrace ? import_utils.ELYSIA_REQUEST_ID : void 0,
1010
- // @ts-expect-error private property
1011
- getServer: inference.server ? () => app.getServer() : void 0,
1012
- fileUnions: fileUnions.length ? fileUnions : void 0,
1013
- TypeBoxError: hasValidation ? import_typebox.TypeBoxError : void 0,
1014
- parser: app["~parser"],
1015
- ...adapter.inject
1016
- });
1017
- } catch (error) {
1018
- const debugHooks = (0, import_utils.lifeCycleToFn)(hooks);
1019
- return console.log("[Composer] failed to generate optimized handler"), console.log("---"), console.log({
1020
- handler: typeof handler == "function" ? handler.toString() : handler,
1021
- instruction: fnLiteral,
1022
- hooks: {
1023
- ...debugHooks,
1024
- // @ts-ignore
1025
- transform: debugHooks?.transform?.map?.((x) => x.toString()),
1026
- // @ts-ignore
1027
- resolve: debugHooks?.resolve?.map?.((x) => x.toString()),
1028
- // @ts-ignore
1029
- beforeHandle: debugHooks?.beforeHandle?.map?.(
1030
- (x) => x.toString()
1031
- ),
1032
- // @ts-ignore
1033
- afterHandle: debugHooks?.afterHandle?.map?.(
1034
- (x) => x.toString()
1035
- ),
1036
- // @ts-ignore
1037
- mapResponse: debugHooks?.mapResponse?.map?.(
1038
- (x) => x.toString()
1039
- ),
1040
- // @ts-ignore
1041
- parse: debugHooks?.parse?.map?.((x) => x.toString()),
1042
- // @ts-ignore
1043
- error: debugHooks?.error?.map?.((x) => x.toString()),
1044
- // @ts-ignore
1045
- afterResponse: debugHooks?.afterResponse?.map?.(
1046
- (x) => x.toString()
1047
- ),
1048
- // @ts-ignore
1049
- stop: debugHooks?.stop?.map?.((x) => x.toString())
1050
- },
1051
- validator,
1052
- // @ts-expect-error
1053
- definitions: app.definitions.type,
1054
- error
1055
- }), console.log("---"), typeof process?.exit == "function" && process.exit(1), () => new Response("Internal Server Error", { status: 500 });
1056
- }
1057
- }, createOnRequestHandler = (app, addFn) => {
1058
- let fnLiteral = "";
1059
- const reporter = createReport({
1060
- trace: app.event.trace,
1061
- addFn: addFn ?? ((word) => {
1062
- fnLiteral += word;
1063
- })
1064
- })("request", {
1065
- total: app.event.request?.length
1066
- });
1067
- if (app.event.request?.length) {
1068
- fnLiteral += "try{";
1069
- for (let i = 0; i < app.event.request.length; i++) {
1070
- const hook = app.event.request[i], withReturn = hasReturn(hook), maybeAsync = isAsync(hook), endUnit = reporter.resolveChild(app.event.request[i].fn.name);
1071
- withReturn ? (fnLiteral += `re=mapEarlyResponse(${maybeAsync ? "await " : ""}onRequest[${i}](c),c.set)
1072
- `, endUnit("re"), fnLiteral += `if(re!==undefined)return re
1073
- `) : (fnLiteral += `${maybeAsync ? "await " : ""}onRequest[${i}](c)
1074
- `, endUnit());
1075
- }
1076
- fnLiteral += "}catch(error){return app.handleError(c,error,false)}";
1077
- }
1078
- return reporter.resolve(), fnLiteral;
1079
- }, createHoc = (app, fnName = "map") => {
1080
- const hoc = app.extender.higherOrderFunctions;
1081
- if (!hoc.length) return "return " + fnName;
1082
- const adapter = app["~adapter"].composeGeneralHandler;
1083
- let handler = fnName;
1084
- for (let i = 0; i < hoc.length; i++)
1085
- handler = `hoc[${i}](${handler},${adapter.parameters})`;
1086
- return `return function hocMap(${adapter.parameters}){return ${handler}(${adapter.parameters})}`;
1087
- }, composeGeneralHandler = (app) => {
1088
- const adapter = app["~adapter"].composeGeneralHandler;
1089
- app.router.http.build();
1090
- const isWebstandard = app["~adapter"].isWebStandard, hasTrace = app.event.trace?.length;
1091
- let fnLiteral = "";
1092
- const router = app.router;
1093
- let findDynamicRoute = router.http.root.WS ? "const route=router.find(r.method==='GET'&&r.headers.get('upgrade')==='websocket'?'WS':r.method,p)" : "const route=router.find(r.method,p)";
1094
- findDynamicRoute += router.http.root.ALL ? `??router.find('ALL',p)
1095
- ` : `
1096
- `, isWebstandard && (findDynamicRoute += 'if(r.method==="HEAD"){const route=router.find("GET",p);if(route){c.params=route.params;const _res=route.store.handler?route.store.handler(c):route.store.compile()(c);if(_res)return Promise.resolve(_res).then((_res)=>{if(!_res.headers)_res.headers=new Headers();return getResponseLength(_res).then((length)=>{_res.headers.set("content-length", length);return new Response(null,{status:_res.status,statusText:_res.statusText,headers:_res.headers});})});}}');
1097
- let afterResponse = `c.error=notFound
1098
- `;
1099
- if (app.event.afterResponse?.length && !app.event.error) {
1100
- afterResponse = `
1101
- c.error=notFound
1102
- `;
1103
- const prefix = app.event.afterResponse.some(isAsync) ? "async" : "";
1104
- afterResponse += `
1105
- ${setImmediateFn}(${prefix}()=>{if(c.responseValue instanceof ElysiaCustomStatusResponse) c.set.status=c.responseValue.code
1106
- `;
1107
- for (let i = 0; i < app.event.afterResponse.length; i++) {
1108
- const fn2 = app.event.afterResponse[i].fn;
1109
- afterResponse += `
1110
- ${isAsyncName(fn2) ? "await " : ""}afterResponse[${i}](c)
1111
- `;
1112
- }
1113
- afterResponse += `})
1114
- `;
1115
- }
1116
- app.inference.query && (afterResponse += `
1117
- if(c.qi===-1){c.query={}}else{c.query=parseQueryFromURL(c.url,c.qi+1)}`);
1118
- const error404 = adapter.error404(
1119
- !!app.event.request?.length,
1120
- !!app.event.error?.length,
1121
- afterResponse
1122
- );
1123
- findDynamicRoute += error404.code, findDynamicRoute += `
1124
- c.params=route.params
1125
- if(route.store.handler)return route.store.handler(c)
1126
- return route.store.compile()(c)
1127
- `;
1128
- let switchMap = "";
1129
- for (const [path, methods] of Object.entries(router.static)) {
1130
- switchMap += `case'${path}':`, app.config.strictPath !== !0 && (switchMap += `case'${(0, import_utils.getLoosePath)(path)}':`);
1131
- const encoded = (0, import_utils.encodePath)(path);
1132
- path !== encoded && (switchMap += `case'${encoded}':`), switchMap += "switch(r.method){", ("GET" in methods || "WS" in methods) && (switchMap += "case 'GET':", "WS" in methods && (switchMap += `if(r.headers.get('upgrade')==='websocket')return ht[${methods.WS}].composed(c)
1133
- `, "GET" in methods || ("ALL" in methods ? switchMap += `return ht[${methods.ALL}].composed(c)
1134
- ` : switchMap += `break map
1135
- `)), "GET" in methods && (switchMap += `return ht[${methods.GET}].composed(c)
1136
- `)), isWebstandard && ("GET" in methods || "ALL" in methods) && !("HEAD" in methods) && (switchMap += `case 'HEAD':return Promise.resolve(ht[${methods.GET ?? methods.ALL}].composed(c)).then(_ht=>getResponseLength(_ht).then((length)=>{_ht.headers.set('content-length', length)
1137
- return new Response(null,{status:_ht.status,statusText:_ht.statusText,headers:_ht.headers})
1138
- }))
1139
- `);
1140
- for (const [method, index] of Object.entries(methods))
1141
- method === "ALL" || method === "GET" || method === "WS" || (switchMap += `case '${method}':return ht[${index}].composed(c)
1142
- `);
1143
- "ALL" in methods ? switchMap += `default:return ht[${methods.ALL}].composed(c)
1144
- ` : switchMap += `default:break map
1145
- `, switchMap += "}";
1146
- }
1147
- const maybeAsync = !!app.event.request?.some(isAsync), adapterVariables = adapter.inject ? Object.keys(adapter.inject).join(",") + "," : "";
1148
- fnLiteral += `
1149
- const {app,mapEarlyResponse,NotFoundError,randomId,handleError,status,redirect,getResponseLength,ElysiaCustomStatusResponse,` + // @ts-ignore
1150
- allocateIf("parseQueryFromURL,", app.inference.query) + allocateIf("ELYSIA_TRACE,", hasTrace) + allocateIf("ELYSIA_REQUEST_ID,", hasTrace) + adapterVariables + `}=data
1151
- const store=app.singleton.store
1152
- const decorator=app.singleton.decorator
1153
- const staticRouter=app.router.static.http
1154
- const ht=app.router.history
1155
- const router=app.router.http
1156
- const trace=app.event.trace?.map(x=>typeof x==='function'?x:x.fn)??[]
1157
- const notFound=new NotFoundError()
1158
- const hoc=app.extender.higherOrderFunctions.map(x=>x.fn)
1159
- `, app.event.request?.length && (fnLiteral += `const onRequest=app.event.request.map(x=>x.fn)
1160
- `), app.event.afterResponse?.length && (fnLiteral += `const afterResponse=app.event.afterResponse.map(x=>x.fn)
1161
- `), fnLiteral += error404.declare, app.event.trace?.length && (fnLiteral += "const " + app.event.trace.map((_, i) => `tr${i}=app.event.trace[${i}].fn`).join(",") + `
1162
- `), fnLiteral += `${maybeAsync ? "async " : ""}function map(${adapter.parameters}){`, app.event.request?.length && (fnLiteral += `let re
1163
- `), fnLiteral += adapter.createContext(app), app.event.trace?.length && (fnLiteral += "c[ELYSIA_TRACE]=[" + app.event.trace.map((_, i) => `tr${i}(c)`).join(",") + `]
1164
- `), fnLiteral += createOnRequestHandler(app), switchMap && (fnLiteral += `
1165
- map: switch(p){
1166
- ` + switchMap + "}"), fnLiteral += findDynamicRoute + `}
1167
- ` + createHoc(app);
1168
- const handleError = composeErrorHandler(app);
1169
- app.handleError = handleError;
1170
- const fn = Function(
1171
- "data",
1172
- `"use strict";
1173
- ` + fnLiteral
1174
- )({
1175
- app,
1176
- mapEarlyResponse: app["~adapter"].handler.mapEarlyResponse,
1177
- NotFoundError: import_error2.NotFoundError,
1178
- randomId: import_utils.randomId,
1179
- handleError,
1180
- status: import_error.status,
1181
- redirect: import_utils.redirect,
1182
- getResponseLength: import_utils.getResponseLength,
1183
- ElysiaCustomStatusResponse: import_error2.ElysiaCustomStatusResponse,
1184
- // @ts-ignore
1185
- parseQueryFromURL: app.inference.query ? import_parse_query.parseQueryFromURL : void 0,
1186
- ELYSIA_TRACE: hasTrace ? import_trace.ELYSIA_TRACE : void 0,
1187
- ELYSIA_REQUEST_ID: hasTrace ? import_utils.ELYSIA_REQUEST_ID : void 0,
1188
- ...adapter.inject
1189
- });
1190
- return import_utils2.isBun && Bun.gc(!1), fn;
1191
- }, composeErrorHandler = (app) => {
1192
- const hooks = app.event;
1193
- let fnLiteral = "";
1194
- const adapter = app["~adapter"].composeError, adapterVariables = adapter.inject ? Object.keys(adapter.inject).join(",") + "," : "", hasTrace = !!app.event.trace?.length;
1195
- fnLiteral += "const {mapResponse,ERROR_CODE,ElysiaCustomStatusResponse,ValidationError,TransformDecodeError," + allocateIf("onError,", app.event.error) + allocateIf("afterResponse,", app.event.afterResponse) + allocateIf("trace,", app.event.trace) + allocateIf("onMapResponse,", app.event.mapResponse) + allocateIf("ELYSIA_TRACE,", hasTrace) + allocateIf("ELYSIA_REQUEST_ID,", hasTrace) + adapterVariables + `}=inject
1196
- `, fnLiteral += "return async function(context,error,skipGlobal){", fnLiteral += "", hasTrace && (fnLiteral += `const id=context[ELYSIA_REQUEST_ID]
1197
- `);
1198
- const report = createReport({
1199
- context: "context",
1200
- trace: hooks.trace,
1201
- addFn: (word) => {
1202
- fnLiteral += word;
1203
- }
1204
- }), afterResponse = () => {
1205
- if (!hooks.afterResponse?.length && !hasTrace) return "";
1206
- let afterResponse2 = "";
1207
- const prefix = hooks.afterResponse?.some(isAsync) ? "async" : "";
1208
- afterResponse2 += `
1209
- ${setImmediateFn}(${prefix}()=>{`;
1210
- const reporter = createReport({
1211
- context: "context",
1212
- trace: hooks.trace,
1213
- addFn: (word) => {
1214
- afterResponse2 += word;
1215
- }
1216
- })("afterResponse", {
1217
- total: hooks.afterResponse?.length,
1218
- name: "context"
1219
- });
1220
- if (hooks.afterResponse?.length && hooks.afterResponse)
1221
- for (let i = 0; i < hooks.afterResponse.length; i++) {
1222
- const fn = hooks.afterResponse[i].fn, endUnit = reporter.resolveChild(fn.name);
1223
- afterResponse2 += `
1224
- ${isAsyncName(fn) ? "await " : ""}afterResponse[${i}](context)
1225
- `, endUnit();
1226
- }
1227
- return reporter.resolve(), afterResponse2 += `})
1228
- `, afterResponse2;
1229
- };
1230
- fnLiteral += `const set=context.set
1231
- let _r
1232
- if(!context.code)context.code=error.code??error[ERROR_CODE]
1233
- if(!(context.error instanceof Error))context.error=error
1234
- if(error instanceof ElysiaCustomStatusResponse){set.status=error.status=error.code
1235
- error.message=error.response}`, adapter.declare && (fnLiteral += adapter.declare);
1236
- const saveResponse = hasTrace || hooks.afterResponse?.length ? "context.response = " : "";
1237
- if (fnLiteral += `if(typeof error?.toResponse==='function'&&!(error instanceof ValidationError)&&!(error instanceof TransformDecodeError)){try{let raw=error.toResponse()
1238
- if(typeof raw?.then==='function')raw=await raw
1239
- if(raw instanceof Response)set.status=raw.status
1240
- context.response=context.responseValue=raw
1241
- }catch(toResponseError){
1242
- }
1243
- }
1244
- `, app.event.error)
1245
- for (let i = 0; i < app.event.error.length; i++) {
1246
- const handler = app.event.error[i], response = `${isAsync(handler) ? "await " : ""}onError[${i}](context)
1247
- `;
1248
- if (fnLiteral += "if(skipGlobal!==true&&!context.response){", hasReturn(handler)) {
1249
- fnLiteral += `_r=${response}
1250
- if(_r!==undefined){if(_r instanceof Response){` + afterResponse() + `return mapResponse(_r,set${adapter.mapResponseContext})}if(_r instanceof ElysiaCustomStatusResponse){error.status=error.code
1251
- error.message=error.response}if(set.status===200||!set.status)set.status=error.status
1252
- `;
1253
- const mapResponseReporter2 = report("mapResponse", {
1254
- total: hooks.mapResponse?.length,
1255
- name: "context"
1256
- });
1257
- if (hooks.mapResponse?.length)
1258
- for (let i2 = 0; i2 < hooks.mapResponse.length; i2++) {
1259
- const mapResponse = hooks.mapResponse[i2], endUnit = mapResponseReporter2.resolveChild(
1260
- mapResponse.fn.name
1261
- );
1262
- fnLiteral += `context.response=context.responseValue=_r
1263
- _r=${isAsyncName(mapResponse) ? "await " : ""}onMapResponse[${i2}](context)
1264
- `, endUnit();
1265
- }
1266
- mapResponseReporter2.resolve(), fnLiteral += afterResponse() + `return mapResponse(${saveResponse}_r,set${adapter.mapResponseContext})}`;
1267
- } else fnLiteral += response;
1268
- fnLiteral += "}";
1269
- }
1270
- fnLiteral += `if(error instanceof ValidationError||error instanceof TransformDecodeError){
1271
- if(error.error)error=error.error
1272
- set.status=error.status??422
1273
- ` + afterResponse() + adapter.validationError + `
1274
- }
1275
- `, fnLiteral += "if(!context.response&&error instanceof Error){" + afterResponse() + adapter.unknownError + `
1276
- }`;
1277
- const mapResponseReporter = report("mapResponse", {
1278
- total: hooks.mapResponse?.length,
1279
- name: "context"
1280
- });
1281
- if (fnLiteral += `
1282
- if(!context.response)context.response=context.responseValue=error.message??error
1283
- `, hooks.mapResponse?.length) {
1284
- fnLiteral += `let mr
1285
- `;
1286
- for (let i = 0; i < hooks.mapResponse.length; i++) {
1287
- const mapResponse = hooks.mapResponse[i], endUnit = mapResponseReporter.resolveChild(
1288
- mapResponse.fn.name
1289
- );
1290
- fnLiteral += `if(mr===undefined){mr=${isAsyncName(mapResponse) ? "await " : ""}onMapResponse[${i}](context)
1291
- if(mr!==undefined)error=context.response=context.responseValue=mr}`, endUnit();
1292
- }
1293
- }
1294
- mapResponseReporter.resolve(), fnLiteral += afterResponse() + `
1295
- return mapResponse(${saveResponse}error,set${adapter.mapResponseContext})}`;
1296
- const mapFn = (x) => typeof x == "function" ? x : x.fn;
1297
- return Function(
1298
- "inject",
1299
- `"use strict";
1300
- ` + fnLiteral
1301
- )({
1302
- mapResponse: app["~adapter"].handler.mapResponse,
1303
- ERROR_CODE: import_error2.ERROR_CODE,
1304
- ElysiaCustomStatusResponse: import_error2.ElysiaCustomStatusResponse,
1305
- ValidationError: import_error2.ValidationError,
1306
- TransformDecodeError: import_value.TransformDecodeError,
1307
- onError: app.event.error?.map(mapFn),
1308
- afterResponse: app.event.afterResponse?.map(mapFn),
1309
- trace: app.event.trace?.map(mapFn),
1310
- onMapResponse: app.event.mapResponse?.map(mapFn),
1311
- ELYSIA_TRACE: hasTrace ? import_trace.ELYSIA_TRACE : void 0,
1312
- ELYSIA_REQUEST_ID: hasTrace ? import_utils.ELYSIA_REQUEST_ID : void 0,
1313
- ...adapter.inject
1314
- });
1315
- };
1316
- // Annotate the CommonJS export names for ESM import in node:
1317
- 0 && (module.exports = {
1318
- composeErrorHandler,
1319
- composeGeneralHandler,
1320
- composeHandler,
1321
- createHoc,
1322
- createOnRequestHandler,
1323
- isAsync
1324
- });