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
@@ -1,22 +1,2 @@
1
- import { t as validator } from "./validator-D84mq-dO.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
1
+ import { t as schemaValidator } from "./schema-validator-EK3cUUCt.js";
22
2
  export { schemaValidator };
@@ -1,4 +1,4 @@
1
- import { encodeBase64 } from "./utils/encode.js";
1
+ import { r as encodeBase64 } from "./encode-BhbNLrjp.js";
2
2
  //#region ../../plugins/acryl-router/src/core/middleware/secure-headers/secure-headers.ts
3
3
  const HEADERS_MAP = {
4
4
  crossOriginEmbedderPolicy: ["Cross-Origin-Embedder-Policy", "require-corp"],
@@ -1,2 +1,2 @@
1
- import { n as secureHeaders, t as NONCE } from "./secure-headers-mP3j6Hm6.js";
1
+ import { n as secureHeaders, t as NONCE } from "./secure-headers-C5ZOcXqk.js";
2
2
  export { NONCE, secureHeaders };
@@ -0,0 +1,18 @@
1
+ import { L as MiddlewareHandler, t as Context, v as Env } from "./context-DS3fYyG-.js";
2
+ //#region ../../plugins/acryl-node-server/src/adapter/serve-static.d.ts
3
+ type ServeStaticOptions<E extends Env = Env> = {
4
+ /**
5
+ * Root path. Relative path is based on current working directory from which the app was started.
6
+ */
7
+ root?: string;
8
+ path?: string;
9
+ index?: string;
10
+ precompressed?: boolean; /** Allow percent signs in the routed request path. Defaults to false. */
11
+ allowPercentInPath?: boolean;
12
+ rewriteRequestPath?: (path: string, c: Context<E>) => string;
13
+ onFound?: (path: string, c: Context<E>) => void | Promise<void>;
14
+ onNotFound?: (path: string, c: Context<E>) => void | Promise<void>;
15
+ };
16
+ declare const serveStatic: <E extends Env = any>(options?: ServeStaticOptions<E>) => MiddlewareHandler<E>;
17
+ //#endregion
18
+ export { serveStatic as n, ServeStaticOptions as t };
@@ -1,5 +1,5 @@
1
- import { getMimeType } from "./utils/mime.js";
2
- import "./helpers-CvTauQT5.js";
1
+ import { r as getMimeType } from "./mime-BnScXkQn.js";
2
+ import "./helpers-BEjcdbgw.js";
3
3
  import { join } from "node:path";
4
4
  import { Readable } from "node:stream";
5
5
  import { createReadStream, existsSync, statSync } from "node:fs";
@@ -1,7 +1,7 @@
1
- import { tryDecodeURI } from "./utils/url.js";
2
- import { parseAccept } from "./utils/accept.js";
3
- import { COMPRESSIBLE_CONTENT_TYPE_REGEX } from "./utils/compress.js";
4
- import { getMimeType } from "./utils/mime.js";
1
+ import { p as tryDecodeURI } from "./url-BPh4d6j-.js";
2
+ import { t as parseAccept } from "./accept-CNNHu4Cf.js";
3
+ import { t as COMPRESSIBLE_CONTENT_TYPE_REGEX } from "./compress-DCyrrQ5D.js";
4
+ import { r as getMimeType } from "./mime-BnScXkQn.js";
5
5
  //#region ../../plugins/acryl-router/src/core/middleware/serve-static/path.ts
6
6
  /**
7
7
  * `defaultJoin` does not support Windows paths and always uses `/` separators.
@@ -1,2 +1,2 @@
1
- import { t as serveStatic } from "./serve-static-Cp5adzGo.js";
1
+ import { t as serveStatic } from "./serve-static-EiJf1zkO.js";
2
2
  export { serveStatic };
@@ -1,4 +1,4 @@
1
- import { MESSAGE_MATCHER_IS_ALREADY_BUILT, UnsupportedPathError } from "./router.js";
1
+ import { a as UnsupportedPathError, t as MESSAGE_MATCHER_IS_ALREADY_BUILT } from "./router-Be_o6nFu.js";
2
2
  //#region ../../plugins/acryl-router/src/core/router/smart-router/router.ts
3
3
  var SmartRouter = class {
4
4
  name = "SmartRouter";
@@ -1,12 +1,12 @@
1
- import { t as Acryl } from "./app-BM0rTCp7.js";
2
- import { bodyLimit } from "./body-limit.js";
3
- import { methodNotAllowed } from "./method-not-allowed.js";
4
- import { r as streamSSE } from "./streaming-DHST3Scg.js";
5
- import { loopbackAuthority, loopbackOnly } from "./loopback-only.js";
6
- import "./helpers-CvTauQT5.js";
7
- import { UiControlError, WINDOW_ID, parseChannelToHost } from "./door/protocol.js";
8
- import "./src-dy3Fk9tA.js";
9
- import "./middleware-CPQ8himN.js";
1
+ import { t as Acryl } from "./app-CQcGWjrk.js";
2
+ import { t as bodyLimit } from "./body-limit-WmIjWRLt.js";
3
+ import { t as methodNotAllowed } from "./method-not-allowed-TO2_hnfl.js";
4
+ import { r as streamSSE } from "./streaming-BlDaph8U.js";
5
+ import { i as loopbackOnly, r as loopbackAuthority } from "./loopback-only-BbasoF7R.js";
6
+ import "./helpers-BEjcdbgw.js";
7
+ import { d as parseChannelToHost, l as UiControlError, u as WINDOW_ID } from "./protocol-Dt0AZBOz.js";
8
+ import "./src-BTBm4OPD.js";
9
+ import "./middleware-BfG_fp8P.js";
10
10
  import { dirname, join } from "node:path";
11
11
  import { closeSync, mkdirSync, openSync, readFileSync, renameSync, statSync, writeSync } from "node:fs";
12
12
  import { timingSafeEqual } from "node:crypto";
@@ -32,12 +32,13 @@ var UiChannel = class {
32
32
  * Register a page's stream. A stream already open for the same window is closed first, and its calls settle as `disconnected`.
33
33
  * @returns the function to call when this stream ends.
34
34
  */
35
- attach(windowId, focused, stream) {
35
+ attach(windowId, focused, stream, shellWindow) {
36
36
  const previous = this.connections.get(windowId);
37
37
  if (previous !== void 0) this.drop(previous, true);
38
38
  const connection = {
39
39
  stream,
40
40
  windowId,
41
+ shellWindow,
41
42
  focused,
42
43
  lastActive: ++this.clock
43
44
  };
@@ -67,9 +68,10 @@ var UiChannel = class {
67
68
  }
68
69
  /** The windows currently connected, most recently active first (for diagnostics and tests). */
69
70
  windows() {
70
- return this.byRecency().map(({ windowId, focused }) => ({
71
+ return this.byRecency().map(({ windowId, focused, shellWindow }) => ({
71
72
  windowId,
72
- focused
73
+ focused,
74
+ ...shellWindow === void 0 ? {} : { shellWindow }
73
75
  }));
74
76
  }
75
77
  /**
@@ -78,7 +80,12 @@ var UiChannel = class {
78
80
  */
79
81
  call(request, options = {}) {
80
82
  if (this.closed) return Promise.reject(new UiControlError("unloaded", "the door was unloaded"));
81
- const target = this.byRecency()[0];
83
+ const ordered = this.byRecency();
84
+ const target = options.window === void 0 ? ordered[0] : ordered.find((connection) => connection.shellWindow === options.window);
85
+ if (target === void 0 && options.window !== void 0) {
86
+ const known = ordered.flatMap((connection) => connection.shellWindow === void 0 ? [] : [String(connection.shellWindow)]);
87
+ return Promise.reject(new UiControlError("no-window", `no page of window ${String(options.window)} is connected to the door${known.length === 0 ? " (no desktop window has a page connected)" : `; windows with a page: ${known.join(", ")}`}; window list prints the windows`));
88
+ }
82
89
  if (target === void 0) return Promise.reject(new UiControlError("no-window", "no page of the app is open to control"));
83
90
  const signal = options.signal;
84
91
  if (signal?.aborted === true) return Promise.reject(new UiControlError("aborted", "the call was cancelled"));
@@ -324,6 +331,8 @@ function pageChannelRoutes(channel, options) {
324
331
  const windowId = c.req.query("window");
325
332
  if (windowId === void 0 || !WINDOW_ID.test(windowId)) return c.json(error("a window id is required"), 400);
326
333
  const focused = c.req.query("focused") === "1";
334
+ const shellQuery = Number(c.req.query("shell"));
335
+ const shellWindow = Number.isSafeInteger(shellQuery) && shellQuery > 0 ? shellQuery : void 0;
327
336
  const signal = c.req.raw.signal;
328
337
  return streamSSE(c, async (stream) => {
329
338
  let end = () => {};
@@ -343,7 +352,7 @@ function pageChannelRoutes(channel, options) {
343
352
  write("call", data);
344
353
  },
345
354
  close: end
346
- });
355
+ }, shellWindow);
347
356
  const beat = setInterval(() => {
348
357
  write("ping", "");
349
358
  }, heartbeatMs);
@@ -1,9 +1,9 @@
1
- import { HTTPException } from "./http-exception.js";
2
- import { mergePath } from "./utils/url.js";
3
- import { COMPOSED_HANDLER } from "./utils/constants.js";
4
- import { t as TrieRouter } from "./trie-router-CfFbapzL.js";
5
- import { t as Acryl } from "./app-BM0rTCp7.js";
6
- import "./core-CaY8XDZ6.js";
1
+ import { t as HTTPException } from "./http-exception-MjWkT89V.js";
2
+ import { l as mergePath } from "./url-BPh4d6j-.js";
3
+ import { t as COMPOSED_HANDLER } from "./constants-CBSEudrb.js";
4
+ import { t as TrieRouter } from "./trie-router-JydLKUa2.js";
5
+ import { t as Acryl } from "./app-CQcGWjrk.js";
6
+ import "./core-BOu1jYua.js";
7
7
  import "./connection-C7xgP1hP.js";
8
8
  import { Service } from "@deepseek-ai/cordis";
9
9
  import z from "@deepseek-ai/schemastery";
@@ -0,0 +1,117 @@
1
+ import { c as Request, i as createAdaptorServer, r as UpgradeHub } from "./test-websocket-BLeEvybj.js";
2
+ import "./serve-static-C1Nkj_xB.js";
3
+ import { Service } from "@deepseek-ai/cordis";
4
+ import z from "@deepseek-ai/schemastery";
5
+ //#region ../../plugins/acryl-node-server/src/index.ts
6
+ /** Stable Cordis plugin name, equal to the package name and the Loader row id. */
7
+ const name = "acryl-node-server";
8
+ const inject = ["router"];
9
+ /** Every field has a default, so a caller passes only what it changes: `ctx.plugin(plugin, { ... })` takes the partial shape. */
10
+ const Config = z.object({
11
+ hostname: z.string().default("127.0.0.1").description("Address to bind. Loopback by default; binding elsewhere exposes the app to the network."),
12
+ port: z.number().min(0).max(65535).default(0).description("Port to listen on; 0 lets the system choose. A taken port is followed by the next free one."),
13
+ scan: z.number().min(0).default(20).description("How many further ports to try when the configured one is taken."),
14
+ websocket: z.object({
15
+ maxPayload: z.number().min(1).default(1024 * 1024).description("The largest WebSocket frame accepted, in bytes; a bigger one closes the socket with 1009."),
16
+ heartbeat: z.number().min(0).default(3e4).description("Milliseconds between pings; a peer that did not answer the last one is terminated. 0 turns it off."),
17
+ grace: z.number().min(0).default(2e3).description("Milliseconds a closing socket gets before it is terminated when its plugin unloads.")
18
+ }).default({})
19
+ });
20
+ var NodeServer = class extends Service {
21
+ hostname;
22
+ config;
23
+ server;
24
+ hub;
25
+ bound = 0;
26
+ constructor(ctx, config) {
27
+ super(ctx, "nodeServer");
28
+ this.config = config;
29
+ this.hostname = config.hostname;
30
+ const router = ctx.router;
31
+ this.server = createAdaptorServer({
32
+ fetch: (request, { incoming }) => router.fetch(new Request(request), {
33
+ remoteAddress: incoming.socket.remoteAddress,
34
+ localPort: incoming.socket.localPort
35
+ }),
36
+ hostname: config.hostname,
37
+ overrideGlobalObjects: false
38
+ });
39
+ ctx.effect(() => async () => {
40
+ await this.hub?.close();
41
+ this.server.closeAllConnections();
42
+ if (this.server.listening) await new Promise((resolve) => {
43
+ this.server.close(() => {
44
+ resolve();
45
+ });
46
+ });
47
+ }, "acryl-node-server: close listener and open connections");
48
+ }
49
+ /**
50
+ * `upgradeWebSocket` for the plugin that asks (call it once, in `apply`): `app.get('/ws', upgrade((c) => ({ onMessage(event, ws) { ... } })))`. Checks go in ordinary middleware on the
51
+ * route, and a handler that returns a `Response` refuses the upgrade with that status before any handshake. Every socket it accepts belongs to the calling plugin: when the plugin
52
+ * unloads they are closed with 1001 within `websocket.grace` and the handler sees `close` once. Pass `{ textOnly: true }` to drop binary frames. Needs the `ws` package.
53
+ */
54
+ upgrades() {
55
+ if (!this.hub) {
56
+ this.hub = new UpgradeHub(this.config.websocket);
57
+ this.hub.attach(this.server, this.ctx.router);
58
+ }
59
+ return this.hub.upgradeWebSocketFor(this.ctx);
60
+ }
61
+ /** How many WebSocket connections are open now. */
62
+ get sockets() {
63
+ return this.hub?.size ?? 0;
64
+ }
65
+ /** The port in use, 0 before the server listens. */
66
+ get port() {
67
+ return this.bound;
68
+ }
69
+ /** The address clients use. */
70
+ get url() {
71
+ return `http://${this.hostname.includes(":") ? `[${this.hostname}]` : this.hostname}:${String(this.bound)}`;
72
+ }
73
+ /** Bind, scanning past taken ports. */
74
+ async listen() {
75
+ const { port, scan, hostname } = this.config;
76
+ const last = port === 0 ? 0 : Math.min(65535, port + scan);
77
+ for (let candidate = port; candidate <= last; candidate += 1) try {
78
+ await new Promise((resolve, reject) => {
79
+ const onError = (error) => {
80
+ reject(error);
81
+ };
82
+ this.server.once("error", onError);
83
+ this.server.listen(candidate, hostname, () => {
84
+ this.server.off("error", onError);
85
+ resolve();
86
+ });
87
+ });
88
+ this.bound = this.server.address().port;
89
+ return;
90
+ } catch (error) {
91
+ if (!isPortUnavailable(error)) throw error;
92
+ }
93
+ throw new Error(`acryl-node-server: no free port from ${String(port)} to ${String(last)} on ${hostname}`);
94
+ }
95
+ };
96
+ /**
97
+ * Whether a failed bind means "this port, try the next one". A port another socket holds answers `EADDRINUSE` everywhere. On Windows a port
98
+ * inside a range the system reserves (Hyper-V, WSL and Docker exclude ranges, `netsh interface ipv4 show excludedportrange`) answers
99
+ * `EACCES`, which is a property of that port too; elsewhere `EACCES` means the process may not bind low ports at all, so moving on would
100
+ * only hide the reason.
101
+ */
102
+ function isPortUnavailable(error, platform = process.platform) {
103
+ const code = error?.code;
104
+ return code === "EADDRINUSE" || platform === "win32" && code === "EACCES";
105
+ }
106
+ /** Loads once the server listens, so a plugin that injects `nodeServer` can rely on `url`. A failure to bind fails the plugin. */
107
+ async function apply(ctx, config = {}) {
108
+ await new NodeServer(ctx, {
109
+ hostname: "127.0.0.1",
110
+ port: 0,
111
+ scan: 20,
112
+ websocket: {},
113
+ ...config
114
+ }).listen();
115
+ }
116
+ //#endregion
117
+ export { isPortUnavailable as a, inject as i, NodeServer as n, name as o, apply as r, Config as t };
@@ -1,9 +1,9 @@
1
- import "./router.js";
2
- import { html } from "./html.js";
3
- import { getExtension } from "./utils/mime.js";
4
- import { findTargetHandler, isMiddleware } from "./utils/handler.js";
1
+ import "./router-Be_o6nFu.js";
2
+ import { t as html } from "./html-CgNa89xw.js";
3
+ import { n as getExtension } from "./mime-BnScXkQn.js";
4
+ import { n as isMiddleware, t as findTargetHandler } from "./handler-C0wZ0KwO.js";
5
5
  import { o as replaceUrlParam } from "./utils-Cx61GFMC.js";
6
- import { createPool } from "./utils/concurrent.js";
6
+ import { t as createPool } from "./concurrent-DrF3d2c-.js";
7
7
  //#region ../../plugins/acryl-router/src/core/helper/ssg/utils.ts
8
8
  /**
9
9
  * Get dirname
package/lib/ssg.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as defaultExtensionMap, c as toSSG, d as X_ACRYL_DISABLE_SSG_HEADER_KEY, f as disableSSG, h as ssgParams, i as combineBeforeRequestHooks, l as defaultPlugin, m as onlySSG, n as combineAfterGenerateHooks, o as fetchRoutesContent, p as isSSGContext, r as combineAfterResponseHooks, s as saveContentToFile, t as DEFAULT_OUTPUT_DIR, u as redirectPlugin } from "./ssg-BwjcA-Ge.js";
1
+ import { a as defaultExtensionMap, c as toSSG, d as X_ACRYL_DISABLE_SSG_HEADER_KEY, f as disableSSG, h as ssgParams, i as combineBeforeRequestHooks, l as defaultPlugin, m as onlySSG, n as combineAfterGenerateHooks, o as fetchRoutesContent, p as isSSGContext, r as combineAfterResponseHooks, s as saveContentToFile, t as DEFAULT_OUTPUT_DIR, u as redirectPlugin } from "./ssg-BEl7MHqg.js";
2
2
  export { DEFAULT_OUTPUT_DIR, X_ACRYL_DISABLE_SSG_HEADER_KEY, combineAfterGenerateHooks, combineAfterResponseHooks, combineBeforeRequestHooks, defaultExtensionMap, defaultPlugin, disableSSG, fetchRoutesContent, isSSGContext, onlySSG, redirectPlugin, saveContentToFile, ssgParams, toSSG };
@@ -0,0 +1,88 @@
1
+ //#region ../../plugins/acryl-router/src/core/utils/stream.ts
2
+ /**
3
+ * @module
4
+ * Stream utility.
5
+ */
6
+ var StreamingApi = class {
7
+ writer;
8
+ encoder;
9
+ writable;
10
+ abortSubscribers = [];
11
+ responseReadable;
12
+ /**
13
+ * Whether the stream has been aborted.
14
+ */
15
+ aborted = false;
16
+ /**
17
+ * Whether the stream has been closed normally.
18
+ */
19
+ closed = false;
20
+ constructor(writable, _readable) {
21
+ this.writable = writable;
22
+ this.writer = writable.getWriter();
23
+ this.encoder = new TextEncoder();
24
+ const reader = _readable.getReader();
25
+ this.abortSubscribers.push(async () => {
26
+ await reader.cancel();
27
+ });
28
+ this.responseReadable = new ReadableStream({
29
+ async pull(controller) {
30
+ const { done, value } = await reader.read();
31
+ done ? controller.close() : controller.enqueue(value);
32
+ },
33
+ cancel: () => {
34
+ if (!this.closed) this.abort();
35
+ }
36
+ });
37
+ }
38
+ async write(input) {
39
+ try {
40
+ if (typeof input === "string") input = this.encoder.encode(input);
41
+ await this.writer.write(input);
42
+ } catch {}
43
+ return this;
44
+ }
45
+ async writeln(input) {
46
+ await this.write(input + "\n");
47
+ return this;
48
+ }
49
+ sleep(ms) {
50
+ return new Promise((res) => setTimeout(res, ms));
51
+ }
52
+ async close() {
53
+ this.closed = true;
54
+ try {
55
+ await this.writer.close();
56
+ } catch {}
57
+ }
58
+ async pipe(body) {
59
+ this.writer.releaseLock();
60
+ try {
61
+ await body.pipeTo(this.writable, {
62
+ preventClose: true,
63
+ preventAbort: true
64
+ });
65
+ } finally {
66
+ this.writer = this.writable.getWriter();
67
+ }
68
+ }
69
+ onAbort(listener) {
70
+ this.abortSubscribers.push(listener);
71
+ }
72
+ /**
73
+ * Abort the stream.
74
+ * You can call this method when stream is aborted by external event.
75
+ */
76
+ abort() {
77
+ if (!this.aborted) {
78
+ this.aborted = true;
79
+ this.abortSubscribers.forEach((subscriber) => {
80
+ try {
81
+ Promise.resolve(subscriber()).catch(() => {});
82
+ } catch {}
83
+ });
84
+ }
85
+ }
86
+ };
87
+ //#endregion
88
+ export { StreamingApi as t };
@@ -1,6 +1,6 @@
1
- import { HtmlEscapedCallbackPhase, resolveCallback } from "./utils/html.js";
2
- import { n as TEXT_PLAIN } from "./context-DDO0cfuP.js";
3
- import { StreamingApi } from "./utils/stream.js";
1
+ import { i as resolveCallback, t as HtmlEscapedCallbackPhase } from "./html-DGExBFNg.js";
2
+ import { n as TEXT_PLAIN } from "./context-CkOh7Ygv.js";
3
+ import { t as StreamingApi } from "./stream-CzM_SHkq.js";
4
4
  //#region ../../plugins/acryl-router/src/core/helper/streaming/utils.ts
5
5
  let isOldBunVersion = () => {
6
6
  const version = typeof Bun !== "undefined" ? Bun.version : void 0;
package/lib/streaming.js CHANGED
@@ -1,2 +1,2 @@
1
- import { i as stream, n as SSEStreamingApi, r as streamSSE, t as streamText } from "./streaming-DHST3Scg.js";
1
+ import { i as stream, n as SSEStreamingApi, r as streamSSE, t as streamText } from "./streaming-BlDaph8U.js";
2
2
  export { SSEStreamingApi, stream, streamSSE, streamText };
@@ -1,5 +1,5 @@
1
- import { defineWebSocketHelper } from "./ws.js";
2
- import "./helpers-CvTauQT5.js";
1
+ import { r as defineWebSocketHelper } from "./websocket-DsyBIKVA.js";
2
+ import "./helpers-BEjcdbgw.js";
3
3
  import { createRequire } from "node:module";
4
4
  import { STATUS_CODES, ServerResponse, createServer } from "node:http";
5
5
  import { Http2ServerRequest, constants } from "node:http2";
@@ -0,0 +1,17 @@
1
+ import { t as hc } from "./client-BrMFnMEd.js";
2
+ //#region ../../plugins/acryl-router/src/core/helper/testing/index.ts
3
+ /**
4
+ * @module
5
+ * Testing Helper for Acryl.
6
+ */
7
+ const testClient = (app, Env, executionCtx, options) => {
8
+ const customFetch = (input, init) => {
9
+ return app.request(input, init, Env, executionCtx);
10
+ };
11
+ return hc("http://localhost", {
12
+ ...options,
13
+ fetch: customFetch
14
+ });
15
+ };
16
+ //#endregion
17
+ export { testClient as t };
package/lib/testing.js CHANGED
@@ -1,17 +1,2 @@
1
- import { t as hc } from "./client-DDLXwhBo.js";
2
- //#region ../../plugins/acryl-router/src/core/helper/testing/index.ts
3
- /**
4
- * @module
5
- * Testing Helper for Acryl.
6
- */
7
- const testClient = (app, Env, executionCtx, options) => {
8
- const customFetch = (input, init) => {
9
- return app.request(input, init, Env, executionCtx);
10
- };
11
- return hc("http://localhost", {
12
- ...options,
13
- fetch: customFetch
14
- });
15
- };
16
- //#endregion
1
+ import { t as testClient } from "./testing-BQx5T_UX.js";
17
2
  export { testClient };
@@ -0,0 +1,42 @@
1
+ import { t as HTTPException } from "./http-exception-MjWkT89V.js";
2
+ //#region ../../plugins/acryl-router/src/core/middleware/timeout/index.ts
3
+ const defaultTimeoutException = new HTTPException(504, { message: "Gateway Timeout" });
4
+ /**
5
+ * Timeout Middleware for Acryl.
6
+ *
7
+ * @param {number} duration - The timeout duration in milliseconds.
8
+ * @param {HTTPExceptionFunction | HTTPException} [exception=defaultTimeoutException] - The exception to throw when the timeout occurs. Can be a function that returns an HTTPException or an HTTPException object.
9
+ * @returns {MiddlewareHandler} The middleware handler function.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const app = new Acryl()
14
+ *
15
+ * app.use(
16
+ * '/long-request',
17
+ * timeout(5000) // Set timeout to 5 seconds
18
+ * )
19
+ *
20
+ * app.get('/long-request', async (c) => {
21
+ * await someLongRunningFunction()
22
+ * return c.text('Completed within time limit')
23
+ * })
24
+ * ```
25
+ */
26
+ const timeout = (duration, exception = defaultTimeoutException) => {
27
+ return async function timeout(context, next) {
28
+ let timer;
29
+ const timeoutPromise = new Promise((_, reject) => {
30
+ timer = setTimeout(() => {
31
+ reject(typeof exception === "function" ? exception(context) : exception);
32
+ }, duration);
33
+ });
34
+ try {
35
+ await Promise.race([next(), timeoutPromise]);
36
+ } finally {
37
+ if (timer !== void 0) clearTimeout(timer);
38
+ }
39
+ };
40
+ };
41
+ //#endregion
42
+ export { timeout as t };
package/lib/timeout.js CHANGED
@@ -1,42 +1,2 @@
1
- import { HTTPException } from "./http-exception.js";
2
- //#region ../../plugins/acryl-router/src/core/middleware/timeout/index.ts
3
- const defaultTimeoutException = new HTTPException(504, { message: "Gateway Timeout" });
4
- /**
5
- * Timeout Middleware for Acryl.
6
- *
7
- * @param {number} duration - The timeout duration in milliseconds.
8
- * @param {HTTPExceptionFunction | HTTPException} [exception=defaultTimeoutException] - The exception to throw when the timeout occurs. Can be a function that returns an HTTPException or an HTTPException object.
9
- * @returns {MiddlewareHandler} The middleware handler function.
10
- *
11
- * @example
12
- * ```ts
13
- * const app = new Acryl()
14
- *
15
- * app.use(
16
- * '/long-request',
17
- * timeout(5000) // Set timeout to 5 seconds
18
- * )
19
- *
20
- * app.get('/long-request', async (c) => {
21
- * await someLongRunningFunction()
22
- * return c.text('Completed within time limit')
23
- * })
24
- * ```
25
- */
26
- const timeout = (duration, exception = defaultTimeoutException) => {
27
- return async function timeout(context, next) {
28
- let timer;
29
- const timeoutPromise = new Promise((_, reject) => {
30
- timer = setTimeout(() => {
31
- reject(typeof exception === "function" ? exception(context) : exception);
32
- }, duration);
33
- });
34
- try {
35
- await Promise.race([next(), timeoutPromise]);
36
- } finally {
37
- if (timer !== void 0) clearTimeout(timer);
38
- }
39
- };
40
- };
41
- //#endregion
1
+ import { t as timeout } from "./timeout-FeqZ9A-0.js";
42
2
  export { timeout };
package/lib/tiny.js CHANGED
@@ -1,5 +1,5 @@
1
- import { AcrylBase as Acryl$1 } from "./acryl-base.js";
2
- import { t as PatternRouter } from "./pattern-router-HZxjDGEQ.js";
1
+ import { t as Acryl$1 } from "./app-base-CpRMZL4v.js";
2
+ import { t as PatternRouter } from "./pattern-router-CJBecJBd.js";
3
3
  //#region ../../plugins/acryl-router/src/core/preset/tiny.ts
4
4
  /**
5
5
  * @module