acrylblends 0.2.0 → 0.4.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 (335) hide show
  1. package/dist/index.d.ts +22 -16
  2. package/dist/index.js +65 -20
  3. package/dist/index.js.map +1 -1
  4. package/package.json +1 -1
  5. package/plugins/acryl-inspect/LICENSE +21 -0
  6. package/plugins/acryl-inspect/plugin.json +12 -0
  7. package/plugins/acryl-inspect/src/index.ts +3 -0
  8. package/plugins/acryl-inspect/src/report.ts +126 -0
  9. package/plugins/acryl-inspect/src/service.ts +68 -0
  10. package/plugins/acryl-inspect/tests/report.spec.ts +63 -0
  11. package/plugins/acryl-inspect/tests/service.spec.ts +121 -0
  12. package/plugins/acryl-inspect/upstream.json +18 -0
  13. package/plugins/acryl-node-server/LICENSE +47 -0
  14. package/plugins/acryl-node-server/plugin.json +13 -0
  15. package/plugins/acryl-node-server/src/adapter/conninfo.ts +23 -0
  16. package/plugins/acryl-node-server/src/adapter/early-hints.ts +55 -0
  17. package/plugins/acryl-node-server/src/adapter/error.ts +11 -0
  18. package/plugins/acryl-node-server/src/adapter/headers.ts +249 -0
  19. package/plugins/acryl-node-server/src/adapter/index.ts +6 -0
  20. package/plugins/acryl-node-server/src/adapter/listener.ts +540 -0
  21. package/plugins/acryl-node-server/src/adapter/request.ts +797 -0
  22. package/plugins/acryl-node-server/src/adapter/response.ts +186 -0
  23. package/plugins/acryl-node-server/src/adapter/serve-static.ts +238 -0
  24. package/plugins/acryl-node-server/src/adapter/server.ts +36 -0
  25. package/plugins/acryl-node-server/src/adapter/types.ts +82 -0
  26. package/plugins/acryl-node-server/src/adapter/url.ts +42 -0
  27. package/plugins/acryl-node-server/src/adapter/utils/response/constants.ts +1 -0
  28. package/plugins/acryl-node-server/src/adapter/utils/response.ts +4 -0
  29. package/plugins/acryl-node-server/src/adapter/utils/stream.ts +88 -0
  30. package/plugins/acryl-node-server/src/adapter/utils.ts +96 -0
  31. package/plugins/acryl-node-server/src/adapter/websocket-types.ts +45 -0
  32. package/plugins/acryl-node-server/src/adapter/websocket.ts +375 -0
  33. package/plugins/acryl-node-server/src/index.ts +107 -0
  34. package/plugins/acryl-node-server/tests/adapter/app.ts +76 -0
  35. package/plugins/acryl-node-server/tests/adapter/assets/.static/plain.txt +1 -0
  36. package/plugins/acryl-node-server/tests/adapter/assets/favicon.ico +0 -0
  37. package/plugins/acryl-node-server/tests/adapter/assets/secret.txt +1 -0
  38. package/plugins/acryl-node-server/tests/adapter/assets/static/acryl.html +1 -0
  39. package/plugins/acryl-node-server/tests/adapter/assets/static/admin/secret.txt +1 -0
  40. package/plugins/acryl-node-server/tests/adapter/assets/static/data.json +5 -0
  41. package/plugins/acryl-node-server/tests/adapter/assets/static/extensionless +1 -0
  42. package/plugins/acryl-node-server/tests/adapter/assets/static/foo..bar.txt +0 -0
  43. package/plugins/acryl-node-server/tests/adapter/assets/static/index.html +1 -0
  44. package/plugins/acryl-node-server/tests/adapter/assets/static/plain.txt +1 -0
  45. package/plugins/acryl-node-server/tests/adapter/assets/static-with-context-path/plain.txt +1 -0
  46. package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.bin +1 -0
  47. package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.bin.br +1 -0
  48. package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.txt +1 -0
  49. package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.txt.br +1 -0
  50. package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.txt.zst +1 -0
  51. package/plugins/acryl-node-server/tests/adapter/conninfo.test.ts +34 -0
  52. package/plugins/acryl-node-server/tests/adapter/content-length.test.ts +248 -0
  53. package/plugins/acryl-node-server/tests/adapter/early-hints.test.ts +457 -0
  54. package/plugins/acryl-node-server/tests/adapter/fixtures/keys/agent1-cert.pem +23 -0
  55. package/plugins/acryl-node-server/tests/adapter/fixtures/keys/agent1-key.pem +27 -0
  56. package/plugins/acryl-node-server/tests/adapter/headers.test.ts +252 -0
  57. package/plugins/acryl-node-server/tests/adapter/helpers/request.ts +190 -0
  58. package/plugins/acryl-node-server/tests/adapter/listener.test.ts +727 -0
  59. package/plugins/acryl-node-server/tests/adapter/request-client-disconnect.test.ts +189 -0
  60. package/plugins/acryl-node-server/tests/adapter/request.test.ts +1230 -0
  61. package/plugins/acryl-node-server/tests/adapter/response.test.ts +285 -0
  62. package/plugins/acryl-node-server/tests/adapter/serve-static.test.ts +849 -0
  63. package/plugins/acryl-node-server/tests/adapter/server-socket.test.ts +790 -0
  64. package/plugins/acryl-node-server/tests/adapter/server.test.ts +1302 -0
  65. package/plugins/acryl-node-server/tests/adapter/setup.ts +16 -0
  66. package/plugins/acryl-node-server/tests/adapter/url.test.ts +76 -0
  67. package/plugins/acryl-node-server/tests/adapter/utils/response.test.ts +23 -0
  68. package/plugins/acryl-node-server/tests/adapter/utils/stream.test.ts +75 -0
  69. package/plugins/acryl-node-server/tests/adapter/utils.test.ts +235 -0
  70. package/plugins/acryl-node-server/tests/adapter/websocket.test.ts +260 -0
  71. package/plugins/acryl-node-server/tests/server.spec.ts +141 -0
  72. package/plugins/acryl-node-server/upstream.json +18 -0
  73. package/plugins/acryl-router/LICENSE +47 -0
  74. package/plugins/acryl-router/plugin.json +13 -0
  75. package/plugins/acryl-router/src/client.ts +2 -0
  76. package/plugins/acryl-router/src/connection.ts +42 -0
  77. package/plugins/acryl-router/src/core/app-base.ts +544 -0
  78. package/plugins/acryl-router/src/core/app.test.ts +3833 -0
  79. package/plugins/acryl-router/src/core/app.ts +34 -0
  80. package/plugins/acryl-router/src/core/client/client.test.ts +2313 -0
  81. package/plugins/acryl-router/src/core/client/client.ts +249 -0
  82. package/plugins/acryl-router/src/core/client/fetch-result-please.ts +95 -0
  83. package/plugins/acryl-router/src/core/client/index.ts +17 -0
  84. package/plugins/acryl-router/src/core/client/types.test.ts +149 -0
  85. package/plugins/acryl-router/src/core/client/types.ts +393 -0
  86. package/plugins/acryl-router/src/core/client/utils.test.ts +405 -0
  87. package/plugins/acryl-router/src/core/client/utils.ts +117 -0
  88. package/plugins/acryl-router/src/core/compose.test.ts +751 -0
  89. package/plugins/acryl-router/src/core/compose.ts +73 -0
  90. package/plugins/acryl-router/src/core/context.test.ts +629 -0
  91. package/plugins/acryl-router/src/core/context.ts +781 -0
  92. package/plugins/acryl-router/src/core/helper/accepts/accepts.test.ts +344 -0
  93. package/plugins/acryl-router/src/core/helper/accepts/accepts.ts +96 -0
  94. package/plugins/acryl-router/src/core/helper/accepts/index.ts +6 -0
  95. package/plugins/acryl-router/src/core/helper/adapter/index.test.ts +55 -0
  96. package/plugins/acryl-router/src/core/helper/adapter/index.ts +90 -0
  97. package/plugins/acryl-router/src/core/helper/conninfo/index.ts +6 -0
  98. package/plugins/acryl-router/src/core/helper/conninfo/types.ts +45 -0
  99. package/plugins/acryl-router/src/core/helper/cookie/index.test.ts +510 -0
  100. package/plugins/acryl-router/src/core/helper/cookie/index.ts +146 -0
  101. package/plugins/acryl-router/src/core/helper/factory/index.test.ts +434 -0
  102. package/plugins/acryl-router/src/core/helper/factory/index.ts +375 -0
  103. package/plugins/acryl-router/src/core/helper/html/index.test.ts +78 -0
  104. package/plugins/acryl-router/src/core/helper/html/index.ts +57 -0
  105. package/plugins/acryl-router/src/core/helper/route/index.test.ts +259 -0
  106. package/plugins/acryl-router/src/core/helper/route/index.ts +144 -0
  107. package/plugins/acryl-router/src/core/helper/streaming/index.ts +9 -0
  108. package/plugins/acryl-router/src/core/helper/streaming/sse.ts +101 -0
  109. package/plugins/acryl-router/src/core/helper/streaming/stream.test.ts +128 -0
  110. package/plugins/acryl-router/src/core/helper/streaming/stream.ts +45 -0
  111. package/plugins/acryl-router/src/core/helper/streaming/text.test.ts +34 -0
  112. package/plugins/acryl-router/src/core/helper/streaming/text.ts +15 -0
  113. package/plugins/acryl-router/src/core/helper/streaming/utils.ts +11 -0
  114. package/plugins/acryl-router/src/core/helper/testing/index.test.ts +42 -0
  115. package/plugins/acryl-router/src/core/helper/testing/index.ts +28 -0
  116. package/plugins/acryl-router/src/core/helper/websocket/index.test.ts +124 -0
  117. package/plugins/acryl-router/src/core/helper/websocket/index.ts +140 -0
  118. package/plugins/acryl-router/src/core/http-exception.test.ts +45 -0
  119. package/plugins/acryl-router/src/core/http-exception.ts +77 -0
  120. package/plugins/acryl-router/src/core/index.ts +53 -0
  121. package/plugins/acryl-router/src/core/middleware/basic-auth/index.test.ts +434 -0
  122. package/plugins/acryl-router/src/core/middleware/basic-auth/index.ts +152 -0
  123. package/plugins/acryl-router/src/core/middleware/bearer-auth/index.test.ts +1018 -0
  124. package/plugins/acryl-router/src/core/middleware/bearer-auth/index.ts +220 -0
  125. package/plugins/acryl-router/src/core/middleware/body-limit/index.test.ts +273 -0
  126. package/plugins/acryl-router/src/core/middleware/body-limit/index.ts +110 -0
  127. package/plugins/acryl-router/src/core/middleware/combine/index.test.ts +355 -0
  128. package/plugins/acryl-router/src/core/middleware/combine/index.ts +171 -0
  129. package/plugins/acryl-router/src/core/middleware/compress/index.test.ts +535 -0
  130. package/plugins/acryl-router/src/core/middleware/compress/index.ts +142 -0
  131. package/plugins/acryl-router/src/core/middleware/context-storage/index.test.ts +43 -0
  132. package/plugins/acryl-router/src/core/middleware/context-storage/index.ts +58 -0
  133. package/plugins/acryl-router/src/core/middleware/cors/index.test.ts +532 -0
  134. package/plugins/acryl-router/src/core/middleware/cors/index.ts +163 -0
  135. package/plugins/acryl-router/src/core/middleware/csrf/index.test.ts +534 -0
  136. package/plugins/acryl-router/src/core/middleware/csrf/index.ts +150 -0
  137. package/plugins/acryl-router/src/core/middleware/etag/digest.test.ts +21 -0
  138. package/plugins/acryl-router/src/core/middleware/etag/digest.ts +95 -0
  139. package/plugins/acryl-router/src/core/middleware/etag/index.test.ts +503 -0
  140. package/plugins/acryl-router/src/core/middleware/etag/index.ts +135 -0
  141. package/plugins/acryl-router/src/core/middleware/ip-restriction/index.test.ts +217 -0
  142. package/plugins/acryl-router/src/core/middleware/ip-restriction/index.ts +278 -0
  143. package/plugins/acryl-router/src/core/middleware/jwk/index.test.ts +1135 -0
  144. package/plugins/acryl-router/src/core/middleware/jwk/index.ts +1 -0
  145. package/plugins/acryl-router/src/core/middleware/jwk/jwk.ts +195 -0
  146. package/plugins/acryl-router/src/core/middleware/jwk/keys.test.json +48 -0
  147. package/plugins/acryl-router/src/core/middleware/jwt/index.test.ts +802 -0
  148. package/plugins/acryl-router/src/core/middleware/jwt/index.ts +9 -0
  149. package/plugins/acryl-router/src/core/middleware/jwt/jwt.ts +189 -0
  150. package/plugins/acryl-router/src/core/middleware/language/index.test.ts +552 -0
  151. package/plugins/acryl-router/src/core/middleware/language/index.ts +12 -0
  152. package/plugins/acryl-router/src/core/middleware/language/language.ts +314 -0
  153. package/plugins/acryl-router/src/core/middleware/logger/index.test.ts +204 -0
  154. package/plugins/acryl-router/src/core/middleware/logger/index.ts +95 -0
  155. package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.test.ts +292 -0
  156. package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.ts +141 -0
  157. package/plugins/acryl-router/src/core/middleware/method-override/index.test.ts +221 -0
  158. package/plugins/acryl-router/src/core/middleware/method-override/index.ts +147 -0
  159. package/plugins/acryl-router/src/core/middleware/powered-by/index.test.ts +37 -0
  160. package/plugins/acryl-router/src/core/middleware/powered-by/index.ts +35 -0
  161. package/plugins/acryl-router/src/core/middleware/pretty-json/index.test.ts +218 -0
  162. package/plugins/acryl-router/src/core/middleware/pretty-json/index.ts +67 -0
  163. package/plugins/acryl-router/src/core/middleware/request-id/index.test.ts +168 -0
  164. package/plugins/acryl-router/src/core/middleware/request-id/index.ts +7 -0
  165. package/plugins/acryl-router/src/core/middleware/request-id/request-id.ts +59 -0
  166. package/plugins/acryl-router/src/core/middleware/secure-headers/index.test.ts +671 -0
  167. package/plugins/acryl-router/src/core/middleware/secure-headers/index.ts +8 -0
  168. package/plugins/acryl-router/src/core/middleware/secure-headers/permissions-policy.ts +101 -0
  169. package/plugins/acryl-router/src/core/middleware/secure-headers/secure-headers.ts +340 -0
  170. package/plugins/acryl-router/src/core/middleware/serve-static/index.test.ts +450 -0
  171. package/plugins/acryl-router/src/core/middleware/serve-static/index.ts +135 -0
  172. package/plugins/acryl-router/src/core/middleware/serve-static/path.test.ts +50 -0
  173. package/plugins/acryl-router/src/core/middleware/serve-static/path.ts +25 -0
  174. package/plugins/acryl-router/src/core/middleware/timeout/index.test.ts +70 -0
  175. package/plugins/acryl-router/src/core/middleware/timeout/index.ts +58 -0
  176. package/plugins/acryl-router/src/core/middleware/timing/index.test.ts +310 -0
  177. package/plugins/acryl-router/src/core/middleware/timing/index.ts +8 -0
  178. package/plugins/acryl-router/src/core/middleware/timing/timing.ts +256 -0
  179. package/plugins/acryl-router/src/core/middleware/trailing-slash/index.test.ts +381 -0
  180. package/plugins/acryl-router/src/core/middleware/trailing-slash/index.ts +156 -0
  181. package/plugins/acryl-router/src/core/request/constants.ts +1 -0
  182. package/plugins/acryl-router/src/core/request.test.ts +751 -0
  183. package/plugins/acryl-router/src/core/request.ts +502 -0
  184. package/plugins/acryl-router/src/core/router/common.case.test.ts +1132 -0
  185. package/plugins/acryl-router/src/core/router/linear-router/index.ts +6 -0
  186. package/plugins/acryl-router/src/core/router/linear-router/router.test.ts +80 -0
  187. package/plugins/acryl-router/src/core/router/linear-router/router.ts +152 -0
  188. package/plugins/acryl-router/src/core/router/pattern-router/index.ts +6 -0
  189. package/plugins/acryl-router/src/core/router/pattern-router/router.test.ts +46 -0
  190. package/plugins/acryl-router/src/core/router/pattern-router/router.ts +54 -0
  191. package/plugins/acryl-router/src/core/router/reg-exp-router/index.ts +7 -0
  192. package/plugins/acryl-router/src/core/router/reg-exp-router/matcher.ts +33 -0
  193. package/plugins/acryl-router/src/core/router/reg-exp-router/node.ts +170 -0
  194. package/plugins/acryl-router/src/core/router/reg-exp-router/prepared-router.test.ts +154 -0
  195. package/plugins/acryl-router/src/core/router/reg-exp-router/prepared-router.ts +165 -0
  196. package/plugins/acryl-router/src/core/router/reg-exp-router/router.test.ts +265 -0
  197. package/plugins/acryl-router/src/core/router/reg-exp-router/router.ts +174 -0
  198. package/plugins/acryl-router/src/core/router/reg-exp-router/trie.ts +84 -0
  199. package/plugins/acryl-router/src/core/router/smart-router/index.ts +6 -0
  200. package/plugins/acryl-router/src/core/router/smart-router/router.test.ts +13 -0
  201. package/plugins/acryl-router/src/core/router/smart-router/router.ts +70 -0
  202. package/plugins/acryl-router/src/core/router/trie-router/index.ts +6 -0
  203. package/plugins/acryl-router/src/core/router/trie-router/node.test.ts +896 -0
  204. package/plugins/acryl-router/src/core/router/trie-router/node.ts +221 -0
  205. package/plugins/acryl-router/src/core/router/trie-router/router.test.ts +8 -0
  206. package/plugins/acryl-router/src/core/router/trie-router/router.ts +18 -0
  207. package/plugins/acryl-router/src/core/router/utils.ts +1 -0
  208. package/plugins/acryl-router/src/core/router.ts +103 -0
  209. package/plugins/acryl-router/src/core/types.test.ts +4134 -0
  210. package/plugins/acryl-router/src/core/types.ts +2782 -0
  211. package/plugins/acryl-router/src/core/utils/accept.test.ts +299 -0
  212. package/plugins/acryl-router/src/core/utils/accept.ts +268 -0
  213. package/plugins/acryl-router/src/core/utils/basic-auth.test.ts +56 -0
  214. package/plugins/acryl-router/src/core/utils/basic-auth.ts +26 -0
  215. package/plugins/acryl-router/src/core/utils/body.test.ts +496 -0
  216. package/plugins/acryl-router/src/core/utils/body.ts +263 -0
  217. package/plugins/acryl-router/src/core/utils/buffer.test.ts +147 -0
  218. package/plugins/acryl-router/src/core/utils/buffer.ts +117 -0
  219. package/plugins/acryl-router/src/core/utils/color.test.ts +23 -0
  220. package/plugins/acryl-router/src/core/utils/color.ts +56 -0
  221. package/plugins/acryl-router/src/core/utils/compress.ts +10 -0
  222. package/plugins/acryl-router/src/core/utils/concurrent.test.ts +69 -0
  223. package/plugins/acryl-router/src/core/utils/concurrent.ts +55 -0
  224. package/plugins/acryl-router/src/core/utils/constants.ts +4 -0
  225. package/plugins/acryl-router/src/core/utils/cookie.test.ts +460 -0
  226. package/plugins/acryl-router/src/core/utils/cookie.ts +281 -0
  227. package/plugins/acryl-router/src/core/utils/crypto.test.ts +43 -0
  228. package/plugins/acryl-router/src/core/utils/crypto.ts +58 -0
  229. package/plugins/acryl-router/src/core/utils/encode.test.ts +61 -0
  230. package/plugins/acryl-router/src/core/utils/encode.ts +34 -0
  231. package/plugins/acryl-router/src/core/utils/filepath.test.ts +78 -0
  232. package/plugins/acryl-router/src/core/utils/filepath.ts +60 -0
  233. package/plugins/acryl-router/src/core/utils/handler.ts +15 -0
  234. package/plugins/acryl-router/src/core/utils/headers.ts +355 -0
  235. package/plugins/acryl-router/src/core/utils/html.test.ts +16 -0
  236. package/plugins/acryl-router/src/core/utils/html.ts +182 -0
  237. package/plugins/acryl-router/src/core/utils/http-status.ts +72 -0
  238. package/plugins/acryl-router/src/core/utils/ipaddr.test.ts +149 -0
  239. package/plugins/acryl-router/src/core/utils/ipaddr.ts +374 -0
  240. package/plugins/acryl-router/src/core/utils/jwt/index.ts +7 -0
  241. package/plugins/acryl-router/src/core/utils/jwt/jwa.test.ts +86 -0
  242. package/plugins/acryl-router/src/core/utils/jwt/jwa.ts +38 -0
  243. package/plugins/acryl-router/src/core/utils/jwt/jws.ts +235 -0
  244. package/plugins/acryl-router/src/core/utils/jwt/jwt.test.ts +1788 -0
  245. package/plugins/acryl-router/src/core/utils/jwt/jwt.ts +292 -0
  246. package/plugins/acryl-router/src/core/utils/jwt/types.ts +157 -0
  247. package/plugins/acryl-router/src/core/utils/jwt/utf8.ts +7 -0
  248. package/plugins/acryl-router/src/core/utils/mime.test.ts +64 -0
  249. package/plugins/acryl-router/src/core/utils/mime.ts +94 -0
  250. package/plugins/acryl-router/src/core/utils/stream.test.ts +212 -0
  251. package/plugins/acryl-router/src/core/utils/stream.ts +107 -0
  252. package/plugins/acryl-router/src/core/utils/types.test.ts +295 -0
  253. package/plugins/acryl-router/src/core/utils/types.ts +123 -0
  254. package/plugins/acryl-router/src/core/utils/url.test.ts +384 -0
  255. package/plugins/acryl-router/src/core/utils/url.ts +337 -0
  256. package/plugins/acryl-router/src/core/validator/index.ts +8 -0
  257. package/plugins/acryl-router/src/core/validator/utils.test.ts +82 -0
  258. package/plugins/acryl-router/src/core/validator/utils.ts +69 -0
  259. package/plugins/acryl-router/src/core/validator/validator.test.ts +1488 -0
  260. package/plugins/acryl-router/src/core/validator/validator.ts +185 -0
  261. package/plugins/acryl-router/src/helpers/index.ts +13 -0
  262. package/plugins/acryl-router/src/helpers/schema-validator.ts +35 -0
  263. package/plugins/acryl-router/src/index.ts +6 -0
  264. package/plugins/acryl-router/src/middleware/index.ts +25 -0
  265. package/plugins/acryl-router/src/middleware/loopback-only.ts +88 -0
  266. package/plugins/acryl-router/src/service.ts +356 -0
  267. package/plugins/acryl-router/tests/docs-examples.spec.ts +152 -0
  268. package/plugins/acryl-router/tests/live-install.spec.ts +64 -0
  269. package/plugins/acryl-router/tests/loader.spec.ts +72 -0
  270. package/plugins/acryl-router/tests/service.spec.ts +409 -0
  271. package/plugins/acryl-router/tests/shadow-state.spec.ts +79 -0
  272. package/plugins/acryl-router/upstream.json +20 -0
  273. package/plugins/acryl-router-http/LICENSE +21 -0
  274. package/plugins/acryl-router-http/plugin.json +12 -0
  275. package/plugins/acryl-router-http/src/bridge.ts +54 -0
  276. package/plugins/acryl-router-http/src/index.ts +63 -0
  277. package/plugins/acryl-router-http/src/serve.ts +24 -0
  278. package/plugins/acryl-router-http/tests/adapter.spec.ts +174 -0
  279. package/plugins/acryl-router-http/tests/stream.spec.ts +133 -0
  280. package/plugins/acryl-router-http/tests/surfaces.spec.ts +101 -0
  281. package/plugins/acryl-router-http/upstream.json +22 -0
  282. package/plugins/acryl-state/LICENSE +21 -0
  283. package/plugins/acryl-state/NOTICE +30 -0
  284. package/plugins/acryl-state/plugin.json +12 -0
  285. package/plugins/acryl-state/src/cell.ts +67 -0
  286. package/plugins/acryl-state/src/index.ts +3 -0
  287. package/plugins/acryl-state/src/react.ts +11 -0
  288. package/plugins/acryl-state/src/service.ts +119 -0
  289. package/plugins/acryl-state/tests/cell.spec.ts +71 -0
  290. package/plugins/acryl-state/tests/react.spec.ts +39 -0
  291. package/plugins/acryl-state/tests/service.spec.ts +132 -0
  292. package/plugins/acryl-state/upstream.json +22 -0
  293. package/plugins/builder/script.ts +6 -10
  294. package/plugins/extensions/index.ts +20 -3
  295. package/plugins/extensions/resolve.ts +28 -3
  296. package/plugins/openai/prompt.ts +12 -6
  297. package/plugins/tasks/index.ts +14 -0
  298. package/plugins/tsconfig.json +14 -5
  299. package/templates/agent/blend.yaml +5 -7
  300. package/templates/agent/src/app.ts +8 -8
  301. package/templates/agent/src/routes.ts +39 -38
  302. package/templates/agent/template.json +3 -3
  303. package/templates/agent/test/builder.test.ts +22 -14
  304. package/templates/agent/test/model.test.ts +3 -3
  305. package/templates/agent/tsconfig.json +8 -5
  306. package/templates/{app → blank}/blend.yaml +3 -3
  307. package/templates/{app → blank}/src/app.ts +5 -5
  308. package/templates/blank/src/routes.ts +16 -0
  309. package/templates/blank/template.json +1 -0
  310. package/templates/{app → blank}/test/app.test.ts +1 -1
  311. package/templates/{app → blank}/tsconfig.json +2 -4
  312. package/templates/todo/README.md +27 -0
  313. package/templates/todo/blend.yaml +25 -0
  314. package/templates/todo/gitignore +2 -0
  315. package/templates/todo/package.json +23 -0
  316. package/templates/todo/src/app.ts +71 -0
  317. package/templates/todo/src/main.ts +19 -0
  318. package/templates/todo/src/page.ts +28 -0
  319. package/templates/todo/src/todo.ts +123 -0
  320. package/templates/todo/template.json +1 -0
  321. package/templates/todo/test/todo.test.ts +145 -0
  322. package/templates/todo/tsconfig.json +17 -0
  323. package/templates/todo/upstream.json +12 -0
  324. package/plugins/events/index.ts +0 -42
  325. package/plugins/events/plugin.json +0 -9
  326. package/plugins/http/index.ts +0 -64
  327. package/plugins/http/plugin.json +0 -10
  328. package/plugins/server/index.ts +0 -138
  329. package/plugins/server/plugin.json +0 -10
  330. package/templates/app/src/routes.ts +0 -14
  331. package/templates/app/template.json +0 -1
  332. /package/templates/{app → blank}/README.md +0 -0
  333. /package/templates/{app → blank}/gitignore +0 -0
  334. /package/templates/{app → blank}/package.json +0 -0
  335. /package/templates/{app → blank}/src/main.ts +0 -0
