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