acrylblends 1.0.4 → 1.0.6

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 (351) hide show
  1. package/docs/framework/agents/index.md +7 -5
  2. package/lib/accept-CNNHu4Cf.js +193 -0
  3. package/lib/{accepts-XBuZPVRI.js → accepts-Btq83xPd.js} +1 -1
  4. package/lib/accepts.js +1 -1
  5. package/lib/acryl-base.js +1 -331
  6. package/lib/adapter-CaZ6FZUU.js +37 -0
  7. package/lib/adapter.js +1 -36
  8. package/lib/{app-BM0rTCp7.js → app-CQcGWjrk.js} +4 -4
  9. package/lib/app-base-CpRMZL4v.js +332 -0
  10. package/lib/{audit-D5z9uwOP.d.ts → audit-GcLtvNLV.d.ts} +4 -2
  11. package/lib/{base-NSN_SNv-.js → base-D_6kfOr-.js} +1 -1
  12. package/lib/basic-auth-C0HTRpXh.js +20 -0
  13. package/lib/basic-auth-DFLflXNe.js +95 -0
  14. package/lib/basic-auth.js +1 -94
  15. package/lib/bearer-auth-Cwxt-vgS.js +94 -0
  16. package/lib/bearer-auth.js +1 -93
  17. package/lib/body-D7f4e7w_.js +94 -0
  18. package/lib/body-limit-WmIjWRLt.js +66 -0
  19. package/lib/body-limit.js +1 -65
  20. package/lib/buffer-CkEOJCcY.js +51 -0
  21. package/lib/bun.js +3 -3
  22. package/lib/cache-B0bHH7s5.js +169 -0
  23. package/lib/cache.js +1 -168
  24. package/lib/{client-DDLXwhBo.js → client-BrMFnMEd.js} +1 -1
  25. package/lib/{client-modules-CLvWOjbd.js → client-modules-drj4mjhj.js} +4 -4
  26. package/lib/client.js +1 -1
  27. package/lib/color-COa3DplO.js +37 -0
  28. package/lib/combine-TWuGdcbC.js +137 -0
  29. package/lib/combine.js +1 -136
  30. package/lib/{components-cEW3ovK0.js → components-B2ka9Ax1.js} +4 -4
  31. package/lib/{components-JXVm45kK.js → components-PVXwaOaC.js} +2 -2
  32. package/lib/compress-BzWqsHF1.js +79 -0
  33. package/lib/compress-C-9vK4B2.d.ts +11 -0
  34. package/lib/compress-DCyrrQ5D.js +11 -0
  35. package/lib/compress.d.ts +1 -1
  36. package/lib/compress.js +2 -78
  37. package/lib/concurrent-DrF3d2c-.js +30 -0
  38. package/lib/conninfo-BCROmdnf.d.ts +11 -0
  39. package/lib/conninfo-CWJwieh4.js +19 -0
  40. package/lib/constants-CBSEudrb.js +7 -0
  41. package/lib/{context-DDO0cfuP.js → context-CkOh7Ygv.js} +2 -2
  42. package/lib/context-storage-iuPoI_CR.js +52 -0
  43. package/lib/context-storage.js +1 -51
  44. package/lib/cookie-B1LlkzOe.js +125 -0
  45. package/lib/cookie-BHIduy2T.js +82 -0
  46. package/lib/cookie.js +1 -81
  47. package/lib/cordis/db-sqlite.d.ts +1 -1
  48. package/lib/cordis/door.d.ts +99 -5
  49. package/lib/cordis/door.js +562 -20
  50. package/lib/cordis/inspect.js +4 -4
  51. package/lib/cordis/kv-db.d.ts +1 -1
  52. package/lib/cordis/kv-db.js +1 -1
  53. package/lib/cordis/kv-json.d.ts +1 -1
  54. package/lib/cordis/kv-json.js +1 -1
  55. package/lib/cordis/node-server.d.ts +1 -1
  56. package/lib/cordis/node-server.js +3 -116
  57. package/lib/cordis/router-http.js +2 -2
  58. package/lib/cordis/router.js +4 -4
  59. package/lib/cordis/state.js +7 -7
  60. package/lib/{core-CaY8XDZ6.js → core-BOu1jYua.js} +1 -1
  61. package/lib/cors-CbAQ-8qU.js +106 -0
  62. package/lib/cors.js +1 -105
  63. package/lib/crypto-iVP-N-tS.js +34 -0
  64. package/lib/csrf-DqqOZtgy.js +101 -0
  65. package/lib/csrf.js +1 -100
  66. package/lib/css-C5CPVMvM.js +134 -0
  67. package/lib/css.js +2 -133
  68. package/lib/db/sqlite.d.ts +1 -25
  69. package/lib/dev-CLgu-JRe.js +50 -0
  70. package/lib/dev.js +1 -49
  71. package/lib/dom-YjND9Jt3.js +74 -0
  72. package/lib/door/host.d.ts +2 -2
  73. package/lib/door/host.js +1 -1
  74. package/lib/door/page.d.ts +3 -1
  75. package/lib/door/page.js +2 -2
  76. package/lib/door/protocol.d.ts +1 -1
  77. package/lib/door/protocol.js +1 -212
  78. package/lib/encode-BhbNLrjp.js +33 -0
  79. package/lib/factory-CLdSf-xS.js +30 -0
  80. package/lib/factory.js +1 -29
  81. package/lib/handler-C0wZ0KwO.js +12 -0
  82. package/lib/helpers-BEjcdbgw.js +5 -0
  83. package/lib/{hooks-w72iLeFR.js → hooks-CfC07ri0.js} +1 -1
  84. package/lib/html-CgNa89xw.js +31 -0
  85. package/lib/html-DGExBFNg.js +103 -0
  86. package/lib/html.d.ts +2 -5
  87. package/lib/html.js +2 -30
  88. package/lib/http-exception-MjWkT89V.js +54 -0
  89. package/lib/http-exception.js +1 -53
  90. package/lib/index-dAzQsJG9.d.ts +6 -0
  91. package/lib/index.js +3 -3
  92. package/lib/ip-restriction-jKtKCRM_.js +166 -0
  93. package/lib/ip-restriction.js +1 -165
  94. package/lib/ipaddr-DCoIo528.js +238 -0
  95. package/lib/jsx/dom/client.js +1 -1
  96. package/lib/jsx/dom/jsx-dev-runtime.js +1 -1
  97. package/lib/jsx/dom/jsx-runtime.js +2 -1
  98. package/lib/jsx/dom/server.js +3 -3
  99. package/lib/jsx/dom.js +5 -73
  100. package/lib/jsx/jsx-dev-runtime.d.ts +2 -5
  101. package/lib/jsx/jsx-dev-runtime.js +2 -13
  102. package/lib/jsx/jsx-runtime.d.ts +2 -2
  103. package/lib/jsx/jsx-runtime.js +4 -4
  104. package/lib/jsx/streaming.js +1 -1
  105. package/lib/jsx-CUQgttxU.js +47 -0
  106. package/lib/jsx-dev-runtime-B4WTyq8r.js +14 -0
  107. package/lib/{jsx-dev-runtime-CWLRA2F3.js → jsx-dev-runtime-BLfA-EhI.js} +2 -2
  108. package/lib/jsx-dev-runtime-CGt4kNYr.d.ts +6 -0
  109. package/lib/jsx-renderer-CfifM4hT.js +99 -0
  110. package/lib/jsx-renderer.js +1 -98
  111. package/lib/jsx-runtime-COCRWBJ9.js +2 -0
  112. package/lib/jsx.js +5 -46
  113. package/lib/{jwk-LkzeoaU8.js → jwk-CDPpYQpD.js} +3 -3
  114. package/lib/jwk.js +1 -1
  115. package/lib/{jwt-BGJBw5AF.js → jwt-BXoIA2fQ.js} +2 -2
  116. package/lib/{jwt-CskdhEW9.js → jwt-lyS4Q3mT.js} +3 -3
  117. package/lib/jwt.js +2 -2
  118. package/lib/kv/db.d.ts +1 -10
  119. package/lib/kv/db.js +1 -56
  120. package/lib/kv/json.d.ts +1 -9
  121. package/lib/kv/json.js +1 -223
  122. package/lib/{language-D9a4zqvn.js → language-DeGRtLJt.js} +2 -2
  123. package/lib/language.js +1 -1
  124. package/lib/{linear-router-C3FPib6h.js → linear-router-CmZn_JLV.js} +2 -2
  125. package/lib/logger-Ckxu8diz.js +54 -0
  126. package/lib/logger.js +1 -53
  127. package/lib/loopback-only-BbasoF7R.js +90 -0
  128. package/lib/loopback-only.js +1 -89
  129. package/lib/method-not-allowed-TO2_hnfl.js +82 -0
  130. package/lib/method-not-allowed.js +1 -81
  131. package/lib/method-override-DnZKfJbV.js +103 -0
  132. package/lib/method-override.js +1 -102
  133. package/lib/middleware-BfG_fp8P.js +12 -0
  134. package/lib/mime-BnScXkQn.js +77 -0
  135. package/lib/mount-QkK_3NtJ.js +67 -0
  136. package/lib/mount.js +1 -66
  137. package/lib/node-server/conninfo.d.ts +1 -10
  138. package/lib/node-server/conninfo.js +1 -18
  139. package/lib/node-server/register.js +25 -2
  140. package/lib/node-server/serve-static.d.ts +1 -17
  141. package/lib/node-server/serve-static.js +1 -1
  142. package/lib/node-server.d.ts +2 -2
  143. package/lib/node-server.js +4 -4
  144. package/lib/open-BqK4D2Wn.d.ts +11 -0
  145. package/lib/open-But9E2rL.js +57 -0
  146. package/lib/open-CULVJgOc.d.ts +12 -0
  147. package/lib/open-Dp4sxspc.js +224 -0
  148. package/lib/open-T7kgbO2O.d.ts +27 -0
  149. package/lib/{pattern-router-HZxjDGEQ.js → pattern-router-CJBecJBd.js} +1 -1
  150. package/lib/powered-by-CXQNjNIX.js +24 -0
  151. package/lib/powered-by.js +1 -23
  152. package/lib/pretty-json-CeC1yvYt.js +39 -0
  153. package/lib/pretty-json.js +1 -38
  154. package/lib/{protocol-C37gPePD.d.ts → protocol-CR31M7K_.d.ts} +2 -0
  155. package/lib/protocol-Dt0AZBOz.js +213 -0
  156. package/lib/proxy-C2w_mH7k.js +121 -0
  157. package/lib/proxy.js +1 -120
  158. package/lib/quick.js +4 -4
  159. package/lib/{reg-exp-router-DC1R3qoY.js → reg-exp-router-C_WV84eV.js} +2 -2
  160. package/lib/request-DvMgGtlW.js +323 -0
  161. package/lib/request.js +1 -322
  162. package/lib/route-D8m-a2I1.js +126 -0
  163. package/lib/route.js +1 -125
  164. package/lib/router/linear-router.js +1 -1
  165. package/lib/router/pattern-router.js +1 -1
  166. package/lib/router/reg-exp-router.js +1 -1
  167. package/lib/router/smart-router.js +1 -1
  168. package/lib/router/trie-router.js +1 -1
  169. package/lib/router-Be_o6nFu.js +35 -0
  170. package/lib/router.js +1 -34
  171. package/lib/schema-validator-EK3cUUCt.js +22 -0
  172. package/lib/schema-validator.js +1 -21
  173. package/lib/{secure-headers-mP3j6Hm6.js → secure-headers-C5ZOcXqk.js} +1 -1
  174. package/lib/secure-headers.js +1 -1
  175. package/lib/serve-static-B7sqnftW.d.ts +18 -0
  176. package/lib/{serve-static-3uo_9rjF.js → serve-static-C1Nkj_xB.js} +2 -2
  177. package/lib/{serve-static-Cp5adzGo.js → serve-static-EiJf1zkO.js} +4 -4
  178. package/lib/serve-static.js +1 -1
  179. package/lib/{smart-router-C5CZ5XSM.js → smart-router-BjxkDQCE.js} +1 -1
  180. package/lib/{snapshot-text-BLz8nlSc.js → snapshot-text-CtQm3n8n.js} +23 -14
  181. package/lib/{src-dy3Fk9tA.js → src-BTBm4OPD.js} +6 -6
  182. package/lib/src-LX0E4ec4.js +117 -0
  183. package/lib/{ssg-BwjcA-Ge.js → ssg-BEl7MHqg.js} +5 -5
  184. package/lib/ssg.js +1 -1
  185. package/lib/stream-CzM_SHkq.js +88 -0
  186. package/lib/{streaming-DHST3Scg.js → streaming-BlDaph8U.js} +3 -3
  187. package/lib/streaming.js +1 -1
  188. package/lib/{test-websocket-D8WWqE5G.js → test-websocket-BLeEvybj.js} +2 -2
  189. package/lib/testing-BQx5T_UX.js +17 -0
  190. package/lib/testing.js +1 -16
  191. package/lib/timeout-FeqZ9A-0.js +42 -0
  192. package/lib/timeout.js +1 -41
  193. package/lib/tiny.js +2 -2
  194. package/lib/trailing-slash-DwTx-1sk.js +85 -0
  195. package/lib/trailing-slash.js +1 -84
  196. package/lib/{trie-router-CfFbapzL.js → trie-router-JydLKUa2.js} +2 -2
  197. package/lib/url-BPh4d6j-.js +197 -0
  198. package/lib/utils/accept.js +1 -192
  199. package/lib/utils/basic-auth.js +1 -19
  200. package/lib/utils/body.js +1 -93
  201. package/lib/utils/buffer.js +1 -50
  202. package/lib/utils/color.js +1 -36
  203. package/lib/utils/compress.d.ts +1 -10
  204. package/lib/utils/compress.js +1 -10
  205. package/lib/utils/concurrent.js +1 -29
  206. package/lib/utils/constants.js +1 -6
  207. package/lib/utils/cookie.js +1 -124
  208. package/lib/utils/crypto.js +1 -33
  209. package/lib/utils/encode.js +1 -32
  210. package/lib/utils/handler.js +1 -11
  211. package/lib/utils/html.js +1 -102
  212. package/lib/utils/ipaddr.js +1 -237
  213. package/lib/utils/jwt.js +1 -1
  214. package/lib/utils/mime.js +1 -76
  215. package/lib/utils/stream.js +1 -87
  216. package/lib/utils/url.js +1 -196
  217. package/lib/{validator-D84mq-dO.js → validator-Btiyt5VJ.js} +3 -3
  218. package/lib/validator.js +1 -1
  219. package/lib/websocket-DsyBIKVA.js +56 -0
  220. package/lib/ws.js +1 -55
  221. package/package.json +1 -1
  222. package/plugins/acryl-door/src/cli/acryl.ts +36 -5
  223. package/plugins/acryl-door/src/host/channel.ts +14 -6
  224. package/plugins/acryl-door/src/host/chat-tools.ts +2 -0
  225. package/plugins/acryl-door/src/host/door.ts +97 -12
  226. package/plugins/acryl-door/src/host/page-routes.ts +3 -1
  227. package/plugins/acryl-door/src/host/shell.ts +147 -0
  228. package/plugins/acryl-door/src/host/shim.ts +39 -3
  229. package/plugins/acryl-door/src/host/verbs.ts +39 -2
  230. package/plugins/acryl-door/src/index.ts +22 -3
  231. package/plugins/acryl-door/src/page/channel.ts +3 -1
  232. package/plugins/acryl-door/src/page/index.ts +2 -1
  233. package/plugins/acryl-door/src/page/protocol.ts +2 -0
  234. package/plugins/acryl-door/src/shell/protocol.ts +130 -0
  235. package/plugins/acryl-node-server/src/register.ts +29 -2
  236. package/plugins/agent/model.ts +6 -1
  237. package/plugins/agent/tools.ts +12 -2
  238. package/plugins/agent-panel/client/describe.ts +44 -0
  239. package/plugins/agent-panel/client/main.ts +4 -1
  240. package/plugins/agent-panel/headless.ts +29 -8
  241. package/plugins/agent-panel/index.ts +22 -10
  242. package/plugins/agent-panel/launch.ts +67 -0
  243. package/plugins/desktop/attach.ts +72 -0
  244. package/plugins/desktop/door-shell.ts +379 -0
  245. package/plugins/desktop/main.ts +82 -15
  246. package/plugins/extensions/index.ts +3 -4
  247. package/plugins/extensions/stage.ts +33 -5
  248. package/plugins/openai/index.ts +1 -1
  249. package/templates/agent/AGENTS.md +4 -0
  250. package/templates/agent/blend.yaml +4 -1
  251. package/templates/agent/src/app.ts +2 -0
  252. package/templates/agent/src/routes.ts +1 -1
  253. package/templates/agent/template.json +1 -0
  254. package/templates/agent/test/builder.test.ts +26 -21
  255. package/lib/helpers-CvTauQT5.js +0 -5
  256. package/lib/middleware-CPQ8himN.js +0 -12
  257. package/plugins/acryl-router/src/connection.d.ts +0 -25
  258. package/plugins/acryl-router/src/core/app-base.d.ts +0 -215
  259. package/plugins/acryl-router/src/core/app.d.ts +0 -19
  260. package/plugins/acryl-router/src/core/client/client.d.ts +0 -4
  261. package/plugins/acryl-router/src/core/client/fetch-result-please.d.ts +0 -35
  262. package/plugins/acryl-router/src/core/client/index.d.ts +0 -7
  263. package/plugins/acryl-router/src/core/client/types.d.ts +0 -229
  264. package/plugins/acryl-router/src/core/client/utils.d.ts +0 -18
  265. package/plugins/acryl-router/src/core/compose.d.ts +0 -14
  266. package/plugins/acryl-router/src/core/context.d.ts +0 -443
  267. package/plugins/acryl-router/src/core/helper/accepts/accepts.d.ts +0 -30
  268. package/plugins/acryl-router/src/core/helper/accepts/index.d.ts +0 -5
  269. package/plugins/acryl-router/src/core/helper/conninfo/index.d.ts +0 -5
  270. package/plugins/acryl-router/src/core/helper/conninfo/types.d.ts +0 -36
  271. package/plugins/acryl-router/src/core/helper/cookie/index.d.ts +0 -25
  272. package/plugins/acryl-router/src/core/helper/css/common.d.ts +0 -59
  273. package/plugins/acryl-router/src/core/helper/css/index.d.ts +0 -80
  274. package/plugins/acryl-router/src/core/helper/dev/index.d.ts +0 -20
  275. package/plugins/acryl-router/src/core/helper/factory/index.d.ts +0 -82
  276. package/plugins/acryl-router/src/core/helper/html/index.d.ts +0 -8
  277. package/plugins/acryl-router/src/core/helper/proxy/index.d.ts +0 -73
  278. package/plugins/acryl-router/src/core/helper/route/index.d.ts +0 -75
  279. package/plugins/acryl-router/src/core/helper/ssg/index.d.ts +0 -7
  280. package/plugins/acryl-router/src/core/helper/ssg/middleware.d.ts +0 -44
  281. package/plugins/acryl-router/src/core/helper/ssg/plugins.d.ts +0 -27
  282. package/plugins/acryl-router/src/core/helper/ssg/ssg.d.ts +0 -91
  283. package/plugins/acryl-router/src/core/helper/ssg/utils.d.ts +0 -16
  284. package/plugins/acryl-router/src/core/helper/streaming/index.d.ts +0 -8
  285. package/plugins/acryl-router/src/core/helper/streaming/sse.d.ts +0 -13
  286. package/plugins/acryl-router/src/core/helper/streaming/stream.d.ts +0 -3
  287. package/plugins/acryl-router/src/core/helper/streaming/text.d.ts +0 -3
  288. package/plugins/acryl-router/src/core/helper/streaming/utils.d.ts +0 -1
  289. package/plugins/acryl-router/src/core/helper/testing/index.d.ts +0 -13
  290. package/plugins/acryl-router/src/core/helper/websocket/index.d.ts +0 -70
  291. package/plugins/acryl-router/src/core/http-exception.d.ts +0 -58
  292. package/plugins/acryl-router/src/core/index.d.ts +0 -37
  293. package/plugins/acryl-router/src/core/jsx/base.d.ts +0 -61
  294. package/plugins/acryl-router/src/core/jsx/children.d.ts +0 -9
  295. package/plugins/acryl-router/src/core/jsx/components.d.ts +0 -15
  296. package/plugins/acryl-router/src/core/jsx/constants.d.ts +0 -6
  297. package/plugins/acryl-router/src/core/jsx/context.d.ts +0 -51
  298. package/plugins/acryl-router/src/core/jsx/dom/components.d.ts +0 -10
  299. package/plugins/acryl-router/src/core/jsx/dom/context.d.ts +0 -3
  300. package/plugins/acryl-router/src/core/jsx/dom/css.d.ts +0 -83
  301. package/plugins/acryl-router/src/core/jsx/dom/hooks/index.d.ts +0 -39
  302. package/plugins/acryl-router/src/core/jsx/dom/intrinsic-element/components.d.ts +0 -16
  303. package/plugins/acryl-router/src/core/jsx/dom/jsx-dev-runtime.d.ts +0 -8
  304. package/plugins/acryl-router/src/core/jsx/dom/jsx-runtime.d.ts +0 -7
  305. package/plugins/acryl-router/src/core/jsx/dom/render.d.ts +0 -73
  306. package/plugins/acryl-router/src/core/jsx/dom/utils.d.ts +0 -1
  307. package/plugins/acryl-router/src/core/jsx/hooks/index.d.ts +0 -47
  308. package/plugins/acryl-router/src/core/jsx/index.d.ts +0 -76
  309. package/plugins/acryl-router/src/core/jsx/intrinsic-element/common.d.ts +0 -6
  310. package/plugins/acryl-router/src/core/jsx/intrinsic-element/components.d.ts +0 -13
  311. package/plugins/acryl-router/src/core/jsx/intrinsic-elements.d.ts +0 -735
  312. package/plugins/acryl-router/src/core/jsx/streaming.d.ts +0 -36
  313. package/plugins/acryl-router/src/core/jsx/types.d.ts +0 -36
  314. package/plugins/acryl-router/src/core/jsx/utils.d.ts +0 -4
  315. package/plugins/acryl-router/src/core/request/constants.d.ts +0 -1
  316. package/plugins/acryl-router/src/core/request.d.ts +0 -306
  317. package/plugins/acryl-router/src/core/router/reg-exp-router/index.d.ts +0 -6
  318. package/plugins/acryl-router/src/core/router/reg-exp-router/matcher.d.ts +0 -7
  319. package/plugins/acryl-router/src/core/router/reg-exp-router/node.d.ts +0 -13
  320. package/plugins/acryl-router/src/core/router/reg-exp-router/prepared-router.d.ts +0 -17
  321. package/plugins/acryl-router/src/core/router/reg-exp-router/router.d.ts +0 -11
  322. package/plugins/acryl-router/src/core/router/reg-exp-router/trie.d.ts +0 -8
  323. package/plugins/acryl-router/src/core/router/smart-router/index.d.ts +0 -5
  324. package/plugins/acryl-router/src/core/router/smart-router/router.d.ts +0 -11
  325. package/plugins/acryl-router/src/core/router/trie-router/index.d.ts +0 -5
  326. package/plugins/acryl-router/src/core/router/trie-router/node.d.ts +0 -6
  327. package/plugins/acryl-router/src/core/router/trie-router/router.d.ts +0 -7
  328. package/plugins/acryl-router/src/core/router/utils.d.ts +0 -1
  329. package/plugins/acryl-router/src/core/router.d.ts +0 -97
  330. package/plugins/acryl-router/src/core/types.d.ts +0 -573
  331. package/plugins/acryl-router/src/core/utils/accept.d.ts +0 -6
  332. package/plugins/acryl-router/src/core/utils/body.d.ts +0 -79
  333. package/plugins/acryl-router/src/core/utils/buffer.d.ts +0 -17
  334. package/plugins/acryl-router/src/core/utils/color.d.ts +0 -21
  335. package/plugins/acryl-router/src/core/utils/concurrent.d.ts +0 -11
  336. package/plugins/acryl-router/src/core/utils/constants.d.ts +0 -4
  337. package/plugins/acryl-router/src/core/utils/cookie.d.ts +0 -41
  338. package/plugins/acryl-router/src/core/utils/crypto.d.ts +0 -15
  339. package/plugins/acryl-router/src/core/utils/handler.d.ts +0 -6
  340. package/plugins/acryl-router/src/core/utils/headers.d.ts +0 -8
  341. package/plugins/acryl-router/src/core/utils/html.d.ts +0 -44
  342. package/plugins/acryl-router/src/core/utils/http-status.d.ts +0 -32
  343. package/plugins/acryl-router/src/core/utils/mime.d.ts +0 -70
  344. package/plugins/acryl-router/src/core/utils/stream.d.ts +0 -31
  345. package/plugins/acryl-router/src/core/utils/types.d.ts +0 -128
  346. package/plugins/acryl-router/src/core/utils/url.d.ts +0 -44
  347. package/plugins/acryl-router/src/core/validator/index.d.ts +0 -7
  348. package/plugins/acryl-router/src/core/validator/utils.d.ts +0 -29
  349. package/plugins/acryl-router/src/core/validator/validator.d.ts +0 -16
  350. package/plugins/acryl-router/src/helpers/index.d.ts +0 -17
  351. package/plugins/acryl-router/src/helpers/schema-validator.d.ts +0 -54
