acrylblends 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/LICENSE +73 -0
  2. package/docs/framework/README.md +51 -51
  3. package/docs/framework/UPSTREAM.md +1 -1
  4. package/docs/framework/agents/index.md +24 -0
  5. package/docs/framework/api/acryl.md +259 -0
  6. package/docs/framework/api/context.md +527 -0
  7. package/docs/framework/api/exception.md +80 -0
  8. package/docs/framework/api/index.md +12 -0
  9. package/docs/framework/api/presets.md +65 -0
  10. package/docs/framework/api/request.md +396 -0
  11. package/docs/framework/api/routing.md +303 -0
  12. package/docs/framework/{api-summary.md → api/summary.md} +19 -17
  13. package/docs/framework/concepts/benchmarks.md +26 -0
  14. package/docs/framework/concepts/developer-experience.md +5 -0
  15. package/docs/framework/concepts/middleware.md +21 -0
  16. package/docs/framework/concepts/motivation.md +14 -0
  17. package/docs/framework/concepts/routers.md +63 -0
  18. package/docs/framework/concepts/stacks.md +235 -0
  19. package/docs/framework/concepts/web-standard.md +37 -0
  20. package/docs/framework/{getting-started.md → cordis/acryl-in-a-cordis-app.md} +16 -16
  21. package/docs/framework/{concepts.md → cordis/concepts.md} +2 -2
  22. package/docs/framework/cordis/middleware.md +8 -0
  23. package/docs/framework/{migration-from-0-3.md → cordis/migration-from-0-3.md} +16 -13
  24. package/docs/framework/cordis/migration-from-0-4.md +14 -0
  25. package/docs/framework/{migration-from-dsh-webserver.md → cordis/migration-from-dsh-webserver.md} +7 -7
  26. package/docs/framework/{routing.md → cordis/mounting.md} +5 -108
  27. package/docs/framework/{node-server.md → cordis/node-server.md} +4 -4
  28. package/docs/framework/{surfaces.md → cordis/surfaces.md} +2 -2
  29. package/docs/framework/cordis/transport-and-cancellation.md +57 -0
  30. package/docs/framework/{validation.md → cordis/validation.md} +9 -9
  31. package/docs/framework/getting-started/basic.md +196 -0
  32. package/docs/framework/getting-started/bun.md +221 -0
  33. package/docs/framework/getting-started/nodejs.md +344 -0
  34. package/docs/framework/getting-started/other-runtimes.md +23 -0
  35. package/docs/framework/guides/best-practices.md +231 -0
  36. package/docs/framework/guides/create-acrylblends.md +79 -0
  37. package/docs/framework/guides/examples.md +3 -0
  38. package/docs/framework/guides/faq.md +19 -0
  39. package/docs/framework/guides/helpers.md +33 -0
  40. package/docs/framework/guides/jsx-dom.md +299 -0
  41. package/docs/framework/guides/jsx.md +440 -0
  42. package/docs/framework/guides/middleware.md +253 -0
  43. package/docs/framework/guides/rpc.md +886 -0
  44. package/docs/framework/guides/testing.md +133 -0
  45. package/docs/framework/guides/validation.md +383 -0
  46. package/docs/framework/helpers/accepts.md +60 -0
  47. package/docs/framework/helpers/adapter.md +87 -0
  48. package/docs/framework/helpers/conninfo.md +112 -0
  49. package/docs/framework/helpers/cookie.md +232 -0
  50. package/docs/framework/helpers/css.md +285 -0
  51. package/docs/framework/helpers/dev.md +67 -0
  52. package/docs/framework/helpers/factory.md +180 -0
  53. package/docs/framework/helpers/html.md +123 -0
  54. package/docs/framework/helpers/jwt.md +184 -0
  55. package/docs/framework/helpers/proxy.md +118 -0
  56. package/docs/framework/helpers/route.md +143 -0
  57. package/docs/framework/helpers/ssg.md +393 -0
  58. package/docs/framework/helpers/streaming.md +119 -0
  59. package/docs/framework/helpers/testing.md +101 -0
  60. package/docs/framework/helpers/websocket.md +215 -0
  61. package/docs/framework/middleware/builtin/basic-auth.md +165 -0
  62. package/docs/framework/middleware/builtin/bearer-auth.md +138 -0
  63. package/docs/framework/middleware/builtin/body-limit.md +71 -0
  64. package/docs/framework/middleware/builtin/cache.md +122 -0
  65. package/docs/framework/middleware/builtin/combine.md +94 -0
  66. package/docs/framework/middleware/builtin/compress.md +59 -0
  67. package/docs/framework/middleware/builtin/context-storage.md +78 -0
  68. package/docs/framework/middleware/builtin/cors.md +135 -0
  69. package/docs/framework/middleware/builtin/csrf.md +105 -0
  70. package/docs/framework/middleware/builtin/etag.md +54 -0
  71. package/docs/framework/middleware/builtin/ip-restriction.md +69 -0
  72. package/docs/framework/middleware/builtin/jsx-renderer.md +286 -0
  73. package/docs/framework/middleware/builtin/jwk.md +192 -0
  74. package/docs/framework/middleware/builtin/jwt.md +145 -0
  75. package/docs/framework/middleware/builtin/language.md +232 -0
  76. package/docs/framework/middleware/builtin/logger.md +74 -0
  77. package/docs/framework/middleware/builtin/loopback-only.md +31 -0
  78. package/docs/framework/middleware/builtin/method-not-allowed.md +48 -0
  79. package/docs/framework/middleware/builtin/method-override.md +80 -0
  80. package/docs/framework/middleware/builtin/mount.md +106 -0
  81. package/docs/framework/middleware/builtin/pretty-json.md +53 -0
  82. package/docs/framework/middleware/builtin/request-id.md +94 -0
  83. package/docs/framework/middleware/builtin/secure-headers.md +247 -0
  84. package/docs/framework/middleware/builtin/timeout.md +98 -0
  85. package/docs/framework/middleware/builtin/timing.md +101 -0
  86. package/docs/framework/middleware/builtin/trailing-slash.md +74 -0
  87. package/docs/framework/middleware/third-party.md +4 -0
  88. package/docs/framework/upstream.json +3 -3
  89. package/lib/accepts-XBuZPVRI.js +52 -0
  90. package/lib/accepts.d.ts +33 -0
  91. package/lib/accepts.js +2 -0
  92. package/lib/acryl-base.d.ts +2 -0
  93. package/lib/acryl-base.js +332 -0
  94. package/lib/adapter.d.ts +12 -0
  95. package/lib/adapter.js +37 -0
  96. package/lib/app-BM0rTCp7.js +26 -0
  97. package/lib/app-CmAYW1Al.d.ts +21 -0
  98. package/lib/basic-auth.d.ts +72 -0
  99. package/lib/basic-auth.js +95 -0
  100. package/lib/bearer-auth.d.ts +89 -0
  101. package/lib/bearer-auth.js +94 -0
  102. package/lib/body-limit.d.ts +42 -0
  103. package/lib/body-limit.js +66 -0
  104. package/lib/client-BHTr318g.js +266 -0
  105. package/lib/client.d.ts +3 -0
  106. package/lib/client.js +2 -0
  107. package/lib/combine.d.ts +85 -0
  108. package/lib/combine.js +137 -0
  109. package/lib/compose-BuW2B6PZ.js +50 -0
  110. package/lib/compress.d.ts +38 -0
  111. package/lib/compress.js +79 -0
  112. package/lib/connection-C7xgP1hP.js +24 -0
  113. package/lib/conninfo.d.ts +25 -0
  114. package/lib/conninfo.js +2 -0
  115. package/lib/constants-Dy7ZvN1H.js +4 -0
  116. package/lib/context-Bm7rI-oK.d.ts +1234 -0
  117. package/lib/context-DDO0cfuP.js +365 -0
  118. package/lib/context-storage.d.ts +38 -0
  119. package/lib/context-storage.js +52 -0
  120. package/lib/cookie-ClMaKDQf.d.ts +40 -0
  121. package/lib/cookie.d.ts +24 -0
  122. package/lib/cookie.js +82 -0
  123. package/lib/cors.d.ts +52 -0
  124. package/lib/cors.js +106 -0
  125. package/lib/csrf.d.ts +75 -0
  126. package/lib/csrf.js +101 -0
  127. package/lib/etag.d.ts +40 -0
  128. package/lib/etag.js +135 -0
  129. package/lib/factory.d.ts +35 -0
  130. package/lib/factory.js +30 -0
  131. package/lib/headers-tu2YYN8T.d.ts +11 -0
  132. package/lib/html.d.ts +6 -0
  133. package/lib/html.js +31 -0
  134. package/lib/http-exception.d.ts +57 -0
  135. package/lib/http-exception.js +54 -0
  136. package/lib/http-status-DaAwGAFL.d.ts +35 -0
  137. package/lib/index-B-3F4wt2.d.ts +12 -0
  138. package/lib/index-UTBmM3GX.d.ts +68 -0
  139. package/lib/index-oOClm_Xk.d.ts +45 -0
  140. package/lib/index.d.ts +5 -0
  141. package/lib/index.js +28 -0
  142. package/lib/ip-restriction.d.ts +68 -0
  143. package/lib/ip-restriction.js +166 -0
  144. package/lib/jwk.d.ts +52 -0
  145. package/lib/jwk.js +117 -0
  146. package/lib/jwt-BGJBw5AF.js +403 -0
  147. package/lib/jwt-Dg493Tai.d.ts +51 -0
  148. package/lib/jwt.d.ts +72 -0
  149. package/lib/jwt.js +115 -0
  150. package/lib/language.d.ts +88 -0
  151. package/lib/language.js +198 -0
  152. package/lib/logger.d.ts +22 -0
  153. package/lib/logger.js +54 -0
  154. package/lib/loopback-only.d.ts +45 -0
  155. package/lib/loopback-only.js +90 -0
  156. package/lib/method-not-allowed.d.ts +47 -0
  157. package/lib/method-not-allowed.js +82 -0
  158. package/lib/method-override.d.ts +46 -0
  159. package/lib/method-override.js +103 -0
  160. package/lib/mime-BQOYHl-l.d.ts +72 -0
  161. package/lib/node-server/conninfo.d.ts +11 -0
  162. package/lib/node-server/conninfo.js +19 -0
  163. package/lib/node-server/serve-static.d.ts +19 -0
  164. package/lib/node-server/serve-static.js +2 -0
  165. package/lib/node-server.d.ts +103 -0
  166. package/lib/node-server.js +1325 -0
  167. package/lib/powered-by.d.ts +28 -0
  168. package/lib/powered-by.js +24 -0
  169. package/lib/pretty-json.d.ts +40 -0
  170. package/lib/pretty-json.js +39 -0
  171. package/lib/reg-exp-router-DC1R3qoY.js +363 -0
  172. package/lib/request-id.d.ts +45 -0
  173. package/lib/request-id.js +34 -0
  174. package/lib/request.d.ts +2 -0
  175. package/lib/request.js +323 -0
  176. package/lib/route.d.ts +78 -0
  177. package/lib/route.js +126 -0
  178. package/lib/router/linear-router.d.ts +11 -0
  179. package/lib/router/linear-router.js +96 -0
  180. package/lib/router/pattern-router.d.ts +11 -0
  181. package/lib/router/pattern-router.js +41 -0
  182. package/lib/router/reg-exp-router.d.ts +35 -0
  183. package/lib/router/reg-exp-router.js +2 -0
  184. package/lib/router/smart-router.d.ts +15 -0
  185. package/lib/router/smart-router.js +2 -0
  186. package/lib/router/trie-router.d.ts +11 -0
  187. package/lib/router/trie-router.js +2 -0
  188. package/lib/router-CvUxUTOq.d.ts +99 -0
  189. package/lib/router.d.ts +2 -0
  190. package/lib/router.js +35 -0
  191. package/lib/schema-validator.d.ts +28 -0
  192. package/lib/schema-validator.js +22 -0
  193. package/lib/secure-headers.d.ts +125 -0
  194. package/lib/secure-headers.js +163 -0
  195. package/lib/serve-static-Dw_m6KxR.js +213 -0
  196. package/lib/serve-static.d.ts +31 -0
  197. package/lib/serve-static.js +77 -0
  198. package/lib/smart-router-C5CZ5XSM.js +49 -0
  199. package/lib/stream-CPdqZ0Fp.d.ts +34 -0
  200. package/lib/streaming-DHST3Scg.js +96 -0
  201. package/lib/streaming.d.ts +23 -0
  202. package/lib/streaming.js +2 -0
  203. package/lib/testing.d.ts +10 -0
  204. package/lib/testing.js +17 -0
  205. package/lib/timeout.d.ts +30 -0
  206. package/lib/timeout.js +42 -0
  207. package/lib/timing.d.ts +130 -0
  208. package/lib/timing.js +183 -0
  209. package/lib/trailing-slash.d.ts +91 -0
  210. package/lib/trailing-slash.js +85 -0
  211. package/lib/trie-router-CfFbapzL.js +146 -0
  212. package/lib/types-CDO6I3B0.d.ts +40 -0
  213. package/lib/types-CHesD1KG.d.ts +195 -0
  214. package/lib/types-CwrQjlaM.d.ts +105 -0
  215. package/lib/types-DR95J00T.d.ts +29 -0
  216. package/lib/types.d.ts +2 -0
  217. package/lib/types.js +4 -0
  218. package/lib/utils/accept.d.ts +9 -0
  219. package/lib/utils/accept.js +193 -0
  220. package/lib/utils/basic-auth.d.ts +8 -0
  221. package/lib/utils/basic-auth.js +20 -0
  222. package/lib/utils/body.d.ts +2 -0
  223. package/lib/utils/body.js +94 -0
  224. package/lib/utils/buffer.d.ts +19 -0
  225. package/lib/utils/buffer.js +51 -0
  226. package/lib/utils/color.d.ts +24 -0
  227. package/lib/utils/color.js +37 -0
  228. package/lib/utils/compress.d.ts +11 -0
  229. package/lib/utils/compress.js +11 -0
  230. package/lib/utils/concurrent.d.ts +17 -0
  231. package/lib/utils/concurrent.js +30 -0
  232. package/lib/utils/constants.d.ts +7 -0
  233. package/lib/utils/constants.js +7 -0
  234. package/lib/utils/cookie.d.ts +2 -0
  235. package/lib/utils/cookie.js +125 -0
  236. package/lib/utils/crypto.d.ts +14 -0
  237. package/lib/utils/crypto.js +34 -0
  238. package/lib/utils/encode.d.ts +11 -0
  239. package/lib/utils/encode.js +33 -0
  240. package/lib/utils/filepath.d.ts +14 -0
  241. package/lib/utils/filepath.js +25 -0
  242. package/lib/utils/handler.d.ts +9 -0
  243. package/lib/utils/handler.js +12 -0
  244. package/lib/utils/headers.d.ts +2 -0
  245. package/lib/utils/headers.js +1 -0
  246. package/lib/utils/html.d.ts +46 -0
  247. package/lib/utils/html.js +103 -0
  248. package/lib/utils/http-status.d.ts +2 -0
  249. package/lib/utils/http-status.js +1 -0
  250. package/lib/utils/ipaddr.d.ts +56 -0
  251. package/lib/utils/ipaddr.js +238 -0
  252. package/lib/utils/jwt.d.ts +24 -0
  253. package/lib/utils/jwt.js +2 -0
  254. package/lib/utils/mime.d.ts +2 -0
  255. package/lib/utils/mime.js +77 -0
  256. package/lib/utils/stream.d.ts +2 -0
  257. package/lib/utils/stream.js +88 -0
  258. package/lib/utils/types.d.ts +2 -0
  259. package/lib/utils/types.js +1 -0
  260. package/lib/utils/url.d.ts +46 -0
  261. package/lib/utils/url.js +197 -0
  262. package/lib/utils-dw8lxqjL.js +4 -0
  263. package/lib/validator-D84mq-dO.js +65 -0
  264. package/lib/validator.d.ts +42 -0
  265. package/lib/validator.js +2 -0
  266. package/lib/ws.d.ts +2 -0
  267. package/lib/ws.js +53 -0
  268. package/package.json +312 -14
  269. package/plugins/acryl-inspect/src/service.ts +2 -2
  270. package/plugins/acryl-inspect/tests/service.spec.ts +3 -3
  271. package/plugins/acryl-inspect/upstream.json +2 -2
  272. package/plugins/acryl-node-server/tests/adapter/app.ts +2 -2
  273. package/plugins/acryl-node-server/tests/adapter/assets/static/acryl.html +1 -1
  274. package/plugins/acryl-node-server/tests/adapter/assets/static/index.html +1 -1
  275. package/plugins/acryl-node-server/tests/adapter/conninfo.test.ts +2 -2
  276. package/plugins/acryl-node-server/tests/adapter/content-length.test.ts +4 -4
  277. package/plugins/acryl-node-server/tests/adapter/early-hints.test.ts +5 -5
  278. package/plugins/acryl-node-server/tests/adapter/request-client-disconnect.test.ts +2 -2
  279. package/plugins/acryl-node-server/tests/adapter/serve-static.test.ts +20 -20
  280. package/plugins/acryl-node-server/tests/adapter/server-socket.test.ts +2 -2
  281. package/plugins/acryl-node-server/tests/adapter/server.test.ts +50 -50
  282. package/plugins/acryl-node-server/tests/adapter/utils/response.test.ts +4 -4
  283. package/plugins/acryl-node-server/tests/adapter/websocket.test.ts +9 -9
  284. package/plugins/acryl-node-server/tests/server.spec.ts +6 -6
  285. package/plugins/acryl-node-server/upstream.json +2 -2
  286. package/plugins/acryl-router/src/client.ts +1 -1
  287. package/plugins/acryl-router/src/connection.ts +2 -2
  288. package/plugins/acryl-router/src/core/app-base.ts +29 -29
  289. package/plugins/acryl-router/src/core/app.test.ts +175 -175
  290. package/plugins/acryl-router/src/core/app.ts +8 -8
  291. package/plugins/acryl-router/src/core/client/client.test.ts +76 -76
  292. package/plugins/acryl-router/src/core/client/client.ts +2 -2
  293. package/plugins/acryl-router/src/core/client/fetch-result-please.ts +1 -1
  294. package/plugins/acryl-router/src/core/client/index.ts +1 -1
  295. package/plugins/acryl-router/src/core/client/types.test.ts +6 -6
  296. package/plugins/acryl-router/src/core/client/types.ts +16 -16
  297. package/plugins/acryl-router/src/core/client/utils.test.ts +2 -2
  298. package/plugins/acryl-router/src/core/context.test.ts +4 -4
  299. package/plugins/acryl-router/src/core/context.ts +6 -6
  300. package/plugins/acryl-router/src/core/helper/accepts/accepts.test.ts +3 -3
  301. package/plugins/acryl-router/src/core/helper/accepts/index.ts +1 -1
  302. package/plugins/acryl-router/src/core/helper/adapter/index.test.ts +6 -6
  303. package/plugins/acryl-router/src/core/helper/adapter/index.ts +1 -1
  304. package/plugins/acryl-router/src/core/helper/conninfo/index.ts +1 -1
  305. package/plugins/acryl-router/src/core/helper/cookie/index.test.ts +8 -8
  306. package/plugins/acryl-router/src/core/helper/cookie/index.ts +1 -1
  307. package/plugins/acryl-router/src/core/helper/factory/index.test.ts +9 -9
  308. package/plugins/acryl-router/src/core/helper/factory/index.ts +10 -10
  309. package/plugins/acryl-router/src/core/helper/html/index.test.ts +4 -4
  310. package/plugins/acryl-router/src/core/helper/html/index.ts +1 -1
  311. package/plugins/acryl-router/src/core/helper/route/index.test.ts +7 -7
  312. package/plugins/acryl-router/src/core/helper/route/index.ts +8 -8
  313. package/plugins/acryl-router/src/core/helper/streaming/index.ts +1 -1
  314. package/plugins/acryl-router/src/core/helper/testing/index.test.ts +6 -6
  315. package/plugins/acryl-router/src/core/helper/testing/index.ts +4 -4
  316. package/plugins/acryl-router/src/core/helper/websocket/index.ts +2 -1
  317. package/plugins/acryl-router/src/core/http-exception.ts +1 -1
  318. package/plugins/acryl-router/src/core/index.ts +9 -9
  319. package/plugins/acryl-router/src/core/middleware/basic-auth/index.test.ts +6 -6
  320. package/plugins/acryl-router/src/core/middleware/basic-auth/index.ts +3 -3
  321. package/plugins/acryl-router/src/core/middleware/bearer-auth/index.test.ts +5 -5
  322. package/plugins/acryl-router/src/core/middleware/bearer-auth/index.ts +3 -3
  323. package/plugins/acryl-router/src/core/middleware/body-limit/index.test.ts +6 -6
  324. package/plugins/acryl-router/src/core/middleware/body-limit/index.ts +3 -3
  325. package/plugins/acryl-router/src/core/middleware/combine/index.test.ts +9 -9
  326. package/plugins/acryl-router/src/core/middleware/combine/index.ts +7 -7
  327. package/plugins/acryl-router/src/core/middleware/compress/index.test.ts +9 -9
  328. package/plugins/acryl-router/src/core/middleware/compress/index.ts +3 -3
  329. package/plugins/acryl-router/src/core/middleware/context-storage/index.test.ts +5 -5
  330. package/plugins/acryl-router/src/core/middleware/context-storage/index.ts +4 -4
  331. package/plugins/acryl-router/src/core/middleware/cors/index.test.ts +7 -7
  332. package/plugins/acryl-router/src/core/middleware/cors/index.ts +3 -3
  333. package/plugins/acryl-router/src/core/middleware/csrf/index.test.ts +10 -10
  334. package/plugins/acryl-router/src/core/middleware/csrf/index.ts +3 -3
  335. package/plugins/acryl-router/src/core/middleware/etag/index.test.ts +42 -42
  336. package/plugins/acryl-router/src/core/middleware/etag/index.ts +4 -4
  337. package/plugins/acryl-router/src/core/middleware/ip-restriction/index.test.ts +4 -4
  338. package/plugins/acryl-router/src/core/middleware/ip-restriction/index.ts +6 -6
  339. package/plugins/acryl-router/src/core/middleware/jwk/index.test.ts +16 -16
  340. package/plugins/acryl-router/src/core/middleware/jwk/jwk.ts +7 -6
  341. package/plugins/acryl-router/src/core/middleware/jwt/index.test.ts +16 -16
  342. package/plugins/acryl-router/src/core/middleware/jwt/jwt.ts +4 -3
  343. package/plugins/acryl-router/src/core/middleware/language/index.test.ts +3 -3
  344. package/plugins/acryl-router/src/core/middleware/language/language.ts +3 -3
  345. package/plugins/acryl-router/src/core/middleware/logger/index.test.ts +5 -5
  346. package/plugins/acryl-router/src/core/middleware/logger/index.ts +4 -4
  347. package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.test.ts +24 -24
  348. package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.ts +8 -8
  349. package/plugins/acryl-router/src/core/middleware/method-override/index.test.ts +5 -5
  350. package/plugins/acryl-router/src/core/middleware/method-override/index.ts +6 -6
  351. package/plugins/acryl-router/src/core/middleware/powered-by/index.test.ts +4 -4
  352. package/plugins/acryl-router/src/core/middleware/powered-by/index.ts +6 -6
  353. package/plugins/acryl-router/src/core/middleware/pretty-json/index.test.ts +30 -30
  354. package/plugins/acryl-router/src/core/middleware/pretty-json/index.ts +4 -4
  355. package/plugins/acryl-router/src/core/middleware/request-id/index.test.ts +15 -15
  356. package/plugins/acryl-router/src/core/middleware/request-id/request-id.ts +3 -3
  357. package/plugins/acryl-router/src/core/middleware/secure-headers/index.test.ts +35 -35
  358. package/plugins/acryl-router/src/core/middleware/secure-headers/secure-headers.ts +3 -3
  359. package/plugins/acryl-router/src/core/middleware/serve-static/index.test.ts +23 -23
  360. package/plugins/acryl-router/src/core/middleware/serve-static/index.ts +1 -1
  361. package/plugins/acryl-router/src/core/middleware/timeout/index.test.ts +2 -2
  362. package/plugins/acryl-router/src/core/middleware/timeout/index.ts +3 -3
  363. package/plugins/acryl-router/src/core/middleware/timing/index.test.ts +14 -14
  364. package/plugins/acryl-router/src/core/middleware/timing/timing.ts +3 -3
  365. package/plugins/acryl-router/src/core/middleware/trailing-slash/index.test.ts +7 -7
  366. package/plugins/acryl-router/src/core/middleware/trailing-slash/index.ts +7 -7
  367. package/plugins/acryl-router/src/core/request.test.ts +42 -42
  368. package/plugins/acryl-router/src/core/request.ts +6 -6
  369. package/plugins/acryl-router/src/core/router/linear-router/index.ts +1 -1
  370. package/plugins/acryl-router/src/core/router/pattern-router/index.ts +1 -1
  371. package/plugins/acryl-router/src/core/router/reg-exp-router/index.ts +1 -1
  372. package/plugins/acryl-router/src/core/router/smart-router/index.ts +1 -1
  373. package/plugins/acryl-router/src/core/router/trie-router/index.ts +1 -1
  374. package/plugins/acryl-router/src/core/types.test.ts +115 -115
  375. package/plugins/acryl-router/src/core/types.ts +72 -72
  376. package/plugins/acryl-router/src/core/utils/body.ts +8 -8
  377. package/plugins/acryl-router/src/core/utils/html.ts +1 -1
  378. package/plugins/acryl-router/src/core/utils/jwt/jws.ts +3 -3
  379. package/plugins/acryl-router/src/core/utils/jwt/jwt.test.ts +2 -2
  380. package/plugins/acryl-router/src/core/utils/jwt/jwt.ts +3 -3
  381. package/plugins/acryl-router/src/core/utils/jwt/types.ts +1 -1
  382. package/plugins/acryl-router/src/core/utils/types.ts +42 -0
  383. package/plugins/acryl-router/src/core/utils/url.test.ts +2 -2
  384. package/plugins/acryl-router/src/core/validator/index.ts +1 -1
  385. package/plugins/acryl-router/src/core/validator/validator.test.ts +28 -28
  386. package/plugins/acryl-router/src/deprecated.ts +15 -0
  387. package/plugins/acryl-router/src/index.ts +3 -2
  388. package/plugins/acryl-router/src/service.ts +10 -10
  389. package/plugins/acryl-router/tests/docs-examples.spec.ts +11 -11
  390. package/plugins/acryl-router/tests/live-install.spec.ts +2 -2
  391. package/plugins/acryl-router/tests/loader.spec.ts +3 -3
  392. package/plugins/acryl-router/tests/loopback-only.spec.ts +4 -4
  393. package/plugins/acryl-router/tests/no-dom/consumer.ts +11 -0
  394. package/plugins/acryl-router/tests/no-dom/tsconfig.json +13 -0
  395. package/plugins/acryl-router/tests/service.spec.ts +23 -23
  396. package/plugins/acryl-router/upstream.json +3 -3
  397. package/plugins/acryl-router-http/tests/adapter.spec.ts +3 -3
  398. package/plugins/acryl-router-http/tests/surfaces.spec.ts +2 -2
  399. package/plugins/acryl-router-http/upstream.json +2 -2
  400. package/plugins/acryl-state/src/service.ts +2 -2
  401. package/plugins/acryl-state/upstream.json +2 -2
  402. package/plugins/builder/script.ts +2 -2
  403. package/plugins/extensions/resolve.ts +70 -10
  404. package/plugins/openai/prompt.ts +5 -5
  405. package/shared/AGENTS.core.md +16 -9
  406. package/templates/agent/src/routes.ts +2 -2
  407. package/templates/agent/test/model.test.ts +2 -2
  408. package/templates/agent/tsconfig.json +40 -0
  409. package/templates/blank/src/routes.ts +2 -2
  410. package/templates/todo/src/todo.ts +2 -2
  411. package/templates/todo/upstream.json +2 -2
  412. package/docs/framework/context.md +0 -129
  413. package/docs/framework/helpers.md +0 -118
  414. package/docs/framework/middleware.md +0 -154
  415. package/docs/framework/request.md +0 -106
  416. /package/docs/framework/{plugin-lifecycle.md → cordis/plugin-lifecycle.md} +0 -0
