[workspace] default-members = ["crates/cli"] members = ["crates/*"] resolver = "2" # Updated in the CI with a `sed` command package.version = "0.12.0" package.license = "AGPL-3.0-only" package.authors = ["Element Backend Team"] package.edition = "2021" 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 = "forbid" [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.12.0" } mas-cli = { path = "./crates/cli/", version = "=0.12.0" } mas-config = { path = "./crates/config/", version = "=0.12.0" } mas-data-model = { path = "./crates/data-model/", version = "=0.12.0" } mas-email = { path = "./crates/email/", version = "=0.12.0" } mas-graphql = { path = "./crates/graphql/", version = "=0.12.0" } mas-handlers = { path = "./crates/handlers/", version = "=0.12.0" } mas-http = { path = "./crates/http/", version = "=0.12.0" } mas-i18n = { path = "./crates/i18n/", version = "=0.12.0" } mas-i18n-scan = { path = "./crates/i18n-scan/", version = "=0.12.0" } mas-iana = { path = "./crates/iana/", version = "=0.12.0" } mas-iana-codegen = { path = "./crates/iana-codegen/", version = "=0.12.0" } mas-jose = { path = "./crates/jose/", version = "=0.12.0" } mas-keystore = { path = "./crates/keystore/", version = "=0.12.0" } mas-listener = { path = "./crates/listener/", version = "=0.12.0" } mas-matrix = { path = "./crates/matrix/", version = "=0.12.0" } mas-matrix-synapse = { path = "./crates/matrix-synapse/", version = "=0.12.0" } mas-oidc-client = { path = "./crates/oidc-client/", version = "=0.12.0" } mas-policy = { path = "./crates/policy/", version = "=0.12.0" } mas-router = { path = "./crates/router/", version = "=0.12.0" } mas-spa = { path = "./crates/spa/", version = "=0.12.0" } mas-storage = { path = "./crates/storage/", version = "=0.12.0" } mas-storage-pg = { path = "./crates/storage-pg/", version = "=0.12.0" } mas-tasks = { path = "./crates/tasks/", version = "=0.12.0" } mas-templates = { path = "./crates/templates/", version = "=0.12.0" } mas-tower = { path = "./crates/tower/", version = "=0.12.0" } oauth2-types = { path = "./crates/oauth2-types/", version = "=0.12.0" } # OpenAPI schema generation and validation [workspace.dependencies.aide] version = "0.13.4" features = ["axum", "axum-headers", "macros"] # GraphQL server [workspace.dependencies.async-graphql] version = "7.0.11" features = ["chrono", "url", "tracing"] # Utility to write and implement async traits [workspace.dependencies.async-trait] version = "0.1.83" # High-level error handling [workspace.dependencies.anyhow] version = "1.0.91" # HTTP router [workspace.dependencies.axum] version = "0.7.7" # Extra utilities for Axum [workspace.dependencies.axum-extra] version = "0.9.4" features = ["cookie-private", "cookie-key-expansion", "typed-header"] # Bytes [workspace.dependencies.bytes] version = "1.8.0" # UTF-8 paths [workspace.dependencies.camino] version = "1.1.9" # Time utilities [workspace.dependencies.chrono] version = "0.4.38" default-features = false features = ["serde", "clock"] # CLI argument parsing [workspace.dependencies.clap] version = "4.5.20" features = ["derive"] # 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.7.0" # HTTP headers [workspace.dependencies.headers] version = "0.4.0" # HTTP request/response [workspace.dependencies.http] version = "1.1.0" # HTTP body trait [workspace.dependencies.http-body] version = "1.0.1" # http-body utilities [workspace.dependencies.http-body-util] version = "0.1.2" # HTTP client and server [workspace.dependencies.hyper] version = "1.5.0" features = ["client", "http1", "http2"] # Additional Hyper utilties [workspace.dependencies.hyper-util] version = "0.1.9" features = [ "client", "server", "server-auto", "service", "http1", "http2", "tokio", ] # Hyper Rustls support [workspace.dependencies.hyper-rustls] version = "0.27.3" features = ["http1", "http2"] default-features = false # Snapshot testing [workspace.dependencies.insta] version = "1.40.0" features = ["yaml", "json"] # Email sending [workspace.dependencies.lettre] version = "0.11.9" default-features = false features = [ "tokio1-rustls-tls", "hostname", "builder", "tracing", "pool", "smtp-transport", "sendmail-transport", ] # Templates [workspace.dependencies.minijinja] version = "2.4.0" features = ["loader", "json", "speedups", "unstable_machinery"] # Additional filters for minijinja [workspace.dependencies.minijinja-contrib] version = "2.3.1" features = ["pycompat"] # Utilities to deal with non-zero values [workspace.dependencies.nonzero_ext] version = "0.3.0" # Random values [workspace.dependencies.rand] version = "0.8.5" # High-level HTTP client [workspace.dependencies.reqwest] version = "0.12.8" default-features = false features = ["http2", "rustls-tls-manual-roots", "charset", "json", "socks"] # TLS stack [workspace.dependencies.rustls] version = "0.23.15" # Use platform-specific verifier for TLS [workspace.dependencies.rustls-platform-verifier] version = "0.3.4" # JSON Schema generation [workspace.dependencies.schemars] version = "0.8.21" features = ["url", "chrono", "preserve_order"] # Query builder [workspace.dependencies.sea-query] version = "0.32.0" 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.34.0" default-features = false features = ["backtrace", "contexts", "panic", "tower", "reqwest"] # Sentry tower layer [workspace.dependencies.sentry-tower] version = "0.34.0" features = ["http"] # Sentry tracing integration [workspace.dependencies.sentry-tracing] version = "0.34.0" # Serialization and deserialization [workspace.dependencies.serde] version = "1.0.213" features = ["derive"] # Most of the time, if we need serde, we need derive # JSON serialization and deserialization [workspace.dependencies.serde_json] version = "1.0.132" features = ["preserve_order"] # SQL database support [workspace.dependencies.sqlx] version = "0.8.2" features = [ "runtime-tokio", "tls-rustls-aws-lc-rs", "postgres", "migrate", "chrono", "json", "uuid", "ipnetwork", ] # Custom error types [workspace.dependencies.thiserror] version = "1.0.65" # Async runtime [workspace.dependencies.tokio] version = "1.41.0" features = ["full"] # Useful async utilities [workspace.dependencies.tokio-util] version = "0.7.12" features = ["rt"] # Tower services [workspace.dependencies.tower] version = "0.5.1" features = ["util"] # Tower HTTP layers [workspace.dependencies.tower-http] version = "0.6.1" features = ["cors", "fs", "add-extension", "set-header"] # Logging and tracing [workspace.dependencies.tracing] version = "0.1.40" [workspace.dependencies.tracing-subscriber] version = "0.3.18" # OpenTelemetry [workspace.dependencies.opentelemetry] version = "0.24.0" features = ["trace", "metrics"] [workspace.dependencies.opentelemetry-http] version = "0.13.0" features = ["reqwest"] [workspace.dependencies.opentelemetry-semantic-conventions] version = "0.16.0" [workspace.dependencies.tracing-opentelemetry] version = "0.25.0" default-features = false # URL manipulation [workspace.dependencies.url] version = "2.5.2" features = ["serde"] # ULID support [workspace.dependencies.ulid] version = "1.1.3" features = ["serde"] # HTTP mock server [workspace.dependencies.wiremock] version = "0.6.2" # 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