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.
363 lines
12 KiB
TOML
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
|