@@ -0,0 +1,355 @@
1
+ /**
2
+ * @module
3
+ * HTTP Headers utility.
4
+ */
5
+
6
+ // note: https://www.iana.org/assignments/http-fields/http-fields.xhtml
7
+
8
+ export type RequestHeader =
9
+ | 'A-IM'
10
+ | 'Accept'
11
+ | 'Accept-Additions'
12
+ | 'Accept-CH'
13
+ | 'Accept-Charset'
14
+ | 'Accept-Datetime'
15
+ | 'Accept-Encoding'
16
+ | 'Accept-Features'
17
+ | 'Accept-Language'
18
+ | 'Accept-Patch'
19
+ | 'Accept-Post'
20
+ | 'Accept-Query'
21
+ | 'Accept-Ranges'
22
+ | 'Accept-Signature'
23
+ | 'Access-Control'
24
+ | 'Access-Control-Allow-Credentials'
25
+ | 'Access-Control-Allow-Headers'
26
+ | 'Access-Control-Allow-Methods'
27
+ | 'Access-Control-Allow-Origin'
28
+ | 'Access-Control-Expose-Headers'
29
+ | 'Access-Control-Max-Age'
30
+ | 'Access-Control-Request-Headers'
31
+ | 'Access-Control-Request-Method'
32
+ | 'Activate-Storage-Access'
33
+ | 'Age'
34
+ | 'Allow'
35
+ | 'ALPN'
36
+ | 'Alt-Svc'
37
+ | 'Alt-Used'
38
+ | 'Alternates'
39
+ | 'AMP-Cache-Transform'
40
+ | 'Apply-To-Redirect-Ref'
41
+ | 'Authentication-Control'
42
+ | 'Authentication-Info'
43
+ | 'Authorization'
44
+ | 'Available-Dictionary'
45
+ | 'C-Ext'
46
+ | 'C-Man'
47
+ | 'C-Opt'
48
+ | 'C-PEP'
49
+ | 'C-PEP-Info'
50
+ | 'Cache-Control'
51
+ | 'Cache-Group-Invalidation'
52
+ | 'Cache-Groups'
53
+ | 'Cache-Status'
54
+ | 'Cal-Managed-ID'
55
+ | 'CalDAV-Timezones'
56
+ | 'Capsule-Protocol'
57
+ | 'CDN-Cache-Control'
58
+ | 'CDN-Loop'
59
+ | 'Cert-Not-After'
60
+ | 'Cert-Not-Before'
61
+ | 'Clear-Site-Data'
62
+ | 'Client-Cert'
63
+ | 'Client-Cert-Chain'
64
+ | 'Close'
65
+ | 'CMCD-Object'
66
+ | 'CMCD-Request'
67
+ | 'CMCD-Session'
68
+ | 'CMCD-Status'
69
+ | 'CMSD-Dynamic'
70
+ | 'CMSD-Static'
71
+ | 'Concealed-Auth-Export'
72
+ | 'Configuration-Context'
73
+ | 'Connection'
74
+ | 'Content-Base'
75
+ | 'Content-Digest'
76
+ | 'Content-Disposition'
77
+ | 'Content-Encoding'
78
+ | 'Content-ID'
79
+ | 'Content-Language'
80
+ | 'Content-Length'
81
+ | 'Content-Location'
82
+ | 'Content-MD5'
83
+ | 'Content-Range'
84
+ | 'Content-Script-Type'
85
+ | 'Content-Security-Policy'
86
+ | 'Content-Security-Policy-Report-Only'
87
+ | 'Content-Style-Type'
88
+ | 'Content-Type'
89
+ | 'Content-Version'
90
+ | 'Cookie'
91
+ | 'Cookie2'
92
+ | 'Cross-Origin-Embedder-Policy'
93
+ | 'Cross-Origin-Embedder-Policy-Report-Only'
94
+ | 'Cross-Origin-Opener-Policy'
95
+ | 'Cross-Origin-Opener-Policy-Report-Only'
96
+ | 'Cross-Origin-Resource-Policy'
97
+ | 'CTA-Common-Access-Token'
98
+ | 'DASL'
99
+ | 'Date'
100
+ | 'DAV'
101
+ | 'Default-Style'
102
+ | 'Delta-Base'
103
+ | 'Deprecation'
104
+ | 'Depth'
105
+ | 'Derived-From'
106
+ | 'Destination'
107
+ | 'Detached-JWS'
108
+ | 'Differential-ID'
109
+ | 'Dictionary-ID'
110
+ | 'Digest'
111
+ | 'DPoP'
112
+ | 'DPoP-Nonce'
113
+ | 'Early-Data'
114
+ | 'EDIINT-Features'
115
+ | 'ETag'
116
+ | 'Expect'
117
+ | 'Expect-CT'
118
+ | 'Expires'
119
+ | 'Ext'
120
+ | 'Forwarded'
121
+ | 'From'
122
+ | 'GetProfile'
123
+ | 'Hobareg'
124
+ | 'Host'
125
+ | 'HTTP2-Settings'
126
+ | 'If'
127
+ | 'If-Match'
128
+ | 'If-Modified-Since'
129
+ | 'If-None-Match'
130
+ | 'If-Range'
131
+ | 'If-Schedule-Tag-Match'
132
+ | 'If-Unmodified-Since'
133
+ | 'IM'
134
+ | 'Include-Referred-Token-Binding-ID'
135
+ | 'Incremental'
136
+ | 'Isolation'
137
+ | 'Keep-Alive'
138
+ | 'Label'
139
+ | 'Last-Event-ID'
140
+ | 'Last-Modified'
141
+ | 'Link'
142
+ | 'Link-Template'
143
+ | 'Location'
144
+ | 'Lock-Token'
145
+ | 'Man'
146
+ | 'Max-Forwards'
147
+ | 'Memento-Datetime'
148
+ | 'Meter'
149
+ | 'Method-Check'
150
+ | 'Method-Check-Expires'
151
+ | 'MIME-Version'
152
+ | 'Negotiate'
153
+ | 'NEL'
154
+ | 'OData-EntityId'
155
+ | 'OData-Isolation'
156
+ | 'OData-MaxVersion'
157
+ | 'OData-Version'
158
+ | 'Opt'
159
+ | 'Optional-WWW-Authenticate'
160
+ | 'Ordering-Type'
161
+ | 'Origin'
162
+ | 'Origin-Agent-Cluster'
163
+ | 'OSCORE'
164
+ | 'OSLC-Core-Version'
165
+ | 'Overwrite'
166
+ | 'P3P'
167
+ | 'PEP'
168
+ | 'PEP-Info'
169
+ | 'Permissions-Policy'
170
+ | 'PICS-Label'
171
+ | 'Ping-From'
172
+ | 'Ping-To'
173
+ | 'Position'
174
+ | 'Pragma'
175
+ | 'Prefer'
176
+ | 'Preference-Applied'
177
+ | 'Priority'
178
+ | 'ProfileObject'
179
+ | 'Protocol'
180
+ | 'Protocol-Info'
181
+ | 'Protocol-Query'
182
+ | 'Protocol-Request'
183
+ | 'Proxy-Authenticate'
184
+ | 'Proxy-Authentication-Info'
185
+ | 'Proxy-Authorization'
186
+ | 'Proxy-Features'
187
+ | 'Proxy-Instruction'
188
+ | 'Proxy-Status'
189
+ | 'Public'
190
+ | 'Public-Key-Pins'
191
+ | 'Public-Key-Pins-Report-Only'
192
+ | 'Range'
193
+ | 'Redirect-Ref'
194
+ | 'Referer'
195
+ | 'Referer-Root'
196
+ | 'Referrer-Policy'
197
+ | 'Refresh'
198
+ | 'Repeatability-Client-ID'
199
+ | 'Repeatability-First-Sent'
200
+ | 'Repeatability-Request-ID'
201
+ | 'Repeatability-Result'
202
+ | 'Replay-Nonce'
203
+ | 'Reporting-Endpoints'
204
+ | 'Repr-Digest'
205
+ | 'Retry-After'
206
+ | 'Safe'
207
+ | 'Schedule-Reply'
208
+ | 'Schedule-Tag'
209
+ | 'Sec-Fetch-Dest'
210
+ | 'Sec-Fetch-Mode'
211
+ | 'Sec-Fetch-Site'
212
+ | 'Sec-Fetch-Storage-Access'
213
+ | 'Sec-Fetch-User'
214
+ | 'Sec-GPC'
215
+ | 'Sec-Purpose'
216
+ | 'Sec-Token-Binding'
217
+ | 'Sec-WebSocket-Accept'
218
+ | 'Sec-WebSocket-Extensions'
219
+ | 'Sec-WebSocket-Key'
220
+ | 'Sec-WebSocket-Protocol'
221
+ | 'Sec-WebSocket-Version'
222
+ | 'Security-Scheme'
223
+ | 'Server'
224
+ | 'Server-Timing'
225
+ | 'Set-Cookie'
226
+ | 'Set-Cookie2'
227
+ | 'Set-Txn'
228
+ | 'SetProfile'
229
+ | 'Signature'
230
+ | 'Signature-Input'
231
+ | 'SLUG'
232
+ | 'SoapAction'
233
+ | 'Status-URI'
234
+ | 'Strict-Transport-Security'
235
+ | 'Sunset'
236
+ | 'Surrogate-Capability'
237
+ | 'Surrogate-Control'
238
+ | 'TCN'
239
+ | 'TE'
240
+ | 'Timeout'
241
+ | 'Timing-Allow-Origin'
242
+ | 'Topic'
243
+ | 'Traceparent'
244
+ | 'Tracestate'
245
+ | 'Trailer'
246
+ | 'Transfer-Encoding'
247
+ | 'TTL'
248
+ | 'Unencoded-Digest'
249
+ | 'Upgrade'
250
+ | 'Urgency'
251
+ | 'URI'
252
+ | 'Use-As-Dictionary'
253
+ | 'User-Agent'
254
+ | 'Variant-Vary'
255
+ | 'Vary'
256
+ | 'Via'
257
+ | 'Want-Content-Digest'
258
+ | 'Want-Digest'
259
+ | 'Want-Repr-Digest'
260
+ | 'Want-Unencoded-Digest'
261
+ | 'Warning'
262
+ | 'WWW-Authenticate'
263
+ | 'X-Content-Type-Options'
264
+ | 'X-Frame-Options'
265
+
266
+ export type ResponseHeader =
267
+ | 'Accept-Query'
268
+ | 'Access-Control-Allow-Credentials'
269
+ | 'Access-Control-Allow-Headers'
270
+ | 'Access-Control-Allow-Methods'
271
+ | 'Access-Control-Allow-Origin'
272
+ | 'Access-Control-Expose-Headers'
273
+ | 'Access-Control-Max-Age'
274
+ | 'Activate-Storage-Access'
275
+ | 'Age'
276
+ | 'Allow'
277
+ | 'Cache-Control'
278
+ | 'Cache-Group-Invalidation'
279
+ | 'Cache-Groups'
280
+ | 'Clear-Site-Data'
281
+ | 'Content-Disposition'
282
+ | 'Content-Encoding'
283
+ | 'Content-Language'
284
+ | 'Content-Length'
285
+ | 'Content-Location'
286
+ | 'Content-Range'
287
+ | 'Content-Security-Policy'
288
+ | 'Content-Security-Policy-Report-Only'
289
+ | 'Content-Type'
290
+ | 'Cookie'
291
+ | 'Cross-Origin-Embedder-Policy'
292
+ | 'Cross-Origin-Opener-Policy'
293
+ | 'Cross-Origin-Resource-Policy'
294
+ | 'Date'
295
+ | 'ETag'
296
+ | 'Expires'
297
+ | 'Incremental'
298
+ | 'Last-Modified'
299
+ | 'Location'
300
+ | 'Permissions-Policy'
301
+ | 'Pragma'
302
+ | 'Retry-After'
303
+ | 'Save-Data'
304
+ | 'Sec-CH-Prefers-Color-Scheme'
305
+ | 'Sec-CH-Prefers-Reduced-Motion'
306
+ | 'Sec-CH-UA'
307
+ | 'Sec-CH-UA-Arch'
308
+ | 'Sec-CH-UA-Bitness'
309
+ | 'Sec-CH-UA-Form-Factor'
310
+ | 'Sec-CH-UA-Full-Version'
311
+ | 'Sec-CH-UA-Full-Version-List'
312
+ | 'Sec-CH-UA-Mobile'
313
+ | 'Sec-CH-UA-Model'
314
+ | 'Sec-CH-UA-Platform'
315
+ | 'Sec-CH-UA-Platform-Version'
316
+ | 'Sec-CH-UA-WoW64'
317
+ | 'Sec-Fetch-Dest'
318
+ | 'Sec-Fetch-Mode'
319
+ | 'Sec-Fetch-Site'
320
+ | 'Sec-Fetch-User'
321
+ | 'Sec-GPC'
322
+ | 'Server'
323
+ | 'Server-Timing'
324
+ | 'Service-Worker-Navigation-Preload'
325
+ | 'Set-Cookie'
326
+ | 'Set-Txn'
327
+ | 'Strict-Transport-Security'
328
+ | 'Timing-Allow-Origin'
329
+ | 'Trailer'
330
+ | 'Transfer-Encoding'
331
+ | 'Unencoded-Digest'
332
+ | 'Upgrade'
333
+ | 'Vary'
334
+ | 'Want-Unencoded-Digest'
335
+ | 'Warning'
336
+ | 'WWW-Authenticate'
337
+ | 'X-Content-Type-Options'
338
+ | 'X-DNS-Prefetch-Control'
339
+ | 'X-Frame-Options'
340
+ | 'X-Permitted-Cross-Domain-Policies'
341
+ | 'X-Powered-By'
342
+ | 'X-Robots-Tag'
343
+ | 'X-XSS-Protection'
344
+
345
+ export type AcceptHeader =
346
+ | 'Accept'
347
+ | 'Accept-Charset'
348
+ | 'Accept-Encoding'
349
+ | 'Accept-Language'
350
+ | 'Accept-Patch'
351
+ | 'Accept-Post'
352
+ | 'Accept-Ranges'
353
+
354
+ // note: `X-${string}` is deprecated
355
+ export type CustomHeader = string & {}
@@ -0,0 +1,16 @@
1
+ import { escapeToBuffer } from './html.ts'
2
+ import type { StringBuffer } from './html.ts'
3
+
4
+ describe('HTML utilities', () => {
5
+ describe('escapeToBuffer', () => {
6
+ it('Should escape special characters', () => {
7
+ let buffer: StringBuffer = ['']
8
+ escapeToBuffer('I <b>think</b> this is good.', buffer)
9
+ expect(buffer[0]).toBe('I &lt;b&gt;think&lt;/b&gt; this is good.')
10
+
11
+ buffer = ['']
12
+ escapeToBuffer('John "Johnny" Smith', buffer)
13
+ expect(buffer[0]).toBe('John &quot;Johnny&quot; Smith')
14
+ })
15
+ })
16
+ })
@@ -0,0 +1,182 @@
1
+ /**
2
+ * @module
3
+ * HTML utility.
4
+ */
5
+
6
+ export const HtmlEscapedCallbackPhase = {
7
+ Stringify: 1,
8
+ BeforeStream: 2,
9
+ Stream: 3,
10
+ } as const
11
+ type HtmlEscapedCallbackOpts = {
12
+ buffer?: [string]
13
+ phase: (typeof HtmlEscapedCallbackPhase)[keyof typeof HtmlEscapedCallbackPhase]
14
+ context: Readonly<object> // An object unique to each JSX tree. This object is used as the WeakMap key.
15
+ }
16
+ export type HtmlEscapedCallback = (opts: HtmlEscapedCallbackOpts) => Promise<string> | undefined
17
+ export type HtmlEscaped = {
18
+ isEscaped: true
19
+ callbacks?: HtmlEscapedCallback[]
20
+ }
21
+ export type HtmlEscapedString = string & HtmlEscaped
22
+
23
+ /**
24
+ * StringBuffer contains string and Promise<string> alternately
25
+ * The length of the array will be odd, the odd numbered element will be a string,
26
+ * and the even numbered element will be a Promise<string>.
27
+ * When concatenating into a single string, it must be processed from the tail.
28
+ * @example
29
+ * [
30
+ * 'framework.',
31
+ * Promise.resolve('ultra fast'),
32
+ * 'a ',
33
+ * Promise.resolve('is '),
34
+ * 'App',
35
+ * ]
36
+ */
37
+ export type StringBuffer = (string | Promise<string>)[]
38
+ export type StringBufferWithCallbacks = StringBuffer & { callbacks: HtmlEscapedCallback[] }
39
+
40
+ export const raw = (value: unknown, callbacks?: HtmlEscapedCallback[]): HtmlEscapedString => {
41
+ const escapedString = new String(value) as HtmlEscapedString
42
+ escapedString.isEscaped = true
43
+ escapedString.callbacks = callbacks
44
+
45
+ return escapedString
46
+ }
47
+
48
+ // The `escapeToBuffer` implementation is based on code from the MIT licensed `react-dom` package.
49
+ // https://github.com/facebook/react/blob/main/packages/react-dom-bindings/src/server/escapeTextForBrowser.js
50
+
51
+ const escapeRe = /[&<>'"]/
52
+
53
+ export const stringBufferToString = async (
54
+ buffer: StringBuffer,
55
+ callbacks: HtmlEscapedCallback[] | undefined
56
+ ): Promise<HtmlEscapedString> => {
57
+ let str = ''
58
+ callbacks ||= []
59
+ const resolvedBuffer = await Promise.all(buffer)
60
+ for (let i = resolvedBuffer.length - 1; ; i--) {
61
+ str += resolvedBuffer[i]
62
+ i--
63
+ if (i < 0) {
64
+ break
65
+ }
66
+
67
+ let r = resolvedBuffer[i]
68
+ if (typeof r === 'object') {
69
+ callbacks.push(...((r as HtmlEscapedString).callbacks || []))
70
+ }
71
+
72
+ const isEscaped = (r as HtmlEscapedString).isEscaped
73
+ r = await (typeof r === 'object' ? (r as HtmlEscapedString).toString() : r)
74
+ if (typeof r === 'object') {
75
+ callbacks.push(...((r as HtmlEscapedString).callbacks || []))
76
+ }
77
+
78
+ if ((r as HtmlEscapedString).isEscaped ?? isEscaped) {
79
+ str += r
80
+ } else {
81
+ const buf = [str]
82
+ escapeToBuffer(r, buf)
83
+ str = buf[0]
84
+ }
85
+ }
86
+
87
+ return raw(str, callbacks)
88
+ }
89
+
90
+ export const escapeToBuffer = (str: string, buffer: StringBuffer): void => {
91
+ const match = str.search(escapeRe)
92
+ if (match === -1) {
93
+ buffer[0] += str
94
+ return
95
+ }
96
+
97
+ let escape
98
+ let index
99
+ let lastIndex = 0
100
+
101
+ for (index = match; index < str.length; index++) {
102
+ switch (str.charCodeAt(index)) {
103
+ case 34: // "
104
+ escape = '&quot;'
105
+ break
106
+ case 39: // '
107
+ escape = '&#39;'
108
+ break
109
+ case 38: // &
110
+ escape = '&amp;'
111
+ break
112
+ case 60: // <
113
+ escape = '&lt;'
114
+ break
115
+ case 62: // >
116
+ escape = '&gt;'
117
+ break
118
+ default:
119
+ continue
120
+ }
121
+
122
+ buffer[0] += str.substring(lastIndex, index) + escape
123
+ lastIndex = index + 1
124
+ }
125
+
126
+ buffer[0] += str.substring(lastIndex, index)
127
+ }
128
+
129
+ export const resolveCallbackSync = (str: string | HtmlEscapedString): string => {
130
+ const callbacks = (str as HtmlEscapedString).callbacks as HtmlEscapedCallback[]
131
+ if (!callbacks?.length) {
132
+ return str
133
+ }
134
+ const buffer: [string] = [str]
135
+ const context = {}
136
+
137
+ callbacks.forEach((c) => c({ phase: HtmlEscapedCallbackPhase.Stringify, buffer, context }))
138
+
139
+ return buffer[0]
140
+ }
141
+
142
+ export const resolveCallback = async (
143
+ str: string | HtmlEscapedString | Promise<string>,
144
+ phase: (typeof HtmlEscapedCallbackPhase)[keyof typeof HtmlEscapedCallbackPhase],
145
+ preserveCallbacks: boolean,
146
+ context: object,
147
+ buffer?: [string]
148
+ ): Promise<string> => {
149
+ if (typeof str === 'object' && !(str instanceof String)) {
150
+ if (!((str as unknown) instanceof Promise)) {
151
+ str = (str as unknown as string).toString() // HtmlEscapedString object to string
152
+ }
153
+ if ((str as string | Promise<string>) instanceof Promise) {
154
+ str = await (str as unknown as Promise<string>)
155
+ }
156
+ }
157
+
158
+ const callbacks = (str as HtmlEscapedString).callbacks as HtmlEscapedCallback[]
159
+ if (!callbacks?.length) {
160
+ return Promise.resolve(str)
161
+ }
162
+ if (buffer) {
163
+ buffer[0] += str
164
+ } else {
165
+ buffer = [str as string]
166
+ }
167
+
168
+ const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then((res) =>
169
+ Promise.all(
170
+ res
171
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
172
+ .filter<string>(Boolean as any)
173
+ .map((str) => resolveCallback(str, phase, false, context, buffer))
174
+ ).then(() => (buffer as [string])[0])
175
+ )
176
+
177
+ if (preserveCallbacks) {
178
+ return raw(await resStr, callbacks)
179
+ } else {
180
+ return resStr
181
+ }
182
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @module
3
+ * HTTP Status utility.
4
+ */
5
+
6
+ export type InfoStatusCode = 100 | 101 | 102 | 103
7
+ export type SuccessStatusCode = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226
8
+ export type DeprecatedStatusCode = 305 | 306
9
+ export type RedirectStatusCode = 300 | 301 | 302 | 303 | 304 | DeprecatedStatusCode | 307 | 308
10
+ export type ClientErrorStatusCode =
11
+ | 400
12
+ | 401
13
+ | 402
14
+ | 403
15
+ | 404
16
+ | 405
17
+ | 406
18
+ | 407
19
+ | 408
20
+ | 409
21
+ | 410
22
+ | 411
23
+ | 412
24
+ | 413
25
+ | 414
26
+ | 415
27
+ | 416
28
+ | 417
29
+ | 418
30
+ | 421
31
+ | 422
32
+ | 423
33
+ | 424
34
+ | 425
35
+ | 426
36
+ | 428
37
+ | 429
38
+ | 431
39
+ | 451
40
+ export type ServerErrorStatusCode = 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511
41
+
42
+ /**
43
+ * `UnofficialStatusCode` can be used to specify an unofficial status code.
44
+ * @example
45
+ *
46
+ * ```ts
47
+ * app.get('/unknown', (c) => {
48
+ * return c.text("Unknown Error", 520 as UnofficialStatusCode)
49
+ * })
50
+ * ```
51
+ */
52
+ export type UnofficialStatusCode = -1
53
+
54
+ /**
55
+ * @deprecated
56
+ * Use `UnofficialStatusCode` instead.
57
+ */
58
+ export type UnOfficalStatusCode = UnofficialStatusCode
59
+
60
+ /**
61
+ * If you want to use an unofficial status, use `UnofficialStatusCode`.
62
+ */
63
+ export type StatusCode =
64
+ | InfoStatusCode
65
+ | SuccessStatusCode
66
+ | RedirectStatusCode
67
+ | ClientErrorStatusCode
68
+ | ServerErrorStatusCode
69
+ | UnofficialStatusCode
70
+
71
+ export type ContentlessStatusCode = 101 | 204 | 205 | 304
72
+ export type ContentfulStatusCode = Exclude<StatusCode, ContentlessStatusCode>