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
@@ -2,11 +2,11 @@ import { HttpResponse, http } from 'msw'
2
2
  import { setupServer } from 'msw/node'
3
3
  import { jwk } from './index.ts'
4
4
  import { setSignedCookie } from '../../helper/cookie/index.ts'
5
- import { App } from '../../app.ts'
5
+ import { Acryl } from '../../app.ts'
6
6
  import { HTTPException } from '../../http-exception.ts'
7
7
  import { encodeBase64Url } from '../../utils/encode.ts'
8
8
  import { Jwt } from '../../utils/jwt/index.ts'
9
- import type { AppJsonWebKey } from '../../utils/jwt/jws.ts'
9
+ import type { AcrylJsonWebKey } from '../../utils/jwt/jws.ts'
10
10
  import { signing } from '../../utils/jwt/jws.ts'
11
11
  import { verifyWithJwks } from '../../utils/jwt/jwt.ts'
12
12
  import type { JWTPayload } from '../../utils/jwt/types.ts'
@@ -50,7 +50,7 @@ describe('JWK', () => {
50
50
  handlerExecuted = false
51
51
  })
52
52
 
53
- const app = new App()
53
+ const app = new Acryl()
54
54
 
55
55
  app.use('/backend-auth-or-anon/*', jwk({ keys: verify_keys, allow_anon: true, alg: ['RS256'] }))
56
56
 
@@ -117,7 +117,7 @@ describe('JWK', () => {
117
117
  handlerExecuted = false
118
118
  })
119
119
 
120
- const app = new App()
120
+ const app = new Acryl()
121
121
 
122
122
  app.use('/auth-with-keys/*', jwk({ keys: verify_keys, alg: ['RS256'] }))
123
123
  app.use('/auth-with-keys-unicode/*', jwk({ keys: verify_keys, alg: ['RS256'] }))
