[workspace] members = [ "lib/*", "app/*" ] resolver = "3" [workspace.package] version = "1.0.0" edition = "2024" [workspace.dependencies] auth = { path = "lib/auth" } cache = { path = "lib/cache" } chat = { path = "lib/chat" } config = { path = "lib/config" } export = { path = "lib/export" } models = { path = "lib/models" } push = { path = "lib/push" } storage = { path = "lib/storage" } user = { path = "lib/user" } space = { path = "lib/space" } issues = { path = "lib/issues" } git = { path = "lib/git" } i18n = { path = "lib/i18n" } imaging = { path = "lib/imaging" } kenauth = { path = "lib/kenauth" } kenshell = { path = "lib/kenshell" } jwt = { path = "lib/jwt" } webapi = { path = "lib/webapi" } pulls = { path = "lib/pulls" } social = { path = "lib/social" } queue = { path = "lib/queue" } tokio = "1.53.1" serde = "1.0.229" serde_json = "1.0.151" axum = { version = "0.8.9", features = ["ws"] } tower = "0.5.3" tower-http = { version = "0.7.0", features = ["trace", "limit", "cors"] } axum-otel-metrics = "0.14.1" opentelemetry = "0.32" opentelemetry_sdk = { version = "0.32.1", features = ["rt-tokio", "trace"] } opentelemetry-http = "0.32" # reqwest-rustls: the default client feature set compiles reqwest with no TLS backend, # so an https OTEL_EXPORTER_OTLP_ENDPOINT would fail every export at request time. opentelemetry-otlp = { version = "0.32", features = ["reqwest-rustls"] } tracing-opentelemetry = "0.33" image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp", "gif"] } tracing = "0.1.44" figment = { version = "0.10", features = ["toml", "env"] } dotenvy = "0.15" rust-s3-async = "0.35.0" redis = { version = "1.6.0", features = ["aio", "tokio-comp", "connection-manager", "cluster-async"] } sea-orm = { version = "2.0.2", features = ["sqlx-postgres", "runtime-tokio-rustls"] } async-trait = "0.1.92" base64 = "0.23.1" rand = "0.8" sha2 = "0.11.0" hmac = "0.13" hkdf = "0.13" uuid = { version = "1", features = ["v7", "serde"] } argon2 = "0.6.0" aes-gcm = "0.10" time = { version = "0.3", features = ["serde", "serde-human-readable"] } bytes = "1" futures = "0.3" http = "0.2" http-body-util = "0.1" tokio-util = { version = "0.7", features = ["io"] } flate2 = "1" globset = "0.4" utoipa = { version = "5.5", features = ["axum_extras", "time", "uuid"] } utoipa-swagger-ui = { version = "9", features = ["axum"] } thiserror = "2.0.20" hayro = { version = "0.7.1", features = ["embed-fonts", "embed-cmaps"] } maud = { version = "0.27", features = ["axum"] } pulldown-cmark = { version = "0.13", default-features = false, features = ["html"] } reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json", "gzip", "brotli", "deflate"] } livekit-api = { version = "0.7.1", default-features = false, features = ["services", "webhooks", "rustls-tls-webpki-roots"] } livekit-protocol = "0.7.13" anyhow = "1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } jsonwebtoken = "9" regex = "1" url = "2" percent-encoding = "2" encoding_rs = "0.8" tonic = { version = "0.14", default-features = false, features = ["channel", "codegen", "router", "server"] } tonic-prost = "0.14" prost = "0.14" prost-types = "0.14" tonic-prost-build = "0.14" rocketmq-client-rust = "0.9.0" rocketmq-common = "0.9.0"