[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.2" 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", "ruma-signatures?/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-msc3954", "unstable-msc3955", ] 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-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-msc3723 = ["ruma-federation-api?/unstable-msc3723"] unstable-msc3927 = ["ruma-common/unstable-msc3927"] unstable-msc3931 = ["ruma-common/unstable-msc3931"] unstable-msc3932 = ["ruma-common/unstable-msc3932"] unstable-msc3954 = ["ruma-common/unstable-msc3954"] unstable-msc3955 = ["ruma-common/unstable-msc3955"] unstable-msc3956 = ["ruma-common/unstable-msc3956"] 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-msc3202", "unstable-msc3245", "unstable-msc3246", "unstable-msc3381", "unstable-msc3488", "unstable-msc3551", "unstable-msc3552", "unstable-msc3553", "unstable-msc3554", "unstable-msc3575", "unstable-msc3618", "unstable-msc3723", "unstable-msc3927", "unstable-msc3932", "unstable-msc3954", "unstable-msc3955", "unstable-msc3956", ] [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 }