acrylblends 0.4.1 → 0.5.1

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 (417) hide show
  1. package/LICENSE +73 -0
  2. package/README.md +325 -0
  3. package/docs/framework/README.md +51 -51
  4. package/docs/framework/UPSTREAM.md +1 -1
  5. package/docs/framework/agents/index.md +24 -0
  6. package/docs/framework/api/acryl.md +259 -0
  7. package/docs/framework/api/context.md +527 -0
  8. package/docs/framework/api/exception.md +80 -0
  9. package/docs/framework/api/index.md +12 -0
  10. package/docs/framework/api/presets.md +65 -0
  11. package/docs/framework/api/request.md +396 -0
  12. package/docs/framework/api/routing.md +303 -0
  13. package/docs/framework/{api-summary.md → api/summary.md} +19 -17
  14. package/docs/framework/concepts/benchmarks.md +26 -0
  15. package/docs/framework/concepts/developer-experience.md +5 -0
  16. package/docs/framework/concepts/middleware.md +21 -0
  17. package/docs/framework/concepts/motivation.md +14 -0
  18. package/docs/framework/concepts/routers.md +63 -0
  19. package/docs/framework/concepts/stacks.md +235 -0
  20. package/docs/framework/concepts/web-standard.md +37 -0
  21. package/docs/framework/{getting-started.md → cordis/acryl-in-a-cordis-app.md} +16 -16
  22. package/docs/framework/{concepts.md → cordis/concepts.md} +2 -2
  23. package/docs/framework/cordis/middleware.md +8 -0
  24. package/docs/framework/{migration-from-0-3.md → cordis/migration-from-0-3.md} +16 -13
  25. package/docs/framework/cordis/migration-from-0-4.md +14 -0
  26. package/docs/framework/{migration-from-dsh-webserver.md → cordis/migration-from-dsh-webserver.md} +13 -7
  27. package/docs/framework/{routing.md → cordis/mounting.md} +5 -108
  28. package/docs/framework/{node-server.md → cordis/node-server.md} +4 -4
  29. package/docs/framework/{surfaces.md → cordis/surfaces.md} +2 -2
  30. package/docs/framework/cordis/transport-and-cancellation.md +57 -0
  31. package/docs/framework/{validation.md → cordis/validation.md} +9 -9
  32. package/docs/framework/getting-started/basic.md +196 -0
  33. package/docs/framework/getting-started/bun.md +221 -0
  34. package/docs/framework/getting-started/nodejs.md +344 -0
  35. package/docs/framework/getting-started/other-runtimes.md +23 -0
  36. package/docs/framework/guides/best-practices.md +231 -0
  37. package/docs/framework/guides/create-acrylblends.md +79 -0
  38. package/docs/framework/guides/examples.md +3 -0
  39. package/docs/framework/guides/faq.md +19 -0
  40. package/docs/framework/guides/helpers.md +33 -0
  41. package/docs/framework/guides/jsx-dom.md +299 -0
  42. package/docs/framework/guides/jsx.md +440 -0
  43. package/docs/framework/guides/middleware.md +253 -0
  44. package/docs/framework/guides/rpc.md +886 -0
  45. package/docs/framework/guides/testing.md +133 -0
  46. package/docs/framework/guides/validation.md +383 -0
  47. package/docs/framework/helpers/accepts.md +60 -0
  48. package/docs/framework/helpers/adapter.md +87 -0
  49. package/docs/framework/helpers/conninfo.md +112 -0
  50. package/docs/framework/helpers/cookie.md +232 -0
  51. package/docs/framework/helpers/css.md +285 -0
  52. package/docs/framework/helpers/dev.md +67 -0
  53. package/docs/framework/helpers/factory.md +180 -0
  54. package/docs/framework/helpers/html.md +123 -0
  55. package/docs/framework/helpers/jwt.md +184 -0
  56. package/docs/framework/helpers/proxy.md +118 -0
  57. package/docs/framework/helpers/route.md +143 -0
  58. package/docs/framework/helpers/ssg.md +393 -0
  59. package/docs/framework/helpers/streaming.md +119 -0
  60. package/docs/framework/helpers/testing.md +101 -0
  61. package/docs/framework/helpers/websocket.md +215 -0
  62. package/docs/framework/middleware/builtin/basic-auth.md +165 -0
  63. package/docs/framework/middleware/builtin/bearer-auth.md +138 -0
  64. package/docs/framework/middleware/builtin/body-limit.md +71 -0
  65. package/docs/framework/middleware/builtin/cache.md +122 -0
  66. package/docs/framework/middleware/builtin/combine.md +94 -0
  67. package/docs/framework/middleware/builtin/compress.md +59 -0
  68. package/docs/framework/middleware/builtin/context-storage.md +78 -0
  69. package/docs/framework/middleware/builtin/cors.md +135 -0
  70. package/docs/framework/middleware/builtin/csrf.md +105 -0
  71. package/docs/framework/middleware/builtin/etag.md +54 -0
  72. package/docs/framework/middleware/builtin/ip-restriction.md +69 -0
  73. package/docs/framework/middleware/builtin/jsx-renderer.md +286 -0
  74. package/docs/framework/middleware/builtin/jwk.md +192 -0
  75. package/docs/framework/middleware/builtin/jwt.md +145 -0
  76. package/docs/framework/middleware/builtin/language.md +232 -0
  77. package/docs/framework/middleware/builtin/logger.md +74 -0
  78. package/docs/framework/middleware/builtin/loopback-only.md +31 -0
  79. package/docs/framework/middleware/builtin/method-not-allowed.md +48 -0
  80. package/docs/framework/middleware/builtin/method-override.md +80 -0
  81. package/docs/framework/middleware/builtin/mount.md +106 -0
  82. package/docs/framework/middleware/builtin/pretty-json.md +53 -0
  83. package/docs/framework/middleware/builtin/request-id.md +94 -0
  84. package/docs/framework/middleware/builtin/secure-headers.md +247 -0
  85. package/docs/framework/middleware/builtin/timeout.md +98 -0
  86. package/docs/framework/middleware/builtin/timing.md +101 -0
  87. package/docs/framework/middleware/builtin/trailing-slash.md +74 -0
  88. package/docs/framework/middleware/third-party.md +4 -0
  89. package/docs/framework/upstream.json +3 -3
  90. package/lib/accepts-XBuZPVRI.js +52 -0
  91. package/lib/accepts.d.ts +33 -0
  92. package/lib/accepts.js +2 -0
  93. package/lib/acryl-base.d.ts +2 -0
  94. package/lib/acryl-base.js +332 -0
  95. package/lib/adapter.d.ts +12 -0
  96. package/lib/adapter.js +37 -0
  97. package/lib/app-BM0rTCp7.js +26 -0
  98. package/lib/app-CmAYW1Al.d.ts +21 -0
  99. package/lib/basic-auth.d.ts +72 -0
  100. package/lib/basic-auth.js +95 -0
  101. package/lib/bearer-auth.d.ts +89 -0
  102. package/lib/bearer-auth.js +94 -0
  103. package/lib/body-limit.d.ts +42 -0
  104. package/lib/body-limit.js +66 -0
  105. package/lib/client-BHTr318g.js +266 -0
  106. package/lib/client.d.ts +3 -0
  107. package/lib/client.js +2 -0
  108. package/lib/combine.d.ts +85 -0
  109. package/lib/combine.js +137 -0
  110. package/lib/compose-BuW2B6PZ.js +50 -0
  111. package/lib/compress.d.ts +38 -0
  112. package/lib/compress.js +79 -0
  113. package/lib/connection-C7xgP1hP.js +24 -0
  114. package/lib/conninfo.d.ts +25 -0
  115. package/lib/conninfo.js +2 -0
  116. package/lib/constants-Dy7ZvN1H.js +4 -0
  117. package/lib/context-Bm7rI-oK.d.ts +1234 -0
  118. package/lib/context-DDO0cfuP.js +365 -0
  119. package/lib/context-storage.d.ts +38 -0
  120. package/lib/context-storage.js +52 -0
  121. package/lib/cookie-ClMaKDQf.d.ts +40 -0
  122. package/lib/cookie.d.ts +24 -0
  123. package/lib/cookie.js +82 -0
  124. package/lib/cors.d.ts +52 -0
  125. package/lib/cors.js +106 -0
  126. package/lib/csrf.d.ts +75 -0
  127. package/lib/csrf.js +101 -0
  128. package/lib/etag.d.ts +40 -0
  129. package/lib/etag.js +135 -0
  130. package/lib/factory.d.ts +35 -0
  131. package/lib/factory.js +30 -0
  132. package/lib/headers-tu2YYN8T.d.ts +11 -0
  133. package/lib/html.d.ts +6 -0
  134. package/lib/html.js +31 -0
  135. package/lib/http-exception.d.ts +57 -0
  136. package/lib/http-exception.js +54 -0
  137. package/lib/http-status-DaAwGAFL.d.ts +35 -0
  138. package/lib/index-B-3F4wt2.d.ts +12 -0
  139. package/lib/index-UTBmM3GX.d.ts +68 -0
  140. package/lib/index-oOClm_Xk.d.ts +45 -0
  141. package/lib/index.d.ts +5 -0
  142. package/lib/index.js +28 -0
  143. package/lib/ip-restriction.d.ts +68 -0
  144. package/lib/ip-restriction.js +166 -0
  145. package/lib/jwk.d.ts +52 -0
  146. package/lib/jwk.js +117 -0
  147. package/lib/jwt-BGJBw5AF.js +403 -0
  148. package/lib/jwt-Dg493Tai.d.ts +51 -0
  149. package/lib/jwt.d.ts +72 -0
  150. package/lib/jwt.js +115 -0
  151. package/lib/language.d.ts +88 -0
  152. package/lib/language.js +198 -0
  153. package/lib/logger.d.ts +22 -0
  154. package/lib/logger.js +54 -0
  155. package/lib/loopback-only.d.ts +45 -0
  156. package/lib/loopback-only.js +90 -0
  157. package/lib/method-not-allowed.d.ts +47 -0
  158. package/lib/method-not-allowed.js +82 -0
  159. package/lib/method-override.d.ts +46 -0
  160. package/lib/method-override.js +103 -0
  161. package/lib/mime-BQOYHl-l.d.ts +72 -0
  162. package/lib/node-server/conninfo.d.ts +11 -0
  163. package/lib/node-server/conninfo.js +19 -0
  164. package/lib/node-server/serve-static.d.ts +19 -0
  165. package/lib/node-server/serve-static.js +2 -0
  166. package/lib/node-server.d.ts +103 -0
  167. package/lib/node-server.js +1325 -0
  168. package/lib/powered-by.d.ts +28 -0
  169. package/lib/powered-by.js +24 -0
  170. package/lib/pretty-json.d.ts +40 -0
  171. package/lib/pretty-json.js +39 -0
  172. package/lib/reg-exp-router-DC1R3qoY.js +363 -0
  173. package/lib/request-id.d.ts +45 -0
  174. package/lib/request-id.js +34 -0
  175. package/lib/request.d.ts +2 -0
  176. package/lib/request.js +323 -0
  177. package/lib/route.d.ts +78 -0
  178. package/lib/route.js +126 -0
  179. package/lib/router/linear-router.d.ts +11 -0
  180. package/lib/router/linear-router.js +96 -0
  181. package/lib/router/pattern-router.d.ts +11 -0
  182. package/lib/router/pattern-router.js +41 -0
  183. package/lib/router/reg-exp-router.d.ts +35 -0
  184. package/lib/router/reg-exp-router.js +2 -0
  185. package/lib/router/smart-router.d.ts +15 -0
  186. package/lib/router/smart-router.js +2 -0
  187. package/lib/router/trie-router.d.ts +11 -0
  188. package/lib/router/trie-router.js +2 -0
  189. package/lib/router-CvUxUTOq.d.ts +99 -0
  190. package/lib/router.d.ts +2 -0
  191. package/lib/router.js +35 -0
  192. package/lib/schema-validator.d.ts +28 -0
  193. package/lib/schema-validator.js +22 -0
  194. package/lib/secure-headers.d.ts +125 -0
  195. package/lib/secure-headers.js +163 -0
  196. package/lib/serve-static-Dw_m6KxR.js +213 -0
  197. package/lib/serve-static.d.ts +31 -0
  198. package/lib/serve-static.js +77 -0
  199. package/lib/smart-router-C5CZ5XSM.js +49 -0
  200. package/lib/stream-CPdqZ0Fp.d.ts +34 -0
  201. package/lib/streaming-DHST3Scg.js +96 -0
  202. package/lib/streaming.d.ts +23 -0
  203. package/lib/streaming.js +2 -0
  204. package/lib/testing.d.ts +10 -0
  205. package/lib/testing.js +17 -0
  206. package/lib/timeout.d.ts +30 -0
  207. package/lib/timeout.js +42 -0
  208. package/lib/timing.d.ts +130 -0
  209. package/lib/timing.js +183 -0
  210. package/lib/trailing-slash.d.ts +91 -0
  211. package/lib/trailing-slash.js +85 -0
  212. package/lib/trie-router-CfFbapzL.js +146 -0
  213. package/lib/types-CDO6I3B0.d.ts +40 -0
  214. package/lib/types-CHesD1KG.d.ts +195 -0
  215. package/lib/types-CwrQjlaM.d.ts +105 -0
  216. package/lib/types-DR95J00T.d.ts +29 -0
  217. package/lib/types.d.ts +2 -0
  218. package/lib/types.js +4 -0
  219. package/lib/utils/accept.d.ts +9 -0
  220. package/lib/utils/accept.js +193 -0
  221. package/lib/utils/basic-auth.d.ts +8 -0
  222. package/lib/utils/basic-auth.js +20 -0
  223. package/lib/utils/body.d.ts +2 -0
  224. package/lib/utils/body.js +94 -0
  225. package/lib/utils/buffer.d.ts +19 -0
  226. package/lib/utils/buffer.js +51 -0
  227. package/lib/utils/color.d.ts +24 -0
  228. package/lib/utils/color.js +37 -0
  229. package/lib/utils/compress.d.ts +11 -0
  230. package/lib/utils/compress.js +11 -0
  231. package/lib/utils/concurrent.d.ts +17 -0
  232. package/lib/utils/concurrent.js +30 -0
  233. package/lib/utils/constants.d.ts +7 -0
  234. package/lib/utils/constants.js +7 -0
  235. package/lib/utils/cookie.d.ts +2 -0
  236. package/lib/utils/cookie.js +125 -0
  237. package/lib/utils/crypto.d.ts +14 -0
  238. package/lib/utils/crypto.js +34 -0
  239. package/lib/utils/encode.d.ts +11 -0
  240. package/lib/utils/encode.js +33 -0
  241. package/lib/utils/filepath.d.ts +14 -0
  242. package/lib/utils/filepath.js +25 -0
  243. package/lib/utils/handler.d.ts +9 -0
  244. package/lib/utils/handler.js +12 -0
  245. package/lib/utils/headers.d.ts +2 -0
  246. package/lib/utils/headers.js +1 -0
  247. package/lib/utils/html.d.ts +46 -0
  248. package/lib/utils/html.js +103 -0
  249. package/lib/utils/http-status.d.ts +2 -0
  250. package/lib/utils/http-status.js +1 -0
  251. package/lib/utils/ipaddr.d.ts +56 -0
  252. package/lib/utils/ipaddr.js +238 -0
  253. package/lib/utils/jwt.d.ts +24 -0
  254. package/lib/utils/jwt.js +2 -0
  255. package/lib/utils/mime.d.ts +2 -0
  256. package/lib/utils/mime.js +77 -0
  257. package/lib/utils/stream.d.ts +2 -0
  258. package/lib/utils/stream.js +88 -0
  259. package/lib/utils/types.d.ts +2 -0
  260. package/lib/utils/types.js +1 -0
  261. package/lib/utils/url.d.ts +46 -0
  262. package/lib/utils/url.js +197 -0
  263. package/lib/utils-dw8lxqjL.js +4 -0
  264. package/lib/validator-D84mq-dO.js +65 -0
  265. package/lib/validator.d.ts +42 -0
  266. package/lib/validator.js +2 -0
  267. package/lib/ws.d.ts +2 -0
  268. package/lib/ws.js +53 -0
  269. package/package.json +312 -14
  270. package/plugins/acryl-inspect/src/service.ts +2 -2
  271. package/plugins/acryl-inspect/tests/service.spec.ts +3 -3
  272. package/plugins/acryl-inspect/upstream.json +2 -2
  273. package/plugins/acryl-node-server/tests/adapter/app.ts +2 -2
  274. package/plugins/acryl-node-server/tests/adapter/assets/static/acryl.html +1 -1
  275. package/plugins/acryl-node-server/tests/adapter/assets/static/index.html +1 -1
  276. package/plugins/acryl-node-server/tests/adapter/conninfo.test.ts +2 -2
  277. package/plugins/acryl-node-server/tests/adapter/content-length.test.ts +4 -4
  278. package/plugins/acryl-node-server/tests/adapter/early-hints.test.ts +5 -5
  279. package/plugins/acryl-node-server/tests/adapter/request-client-disconnect.test.ts +2 -2
  280. package/plugins/acryl-node-server/tests/adapter/serve-static.test.ts +20 -20
  281. package/plugins/acryl-node-server/tests/adapter/server-socket.test.ts +2 -2
  282. package/plugins/acryl-node-server/tests/adapter/server.test.ts +60 -50
  283. package/plugins/acryl-node-server/tests/adapter/utils/response.test.ts +4 -4
  284. package/plugins/acryl-node-server/tests/adapter/websocket.test.ts +9 -9
  285. package/plugins/acryl-node-server/tests/server.spec.ts +6 -6
  286. package/plugins/acryl-node-server/upstream.json +2 -2
  287. package/plugins/acryl-router/src/client.ts +1 -1
  288. package/plugins/acryl-router/src/connection.ts +2 -2
  289. package/plugins/acryl-router/src/core/app-base.ts +29 -29
  290. package/plugins/acryl-router/src/core/app.test.ts +175 -175
  291. package/plugins/acryl-router/src/core/app.ts +8 -8
  292. package/plugins/acryl-router/src/core/client/client.test.ts +76 -76
  293. package/plugins/acryl-router/src/core/client/client.ts +2 -2
  294. package/plugins/acryl-router/src/core/client/fetch-result-please.ts +1 -1
  295. package/plugins/acryl-router/src/core/client/index.ts +1 -1
  296. package/plugins/acryl-router/src/core/client/types.test.ts +6 -6
  297. package/plugins/acryl-router/src/core/client/types.ts +16 -16
  298. package/plugins/acryl-router/src/core/client/utils.test.ts +2 -2
  299. package/plugins/acryl-router/src/core/context.test.ts +4 -4
  300. package/plugins/acryl-router/src/core/context.ts +6 -6
  301. package/plugins/acryl-router/src/core/helper/accepts/accepts.test.ts +3 -3
  302. package/plugins/acryl-router/src/core/helper/accepts/index.ts +1 -1
  303. package/plugins/acryl-router/src/core/helper/adapter/index.test.ts +6 -6
  304. package/plugins/acryl-router/src/core/helper/adapter/index.ts +1 -1
  305. package/plugins/acryl-router/src/core/helper/conninfo/index.ts +1 -1
  306. package/plugins/acryl-router/src/core/helper/cookie/index.test.ts +8 -8
  307. package/plugins/acryl-router/src/core/helper/cookie/index.ts +1 -1
  308. package/plugins/acryl-router/src/core/helper/factory/index.test.ts +9 -9
  309. package/plugins/acryl-router/src/core/helper/factory/index.ts +10 -10
  310. package/plugins/acryl-router/src/core/helper/html/index.test.ts +4 -4
  311. package/plugins/acryl-router/src/core/helper/html/index.ts +1 -1
  312. package/plugins/acryl-router/src/core/helper/route/index.test.ts +7 -7
  313. package/plugins/acryl-router/src/core/helper/route/index.ts +8 -8
  314. package/plugins/acryl-router/src/core/helper/streaming/index.ts +1 -1
  315. package/plugins/acryl-router/src/core/helper/testing/index.test.ts +6 -6
  316. package/plugins/acryl-router/src/core/helper/testing/index.ts +4 -4
  317. package/plugins/acryl-router/src/core/helper/websocket/index.ts +2 -1
  318. package/plugins/acryl-router/src/core/http-exception.ts +1 -1
  319. package/plugins/acryl-router/src/core/index.ts +9 -9
  320. package/plugins/acryl-router/src/core/middleware/basic-auth/index.test.ts +6 -6
  321. package/plugins/acryl-router/src/core/middleware/basic-auth/index.ts +3 -3
  322. package/plugins/acryl-router/src/core/middleware/bearer-auth/index.test.ts +5 -5
  323. package/plugins/acryl-router/src/core/middleware/bearer-auth/index.ts +3 -3
  324. package/plugins/acryl-router/src/core/middleware/body-limit/index.test.ts +6 -6
  325. package/plugins/acryl-router/src/core/middleware/body-limit/index.ts +3 -3
  326. package/plugins/acryl-router/src/core/middleware/combine/index.test.ts +9 -9
  327. package/plugins/acryl-router/src/core/middleware/combine/index.ts +7 -7
  328. package/plugins/acryl-router/src/core/middleware/compress/index.test.ts +9 -9
  329. package/plugins/acryl-router/src/core/middleware/compress/index.ts +3 -3
  330. package/plugins/acryl-router/src/core/middleware/context-storage/index.test.ts +5 -5
  331. package/plugins/acryl-router/src/core/middleware/context-storage/index.ts +4 -4
  332. package/plugins/acryl-router/src/core/middleware/cors/index.test.ts +7 -7
  333. package/plugins/acryl-router/src/core/middleware/cors/index.ts +3 -3
  334. package/plugins/acryl-router/src/core/middleware/csrf/index.test.ts +10 -10
  335. package/plugins/acryl-router/src/core/middleware/csrf/index.ts +3 -3
  336. package/plugins/acryl-router/src/core/middleware/etag/index.test.ts +42 -42
  337. package/plugins/acryl-router/src/core/middleware/etag/index.ts +4 -4
  338. package/plugins/acryl-router/src/core/middleware/ip-restriction/index.test.ts +4 -4
  339. package/plugins/acryl-router/src/core/middleware/ip-restriction/index.ts +6 -6
  340. package/plugins/acryl-router/src/core/middleware/jwk/index.test.ts +16 -16
  341. package/plugins/acryl-router/src/core/middleware/jwk/jwk.ts +7 -6
  342. package/plugins/acryl-router/src/core/middleware/jwt/index.test.ts +16 -16
  343. package/plugins/acryl-router/src/core/middleware/jwt/jwt.ts +4 -3
  344. package/plugins/acryl-router/src/core/middleware/language/index.test.ts +3 -3
  345. package/plugins/acryl-router/src/core/middleware/language/language.ts +3 -3
  346. package/plugins/acryl-router/src/core/middleware/logger/index.test.ts +5 -5
  347. package/plugins/acryl-router/src/core/middleware/logger/index.ts +4 -4
  348. package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.test.ts +24 -24
  349. package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.ts +8 -8
  350. package/plugins/acryl-router/src/core/middleware/method-override/index.test.ts +5 -5
  351. package/plugins/acryl-router/src/core/middleware/method-override/index.ts +6 -6
  352. package/plugins/acryl-router/src/core/middleware/powered-by/index.test.ts +4 -4
  353. package/plugins/acryl-router/src/core/middleware/powered-by/index.ts +6 -6
  354. package/plugins/acryl-router/src/core/middleware/pretty-json/index.test.ts +30 -30
  355. package/plugins/acryl-router/src/core/middleware/pretty-json/index.ts +4 -4
  356. package/plugins/acryl-router/src/core/middleware/request-id/index.test.ts +15 -15
  357. package/plugins/acryl-router/src/core/middleware/request-id/request-id.ts +3 -3
  358. package/plugins/acryl-router/src/core/middleware/secure-headers/index.test.ts +35 -35
  359. package/plugins/acryl-router/src/core/middleware/secure-headers/secure-headers.ts +3 -3
  360. package/plugins/acryl-router/src/core/middleware/serve-static/index.test.ts +23 -23
  361. package/plugins/acryl-router/src/core/middleware/serve-static/index.ts +1 -1
  362. package/plugins/acryl-router/src/core/middleware/timeout/index.test.ts +2 -2
  363. package/plugins/acryl-router/src/core/middleware/timeout/index.ts +3 -3
  364. package/plugins/acryl-router/src/core/middleware/timing/index.test.ts +14 -14
  365. package/plugins/acryl-router/src/core/middleware/timing/timing.ts +3 -3
  366. package/plugins/acryl-router/src/core/middleware/trailing-slash/index.test.ts +7 -7
  367. package/plugins/acryl-router/src/core/middleware/trailing-slash/index.ts +7 -7
  368. package/plugins/acryl-router/src/core/request.test.ts +42 -42
  369. package/plugins/acryl-router/src/core/request.ts +6 -6
  370. package/plugins/acryl-router/src/core/router/linear-router/index.ts +1 -1
  371. package/plugins/acryl-router/src/core/router/pattern-router/index.ts +1 -1
  372. package/plugins/acryl-router/src/core/router/reg-exp-router/index.ts +1 -1
  373. package/plugins/acryl-router/src/core/router/smart-router/index.ts +1 -1
  374. package/plugins/acryl-router/src/core/router/trie-router/index.ts +1 -1
  375. package/plugins/acryl-router/src/core/types.test.ts +115 -115
  376. package/plugins/acryl-router/src/core/types.ts +72 -72
  377. package/plugins/acryl-router/src/core/utils/body.ts +8 -8
  378. package/plugins/acryl-router/src/core/utils/html.ts +1 -1
  379. package/plugins/acryl-router/src/core/utils/jwt/jws.ts +3 -3
  380. package/plugins/acryl-router/src/core/utils/jwt/jwt.test.ts +2 -2
  381. package/plugins/acryl-router/src/core/utils/jwt/jwt.ts +3 -3
  382. package/plugins/acryl-router/src/core/utils/jwt/types.ts +1 -1
  383. package/plugins/acryl-router/src/core/utils/types.ts +42 -0
  384. package/plugins/acryl-router/src/core/utils/url.test.ts +2 -2
  385. package/plugins/acryl-router/src/core/validator/index.ts +1 -1
  386. package/plugins/acryl-router/src/core/validator/validator.test.ts +28 -28
  387. package/plugins/acryl-router/src/deprecated.ts +15 -0
  388. package/plugins/acryl-router/src/index.ts +3 -2
  389. package/plugins/acryl-router/src/service.ts +10 -10
  390. package/plugins/acryl-router/tests/docs-examples.spec.ts +11 -11
  391. package/plugins/acryl-router/tests/live-install.spec.ts +2 -2
  392. package/plugins/acryl-router/tests/loader.spec.ts +3 -3
  393. package/plugins/acryl-router/tests/loopback-only.spec.ts +4 -4
  394. package/plugins/acryl-router/tests/no-dom/consumer.ts +11 -0
  395. package/plugins/acryl-router/tests/no-dom/tsconfig.json +13 -0
  396. package/plugins/acryl-router/tests/service.spec.ts +23 -23
  397. package/plugins/acryl-router/upstream.json +3 -3
  398. package/plugins/acryl-router-http/tests/adapter.spec.ts +3 -3
  399. package/plugins/acryl-router-http/tests/surfaces.spec.ts +2 -2
  400. package/plugins/acryl-router-http/upstream.json +2 -2
  401. package/plugins/acryl-state/src/service.ts +2 -2
  402. package/plugins/acryl-state/upstream.json +2 -2
  403. package/plugins/builder/script.ts +2 -2
  404. package/plugins/extensions/resolve.ts +70 -10
  405. package/plugins/openai/prompt.ts +5 -5
  406. package/shared/AGENTS.core.md +16 -9
  407. package/templates/agent/src/routes.ts +2 -2
  408. package/templates/agent/test/model.test.ts +2 -2
  409. package/templates/agent/tsconfig.json +40 -0
  410. package/templates/blank/src/routes.ts +2 -2
  411. package/templates/todo/src/todo.ts +2 -2
  412. package/templates/todo/upstream.json +2 -2
  413. package/docs/framework/context.md +0 -129
  414. package/docs/framework/helpers.md +0 -118
  415. package/docs/framework/middleware.md +0 -154
  416. package/docs/framework/request.md +0 -106
  417. /package/docs/framework/{plugin-lifecycle.md → cordis/plugin-lifecycle.md} +0 -0
