ruwuma/crates/ruma/Cargo.toml
Kévin Commaille ae3897cad8 identifiers: Allow to validate KeyId with any key name type
Use new trait bounds for KeyId to only allow specific types.
Change the KeyId validation to be generic over the key name type.
Remove the KeyName type and replace it with the more specific
ServerSigningKeyVersion.
2024-11-08 12:49:53 -05:00

363 lines
12 KiB
TOML

[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://ruma.dev/"
repository = "https://github.com/ruma/ruma"
readme = "README.md"
license = "MIT"
version = "0.10.1"
edition = "2021"
rust-version = { workspace = true }
[package.metadata.docs.rs]
all-features = true
[features]
api = ["ruma-common/api"]
canonical-json = ["ruma-common/canonical-json", "ruma-events?/canonical-json"]
client = ["dep:ruma-client"]
events = ["dep:ruma-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-reqwest = ["client", "ruma-client?/reqwest"]
client-reqwest-native-tls = ["client", "ruma-client?/reqwest-native-tls"]
client-reqwest-native-tls-alpn = ["client", "ruma-client?/reqwest-native-tls-alpn"]
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"]
identifiers-validation = ["dep:ruma-identifiers-validation"]
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-events?/markdown"]
html = ["dep:ruma-html", "ruma-events?/html"]
html-matrix = ["html", "ruma-html/matrix"]
# 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",
"html",
"html-matrix",
]
# Enable all compatibility hacks. Deprecated.
compat = [
"compat-server-signing-key-version",
"compat-user-id",
"compat-empty-string-null",
"compat-null",
"compat-optional",
"compat-unset-avatar",
"compat-get-3pids",
"compat-signature-id",
"compat-tag-info",
]
# Allow IDs to exceed 255 bytes.
compat-arbitrary-length-ids = ["ruma-common/compat-arbitrary-length-ids"]
# Don't validate `ServerSigningKeyVersion`.
compat-server-signing-key-version = ["ruma-common/compat-server-signing-key-version"]
# Allow some user IDs that are invalid even with the specified historical
# user ID scheme.
compat-user-id = ["ruma-common/compat-user-id"]
# Allow some mandatory fields in requests / responses to be missing, defaulting
# them to an empty string in deserialization.
compat-empty-string-null = [
"ruma-common/compat-empty-string-null",
"ruma-client-api?/compat-empty-string-null",
"ruma-events?/compat-empty-string-null",
"ruma-federation-api?/compat-empty-string-null",
]
# Allow certain fields to be `null` for compatibility, treating that the same as
# the field being absent.
compat-null = ["ruma-common/compat-null"]
# Allow certain fields to be absent even though the spec marks them as
# mandatory. Deserialization will yield a default value like an empty string.
compat-optional = [
"ruma-common/compat-optional",
"ruma-events?/compat-optional",
]
# Unset avatars by sending an empty string, same as what Element Web does, c.f.
# https://github.com/matrix-org/matrix-spec/issues/378#issuecomment-1055831264
compat-unset-avatar = ["ruma-client-api?/compat-unset-avatar"]
# Always serialize the threepids response field in `get_3pids::v3::Response`,
# even if its value is an empty list.
compat-get-3pids = ["ruma-client-api?/compat-get-3pids"]
# Accept `message` as an alias for `error` in `upload_signatures::v3::Failure`,
# since that's what Synapse sends.
compat-upload-signatures = ["ruma-client-api?/compat-upload-signatures"]
# Allow extra characters in signature IDs not allowed in the specification.
compat-signature-id = ["ruma-signatures?/compat-signature-id"]
# Allow TagInfo to contain a stringified floating-point value for the `order` field.
compat-tag-info = ["ruma-events?/compat-tag-info"]
# Support encrypted stickers, as sent by several bridges.
# https://github.com/matrix-org/matrix-spec/issues/1667
compat-encrypted-stickers = ["ruma-events?/compat-encrypted-stickers"]
# 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-signatures?/unstable-exhaustive-types",
"ruma-state-res?/unstable-exhaustive-types",
"ruma-events?/unstable-exhaustive-types",
]
unstable-extensible-events = [
"unstable-msc3246",
"unstable-msc3488",
"unstable-msc3553",
"unstable-msc3954",
"unstable-msc3955",
]
unstable-msc1767 = ["ruma-events?/unstable-msc1767"]
unstable-msc2409 = ["ruma-appservice-api?/unstable-msc2409"]
unstable-msc2448 = [
"ruma-client-api?/unstable-msc2448",
"ruma-events?/unstable-msc2448",
"ruma-federation-api?/unstable-msc2448",
]
unstable-msc2654 = ["ruma-client-api?/unstable-msc2654"]
unstable-msc2666 = ["ruma-client-api?/unstable-msc2666"]
unstable-msc2747 = ["ruma-events?/unstable-msc2747"]
unstable-msc2867 = ["ruma-events?/unstable-msc2867"]
unstable-msc2870 = ["ruma-common/unstable-msc2870"]
unstable-msc2965 = ["ruma-client-api?/unstable-msc2965"]
unstable-msc2967 = ["ruma-client-api?/unstable-msc2967"]
unstable-msc3026 = ["ruma-common/unstable-msc3026"]
unstable-msc3061 = ["ruma-events?/unstable-msc3061"]
unstable-msc3202 = ["ruma-appservice-api?/unstable-msc3202"]
unstable-msc3245 = ["ruma-events?/unstable-msc3245"]
# Support the m.room.message fallback fields from the first version of MSC3245,
# implemented in Element Web and documented at
# https://github.com/matrix-org/matrix-spec-proposals/blob/83f6c5b469c1d78f714e335dcaa25354b255ffa5/proposals/3245-voice-messages.md
unstable-msc3245-v1-compat = ["ruma-events?/unstable-msc3245-v1-compat"]
unstable-msc3246 = ["ruma-events?/unstable-msc3246"]
unstable-msc3266 = ["ruma-client-api?/unstable-msc3266"]
unstable-msc3381 = ["ruma-events?/unstable-msc3381"]
unstable-msc3401 = ["ruma-events?/unstable-msc3401"]
unstable-msc3488 = ["ruma-client-api?/unstable-msc3488", "ruma-events?/unstable-msc3488"]
unstable-msc3489 = ["ruma-events?/unstable-msc3489"]
unstable-msc3551 = ["ruma-events?/unstable-msc3551"]
unstable-msc3552 = ["ruma-events?/unstable-msc3552"]
unstable-msc3553 = ["ruma-events?/unstable-msc3553"]
unstable-msc3554 = ["ruma-events?/unstable-msc3554"]
unstable-msc3575 = ["ruma-client-api?/unstable-msc3575"]
unstable-msc3618 = ["ruma-federation-api?/unstable-msc3618"]
unstable-msc3723 = ["ruma-federation-api?/unstable-msc3723"]
unstable-msc3814 = ["ruma-client-api?/unstable-msc3814"]
unstable-msc3843 = ["ruma-client-api?/unstable-msc3843", "ruma-federation-api?/unstable-msc3843"]
unstable-msc3927 = ["ruma-events?/unstable-msc3927"]
unstable-msc3930 = ["ruma-common/unstable-msc3930"]
unstable-msc3931 = ["ruma-common/unstable-msc3931"]
unstable-msc3932 = ["ruma-common/unstable-msc3932"]
unstable-msc3954 = ["ruma-events?/unstable-msc3954"]
unstable-msc3955 = ["ruma-events?/unstable-msc3955"]
unstable-msc3956 = ["ruma-events?/unstable-msc3956"]
unstable-msc3983 = ["ruma-client-api?/unstable-msc3983"]
unstable-msc4075 = ["ruma-events?/unstable-msc4075"]
unstable-msc4095 = ["ruma-events?/unstable-msc4095"]
unstable-msc4108 = ["ruma-client-api?/unstable-msc4108"]
unstable-msc4121 = ["ruma-client-api?/unstable-msc4121"]
unstable-msc4125 = ["ruma-federation-api?/unstable-msc4125"]
unstable-msc4140 = ["ruma-client-api?/unstable-msc4140"]
unstable-msc4186 = ["ruma-client-api?/unstable-msc4186"]
unstable-msc4210 = ["ruma-common/unstable-msc4210"]
unstable-pdu = ["ruma-events?/unstable-pdu"]
unstable-unspecified = [
"ruma-common/unstable-unspecified",
"ruma-federation-api?/unstable-unspecified",
"ruma-push-gateway-api?/unstable-unspecified",
]
# Private features, only used in test / benchmarking code
__unstable-mscs = [
"unstable-msc1767",
"unstable-msc2409",
"unstable-msc2448",
"unstable-msc2654",
"unstable-msc2666",
"unstable-msc2747",
"unstable-msc2867",
"unstable-msc2870",
"unstable-msc2965",
"unstable-msc2967",
"unstable-msc3061",
"unstable-msc3202",
"unstable-msc3245",
"unstable-msc3245-v1-compat",
"unstable-msc3246",
"unstable-msc3266",
"unstable-msc3381",
"unstable-msc3401",
"unstable-msc3488",
"unstable-msc3489",
"unstable-msc3551",
"unstable-msc3552",
"unstable-msc3553",
"unstable-msc3554",
"unstable-msc3575",
"unstable-msc3618",
"unstable-msc3723",
"unstable-msc3814",
"unstable-msc3843",
"unstable-msc3927",
"unstable-msc3930",
"unstable-msc3931",
"unstable-msc3932",
"unstable-msc3954",
"unstable-msc3955",
"unstable-msc3956",
"unstable-msc3983",
"unstable-msc4075",
"unstable-msc4095",
"unstable-msc4108",
"unstable-msc4121",
"unstable-msc4125",
"unstable-msc4140",
"unstable-msc4186",
]
__ci = [
"full",
"compat-upload-signatures",
"__unstable-mscs",
"unstable-unspecified",
]
[dependencies]
assign = { workspace = true }
js_int = { workspace = true }
js_option = "0.1.1"
web-time = { workspace = true }
ruma-common = { workspace = true }
ruma-client = { workspace = true, optional = true }
ruma-events = { workspace = true, optional = true }
ruma-html = { 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-identifiers-validation = { workspace = true, optional = true }
ruma-push-gateway-api = { workspace = true, optional = true }
[dev-dependencies]
serde = { workspace = true }
[lints]
workspace = true