acrylblends 0.4.0 → 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 (426) hide show
  1. package/LICENSE +73 -0
  2. package/dist/index.js +56 -2
  3. package/dist/index.js.map +1 -1
  4. package/docs/framework/LICENSE +23 -0
  5. package/docs/framework/README.md +63 -0
  6. package/docs/framework/UPSTREAM.md +3 -0
  7. package/docs/framework/agents/index.md +24 -0
  8. package/docs/framework/api/acryl.md +259 -0
  9. package/docs/framework/api/context.md +527 -0
  10. package/docs/framework/api/exception.md +80 -0
  11. package/docs/framework/api/index.md +12 -0
  12. package/docs/framework/api/presets.md +65 -0
  13. package/docs/framework/api/request.md +396 -0
  14. package/docs/framework/api/routing.md +303 -0
  15. package/docs/framework/api/summary.md +140 -0
  16. package/docs/framework/concepts/benchmarks.md +26 -0
  17. package/docs/framework/concepts/developer-experience.md +5 -0
  18. package/docs/framework/concepts/middleware.md +21 -0
  19. package/docs/framework/concepts/motivation.md +14 -0
  20. package/docs/framework/concepts/routers.md +63 -0
  21. package/docs/framework/concepts/stacks.md +235 -0
  22. package/docs/framework/concepts/web-standard.md +37 -0
  23. package/docs/framework/cordis/acryl-in-a-cordis-app.md +146 -0
  24. package/docs/framework/cordis/concepts.md +105 -0
  25. package/docs/framework/cordis/middleware.md +8 -0
  26. package/docs/framework/cordis/migration-from-0-3.md +111 -0
  27. package/docs/framework/cordis/migration-from-0-4.md +14 -0
  28. package/docs/framework/cordis/migration-from-dsh-webserver.md +103 -0
  29. package/docs/framework/cordis/mounting.md +85 -0
  30. package/docs/framework/cordis/node-server.md +75 -0
  31. package/docs/framework/cordis/plugin-lifecycle.md +111 -0
  32. package/docs/framework/cordis/surfaces.md +71 -0
  33. package/docs/framework/cordis/transport-and-cancellation.md +57 -0
  34. package/docs/framework/cordis/validation.md +135 -0
  35. package/docs/framework/getting-started/basic.md +196 -0
  36. package/docs/framework/getting-started/bun.md +221 -0
  37. package/docs/framework/getting-started/nodejs.md +344 -0
  38. package/docs/framework/getting-started/other-runtimes.md +23 -0
  39. package/docs/framework/guides/best-practices.md +231 -0
  40. package/docs/framework/guides/create-acrylblends.md +79 -0
  41. package/docs/framework/guides/examples.md +3 -0
  42. package/docs/framework/guides/faq.md +19 -0
  43. package/docs/framework/guides/helpers.md +33 -0
  44. package/docs/framework/guides/jsx-dom.md +299 -0
  45. package/docs/framework/guides/jsx.md +440 -0
  46. package/docs/framework/guides/middleware.md +253 -0
  47. package/docs/framework/guides/rpc.md +886 -0
  48. package/docs/framework/guides/testing.md +133 -0
  49. package/docs/framework/guides/validation.md +383 -0
  50. package/docs/framework/helpers/accepts.md +60 -0
  51. package/docs/framework/helpers/adapter.md +87 -0
  52. package/docs/framework/helpers/conninfo.md +112 -0
  53. package/docs/framework/helpers/cookie.md +232 -0
  54. package/docs/framework/helpers/css.md +285 -0
  55. package/docs/framework/helpers/dev.md +67 -0
  56. package/docs/framework/helpers/factory.md +180 -0
  57. package/docs/framework/helpers/html.md +123 -0
  58. package/docs/framework/helpers/jwt.md +184 -0
  59. package/docs/framework/helpers/proxy.md +118 -0
  60. package/docs/framework/helpers/route.md +143 -0
  61. package/docs/framework/helpers/ssg.md +393 -0
  62. package/docs/framework/helpers/streaming.md +119 -0
  63. package/docs/framework/helpers/testing.md +101 -0
  64. package/docs/framework/helpers/websocket.md +215 -0
  65. package/docs/framework/middleware/builtin/basic-auth.md +165 -0
  66. package/docs/framework/middleware/builtin/bearer-auth.md +138 -0
  67. package/docs/framework/middleware/builtin/body-limit.md +71 -0
  68. package/docs/framework/middleware/builtin/cache.md +122 -0
  69. package/docs/framework/middleware/builtin/combine.md +94 -0
  70. package/docs/framework/middleware/builtin/compress.md +59 -0
  71. package/docs/framework/middleware/builtin/context-storage.md +78 -0
  72. package/docs/framework/middleware/builtin/cors.md +135 -0
  73. package/docs/framework/middleware/builtin/csrf.md +105 -0
  74. package/docs/framework/middleware/builtin/etag.md +54 -0
  75. package/docs/framework/middleware/builtin/ip-restriction.md +69 -0
  76. package/docs/framework/middleware/builtin/jsx-renderer.md +286 -0
  77. package/docs/framework/middleware/builtin/jwk.md +192 -0
  78. package/docs/framework/middleware/builtin/jwt.md +145 -0
  79. package/docs/framework/middleware/builtin/language.md +232 -0
  80. package/docs/framework/middleware/builtin/logger.md +74 -0
  81. package/docs/framework/middleware/builtin/loopback-only.md +31 -0
  82. package/docs/framework/middleware/builtin/method-not-allowed.md +48 -0
  83. package/docs/framework/middleware/builtin/method-override.md +80 -0
  84. package/docs/framework/middleware/builtin/mount.md +106 -0
  85. package/docs/framework/middleware/builtin/pretty-json.md +53 -0
  86. package/docs/framework/middleware/builtin/request-id.md +94 -0
  87. package/docs/framework/middleware/builtin/secure-headers.md +247 -0
  88. package/docs/framework/middleware/builtin/timeout.md +98 -0
  89. package/docs/framework/middleware/builtin/timing.md +101 -0
  90. package/docs/framework/middleware/builtin/trailing-slash.md +74 -0
  91. package/docs/framework/middleware/third-party.md +4 -0
  92. package/docs/framework/upstream.json +9 -0
  93. package/lib/accepts-XBuZPVRI.js +52 -0
  94. package/lib/accepts.d.ts +33 -0
  95. package/lib/accepts.js +2 -0
  96. package/lib/acryl-base.d.ts +2 -0
  97. package/lib/acryl-base.js +332 -0
  98. package/lib/adapter.d.ts +12 -0
  99. package/lib/adapter.js +37 -0
  100. package/lib/app-BM0rTCp7.js +26 -0
  101. package/lib/app-CmAYW1Al.d.ts +21 -0
  102. package/lib/basic-auth.d.ts +72 -0
  103. package/lib/basic-auth.js +95 -0
  104. package/lib/bearer-auth.d.ts +89 -0
  105. package/lib/bearer-auth.js +94 -0
  106. package/lib/body-limit.d.ts +42 -0
  107. package/lib/body-limit.js +66 -0
  108. package/lib/client-BHTr318g.js +266 -0
  109. package/lib/client.d.ts +3 -0
  110. package/lib/client.js +2 -0
  111. package/lib/combine.d.ts +85 -0
  112. package/lib/combine.js +137 -0
  113. package/lib/compose-BuW2B6PZ.js +50 -0
  114. package/lib/compress.d.ts +38 -0
  115. package/lib/compress.js +79 -0
  116. package/lib/connection-C7xgP1hP.js +24 -0
  117. package/lib/conninfo.d.ts +25 -0
  118. package/lib/conninfo.js +2 -0
  119. package/lib/constants-Dy7ZvN1H.js +4 -0
  120. package/lib/context-Bm7rI-oK.d.ts +1234 -0
  121. package/lib/context-DDO0cfuP.js +365 -0
  122. package/lib/context-storage.d.ts +38 -0
  123. package/lib/context-storage.js +52 -0
  124. package/lib/cookie-ClMaKDQf.d.ts +40 -0
  125. package/lib/cookie.d.ts +24 -0
  126. package/lib/cookie.js +82 -0
  127. package/lib/cors.d.ts +52 -0
  128. package/lib/cors.js +106 -0
  129. package/lib/csrf.d.ts +75 -0
  130. package/lib/csrf.js +101 -0
  131. package/lib/etag.d.ts +40 -0
  132. package/lib/etag.js +135 -0
  133. package/lib/factory.d.ts +35 -0
  134. package/lib/factory.js +30 -0
  135. package/lib/headers-tu2YYN8T.d.ts +11 -0
  136. package/lib/html.d.ts +6 -0
  137. package/lib/html.js +31 -0
  138. package/lib/http-exception.d.ts +57 -0
  139. package/lib/http-exception.js +54 -0
  140. package/lib/http-status-DaAwGAFL.d.ts +35 -0
  141. package/lib/index-B-3F4wt2.d.ts +12 -0
  142. package/lib/index-UTBmM3GX.d.ts +68 -0
  143. package/lib/index-oOClm_Xk.d.ts +45 -0
  144. package/lib/index.d.ts +5 -0
  145. package/lib/index.js +28 -0
  146. package/lib/ip-restriction.d.ts +68 -0
  147. package/lib/ip-restriction.js +166 -0
  148. package/lib/jwk.d.ts +52 -0
  149. package/lib/jwk.js +117 -0
  150. package/lib/jwt-BGJBw5AF.js +403 -0
  151. package/lib/jwt-Dg493Tai.d.ts +51 -0
  152. package/lib/jwt.d.ts +72 -0
  153. package/lib/jwt.js +115 -0
  154. package/lib/language.d.ts +88 -0
  155. package/lib/language.js +198 -0
  156. package/lib/logger.d.ts +22 -0
  157. package/lib/logger.js +54 -0
  158. package/lib/loopback-only.d.ts +45 -0
  159. package/lib/loopback-only.js +90 -0
  160. package/lib/method-not-allowed.d.ts +47 -0
  161. package/lib/method-not-allowed.js +82 -0
  162. package/lib/method-override.d.ts +46 -0
  163. package/lib/method-override.js +103 -0
  164. package/lib/mime-BQOYHl-l.d.ts +72 -0
  165. package/lib/node-server/conninfo.d.ts +11 -0
  166. package/lib/node-server/conninfo.js +19 -0
  167. package/lib/node-server/serve-static.d.ts +19 -0
  168. package/lib/node-server/serve-static.js +2 -0
  169. package/lib/node-server.d.ts +103 -0
  170. package/lib/node-server.js +1325 -0
  171. package/lib/powered-by.d.ts +28 -0
  172. package/lib/powered-by.js +24 -0
  173. package/lib/pretty-json.d.ts +40 -0
  174. package/lib/pretty-json.js +39 -0
  175. package/lib/reg-exp-router-DC1R3qoY.js +363 -0
  176. package/lib/request-id.d.ts +45 -0
  177. package/lib/request-id.js +34 -0
  178. package/lib/request.d.ts +2 -0
  179. package/lib/request.js +323 -0
  180. package/lib/route.d.ts +78 -0
  181. package/lib/route.js +126 -0
  182. package/lib/router/linear-router.d.ts +11 -0
  183. package/lib/router/linear-router.js +96 -0
  184. package/lib/router/pattern-router.d.ts +11 -0
  185. package/lib/router/pattern-router.js +41 -0
  186. package/lib/router/reg-exp-router.d.ts +35 -0
  187. package/lib/router/reg-exp-router.js +2 -0
  188. package/lib/router/smart-router.d.ts +15 -0
  189. package/lib/router/smart-router.js +2 -0
  190. package/lib/router/trie-router.d.ts +11 -0
  191. package/lib/router/trie-router.js +2 -0
  192. package/lib/router-CvUxUTOq.d.ts +99 -0
  193. package/lib/router.d.ts +2 -0
  194. package/lib/router.js +35 -0
  195. package/lib/schema-validator.d.ts +28 -0
  196. package/lib/schema-validator.js +22 -0
  197. package/lib/secure-headers.d.ts +125 -0
  198. package/lib/secure-headers.js +163 -0
  199. package/lib/serve-static-Dw_m6KxR.js +213 -0
  200. package/lib/serve-static.d.ts +31 -0
  201. package/lib/serve-static.js +77 -0
  202. package/lib/smart-router-C5CZ5XSM.js +49 -0
  203. package/lib/stream-CPdqZ0Fp.d.ts +34 -0
  204. package/lib/streaming-DHST3Scg.js +96 -0
  205. package/lib/streaming.d.ts +23 -0
  206. package/lib/streaming.js +2 -0
  207. package/lib/testing.d.ts +10 -0
  208. package/lib/testing.js +17 -0
  209. package/lib/timeout.d.ts +30 -0
  210. package/lib/timeout.js +42 -0
  211. package/lib/timing.d.ts +130 -0
  212. package/lib/timing.js +183 -0
  213. package/lib/trailing-slash.d.ts +91 -0
  214. package/lib/trailing-slash.js +85 -0
  215. package/lib/trie-router-CfFbapzL.js +146 -0
  216. package/lib/types-CDO6I3B0.d.ts +40 -0
  217. package/lib/types-CHesD1KG.d.ts +195 -0
  218. package/lib/types-CwrQjlaM.d.ts +105 -0
  219. package/lib/types-DR95J00T.d.ts +29 -0
  220. package/lib/types.d.ts +2 -0
  221. package/lib/types.js +4 -0
  222. package/lib/utils/accept.d.ts +9 -0
  223. package/lib/utils/accept.js +193 -0
  224. package/lib/utils/basic-auth.d.ts +8 -0
  225. package/lib/utils/basic-auth.js +20 -0
  226. package/lib/utils/body.d.ts +2 -0
  227. package/lib/utils/body.js +94 -0
  228. package/lib/utils/buffer.d.ts +19 -0
  229. package/lib/utils/buffer.js +51 -0
  230. package/lib/utils/color.d.ts +24 -0
  231. package/lib/utils/color.js +37 -0
  232. package/lib/utils/compress.d.ts +11 -0
  233. package/lib/utils/compress.js +11 -0
  234. package/lib/utils/concurrent.d.ts +17 -0
  235. package/lib/utils/concurrent.js +30 -0
  236. package/lib/utils/constants.d.ts +7 -0
  237. package/lib/utils/constants.js +7 -0
  238. package/lib/utils/cookie.d.ts +2 -0
  239. package/lib/utils/cookie.js +125 -0
  240. package/lib/utils/crypto.d.ts +14 -0
  241. package/lib/utils/crypto.js +34 -0
  242. package/lib/utils/encode.d.ts +11 -0
  243. package/lib/utils/encode.js +33 -0
  244. package/lib/utils/filepath.d.ts +14 -0
  245. package/lib/utils/filepath.js +25 -0
  246. package/lib/utils/handler.d.ts +9 -0
  247. package/lib/utils/handler.js +12 -0
  248. package/lib/utils/headers.d.ts +2 -0
  249. package/lib/utils/headers.js +1 -0
  250. package/lib/utils/html.d.ts +46 -0
  251. package/lib/utils/html.js +103 -0
  252. package/lib/utils/http-status.d.ts +2 -0
  253. package/lib/utils/http-status.js +1 -0
  254. package/lib/utils/ipaddr.d.ts +56 -0
  255. package/lib/utils/ipaddr.js +238 -0
  256. package/lib/utils/jwt.d.ts +24 -0
  257. package/lib/utils/jwt.js +2 -0
  258. package/lib/utils/mime.d.ts +2 -0
  259. package/lib/utils/mime.js +77 -0
  260. package/lib/utils/stream.d.ts +2 -0
  261. package/lib/utils/stream.js +88 -0
  262. package/lib/utils/types.d.ts +2 -0
  263. package/lib/utils/types.js +1 -0
  264. package/lib/utils/url.d.ts +46 -0
  265. package/lib/utils/url.js +197 -0
  266. package/lib/utils-dw8lxqjL.js +4 -0
  267. package/lib/validator-D84mq-dO.js +65 -0
  268. package/lib/validator.d.ts +42 -0
  269. package/lib/validator.js +2 -0
  270. package/lib/ws.d.ts +2 -0
  271. package/lib/ws.js +53 -0
  272. package/package.json +315 -15
  273. package/plugins/acryl-inspect/src/report.ts +15 -10
  274. package/plugins/acryl-inspect/src/service.ts +2 -2
  275. package/plugins/acryl-inspect/tests/report.spec.ts +9 -3
  276. package/plugins/acryl-inspect/tests/service.spec.ts +3 -3
  277. package/plugins/acryl-inspect/upstream.json +2 -2
  278. package/plugins/acryl-node-server/tests/adapter/app.ts +2 -2
  279. package/plugins/acryl-node-server/tests/adapter/assets/static/acryl.html +1 -1
  280. package/plugins/acryl-node-server/tests/adapter/assets/static/index.html +1 -1
  281. package/plugins/acryl-node-server/tests/adapter/conninfo.test.ts +2 -2
  282. package/plugins/acryl-node-server/tests/adapter/content-length.test.ts +4 -4
  283. package/plugins/acryl-node-server/tests/adapter/early-hints.test.ts +5 -5
  284. package/plugins/acryl-node-server/tests/adapter/request-client-disconnect.test.ts +2 -2
  285. package/plugins/acryl-node-server/tests/adapter/serve-static.test.ts +20 -20
  286. package/plugins/acryl-node-server/tests/adapter/server-socket.test.ts +2 -2
  287. package/plugins/acryl-node-server/tests/adapter/server.test.ts +50 -50
  288. package/plugins/acryl-node-server/tests/adapter/utils/response.test.ts +4 -4
  289. package/plugins/acryl-node-server/tests/adapter/websocket.test.ts +9 -9
  290. package/plugins/acryl-node-server/tests/server.spec.ts +6 -6
  291. package/plugins/acryl-node-server/upstream.json +2 -2
  292. package/plugins/acryl-router/src/client.ts +1 -1
  293. package/plugins/acryl-router/src/connection.ts +2 -2
  294. package/plugins/acryl-router/src/core/app-base.ts +29 -29
  295. package/plugins/acryl-router/src/core/app.test.ts +175 -175
  296. package/plugins/acryl-router/src/core/app.ts +8 -8
  297. package/plugins/acryl-router/src/core/client/client.test.ts +76 -76
  298. package/plugins/acryl-router/src/core/client/client.ts +2 -2
  299. package/plugins/acryl-router/src/core/client/fetch-result-please.ts +1 -1
  300. package/plugins/acryl-router/src/core/client/index.ts +1 -1
  301. package/plugins/acryl-router/src/core/client/types.test.ts +6 -6
  302. package/plugins/acryl-router/src/core/client/types.ts +16 -16
  303. package/plugins/acryl-router/src/core/client/utils.test.ts +2 -2
  304. package/plugins/acryl-router/src/core/context.test.ts +4 -4
  305. package/plugins/acryl-router/src/core/context.ts +6 -6
  306. package/plugins/acryl-router/src/core/helper/accepts/accepts.test.ts +3 -3
  307. package/plugins/acryl-router/src/core/helper/accepts/index.ts +1 -1
  308. package/plugins/acryl-router/src/core/helper/adapter/index.test.ts +6 -6
  309. package/plugins/acryl-router/src/core/helper/adapter/index.ts +1 -1
  310. package/plugins/acryl-router/src/core/helper/conninfo/index.ts +1 -1
  311. package/plugins/acryl-router/src/core/helper/cookie/index.test.ts +8 -8
  312. package/plugins/acryl-router/src/core/helper/cookie/index.ts +1 -1
  313. package/plugins/acryl-router/src/core/helper/factory/index.test.ts +9 -9
  314. package/plugins/acryl-router/src/core/helper/factory/index.ts +10 -10
  315. package/plugins/acryl-router/src/core/helper/html/index.test.ts +4 -4
  316. package/plugins/acryl-router/src/core/helper/html/index.ts +1 -1
  317. package/plugins/acryl-router/src/core/helper/route/index.test.ts +7 -7
  318. package/plugins/acryl-router/src/core/helper/route/index.ts +8 -8
  319. package/plugins/acryl-router/src/core/helper/streaming/index.ts +1 -1
  320. package/plugins/acryl-router/src/core/helper/testing/index.test.ts +6 -6
  321. package/plugins/acryl-router/src/core/helper/testing/index.ts +4 -4
  322. package/plugins/acryl-router/src/core/helper/websocket/index.ts +2 -1
  323. package/plugins/acryl-router/src/core/http-exception.ts +1 -1
  324. package/plugins/acryl-router/src/core/index.ts +9 -9
  325. package/plugins/acryl-router/src/core/middleware/basic-auth/index.test.ts +6 -6
  326. package/plugins/acryl-router/src/core/middleware/basic-auth/index.ts +3 -3
  327. package/plugins/acryl-router/src/core/middleware/bearer-auth/index.test.ts +5 -5
  328. package/plugins/acryl-router/src/core/middleware/bearer-auth/index.ts +3 -3
  329. package/plugins/acryl-router/src/core/middleware/body-limit/index.test.ts +6 -6
  330. package/plugins/acryl-router/src/core/middleware/body-limit/index.ts +3 -3
  331. package/plugins/acryl-router/src/core/middleware/combine/index.test.ts +9 -9
  332. package/plugins/acryl-router/src/core/middleware/combine/index.ts +7 -7
  333. package/plugins/acryl-router/src/core/middleware/compress/index.test.ts +9 -9
  334. package/plugins/acryl-router/src/core/middleware/compress/index.ts +3 -3
  335. package/plugins/acryl-router/src/core/middleware/context-storage/index.test.ts +5 -5
  336. package/plugins/acryl-router/src/core/middleware/context-storage/index.ts +4 -4
  337. package/plugins/acryl-router/src/core/middleware/cors/index.test.ts +7 -7
  338. package/plugins/acryl-router/src/core/middleware/cors/index.ts +3 -3
  339. package/plugins/acryl-router/src/core/middleware/csrf/index.test.ts +10 -10
  340. package/plugins/acryl-router/src/core/middleware/csrf/index.ts +3 -3
  341. package/plugins/acryl-router/src/core/middleware/etag/index.test.ts +42 -42
  342. package/plugins/acryl-router/src/core/middleware/etag/index.ts +4 -4
  343. package/plugins/acryl-router/src/core/middleware/ip-restriction/index.test.ts +4 -4
  344. package/plugins/acryl-router/src/core/middleware/ip-restriction/index.ts +6 -6
  345. package/plugins/acryl-router/src/core/middleware/jwk/index.test.ts +16 -16
  346. package/plugins/acryl-router/src/core/middleware/jwk/jwk.ts +7 -6
  347. package/plugins/acryl-router/src/core/middleware/jwt/index.test.ts +16 -16
  348. package/plugins/acryl-router/src/core/middleware/jwt/jwt.ts +4 -3
  349. package/plugins/acryl-router/src/core/middleware/language/index.test.ts +3 -3
  350. package/plugins/acryl-router/src/core/middleware/language/language.ts +3 -3
  351. package/plugins/acryl-router/src/core/middleware/logger/index.test.ts +5 -5
  352. package/plugins/acryl-router/src/core/middleware/logger/index.ts +4 -4
  353. package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.test.ts +24 -24
  354. package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.ts +8 -8
  355. package/plugins/acryl-router/src/core/middleware/method-override/index.test.ts +5 -5
  356. package/plugins/acryl-router/src/core/middleware/method-override/index.ts +6 -6
  357. package/plugins/acryl-router/src/core/middleware/powered-by/index.test.ts +4 -4
  358. package/plugins/acryl-router/src/core/middleware/powered-by/index.ts +6 -6
  359. package/plugins/acryl-router/src/core/middleware/pretty-json/index.test.ts +30 -30
  360. package/plugins/acryl-router/src/core/middleware/pretty-json/index.ts +4 -4
  361. package/plugins/acryl-router/src/core/middleware/request-id/index.test.ts +15 -15
  362. package/plugins/acryl-router/src/core/middleware/request-id/request-id.ts +3 -3
  363. package/plugins/acryl-router/src/core/middleware/secure-headers/index.test.ts +35 -35
  364. package/plugins/acryl-router/src/core/middleware/secure-headers/secure-headers.ts +3 -3
  365. package/plugins/acryl-router/src/core/middleware/serve-static/index.test.ts +23 -23
  366. package/plugins/acryl-router/src/core/middleware/serve-static/index.ts +1 -1
  367. package/plugins/acryl-router/src/core/middleware/timeout/index.test.ts +2 -2
  368. package/plugins/acryl-router/src/core/middleware/timeout/index.ts +3 -3
  369. package/plugins/acryl-router/src/core/middleware/timing/index.test.ts +14 -14
  370. package/plugins/acryl-router/src/core/middleware/timing/timing.ts +3 -3
  371. package/plugins/acryl-router/src/core/middleware/trailing-slash/index.test.ts +7 -7
  372. package/plugins/acryl-router/src/core/middleware/trailing-slash/index.ts +7 -7
  373. package/plugins/acryl-router/src/core/request.test.ts +42 -42
  374. package/plugins/acryl-router/src/core/request.ts +6 -6
  375. package/plugins/acryl-router/src/core/router/linear-router/index.ts +1 -1
  376. package/plugins/acryl-router/src/core/router/pattern-router/index.ts +1 -1
  377. package/plugins/acryl-router/src/core/router/reg-exp-router/index.ts +1 -1
  378. package/plugins/acryl-router/src/core/router/smart-router/index.ts +1 -1
  379. package/plugins/acryl-router/src/core/router/trie-router/index.ts +1 -1
  380. package/plugins/acryl-router/src/core/types.test.ts +115 -115
  381. package/plugins/acryl-router/src/core/types.ts +72 -72
  382. package/plugins/acryl-router/src/core/utils/body.ts +8 -8
  383. package/plugins/acryl-router/src/core/utils/html.ts +1 -1
  384. package/plugins/acryl-router/src/core/utils/jwt/jws.ts +3 -3
  385. package/plugins/acryl-router/src/core/utils/jwt/jwt.test.ts +2 -2
  386. package/plugins/acryl-router/src/core/utils/jwt/jwt.ts +3 -3
  387. package/plugins/acryl-router/src/core/utils/jwt/types.ts +1 -1
  388. package/plugins/acryl-router/src/core/utils/types.ts +42 -0
  389. package/plugins/acryl-router/src/core/utils/url.test.ts +2 -2
  390. package/plugins/acryl-router/src/core/validator/index.ts +1 -1
  391. package/plugins/acryl-router/src/core/validator/validator.test.ts +28 -28
  392. package/plugins/acryl-router/src/deprecated.ts +15 -0
  393. package/plugins/acryl-router/src/index.ts +3 -2
  394. package/plugins/acryl-router/src/middleware/index.ts +1 -1
  395. package/plugins/acryl-router/src/middleware/loopback-only.ts +34 -1
  396. package/plugins/acryl-router/src/service.ts +19 -13
  397. package/plugins/acryl-router/tests/docs-examples.spec.ts +11 -11
  398. package/plugins/acryl-router/tests/live-install.spec.ts +2 -2
  399. package/plugins/acryl-router/tests/loader.spec.ts +3 -3
  400. package/plugins/acryl-router/tests/loopback-only.spec.ts +80 -0
  401. package/plugins/acryl-router/tests/no-dom/consumer.ts +11 -0
  402. package/plugins/acryl-router/tests/no-dom/tsconfig.json +13 -0
  403. package/plugins/acryl-router/tests/service.spec.ts +39 -22
  404. package/plugins/acryl-router/upstream.json +3 -3
  405. package/plugins/acryl-router-http/tests/adapter.spec.ts +3 -3
  406. package/plugins/acryl-router-http/tests/surfaces.spec.ts +2 -2
  407. package/plugins/acryl-router-http/upstream.json +2 -2
  408. package/plugins/acryl-state/src/service.ts +2 -2
  409. package/plugins/acryl-state/upstream.json +2 -2
  410. package/plugins/builder/script.ts +3 -3
  411. package/plugins/extensions/index.ts +4 -3
  412. package/plugins/extensions/resolve.ts +70 -10
  413. package/plugins/openai/prompt.ts +7 -7
  414. package/shared/AGENTS.core.md +61 -0
  415. package/templates/agent/AGENTS.md +6 -0
  416. package/templates/agent/README.md +2 -2
  417. package/templates/agent/blend.yaml +1 -1
  418. package/templates/agent/src/routes.ts +2 -2
  419. package/templates/agent/test/model.test.ts +2 -2
  420. package/templates/agent/tsconfig.json +40 -0
  421. package/templates/blank/AGENTS.md +5 -0
  422. package/templates/blank/README.md +1 -1
  423. package/templates/blank/src/routes.ts +2 -2
  424. package/templates/todo/AGENTS.md +5 -0
  425. package/templates/todo/src/todo.ts +6 -4
  426. package/templates/todo/upstream.json +2 -2