package/lib/request.js CHANGED
@@ -1,323 +1,2 @@
1
- import { HTTPException } from "./http-exception.js";
2
- import { t as GET_MATCH_RESULT } from "./constants-Dy7ZvN1H.js";
3
- import { parseBody } from "./utils/body.js";
4
- import { getQueryParam, getQueryParams, tryDecodeURIComponent } from "./utils/url.js";
5
- //#region ../../plugins/acryl-router/src/core/request.ts
6
- var AcrylRequest = class {
7
- /**
8
- * `.raw` can get the raw Request object.
9
- *
10
- *
11
- * @example
12
- * ```ts
13
- * // For Cloudflare Workers
14
- * app.post('/', async (c) => {
15
- * const metadata = c.req.raw.cf?.hostMetadata?
16
- * ...
17
- * })
18
- * ```
19
- */
20
- raw;
21
- #validatedData;
22
- #matchResult;
23
- routeIndex = 0;
24
- /**
25
- * `.path` can get the pathname of the request.
26
- *
27
- *
28
- * @example
29
- * ```ts
30
- * app.get('/about/me', (c) => {
31
- * const pathname = c.req.path // `/about/me`
32
- * })
33
- * ```
34
- */
35
- path;
36
- bodyCache = {};
37
- constructor(request, path = "/", matchResult = [[]]) {
38
- this.raw = request;
39
- this.path = path;
40
- this.#matchResult = matchResult;
41
- }
42
- param(key) {
43
- return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams();
44
- }
45
- #getDecodedParam(key) {
46
- const paramKey = this.#matchResult[0][this.routeIndex]?.[1][key];
47
- const param = this.#getParamValue(paramKey);
48
- return param && tryDecodeURIComponent(param);
49
- }
50
- #getAllDecodedParams() {
51
- const decoded = {};
52
- const keys = Object.keys(this.#matchResult[0][this.routeIndex]?.[1] ?? {});
53
- for (const key of keys) {
54
- const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);
55
- if (value !== void 0) decoded[key] = tryDecodeURIComponent(value);
56
- }
57
- return decoded;
58
- }
59
- #getParamValue(paramKey) {
60
- return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey;
61
- }
62
- query(key) {
63
- return getQueryParam(this.url, key);
64
- }
65
- queries(key) {
66
- return getQueryParams(this.url, key);
67
- }
68
- header(name) {
69
- if (name) return this.raw.headers.get(name) ?? void 0;
70
- const headerData = Object.create(null);
71
- this.raw.headers.forEach((value, key) => {
72
- headerData[key] = value;
73
- });
74
- return headerData;
75
- }
76
- async parseBody(options) {
77
- return parseBody(this, options);
78
- }
79
- #cachedBody = (key) => {
80
- const { bodyCache, raw } = this;
81
- const cachedBody = bodyCache[key];
82
- if (cachedBody) return cachedBody;
83
- for (const anyCachedKey in bodyCache) return bodyCache[anyCachedKey].then((body) => {
84
- if (anyCachedKey === "json") body = JSON.stringify(body);
85
- const contentType = anyCachedKey === "formData" ? void 0 : raw.headers.get("content-type");
86
- return new Response(body, { headers: contentType ? { "Content-Type": contentType } : void 0 })[key]();
87
- });
88
- return bodyCache[key] = raw[key]();
89
- };
90
- /**
91
- * `.json()` can parse Request body of type `application/json`
92
- *
93
- *
94
- * @example
95
- * ```ts
96
- * app.post('/entry', async (c) => {
97
- * const body = await c.req.json()
98
- * })
99
- * ```
100
- */
101
- json() {
102
- return this.#cachedBody("text").then((text) => JSON.parse(text));
103
- }
104
- /**
105
- * `.text()` can parse Request body of type `text/plain`
106
- *
107
- *
108
- * @example
109
- * ```ts
110
- * app.post('/entry', async (c) => {
111
- * const body = await c.req.text()
112
- * })
113
- * ```
114
- */
115
- text() {
116
- return this.#cachedBody("text");
117
- }
118
- /**
119
- * `.arrayBuffer()` parse Request body as an `ArrayBuffer`
120
- *
121
- *
122
- * @example
123
- * ```ts
124
- * app.post('/entry', async (c) => {
125
- * const body = await c.req.arrayBuffer()
126
- * })
127
- * ```
128
- */
129
- arrayBuffer() {
130
- return this.#cachedBody("arrayBuffer");
131
- }
132
- /**
133
- * `.bytes()` parses the request body as a `Uint8Array`.
134
- *
135
- *
136
- * @example
137
- * ```ts
138
- * app.post('/entry', async (c) => {
139
- * const body = await c.req.bytes()
140
- * })
141
- * ```
142
- */
143
- bytes() {
144
- return this.#cachedBody("arrayBuffer").then((buffer) => new Uint8Array(buffer));
145
- }
146
- /**
147
- * Parses the request body as a `Blob`.
148
- * @example
149
- * ```ts
150
- * app.post('/entry', async (c) => {
151
- * const body = await c.req.blob();
152
- * });
153
- * ```
154
- */
155
- blob() {
156
- return this.#cachedBody("blob");
157
- }
158
- /**
159
- * Parses the request body as `FormData`.
160
- * @example
161
- * ```ts
162
- * app.post('/entry', async (c) => {
163
- * const body = await c.req.formData();
164
- * });
165
- * ```
166
- */
167
- formData() {
168
- return this.#cachedBody("formData");
169
- }
170
- /**
171
- * Adds validated data to the request.
172
- *
173
- * @param target - The target of the validation.
174
- * @param data - The validated data to add.
175
- */
176
- addValidatedData(target, data) {
177
- (this.#validatedData ??= {})[target] = data;
178
- }
179
- valid(target) {
180
- return this.#validatedData?.[target];
181
- }
182
- /**
183
- * `.url` can get the request url strings.
184
- *
185
- *
186
- * @example
187
- * ```ts
188
- * app.get('/about/me', (c) => {
189
- * const url = c.req.url // `http://localhost:8787/about/me`
190
- * ...
191
- * })
192
- * ```
193
- */
194
- get url() {
195
- return this.raw.url;
196
- }
197
- /**
198
- * `.method` can get the method name of the request.
199
- *
200
- *
201
- * @example
202
- * ```ts
203
- * app.get('/about/me', (c) => {
204
- * const method = c.req.method // `GET`
205
- * })
206
- * ```
207
- */
208
- get method() {
209
- return this.raw.method;
210
- }
211
- get [GET_MATCH_RESULT]() {
212
- return this.#matchResult;
213
- }
214
- /**
215
- * `.matchedRoutes` can return a matched route in the handler
216
- *
217
- * @deprecated
218
- *
219
- * Use matchedRoutes helper defined in "acryl-router/route" instead.
220
- *
221
- *
222
- * @example
223
- * ```ts
224
- * app.use('*', async function logger(c, next) {
225
- * await next()
226
- * c.req.matchedRoutes.forEach(({ handler, method, path }, i) => {
227
- * const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]')
228
- * console.log(
229
- * method,
230
- * ' ',
231
- * path,
232
- * ' '.repeat(Math.max(10 - path.length, 0)),
233
- * name,
234
- * i === c.req.routeIndex ? '<- respond from here' : ''
235
- * )
236
- * })
237
- * })
238
- * ```
239
- */
240
- get matchedRoutes() {
241
- return this.#matchResult[0].map(([[, route]]) => route);
242
- }
243
- /**
244
- * `.routePath` can retrieve the path registered within the handler
245
- *
246
- * @deprecated
247
- *
248
- * Use routePath helper defined in "acryl-router/route" instead.
249
- *
250
- *
251
- * @example
252
- * ```ts
253
- * app.get('/posts/:id', (c) => {
254
- * return c.json({ path: c.req.routePath })
255
- * })
256
- * ```
257
- */
258
- get routePath() {
259
- return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path;
260
- }
261
- };
262
- /**
263
- * Clones a AcrylRequest's underlying raw Request object.
264
- *
265
- * This utility handles both consumed and unconsumed request bodies:
266
- * - If the request body hasn't been consumed, it uses the native `clone()` method
267
- * - If the request body has been consumed, it reconstructs a new Request using cached body data
268
- *
269
- * This is particularly useful when you need to:
270
- * - Process the same request body multiple times
271
- * - Pass requests to external services after validation
272
- *
273
- * @param req - The AcrylRequest object to clone
274
- * @returns A Promise that resolves to a new Request object with the same properties
275
- * @throws {HTTPException} If the request body was consumed directly via `req.raw`
276
- * without using AcrylRequest methods (e.g., `req.json()`, `req.text()`), making it
277
- * impossible to reconstruct the body from cache
278
- *
279
- * @example
280
- * ```ts
281
- * // Clone after consuming the body (e.g., after validation)
282
- * app.post('/forward',
283
- * validator('json', (data) => data),
284
- * async (c) => {
285
- * const validated = c.req.valid('json')
286
- * // Body has been consumed, but cloneRawRequest still works
287
- * const clonedReq = await cloneRawRequest(c.req)
288
- * return fetch('http://backend-service.com', clonedReq)
289
- * }
290
- * )
291
- * ```
292
- */
293
- const cloneRawRequest = async (req) => {
294
- if (!req.raw.bodyUsed) return req.raw.clone();
295
- const cacheKey = Object.keys(req.bodyCache)[0];
296
- if (!cacheKey) throw new HTTPException(500, { message: "Cannot clone request: body was already consumed and not cached. Please use AcrylRequest methods (e.g., req.json(), req.text()) instead of consuming req.raw directly." });
297
- let body = await req[cacheKey]();
298
- const headers = req.header();
299
- if (cacheKey === "json") {
300
- body = JSON.stringify(body);
301
- delete headers["content-length"];
302
- } else if (body instanceof FormData) {
303
- delete headers["content-type"];
304
- delete headers["content-length"];
305
- }
306
- const requestInit = {
307
- body,
308
- cache: req.raw.cache,
309
- credentials: req.raw.credentials,
310
- headers,
311
- integrity: req.raw.integrity,
312
- keepalive: req.raw.keepalive,
313
- method: req.method,
314
- mode: req.raw.mode,
315
- redirect: req.raw.redirect,
316
- referrer: req.raw.referrer,
317
- referrerPolicy: req.raw.referrerPolicy,
318
- signal: req.raw.signal
319
- };
320
- return new Request(req.url, requestInit);
321
- };
322
- //#endregion
1
+ import { n as cloneRawRequest, t as AcrylRequest } from "./request-DvMgGtlW.js";
323
2
  export { AcrylRequest, cloneRawRequest };
