[package]
edition = "2024"
rust-version = "1.88"
name = "matrix-sdk"
version = "0.16.1"
authors = ["Damir Jelić <poljar@termina.org.uk>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A high level Matrix client-server library."
homepage = "https://github.com/matrix-org/matrix-rust-sdk"
readme = "README.md"
keywords = [
"matrix",
"chat",
"messaging",
"ruma",
"nio",
]
license = "Apache-2.0"
repository = "https://github.com/matrix-org/matrix-rust-sdk"
[package.metadata.docs.rs]
features = ["docsrs"]
rustdoc-args = [
"--cfg",
"docsrs",
"--generate-link-to-definition",
]
[features]
automatic-room-key-forwarding = [
"e2e-encryption",
"matrix-sdk-base/automatic-room-key-forwarding",
]
bundled-sqlite = [
"sqlite",
"matrix-sdk-sqlite?/bundled",
]
default = [
"e2e-encryption",
"automatic-room-key-forwarding",
"sqlite",
"native-tls",
]
docsrs = [
"e2e-encryption",
"sqlite",
"indexeddb",
"sso-login",
"qrcode",
"federation-api",
]
e2e-encryption = [
"matrix-sdk-base/e2e-encryption",
"matrix-sdk-sqlite?/crypto-store",
"matrix-sdk-indexeddb?/e2e-encryption",
]
experimental-element-recent-emojis = ["matrix-sdk-base/experimental-element-recent-emojis"]
experimental-encrypted-state-events = [
"e2e-encryption",
"matrix-sdk-base/experimental-encrypted-state-events",
"matrix-sdk-sqlite/experimental-encrypted-state-events",
]
experimental-search = ["matrix-sdk-search"]
experimental-send-custom-to-device = [
"e2e-encryption",
"matrix-sdk-base/experimental-send-custom-to-device",
]
experimental-widgets = [
"dep:uuid",
"experimental-send-custom-to-device",
]
federation-api = ["ruma/federation-api-c"]
indexeddb = ["matrix-sdk-indexeddb/state-store"]
js = [
"matrix-sdk-common/js",
"matrix-sdk-base/js",
]
local-server = [
"dep:axum",
"dep:rand",
"dep:tower",
]
markdown = ["ruma/markdown"]
native-tls = ["reqwest/native-tls"]
qrcode = [
"e2e-encryption",
"matrix-sdk-base/qrcode",
]
rustls-tls = ["reqwest/rustls-tls"]
socks = ["reqwest/socks"]
sqlite = [
"dep:matrix-sdk-sqlite",
"matrix-sdk-sqlite?/state-store",
"matrix-sdk-sqlite?/event-cache",
]
sso-login = ["local-server"]
testing = [
"matrix-sdk-sqlite?/testing",
"matrix-sdk-indexeddb?/testing",
"matrix-sdk-base/testing",
"wiremock",
"matrix-sdk-test",
"assert_matches2",
]
uniffi = [
"dep:uniffi",
"matrix-sdk-base/uniffi",
"dep:matrix-sdk-ffi-macros",
]
unstable-msc4274 = [
"ruma/unstable-msc4274",
"matrix-sdk-base/unstable-msc4274",
]
[lib]
name = "matrix_sdk"
path = "src/lib.rs"
[[test]]
name = "integration"
path = "tests/integration/main.rs"
required-features = ["testing"]
[dependencies.anyhow]
version = "1.0.100"
optional = true
[dependencies.anymap2]
version = "0.13.0"
[dependencies.aquamarine]
version = "0.6.0"
[dependencies.as_variant]
version = "1.3.0"
[dependencies.assert_matches2]
version = "0.1.2"
optional = true
[dependencies.async-channel]
version = "2.5.0"
[dependencies.async-stream]
version = "0.3.5"
[dependencies.async-trait]
version = "0.1.89"
[dependencies.axum]
version = "0.8.4"
optional = true
[dependencies.bytes]
version = "1.11.0"
[dependencies.bytesize]
version = "2.3.0"
[dependencies.cfg-if]
version = "1.0.4"
[dependencies.event-listener]
version = "5.4.1"
[dependencies.eyeball]
version = "0.8.8"
features = ["tracing"]
[dependencies.eyeball-im]
version = "0.8.0"
features = ["tracing"]
[dependencies.eyre]
version = "0.6.12"
optional = true
[dependencies.futures-core]
version = "0.3.31"
[dependencies.futures-util]
version = "0.3.31"
[dependencies.http]
version = "1.3.1"
[dependencies.imbl]
version = "6.1.0"
features = ["serde"]
[dependencies.indexmap]
version = "2.12.1"
[dependencies.itertools]
version = "0.14.0"
[dependencies.js_int]
version = "0.2.2"
[dependencies.language-tags]
version = "0.3.2"
[dependencies.matrix-sdk-base]
version = "0.16.1"
[dependencies.matrix-sdk-common]
version = "0.16.1"
[dependencies.matrix-sdk-ffi-macros]
version = "0.7.0"
optional = true
[dependencies.matrix-sdk-indexeddb]
version = "0.16.1"
optional = true
default-features = false
[dependencies.matrix-sdk-search]
version = "0.16.1"
optional = true
[dependencies.matrix-sdk-sqlite]
version = "0.16.1"
optional = true
default-features = false
[dependencies.matrix-sdk-test]
version = "0.16.1"
optional = true
[dependencies.mime]
version = "0.3.17"
[dependencies.mime2ext]
version = "0.1.54"
[dependencies.oauth2]
version = "5.0.0"
features = [
"reqwest",
"timing-resistant-secret-traits",
]
default-features = false
[dependencies.once_cell]
version = "1.21.3"
[dependencies.percent-encoding]
version = "2.3.2"
[dependencies.pin-project-lite]
version = "0.2.16"
[dependencies.rand]
version = "0.8.5"
optional = true
[dependencies.ruma]
version = "0.14.0"
features = [
"client-api-c",
"compat-upload-signatures",
"compat-arbitrary-length-ids",
"compat-tag-info",
"compat-encrypted-stickers",
"compat-lax-room-create-deser",
"compat-lax-room-topic-deser",
"unstable-msc3230",
"unstable-msc3401",
"unstable-msc3488",
"unstable-msc3489",
"unstable-msc4075",
"unstable-msc4140",
"unstable-msc4143",
"unstable-msc4171",
"unstable-msc4278",
"unstable-msc4286",
"unstable-msc4306",
"unstable-msc4308",
"unstable-msc4310",
"rand",
"unstable-msc2448",
"unstable-msc4191",
"unstable-msc3930",
"unstable-msc3245-v1-compat",
"unstable-msc4230",
"unstable-msc2967",
"unstable-msc4108",
"unstable-msc4278",
]
[dependencies.serde]
version = "1.0.228"
features = ["rc"]
[dependencies.serde_html_form]
version = "0.2.8"
[dependencies.serde_json]
version = "1.0.145"
[dependencies.sha2]
version = "0.10.9"
[dependencies.tempfile]
version = "3.23.0"
[dependencies.thiserror]
version = "2.0.17"
[dependencies.tokio-stream]
version = "0.1.17"
features = ["sync"]
[dependencies.tokio-util]
version = "0.7.17"
[dependencies.tower]
version = "0.5.2"
features = ["util"]
optional = true
[dependencies.tracing]
version = "0.1.41"
features = [
"std",
"attributes",
]
default-features = false
[dependencies.uniffi]
version = "0.30.0"
optional = true
[dependencies.url]
version = "2.5.7"
features = ["serde"]
[dependencies.urlencoding]
version = "2.1.3"
[dependencies.uuid]
version = "1.18.1"
features = [
"serde",
"v4",
]
optional = true
[dependencies.vodozemac]
version = "0.9.0"
features = ["insecure-pk-encryption"]
[dependencies.zeroize]
version = "1.8.2"
[dev-dependencies.anyhow]
version = "1.0.100"
[dev-dependencies.assert-json-diff]
version = "2.0.2"
[dev-dependencies.assert_matches]
version = "1.5.0"
[dev-dependencies.assert_matches2]
version = "0.1.2"
[dev-dependencies.dirs]
version = "6.0.0"
[dev-dependencies.futures-executor]
version = "0.3.31"
[dev-dependencies.insta]
version = "1.44.1"
features = [
"json",
"redactions",
]
[dev-dependencies.matrix-sdk-base]
version = "0.16.1"
features = ["testing"]
[dev-dependencies.matrix-sdk-test]
version = "0.16.1"
[dev-dependencies.matrix-sdk-test-utils]
version = "0.16.1"
[dev-dependencies.serde_urlencoded]
version = "0.7.1"
[dev-dependencies.similar-asserts]
version = "1.7.0"
[dev-dependencies.stream_assert]
version = "0.1.1"
[dev-dependencies.tokio-test]
version = "0.4.4"
[dev-dependencies.tracing-subscriber]
version = "0.3.20"
features = ["env-filter"]
[target.'cfg(not(target_family = "wasm"))'.dependencies.backon]
version = "1.6.0"
[target.'cfg(not(target_family = "wasm"))'.dependencies.reqwest]
version = "0.12.24"
features = [
"stream",
"gzip",
"http2",
]
default-features = false
[target.'cfg(not(target_family = "wasm"))'.dependencies.tokio]
version = "1.48.0"
features = [
"sync",
"fs",
"rt",
"macros",
]
default-features = false
[target.'cfg(not(target_family = "wasm"))'.dependencies.wiremock]
version = "0.6.5"
optional = true
[target.'cfg(not(target_family = "wasm"))'.dev-dependencies.proptest]
version = "1.6.0"
features = ["std"]
default-features = false
[target.'cfg(not(target_family = "wasm"))'.dev-dependencies.tokio]
version = "1.48.0"
features = [
"sync",
"rt-multi-thread",
"macros",
]
default-features = false
[target.'cfg(not(target_family = "wasm"))'.dev-dependencies.wiremock]
version = "0.6.5"
[target.'cfg(target_family = "wasm")'.dependencies.gloo-timers]
version = "0.3.0"
features = ["futures"]
[target.'cfg(target_family = "wasm")'.dependencies.reqwest]
version = "0.12.24"
features = [
"gzip",
"http2",
]
default-features = false
[target.'cfg(target_family = "wasm")'.dependencies.tokio]
version = "1.48.0"
features = [
"sync",
"macros",
]
default-features = false
[target.'cfg(target_family = "wasm")'.dev-dependencies.wasm-bindgen-test]
version = "0.3.55"
[lints.clippy]
assigning_clones = "allow"
box_default = "allow"
cloned_instead_of_copied = "warn"
dbg_macro = "warn"
inefficient_to_string = "warn"
macro_use_imports = "warn"
manual_let_else = "warn"
mut_mut = "warn"
needless_borrow = "warn"
nonstandard_macro_braces = "warn"
redundant_clone = "warn"
str_to_string = "warn"
todo = "warn"
unnecessary_semicolon = "warn"
unused_async = "warn"
[lints.rust]
rust_2018_idioms = "warn"
semicolon_in_expressions_from_macros = "warn"
trivial_casts = "warn"
trivial_numeric_casts = "warn"
unused_extern_crates = "warn"
unused_import_braces = "warn"
unused_qualifications = "warn"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(tarpaulin_include)",
"cfg(ruma_unstable_exhaustive_types)",
]