@@ -1,4 +1,4 @@
1
- import { App } from '../../../acryl-router/src/index.ts'
1
+ import { Acryl } from '../../../acryl-router/src/index.ts'
2
2
  import type * as fs from 'node:fs'
3
3
  import {
4
4
  chmodSync,
@@ -26,7 +26,7 @@ vi.mock('node:fs', async (importOriginal) => {
26
26
  })
27
27
 
28
28
  describe('Serve Static Middleware', () => {
29
- const app = new App<{
29
+ const app = new Acryl<{
30
30
  Variables: {
31
31
  path: string
32
32
  }
@@ -99,7 +99,7 @@ describe('Serve Static Middleware', () => {
99
99
  const rewriteRequestPath = vi.fn((path: string) => path)
100
100
  const onFound = vi.fn()
101
101
  const onNotFound = vi.fn()
102
- const app = new App().use(
102
+ const app = new Acryl().use(
103
103
  '/static/*',
104
104
  serveStatic({ root: './tests/adapter/assets', rewriteRequestPath, onFound, onNotFound })
105
105
  )
@@ -136,7 +136,7 @@ describe('Serve Static Middleware', () => {
136
136
  it('Should return index.html', async () => {
137
137
  const res = await requestServer(server, { method: 'GET', path: '/static/' })
138
138
  expect(res.status).toBe(200)
139
- expect(await res.text()).toBe('<h1>Hello App</h1>')
139
+ expect(await res.text()).toBe('<h1>Hello Acryl</h1>')
140
140
  expect(res.headers.get('content-type')).toBe('text/html; charset=utf-8')
141
141
  expect(res.headers.get('x-custom')).toMatch(
142
142
  /Found the file at tests[\/\\]adapter[\/\\]assets[\/\\]static[\/\\]index\.html$/
@@ -146,7 +146,7 @@ describe('Serve Static Middleware', () => {
146
146
  it('Should return acryl.html', async () => {
147
147
  const res = await requestServer(server, { method: 'GET', path: '/static/acryl.html' })
148
148
  expect(res.status).toBe(200)
149
- expect(await res.text()).toBe('<h1>This is App.html</h1>')
149
+ expect(await res.text()).toBe('<h1>This is Acryl.html</h1>')
150
150
  expect(res.headers.get('content-type')).toBe('text/html; charset=utf-8')
151
151
  })
152
152
 
@@ -421,7 +421,7 @@ describe('Serve Static Middleware', () => {
421
421
 
422
422
  const res = await requestServer(server, { method: 'GET', path: '/static/symlink.html' })
423
423
  expect(res.status).toBe(200)
424
- expect(await res.text()).toBe('<h1>Hello App</h1>')
424
+ expect(await res.text()).toBe('<h1>Hello Acryl</h1>')
425
425
  } finally {
426
426
  rmSync(symlinkPath, { force: true })
427
427
  }
@@ -514,7 +514,7 @@ describe('Serve Static Middleware', () => {
514
514
  ]
515
515
  rootPaths.forEach((root) => {
516
516
  describe(root, () => {
517
- const app = new App()
517
+ const app = new Acryl()
518
518
  const server = createAdaptorServer(app)
519
519
  app.use('/static/*', serveStatic({ root }))
520
520
  app.use('/favicon.ico', serveStatic({ path: root + path.sep + 'favicon.ico' }))
@@ -523,7 +523,7 @@ describe('Serve Static Middleware', () => {
523
523
  const res = await requestServer(server, { method: 'GET', path: '/static' })
524
524
  expect(res.status).toBe(200)
525
525
  expect(res.headers.get('content-type')).toBe('text/html; charset=utf-8')
526
- expect(await res.text()).toBe('<h1>Hello App</h1>')
526
+ expect(await res.text()).toBe('<h1>Hello Acryl</h1>')
527
527
  })
528
528
 
529
529
  it('Should return correct headers and data for text', async () => {
@@ -551,7 +551,7 @@ describe('Serve Static Middleware', () => {
551
551
  rootPaths.forEach((root) => {
552
552
  optionPaths.forEach((optionPath) => {
553
553
  describe(`${root} + ${optionPath}`, () => {
554
- const app = new App()
554
+ const app = new Acryl()
555
555
  const server = createAdaptorServer(app)
556
556
 
557
557
  app.use(
@@ -573,7 +573,7 @@ describe('Serve Static Middleware', () => {
573
573
  })
574
574
 
575
575
  describe('Path traversal security tests', () => {
576
- const app = new App()
576
+ const app = new Acryl()
577
577
  const server = createAdaptorServer(app)
578
578
  app.use('/static/*', serveStatic({ root: './tests/adapter/assets' }))
579
579
 
@@ -613,7 +613,7 @@ describe('Serve Static Middleware', () => {
613
613
  })
614
614
 
615
615
  describe('Path mismatch security tests', () => {
616
- const app = new App()
616
+ const app = new Acryl()
617
617
  const server = createAdaptorServer(app)
618
618
 
619
619
  app.use('/static/admin/*', async (c, next) => {
@@ -673,7 +673,7 @@ describe('Serve Static Middleware', () => {
673
673
  ['/static/%E7%82%8E.txt', 'static/炎.txt'],
674
674
  ['/static/hello%20world.txt', 'static/hello world.txt'],
675
675
  ])('Should decode URI strings - %s', async (url, filePath) => {
676
- const fileApp = new App().use('/static/*', serveStatic({ root }))
676
+ const fileApp = new Acryl().use('/static/*', serveStatic({ root }))
677
677
  const res = await requestServer(createAdaptorServer(fileApp), {
678
678
  method: 'GET',
679
679
  path: url,
@@ -688,7 +688,7 @@ describe('Serve Static Middleware', () => {
688
688
  async (url) => {
689
689
  const onNotFound = vi.fn()
690
690
  const rewriteRequestPath = vi.fn((filePath: string) => filePath)
691
- const fileApp = new App().use(
691
+ const fileApp = new Acryl().use(
692
692
  '/static/*',
693
693
  serveStatic({ root, onNotFound, rewriteRequestPath })
694
694
  )
@@ -706,7 +706,7 @@ describe('Serve Static Middleware', () => {
706
706
  ['/static/100%25/hello.txt', 'static/100%/hello.txt'],
707
707
  ['/static/%2Fadmin/secret.txt', 'static/%2Fadmin/secret.txt'],
708
708
  ])('Should allow percent signs when opted in - %s', async (url, filePath) => {
709
- const fileApp = new App().use('/static/*', serveStatic({ root, allowPercentInPath: true }))
709
+ const fileApp = new Acryl().use('/static/*', serveStatic({ root, allowPercentInPath: true }))
710
710
 
711
711
  const res = await requestServer(createAdaptorServer(fileApp), { method: 'GET', path: url })
712
712
 
@@ -715,7 +715,7 @@ describe('Serve Static Middleware', () => {
715
715
  })
716
716
 
717
717
  it('Should not bypass authentication through a second decode', async () => {
718
- const protectedApp = new App()
718
+ const protectedApp = new Acryl()
719
719
  const rewriteRequestPath = vi.fn((filePath: string) => filePath)
720
720
  protectedApp.use('/static/admin/*', async (c) => c.text('Unauthorized', 401))
721
721
  protectedApp.use('/static/*', serveStatic({ root: './tests/adapter/assets', rewriteRequestPath }))
@@ -737,7 +737,7 @@ describe('Serve Static Middleware', () => {
737
737
  })
738
738
 
739
739
  it('Should pass the routed path and context to onNotFound, then continue', async () => {
740
- const fileApp = new App()
740
+ const fileApp = new Acryl()
741
741
  let hookPath: string | undefined
742
742
  let contextPath: string | undefined
743
743
  fileApp.use(
@@ -765,7 +765,7 @@ describe('Serve Static Middleware', () => {
765
765
  it.each(['/static/%2e%2e%5C100%.txt', '/static//100%.txt', '/static/%5C100%.txt'])(
766
766
  'Should retain path validation when opted in: %s',
767
767
  async (requestPath) => {
768
- const fileApp = new App()
768
+ const fileApp = new Acryl()
769
769
  const rewriteRequestPath = vi.fn((requestPath: string) => requestPath)
770
770
  const onNotFound = vi.fn()
771
771
  fileApp.use(
@@ -783,7 +783,7 @@ describe('Serve Static Middleware', () => {
783
783
  )
784
784
 
785
785
  it('Should preserve the fixed path option for percent filenames', async () => {
786
- const fileApp = new App()
786
+ const fileApp = new Acryl()
787
787
  fileApp.use('/static/*', serveStatic({ root, path: 'static/100%.txt' }))
788
788
  const res = await requestServer(createAdaptorServer(fileApp), {
789
789
  method: 'GET',
@@ -814,7 +814,7 @@ describe('Serve Static Middleware', () => {
814
814
  ;(process.platform === 'win32' ? it.skip : it)(
815
815
  'Should handle read permission errors gracefully',
816
816
  async () => {
817
- const app = new App()
817
+ const app = new Acryl()
818
818
  app.use('/static/*', serveStatic({ root: './tests/adapter/assets' }))
819
819
  const server = createAdaptorServer(app)
820
820
  await expect(
@@ -829,7 +829,7 @@ describe('Serve Static Middleware with wrong path', () => {
829
829
  it('Should show an error when the path is wrong', async () => {
830
830
  const logSpy = vi.spyOn(console, 'error')
831
831
 
832
- const app = new App<{
832
+ const app = new Acryl<{
833
833
  Variables: {
834
834
  path: string
835
835
  }
@@ -1,4 +1,4 @@
1
- import { App } from '../../../acryl-router/src/index.ts'
1
+ import { Acryl } from '../../../acryl-router/src/index.ts'
2
2
  import { bodyLimit } from '../../../acryl-router/src/middleware/index.ts'
3
3
  import fs from 'node:fs'
4
4
  import { request as requestHTTP } from 'node:http'
@@ -19,7 +19,7 @@ import { app } from './app.ts'
19
19
  const nodeVersionV20OrLater = parseInt(process.version.slice(1).split('.')[0]) >= 20
20
20
 
21
21
  const createBodyLimitApp = () => {
22
- const app = new App()
22
+ const app = new Acryl()
23
23
 
24
24
  app.post(
25
25
  '/',
@@ -1,4 +1,4 @@
1
- import { App } from '../../../acryl-router/src/index.ts'
1
+ import { Acryl } from '../../../acryl-router/src/index.ts'
2
2
  import { basicAuth } from '../../../acryl-router/src/middleware/index.ts'
3
3
  import { compress } from '../../../acryl-router/src/middleware/index.ts'
4
4
  import { etag } from '../../../acryl-router/src/middleware/index.ts'
@@ -46,11 +46,11 @@ describe('Basic', () => {
46
46
  const res = await requestServer(server, {
47
47
  method: 'GET',
48
48
  path: '/user-agent',
49
- headers: { 'user-agent': 'App' },
49
+ headers: { 'user-agent': 'Acryl' },
50
50
  })
51
51
  expect(res.status).toBe(200)
52
52
  expect(res.headers.get('content-type')).toMatch('text/plain')
53
- expect(await res.text()).toBe('App')
53
+ expect(await res.text()).toBe('Acryl')
54
54
  })
55
55
 
56
56
  it('Should return 302 response - POST /posts', async () => {
@@ -142,7 +142,7 @@ describe.each([
142
142
  ])('Caller-owned response headers over $protocol', ({ serverOptions, request }) => {
143
143
  it('should allow reusing the headers passed to c.body()', async () => {
144
144
  const headers = { 'content-type': 'text/plain' }
145
- const testApp = new App()
145
+ const testApp = new Acryl()
146
146
  testApp.get('/', (c) => c.body(new Uint8Array([104, 105]), 200, headers))
147
147
  const server = createAdaptorServer({ fetch: testApp.fetch, ...serverOptions })
148
148
 
@@ -166,7 +166,7 @@ describe.each([
166
166
  }
167
167
  const bodies = ['hi', 'hello', '']
168
168
  let index = 0
169
- const testApp = new App()
169
+ const testApp = new Acryl()
170
170
  testApp.get('/', () => new Response(makeBody(bodies[index++]), { headers }))
171
171
  const server = createAdaptorServer({ fetch: testApp.fetch, ...serverOptions })
172
172
 
@@ -189,7 +189,7 @@ describe('various response body types', () => {
189
189
  let resolveEventStreamPromise: () => void
190
190
  let resolveEventStreamWithoutTransferEncodingPromise: () => void
191
191
  beforeAll(() => {
192
- const app = new App()
192
+ const app = new Acryl()
193
193
  app.use('*', async (c, next) => {
194
194
  await next()
195
195
 
@@ -286,34 +286,34 @@ describe('various response body types', () => {
286
286
  })
287
287
  })
288
288
  app.get('/buffer', () => {
289
- const response = new Response(Buffer.from('Hello App!'), {
289
+ const response = new Response(Buffer.from('Hello Acryl!'), {
290
290
  headers: { 'content-type': 'text/plain' },
291
291
  })
292
292
  return response
293
293
  })
294
294
  app.get('/text-with-content-length-object', () => {
295
- const response = new Response('Hello App!', {
296
- headers: { 'content-type': 'text/plain', 'content-length': '00010' },
295
+ const response = new Response('Hello Acryl!', {
296
+ headers: { 'content-type': 'text/plain', 'content-length': '00012' },
297
297
  })
298
298
  return response
299
299
  })
300
300
  app.get('/text-with-content-length-headers', () => {
301
- const response = new Response('Hello App!', {
302
- headers: new Headers({ 'content-type': 'text/plain', 'content-length': '00010' }),
301
+ const response = new Response('Hello Acryl!', {
302
+ headers: new Headers({ 'content-type': 'text/plain', 'content-length': '00012' }),
303
303
  })
304
304
  return response
305
305
  })
306
306
  app.get('/text-with-content-length-array', () => {
307
- const response = new Response('Hello App!', {
307
+ const response = new Response('Hello Acryl!', {
308
308
  headers: [
309
309
  ['content-type', 'text/plain'],
310
- ['content-length', '00010'],
310
+ ['content-length', '00012'],
311
311
  ],
312
312
  })
313
313
  return response
314
314
  })
315
315
  app.get('/text-with-set-cookie-array', () => {
316
- const response = new Response('Hello App!', {
316
+ const response = new Response('Hello Acryl!', {
317
317
  headers: [
318
318
  ['content-type', 'text/plain'],
319
319
  ['set-cookie', 'a=1'],
@@ -325,7 +325,7 @@ describe('various response body types', () => {
325
325
 
326
326
  app.use('/etag/*', etag())
327
327
  app.get('/etag/buffer', () => {
328
- const response = new Response(Buffer.from('Hello App!'), {
328
+ const response = new Response(Buffer.from('Hello Acryl!'), {
329
329
  headers: { 'content-type': 'text/plain' },
330
330
  })
331
331
  return response
@@ -442,8 +442,8 @@ describe('various response body types', () => {
442
442
  const res = await requestServer(server, { method: 'GET', path: '/buffer' })
443
443
  expect(res.status).toBe(200)
444
444
  expect(res.headers.get('content-type')).toMatch('text/plain')
445
- expect(res.headers.get('content-length')).toMatch('10')
446
- expect(await res.text()).toBe('Hello App!')
445
+ expect(res.headers.get('content-length')).toMatch('12')
446
+ expect(await res.text()).toBe('Hello Acryl!')
447
447
  })
448
448
 
449
449
  it('Should return 200 response - GET /text-with-content-length-object', async () => {
@@ -453,8 +453,8 @@ describe('various response body types', () => {
453
453
  })
454
454
  expect(res.status).toBe(200)
455
455
  expect(res.headers.get('content-type')).toMatch('text/plain')
456
- expect(res.headers.get('content-length')).toBe('00010')
457
- expect(await res.text()).toBe('Hello App!')
456
+ expect(res.headers.get('content-length')).toBe('00012')
457
+ expect(await res.text()).toBe('Hello Acryl!')
458
458
  })
459
459
 
460
460
  it('Should return 200 response - GET /text-with-content-length-headers', async () => {
@@ -464,8 +464,8 @@ describe('various response body types', () => {
464
464
  })
465
465
  expect(res.status).toBe(200)
466
466
  expect(res.headers.get('content-type')).toMatch('text/plain')
467
- expect(res.headers.get('content-length')).toBe('00010')
468
- expect(await res.text()).toBe('Hello App!')
467
+ expect(res.headers.get('content-length')).toBe('00012')
468
+ expect(await res.text()).toBe('Hello Acryl!')
469
469
  })
470
470
 
471
471
  it('Should return 200 response - GET /text-with-content-length-array', async () => {
@@ -475,8 +475,8 @@ describe('various response body types', () => {
475
475
  })
476
476
  expect(res.status).toBe(200)
477
477
  expect(res.headers.get('content-type')).toMatch('text/plain')
478
- expect(res.headers.get('content-length')).toBe('00010')
479
- expect(await res.text()).toBe('Hello App!')
478
+ expect(res.headers.get('content-length')).toBe('00012')
479
+ expect(await res.text()).toBe('Hello Acryl!')
480
480
  })
481
481
 
482
482
  it('Should return 200 response - GET /text-with-set-cookie-array', async () => {
@@ -487,16 +487,16 @@ describe('various response body types', () => {
487
487
  expect(res.status).toBe(200)
488
488
  expect(res.headers.get('content-type')).toMatch('text/plain')
489
489
  expect(res.headers.getSetCookie()).toEqual(['a=1', 'b=2'])
490
- expect(await res.text()).toBe('Hello App!')
490
+ expect(await res.text()).toBe('Hello Acryl!')
491
491
  })
492
492
 
493
493
  it('Should return 200 response - GET /etag/buffer', async () => {
494
494
  const res = await requestServer(server, { method: 'GET', path: '/etag/buffer' })
495
495
  expect(res.status).toBe(200)
496
496
  expect(res.headers.get('content-type')).toMatch('text/plain')
497
- expect(res.headers.get('etag')).toMatch('"a4b794176ec9cd86063d6a0075c27385b32ec9b4"')
498
- expect(res.headers.get('content-length')).toMatch('10')
499
- expect(await res.text()).toBe('Hello App!')
497
+ expect(res.headers.get('etag')).toMatch('"687f9e1bf5c0384d6b9cb63d0f6f0ba1803b2669"')
498
+ expect(res.headers.get('content-length')).toMatch('12')
499
+ expect(await res.text()).toBe('Hello Acryl!')
500
500
  })
501
501
  }
502
502
 
@@ -511,14 +511,14 @@ describe('various response body types', () => {
511
511
 
512
512
  describe('Routing', () => {
513
513
  describe('Nested Route', () => {
514
- const book = new App()
514
+ const book = new Acryl()
515
515
  book.get('/', (c) => c.text('get /book'))
516
516
  book.get('/:id', (c) => {
517
517
  return c.text('get /book/' + c.req.param('id'))
518
518
  })
519
519
  book.post('/', (c) => c.text('post /book'))
520
520
 
521
- const app = new App()
521
+ const app = new Acryl()
522
522
  app.route('/book', book)
523
523
 
524
524
  const server = createAdaptorServer(app)
@@ -539,7 +539,7 @@ describe('Routing', () => {
539
539
  })
540
540
 
541
541
  describe('Chained route', () => {
542
- const app = new App()
542
+ const app = new Acryl()
543
543
 
544
544
  app
545
545
  .get('/chained/:abc', (c) => {
@@ -568,7 +568,7 @@ describe('Routing', () => {
568
568
  })
569
569
 
570
570
  describe('Request body', () => {
571
- const app = new App()
571
+ const app = new Acryl()
572
572
  app.post('/json', async (c) => {
573
573
  const data = await c.req.json()
574
574
  return c.json(data)
@@ -604,7 +604,7 @@ describe('Request body', () => {
604
604
 
605
605
  describe('Response body', () => {
606
606
  describe('Cached Response', () => {
607
- const app = new App()
607
+ const app = new Acryl()
608
608
  app.get('/json', (c) => {
609
609
  return c.json({ foo: 'bar' })
610
610
  })
@@ -649,7 +649,7 @@ describe('Response body', () => {
649
649
  })
650
650
 
651
651
  describe('Fallback to global.Response', () => {
652
- const app = new App()
652
+ const app = new Acryl()
653
653
 
654
654
  app.get('/json-blob', async () => {
655
655
  return new Response(new Blob([JSON.stringify({ foo: 'blob' })]), {
@@ -682,7 +682,7 @@ describe('Response body', () => {
682
682
  })
683
683
 
684
684
  describe('Middleware', () => {
685
- const app = new App<{ Variables: { foo: string } }>()
685
+ const app = new Acryl<{ Variables: { foo: string } }>()
686
686
  app.use('*', poweredBy())
687
687
  app.use('*', async (c, next) => {
688
688
  c.set('foo', 'bar')
@@ -695,13 +695,13 @@ describe('Middleware', () => {
695
695
  it('Should have correct header values', async () => {
696
696
  const res = await requestServer(server, { method: 'GET', path: '/' })
697
697
  expect(res.status).toBe(200)
698
- expect(res.headers.get('x-powered-by')).toBe('ACRYL')
698
+ expect(res.headers.get('x-powered-by')).toBe('Acryl')
699
699
  expect(res.headers.get('foo')).toBe('bar')
700
700
  })
701
701
  })
702
702
 
703
703
  describe('Error handling', () => {
704
- const app = new App()
704
+ const app = new Acryl()
705
705
  app.notFound((c) => {
706
706
  return c.text('Custom NotFound', 404)
707
707
  })
@@ -732,7 +732,7 @@ describe('Error handling', () => {
732
732
  })
733
733
 
734
734
  describe('Basic Auth Middleware', () => {
735
- const app = new App()
735
+ const app = new Acryl()
736
736
  const username = 'acryl-user-a'
737
737
  const password = 'acryl-password-a'
738
738
  const unicodePassword = '炎'
@@ -788,7 +788,7 @@ describe('Basic Auth Middleware', () => {
788
788
  })
789
789
 
790
790
  describe('Stream and non-stream response', () => {
791
- const app = new App()
791
+ const app = new Acryl()
792
792
 
793
793
  app.get('/json', (c) => c.json({ foo: 'bar' }))
794
794
  app.get('/text', (c) => c.text('Hello!'))
@@ -873,7 +873,7 @@ describe('Stream and non-stream response', () => {
873
873
  })
874
874
 
875
875
  describe('SSL', () => {
876
- const app = new App()
876
+ const app = new Acryl()
877
877
  app.get('/', (c) => c.text('Hello! Node!'))
878
878
  app.get('/url', (c) => c.text(c.req.url))
879
879
 
@@ -905,7 +905,7 @@ describe('SSL', () => {
905
905
  })
906
906
 
907
907
  describe('HTTP2', () => {
908
- const app = new App()
908
+ const app = new Acryl()
909
909
  app.get('/', (c) => c.text('Hello! Node!'))
910
910
  app.get('/headers', (c) => {
911
911
  // call newRequestFromIncoming
@@ -949,8 +949,8 @@ describe('HTTP2', () => {
949
949
  })
950
950
  })
951
951
 
952
- describe('App compression default gzip', () => {
953
- const app = new App()
952
+ describe('Acryl compression default gzip', () => {
953
+ const app = new Acryl()
954
954
  app.use('*', compress())
955
955
 
956
956
  app.notFound((c) => {
@@ -1013,8 +1013,8 @@ describe('App compression default gzip', () => {
1013
1013
  })
1014
1014
  })
1015
1015
 
1016
- describe('App compression deflate', () => {
1017
- const app = new App()
1016
+ describe('Acryl compression deflate', () => {
1017
+ const app = new Acryl()
1018
1018
  app.use('*', compress({ encoding: 'deflate' }))
1019
1019
 
1020
1020
  app.notFound((c) => {
@@ -1078,7 +1078,7 @@ describe('App compression deflate', () => {
1078
1078
  })
1079
1079
 
1080
1080
  describe('set child response to c.res', () => {
1081
- const app = new App()
1081
+ const app = new Acryl()
1082
1082
  app.use('*', async (c, next) => {
1083
1083
  await next()
1084
1084
  c.res = new Response('', c.res)
@@ -1101,7 +1101,7 @@ describe('Headers appended to a raw Response after construction (issue #304)', (
1101
1101
  // Regression test: a handler returning `new Response(body, init)` and
1102
1102
  // appending headers (e.g. `Set-Cookie`) afterwards must not lose those
1103
1103
  // headers when middleware later clones the response via `new Response(...)`.
1104
- const app = new App()
1104
+ const app = new Acryl()
1105
1105
  app.use('*', async (c, next) => {
1106
1106
  await next()
1107
1107
  // Mimics what middleware such as `cors`/`compress` does internally.
@@ -1127,7 +1127,7 @@ describe('Headers appended to a raw Response after construction (issue #304)', (
1127
1127
  })
1128
1128
 
1129
1129
  describe('forwarding IncomingMessage and ServerResponse in env', () => {
1130
- const app = new App<{ Bindings: HttpBindings }>()
1130
+ const app = new Acryl<{ Bindings: HttpBindings }>()
1131
1131
  app.get('/', (c) =>
1132
1132
  c.json({
1133
1133
  incoming: c.env.incoming.constructor.name,
@@ -1151,7 +1151,7 @@ describe('forwarding IncomingMessage and ServerResponse in env', () => {
1151
1151
  })
1152
1152
 
1153
1153
  describe('overrideGlobalObjects', () => {
1154
- const app = new App()
1154
+ const app = new Acryl()
1155
1155
 
1156
1156
  beforeEach(() => {
1157
1157
  Object.defineProperty(global, 'Headers', {
@@ -1201,7 +1201,7 @@ describe('Memory leak test', () => {
1201
1201
  const registry = new FinalizationRegistry(() => {
1202
1202
  counter--
1203
1203
  })
1204
- const app = new App()
1204
+ const app = new Acryl()
1205
1205
  const server = createAdaptorServer(app)
1206
1206
 
1207
1207
  let onAbort: () => void
@@ -1286,7 +1286,7 @@ describe('Memory leak test', () => {
1286
1286
  })
1287
1287
 
1288
1288
  describe('serve', () => {
1289
- const app = new App()
1289
+ const app = new Acryl()
1290
1290
  app.get('/', (c) => c.newResponse(null, 200))
1291
1291
  serve(app)
1292
1292
 
@@ -1,15 +1,15 @@
1
- import { App } from '../../../../acryl-router/src/index.ts'
1
+ import { Acryl } from '../../../../acryl-router/src/index.ts'
2
2
  import type { HttpBindings } from '../../../src/adapter/index.ts'
3
3
  import { createAdaptorServer } from '../../../src/adapter/server.ts'
4
4
  import { RESPONSE_ALREADY_SENT } from '../../../src/adapter/utils/response.ts'
5
5
  import { requestServer } from '../helpers/request.ts'
6
6
 
7
7
  describe('RESPONSE_ALREADY_SENT', () => {
8
- const app = new App<{ Bindings: HttpBindings }>()
8
+ const app = new Acryl<{ Bindings: HttpBindings }>()
9
9
  app.get('/', (c) => {
10
10
  const { outgoing } = c.env
11
11
  outgoing.writeHead(200, { 'Content-Type': 'text/plain' })
12
- outgoing.end('App!')
12
+ outgoing.end('Acryl!')
13
13
  return RESPONSE_ALREADY_SENT
14
14
  })
15
15
  const server = createAdaptorServer(app)
@@ -18,6 +18,6 @@ describe('RESPONSE_ALREADY_SENT', () => {
18
18
  const res = await requestServer(server, { method: 'GET', path: '/' })
19
19
  expect(res.status).toBe(200)
20
20
  expect(res.headers.get('content-type')).toMatch('text/plain')
21
- expect(await res.text()).toBe('App!')
21
+ expect(await res.text()).toBe('Acryl!')
22
22
  })
23
23
  })
@@ -1,11 +1,11 @@
1
- import { App } from '../../../acryl-router/src/index.ts'
1
+ import { Acryl } from '../../../acryl-router/src/index.ts'
2
2
  import { WebSocket, WebSocketServer } from 'ws'
3
3
  import { connect } from 'node:net'
4
4
  import type { AddressInfo } from 'node:net'
5
5
  import { createAdaptorServer, upgradeWebSocket } from '../../src/adapter/index.ts'
6
6
 
7
7
  describe('WebSocket', () => {
8
- const startServer = (app: App) => {
8
+ const startServer = (app: Acryl) => {
9
9
  const wss = new WebSocketServer({ noServer: true })
10
10
  const server = createAdaptorServer({ fetch: app.fetch, websocket: { server: wss } })
11
11
  return new Promise<{ server: ReturnType<typeof createAdaptorServer>; address: AddressInfo }>(
@@ -18,7 +18,7 @@ describe('WebSocket', () => {
18
18
  }
19
19
 
20
20
  it('should connect with upgradeWebSocket without manual injection', async () => {
21
- const app = new App()
21
+ const app = new Acryl()
22
22
 
23
23
  app.get(
24
24
  '/ws',
@@ -50,7 +50,7 @@ describe('WebSocket', () => {
50
50
  })
51
51
 
52
52
  it('should reject WebSocket upgrade when route is not upgraded', async () => {
53
- const app = new App()
53
+ const app = new Acryl()
54
54
  app.get('/ws', (c) => c.text('ok'))
55
55
 
56
56
  const { server, address } = await startServer(app)
@@ -71,7 +71,7 @@ describe('WebSocket', () => {
71
71
  })
72
72
 
73
73
  it('should forward response headers set by middleware on a successful upgrade', async () => {
74
- const app = new App()
74
+ const app = new Acryl()
75
75
 
76
76
  app.use(async (c, next) => {
77
77
  await next()
@@ -106,7 +106,7 @@ describe('WebSocket', () => {
106
106
  })
107
107
 
108
108
  it('should forward response headers when the upgrade is rejected', async () => {
109
- const app = new App()
109
+ const app = new Acryl()
110
110
 
111
111
  app.get(
112
112
  '/ws',
@@ -138,7 +138,7 @@ describe('WebSocket', () => {
138
138
  })
139
139
 
140
140
  it('should not block other upgrade listeners', async () => {
141
- const app = new App()
141
+ const app = new Acryl()
142
142
  const { server, address } = await startServer(app)
143
143
  const wss = new WebSocketServer({ noServer: true })
144
144
 
@@ -165,7 +165,7 @@ describe('WebSocket', () => {
165
165
  })
166
166
 
167
167
  it('should call onError with the underlying error when the raw socket errors', async () => {
168
- const app = new App()
168
+ const app = new Acryl()
169
169
  const receivedError = new Error('boom')
170
170
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
171
171
  let rawWs: any
@@ -210,7 +210,7 @@ describe('WebSocket', () => {
210
210
  liveCount--
211
211
  })
212
212
 
213
- const app = new App()
213
+ const app = new Acryl()
214
214
  app.use('/ws', async (c, next) => {
215
215
  liveCount++
216
216
  registry.register((c.env as { incoming: object }).incoming, 'incoming')