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.
- package/LICENSE +73 -0
- package/README.md +325 -0
- package/docs/framework/README.md +51 -51
- package/docs/framework/UPSTREAM.md +1 -1
- package/docs/framework/agents/index.md +24 -0
- package/docs/framework/api/acryl.md +259 -0
- package/docs/framework/api/context.md +527 -0
- package/docs/framework/api/exception.md +80 -0
- package/docs/framework/api/index.md +12 -0
- package/docs/framework/api/presets.md +65 -0
- package/docs/framework/api/request.md +396 -0
- package/docs/framework/api/routing.md +303 -0
- package/docs/framework/{api-summary.md → api/summary.md} +19 -17
- package/docs/framework/concepts/benchmarks.md +26 -0
- package/docs/framework/concepts/developer-experience.md +5 -0
- package/docs/framework/concepts/middleware.md +21 -0
- package/docs/framework/concepts/motivation.md +14 -0
- package/docs/framework/concepts/routers.md +63 -0
- package/docs/framework/concepts/stacks.md +235 -0
- package/docs/framework/concepts/web-standard.md +37 -0
- package/docs/framework/{getting-started.md → cordis/acryl-in-a-cordis-app.md} +16 -16
- package/docs/framework/{concepts.md → cordis/concepts.md} +2 -2
- package/docs/framework/cordis/middleware.md +8 -0
- package/docs/framework/{migration-from-0-3.md → cordis/migration-from-0-3.md} +16 -13
- package/docs/framework/cordis/migration-from-0-4.md +14 -0
- package/docs/framework/{migration-from-dsh-webserver.md → cordis/migration-from-dsh-webserver.md} +13 -7
- package/docs/framework/{routing.md → cordis/mounting.md} +5 -108
- package/docs/framework/{node-server.md → cordis/node-server.md} +4 -4
- package/docs/framework/{surfaces.md → cordis/surfaces.md} +2 -2
- package/docs/framework/cordis/transport-and-cancellation.md +57 -0
- package/docs/framework/{validation.md → cordis/validation.md} +9 -9
- package/docs/framework/getting-started/basic.md +196 -0
- package/docs/framework/getting-started/bun.md +221 -0
- package/docs/framework/getting-started/nodejs.md +344 -0
- package/docs/framework/getting-started/other-runtimes.md +23 -0
- package/docs/framework/guides/best-practices.md +231 -0
- package/docs/framework/guides/create-acrylblends.md +79 -0
- package/docs/framework/guides/examples.md +3 -0
- package/docs/framework/guides/faq.md +19 -0
- package/docs/framework/guides/helpers.md +33 -0
- package/docs/framework/guides/jsx-dom.md +299 -0
- package/docs/framework/guides/jsx.md +440 -0
- package/docs/framework/guides/middleware.md +253 -0
- package/docs/framework/guides/rpc.md +886 -0
- package/docs/framework/guides/testing.md +133 -0
- package/docs/framework/guides/validation.md +383 -0
- package/docs/framework/helpers/accepts.md +60 -0
- package/docs/framework/helpers/adapter.md +87 -0
- package/docs/framework/helpers/conninfo.md +112 -0
- package/docs/framework/helpers/cookie.md +232 -0
- package/docs/framework/helpers/css.md +285 -0
- package/docs/framework/helpers/dev.md +67 -0
- package/docs/framework/helpers/factory.md +180 -0
- package/docs/framework/helpers/html.md +123 -0
- package/docs/framework/helpers/jwt.md +184 -0
- package/docs/framework/helpers/proxy.md +118 -0
- package/docs/framework/helpers/route.md +143 -0
- package/docs/framework/helpers/ssg.md +393 -0
- package/docs/framework/helpers/streaming.md +119 -0
- package/docs/framework/helpers/testing.md +101 -0
- package/docs/framework/helpers/websocket.md +215 -0
- package/docs/framework/middleware/builtin/basic-auth.md +165 -0
- package/docs/framework/middleware/builtin/bearer-auth.md +138 -0
- package/docs/framework/middleware/builtin/body-limit.md +71 -0
- package/docs/framework/middleware/builtin/cache.md +122 -0
- package/docs/framework/middleware/builtin/combine.md +94 -0
- package/docs/framework/middleware/builtin/compress.md +59 -0
- package/docs/framework/middleware/builtin/context-storage.md +78 -0
- package/docs/framework/middleware/builtin/cors.md +135 -0
- package/docs/framework/middleware/builtin/csrf.md +105 -0
- package/docs/framework/middleware/builtin/etag.md +54 -0
- package/docs/framework/middleware/builtin/ip-restriction.md +69 -0
- package/docs/framework/middleware/builtin/jsx-renderer.md +286 -0
- package/docs/framework/middleware/builtin/jwk.md +192 -0
- package/docs/framework/middleware/builtin/jwt.md +145 -0
- package/docs/framework/middleware/builtin/language.md +232 -0
- package/docs/framework/middleware/builtin/logger.md +74 -0
- package/docs/framework/middleware/builtin/loopback-only.md +31 -0
- package/docs/framework/middleware/builtin/method-not-allowed.md +48 -0
- package/docs/framework/middleware/builtin/method-override.md +80 -0
- package/docs/framework/middleware/builtin/mount.md +106 -0
- package/docs/framework/middleware/builtin/pretty-json.md +53 -0
- package/docs/framework/middleware/builtin/request-id.md +94 -0
- package/docs/framework/middleware/builtin/secure-headers.md +247 -0
- package/docs/framework/middleware/builtin/timeout.md +98 -0
- package/docs/framework/middleware/builtin/timing.md +101 -0
- package/docs/framework/middleware/builtin/trailing-slash.md +74 -0
- package/docs/framework/middleware/third-party.md +4 -0
- package/docs/framework/upstream.json +3 -3
- package/lib/accepts-XBuZPVRI.js +52 -0
- package/lib/accepts.d.ts +33 -0
- package/lib/accepts.js +2 -0
- package/lib/acryl-base.d.ts +2 -0
- package/lib/acryl-base.js +332 -0
- package/lib/adapter.d.ts +12 -0
- package/lib/adapter.js +37 -0
- package/lib/app-BM0rTCp7.js +26 -0
- package/lib/app-CmAYW1Al.d.ts +21 -0
- package/lib/basic-auth.d.ts +72 -0
- package/lib/basic-auth.js +95 -0
- package/lib/bearer-auth.d.ts +89 -0
- package/lib/bearer-auth.js +94 -0
- package/lib/body-limit.d.ts +42 -0
- package/lib/body-limit.js +66 -0
- package/lib/client-BHTr318g.js +266 -0
- package/lib/client.d.ts +3 -0
- package/lib/client.js +2 -0
- package/lib/combine.d.ts +85 -0
- package/lib/combine.js +137 -0
- package/lib/compose-BuW2B6PZ.js +50 -0
- package/lib/compress.d.ts +38 -0
- package/lib/compress.js +79 -0
- package/lib/connection-C7xgP1hP.js +24 -0
- package/lib/conninfo.d.ts +25 -0
- package/lib/conninfo.js +2 -0
- package/lib/constants-Dy7ZvN1H.js +4 -0
- package/lib/context-Bm7rI-oK.d.ts +1234 -0
- package/lib/context-DDO0cfuP.js +365 -0
- package/lib/context-storage.d.ts +38 -0
- package/lib/context-storage.js +52 -0
- package/lib/cookie-ClMaKDQf.d.ts +40 -0
- package/lib/cookie.d.ts +24 -0
- package/lib/cookie.js +82 -0
- package/lib/cors.d.ts +52 -0
- package/lib/cors.js +106 -0
- package/lib/csrf.d.ts +75 -0
- package/lib/csrf.js +101 -0
- package/lib/etag.d.ts +40 -0
- package/lib/etag.js +135 -0
- package/lib/factory.d.ts +35 -0
- package/lib/factory.js +30 -0
- package/lib/headers-tu2YYN8T.d.ts +11 -0
- package/lib/html.d.ts +6 -0
- package/lib/html.js +31 -0
- package/lib/http-exception.d.ts +57 -0
- package/lib/http-exception.js +54 -0
- package/lib/http-status-DaAwGAFL.d.ts +35 -0
- package/lib/index-B-3F4wt2.d.ts +12 -0
- package/lib/index-UTBmM3GX.d.ts +68 -0
- package/lib/index-oOClm_Xk.d.ts +45 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +28 -0
- package/lib/ip-restriction.d.ts +68 -0
- package/lib/ip-restriction.js +166 -0
- package/lib/jwk.d.ts +52 -0
- package/lib/jwk.js +117 -0
- package/lib/jwt-BGJBw5AF.js +403 -0
- package/lib/jwt-Dg493Tai.d.ts +51 -0
- package/lib/jwt.d.ts +72 -0
- package/lib/jwt.js +115 -0
- package/lib/language.d.ts +88 -0
- package/lib/language.js +198 -0
- package/lib/logger.d.ts +22 -0
- package/lib/logger.js +54 -0
- package/lib/loopback-only.d.ts +45 -0
- package/lib/loopback-only.js +90 -0
- package/lib/method-not-allowed.d.ts +47 -0
- package/lib/method-not-allowed.js +82 -0
- package/lib/method-override.d.ts +46 -0
- package/lib/method-override.js +103 -0
- package/lib/mime-BQOYHl-l.d.ts +72 -0
- package/lib/node-server/conninfo.d.ts +11 -0
- package/lib/node-server/conninfo.js +19 -0
- package/lib/node-server/serve-static.d.ts +19 -0
- package/lib/node-server/serve-static.js +2 -0
- package/lib/node-server.d.ts +103 -0
- package/lib/node-server.js +1325 -0
- package/lib/powered-by.d.ts +28 -0
- package/lib/powered-by.js +24 -0
- package/lib/pretty-json.d.ts +40 -0
- package/lib/pretty-json.js +39 -0
- package/lib/reg-exp-router-DC1R3qoY.js +363 -0
- package/lib/request-id.d.ts +45 -0
- package/lib/request-id.js +34 -0
- package/lib/request.d.ts +2 -0
- package/lib/request.js +323 -0
- package/lib/route.d.ts +78 -0
- package/lib/route.js +126 -0
- package/lib/router/linear-router.d.ts +11 -0
- package/lib/router/linear-router.js +96 -0
- package/lib/router/pattern-router.d.ts +11 -0
- package/lib/router/pattern-router.js +41 -0
- package/lib/router/reg-exp-router.d.ts +35 -0
- package/lib/router/reg-exp-router.js +2 -0
- package/lib/router/smart-router.d.ts +15 -0
- package/lib/router/smart-router.js +2 -0
- package/lib/router/trie-router.d.ts +11 -0
- package/lib/router/trie-router.js +2 -0
- package/lib/router-CvUxUTOq.d.ts +99 -0
- package/lib/router.d.ts +2 -0
- package/lib/router.js +35 -0
- package/lib/schema-validator.d.ts +28 -0
- package/lib/schema-validator.js +22 -0
- package/lib/secure-headers.d.ts +125 -0
- package/lib/secure-headers.js +163 -0
- package/lib/serve-static-Dw_m6KxR.js +213 -0
- package/lib/serve-static.d.ts +31 -0
- package/lib/serve-static.js +77 -0
- package/lib/smart-router-C5CZ5XSM.js +49 -0
- package/lib/stream-CPdqZ0Fp.d.ts +34 -0
- package/lib/streaming-DHST3Scg.js +96 -0
- package/lib/streaming.d.ts +23 -0
- package/lib/streaming.js +2 -0
- package/lib/testing.d.ts +10 -0
- package/lib/testing.js +17 -0
- package/lib/timeout.d.ts +30 -0
- package/lib/timeout.js +42 -0
- package/lib/timing.d.ts +130 -0
- package/lib/timing.js +183 -0
- package/lib/trailing-slash.d.ts +91 -0
- package/lib/trailing-slash.js +85 -0
- package/lib/trie-router-CfFbapzL.js +146 -0
- package/lib/types-CDO6I3B0.d.ts +40 -0
- package/lib/types-CHesD1KG.d.ts +195 -0
- package/lib/types-CwrQjlaM.d.ts +105 -0
- package/lib/types-DR95J00T.d.ts +29 -0
- package/lib/types.d.ts +2 -0
- package/lib/types.js +4 -0
- package/lib/utils/accept.d.ts +9 -0
- package/lib/utils/accept.js +193 -0
- package/lib/utils/basic-auth.d.ts +8 -0
- package/lib/utils/basic-auth.js +20 -0
- package/lib/utils/body.d.ts +2 -0
- package/lib/utils/body.js +94 -0
- package/lib/utils/buffer.d.ts +19 -0
- package/lib/utils/buffer.js +51 -0
- package/lib/utils/color.d.ts +24 -0
- package/lib/utils/color.js +37 -0
- package/lib/utils/compress.d.ts +11 -0
- package/lib/utils/compress.js +11 -0
- package/lib/utils/concurrent.d.ts +17 -0
- package/lib/utils/concurrent.js +30 -0
- package/lib/utils/constants.d.ts +7 -0
- package/lib/utils/constants.js +7 -0
- package/lib/utils/cookie.d.ts +2 -0
- package/lib/utils/cookie.js +125 -0
- package/lib/utils/crypto.d.ts +14 -0
- package/lib/utils/crypto.js +34 -0
- package/lib/utils/encode.d.ts +11 -0
- package/lib/utils/encode.js +33 -0
- package/lib/utils/filepath.d.ts +14 -0
- package/lib/utils/filepath.js +25 -0
- package/lib/utils/handler.d.ts +9 -0
- package/lib/utils/handler.js +12 -0
- package/lib/utils/headers.d.ts +2 -0
- package/lib/utils/headers.js +1 -0
- package/lib/utils/html.d.ts +46 -0
- package/lib/utils/html.js +103 -0
- package/lib/utils/http-status.d.ts +2 -0
- package/lib/utils/http-status.js +1 -0
- package/lib/utils/ipaddr.d.ts +56 -0
- package/lib/utils/ipaddr.js +238 -0
- package/lib/utils/jwt.d.ts +24 -0
- package/lib/utils/jwt.js +2 -0
- package/lib/utils/mime.d.ts +2 -0
- package/lib/utils/mime.js +77 -0
- package/lib/utils/stream.d.ts +2 -0
- package/lib/utils/stream.js +88 -0
- package/lib/utils/types.d.ts +2 -0
- package/lib/utils/types.js +1 -0
- package/lib/utils/url.d.ts +46 -0
- package/lib/utils/url.js +197 -0
- package/lib/utils-dw8lxqjL.js +4 -0
- package/lib/validator-D84mq-dO.js +65 -0
- package/lib/validator.d.ts +42 -0
- package/lib/validator.js +2 -0
- package/lib/ws.d.ts +2 -0
- package/lib/ws.js +53 -0
- package/package.json +312 -14
- package/plugins/acryl-inspect/src/service.ts +2 -2
- package/plugins/acryl-inspect/tests/service.spec.ts +3 -3
- package/plugins/acryl-inspect/upstream.json +2 -2
- package/plugins/acryl-node-server/tests/adapter/app.ts +2 -2
- package/plugins/acryl-node-server/tests/adapter/assets/static/acryl.html +1 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static/index.html +1 -1
- package/plugins/acryl-node-server/tests/adapter/conninfo.test.ts +2 -2
- package/plugins/acryl-node-server/tests/adapter/content-length.test.ts +4 -4
- package/plugins/acryl-node-server/tests/adapter/early-hints.test.ts +5 -5
- package/plugins/acryl-node-server/tests/adapter/request-client-disconnect.test.ts +2 -2
- package/plugins/acryl-node-server/tests/adapter/serve-static.test.ts +20 -20
- package/plugins/acryl-node-server/tests/adapter/server-socket.test.ts +2 -2
- package/plugins/acryl-node-server/tests/adapter/server.test.ts +60 -50
- package/plugins/acryl-node-server/tests/adapter/utils/response.test.ts +4 -4
- package/plugins/acryl-node-server/tests/adapter/websocket.test.ts +9 -9
- package/plugins/acryl-node-server/tests/server.spec.ts +6 -6
- package/plugins/acryl-node-server/upstream.json +2 -2
- package/plugins/acryl-router/src/client.ts +1 -1
- package/plugins/acryl-router/src/connection.ts +2 -2
- package/plugins/acryl-router/src/core/app-base.ts +29 -29
- package/plugins/acryl-router/src/core/app.test.ts +175 -175
- package/plugins/acryl-router/src/core/app.ts +8 -8
- package/plugins/acryl-router/src/core/client/client.test.ts +76 -76
- package/plugins/acryl-router/src/core/client/client.ts +2 -2
- package/plugins/acryl-router/src/core/client/fetch-result-please.ts +1 -1
- package/plugins/acryl-router/src/core/client/index.ts +1 -1
- package/plugins/acryl-router/src/core/client/types.test.ts +6 -6
- package/plugins/acryl-router/src/core/client/types.ts +16 -16
- package/plugins/acryl-router/src/core/client/utils.test.ts +2 -2
- package/plugins/acryl-router/src/core/context.test.ts +4 -4
- package/plugins/acryl-router/src/core/context.ts +6 -6
- package/plugins/acryl-router/src/core/helper/accepts/accepts.test.ts +3 -3
- package/plugins/acryl-router/src/core/helper/accepts/index.ts +1 -1
- package/plugins/acryl-router/src/core/helper/adapter/index.test.ts +6 -6
- package/plugins/acryl-router/src/core/helper/adapter/index.ts +1 -1
- package/plugins/acryl-router/src/core/helper/conninfo/index.ts +1 -1
- package/plugins/acryl-router/src/core/helper/cookie/index.test.ts +8 -8
- package/plugins/acryl-router/src/core/helper/cookie/index.ts +1 -1
- package/plugins/acryl-router/src/core/helper/factory/index.test.ts +9 -9
- package/plugins/acryl-router/src/core/helper/factory/index.ts +10 -10
- package/plugins/acryl-router/src/core/helper/html/index.test.ts +4 -4
- package/plugins/acryl-router/src/core/helper/html/index.ts +1 -1
- package/plugins/acryl-router/src/core/helper/route/index.test.ts +7 -7
- package/plugins/acryl-router/src/core/helper/route/index.ts +8 -8
- package/plugins/acryl-router/src/core/helper/streaming/index.ts +1 -1
- package/plugins/acryl-router/src/core/helper/testing/index.test.ts +6 -6
- package/plugins/acryl-router/src/core/helper/testing/index.ts +4 -4
- package/plugins/acryl-router/src/core/helper/websocket/index.ts +2 -1
- package/plugins/acryl-router/src/core/http-exception.ts +1 -1
- package/plugins/acryl-router/src/core/index.ts +9 -9
- package/plugins/acryl-router/src/core/middleware/basic-auth/index.test.ts +6 -6
- package/plugins/acryl-router/src/core/middleware/basic-auth/index.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/bearer-auth/index.test.ts +5 -5
- package/plugins/acryl-router/src/core/middleware/bearer-auth/index.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/body-limit/index.test.ts +6 -6
- package/plugins/acryl-router/src/core/middleware/body-limit/index.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/combine/index.test.ts +9 -9
- package/plugins/acryl-router/src/core/middleware/combine/index.ts +7 -7
- package/plugins/acryl-router/src/core/middleware/compress/index.test.ts +9 -9
- package/plugins/acryl-router/src/core/middleware/compress/index.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/context-storage/index.test.ts +5 -5
- package/plugins/acryl-router/src/core/middleware/context-storage/index.ts +4 -4
- package/plugins/acryl-router/src/core/middleware/cors/index.test.ts +7 -7
- package/plugins/acryl-router/src/core/middleware/cors/index.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/csrf/index.test.ts +10 -10
- package/plugins/acryl-router/src/core/middleware/csrf/index.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/etag/index.test.ts +42 -42
- package/plugins/acryl-router/src/core/middleware/etag/index.ts +4 -4
- package/plugins/acryl-router/src/core/middleware/ip-restriction/index.test.ts +4 -4
- package/plugins/acryl-router/src/core/middleware/ip-restriction/index.ts +6 -6
- package/plugins/acryl-router/src/core/middleware/jwk/index.test.ts +16 -16
- package/plugins/acryl-router/src/core/middleware/jwk/jwk.ts +7 -6
- package/plugins/acryl-router/src/core/middleware/jwt/index.test.ts +16 -16
- package/plugins/acryl-router/src/core/middleware/jwt/jwt.ts +4 -3
- package/plugins/acryl-router/src/core/middleware/language/index.test.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/language/language.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/logger/index.test.ts +5 -5
- package/plugins/acryl-router/src/core/middleware/logger/index.ts +4 -4
- package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.test.ts +24 -24
- package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.ts +8 -8
- package/plugins/acryl-router/src/core/middleware/method-override/index.test.ts +5 -5
- package/plugins/acryl-router/src/core/middleware/method-override/index.ts +6 -6
- package/plugins/acryl-router/src/core/middleware/powered-by/index.test.ts +4 -4
- package/plugins/acryl-router/src/core/middleware/powered-by/index.ts +6 -6
- package/plugins/acryl-router/src/core/middleware/pretty-json/index.test.ts +30 -30
- package/plugins/acryl-router/src/core/middleware/pretty-json/index.ts +4 -4
- package/plugins/acryl-router/src/core/middleware/request-id/index.test.ts +15 -15
- package/plugins/acryl-router/src/core/middleware/request-id/request-id.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/secure-headers/index.test.ts +35 -35
- package/plugins/acryl-router/src/core/middleware/secure-headers/secure-headers.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/serve-static/index.test.ts +23 -23
- package/plugins/acryl-router/src/core/middleware/serve-static/index.ts +1 -1
- package/plugins/acryl-router/src/core/middleware/timeout/index.test.ts +2 -2
- package/plugins/acryl-router/src/core/middleware/timeout/index.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/timing/index.test.ts +14 -14
- package/plugins/acryl-router/src/core/middleware/timing/timing.ts +3 -3
- package/plugins/acryl-router/src/core/middleware/trailing-slash/index.test.ts +7 -7
- package/plugins/acryl-router/src/core/middleware/trailing-slash/index.ts +7 -7
- package/plugins/acryl-router/src/core/request.test.ts +42 -42
- package/plugins/acryl-router/src/core/request.ts +6 -6
- package/plugins/acryl-router/src/core/router/linear-router/index.ts +1 -1
- package/plugins/acryl-router/src/core/router/pattern-router/index.ts +1 -1
- package/plugins/acryl-router/src/core/router/reg-exp-router/index.ts +1 -1
- package/plugins/acryl-router/src/core/router/smart-router/index.ts +1 -1
- package/plugins/acryl-router/src/core/router/trie-router/index.ts +1 -1
- package/plugins/acryl-router/src/core/types.test.ts +115 -115
- package/plugins/acryl-router/src/core/types.ts +72 -72
- package/plugins/acryl-router/src/core/utils/body.ts +8 -8
- package/plugins/acryl-router/src/core/utils/html.ts +1 -1
- package/plugins/acryl-router/src/core/utils/jwt/jws.ts +3 -3
- package/plugins/acryl-router/src/core/utils/jwt/jwt.test.ts +2 -2
- package/plugins/acryl-router/src/core/utils/jwt/jwt.ts +3 -3
- package/plugins/acryl-router/src/core/utils/jwt/types.ts +1 -1
- package/plugins/acryl-router/src/core/utils/types.ts +42 -0
- package/plugins/acryl-router/src/core/utils/url.test.ts +2 -2
- package/plugins/acryl-router/src/core/validator/index.ts +1 -1
- package/plugins/acryl-router/src/core/validator/validator.test.ts +28 -28
- package/plugins/acryl-router/src/deprecated.ts +15 -0
- package/plugins/acryl-router/src/index.ts +3 -2
- package/plugins/acryl-router/src/service.ts +10 -10
- package/plugins/acryl-router/tests/docs-examples.spec.ts +11 -11
- package/plugins/acryl-router/tests/live-install.spec.ts +2 -2
- package/plugins/acryl-router/tests/loader.spec.ts +3 -3
- package/plugins/acryl-router/tests/loopback-only.spec.ts +4 -4
- package/plugins/acryl-router/tests/no-dom/consumer.ts +11 -0
- package/plugins/acryl-router/tests/no-dom/tsconfig.json +13 -0
- package/plugins/acryl-router/tests/service.spec.ts +23 -23
- package/plugins/acryl-router/upstream.json +3 -3
- package/plugins/acryl-router-http/tests/adapter.spec.ts +3 -3
- package/plugins/acryl-router-http/tests/surfaces.spec.ts +2 -2
- package/plugins/acryl-router-http/upstream.json +2 -2
- package/plugins/acryl-state/src/service.ts +2 -2
- package/plugins/acryl-state/upstream.json +2 -2
- package/plugins/builder/script.ts +2 -2
- package/plugins/extensions/resolve.ts +70 -10
- package/plugins/openai/prompt.ts +5 -5
- package/shared/AGENTS.core.md +16 -9
- package/templates/agent/src/routes.ts +2 -2
- package/templates/agent/test/model.test.ts +2 -2
- package/templates/agent/tsconfig.json +40 -0
- package/templates/blank/src/routes.ts +2 -2
- package/templates/todo/src/todo.ts +2 -2
- package/templates/todo/upstream.json +2 -2
- package/docs/framework/context.md +0 -129
- package/docs/framework/helpers.md +0 -118
- package/docs/framework/middleware.md +0 -154
- package/docs/framework/request.md +0 -106
- /package/docs/framework/{plugin-lifecycle.md → cordis/plugin-lifecycle.md} +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { testClient } from './index.ts'
|
|
2
|
-
import {
|
|
2
|
+
import { Acryl } from '../../app.ts'
|
|
3
3
|
|
|
4
4
|
describe('acryl testClient', () => {
|
|
5
5
|
it('Should return the correct search result', async () => {
|
|
6
|
-
const app = new
|
|
6
|
+
const app = new Acryl().get('/search', (c) => c.json({ hello: 'world' }))
|
|
7
7
|
const res = await testClient(app).search.$get()
|
|
8
8
|
expect(await res.json()).toEqual({ hello: 'world' })
|
|
9
9
|
})
|
|
10
10
|
|
|
11
11
|
it('Should return the correct environment variables value', async () => {
|
|
12
12
|
type Bindings = { hello: string }
|
|
13
|
-
const app = new
|
|
13
|
+
const app = new Acryl<{ Bindings: Bindings }>().get('/search', (c) => {
|
|
14
14
|
return c.json({ hello: c.env.hello })
|
|
15
15
|
})
|
|
16
16
|
const res = await testClient(app, { hello: 'world' }).search.$get()
|
|
@@ -18,7 +18,7 @@ describe('acryl testClient', () => {
|
|
|
18
18
|
})
|
|
19
19
|
|
|
20
20
|
it('Should use the passed in headers', async () => {
|
|
21
|
-
const app = new
|
|
21
|
+
const app = new Acryl().get('/search', (c) => {
|
|
22
22
|
return c.json({ query: c.req.header('x-query') })
|
|
23
23
|
})
|
|
24
24
|
const res = await testClient(app, undefined, undefined, {
|
|
@@ -28,14 +28,14 @@ describe('acryl testClient', () => {
|
|
|
28
28
|
})
|
|
29
29
|
|
|
30
30
|
it('Should return a correct URL with out throwing an error', async () => {
|
|
31
|
-
const app = new
|
|
31
|
+
const app = new Acryl().get('/abc', (c) => c.json(0))
|
|
32
32
|
const url = testClient(app).abc.$url()
|
|
33
33
|
expect(url.pathname).toBe('/abc')
|
|
34
34
|
})
|
|
35
35
|
|
|
36
36
|
it('Should not throw an error with $ws()', async () => {
|
|
37
37
|
vi.stubGlobal('WebSocket', class {})
|
|
38
|
-
const app = new
|
|
38
|
+
const app = new Acryl().get('/ws', (c) => c.text('Fake response of a WebSocket'))
|
|
39
39
|
// @ts-expect-error $ws is not typed correctly
|
|
40
40
|
expect(() => testClient(app).ws.$ws()).not.toThrowError()
|
|
41
41
|
})
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* Testing Helper for
|
|
3
|
+
* Testing Helper for Acryl.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { hc } from '../../client/index.ts'
|
|
7
7
|
import type { ClientRequestOptions } from '../../client/index.ts'
|
|
8
8
|
import type { Client } from '../../client/types.ts'
|
|
9
9
|
import type { ExecutionContext } from '../../context.ts'
|
|
10
|
-
import type {
|
|
10
|
+
import type { Acryl } from '../../app.ts'
|
|
11
11
|
import type { Schema } from '../../types.ts'
|
|
12
12
|
import type { UnionToIntersection } from '../../utils/types.ts'
|
|
13
13
|
|
|
14
|
-
type ExtractEnv<T> = T extends
|
|
14
|
+
type ExtractEnv<T> = T extends Acryl<infer E, Schema, string> ? E : never
|
|
15
15
|
|
|
16
16
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
-
export const testClient = <T extends
|
|
17
|
+
export const testClient = <T extends Acryl<any, Schema, string>>(
|
|
18
18
|
app: T,
|
|
19
19
|
Env?: ExtractEnv<T>['Bindings'] | {},
|
|
20
20
|
executionCtx?: ExecutionContext,
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* WebSocket Helper for
|
|
3
|
+
* WebSocket Helper for Acryl.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
7
|
import type { Context } from '../../context.ts'
|
|
8
8
|
import type { MiddlewareHandler, TypedResponse } from '../../types.ts'
|
|
9
9
|
import type { StatusCode } from '../../utils/http-status.ts'
|
|
10
|
+
import type { BinaryType, CloseEvent, MessageEvent } from '../../utils/types.ts'
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* WebSocket Event Listeners type
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Acryl - Web Framework built on Web Standards
|
|
5
5
|
*
|
|
6
6
|
* @example
|
|
7
7
|
* ```ts
|
|
8
|
-
* import {
|
|
9
|
-
* const app = new
|
|
8
|
+
* import { Acryl } from 'acrylblends'
|
|
9
|
+
* const app = new Acryl()
|
|
10
10
|
*
|
|
11
|
-
* app.get('/', (c) => c.text('
|
|
11
|
+
* app.get('/', (c) => c.text('Acryl!'))
|
|
12
12
|
*
|
|
13
13
|
* export default app
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import { Acryl } from './app.ts'
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Types for environment variables, error handlers, handlers, middleware handlers, and more.
|
|
@@ -39,15 +39,15 @@ export type {
|
|
|
39
39
|
export { Context } from './context.ts'
|
|
40
40
|
export type { ContextVariableMap, ContextRenderer, ExecutionContext } from './context.ts'
|
|
41
41
|
/**
|
|
42
|
-
* Type for
|
|
42
|
+
* Type for AcrylRequest.
|
|
43
43
|
*/
|
|
44
|
-
export type {
|
|
44
|
+
export type { AcrylRequest } from './request.ts'
|
|
45
45
|
/**
|
|
46
46
|
* Types for inferring request and response types and client request options.
|
|
47
47
|
*/
|
|
48
48
|
export type { InferRequestType, InferResponseType, ClientRequestOptions } from './client/index.ts'
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
51
|
+
* Acryl framework for building web applications.
|
|
52
52
|
*/
|
|
53
|
-
export {
|
|
53
|
+
export { Acryl }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto'
|
|
2
2
|
import { basicAuth } from './index.ts'
|
|
3
|
-
import {
|
|
3
|
+
import { Acryl } from '../../app.ts'
|
|
4
4
|
|
|
5
5
|
describe('Basic Auth by Middleware', () => {
|
|
6
6
|
let handlerExecuted: boolean
|
|
@@ -9,7 +9,7 @@ describe('Basic Auth by Middleware', () => {
|
|
|
9
9
|
handlerExecuted = false
|
|
10
10
|
})
|
|
11
11
|
|
|
12
|
-
const app = new
|
|
12
|
+
const app = new Acryl()
|
|
13
13
|
|
|
14
14
|
const username = 'acryl-user-a'
|
|
15
15
|
const password = 'acryl-password-a'
|
|
@@ -326,7 +326,7 @@ describe('Basic Auth with onAuthSuccess', () => {
|
|
|
326
326
|
|
|
327
327
|
it('should call onAuthSuccess callback on successful auth', async () => {
|
|
328
328
|
type Env = { Variables: { custom: string } }
|
|
329
|
-
const app = new
|
|
329
|
+
const app = new Acryl<Env>()
|
|
330
330
|
let callbackCalled = false
|
|
331
331
|
let callbackUsername = ''
|
|
332
332
|
|
|
@@ -357,7 +357,7 @@ describe('Basic Auth with onAuthSuccess', () => {
|
|
|
357
357
|
|
|
358
358
|
it('should support async onAuthSuccess callback', async () => {
|
|
359
359
|
type Env = { Variables: { asyncValue: string } }
|
|
360
|
-
const app = new
|
|
360
|
+
const app = new Acryl<Env>()
|
|
361
361
|
|
|
362
362
|
app.use(
|
|
363
363
|
'/*',
|
|
@@ -381,7 +381,7 @@ describe('Basic Auth with onAuthSuccess', () => {
|
|
|
381
381
|
})
|
|
382
382
|
|
|
383
383
|
it('should not call onAuthSuccess on failed auth', async () => {
|
|
384
|
-
const app = new
|
|
384
|
+
const app = new Acryl()
|
|
385
385
|
let callbackCalled = false
|
|
386
386
|
|
|
387
387
|
app.use(
|
|
@@ -407,7 +407,7 @@ describe('Basic Auth with onAuthSuccess', () => {
|
|
|
407
407
|
|
|
408
408
|
it('should work with verifyUser mode', async () => {
|
|
409
409
|
type Env = { Variables: { verified: string } }
|
|
410
|
-
const app = new
|
|
410
|
+
const app = new Acryl<Env>()
|
|
411
411
|
let callbackUsername = ''
|
|
412
412
|
|
|
413
413
|
app.use(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* Basic Auth Middleware for
|
|
3
|
+
* Basic Auth Middleware for Acryl.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { Context } from '../../context.ts'
|
|
@@ -29,7 +29,7 @@ type BasicAuthOptions =
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
|
-
* Basic Auth Middleware for
|
|
32
|
+
* Basic Auth Middleware for Acryl.
|
|
33
33
|
*
|
|
34
34
|
*
|
|
35
35
|
* @param {BasicAuthOptions} options - The options for the basic authentication middleware.
|
|
@@ -45,7 +45,7 @@ type BasicAuthOptions =
|
|
|
45
45
|
*
|
|
46
46
|
* @example
|
|
47
47
|
* ```ts
|
|
48
|
-
* const app = new
|
|
48
|
+
* const app = new Acryl()
|
|
49
49
|
*
|
|
50
50
|
* app.use(
|
|
51
51
|
* '/auth/*',
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { expectTypeOf } from 'vitest'
|
|
2
2
|
import { bearerAuth } from './index.ts'
|
|
3
|
-
import {
|
|
3
|
+
import { Acryl } from '../../app.ts'
|
|
4
4
|
import type { Context, MiddlewareHandler } from '../../index.ts'
|
|
5
5
|
|
|
6
6
|
describe('Bearer Auth by Middleware', () => {
|
|
7
|
-
let app:
|
|
7
|
+
let app: Acryl
|
|
8
8
|
let handlerExecuted: boolean
|
|
9
9
|
let token: string
|
|
10
10
|
let tokens: string[]
|
|
11
11
|
|
|
12
12
|
beforeEach(async () => {
|
|
13
|
-
app = new
|
|
13
|
+
app = new Acryl()
|
|
14
14
|
handlerExecuted = false
|
|
15
15
|
token = 'abcdefg12345-._~+/='
|
|
16
16
|
tokens = ['abcdefg12345-._~+/=', 'alternative']
|
|
@@ -927,12 +927,12 @@ describe('Bearer Auth by Middleware', () => {
|
|
|
927
927
|
})
|
|
928
928
|
|
|
929
929
|
describe('Bearer Auth with prefix containing regex metacharacters', () => {
|
|
930
|
-
let app:
|
|
930
|
+
let app: Acryl
|
|
931
931
|
let handlerExecuted: boolean
|
|
932
932
|
const token = 'testtoken123'
|
|
933
933
|
|
|
934
934
|
beforeEach(() => {
|
|
935
|
-
app = new
|
|
935
|
+
app = new Acryl()
|
|
936
936
|
handlerExecuted = false
|
|
937
937
|
})
|
|
938
938
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* Bearer Auth Middleware for
|
|
3
|
+
* Bearer Auth Middleware for Acryl.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { Context } from '../../context.ts'
|
|
@@ -66,7 +66,7 @@ type BearerAuthOptions<E extends Env = Env> =
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
|
-
* Bearer Auth Middleware for
|
|
69
|
+
* Bearer Auth Middleware for Acryl.
|
|
70
70
|
*
|
|
71
71
|
*
|
|
72
72
|
* @template E - The environment type.
|
|
@@ -89,7 +89,7 @@ type BearerAuthOptions<E extends Env = Env> =
|
|
|
89
89
|
*
|
|
90
90
|
* @example
|
|
91
91
|
* ```ts
|
|
92
|
-
* const app = new
|
|
92
|
+
* const app = new Acryl()
|
|
93
93
|
*
|
|
94
94
|
* const token = process.env.API_TOKEN // never a literal in source
|
|
95
95
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { bodyLimit } from './index.ts'
|
|
2
|
-
import {
|
|
2
|
+
import { Acryl } from '../../app.ts'
|
|
3
3
|
|
|
4
4
|
const buildRequestInit = (init: RequestInit = {}): RequestInit & { duplex: 'half' } => {
|
|
5
5
|
const headers: Record<string, string> = {
|
|
@@ -18,13 +18,13 @@ const buildRequestInit = (init: RequestInit = {}): RequestInit & { duplex: 'half
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
describe('Body Limit Middleware', () => {
|
|
21
|
-
let app:
|
|
21
|
+
let app: Acryl
|
|
22
22
|
|
|
23
23
|
const exampleText = 'data is so hot' // 14byte
|
|
24
24
|
const exampleText2 = 'data is so hot and cute' // 23byte
|
|
25
25
|
|
|
26
26
|
beforeEach(() => {
|
|
27
|
-
app = new
|
|
27
|
+
app = new Acryl()
|
|
28
28
|
app.use('*', bodyLimit({ maxSize: 14 }))
|
|
29
29
|
app.get('/', (c) => c.text('index'))
|
|
30
30
|
app.post('/body-limit-15byte', async (c) => {
|
|
@@ -104,7 +104,7 @@ describe('Body Limit Middleware', () => {
|
|
|
104
104
|
|
|
105
105
|
describe('custom error handler', () => {
|
|
106
106
|
beforeEach(() => {
|
|
107
|
-
app = new
|
|
107
|
+
app = new Acryl()
|
|
108
108
|
app.post(
|
|
109
109
|
'/text-limit-15byte-custom',
|
|
110
110
|
bodyLimit({
|
|
@@ -133,7 +133,7 @@ describe('Body Limit Middleware', () => {
|
|
|
133
133
|
|
|
134
134
|
describe('Transfer-Encoding and Content-Length headers', () => {
|
|
135
135
|
beforeEach(() => {
|
|
136
|
-
app = new
|
|
136
|
+
app = new Acryl()
|
|
137
137
|
app.use('*', bodyLimit({ maxSize: 10 }))
|
|
138
138
|
app.post('/test', async (c) => {
|
|
139
139
|
return c.text(await c.req.text())
|
|
@@ -217,7 +217,7 @@ describe('Body Limit Middleware', () => {
|
|
|
217
217
|
|
|
218
218
|
beforeEach(() => {
|
|
219
219
|
handler.mockReset()
|
|
220
|
-
app = new
|
|
220
|
+
app = new Acryl()
|
|
221
221
|
app.use('*', bodyLimit({ maxSize: 8 }))
|
|
222
222
|
app.post('/no-read', (c) => {
|
|
223
223
|
handler()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* Body Limit Middleware for
|
|
3
|
+
* Body Limit Middleware for Acryl.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { Context } from '../../context.ts'
|
|
@@ -16,7 +16,7 @@ type BodyLimitOptions = {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Body Limit Middleware for
|
|
19
|
+
* Body Limit Middleware for Acryl.
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
22
|
* @param {BodyLimitOptions} options - The options for the body limit middleware.
|
|
@@ -26,7 +26,7 @@ type BodyLimitOptions = {
|
|
|
26
26
|
*
|
|
27
27
|
* @example
|
|
28
28
|
* ```ts
|
|
29
|
-
* const app = new
|
|
29
|
+
* const app = new Acryl()
|
|
30
30
|
*
|
|
31
31
|
* app.post(
|
|
32
32
|
* '/upload',
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { every, except, some } from './index.ts'
|
|
2
|
-
import {
|
|
2
|
+
import { Acryl } from '../../app.ts'
|
|
3
3
|
import type { MiddlewareHandler } from '../../types.ts'
|
|
4
4
|
|
|
5
5
|
const nextMiddleware: MiddlewareHandler = async (_, next) => await next()
|
|
6
6
|
|
|
7
7
|
describe('some', () => {
|
|
8
|
-
let app:
|
|
8
|
+
let app: Acryl
|
|
9
9
|
|
|
10
10
|
beforeEach(() => {
|
|
11
|
-
app = new
|
|
11
|
+
app = new Acryl()
|
|
12
12
|
})
|
|
13
13
|
|
|
14
14
|
it('Should call only the first middleware', async () => {
|
|
@@ -140,7 +140,7 @@ describe('some', () => {
|
|
|
140
140
|
await n()
|
|
141
141
|
})
|
|
142
142
|
|
|
143
|
-
const app = new
|
|
143
|
+
const app = new Acryl()
|
|
144
144
|
app.use('/', some(shortCircuit, next))
|
|
145
145
|
app.get('/', (c) => c.text('handler'))
|
|
146
146
|
|
|
@@ -153,10 +153,10 @@ describe('some', () => {
|
|
|
153
153
|
})
|
|
154
154
|
|
|
155
155
|
describe('every', () => {
|
|
156
|
-
let app:
|
|
156
|
+
let app: Acryl
|
|
157
157
|
|
|
158
158
|
beforeEach(() => {
|
|
159
|
-
app = new
|
|
159
|
+
app = new Acryl()
|
|
160
160
|
})
|
|
161
161
|
|
|
162
162
|
it('Should call all middleware', async () => {
|
|
@@ -227,7 +227,7 @@ describe('every', () => {
|
|
|
227
227
|
})
|
|
228
228
|
|
|
229
229
|
it('Should pass the path params to middlewares', async () => {
|
|
230
|
-
const app = new
|
|
230
|
+
const app = new Acryl()
|
|
231
231
|
app.use('*', nextMiddleware)
|
|
232
232
|
const paramMiddleware: MiddlewareHandler = async (c) => {
|
|
233
233
|
return c.json(c.req.param(), 200)
|
|
@@ -244,10 +244,10 @@ describe('every', () => {
|
|
|
244
244
|
})
|
|
245
245
|
|
|
246
246
|
describe('except', () => {
|
|
247
|
-
let app:
|
|
247
|
+
let app: Acryl
|
|
248
248
|
|
|
249
249
|
beforeEach(() => {
|
|
250
|
-
app = new
|
|
250
|
+
app = new Acryl()
|
|
251
251
|
})
|
|
252
252
|
|
|
253
253
|
it('Should call all middleware, except the one that matches the condition', async () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* Combine Middleware for
|
|
3
|
+
* Combine Middleware for Acryl.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { compose } from '../../compose.ts'
|
|
@@ -23,8 +23,8 @@ type Condition = (c: Context) => boolean
|
|
|
23
23
|
*
|
|
24
24
|
* @example
|
|
25
25
|
* ```ts
|
|
26
|
-
* import { some } from '
|
|
27
|
-
* import { bearerAuth } from '
|
|
26
|
+
* import { some } from 'acrylblends/combine'
|
|
27
|
+
* import { bearerAuth } from 'acrylblends/bearer-auth'
|
|
28
28
|
* import { myRateLimit } from '@/rate-limit'
|
|
29
29
|
*
|
|
30
30
|
* // If client has a valid token, then skip rate limiting.
|
|
@@ -84,8 +84,8 @@ export const some = (...middleware: (MiddlewareHandler | Condition)[]): Middlewa
|
|
|
84
84
|
*
|
|
85
85
|
* @example
|
|
86
86
|
* ```ts
|
|
87
|
-
* import { some, every } from '
|
|
88
|
-
* import { bearerAuth } from '
|
|
87
|
+
* import { some, every } from 'acrylblends/combine'
|
|
88
|
+
* import { bearerAuth } from 'acrylblends/bearer-auth'
|
|
89
89
|
* import { myCheckLocalNetwork } from '@/check-local-network'
|
|
90
90
|
* import { myRateLimit } from '@/rate-limit'
|
|
91
91
|
*
|
|
@@ -133,8 +133,8 @@ export const every = (...middleware: (MiddlewareHandler | Condition)[]): Middlew
|
|
|
133
133
|
*
|
|
134
134
|
* @example
|
|
135
135
|
* ```ts
|
|
136
|
-
* import { except } from '
|
|
137
|
-
* import { bearerAuth } from '
|
|
136
|
+
* import { except } from 'acrylblends/combine'
|
|
137
|
+
* import { bearerAuth } from 'acrylblends/bearer-auth'
|
|
138
138
|
*
|
|
139
139
|
* // If client is accessing public API, then skip authentication.
|
|
140
140
|
* // Otherwise, require a valid token.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { compress } from './index.ts'
|
|
2
2
|
import { stream, streamSSE } from '../../helper/streaming/index.ts'
|
|
3
|
-
import {
|
|
3
|
+
import { Acryl } from '../../app.ts'
|
|
4
4
|
|
|
5
5
|
describe('Compress Middleware', () => {
|
|
6
|
-
const app = new
|
|
6
|
+
const app = new Acryl()
|
|
7
7
|
|
|
8
8
|
// Apply compress middleware to all routes
|
|
9
9
|
app.use('*', compress())
|
|
@@ -208,7 +208,7 @@ describe('Compress Middleware', () => {
|
|
|
208
208
|
})
|
|
209
209
|
|
|
210
210
|
describe('ETag Handling', () => {
|
|
211
|
-
const app = new
|
|
211
|
+
const app = new Acryl()
|
|
212
212
|
app.use('*', compress())
|
|
213
213
|
app.get('/strong-etag', (c) => {
|
|
214
214
|
c.header('Content-Type', 'text/plain')
|
|
@@ -260,7 +260,7 @@ describe('Compress Middleware', () => {
|
|
|
260
260
|
})
|
|
261
261
|
|
|
262
262
|
describe('Vary Header', () => {
|
|
263
|
-
const app = new
|
|
263
|
+
const app = new Acryl()
|
|
264
264
|
app.use('*', compress())
|
|
265
265
|
app.get('/no-vary', (c) => {
|
|
266
266
|
c.header('Content-Type', 'text/plain')
|
|
@@ -348,7 +348,7 @@ describe('Compress Middleware', () => {
|
|
|
348
348
|
|
|
349
349
|
describe('contentTypeFilter', () => {
|
|
350
350
|
describe('RegExp', () => {
|
|
351
|
-
const app = new
|
|
351
|
+
const app = new Acryl()
|
|
352
352
|
app.use('*', compress({ contentTypeFilter: /^application\/json/, threshold: 0 }))
|
|
353
353
|
app.get('/json', (c) => c.json({ data: 'a'.repeat(1024) }))
|
|
354
354
|
app.get('/text', (c) => c.text('a'.repeat(1024)))
|
|
@@ -369,7 +369,7 @@ describe('Compress Middleware', () => {
|
|
|
369
369
|
})
|
|
370
370
|
|
|
371
371
|
describe('function', () => {
|
|
372
|
-
const app = new
|
|
372
|
+
const app = new Acryl()
|
|
373
373
|
app.use('*', compress({ contentTypeFilter: (type) => type.includes('json'), threshold: 0 }))
|
|
374
374
|
app.get('/json', (c) => c.json({ data: 'a'.repeat(1024) }))
|
|
375
375
|
app.get('/text', (c) => c.text('a'.repeat(1024)))
|
|
@@ -414,7 +414,7 @@ describe('Compress Middleware', () => {
|
|
|
414
414
|
|
|
415
415
|
describe('Encoding Option', () => {
|
|
416
416
|
const buildApp = (encoding: 'gzip' | 'deflate') => {
|
|
417
|
-
const app = new
|
|
417
|
+
const app = new Acryl()
|
|
418
418
|
app.use('*', compress({ encoding }))
|
|
419
419
|
app.get('/large', (c) => {
|
|
420
420
|
c.header('Content-Type', 'text/plain')
|
|
@@ -449,7 +449,7 @@ describe('Compress Middleware', () => {
|
|
|
449
449
|
|
|
450
450
|
describe('Accept-Encoding parsing', () => {
|
|
451
451
|
const buildAppDefault = () => {
|
|
452
|
-
const app = new
|
|
452
|
+
const app = new Acryl()
|
|
453
453
|
app.use('*', compress())
|
|
454
454
|
app.get('/large', (c) => {
|
|
455
455
|
c.header('Content-Type', 'text/plain')
|
|
@@ -460,7 +460,7 @@ describe('Compress Middleware', () => {
|
|
|
460
460
|
}
|
|
461
461
|
|
|
462
462
|
const buildAppWithEncoding = (encoding: 'gzip' | 'deflate') => {
|
|
463
|
-
const app = new
|
|
463
|
+
const app = new Acryl()
|
|
464
464
|
app.use('*', compress({ encoding }))
|
|
465
465
|
app.get('/large', (c) => {
|
|
466
466
|
c.header('Content-Type', 'text/plain')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* Compress Middleware for
|
|
3
|
+
* Compress Middleware for Acryl.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { MiddlewareHandler } from '../../types.ts'
|
|
@@ -46,7 +46,7 @@ const selectEncoding = (
|
|
|
46
46
|
const varyAcceptEncodingRegExp = /(?:^|,)\s*accept-encoding\s*(?:,|$)/i
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
|
-
* Compress Middleware for
|
|
49
|
+
* Compress Middleware for Acryl.
|
|
50
50
|
*
|
|
51
51
|
*
|
|
52
52
|
* @param {CompressionOptions} [options] - The options for the compress middleware.
|
|
@@ -57,7 +57,7 @@ const varyAcceptEncodingRegExp = /(?:^|,)\s*accept-encoding\s*(?:,|$)/i
|
|
|
57
57
|
*
|
|
58
58
|
* @example
|
|
59
59
|
* ```ts
|
|
60
|
-
* const app = new
|
|
60
|
+
* const app = new Acryl()
|
|
61
61
|
*
|
|
62
62
|
* app.use(compress())
|
|
63
63
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { contextStorage, getContext, tryGetContext } from './index.ts'
|
|
2
|
-
import {
|
|
2
|
+
import { Acryl } from '../../app.ts'
|
|
3
3
|
|
|
4
4
|
describe('Context Storage Middleware', () => {
|
|
5
5
|
type Env = {
|
|
@@ -8,11 +8,11 @@ describe('Context Storage Middleware', () => {
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
const app = new
|
|
11
|
+
const app = new Acryl<Env>()
|
|
12
12
|
|
|
13
13
|
app.use(contextStorage())
|
|
14
14
|
app.use(async (c, next) => {
|
|
15
|
-
c.set('message', '
|
|
15
|
+
c.set('message', 'Acryl is hot!!')
|
|
16
16
|
await next()
|
|
17
17
|
})
|
|
18
18
|
app.get('/', (c) => {
|
|
@@ -29,7 +29,7 @@ describe('Context Storage Middleware', () => {
|
|
|
29
29
|
|
|
30
30
|
it('Should get context', async () => {
|
|
31
31
|
const res = await app.request('/')
|
|
32
|
-
expect(await res.text()).toBe('
|
|
32
|
+
expect(await res.text()).toBe('Acryl is hot!!')
|
|
33
33
|
})
|
|
34
34
|
|
|
35
35
|
it('Should return undefined when context is missing', () => {
|
|
@@ -38,6 +38,6 @@ describe('Context Storage Middleware', () => {
|
|
|
38
38
|
|
|
39
39
|
it('Should get context when available via tryGetContext', async () => {
|
|
40
40
|
const res = await app.request('/optional')
|
|
41
|
-
expect(await res.text()).toBe('
|
|
41
|
+
expect(await res.text()).toBe('Acryl is hot!!')
|
|
42
42
|
})
|
|
43
43
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* Context Storage Middleware for
|
|
3
|
+
* Context Storage Middleware for Acryl.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { AsyncLocalStorage } from 'node:async_hooks'
|
|
@@ -10,7 +10,7 @@ import type { Env, MiddlewareHandler } from '../../types.ts'
|
|
|
10
10
|
const asyncLocalStorage = new AsyncLocalStorage<Context>()
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* Context Storage Middleware for
|
|
13
|
+
* Context Storage Middleware for Acryl.
|
|
14
14
|
*
|
|
15
15
|
*
|
|
16
16
|
* @returns {MiddlewareHandler} The middleware handler function.
|
|
@@ -23,12 +23,12 @@ const asyncLocalStorage = new AsyncLocalStorage<Context>()
|
|
|
23
23
|
* }
|
|
24
24
|
* }
|
|
25
25
|
*
|
|
26
|
-
* const app = new
|
|
26
|
+
* const app = new Acryl<Env>()
|
|
27
27
|
*
|
|
28
28
|
* app.use(contextStorage())
|
|
29
29
|
*
|
|
30
30
|
* app.use(async (c, next) => {
|
|
31
|
-
* c.set('message', '
|
|
31
|
+
* c.set('message', 'Acryl is hot!!')
|
|
32
32
|
* await next()
|
|
33
33
|
* })
|
|
34
34
|
*
|