ruma 0.8.1

Types and traits for working with the Matrix protocol.
Documentation
[package]
name = "ruma"
categories = ["api-bindings", "web-programming"]
keywords = ["matrix", "chat", "messaging", "ruma"]
description = "Types and traits for working with the Matrix protocol."
homepage = "https://www.ruma.io/"
repository = "https://github.com/ruma/ruma"
readme = "README.md"
license = "MIT"
version = "0.8.1"
edition = "2021"
rust-version = "1.64"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[features]
api = ["ruma-common/api"]
canonical-json = ["ruma-common/canonical-json"]
client = ["dep:ruma-client"]
events = ["ruma-common/events"]
server-util = ["dep:ruma-server-util"]
signatures = ["dep:ruma-signatures", "canonical-json"]
state-res = ["dep:ruma-state-res"]

# ruma-client feature flags
client-ext-client-api = ["client", "ruma-client?/client-api"]
client-hyper = ["client", "ruma-client?/hyper"]
client-hyper-native-tls = ["client", "ruma-client?/hyper-native-tls"]
client-isahc = ["client", "ruma-client?/isahc"]
client-reqwest = ["client", "ruma-client?/reqwest"]
client-reqwest-native-tls = ["client", "ruma-client?/reqwest-native-tls"]
client-reqwest-native-tls-vendored = ["client", "ruma-client?/reqwest-native-tls-vendored"]
client-reqwest-rustls-manual-roots = ["client", "ruma-client?/reqwest-rustls-manual-roots"]
client-reqwest-rustls-webpki-roots = ["client", "ruma-client?/reqwest-rustls-webpki-roots"]
client-reqwest-rustls-native-roots = ["client", "ruma-client?/reqwest-rustls-native-roots"]

appservice-api-c = ["api", "events", "dep:ruma-appservice-api", "ruma-appservice-api?/client"]
appservice-api-s = ["api", "events", "dep:ruma-appservice-api", "ruma-appservice-api?/server"]
appservice-api = ["appservice-api-c", "appservice-api-s"]

client-api-c = ["api", "events", "dep:ruma-client-api", "ruma-client-api?/client"]
client-api-s = ["api", "events", "dep:ruma-client-api", "ruma-client-api?/server"]
client-api = ["client-api-c", "client-api-s"]

federation-api-c = ["api", "signatures", "dep:ruma-federation-api", "ruma-federation-api?/client"]
federation-api-s = ["api", "signatures", "dep:ruma-federation-api", "ruma-federation-api?/server"]
federation-api = ["federation-api-c", "federation-api-s"]

identity-service-api-c = [
    "api",
    "dep:ruma-identity-service-api",
    "ruma-identity-service-api?/client",
]
identity-service-api-s = [
    "api",
    "dep:ruma-identity-service-api",
    "ruma-identity-service-api?/server",
]
identity-service-api = ["identity-service-api-c", "identity-service-api-s"]

push-gateway-api-c = ["api", "dep:ruma-push-gateway-api", "ruma-push-gateway-api?/client"]
push-gateway-api-s = ["api", "dep:ruma-push-gateway-api", "ruma-push-gateway-api?/server"]
push-gateway-api = ["push-gateway-api-c", "push-gateway-api-s"]

# Required for randomness, current system time in browser environments
js = ["ruma-common/js"]

# Convenience features
rand = ["ruma-common/rand"]
markdown = ["ruma-common/markdown"]

# Everything except compat, js and unstable features
full = [
    "api",
    "client",
    "client-ext-client-api",
    "events",
    "signatures",
    "state-res",
    "appservice-api",
    "client-api",
    "federation-api",
    "identity-service-api",
    "push-gateway-api",
    "rand",
    "markdown",
]

# Increase compatibility with other parts of the Matrix ecosystem, at the
# expense of weird behaviour where things deviate from the specification.
#
# For example, some mandatory string fields are defaulted to an empty string if
# missing with this feature.
compat = [
    "ruma-common/compat",
    "ruma-client-api?/compat",
    "ruma-federation-api?/compat",
]

# Specific compatibility for past ring public/private key documents.
ring-compat = ["dep:ruma-signatures", "ruma-signatures?/ring-compat"]

