[package]
name = "ruma-events"
version = "0.28.1"
description = "Serializable types for the events in the Matrix specification."
homepage = "https://ruma.dev/"
keywords = ["matrix", "chat", "messaging", "ruma"]
license = "MIT"
readme = "README.md"
repository = "https://github.com/ruma/ruma"
edition = "2021"
rust-version = { workspace = true }

[package.metadata.docs.rs]
all-features = true

[features]
canonical-json = ["ruma-common/canonical-json"]
html = ["dep:ruma-html"]
markdown = ["dep:pulldown-cmark"]
unstable-exhaustive-types = []
unstable-msc1767 = []
unstable-msc2448 = []
unstable-msc2747 = []
unstable-msc2867 = []
unstable-msc3061 = []
unstable-msc3245 = ["unstable-msc3246"]
# 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 = []
unstable-msc3246 = ["unstable-msc3927"]
unstable-msc3381 = ["unstable-msc1767"]
unstable-msc3401 = []
unstable-msc3488 = ["unstable-msc1767"]
unstable-msc3489 = ["unstable-msc3488"]
unstable-msc3551 = ["unstable-msc3956"]
unstable-msc3552 = ["unstable-msc3551"]
unstable-msc3553 = ["unstable-msc3552"]
unstable-msc3554 = ["unstable-msc1767"]
unstable-msc3927 = ["unstable-msc3551"]
unstable-msc3954 = ["unstable-msc1767"]
unstable-msc3955 = ["unstable-msc1767"]
unstable-msc3956 = ["unstable-msc1767"]
unstable-msc4075 = ["unstable-msc3401"]
unstable-msc4095 = []
unstable-msc4171 = []
unstable-pdu = []

# Allow some mandatory fields to be missing, defaulting them to an empty string
# in deserialization.
compat-empty-string-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 = []

# Allow TagInfo to contain a stringified floating-point value for the `order` field.
compat-tag-info = []

# Support encrypted stickers, as sent by several bridges.
# https://github.com/matrix-org/matrix-spec/issues/1667
compat-encrypted-stickers = []

[dependencies]
as_variant = { workspace = true }
indexmap = { version = "2.0.0", features = ["serde"] }
js_int = { workspace = true, features = ["serde"] }
js_option = "0.1.0"
percent-encoding = "2.1.0"
pulldown-cmark = { version = "0.12.1", optional = true, default-features = false, features = ["html"] }
regex = { version = "1.5.6", default-features = false, features = ["std", "perf"] }
ruma-common = { workspace = true }
ruma-html = { workspace = true, optional = true }
ruma-identifiers-validation = { workspace = true }
ruma-macros = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true, features = ["raw_value"] }
thiserror = { workspace = true }
tracing = { workspace = true, features = ["attributes"] }
url = { workspace = true }
web-time = { workspace = true }
wildmatch = "2.0.0"

# dev-dependencies can't be optional, so this is a regular dependency
criterion = { workspace = true, optional = true }

[dev-dependencies]
assert_matches2 = { workspace = true }
assign = { workspace = true }
http = { workspace = true }
maplit = { workspace = true }
trybuild = "1.0.71"

[[bench]]
name = "event_serde"
harness = false
required-features = ["criterion"]

[lints]
workspace = true
