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
|
@@ -4,7 +4,7 @@ import { createServer } from 'node:http'
|
|
|
4
4
|
import type { AddressInfo } from 'node:net'
|
|
5
5
|
import { fileURLToPath } from 'node:url'
|
|
6
6
|
import { Context } from '@deepseek-ai/cordis'
|
|
7
|
-
import {
|
|
7
|
+
import { Acryl, apply as routerApply, connectionOf, name as routerName } from '../../acryl-router/src/index.ts'
|
|
8
8
|
import { streamSSE } from '../../acryl-router/src/helpers/index.ts'
|
|
9
9
|
import { afterEach, describe, expect, it } from 'vitest'
|
|
10
10
|
import * as nodeServer from '../src/index.ts'
|
|
@@ -42,7 +42,7 @@ const portIsFree = async (port: number): Promise<boolean> => {
|
|
|
42
42
|
describe('acryl-node-server', () => {
|
|
43
43
|
it('serves the router over a real socket with the peer and port as connection facts', async () => {
|
|
44
44
|
const ctx = await boot()
|
|
45
|
-
ctx.router.route('/', new
|
|
45
|
+
ctx.router.route('/', new Acryl().get('/who', c => c.json({ peer: connectionOf(c).remoteAddress, port: connectionOf(c).localPort })))
|
|
46
46
|
const body = await (await fetch(`${ctx.nodeServer.url}/who`)).json() as { peer: string, port: number }
|
|
47
47
|
expect(ctx.nodeServer.url).toMatch(/^http:\/\/127\.0\.0\.1:\d+$/u)
|
|
48
48
|
expect(body.port).toBe(ctx.nodeServer.port)
|
|
@@ -52,7 +52,7 @@ describe('acryl-node-server', () => {
|
|
|
52
52
|
|
|
53
53
|
it('hands a request body to the handler', async () => {
|
|
54
54
|
const ctx = await boot()
|
|
55
|
-
ctx.router.route('/', new
|
|
55
|
+
ctx.router.route('/', new Acryl().post('/echo', async c => c.json(await c.req.json())))
|
|
56
56
|
const response = await fetch(`${ctx.nodeServer.url}/echo`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: '{"n":1}' })
|
|
57
57
|
expect(await response.json()).toEqual({ n: 1 })
|
|
58
58
|
})
|
|
@@ -60,7 +60,7 @@ describe('acryl-node-server', () => {
|
|
|
60
60
|
it('serves files from disk through a mounted app', async () => {
|
|
61
61
|
const ctx = await boot()
|
|
62
62
|
const root = fileURLToPath(new URL('./adapter/assets', import.meta.url))
|
|
63
|
-
ctx.router.route('/', new
|
|
63
|
+
ctx.router.route('/', new Acryl().use('/static/*', nodeServer.serveStatic({ root })))
|
|
64
64
|
const found = await fetch(`${ctx.nodeServer.url}/static/plain.txt`)
|
|
65
65
|
expect(found.status).toBe(200)
|
|
66
66
|
expect(found.headers.get('content-type')).toBe('text/plain; charset=utf-8')
|
|
@@ -72,7 +72,7 @@ describe('acryl-node-server', () => {
|
|
|
72
72
|
const ctx = await boot()
|
|
73
73
|
let aborted!: () => void
|
|
74
74
|
const seen = new Promise<void>(resolve => { aborted = resolve })
|
|
75
|
-
ctx.router.route('/', new
|
|
75
|
+
ctx.router.route('/', new Acryl().get('/wait', c => new Promise<Response>(resolve => {
|
|
76
76
|
c.req.raw.signal.addEventListener('abort', () => { aborted(); resolve(new Response(null, { status: 499 })) }, { once: true })
|
|
77
77
|
})))
|
|
78
78
|
const client = new AbortController()
|
|
@@ -110,7 +110,7 @@ describe('acryl-node-server', () => {
|
|
|
110
110
|
|
|
111
111
|
it('on dispose ends open event streams and frees the port', async () => {
|
|
112
112
|
const ctx = await boot()
|
|
113
|
-
ctx.router.route('/', new
|
|
113
|
+
ctx.router.route('/', new Acryl().get('/events', c => streamSSE(c, async stream => {
|
|
114
114
|
await stream.writeSSE({ data: 'hello' })
|
|
115
115
|
await new Promise<void>(resolve => { stream.onAbort(resolve) })
|
|
116
116
|
})))
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"source": {
|
|
3
3
|
"repo": "acryldev/acryl",
|
|
4
4
|
"path": "plugins/acryl-node-server",
|
|
5
|
-
"commit": "
|
|
5
|
+
"commit": "f5151e7f0c4de3b81bddb5cc686b5ef329e48e1c"
|
|
6
6
|
},
|
|
7
7
|
"vendored": [
|
|
8
8
|
"src",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"LICENSE"
|
|
11
11
|
],
|
|
12
12
|
"rewrittenSpecifiers": 28,
|
|
13
|
-
"digest": "sha256:
|
|
13
|
+
"digest": "sha256:551c97b074171e63d4dd09ae7624b2c4cd15050e4a8021603bc2e2e95ab790b3",
|
|
14
14
|
"testsNotRun": {},
|
|
15
15
|
"notice": [
|
|
16
16
|
"LICENSE"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/** The typed client for an `
|
|
1
|
+
/** The typed client for an `Acryl`: request it with the route types the server declared. Runs in a browser or any fetch runtime, without Cordis. */
|
|
2
2
|
export * from './core/client/index.ts'
|
|
@@ -20,14 +20,14 @@ export interface RouterBindings {
|
|
|
20
20
|
readonly connection: ConnectionInfo
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
/** The `Env` of an `
|
|
23
|
+
/** The `Env` of an `Acryl` that wants `c.env.connection` typed: `new Acryl<RouterEnv>()`. */
|
|
24
24
|
export interface RouterEnv {
|
|
25
25
|
Bindings: RouterBindings
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
const NONE: ConnectionInfo = Object.freeze({})
|
|
29
29
|
|
|
30
|
-
/** The transport facts of this request; empty for an in-process call or an `
|
|
30
|
+
/** The transport facts of this request; empty for an in-process call or an `Acryl` run outside the router. */
|
|
31
31
|
export function connectionOf(c: Context): ConnectionInfo {
|
|
32
32
|
const env = c.env as Partial<RouterBindings> | undefined
|
|
33
33
|
return env?.connection ?? NONE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module
|
|
3
|
-
* This module is the base module for the
|
|
3
|
+
* This module is the base module for the Acryl object.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
@@ -43,14 +43,14 @@ const errorHandler: ErrorHandler = (err, c) => {
|
|
|
43
43
|
|
|
44
44
|
type GetPath<E extends Env> = (request: Request, options?: { env?: E['Bindings'] }) => string
|
|
45
45
|
|
|
46
|
-
export type
|
|
46
|
+
export type AcrylOptions<E extends Env> = {
|
|
47
47
|
/**
|
|
48
48
|
* `router` option specifies which router to use.
|
|
49
49
|
*
|
|
50
50
|
*
|
|
51
51
|
* @example
|
|
52
52
|
* ```ts
|
|
53
|
-
* const app = new
|
|
53
|
+
* const app = new Acryl({ router: new RegExpRouter() })
|
|
54
54
|
* ```
|
|
55
55
|
*/
|
|
56
56
|
router?: Router<[H, RouterRoute]>
|
|
@@ -69,7 +69,7 @@ export type AppOptions<E extends Env> = {
|
|
|
69
69
|
*
|
|
70
70
|
* @example
|
|
71
71
|
* ```ts
|
|
72
|
-
* const app = new
|
|
72
|
+
* const app = new Acryl({
|
|
73
73
|
* getPath: (req) =>
|
|
74
74
|
* '/' + req.headers.get('host') + req.url.replace(/^https?:\/\/[^/]+(\/[^?]*)/, '$1'),
|
|
75
75
|
* })
|
|
@@ -106,7 +106,7 @@ type MountOptions =
|
|
|
106
106
|
replaceRequest?: MountReplaceRequest | false
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
class
|
|
109
|
+
class Acryl<
|
|
110
110
|
E extends Env = Env,
|
|
111
111
|
S extends Schema = {},
|
|
112
112
|
BasePath extends string = '/',
|
|
@@ -135,7 +135,7 @@ class App<
|
|
|
135
135
|
|
|
136
136
|
routes: RouterRoute[] = []
|
|
137
137
|
|
|
138
|
-
constructor(options:
|
|
138
|
+
constructor(options: AcrylOptions<E> = {}) {
|
|
139
139
|
// Implementation of app.get(...handlers[]) or app.get(path, ...handlers[])
|
|
140
140
|
const allMethods = [...METHODS, METHOD_NAME_ALL_LOWERCASE]
|
|
141
141
|
allMethods.forEach((method) => {
|
|
@@ -186,8 +186,8 @@ class App<
|
|
|
186
186
|
this.getPath = (strict ?? true) ? (options.getPath ?? getPath) : getPathNoStrict
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
#clone():
|
|
190
|
-
const clone = new
|
|
189
|
+
#clone(): Acryl<E, S, BasePath, CurrentPath> {
|
|
190
|
+
const clone = new Acryl<E, S, BasePath, CurrentPath>({
|
|
191
191
|
router: this.router,
|
|
192
192
|
getPath: this.getPath,
|
|
193
193
|
})
|
|
@@ -202,17 +202,17 @@ class App<
|
|
|
202
202
|
private errorHandler: ErrorHandler = errorHandler
|
|
203
203
|
|
|
204
204
|
/**
|
|
205
|
-
* `.route()` allows grouping other
|
|
205
|
+
* `.route()` allows grouping other Acryl instance in routes.
|
|
206
206
|
*
|
|
207
207
|
*
|
|
208
208
|
* @param {string} path - base Path
|
|
209
|
-
* @param {
|
|
210
|
-
* @returns {
|
|
209
|
+
* @param {Acryl} app - other Acryl instance
|
|
210
|
+
* @returns {Acryl} routed Acryl instance
|
|
211
211
|
*
|
|
212
212
|
* @example
|
|
213
213
|
* ```ts
|
|
214
|
-
* const app = new
|
|
215
|
-
* const app2 = new
|
|
214
|
+
* const app = new Acryl()
|
|
215
|
+
* const app2 = new Acryl()
|
|
216
216
|
*
|
|
217
217
|
* app2.get("/user", (c) => c.text("user"))
|
|
218
218
|
* app.route("/api", app2) // GET /api/user
|
|
@@ -226,8 +226,8 @@ class App<
|
|
|
226
226
|
SubCurrentPath extends string,
|
|
227
227
|
>(
|
|
228
228
|
path: SubPath,
|
|
229
|
-
app:
|
|
230
|
-
):
|
|
229
|
+
app: Acryl<SubEnv, SubSchema, SubBasePath, SubCurrentPath>
|
|
230
|
+
): Acryl<E, MergeSchemaPath<SubSchema, MergePath<BasePath, SubPath>> | S, BasePath, CurrentPath> {
|
|
231
231
|
const subApp = this.basePath(path)
|
|
232
232
|
app.routes.map((r) => {
|
|
233
233
|
let handler
|
|
@@ -249,16 +249,16 @@ class App<
|
|
|
249
249
|
*
|
|
250
250
|
*
|
|
251
251
|
* @param {string} path - base Path
|
|
252
|
-
* @returns {
|
|
252
|
+
* @returns {Acryl} changed Acryl instance
|
|
253
253
|
*
|
|
254
254
|
* @example
|
|
255
255
|
* ```ts
|
|
256
|
-
* const api = new
|
|
256
|
+
* const api = new Acryl().basePath('/api')
|
|
257
257
|
* ```
|
|
258
258
|
*/
|
|
259
259
|
basePath<SubPath extends string>(
|
|
260
260
|
path: SubPath
|
|
261
|
-
):
|
|
261
|
+
): Acryl<E, S, MergePath<BasePath, SubPath>, MergePath<BasePath, SubPath>> {
|
|
262
262
|
const subApp = this.#clone()
|
|
263
263
|
subApp._basePath = mergePath(this._basePath, path)
|
|
264
264
|
return subApp
|
|
@@ -269,7 +269,7 @@ class App<
|
|
|
269
269
|
*
|
|
270
270
|
*
|
|
271
271
|
* @param {ErrorHandler} handler - request Handler for error
|
|
272
|
-
* @returns {
|
|
272
|
+
* @returns {Acryl} changed Acryl instance
|
|
273
273
|
*
|
|
274
274
|
* @example
|
|
275
275
|
* ```ts
|
|
@@ -279,7 +279,7 @@ class App<
|
|
|
279
279
|
* })
|
|
280
280
|
* ```
|
|
281
281
|
*/
|
|
282
|
-
onError = (handler: ErrorHandler<E>):
|
|
282
|
+
onError = (handler: ErrorHandler<E>): Acryl<E, S, BasePath, CurrentPath> => {
|
|
283
283
|
this.errorHandler = handler
|
|
284
284
|
return this
|
|
285
285
|
}
|
|
@@ -289,7 +289,7 @@ class App<
|
|
|
289
289
|
*
|
|
290
290
|
*
|
|
291
291
|
* @param {NotFoundHandler} handler - request handler for not-found
|
|
292
|
-
* @returns {
|
|
292
|
+
* @returns {Acryl} changed Acryl instance
|
|
293
293
|
*
|
|
294
294
|
* @example
|
|
295
295
|
* ```ts
|
|
@@ -298,13 +298,13 @@ class App<
|
|
|
298
298
|
* })
|
|
299
299
|
* ```
|
|
300
300
|
*/
|
|
301
|
-
notFound = (handler: NotFoundHandler<E>):
|
|
301
|
+
notFound = (handler: NotFoundHandler<E>): Acryl<E, S, BasePath, CurrentPath> => {
|
|
302
302
|
this.#notFoundHandler = handler
|
|
303
303
|
return this
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
/**
|
|
307
|
-
* `.mount()` allows you to mount applications built with other frameworks into your
|
|
307
|
+
* `.mount()` allows you to mount applications built with other frameworks into your Acryl application.
|
|
308
308
|
*
|
|
309
309
|
* @deprecated Use `mount()` from `acryl-router/mount` instead. `.mount()` will be removed in v5.
|
|
310
310
|
*
|
|
@@ -312,24 +312,24 @@ class App<
|
|
|
312
312
|
* @param {string} path - base Path
|
|
313
313
|
* @param {Function} applicationHandler - other Request Handler
|
|
314
314
|
* @param {MountOptions} [options] - options of `.mount()`
|
|
315
|
-
* @returns {
|
|
315
|
+
* @returns {Acryl} mounted Acryl instance
|
|
316
316
|
*
|
|
317
317
|
* @example
|
|
318
318
|
* ```ts
|
|
319
319
|
* import { Router as IttyRouter } from 'itty-router'
|
|
320
|
-
* import {
|
|
320
|
+
* import { Acryl } from 'acrylblends'
|
|
321
321
|
* // Create itty-router application
|
|
322
322
|
* const ittyRouter = IttyRouter()
|
|
323
323
|
* // GET /itty-router/hello
|
|
324
324
|
* ittyRouter.get('/hello', () => new Response('Hello from itty-router'))
|
|
325
325
|
*
|
|
326
|
-
* const app = new
|
|
326
|
+
* const app = new Acryl()
|
|
327
327
|
* app.mount('/itty-router', ittyRouter.handle)
|
|
328
328
|
* ```
|
|
329
329
|
*
|
|
330
330
|
* @example
|
|
331
331
|
* ```ts
|
|
332
|
-
* const app = new
|
|
332
|
+
* const app = new Acryl()
|
|
333
333
|
* // Send the request to another application without modification.
|
|
334
334
|
* app.mount('/app', anotherApp, {
|
|
335
335
|
* replaceRequest: (req) => req,
|
|
@@ -340,7 +340,7 @@ class App<
|
|
|
340
340
|
path: string,
|
|
341
341
|
applicationHandler: (request: Request, ...args: any) => Response | Promise<Response>,
|
|
342
342
|
options?: MountOptions
|
|
343
|
-
):
|
|
343
|
+
): Acryl<E, S, BasePath, CurrentPath> {
|
|
344
344
|
// handle options
|
|
345
345
|
let replaceRequest: MountReplaceRequest | undefined
|
|
346
346
|
let optionHandler: MountOptionHandler | undefined
|
|
@@ -541,4 +541,4 @@ class App<
|
|
|
541
541
|
}
|
|
542
542
|
}
|
|
543
543
|
|
|
544
|
-
export {
|
|
544
|
+
export { Acryl as AcrylBase }
|