@@ -1,9 +1,9 @@
1
1
  import { appendTrailingSlash, trimTrailingSlash } from './index.ts'
2
- import { App } from '../../app.ts'
2
+ import { Acryl } from '../../app.ts'
3
3
 
4
4
  describe('Resolve trailing slash', () => {
5
5
  describe('trimTrailingSlash middleware', () => {
6
- const app = new App({ strict: true })
6
+ const app = new Acryl({ strict: true })
7
7
  app.use('*', trimTrailingSlash())
8
8
 
9
9
  app.get('/', async (c) => {
@@ -88,7 +88,7 @@ describe('Resolve trailing slash', () => {
88
88
  })
89
89
 
90
90
  describe('trimTrailingSlash middleware with alwaysRedirect option', () => {
91
- const app = new App()
91
+ const app = new Acryl()
92
92
  app.use('*', trimTrailingSlash({ alwaysRedirect: true }))
93
93
 
94
94
  app.get('/', async (c) => {
@@ -155,7 +155,7 @@ describe('Resolve trailing slash', () => {
155
155
  })
156
156
 
157
157
  describe('appendTrailingSlash middleware', () => {
158
- const app = new App({ strict: true })
158
+ const app = new Acryl({ strict: true })
159
159
  app.use('*', appendTrailingSlash())
160
160
 
161
161
  app.get('/', async (c) => {
@@ -257,7 +257,7 @@ describe('Resolve trailing slash', () => {
257
257
 
258
258
  describe('appendTrailingSlash middleware with skip option', () => {
259
259
  const hasExtension = (path: string): boolean => /\.\w+$/.test(path.split('/').at(-1) ?? '')
260
- const app = new App({ strict: true })
260
+ const app = new Acryl({ strict: true })
261
261
  app.use('*', appendTrailingSlash({ skip: hasExtension }))
262
262
 
263
263
  app.get('/page/', (c) => c.text('ok'))
@@ -279,7 +279,7 @@ describe('Resolve trailing slash', () => {
279
279
 
280
280
  describe('appendTrailingSlash middleware with alwaysRedirect and skip options', () => {
281
281
  const hasExtension = (path: string): boolean => /\.\w+$/.test(path.split('/').at(-1) ?? '')
282
- const app = new App()
282
+ const app = new Acryl()
283
283
  app.use('*', appendTrailingSlash({ alwaysRedirect: true, skip: hasExtension }))
284
284
 
285
285
  app.get('/', (c) => c.text('ok'))
@@ -313,7 +313,7 @@ describe('Resolve trailing slash', () => {
313
313
  })
314
314
 
315
315
  describe('appendTrailingSlash middleware with alwaysRedirect option', () => {
316
- const app = new App()
316
+ const app = new Acryl()
317
317
  app.use('*', appendTrailingSlash({ alwaysRedirect: true }))
318
318
 
319
319
  app.get('/', async (c) => {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * Trailing Slash Middleware for App.
3
+ * Trailing Slash Middleware for Acryl.
4
4
  */
5
5
 
6
6
  import type { MiddlewareHandler } from '../../types.ts'
@@ -17,7 +17,7 @@ type TrimTrailingSlashOptions = {
17
17
  }
18
18
 
19
19
  /**
20
- * Trailing Slash Middleware for App.
20
+ * Trailing Slash Middleware for Acryl.
21
21
  *
22
22
  *
23
23
  * @param {TrimTrailingSlashOptions} options - The options for the middleware.
@@ -25,7 +25,7 @@ type TrimTrailingSlashOptions = {
25
25
  *
26
26
  * @example
27
27
  * ```ts
28
- * const app = new App()
28
+ * const app = new Acryl()
29
29
  *
30
30
  * app.use(trimTrailingSlash())
31
31
  * app.get('/about/me/', (c) => c.text('With Trailing Slash'))
@@ -34,7 +34,7 @@ type TrimTrailingSlashOptions = {
34
34
  * @example
35
35
  * ```ts
36
36
  * // With alwaysRedirect option for wildcard routes
37
- * const app = new App()
37
+ * const app = new Acryl()
38
38
  *
39
39
  * app.use(trimTrailingSlash({ alwaysRedirect: true }))
40
40
  * app.get('/my-path/*', (c) => c.text('Wildcard route'))
@@ -100,7 +100,7 @@ type AppendTrailingSlashOptions = {
100
100
  }
101
101
 
102
102
  /**
103
- * Append trailing slash middleware for App.
103
+ * Append trailing slash middleware for Acryl.
104
104
  * Append a trailing slash to the URL if it doesn't have one. For example, `/path/to/page` will be redirected to `/path/to/page/`.
105
105
  *
106
106
  *
@@ -109,7 +109,7 @@ type AppendTrailingSlashOptions = {
109
109
  *
110
110
  * @example
111
111
  * ```ts
112
- * const app = new App()
112
+ * const app = new Acryl()
113
113
  *
114
114
  * app.use(appendTrailingSlash())
115
115
  * ```
@@ -117,7 +117,7 @@ type AppendTrailingSlashOptions = {
117
117
  * @example
118
118
  * ```ts
119
119
  * // With alwaysRedirect option for wildcard routes
120
- * const app = new App()
120
+ * const app = new Acryl()
121
121
  *
122
122
  * app.use(appendTrailingSlash({ alwaysRedirect: true }))
123
123
  * app.get('/my-path/*', (c) => c.text('Wildcard route'))
@@ -1,5 +1,5 @@
1
1
  import { HTTPException } from './http-exception.ts'
2
- import { cloneRawRequest, AppRequest } from './request.ts'
2
+ import { cloneRawRequest, AcrylRequest } from './request.ts'
3
3
  import type { RouterRoute } from './types.ts'
4
4
 
5
5
  type RecursiveRecord<K extends string, T> = {
@@ -9,7 +9,7 @@ type RecursiveRecord<K extends string, T> = {
9
9
  describe('Query', () => {
10
10
  test('req.query() and req.queries()', () => {
11
11
  const rawRequest = new Request('http://localhost?page=2&tag=A&tag=B')
12
- const req = new AppRequest(rawRequest)
12
+ const req = new AcrylRequest(rawRequest)
13
13
 
14
14
  const page = req.query('page')
15
15
  expect(page).not.toBeUndefined()
@@ -28,7 +28,7 @@ describe('Query', () => {
28
28
 
29
29
  test('decode special chars', () => {
30
30
  const rawRequest = new Request('http://localhost?mail=framework%40acryl.dev&tag=%401&tag=%402')
31
- const req = new AppRequest(rawRequest)
31
+ const req = new AcrylRequest(rawRequest)
32
32
 
33
33
  const mail = req.query('mail')
34
34
  expect(mail).toBe('framework@acryl.dev')
@@ -40,7 +40,7 @@ describe('Query', () => {
40
40
 
41
41
  describe('Param', () => {
42
42
  test('req.param() on an unmatched request', () => {
43
- const req = new AppRequest(new Request('http://localhost/'))
43
+ const req = new AcrylRequest(new Request('http://localhost/'))
44
44
 
45
45
  expect(req.param('id')).toBeUndefined()
46
46
  expect(req.param()).toEqual({})
@@ -49,7 +49,7 @@ describe('Param', () => {
49
49
  test('req.param() should return empty string for zero-length match', () => {
50
50
  // Simulate a route like '/:remaining{.*}' matching '/'
51
51
  const rawRequest = new Request('http://localhost/')
52
- const req = new AppRequest<'/:remaining{.*}'>(rawRequest, '/', [
52
+ const req = new AcrylRequest<'/:remaining{.*}'>(rawRequest, '/', [
53
53
  [[[undefined, {} as RouterRoute], { remaining: 0 }]],
54
54
  [''], // ParamStash with empty string for remaining
55
55
  ])
@@ -63,7 +63,7 @@ describe('Param', () => {
63
63
  })
64
64
  test('req.param() with ParamStash', () => {
65
65
  const rawRequest = new Request('http://localhost?page=2&tag=A&tag=B')
66
- const req = new AppRequest<'/:id/:name'>(rawRequest, '/123/key', [
66
+ const req = new AcrylRequest<'/:id/:name'>(rawRequest, '/123/key', [
67
67
  [
68
68
  [[undefined, {} as RouterRoute], { id: 0 }],
69
69
  [[undefined, {} as RouterRoute], { id: 0, name: 1 }],
@@ -81,7 +81,7 @@ describe('Param', () => {
81
81
 
82
82
  test('req.param() without ParamStash', () => {
83
83
  const rawRequest = new Request('http://localhost?page=2&tag=A&tag=B')
84
- const req = new AppRequest<'/:id/:name'>(rawRequest, '/123/key', [
84
+ const req = new AcrylRequest<'/:id/:name'>(rawRequest, '/123/key', [
85
85
  [
86
86
  [[undefined, {} as RouterRoute], { id: '123' }],
87
87
  [[undefined, {} as RouterRoute], { id: '456', name: 'key' }],
@@ -98,7 +98,7 @@ describe('Param', () => {
98
98
 
99
99
  test('req.param() returns empty string for missing param', () => {
100
100
  const rawRequest = new Request('http://localhost')
101
- const req = new AppRequest<'/:remaining'>(rawRequest, '/', [
101
+ const req = new AcrylRequest<'/:remaining'>(rawRequest, '/', [
102
102
  [[[undefined, {} as RouterRoute], { remaining: 0 }]],
103
103
  [''],
104
104
  ])
@@ -107,7 +107,7 @@ describe('Param', () => {
107
107
 
108
108
  test('req.param() without argument returns object with empty string for missing param', () => {
109
109
  const rawRequest = new Request('http://localhost')
110
- const req = new AppRequest<'/:remaining'>(rawRequest, '/', [
110
+ const req = new AcrylRequest<'/:remaining'>(rawRequest, '/', [
111
111
  [[[undefined, {} as RouterRoute], { remaining: 0 }]],
112
112
  [''],
113
113
  ])
@@ -119,7 +119,7 @@ describe('Param', () => {
119
119
  // When middleware uses Context without an explicit path type, P defaults to any.
120
120
  // param(key) should return string | undefined, not string.
121
121
  const rawRequest = new Request('http://localhost/users/123')
122
- const req = new AppRequest<any>(rawRequest, '/users/123', [
122
+ const req = new AcrylRequest<any>(rawRequest, '/users/123', [
123
123
  [[[undefined, {} as RouterRoute], { id: '123' }]],
124
124
  ])
125
125
  expectTypeOf(req.param('id')).toEqualTypeOf<string | undefined>()
@@ -128,7 +128,7 @@ describe('Param', () => {
128
128
  it('param() returns string when P is a known route string', () => {
129
129
  // When P is a concrete route, named params should still return string (non-optional).
130
130
  const rawRequest = new Request('http://localhost/123')
131
- const req = new AppRequest<'/:id'>(rawRequest, '/123', [
131
+ const req = new AcrylRequest<'/:id'>(rawRequest, '/123', [
132
132
  [[[undefined, {} as RouterRoute], { id: '123' }]],
133
133
  ])
134
134
  expectTypeOf(req.param('id')).toEqualTypeOf<string>()
@@ -141,7 +141,7 @@ describe('matchedRoutes', () => {
141
141
  const handlerA = () => {}
142
142
  const handlerB = () => {}
143
143
  const rawRequest = new Request('http://localhost?page=2&tag=A&tag=B')
144
- const req = new AppRequest<'/:id/:name'>(rawRequest, '/123/key', [
144
+ const req = new AcrylRequest<'/:id/:name'>(rawRequest, '/123/key', [
145
145
  [
146
146
  [
147
147
  [handlerA, { basePath: '/', handler: handlerA, method: 'GET', path: '/:id' }],
@@ -166,7 +166,7 @@ describe('routePath', () => {
166
166
  const handlerA = () => {}
167
167
  const handlerB = () => {}
168
168
  const rawRequest = new Request('http://localhost?page=2&tag=A&tag=B')
169
- const req = new AppRequest<'/:id/:name'>(rawRequest, '/123/key', [
169
+ const req = new AcrylRequest<'/:id/:name'>(rawRequest, '/123/key', [
170
170
  [
171
171
  [
172
172
  [handlerA, { basePath: '/', handler: handlerA, method: 'GET', path: '/:id' }],
@@ -198,14 +198,14 @@ describe('req.addValidatedData() and req.data()', () => {
198
198
  }
199
199
 
200
200
  test('add data - json', () => {
201
- const req = new AppRequest<'/', { json: typeof payload }>(rawRequest)
201
+ const req = new AcrylRequest<'/', { json: typeof payload }>(rawRequest)
202
202
  req.addValidatedData('json', payload)
203
203
  const data = req.valid('json')
204
204
  expect(data).toEqual(payload)
205
205
  })
206
206
 
207
207
  test('replace data - json', () => {
208
- const req = new AppRequest<'/', { json: typeof payload }>(rawRequest)
208
+ const req = new AcrylRequest<'/', { json: typeof payload }>(rawRequest)
209
209
  req.addValidatedData('json', payload)
210
210
  req.addValidatedData('json', {
211
211
  tag: ['sport', 'music'],
@@ -225,13 +225,13 @@ describe('req.addValidatedData() and req.data()', () => {
225
225
 
226
226
  describe('headers', () => {
227
227
  test('empty string is a valid header value', () => {
228
- const req = new AppRequest(new Request('http://localhost', { headers: { foo: '' } }))
228
+ const req = new AcrylRequest(new Request('http://localhost', { headers: { foo: '' } }))
229
229
  const foo = req.header('foo')
230
230
  expect(foo).toEqual('')
231
231
  })
232
232
 
233
233
  test('Keys of the arguments for req.header() are not case-sensitive', () => {
234
- const req = new AppRequest(
234
+ const req = new AcrylRequest(
235
235
  new Request('http://localhost', {
236
236
  headers: {
237
237
  'Content-Type': 'application/json',
@@ -245,7 +245,7 @@ describe('headers', () => {
245
245
  })
246
246
 
247
247
  test('req.header() is not affected by a `__proto__` header name', () => {
248
- const req = new AppRequest(new Request('http://localhost', { headers: { __proto__: 'evil' } }))
248
+ const req = new AcrylRequest(new Request('http://localhost', { headers: { __proto__: 'evil' } }))
249
249
  const headers = req.header()
250
250
  expect(Object.getPrototypeOf(headers)).toBeNull()
251
251
  })
@@ -257,7 +257,7 @@ const buffer = new TextEncoder().encode('{"foo":"bar"}').buffer
257
257
 
258
258
  describe('Body methods with caching', () => {
259
259
  test('req.text()', async () => {
260
- const req = new AppRequest(
260
+ const req = new AcrylRequest(
261
261
  new Request('http://localhost', {
262
262
  method: 'POST',
263
263
  body: text,
@@ -275,7 +275,7 @@ describe('Body methods with caching', () => {
275
275
  })
276
276
 
277
277
  test('req.json()', async () => {
278
- const req = new AppRequest(
278
+ const req = new AcrylRequest(
279
279
  new Request('http://localhost', {
280
280
  method: 'POST',
281
281
  body: '{"foo":"bar"}',
@@ -294,7 +294,7 @@ describe('Body methods with caching', () => {
294
294
 
295
295
  test('req.json() should keep the content as is', async () => {
296
296
  const text = '{ "foo" : "bar" }'
297
- const req = new AppRequest(
297
+ const req = new AcrylRequest(
298
298
  new Request('http://localhost', {
299
299
  method: 'POST',
300
300
  body: text,
@@ -306,7 +306,7 @@ describe('Body methods with caching', () => {
306
306
 
307
307
  test('req.arrayBuffer()', async () => {
308
308
  const buffer = new TextEncoder().encode('{"foo":"bar"}').buffer
309
- const req = new AppRequest(
309
+ const req = new AcrylRequest(
310
310
  new Request('http://localhost', {
311
311
  method: 'POST',
312
312
  body: buffer,
@@ -325,7 +325,7 @@ describe('Body methods with caching', () => {
325
325
 
326
326
  test('req.bytes()', async () => {
327
327
  const bytes = new TextEncoder().encode('{"foo":"bar"}')
328
- const req = new AppRequest(
328
+ const req = new AcrylRequest(
329
329
  new Request('http://localhost', {
330
330
  method: 'POST',
331
331
  body: bytes,
@@ -348,7 +348,7 @@ describe('Body methods with caching', () => {
348
348
  const blob = new Blob(['{"foo":"bar"}'], {
349
349
  type: 'application/json',
350
350
  })
351
- const req = new AppRequest(
351
+ const req = new AcrylRequest(
352
352
  new Request('http://localhost', {
353
353
  method: 'POST',
354
354
  body: blob,
@@ -364,7 +364,7 @@ describe('Body methods with caching', () => {
364
364
  test('req.formData()', async () => {
365
365
  const data = new FormData()
366
366
  data.append('foo', 'bar')
367
- const req = new AppRequest(
367
+ const req = new AcrylRequest(
368
368
  new Request('http://localhost', {
369
369
  method: 'POST',
370
370
  body: data,
@@ -383,7 +383,7 @@ describe('Body methods with caching', () => {
383
383
 
384
384
  for (const first of ['text', 'arrayBuffer', 'bytes', 'blob'] as const) {
385
385
  test(`req.formData() after req.${first}()`, async () => {
386
- const req = new AppRequest(
386
+ const req = new AcrylRequest(
387
387
  new Request('http://localhost', {
388
388
  method: 'POST',
389
389
  headers: { 'Content-Type': urlencoded },
@@ -404,7 +404,7 @@ describe('Body methods with caching', () => {
404
404
  'Content-Disposition: form-data; name="foo"\r\n\r\n' +
405
405
  'bar\r\n' +
406
406
  `--${boundary}--\r\n`
407
- const req = new AppRequest(
407
+ const req = new AcrylRequest(
408
408
  new Request('http://localhost', {
409
409
  method: 'POST',
410
410
  headers: { 'Content-Type': `multipart/form-data; boundary=${boundary}` },
@@ -416,7 +416,7 @@ describe('Body methods with caching', () => {
416
416
  })
417
417
 
418
418
  test('the cached representation is still returned unchanged', async () => {
419
- const req = new AppRequest(
419
+ const req = new AcrylRequest(
420
420
  new Request('http://localhost', {
421
421
  method: 'POST',
422
422
  headers: { 'Content-Type': urlencoded },
@@ -433,7 +433,7 @@ describe('Body methods with caching', () => {
433
433
  it('should parse form data', async () => {
434
434
  const data = new FormData()
435
435
  data.append('foo', 'bar')
436
- const req = new AppRequest(
436
+ const req = new AcrylRequest(
437
437
  new Request('http://localhost', {
438
438
  method: 'POST',
439
439
  body: data,
@@ -450,7 +450,7 @@ describe('Body methods with caching', () => {
450
450
  const data = new FormData()
451
451
  data.append('foo', 'bar')
452
452
  data.append('file', new File(['hello'], 't.txt', { type: 'text/plain' }))
453
- const req = new AppRequest(
453
+ const req = new AcrylRequest(
454
454
  new Request('http://localhost', {
455
455
  method: 'POST',
456
456
  body: data,
@@ -464,7 +464,7 @@ describe('Body methods with caching', () => {
464
464
 
465
465
  describe('should not break body methods after parseBody() with non-form content-type', () => {
466
466
  const createReq = () =>
467
- new AppRequest(
467
+ new AcrylRequest(
468
468
  new Request('http://localhost', {
469
469
  method: 'POST',
470
470
  body: JSON.stringify({ event: 'push' }),
@@ -511,11 +511,11 @@ describe('Body methods with caching', () => {
511
511
  })
512
512
 
513
513
  describe('Return type', () => {
514
- let req: AppRequest
514
+ let req: AcrylRequest
515
515
  beforeEach(() => {
516
516
  const data = new FormData()
517
517
  data.append('foo', 'bar')
518
- req = new AppRequest(
518
+ req = new AcrylRequest(
519
519
  new Request('http://localhost', {
520
520
  method: 'POST',
521
521
  body: data,
@@ -559,7 +559,7 @@ describe('Body methods with caching', () => {
559
559
 
560
560
  describe('cloneRawRequest', () => {
561
561
  test('clones unconsumed request object', async () => {
562
- const req = new AppRequest(
562
+ const req = new AcrylRequest(
563
563
  new Request('http://localhost', {
564
564
  method: 'POST',
565
565
  headers: {
@@ -596,7 +596,7 @@ describe('cloneRawRequest', () => {
596
596
  })
597
597
 
598
598
  test('clones consumed request object', async () => {
599
- const req = new AppRequest(
599
+ const req = new AcrylRequest(
600
600
  new Request('http://localhost', {
601
601
  method: 'POST',
602
602
  headers: {
@@ -625,7 +625,7 @@ describe('cloneRawRequest', () => {
625
625
  const data = new FormData()
626
626
  data.append('foo', 'bar')
627
627
  data.append('file', new File(['hello'], 't.txt', { type: 'text/plain' }))
628
- const req = new AppRequest(
628
+ const req = new AcrylRequest(
629
629
  new Request('http://localhost', {
630
630
  method: 'POST',
631
631
  body: data,
@@ -655,7 +655,7 @@ describe('cloneRawRequest', () => {
655
655
  `--${boundary}--`,
656
656
  '',
657
657
  ].join('\r\n')
658
- const req = new AppRequest(
658
+ const req = new AcrylRequest(
659
659
  new Request('http://localhost', {
660
660
  method: 'POST',
661
661
  headers: {
@@ -674,7 +674,7 @@ describe('cloneRawRequest', () => {
674
674
  })
675
675
 
676
676
  test('clones request when external code populated bodyCache.json', async () => {
677
- const req = new AppRequest(
677
+ const req = new AcrylRequest(
678
678
  new Request('http://localhost', {
679
679
  method: 'POST',
680
680
  headers: {
@@ -692,7 +692,7 @@ describe('cloneRawRequest', () => {
692
692
  })
693
693
 
694
694
  test('clones GET request without body', async () => {
695
- const req = new AppRequest(
695
+ const req = new AcrylRequest(
696
696
  new Request('http://localhost', {
697
697
  method: 'GET',
698
698
  headers: {
@@ -716,8 +716,8 @@ describe('cloneRawRequest', () => {
716
716
  expect(req.raw, 'cloned request should contain the same properties').toMatchObject(clonedReq)
717
717
  })
718
718
 
719
- test('clones request when raw body was consumed directly without AppRequest methods', async () => {
720
- const req = new AppRequest(
719
+ test('clones request when raw body was consumed directly without AcrylRequest methods', async () => {
720
+ const req = new AcrylRequest(
721
721
  new Request('http://localhost', {
722
722
  method: 'POST',
723
723
  headers: {
@@ -727,7 +727,7 @@ describe('cloneRawRequest', () => {
727
727
  })
728
728
  )
729
729
 
730
- // Consume the raw request body directly, bypassing AppRequest methods
730
+ // Consume the raw request body directly, bypassing AcrylRequest methods
731
731
  // This means bodyCache will be empty
732
732
  await req.raw.text()
733
733
 
@@ -31,7 +31,7 @@ type RequiredRequestInit = Required<Omit<RequestInit, OptionalRequestInitPropert
31
31
  [Key in OptionalRequestInitProperties]?: RequestInit[Key]
32
32
  }
33
33
 
34
- export class AppRequest<P extends string = '/', I extends Input['out'] = {}> {
34
+ export class AcrylRequest<P extends string = '/', I extends Input['out'] = {}> {
35
35
  /**
36
36
  * `.raw` can get the raw Request object.
37
37
  *
@@ -430,7 +430,7 @@ export class AppRequest<P extends string = '/', I extends Input['out'] = {}> {
430
430
  }
431
431
 
432
432
  /**
433
- * Clones a AppRequest's underlying raw Request object.
433
+ * Clones a AcrylRequest's underlying raw Request object.
434
434
  *
435
435
  * This utility handles both consumed and unconsumed request bodies:
436
436
  * - If the request body hasn't been consumed, it uses the native `clone()` method
@@ -440,10 +440,10 @@ export class AppRequest<P extends string = '/', I extends Input['out'] = {}> {
440
440
  * - Process the same request body multiple times
441
441
  * - Pass requests to external services after validation
442
442
  *
443
- * @param req - The AppRequest object to clone
443
+ * @param req - The AcrylRequest object to clone
444
444
  * @returns A Promise that resolves to a new Request object with the same properties
445
445
  * @throws {HTTPException} If the request body was consumed directly via `req.raw`
446
- * without using AppRequest methods (e.g., `req.json()`, `req.text()`), making it
446
+ * without using AcrylRequest methods (e.g., `req.json()`, `req.text()`), making it
447
447
  * impossible to reconstruct the body from cache
448
448
  *
449
449
  * @example
@@ -460,7 +460,7 @@ export class AppRequest<P extends string = '/', I extends Input['out'] = {}> {
460
460
  * )
461
461
  * ```
462
462
  */
463
- export const cloneRawRequest = async (req: AppRequest): Promise<Request> => {
463
+ export const cloneRawRequest = async (req: AcrylRequest): Promise<Request> => {
464
464
  if (!req.raw.bodyUsed) {
465
465
  return req.raw.clone()
466
466
  }
@@ -469,7 +469,7 @@ export const cloneRawRequest = async (req: AppRequest): Promise<Request> => {
469
469
  if (!cacheKey) {
470
470
  throw new HTTPException(500, {
471
471
  message:
472
- 'Cannot clone request: body was already consumed and not cached. Please use AppRequest methods (e.g., req.json(), req.text()) instead of consuming req.raw directly.',
472
+ '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.',
473
473
  })
474
474
  }
475
475
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * LinearRouter for App.
3
+ * LinearRouter for Acryl.
4
4
  */
5
5
 
6
6
  export { LinearRouter } from './router.ts'
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * PatternRouter for App.
3
+ * PatternRouter for Acryl.
4
4
  */
5
5
 
6
6
  export { PatternRouter } from './router.ts'
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * RegExpRouter for App.
3
+ * RegExpRouter for Acryl.
4
4
  */
5
5
 
6
6
  export { RegExpRouter } from './router.ts'
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * SmartRouter for App.
3
+ * SmartRouter for Acryl.
4
4
  */
5
5
 
6
6
  export { SmartRouter } from './router.ts'
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * TrieRouter for App.
3
+ * TrieRouter for Acryl.
4
4
  */
5
5
 
6
6
  export { TrieRouter } from './router.ts'