[workspace] default-members = ["crates/cli"] members = ["crates/*"] resolver = "2" # Updated in the CI with a `sed` command package.version = "0.14.1" package.license = "AGPL-3.0-only" package.authors = ["Element Backend Team"] package.edition = "2024" package.homepage = "https://element-hq.github.io/matrix-authentication-service/" package.repository = "https://github.com/element-hq/matrix-authentication-service/" [workspace.lints.rust] unsafe_code = "deny" [workspace.lints.clippy] # We use groups as good defaults, but with a lower priority so that we can override them all = { level = "deny", priority = -1 } pedantic = { level = "warn", priority = -1 } str_to_string = "deny" [workspace.lints.rustdoc] broken_intra_doc_links = "deny" [workspace.dependencies] # Workspace crates mas-axum-utils = { path = "./crates/axum-utils/", version = "=0.14.1" } mas-cli = { path = "./crates/cli/", version = "=0.14.1" } mas-config = { path = "./crates/config/", version = "=0.14.1" } mas-data-model = { path = "./crates/data-model/", version = "=0.14.1" } mas-email = { path = "./crates/email/", version = "=0.14.1" } mas-graphql = { path = "./crates/graphql/", version = "=0.14.1" } mas-handlers = { path = "./crates/handlers/", version = "=0.14.1" } mas-http = { path = "./crates/http/", version = "=0.14.1" } mas-i18n = { path = "./crates/i18n/", version = "=0.14.1" } mas-i18n-scan = { path = "./crates/i18n-scan/", version = "=0.14.1" } mas-iana = { path = "./crates/iana/", version = "=0.14.1" } mas-iana-codegen = { path = "./crates/iana-codegen/", version = "=0.14.1" } mas-jose = { path = "./crates/jose/", version = "=0.14.1" } mas-keystore = { path = "./crates/keystore/", version = "=0.14.1" } mas-listener = { path = "./crates/listener/", version = "=0.14.1" } mas-matrix = { path = "./crates/matrix/", version = "=0.14.1" } mas-matrix-synapse = { path = "./crates/matrix-synapse/", version = "=0.14.1" } mas-oidc-client = { path = "./crates/oidc-client/", version = "=0.14.1" } mas-policy = { path = "./crates/policy/", version = "=0.14.1" } mas-router = { path = "./crates/router/", version = "=0.14.1" } mas-spa = { path = "./crates/spa/", version = "=0.14.1" } mas-storage = { path = "./crates/storage/", version = "=0.14.1" } mas-storage-pg = { path = "./crates/storage-pg/", version = "=0.14.1" } mas-tasks = { path = "./crates/tasks/", version = "=0.14.1" } mas-templates = { path = "./crates/templates/", version = "=0.14.1" } mas-tower = { path = "./crates/tower/", version = "=0.14.1" } oauth2-types = { path = "./crates/oauth2-types/", version = "=0.14.1" } syn2mas = { path = "./crates/syn2mas", version = "=0.14.1" } # OpenAPI schema generation and validation [workspace.dependencies.aide] version = "0.14.2" features = ["axum", "axum-extra", "axum-json", "axum-query", "macros"] # An `Arc` that can be atomically updated [workspace.dependencies.arc-swap] version = "1.7.1" # GraphQL server [workspace.dependencies.async-graphql] version = "7.0.16" default-features = false features = ["chrono", "url", "tracing", "playground"] [workspace.dependencies.async-stream] version = "0.3.6" # Utility to write and implement async traits [workspace.dependencies.async-trait] version = "0.1.88" # High-level error handling [workspace.dependencies.anyhow] version = "1.0.97" # HTTP router [workspace.dependencies.axum] version = "0.8.3" # Extra utilities for Axum [workspace.dependencies.axum-extra] version = "0.10.1" features = ["cookie-private", "cookie-key-expansion", "typed-header"] # Constant-time base64 [workspace.dependencies.base64ct] version = "1.7.3" # Packed bitfields [workspace.dependencies.bitflags] version = "2.9.0" # Bytes [workspace.dependencies.bytes] version = "1.10.1" # UTF-8 paths [workspace.dependencies.camino] version = "1.1.9" # Memory optimisation for short strings [workspace.dependencies.compact_str] version = "0.9.0" # Time utilities [workspace.dependencies.chrono] version = "0.4.40" default-features = false features = ["serde", "clock"] # CLI argument parsing [workspace.dependencies.clap] version = "4.5.35" features = ["derive"] # Cron expressions [workspace.dependencies.cron] version = "0.15.0" # Elliptic curve cryptography [workspace.dependencies.elliptic-curve] version = "0.13.8" features = ["std", "pem", "sec1"] # Configuration loading [workspace.dependencies.figment] version = "0.10.19" features = ["env", "yaml", "test"] # Utilities for dealing with futures [workspace.dependencies.futures-util] version = "0.3.31" # Rate-limiting [workspace.dependencies.governor] version = "0.10.0" default-features = false features = ["std", "dashmap", "quanta"] # HTTP headers [workspace.dependencies.headers] version = "0.4.0" # Hex encoding and decoding [workspace.dependencies.hex] version = "0.4.3" # HTTP request/response [workspace.dependencies.http] version = "1.3.1" # HTTP body trait [workspace.dependencies.http-body] version = "1.0.1" # http-body utilities [workspace.dependencies.http-body-util] version = "0.1.3" # HTTP client and server [workspace.dependencies.hyper] version = "1.6.0" features = ["client", "http1", "http2"] # Additional Hyper utilties [workspace.dependencies.hyper-util] version = "0.1.11" features = [ "client", "server", "server-auto", "service", "http1", "http2", "tokio", ] # Hyper Rustls support [workspace.dependencies.hyper-rustls] version = "0.27.5" features = ["http1", "http2"] default-features = false # HashMap which preserves insertion order [workspace.dependencies.indexmap] version = "2.9.0" features = ["serde"] # Snapshot testing [workspace.dependencies.insta] version = "1.42.2" features = ["yaml", "json"] # Email sending [workspace.dependencies.lettre] version = "0.11.15" default-features = false features = [ "tokio1-rustls-tls", "hostname", "builder", "tracing", "pool", "smtp-transport", "sendmail-transport", ] # Templates [workspace.dependencies.minijinja] version = "2.9.0" features = ["loader", "json", "speedups", "unstable_machinery"] # Additional filters for minijinja [workspace.dependencies.minijinja-contrib] version = "2.9.0" features = ["pycompat"] # Utilities to deal with non-zero values [workspace.dependencies.nonzero_ext] version = "0.3.0" # K256 elliptic curve [workspace.dependencies.k256] version = "0.13.4" features = ["std"] # P256 elliptic curve [workspace.dependencies.p256] version = "0.13.2" features = ["std"] # P384 elliptic curve [workspace.dependencies.p384] version = "0.13.1" features = ["std"] # PEM file decoding [workspace.dependencies.pem-rfc7468] version = "0.7.0" features = ["std"] # PKCS#1 encoding [workspace.dependencies.pkcs1] version = "0.7.5" features = ["std"] # PKCS#8 encoding [workspace.dependencies.pkcs8] version = "0.10.2" features = ["std", "pkcs5", "encryption"] # Random values [workspace.dependencies.rand] version = "0.8.5" [workspace.dependencies.rand_chacha] version = "0.3.1" [workspace.dependencies.rand_core] version = "0.6.4" # High-level HTTP client [workspace.dependencies.reqwest] version = "0.12.15" default-features = false features = ["http2", "rustls-tls-manual-roots", "charset", "json", "socks"] # Matrix-related types [workspace.dependencies.ruma-common] version = "0.15.2" # TLS stack [workspace.dependencies.rustls] version = "0.23.26" # Use platform-specific verifier for TLS [workspace.dependencies.rustls-platform-verifier] version = "0.5.1" # JSON Schema generation [workspace.dependencies.schemars] version = "0.8.22" features = ["url", "chrono", "preserve_order"] # SHA-2 cryptographic hash algorithm [workspace.dependencies.sha2] version = "0.10.8" features = ["oid"] # Query builder [workspace.dependencies.sea-query] version = "0.32.3" features = ["derive", "attr", "with-uuid", "with-chrono", "postgres-array"] # Query builder [workspace.dependencies.sea-query-binder] version = "0.7.0" features = [ "sqlx", "sqlx-postgres", "with-uuid", "with-chrono", "postgres-array", ] # Sentry error tracking [workspace.dependencies.sentry] version = "0.37.0" default-features = false features = ["backtrace", "contexts", "panic", "tower", "reqwest"] # Sentry tower layer [workspace.dependencies.sentry-tower] version = "0.37.0" features = ["http"] # Sentry tracing integration [workspace.dependencies.sentry-tracing] version = "0.37.0" # Serialization and deserialization [workspace.dependencies.serde] version = "1.0.219" features = ["derive"] # Most of the time, if we need serde, we need derive # JSON serialization and deserialization [workspace.dependencies.serde_json] version = "1.0.140" features = ["preserve_order"] # SQL database support [workspace.dependencies.sqlx] version = "0.8.3" features = [ "runtime-tokio", "tls-rustls-aws-lc-rs", "postgres", "migrate", "chrono", "json", "uuid", "ipnetwork", ] # Custom error types [workspace.dependencies.thiserror] version = "2.0.12" [workspace.dependencies.thiserror-ext] version = "0.2.1" # Async runtime [workspace.dependencies.tokio] version = "1.44.2" features = ["full"] [workspace.dependencies.tokio-stream] version = "0.1.17" # Useful async utilities [workspace.dependencies.tokio-util] version = "0.7.14" features = ["rt"] # Tower services [workspace.dependencies.tower] version = "0.5.2" features = ["util"] # Tower HTTP layers [workspace.dependencies.tower-http] version = "0.6.2" features = ["cors", "fs", "add-extension", "set-header"] # Logging and tracing [workspace.dependencies.tracing] version = "0.1.41" [workspace.dependencies.tracing-subscriber] version = "0.3.19" # OpenTelemetry [workspace.dependencies.opentelemetry] version = "0.29.1" features = ["trace", "metrics"] [workspace.dependencies.opentelemetry-http] version = "0.29.0" features = ["reqwest"] [workspace.dependencies.opentelemetry-jaeger-propagator] version = "0.29.0" [workspace.dependencies.opentelemetry-otlp] version = "0.29.0" default-features = false features = ["trace", "metrics", "http-proto"] [workspace.dependencies.opentelemetry-prometheus] version = "0.29.1" [workspace.dependencies.opentelemetry-resource-detectors] version = "0.8.0" [workspace.dependencies.opentelemetry-semantic-conventions] version = "0.29.0" features = ["semconv_experimental"] [workspace.dependencies.opentelemetry-stdout] version = "0.29.0" features = ["trace", "metrics"] [workspace.dependencies.opentelemetry_sdk] version = "0.29.0" features = [ "experimental_trace_batch_span_processor_with_async_runtime", "experimental_metrics_periodicreader_with_async_runtime", "rt-tokio", ] [workspace.dependencies.tracing-opentelemetry] version = "0.30.0" default-features = false [workspace.dependencies.prometheus] version = "0.14.0" # URL manipulation [workspace.dependencies.url] version = "2.5.4" features = ["serde"] # ULID support [workspace.dependencies.ulid] version = "=1.1.4" # Pinned to the latest version which used rand 0.8 features = ["serde"] # HTTP mock server [workspace.dependencies.wiremock] version = "0.6.3" [profile.release] codegen-units = 1 # Reduce the number of codegen units to increase optimizations lto = true # Enable fat LTO # A few profile opt-level tweaks to make the test suite run faster [profile.dev.package] argon2.opt-level = 3 bcrypt.opt-level = 3 block-buffer.opt-level = 3 cranelift-codegen.opt-level = 3 digest.opt-level = 3 hmac.opt-level = 3 generic-array.opt-level = 3 num-bigint-dig.opt-level = 3 pbkdf2.opt-level = 3 rayon.opt-level = 3 regalloc2.opt-level = 3 sha2.opt-level = 3 sqlx-macros.opt-level = 3