# unstable: by using any of these, you opt out of all semver guarantees Ruma
#           otherwise provides!
unstable-exhaustive-types = [
    "ruma-common/unstable-exhaustive-types",
    "ruma-appservice-api?/unstable-exhaustive-types",
    "ruma-client-api?/unstable-exhaustive-types",
    "ruma-federation-api?/unstable-exhaustive-types",
    "ruma-identity-service-api?/unstable-exhaustive-types",
    "ruma-push-gateway-api?/unstable-exhaustive-types",
    "ruma-state-res?/unstable-exhaustive-types"
]
unstable-extensible-events = [
    "unstable-msc3246",
    "unstable-msc3488",
    "unstable-msc3553",
]
unstable-msc1767 = ["ruma-common/unstable-msc1767"]
unstable-msc2246 = ["ruma-client-api?/unstable-msc2246"]
unstable-msc2409 = ["ruma-appservice-api?/unstable-msc2409"]
unstable-msc2448 = [
    "ruma-client-api?/unstable-msc2448",
    "ruma-common/unstable-msc2448",
    "ruma-federation-api?/unstable-msc2448"
]
unstable-msc2654 = ["ruma-client-api?/unstable-msc2654"]
unstable-msc2666 = ["ruma-client-api?/unstable-msc2666"]
unstable-msc2677 = [
    "ruma-client-api?/unstable-msc2677",
    "ruma-common/unstable-msc2677",
]
unstable-msc2746 = ["ruma-common/unstable-msc2746"]
unstable-msc2870 = ["ruma-common/unstable-msc2870"]
unstable-msc2965 = ["ruma-client-api?/unstable-msc2965"]
unstable-msc2967 = ["ruma-client-api?/unstable-msc2967"]
unstable-msc3030 = [
    "ruma-client-api?/unstable-msc3030",
    "ruma-federation-api?/unstable-msc3030",
]
unstable-msc3202 = ["ruma-appservice-api?/unstable-msc3202"]
unstable-msc3245 = ["ruma-common/unstable-msc3245"]
unstable-msc3246 = ["ruma-common/unstable-msc3246"]
unstable-msc3381 = ["ruma-common/unstable-msc3381"]
unstable-msc3488 = [
    "ruma-client-api?/unstable-msc3488",
    "ruma-common/unstable-msc3488",
]
unstable-msc3551 = ["ruma-common/unstable-msc3551"]
unstable-msc3552 = ["ruma-common/unstable-msc3552"]
unstable-msc3553 = ["ruma-common/unstable-msc3553"]
unstable-msc3554 = ["ruma-common/unstable-msc3554"]
unstable-msc3575 = ["ruma-client-api?/unstable-msc3575"]
unstable-msc3618 = ["ruma-federation-api?/unstable-msc3618"]
unstable-msc3706 = ["ruma-federation-api?/unstable-msc3706"]
unstable-msc3723 = ["ruma-federation-api?/unstable-msc3723"]
unstable-msc3783 = ["ruma-common/unstable-msc3783"]
unstable-msc3931 = ["ruma-common/unstable-msc3931"]
unstable-msc3932 = ["ruma-common/unstable-msc3932"]
unstable-pdu = ["ruma-common/unstable-pdu"]
unstable-sanitize = ["ruma-common/unstable-sanitize"]
unstable-unspecified = [
    "ruma-common/unstable-unspecified",
    "ruma-federation-api?/unstable-unspecified",
    "ruma-push-gateway-api?/unstable-unspecified",
]

# Private feature, only used in test / benchmarking code
__ci = [
    "full",
    "unstable-unspecified",
    "unstable-sanitize",
    "unstable-msc1767",
    "unstable-msc2246",
    "unstable-msc2409",
    "unstable-msc2448",
    "unstable-msc2654",
    "unstable-msc2666",
    "unstable-msc2677",
    "unstable-msc2746",
    "unstable-msc2870",
    "unstable-msc2965",
    "unstable-msc2967",
    "unstable-msc3030",
    "unstable-msc3202",
    "unstable-msc3245",
    "unstable-msc3246",
    "unstable-msc3381",
    "unstable-msc3488",
    "unstable-msc3551",
    "unstable-msc3552",
    "unstable-msc3553",
    "unstable-msc3554",
    "unstable-msc3575",
    "unstable-msc3618",
    "unstable-msc3706",
    "unstable-msc3723",
    "unstable-msc3783",
    "unstable-msc3932",
]

[dependencies]
assign = { workspace = true }
js_int = { workspace = true }
js_option = "0.1.1"

ruma-common = { workspace = true }

ruma-client = { workspace = true, optional = true }
ruma-server-util = { workspace = true, optional = true }
ruma-signatures = { workspace = true, optional = true }
ruma-state-res = { workspace = true, optional = true }

ruma-appservice-api = { workspace = true, optional = true }
ruma-client-api = { workspace = true, optional = true }
ruma-federation-api = { workspace = true, optional = true }
ruma-identity-service-api = { workspace = true, optional = true }
ruma-push-gateway-api = { workspace = true, optional = true }

[dev-dependencies]
serde = { workspace = true }