@@ -0,0 +1,126 @@
1
+ import { t as GET_MATCH_RESULT } from "./constants-Dy7ZvN1H.js";
2
+ import { a as getPattern, d as splitRoutingPath } from "./url-BPh4d6j-.js";
3
+ //#region ../../plugins/acryl-router/src/core/helper/route/index.ts
4
+ /**
5
+ * Get matched routes in the handler
6
+ *
7
+ * @param {Context} c - The context object
8
+ * @returns An array of matched routes
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { matchedRoutes } from 'acrylblends/route'
13
+ *
14
+ * app.use('*', async function logger(c, next) {
15
+ * await next()
16
+ * matchedRoutes(c).forEach(({ handler, method, path }, i) => {
17
+ * const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]')
18
+ * console.log(
19
+ * method,
20
+ * ' ',
21
+ * path,
22
+ * ' '.repeat(Math.max(10 - path.length, 0)),
23
+ * name,
24
+ * i === c.req.routeIndex ? '<- respond from here' : ''
25
+ * )
26
+ * })
27
+ * })
28
+ * ```
29
+ */
30
+ const matchedRoutes = (c) => c.req[GET_MATCH_RESULT][0].map(([[, route]]) => route);
31
+ /**
32
+ * Get the route path registered within the handler
33
+ *
34
+ * @param {Context} c - The context object
35
+ * @param {number} index - The index of the route from which to retrieve the path, similar to Array.prototype.at(), where a negative number is the index counted from the end of the matching route. Defaults to the current route index.
36
+ * @returns The route path registered within the handler
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * import { routePath } from 'acrylblends/route'
41
+ *
42
+ * app.use('*', (c, next) => {
43
+ * console.log(routePath(c)) // '*'
44
+ * console.log(routePath(c, -1)) // '/posts/:id'
45
+ * return next()
46
+ * })
47
+ *
48
+ * app.get('/posts/:id', (c) => {
49
+ * return c.text(routePath(c)) // '/posts/:id'
50
+ * })
51
+ * ```
52
+ */
53
+ const routePath = (c, index) => matchedRoutes(c).at(index ?? c.req.routeIndex)?.path ?? "";
54
+ /**
55
+ * Get the basePath of the as-is route specified by routing.
56
+ *
57
+ * @param {Context} c - The context object
58
+ * @param {number} index - The index of the route from which to retrieve the path, similar to Array.prototype.at(), where a negative number is the index counted from the end of the matching route. Defaults to the current route index.
59
+ * @returns The basePath of the as-is route specified by routing.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * import { baseRoutePath } from 'acrylblends/route'
64
+ *
65
+ * const app = new Acryl()
66
+ *
67
+ * const subApp = new Acryl()
68
+ * subApp.get('/posts/:id', (c) => {
69
+ * return c.text(baseRoutePath(c)) // '/:sub'
70
+ * })
71
+ *
72
+ * app.route('/:sub', subApp)
73
+ * ```
74
+ */
75
+ const baseRoutePath = (c, index) => matchedRoutes(c).at(index ?? c.req.routeIndex)?.basePath ?? "";
76
+ /**
77
+ * Get the basePath with embedded parameters
78
+ *
79
+ * @param {Context} c - The context object
80
+ * @param {number} index - The index of the route from which to retrieve the path, similar to Array.prototype.at(), where a negative number is the index counted from the end of the matching route. Defaults to the current route index.
81
+ * @returns The basePath with embedded parameters.
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * import { basePath } from 'acrylblends/route'
86
+ *
87
+ * const app = new Acryl()
88
+ *
89
+ * const subApp = new Acryl()
90
+ * subApp.get('/posts/:id', (c) => {
91
+ * return c.text(basePath(c)) // '/requested-sub-app-path'
92
+ * })
93
+ *
94
+ * app.route('/:sub', subApp)
95
+ * ```
96
+ */
97
+ const basePathCacheMap = /* @__PURE__ */ new WeakMap();
98
+ const basePath = (c, index) => {
99
+ index ??= c.req.routeIndex;
100
+ const cache = basePathCacheMap.get(c) || [];
101
+ if (typeof cache[index] === "string") return cache[index];
102
+ let result;
103
+ const rp = baseRoutePath(c, index);
104
+ if (!/[:*]/.test(rp)) result = rp;
105
+ else {
106
+ const paths = splitRoutingPath(rp);
107
+ const reqPath = c.req.path;
108
+ let basePathLength = 0;
109
+ for (let i = 0, len = paths.length; i < len; i++) {
110
+ const pattern = getPattern(paths[i], paths[i + 1]);
111
+ if (pattern) {
112
+ const re = pattern[2] === true || pattern === "*" ? /[^\/]+/ : pattern[2];
113
+ const restPath = reqPath.substring(basePathLength + 1);
114
+ const segment = restPath.split("/", 1)[0];
115
+ basePathLength += (restPath.match(re)?.[0] ?? (re.test(segment) ? segment : "")).length;
116
+ } else basePathLength += paths[i].length;
117
+ basePathLength += 1;
118
+ }
119
+ result = reqPath.substring(0, basePathLength);
120
+ }
121
+ cache[index] = result;
122
+ basePathCacheMap.set(c, cache);
123
+ return result;
124
+ };
125
+ //#endregion
126
+ export { routePath as i, baseRoutePath as n, matchedRoutes as r, basePath as t };
package/lib/route.js CHANGED
@@ -1,126 +1,2 @@
1
- import { t as GET_MATCH_RESULT } from "./constants-Dy7ZvN1H.js";
2
- import { getPattern, splitRoutingPath } from "./utils/url.js";
3
- //#region ../../plugins/acryl-router/src/core/helper/route/index.ts
4
- /**
5
- * Get matched routes in the handler
6
- *
7
- * @param {Context} c - The context object
8
- * @returns An array of matched routes
9
- *
10
- * @example
11
- * ```ts
12
- * import { matchedRoutes } from 'acrylblends/route'
13
- *
14
- * app.use('*', async function logger(c, next) {
15
- * await next()
16
- * matchedRoutes(c).forEach(({ handler, method, path }, i) => {
17
- * const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]')
18
- * console.log(
19
- * method,
20
- * ' ',
21
- * path,
22
- * ' '.repeat(Math.max(10 - path.length, 0)),
23
- * name,
24
- * i === c.req.routeIndex ? '<- respond from here' : ''
25
- * )
26
- * })
27
- * })
28
- * ```
29
- */
30
- const matchedRoutes = (c) => c.req[GET_MATCH_RESULT][0].map(([[, route]]) => route);
31
- /**
32
- * Get the route path registered within the handler
33
- *
34
- * @param {Context} c - The context object
35
- * @param {number} index - The index of the route from which to retrieve the path, similar to Array.prototype.at(), where a negative number is the index counted from the end of the matching route. Defaults to the current route index.
36
- * @returns The route path registered within the handler
37
- *
38
- * @example
39
- * ```ts
40
- * import { routePath } from 'acrylblends/route'
41
- *
42
- * app.use('*', (c, next) => {
43
- * console.log(routePath(c)) // '*'
44
- * console.log(routePath(c, -1)) // '/posts/:id'
45
- * return next()
46
- * })
47
- *
48
- * app.get('/posts/:id', (c) => {
49
- * return c.text(routePath(c)) // '/posts/:id'
50
- * })
51
- * ```
52
- */
53
- const routePath = (c, index) => matchedRoutes(c).at(index ?? c.req.routeIndex)?.path ?? "";
54
- /**
55
- * Get the basePath of the as-is route specified by routing.
56
- *
57
- * @param {Context} c - The context object
58
- * @param {number} index - The index of the route from which to retrieve the path, similar to Array.prototype.at(), where a negative number is the index counted from the end of the matching route. Defaults to the current route index.
59
- * @returns The basePath of the as-is route specified by routing.
60
- *
61
- * @example
62
- * ```ts
63
- * import { baseRoutePath } from 'acrylblends/route'
64
- *
65
- * const app = new Acryl()
66
- *
67
- * const subApp = new Acryl()
68
- * subApp.get('/posts/:id', (c) => {
69
- * return c.text(baseRoutePath(c)) // '/:sub'
70
- * })
71
- *
72
- * app.route('/:sub', subApp)
73
- * ```
74
- */
75
- const baseRoutePath = (c, index) => matchedRoutes(c).at(index ?? c.req.routeIndex)?.basePath ?? "";
76
- /**
77
- * Get the basePath with embedded parameters
78
- *
79
- * @param {Context} c - The context object
80
- * @param {number} index - The index of the route from which to retrieve the path, similar to Array.prototype.at(), where a negative number is the index counted from the end of the matching route. Defaults to the current route index.
81
- * @returns The basePath with embedded parameters.
82
- *
83
- * @example
84
- * ```ts
85
- * import { basePath } from 'acrylblends/route'
86
- *
87
- * const app = new Acryl()
88
- *
89
- * const subApp = new Acryl()
90
- * subApp.get('/posts/:id', (c) => {
91
- * return c.text(basePath(c)) // '/requested-sub-app-path'
92
- * })
93
- *
94
- * app.route('/:sub', subApp)
95
- * ```
96
- */
97
- const basePathCacheMap = /* @__PURE__ */ new WeakMap();
98
- const basePath = (c, index) => {
99
- index ??= c.req.routeIndex;
100
- const cache = basePathCacheMap.get(c) || [];
101
- if (typeof cache[index] === "string") return cache[index];
102
- let result;
103
- const rp = baseRoutePath(c, index);
104
- if (!/[:*]/.test(rp)) result = rp;
105
- else {
106
- const paths = splitRoutingPath(rp);
107
- const reqPath = c.req.path;
108
- let basePathLength = 0;
109
- for (let i = 0, len = paths.length; i < len; i++) {
110
- const pattern = getPattern(paths[i], paths[i + 1]);
111
- if (pattern) {
112
- const re = pattern[2] === true || pattern === "*" ? /[^\/]+/ : pattern[2];
113
- const restPath = reqPath.substring(basePathLength + 1);
114
- const segment = restPath.split("/", 1)[0];
115
- basePathLength += (restPath.match(re)?.[0] ?? (re.test(segment) ? segment : "")).length;
116
- } else basePathLength += paths[i].length;
117
- basePathLength += 1;
118
- }
119
- result = reqPath.substring(0, basePathLength);
120
- }
121
- cache[index] = result;
122
- basePathCacheMap.set(c, cache);
123
- return result;
124
- };
125
- //#endregion
1
+ import { i as routePath, n as baseRoutePath, r as matchedRoutes, t as basePath } from "./route-D8m-a2I1.js";
126
2
  export { basePath, baseRoutePath, matchedRoutes, routePath };