@@ -301,7 +301,7 @@ describe('JWK', () => {
301
301
  encodeBase64Url(utf8Encoder.encode(JSON.stringify(part)).buffer).replace(/=/g, '')
302
302
  const encodeSignaturePart = (buf: ArrayBufferLike): string =>
303
303
  encodeBase64Url(buf).replace(/=/g, '')
304
- const jwtSignWithoutHeader = async (payload: JWTPayload, privateKey: AppJsonWebKey) => {
304
+ const jwtSignWithoutHeader = async (payload: JWTPayload, privateKey: AcrylJsonWebKey) => {
305
305
  const encodedPayload = encodeJwtPart(payload)
306
306
  const signaturePart = await signing(
307
307
  privateKey,
@@ -328,7 +328,7 @@ describe('JWK', () => {
328
328
  encodeBase64Url(utf8Encoder.encode(JSON.stringify(part)).buffer).replace(/=/g, '')
329
329
  const encodeSignaturePart = (buf: ArrayBufferLike): string =>
330
330
  encodeBase64Url(buf).replace(/=/g, '')
331
- const jwtSignWithoutKid = async (payload: JWTPayload, privateKey: AppJsonWebKey) => {
331
+ const jwtSignWithoutKid = async (payload: JWTPayload, privateKey: AcrylJsonWebKey) => {
332
332
  const encodedPayload = encodeJwtPart(payload)
333
333
  const encodedHeader = encodeJwtPart({ alg: privateKey.alg, typ: 'JWT' })
334
334
  const partialToken = `${encodedHeader}.${encodedPayload}`
@@ -490,7 +490,7 @@ describe('JWK', () => {
490
490
  handlerExecuted = false
491
491
  })
492
492
 
493
- const app = new App()
493
+ const app = new Acryl()
494
494
 
495
495
  app.use(
496
496
  '/auth-with-keys/*',
@@ -587,7 +587,7 @@ describe('JWK', () => {
587
587
  handlerExecuted = false
588
588
  })
589
589
 
590
- const app = new App()
590
+ const app = new Acryl()
591
591
 
592
592
  app.use('/auth-with-keys/*', jwk({ keys: verify_keys, cookie: 'access_token', alg: ['RS256'] }))
593
593
  app.use(
@@ -734,7 +734,7 @@ describe('JWK', () => {
734
734
  handlerExecuted = false
735
735
  })
736
736
 
737
- const app = new App()
737
+ const app = new Acryl()
738
738
  const test_secret = 'Shhh'
739
739
 
740
740
  app.use(
@@ -826,7 +826,7 @@ describe('JWK', () => {
826
826
  })
827
827
 
828
828
  describe('Error handling with `cause`', () => {
829
- const app = new App()
829
+ const app = new Acryl()
830
830
 
831
831
  app.use('/auth-with-keys/*', jwk({ keys: verify_keys, alg: ['RS256'] }))
832
832
  app.get('/auth-with-keys/*', (c) => c.text('Authorized'))
@@ -866,7 +866,7 @@ describe('JWK', () => {
866
866
  return Date.now() / 1000 - 100
867
867
  }
868
868
 
869
- const app = new App()
869
+ const app = new Acryl()
870
870
 
871
871
  app.use('/auth-with-keys-default/*', jwk({ keys: verify_keys, alg: ['RS256'] }))
872
872
  app.use(
@@ -989,7 +989,7 @@ describe('JWK', () => {
989
989
  handlerExecuted = false
990
990
  })
991
991
 
992
- const app = new App()
992
+ const app = new Acryl()
993
993
 
994
994
  // Only allow RS256
995
995
  app.use('/auth-whitelist-rs256/*', jwk({ keys: verify_keys, alg: ['RS256'] }))
@@ -1079,7 +1079,7 @@ describe('JWK', () => {
1079
1079
  })
1080
1080
  describe('WWW-Authenticate realm', () => {
1081
1081
  it('Should default to the request URL', async () => {
1082
- const app = new App()
1082
+ const app = new Acryl()
1083
1083
  app.use('/auth/*', jwk({ keys: verify_keys, alg: ['RS256'] }))
1084
1084
  app.get('/auth/*', (c) => c.text('ok'))
1085
1085
 
@@ -1092,7 +1092,7 @@ describe('JWK', () => {
1092
1092
  })
1093
1093
 
1094
1094
  it('Should use the configured realm', async () => {
1095
- const app = new App()
1095
+ const app = new Acryl()
1096
1096
  app.use('/auth/*', jwk({ keys: verify_keys, alg: ['RS256'], realm: 'my-api' }))
1097
1097
  app.get('/auth/*', (c) => c.text('ok'))
1098
1098
 
@@ -1105,7 +1105,7 @@ describe('JWK', () => {
1105
1105
  })
1106
1106
 
1107
1107
  it('Should use the configured realm for an invalid token', async () => {
1108
- const app = new App()
1108
+ const app = new Acryl()
1109
1109
  app.use('/auth/*', jwk({ keys: verify_keys, alg: ['RS256'], realm: 'my-api' }))
1110
1110
  app.get('/auth/*', (c) => c.text('ok'))
1111
1111
 
@@ -1120,7 +1120,7 @@ describe('JWK', () => {
1120
1120
  })
1121
1121
 
1122
1122
  it('Should escape double quotes in the realm', async () => {
1123
- const app = new App()
1123
+ const app = new Acryl()
1124
1124
  app.use('/auth/*', jwk({ keys: verify_keys, alg: ['RS256'], realm: 'my "quoted" api' }))
1125
1125
  app.get('/auth/*', (c) => c.text('ok'))
1126
1126
 
@@ -1,25 +1,26 @@
1
1
  /**
2
2
  * @module
3
- * JWK Auth Middleware for App.
3
+ * JWK Auth Middleware for Acryl.
4
4
  */
5
5
 
6
6
  import type { Context } from '../../context.ts'
7
7
  import { getCookie, getSignedCookie } from '../../helper/cookie/index.ts'
8
8
  import { HTTPException } from '../../http-exception.ts'
9
9
  import type { MiddlewareHandler } from '../../types.ts'
10
+ import type { BufferSource } from '../../utils/types.ts'
10
11
  import type { CookiePrefixOptions } from '../../utils/cookie.ts'
11
12
  import { Jwt } from '../../utils/jwt/index.ts'
12
13
  import '../../context.ts'
13
14
  import type { AsymmetricAlgorithm } from '../../utils/jwt/jwa.ts'
14
- import type { AppJsonWebKey } from '../../utils/jwt/jws.ts'
15
+ import type { AcrylJsonWebKey } from '../../utils/jwt/jws.ts'
15
16
  import type { VerifyOptions } from '../../utils/jwt/jwt.ts'
16
17
 
17
18
  /**
18
- * JWK Auth Middleware for App.
19
+ * JWK Auth Middleware for Acryl.
19
20
  *
20
21
  *
21
22
  * @param {object} options - The options for the JWK middleware.
22
- * @param {AppJsonWebKey[] | ((ctx: Context) => Promise<AppJsonWebKey[]> | AppJsonWebKey[])} [options.keys] - The public keys used for JWK verification, or a function that returns them.
23
+ * @param {AcrylJsonWebKey[] | ((ctx: Context) => Promise<AcrylJsonWebKey[]> | AcrylJsonWebKey[])} [options.keys] - The public keys used for JWK verification, or a function that returns them.
23
24
  * @param {string | ((ctx: Context) => Promise<string> | string)} [options.jwks_uri] - If set to a URI string or a function that returns a URI string, attempt to fetch JWKs from it. The response must be a JSON object containing a `keys` array, which will be merged with the `keys` option.
24
25
  * @param {boolean} [options.allow_anon] - If set to `true`, the middleware allows requests without a token to proceed without authentication.
25
26
  * @param {string} [options.cookie] - If set, the middleware attempts to retrieve the token from a cookie with these options (optionally signed) only if no token is found in the header.
@@ -32,7 +33,7 @@ import type { VerifyOptions } from '../../utils/jwt/jwt.ts'
32
33
  *
33
34
  * @example
34
35
  * ```ts
35
- * const app = new App()
36
+ * const app = new Acryl()
36
37
  *
37
38
  * app.use("/auth/*", jwk({
38
39
  * jwks_uri: (c) => `https://${c.env.authServer}/.well-known/jwks.json`,
@@ -47,7 +48,7 @@ import type { VerifyOptions } from '../../utils/jwt/jwt.ts'
47
48
 
48
49
  export const jwk = (
49
50
  options: {
50
- keys?: AppJsonWebKey[] | ((ctx: Context) => Promise<AppJsonWebKey[]> | AppJsonWebKey[])
51
+ keys?: AcrylJsonWebKey[] | ((ctx: Context) => Promise<AcrylJsonWebKey[]> | AcrylJsonWebKey[])
51
52
  jwks_uri?: string | ((ctx: Context) => Promise<string> | string)
52
53
  allow_anon?: boolean
53
54
  cookie?:
@@ -1,7 +1,7 @@
1
1
  import { describe, expectTypeOf } from 'vitest'
2
2
  import { jwt } from './index.ts'
3
3
  import type { JwtVariables } from './index.ts'
4
- import { App } from '../../app.ts'
4
+ import { Acryl } from '../../app.ts'
5
5
  import { HTTPException } from '../../http-exception.ts'
6
6
 
7
7
  describe('JWT', () => {
@@ -12,7 +12,7 @@ describe('JWT', () => {
12
12
  handlerExecuted = false
13
13
  })
14
14
 
15
- const app = new App()
15
+ const app = new Acryl()
16
16
 
17
17
  app.use('/auth/*', jwt({ secret: 'a-secret', alg: 'HS256' }))
18
18
  app.use('/auth-unicode/*', jwt({ secret: 'a-secret', alg: 'HS256' }))
@@ -159,7 +159,7 @@ describe('JWT', () => {
159
159
  handlerExecuted = false
160
160
  })
161
161
 
162
- const app = new App()
162
+ const app = new Acryl()
163
163
 
164
164
  app.use(
165
165
  '/auth/*',
@@ -352,7 +352,7 @@ describe('JWT', () => {
352
352
  handlerExecuted = false
353
353
  })
354
354
 
355
- const app = new App()
355
+ const app = new Acryl()
356
356
 
357
357
  app.use('/auth/*', jwt({ secret: 'a-secret', alg: 'HS256', cookie: 'access_token' }))
358
358
  app.use('/auth-unicode/*', jwt({ secret: 'a-secret', alg: 'HS256', cookie: 'access_token' }))
@@ -441,7 +441,7 @@ describe('JWT', () => {
441
441
  })
442
442
 
443
443
  describe('Error handling with `cause`', () => {
444
- const app = new App()
444
+ const app = new Acryl()
445
445
 
446
446
  app.use('/auth/*', jwt({ secret: 'a-secret', alg: 'HS256' }))
447
447
  app.get('/auth/*', (c) => c.text('Authorized'))
@@ -473,7 +473,7 @@ describe('JWT', () => {
473
473
  handlerExecuted = false
474
474
  })
475
475
 
476
- const app = new App()
476
+ const app = new Acryl()
477
477
 
478
478
  app.use(
479
479
  '/auth/*',
@@ -526,7 +526,7 @@ describe('JWT', () => {
526
526
  handlerExecuted = false
527
527
  })
528
528
 
529
- const app = new App()
529
+ const app = new Acryl()
530
530
 
531
531
  app.use(
532
532
  '/auth/*',
@@ -578,7 +578,7 @@ describe('JWT', () => {
578
578
  handlerExecuted = false
579
579
  })
580
580
 
581
- const app = new App()
581
+ const app = new Acryl()
582
582
 
583
583
  app.use(
584
584
  '/auth/*',
@@ -630,7 +630,7 @@ describe('JWT', () => {
630
630
  handlerExecuted = false
631
631
  })
632
632
 
633
- const app = new App()
633
+ const app = new Acryl()
634
634
 
635
635
  app.use(
636
636
  '/auth/*',
@@ -683,7 +683,7 @@ describe('JWT', () => {
683
683
  })
684
684
 
685
685
  it('Should reject tokens with mismatched algorithm', async () => {
686
- const app = new App()
686
+ const app = new Acryl()
687
687
 
688
688
  // Configure middleware to expect RS256
689
689
  app.use('/auth/*', jwt({ secret: 'a-secret', alg: 'RS256' }))
@@ -725,7 +725,7 @@ describe('JWT', () => {
725
725
  isAdmin: boolean
726
726
  }
727
727
 
728
- const app = new App<{ Variables: JwtVariables<User> }>()
728
+ const app = new Acryl<{ Variables: JwtVariables<User> }>()
729
729
 
730
730
  app.get('/', (c) => {
731
731
  const payload = c.var.jwtPayload
@@ -735,7 +735,7 @@ describe('JWT', () => {
735
735
  })
736
736
 
737
737
  it('Should infer unknown when JwtVariables is used without type parameter in Variables', () => {
738
- const app = new App<{ Variables: JwtVariables }>()
738
+ const app = new Acryl<{ Variables: JwtVariables }>()
739
739
 
740
740
  app.get('/', (c) => {
741
741
  const payload = c.var.jwtPayload
@@ -746,7 +746,7 @@ describe('JWT', () => {
746
746
  })
747
747
  describe('WWW-Authenticate realm', () => {
748
748
  it('Should default to the request URL', async () => {
749
- const app = new App()
749
+ const app = new Acryl()
750
750
  app.use('/auth/*', jwt({ secret: 'a-secret', alg: 'HS256' }))
751
751
  app.get('/auth/*', (c) => c.text('ok'))
752
752
 
@@ -759,7 +759,7 @@ describe('JWT', () => {
759
759
  })
760
760
 
761
761
  it('Should use the configured realm', async () => {
762
- const app = new App()
762
+ const app = new Acryl()
763
763
  app.use('/auth/*', jwt({ secret: 'a-secret', alg: 'HS256', realm: 'my-api' }))
764
764
  app.get('/auth/*', (c) => c.text('ok'))
765
765
 
@@ -772,7 +772,7 @@ describe('JWT', () => {
772
772
  })
773
773
 
774
774
  it('Should use the configured realm for an invalid token', async () => {
775
- const app = new App()
775
+ const app = new Acryl()
776
776
  app.use('/auth/*', jwt({ secret: 'a-secret', alg: 'HS256', realm: 'my-api' }))
777
777
  app.get('/auth/*', (c) => c.text('ok'))
778
778
 
@@ -787,7 +787,7 @@ describe('JWT', () => {
787
787
  })
788
788
 
789
789
  it('Should escape double quotes in the realm', async () => {
790
- const app = new App()
790
+ const app = new Acryl()
791
791
  app.use('/auth/*', jwt({ secret: 'a-secret', alg: 'HS256', realm: 'my "quoted" api' }))
792
792
  app.get('/auth/*', (c) => c.text('ok'))
793
793
 
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * @module
3
- * JWT Auth Middleware for App.
3
+ * JWT Auth Middleware for Acryl.
4
4
  */
5
5
 
6
6
  import type { Context } from '../../context.ts'
7
7
  import { getCookie, getSignedCookie } from '../../helper/cookie/index.ts'
8
8
  import { HTTPException } from '../../http-exception.ts'
9
9
  import type { MiddlewareHandler } from '../../types.ts'
10
+ import type { BufferSource } from '../../utils/types.ts'
10
11
  import type { CookiePrefixOptions } from '../../utils/cookie.ts'
11
12
  import { Jwt } from '../../utils/jwt/index.ts'
12
13
  import '../../context.ts'
@@ -20,7 +21,7 @@ export type JwtVariables<T = any> = {
20
21
  }
21
22
 
22
23
  /**
23
- * JWT Auth Middleware for App.
24
+ * JWT Auth Middleware for Acryl.
24
25
  *
25
26
  *
26
27
  * @param {object} options - The options for the JWT middleware.
@@ -34,7 +35,7 @@ export type JwtVariables<T = any> = {
34
35
  *
35
36
  * @example
36
37
  * ```ts
37
- * const app = new App()
38
+ * const app = new Acryl()
38
39
  *
39
40
  * app.use(
40
41
  * '/auth/*',
@@ -1,10 +1,10 @@
1
1
  import { languageDetector } from './index.ts'
2
- import { App } from '../../app.ts'
2
+ import { Acryl } from '../../app.ts'
3
3
  import { DEFAULT_OPTIONS, detectors, normalizeLanguage } from './language.ts'
4
4
 
5
5
  describe('languageDetector', () => {
6
6
  const createTestApp = (options = {}) => {
7
- const app = new App()
7
+ const app = new Acryl()
8
8
 
9
9
  app.use('/*', languageDetector(options))
10
10
 
@@ -292,7 +292,7 @@ describe('languageDetector', () => {
292
292
  })
293
293
 
294
294
  it('should detect language from original URL when getPath modifies the path', async () => {
295
- const app = new App({
295
+ const app = new Acryl({
296
296
  getPath: (req) => {
297
297
  const url = new URL(req.url)
298
298
  let pathname = url.pathname
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * Language module for App.
3
+ * Language module for Acryl.
4
4
  */
5
5
  import type { Context } from '../../context.ts'
6
6
  import { setCookie, getCookie } from '../../helper/cookie/index.ts'
@@ -274,12 +274,12 @@ const detectLanguage = (c: Context, options: DetectorOptions): string => {
274
274
  /**
275
275
  * Language detector middleware factory
276
276
  * @param userOptions Configuration options for the language detector
277
- * @returns App middleware function
277
+ * @returns Acryl middleware function
278
278
  *
279
279
  * @example
280
280
  * ```ts
281
281
  * type Variables = LanguageVariables
282
- * const app = new App<{ Variables: Variables }>()
282
+ * const app = new Acryl<{ Variables: Variables }>()
283
283
  *
284
284
  * app.use(
285
285
  * languageDetector({
@@ -1,8 +1,8 @@
1
1
  import { logger } from './index.ts'
2
- import { App } from '../../app.ts'
2
+ import { Acryl } from '../../app.ts'
3
3
 
4
4
  describe('Logger by Middleware', () => {
5
- let app: App
5
+ let app: Acryl
6
6
  let log: string
7
7
 
8
8
  beforeEach(() => {
@@ -10,7 +10,7 @@ describe('Logger by Middleware', () => {
10
10
  return new Promise((resolve) => setTimeout(resolve, time))
11
11
  }
12
12
 
13
- app = new App()
13
+ app = new Acryl()
14
14
 
15
15
  const logFn = (str: string) => {
16
16
  log = str
@@ -127,7 +127,7 @@ describe('Logger by Middleware', () => {
127
127
  })
128
128
 
129
129
  describe('Logger by Middleware in NO_COLOR', () => {
130
- let app: App
130
+ let app: Acryl
131
131
  let log: string
132
132
 
133
133
  beforeEach(() => {
@@ -136,7 +136,7 @@ describe('Logger by Middleware in NO_COLOR', () => {
136
136
  return new Promise((resolve) => setTimeout(resolve, time))
137
137
  }
138
138
 
139
- app = new App()
139
+ app = new Acryl()
140
140
 
141
141
  const logFn = (str: string) => {
142
142
  log = str
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * Logger Middleware for App.
3
+ * Logger Middleware for Acryl.
4
4
  */
5
5
 
6
6
  import type { MiddlewareHandler } from '../../types.ts'
@@ -64,7 +64,7 @@ async function log(
64
64
  }
65
65
 
66
66
  /**
67
- * Logger Middleware for App.
67
+ * Logger Middleware for Acryl.
68
68
  *
69
69
  *
70
70
  * @param {PrintFunc} [fn=console.log] - Optional function for customized logging behavior.
@@ -72,10 +72,10 @@ async function log(
72
72
  *
73
73
  * @example
74
74
  * ```ts
75
- * const app = new App()
75
+ * const app = new Acryl()
76
76
  *
77
77
  * app.use(logger())
78
- * app.get('/', (c) => c.text('Hello App!'))
78
+ * app.get('/', (c) => c.text('Hello Acryl!'))
79
79
  * ```
80
80
  */
81
81
  export const logger = (fn: PrintFunc = console.log): MiddlewareHandler => {
@@ -1,9 +1,9 @@
1
1
  import { methodNotAllowed } from './index.ts'
2
- import { App } from '../../app.ts'
2
+ import { Acryl } from '../../app.ts'
3
3
 
4
4
  describe('Method Not Allowed Middleware', () => {
5
5
  it('infers the environment from the app', () => {
6
- const app = new App<{ Variables: { requestId: string } }>()
6
+ const app = new Acryl<{ Variables: { requestId: string } }>()
7
7
  const middleware = methodNotAllowed({
8
8
  app,
9
9
  onMethodNotAllowed: (c) => c.text(c.var.requestId, 405),
@@ -13,7 +13,7 @@ describe('Method Not Allowed Middleware', () => {
13
13
  })
14
14
 
15
15
  it('returns 405 with every allowed method for an existing path', async () => {
16
- const app = new App()
16
+ const app = new Acryl()
17
17
  app.use(methodNotAllowed({ app }))
18
18
  app.get('/resource', (c) => c.text('GET'))
19
19
  app.post('/resource', (c) => c.text('POST'))
@@ -31,7 +31,7 @@ describe('Method Not Allowed Middleware', () => {
31
31
  })
32
32
 
33
33
  it('does not affect an allowed method', async () => {
34
- const app = new App()
34
+ const app = new Acryl()
35
35
  app.use(methodNotAllowed({ app }))
36
36
  app.get('/resource', (c) => c.text('GET'))
37
37
 
@@ -43,7 +43,7 @@ describe('Method Not Allowed Middleware', () => {
43
43
  })
44
44
 
45
45
  it('returns 404 when the path does not exist', async () => {
46
- const app = new App()
46
+ const app = new Acryl()
47
47
  app.use(methodNotAllowed({ app }))
48
48
  app.get('/resource', (c) => c.text('GET'))
49
49
 
@@ -54,7 +54,7 @@ describe('Method Not Allowed Middleware', () => {
54
54
  })
55
55
 
56
56
  it('matches parameterized and overlapping routes without duplicate methods', async () => {
57
- const app = new App()
57
+ const app = new Acryl()
58
58
  app.use(methodNotAllowed({ app }))
59
59
  app.get('/users/:id', (_c, next) => next())
60
60
  app.get('/users/me', (c) => c.text('me'))
@@ -67,7 +67,7 @@ describe('Method Not Allowed Middleware', () => {
67
67
  })
68
68
 
69
69
  it('preserves an intentional 404 from a handler registered for the request method', async () => {
70
- const app = new App()
70
+ const app = new Acryl()
71
71
  app.use(methodNotAllowed({ app }))
72
72
  app.get('/users/:id', (c) => c.notFound())
73
73
  app.post('/users/:id', (c) => c.text('Created'))
@@ -79,7 +79,7 @@ describe('Method Not Allowed Middleware', () => {
79
79
  })
80
80
 
81
81
  it('preserves an intentional 404 for HEAD when a GET route is registered', async () => {
82
- const app = new App()
82
+ const app = new Acryl()
83
83
  app.use(methodNotAllowed({ app }))
84
84
  app.get('/users/:id', (c) => c.notFound())
85
85
  app.post('/users/:id', (c) => c.text('Created'))
@@ -91,7 +91,7 @@ describe('Method Not Allowed Middleware', () => {
91
91
  })
92
92
 
93
93
  it('preserves a 404 returned by the error handler', async () => {
94
- const app = new App()
94
+ const app = new Acryl()
95
95
  app.onError((_error, c) => c.text('Handled error', 404))
96
96
  app.use(methodNotAllowed({ app }))
97
97
  app.use('/resource', () => {
@@ -107,7 +107,7 @@ describe('Method Not Allowed Middleware', () => {
107
107
  })
108
108
 
109
109
  it('returns 405 for HEAD when the path does not support GET', async () => {
110
- const app = new App()
110
+ const app = new Acryl()
111
111
  app.use(methodNotAllowed({ app }))
112
112
  app.post('/resource', (c) => c.text('POST'))
113
113
 
@@ -118,8 +118,8 @@ describe('Method Not Allowed Middleware', () => {
118
118
  expect(await res.text()).toBe('')
119
119
  })
120
120
 
121
- it('does not advertise explicit HEAD routes that App cannot dispatch', async () => {
122
- const app = new App()
121
+ it('does not advertise explicit HEAD routes that Acryl cannot dispatch', async () => {
122
+ const app = new Acryl()
123
123
  app.use(methodNotAllowed({ app }))
124
124
  app.on('HEAD', '/resource', (c) => c.text('HEAD'))
125
125
 
@@ -133,7 +133,7 @@ describe('Method Not Allowed Middleware', () => {
133
133
  })
134
134
 
135
135
  it('supports custom methods', async () => {
136
- const app = new App()
136
+ const app = new Acryl()
137
137
  app.use(methodNotAllowed({ app }))
138
138
  app.on('PURGE', '/cache', (c) => c.text('Purged'))
139
139
 
@@ -144,7 +144,7 @@ describe('Method Not Allowed Middleware', () => {
144
144
  })
145
145
 
146
146
  it('compares request methods case-sensitively', async () => {
147
- const app = new App()
147
+ const app = new Acryl()
148
148
  app.use(methodNotAllowed({ app }))
149
149
  app.patch('/item', (c) => c.text('PATCH'))
150
150
 
@@ -157,11 +157,11 @@ describe('Method Not Allowed Middleware', () => {
157
157
  })
158
158
 
159
159
  it('works with routes mounted using app.route()', async () => {
160
- const api = new App()
160
+ const api = new Acryl()
161
161
  api.get('/resource', (c) => c.text('GET'))
162
162
  api.post('/resource', (c) => c.text('POST'))
163
163
 
164
- const app = new App()
164
+ const app = new Acryl()
165
165
  app.use(methodNotAllowed({ app }))
166
166
  app.route('/api', api)
167
167
 
@@ -172,12 +172,12 @@ describe('Method Not Allowed Middleware', () => {
172
172
  })
173
173
 
174
174
  it('works when installed in an app mounted using app.route()', async () => {
175
- const api = new App().basePath('/v1')
175
+ const api = new Acryl().basePath('/v1')
176
176
  api.use(methodNotAllowed({ app: api }))
177
177
  api.get('/resource', (c) => c.text('GET'))
178
178
  api.post('/resource', (c) => c.text('POST'))
179
179
 
180
- const app = new App()
180
+ const app = new Acryl()
181
181
  app.route('/api', api)
182
182
 
183
183
  const res = await app.request('/api/v1/resource', { method: 'DELETE' })
@@ -187,7 +187,7 @@ describe('Method Not Allowed Middleware', () => {
187
187
  })
188
188
 
189
189
  it('ignores ALL routes when collecting allowed methods', async () => {
190
- const app = new App()
190
+ const app = new Acryl()
191
191
  app.use(methodNotAllowed({ app }))
192
192
  app.all('/resource', (_c, next) => next())
193
193
 
@@ -198,7 +198,7 @@ describe('Method Not Allowed Middleware', () => {
198
198
  })
199
199
 
200
200
  it('does not invoke the error handler for a 405 response', async () => {
201
- const app = new App()
201
+ const app = new Acryl()
202
202
  const onError = vi.fn(() => new Response('error', { status: 500 }))
203
203
  app.onError(onError)
204
204
  app.use(methodNotAllowed({ app }))
@@ -211,7 +211,7 @@ describe('Method Not Allowed Middleware', () => {
211
211
  })
212
212
 
213
213
  it('preserves downstream headers and lets outer middleware observe the final status', async () => {
214
- const app = new App()
214
+ const app = new Acryl()
215
215
  let observedStatus: number | undefined
216
216
 
217
217
  app.use(async (c, next) => {
@@ -233,7 +233,7 @@ describe('Method Not Allowed Middleware', () => {
233
233
  })
234
234
 
235
235
  it('replaces stale representation headers from the not-found response', async () => {
236
- const app = new App()
236
+ const app = new Acryl()
237
237
  app.use(methodNotAllowed({ app }))
238
238
  app.get('/resource', (c) => c.text('GET'))
239
239
  app.post('/resource', (c) => c.text('POST'))
@@ -253,7 +253,7 @@ describe('Method Not Allowed Middleware', () => {
253
253
  })
254
254
 
255
255
  it('supports a custom method-not-allowed response', async () => {
256
- const app = new App()
256
+ const app = new Acryl()
257
257
  app.use(
258
258
  methodNotAllowed({
259
259
  app,
@@ -278,7 +278,7 @@ describe('Method Not Allowed Middleware', () => {
278
278
  })
279
279
 
280
280
  it('leaves a non-404 custom not-found response unchanged', async () => {
281
- const app = new App()
281
+ const app = new Acryl()
282
282
  app.use(methodNotAllowed({ app }))
283
283
  app.get('/resource', (c) => c.text('GET'))
284
284
  app.notFound((c) => c.text('Missing', 410))