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
@@ -35,20 +35,22 @@ See [Acryl in a Cordis app](../cordis/acryl-in-a-cordis-app.md), [Plugin lifecyc
35
35
 
36
36
  ## The agent panel and the terminals
37
37
 
38
- The panel is a chat button on every page of the running app, and `driver-pty` adds real terminals to it. Both are **development only** (see [what runs in production](../guides/production.md)). They need the rows of the `agent` template (`agent` and `extensions`, with the `model`, `tools` and `memory` the agent brings), so start from that template:
38
+ The panel is a chat button on every page of the running app. **A new app from the `agent` template has it** (`npm create acrylblends@latest my-app agent`), and `driver-pty` adds real terminals to it. Both are **development only** (see [what runs in production](../guides/production.md)).
39
39
 
40
40
  ```sh
41
41
  npm create acrylblends@latest my-app agent
42
42
  cd my-app
43
43
  npm install
44
- npx acrylblends add agent-panel driver-pty
44
+ npm run dev # the panel is the button at the corner of the page
45
+ npx acrylblends add driver-pty # optional: real terminals (pty:claude, pty:codex, pty:pi) in the panel
45
46
  npm install
46
- npm run dev
47
47
  ```
48
48
 
49
- - `add` puts the `agent-panel` row (and `driver-pty`'s after it) in `blend.yaml` before the `routes` row and registers both in `src/app.ts`. On an app without the `agent` and `extensions` rows, such as `blank`, it refuses before it copies anything and says which rows are missing.
49
+ - The panel needs the `agent` and `extensions` rows, which only the `agent` template has: `add agent-panel` on an app without them (a `blank` app) refuses before it copies anything and says which rows are missing, and on an `agent` app it says the panel is already there. An agent-template app made before 1.0.5 gets it with `npx acrylblends add agent-panel`.
50
+ - `add driver-pty` puts the driver's row after the panel's in `blend.yaml` and registers it in `src/app.ts`.
51
+ - A **run belongs to the app, not to the page**: when the page reloads (the door reloads it after a plugin change) the panel shows the question and the events so far and follows the run to its end; **Stop** is the only thing that cancels it.
50
52
  - **The panel's coding agents are yours.** `claude`, `codex` and `pi` run on the machine that runs the app, in the app folder, with the login of the person who started it: `claude` and `codex` use their own signed-in sessions, and `pi` is offered when `DEEPSEEK_API_KEY` is set or `pi` has stored a DeepSeek login (`~/.pi/agent/auth.json`, read from the `HOME` of the process that runs the app: an app started under another `HOME` does not see the login, and the panel then lists `pty:pi` but no chat `pi`). A program that is not installed, or is not logged in, is not offered; nothing is shared between machines, and a workshop laptop needs its own login. The panel's own `agent` (the offline scripted one) needs none.
51
- - `pi` has to be an executable on the `PATH`; a shell function that wraps the binary is fine as long as the binary itself is found by `which pi`.
53
+ - `pi` has to be an executable on the `PATH`; a shell function that wraps the binary is fine as long as the binary itself is found by `which pi`. Install it with `npm i -g @earendil-works/pi-coding-agent` (the older `@mariozechner/pi-coding-agent` is deprecated). It reaches DeepSeek with `DEEPSEEK_API_KEY` in the environment of the app, or with the key it stored when its owner logged in (`~/.pi/agent/auth.json`, a `deepseek` entry); without one the panel does not offer it. On Windows an npm-installed `claude`, `codex` or `pi` is a `.cmd` shim: the panel reads the script the shim runs and starts it with Node (no shell, so the message is not passed through cmd.exe quoting), and Stop ends the whole process tree.
52
54
  - `driver-pty` brings `node-pty`, which ships prebuilt binaries for macOS, Windows and Linux. npm 11 and pnpm warn that its install script was not run (they ask you to approve dependency install scripts); you can ignore the warning. If no `pty:` terminal is offered and the app prints why at start, approve and rebuild: `npm approve-scripts node-pty`, then `npm rebuild node-pty` (pnpm: `pnpm approve-builds`).
53
55
 
54
56
  ## Checking that an agent can use the docs
@@ -0,0 +1,193 @@
1
+ //#region ../../plugins/acryl-router/src/core/utils/accept.ts
2
+ const isWhitespace = (char) => char === 32 || char === 9 || char === 10 || char === 13;
3
+ const consumeWhitespace = (acceptHeader, startIndex) => {
4
+ while (startIndex < acceptHeader.length) {
5
+ if (!isWhitespace(acceptHeader.charCodeAt(startIndex))) break;
6
+ startIndex++;
7
+ }
8
+ return startIndex;
9
+ };
10
+ const ignoreTrailingWhitespace = (acceptHeader, startIndex) => {
11
+ while (startIndex > 0) {
12
+ if (!isWhitespace(acceptHeader.charCodeAt(startIndex - 1))) break;
13
+ startIndex--;
14
+ }
15
+ return startIndex;
16
+ };
17
+ const skipInvalidParam = (acceptHeader, startIndex) => {
18
+ while (startIndex < acceptHeader.length) {
19
+ const char = acceptHeader.charCodeAt(startIndex);
20
+ if (char === 59) return [startIndex + 1, true];
21
+ if (char === 44) return [startIndex + 1, false];
22
+ startIndex++;
23
+ }
24
+ return [startIndex, false];
25
+ };
26
+ const skipInvalidAcceptValue = (acceptHeader, startIndex) => {
27
+ let i = startIndex;
28
+ let inQuotes = false;
29
+ while (i < acceptHeader.length) {
30
+ const char = acceptHeader.charCodeAt(i);
31
+ if (inQuotes && char === 92) i++;
32
+ else if (char === 34) inQuotes = !inQuotes;
33
+ else if (!inQuotes && char === 44) return i + 1;
34
+ i++;
35
+ }
36
+ return i;
37
+ };
38
+ const getNextParam = (acceptHeader, startIndex) => {
39
+ startIndex = consumeWhitespace(acceptHeader, startIndex);
40
+ let i = startIndex;
41
+ let key;
42
+ let value;
43
+ let hasNext = false;
44
+ while (i < acceptHeader.length) {
45
+ const char = acceptHeader.charCodeAt(i);
46
+ if (char === 61) {
47
+ key = acceptHeader.slice(startIndex, ignoreTrailingWhitespace(acceptHeader, i));
48
+ i++;
49
+ break;
50
+ }
51
+ if (char === 59) return [
52
+ i + 1,
53
+ void 0,
54
+ void 0,
55
+ true
56
+ ];
57
+ if (char === 44) return [
58
+ i + 1,
59
+ void 0,
60
+ void 0,
61
+ false
62
+ ];
63
+ i++;
64
+ }
65
+ if (key === void 0) return [
66
+ i,
67
+ void 0,
68
+ void 0,
69
+ false
70
+ ];
71
+ i = consumeWhitespace(acceptHeader, i);
72
+ if (acceptHeader.charCodeAt(i) === 61) {
73
+ const skipResult = skipInvalidParam(acceptHeader, i + 1);
74
+ return [
75
+ skipResult[0],
76
+ key,
77
+ void 0,
78
+ skipResult[1]
79
+ ];
80
+ }
81
+ let inQuotes = false;
82
+ const paramStartIndex = i;
83
+ while (i < acceptHeader.length) {
84
+ const char = acceptHeader.charCodeAt(i);
85
+ if (inQuotes && char === 92) i++;
86
+ else if (char === 34) {
87
+ if (inQuotes) {
88
+ let nextIndex = consumeWhitespace(acceptHeader, i + 1);
89
+ const nextChar = acceptHeader.charCodeAt(nextIndex);
90
+ if (nextIndex < acceptHeader.length && !(nextChar === 59 || nextChar === 44)) {
91
+ const skipResult = skipInvalidParam(acceptHeader, nextIndex);
92
+ return [
93
+ skipResult[0],
94
+ key,
95
+ void 0,
96
+ skipResult[1]
97
+ ];
98
+ }
99
+ value = acceptHeader.slice(paramStartIndex + 1, i);
100
+ if (value.includes("\\")) value = value.replace(/\\(.)/g, "$1");
101
+ if (nextChar === 44) return [
102
+ nextIndex + 1,
103
+ key,
104
+ value,
105
+ false
106
+ ];
107
+ if (nextChar === 59) {
108
+ hasNext = true;
109
+ nextIndex++;
110
+ }
111
+ i = nextIndex;
112
+ break;
113
+ }
114
+ inQuotes = true;
115
+ } else if (!inQuotes && (char === 59 || char === 44)) {
116
+ value = acceptHeader.slice(paramStartIndex, ignoreTrailingWhitespace(acceptHeader, i));
117
+ if (char === 59) hasNext = true;
118
+ i++;
119
+ break;
120
+ }
121
+ i++;
122
+ }
123
+ return [
124
+ i,
125
+ key,
126
+ value ?? acceptHeader.slice(paramStartIndex, ignoreTrailingWhitespace(acceptHeader, i)),
127
+ hasNext
128
+ ];
129
+ };
130
+ const getNextAcceptValue = (acceptHeader, startIndex) => {
131
+ const accept = {
132
+ type: "",
133
+ params: Object.create(null),
134
+ q: 1
135
+ };
136
+ startIndex = consumeWhitespace(acceptHeader, startIndex);
137
+ let i = startIndex;
138
+ while (i < acceptHeader.length) {
139
+ const char = acceptHeader.charCodeAt(i);
140
+ if (char === 59 || char === 44) {
141
+ accept.type = acceptHeader.slice(startIndex, ignoreTrailingWhitespace(acceptHeader, i));
142
+ i++;
143
+ if (char === 44) return [i, accept.type ? accept : void 0];
144
+ if (!accept.type) return [skipInvalidAcceptValue(acceptHeader, i), void 0];
145
+ break;
146
+ }
147
+ i++;
148
+ }
149
+ if (!accept.type) {
150
+ accept.type = acceptHeader.slice(startIndex, ignoreTrailingWhitespace(acceptHeader, acceptHeader.length));
151
+ return [acceptHeader.length, accept.type ? accept : void 0];
152
+ }
153
+ let param;
154
+ let value;
155
+ let hasNext;
156
+ while (i < acceptHeader.length) {
157
+ [i, param, value, hasNext] = getNextParam(acceptHeader, i);
158
+ if (param && value) accept.params[param] = value;
159
+ if (!hasNext) break;
160
+ }
161
+ return [i, accept];
162
+ };
163
+ const parseAccept = (acceptHeader) => {
164
+ if (!acceptHeader) return [];
165
+ const values = [];
166
+ let i = 0;
167
+ let accept;
168
+ let requiresSort = false;
169
+ let lastAccept;
170
+ while (i < acceptHeader.length) {
171
+ [i, accept] = getNextAcceptValue(acceptHeader, i);
172
+ if (accept) {
173
+ accept.q = parseQuality(accept.params.q ?? accept.params.Q);
174
+ values.push(accept);
175
+ if (lastAccept && lastAccept.q < accept.q) requiresSort = true;
176
+ lastAccept = accept;
177
+ }
178
+ }
179
+ if (requiresSort) values.sort((a, b) => b.q - a.q);
180
+ return values;
181
+ };
182
+ const parseQuality = (qVal) => {
183
+ if (qVal === void 0) return 1;
184
+ if (qVal === "") return 1;
185
+ if (qVal === "NaN") return 0;
186
+ const num = Number(qVal);
187
+ if (Number.isNaN(num)) return 1;
188
+ if (num < 0) return 0;
189
+ if (num > 1) return 1;
190
+ return num;
191
+ };
192
+ //#endregion
193
+ export { parseAccept as t };
@@ -1,4 +1,4 @@
1
- import { parseAccept } from "./utils/accept.js";
1
+ import { t as parseAccept } from "./accept-CNNHu4Cf.js";
2
2
  //#region ../../plugins/acryl-router/src/core/helper/accepts/accepts.ts
3
3
  const matchType = (acceptType, supportedType) => {
4
4
  const accept = acceptType.toLowerCase();
package/lib/accepts.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as accepts } from "./accepts-XBuZPVRI.js";
1
+ import { t as accepts } from "./accepts-Btq83xPd.js";
2
2
  export { accepts };
package/lib/acryl-base.js CHANGED
@@ -1,332 +1,2 @@
1
- import { t as compose } from "./compose-BuW2B6PZ.js";
2
- import { getPath, getPathNoStrict, mergePath } from "./utils/url.js";
3
- import { t as Context } from "./context-DDO0cfuP.js";
4
- import { METHODS } from "./router.js";
5
- import { COMPOSED_HANDLER } from "./utils/constants.js";
6
- //#region ../../plugins/acryl-router/src/core/app-base.ts
7
- /**
8
- * @module
9
- * This module is the base module for the Acryl object.
10
- */
11
- const notFoundHandler = (c) => {
12
- return c.text("404 Not Found", 404);
13
- };
14
- const errorHandler = (err, c) => {
15
- if ("getResponse" in err) {
16
- const res = err.getResponse();
17
- return c.newResponse(res.body, res);
18
- }
19
- console.error(err);
20
- return c.text("Internal Server Error", 500);
21
- };
22
- var Acryl = class Acryl {
23
- get;
24
- post;
25
- put;
26
- delete;
27
- options;
28
- patch;
29
- query;
30
- all;
31
- on;
32
- use;
33
- router;
34
- getPath;
35
- _basePath = "/";
36
- #path = "/";
37
- routes = [];
38
- constructor(options = {}) {
39
- [...METHODS, "all"].forEach((method) => {
40
- this[method] = (args1, ...args) => {
41
- const methodName = method.toUpperCase();
42
- if (typeof args1 === "string") this.#path = args1;
43
- else this.#addRoute(methodName, this.#path, args1);
44
- args.forEach((handler) => {
45
- this.#addRoute(methodName, this.#path, handler);
46
- });
47
- return this;
48
- };
49
- });
50
- this.on = (method, path, ...handlers) => {
51
- for (const p of [path].flat()) {
52
- this.#path = p;
53
- for (const m of [method].flat()) {
54
- const methodName = m.toUpperCase();
55
- for (const handler of handlers) this.#addRoute(methodName, this.#path, handler);
56
- }
57
- }
58
- return this;
59
- };
60
- this.use = (arg1, ...handlers) => {
61
- if (typeof arg1 === "string") this.#path = arg1;
62
- else {
63
- this.#path = "*";
64
- handlers.unshift(arg1);
65
- }
66
- handlers.forEach((handler) => {
67
- this.#addRoute("ALL", this.#path, handler);
68
- });
69
- return this;
70
- };
71
- const { strict, ...optionsWithoutStrict } = options;
72
- Object.assign(this, optionsWithoutStrict);
73
- this.getPath = strict ?? true ? options.getPath ?? getPath : getPathNoStrict;
74
- }
75
- #clone() {
76
- const clone = new Acryl({
77
- router: this.router,
78
- getPath: this.getPath
79
- });
80
- clone.errorHandler = this.errorHandler;
81
- clone.#notFoundHandler = this.#notFoundHandler;
82
- clone.routes = this.routes;
83
- return clone;
84
- }
85
- #notFoundHandler = notFoundHandler;
86
- errorHandler = errorHandler;
87
- /**
88
- * `.route()` allows grouping other Acryl instance in routes.
89
- *
90
- *
91
- * @param {string} path - base Path
92
- * @param {Acryl} app - other Acryl instance
93
- * @returns {Acryl} routed Acryl instance
94
- *
95
- * @example
96
- * ```ts
97
- * const app = new Acryl()
98
- * const app2 = new Acryl()
99
- *
100
- * app2.get("/user", (c) => c.text("user"))
101
- * app.route("/api", app2) // GET /api/user
102
- * ```
103
- */
104
- route(path, app) {
105
- const subApp = this.basePath(path);
106
- app.routes.map((r) => {
107
- let handler;
108
- if (app.errorHandler === errorHandler) handler = r.handler;
109
- else {
110
- handler = async (c, next) => (await compose([], app.errorHandler)(c, () => r.handler(c, next))).res;
111
- handler[COMPOSED_HANDLER] = r.handler;
112
- }
113
- subApp.#addRoute(r.method, r.path, handler, r.basePath);
114
- });
115
- return this;
116
- }
117
- /**
118
- * `.basePath()` allows base paths to be specified.
119
- *
120
- *
121
- * @param {string} path - base Path
122
- * @returns {Acryl} changed Acryl instance
123
- *
124
- * @example
125
- * ```ts
126
- * const api = new Acryl().basePath('/api')
127
- * ```
128
- */
129
- basePath(path) {
130
- const subApp = this.#clone();
131
- subApp._basePath = mergePath(this._basePath, path);
132
- return subApp;
133
- }
134
- /**
135
- * `.onError()` handles an error and returns a customized Response.
136
- *
137
- *
138
- * @param {ErrorHandler} handler - request Handler for error
139
- * @returns {Acryl} changed Acryl instance
140
- *
141
- * @example
142
- * ```ts
143
- * app.onError((err, c) => {
144
- * console.error(`${err}`)
145
- * return c.text('Custom Error Message', 500)
146
- * })
147
- * ```
148
- */
149
- onError = (handler) => {
150
- this.errorHandler = handler;
151
- return this;
152
- };
153
- /**
154
- * `.notFound()` allows you to customize a Not Found Response.
155
- *
156
- *
157
- * @param {NotFoundHandler} handler - request handler for not-found
158
- * @returns {Acryl} changed Acryl instance
159
- *
160
- * @example
161
- * ```ts
162
- * app.notFound((c) => {
163
- * return c.text('Custom 404 Message', 404)
164
- * })
165
- * ```
166
- */
167
- notFound = (handler) => {
168
- this.#notFoundHandler = handler;
169
- return this;
170
- };
171
- /**
172
- * `.mount()` allows you to mount applications built with other frameworks into your Acryl application.
173
- *
174
- * @deprecated Use `mount()` from `acryl-router/mount` instead. `.mount()` will be removed in v5.
175
- *
176
- *
177
- * @param {string} path - base Path
178
- * @param {Function} applicationHandler - other Request Handler
179
- * @param {MountOptions} [options] - options of `.mount()`
180
- * @returns {Acryl} mounted Acryl instance
181
- *
182
- * @example
183
- * ```ts
184
- * import { Router as IttyRouter } from 'itty-router'
185
- * import { Acryl } from 'acrylblends'
186
- * // Create itty-router application
187
- * const ittyRouter = IttyRouter()
188
- * // GET /itty-router/hello
189
- * ittyRouter.get('/hello', () => new Response('Hello from itty-router'))
190
- *
191
- * const app = new Acryl()
192
- * app.mount('/itty-router', ittyRouter.handle)
193
- * ```
194
- *
195
- * @example
196
- * ```ts
197
- * const app = new Acryl()
198
- * // Send the request to another application without modification.
199
- * app.mount('/app', anotherApp, {
200
- * replaceRequest: (req) => req,
201
- * })
202
- * ```
203
- */
204
- mount(path, applicationHandler, options) {
205
- let replaceRequest;
206
- let optionHandler;
207
- if (options) if (typeof options === "function") optionHandler = options;
208
- else {
209
- optionHandler = options.optionHandler;
210
- if (options.replaceRequest === false) replaceRequest = (request) => request;
211
- else replaceRequest = options.replaceRequest;
212
- }
213
- const getOptions = optionHandler ? (c) => {
214
- const options = optionHandler(c);
215
- return Array.isArray(options) ? options : [options];
216
- } : (c) => {
217
- let executionContext = void 0;
218
- try {
219
- executionContext = c.executionCtx;
220
- } catch {}
221
- return [c.env, executionContext];
222
- };
223
- replaceRequest ||= (() => {
224
- const mergedPath = mergePath(this._basePath, path);
225
- const pathPrefixLength = mergedPath === "/" ? 0 : mergedPath.length;
226
- return (request) => {
227
- const url = new URL(request.url);
228
- url.pathname = this.getPath(request).slice(pathPrefixLength) || "/";
229
- return new Request(url, request);
230
- };
231
- })();
232
- const handler = async (c, next) => {
233
- const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c));
234
- if (res) return res;
235
- await next();
236
- };
237
- this.#addRoute("ALL", mergePath(path, "*"), handler);
238
- return this;
239
- }
240
- #addRoute(method, path, handler, baseRoutePath) {
241
- path = mergePath(this._basePath, path);
242
- const r = {
243
- basePath: baseRoutePath !== void 0 ? mergePath(this._basePath, baseRoutePath) : this._basePath,
244
- path,
245
- method,
246
- handler
247
- };
248
- this.router.add(method, path, [handler, r]);
249
- this.routes.push(r);
250
- }
251
- #handleError(err, c) {
252
- if (err instanceof Error) return this.errorHandler(err, c);
253
- throw err;
254
- }
255
- #dispatch(request, executionCtx, env, method) {
256
- if (method === "HEAD") return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, "GET")))();
257
- const path = this.getPath(request, { env });
258
- const matchResult = this.router.match(method, path);
259
- const c = new Context(request, {
260
- path,
261
- matchResult,
262
- env,
263
- executionCtx,
264
- notFoundHandler: this.#notFoundHandler
265
- });
266
- if (matchResult[0].length === 1) {
267
- let res;
268
- try {
269
- res = matchResult[0][0][0][0](c, async () => {
270
- c.res = await this.#notFoundHandler(c);
271
- });
272
- } catch (err) {
273
- return this.#handleError(err, c);
274
- }
275
- return res instanceof Promise ? res.then((resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c))).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c);
276
- }
277
- const composed = compose(matchResult[0], this.errorHandler, this.#notFoundHandler);
278
- return (async () => {
279
- try {
280
- const context = await composed(c);
281
- if (!context.finalized) throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");
282
- return context.res;
283
- } catch (err) {
284
- return this.#handleError(err, c);
285
- }
286
- })();
287
- }
288
- /**
289
- * `.fetch()` will be entry point of your app.
290
- *
291
- *
292
- * @param {Request} request - request Object of request
293
- * @param {Env} env - env Object
294
- * @param {ExecutionContext} executionCtx - context of execution
295
- * @returns {Response | Promise<Response>} response of request
296
- *
297
- */
298
- fetch = (request, ...rest) => {
299
- return this.#dispatch(request, rest[1], rest[0], request.method);
300
- };
301
- /**
302
- * `.request()` is a useful method for testing.
303
- * You can pass a URL or pathname to send a GET request.
304
- * app will return a Response object.
305
- * ```ts
306
- * test('GET /hello is ok', async () => {
307
- * const res = await app.request('/hello')
308
- * expect(res.status).toBe(200)
309
- * })
310
- * ```
311
- */
312
- request = (input, requestInit, Env, executionCtx) => {
313
- if (input instanceof Request) return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx);
314
- input = input.toString();
315
- return this.fetch(new Request(/^https?:\/\//.test(input) ? input : `http://localhost${mergePath("/", input)}`, requestInit), Env, executionCtx);
316
- };
317
- /**
318
- * `.fire()` automatically adds a global fetch event listener.
319
- * This can be useful for environments that adhere to the Service Worker API, such as non-ES module Cloudflare Workers.
320
- * @deprecated
321
- * ACRYL ships no service-worker adapter: mount the app with `ctx.router.route(path, app)` and serve it through an ACRYL adapter instead.
322
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
323
- * @see https://developers.cloudflare.com/workers/reference/migrate-to-module-workers/
324
- */
325
- fire = () => {
326
- addEventListener("fetch", (event) => {
327
- event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method));
328
- });
329
- };
330
- };
331
- //#endregion
1
+ import { t as Acryl } from "./app-base-CpRMZL4v.js";
332
2
  export { Acryl as AcrylBase };
