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
@@ -0,0 +1,114 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_plugin_aot_core = require('./core.js');
3
+ const require_plugin_aot_treeshake = require('./treeshake.js');
4
+
5
+ //#region src/plugin/aot/hooks.ts
6
+ const toPosix = (path) => path.replace(/\\/g, "/");
7
+ const VIRTUAL = "\0elysia/compiled";
8
+ const VIRTUAL_TYPE = "\0elysia/type";
9
+ const createAotPluginHooks = (entry, options) => {
10
+ const entryPath = require_plugin_aot_core.resolveEntry(entry);
11
+ const entryPosix = toPosix(entryPath);
12
+ const entryRealPosix = toPosix(require_plugin_aot_core.realPath(entryPath));
13
+ let entryMatched = false;
14
+ let initial = true;
15
+ const isEntry = (id) => {
16
+ const posix = toPosix(id);
17
+ if (posix === entryPosix || posix === entryRealPosix) return true;
18
+ return toPosix(require_plugin_aot_core.realPath(id)) === entryRealPosix;
19
+ };
20
+ const treeShake = options?.treeShake ?? true;
21
+ let source = "";
22
+ let virtualType;
23
+ let stub = { ...require_plugin_aot_core.NO_STUB };
24
+ let isElysiaModule = (_path) => false;
25
+ return {
26
+ async buildStart() {
27
+ const generated = initial ? await require_plugin_aot_core.generateCompiledArtifacts(entry, options) : await require_plugin_aot_core.generateCompiledArtifactsIsolated(entry, options);
28
+ initial = false;
29
+ source = generated.source;
30
+ stub = generated.stub;
31
+ virtualType = generated.virtualType;
32
+ isElysiaModule = require_plugin_aot_core.makeIsElysiaModule(require_plugin_aot_core.resolveElysiaRoot(entryPath));
33
+ },
34
+ buildEnd() {
35
+ if (!entryMatched) throw new Error(`[elysia-aot] entry "${entry}" never appeared in the Vite module graph. Compiled manifest was not injected. Check that the plugin entry matches a build input.`);
36
+ },
37
+ resolveId(id) {
38
+ if (id === "elysia/compiled") return VIRTUAL;
39
+ if (id === "elysia/type" && virtualType !== void 0) return VIRTUAL_TYPE;
40
+ },
41
+ load(id) {
42
+ if (id === VIRTUAL) return source;
43
+ if (id === VIRTUAL_TYPE) return virtualType;
44
+ },
45
+ async transform(code, id) {
46
+ const cleanId = id.split("?", 1)[0];
47
+ for (const key of Object.keys(require_plugin_aot_core.STUB_SOURCES)) {
48
+ if (!stub[key]) continue;
49
+ for (const { filter, source: stubSource } of require_plugin_aot_core.STUB_SOURCES[key]) if (filter.test(cleanId)) return require_plugin_aot_core.alignStubExtensions(stubSource, cleanId);
50
+ }
51
+ if (stub.adapter !== false && require_plugin_aot_core.ADAPTER_CONSTANTS_FILTER.test(cleanId)) return require_plugin_aot_core.alignStubExtensions(require_plugin_aot_core.adapterConstantsSource(stub.adapter), cleanId);
52
+ if (stub.adapter === "web-standard" && require_plugin_aot_core.ADAPTER_BUN_FILTER.test(cleanId)) return require_plugin_aot_core.alignStubExtensions(require_plugin_aot_core.bunAdapterStubSource, cleanId);
53
+ if (stub.isProduction && require_plugin_aot_core.IS_PRODUCTION_FILTER.test(cleanId)) return require_plugin_aot_core.alignStubExtensions(`export const isProduction = () => true\n`, cleanId);
54
+ let out = code;
55
+ if (treeShake && require_plugin_aot_core.SOURCE_REGEX.test(cleanId) && !cleanId.includes("node_modules")) out = require_plugin_aot_treeshake.rewriteTypeImport(out);
56
+ if (stub.isProduction && isElysiaModule(cleanId)) out = require_plugin_aot_core.rewriteIsProductionCalls(out);
57
+ if (isEntry(cleanId)) {
58
+ entryMatched = true;
59
+ out = `import 'elysia/compiled'\n${out}`;
60
+ }
61
+ return out === code ? void 0 : out;
62
+ },
63
+ isTransformCandidate(id) {
64
+ const cleanId = id.split("?", 1)[0];
65
+ if (isEntry(cleanId)) return true;
66
+ if (require_plugin_aot_core.ELYSIA_MODULE_FILTER.test(cleanId) || require_plugin_aot_core.ADAPTER_CONSTANTS_FILTER.test(cleanId) || require_plugin_aot_core.ADAPTER_BUN_FILTER.test(cleanId) || require_plugin_aot_core.IS_PRODUCTION_FILTER.test(cleanId)) return true;
67
+ for (const key of Object.keys(require_plugin_aot_core.STUB_SOURCES)) for (const { filter } of require_plugin_aot_core.STUB_SOURCES[key]) if (filter.test(cleanId)) return true;
68
+ if (require_plugin_aot_core.SOURCE_REGEX.test(cleanId) && !cleanId.includes("node_modules")) return true;
69
+ return false;
70
+ }
71
+ };
72
+ };
73
+ const resolveLoader = (path) => {
74
+ const ext = path.slice(path.lastIndexOf("."));
75
+ return ext === ".js" || ext === ".mjs" || ext === ".cjs" ? "js" : ext === ".jsx" ? "jsx" : ext === ".tsx" ? "tsx" : "ts";
76
+ };
77
+ async function setupAotOnLoad(build, hooks, { readText, resolveDir }) {
78
+ await hooks.buildStart();
79
+ const virtualLoad = (id) => () => ({
80
+ contents: hooks.load(id),
81
+ loader: "js",
82
+ ...resolveDir !== void 0 ? { resolveDir } : {}
83
+ });
84
+ build.onResolve({ filter: /^elysia\/compiled$/ }, () => ({
85
+ path: "manifest",
86
+ namespace: "elysia-aot"
87
+ }));
88
+ build.onLoad({
89
+ filter: /.*/,
90
+ namespace: "elysia-aot"
91
+ }, virtualLoad(VIRTUAL));
92
+ build.onResolve({ filter: /^elysia\/type$/ }, () => hooks.resolveId("elysia/type") !== void 0 ? {
93
+ path: "elysia-type",
94
+ namespace: "elysia-aot-type"
95
+ } : void 0);
96
+ build.onLoad({
97
+ filter: /.*/,
98
+ namespace: "elysia-aot-type"
99
+ }, virtualLoad(VIRTUAL_TYPE));
100
+ build.onLoad({ filter: require_plugin_aot_core.SOURCE_REGEX }, async (args) => {
101
+ if (!hooks.isTransformCandidate(args.path)) return void 0;
102
+ const original = await readText(args.path);
103
+ const contents = await hooks.transform(original, args.path);
104
+ if (contents === void 0) return void 0;
105
+ return {
106
+ contents,
107
+ loader: resolveLoader(args.path)
108
+ };
109
+ });
110
+ }
111
+
112
+ //#endregion
113
+ exports.createAotPluginHooks = createAotPluginHooks;
114
+ exports.setupAotOnLoad = setupAotOnLoad;
@@ -0,0 +1,112 @@
1
+ import { ADAPTER_BUN_FILTER, ADAPTER_CONSTANTS_FILTER, ELYSIA_MODULE_FILTER, IS_PRODUCTION_FILTER, NO_STUB, SOURCE_REGEX, STUB_SOURCES, adapterConstantsSource, alignStubExtensions, bunAdapterStubSource, generateCompiledArtifacts, generateCompiledArtifactsIsolated, makeIsElysiaModule, realPath, resolveElysiaRoot, resolveEntry, rewriteIsProductionCalls } from "./core.mjs";
2
+ import { rewriteTypeImport } from "./treeshake.mjs";
3
+
4
+ //#region src/plugin/aot/hooks.ts
5
+ const toPosix = (path) => path.replace(/\\/g, "/");
6
+ const VIRTUAL = "\0elysia/compiled";
7
+ const VIRTUAL_TYPE = "\0elysia/type";
8
+ const createAotPluginHooks = (entry, options) => {
9
+ const entryPath = resolveEntry(entry);
10
+ const entryPosix = toPosix(entryPath);
11
+ const entryRealPosix = toPosix(realPath(entryPath));
12
+ let entryMatched = false;
13
+ let initial = true;
14
+ const isEntry = (id) => {
15
+ const posix = toPosix(id);
16
+ if (posix === entryPosix || posix === entryRealPosix) return true;
17
+ return toPosix(realPath(id)) === entryRealPosix;
18
+ };
19
+ const treeShake = options?.treeShake ?? true;
20
+ let source = "";
21
+ let virtualType;
22
+ let stub = { ...NO_STUB };
23
+ let isElysiaModule = (_path) => false;
24
+ return {
25
+ async buildStart() {
26
+ const generated = initial ? await generateCompiledArtifacts(entry, options) : await generateCompiledArtifactsIsolated(entry, options);
27
+ initial = false;
28
+ source = generated.source;
29
+ stub = generated.stub;
30
+ virtualType = generated.virtualType;
31
+ isElysiaModule = makeIsElysiaModule(resolveElysiaRoot(entryPath));
32
+ },
33
+ buildEnd() {
34
+ if (!entryMatched) throw new Error(`[elysia-aot] entry "${entry}" never appeared in the Vite module graph. Compiled manifest was not injected. Check that the plugin entry matches a build input.`);
35
+ },
36
+ resolveId(id) {
37
+ if (id === "elysia/compiled") return VIRTUAL;
38
+ if (id === "elysia/type" && virtualType !== void 0) return VIRTUAL_TYPE;
39
+ },
40
+ load(id) {
41
+ if (id === VIRTUAL) return source;
42
+ if (id === VIRTUAL_TYPE) return virtualType;
43
+ },
44
+ async transform(code, id) {
45
+ const cleanId = id.split("?", 1)[0];
46
+ for (const key of Object.keys(STUB_SOURCES)) {
47
+ if (!stub[key]) continue;
48
+ for (const { filter, source: stubSource } of STUB_SOURCES[key]) if (filter.test(cleanId)) return alignStubExtensions(stubSource, cleanId);
49
+ }
50
+ if (stub.adapter !== false && ADAPTER_CONSTANTS_FILTER.test(cleanId)) return alignStubExtensions(adapterConstantsSource(stub.adapter), cleanId);
51
+ if (stub.adapter === "web-standard" && ADAPTER_BUN_FILTER.test(cleanId)) return alignStubExtensions(bunAdapterStubSource, cleanId);
52
+ if (stub.isProduction && IS_PRODUCTION_FILTER.test(cleanId)) return alignStubExtensions(`export const isProduction = () => true\n`, cleanId);
53
+ let out = code;
54
+ if (treeShake && SOURCE_REGEX.test(cleanId) && !cleanId.includes("node_modules")) out = rewriteTypeImport(out);
55
+ if (stub.isProduction && isElysiaModule(cleanId)) out = rewriteIsProductionCalls(out);
56
+ if (isEntry(cleanId)) {
57
+ entryMatched = true;
58
+ out = `import 'elysia/compiled'\n${out}`;
59
+ }
60
+ return out === code ? void 0 : out;
61
+ },
62
+ isTransformCandidate(id) {
63
+ const cleanId = id.split("?", 1)[0];
64
+ if (isEntry(cleanId)) return true;
65
+ if (ELYSIA_MODULE_FILTER.test(cleanId) || ADAPTER_CONSTANTS_FILTER.test(cleanId) || ADAPTER_BUN_FILTER.test(cleanId) || IS_PRODUCTION_FILTER.test(cleanId)) return true;
66
+ for (const key of Object.keys(STUB_SOURCES)) for (const { filter } of STUB_SOURCES[key]) if (filter.test(cleanId)) return true;
67
+ if (SOURCE_REGEX.test(cleanId) && !cleanId.includes("node_modules")) return true;
68
+ return false;
69
+ }
70
+ };
71
+ };
72
+ const resolveLoader = (path) => {
73
+ const ext = path.slice(path.lastIndexOf("."));
74
+ return ext === ".js" || ext === ".mjs" || ext === ".cjs" ? "js" : ext === ".jsx" ? "jsx" : ext === ".tsx" ? "tsx" : "ts";
75
+ };
76
+ async function setupAotOnLoad(build, hooks, { readText, resolveDir }) {
77
+ await hooks.buildStart();
78
+ const virtualLoad = (id) => () => ({
79
+ contents: hooks.load(id),
80
+ loader: "js",
81
+ ...resolveDir !== void 0 ? { resolveDir } : {}
82
+ });
83
+ build.onResolve({ filter: /^elysia\/compiled$/ }, () => ({
84
+ path: "manifest",
85
+ namespace: "elysia-aot"
86
+ }));
87
+ build.onLoad({
88
+ filter: /.*/,
89
+ namespace: "elysia-aot"
90
+ }, virtualLoad(VIRTUAL));
91
+ build.onResolve({ filter: /^elysia\/type$/ }, () => hooks.resolveId("elysia/type") !== void 0 ? {
92
+ path: "elysia-type",
93
+ namespace: "elysia-aot-type"
94
+ } : void 0);
95
+ build.onLoad({
96
+ filter: /.*/,
97
+ namespace: "elysia-aot-type"
98
+ }, virtualLoad(VIRTUAL_TYPE));
99
+ build.onLoad({ filter: SOURCE_REGEX }, async (args) => {
100
+ if (!hooks.isTransformCandidate(args.path)) return void 0;
101
+ const original = await readText(args.path);
102
+ const contents = await hooks.transform(original, args.path);
103
+ if (contents === void 0) return void 0;
104
+ return {
105
+ contents,
106
+ loader: resolveLoader(args.path)
107
+ };
108
+ });
109
+ }
110
+
111
+ //#endregion
112
+ export { createAotPluginHooks, setupAotOnLoad };
@@ -0,0 +1,23 @@
1
+ import { AotPluginHooks } from "./hooks.js";
2
+
3
+ //#region src/plugin/aot/rspack-loader.d.ts
4
+ declare function registerAotHooks(token: string, hooks: AotPluginHooks): void;
5
+ declare function unregisterAotHooks(token: string): void;
6
+ interface AotLoaderContext {
7
+ resourcePath: string;
8
+ getOptions(): {
9
+ token?: string;
10
+ } | undefined;
11
+ async(): (err: Error | null | undefined, content?: string, sourceMap?: unknown) => void;
12
+ }
13
+ /**
14
+ * webpack/rspack-style JS loader. Delegates to `hooks.transform`, which returns
15
+ * `undefined` for any module it doesn't rewrite so the loader passes the source through unchanged.
16
+ * `enforce: 'pre'` runs this before the swc/babel loaders, mirroring unplugin's `enforce: 'pre'`.
17
+ *
18
+ * Uses `this.async()` because `hooks.transform` can be async (isolated
19
+ * regeneration in watch flows).
20
+ */
21
+ declare function elysiaAotLoader(this: AotLoaderContext, source: string): void;
22
+ //#endregion
23
+ export { elysiaAotLoader as default, registerAotHooks, unregisterAotHooks };
@@ -0,0 +1,44 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+
3
+ //#region src/plugin/aot/rspack-loader.ts
4
+ /**
5
+ * Shared, same-process registry mapping an opaque token -> the plugin instance's
6
+ * hooks. rspack loaders run in the same process as the plugin, so the plugin
7
+ * registers its `hooks` under a per-instance token (see `rspack.ts`) and passes
8
+ * the token through the rule's loader `options`; this loader looks it up here.
9
+ *
10
+ * This is the standard "loader can't close over plugin state, so pass a token
11
+ * through options and resolve it from a module-global map" trick. Keyed per
12
+ * plugin instance so concurrent compilers / multiple plugin instances don't
13
+ * clobber each other.
14
+ */
15
+ const registry = /* @__PURE__ */ new Map();
16
+ function registerAotHooks(token, hooks) {
17
+ registry.set(token, hooks);
18
+ }
19
+ function unregisterAotHooks(token) {
20
+ registry.delete(token);
21
+ }
22
+ /**
23
+ * webpack/rspack-style JS loader. Delegates to `hooks.transform`, which returns
24
+ * `undefined` for any module it doesn't rewrite so the loader passes the source through unchanged.
25
+ * `enforce: 'pre'` runs this before the swc/babel loaders, mirroring unplugin's `enforce: 'pre'`.
26
+ *
27
+ * Uses `this.async()` because `hooks.transform` can be async (isolated
28
+ * regeneration in watch flows).
29
+ */
30
+ function elysiaAotLoader(source) {
31
+ const callback = this.async();
32
+ const token = this.getOptions()?.token;
33
+ const hooks = token ? registry.get(token) : void 0;
34
+ if (!hooks) {
35
+ callback(null, source);
36
+ return;
37
+ }
38
+ Promise.resolve(hooks.transform(source, this.resourcePath)).then((out) => callback(null, out === void 0 ? source : out), (error) => callback(error));
39
+ }
40
+
41
+ //#endregion
42
+ exports.default = elysiaAotLoader;
43
+ exports.registerAotHooks = registerAotHooks;
44
+ exports.unregisterAotHooks = unregisterAotHooks;
@@ -0,0 +1,40 @@
1
+ //#region src/plugin/aot/rspack-loader.ts
2
+ /**
3
+ * Shared, same-process registry mapping an opaque token -> the plugin instance's
4
+ * hooks. rspack loaders run in the same process as the plugin, so the plugin
5
+ * registers its `hooks` under a per-instance token (see `rspack.ts`) and passes
6
+ * the token through the rule's loader `options`; this loader looks it up here.
7
+ *
8
+ * This is the standard "loader can't close over plugin state, so pass a token
9
+ * through options and resolve it from a module-global map" trick. Keyed per
10
+ * plugin instance so concurrent compilers / multiple plugin instances don't
11
+ * clobber each other.
12
+ */
13
+ const registry = /* @__PURE__ */ new Map();
14
+ function registerAotHooks(token, hooks) {
15
+ registry.set(token, hooks);
16
+ }
17
+ function unregisterAotHooks(token) {
18
+ registry.delete(token);
19
+ }
20
+ /**
21
+ * webpack/rspack-style JS loader. Delegates to `hooks.transform`, which returns
22
+ * `undefined` for any module it doesn't rewrite so the loader passes the source through unchanged.
23
+ * `enforce: 'pre'` runs this before the swc/babel loaders, mirroring unplugin's `enforce: 'pre'`.
24
+ *
25
+ * Uses `this.async()` because `hooks.transform` can be async (isolated
26
+ * regeneration in watch flows).
27
+ */
28
+ function elysiaAotLoader(source) {
29
+ const callback = this.async();
30
+ const token = this.getOptions()?.token;
31
+ const hooks = token ? registry.get(token) : void 0;
32
+ if (!hooks) {
33
+ callback(null, source);
34
+ return;
35
+ }
36
+ Promise.resolve(hooks.transform(source, this.resourcePath)).then((out) => callback(null, out === void 0 ? source : out), (error) => callback(error));
37
+ }
38
+
39
+ //#endregion
40
+ export { elysiaAotLoader as default, registerAotHooks, unregisterAotHooks };
@@ -0,0 +1,23 @@
1
+ import { ElysiaAotOptions } from "./core.js";
2
+
3
+ //#region src/plugin/aot/rspack.d.ts
4
+ /**
5
+ * Elysia AOT build plugin
6
+ *
7
+ * Run Elysia JIT compilation at build time instead of runtime.
8
+ *
9
+ * ```ts
10
+ * // rspack.config.ts
11
+ * import { aot } from 'elysia/plugin/aot/rspack'
12
+ *
13
+ * export default {
14
+ * plugins: [aot('src/index.ts')]
15
+ * }
16
+ * ```
17
+ */
18
+ declare const aot: (entry: string, options?: ElysiaAotOptions) => {
19
+ name: string;
20
+ apply(compiler: unknown): void;
21
+ };
22
+ //#endregion
23
+ export { aot, aot as default };
@@ -0,0 +1,85 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_runtime = require('../../_virtual/_rolldown/runtime.js');
3
+ const require_plugin_aot_core = require('./core.js');
4
+ const require_plugin_aot_hooks = require('./hooks.js');
5
+ const require_plugin_aot_rspack_loader = require('./rspack-loader.js');
6
+ let node_fs = require("node:fs");
7
+ let node_path = require("node:path");
8
+ let node_url = require("node:url");
9
+ let node_crypto = require("node:crypto");
10
+
11
+ //#region src/plugin/aot/rspack.ts
12
+ const PLUGIN = "elysia-aot";
13
+ let tokenCounter = 0;
14
+ function loaderPath() {
15
+ const moduleUrl = require("url").pathToFileURL(__filename).href;
16
+ return (0, node_path.resolve)((0, node_path.dirname)((0, node_url.fileURLToPath)(moduleUrl)), "rspack-loader" + require_plugin_aot_core.siblingModuleExt(moduleUrl));
17
+ }
18
+ /**
19
+ * Elysia AOT build plugin
20
+ *
21
+ * Run Elysia JIT compilation at build time instead of runtime.
22
+ *
23
+ * ```ts
24
+ * // rspack.config.ts
25
+ * import { aot } from 'elysia/plugin/aot/rspack'
26
+ *
27
+ * export default {
28
+ * plugins: [aot('src/index.ts')]
29
+ * }
30
+ * ```
31
+ */
32
+ const aot = (entry, options) => {
33
+ const hooks = require_plugin_aot_hooks.createAotPluginHooks(entry, options);
34
+ const entryPath = require_plugin_aot_core.resolveEntry(entry);
35
+ const token = `${PLUGIN}:${entryPath}:${tokenCounter++}`;
36
+ const cacheDir = (0, node_path.join)(process.cwd(), "node_modules", ".cache", "elysia-aot", (0, node_crypto.createHash)("sha1").update(entryPath).digest("hex").slice(0, 16));
37
+ const manifestFile = (0, node_path.join)(cacheDir, "compiled.mjs");
38
+ const typeFile = (0, node_path.join)(cacheDir, "type.mjs");
39
+ const apply = (rawCompiler) => {
40
+ const compiler = rawCompiler;
41
+ compiler.options.module.rules.push({
42
+ test: (id) => hooks.isTransformCandidate(id.split("?", 1)[0]),
43
+ enforce: "pre",
44
+ use: [{
45
+ loader: loaderPath(),
46
+ options: { token }
47
+ }]
48
+ });
49
+ compiler.options.module.rules.push({
50
+ test: (id) => id.split("?", 1)[0] === manifestFile,
51
+ sideEffects: true
52
+ });
53
+ compiler.hooks.beforeCompile.tapPromise(PLUGIN, async () => {
54
+ require_plugin_aot_rspack_loader.registerAotHooks(token, hooks);
55
+ await hooks.buildStart();
56
+ const source = hooks.load(hooks.resolveId("elysia/compiled"));
57
+ const typeId = hooks.resolveId("elysia/type");
58
+ const virtualType = typeId === void 0 ? void 0 : hooks.load(typeId);
59
+ (0, node_fs.mkdirSync)(cacheDir, { recursive: true });
60
+ (0, node_fs.writeFileSync)(manifestFile, source ?? "");
61
+ const resolveOptions = compiler.options.resolve ??= {};
62
+ const alias = resolveOptions.alias ??= {};
63
+ alias["elysia/compiled$"] = manifestFile;
64
+ if (virtualType !== void 0) {
65
+ (0, node_fs.writeFileSync)(typeFile, virtualType);
66
+ alias["elysia/type$"] = typeFile;
67
+ } else delete alias["elysia/type$"];
68
+ });
69
+ compiler.hooks.afterCompile.tapPromise(PLUGIN, async () => {
70
+ try {
71
+ hooks.buildEnd();
72
+ } finally {
73
+ require_plugin_aot_rspack_loader.unregisterAotHooks(token);
74
+ }
75
+ });
76
+ };
77
+ return {
78
+ name: PLUGIN,
79
+ apply
80
+ };
81
+ };
82
+
83
+ //#endregion
84
+ exports.aot = aot;
85
+ exports.default = aot;
@@ -0,0 +1,82 @@
1
+ import { resolveEntry, siblingModuleExt } from "./core.mjs";
2
+ import { createAotPluginHooks } from "./hooks.mjs";
3
+ import { registerAotHooks, unregisterAotHooks } from "./rspack-loader.mjs";
4
+ import { mkdirSync, writeFileSync } from "node:fs";
5
+ import { dirname, join, resolve } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ import { createHash } from "node:crypto";
8
+
9
+ //#region src/plugin/aot/rspack.ts
10
+ const PLUGIN = "elysia-aot";
11
+ let tokenCounter = 0;
12
+ function loaderPath() {
13
+ const moduleUrl = import.meta.url;
14
+ return resolve(dirname(fileURLToPath(moduleUrl)), "rspack-loader" + siblingModuleExt(moduleUrl));
15
+ }
16
+ /**
17
+ * Elysia AOT build plugin
18
+ *
19
+ * Run Elysia JIT compilation at build time instead of runtime.
20
+ *
21
+ * ```ts
22
+ * // rspack.config.ts
23
+ * import { aot } from 'elysia/plugin/aot/rspack'
24
+ *
25
+ * export default {
26
+ * plugins: [aot('src/index.ts')]
27
+ * }
28
+ * ```
29
+ */
30
+ const aot = (entry, options) => {
31
+ const hooks = createAotPluginHooks(entry, options);
32
+ const entryPath = resolveEntry(entry);
33
+ const token = `${PLUGIN}:${entryPath}:${tokenCounter++}`;
34
+ const cacheDir = join(process.cwd(), "node_modules", ".cache", "elysia-aot", createHash("sha1").update(entryPath).digest("hex").slice(0, 16));
35
+ const manifestFile = join(cacheDir, "compiled.mjs");
36
+ const typeFile = join(cacheDir, "type.mjs");
37
+ const apply = (rawCompiler) => {
38
+ const compiler = rawCompiler;
39
+ compiler.options.module.rules.push({
40
+ test: (id) => hooks.isTransformCandidate(id.split("?", 1)[0]),
41
+ enforce: "pre",
42
+ use: [{
43
+ loader: loaderPath(),
44
+ options: { token }
45
+ }]
46
+ });
47
+ compiler.options.module.rules.push({
48
+ test: (id) => id.split("?", 1)[0] === manifestFile,
49
+ sideEffects: true
50
+ });
51
+ compiler.hooks.beforeCompile.tapPromise(PLUGIN, async () => {
52
+ registerAotHooks(token, hooks);
53
+ await hooks.buildStart();
54
+ const source = hooks.load(hooks.resolveId("elysia/compiled"));
55
+ const typeId = hooks.resolveId("elysia/type");
56
+ const virtualType = typeId === void 0 ? void 0 : hooks.load(typeId);
57
+ mkdirSync(cacheDir, { recursive: true });
58
+ writeFileSync(manifestFile, source ?? "");
59
+ const resolveOptions = compiler.options.resolve ??= {};
60
+ const alias = resolveOptions.alias ??= {};
61
+ alias["elysia/compiled$"] = manifestFile;
62
+ if (virtualType !== void 0) {
63
+ writeFileSync(typeFile, virtualType);
64
+ alias["elysia/type$"] = typeFile;
65
+ } else delete alias["elysia/type$"];
66
+ });
67
+ compiler.hooks.afterCompile.tapPromise(PLUGIN, async () => {
68
+ try {
69
+ hooks.buildEnd();
70
+ } finally {
71
+ unregisterAotHooks(token);
72
+ }
73
+ });
74
+ };
75
+ return {
76
+ name: PLUGIN,
77
+ apply
78
+ };
79
+ };
80
+
81
+ //#endregion
82
+ export { aot, aot as default };
@@ -0,0 +1,60 @@
1
+ import { AotFingerprint, CapturedHandler, CapturedValidator } from "../../compile/aot.js";
2
+ import { AnyElysia } from "../../base.js";
3
+ import { JITProbeResult } from "../../compile/jit-probe.js";
4
+
5
+ //#region src/plugin/aot/source.d.ts
6
+ type AotTarget = 'bun' | 'node' | 'workerd';
7
+ interface CompileToSourceOptions {
8
+ /** Emit a self-registering fingerprinted program (`Compiled.register(...)`). */
9
+ register?: boolean;
10
+ /**
11
+ * Deploy target for build-time-baked codegen consts. Lets you build on one
12
+ * runtime and deploy to another e.g. build under Bun with
13
+ * `target: 'workerd'` so the manifest bakes `Object.fromEntries(...)` instead
14
+ * of the Bun-only `Headers.toJSON()`. Removes the need to generate the
15
+ * manifest under Node for a workerd deploy.
16
+ *
17
+ * @default the build runtime
18
+ */
19
+ target?: AotTarget;
20
+ /**
21
+ * Split the emitted validator manifest into lazily-materialized groups
22
+ *
23
+ * Validator entries are registered as grouped thunks: a group's
24
+ * validators are constructed on the first request to any route in that
25
+ * group, trading first-request latency in unbuilt groups for lower
26
+ * startup cost. Handlers are always eager. Only validator construction
27
+ * is deferred. Pass a number to set the group size explicitly.
28
+ *
29
+ * @default decided by Elysia based on route batch scale
30
+ */
31
+ lazy?: boolean | number;
32
+ /**
33
+ * Specifier the generated module imports `Compiled` from
34
+ * Must resolve to the same `elysia` instance the app runs
35
+ *
36
+ * @default 'elysia'
37
+ */
38
+ registerFrom?: string;
39
+ /**
40
+ * Specifier the generated module imports the `Reconstruct` table from,
41
+ * only emitted when the manifest carries validators. The table is pure,
42
+ * so unlike `registerFrom` it may resolve to any elysia copy the
43
+ * registration itself goes through `Compiled` (from `registerFrom`)
44
+ *
45
+ * @default 'elysia/reconstruct'
46
+ */
47
+ reconstructFrom?: string;
48
+ }
49
+ declare const autoGroupSize: (routes: number) => number;
50
+ declare function compileToSource(app: AnyElysia, options?: CompileToSourceOptions): Promise<string>;
51
+ interface CapturedArtifacts {
52
+ source: string;
53
+ validators: CapturedValidator[];
54
+ handlers: CapturedHandler[];
55
+ fingerprint: AotFingerprint;
56
+ }
57
+ declare function captureArtifacts(app: AnyElysia, options?: CompileToSourceOptions): Promise<CapturedArtifacts>;
58
+ declare function replayStubbability(app: AnyElysia, handlers: CapturedHandler[]): JITProbeResult;
59
+ //#endregion
60
+ export { AotTarget, CapturedArtifacts, CompileToSourceOptions, autoGroupSize, captureArtifacts, compileToSource, replayStubbability };