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.
- package/LICENSE +73 -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} +7 -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 +50 -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,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
2
|
import { expectTypeOf } from 'vitest'
|
|
3
3
|
import { hc } from './index.ts'
|
|
4
|
-
import {
|
|
4
|
+
import { Acryl } from '../index.ts'
|
|
5
5
|
import { defineWebSocketHelper } from '../helper/websocket/index.ts'
|
|
6
6
|
import type { TypedURL } from './types.ts'
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@ import type { TypedURL } from './types.ts'
|
|
|
9
9
|
const upgradeWebSocket = defineWebSocketHelper(async () => {})
|
|
10
10
|
|
|
11
11
|
describe('WebSockets', () => {
|
|
12
|
-
const app = new
|
|
12
|
+
const app = new Acryl()
|
|
13
13
|
.get(
|
|
14
14
|
'/ws',
|
|
15
15
|
upgradeWebSocket(() => ({}))
|
|
@@ -30,7 +30,7 @@ describe('WebSockets', () => {
|
|
|
30
30
|
})
|
|
31
31
|
|
|
32
32
|
describe('without the leading slash', () => {
|
|
33
|
-
const app = new
|
|
33
|
+
const app = new Acryl()
|
|
34
34
|
.get('foo', (c) => c.json({}))
|
|
35
35
|
.get('foo/bar', (c) => c.json({}))
|
|
36
36
|
.get('foo/:id/baz', (c) => c.json({}))
|
|
@@ -80,7 +80,7 @@ describe('without the leading slash', () => {
|
|
|
80
80
|
})
|
|
81
81
|
|
|
82
82
|
describe('with the leading slash', () => {
|
|
83
|
-
const app = new
|
|
83
|
+
const app = new Acryl()
|
|
84
84
|
.get('/foo', (c) => c.json({}))
|
|
85
85
|
.get('/foo/bar', (c) => c.json({}))
|
|
86
86
|
.get('/foo/:id/baz', (c) => c.json({}))
|
|
@@ -97,7 +97,7 @@ describe('with the leading slash', () => {
|
|
|
97
97
|
})
|
|
98
98
|
|
|
99
99
|
describe('app.all()', () => {
|
|
100
|
-
const app = new
|
|
100
|
+
const app = new Acryl()
|
|
101
101
|
.all('/all-route', (c) => c.json({ msg: 'all methods' }))
|
|
102
102
|
.get('/get-route', (c) => c.json({ msg: 'get only' }))
|
|
103
103
|
const client = hc<typeof app>('http://localhost', { fetch: app.request })
|
|
@@ -131,7 +131,7 @@ describe('app.all()', () => {
|
|
|
131
131
|
})
|
|
132
132
|
|
|
133
133
|
describe('with base URL pathname', () => {
|
|
134
|
-
const app = new
|
|
134
|
+
const app = new Acryl()
|
|
135
135
|
.get('foo', (c) => c.json({}))
|
|
136
136
|
.get('foo/bar', (c) => c.json({}))
|
|
137
137
|
.get('foo/:id/baz', (c) => c.json({}))
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { Acryl } from '../app.ts'
|
|
2
|
+
import type { AcrylBase } from '../app-base.ts'
|
|
3
3
|
import type { METHODS, METHOD_NAME_ALL_LOWERCASE } from '../router.ts'
|
|
4
4
|
import type { Endpoint, ExtractSchema, KnownResponseFormat, ResponseFormat, Schema } from '../types.ts'
|
|
5
5
|
import type { StatusCode, SuccessStatusCode } from '../utils/http-status.ts'
|
|
@@ -25,16 +25,16 @@ type ExpandAllMethod<S> = MethodNameAll extends keyof S
|
|
|
25
25
|
? { [M in StandardMethods]: S[MethodNameAll] } & Omit<S, MethodNameAll>
|
|
26
26
|
: S
|
|
27
27
|
|
|
28
|
-
type
|
|
28
|
+
type AcrylRequest = (typeof Acryl.prototype)['request']
|
|
29
29
|
|
|
30
30
|
export type BuildSearchParamsFn = (query: Record<string, string | string[]>) => URLSearchParams
|
|
31
31
|
|
|
32
32
|
export type ClientRequestOptions<T = unknown> = {
|
|
33
|
-
fetch?: typeof fetch |
|
|
33
|
+
fetch?: typeof fetch | AcrylRequest
|
|
34
34
|
webSocket?: (...args: ConstructorParameters<typeof WebSocket>) => WebSocket
|
|
35
35
|
/**
|
|
36
36
|
* Standard `RequestInit`, caution that this take highest priority
|
|
37
|
-
* and could be used to overwrite things that
|
|
37
|
+
* and could be used to overwrite things that Acryl sets for you, like `body | method | headers`.
|
|
38
38
|
*
|
|
39
39
|
* If you want to add some headers, use in `headers` instead of `init`
|
|
40
40
|
*/
|
|
@@ -93,7 +93,7 @@ export type ClientRequest<Prefix extends string, Path extends string, S extends
|
|
|
93
93
|
| undefined = undefined,
|
|
94
94
|
>(
|
|
95
95
|
arg?: Arg
|
|
96
|
-
) =>
|
|
96
|
+
) => AcrylURL<Prefix, Path, Arg>
|
|
97
97
|
$path: <
|
|
98
98
|
const Arg extends
|
|
99
99
|
| (S[keyof S] extends { input: infer R }
|
|
@@ -173,7 +173,7 @@ type BuildTypedURL<
|
|
|
173
173
|
Arg,
|
|
174
174
|
> = TypedURL<`${Protocol}:`, Host, Port, BuildPathname<P, Arg>, BuildSearch<Arg, 'query'>>
|
|
175
175
|
|
|
176
|
-
type
|
|
176
|
+
type AcrylURL<Prefix extends string, Path extends string, Arg> =
|
|
177
177
|
IsLiteral<Prefix> extends true
|
|
178
178
|
? TrimEndSlash<Prefix> extends `${infer Protocol}://${infer Rest}`
|
|
179
179
|
? Rest extends `${infer Hostname}/${infer P}`
|
|
@@ -309,7 +309,7 @@ type PathToChain<
|
|
|
309
309
|
}
|
|
310
310
|
|
|
311
311
|
export type Client<T, Prefix extends string> =
|
|
312
|
-
T extends
|
|
312
|
+
T extends AcrylBase<any, infer S, any>
|
|
313
313
|
? S extends Record<infer K, Schema>
|
|
314
314
|
? K extends string
|
|
315
315
|
? PathToChain<Prefix, K, S>
|
|
@@ -355,10 +355,10 @@ type ModSchema<D, Def extends GlobalResponseDefinition> = {
|
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
-
export type ApplyGlobalResponse<
|
|
359
|
-
|
|
360
|
-
? ModSchema<ExtractSchema<
|
|
361
|
-
?
|
|
358
|
+
export type ApplyGlobalResponse<App, Def extends GlobalResponseDefinition> =
|
|
359
|
+
App extends AcrylBase<infer E, infer _ extends Schema, infer B>
|
|
360
|
+
? ModSchema<ExtractSchema<App>, Def> extends infer S extends Schema
|
|
361
|
+
? Acryl<E, S, B>
|
|
362
362
|
: never
|
|
363
363
|
: never
|
|
364
364
|
|
|
@@ -385,9 +385,9 @@ type PickSchema<D, U extends StatusCode> = {
|
|
|
385
385
|
* const client = hc<AppSuccessOnly>('http://localhost')
|
|
386
386
|
* ```
|
|
387
387
|
*/
|
|
388
|
-
export type PickResponseByStatusCode<
|
|
389
|
-
|
|
390
|
-
? PickSchema<ExtractSchema<
|
|
391
|
-
?
|
|
388
|
+
export type PickResponseByStatusCode<App, U extends StatusCode> =
|
|
389
|
+
App extends AcrylBase<infer E, infer _ extends Schema, infer B>
|
|
390
|
+
? PickSchema<ExtractSchema<App>, U> extends infer S extends Schema
|
|
391
|
+
? Acryl<E, S, B>
|
|
392
392
|
: never
|
|
393
393
|
: never
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HttpResponse, http } from 'msw'
|
|
2
2
|
import { setupServer } from 'msw/node'
|
|
3
|
-
import {
|
|
3
|
+
import { Acryl } from '../app.ts'
|
|
4
4
|
import type { Expect, Equal } from '../utils/types.ts'
|
|
5
5
|
import { hc } from './client.ts'
|
|
6
6
|
import {
|
|
@@ -211,7 +211,7 @@ describe('deepMerge', () => {
|
|
|
211
211
|
})
|
|
212
212
|
|
|
213
213
|
describe('parseResponse', async () => {
|
|
214
|
-
const _app = new
|
|
214
|
+
const _app = new Acryl()
|
|
215
215
|
.get('/text', (c) => c.text('hi'))
|
|
216
216
|
.get('/json', (c) => c.json({ message: 'hi' }))
|
|
217
217
|
.get('/might-error-json', (c) => {
|
|
@@ -71,16 +71,16 @@ describe('Context', () => {
|
|
|
71
71
|
})
|
|
72
72
|
|
|
73
73
|
it('c.html()', async () => {
|
|
74
|
-
const res: Response = c.html('<h1>Hello!
|
|
74
|
+
const res: Response = c.html('<h1>Hello! Acryl!</h1>', 201, { 'X-Custom': 'Message' })
|
|
75
75
|
expect(res.status).toBe(201)
|
|
76
76
|
expect(res.headers.get('Content-Type')).toMatch('text/html')
|
|
77
|
-
expect(await res.text()).toBe('<h1>Hello!
|
|
77
|
+
expect(await res.text()).toBe('<h1>Hello! Acryl!</h1>')
|
|
78
78
|
expect(res.headers.get('X-Custom')).toBe('Message')
|
|
79
79
|
})
|
|
80
80
|
|
|
81
81
|
it('c.html() with async', async () => {
|
|
82
82
|
const resPromise: Promise<Response> = c.html(
|
|
83
|
-
new Promise<string>((resolve) => setTimeout(() => resolve('<h1>Hello!
|
|
83
|
+
new Promise<string>((resolve) => setTimeout(() => resolve('<h1>Hello! Acryl!</h1>'), 0)),
|
|
84
84
|
201,
|
|
85
85
|
{
|
|
86
86
|
'X-Custom': 'Message',
|
|
@@ -89,7 +89,7 @@ describe('Context', () => {
|
|
|
89
89
|
const res = await resPromise
|
|
90
90
|
expect(res.status).toBe(201)
|
|
91
91
|
expect(res.headers.get('Content-Type')).toMatch('text/html')
|
|
92
|
-
expect(await res.text()).toBe('<h1>Hello!
|
|
92
|
+
expect(await res.text()).toBe('<h1>Hello! Acryl!</h1>')
|
|
93
93
|
expect(res.headers.get('X-Custom')).toBe('Message')
|
|
94
94
|
})
|
|
95
95
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AcrylRequest } from './request.ts'
|
|
2
2
|
import type { Result } from './router.ts'
|
|
3
3
|
import type {
|
|
4
4
|
Env,
|
|
@@ -298,7 +298,7 @@ export class Context<
|
|
|
298
298
|
I extends Input = {},
|
|
299
299
|
> {
|
|
300
300
|
#rawRequest: Request
|
|
301
|
-
#req:
|
|
301
|
+
#req: AcrylRequest<P, I['out']> | undefined
|
|
302
302
|
/**
|
|
303
303
|
* `.env` can get bindings (environment variables, secrets, KV namespaces, D1 database, R2 bucket etc.) in Cloudflare Workers.
|
|
304
304
|
*
|
|
@@ -359,10 +359,10 @@ export class Context<
|
|
|
359
359
|
}
|
|
360
360
|
|
|
361
361
|
/**
|
|
362
|
-
* `.req` is the instance of {@link
|
|
362
|
+
* `.req` is the instance of {@link AcrylRequest}.
|
|
363
363
|
*/
|
|
364
|
-
get req():
|
|
365
|
-
this.#req ??= new
|
|
364
|
+
get req(): AcrylRequest<P, I['out']> {
|
|
365
|
+
this.#req ??= new AcrylRequest(this.#rawRequest, this.#path, this.#matchResult)
|
|
366
366
|
return this.#req
|
|
367
367
|
}
|
|
368
368
|
|
|
@@ -533,7 +533,7 @@ export class Context<
|
|
|
533
533
|
* @example
|
|
534
534
|
* ```ts
|
|
535
535
|
* app.use('*', async (c, next) => {
|
|
536
|
-
* c.set('message', '
|
|
536
|
+
* c.set('message', 'Acryl is hot!!')
|
|
537
537
|
* await next()
|
|
538
538
|
* })
|
|
539
539
|
* ```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Acryl } from '../../index.ts'
|
|
2
2
|
import { parseAccept } from '../../utils/accept.ts'
|
|
3
3
|
import type { AcceptHeader } from '../../utils/headers.ts'
|
|
4
4
|
import type { Accept, acceptsConfig, acceptsOptions } from './accepts.ts'
|
|
@@ -277,7 +277,7 @@ describe('accepts', () => {
|
|
|
277
277
|
|
|
278
278
|
describe('Usage', () => {
|
|
279
279
|
test('decide compression by Accept-Encoding header', async () => {
|
|
280
|
-
const app = new
|
|
280
|
+
const app = new Acryl()
|
|
281
281
|
app.get('/compressed', async (c) => {
|
|
282
282
|
const encoding = accepts(c, {
|
|
283
283
|
header: 'Accept-Encoding',
|
|
@@ -318,7 +318,7 @@ describe('Usage', () => {
|
|
|
318
318
|
})
|
|
319
319
|
|
|
320
320
|
test('decide language by Accept-Language header', async () => {
|
|
321
|
-
const app = new
|
|
321
|
+
const app = new Acryl()
|
|
322
322
|
const SUPPORTED_LANGS = ['en', 'ja', 'zh']
|
|
323
323
|
app.get('/*', async (c) => {
|
|
324
324
|
const lang = accepts(c, {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { env, getRuntimeKey } from './index.ts'
|
|
2
|
-
import {
|
|
2
|
+
import { Acryl } from '../../app.ts'
|
|
3
3
|
|
|
4
4
|
describe('getRuntimeKey', () => {
|
|
5
5
|
it('Should return the current runtime key', () => {
|
|
@@ -18,7 +18,7 @@ describe('env', () => {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
it('Should not throw type errors with env has generics', () => {
|
|
21
|
-
const app = new
|
|
21
|
+
const app = new Acryl()
|
|
22
22
|
app.get('/var', (c) => {
|
|
23
23
|
const { MY_VAR } = env<{ MY_VAR: string }>(c)
|
|
24
24
|
expectTypeOf<string>(MY_VAR)
|
|
@@ -28,8 +28,8 @@ describe('env', () => {
|
|
|
28
28
|
})
|
|
29
29
|
})
|
|
30
30
|
|
|
31
|
-
it('Should not throw type errors with
|
|
32
|
-
const app = new
|
|
31
|
+
it('Should not throw type errors with Acryl has generics', () => {
|
|
32
|
+
const app = new Acryl<Env>()
|
|
33
33
|
|
|
34
34
|
app.get('/var', (c) => {
|
|
35
35
|
const { MY_VAR } = env(c)
|
|
@@ -40,8 +40,8 @@ describe('env', () => {
|
|
|
40
40
|
})
|
|
41
41
|
})
|
|
42
42
|
|
|
43
|
-
it('Should not throw type errors with env and
|
|
44
|
-
const app = new
|
|
43
|
+
it('Should not throw type errors with env and Acryl have generics', () => {
|
|
44
|
+
const app = new Acryl<Env>()
|
|
45
45
|
|
|
46
46
|
app.get('/var', (c) => {
|
|
47
47
|
const { MY_VAR } = env<{ MY_VAR: string }>(c)
|
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
generateCookie,
|
|
8
8
|
generateSignedCookie,
|
|
9
9
|
} from './index.ts'
|
|
10
|
-
import {
|
|
10
|
+
import { Acryl } from '../../app.ts'
|
|
11
11
|
|
|
12
12
|
describe('Cookie Middleware', () => {
|
|
13
13
|
describe('Parse cookie', () => {
|
|
14
|
-
const apps: Record<string,
|
|
14
|
+
const apps: Record<string, Acryl> = {}
|
|
15
15
|
apps['get by name'] = (() => {
|
|
16
|
-
const app = new
|
|
16
|
+
const app = new Acryl()
|
|
17
17
|
|
|
18
18
|
app.get('/cookie', (c) => {
|
|
19
19
|
const yummyCookie = getCookie(c, 'yummy_cookie')
|
|
@@ -30,7 +30,7 @@ describe('Cookie Middleware', () => {
|
|
|
30
30
|
})()
|
|
31
31
|
|
|
32
32
|
apps['get all as an object'] = (() => {
|
|
33
|
-
const app = new
|
|
33
|
+
const app = new Acryl()
|
|
34
34
|
|
|
35
35
|
app.get('/cookie', (c) => {
|
|
36
36
|
const { yummy_cookie: yummyCookie, tasty_cookie: tastyCookie } = getCookie(c)
|
|
@@ -56,7 +56,7 @@ describe('Cookie Middleware', () => {
|
|
|
56
56
|
})
|
|
57
57
|
})
|
|
58
58
|
|
|
59
|
-
const app = new
|
|
59
|
+
const app = new Acryl()
|
|
60
60
|
|
|
61
61
|
app.get('/cookie-signed-get-all', async (c) => {
|
|
62
62
|
const secret = 'secret lucky charm'
|
|
@@ -134,7 +134,7 @@ describe('Cookie Middleware', () => {
|
|
|
134
134
|
})
|
|
135
135
|
|
|
136
136
|
describe('get null if the value is undefined', () => {
|
|
137
|
-
const app = new
|
|
137
|
+
const app = new Acryl()
|
|
138
138
|
|
|
139
139
|
app.get('/cookie', (c) => {
|
|
140
140
|
const yummyCookie = getCookie(c, 'yummy_cookie')
|
|
@@ -156,7 +156,7 @@ describe('Cookie Middleware', () => {
|
|
|
156
156
|
})
|
|
157
157
|
|
|
158
158
|
describe('Set cookie', () => {
|
|
159
|
-
const app = new
|
|
159
|
+
const app = new Acryl()
|
|
160
160
|
|
|
161
161
|
app.get('/set-cookie', (c) => {
|
|
162
162
|
setCookie(c, 'delicious_cookie', 'macha')
|
|
@@ -389,7 +389,7 @@ describe('Cookie Middleware', () => {
|
|
|
389
389
|
})
|
|
390
390
|
|
|
391
391
|
describe('Delete cookie', () => {
|
|
392
|
-
const app = new
|
|
392
|
+
const app = new Acryl()
|
|
393
393
|
|
|
394
394
|
app.get('/delete-cookie', (c) => {
|
|
395
395
|
deleteCookie(c, 'delicious_cookie')
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { expectTypeOf } from 'vitest'
|
|
3
3
|
import { hc } from '../../client/index.ts'
|
|
4
4
|
import type { ClientRequest } from '../../client/types.ts'
|
|
5
|
-
import {
|
|
5
|
+
import { Acryl } from '../../index.ts'
|
|
6
6
|
import type { Env, ExtractSchema, H, MiddlewareHandler, ToSchema, TypedResponse } from '../../types.ts'
|
|
7
7
|
import type { ContentfulStatusCode } from '../../utils/http-status.ts'
|
|
8
8
|
import type { Equal, Expect } from '../../utils/types.ts'
|
|
@@ -11,7 +11,7 @@ import { createFactory, createMiddleware } from './index.ts'
|
|
|
11
11
|
|
|
12
12
|
describe('createMiddleware', () => {
|
|
13
13
|
type Env = { Variables: { foo: string } }
|
|
14
|
-
const app = new
|
|
14
|
+
const app = new Acryl()
|
|
15
15
|
|
|
16
16
|
const mw = (message: string) =>
|
|
17
17
|
createMiddleware<Env>(async (c, next) => {
|
|
@@ -47,7 +47,7 @@ describe('createMiddleware', () => {
|
|
|
47
47
|
MY_VAR: string
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
const app = new
|
|
50
|
+
const app = new Acryl<{ Bindings: Bindings }>()
|
|
51
51
|
|
|
52
52
|
app.get(
|
|
53
53
|
'/',
|
|
@@ -82,7 +82,7 @@ describe('createHandler', () => {
|
|
|
82
82
|
|
|
83
83
|
describe('Basic', () => {
|
|
84
84
|
const factory = createFactory()
|
|
85
|
-
const app = new
|
|
85
|
+
const app = new Acryl()
|
|
86
86
|
|
|
87
87
|
const handlersA = factory.createHandlers((c) => {
|
|
88
88
|
return c.text('A')
|
|
@@ -130,7 +130,7 @@ describe('createHandler', () => {
|
|
|
130
130
|
type Env = { Variables: { foo: string } }
|
|
131
131
|
|
|
132
132
|
const factory = createFactory<Env>()
|
|
133
|
-
const app = new
|
|
133
|
+
const app = new Acryl<Env>()
|
|
134
134
|
|
|
135
135
|
const handlers = factory.createHandlers(
|
|
136
136
|
validator('query', () => {
|
|
@@ -146,7 +146,7 @@ describe('createHandler', () => {
|
|
|
146
146
|
)
|
|
147
147
|
const routes = app.get('/posts', ...handlers)
|
|
148
148
|
|
|
149
|
-
type Expected =
|
|
149
|
+
type Expected = Acryl<
|
|
150
150
|
Env,
|
|
151
151
|
ToSchema<
|
|
152
152
|
'get',
|
|
@@ -178,7 +178,7 @@ describe('createHandler', () => {
|
|
|
178
178
|
type Env = { Variables: { foo: string } }
|
|
179
179
|
|
|
180
180
|
const factory = createFactory<Env>()
|
|
181
|
-
const app = new
|
|
181
|
+
const app = new Acryl<Env>()
|
|
182
182
|
|
|
183
183
|
const handlers = factory.createHandlers(
|
|
184
184
|
validator('header', () => {
|
|
@@ -206,7 +206,7 @@ describe('createHandler', () => {
|
|
|
206
206
|
)
|
|
207
207
|
const routes = app.get('/posts', ...handlers)
|
|
208
208
|
|
|
209
|
-
type Expected =
|
|
209
|
+
type Expected = Acryl<
|
|
210
210
|
Env,
|
|
211
211
|
ToSchema<
|
|
212
212
|
'get',
|
|
@@ -390,7 +390,7 @@ describe('createFactory', () => {
|
|
|
390
390
|
await next()
|
|
391
391
|
})
|
|
392
392
|
|
|
393
|
-
const routes = new
|
|
393
|
+
const routes = new Acryl().use('*', middleware)
|
|
394
394
|
type Actual = ExtractSchema<typeof routes>
|
|
395
395
|
type Expected = {}
|
|
396
396
|
type verify = Expect<Equal<Expected, Actual>>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* Factory Helper for
|
|
3
|
+
* Factory Helper for Acryl.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
|
-
import {
|
|
8
|
-
import type {
|
|
7
|
+
import { Acryl } from '../../app.ts'
|
|
8
|
+
import type { AcrylOptions } from '../../app-base.ts'
|
|
9
9
|
import type {
|
|
10
10
|
Env,
|
|
11
11
|
H,
|
|
@@ -15,7 +15,7 @@ import type {
|
|
|
15
15
|
MiddlewareHandler,
|
|
16
16
|
} from '../../types.ts'
|
|
17
17
|
|
|
18
|
-
type InitApp<E extends Env = Env> = (app:
|
|
18
|
+
type InitApp<E extends Env = Env> = (app: Acryl<E>) => void
|
|
19
19
|
|
|
20
20
|
export interface CreateHandlersInterface<E extends Env, P extends string> {
|
|
21
21
|
<I extends Input = {}, R extends HandlerResponse<any> = any, E2 extends Env = E>(
|
|
@@ -331,18 +331,18 @@ export interface CreateHandlersInterface<E extends Env, P extends string> {
|
|
|
331
331
|
|
|
332
332
|
export class Factory<E extends Env = Env, P extends string = string> {
|
|
333
333
|
private initApp?: InitApp<E>
|
|
334
|
-
#defaultAppOptions?:
|
|
334
|
+
#defaultAppOptions?: AcrylOptions<E>
|
|
335
335
|
|
|
336
|
-
constructor(init?: { initApp?: InitApp<E>; defaultAppOptions?:
|
|
336
|
+
constructor(init?: { initApp?: InitApp<E>; defaultAppOptions?: AcrylOptions<E> }) {
|
|
337
337
|
this.initApp = init?.initApp
|
|
338
338
|
this.#defaultAppOptions = init?.defaultAppOptions
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
-
createApp = (options?:
|
|
342
|
-
const app = new
|
|
341
|
+
createApp = (options?: AcrylOptions<E>): Acryl<E> => {
|
|
342
|
+
const app = new Acryl<E>(
|
|
343
343
|
(options && this.#defaultAppOptions
|
|
344
344
|
? { ...this.#defaultAppOptions, ...options }
|
|
345
|
-
: (options ?? this.#defaultAppOptions)) as
|
|
345
|
+
: (options ?? this.#defaultAppOptions)) as AcrylOptions<E>
|
|
346
346
|
)
|
|
347
347
|
if (this.initApp) {
|
|
348
348
|
this.initApp(app)
|
|
@@ -362,7 +362,7 @@ export class Factory<E extends Env = Env, P extends string = string> {
|
|
|
362
362
|
|
|
363
363
|
export const createFactory = <E extends Env = Env, P extends string = string>(init?: {
|
|
364
364
|
initApp?: InitApp<E>
|
|
365
|
-
defaultAppOptions?:
|
|
365
|
+
defaultAppOptions?: AcrylOptions<E>
|
|
366
366
|
}): Factory<E, P> => new Factory<E, P>(init)
|
|
367
367
|
|
|
368
368
|
export const createMiddleware = <
|
|
@@ -49,10 +49,10 @@ describe('Tagged Template Literals', () => {
|
|
|
49
49
|
|
|
50
50
|
describe('HtmlEscapedString', () => {
|
|
51
51
|
it('Should preserve callbacks', async () => {
|
|
52
|
-
const name = raw('
|
|
52
|
+
const name = raw('Acryl', [
|
|
53
53
|
({ buffer }) => {
|
|
54
54
|
if (buffer) {
|
|
55
|
-
buffer[0] = buffer[0].replace('
|
|
55
|
+
buffer[0] = buffer[0].replace('Acryl', 'Acryl!')
|
|
56
56
|
}
|
|
57
57
|
return undefined
|
|
58
58
|
},
|
|
@@ -60,9 +60,9 @@ describe('Tagged Template Literals', () => {
|
|
|
60
60
|
const res = html`<p>I'm ${name}.</p>`
|
|
61
61
|
expect(res).toBeInstanceOf(Promise)
|
|
62
62
|
|
|
63
|
-
expect((await res).toString()).toBe("<p>I'm
|
|
63
|
+
expect((await res).toString()).toBe("<p>I'm Acryl.</p>")
|
|
64
64
|
expect(await resolveCallback(await res, HtmlEscapedCallbackPhase.Stringify, false, {})).toBe(
|
|
65
|
-
"<p>I'm
|
|
65
|
+
"<p>I'm Acryl!.</p>"
|
|
66
66
|
)
|
|
67
67
|
})
|
|
68
68
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { matchedRoutes, routePath, baseRoutePath, basePath } from './index.ts'
|
|
2
2
|
import { Context } from '../../context.ts'
|
|
3
|
-
import {
|
|
3
|
+
import { Acryl } from '../../app.ts'
|
|
4
4
|
|
|
5
5
|
const defaultContextOptions = {
|
|
6
6
|
executionCtx: {
|
|
@@ -192,10 +192,10 @@ describe('basePath', () => {
|
|
|
192
192
|
})
|
|
193
193
|
|
|
194
194
|
it('should return the fully expanded basePath for nested route() apps', async () => {
|
|
195
|
-
const app = new
|
|
196
|
-
const sub1 = new
|
|
197
|
-
const sub2 = new
|
|
198
|
-
const sub3 = new
|
|
195
|
+
const app = new Acryl()
|
|
196
|
+
const sub1 = new Acryl()
|
|
197
|
+
const sub2 = new Acryl()
|
|
198
|
+
const sub3 = new Acryl()
|
|
199
199
|
|
|
200
200
|
sub3.get('/assets/*', (c) => c.json({ baseRoutePath: baseRoutePath(c), basePath: basePath(c) }))
|
|
201
201
|
sub2.route('/:app/sub3/assets', sub3)
|
|
@@ -239,8 +239,8 @@ describe('basePath', () => {
|
|
|
239
239
|
})
|
|
240
240
|
|
|
241
241
|
it('should return basePath with custom regex pattern mounted with app.route()', async () => {
|
|
242
|
-
const app = new
|
|
243
|
-
const subApp = new
|
|
242
|
+
const app = new Acryl()
|
|
243
|
+
const subApp = new Acryl()
|
|
244
244
|
|
|
245
245
|
subApp.get('/posts/:id', (c) => c.text(basePath(c)))
|
|
246
246
|
app.route('/api/:version{v[0-9]+}', subApp)
|
|
@@ -11,7 +11,7 @@ import { getPattern, splitRoutingPath } from '../../utils/url.ts'
|
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```ts
|
|
14
|
-
* import { matchedRoutes } from '
|
|
14
|
+
* import { matchedRoutes } from 'acrylblends/route'
|
|
15
15
|
*
|
|
16
16
|
* app.use('*', async function logger(c, next) {
|
|
17
17
|
* await next()
|
|
@@ -42,7 +42,7 @@ export const matchedRoutes = (c: Context): RouterRoute[] =>
|
|
|
42
42
|
*
|
|
43
43
|
* @example
|
|
44
44
|
* ```ts
|
|
45
|
-
* import { routePath } from '
|
|
45
|
+
* import { routePath } from 'acrylblends/route'
|
|
46
46
|
*
|
|
47
47
|
* app.use('*', (c, next) => {
|
|
48
48
|
* console.log(routePath(c)) // '*'
|
|
@@ -67,11 +67,11 @@ export const routePath = (c: Context, index?: number): string =>
|
|
|
67
67
|
*
|
|
68
68
|
* @example
|
|
69
69
|
* ```ts
|
|
70
|
-
* import { baseRoutePath } from '
|
|
70
|
+
* import { baseRoutePath } from 'acrylblends/route'
|
|
71
71
|
*
|
|
72
|
-
* const app = new
|
|
72
|
+
* const app = new Acryl()
|
|
73
73
|
*
|
|
74
|
-
* const subApp = new
|
|
74
|
+
* const subApp = new Acryl()
|
|
75
75
|
* subApp.get('/posts/:id', (c) => {
|
|
76
76
|
* return c.text(baseRoutePath(c)) // '/:sub'
|
|
77
77
|
* })
|
|
@@ -91,11 +91,11 @@ export const baseRoutePath = (c: Context, index?: number): string =>
|
|
|
91
91
|
*
|
|
92
92
|
* @example
|
|
93
93
|
* ```ts
|
|
94
|
-
* import { basePath } from '
|
|
94
|
+
* import { basePath } from 'acrylblends/route'
|
|
95
95
|
*
|
|
96
|
-
* const app = new
|
|
96
|
+
* const app = new Acryl()
|
|
97
97
|
*
|
|
98
|
-
* const subApp = new
|
|
98
|
+
* const subApp = new Acryl()
|
|
99
99
|
* subApp.get('/posts/:id', (c) => {
|
|
100
100
|
* return c.text(basePath(c)) // '/requested-sub-app-path'
|
|
101
101
|
* })
|