@@ -0,0 +1,37 @@
1
+ //#region ../../plugins/acryl-router/src/core/helper/adapter/index.ts
2
+ const env = (c, runtime) => {
3
+ const globalEnv = globalThis?.process?.env;
4
+ runtime ??= getRuntimeKey();
5
+ return {
6
+ bun: () => globalEnv,
7
+ node: () => globalEnv,
8
+ "edge-light": () => globalEnv,
9
+ deno: () => {
10
+ return Deno.env.toObject();
11
+ },
12
+ workerd: () => c.env,
13
+ fastly: () => ({}),
14
+ other: () => ({})
15
+ }[runtime]();
16
+ };
17
+ const knownUserAgents = {
18
+ deno: "Deno",
19
+ bun: "Bun",
20
+ workerd: "Cloudflare-Workers",
21
+ node: "Node.js"
22
+ };
23
+ const getRuntimeKey = () => {
24
+ const global = globalThis;
25
+ if (typeof navigator !== "undefined" && typeof navigator.userAgent === "string") {
26
+ for (const [runtimeKey, userAgent] of Object.entries(knownUserAgents)) if (checkUserAgentEquals(userAgent)) return runtimeKey;
27
+ }
28
+ if (typeof global?.EdgeRuntime === "string") return "edge-light";
29
+ if (global?.fastly !== void 0) return "fastly";
30
+ if (global?.process?.release?.name === "node") return "node";
31
+ return "other";
32
+ };
33
+ const checkUserAgentEquals = (platform) => {
34
+ return navigator.userAgent.startsWith(platform);
35
+ };
36
+ //#endregion
37
+ export { knownUserAgents as i, env as n, getRuntimeKey as r, checkUserAgentEquals as t };
package/lib/adapter.js CHANGED
@@ -1,37 +1,2 @@
1
- //#region ../../plugins/acryl-router/src/core/helper/adapter/index.ts
2
- const env = (c, runtime) => {
3
- const globalEnv = globalThis?.process?.env;
4
- runtime ??= getRuntimeKey();
5
- return {
6
- bun: () => globalEnv,
7
- node: () => globalEnv,
8
- "edge-light": () => globalEnv,
9
- deno: () => {
10
- return Deno.env.toObject();
11
- },
12
- workerd: () => c.env,
13
- fastly: () => ({}),
14
- other: () => ({})
15
- }[runtime]();
16
- };
17
- const knownUserAgents = {
18
- deno: "Deno",
19
- bun: "Bun",
20
- workerd: "Cloudflare-Workers",
21
- node: "Node.js"
22
- };
23
- const getRuntimeKey = () => {
24
- const global = globalThis;
25
- if (typeof navigator !== "undefined" && typeof navigator.userAgent === "string") {
26
- for (const [runtimeKey, userAgent] of Object.entries(knownUserAgents)) if (checkUserAgentEquals(userAgent)) return runtimeKey;
27
- }
28
- if (typeof global?.EdgeRuntime === "string") return "edge-light";
29
- if (global?.fastly !== void 0) return "fastly";
30
- if (global?.process?.release?.name === "node") return "node";
31
- return "other";
32
- };
33
- const checkUserAgentEquals = (platform) => {
34
- return navigator.userAgent.startsWith(platform);
35
- };
36
- //#endregion
1
+ import { i as knownUserAgents, n as env, r as getRuntimeKey, t as checkUserAgentEquals } from "./adapter-CaZ6FZUU.js";
37
2
  export { checkUserAgentEquals, env, getRuntimeKey, knownUserAgents };
@@ -1,7 +1,7 @@
1
- import { AcrylBase as Acryl$1 } from "./acryl-base.js";
2
- import { i as RegExpRouter } from "./reg-exp-router-DC1R3qoY.js";
3
- import { t as SmartRouter } from "./smart-router-C5CZ5XSM.js";
4
- import { t as TrieRouter } from "./trie-router-CfFbapzL.js";
1
+ import { t as Acryl$1 } from "./app-base-CpRMZL4v.js";
2
+ import { i as RegExpRouter } from "./reg-exp-router-C_WV84eV.js";
3
+ import { t as SmartRouter } from "./smart-router-BjxkDQCE.js";
4
+ import { t as TrieRouter } from "./trie-router-JydLKUa2.js";
5
5
  //#region ../../plugins/acryl-router/src/core/app.ts
6
6
  /**
7
7
  * The Acryl class extends the functionality of the AcrylBase class.