@@ -4,7 +4,7 @@ import { createServer } from 'node:http'
4
4
  import type { AddressInfo } from 'node:net'
5
5
  import { fileURLToPath } from 'node:url'
6
6
  import { Context } from '@deepseek-ai/cordis'
7
- import { App, apply as routerApply, connectionOf, name as routerName } from '../../acryl-router/src/index.ts'
7
+ import { Acryl, apply as routerApply, connectionOf, name as routerName } from '../../acryl-router/src/index.ts'
8
8
  import { streamSSE } from '../../acryl-router/src/helpers/index.ts'
9
9
  import { afterEach, describe, expect, it } from 'vitest'
10
10
  import * as nodeServer from '../src/index.ts'
@@ -42,7 +42,7 @@ const portIsFree = async (port: number): Promise<boolean> => {
42
42
  describe('acryl-node-server', () => {
43
43
  it('serves the router over a real socket with the peer and port as connection facts', async () => {
44
44
  const ctx = await boot()
45
- ctx.router.route('/', new App().get('/who', c => c.json({ peer: connectionOf(c).remoteAddress, port: connectionOf(c).localPort })))
45
+ ctx.router.route('/', new Acryl().get('/who', c => c.json({ peer: connectionOf(c).remoteAddress, port: connectionOf(c).localPort })))
46
46
  const body = await (await fetch(`${ctx.nodeServer.url}/who`)).json() as { peer: string, port: number }
47
47
  expect(ctx.nodeServer.url).toMatch(/^http:\/\/127\.0\.0\.1:\d+$/u)
48
48
  expect(body.port).toBe(ctx.nodeServer.port)
@@ -52,7 +52,7 @@ describe('acryl-node-server', () => {
52
52
 
53
53
  it('hands a request body to the handler', async () => {
54
54
  const ctx = await boot()
55
- ctx.router.route('/', new App().post('/echo', async c => c.json(await c.req.json())))
55
+ ctx.router.route('/', new Acryl().post('/echo', async c => c.json(await c.req.json())))
56
56
  const response = await fetch(`${ctx.nodeServer.url}/echo`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: '{"n":1}' })
57
57
  expect(await response.json()).toEqual({ n: 1 })
58
58
  })
@@ -60,7 +60,7 @@ describe('acryl-node-server', () => {
60
60
  it('serves files from disk through a mounted app', async () => {
61
61
  const ctx = await boot()
62
62
  const root = fileURLToPath(new URL('./adapter/assets', import.meta.url))
63
- ctx.router.route('/', new App().use('/static/*', nodeServer.serveStatic({ root })))
63
+ ctx.router.route('/', new Acryl().use('/static/*', nodeServer.serveStatic({ root })))
64
64
  const found = await fetch(`${ctx.nodeServer.url}/static/plain.txt`)
65
65
  expect(found.status).toBe(200)
66
66
  expect(found.headers.get('content-type')).toBe('text/plain; charset=utf-8')
@@ -72,7 +72,7 @@ describe('acryl-node-server', () => {
72
72
  const ctx = await boot()
73
73
  let aborted!: () => void
74
74
  const seen = new Promise<void>(resolve => { aborted = resolve })
75
- ctx.router.route('/', new App().get('/wait', c => new Promise<Response>(resolve => {
75
+ ctx.router.route('/', new Acryl().get('/wait', c => new Promise<Response>(resolve => {
76
76
  c.req.raw.signal.addEventListener('abort', () => { aborted(); resolve(new Response(null, { status: 499 })) }, { once: true })
77
77
  })))
78
78
  const client = new AbortController()
@@ -110,7 +110,7 @@ describe('acryl-node-server', () => {
110
110
 
111
111
  it('on dispose ends open event streams and frees the port', async () => {
112
112
  const ctx = await boot()
113
- ctx.router.route('/', new App().get('/events', c => streamSSE(c, async stream => {
113
+ ctx.router.route('/', new Acryl().get('/events', c => streamSSE(c, async stream => {
114
114
  await stream.writeSSE({ data: 'hello' })
115
115
  await new Promise<void>(resolve => { stream.onAbort(resolve) })
116
116
  })))
@@ -2,7 +2,7 @@
2
2
  "source": {
3
3
  "repo": "acryldev/acryl",
4
4
  "path": "plugins/acryl-node-server",
5
- "commit": "64e7c9d2e787f74b2da82492644fbbb46a601074"
5
+ "commit": "5743482e4199ded676a77f594bce15fd4aa0ca2f"
6
6
  },
7
7
  "vendored": [
8
8
  "src",
@@ -10,7 +10,7 @@
10
10
  "LICENSE"
11
11
  ],
12
12
  "rewrittenSpecifiers": 28,
13
- "digest": "sha256:34c46038d5d69212247430c46ccf52c01cc6ceaf2c9c48fea39c1053de0820d2",
13
+ "digest": "sha256:2adaa64028c1f2a40ed94c0eacf64d32c8c3b8171b52338cb02bfae2fd56ab7c",
14
14
  "testsNotRun": {},
15
15
  "notice": [
16
16
  "LICENSE"
@@ -1,2 +1,2 @@
1
- /** The typed client for an `App`: request it with the route types the server declared. Runs in a browser or any fetch runtime, without Cordis. */
1
+ /** The typed client for an `Acryl`: request it with the route types the server declared. Runs in a browser or any fetch runtime, without Cordis. */
2
2
  export * from './core/client/index.ts'
@@ -20,14 +20,14 @@ export interface RouterBindings {
20
20
  readonly connection: ConnectionInfo
21
21
  }
22
22
 
23
- /** The `Env` of an `App` that wants `c.env.connection` typed: `new App<RouterEnv>()`. */
23
+ /** The `Env` of an `Acryl` that wants `c.env.connection` typed: `new Acryl<RouterEnv>()`. */
24
24
  export interface RouterEnv {
25
25
  Bindings: RouterBindings
26
26
  }
27
27
 
28
28
  const NONE: ConnectionInfo = Object.freeze({})
29
29
 
30
- /** The transport facts of this request; empty for an in-process call or an `App` run outside the router. */
30
+ /** The transport facts of this request; empty for an in-process call or an `Acryl` run outside the router. */
31
31
  export function connectionOf(c: Context): ConnectionInfo {
32
32
  const env = c.env as Partial<RouterBindings> | undefined
33
33
  return env?.connection ?? NONE
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module
3
- * This module is the base module for the App object.
3
+ * This module is the base module for the Acryl object.
4
4
  */
5
5
 
6
6
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -43,14 +43,14 @@ const errorHandler: ErrorHandler = (err, c) => {
43
43
 
44
44
  type GetPath<E extends Env> = (request: Request, options?: { env?: E['Bindings'] }) => string
45
45
 
46
- export type AppOptions<E extends Env> = {
46
+ export type AcrylOptions<E extends Env> = {
47
47
  /**
48
48
  * `router` option specifies which router to use.
49
49
  *
50
50
  *
51
51
  * @example
52
52
  * ```ts
53
- * const app = new App({ router: new RegExpRouter() })
53
+ * const app = new Acryl({ router: new RegExpRouter() })
54
54
  * ```
55
55
  */
56
56
  router?: Router<[H, RouterRoute]>
@@ -69,7 +69,7 @@ export type AppOptions<E extends Env> = {
69
69
  *
70
70
  * @example
71
71
  * ```ts
72
- * const app = new App({
72
+ * const app = new Acryl({
73
73
  * getPath: (req) =>
74
74
  * '/' + req.headers.get('host') + req.url.replace(/^https?:\/\/[^/]+(\/[^?]*)/, '$1'),
75
75
  * })
@@ -106,7 +106,7 @@ type MountOptions =
106
106
  replaceRequest?: MountReplaceRequest | false
107
107
  }
108
108
 
109
- class App<
109
+ class Acryl<
110
110
  E extends Env = Env,
111
111
  S extends Schema = {},
112
112
  BasePath extends string = '/',
@@ -135,7 +135,7 @@ class App<
135
135
 
136
136
  routes: RouterRoute[] = []
137
137
 
138
- constructor(options: AppOptions<E> = {}) {
138
+ constructor(options: AcrylOptions<E> = {}) {
139
139
  // Implementation of app.get(...handlers[]) or app.get(path, ...handlers[])
140
140
  const allMethods = [...METHODS, METHOD_NAME_ALL_LOWERCASE]
141
141
  allMethods.forEach((method) => {
@@ -186,8 +186,8 @@ class App<
186
186
  this.getPath = (strict ?? true) ? (options.getPath ?? getPath) : getPathNoStrict
187
187
  }
188
188
 
189
- #clone(): App<E, S, BasePath, CurrentPath> {
190
- const clone = new App<E, S, BasePath, CurrentPath>({
189
+ #clone(): Acryl<E, S, BasePath, CurrentPath> {
190
+ const clone = new Acryl<E, S, BasePath, CurrentPath>({
191
191
  router: this.router,
192
192
  getPath: this.getPath,
193
193
  })
@@ -202,17 +202,17 @@ class App<
202
202
  private errorHandler: ErrorHandler = errorHandler
203
203
 
204
204
  /**
205
- * `.route()` allows grouping other App instance in routes.
205
+ * `.route()` allows grouping other Acryl instance in routes.
206
206
  *
207
207
  *
208
208
  * @param {string} path - base Path
209
- * @param {App} app - other App instance
210
- * @returns {App} routed App instance
209
+ * @param {Acryl} app - other Acryl instance
210
+ * @returns {Acryl} routed Acryl instance
211
211
  *
212
212
  * @example
213
213
  * ```ts
214
- * const app = new App()
215
- * const app2 = new App()
214
+ * const app = new Acryl()
215
+ * const app2 = new Acryl()
216
216
  *
217
217
  * app2.get("/user", (c) => c.text("user"))
218
218
  * app.route("/api", app2) // GET /api/user
@@ -226,8 +226,8 @@ class App<
226
226
  SubCurrentPath extends string,
227
227
  >(
228
228
  path: SubPath,
229
- app: App<SubEnv, SubSchema, SubBasePath, SubCurrentPath>
230
- ): App<E, MergeSchemaPath<SubSchema, MergePath<BasePath, SubPath>> | S, BasePath, CurrentPath> {
229
+ app: Acryl<SubEnv, SubSchema, SubBasePath, SubCurrentPath>
230
+ ): Acryl<E, MergeSchemaPath<SubSchema, MergePath<BasePath, SubPath>> | S, BasePath, CurrentPath> {
231
231
  const subApp = this.basePath(path)
232
232
  app.routes.map((r) => {
233
233
  let handler
@@ -249,16 +249,16 @@ class App<
249
249
  *
250
250
  *
251
251
  * @param {string} path - base Path
252
- * @returns {App} changed App instance
252
+ * @returns {Acryl} changed Acryl instance
253
253
  *
254
254
  * @example
255
255
  * ```ts
256
- * const api = new App().basePath('/api')
256
+ * const api = new Acryl().basePath('/api')
257
257
  * ```
258
258
  */
259
259
  basePath<SubPath extends string>(
260
260
  path: SubPath
261
- ): App<E, S, MergePath<BasePath, SubPath>, MergePath<BasePath, SubPath>> {
261
+ ): Acryl<E, S, MergePath<BasePath, SubPath>, MergePath<BasePath, SubPath>> {
262
262
  const subApp = this.#clone()
263
263
  subApp._basePath = mergePath(this._basePath, path)
264
264
  return subApp
@@ -269,7 +269,7 @@ class App<
269
269
  *
270
270
  *
271
271
  * @param {ErrorHandler} handler - request Handler for error
272
- * @returns {App} changed App instance
272
+ * @returns {Acryl} changed Acryl instance
273
273
  *
274
274
  * @example
275
275
  * ```ts
@@ -279,7 +279,7 @@ class App<
279
279
  * })
280
280
  * ```
281
281
  */
282
- onError = (handler: ErrorHandler<E>): App<E, S, BasePath, CurrentPath> => {
282
+ onError = (handler: ErrorHandler<E>): Acryl<E, S, BasePath, CurrentPath> => {
283
283
  this.errorHandler = handler
284
284
  return this
285
285
  }
@@ -289,7 +289,7 @@ class App<
289
289
  *
290
290
  *
291
291
  * @param {NotFoundHandler} handler - request handler for not-found
292
- * @returns {App} changed App instance
292
+ * @returns {Acryl} changed Acryl instance
293
293
  *
294
294
  * @example
295
295
  * ```ts
@@ -298,13 +298,13 @@ class App<
298
298
  * })
299
299
  * ```
300
300
  */
301
- notFound = (handler: NotFoundHandler<E>): App<E, S, BasePath, CurrentPath> => {
301
+ notFound = (handler: NotFoundHandler<E>): Acryl<E, S, BasePath, CurrentPath> => {
302
302
  this.#notFoundHandler = handler
303
303
  return this
304
304
  }
305
305
 
306
306
  /**
307
- * `.mount()` allows you to mount applications built with other frameworks into your App application.
307
+ * `.mount()` allows you to mount applications built with other frameworks into your Acryl application.
308
308
  *
309
309
  * @deprecated Use `mount()` from `acryl-router/mount` instead. `.mount()` will be removed in v5.
310
310
  *
@@ -312,24 +312,24 @@ class App<
312
312
  * @param {string} path - base Path
313
313
  * @param {Function} applicationHandler - other Request Handler
314
314
  * @param {MountOptions} [options] - options of `.mount()`
315
- * @returns {App} mounted App instance
315
+ * @returns {Acryl} mounted Acryl instance
316
316
  *
317
317
  * @example
318
318
  * ```ts
319
319
  * import { Router as IttyRouter } from 'itty-router'
320
- * import { App } from 'acryl-router'
320
+ * import { Acryl } from 'acrylblends'
321
321
  * // Create itty-router application
322
322
  * const ittyRouter = IttyRouter()
323
323
  * // GET /itty-router/hello
324
324
  * ittyRouter.get('/hello', () => new Response('Hello from itty-router'))
325
325
  *
326
- * const app = new App()
326
+ * const app = new Acryl()
327
327
  * app.mount('/itty-router', ittyRouter.handle)
328
328
  * ```
329
329
  *
330
330
  * @example
331
331
  * ```ts
332
- * const app = new App()
332
+ * const app = new Acryl()
333
333
  * // Send the request to another application without modification.
334
334
  * app.mount('/app', anotherApp, {
335
335
  * replaceRequest: (req) => req,
@@ -340,7 +340,7 @@ class App<
340
340
  path: string,
341
341
  applicationHandler: (request: Request, ...args: any) => Response | Promise<Response>,
342
342
  options?: MountOptions
343
- ): App<E, S, BasePath, CurrentPath> {
343
+ ): Acryl<E, S, BasePath, CurrentPath> {
344
344
  // handle options
345
345
  let replaceRequest: MountReplaceRequest | undefined
346
346
  let optionHandler: MountOptionHandler | undefined
@@ -541,4 +541,4 @@ class App<
541
541
  }
542
542
  }
543
543
 
544
- export { App as AppBase }
544
+ export { Acryl as AcrylBase }