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
@@ -0,0 +1,28 @@
1
+ import { I as MiddlewareHandler } from "./context-Bm7rI-oK.js";
2
+
3
+ //#region ../../plugins/acryl-router/src/core/middleware/powered-by/index.d.ts
4
+ type PoweredByOptions = {
5
+ /**
6
+ * The value for X-Powered-By header.
7
+ * @default Acryl
8
+ */
9
+ serverName?: string;
10
+ };
11
+ /**
12
+ * Powered By Middleware for Acryl.
13
+ *
14
+ * @param options - The options for the Powered By Middleware.
15
+ * @returns {MiddlewareHandler} The middleware handler function.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import { poweredBy } from 'acrylblends/powered-by'
20
+ *
21
+ * const app = new Acryl()
22
+ *
23
+ * app.use(poweredBy()) // With options: poweredBy({ serverName: "My Server" })
24
+ * ```
25
+ */
26
+ declare const poweredBy: (options?: PoweredByOptions) => MiddlewareHandler;
27
+ //#endregion
28
+ export { poweredBy };
@@ -0,0 +1,24 @@
1
+ //#region ../../plugins/acryl-router/src/core/middleware/powered-by/index.ts
2
+ /**
3
+ * Powered By Middleware for Acryl.
4
+ *
5
+ * @param options - The options for the Powered By Middleware.
6
+ * @returns {MiddlewareHandler} The middleware handler function.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { poweredBy } from 'acrylblends/powered-by'
11
+ *
12
+ * const app = new Acryl()
13
+ *
14
+ * app.use(poweredBy()) // With options: poweredBy({ serverName: "My Server" })
15
+ * ```
16
+ */
17
+ const poweredBy = (options) => {
18
+ return async function poweredBy(c, next) {
19
+ await next();
20
+ c.res.headers.set("X-Powered-By", options?.serverName ?? "Acryl");
21
+ };
22
+ };
23
+ //#endregion
24
+ export { poweredBy };
@@ -0,0 +1,40 @@
1
+ import { I as MiddlewareHandler } from "./context-Bm7rI-oK.js";
2
+
3
+ //#region ../../plugins/acryl-router/src/core/middleware/pretty-json/index.d.ts
4
+ interface PrettyOptions {
5
+ /**
6
+ * Number of spaces for indentation.
7
+ * @default 2
8
+ */
9
+ space?: number;
10
+ /**
11
+ * Query conditions for when to Pretty.
12
+ * @default 'pretty'
13
+ */
14
+ query?: string;
15
+ /**
16
+ * Force prettification of JSON responses regardless of query parameters.
17
+ * @default false
18
+ */
19
+ force?: boolean;
20
+ }
21
+ /**
22
+ * Pretty JSON Middleware for Acryl.
23
+ *
24
+ *
25
+ * @param options - The options for the pretty JSON middleware.
26
+ * @returns {MiddlewareHandler} The middleware handler function.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const app = new Acryl()
31
+ *
32
+ * app.use(prettyJSON()) // With options: prettyJSON({ space: 4 })
33
+ * app.get('/', (c) => {
34
+ * return c.json({ message: 'Acryl!' })
35
+ * })
36
+ * ```
37
+ */
38
+ declare const prettyJSON: (options?: PrettyOptions) => MiddlewareHandler;
39
+ //#endregion
40
+ export { prettyJSON };
@@ -0,0 +1,39 @@
1
+ //#region ../../plugins/acryl-router/src/core/middleware/pretty-json/index.ts
2
+ const jsonContentTypeRegex = /^application\/(?:[a-z0-9._-]+\+)?json(?=$|[;\s])/i;
3
+ /**
4
+ * Pretty JSON Middleware for Acryl.
5
+ *
6
+ *
7
+ * @param options - The options for the pretty JSON middleware.
8
+ * @returns {MiddlewareHandler} The middleware handler function.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const app = new Acryl()
13
+ *
14
+ * app.use(prettyJSON()) // With options: prettyJSON({ space: 4 })
15
+ * app.get('/', (c) => {
16
+ * return c.json({ message: 'Acryl!' })
17
+ * })
18
+ * ```
19
+ */
20
+ const prettyJSON = (options) => {
21
+ const targetQuery = options?.query ?? "pretty";
22
+ return async function prettyJSON(c, next) {
23
+ const pretty = options?.force || c.req.query(targetQuery) || c.req.query(targetQuery) === "";
24
+ await next();
25
+ const contentType = c.res.headers.get("Content-Type");
26
+ if (pretty && contentType && jsonContentTypeRegex.test(contentType)) {
27
+ let obj;
28
+ try {
29
+ obj = await c.res.clone().json();
30
+ } catch {
31
+ return;
32
+ }
33
+ c.res = new Response(JSON.stringify(obj, null, options?.space ?? 2), c.res);
34
+ c.res.headers.delete("Content-Length");
35
+ }
36
+ };
37
+ };
38
+ //#endregion
39
+ export { prettyJSON };
@@ -0,0 +1,363 @@
1
+ import { checkOptionalParameter } from "./utils/url.js";
2
+ import { MESSAGE_MATCHER_IS_ALREADY_BUILT, UnsupportedPathError } from "./router.js";
3
+ import { t as createNullObject } from "./utils-dw8lxqjL.js";
4
+ //#region ../../plugins/acryl-router/src/core/router/reg-exp-router/matcher.ts
5
+ const emptyParam = [];
6
+ function match(method, path) {
7
+ const matchers = this.buildAllMatchers();
8
+ const match = ((method, path) => {
9
+ const matcher = matchers[method] || matchers["ALL"];
10
+ const staticMatch = matcher[2][path];
11
+ if (staticMatch) return staticMatch;
12
+ const match = path.match(matcher[0]);
13
+ if (!match) return [[], emptyParam];
14
+ const index = match.indexOf("", 1);
15
+ return [matcher[1][index], match];
16
+ });
17
+ this.match = match;
18
+ return match(method, path);
19
+ }
20
+ //#endregion
21
+ //#region ../../plugins/acryl-router/src/core/router/reg-exp-router/node.ts
22
+ const LABEL_REG_EXP_STR = "[^/]+";
23
+ const TAIL_WILDCARD_REG_EXP_STR = "(?:|/.*)";
24
+ const PATH_ERROR = Symbol();
25
+ const regExpMetaChars = /* @__PURE__ */ new Set(".\\+*[^]$()");
26
+ /**
27
+ * Sort order:
28
+ * 1. literal
29
+ * 2. special pattern (e.g. :label{[0-9]+})
30
+ * 3. common label pattern (e.g. :label)
31
+ * 4. wildcard
32
+ */
33
+ function compareKey(a, b) {
34
+ if (a.length === 1) return b.length === 1 ? a < b ? -1 : 1 : -1;
35
+ if (b.length === 1) return 1;
36
+ if (a === ".*" || a === "(?:|/.*)") return b === "(?:|/.*)" ? -1 : 1;
37
+ else if (b === ".*" || b === "(?:|/.*)") return -1;
38
+ if (a === "[^/]+") return 1;
39
+ else if (b === "[^/]+") return -1;
40
+ return a.length === b.length ? a < b ? -1 : 1 : b.length - a.length;
41
+ }
42
+ var Node = class Node {
43
+ #index;
44
+ #varIndex;
45
+ #children = createNullObject();
46
+ insert(tokens, index, paramMap, context, isStatic) {
47
+ let node = this;
48
+ for (let i = 0, len = tokens.length; i < len; i++) {
49
+ const token = tokens[i];
50
+ const pattern = token.length === 1 ? token === "*" ? i === len - 1 ? [
51
+ "",
52
+ "",
53
+ ".*"
54
+ ] : [
55
+ "",
56
+ "",
57
+ LABEL_REG_EXP_STR
58
+ ] : null : token === "/*" ? [
59
+ "",
60
+ "",
61
+ TAIL_WILDCARD_REG_EXP_STR
62
+ ] : token.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);
63
+ let nextNode;
64
+ if (pattern) {
65
+ const name = pattern[1];
66
+ let regexpStr = pattern[2] || "[^/]+";
67
+ if (name && pattern[2]) {
68
+ if (regexpStr === ".*") throw PATH_ERROR;
69
+ regexpStr = regexpStr.replace(/^\((?!\?:)(?=[^)]+\)$)/, "(?:");
70
+ if (/\((?!\?:)/.test(regexpStr)) throw PATH_ERROR;
71
+ if (regexpStr.length === 1 && regExpMetaChars.has(regexpStr)) throw PATH_ERROR;
72
+ }
73
+ nextNode = node.#children[regexpStr];
74
+ if (!nextNode) {
75
+ if (regexpStr !== ".*" && regexpStr !== "(?:|/.*)") {
76
+ for (const k in node.#children) if ((regexpStr.length > 1 || k.length > 1) && k !== ".*" && k !== "(?:|/.*)") throw PATH_ERROR;
77
+ }
78
+ nextNode = node.#children[regexpStr] = new Node();
79
+ }
80
+ if (name !== "") {
81
+ nextNode.#varIndex ??= context.varIndex++;
82
+ paramMap.push([name, nextNode.#varIndex]);
83
+ }
84
+ } else {
85
+ nextNode = node.#children[token];
86
+ if (!nextNode) {
87
+ for (const k in node.#children) if (k.length > 1 && k !== ".*" && k !== "(?:|/.*)") throw PATH_ERROR;
88
+ nextNode = node.#children[token] = new Node();
89
+ }
90
+ }
91
+ node = nextNode;
92
+ }
93
+ if (node.#index !== void 0) throw PATH_ERROR;
94
+ node.#index = isStatic ? -1 : index;
95
+ }
96
+ buildRegExpStr() {
97
+ const strList = Object.keys(this.#children).sort(compareKey).map((k) => {
98
+ const c = this.#children[k];
99
+ const childStr = c.buildRegExpStr();
100
+ return childStr === "" ? "" : (typeof c.#varIndex === "number" ? `(${k})@${c.#varIndex}` : regExpMetaChars.has(k) ? `\\${k}` : k) + childStr;
101
+ }).filter(Boolean);
102
+ if (typeof this.#index === "number" && this.#index !== -1) strList.unshift(`#${this.#index}`);
103
+ if (strList.length === 0) return "";
104
+ if (strList.length === 1) return strList[0];
105
+ return "(?:" + strList.join("|") + ")";
106
+ }
107
+ };
108
+ //#endregion
109
+ //#region ../../plugins/acryl-router/src/core/router/reg-exp-router/trie.ts
110
+ var Trie = class {
111
+ #context = { varIndex: 0 };
112
+ #root = new Node();
113
+ #index = 0;
114
+ paths = createNullObject();
115
+ insert(path, isStatic) {
116
+ if (isStatic) {
117
+ this.#root.insert(path.split(""), 0, [], this.#context, true);
118
+ return;
119
+ }
120
+ const paramAssoc = [];
121
+ const groups = [];
122
+ let markedPath = path;
123
+ for (let i = 0;;) {
124
+ let replaced = false;
125
+ markedPath = markedPath.replace(/\{[^}]+\}/g, (m) => {
126
+ const mark = `@\\${i}`;
127
+ groups[i] = [mark, m];
128
+ i++;
129
+ replaced = true;
130
+ return mark;
131
+ });
132
+ if (!replaced) break;
133
+ }
134
+ /**
135
+ * - pattern (:label, :label{0-9]+}, ...)
136
+ * - /* wildcard
137
+ * - character
138
+ */
139
+ const tokens = markedPath.match(/(?::[^\/]+)|(?:\/\*$)|./g) || [];
140
+ for (let i = groups.length - 1; i >= 0; i--) {
141
+ const [mark] = groups[i];
142
+ for (let j = tokens.length - 1; j >= 0; j--) if (tokens[j].indexOf(mark) !== -1) {
143
+ tokens[j] = tokens[j].replace(mark, groups[i][1]);
144
+ break;
145
+ }
146
+ }
147
+ this.#root.insert(tokens, this.#index, paramAssoc, this.#context, false);
148
+ this.paths[path] = [this.#index++, paramAssoc];
149
+ }
150
+ buildRegExp() {
151
+ let regexp = this.#root.buildRegExpStr();
152
+ if (regexp === "") return [
153
+ /^$/,
154
+ [],
155
+ []
156
+ ];
157
+ let captureIndex = 0;
158
+ const indexReplacementMap = [];
159
+ const paramReplacementMap = [];
160
+ regexp = regexp.replace(/#(\d+)|@(\d+)|\.\*\$/g, (_, handlerIndex, paramIndex) => {
161
+ if (handlerIndex !== void 0) {
162
+ indexReplacementMap[++captureIndex] = Number(handlerIndex);
163
+ return "$()";
164
+ }
165
+ if (paramIndex !== void 0) {
166
+ paramReplacementMap[Number(paramIndex)] = ++captureIndex;
167
+ return "";
168
+ }
169
+ return "";
170
+ });
171
+ return [
172
+ new RegExp(`^${regexp}`),
173
+ indexReplacementMap,
174
+ paramReplacementMap
175
+ ];
176
+ }
177
+ };
178
+ //#endregion
179
+ //#region ../../plugins/acryl-router/src/core/router/reg-exp-router/router.ts
180
+ let wildcardRegExpCache = createNullObject();
181
+ function buildWildcardRegExp(path) {
182
+ return wildcardRegExpCache[path] ??= new RegExp(`^${path.replace(/\/:[^/{}]+(?:\{\[\^\/]\+})?(?=[/{]|$)|\/?\*$|([.\\+*[^\]$()?{}|])/g, (match, metaChar) => metaChar ? `\\${metaChar}` : match === "/*" ? TAIL_WILDCARD_REG_EXP_STR : match === "*" ? ".*" : `/:${LABEL_REG_EXP_STR}`)}$`);
183
+ }
184
+ function findMiddleware(middleware, path) {
185
+ for (const k of Object.keys(middleware).sort((a, b) => b.length - a.length)) if (buildWildcardRegExp(k).test(path)) return [...middleware[k]];
186
+ }
187
+ var RegExpRouter = class {
188
+ name = "RegExpRouter";
189
+ #middleware;
190
+ #routes;
191
+ #tries;
192
+ constructor() {
193
+ this.#middleware = { ["ALL"]: createNullObject() };
194
+ this.#routes = { ["ALL"]: createNullObject() };
195
+ this.#tries = { ["ALL"]: new Trie() };
196
+ }
197
+ #insertPath(method, path) {
198
+ try {
199
+ this.#tries[method].insert(path, !/\*|\/:/.test(path));
200
+ } catch (e) {
201
+ throw e === PATH_ERROR ? new UnsupportedPathError(path) : e;
202
+ }
203
+ }
204
+ add(method, path, handler) {
205
+ const middleware = this.#middleware;
206
+ const routes = this.#routes;
207
+ if (!middleware) throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);
208
+ if (!middleware[method]) {
209
+ this.#tries[method] = new Trie();
210
+ for (const handlerMap of [middleware, routes]) {
211
+ handlerMap[method] = createNullObject();
212
+ for (const p in handlerMap["ALL"]) {
213
+ handlerMap[method][p] = [...handlerMap["ALL"][p]];
214
+ this.#insertPath(method, p);
215
+ }
216
+ }
217
+ }
218
+ if (path === "/*") path = "*";
219
+ const methods = method === "ALL" ? Object.keys(middleware) : [method];
220
+ if (/\*$/.test(path)) {
221
+ const re = buildWildcardRegExp(path);
222
+ for (const m of methods) if (!middleware[m][path]) {
223
+ this.#insertPath(m, path);
224
+ middleware[m][path] = findMiddleware(middleware[m], path) || findMiddleware(middleware["ALL"], path) || [];
225
+ }
226
+ for (const handlerMap of [middleware, routes]) for (const m of methods) for (const p in handlerMap[m]) re.test(p) && handlerMap[m][p].push([handler, path]);
227
+ return;
228
+ }
229
+ const paths = checkOptionalParameter(path) || [path];
230
+ for (const path of paths) for (const m of methods) {
231
+ if (!routes[m][path]) {
232
+ this.#insertPath(m, path);
233
+ routes[m][path] = findMiddleware(middleware[m], path) || findMiddleware(middleware["ALL"], path) || [];
234
+ }
235
+ routes[m][path].push([handler, path]);
236
+ }
237
+ }
238
+ match = match;
239
+ buildAllMatchers() {
240
+ const matchers = createNullObject();
241
+ for (const method of Object.keys(this.#routes)) matchers[method] = this.#buildMatcher(method);
242
+ this.#middleware = this.#routes = this.#tries = void 0;
243
+ wildcardRegExpCache = createNullObject();
244
+ return matchers;
245
+ }
246
+ #buildMatcher(method) {
247
+ const middleware = this.#middleware[method];
248
+ const routes = this.#routes[method];
249
+ const trie = this.#tries[method];
250
+ const staticMap = createNullObject();
251
+ const handlerData = [];
252
+ const [regexp, indexReplacementMap, paramReplacementMap] = trie.buildRegExp();
253
+ for (const r of [middleware, routes]) for (const path in r) {
254
+ const handlers = r[path];
255
+ const pathData = trie.paths[path];
256
+ if (!pathData) {
257
+ staticMap[path] = [handlers.map(([h]) => [h, createNullObject()]), emptyParam];
258
+ continue;
259
+ }
260
+ handlerData[pathData[0]] = handlers.map(([h, handlerPath]) => [h, trie.paths[handlerPath][1].reduceRight((map, [key], i) => {
261
+ map[key] = paramReplacementMap[pathData[1][i][1]];
262
+ return map;
263
+ }, createNullObject())]);
264
+ }
265
+ return [
266
+ regexp,
267
+ indexReplacementMap.map((i) => handlerData[i]),
268
+ staticMap
269
+ ];
270
+ }
271
+ };
272
+ //#endregion
273
+ //#region ../../plugins/acryl-router/src/core/router/reg-exp-router/prepared-router.ts
274
+ var PreparedRegExpRouter = class {
275
+ name = "PreparedRegExpRouter";
276
+ #matchers;
277
+ #relocateMap;
278
+ constructor(matchers, relocateMap) {
279
+ this.#matchers = matchers;
280
+ this.#relocateMap = relocateMap;
281
+ }
282
+ #addWildcard(method, handlerData) {
283
+ const matcher = this.#matchers[method];
284
+ matcher[1].forEach((list) => list && list.push(handlerData));
285
+ Object.values(matcher[2]).forEach((list) => list[0].push(handlerData));
286
+ }
287
+ #addPath(method, path, handler, indexes, map) {
288
+ const matcher = this.#matchers[method];
289
+ if (!map) matcher[2][path][0].push([handler, {}]);
290
+ else indexes.forEach((index) => {
291
+ if (typeof index === "number") matcher[1][index].push([handler, map]);
292
+ else matcher[2][index || path][0].push([handler, map]);
293
+ });
294
+ }
295
+ add(method, path, handler) {
296
+ if (!this.#matchers[method]) {
297
+ const all = this.#matchers["ALL"];
298
+ const staticMap = {};
299
+ for (const key in all[2]) staticMap[key] = [all[2][key][0].slice(), emptyParam];
300
+ this.#matchers[method] = [
301
+ all[0],
302
+ all[1].map((list) => Array.isArray(list) ? list.slice() : 0),
303
+ staticMap
304
+ ];
305
+ }
306
+ if (path === "/*" || path === "*") {
307
+ const handlerData = [handler, {}];
308
+ if (method === "ALL") for (const m in this.#matchers) this.#addWildcard(m, handlerData);
309
+ else this.#addWildcard(method, handlerData);
310
+ return;
311
+ }
312
+ const data = this.#relocateMap[path];
313
+ if (!data) throw new Error(`Path ${path} is not registered`);
314
+ for (const [indexes, map] of data) if (method === "ALL") for (const m in this.#matchers) this.#addPath(m, path, handler, indexes, map);
315
+ else this.#addPath(method, path, handler, indexes, map);
316
+ }
317
+ buildAllMatchers() {
318
+ return this.#matchers;
319
+ }
320
+ match = match;
321
+ };
322
+ const buildInitParams = ({ paths }) => {
323
+ const RegExpRouterWithMatcherExport = class extends RegExpRouter {
324
+ buildAndExportAllMatchers() {
325
+ return this.buildAllMatchers();
326
+ }
327
+ };
328
+ const router = new RegExpRouterWithMatcherExport();
329
+ for (const path of paths) router.add("ALL", path, path);
330
+ const matchers = router.buildAndExportAllMatchers();
331
+ const all = matchers["ALL"];
332
+ const relocateMap = {};
333
+ for (const path of paths) {
334
+ if (path === "/*" || path === "*") continue;
335
+ all[1].forEach((list, i) => {
336
+ list.forEach(([p, map]) => {
337
+ if (p === path) {
338
+ if (relocateMap[path]) relocateMap[path][0][1] = {
339
+ ...relocateMap[path][0][1],
340
+ ...map
341
+ };
342
+ else relocateMap[path] = [[[], map]];
343
+ if (relocateMap[path][0][0].findIndex((j) => j === i) === -1) relocateMap[path][0][0].push(i);
344
+ }
345
+ });
346
+ });
347
+ for (const path2 in all[2]) all[2][path2][0].forEach(([p]) => {
348
+ if (p === path) {
349
+ relocateMap[path] ||= [[[]]];
350
+ const value = path2 === path ? "" : path2;
351
+ if (relocateMap[path][0][0].findIndex((v) => v === value) === -1) relocateMap[path][0][0].push(value);
352
+ }
353
+ });
354
+ }
355
+ for (let i = 0, len = all[1].length; i < len; i++) all[1][i] = all[1][i] ? [] : 0;
356
+ for (const path in all[2]) all[2][path][0] = [];
357
+ return [matchers, relocateMap];
358
+ };
359
+ const serializeInitParams = ([matchers, relocateMap]) => {
360
+ return `[${JSON.stringify(matchers, (_, value) => value instanceof RegExp ? `##${value.toString()}##` : value).replace(/"##(.+?)##"/g, (_, str) => str.replace(/\\\\/g, "\\"))},${JSON.stringify(relocateMap)}]`;
361
+ };
362
+ //#endregion
363
+ export { RegExpRouter as i, buildInitParams as n, serializeInitParams as r, PreparedRegExpRouter as t };
@@ -0,0 +1,45 @@
1
+ import { I as MiddlewareHandler, t as Context } from "./context-Bm7rI-oK.js";
2
+
3
+ //#region ../../plugins/acryl-router/src/core/middleware/request-id/request-id.d.ts
4
+ type RequestIdVariables = {
5
+ requestId: string;
6
+ };
7
+ type RequestIdOptions = {
8
+ limitLength?: number;
9
+ headerName?: string;
10
+ generator?: (c: Context) => string;
11
+ };
12
+ /**
13
+ * Request ID Middleware for Acryl.
14
+ *
15
+ * @param {object} options - Options for Request ID middleware.
16
+ * @param {number} [options.limitLength=255] - The maximum length of request id.
17
+ * @param {string} [options.headerName=X-Request-Id] - The header name used in request id.
18
+ * @param {generator} [options.generator=() => crypto.randomUUID()] - The request id generation function.
19
+ *
20
+ * @returns {MiddlewareHandler} The middleware handler function.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * type Variables = RequestIdVariables
25
+ * const app = new Acryl<{Variables: Variables}>()
26
+ *
27
+ * app.use(requestId())
28
+ * app.get('/', (c) => {
29
+ * console.log(c.get('requestId')) // Debug
30
+ * return c.text('Hello World!')
31
+ * })
32
+ * ```
33
+ */
34
+ declare const requestId: ({
35
+ limitLength,
36
+ headerName,
37
+ generator
38
+ }?: RequestIdOptions) => MiddlewareHandler;
39
+ //#endregion
40
+ //#region ../../plugins/acryl-router/src/core/middleware/request-id/index.d.ts
41
+ declare module '../../context.ts' {
42
+ interface ContextVariableMap extends RequestIdVariables {}
43
+ }
44
+ //#endregion
45
+ export { type RequestIdVariables, requestId };
@@ -0,0 +1,34 @@
1
+ //#region ../../plugins/acryl-router/src/core/middleware/request-id/request-id.ts
2
+ /**
3
+ * Request ID Middleware for Acryl.
4
+ *
5
+ * @param {object} options - Options for Request ID middleware.
6
+ * @param {number} [options.limitLength=255] - The maximum length of request id.
7
+ * @param {string} [options.headerName=X-Request-Id] - The header name used in request id.
8
+ * @param {generator} [options.generator=() => crypto.randomUUID()] - The request id generation function.
9
+ *
10
+ * @returns {MiddlewareHandler} The middleware handler function.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * type Variables = RequestIdVariables
15
+ * const app = new Acryl<{Variables: Variables}>()
16
+ *
17
+ * app.use(requestId())
18
+ * app.get('/', (c) => {
19
+ * console.log(c.get('requestId')) // Debug
20
+ * return c.text('Hello World!')
21
+ * })
22
+ * ```
23
+ */
24
+ const requestId = ({ limitLength = 255, headerName = "X-Request-Id", generator = () => crypto.randomUUID() } = {}) => {
25
+ return async function requestId(c, next) {
26
+ let reqId = headerName ? c.req.header(headerName) : void 0;
27
+ if (!reqId || reqId.length > limitLength || /[^\w\-=]/.test(reqId)) reqId = generator(c);
28
+ c.set("requestId", reqId);
29
+ if (headerName) c.header(headerName, reqId);
30
+ await next();
31
+ };
32
+ };
33
+ //#endregion
34
+ export { requestId };
@@ -0,0 +1,2 @@
1
+ import { o as AcrylRequest, s as cloneRawRequest } from "./context-Bm7rI-oK.js";
2
+ export { AcrylRequest, cloneRawRequest };