@@ -1,2 +1,2 @@
1
- import { t as LinearRouter } from "../linear-router-C3FPib6h.js";
1
+ import { t as LinearRouter } from "../linear-router-CmZn_JLV.js";
2
2
  export { LinearRouter };
@@ -1,2 +1,2 @@
1
- import { t as PatternRouter } from "../pattern-router-HZxjDGEQ.js";
1
+ import { t as PatternRouter } from "../pattern-router-CJBecJBd.js";
2
2
  export { PatternRouter };
@@ -1,2 +1,2 @@
1
- import { i as RegExpRouter, n as buildInitParams, r as serializeInitParams, t as PreparedRegExpRouter } from "../reg-exp-router-DC1R3qoY.js";
1
+ import { i as RegExpRouter, n as buildInitParams, r as serializeInitParams, t as PreparedRegExpRouter } from "../reg-exp-router-C_WV84eV.js";
2
2
  export { PreparedRegExpRouter, RegExpRouter, buildInitParams, serializeInitParams };
@@ -1,2 +1,2 @@
1
- import { t as SmartRouter } from "../smart-router-C5CZ5XSM.js";
1
+ import { t as SmartRouter } from "../smart-router-BjxkDQCE.js";
2
2
  export { SmartRouter };
@@ -1,2 +1,2 @@
1
- import { t as TrieRouter } from "../trie-router-CfFbapzL.js";
1
+ import { t as TrieRouter } from "../trie-router-JydLKUa2.js";
2
2
  export { TrieRouter };
