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,8 +1,8 @@
1
- import { App } from '../../app.ts'
1
+ import { Acryl } from '../../app.ts'
2
2
  import { cors } from './index.ts'
3
3
 
4
4
  describe('CORS by Middleware', () => {
5
- const app = new App()
5
+ const app = new Acryl()
6
6
 
7
7
  app.use('/api/*', cors())
8
8
 
@@ -278,7 +278,7 @@ describe('CORS by Middleware', () => {
278
278
  })
279
279
 
280
280
  it('Append "Origin" to Vary header on OPTIONS preflight, if response has some Vary header', async () => {
281
- const testApp = new App()
281
+ const testApp = new Acryl()
282
282
  testApp.use('/api/*', async (c, next) => {
283
283
  c.header('Vary', 'Accept-Encoding', { append: true })
284
284
  await next()
@@ -412,7 +412,7 @@ describe('CORS by Middleware', () => {
412
412
 
413
413
  it('Does not set allow methods when function returns an empty array', async () => {
414
414
  for (const allowMethods of [() => [], async () => []]) {
415
- const app = new App()
415
+ const app = new Acryl()
416
416
  app.use(cors({ allowMethods }))
417
417
 
418
418
  const res = await app.request('http://localhost/', { method: 'OPTIONS' })
@@ -481,7 +481,7 @@ describe('CORS by Middleware', () => {
481
481
  })
482
482
 
483
483
  it('Should not reflect an arbitrary Origin when credentials is true with default origin', async () => {
484
- const app = new App()
484
+ const app = new Acryl()
485
485
  app.use('*', cors({ credentials: true }))
486
486
  app.get('/api/me', (c) => c.json({ secret: 'private user data' }))
487
487
 
@@ -494,7 +494,7 @@ describe('CORS by Middleware', () => {
494
494
  })
495
495
 
496
496
  it('Preflight should not approve an arbitrary Origin when credentials is true with default origin', async () => {
497
- const app = new App()
497
+ const app = new Acryl()
498
498
  app.use('*', cors({ credentials: true }))
499
499
  app.delete('/api/account', (c) => c.json({ deleted: true }))
500
500
 
@@ -513,7 +513,7 @@ describe('CORS by Middleware', () => {
513
513
  })
514
514
 
515
515
  it('Options without origin fall back to wildcard default', async () => {
516
- const subApp = new App()
516
+ const subApp = new Acryl()
517
517
  subApp.use('/api/*', cors({ allowMethods: ['GET', 'POST'] }))
518
518
  subApp.get('/api/abc', (c) => c.json({ ok: true }))
519
519
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * CORS Middleware for App.
3
+ * CORS Middleware for Acryl.
4
4
  */
5
5
 
6
6
  import type { Context } from '../../context.ts'
@@ -22,7 +22,7 @@ type CORSOptions = {
22
22
  }
23
23
 
24
24
  /**
25
- * CORS Middleware for App.
25
+ * CORS Middleware for Acryl.
26
26
  *
27
27
  *
28
28
  * @param {CORSOptions} [options] - The options for the CORS middleware.
@@ -36,7 +36,7 @@ type CORSOptions = {
36
36
  *
37
37
  * @example
38
38
  * ```ts
39
- * const app = new App()
39
+ * const app = new Acryl()
40
40
  *
41
41
  * app.use('/api/*', cors())
42
42
  * app.use(
@@ -1,5 +1,5 @@
1
1
  import type { Context } from '../../context.ts'
2
- import { App } from '../../app.ts'
2
+ import { Acryl } from '../../app.ts'
3
3
  import { csrf } from './index.ts'
4
4
 
5
5
  const simplePostHandler = vi.fn(async (c: Context) => {
@@ -29,7 +29,7 @@ describe('CSRF by Middleware', () => {
29
29
  })
30
30
 
31
31
  describe('simple usage', () => {
32
- const app = new App()
32
+ const app = new Acryl()
33
33
 
34
34
  app.use('*', csrf())
35
35
  app.get('/form', (c) => c.html('<form></form>'))
@@ -230,7 +230,7 @@ describe('CSRF by Middleware', () => {
230
230
 
231
231
  describe('with origin option', () => {
232
232
  describe('string', () => {
233
- const app = new App()
233
+ const app = new Acryl()
234
234
 
235
235
  app.use(
236
236
  '*',
@@ -259,7 +259,7 @@ describe('CSRF by Middleware', () => {
259
259
  })
260
260
 
261
261
  describe('string[]', () => {
262
- const app = new App()
262
+ const app = new Acryl()
263
263
 
264
264
  app.use(
265
265
  '*',
@@ -294,7 +294,7 @@ describe('CSRF by Middleware', () => {
294
294
  })
295
295
 
296
296
  describe('IsAllowedOriginHandler', () => {
297
- const app = new App()
297
+ const app = new Acryl()
298
298
 
299
299
  app.use(
300
300
  '*',
@@ -336,7 +336,7 @@ describe('CSRF by Middleware', () => {
336
336
  })
337
337
 
338
338
  describe('async IsAllowedOriginHandler', () => {
339
- const app = new App()
339
+ const app = new Acryl()
340
340
 
341
341
  app.use(
342
342
  '*',
@@ -383,7 +383,7 @@ describe('CSRF by Middleware', () => {
383
383
 
384
384
  describe('with secFetchSite option', () => {
385
385
  describe('string', () => {
386
- const app = new App()
386
+ const app = new Acryl()
387
387
  app.use('*', csrf({ secFetchSite: 'same-origin' }))
388
388
  app.post('/form', simplePostHandler)
389
389
 
@@ -413,7 +413,7 @@ describe('CSRF by Middleware', () => {
413
413
  })
414
414
 
415
415
  describe('string[]', () => {
416
- const app = new App()
416
+ const app = new Acryl()
417
417
  app.use('*', csrf({ secFetchSite: ['same-origin', 'none'] }))
418
418
  app.post('/form', simplePostHandler)
419
419
 
@@ -443,7 +443,7 @@ describe('CSRF by Middleware', () => {
443
443
  })
444
444
 
445
445
  describe('IsAllowedSecFetchSiteHandler', () => {
446
- const app = new App()
446
+ const app = new Acryl()
447
447
  app.use(
448
448
  '*',
449
449
  csrf({
@@ -487,7 +487,7 @@ describe('CSRF by Middleware', () => {
487
487
  })
488
488
 
489
489
  describe('async IsAllowedSecFetchSiteHandler', () => {
490
- const app = new App()
490
+ const app = new Acryl()
491
491
  app.use(
492
492
  '*',
493
493
  csrf({
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * CSRF Protection Middleware for App.
3
+ * CSRF Protection Middleware for Acryl.
4
4
  */
5
5
 
6
6
  import type { Context } from '../../context.ts'
@@ -30,7 +30,7 @@ const isRequestedByFormElementRe =
30
30
  /^\b(application\/x-www-form-urlencoded|multipart\/form-data|text\/plain)\b/i
31
31
 
32
32
  /**
33
- * CSRF Protection Middleware for App.
33
+ * CSRF Protection Middleware for Acryl.
34
34
  *
35
35
  * Protects against Cross-Site Request Forgery attacks by validating request origins
36
36
  * and sec-fetch-site headers. The request is allowed if either validation passes.
@@ -53,7 +53,7 @@ const isRequestedByFormElementRe =
53
53
  *
54
54
  * @example
55
55
  * ```ts
56
- * const app = new App()
56
+ * const app = new Acryl()
57
57
  *
58
58
  * // Default: both origin and sec-fetch-site validation
59
59
  * app.use('*', csrf())
@@ -1,5 +1,5 @@
1
1
  import { RETAINED_304_HEADERS, etag } from './index.ts'
2
- import { App } from '../../app.ts'
2
+ import { Acryl } from '../../app.ts'
3
3
 
4
4
  const createPatternedBody = (length: number) => {
5
5
  const body = new Uint8Array(length)
@@ -11,25 +11,25 @@ const createPatternedBody = (length: number) => {
11
11
 
12
12
  describe('Etag Middleware', () => {
13
13
  it('Should return etag header', async () => {
14
- const app = new App()
14
+ const app = new Acryl()
15
15
  app.use('/etag/*', etag())
16
16
  app.get('/etag/abc', (c) => {
17
- return c.text('App is hot')
17
+ return c.text('Acryl is hot')
18
18
  })
19
19
  app.get('/etag/def', (c) => {
20
- return c.json({ message: 'App is hot' })
20
+ return c.json({ message: 'Acryl is hot' })
21
21
  })
22
22
  let res = await app.request('http://localhost/etag/abc')
23
23
  expect(res.headers.get('ETag')).not.toBeFalsy()
24
- expect(res.headers.get('ETag')).toBe('"7c6c452b40ba15d4748e0075f4e402b441c3ea15"')
24
+ expect(res.headers.get('ETag')).toBe('"ba73e68ded3fb25dd2a1c90023bada7880da6ab7"')
25
25
 
26
26
  res = await app.request('http://localhost/etag/def')
27
27
  expect(res.headers.get('ETag')).not.toBeFalsy()
28
- expect(res.headers.get('ETag')).toBe('"a6c237463eac08cd32a99f595cc2a7c87aecaadc"')
28
+ expect(res.headers.get('ETag')).toBe('"13ac584bb97a25fdb954fc1813d2f03f8f5e017c"')
29
29
  })
30
30
 
31
31
  it('Should return etag header with another algorithm', async () => {
32
- const app = new App()
32
+ const app = new Acryl()
33
33
  app.use(
34
34
  '/etag/*',
35
35
  etag({
@@ -43,26 +43,26 @@ describe('Etag Middleware', () => {
43
43
  })
44
44
  )
45
45
  app.get('/etag/abc', (c) => {
46
- return c.text('App is hot')
46
+ return c.text('Acryl is hot')
47
47
  })
48
48
  app.get('/etag/def', (c) => {
49
- return c.json({ message: 'App is hot' })
49
+ return c.json({ message: 'Acryl is hot' })
50
50
  })
51
51
  let res = await app.request('http://localhost/etag/abc')
52
52
  expect(res.headers.get('ETag')).not.toBeFalsy()
53
53
  expect(res.headers.get('ETag')).toBe(
54
- '"dc6a4486c5794ab001967920a901c34bde9f9485c77eccf142e13b446c6da381"'
54
+ '"07c00dd761cfbb8e0765274785818aa0a59629d41cd66034acbde90dafe85cf3"'
55
55
  )
56
56
 
57
57
  res = await app.request('http://localhost/etag/def')
58
58
  expect(res.headers.get('ETag')).not.toBeFalsy()
59
59
  expect(res.headers.get('ETag')).toBe(
60
- '"f467464463b028d082ec4327b42c87428502dd71740110d5e5b4e2fbcd8b366d"'
60
+ '"49c6a1aa5026288ec59011aa6b3df0af8efc3d7531af06150dc7f018979efff7"'
61
61
  )
62
62
  })
63
63
 
64
64
  it('Should return etag header - binary', async () => {
65
- const app = new App()
65
+ const app = new Acryl()
66
66
  app.use('/etag/*', etag())
67
67
  app.get('/etag', async (c) => {
68
68
  return c.body(new Uint8Array(1))
@@ -75,7 +75,7 @@ describe('Etag Middleware', () => {
75
75
  })
76
76
 
77
77
  it('Should not be the same etag - arrayBuffer', async () => {
78
- const app = new App()
78
+ const app = new Acryl()
79
79
  app.use('/etag/*', etag())
80
80
  app.get('/etag/ab1', (c) => {
81
81
  return c.body(new ArrayBuffer(1))
@@ -91,7 +91,7 @@ describe('Etag Middleware', () => {
91
91
  })
92
92
 
93
93
  it('Should not be the same etag - Uint8Array', async () => {
94
- const app = new App()
94
+ const app = new Acryl()
95
95
  app.use('/etag/*', etag())
96
96
  app.get('/etag/ui1', (c) => {
97
97
  return c.body(new Uint8Array([1, 2, 3]))
@@ -107,7 +107,7 @@ describe('Etag Middleware', () => {
107
107
  })
108
108
 
109
109
  it('Should not be the same etag - ReadableStream', async () => {
110
- const app = new App()
110
+ const app = new Acryl()
111
111
  app.use('/etag/*', etag())
112
112
  app.get('/etag/rs1', (c) => {
113
113
  return c.body(
@@ -139,7 +139,7 @@ describe('Etag Middleware', () => {
139
139
  })
140
140
 
141
141
  it('Should return the same etag regardless of ReadableStream chunk boundaries', async () => {
142
- const app = new App()
142
+ const app = new Acryl()
143
143
  app.use('/etag/*', etag())
144
144
  const body = createPatternedBody(1_000_000)
145
145
  app.get('/etag/rs1', (c) => {
@@ -173,7 +173,7 @@ describe('Etag Middleware', () => {
173
173
  })
174
174
 
175
175
  it('Should preserve the SHA-1 digest for bodies up to 256 KiB', async () => {
176
- const app = new App()
176
+ const app = new Acryl()
177
177
  app.use('/etag/*', etag())
178
178
  app.get('/etag', (c) => c.body(createPatternedBody(256 * 1024)))
179
179
 
@@ -182,7 +182,7 @@ describe('Etag Middleware', () => {
182
182
  })
183
183
 
184
184
  it('Should not return etag header when the stream is empty', async () => {
185
- const app = new App()
185
+ const app = new Acryl()
186
186
  app.use('/etag/*', etag())
187
187
  app.get('/etag/abc', (c) => {
188
188
  const stream = new ReadableStream({
@@ -198,7 +198,7 @@ describe('Etag Middleware', () => {
198
198
  })
199
199
 
200
200
  it('Should not return etag header when body is null', async () => {
201
- const app = new App()
201
+ const app = new Acryl()
202
202
  app.use('/etag/*', etag())
203
203
  app.get('/etag/abc', () => new Response(null, { status: 500 }))
204
204
  const res = await app.request('http://localhost/etag/abc')
@@ -207,22 +207,22 @@ describe('Etag Middleware', () => {
207
207
  })
208
208
 
209
209
  it('Should return etag header - weak', async () => {
210
- const app = new App()
210
+ const app = new Acryl()
211
211
  app.use('/etag/*', etag({ weak: true }))
212
212
  app.get('/etag/abc', (c) => {
213
- return c.text('App is hot')
213
+ return c.text('Acryl is hot')
214
214
  })
215
215
 
216
216
  const res = await app.request('http://localhost/etag/abc')
217
217
  expect(res.headers.get('ETag')).not.toBeFalsy()
218
- expect(res.headers.get('ETag')).toBe('W/"7c6c452b40ba15d4748e0075f4e402b441c3ea15"')
218
+ expect(res.headers.get('ETag')).toBe('W/"ba73e68ded3fb25dd2a1c90023bada7880da6ab7"')
219
219
  })
220
220
 
221
221
  it('Should handle conditional GETs', async () => {
222
- const app = new App()
222
+ const app = new Acryl()
223
223
  app.use('/etag/*', etag())
224
224
  app.get('/etag/ghi', (c) =>
225
- c.text('App is great', 200, {
225
+ c.text('Acryl is great', 200, {
226
226
  'cache-control': 'public, max-age=120',
227
227
  date: 'Mon, Feb 27 2023 12:08:36 GMT',
228
228
  expires: 'Mon, Feb 27 2023 12:10:36 GMT',
@@ -286,9 +286,9 @@ describe('Etag Middleware', () => {
286
286
  })
287
287
 
288
288
  it('Should handle conditional QUERY requests', async () => {
289
- const app = new App()
289
+ const app = new Acryl()
290
290
  app.use('/etag/*', etag())
291
- app.on('QUERY', '/etag/query', (c) => c.text('App is great'))
291
+ app.on('QUERY', '/etag/query', (c) => c.text('Acryl is great'))
292
292
 
293
293
  // unconditional QUERY
294
294
  let res = await app.request('http://localhost/etag/query', {
@@ -333,7 +333,7 @@ describe('Etag Middleware', () => {
333
333
  })
334
334
 
335
335
  it('Should not return 304 on unsafe methods or error responses', async () => {
336
- const app = new App()
336
+ const app = new Acryl()
337
337
  app.use('/etag/*', etag())
338
338
  app.put('/etag/put', (c) => c.text('created', 201, { ETag: '"etag-123"' }))
339
339
  app.get('/etag/not-found', (c) => c.text('not found', 404, { ETag: '"etag-123"' }))
@@ -374,18 +374,18 @@ describe('Etag Middleware', () => {
374
374
  })
375
375
 
376
376
  it('Should not return duplicate etag header values', async () => {
377
- const app = new App()
377
+ const app = new Acryl()
378
378
  app.use('/etag/*', etag())
379
379
  app.use('/etag/*', etag())
380
- app.get('/etag/abc', (c) => c.text('App is hot'))
380
+ app.get('/etag/abc', (c) => c.text('Acryl is hot'))
381
381
 
382
382
  const res = await app.request('http://localhost/etag/abc')
383
383
  expect(res.headers.get('ETag')).not.toBeFalsy()
384
- expect(res.headers.get('ETag')).toBe('"7c6c452b40ba15d4748e0075f4e402b441c3ea15"')
384
+ expect(res.headers.get('ETag')).toBe('"ba73e68ded3fb25dd2a1c90023bada7880da6ab7"')
385
385
  })
386
386
 
387
387
  it('Should not override ETag headers from upstream', async () => {
388
- const app = new App()
388
+ const app = new Acryl()
389
389
  app.use('/etag/*', etag())
390
390
  app.get('/etag/predefined', (c) =>
391
391
  c.text('This response has an ETag', 200, { ETag: '"f-0194-d"' })
@@ -398,7 +398,7 @@ describe('Etag Middleware', () => {
398
398
  it('Should retain the default and the specified headers', async () => {
399
399
  const cacheControl = 'public, max-age=120'
400
400
  const message = 'Hello!'
401
- const app = new App()
401
+ const app = new Acryl()
402
402
  app.use(
403
403
  '/etag/*',
404
404
  etag({
@@ -406,7 +406,7 @@ describe('Etag Middleware', () => {
406
406
  })
407
407
  )
408
408
  app.get('/etag', (c) => {
409
- return c.text('App is hot', 200, {
409
+ return c.text('Acryl is hot', 200, {
410
410
  'cache-control': cacheControl,
411
411
  'x-message-retain': message,
412
412
  'X-Message-Retain-Upper': message,
@@ -415,12 +415,12 @@ describe('Etag Middleware', () => {
415
415
  })
416
416
  const res = await app.request('/etag', {
417
417
  headers: {
418
- 'If-None-Match': '"7c6c452b40ba15d4748e0075f4e402b441c3ea15"',
418
+ 'If-None-Match': '"ba73e68ded3fb25dd2a1c90023bada7880da6ab7"',
419
419
  },
420
420
  })
421
421
  expect(res.status).toBe(304)
422
422
  expect(res.headers.get('ETag')).not.toBeFalsy()
423
- expect(res.headers.get('ETag')).toBe('"7c6c452b40ba15d4748e0075f4e402b441c3ea15"')
423
+ expect(res.headers.get('ETag')).toBe('"ba73e68ded3fb25dd2a1c90023bada7880da6ab7"')
424
424
  expect(res.headers.get('Cache-Control')).toBe(cacheControl)
425
425
  expect(res.headers.get('x-message-retain')).toBe(message)
426
426
  expect(res.headers.get('X-Message-Retain-Upper')).toBe(message)
@@ -428,10 +428,10 @@ describe('Etag Middleware', () => {
428
428
  })
429
429
 
430
430
  it('Should return 304 when weak ETag in If-None-Match matches the generated ETag', async () => {
431
- const app = new App()
431
+ const app = new Acryl()
432
432
  app.use('/etag/*', etag())
433
433
  app.get('/etag/abc', (c) => {
434
- return c.text('App is hot')
434
+ return c.text('Acryl is hot')
435
435
  })
436
436
  let res = await app.request('http://localhost/etag/abc')
437
437
  const headerEtag = res.headers.get('ETag')!
@@ -440,7 +440,7 @@ describe('Etag Middleware', () => {
440
440
 
441
441
  res = await app.request('http://localhost/etag/abc', {
442
442
  headers: {
443
- 'If-None-Match': 'W/"7c6c452b40ba15d4748e0075f4e402b441c3ea15"',
443
+ 'If-None-Match': 'W/"ba73e68ded3fb25dd2a1c90023bada7880da6ab7"',
444
444
  },
445
445
  })
446
446
 
@@ -463,9 +463,9 @@ describe('Etag Middleware', () => {
463
463
  })
464
464
 
465
465
  it('Should not generate etag', async () => {
466
- const app = new App()
466
+ const app = new Acryl()
467
467
  app.use('/etag/*', etag())
468
- app.get('/etag/no-digest', (c) => c.text('App is hot'))
468
+ app.get('/etag/no-digest', (c) => c.text('Acryl is hot'))
469
469
  const res = await app.request('/etag/no-digest')
470
470
  expect(res.status).toBe(200)
471
471
  expect(res.headers.get('ETag')).toBeNull()
@@ -473,7 +473,7 @@ describe('Etag Middleware', () => {
473
473
  })
474
474
 
475
475
  it('Should remove all non-retained headers on 304 without skipping any', async () => {
476
- const app = new App()
476
+ const app = new Acryl()
477
477
  app.use('/etag/*', etag())
478
478
  app.get('/etag/multi-headers', (c) => {
479
479
  c.header('X-Custom-1', 'val1')
@@ -481,7 +481,7 @@ describe('Etag Middleware', () => {
481
481
  c.header('X-Custom-3', 'val3')
482
482
  c.header('X-Custom-4', 'val4')
483
483
  c.header('Cache-Control', 'max-age=3600')
484
- return c.text('App is hot')
484
+ return c.text('Acryl is hot')
485
485
  })
486
486
  const res1 = await app.request('http://localhost/etag/multi-headers')
487
487
  const etagHeader = res1.headers.get('ETag')!
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * ETag Middleware for App.
3
+ * ETag Middleware for Acryl.
4
4
  */
5
5
 
6
6
  import type { MiddlewareHandler } from '../../types.ts'
@@ -55,7 +55,7 @@ function initializeGenerator(
55
55
  }
56
56
 
57
57
  /**
58
- * ETag Middleware for App.
58
+ * ETag Middleware for Acryl.
59
59
  *
60
60
  *
61
61
  * @param {ETagOptions} [options] - The options for the ETag middleware.
@@ -68,11 +68,11 @@ function initializeGenerator(
68
68
  *
69
69
  * @example
70
70
  * ```ts
71
- * const app = new App()
71
+ * const app = new Acryl()
72
72
  *
73
73
  * app.use('/etag/*', etag())
74
74
  * app.get('/etag/abc', (c) => {
75
- * return c.text('App is hot')
75
+ * return c.text('Acryl is hot')
76
76
  * })
77
77
  * ```
78
78
  */
@@ -2,7 +2,7 @@ import { ipRestriction } from './index.ts'
2
2
  import type { IPRestrictionRule } from './index.ts'
3
3
  import { Context } from '../../context.ts'
4
4
  import type { AddressType, GetConnInfo } from '../../helper/conninfo/index.ts'
5
- import { App } from '../../app.ts'
5
+ import { Acryl } from '../../app.ts'
6
6
 
7
7
  describe('ipRestriction middleware', () => {
8
8
  it('Should restrict', async () => {
@@ -13,7 +13,7 @@ describe('ipRestriction middleware', () => {
13
13
  },
14
14
  }
15
15
  }
16
- const app = new App<{
16
+ const app = new Acryl<{
17
17
  Bindings: {
18
18
  ip: string
19
19
  }
@@ -64,7 +64,7 @@ describe('ipRestriction middleware', () => {
64
64
  test.each(['999.999.999.999', '2001:db8::1%eth0', '1234:::5678'])(
65
65
  'Should reject invalid remote address: %s',
66
66
  async (ip) => {
67
- const app = new App<{
67
+ const app = new Acryl<{
68
68
  Bindings: {
69
69
  ip: string
70
70
  }
@@ -89,7 +89,7 @@ describe('ipRestriction middleware', () => {
89
89
  )
90
90
 
91
91
  it('Should not call onError for invalid remote addresses', async () => {
92
- const app = new App<{
92
+ const app = new Acryl<{
93
93
  Bindings: {
94
94
  ip: string
95
95
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * IP Restriction Middleware for App
2
+ * IP Restriction Middleware for Acryl
3
3
  * @module
4
4
  */
5
5
 
@@ -175,7 +175,7 @@ export interface IPRestrictionRules {
175
175
  }
176
176
 
177
177
  /**
178
- * IP Restriction Middleware for App.
178
+ * IP Restriction Middleware for Acryl.
179
179
  *
180
180
  *
181
181
  * @param {GetConnInfo | ((c: Context) => string)} getIP - A function to retrieve the client IP address. Use `getConnInfo` from the appropriate runtime adapter.
@@ -185,11 +185,11 @@ export interface IPRestrictionRules {
185
185
  *
186
186
  * @example
187
187
  * ```ts
188
- * import { App } from 'acryl-router'
189
- * import { ipRestriction } from 'acryl-router/middleware'
190
- * import { getConnInfo } from 'acryl-router/helpers'
188
+ * import { Acryl } from 'acrylblends'
189
+ * import { ipRestriction } from 'acrylblends/ip-restriction'
190
+ * import { getConnInfo } from 'acrylblends/cloudflare-workers'
191
191
  *
192
- * const app = new App()
192
+ * const app = new Acryl()
193
193
  *
194
194
  * app.use(
195
195
  * '*',