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/error.mjs CHANGED
@@ -1,335 +1,511 @@
1
- import { Value } from "@sinclair/typebox/value";
2
- import { StatusMap, InvertedStatusMap } from "./utils.mjs";
3
- const env = typeof Bun < "u" ? Bun.env : typeof process < "u" ? process?.env : void 0, ERROR_CODE = Symbol("ElysiaErrorCode"), isProduction = (env?.NODE_ENV ?? env?.ENV) === "production", emptyHttpStatus = {
4
- 101: void 0,
5
- 204: void 0,
6
- 205: void 0,
7
- 304: void 0,
8
- 307: void 0,
9
- 308: void 0
10
- };
11
- class ElysiaCustomStatusResponse {
12
- constructor(code, response) {
13
- const res = response ?? (code in InvertedStatusMap ? (
14
- // @ts-expect-error Always correct
15
- InvertedStatusMap[code]
16
- ) : code);
17
- this.code = StatusMap[code] ?? code, code in emptyHttpStatus ? this.response = void 0 : this.response = res;
18
- }
19
- }
20
- const ElysiaStatus = ElysiaCustomStatusResponse, status = (code, response) => new ElysiaCustomStatusResponse(code, response);
21
- class InternalServerError extends Error {
22
- constructor(message) {
23
- super(message ?? "INTERNAL_SERVER_ERROR");
24
- this.code = "INTERNAL_SERVER_ERROR";
25
- this.status = 500;
26
- }
1
+ import { StatusMap, StatusMapBack } from "./constants.mjs";
2
+ import { Create } from "./type/bridge.mjs";
3
+ import { isProduction } from "./universal/is-production.mjs";
4
+ import { primitiveElysiaTypes } from "./type/constants.mjs";
5
+ import { skipClone } from "./adapter/skip-clone.mjs";
6
+
7
+ //#region src/error.ts
8
+ const expectedCache = /* @__PURE__ */ new WeakMap();
9
+ function freezeExpected(value) {
10
+ if (!value || typeof value !== "object") return typeof value !== "function";
11
+ if (!Array.isArray(value) && value.constructor !== Object) return;
12
+ for (const key in value) if (!freezeExpected(value[key])) return;
13
+ return Object.freeze(value);
27
14
  }
28
- class NotFoundError extends Error {
29
- constructor(message) {
30
- super(message ?? "NOT_FOUND");
31
- this.code = "NOT_FOUND";
32
- this.status = 404;
33
- }
15
+ function isCacheableExpected(value, visited = /* @__PURE__ */ new Set()) {
16
+ if (value === null || value === void 0) return true;
17
+ const t = typeof value;
18
+ if (t === "string" || t === "number" || t === "boolean" || t === "bigint") return true;
19
+ if (t !== "object") return false;
20
+ const obj = value;
21
+ if (visited.has(obj)) return true;
22
+ const proto = Object.getPrototypeOf(obj);
23
+ if (proto !== Object.prototype && proto !== null && !Array.isArray(obj)) return false;
24
+ visited.add(obj);
25
+ for (const key in obj) if (!isCacheableExpected(obj[key], visited)) return false;
26
+ return true;
34
27
  }
35
- class ParseError extends Error {
36
- constructor(cause) {
37
- super("Bad Request", {
38
- cause
39
- });
40
- this.code = "PARSE";
41
- this.status = 400;
42
- }
28
+ var ElysiaError = class extends Error {
29
+ constructor(message, cause) {
30
+ super(message);
31
+ this.problemType = "about:blank";
32
+ this.name = this.constructor.name;
33
+ if (cause) this.cause = cause;
34
+ }
35
+ toResponse(headers) {
36
+ return problemResponse({
37
+ type: this.problemType,
38
+ title: this.problemTitle,
39
+ status: this.status ?? 500,
40
+ detail: this.response !== void 0 && this.response !== this.problemTitle ? this.response : void 0
41
+ }, headers);
42
+ }
43
+ };
44
+ /**
45
+ * Wrap a string into a TypeBox `error` callback that overrides the default
46
+ * validation message. Use as `t.Number({ error: validationDetail('x must be a number') })`.
47
+ */
48
+ const validationDetail = (message) => (error) => {
49
+ error.message = message;
50
+ return error;
51
+ };
52
+ var InternalServerError = class extends ElysiaError {
53
+ constructor(response = "Internal Server Error", cause) {
54
+ super(response, cause);
55
+ this.response = response;
56
+ this.status = 500;
57
+ this.problemType = "internal-server-error";
58
+ this.problemTitle = "Internal Server Error";
59
+ }
60
+ };
61
+ var NotFound = class extends ElysiaError {
62
+ constructor(response = "Not Found") {
63
+ super(response);
64
+ this.response = response;
65
+ this.status = 404;
66
+ this.problemType = "not-found";
67
+ this.problemTitle = "Not Found";
68
+ }
69
+ };
70
+ var ParseError = class extends ElysiaError {
71
+ constructor(cause) {
72
+ super("Bad Request", cause);
73
+ this.status = 400;
74
+ this.response = "Bad Request";
75
+ this.problemType = "parse";
76
+ this.problemTitle = "Bad Request";
77
+ }
78
+ toResponse(headers) {
79
+ const cause = this.cause;
80
+ return problemResponse({
81
+ type: this.problemType,
82
+ title: this.problemTitle,
83
+ status: 400,
84
+ detail: !isProduction() && cause?.message != null ? String(cause.message) : void 0
85
+ }, headers);
86
+ }
87
+ };
88
+ const segmentString = (part) => typeof part === "object" && part !== null ? part.key + "" : part + "";
89
+ const propertyAccessor = (path) => {
90
+ if (Array.isArray(path)) return path.length ? "/" + path.map(segmentString).join("/") : "root";
91
+ if (typeof path === "string") return path || "root";
92
+ return "root";
93
+ };
94
+ function walkComposition(schema, parts, seen = /* @__PURE__ */ new WeakSet()) {
95
+ if (parts.length === 0) return schema;
96
+ if (!schema || typeof schema !== "object" || seen.has(schema)) return;
97
+ seen.add(schema);
98
+ try {
99
+ const branches = schema.anyOf ?? schema.oneOf ?? schema.allOf;
100
+ if (Array.isArray(branches)) for (let i = 0; i < branches.length; i++) {
101
+ const result = walkComposition(branches[i], parts, seen);
102
+ if (result !== void 0) return result;
103
+ }
104
+ const [head, ...rest] = parts;
105
+ if (schema.properties?.[head]) return walkComposition(schema.properties[head], rest, seen);
106
+ if (schema.additionalProperties && typeof schema.additionalProperties === "object") return walkComposition(schema.additionalProperties, rest, seen);
107
+ if (schema.items) return walkComposition(schema.items, rest, seen);
108
+ } finally {
109
+ seen.delete(schema);
110
+ }
43
111
  }
44
- class InvalidCookieSignature extends Error {
45
- constructor(key, message) {
46
- super(message ?? `"${key}" has invalid cookie signature`);
47
- this.key = key;
48
- this.code = "INVALID_COOKIE_SIGNATURE";
49
- this.status = 400;
50
- }
112
+ const walkSubSchema = (schema, instancePath) => !schema || !instancePath ? schema : walkComposition(schema, instancePath.split("/").filter(Boolean));
113
+ const FOUND_ECHO_LIMIT = 8192;
114
+ const FOUND_ECHO_OMITTED = `[value exceeds ${FOUND_ECHO_LIMIT} byte echo limit]`;
115
+ function jsonStringLengthWithin(value, budget) {
116
+ budget -= 2;
117
+ for (let i = 0; i < value.length && budget >= 0; i++) {
118
+ const code = value.charCodeAt(i);
119
+ if (code === 34 || code === 92) budget -= 2;
120
+ else if (code < 32) budget -= code === 8 || code === 9 || code === 10 || code === 12 || code === 13 ? 2 : 6;
121
+ else if (code < 128) budget--;
122
+ else if (code < 2048) budget -= 2;
123
+ else if (code >= 55296 && code <= 56319) {
124
+ const low = value.charCodeAt(i + 1);
125
+ if (low >= 56320 && low <= 57343) {
126
+ budget -= 4;
127
+ i++;
128
+ } else budget -= 6;
129
+ } else if (code >= 56320 && code <= 57343) budget -= 6;
130
+ else budget -= 3;
131
+ }
132
+ return budget;
51
133
  }
52
- const mapValueError = (error) => {
53
- if (!error) return error;
54
- let { message, path, value, type } = error;
55
- Array.isArray(path) && (path = path[0]);
56
- const property = typeof path == "string" ? path.slice(1).replaceAll("/", ".") : "unknown", isRoot = path === "";
57
- switch (type) {
58
- case 42:
59
- return {
60
- ...error,
61
- summary: isRoot ? "Value should not be provided" : `Property '${property}' should not be provided`
62
- };
63
- case 45:
64
- return {
65
- ...error,
66
- summary: isRoot ? "Value is missing" : `Property '${property}' is missing`
67
- };
68
- case 50:
69
- const quoteIndex = message.indexOf("'"), format = message.slice(
70
- quoteIndex + 1,
71
- message.indexOf("'", quoteIndex + 1)
72
- );
73
- return {
74
- ...error,
75
- summary: isRoot ? "Value should be an email" : `Property '${property}' should be ${format}`
76
- };
77
- case 54:
78
- return {
79
- ...error,
80
- summary: `${message.slice(0, 9).trim()} property '${property}' to be ${message.slice(8).trim()} but found: ${value}`
81
- };
82
- case 62:
83
- const union = error.schema.anyOf.map((x) => `'${x?.format ?? x.type}'`).join(", ");
84
- return {
85
- ...error,
86
- summary: isRoot ? `Value should be one of ${union}` : `Property '${property}' should be one of: ${union}`
87
- };
88
- default:
89
- return { summary: message, ...error };
90
- }
134
+ const jsonLengthWithin = (value, budget) => {
135
+ if (budget < 0) return -1;
136
+ switch (typeof value) {
137
+ case "object": break;
138
+ case "string": return jsonStringLengthWithin(value, budget);
139
+ case "number": return budget - (Number.isFinite(value) ? String(value).length : 4);
140
+ case "boolean": return budget - (value ? 4 : 5);
141
+ default: return budget - 4;
142
+ }
143
+ if (value === null) return budget - 4;
144
+ if (Array.isArray(value)) {
145
+ budget -= 2;
146
+ for (let i = 0; i < value.length; i++) {
147
+ budget = jsonLengthWithin(value[i], budget - (i ? 1 : 0));
148
+ if (budget < 0) return -1;
149
+ }
150
+ return budget;
151
+ }
152
+ budget -= 2;
153
+ let first = true;
154
+ for (const key in value) {
155
+ budget = jsonStringLengthWithin(key, budget - (first ? 0 : 1)) - 1;
156
+ if (budget < 0) return -1;
157
+ budget = jsonLengthWithin(value[key], budget);
158
+ if (budget < 0) return -1;
159
+ first = false;
160
+ }
161
+ return budget;
91
162
  };
92
- class InvalidFileType extends Error {
93
- constructor(property, expected, message = `"${property}" has invalid file type`) {
94
- super(message);
95
- this.property = property;
96
- this.expected = expected;
97
- this.message = message;
98
- this.code = "INVALID_FILE_TYPE";
99
- this.status = 422;
100
- Object.setPrototypeOf(this, InvalidFileType.prototype);
101
- }
102
- toResponse(headers) {
103
- return isProduction ? new Response(
104
- JSON.stringify({
105
- type: "validation",
106
- on: "body"
107
- }),
108
- {
109
- status: 422,
110
- headers: {
111
- ...headers,
112
- "content-type": "application/json"
113
- }
114
- }
115
- ) : new Response(
116
- JSON.stringify({
117
- type: "validation",
118
- on: "body",
119
- summary: "Invalid file type",
120
- message: this.message,
121
- property: this.property,
122
- expected: this.expected
123
- }),
124
- {
125
- status: 422,
126
- headers: {
127
- ...headers,
128
- "content-type": "application/json"
129
- }
130
- }
131
- );
132
- }
163
+ function subValueAt(value, path) {
164
+ let parts;
165
+ if (typeof path === "string") parts = path.split("/").filter(Boolean);
166
+ else if (Array.isArray(path)) parts = path;
167
+ if (!parts) return;
168
+ let current = value;
169
+ for (let i = 0; i < parts.length; i++) {
170
+ if (current === null || typeof current !== "object") return;
171
+ const part = parts[i];
172
+ current = current[typeof part === "object" && part !== null ? part.key : part];
173
+ }
174
+ return current;
133
175
  }
134
- class ValidationError extends Error {
135
- constructor(type, validator, value, allowUnsafeValidationDetails = !1, errors) {
136
- let message = "", error, expected, customError;
137
- if (
138
- // @ts-ignore
139
- validator?.provider === "standard" || "~standard" in validator || // @ts-ignore
140
- validator.schema && "~standard" in validator.schema
141
- ) {
142
- const standard = (
143
- // @ts-ignore
144
- ("~standard" in validator ? validator : validator.schema)["~standard"]
145
- );
146
- error = (errors ?? standard.validate(value).issues)?.[0], isProduction && !allowUnsafeValidationDetails ? message = JSON.stringify({
147
- type: "validation",
148
- on: type,
149
- found: value
150
- }) : message = JSON.stringify(
151
- {
152
- type: "validation",
153
- on: type,
154
- property: error.path?.[0] || "root",
155
- message: error?.message,
156
- summary: error?.problem,
157
- expected,
158
- found: value,
159
- errors
160
- },
161
- null,
162
- 2
163
- ), customError = error?.message;
164
- } else {
165
- value && typeof value == "object" && value instanceof ElysiaCustomStatusResponse && (value = value.response), error = errors?.First() ?? ("Errors" in validator ? validator.Errors(value).First() : Value.Errors(validator, value).First());
166
- const accessor = error?.path || "root", schema = validator?.schema ?? validator;
167
- if (!isProduction && !allowUnsafeValidationDetails)
168
- try {
169
- expected = Value.Create(schema);
170
- } catch (error2) {
171
- expected = {
172
- type: "Could not create expected value",
173
- // @ts-expect-error
174
- message: error2?.message,
175
- error: error2
176
- };
177
- }
178
- customError = error?.schema?.message || error?.schema?.error !== void 0 ? typeof error.schema.error == "function" ? error.schema.error(
179
- isProduction && !allowUnsafeValidationDetails ? {
180
- type: "validation",
181
- on: type,
182
- found: value
183
- } : {
184
- type: "validation",
185
- on: type,
186
- value,
187
- property: accessor,
188
- message: error?.message,
189
- summary: mapValueError(error)?.summary,
190
- found: value,
191
- expected,
192
- errors: "Errors" in validator ? [
193
- ...validator.Errors(
194
- value
195
- )
196
- ].map(mapValueError) : [
197
- ...Value.Errors(
198
- validator,
199
- value
200
- )
201
- ].map(mapValueError)
202
- },
203
- validator
204
- ) : error.schema.error : void 0, customError !== void 0 ? message = typeof customError == "object" ? JSON.stringify(customError) : customError + "" : isProduction && !allowUnsafeValidationDetails ? message = JSON.stringify({
205
- type: "validation",
206
- on: type,
207
- found: value
208
- }) : message = JSON.stringify(
209
- {
210
- type: "validation",
211
- on: type,
212
- property: accessor,
213
- message: error?.message,
214
- summary: mapValueError(error)?.summary,
215
- expected,
216
- found: value,
217
- errors: "Errors" in validator ? [...validator.Errors(value)].map(
218
- mapValueError
219
- ) : [...Value.Errors(validator, value)].map(
220
- mapValueError
221
- )
222
- },
223
- null,
224
- 2
225
- );
226
- }
227
- super(message);
228
- this.type = type;
229
- this.validator = validator;
230
- this.value = value;
231
- this.allowUnsafeValidationDetails = allowUnsafeValidationDetails;
232
- this.code = "VALIDATION";
233
- this.status = 422;
234
- this.valueError = error, this.expected = expected, this.customError = customError, Object.setPrototypeOf(this, ValidationError.prototype);
235
- }
236
- /**
237
- * Alias of `valueError`
238
- */
239
- get messageValue() {
240
- return this.valueError;
241
- }
242
- get all() {
243
- return (
244
- // @ts-ignore
245
- this.validator?.provider === "standard" || "~standard" in this.validator || // @ts-ignore
246
- "schema" in this.validator && // @ts-ignore
247
- this.validator.schema && // @ts-ignore
248
- "~standard" in this.validator.schema ? /* @ts-ignore */ ("~standard" in this.validator ? this.validator : (
249
- // @ts-ignore
250
- this.validator.schema
251
- ))["~standard"].validate(this.value).issues?.map((issue) => ({
252
- summary: issue.message,
253
- path: issue.path?.join(".") || "root",
254
- message: issue.message,
255
- value: this.value
256
- })) || [] : "Errors" in this.validator ? [...this.validator.Errors(this.value)].filter((x) => x).map((x) => mapValueError(x)) : (
257
- // @ts-ignore
258
- [...Value.Errors(this.validator, this.value)].map(mapValueError)
259
- )
260
- );
261
- }
262
- static simplifyModel(validator) {
263
- const model = "schema" in validator ? validator.schema : validator;
264
- try {
265
- return Value.Create(model);
266
- } catch {
267
- return model;
268
- }
269
- }
270
- get model() {
271
- return "~standard" in this.validator ? this.validator : ValidationError.simplifyModel(this.validator);
272
- }
273
- toResponse(headers) {
274
- return new Response(this.message, {
275
- status: 400,
276
- headers: {
277
- ...headers,
278
- "content-type": "application/json"
279
- }
280
- });
281
- }
282
- /**
283
- * Utility function to inherit add custom error and keep the original Validation error
284
- *
285
- * @since 1.3.14
286
- *
287
- * @example
288
- * ```ts
289
- * new Elysia()
290
- * .onError(({ error, code }) => {
291
- * if (code === 'VALIDATION') return error.detail(error.message)
292
- * })
293
- * .post('/', () => 'Hello World!', {
294
- * body: t.Object({
295
- * x: t.Number({
296
- * error: 'x must be a number'
297
- * })
298
- * })
299
- * })
300
- * ```
301
- */
302
- detail(message, allowUnsafeValidatorDetails = this.allowUnsafeValidationDetails) {
303
- if (!this.customError) return this.message;
304
- const value = this.value, expected = this.expected, errors = this.all;
305
- return isProduction && !allowUnsafeValidatorDetails ? {
306
- type: "validation",
307
- on: this.type,
308
- found: value,
309
- message
310
- } : {
311
- type: "validation",
312
- on: this.type,
313
- property: this.valueError?.path || "root",
314
- message,
315
- summary: mapValueError(this.valueError)?.summary,
316
- found: value,
317
- expected,
318
- errors
319
- };
320
- }
176
+ function scopeFound(value, first) {
177
+ if (jsonLengthWithin(value, FOUND_ECHO_LIMIT) >= 0) return value;
178
+ const sub = subValueAt(value, first?.instancePath ?? first?.path);
179
+ if (sub !== void 0 && jsonLengthWithin(sub, FOUND_ECHO_LIMIT) >= 0) return sub;
180
+ return FOUND_ECHO_OMITTED;
321
181
  }
322
- export {
323
- ERROR_CODE,
324
- ElysiaCustomStatusResponse,
325
- ElysiaStatus,
326
- InternalServerError,
327
- InvalidCookieSignature,
328
- InvalidFileType,
329
- NotFoundError,
330
- ParseError,
331
- ValidationError,
332
- isProduction,
333
- mapValueError,
334
- status
182
+ var ValidationError = class extends ElysiaError {
183
+ #thunk;
184
+ #findCustomError;
185
+ #state;
186
+ constructor(type, value, errors, schema, findCustomError) {
187
+ super(void 0);
188
+ this.type = type;
189
+ this.value = value;
190
+ this.status = 422;
191
+ this.allowUnsafeValidationDetails = false;
192
+ this.schema = schema;
193
+ this.#thunk = typeof errors === "function" ? errors : () => errors;
194
+ this.#findCustomError = findCustomError;
195
+ Object.defineProperty(this, "errors", {
196
+ get: () => this["~resolve"]().errors,
197
+ set(v) {
198
+ Object.defineProperty(this, "errors", {
199
+ value: v,
200
+ writable: true,
201
+ enumerable: true,
202
+ configurable: true
203
+ });
204
+ },
205
+ enumerable: true,
206
+ configurable: true
207
+ });
208
+ }
209
+ /** @internal lazily resolve and memoize errors/customError/message */
210
+ "~resolve"() {
211
+ if (this.#state) return this.#state;
212
+ const { type, value } = this;
213
+ const production = isProduction();
214
+ const allowUnsafe = this.allowUnsafeValidationDetails;
215
+ const findCustomError = this.#findCustomError;
216
+ let resolved;
217
+ let custom;
218
+ let message;
219
+ if (production && !allowUnsafe && findCustomError) {
220
+ const hit = findCustomError(value);
221
+ resolved = hit ? [{ instancePath: hit.instancePath }] : [];
222
+ if (hit && hit.error !== void 0) custom = typeof hit.error === "function" ? hit.error({
223
+ type: "validation",
224
+ on: type,
225
+ found: void 0
226
+ }) : hit.error;
227
+ message = custom !== void 0 ? typeof custom === "string" ? custom : JSON.stringify(custom) : `Validation error on ${type ?? "unknown"}`;
228
+ return this.#state = {
229
+ errors: resolved,
230
+ custom,
231
+ message
232
+ };
233
+ }
234
+ resolved = this.#thunk() ?? [];
235
+ const sub = walkSubSchema(this.schema, resolved[0]?.instancePath);
236
+ if (sub?.error !== void 0) custom = typeof sub.error === "function" ? sub.error(production && !allowUnsafe ? {
237
+ type: "validation",
238
+ on: type,
239
+ found: void 0
240
+ } : {
241
+ type: "validation",
242
+ on: type,
243
+ value,
244
+ errors: resolved
245
+ }) : sub.error;
246
+ message = custom !== void 0 ? typeof custom === "string" ? custom : JSON.stringify(custom) : resolved[0]?.message ? resolved[0].message : `Validation error on ${type ?? "unknown"}`;
247
+ return this.#state = {
248
+ errors: resolved,
249
+ custom,
250
+ message
251
+ };
252
+ }
253
+ get customError() {
254
+ return this["~resolve"]().custom;
255
+ }
256
+ set customError(v) {
257
+ Object.defineProperty(this, "customError", {
258
+ value: v,
259
+ writable: true,
260
+ enumerable: true,
261
+ configurable: true
262
+ });
263
+ }
264
+ get all() {
265
+ if (!this.errors) return [];
266
+ return this.#collapseCoercionErrors(this.errors.filter(Boolean)).map((e) => this.#normalizeIssue(e));
267
+ }
268
+ #collapseCoercionErrors(errors) {
269
+ if (!this.schema || !errors.length) return errors;
270
+ let coercionPaths;
271
+ let seen;
272
+ let out;
273
+ for (let i = 0; i < errors.length; i++) {
274
+ const e = errors[i];
275
+ const path = e?.instancePath;
276
+ if (typeof path !== "string" || typeof e?.schemaPath !== "string" || e.keyword !== "anyOf" && !e.schemaPath.includes("/anyOf")) {
277
+ out?.push(e);
278
+ continue;
279
+ }
280
+ coercionPaths ??= /* @__PURE__ */ new Map();
281
+ let isCoercion = coercionPaths.get(path);
282
+ if (isCoercion === void 0) {
283
+ const sub = walkSubSchema(this.schema, path);
284
+ isCoercion = !!sub?.["~elyTyp"] && primitiveElysiaTypes.has(sub["~elyTyp"]);
285
+ coercionPaths.set(path, isCoercion);
286
+ }
287
+ if (!isCoercion) {
288
+ out?.push(e);
289
+ continue;
290
+ }
291
+ out ??= errors.slice(0, i);
292
+ seen ??= /* @__PURE__ */ new Set();
293
+ if (seen.has(path)) continue;
294
+ seen.add(path);
295
+ const internal = e.keyword === "~refine" || e.keyword === "anyOf";
296
+ out.push({
297
+ ...e,
298
+ keyword: internal ? "type" : e.keyword,
299
+ schemaPath: e.schemaPath.replace(/\/anyOf(\/\d+)?$/, ""),
300
+ params: internal ? {} : e.params,
301
+ message: internal ? e.params?.message ?? e.message : e.message
302
+ });
303
+ }
304
+ return out ?? errors;
305
+ }
306
+ #normalizeIssue(e) {
307
+ if (!e) return e;
308
+ return {
309
+ path: Array.isArray(e.path) ? e.path.length ? e.path.map(segmentString).join(".") : "root" : typeof e.path === "string" ? e.path.replace(/^\//, "").replace(/\//g, ".") || "root" : "root",
310
+ message: e.message ?? "",
311
+ schemaPath: e.schemaPath,
312
+ params: e.params,
313
+ value: this.value
314
+ };
315
+ }
316
+ get #productionDetail() {
317
+ return isProduction() && !this.allowUnsafeValidationDetails;
318
+ }
319
+ get #maskResponseValue() {
320
+ return this.type === "response" && this.#productionDetail;
321
+ }
322
+ detail(message) {
323
+ if (this.#productionDetail) {
324
+ if (this.type === "response") return {
325
+ type: "internal-server-error",
326
+ on: this.type,
327
+ message
328
+ };
329
+ return {
330
+ type: "validation",
331
+ on: this.type,
332
+ message
333
+ };
334
+ }
335
+ return {
336
+ type: "validation",
337
+ on: this.type,
338
+ message,
339
+ errors: this.all
340
+ };
341
+ }
342
+ get payload() {
343
+ if (this.#productionDetail) {
344
+ if (this.type === "response") return {
345
+ type: "internal-server-error",
346
+ title: "Internal Server Error",
347
+ status: 500
348
+ };
349
+ const first = (this.errors ?? []).find(Boolean);
350
+ return {
351
+ type: "validation",
352
+ title: "Validation Error",
353
+ status: 422,
354
+ on: this.type,
355
+ property: first ? propertyAccessor(first.instancePath ?? (Array.isArray(first.path) ? first.path : void 0)) : "root"
356
+ };
357
+ }
358
+ const errors = this.#collapseCoercionErrors((this.errors ?? []).filter(Boolean));
359
+ const first = errors[0];
360
+ const property = first ? propertyAccessor(first.instancePath ?? first.path) : "root";
361
+ const detail = first?.message ?? this.message;
362
+ let expected;
363
+ const schemaForExpected = first?.schema ?? this.schema;
364
+ if (schemaForExpected) if (expectedCache.has(schemaForExpected)) expected = expectedCache.get(schemaForExpected);
365
+ else try {
366
+ const created = Create(schemaForExpected);
367
+ if (isCacheableExpected(created)) try {
368
+ const snapshot = structuredClone(created);
369
+ expected = snapshot;
370
+ if (freezeExpected(snapshot)) expectedCache.set(schemaForExpected, snapshot);
371
+ } catch {
372
+ expected = created;
373
+ }
374
+ else expected = created;
375
+ } catch {}
376
+ return {
377
+ type: "validation",
378
+ title: "Validation Error",
379
+ status: 422,
380
+ detail,
381
+ on: this.type,
382
+ property,
383
+ found: scopeFound(this.value, first),
384
+ expected,
385
+ errors
386
+ };
387
+ }
388
+ toResponse(headers) {
389
+ if (this.#maskResponseValue) return problemResponse(this.payload, headers);
390
+ if (this.customError !== void 0) {
391
+ const isString = typeof this.customError === "string";
392
+ const response = new Response(isString ? this.customError : JSON.stringify(this.customError), {
393
+ status: this.status ?? 422,
394
+ headers: {
395
+ ...headers,
396
+ "content-type": isString ? "text/plain" : "application/json"
397
+ }
398
+ });
399
+ skipClone.add(response);
400
+ return response;
401
+ }
402
+ return problemResponse(this.payload, headers);
403
+ }
335
404
  };
405
+ Object.defineProperty(ValidationError.prototype, "message", {
406
+ get() {
407
+ return this["~resolve"]().message;
408
+ },
409
+ set(v) {
410
+ Object.defineProperty(this, "message", {
411
+ value: v,
412
+ writable: true,
413
+ enumerable: false,
414
+ configurable: true
415
+ });
416
+ },
417
+ enumerable: false,
418
+ configurable: true
419
+ });
420
+ const emptyHttpStatus = new Set([
421
+ 101,
422
+ 204,
423
+ 205,
424
+ 304,
425
+ 307,
426
+ 308
427
+ ]);
428
+ var ElysiaStatus = class {
429
+ constructor(code, res, headers) {
430
+ const response = res ?? (code in StatusMapBack ? StatusMapBack[code] : code);
431
+ this.code = StatusMap[code] ?? code;
432
+ if (!emptyHttpStatus.has(this.code)) this.response = response;
433
+ this.headers = headers;
434
+ }
435
+ get status() {
436
+ return this.code;
437
+ }
438
+ };
439
+ const status = (code, response) => new ElysiaStatus(code, response);
440
+ const PROBLEM_JSON = "application/problem+json";
441
+ function problemBody(p) {
442
+ const status = typeof p.status === "string" ? StatusMap[p.status] ?? 500 : p.status ?? 500;
443
+ const body = {
444
+ type: "about:blank",
445
+ ...p,
446
+ status
447
+ };
448
+ if (body.title == null) body.title = StatusMapBack[status] ?? "Error";
449
+ return body;
450
+ }
451
+ function problemResponse(p, headers) {
452
+ const body = problemBody(p);
453
+ const response = new Response(emptyHttpStatus.has(body.status) ? null : JSON.stringify(body), {
454
+ status: body.status,
455
+ headers: {
456
+ ...headers,
457
+ "content-type": PROBLEM_JSON
458
+ }
459
+ });
460
+ skipClone.add(response);
461
+ return response;
462
+ }
463
+ function internalServerErrorBody(error) {
464
+ const body = {
465
+ type: "internal-server-error",
466
+ title: "Internal Server Error",
467
+ status: 500
468
+ };
469
+ if (!isProduction()) {
470
+ if (error?.message != null) body.detail = error.message;
471
+ if (error?.name) body.name = error.name;
472
+ if (error?.cause !== void 0) body.cause = error.cause;
473
+ }
474
+ return body;
475
+ }
476
+ function internalServerErrorBodyString(error) {
477
+ try {
478
+ return JSON.stringify(internalServerErrorBody(error));
479
+ } catch {
480
+ try {
481
+ const safe = internalServerErrorBody(error);
482
+ delete safe.cause;
483
+ return JSON.stringify(safe);
484
+ } catch {
485
+ return JSON.stringify({
486
+ type: "internal-server-error",
487
+ title: "Internal Server Error",
488
+ status: 500
489
+ });
490
+ }
491
+ }
492
+ }
493
+ function internalServerErrorResponse(error) {
494
+ const body = internalServerErrorBodyString(error);
495
+ const response = new Response(body, {
496
+ status: 500,
497
+ headers: { "content-type": PROBLEM_JSON }
498
+ });
499
+ skipClone.add(response);
500
+ return response;
501
+ }
502
+ function problem(statusOrDetail, detail) {
503
+ const body = typeof statusOrDetail === "object" ? statusOrDetail : {
504
+ ...detail,
505
+ status: statusOrDetail
506
+ };
507
+ return new ElysiaStatus(body.status ?? 500, problemBody(body), { "content-type": PROBLEM_JSON });
508
+ }
509
+
510
+ //#endregion
511
+ export { ElysiaError, ElysiaStatus, InternalServerError, NotFound, PROBLEM_JSON, ParseError, ValidationError, internalServerErrorBody, internalServerErrorBodyString, internalServerErrorResponse, isProduction, problem, problemBody, problemResponse, status, subValueAt, validationDetail };