@@ -0,0 +1,35 @@
1
+ //#region ../../plugins/acryl-router/src/core/router.ts
2
+ /**
3
+ * @module
4
+ * This module provides types definitions and variables for the routers.
5
+ */
6
+ /**
7
+ * Constant representing all HTTP methods in uppercase.
8
+ */
9
+ const METHOD_NAME_ALL = "ALL";
10
+ /**
11
+ * Constant representing all HTTP methods in lowercase.
12
+ */
13
+ const METHOD_NAME_ALL_LOWERCASE = "all";
14
+ /**
15
+ * Array of supported HTTP methods.
16
+ */
17
+ const METHODS = [
18
+ "get",
19
+ "post",
20
+ "put",
21
+ "delete",
22
+ "options",
23
+ "patch",
24
+ "query"
25
+ ];
26
+ /**
27
+ * Error message indicating that a route cannot be added because the matcher is already built.
28
+ */
29
+ const MESSAGE_MATCHER_IS_ALREADY_BUILT = "Can not add a route since the matcher is already built.";
30
+ /**
31
+ * Error class representing an unsupported path error.
32
+ */
33
+ var UnsupportedPathError = class extends Error {};
34
+ //#endregion
35
+ export { UnsupportedPathError as a, METHOD_NAME_ALL_LOWERCASE as i, METHODS as n, METHOD_NAME_ALL as r, MESSAGE_MATCHER_IS_ALREADY_BUILT as t };
package/lib/router.js CHANGED
@@ -1,35 +1,2 @@
1
- //#region ../../plugins/acryl-router/src/core/router.ts
2
- /**
3
- * @module
4
- * This module provides types definitions and variables for the routers.
5
- */
6
- /**
7
- * Constant representing all HTTP methods in uppercase.
8
- */
9
- const METHOD_NAME_ALL = "ALL";
10
- /**
11
- * Constant representing all HTTP methods in lowercase.
12
- */
13
- const METHOD_NAME_ALL_LOWERCASE = "all";
14
- /**
15
- * Array of supported HTTP methods.
16
- */
17
- const METHODS = [
18
- "get",
19
- "post",
20
- "put",
21
- "delete",
22
- "options",
23
- "patch",
24
- "query"
25
- ];
26
- /**
27
- * Error message indicating that a route cannot be added because the matcher is already built.
28
- */
29
- const MESSAGE_MATCHER_IS_ALREADY_BUILT = "Can not add a route since the matcher is already built.";
30
- /**
31
- * Error class representing an unsupported path error.
32
- */
33
- var UnsupportedPathError = class extends Error {};
34
- //#endregion
1
+ import { a as UnsupportedPathError, i as METHOD_NAME_ALL_LOWERCASE, n as METHODS, r as METHOD_NAME_ALL, t as MESSAGE_MATCHER_IS_ALREADY_BUILT } from "./router-Be_o6nFu.js";
35
2
  export { MESSAGE_MATCHER_IS_ALREADY_BUILT, METHODS, METHOD_NAME_ALL, METHOD_NAME_ALL_LOWERCASE, UnsupportedPathError };
@@ -0,0 +1,22 @@
1
+ import { t as validator } from "./validator-Btiyt5VJ.js";
2
+ //#region ../../plugins/acryl-router/src/helpers/schema-validator.ts
3
+ const pathOf = (path) => (path ?? []).map((part) => String(typeof part === "object" ? part.key : part)).join(".");
4
+ /**
5
+ * The core `validator` driven by a Standard Schema. A failure answers 400 with `{ error, issues }`; success makes the parsed value the
6
+ * handler's `c.req.valid(target)`, typed by the schema's output.
7
+ */
8
+ function schemaValidator(target, schema) {
9
+ return validator(target, async (value, c) => {
10
+ const result = await schema["~standard"].validate(value);
11
+ if (result.issues !== void 0) return c.json({
12
+ error: `invalid ${target}`,
13
+ issues: result.issues.map((issue) => ({
14
+ message: issue.message,
15
+ path: pathOf(issue.path)
16
+ }))
17
+ }, 400);
18
+ return result.value;
19
+ });
20
+ }
21
+ //#endregion
22
+ export { schemaValidator as t };