From c3f9a3cb7047185c5cfcbebbf010379f968a3cfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Commaille?= <76261501+zecakeh@users.noreply.github.com> Date: Fri, 4 Mar 2022 12:45:07 +0100 Subject: [PATCH] common: Merge ruma-events into ruma-common --- CONTRIBUTING.md | 2 +- crates/ruma-appservice-api/Cargo.toml | 3 +- .../src/event/push_events.rs | 3 +- crates/ruma-client-api/Cargo.toml | 3 +- .../src/config/get_global_account_data.rs | 5 +- .../src/config/get_room_account_data.rs | 5 +- .../src/config/set_global_account_data.rs | 6 +- .../src/config/set_room_account_data.rs | 6 +- .../src/context/get_context.rs | 6 +- .../src/membership/get_member_events.rs | 3 +- .../src/message/get_message_events.rs | 6 +- .../src/message/send_message_event.rs | 6 +- .../src/push/get_notifications.rs | 5 +- .../ruma-client-api/src/room/create_room.rs | 15 +- .../src/room/get_room_event.rs | 3 +- .../src/search/search_events.rs | 6 +- crates/ruma-client-api/src/space.rs | 6 +- .../src/state/get_state_events.rs | 3 +- .../src/state/get_state_events_for_key.rs | 8 +- .../src/state/send_state_event.rs | 6 +- .../ruma-client-api/src/sync/sync_events.rs | 13 +- crates/ruma-client-api/src/tag/create_tag.rs | 3 +- crates/ruma-client-api/src/tag/get_tags.rs | 9 +- .../src/to_device/send_event_to_device.rs | 5 +- crates/ruma-common/Cargo.toml | 21 +- crates/ruma-common/README.md | 5 + .../benches/event_deserialize.rs | 3 +- .../src/lib.rs => ruma-common/src/events.rs} | 60 +- .../src => ruma-common/src/events}/_custom.rs | 2 +- .../src => ruma-common/src/events}/call.rs | 0 .../src/events}/call/answer.rs | 0 .../src/events}/call/candidates.rs | 0 .../src/events}/call/hangup.rs | 0 .../src/events}/call/invite.rs | 0 .../src => ruma-common/src/events}/direct.rs | 0 .../src => ruma-common/src/events}/dummy.rs | 0 .../src => ruma-common/src/events}/emote.rs | 2 +- .../src => ruma-common/src/events}/enums.rs | 6 +- .../src/events}/event_kinds.rs | 2 +- .../src => ruma-common/src/events}/file.rs | 2 +- .../src/events}/forwarded_room_key.rs | 0 .../src/events}/fully_read.rs | 0 .../src/events}/ignored_user_list.rs | 2 +- .../src => ruma-common/src/events}/key.rs | 0 .../src/events}/key/verification.rs | 0 .../src/events}/key/verification/accept.rs | 2 +- .../src/events}/key/verification/cancel.rs | 0 .../src/events}/key/verification/done.rs | 2 +- .../src/events}/key/verification/key.rs | 0 .../src/events}/key/verification/mac.rs | 0 .../src/events}/key/verification/ready.rs | 2 +- .../src/events}/key/verification/request.rs | 0 .../src/events}/key/verification/start.rs | 2 +- .../src => ruma-common/src/events}/message.rs | 2 +- .../src/events}/message/content_serde.rs | 0 .../src => ruma-common/src/events}/notice.rs | 2 +- .../src => ruma-common/src/events}/pdu.rs | 2 +- .../src => ruma-common/src/events}/policy.rs | 0 .../src/events}/policy/rule.rs | 0 .../src/events}/policy/rule/room.rs | 4 +- .../src/events}/policy/rule/server.rs | 2 +- .../src/events}/policy/rule/user.rs | 2 +- .../src/events}/presence.rs | 2 +- .../src/events}/push_rules.rs | 0 .../src/events}/reaction.rs | 0 .../src => ruma-common/src/events}/receipt.rs | 0 .../src/events}/relation.rs | 0 .../src => ruma-common/src/events}/room.rs | 0 .../src/events}/room/aliases.rs | 2 +- .../src/events}/room/avatar.rs | 0 .../src/events}/room/canonical_alias.rs | 2 +- .../src/events}/room/create.rs | 0 .../src/events}/room/encrypted.rs | 8 +- .../events}/room/encrypted/relation_serde.rs | 0 .../src/events}/room/encryption.rs | 2 +- .../src/events}/room/guest_access.rs | 0 .../src/events}/room/history_visibility.rs | 0 .../src/events}/room/join_rules.rs | 0 .../src/events}/room/member.rs | 13 +- .../src/events}/room/message.rs | 8 +- .../src/events}/room/message/content_serde.rs | 0 .../src/events}/room/message/feedback.rs | 0 .../events}/room/message/relation_serde.rs | 4 +- .../src/events}/room/message/reply.rs | 5 +- .../src/events}/room/name.rs | 2 +- .../src/events}/room/pinned_events.rs | 2 +- .../src/events}/room/power_levels.rs | 4 +- .../src/events}/room/redaction.rs | 2 +- .../src/events}/room/server_acl.rs | 2 +- .../src/events}/room/third_party_invite.rs | 0 .../src/events}/room/tombstone.rs | 0 .../src/events}/room/topic.rs | 0 .../src/events}/room_key.rs | 2 +- .../src/events}/room_key_request.rs | 0 .../src => ruma-common/src/events}/secret.rs | 0 .../src/events}/secret/request.rs | 0 .../src/events}/secret/send.rs | 0 .../src => ruma-common/src/events}/space.rs | 0 .../src/events}/space/child.rs | 0 .../src/events}/space/parent.rs | 0 .../src => ruma-common/src/events}/sticker.rs | 2 +- .../src => ruma-common/src/events}/tag.rs | 0 .../src => ruma-common/src/events}/typing.rs | 0 .../src/events}/unsigned.rs | 4 +- crates/ruma-common/src/lib.rs | 9 +- .../ruma-common/tests/api/ruma_api_macros.rs | 6 +- .../tests/api/ui/01-api-sanity-check.rs | 2 +- .../tests/events}/compat.rs | 2 +- .../tests/events}/enums.rs | 24 +- .../tests/events}/ephemeral_event.rs | 2 +- .../tests/events}/event.rs | 6 +- .../ruma-common/tests/events/event_content.rs | 7 + .../tests/events/event_content_enum.rs | 6 + .../tests/events}/event_enums.rs | 8 +- .../tests/events}/file.rs | 18 +- .../tests/events}/initial_state.rs | 2 +- .../tests/events}/message.rs | 16 +- .../tests/events}/message_event.rs | 16 +- crates/ruma-common/tests/events/mod.rs | 20 + .../tests => ruma-common/tests/events}/pdu.rs | 10 +- .../tests/events}/redacted.rs | 24 +- .../tests/events}/redaction.rs | 10 +- .../tests/events}/room_message.rs | 18 +- .../tests/events}/state_event.rs | 18 +- .../tests/events}/stripped.rs | 2 +- .../tests/events}/to_device.rs | 2 +- .../events}/ui/01-content-sanity-check.rs | 0 .../tests/events}/ui/02-no-event-type.rs | 0 .../tests/events}/ui/02-no-event-type.stderr | 0 .../tests/events}/ui/03-invalid-event-type.rs | 0 .../events}/ui/03-invalid-event-type.stderr | 0 .../tests/events}/ui/04-event-sanity-check.rs | 2 +- .../tests/events}/ui/05-named-fields.rs | 2 +- .../tests/events}/ui/05-named-fields.stderr | 0 .../tests/events}/ui/06-no-content-field.rs | 2 +- .../events}/ui/06-no-content-field.stderr | 0 .../tests/events}/ui/07-enum-sanity-check.rs | 0 .../tests/events}/ui/08-enum-invalid-path.rs | 0 .../events}/ui/08-enum-invalid-path.stderr | 4 +- .../tests/events}/ui/09-enum-invalid-kind.rs | 0 .../events}/ui/09-enum-invalid-kind.stderr | 0 crates/ruma-common/tests/tests.rs | 1 + crates/ruma-events/CHANGELOG.md | 544 ------------------ crates/ruma-events/Cargo.toml | 54 -- crates/ruma-events/README.md | 7 - crates/ruma-events/tests/event_content.rs | 7 - .../ruma-events/tests/event_content_enum.rs | 6 - crates/ruma-federation-api/Cargo.toml | 3 +- .../src/knock/send_knock.rs | 3 +- .../src/membership/create_invite/v1.rs | 7 +- .../src/membership/create_invite/v2.rs | 3 +- .../src/membership/create_leave_event/v1.rs | 7 +- crates/ruma-federation-api/src/space.rs | 6 +- .../src/thirdparty/exchange_invite.rs | 6 +- .../src/transactions/edu.rs | 2 +- crates/ruma-macros/src/events.rs | 4 +- crates/ruma-macros/src/events/event_parse.rs | 6 +- crates/ruma-macros/src/events/util.rs | 3 +- crates/ruma-macros/src/lib.rs | 8 +- crates/ruma-macros/src/serde.rs | 2 +- crates/ruma-push-gateway-api/Cargo.toml | 3 +- .../src/send_event_notification.rs | 5 +- crates/ruma-serde/src/lib.rs | 2 +- crates/ruma-state-res/Cargo.toml | 7 +- .../ruma-state-res/benches/state_res_bench.rs | 22 +- crates/ruma-state-res/src/event_auth.rs | 4 +- crates/ruma-state-res/src/lib.rs | 20 +- crates/ruma-state-res/src/state_event.rs | 3 +- crates/ruma-state-res/src/test_utils.rs | 20 +- crates/ruma/Cargo.toml | 25 +- crates/ruma/src/lib.rs | 2 +- xtask/src/ci.rs | 2 +- 172 files changed, 416 insertions(+), 945 deletions(-) rename crates/{ruma-events => ruma-common}/benches/event_deserialize.rs (98%) rename crates/{ruma-events/src/lib.rs => ruma-common/src/events.rs} (86%) rename crates/{ruma-events/src => ruma-common/src/events}/_custom.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/call.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/call/answer.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/call/candidates.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/call/hangup.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/call/invite.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/direct.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/dummy.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/emote.rs (96%) rename crates/{ruma-events/src => ruma-common/src/events}/enums.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/event_kinds.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/file.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/forwarded_room_key.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/fully_read.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/ignored_user_list.rs (96%) rename crates/{ruma-events/src => ruma-common/src/events}/key.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/key/verification.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/key/verification/accept.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/key/verification/cancel.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/key/verification/done.rs (98%) rename crates/{ruma-events/src => ruma-common/src/events}/key/verification/key.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/key/verification/mac.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/key/verification/ready.rs (98%) rename crates/{ruma-events/src => ruma-common/src/events}/key/verification/request.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/key/verification/start.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/message.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/message/content_serde.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/notice.rs (96%) rename crates/{ruma-events/src => ruma-common/src/events}/pdu.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/policy.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/policy/rule.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/policy/rule/room.rs (98%) rename crates/{ruma-events/src => ruma-common/src/events}/policy/rule/server.rs (92%) rename crates/{ruma-events/src => ruma-common/src/events}/policy/rule/user.rs (91%) rename crates/{ruma-events/src => ruma-common/src/events}/presence.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/push_rules.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/reaction.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/receipt.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/relation.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/aliases.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/room/avatar.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/canonical_alias.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/room/create.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/encrypted.rs (97%) rename crates/{ruma-events/src => ruma-common/src/events}/room/encrypted/relation_serde.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/encryption.rs (97%) rename crates/{ruma-events/src => ruma-common/src/events}/room/guest_access.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/history_visibility.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/join_rules.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/member.rs (98%) rename crates/{ruma-events/src => ruma-common/src/events}/room/message.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/room/message/content_serde.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/message/feedback.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/message/relation_serde.rs (98%) rename crates/{ruma-events/src => ruma-common/src/events}/room/message/reply.rs (98%) rename crates/{ruma-events/src => ruma-common/src/events}/room/name.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/room/pinned_events.rs (98%) rename crates/{ruma-events/src => ruma-common/src/events}/room/power_levels.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/room/redaction.rs (98%) rename crates/{ruma-events/src => ruma-common/src/events}/room/server_acl.rs (99%) rename crates/{ruma-events/src => ruma-common/src/events}/room/third_party_invite.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/tombstone.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room/topic.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/room_key.rs (98%) rename crates/{ruma-events/src => ruma-common/src/events}/room_key_request.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/secret.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/secret/request.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/secret/send.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/space.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/space/child.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/space/parent.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/sticker.rs (96%) rename crates/{ruma-events/src => ruma-common/src/events}/tag.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/typing.rs (100%) rename crates/{ruma-events/src => ruma-common/src/events}/unsigned.rs (98%) rename crates/{ruma-events/tests => ruma-common/tests/events}/compat.rs (92%) rename crates/{ruma-events/tests => ruma-common/tests/events}/enums.rs (94%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ephemeral_event.rs (99%) rename crates/{ruma-events/tests => ruma-common/tests/events}/event.rs (53%) create mode 100644 crates/ruma-common/tests/events/event_content.rs create mode 100644 crates/ruma-common/tests/events/event_content_enum.rs rename crates/{ruma-events/tests => ruma-common/tests/events}/event_enums.rs (89%) rename crates/{ruma-events/tests => ruma-common/tests/events}/file.rs (95%) rename crates/{ruma-events/tests => ruma-common/tests/events}/initial_state.rs (88%) rename crates/{ruma-events/tests => ruma-common/tests/events}/message.rs (97%) rename crates/{ruma-events/tests => ruma-common/tests/events}/message_event.rs (95%) create mode 100644 crates/ruma-common/tests/events/mod.rs rename crates/{ruma-events/tests => ruma-common/tests/events}/pdu.rs (98%) rename crates/{ruma-events/tests => ruma-common/tests/events}/redacted.rs (93%) rename crates/{ruma-events/tests => ruma-common/tests/events}/redaction.rs (91%) rename crates/{ruma-events/tests => ruma-common/tests/events}/room_message.rs (96%) rename crates/{ruma-events/tests => ruma-common/tests/events}/state_event.rs (96%) rename crates/{ruma-events/tests => ruma-common/tests/events}/stripped.rs (99%) rename crates/{ruma-events/tests => ruma-common/tests/events}/to_device.rs (91%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/01-content-sanity-check.rs (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/02-no-event-type.rs (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/02-no-event-type.stderr (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/03-invalid-event-type.rs (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/03-invalid-event-type.stderr (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/04-event-sanity-check.rs (91%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/05-named-fields.rs (75%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/05-named-fields.stderr (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/06-no-content-field.rs (78%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/06-no-content-field.stderr (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/07-enum-sanity-check.rs (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/08-enum-invalid-path.rs (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/08-enum-invalid-path.stderr (64%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/09-enum-invalid-kind.rs (100%) rename crates/{ruma-events/tests => ruma-common/tests/events}/ui/09-enum-invalid-kind.stderr (100%) delete mode 100644 crates/ruma-events/CHANGELOG.md delete mode 100644 crates/ruma-events/Cargo.toml delete mode 100644 crates/ruma-events/README.md delete mode 100644 crates/ruma-events/tests/event_content.rs delete mode 100644 crates/ruma-events/tests/event_content_enum.rs diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 770c2641..6a4c5c8a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -103,7 +103,7 @@ should generally be implemented by creating or using a more constrained type tha that field – for example, we have a number of identifier types but the Matrix spec uses `string` for fields that hold user IDs / room IDs and so on. -Almost all types in `ruma-events` and the API crates use the `#[non_exhaustive]` attribute, to allow +Almost all types in `ruma-common` and the API crates use the `#[non_exhaustive]` attribute, to allow us to adapt to new minor releases of the Matrix specification without having a major release of our crates. You can generally just apply `#[non_exhaustive]` to everything – it's a backwards compatible change to remove it in the rare case it is not warranted. diff --git a/crates/ruma-appservice-api/Cargo.toml b/crates/ruma-appservice-api/Cargo.toml index 872fde6d..2de31fa2 100644 --- a/crates/ruma-appservice-api/Cargo.toml +++ b/crates/ruma-appservice-api/Cargo.toml @@ -21,8 +21,7 @@ server = [] [dependencies] ruma-client-api = { version = "0.13.0", path = "../ruma-client-api", features = ["client"], optional = true } -ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["api"] } -ruma-events = { version = "0.26.0", path = "../ruma-events" } +ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["api", "events"] } ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers" } ruma-serde = { version = "0.6.0", path = "../ruma-serde" } serde = { version = "1.0.118", features = ["derive"] } diff --git a/crates/ruma-appservice-api/src/event/push_events.rs b/crates/ruma-appservice-api/src/event/push_events.rs index 83761ebb..14ee9ad5 100644 --- a/crates/ruma-appservice-api/src/event/push_events.rs +++ b/crates/ruma-appservice-api/src/event/push_events.rs @@ -7,8 +7,7 @@ pub mod v1 { //! //! [spec]: https://spec.matrix.org/v1.2/application-service-api/#put_matrixappv1transactionstxnid - use ruma_common::api::ruma_api; - use ruma_events::AnyRoomEvent; + use ruma_common::{api::ruma_api, events::AnyRoomEvent}; use ruma_identifiers::TransactionId; use ruma_serde::Raw; diff --git a/crates/ruma-client-api/Cargo.toml b/crates/ruma-client-api/Cargo.toml index 10a84315..7db67d13 100644 --- a/crates/ruma-client-api/Cargo.toml +++ b/crates/ruma-client-api/Cargo.toml @@ -28,8 +28,7 @@ http = "0.2.2" js_int = { version = "0.2.0", features = ["serde"] } maplit = "1.0.2" percent-encoding = "2.1.0" -ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["api"] } -ruma-events = { version = "0.26.0", path = "../ruma-events" } +ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["api", "events"] } ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers" } ruma-serde = { version = "0.6.0", path = "../ruma-serde" } serde = { version = "1.0.118", features = ["derive"] } diff --git a/crates/ruma-client-api/src/config/get_global_account_data.rs b/crates/ruma-client-api/src/config/get_global_account_data.rs index db07a315..bf2baf34 100644 --- a/crates/ruma-client-api/src/config/get_global_account_data.rs +++ b/crates/ruma-client-api/src/config/get_global_account_data.rs @@ -5,8 +5,7 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3useruseridaccount_datatype - use ruma_common::api::ruma_api; - use ruma_events::AnyGlobalAccountDataEventContent; + use ruma_common::{api::ruma_api, events::AnyGlobalAccountDataEventContent}; use ruma_identifiers::UserId; use ruma_serde::Raw; @@ -35,7 +34,7 @@ pub mod v3 { response: { /// Account data content for the given type. /// - /// Use `ruma_events::RawExt` for deserialization. + /// Use `ruma_common::events::RawExt` for deserialization. #[ruma_api(body)] pub account_data: Raw, } diff --git a/crates/ruma-client-api/src/config/get_room_account_data.rs b/crates/ruma-client-api/src/config/get_room_account_data.rs index fbc1caf2..db0e6e61 100644 --- a/crates/ruma-client-api/src/config/get_room_account_data.rs +++ b/crates/ruma-client-api/src/config/get_room_account_data.rs @@ -5,8 +5,7 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3useruseridroomsroomidaccount_datatype - use ruma_common::api::ruma_api; - use ruma_events::AnyRoomAccountDataEventContent; + use ruma_common::{api::ruma_api, events::AnyRoomAccountDataEventContent}; use ruma_identifiers::{RoomId, UserId}; use ruma_serde::Raw; @@ -39,7 +38,7 @@ pub mod v3 { response: { /// Account data content for the given type. /// - /// Use `ruma_events::RawExt` for deserialization. + /// Use `ruma_common::events::RawExt` for deserialization. #[ruma_api(body)] pub account_data: Raw, } diff --git a/crates/ruma-client-api/src/config/set_global_account_data.rs b/crates/ruma-client-api/src/config/set_global_account_data.rs index f4586c46..7c91133f 100644 --- a/crates/ruma-client-api/src/config/set_global_account_data.rs +++ b/crates/ruma-client-api/src/config/set_global_account_data.rs @@ -5,8 +5,10 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#put_matrixclientv3useruseridaccount_datatype - use ruma_common::api::ruma_api; - use ruma_events::{AnyGlobalAccountDataEventContent, GlobalAccountDataEventContent}; + use ruma_common::{ + api::ruma_api, + events::{AnyGlobalAccountDataEventContent, GlobalAccountDataEventContent}, + }; use ruma_identifiers::UserId; use ruma_serde::Raw; use serde_json::value::to_raw_value as to_raw_json_value; diff --git a/crates/ruma-client-api/src/config/set_room_account_data.rs b/crates/ruma-client-api/src/config/set_room_account_data.rs index 78d6461e..4c7fe522 100644 --- a/crates/ruma-client-api/src/config/set_room_account_data.rs +++ b/crates/ruma-client-api/src/config/set_room_account_data.rs @@ -5,8 +5,10 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#put_matrixclientv3useruseridroomsroomidaccount_datatype - use ruma_common::api::ruma_api; - use ruma_events::{AnyRoomAccountDataEventContent, RoomAccountDataEventContent}; + use ruma_common::{ + api::ruma_api, + events::{AnyRoomAccountDataEventContent, RoomAccountDataEventContent}, + }; use ruma_identifiers::{RoomId, UserId}; use ruma_serde::Raw; use serde_json::value::to_raw_value as to_raw_json_value; diff --git a/crates/ruma-client-api/src/context/get_context.rs b/crates/ruma-client-api/src/context/get_context.rs index 62175b96..17d2f063 100644 --- a/crates/ruma-client-api/src/context/get_context.rs +++ b/crates/ruma-client-api/src/context/get_context.rs @@ -6,8 +6,10 @@ pub mod v3 { //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3roomsroomidcontexteventid use js_int::{uint, UInt}; - use ruma_common::api::ruma_api; - use ruma_events::{AnyRoomEvent, AnyStateEvent}; + use ruma_common::{ + api::ruma_api, + events::{AnyRoomEvent, AnyStateEvent}, + }; use ruma_identifiers::{EventId, RoomId}; use ruma_serde::Raw; diff --git a/crates/ruma-client-api/src/membership/get_member_events.rs b/crates/ruma-client-api/src/membership/get_member_events.rs index 5a2a3461..cc45bd94 100644 --- a/crates/ruma-client-api/src/membership/get_member_events.rs +++ b/crates/ruma-client-api/src/membership/get_member_events.rs @@ -5,8 +5,7 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3roomsroomidmembers - use ruma_common::api::ruma_api; - use ruma_events::room::member::RoomMemberEvent; + use ruma_common::{api::ruma_api, events::room::member::RoomMemberEvent}; use ruma_identifiers::RoomId; use ruma_serde::{Raw, StringEnum}; diff --git a/crates/ruma-client-api/src/message/get_message_events.rs b/crates/ruma-client-api/src/message/get_message_events.rs index 90d2a1f7..766ba92d 100644 --- a/crates/ruma-client-api/src/message/get_message_events.rs +++ b/crates/ruma-client-api/src/message/get_message_events.rs @@ -6,8 +6,10 @@ pub mod v3 { //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3roomsroomidmessages use js_int::{uint, UInt}; - use ruma_common::api::ruma_api; - use ruma_events::{AnyRoomEvent, AnyStateEvent}; + use ruma_common::{ + api::ruma_api, + events::{AnyRoomEvent, AnyStateEvent}, + }; use ruma_identifiers::RoomId; use ruma_serde::Raw; use serde::{Deserialize, Serialize}; diff --git a/crates/ruma-client-api/src/message/send_message_event.rs b/crates/ruma-client-api/src/message/send_message_event.rs index 9b548a8d..3344f4ac 100644 --- a/crates/ruma-client-api/src/message/send_message_event.rs +++ b/crates/ruma-client-api/src/message/send_message_event.rs @@ -5,8 +5,10 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#put_matrixclientv3roomsroomidsendeventtypetxnid - use ruma_common::api::ruma_api; - use ruma_events::{AnyMessageLikeEventContent, MessageLikeEventContent}; + use ruma_common::{ + api::ruma_api, + events::{AnyMessageLikeEventContent, MessageLikeEventContent}, + }; use ruma_identifiers::{EventId, RoomId, TransactionId}; use ruma_serde::Raw; use serde_json::value::to_raw_value as to_raw_json_value; diff --git a/crates/ruma-client-api/src/push/get_notifications.rs b/crates/ruma-client-api/src/push/get_notifications.rs index 64725671..ff539125 100644 --- a/crates/ruma-client-api/src/push/get_notifications.rs +++ b/crates/ruma-client-api/src/push/get_notifications.rs @@ -6,8 +6,9 @@ pub mod v3 { //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3notifications use js_int::UInt; - use ruma_common::{api::ruma_api, push::Action, MilliSecondsSinceUnixEpoch}; - use ruma_events::AnySyncRoomEvent; + use ruma_common::{ + api::ruma_api, events::AnySyncRoomEvent, push::Action, MilliSecondsSinceUnixEpoch, + }; use ruma_identifiers::RoomId; use ruma_serde::Raw; use serde::{Deserialize, Serialize}; diff --git a/crates/ruma-client-api/src/room/create_room.rs b/crates/ruma-client-api/src/room/create_room.rs index 11a66703..f1c37572 100644 --- a/crates/ruma-client-api/src/room/create_room.rs +++ b/crates/ruma-client-api/src/room/create_room.rs @@ -6,13 +6,16 @@ pub mod v3 { //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#post_matrixclientv3createroom use assign::assign; - use ruma_common::{api::ruma_api, room::RoomType}; - use ruma_events::{ - room::{ - create::{PreviousRoom, RoomCreateEventContent}, - power_levels::RoomPowerLevelsEventContent, + use ruma_common::{ + api::ruma_api, + events::{ + room::{ + create::{PreviousRoom, RoomCreateEventContent}, + power_levels::RoomPowerLevelsEventContent, + }, + AnyInitialStateEvent, }, - AnyInitialStateEvent, + room::RoomType, }; use ruma_identifiers::{RoomId, RoomName, RoomVersionId, UserId}; use ruma_serde::{Raw, StringEnum}; diff --git a/crates/ruma-client-api/src/room/get_room_event.rs b/crates/ruma-client-api/src/room/get_room_event.rs index 020ff131..0cf257e7 100644 --- a/crates/ruma-client-api/src/room/get_room_event.rs +++ b/crates/ruma-client-api/src/room/get_room_event.rs @@ -5,8 +5,7 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3roomsroomideventeventid - use ruma_common::api::ruma_api; - use ruma_events::AnyRoomEvent; + use ruma_common::{api::ruma_api, events::AnyRoomEvent}; use ruma_identifiers::{EventId, RoomId}; use ruma_serde::Raw; diff --git a/crates/ruma-client-api/src/search/search_events.rs b/crates/ruma-client-api/src/search/search_events.rs index 67911e3d..ee5205e3 100644 --- a/crates/ruma-client-api/src/search/search_events.rs +++ b/crates/ruma-client-api/src/search/search_events.rs @@ -8,8 +8,10 @@ pub mod v3 { use std::collections::BTreeMap; use js_int::{uint, UInt}; - use ruma_common::api::ruma_api; - use ruma_events::{AnyRoomEvent, AnyStateEvent}; + use ruma_common::{ + api::ruma_api, + events::{AnyRoomEvent, AnyStateEvent}, + }; use ruma_identifiers::{EventId, MxcUri, RoomId, UserId}; use ruma_serde::{Outgoing, Raw, StringEnum}; use serde::{Deserialize, Serialize}; diff --git a/crates/ruma-client-api/src/space.rs b/crates/ruma-client-api/src/space.rs index 1b1fec7b..5301070d 100644 --- a/crates/ruma-client-api/src/space.rs +++ b/crates/ruma-client-api/src/space.rs @@ -1,8 +1,10 @@ //! Endpoints for spaces. use js_int::UInt; -use ruma_common::{directory::PublicRoomJoinRule, room::RoomType}; -use ruma_events::space::child::HierarchySpaceChildStateEvent; +use ruma_common::{ + directory::PublicRoomJoinRule, events::space::child::HierarchySpaceChildStateEvent, + room::RoomType, +}; use ruma_identifiers::{MxcUri, RoomAliasId, RoomId, RoomName}; use ruma_serde::Raw; use serde::{Deserialize, Serialize}; diff --git a/crates/ruma-client-api/src/state/get_state_events.rs b/crates/ruma-client-api/src/state/get_state_events.rs index d16deb08..9ff13052 100644 --- a/crates/ruma-client-api/src/state/get_state_events.rs +++ b/crates/ruma-client-api/src/state/get_state_events.rs @@ -5,8 +5,7 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3roomsroomidstate - use ruma_common::api::ruma_api; - use ruma_events::AnyStateEvent; + use ruma_common::{api::ruma_api, events::AnyStateEvent}; use ruma_identifiers::RoomId; use ruma_serde::Raw; diff --git a/crates/ruma-client-api/src/state/get_state_events_for_key.rs b/crates/ruma-client-api/src/state/get_state_events_for_key.rs index 6cce72f9..f4aa91e2 100644 --- a/crates/ruma-client-api/src/state/get_state_events_for_key.rs +++ b/crates/ruma-client-api/src/state/get_state_events_for_key.rs @@ -5,8 +5,10 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3roomsroomidstateeventtypestatekey - use ruma_common::api::ruma_api; - use ruma_events::{AnyStateEventContent, EventType}; + use ruma_common::{ + api::ruma_api, + events::{AnyStateEventContent, EventType}, + }; use ruma_identifiers::RoomId; use ruma_serde::{Outgoing, Raw}; @@ -26,7 +28,7 @@ pub mod v3 { /// The content of the state event. /// /// Since the inner type of the `Raw` does not implement `Deserialize`, you need to use - /// `ruma_events::RawExt` to deserialize it. + /// `ruma_common::events::RawExt` to deserialize it. #[ruma_api(body)] pub content: Raw, } diff --git a/crates/ruma-client-api/src/state/send_state_event.rs b/crates/ruma-client-api/src/state/send_state_event.rs index dd7bdd16..e7e32511 100644 --- a/crates/ruma-client-api/src/state/send_state_event.rs +++ b/crates/ruma-client-api/src/state/send_state_event.rs @@ -5,8 +5,10 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#put_matrixclientv3roomsroomidstateeventtypestatekey - use ruma_common::api::ruma_api; - use ruma_events::{AnyStateEventContent, StateEventContent}; + use ruma_common::{ + api::ruma_api, + events::{AnyStateEventContent, StateEventContent}, + }; use ruma_identifiers::{EventId, RoomId}; use ruma_serde::{Outgoing, Raw}; use serde_json::value::to_raw_value as to_raw_json_value; diff --git a/crates/ruma-client-api/src/sync/sync_events.rs b/crates/ruma-client-api/src/sync/sync_events.rs index 3d2a87d3..af9a65f7 100644 --- a/crates/ruma-client-api/src/sync/sync_events.rs +++ b/crates/ruma-client-api/src/sync/sync_events.rs @@ -8,11 +8,14 @@ pub mod v3 { use std::{collections::BTreeMap, time::Duration}; use js_int::UInt; - use ruma_common::{api::ruma_api, presence::PresenceState}; - use ruma_events::{ - presence::PresenceEvent, AnyGlobalAccountDataEvent, AnyRoomAccountDataEvent, - AnyStrippedStateEvent, AnySyncEphemeralRoomEvent, AnySyncRoomEvent, AnySyncStateEvent, - AnyToDeviceEvent, + use ruma_common::{ + api::ruma_api, + events::{ + presence::PresenceEvent, AnyGlobalAccountDataEvent, AnyRoomAccountDataEvent, + AnyStrippedStateEvent, AnySyncEphemeralRoomEvent, AnySyncRoomEvent, AnySyncStateEvent, + AnyToDeviceEvent, + }, + presence::PresenceState, }; use ruma_identifiers::{DeviceKeyAlgorithm, RoomId, UserId}; use ruma_serde::{Outgoing, Raw}; diff --git a/crates/ruma-client-api/src/tag/create_tag.rs b/crates/ruma-client-api/src/tag/create_tag.rs index 9131c4a4..7d21ee4c 100644 --- a/crates/ruma-client-api/src/tag/create_tag.rs +++ b/crates/ruma-client-api/src/tag/create_tag.rs @@ -5,8 +5,7 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#put_matrixclientv3useruseridroomsroomidtagstag - use ruma_common::api::ruma_api; - use ruma_events::tag::TagInfo; + use ruma_common::{api::ruma_api, events::tag::TagInfo}; use ruma_identifiers::{RoomId, UserId}; ruma_api! { diff --git a/crates/ruma-client-api/src/tag/get_tags.rs b/crates/ruma-client-api/src/tag/get_tags.rs index 37ddcaa7..79db743d 100644 --- a/crates/ruma-client-api/src/tag/get_tags.rs +++ b/crates/ruma-client-api/src/tag/get_tags.rs @@ -5,8 +5,7 @@ pub mod v3 { //! //! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3useruseridroomsroomidtags - use ruma_common::api::ruma_api; - use ruma_events::tag::Tags; + use ruma_common::{api::ruma_api, events::tag::Tags}; use ruma_identifiers::{RoomId, UserId}; ruma_api! { @@ -56,8 +55,10 @@ pub mod v3 { #[cfg(all(test, feature = "server"))] mod server_tests { use assign::assign; - use ruma_common::api::OutgoingResponse; - use ruma_events::tag::{TagInfo, Tags}; + use ruma_common::{ + api::OutgoingResponse, + events::tag::{TagInfo, Tags}, + }; use serde_json::json; use super::Response; diff --git a/crates/ruma-client-api/src/to_device/send_event_to_device.rs b/crates/ruma-client-api/src/to_device/send_event_to_device.rs index 63479088..297422d9 100644 --- a/crates/ruma-client-api/src/to_device/send_event_to_device.rs +++ b/crates/ruma-client-api/src/to_device/send_event_to_device.rs @@ -7,8 +7,9 @@ pub mod v3 { use std::collections::BTreeMap; - use ruma_common::{api::ruma_api, to_device::DeviceIdOrAllDevices}; - use ruma_events::AnyToDeviceEventContent; + use ruma_common::{ + api::ruma_api, events::AnyToDeviceEventContent, to_device::DeviceIdOrAllDevices, + }; use ruma_identifiers::{TransactionId, UserId}; use ruma_serde::Raw; diff --git a/crates/ruma-common/Cargo.toml b/crates/ruma-common/Cargo.toml index 1fbeefd5..9b9de679 100644 --- a/crates/ruma-common/Cargo.toml +++ b/crates/ruma-common/Cargo.toml @@ -21,17 +21,28 @@ client = [] server = [] api = ["bytes", "http", "percent-encoding", "ruma-macros", "thiserror"] -compat = [] +compat = ["ruma-macros/compat"] +events = ["indoc", "ruma-macros", "ruma-identifiers/serde", "thiserror"] +markdown = ["pulldown-cmark"] unstable-exhaustive-types = [] +unstable-pdu = [] unstable-pre-spec = [] +unstable-msc1767 = [] +unstable-msc2448 = [] +unstable-msc2675 = [] +unstable-msc2676 = [] unstable-msc2677 = [] +unstable-msc3551 = ["unstable-msc1767"] [dependencies] bytes = { version = "1.0.1", optional = true } +criterion = { version = "0.3.3", optional = true } http = { version = "0.2.2", optional = true } indexmap = { version = "1.6.2", features = ["serde-1"] } +indoc = { version = "1.0", optional = true } js_int = { version = "0.2.0", features = ["serde"] } percent-encoding = { version = "2.1.0", optional = true } +pulldown-cmark = { version = "0.8", default-features = false, optional = true } ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers" } ruma-macros = { version = "=0.1.0", path = "../ruma-macros", optional = true } ruma-serde = { version = "0.6.0", path = "../ruma-serde" } @@ -42,9 +53,15 @@ tracing = "0.1.25" wildmatch = "2.0.0" [dev-dependencies] +assign = "1.1.1" bytes = "1.0.1" http = "0.2.2" maplit = "1.0.2" matches = "0.1.8" -ruma-events = { version = "0.26.0", path = "../ruma-events" } +ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers", features = ["rand", "serde"] } +ruma-macros = { version = "=0.1.0", path = "../ruma-macros" } trybuild = "1.0.38" + +[[bench]] +name = "event_deserialize" +harness = false diff --git a/crates/ruma-common/README.md b/crates/ruma-common/README.md index 6b0544c2..662a22db 100644 --- a/crates/ruma-common/README.md +++ b/crates/ruma-common/README.md @@ -13,3 +13,8 @@ The feature-gated modules are defined as follow: Behind the `api` feature, core types used to define the requests and responses for each endpoint in the various [Matrix](https://matrix.org/) API specifications. These types can be shared by client and server code for all Matrix APIs. + +### `events` module + +Behind the `events` feature, serializable types for the events in the [Matrix](https://matrix.org/) +specification that can be shared by client and server code. \ No newline at end of file diff --git a/crates/ruma-events/benches/event_deserialize.rs b/crates/ruma-common/benches/event_deserialize.rs similarity index 98% rename from crates/ruma-events/benches/event_deserialize.rs rename to crates/ruma-common/benches/event_deserialize.rs index d3aae88d..756f78de 100644 --- a/crates/ruma-events/benches/event_deserialize.rs +++ b/crates/ruma-common/benches/event_deserialize.rs @@ -4,11 +4,12 @@ // To pass args to criterion, use this form // `cargo bench --features criterion --bench -- --save-baseline `. +#![cfg(feature = "events")] #![allow(unused_imports, dead_code)] #[cfg(feature = "criterion")] use criterion::{criterion_group, criterion_main, Criterion}; -use ruma_events::{ +use ruma_common::events::{ room::power_levels::RoomPowerLevelsEventContent, AnyRoomEvent, AnyStateEvent, StateEvent, }; use ruma_serde::Raw; diff --git a/crates/ruma-events/src/lib.rs b/crates/ruma-common/src/events.rs similarity index 86% rename from crates/ruma-events/src/lib.rs rename to crates/ruma-common/src/events.rs index 9ded1f60..cf944592 100644 --- a/crates/ruma-events/src/lib.rs +++ b/crates/ruma-common/src/events.rs @@ -1,7 +1,5 @@ -#![doc(html_favicon_url = "https://www.ruma.io/favicon.ico")] -#![doc(html_logo_url = "https://www.ruma.io/images/logo.png")] //! (De)serializable types for the events in the [Matrix](https://matrix.org) specification. -//! These types are used by other ruma crates. +//! These types are used by other Ruma crates. //! //! All data exchanged over Matrix is expressed as an event. //! Different event types represent different actions, such as joining a room or sending a message. @@ -9,12 +7,12 @@ //! While anyone can create a new event type for their own purposes, the Matrix specification //! defines a number of event types which are considered core to the protocol, and Matrix clients //! and servers must understand their semantics. -//! ruma-events contains Rust types for each of the event types defined by the specification and +//! This module contains Rust types for each of the event types defined by the specification and //! facilities for extending the event system for custom event types. //! //! # Event types //! -//! ruma-events includes a Rust enum called `EventType`, which provides a simple enumeration of +//! This module includes a Rust enum called [`EventType`], which provides a simple enumeration of //! all the event types defined by the Matrix specification. Matrix event types are serialized to //! JSON strings in [reverse domain name //! notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation), although the core event @@ -22,20 +20,21 @@ //! //! # Core event types //! -//! ruma-events includes Rust types for every one of the event types in the Matrix specification. +//! This module includes Rust types for every one of the event types in the Matrix specification. //! To better organize the crate, these types live in separate modules with a hierarchy that //! matches the reverse domain name notation of the event type. -//! For example, the `m.room.message` event lives at `ruma_events::room::message::MessageLikeEvent`. -//! Each type's module also contains a Rust type for that event type's `content` field, and any -//! other supporting types required by the event's other fields. +//! For example, the `m.room.message` event lives at +//! `ruma_common::events::::room::message::MessageLikeEvent`. Each type's module also contains a +//! Rust type for that event type's `content` field, and any other supporting types required by the +//! event's other fields. //! //! # Extending Ruma with custom events //! //! For our examples we will start with a simple custom state event. `ruma_event` -//! specifies the state event's `type` and it's [`kind`](crate::EventKind). +//! specifies the state event's `type` and it's [`kind`](EventKind). //! //! ```rust -//! use ruma_events::macros::EventContent; +//! use ruma_common::events::macros::EventContent; //! use serde::{Deserialize, Serialize}; //! //! #[derive(Clone, Debug, Deserialize, Serialize, EventContent)] @@ -45,14 +44,14 @@ //! } //! ``` //! -//! This can be used with ruma-events structs, such as passing it into +//! This can be used with events structs, such as passing it into //! `ruma::api::client::state::send_state_event`'s `Request`. //! //! As a more advanced example we create a reaction message event. For this event we will use a -//! `SyncMessageLikeEvent` struct but any `MessageLikeEvent` struct would work. +//! [`SyncMessageLikeEvent`] struct but any [`MessageLikeEvent`] struct would work. //! //! ```rust -//! use ruma_events::{macros::EventContent, SyncMessageLikeEvent}; +//! use ruma_common::events::{macros::EventContent, SyncMessageLikeEvent}; //! use ruma_identifiers::EventId; //! use serde::{Deserialize, Serialize}; //! @@ -113,9 +112,9 @@ //! //! # Serialization and deserialization //! -//! All concrete event types in ruma-events can be serialized via the `Serialize` trait from -//! [serde](https://serde.rs/) and can be deserialized from as `Raw`. In order to -//! handle incoming data that may not conform to `ruma-events`' strict definitions of event +//! All concrete event types in this module can be serialized via the `Serialize` trait from +//! [serde](https://serde.rs/) and can be deserialized from a `Raw`. In order to +//! handle incoming data that may not conform to this module's strict definitions of event //! structures, deserialization will return `Raw::Err` on error. This error covers both //! structurally invalid JSON data as well as structurally valid JSON that doesn't fulfill //! additional constraints the matrix specification defines for some event types. The error exposes @@ -127,12 +126,6 @@ //! type alias), allowing content to be converted to and from JSON independently of the surrounding //! event structure, if needed. -#![recursion_limit = "1024"] -#![warn(missing_docs)] -#![cfg_attr(docsrs, feature(doc_auto_cfg))] - -use std::fmt; - use ruma_identifiers::{EventEncryptionAlgorithm, RoomVersionId}; use ruma_serde::Raw; use serde::{de::IgnoredAny, Deserialize, Serialize, Serializer}; @@ -147,17 +140,13 @@ mod enums; mod event_kinds; mod unsigned; -// Hack to allow both ruma-events itself and external crates (or tests) to use procedural macros -// that expect `ruma_events` to exist in the prelude. -extern crate self as ruma_events; - /// Re-exports to allow users to declare their own event types using the /// macros used internally. /// -/// It is not considered part of ruma-events' public API. +/// It is not considered part of this module's public API. #[doc(hidden)] pub mod exports { - pub use ruma_common; + pub use crate as ruma_common; pub use ruma_identifiers; pub use ruma_serde; pub use serde; @@ -414,19 +403,6 @@ pub struct UnsignedDeHelper { pub redacted_because: Option, } -// Wrapper around `Box` that cannot be used in a meaningful way outside of -// this crate. Used for string enums because their `_Custom` variant can't be -// truly private (only `#[doc(hidden)]`). -#[doc(hidden)] -#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct PrivOwnedStr(Box); - -impl fmt::Debug for PrivOwnedStr { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.0.fmt(f) - } -} - /// Helper function for erroring when trying to serialize an event enum _Custom variant that can /// only be created by deserializing from an unknown event type. #[doc(hidden)] diff --git a/crates/ruma-events/src/_custom.rs b/crates/ruma-common/src/events/_custom.rs similarity index 99% rename from crates/ruma-events/src/_custom.rs rename to crates/ruma-common/src/events/_custom.rs index 570d2779..4ee3ef5b 100644 --- a/crates/ruma-events/src/_custom.rs +++ b/crates/ruma-common/src/events/_custom.rs @@ -2,7 +2,7 @@ use ruma_identifiers::RoomVersionId; use serde::Serialize; use serde_json::value::RawValue as RawJsonValue; -use crate::{ +use super::{ EphemeralRoomEventContent, EventContent, GlobalAccountDataEventContent, HasDeserializeFields, MessageLikeEventContent, RedactContent, RedactedEventContent, RedactedMessageLikeEventContent, RedactedStateEventContent, RoomAccountDataEventContent, StateEventContent, diff --git a/crates/ruma-events/src/call.rs b/crates/ruma-common/src/events/call.rs similarity index 100% rename from crates/ruma-events/src/call.rs rename to crates/ruma-common/src/events/call.rs diff --git a/crates/ruma-events/src/call/answer.rs b/crates/ruma-common/src/events/call/answer.rs similarity index 100% rename from crates/ruma-events/src/call/answer.rs rename to crates/ruma-common/src/events/call/answer.rs diff --git a/crates/ruma-events/src/call/candidates.rs b/crates/ruma-common/src/events/call/candidates.rs similarity index 100% rename from crates/ruma-events/src/call/candidates.rs rename to crates/ruma-common/src/events/call/candidates.rs diff --git a/crates/ruma-events/src/call/hangup.rs b/crates/ruma-common/src/events/call/hangup.rs similarity index 100% rename from crates/ruma-events/src/call/hangup.rs rename to crates/ruma-common/src/events/call/hangup.rs diff --git a/crates/ruma-events/src/call/invite.rs b/crates/ruma-common/src/events/call/invite.rs similarity index 100% rename from crates/ruma-events/src/call/invite.rs rename to crates/ruma-common/src/events/call/invite.rs diff --git a/crates/ruma-events/src/direct.rs b/crates/ruma-common/src/events/direct.rs similarity index 100% rename from crates/ruma-events/src/direct.rs rename to crates/ruma-common/src/events/direct.rs diff --git a/crates/ruma-events/src/dummy.rs b/crates/ruma-common/src/events/dummy.rs similarity index 100% rename from crates/ruma-events/src/dummy.rs rename to crates/ruma-common/src/events/dummy.rs diff --git a/crates/ruma-events/src/emote.rs b/crates/ruma-common/src/events/emote.rs similarity index 96% rename from crates/ruma-events/src/emote.rs rename to crates/ruma-common/src/events/emote.rs index 747049f7..d9ba718b 100644 --- a/crates/ruma-events/src/emote.rs +++ b/crates/ruma-common/src/events/emote.rs @@ -5,7 +5,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{message::MessageContent, room::message::Relation}; +use super::{message::MessageContent, room::message::Relation}; /// The payload for an extensible emote message. #[derive(Clone, Debug, Serialize, Deserialize, EventContent)] diff --git a/crates/ruma-events/src/enums.rs b/crates/ruma-common/src/events/enums.rs similarity index 99% rename from crates/ruma-events/src/enums.rs rename to crates/ruma-common/src/events/enums.rs index 81a935d8..0facc236 100644 --- a/crates/ruma-events/src/enums.rs +++ b/crates/ruma-common/src/events/enums.rs @@ -5,7 +5,7 @@ use ruma_serde::from_raw_json_value; use serde::{de, Deserialize}; use serde_json::value::RawValue as RawJsonValue; -use crate::{ +use super::{ key, room::{encrypted, redaction::SyncRoomRedactionEvent}, Redact, UnsignedDeHelper, @@ -327,7 +327,7 @@ impl AnyMessageLikeEventContent { /// This is a helper function intended for encryption. There should not be a reason to access /// `m.relates_to` without first destructuring an `AnyMessageLikeEventContent` otherwise. pub fn relation(&self) -> Option { - use crate::key::verification::{ + use super::key::verification::{ accept::KeyVerificationAcceptEventContent, cancel::KeyVerificationCancelEventContent, done::KeyVerificationDoneEventContent, key::KeyVerificationKeyEventContent, mac::KeyVerificationMacEventContent, ready::KeyVerificationReadyEventContent, @@ -350,7 +350,7 @@ impl AnyMessageLikeEventContent { } #[cfg(feature = "unstable-msc2677")] Self::Reaction(ev) => { - use crate::reaction; + use super::reaction; let reaction::Relation { event_id, emoji } = &ev.relates_to; Some(encrypted::Relation::Annotation(encrypted::Annotation { diff --git a/crates/ruma-events/src/event_kinds.rs b/crates/ruma-common/src/events/event_kinds.rs similarity index 99% rename from crates/ruma-events/src/event_kinds.rs rename to crates/ruma-common/src/events/event_kinds.rs index 78ca4a1f..b10c2874 100644 --- a/crates/ruma-events/src/event_kinds.rs +++ b/crates/ruma-common/src/events/event_kinds.rs @@ -5,7 +5,7 @@ use ruma_identifiers::{EventId, RoomId, UserId}; use ruma_macros::Event; use serde::{Deserialize, Serialize}; -use crate::{ +use super::{ EphemeralRoomEventContent, GlobalAccountDataEventContent, MessageLikeEventContent, RedactedMessageLikeEventContent, RedactedStateEventContent, RedactedUnsigned, RoomAccountDataEventContent, StateEventContent, ToDeviceEventContent, Unsigned, diff --git a/crates/ruma-events/src/file.rs b/crates/ruma-common/src/events/file.rs similarity index 99% rename from crates/ruma-events/src/file.rs rename to crates/ruma-common/src/events/file.rs index d1d3fa52..2b439559 100644 --- a/crates/ruma-events/src/file.rs +++ b/crates/ruma-common/src/events/file.rs @@ -10,7 +10,7 @@ use ruma_macros::EventContent; use ruma_serde::Base64; use serde::{Deserialize, Serialize}; -use crate::{ +use super::{ message::MessageContent, room::{message::Relation, JsonWebKey}, }; diff --git a/crates/ruma-events/src/forwarded_room_key.rs b/crates/ruma-common/src/events/forwarded_room_key.rs similarity index 100% rename from crates/ruma-events/src/forwarded_room_key.rs rename to crates/ruma-common/src/events/forwarded_room_key.rs diff --git a/crates/ruma-events/src/fully_read.rs b/crates/ruma-common/src/events/fully_read.rs similarity index 100% rename from crates/ruma-events/src/fully_read.rs rename to crates/ruma-common/src/events/fully_read.rs diff --git a/crates/ruma-events/src/ignored_user_list.rs b/crates/ruma-common/src/events/ignored_user_list.rs similarity index 96% rename from crates/ruma-events/src/ignored_user_list.rs rename to crates/ruma-common/src/events/ignored_user_list.rs index 3a65b374..5263b9bd 100644 --- a/crates/ruma-events/src/ignored_user_list.rs +++ b/crates/ruma-common/src/events/ignored_user_list.rs @@ -32,7 +32,7 @@ mod tests { use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{IgnoredUserListEvent, IgnoredUserListEventContent}; - use crate::{AnyGlobalAccountDataEvent, GlobalAccountDataEvent}; + use crate::events::{AnyGlobalAccountDataEvent, GlobalAccountDataEvent}; #[test] fn serialization() { diff --git a/crates/ruma-events/src/key.rs b/crates/ruma-common/src/events/key.rs similarity index 100% rename from crates/ruma-events/src/key.rs rename to crates/ruma-common/src/events/key.rs diff --git a/crates/ruma-events/src/key/verification.rs b/crates/ruma-common/src/events/key/verification.rs similarity index 100% rename from crates/ruma-events/src/key/verification.rs rename to crates/ruma-common/src/events/key/verification.rs diff --git a/crates/ruma-events/src/key/verification/accept.rs b/crates/ruma-common/src/events/key/verification/accept.rs similarity index 99% rename from crates/ruma-events/src/key/verification/accept.rs rename to crates/ruma-common/src/events/key/verification/accept.rs index 2a1c88a4..cc6e6f6d 100644 --- a/crates/ruma-events/src/key/verification/accept.rs +++ b/crates/ruma-common/src/events/key/verification/accept.rs @@ -177,7 +177,7 @@ mod tests { MessageAuthenticationCode, SasV1Content, ShortAuthenticationString, ToDeviceKeyVerificationAcceptEventContent, _CustomContent, }; - use crate::{key::verification::Relation, ToDeviceEvent}; + use crate::events::{key::verification::Relation, ToDeviceEvent}; #[test] fn serialization() { diff --git a/crates/ruma-events/src/key/verification/cancel.rs b/crates/ruma-common/src/events/key/verification/cancel.rs similarity index 100% rename from crates/ruma-events/src/key/verification/cancel.rs rename to crates/ruma-common/src/events/key/verification/cancel.rs diff --git a/crates/ruma-events/src/key/verification/done.rs b/crates/ruma-common/src/events/key/verification/done.rs similarity index 98% rename from crates/ruma-events/src/key/verification/done.rs rename to crates/ruma-common/src/events/key/verification/done.rs index 97de4076..ab354a89 100644 --- a/crates/ruma-events/src/key/verification/done.rs +++ b/crates/ruma-common/src/events/key/verification/done.rs @@ -54,7 +54,7 @@ mod tests { use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::KeyVerificationDoneEventContent; - use crate::key::verification::Relation; + use crate::events::key::verification::Relation; #[test] fn serialization() { diff --git a/crates/ruma-events/src/key/verification/key.rs b/crates/ruma-common/src/events/key/verification/key.rs similarity index 100% rename from crates/ruma-events/src/key/verification/key.rs rename to crates/ruma-common/src/events/key/verification/key.rs diff --git a/crates/ruma-events/src/key/verification/mac.rs b/crates/ruma-common/src/events/key/verification/mac.rs similarity index 100% rename from crates/ruma-events/src/key/verification/mac.rs rename to crates/ruma-common/src/events/key/verification/mac.rs diff --git a/crates/ruma-events/src/key/verification/ready.rs b/crates/ruma-common/src/events/key/verification/ready.rs similarity index 98% rename from crates/ruma-events/src/key/verification/ready.rs rename to crates/ruma-common/src/events/key/verification/ready.rs index d7c15c96..888a84f3 100644 --- a/crates/ruma-events/src/key/verification/ready.rs +++ b/crates/ruma-common/src/events/key/verification/ready.rs @@ -79,7 +79,7 @@ mod tests { use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{KeyVerificationReadyEventContent, ToDeviceKeyVerificationReadyEventContent}; - use crate::key::verification::{Relation, VerificationMethod}; + use crate::events::key::verification::{Relation, VerificationMethod}; #[test] fn serialization() { diff --git a/crates/ruma-events/src/key/verification/request.rs b/crates/ruma-common/src/events/key/verification/request.rs similarity index 100% rename from crates/ruma-events/src/key/verification/request.rs rename to crates/ruma-common/src/events/key/verification/request.rs diff --git a/crates/ruma-events/src/key/verification/start.rs b/crates/ruma-common/src/events/key/verification/start.rs similarity index 99% rename from crates/ruma-events/src/key/verification/start.rs rename to crates/ruma-common/src/events/key/verification/start.rs index c992c57a..4d280024 100644 --- a/crates/ruma-events/src/key/verification/start.rs +++ b/crates/ruma-common/src/events/key/verification/start.rs @@ -213,7 +213,7 @@ mod tests { ShortAuthenticationString, StartMethod, ToDeviceKeyVerificationStartEventContent, _CustomContent, }; - use crate::{key::verification::Relation, ToDeviceEvent}; + use crate::events::{key::verification::Relation, ToDeviceEvent}; #[test] fn serialization() { diff --git a/crates/ruma-events/src/message.rs b/crates/ruma-common/src/events/message.rs similarity index 99% rename from crates/ruma-events/src/message.rs rename to crates/ruma-common/src/events/message.rs index 5f1ae8d2..829b7e4f 100644 --- a/crates/ruma-events/src/message.rs +++ b/crates/ruma-common/src/events/message.rs @@ -9,7 +9,7 @@ mod content_serde; use content_serde::MessageContentSerDeHelper; -use crate::room::message::Relation; +use super::room::message::Relation; /// Text message content. #[derive(Clone, Debug, Serialize, Deserialize)] diff --git a/crates/ruma-events/src/message/content_serde.rs b/crates/ruma-common/src/events/message/content_serde.rs similarity index 100% rename from crates/ruma-events/src/message/content_serde.rs rename to crates/ruma-common/src/events/message/content_serde.rs diff --git a/crates/ruma-events/src/notice.rs b/crates/ruma-common/src/events/notice.rs similarity index 96% rename from crates/ruma-events/src/notice.rs rename to crates/ruma-common/src/events/notice.rs index 667c5fd9..28e9a88d 100644 --- a/crates/ruma-events/src/notice.rs +++ b/crates/ruma-common/src/events/notice.rs @@ -5,7 +5,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{message::MessageContent, room::message::Relation}; +use super::{message::MessageContent, room::message::Relation}; /// The payload for an extensible notice message. #[derive(Clone, Debug, Serialize, Deserialize, EventContent)] diff --git a/crates/ruma-events/src/pdu.rs b/crates/ruma-common/src/events/pdu.rs similarity index 99% rename from crates/ruma-events/src/pdu.rs rename to crates/ruma-common/src/events/pdu.rs index b9bc739b..00765900 100644 --- a/crates/ruma-events/src/pdu.rs +++ b/crates/ruma-common/src/events/pdu.rs @@ -16,7 +16,7 @@ use serde::{ }; use serde_json::{from_str as from_json_str, value::RawValue as RawJsonValue}; -use crate::EventType; +use super::EventType; /// Enum for PDU schemas #[derive(Clone, Debug, Serialize)] diff --git a/crates/ruma-events/src/policy.rs b/crates/ruma-common/src/events/policy.rs similarity index 100% rename from crates/ruma-events/src/policy.rs rename to crates/ruma-common/src/events/policy.rs diff --git a/crates/ruma-events/src/policy/rule.rs b/crates/ruma-common/src/events/policy/rule.rs similarity index 100% rename from crates/ruma-events/src/policy/rule.rs rename to crates/ruma-common/src/events/policy/rule.rs diff --git a/crates/ruma-events/src/policy/rule/room.rs b/crates/ruma-common/src/events/policy/rule/room.rs similarity index 98% rename from crates/ruma-events/src/policy/rule/room.rs rename to crates/ruma-common/src/events/policy/rule/room.rs index 8ce79708..55c0b2e1 100644 --- a/crates/ruma-events/src/policy/rule/room.rs +++ b/crates/ruma-common/src/events/policy/rule/room.rs @@ -5,7 +5,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::policy::rule::PolicyRuleEventContent; +use super::PolicyRuleEventContent; /// The content of an `m.policy.rule.room` event. /// @@ -26,7 +26,7 @@ mod tests { use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{PolicyRuleRoomEvent, PolicyRuleRoomEventContent}; - use crate::{ + use crate::events::{ policy::rule::{PolicyRuleEventContent, Recommendation}, Unsigned, }; diff --git a/crates/ruma-events/src/policy/rule/server.rs b/crates/ruma-common/src/events/policy/rule/server.rs similarity index 92% rename from crates/ruma-events/src/policy/rule/server.rs rename to crates/ruma-common/src/events/policy/rule/server.rs index 41ff7925..d2a9a6e7 100644 --- a/crates/ruma-events/src/policy/rule/server.rs +++ b/crates/ruma-common/src/events/policy/rule/server.rs @@ -5,7 +5,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::policy::rule::PolicyRuleEventContent; +use super::PolicyRuleEventContent; /// The content of an `m.policy.rule.server` event. /// diff --git a/crates/ruma-events/src/policy/rule/user.rs b/crates/ruma-common/src/events/policy/rule/user.rs similarity index 91% rename from crates/ruma-events/src/policy/rule/user.rs rename to crates/ruma-common/src/events/policy/rule/user.rs index 8656d58b..3c7ff19b 100644 --- a/crates/ruma-events/src/policy/rule/user.rs +++ b/crates/ruma-common/src/events/policy/rule/user.rs @@ -5,7 +5,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::policy::rule::PolicyRuleEventContent; +use super::PolicyRuleEventContent; /// The content of an `m.policy.rule.user` event. /// diff --git a/crates/ruma-events/src/presence.rs b/crates/ruma-common/src/events/presence.rs similarity index 99% rename from crates/ruma-events/src/presence.rs rename to crates/ruma-common/src/events/presence.rs index 01ebebaf..1de464e1 100644 --- a/crates/ruma-events/src/presence.rs +++ b/crates/ruma-common/src/events/presence.rs @@ -8,7 +8,7 @@ use ruma_identifiers::{MxcUri, UserId}; use ruma_macros::{Event, EventContent}; use serde::{Deserialize, Serialize}; -use crate::{EventKind, StaticEventContent}; +use super::{EventKind, StaticEventContent}; /// Presence event. #[derive(Clone, Debug, Event)] diff --git a/crates/ruma-events/src/push_rules.rs b/crates/ruma-common/src/events/push_rules.rs similarity index 100% rename from crates/ruma-events/src/push_rules.rs rename to crates/ruma-common/src/events/push_rules.rs diff --git a/crates/ruma-events/src/reaction.rs b/crates/ruma-common/src/events/reaction.rs similarity index 100% rename from crates/ruma-events/src/reaction.rs rename to crates/ruma-common/src/events/reaction.rs diff --git a/crates/ruma-events/src/receipt.rs b/crates/ruma-common/src/events/receipt.rs similarity index 100% rename from crates/ruma-events/src/receipt.rs rename to crates/ruma-common/src/events/receipt.rs diff --git a/crates/ruma-events/src/relation.rs b/crates/ruma-common/src/events/relation.rs similarity index 100% rename from crates/ruma-events/src/relation.rs rename to crates/ruma-common/src/events/relation.rs diff --git a/crates/ruma-events/src/room.rs b/crates/ruma-common/src/events/room.rs similarity index 100% rename from crates/ruma-events/src/room.rs rename to crates/ruma-common/src/events/room.rs diff --git a/crates/ruma-events/src/room/aliases.rs b/crates/ruma-common/src/events/room/aliases.rs similarity index 99% rename from crates/ruma-events/src/room/aliases.rs rename to crates/ruma-common/src/events/room/aliases.rs index b783a353..d249c840 100644 --- a/crates/ruma-events/src/room/aliases.rs +++ b/crates/ruma-common/src/events/room/aliases.rs @@ -5,7 +5,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use serde_json::value::RawValue as RawJsonValue; -use crate::{ +use crate::events::{ EventContent, HasDeserializeFields, RedactContent, RedactedEventContent, RedactedStateEventContent, }; diff --git a/crates/ruma-events/src/room/avatar.rs b/crates/ruma-common/src/events/room/avatar.rs similarity index 100% rename from crates/ruma-events/src/room/avatar.rs rename to crates/ruma-common/src/events/room/avatar.rs diff --git a/crates/ruma-events/src/room/canonical_alias.rs b/crates/ruma-common/src/events/room/canonical_alias.rs similarity index 99% rename from crates/ruma-events/src/room/canonical_alias.rs rename to crates/ruma-common/src/events/room/canonical_alias.rs index a6572448..8da0a7ef 100644 --- a/crates/ruma-events/src/room/canonical_alias.rs +++ b/crates/ruma-common/src/events/room/canonical_alias.rs @@ -44,7 +44,7 @@ mod tests { use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::RoomCanonicalAliasEventContent; - use crate::{StateEvent, Unsigned}; + use crate::events::{StateEvent, Unsigned}; #[test] fn serialization_with_optional_fields_as_none() { diff --git a/crates/ruma-events/src/room/create.rs b/crates/ruma-common/src/events/room/create.rs similarity index 100% rename from crates/ruma-events/src/room/create.rs rename to crates/ruma-common/src/events/room/create.rs diff --git a/crates/ruma-events/src/room/encrypted.rs b/crates/ruma-common/src/events/room/encrypted.rs similarity index 97% rename from crates/ruma-events/src/room/encrypted.rs rename to crates/ruma-common/src/events/room/encrypted.rs index dadc6e80..f43f628f 100644 --- a/crates/ruma-events/src/room/encrypted.rs +++ b/crates/ruma-common/src/events/room/encrypted.rs @@ -9,7 +9,7 @@ use ruma_identifiers::{DeviceId, EventId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::room::message::{self, InReplyTo}; +use super::message::{self, InReplyTo}; mod relation_serde; @@ -122,7 +122,7 @@ impl From for Relation { /// The event this relation belongs to replaces another event. /// -/// In contrast to [`message::Replacement`](crate::room::message::Replacement), this struct doesn't +/// In contrast to [`message::Replacement`](super::message::Replacement), this struct doesn't /// store the new content, since that is part of the encrypted content of an `m.room.encrypted` /// events. #[derive(Clone, Debug, Deserialize, Serialize)] @@ -263,9 +263,9 @@ mod tests { use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{ - EncryptedEventScheme, MegolmV1AesSha2Content, Relation, RoomEncryptedEventContent, + EncryptedEventScheme, InReplyTo, MegolmV1AesSha2Content, Relation, + RoomEncryptedEventContent, }; - use crate::room::message::InReplyTo; #[test] fn serialization() { diff --git a/crates/ruma-events/src/room/encrypted/relation_serde.rs b/crates/ruma-common/src/events/room/encrypted/relation_serde.rs similarity index 100% rename from crates/ruma-events/src/room/encrypted/relation_serde.rs rename to crates/ruma-common/src/events/room/encrypted/relation_serde.rs diff --git a/crates/ruma-events/src/room/encryption.rs b/crates/ruma-common/src/events/room/encryption.rs similarity index 97% rename from crates/ruma-events/src/room/encryption.rs rename to crates/ruma-common/src/events/room/encryption.rs index 9b9b63a8..756f6e6b 100644 --- a/crates/ruma-events/src/room/encryption.rs +++ b/crates/ruma-common/src/events/room/encryption.rs @@ -6,7 +6,7 @@ use js_int::UInt; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::EventEncryptionAlgorithm; +use crate::events::EventEncryptionAlgorithm; /// The content of an `m.room.encryption` event. /// diff --git a/crates/ruma-events/src/room/guest_access.rs b/crates/ruma-common/src/events/room/guest_access.rs similarity index 100% rename from crates/ruma-events/src/room/guest_access.rs rename to crates/ruma-common/src/events/room/guest_access.rs diff --git a/crates/ruma-events/src/room/history_visibility.rs b/crates/ruma-common/src/events/room/history_visibility.rs similarity index 100% rename from crates/ruma-events/src/room/history_visibility.rs rename to crates/ruma-common/src/events/room/history_visibility.rs diff --git a/crates/ruma-events/src/room/join_rules.rs b/crates/ruma-common/src/events/room/join_rules.rs similarity index 100% rename from crates/ruma-events/src/room/join_rules.rs rename to crates/ruma-common/src/events/room/join_rules.rs diff --git a/crates/ruma-events/src/room/member.rs b/crates/ruma-common/src/events/room/member.rs similarity index 98% rename from crates/ruma-events/src/room/member.rs rename to crates/ruma-common/src/events/room/member.rs index 486bf9d1..fd43978a 100644 --- a/crates/ruma-events/src/room/member.rs +++ b/crates/ruma-common/src/events/room/member.rs @@ -11,8 +11,11 @@ use serde::{Deserialize, Serialize}; use serde_json::value::RawValue as RawJsonValue; use crate::{ - EventContent, HasDeserializeFields, PrivOwnedStr, RedactContent, RedactedEventContent, - RedactedStateEventContent, StrippedStateEvent, SyncStateEvent, + events::{ + EventContent, HasDeserializeFields, RedactContent, RedactedEventContent, + RedactedStateEventContent, StrippedStateEvent, SyncStateEvent, + }, + PrivOwnedStr, }; /// The content of an `m.room.member` event. @@ -30,8 +33,8 @@ use crate::{ /// /// This event may also include an `invite_room_state` key inside the event's unsigned data. If /// present, this contains an array of `StrippedState` events. These events provide information -/// on a subset of state events such as the room name. Note that ruma-events treats unsigned -/// data on events as arbitrary JSON values, and the ruma-events types for this event don't +/// on a subset of state events such as the room name. Note that Ruma treats unsigned +/// data on events as arbitrary JSON values, and the Ruma types for this event don't /// provide direct access to `invite_room_state`. If you need this data, you must extract and /// convert it from a `serde_json::Value` yourself. /// @@ -421,7 +424,7 @@ mod tests { use serde_json::{from_value as from_json_value, json}; use super::{MembershipState, RoomMemberEventContent, SignedContent, ThirdPartyInvite}; - use crate::StateEvent; + use crate::events::StateEvent; #[test] fn serde_with_no_prev_content() { diff --git a/crates/ruma-events/src/room/message.rs b/crates/ruma-common/src/events/room/message.rs similarity index 99% rename from crates/ruma-events/src/room/message.rs rename to crates/ruma-common/src/events/room/message.rs index 2664f6bc..ea585753 100644 --- a/crates/ruma-events/src/room/message.rs +++ b/crates/ruma-common/src/events/room/message.rs @@ -12,7 +12,7 @@ use serde::{de::DeserializeOwned, Deserialize, Serialize}; use serde_json::Value as JsonValue; use super::{EncryptedFile, ImageInfo, ThumbnailInfo}; -use crate::{key::verification::VerificationMethod, PrivOwnedStr}; +use crate::{events::key::verification::VerificationMethod, PrivOwnedStr}; mod content_serde; pub mod feedback; @@ -103,7 +103,8 @@ impl RoomMessageEventContent { /// Different from `text_reply_plain`, this constructor requires specifically a /// [`RoomMessageEvent`] since it creates a permalink to the previous message, for which the /// room ID is required. If you want to reply to a [`SyncRoomMessageEvent`], you have to convert - /// it first by calling [`.into_full_event()`][crate::SyncMessageLikeEvent::into_full_event]. + /// it first by calling + /// [`.into_full_event()`][crate::events::SyncMessageLikeEvent::into_full_event]. pub fn text_reply_html( reply: impl fmt::Display, html_reply: impl fmt::Display, @@ -144,7 +145,8 @@ impl RoomMessageEventContent { /// Different from `notice_reply_plain`, this constructor requires specifically a /// [`RoomMessageEvent`] since it creates a permalink to the previous message, for which the /// room ID is required. If you want to reply to a [`SyncRoomMessageEvent`], you have to convert - /// it first by calling [`.into_full_event()`][crate::SyncMessageLikeEvent::into_full_event]. + /// it first by calling + /// [`.into_full_event()`][crate::events::SyncMessageLikeEvent::into_full_event]. pub fn notice_reply_html( reply: impl fmt::Display, html_reply: impl fmt::Display, diff --git a/crates/ruma-events/src/room/message/content_serde.rs b/crates/ruma-common/src/events/room/message/content_serde.rs similarity index 100% rename from crates/ruma-events/src/room/message/content_serde.rs rename to crates/ruma-common/src/events/room/message/content_serde.rs diff --git a/crates/ruma-events/src/room/message/feedback.rs b/crates/ruma-common/src/events/room/message/feedback.rs similarity index 100% rename from crates/ruma-events/src/room/message/feedback.rs rename to crates/ruma-common/src/events/room/message/feedback.rs diff --git a/crates/ruma-events/src/room/message/relation_serde.rs b/crates/ruma-common/src/events/room/message/relation_serde.rs similarity index 98% rename from crates/ruma-events/src/room/message/relation_serde.rs rename to crates/ruma-common/src/events/room/message/relation_serde.rs index 3216a4c8..040d699a 100644 --- a/crates/ruma-events/src/room/message/relation_serde.rs +++ b/crates/ruma-common/src/events/room/message/relation_serde.rs @@ -4,9 +4,9 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer}; #[cfg(feature = "unstable-msc2676")] use super::Replacement; -use super::{InReplyTo, Relation}; #[cfg(feature = "unstable-msc2676")] -use crate::room::message::RoomMessageEventContent; +use super::RoomMessageEventContent; +use super::{InReplyTo, Relation}; impl<'de> Deserialize<'de> for Relation { fn deserialize(deserializer: D) -> Result diff --git a/crates/ruma-events/src/room/message/reply.rs b/crates/ruma-common/src/events/room/message/reply.rs similarity index 98% rename from crates/ruma-events/src/room/message/reply.rs rename to crates/ruma-common/src/events/room/message/reply.rs index c1407727..b8b61d22 100644 --- a/crates/ruma-events/src/room/message/reply.rs +++ b/crates/ruma-common/src/events/room/message/reply.rs @@ -301,8 +301,7 @@ fn formatted_or_plain_body<'a>(formatted: &'a Option, body: &'a s mod tests { use ruma_identifiers::{event_id, room_id, user_id}; - use super::RoomMessageEvent; - use crate::room::message::RoomMessageEventContent; + use super::{RoomMessageEvent, RoomMessageEventContent}; #[test] fn plain_quote_fallback_multiline() { @@ -313,7 +312,7 @@ mod tests { sender: user_id!("@alice:example.com").to_owned(), origin_server_ts: ruma_common::MilliSecondsSinceUnixEpoch::now(), room_id: room_id!("!n8f893n9:example.com").to_owned(), - unsigned: crate::Unsigned::new(), + unsigned: crate::events::Unsigned::new(), }), "> <@alice:example.com> multi\n> line" ); diff --git a/crates/ruma-events/src/room/name.rs b/crates/ruma-common/src/events/room/name.rs similarity index 99% rename from crates/ruma-events/src/room/name.rs rename to crates/ruma-common/src/events/room/name.rs index 23a8758d..c2f18536 100644 --- a/crates/ruma-events/src/room/name.rs +++ b/crates/ruma-common/src/events/room/name.rs @@ -37,7 +37,7 @@ mod tests { use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::RoomNameEventContent; - use crate::{StateEvent, Unsigned}; + use crate::events::{StateEvent, Unsigned}; #[test] fn serialization_with_optional_fields_as_none() { diff --git a/crates/ruma-events/src/room/pinned_events.rs b/crates/ruma-common/src/events/room/pinned_events.rs similarity index 98% rename from crates/ruma-events/src/room/pinned_events.rs rename to crates/ruma-common/src/events/room/pinned_events.rs index d935abf1..ff45483a 100644 --- a/crates/ruma-events/src/room/pinned_events.rs +++ b/crates/ruma-common/src/events/room/pinned_events.rs @@ -32,7 +32,7 @@ mod tests { use ruma_identifiers::{server_name, EventId, RoomId, UserId}; use super::RoomPinnedEventsEventContent; - use crate::{StateEvent, Unsigned}; + use crate::events::{StateEvent, Unsigned}; #[test] fn serialization_deserialization() { diff --git a/crates/ruma-events/src/room/power_levels.rs b/crates/ruma-common/src/events/room/power_levels.rs similarity index 99% rename from crates/ruma-events/src/room/power_levels.rs rename to crates/ruma-common/src/events/room/power_levels.rs index 63a4c2c9..f4639191 100644 --- a/crates/ruma-events/src/room/power_levels.rs +++ b/crates/ruma-common/src/events/room/power_levels.rs @@ -10,7 +10,7 @@ use ruma_identifiers::UserId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::EventType; +use crate::events::EventType; /// The content of an `m.room.power_levels` event. /// @@ -181,7 +181,7 @@ mod tests { use serde_json::{json, to_value as to_json_value}; use super::{default_power_level, NotificationPowerLevels, RoomPowerLevelsEventContent}; - use crate::{EventType, StateEvent, Unsigned}; + use crate::events::{EventType, StateEvent, Unsigned}; #[test] fn serialization_with_optional_fields_as_none() { diff --git a/crates/ruma-events/src/room/redaction.rs b/crates/ruma-common/src/events/room/redaction.rs similarity index 98% rename from crates/ruma-events/src/room/redaction.rs rename to crates/ruma-common/src/events/room/redaction.rs index d1f72f96..bd5ef8a3 100644 --- a/crates/ruma-events/src/room/redaction.rs +++ b/crates/ruma-common/src/events/room/redaction.rs @@ -7,7 +7,7 @@ use ruma_identifiers::{EventId, RoomId, UserId}; use ruma_macros::{Event, EventContent}; use serde::{Deserialize, Serialize}; -use crate::{Redact, RedactContent, RedactedUnsigned, Unsigned}; +use crate::events::{Redact, RedactContent, RedactedUnsigned, Unsigned}; /// Redaction event. #[derive(Clone, Debug, Event)] diff --git a/crates/ruma-events/src/room/server_acl.rs b/crates/ruma-common/src/events/room/server_acl.rs similarity index 99% rename from crates/ruma-events/src/room/server_acl.rs rename to crates/ruma-common/src/events/room/server_acl.rs index 1692cdcc..3415ce91 100644 --- a/crates/ruma-events/src/room/server_acl.rs +++ b/crates/ruma-common/src/events/room/server_acl.rs @@ -67,7 +67,7 @@ mod tests { use serde_json::{from_value as from_json_value, json}; use super::RoomServerAclEventContent; - use crate::StateEvent; + use crate::events::StateEvent; #[test] fn default_values() { diff --git a/crates/ruma-events/src/room/third_party_invite.rs b/crates/ruma-common/src/events/room/third_party_invite.rs similarity index 100% rename from crates/ruma-events/src/room/third_party_invite.rs rename to crates/ruma-common/src/events/room/third_party_invite.rs diff --git a/crates/ruma-events/src/room/tombstone.rs b/crates/ruma-common/src/events/room/tombstone.rs similarity index 100% rename from crates/ruma-events/src/room/tombstone.rs rename to crates/ruma-common/src/events/room/tombstone.rs diff --git a/crates/ruma-events/src/room/topic.rs b/crates/ruma-common/src/events/room/topic.rs similarity index 100% rename from crates/ruma-events/src/room/topic.rs rename to crates/ruma-common/src/events/room/topic.rs diff --git a/crates/ruma-events/src/room_key.rs b/crates/ruma-common/src/events/room_key.rs similarity index 98% rename from crates/ruma-events/src/room_key.rs rename to crates/ruma-common/src/events/room_key.rs index f81696f1..a960dc6a 100644 --- a/crates/ruma-events/src/room_key.rs +++ b/crates/ruma-common/src/events/room_key.rs @@ -47,7 +47,7 @@ mod tests { use serde_json::{json, to_value as to_json_value}; use super::ToDeviceRoomKeyEventContent; - use crate::ToDeviceEvent; + use crate::events::ToDeviceEvent; #[test] fn serialization() { diff --git a/crates/ruma-events/src/room_key_request.rs b/crates/ruma-common/src/events/room_key_request.rs similarity index 100% rename from crates/ruma-events/src/room_key_request.rs rename to crates/ruma-common/src/events/room_key_request.rs diff --git a/crates/ruma-events/src/secret.rs b/crates/ruma-common/src/events/secret.rs similarity index 100% rename from crates/ruma-events/src/secret.rs rename to crates/ruma-common/src/events/secret.rs diff --git a/crates/ruma-events/src/secret/request.rs b/crates/ruma-common/src/events/secret/request.rs similarity index 100% rename from crates/ruma-events/src/secret/request.rs rename to crates/ruma-common/src/events/secret/request.rs diff --git a/crates/ruma-events/src/secret/send.rs b/crates/ruma-common/src/events/secret/send.rs similarity index 100% rename from crates/ruma-events/src/secret/send.rs rename to crates/ruma-common/src/events/secret/send.rs diff --git a/crates/ruma-events/src/space.rs b/crates/ruma-common/src/events/space.rs similarity index 100% rename from crates/ruma-events/src/space.rs rename to crates/ruma-common/src/events/space.rs diff --git a/crates/ruma-events/src/space/child.rs b/crates/ruma-common/src/events/space/child.rs similarity index 100% rename from crates/ruma-events/src/space/child.rs rename to crates/ruma-common/src/events/space/child.rs diff --git a/crates/ruma-events/src/space/parent.rs b/crates/ruma-common/src/events/space/parent.rs similarity index 100% rename from crates/ruma-events/src/space/parent.rs rename to crates/ruma-common/src/events/space/parent.rs diff --git a/crates/ruma-events/src/sticker.rs b/crates/ruma-common/src/events/sticker.rs similarity index 96% rename from crates/ruma-events/src/sticker.rs rename to crates/ruma-common/src/events/sticker.rs index 4ac8adb3..c16506cf 100644 --- a/crates/ruma-events/src/sticker.rs +++ b/crates/ruma-common/src/events/sticker.rs @@ -6,7 +6,7 @@ use ruma_identifiers::MxcUri; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::room::ImageInfo; +use crate::events::room::ImageInfo; /// The content of an `m.sticker` event. /// diff --git a/crates/ruma-events/src/tag.rs b/crates/ruma-common/src/events/tag.rs similarity index 100% rename from crates/ruma-events/src/tag.rs rename to crates/ruma-common/src/events/tag.rs diff --git a/crates/ruma-events/src/typing.rs b/crates/ruma-common/src/events/typing.rs similarity index 100% rename from crates/ruma-events/src/typing.rs rename to crates/ruma-common/src/events/typing.rs diff --git a/crates/ruma-events/src/unsigned.rs b/crates/ruma-common/src/events/unsigned.rs similarity index 98% rename from crates/ruma-events/src/unsigned.rs rename to crates/ruma-common/src/events/unsigned.rs index f9f44cf7..72ebd3d2 100644 --- a/crates/ruma-events/src/unsigned.rs +++ b/crates/ruma-common/src/events/unsigned.rs @@ -3,8 +3,8 @@ use ruma_identifiers::TransactionId; use serde::{Deserialize, Serialize}; #[cfg(feature = "unstable-msc2675")] -use crate::relation::Relations; -use crate::room::redaction::SyncRoomRedactionEvent; +use super::relation::Relations; +use super::room::redaction::SyncRoomRedactionEvent; /// Extra information about an event that is not incorporated into the event's hash. #[derive(Clone, Debug, Default, Deserialize, Serialize)] diff --git a/crates/ruma-common/src/lib.rs b/crates/ruma-common/src/lib.rs index 509ede1d..24dcde9a 100644 --- a/crates/ruma-common/src/lib.rs +++ b/crates/ruma-common/src/lib.rs @@ -2,6 +2,7 @@ #![doc(html_logo_url = "https://www.ruma.io/images/logo.png")] //! Common types for the Ruma crates. +#![recursion_limit = "1024"] #![warn(missing_docs)] #![cfg_attr(docsrs, feature(doc_auto_cfg))] @@ -10,11 +11,17 @@ compile_error!( "ruma_common's `client` and `server` Cargo features only exist as a workaround are not meant to be disabled" ); +// Hack to allow both ruma-common itself and external crates (or tests) to use procedural macros +// that expect `ruma_common` to exist in the prelude. +extern crate self as ruma_common; + #[cfg(feature = "api")] pub mod api; pub mod authentication; pub mod directory; pub mod encryption; +#[cfg(feature = "events")] +pub mod events; pub mod power_levels; pub mod presence; pub mod push; @@ -32,7 +39,7 @@ pub use time::{MilliSecondsSinceUnixEpoch, SecondsSinceUnixEpoch}; // this crate. Used for string enums because their `_Custom` variant can't be // truly private (only `#[doc(hidden)]`). #[doc(hidden)] -#[derive(Clone, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct PrivOwnedStr(Box); impl fmt::Debug for PrivOwnedStr { diff --git a/crates/ruma-common/tests/api/ruma_api_macros.rs b/crates/ruma-common/tests/api/ruma_api_macros.rs index cc769462..24647260 100644 --- a/crates/ruma-common/tests/api/ruma_api_macros.rs +++ b/crates/ruma-common/tests/api/ruma_api_macros.rs @@ -1,8 +1,10 @@ #![allow(clippy::exhaustive_structs)] pub mod some_endpoint { - use ruma_common::api::ruma_api; - use ruma_events::{tag::TagEvent, AnyRoomEvent}; + use ruma_common::{ + api::ruma_api, + events::{tag::TagEvent, AnyRoomEvent}, + }; use ruma_identifiers::UserId; use ruma_serde::Raw; diff --git a/crates/ruma-common/tests/api/ui/01-api-sanity-check.rs b/crates/ruma-common/tests/api/ui/01-api-sanity-check.rs index e3103c1b..272fcafa 100644 --- a/crates/ruma-common/tests/api/ui/01-api-sanity-check.rs +++ b/crates/ruma-common/tests/api/ui/01-api-sanity-check.rs @@ -1,5 +1,5 @@ use ruma_common::api::ruma_api; -use ruma_events::{tag::TagEvent, AnyRoomEvent}; +use ruma_common::events::{tag::TagEvent, AnyRoomEvent}; use ruma_serde::Raw; ruma_api! { diff --git a/crates/ruma-events/tests/compat.rs b/crates/ruma-common/tests/events/compat.rs similarity index 92% rename from crates/ruma-events/tests/compat.rs rename to crates/ruma-common/tests/events/compat.rs index 3d523650..73446120 100644 --- a/crates/ruma-events/tests/compat.rs +++ b/crates/ruma-common/tests/events/compat.rs @@ -1,7 +1,7 @@ #![cfg(feature = "compat")] use matches::assert_matches; -use ruma_events::room::topic::{RoomTopicEvent, RoomTopicEventContent}; +use ruma_common::events::room::topic::{RoomTopicEvent, RoomTopicEventContent}; use serde_json::{from_value as from_json_value, json}; #[test] diff --git a/crates/ruma-events/tests/enums.rs b/crates/ruma-common/tests/events/enums.rs similarity index 94% rename from crates/ruma-events/tests/enums.rs rename to crates/ruma-common/tests/events/enums.rs index 01210ef1..9783083e 100644 --- a/crates/ruma-events/tests/enums.rs +++ b/crates/ruma-common/tests/events/enums.rs @@ -1,21 +1,23 @@ use js_int::uint; use matches::assert_matches; -use ruma_common::MilliSecondsSinceUnixEpoch; use ruma_identifiers::{event_id, room_alias_id, room_id, user_id}; use ruma_serde::test::serde_json_eq; use serde_json::{from_value as from_json_value, json, Value as JsonValue}; -use ruma_events::{ - room::{ - aliases::RoomAliasesEventContent, - message::{MessageType, RoomMessageEventContent, TextMessageEventContent}, - power_levels::RoomPowerLevelsEventContent, +use ruma_common::{ + events::{ + room::{ + aliases::RoomAliasesEventContent, + message::{MessageType, RoomMessageEventContent, TextMessageEventContent}, + power_levels::RoomPowerLevelsEventContent, + }, + AnyEphemeralRoomEvent, AnyMessageLikeEvent, AnyRoomEvent, AnyStateEvent, + AnyStateEventContent, AnySyncMessageLikeEvent, AnySyncRoomEvent, AnySyncStateEvent, + EphemeralRoomEventType, EventType, GlobalAccountDataEventType, MessageLikeEvent, + MessageLikeEventType, RoomAccountDataEventType, StateEvent, StateEventType, + SyncMessageLikeEvent, SyncStateEvent, ToDeviceEventType, Unsigned, }, - AnyEphemeralRoomEvent, AnyMessageLikeEvent, AnyRoomEvent, AnyStateEvent, AnyStateEventContent, - AnySyncMessageLikeEvent, AnySyncRoomEvent, AnySyncStateEvent, EphemeralRoomEventType, - EventType, GlobalAccountDataEventType, MessageLikeEvent, MessageLikeEventType, - RoomAccountDataEventType, StateEvent, StateEventType, SyncMessageLikeEvent, SyncStateEvent, - ToDeviceEventType, Unsigned, + MilliSecondsSinceUnixEpoch, }; fn message_event() -> JsonValue { diff --git a/crates/ruma-events/tests/ephemeral_event.rs b/crates/ruma-common/tests/events/ephemeral_event.rs similarity index 99% rename from crates/ruma-events/tests/ephemeral_event.rs rename to crates/ruma-common/tests/events/ephemeral_event.rs index 5c2d2608..ccce6e4e 100644 --- a/crates/ruma-events/tests/ephemeral_event.rs +++ b/crates/ruma-common/tests/events/ephemeral_event.rs @@ -5,7 +5,7 @@ use ruma_common::{receipt::ReceiptType, MilliSecondsSinceUnixEpoch}; use ruma_identifiers::{event_id, room_id, user_id}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; -use ruma_events::{ +use ruma_common::events::{ receipt::{Receipt, ReceiptEventContent}, typing::TypingEventContent, AnyEphemeralRoomEvent, EphemeralRoomEvent, diff --git a/crates/ruma-events/tests/event.rs b/crates/ruma-common/tests/events/event.rs similarity index 53% rename from crates/ruma-events/tests/event.rs rename to crates/ruma-common/tests/events/event.rs index d9dfa4fa..d417dfa3 100644 --- a/crates/ruma-events/tests/event.rs +++ b/crates/ruma-common/tests/events/event.rs @@ -4,7 +4,7 @@ fn ui() { // rustc overflows when compiling this see: // https://github.com/rust-lang/rust/issues/55779 // there is a workaround in the file. - t.pass("tests/ui/04-event-sanity-check.rs"); - t.compile_fail("tests/ui/05-named-fields.rs"); - t.compile_fail("tests/ui/06-no-content-field.rs"); + t.pass("tests/events/ui/04-event-sanity-check.rs"); + t.compile_fail("tests/events/ui/05-named-fields.rs"); + t.compile_fail("tests/events/ui/06-no-content-field.rs"); } diff --git a/crates/ruma-common/tests/events/event_content.rs b/crates/ruma-common/tests/events/event_content.rs new file mode 100644 index 00000000..1ab09d34 --- /dev/null +++ b/crates/ruma-common/tests/events/event_content.rs @@ -0,0 +1,7 @@ +#[test] +fn ui() { + let t = trybuild::TestCases::new(); + t.pass("tests/events/ui/01-content-sanity-check.rs"); + t.compile_fail("tests/events/ui/02-no-event-type.rs"); + t.compile_fail("tests/events/ui/03-invalid-event-type.rs"); +} diff --git a/crates/ruma-common/tests/events/event_content_enum.rs b/crates/ruma-common/tests/events/event_content_enum.rs new file mode 100644 index 00000000..56b06531 --- /dev/null +++ b/crates/ruma-common/tests/events/event_content_enum.rs @@ -0,0 +1,6 @@ +#[test] +fn ui() { + let t = trybuild::TestCases::new(); + t.pass("tests/events/ui/07-enum-sanity-check.rs"); + t.compile_fail("tests/events/ui/08-enum-invalid-path.rs"); +} diff --git a/crates/ruma-events/tests/event_enums.rs b/crates/ruma-common/tests/events/event_enums.rs similarity index 89% rename from crates/ruma-events/tests/event_enums.rs rename to crates/ruma-common/tests/events/event_enums.rs index 96db50ea..026153dc 100644 --- a/crates/ruma-events/tests/event_enums.rs +++ b/crates/ruma-common/tests/events/event_enums.rs @@ -4,7 +4,7 @@ use ruma_common::MilliSecondsSinceUnixEpoch; use ruma_identifiers::{event_id, room_id, user_id}; use serde_json::{from_value as from_json_value, json}; -use ruma_events::{ +use ruma_common::events::{ call::{answer::CallAnswerEventContent, SessionDescription, SessionDescriptionType}, AnyMessageLikeEvent, MessageLikeEvent, }; @@ -12,9 +12,9 @@ use ruma_events::{ #[test] fn ui() { let t = trybuild::TestCases::new(); - t.pass("tests/ui/07-enum-sanity-check.rs"); - t.compile_fail("tests/ui/08-enum-invalid-path.rs"); - t.compile_fail("tests/ui/09-enum-invalid-kind.rs"); + t.pass("tests/events/ui/07-enum-sanity-check.rs"); + t.compile_fail("tests/events/ui/08-enum-invalid-path.rs"); + t.compile_fail("tests/events/ui/09-enum-invalid-kind.rs"); } #[test] diff --git a/crates/ruma-events/tests/file.rs b/crates/ruma-common/tests/events/file.rs similarity index 95% rename from crates/ruma-events/tests/file.rs rename to crates/ruma-common/tests/events/file.rs index 7b667d8b..c75d2707 100644 --- a/crates/ruma-events/tests/file.rs +++ b/crates/ruma-common/tests/events/file.rs @@ -3,15 +3,17 @@ use assign::assign; use js_int::uint; use matches::assert_matches; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - file::{EncryptedContentInit, FileContent, FileContentInfo, FileEventContent}, - message::MessageContent, - room::{ - message::{InReplyTo, Relation}, - JsonWebKeyInit, +use ruma_common::{ + events::{ + file::{EncryptedContentInit, FileContent, FileContentInfo, FileEventContent}, + message::MessageContent, + room::{ + message::{InReplyTo, Relation}, + JsonWebKeyInit, + }, + AnyMessageLikeEvent, MessageLikeEvent, Unsigned, }, - AnyMessageLikeEvent, MessageLikeEvent, Unsigned, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{event_id, mxc_uri, room_id, user_id}; use ruma_serde::Base64; diff --git a/crates/ruma-events/tests/initial_state.rs b/crates/ruma-common/tests/events/initial_state.rs similarity index 88% rename from crates/ruma-events/tests/initial_state.rs rename to crates/ruma-common/tests/events/initial_state.rs index e248bb0d..32797fb3 100644 --- a/crates/ruma-events/tests/initial_state.rs +++ b/crates/ruma-common/tests/events/initial_state.rs @@ -1,7 +1,7 @@ use std::convert::TryFrom; use matches::assert_matches; -use ruma_events::{AnyInitialStateEvent, InitialStateEvent}; +use ruma_common::events::{AnyInitialStateEvent, InitialStateEvent}; use ruma_identifiers::RoomName; use serde_json::json; diff --git a/crates/ruma-events/tests/message.rs b/crates/ruma-common/tests/events/message.rs similarity index 97% rename from crates/ruma-events/tests/message.rs rename to crates/ruma-common/tests/events/message.rs index 6e8e3cd3..2ab8576e 100644 --- a/crates/ruma-events/tests/message.rs +++ b/crates/ruma-common/tests/events/message.rs @@ -3,13 +3,15 @@ use assign::assign; use js_int::uint; use matches::assert_matches; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - emote::EmoteEventContent, - message::MessageEventContent, - notice::NoticeEventContent, - room::message::{InReplyTo, Relation}, - AnyMessageLikeEvent, MessageLikeEvent, Unsigned, +use ruma_common::{ + events::{ + emote::EmoteEventContent, + message::MessageEventContent, + notice::NoticeEventContent, + room::message::{InReplyTo, Relation}, + AnyMessageLikeEvent, MessageLikeEvent, Unsigned, + }, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{event_id, room_id, user_id}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-events/tests/message_event.rs b/crates/ruma-common/tests/events/message_event.rs similarity index 95% rename from crates/ruma-events/tests/message_event.rs rename to crates/ruma-common/tests/events/message_event.rs index 9d1eb185..42648521 100644 --- a/crates/ruma-events/tests/message_event.rs +++ b/crates/ruma-common/tests/events/message_event.rs @@ -1,13 +1,15 @@ use assign::assign; use js_int::{uint, UInt}; use matches::assert_matches; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - call::{answer::CallAnswerEventContent, SessionDescription, SessionDescriptionType}, - room::{ImageInfo, ThumbnailInfo}, - sticker::StickerEventContent, - AnyMessageLikeEvent, AnyMessageLikeEventContent, AnySyncMessageLikeEvent, MessageLikeEvent, - RawExt, Unsigned, +use ruma_common::{ + events::{ + call::{answer::CallAnswerEventContent, SessionDescription, SessionDescriptionType}, + room::{ImageInfo, ThumbnailInfo}, + sticker::StickerEventContent, + AnyMessageLikeEvent, AnyMessageLikeEventContent, AnySyncMessageLikeEvent, MessageLikeEvent, + RawExt, Unsigned, + }, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{event_id, mxc_uri, room_id, user_id}; use ruma_serde::Raw; diff --git a/crates/ruma-common/tests/events/mod.rs b/crates/ruma-common/tests/events/mod.rs new file mode 100644 index 00000000..948cd884 --- /dev/null +++ b/crates/ruma-common/tests/events/mod.rs @@ -0,0 +1,20 @@ +#![cfg(feature = "events")] + +mod compat; +mod enums; +mod ephemeral_event; +mod event; +mod event_content; +mod event_content_enum; +mod event_enums; +mod file; +mod initial_state; +mod message; +mod message_event; +mod pdu; +mod redacted; +mod redaction; +mod room_message; +mod state_event; +mod stripped; +mod to_device; diff --git a/crates/ruma-events/tests/pdu.rs b/crates/ruma-common/tests/events/pdu.rs similarity index 98% rename from crates/ruma-events/tests/pdu.rs rename to crates/ruma-common/tests/events/pdu.rs index 04ae1fb0..8b5e5eac 100644 --- a/crates/ruma-events/tests/pdu.rs +++ b/crates/ruma-common/tests/events/pdu.rs @@ -2,10 +2,12 @@ use std::{collections::BTreeMap, convert::TryInto}; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - pdu::{EventHash, Pdu, RoomV1Pdu, RoomV3Pdu}, - EventType, +use ruma_common::{ + events::{ + pdu::{EventHash, Pdu, RoomV1Pdu, RoomV3Pdu}, + EventType, + }, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{event_id, room_id, server_name, server_signing_key_id, user_id}; use serde_json::{ diff --git a/crates/ruma-events/tests/redacted.rs b/crates/ruma-common/tests/events/redacted.rs similarity index 93% rename from crates/ruma-events/tests/redacted.rs rename to crates/ruma-common/tests/events/redacted.rs index c9d6d212..7b68bf1b 100644 --- a/crates/ruma-events/tests/redacted.rs +++ b/crates/ruma-common/tests/events/redacted.rs @@ -1,17 +1,19 @@ use js_int::uint; use matches::assert_matches; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - room::{ - aliases::RedactedRoomAliasesEventContent, - create::{RedactedRoomCreateEventContent, RoomCreateEventContent}, - message::{RedactedRoomMessageEventContent, RoomMessageEventContent}, - redaction::{RoomRedactionEventContent, SyncRoomRedactionEvent}, +use ruma_common::{ + events::{ + room::{ + aliases::RedactedRoomAliasesEventContent, + create::{RedactedRoomCreateEventContent, RoomCreateEventContent}, + message::{RedactedRoomMessageEventContent, RoomMessageEventContent}, + redaction::{RoomRedactionEventContent, SyncRoomRedactionEvent}, + }, + AnyMessageLikeEvent, AnyRedactedMessageLikeEvent, AnyRedactedSyncMessageLikeEvent, + AnyRedactedSyncStateEvent, AnyRoomEvent, AnySyncRoomEvent, EventContent, Redact, + RedactContent, RedactedMessageLikeEvent, RedactedSyncMessageLikeEvent, + RedactedSyncStateEvent, RedactedUnsigned, Unsigned, }, - AnyMessageLikeEvent, AnyRedactedMessageLikeEvent, AnyRedactedSyncMessageLikeEvent, - AnyRedactedSyncStateEvent, AnyRoomEvent, AnySyncRoomEvent, EventContent, Redact, RedactContent, - RedactedMessageLikeEvent, RedactedSyncMessageLikeEvent, RedactedSyncStateEvent, - RedactedUnsigned, Unsigned, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{event_id, room_id, user_id, RoomVersionId}; use serde_json::{ diff --git a/crates/ruma-events/tests/redaction.rs b/crates/ruma-common/tests/events/redaction.rs similarity index 91% rename from crates/ruma-events/tests/redaction.rs rename to crates/ruma-common/tests/events/redaction.rs index dc93b385..2e61fe26 100644 --- a/crates/ruma-events/tests/redaction.rs +++ b/crates/ruma-common/tests/events/redaction.rs @@ -1,9 +1,11 @@ use js_int::uint; use matches::assert_matches; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - room::redaction::{RoomRedactionEvent, RoomRedactionEventContent}, - AnyMessageLikeEvent, Unsigned, +use ruma_common::{ + events::{ + room::redaction::{RoomRedactionEvent, RoomRedactionEventContent}, + AnyMessageLikeEvent, Unsigned, + }, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{event_id, room_id, user_id}; use serde_json::{ diff --git a/crates/ruma-events/tests/room_message.rs b/crates/ruma-common/tests/events/room_message.rs similarity index 96% rename from crates/ruma-events/tests/room_message.rs rename to crates/ruma-common/tests/events/room_message.rs index 6e0a5a64..230cfabe 100644 --- a/crates/ruma-events/tests/room_message.rs +++ b/crates/ruma-common/tests/events/room_message.rs @@ -3,14 +3,16 @@ use std::borrow::Cow; use assign::assign; use js_int::uint; use matches::assert_matches; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - key::verification::VerificationMethod, - room::message::{ - AudioMessageEventContent, InReplyTo, KeyVerificationRequestEventContent, MessageType, - Relation, RoomMessageEvent, RoomMessageEventContent, TextMessageEventContent, +use ruma_common::{ + events::{ + key::verification::VerificationMethod, + room::message::{ + AudioMessageEventContent, InReplyTo, KeyVerificationRequestEventContent, MessageType, + Relation, RoomMessageEvent, RoomMessageEventContent, TextMessageEventContent, + }, + Unsigned, }, - Unsigned, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{event_id, mxc_uri, room_id, user_id, DeviceId}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; @@ -249,7 +251,7 @@ fn edit_deserialization_061() { #[test] #[cfg(feature = "unstable-msc2676")] fn edit_deserialization_future() { - use ruma_events::room::message::Replacement; + use ruma_common::events::room::message::Replacement; let ev_id = event_id!("$1598361704261elfgc:localhost"); let json_data = json!({ diff --git a/crates/ruma-events/tests/state_event.rs b/crates/ruma-common/tests/events/state_event.rs similarity index 96% rename from crates/ruma-events/tests/state_event.rs rename to crates/ruma-common/tests/events/state_event.rs index c76470ba..b67c0e68 100644 --- a/crates/ruma-events/tests/state_event.rs +++ b/crates/ruma-common/tests/events/state_event.rs @@ -1,14 +1,16 @@ use js_int::{uint, UInt}; use matches::assert_matches; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - room::{ - aliases::RoomAliasesEventContent, - avatar::{ImageInfo, RoomAvatarEventContent}, - ThumbnailInfo, +use ruma_common::{ + events::{ + room::{ + aliases::RoomAliasesEventContent, + avatar::{ImageInfo, RoomAvatarEventContent}, + ThumbnailInfo, + }, + AnyRoomEvent, AnyStateEvent, AnyStateEventContent, AnySyncStateEvent, RawExt, StateEvent, + SyncStateEvent, Unsigned, }, - AnyRoomEvent, AnyStateEvent, AnyStateEventContent, AnySyncStateEvent, RawExt, StateEvent, - SyncStateEvent, Unsigned, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{event_id, mxc_uri, room_alias_id, room_id, user_id}; use ruma_serde::Raw; diff --git a/crates/ruma-events/tests/stripped.rs b/crates/ruma-common/tests/events/stripped.rs similarity index 99% rename from crates/ruma-events/tests/stripped.rs rename to crates/ruma-common/tests/events/stripped.rs index 2c315091..17a1067e 100644 --- a/crates/ruma-events/tests/stripped.rs +++ b/crates/ruma-common/tests/events/stripped.rs @@ -1,7 +1,7 @@ use std::convert::TryFrom; use js_int::uint; -use ruma_events::{ +use ruma_common::events::{ room::{join_rules::JoinRule, topic::RoomTopicEventContent}, AnyStrippedStateEvent, StrippedStateEvent, }; diff --git a/crates/ruma-events/tests/to_device.rs b/crates/ruma-common/tests/events/to_device.rs similarity index 91% rename from crates/ruma-events/tests/to_device.rs rename to crates/ruma-common/tests/events/to_device.rs index 41fb34c6..c2b2d9bd 100644 --- a/crates/ruma-events/tests/to_device.rs +++ b/crates/ruma-common/tests/events/to_device.rs @@ -1,4 +1,4 @@ -use ruma_events::{room_key::ToDeviceRoomKeyEventContent, ToDeviceEvent}; +use ruma_common::events::{room_key::ToDeviceRoomKeyEventContent, ToDeviceEvent}; use ruma_identifiers::{room_id, user_id, EventEncryptionAlgorithm}; use serde_json::{json, to_value as to_json_value}; diff --git a/crates/ruma-events/tests/ui/01-content-sanity-check.rs b/crates/ruma-common/tests/events/ui/01-content-sanity-check.rs similarity index 100% rename from crates/ruma-events/tests/ui/01-content-sanity-check.rs rename to crates/ruma-common/tests/events/ui/01-content-sanity-check.rs diff --git a/crates/ruma-events/tests/ui/02-no-event-type.rs b/crates/ruma-common/tests/events/ui/02-no-event-type.rs similarity index 100% rename from crates/ruma-events/tests/ui/02-no-event-type.rs rename to crates/ruma-common/tests/events/ui/02-no-event-type.rs diff --git a/crates/ruma-events/tests/ui/02-no-event-type.stderr b/crates/ruma-common/tests/events/ui/02-no-event-type.stderr similarity index 100% rename from crates/ruma-events/tests/ui/02-no-event-type.stderr rename to crates/ruma-common/tests/events/ui/02-no-event-type.stderr diff --git a/crates/ruma-events/tests/ui/03-invalid-event-type.rs b/crates/ruma-common/tests/events/ui/03-invalid-event-type.rs similarity index 100% rename from crates/ruma-events/tests/ui/03-invalid-event-type.rs rename to crates/ruma-common/tests/events/ui/03-invalid-event-type.rs diff --git a/crates/ruma-events/tests/ui/03-invalid-event-type.stderr b/crates/ruma-common/tests/events/ui/03-invalid-event-type.stderr similarity index 100% rename from crates/ruma-events/tests/ui/03-invalid-event-type.stderr rename to crates/ruma-common/tests/events/ui/03-invalid-event-type.stderr diff --git a/crates/ruma-events/tests/ui/04-event-sanity-check.rs b/crates/ruma-common/tests/events/ui/04-event-sanity-check.rs similarity index 91% rename from crates/ruma-events/tests/ui/04-event-sanity-check.rs rename to crates/ruma-common/tests/events/ui/04-event-sanity-check.rs index 6f081fe5..4872602c 100644 --- a/crates/ruma-events/tests/ui/04-event-sanity-check.rs +++ b/crates/ruma-common/tests/events/ui/04-event-sanity-check.rs @@ -4,7 +4,7 @@ extern crate serde; use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{StateEventContent, Unsigned}; +use ruma_common::events::{StateEventContent, Unsigned}; use ruma_macros::Event; use ruma_identifiers::{EventId, RoomId, UserId}; diff --git a/crates/ruma-events/tests/ui/05-named-fields.rs b/crates/ruma-common/tests/events/ui/05-named-fields.rs similarity index 75% rename from crates/ruma-events/tests/ui/05-named-fields.rs rename to crates/ruma-common/tests/events/ui/05-named-fields.rs index 057cbcf4..9fb1defb 100644 --- a/crates/ruma-events/tests/ui/05-named-fields.rs +++ b/crates/ruma-common/tests/events/ui/05-named-fields.rs @@ -1,4 +1,4 @@ -use ruma_events::StateEventContent; +use ruma_common::events::StateEventContent; use ruma_macros::Event; /// State event. diff --git a/crates/ruma-events/tests/ui/05-named-fields.stderr b/crates/ruma-common/tests/events/ui/05-named-fields.stderr similarity index 100% rename from crates/ruma-events/tests/ui/05-named-fields.stderr rename to crates/ruma-common/tests/events/ui/05-named-fields.stderr diff --git a/crates/ruma-events/tests/ui/06-no-content-field.rs b/crates/ruma-common/tests/events/ui/06-no-content-field.rs similarity index 78% rename from crates/ruma-events/tests/ui/06-no-content-field.rs rename to crates/ruma-common/tests/events/ui/06-no-content-field.rs index 5c05ce16..ecab017f 100644 --- a/crates/ruma-events/tests/ui/06-no-content-field.rs +++ b/crates/ruma-common/tests/events/ui/06-no-content-field.rs @@ -1,4 +1,4 @@ -use ruma_events::StateEventContent; +use ruma_common::events::StateEventContent; use ruma_macros::Event; /// State event. diff --git a/crates/ruma-events/tests/ui/06-no-content-field.stderr b/crates/ruma-common/tests/events/ui/06-no-content-field.stderr similarity index 100% rename from crates/ruma-events/tests/ui/06-no-content-field.stderr rename to crates/ruma-common/tests/events/ui/06-no-content-field.stderr diff --git a/crates/ruma-events/tests/ui/07-enum-sanity-check.rs b/crates/ruma-common/tests/events/ui/07-enum-sanity-check.rs similarity index 100% rename from crates/ruma-events/tests/ui/07-enum-sanity-check.rs rename to crates/ruma-common/tests/events/ui/07-enum-sanity-check.rs diff --git a/crates/ruma-events/tests/ui/08-enum-invalid-path.rs b/crates/ruma-common/tests/events/ui/08-enum-invalid-path.rs similarity index 100% rename from crates/ruma-events/tests/ui/08-enum-invalid-path.rs rename to crates/ruma-common/tests/events/ui/08-enum-invalid-path.rs diff --git a/crates/ruma-events/tests/ui/08-enum-invalid-path.stderr b/crates/ruma-common/tests/events/ui/08-enum-invalid-path.stderr similarity index 64% rename from crates/ruma-events/tests/ui/08-enum-invalid-path.stderr rename to crates/ruma-common/tests/events/ui/08-enum-invalid-path.stderr index 6656a3d9..8cb531d0 100644 --- a/crates/ruma-events/tests/ui/08-enum-invalid-path.stderr +++ b/crates/ruma-common/tests/events/ui/08-enum-invalid-path.stderr @@ -4,8 +4,8 @@ error: well-known matrix events have to start with `m.` found `not.a.path` 11 | "not.a.path", | ^^^^^^^^^^^^ -error[E0433]: failed to resolve: could not find `not` in `ruma_events` +error[E0433]: failed to resolve: could not find `not` in `events` --> $DIR/08-enum-invalid-path.rs:5:9 | 5 | "m.not.a.path", - | ^^^^^^^^^^^^^^ could not find `not` in `ruma_events` + | ^^^^^^^^^^^^^^ could not find `not` in `events` diff --git a/crates/ruma-events/tests/ui/09-enum-invalid-kind.rs b/crates/ruma-common/tests/events/ui/09-enum-invalid-kind.rs similarity index 100% rename from crates/ruma-events/tests/ui/09-enum-invalid-kind.rs rename to crates/ruma-common/tests/events/ui/09-enum-invalid-kind.rs diff --git a/crates/ruma-events/tests/ui/09-enum-invalid-kind.stderr b/crates/ruma-common/tests/events/ui/09-enum-invalid-kind.stderr similarity index 100% rename from crates/ruma-events/tests/ui/09-enum-invalid-kind.stderr rename to crates/ruma-common/tests/events/ui/09-enum-invalid-kind.stderr diff --git a/crates/ruma-common/tests/tests.rs b/crates/ruma-common/tests/tests.rs index b32f9e29..d29ebbf0 100644 --- a/crates/ruma-common/tests/tests.rs +++ b/crates/ruma-common/tests/tests.rs @@ -1 +1,2 @@ mod api; +mod events; diff --git a/crates/ruma-events/CHANGELOG.md b/crates/ruma-events/CHANGELOG.md deleted file mode 100644 index 6551a26a..00000000 --- a/crates/ruma-events/CHANGELOG.md +++ /dev/null @@ -1,544 +0,0 @@ -# [unreleased] - -Breaking changes: - -* Rename `MessageEvent` and the associated types and traits to `MessageLikeEvent` - -Improvements: - -* Add unstable support for extensible message events: - * text, notice and emote ([MSC1767](https://github.com/matrix-org/matrix-spec-proposals/pull/1767)) - * file ([MSC3551](https://github.com/matrix-org/matrix-spec-proposals/pull/3551)) - -# 0.26.0 - -Breaking changes: - -* Bump versions of `ruma-common`, `ruma-idenfiers` - -# 0.25.0 - -Breaking changes: - -* Remove `RedactedStrippedStateEvent` - * It was not used anywhere since stripped state events are never actually redacted -* Use `Box` instead of `JsonValue` for PDU `content` field -* Require `room::message::MessageType` to always contain a body - * The `new` constructor now also has a body parameter -* Rename `*ToDeviceEventContent` structs to `ToDevice*Content` -* Remove unneeded redacted event content enums -* Update `reply` and `html_reply` types to `impl Display` on `RoomMessageEventContent`'s reply - constructors -* Remove the `custom` module, which has been redundant for a while - * If you are still using it and are unclear on the upgrade path, please get in touch - -Improvements: - -* Add `is_allowed` to `RoomServerAclEventContent` -* Add `room::message::MessageType::body` accessor method -* Implement `Redact` for event structs (in addition to `Any` event enums) -* Add `room::message::RoomMessageEventContent::{body, msgtype}` accessor methods -* Move `room::message::MessageType::VerificationRequest` out of `unstable-pre-spec` -* Move MSC implementations from `unstable-pre-spec` to per-msc features: - ``` - unstable-msc2448 - unstable-msc2675 - unstable-msc2676 - unstable-msc2677 - ``` - -# 0.24.6 - -Improvements: - -* Add (unstable) support for [MSC3083](https://github.com/matrix-org/matrix-doc/blob/main/proposals/3083-restricted-rooms.md) - -# 0.24.5 - -Improvements: - -* Add `From` implementations for event and event content enums -* It's now an error for a `room::message::Relation` to be `Replaces` without - there being `new_content` - * Previously, this used to set the relation to `None` -* Unsupported relations are now deserialized to `relates_to: Some(_)` instead of - `None` - * It's not possible to inspect the inner value though - -# 0.24.4 - -Improvements: - -* Add a workaround for synapse putting `prev_content` in unsigned (only active - if the `compat` feature is enabled) - -# 0.24.3 - -Improvements: - -* Add unstable support for `m.secret.request` and `m.secret.send` events - -# 0.24.2 - -Improvements: - -* Add missing constructor and `From` implementation for - `EncryptedToDeviceEventContent` - -# 0.24.1 - -Breaking changes: - -* `room::name::NameEventContent` now uses a custom `RoomNameBox` type for its - `name` field and makes it public, in response the constructor and `name` - accessor had their types updated too -* Replace `InvalidEvent` by a more specific `FromStringError` for room name - validation -* Remove unused `FromStrError` -* Remove deprecated method `room::name::NameEventContent::name` -* Make `encrypted::EncryptedToDeviceEventContent` its own type instead of a type - alias for `EncryptedEventContent` - * It doesn't have the `relates_to` field `EncryptedEventContent` has -* Upgrade dependencies - -Improvements: - -* Add the `StaticEventContent` trait for abstracting over event content struct - types (with a type known at compile-time) - -# 0.24.0 - -Yanked, was released too early missing another important breaking change. - -# 0.23.3 - -Improvements: - -* Add unstable blurhash field to member event content struct -* Add constructors for the unstable spaces parent and child event content types - -Bug fixes: - -* Remove `new_content` from the plain-text part of `m.encrypted` events - * It is supposed to go into the encrypted payload, but we expected it in the - plain-text part before. - * This is technically a breaking change but since that can only be observed - behind an unstable feature and this change doesn't break matrix-sdk, it's - made in a point release. - -# 0.23.2 - -Bug fixes: - -* Fix reaction event (de)serialization (was broken in 0.23.0) - -# 0.23.1 - -Improvements: - -* Allow the macros exported by ruma-events to be used by crates that depend on matrix-sdk, but not - (directly) on ruma or ruma-events - -# 0.23.0 - -Breaking changes: - -* Rename `key::verification::AcceptMethod::{MSasV1 => SasV1}` -* As above, drop `M` prefix from `key::verification::VerificationMethod` variants - * Additionally, fix the name of the QR code one (`QrScanShowV1` to `QrCodeScanV1`) -* Remove `room::power_level::NotificationPowerLevels`, now found in `ruma_common::power_levels` - (or `ruma::power_levels`) -* Remove `Custom` variant from event enums. If you were using this, please get in touch. -* Remove `Custom` variant from `key::verification::accept::AcceptMethod` and - `key::verification::start::StartMethod`. -* Rename `relation` field in some events to `relates_to` -* All events that support relations now have their own `Relation` types (the `room::relationships` - module has been removed) - * The `room::encryption` relation type can represent any kind of relation and has `From` - implementations so any other relation can be converted to it - -Improvements: - -* Add types for decrypted `m.room.encryption` event payloads (`DecryptedOlmV1Event`, - `DecryptedMegolmV1Event`) - * Currently, these don't have corresponding enums (and they might never get ones), instead to - represent a decrypted event payload with an unknown event type use `AnyMessageEventContent` for - the generic parameter - -# 0.22.2 - -Improvements: - -* Add unstable support for `m.space.child` and `m.space.parent` events - -# 0.22.1 - -Bug fixes: - -* Fix serialized format of `DummyEventContent` - -# 0.22.0 - -Breaking changes: - -* Change the structure of `StartEventContent` so that we can access transaction - ids without the need to understand the concrete method. -* Change `get_message_events` limit field type from `Option` to `UInt` -* Add `alt_aliases` to `CanonicalAliasEventContent` -* Replace `format` and `formatted_body` fields in `TextMessageEventContent`, - `NoticeMessageEventContent` and `EmoteMessageEventContent` with `formatted: FormattedBody` -* Rename `override_rules` in `push_rules::Ruleset` to `override_` -* Change `push_rules::PushCondition` variants from newtype variants with separate inner types to - struct variants - * This change removes the types `EventMatchCondition`, `RoomMemberCountCondition` and - `SenderNotificationPermissionCondition` -* Add PDU types: `pdu::{Pdu, PduStub}` -* `presence::PresenceState` has been moved. Import it from `ruma` or `ruma-common`. -* `EventJson` has been moved and renamed. Import it from `ruma` or `ruma-common`. -* The `in_reply_to` field of `room::message::RelatesTo` is now optional -* Use `ruma_identifiers::{ServerName, ServerKeyId}` in `signatures` fields of - `pdu::RoomV1Pdu, RoomV1PduStub, RoomV3Pdu, RoomV3PduStub}` and - `room::member::SignedContent`. -* Remove the `EventType::Custom` variant. You can still check for custom event types by going - through `.as_str()`. This ensures that new event types doesn't break existing code. -* Remove the implementations of `From` and `From` - for `String`. Use the `Display` or `ToString` implementations for those types instead. -* Remove `PduStub`, `RoomV1PduStub` and `RoomV3PduStub` types -* Use `ruma_identifiers::MxcUri` instead of `String` for `avatar_url`, `thumbnail_url` or `url` - fields in the following types: - ```rust - presence::PresenceEventContent, - room::{ - avatar::{AvatarEventContent, ImageInfo}, - member::MemberEventContent, - message::{ - AudioMessageEventContent, FileMessageEventContent, ImageMessageEventContent, - VideoMessageEventContent - } - EncryptedFile, ImageInfo, - }, - sticker::StickerEventContent - ``` -* Add `tag::TagName` type and use it for `tag::Tags` -* Move `FullyRead` from `EphemeralRoom` enum to `RoomAccountData` enum -* Split `Basic` enum into `GlobalAccountData` and `RoomAccountData` enums - * Remove `DummyEvent`, `DummyEventContent`, `RoomKeyEvent`, `RoomKeyEventContent` -* Remove `BasicEventContent` trait and derive -* Make most of the types in this crate non-exhaustive - -Improvements: - -* Add `room::MessageFormat` and `room::FormattedBody` -* Skip serialization of optional values on `room::encryption::EncryptionEventContent` -* Rename `TextMessageEventContent::new_plain` to `plain` (the old name is still available, but - deprecated) -* Add more constructors for types in `room::message`: - * `TextMessageEventContent::html` - * `NoticeMessageEventContent::plain` - * `NoticeMessageEventContent::html` - * `MessageEventContent::text_plain` - * `MessageEventContent::text_html` - * `MessageEventContent::notice_plain` - * `MessageEventContent::notice_html` -* Add policy rule entities: - * `policy::rule::room` - * `policy::rule::server` - * `policy::rule::user` -* Add policy rule recommendation: - * `Recommendation::Ban` - -# 0.21.3 - -Bug fixes: - -* Fix `m.room.message` event serialization - -Improvements: - -* Skip serialization of `federate` field in `room::create::CreateEventContent` - if it is `true` (the default value) -* `room::power_levels::PowerLevelsEventContent` now implements `Default` - -# 0.21.2 - -Improvements: - -* Update dependencies - -# 0.21.1 - -Improvements: - -* Add `EventJson::into_json` - -# 0.21.0 - -Breaking changes: - -* Replace `EventResult` with a new construct, `EventJson` - * Instead of only capturing the json value if deserialization failed, we now - now always capture it. To improve deserialization performance at the same - time, we no longer use `serde_json::Value` internally and instead - deserialize events as `Box`. `EventJson` is - simply a wrapper around that owned value type that additionally holds a - generic argument: the type as which clients will usually want to deserialize - the raw value. -* Add `struct UnsignedData` and update all `unsigned` fields types from - `BTreeMap` to this new type. - * To access any additional fields of the `unsigned` property of an event, - deserialize the `EventJson` to another type that captures the field(s) you - are interested in. -* Add fields `format` and `formatted_body` to `room::message::NoticeMessageEventContent` -* Remove `room::message::MessageType` -* Remove useless `algorithm` fields from encrypted event content structs -* Remove `PartialEq` implementations for most types - * Since we're now using `serde_json::value::RawValue`, deriving no longer works -* Update the representation of `push_rules::Tweak` -* Raise minimum supported Rust version to 1.40.0 - -# 0.20.0 - -Improvements: - -* Update ruma-identifiers to 0.16.0 - -# 0.19.0 - -Breaking changes: - -* Update ruma-identifiers to 0.15.1 -* Change timestamps, including `origin_server_rs` from `UInt` to `SystemTime` -* Change all usages of `HashMap` to `BTreeMap` - * To support this, `EventType` now implements `PartialOrd` and `Ord` - -# 0.18.0 - -Breaking changes: - -* Update unsigned field's type from `Option` to `Map` - -Improvements: - -* Add a convenience constructor to create a plain-text `TextMessageEventContent` -* Add `m.dummy` events to the to-device event collection - -# 0.17.0 - -Breaking changes: - -* `collections::only` no longer exports a `raw` submodule. It was never meant to be exported in the first place. -* Renamed `stripped::{StrippedState => AnyStrippedStateEvent, StrippedStateContent => StrippedStateEvent}` - -Improvements: - -* Added `to_device` module with to-device variants of events (as found in the `to_device` section of a sync response) -* Added a helper method for computing the membership change from a `MemberEvent` - -Bug fixes: - -* Fixed missing `m.` in `m.relates_to` field of room messages -* Fixed (de)serialization of encrypted events using `m.olm.v1.curve25519-aes-sha2` - -# 0.16.0 - -Breaking changes: - -* `TryFromRaw::try_from_raw`'s signature has been simplified. The previous signature was a relict that was no longer sensible. -* All remaining non-optional `room_id` event fields (not event content fields) have been made optional - -Improvements: - -* `NameEvent`s are now validated properly and will be rejected if the `name` field is longer than 255 bytes. - -# 0.15.1 - -Bug fixes: - -* Deserialization of custom events as part of the types from `ruma_events::collections::{all, only}` was implemented (this was missing after the big fallible deserializion rewrite in 0.15.0) - -# 0.15.0 - -Improvements: - -* `ruma-events` now exports a new type, `EventResult` - * For any event or event content type `T` inside a larger type that should support deserialization you can use `EventResult` instead - * Conceptually, it is the same as `Result` - * `InvalidEvent` can represent either a deserialization error (the event's structure did not match) or a validation error (some additional constraints defined in the matrix spec were violated) - * It also contains the original value that was attempted to be deserialized into `T` in `serde_json::Value` form - -Breaking changes: - -* The `FromStr` implementations for event types were removed (they were the previous implementation of fallible deserialization, but were never integrated in ruma-client-api because they didn't interoperate well with serde derives) - -# 0.14.0 - -Breaking changes: - -* Updated to ruma-identifiers 0.14.0. - -Improvements: - -* ruma-events is now checked against the RustSec advisory database. - -# 0.13.0 - -Breaking changes: - -* Events and their content types no longer implement `Deserialize` and instead implement `FromStr` and `TryFrom<&str>`, which take a `&str` of JSON data and return a new `InvalidEvent` type on error. -* Integers are now represented using the `Int` and `UInt` types from the `js_int` crate to ensure they are within the JavaScript-interoperable range mandated by the Matrix specification. -* Some event types have new fields or new default values for previous fields to bring them up to date with version r0.5.0 of the client-server specification. -* Some event types no longer have public fields and instead use a constructor function to perform validations not represented by the type system. -* All enums now include a "nonexhaustive" variant to prevent exhaustive pattern matching. This will change to use the `#[nonexhaustive]` attribute when it is stabilized. -* `ParseError` has been renamed `FromStrError`. - -New features: - -* This release brings ruma-events completely up to date with version r0.5.0 of the client-server specification. All previously supported events have been updated as necessary and the following events have newly added support: - * m.dummy - * m.forwarded_room_key - * m.fully_read - * m.ignored_user_list - * m.key.verification.accept - * m.key.verification.cancel - * m.key.verification.key - * m.key.verification.mac - * m.key.verification.request - * m.key.verification.start - * m.push_rules - * m.key.encrypted - * m.key.encryption - * m.key.server_acl - * m.key.tombstone - * m.room_key - * m.room_key_request - * m.sticker - -Improvements: - -* Improved documentation for the crate and for many types. -* Added many new tests. -* rustfmt and clippy are now used to ensure consistent formatting and improved code quality. - -# 0.12.0 - -Improvements: - -* ruma-events now runs on stable Rust, requiring version 1.34 or higher. - -Bug fixes: - -* `CanonicalAliasEvent` and `NameEvent` now allow content being absent, null, or empty, as per the spec. - -# 0.11.1 - -Breaking changes: - -* `RoomId` is now optional in certain places where it may be absent, notably the responses of the `/sync` API endpoint. -* A `sender` field has been added to the `StrippedStateContent` type. - -Improvements: - -* Depend on serde's derive feature rather than serde_derive directly for simplified imports. -* Update to Rust 2018 idioms. - -# 0.11.0 - -Breaking changes: - -* The presence event has been modified to match the latest version of the spec. The spec was corrected to match the behavior of the Synapse homeserver. - -Improvements: - -* Dependencies have been updated to the latest versions. - -# 0.10.0 - -Breaking changes: - -* The `EventType`, and collections enums have new variants to support new events. -* The `extra_content` method has been removed from the Event trait. -* The `user_id` method from the `RoomEvent` trait has been renamed `sender` to match the specification. -* The `origin_server_ts` value is now required for room events and is supported via a new `origin_server_ts` method on the `RoomEvent` trait. -* `MemberEventContent` has a new `is_direct` field. -* `FileMessageEventContent` has a new `filename` field. -* File and thumbnail info have been moved from several message types to dedicated `FileInfo`, `ImageInfo`, and `ThumbnailInfo` types. -* `LocationMessageEventContent` has a new info field. -* `PresenceEventContent`'s `currently_active` field has changed from `bool` to `Option`. -* `TypingEventContent` contains a vector of `UserId`s instead of `EventId`s. -* Height and width fields named `h` and `w` in the spec now use the full names `height` and `width` for their struct field names, but continue to serialize to the single-letter names. - -New features: - -* ruma-events now supports all events according to r0.3.0 of the Matrix client-server specification. -* Added new event: `m.room.pinned_events`. -* Added new event: `m.direct`. - -Bug fixes: - -* Several places where struct fields used the wrong key when serialized to JSON have been corrected. -* Fixed grammar issues in documentation. - -# 0.9.0 - -Improvements: - -* Added default values for various power level attributes. -* Removed Serde trait bounds on `StrippedStateContent`'s generic parameter. -* Updated to version 0.4 of ruma-signatures. - -# 0.8.0 - -Breaking changes - -* Updated serde to the 1.0 series. - -# 0.7.0 - -Bug fixes: - -* Make the `federate` field optional when creating a room. - -# 0.6.0 - -Breaking changes: - -* Updated ruma-identifiers to the 0.9 series. - - -# 0.5.0 - -Breaking changes: - -* Updated ruma-identifiers to the 0.8 series. - -# 0.4.1 - -Improvements: - -* Relaxed version constraints on dependent crates to allow updating to new patch level versions. - -# 0.4.0 - -Breaking changes: - -* Updated serde to the 0.9 series. - -The public API remains the same. - -# 0.3.0 - -Improvements: - -* `ruma_events::presence::PresenceState` now implements `Display` and `FromStr`. - -# 0.2.0 - -Improvements: - -* Added missing "stripped" versions of some state events. -* All "stripped" versions of state events are now serializable. - - -# 0.1.0 - -Initial release. diff --git a/crates/ruma-events/Cargo.toml b/crates/ruma-events/Cargo.toml deleted file mode 100644 index 3f2a1ad1..00000000 --- a/crates/ruma-events/Cargo.toml +++ /dev/null @@ -1,54 +0,0 @@ -[package] -categories = ["api-bindings"] -description = "Serializable types for the events in the Matrix specification." -homepage = "https://www.ruma.io/" -keywords = ["matrix", "chat", "messaging", "ruma"] -license = "MIT" -name = "ruma-events" -readme = "README.md" -repository = "https://github.com/ruma/ruma" -version = "0.26.0" -edition = "2018" - -[package.metadata.docs.rs] -all-features = true -rustdoc-args = ["--cfg", "docsrs"] - -[features] -compat = ["ruma-macros/compat"] -markdown = ["pulldown-cmark"] - -unstable-exhaustive-types = [] -unstable-pdu = [] -unstable-pre-spec = [] -unstable-msc1767 = [] -unstable-msc2448 = [] -unstable-msc2675 = [] -unstable-msc2676 = [] -unstable-msc2677 = [] -unstable-msc3551 = ["unstable-msc1767"] - -[dependencies] -criterion = { version = "0.3.3", optional = true } -indoc = "1.0" -js_int = { version = "0.2.0", features = ["serde"] } -pulldown-cmark = { version = "0.8", default-features = false, optional = true } -ruma-common = { version = "0.8.0", path = "../ruma-common" } -ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers", features = ["serde"] } -ruma-macros = { version = "=0.1.0", path = "../ruma-macros" } -ruma-serde = { version = "0.6.0", path = "../ruma-serde" } -serde = { version = "1.0.118", features = ["derive"] } -serde_json = { version = "1.0.60", features = ["raw_value"] } -thiserror = "1.0.26" -wildmatch = "2.0.0" - -[dev-dependencies] -assign = "1.1.1" -maplit = "1.0.2" -matches = "0.1.8" -ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers", features = ["rand"] } -trybuild = "1.0.38" - -[[bench]] -name = "event_deserialize" -harness = false diff --git a/crates/ruma-events/README.md b/crates/ruma-events/README.md deleted file mode 100644 index a9e499f1..00000000 --- a/crates/ruma-events/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# ruma-events - -[![crates.io page](https://img.shields.io/crates/v/ruma-events.svg)](https://crates.io/crates/ruma-events) -[![docs.rs page](https://docs.rs/ruma-events/badge.svg)](https://docs.rs/ruma-events/) -![license: MIT](https://img.shields.io/crates/l/ruma-events.svg) - -**ruma-events** contains serializable types for the events in the [Matrix](https://matrix.org/) specification that can be shared by client and server code. diff --git a/crates/ruma-events/tests/event_content.rs b/crates/ruma-events/tests/event_content.rs deleted file mode 100644 index ba0426f1..00000000 --- a/crates/ruma-events/tests/event_content.rs +++ /dev/null @@ -1,7 +0,0 @@ -#[test] -fn ui() { - let t = trybuild::TestCases::new(); - t.pass("tests/ui/01-content-sanity-check.rs"); - t.compile_fail("tests/ui/02-no-event-type.rs"); - t.compile_fail("tests/ui/03-invalid-event-type.rs"); -} diff --git a/crates/ruma-events/tests/event_content_enum.rs b/crates/ruma-events/tests/event_content_enum.rs deleted file mode 100644 index 37dd3176..00000000 --- a/crates/ruma-events/tests/event_content_enum.rs +++ /dev/null @@ -1,6 +0,0 @@ -#[test] -fn ui() { - let t = trybuild::TestCases::new(); - t.pass("tests/ui/07-enum-sanity-check.rs"); - t.compile_fail("tests/ui/08-enum-invalid-path.rs"); -} diff --git a/crates/ruma-federation-api/Cargo.toml b/crates/ruma-federation-api/Cargo.toml index d9294df3..d6aa7b3f 100644 --- a/crates/ruma-federation-api/Cargo.toml +++ b/crates/ruma-federation-api/Cargo.toml @@ -24,8 +24,7 @@ server = [] [dependencies] js_int = { version = "0.2.0", features = ["serde"] } -ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["api"] } -ruma-events = { version = "0.26.0", path = "../ruma-events" } +ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["api", "events"] } ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers" } ruma-serde = { version = "0.6.0", path = "../ruma-serde" } serde = { version = "1.0.118", features = ["derive"] } diff --git a/crates/ruma-federation-api/src/knock/send_knock.rs b/crates/ruma-federation-api/src/knock/send_knock.rs index 8c7ef535..2561e3f5 100644 --- a/crates/ruma-federation-api/src/knock/send_knock.rs +++ b/crates/ruma-federation-api/src/knock/send_knock.rs @@ -7,8 +7,7 @@ pub mod v1 { //! //! [spec]: https://spec.matrix.org/v1.2/server-server-api/#put_matrixfederationv1send_knockroomideventid - use ruma_common::api::ruma_api; - use ruma_events::AnyStrippedStateEvent; + use ruma_common::{api::ruma_api, events::AnyStrippedStateEvent}; use ruma_identifiers::{EventId, RoomId}; use ruma_serde::Raw; use serde_json::value::RawValue as RawJsonValue; diff --git a/crates/ruma-federation-api/src/membership/create_invite/v1.rs b/crates/ruma-federation-api/src/membership/create_invite/v1.rs index ea0d2c35..b13e48be 100644 --- a/crates/ruma-federation-api/src/membership/create_invite/v1.rs +++ b/crates/ruma-federation-api/src/membership/create_invite/v1.rs @@ -2,8 +2,11 @@ //! //! [spec]: https://spec.matrix.org/v1.2/server-server-api/#put_matrixfederationv1inviteroomideventid -use ruma_common::{api::ruma_api, MilliSecondsSinceUnixEpoch}; -use ruma_events::{room::member::RoomMemberEventContent, AnyStrippedStateEvent, EventType}; +use ruma_common::{ + api::ruma_api, + events::{room::member::RoomMemberEventContent, AnyStrippedStateEvent, EventType}, + MilliSecondsSinceUnixEpoch, +}; use ruma_identifiers::{EventId, RoomId, ServerName, UserId}; use ruma_serde::Raw; use serde::{Deserialize, Serialize}; diff --git a/crates/ruma-federation-api/src/membership/create_invite/v2.rs b/crates/ruma-federation-api/src/membership/create_invite/v2.rs index f7b4ef48..85e8efe1 100644 --- a/crates/ruma-federation-api/src/membership/create_invite/v2.rs +++ b/crates/ruma-federation-api/src/membership/create_invite/v2.rs @@ -2,8 +2,7 @@ //! //! [spec]: https://spec.matrix.org/v1.2/server-server-api/#put_matrixfederationv2inviteroomideventid -use ruma_common::api::ruma_api; -use ruma_events::AnyStrippedStateEvent; +use ruma_common::{api::ruma_api, events::AnyStrippedStateEvent}; use ruma_identifiers::{EventId, RoomId, RoomVersionId}; use ruma_serde::Raw; use serde_json::value::RawValue as RawJsonValue; diff --git a/crates/ruma-federation-api/src/membership/create_leave_event/v1.rs b/crates/ruma-federation-api/src/membership/create_leave_event/v1.rs index 906ca79d..ab9b0e85 100644 --- a/crates/ruma-federation-api/src/membership/create_leave_event/v1.rs +++ b/crates/ruma-federation-api/src/membership/create_leave_event/v1.rs @@ -3,8 +3,11 @@ //! [spec]: https://spec.matrix.org/v1.2/server-server-api/#put_matrixfederationv1send_leaveroomideventid use js_int::UInt; -use ruma_common::{api::ruma_api, MilliSecondsSinceUnixEpoch}; -use ruma_events::{room::member::RoomMemberEventContent, EventType}; +use ruma_common::{ + api::ruma_api, + events::{room::member::RoomMemberEventContent, EventType}, + MilliSecondsSinceUnixEpoch, +}; use ruma_identifiers::{EventId, RoomId, ServerName, UserId}; use ruma_serde::Raw; use serde::{Deserialize, Serialize}; diff --git a/crates/ruma-federation-api/src/space.rs b/crates/ruma-federation-api/src/space.rs index dda4c2d9..eeb44587 100644 --- a/crates/ruma-federation-api/src/space.rs +++ b/crates/ruma-federation-api/src/space.rs @@ -1,8 +1,10 @@ //! Spaces endpoints. use js_int::UInt; -use ruma_common::{directory::PublicRoomJoinRule, room::RoomType}; -use ruma_events::space::child::HierarchySpaceChildStateEvent; +use ruma_common::{ + directory::PublicRoomJoinRule, events::space::child::HierarchySpaceChildStateEvent, + room::RoomType, +}; use ruma_identifiers::{MxcUri, RoomAliasId, RoomId, RoomName}; use ruma_serde::Raw; use serde::{Deserialize, Serialize}; diff --git a/crates/ruma-federation-api/src/thirdparty/exchange_invite.rs b/crates/ruma-federation-api/src/thirdparty/exchange_invite.rs index 6b1ee154..428ed92f 100644 --- a/crates/ruma-federation-api/src/thirdparty/exchange_invite.rs +++ b/crates/ruma-federation-api/src/thirdparty/exchange_invite.rs @@ -11,8 +11,10 @@ pub mod v1 { //! //! [spec]: https://spec.matrix.org/v1.2/server-server-api/#put_matrixfederationv1exchange_third_party_inviteroomid - use ruma_common::api::ruma_api; - use ruma_events::{room::member::ThirdPartyInvite, EventType}; + use ruma_common::{ + api::ruma_api, + events::{room::member::ThirdPartyInvite, EventType}, + }; use ruma_identifiers::{RoomId, UserId}; ruma_api! { diff --git a/crates/ruma-federation-api/src/transactions/edu.rs b/crates/ruma-federation-api/src/transactions/edu.rs index 43ca4ea3..5809fdf3 100644 --- a/crates/ruma-federation-api/src/transactions/edu.rs +++ b/crates/ruma-federation-api/src/transactions/edu.rs @@ -5,10 +5,10 @@ use std::collections::BTreeMap; use js_int::UInt; use ruma_common::{ encryption::{CrossSigningKey, DeviceKeys}, + events::{receipt::Receipt, AnyToDeviceEventContent, EventType}, presence::PresenceState, to_device::DeviceIdOrAllDevices, }; -use ruma_events::{receipt::Receipt, AnyToDeviceEventContent, EventType}; use ruma_identifiers::{DeviceId, EventId, RoomId, TransactionId, UserId}; use ruma_serde::{from_raw_json_value, Raw}; use serde::{de, Deserialize, Serialize}; diff --git a/crates/ruma-macros/src/events.rs b/crates/ruma-macros/src/events.rs index 6c9fb211..2d25db7c 100644 --- a/crates/ruma-macros/src/events.rs +++ b/crates/ruma-macros/src/events.rs @@ -1,6 +1,4 @@ -//! Methods and types for generating [ruma-events] events. -//! -//! [ruma-events]: https://github.com/ruma/ruma/tree/main/ruma-events +//! Methods and types for generating events. pub mod event; pub mod event_content; diff --git a/crates/ruma-macros/src/events/event_parse.rs b/crates/ruma-macros/src/events/event_parse.rs index e7c988f0..6d450158 100644 --- a/crates/ruma-macros/src/events/event_parse.rs +++ b/crates/ruma-macros/src/events/event_parse.rs @@ -246,9 +246,9 @@ pub struct EventEnumDecl { /// An array of valid matrix event types. /// /// This will generate the variants of the event type "kind". There needs to be a corresponding - /// variant in `ruma_events::EventType` for this event (converted to a valid Rust-style type - /// name by stripping `m.`, replacing the remaining dots by underscores and then converting - /// from snake_case to CamelCase). + /// variant in `ruma_common::events::EventType` for this event (converted to a valid Rust-style + /// type name by stripping `m.`, replacing the remaining dots by underscores and then + /// converting from snake_case to CamelCase). pub events: Vec, } diff --git a/crates/ruma-macros/src/events/util.rs b/crates/ruma-macros/src/events/util.rs index e6f437e0..dcd1ec2a 100644 --- a/crates/ruma-macros/src/events/util.rs +++ b/crates/ruma-macros/src/events/util.rs @@ -20,7 +20,8 @@ pub(crate) type EventKindFn = fn(EventKind, EventKindVariation) -> bool; /// This const is used to generate the accessor methods for the `Any*Event` enums. /// -/// DO NOT alter the field names unless the structs in `ruma_events::event_kinds` have changed. +/// DO NOT alter the field names unless the structs in `ruma_common::events::event_kinds` have +/// changed. pub(crate) const EVENT_FIELDS: &[(&str, EventKindFn)] = &[ ("origin_server_ts", is_non_stripped_room_event), ("room_id", |kind, var| { diff --git a/crates/ruma-macros/src/lib.rs b/crates/ruma-macros/src/lib.rs index 5de1219d..1ffc6327 100644 --- a/crates/ruma-macros/src/lib.rs +++ b/crates/ruma-macros/src/lib.rs @@ -91,7 +91,7 @@ pub fn event_enum(input: TokenStream) -> TokenStream { .into() } -/// Generates an implementation of `ruma_events::EventContent`. +/// Generates an implementation of `ruma_common::events::EventContent`. #[proc_macro_derive(EventContent, attributes(ruma_event))] pub fn derive_event_content(input: TokenStream) -> TokenStream { let ruma_events = import_ruma_events(); @@ -108,9 +108,9 @@ pub fn derive_event(input: TokenStream) -> TokenStream { } pub(crate) fn import_ruma_events() -> pm2::TokenStream { - if let Ok(FoundCrate::Name(name)) = crate_name("ruma-events") { + if let Ok(FoundCrate::Name(name)) = crate_name("ruma-common") { let import = format_ident!("{}", name); - quote! { ::#import } + quote! { ::#import::events } } else if let Ok(FoundCrate::Name(name)) = crate_name("ruma") { let import = format_ident!("{}", name); quote! { ::#import::events } @@ -121,7 +121,7 @@ pub(crate) fn import_ruma_events() -> pm2::TokenStream { let import = format_ident!("{}", name); quote! { ::#import::ruma::events } } else { - quote! { ::ruma_events } + quote! { ::ruma_common::events } } } diff --git a/crates/ruma-macros/src/serde.rs b/crates/ruma-macros/src/serde.rs index ffad6b99..927d79a0 100644 --- a/crates/ruma-macros/src/serde.rs +++ b/crates/ruma-macros/src/serde.rs @@ -1,6 +1,6 @@ //! Methods and types for [ruma-serde]. //! -//! [ruma-events]: https://github.com/ruma/ruma/tree/main/ruma-serde +//! [ruma-serde]: https://github.com/ruma/ruma/tree/main/ruma-serde pub mod attr; pub mod case; diff --git a/crates/ruma-push-gateway-api/Cargo.toml b/crates/ruma-push-gateway-api/Cargo.toml index 19641228..7a71d538 100644 --- a/crates/ruma-push-gateway-api/Cargo.toml +++ b/crates/ruma-push-gateway-api/Cargo.toml @@ -19,8 +19,7 @@ server = [] [dependencies] js_int = { version = "0.2.0", features = ["serde"] } -ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["api"] } -ruma-events = { version = "0.26.0", path = "../ruma-events" } +ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["api", "events"] } ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers" } ruma-serde = { version = "0.6.0", path = "../ruma-serde" } serde = { version = "1.0.118", features = ["derive"] } diff --git a/crates/ruma-push-gateway-api/src/send_event_notification.rs b/crates/ruma-push-gateway-api/src/send_event_notification.rs index b9baa903..64d07c72 100644 --- a/crates/ruma-push-gateway-api/src/send_event_notification.rs +++ b/crates/ruma-push-gateway-api/src/send_event_notification.rs @@ -11,10 +11,10 @@ pub mod v1 { use js_int::UInt; use ruma_common::{ api::ruma_api, + events::EventType, push::{PusherData, Tweak}, SecondsSinceUnixEpoch, }; - use ruma_events::EventType; use ruma_identifiers::{EventId, RoomAliasId, RoomId, RoomName, UserId}; use ruma_serde::{Outgoing, StringEnum}; use serde::{Deserialize, Serialize}; @@ -321,8 +321,7 @@ pub mod v1 { #[cfg(test)] mod tests { use js_int::uint; - use ruma_common::SecondsSinceUnixEpoch; - use ruma_events::EventType; + use ruma_common::{events::EventType, SecondsSinceUnixEpoch}; use ruma_identifiers::{event_id, room_alias_id, room_id, user_id}; use serde_json::{ from_value as from_json_value, json, to_value as to_json_value, Value as JsonValue, diff --git a/crates/ruma-serde/src/lib.rs b/crates/ruma-serde/src/lib.rs index bb9f4795..6d8895bd 100644 --- a/crates/ruma-serde/src/lib.rs +++ b/crates/ruma-serde/src/lib.rs @@ -75,7 +75,7 @@ where /// /// If any of the fields of `Self` don't implement serde's `Deserialize`, you can derive this trait /// to generate a corresponding 'Incoming' type that supports deserialization. This is useful for -/// things like ruma_events' `EventResult` type. For more details, see the +/// things like `ruma_common::events::EventResult`. For more details, see the /// [derive macro's documentation][doc]. /// /// [doc]: derive.Outgoing.html diff --git a/crates/ruma-state-res/Cargo.toml b/crates/ruma-state-res/Cargo.toml index 4644a6da..028835cc 100644 --- a/crates/ruma-state-res/Cargo.toml +++ b/crates/ruma-state-res/Cargo.toml @@ -18,13 +18,12 @@ compat = [] unstable-exhaustive-types = [] # Private, only used in test / benchmarking code -__ci = ["ruma-events/unstable-pre-spec"] +__ci = ["ruma-common/unstable-pre-spec"] [dependencies] itertools = "0.10.0" js_int = "0.2.0" -ruma-common = { version = "0.8.0", path = "../ruma-common" } -ruma-events = { version = "0.26.0", path = "../ruma-events" } +ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["events"] } ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers" } ruma-serde = { version = "0.6.0", path = "../ruma-serde" } serde = { version = "1.0.118", features = ["derive"] } @@ -36,7 +35,7 @@ tracing = "0.1.26" criterion = "0.3.3" maplit = "1.0.2" rand = "0.8.3" -ruma-events = { version = "0.26.0", path = "../ruma-events", features = ["unstable-pdu"] } +ruma-common = { version = "0.8.0", path = "../ruma-common", features = ["unstable-pdu"] } tracing-subscriber = "0.3.3" [[bench]] diff --git a/crates/ruma-state-res/benches/state_res_bench.rs b/crates/ruma-state-res/benches/state_res_bench.rs index f17fc756..67681472 100644 --- a/crates/ruma-state-res/benches/state_res_bench.rs +++ b/crates/ruma-state-res/benches/state_res_bench.rs @@ -21,14 +21,16 @@ use criterion::{criterion_group, criterion_main, Criterion}; use event::StateEvent; use js_int::{int, uint}; use maplit::{btreemap, hashmap, hashset}; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - pdu::{EventHash, Pdu, RoomV3Pdu}, - room::{ - join_rules::{JoinRule, RoomJoinRulesEventContent}, - member::{MembershipState, RoomMemberEventContent}, +use ruma_common::{ + events::{ + pdu::{EventHash, Pdu, RoomV3Pdu}, + room::{ + join_rules::{JoinRule, RoomJoinRulesEventContent}, + member::{MembershipState, RoomMemberEventContent}, + }, + EventType, }, - EventType, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{room_id, user_id, EventId, RoomId, RoomVersionId, UserId}; use ruma_state_res::{self as state_res, Error, Event, Result, StateMap}; @@ -534,8 +536,10 @@ fn BAN_STATE_SET() -> HashMap, Arc> { } mod event { - use ruma_common::MilliSecondsSinceUnixEpoch; - use ruma_events::{pdu::Pdu, EventType}; + use ruma_common::{ + events::{pdu::Pdu, EventType}, + MilliSecondsSinceUnixEpoch, + }; use ruma_identifiers::{EventId, RoomId, UserId}; use ruma_state_res::Event; use serde::{Deserialize, Serialize}; diff --git a/crates/ruma-state-res/src/event_auth.rs b/crates/ruma-state-res/src/event_auth.rs index c5efd60f..413636a9 100644 --- a/crates/ruma-state-res/src/event_auth.rs +++ b/crates/ruma-state-res/src/event_auth.rs @@ -1,7 +1,7 @@ use std::{borrow::Borrow, collections::BTreeSet, convert::TryFrom}; use js_int::{int, Int}; -use ruma_events::{ +use ruma_common::events::{ room::{ create::RoomCreateEventContent, join_rules::{JoinRule, RoomJoinRulesEventContent}, @@ -929,7 +929,7 @@ fn verify_third_party_invite( mod tests { use std::sync::Arc; - use ruma_events::{ + use ruma_common::events::{ room::{ join_rules::{ AllowRule, JoinRule, Restricted, RoomJoinRulesEventContent, RoomMembership, diff --git a/crates/ruma-state-res/src/lib.rs b/crates/ruma-state-res/src/lib.rs index cd520981..b8634296 100644 --- a/crates/ruma-state-res/src/lib.rs +++ b/crates/ruma-state-res/src/lib.rs @@ -7,10 +7,12 @@ use std::{ use itertools::Itertools; use js_int::{int, Int}; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - room::member::{MembershipState, RoomMemberEventContent}, - EventType, +use ruma_common::{ + events::{ + room::member::{MembershipState, RoomMemberEventContent}, + EventType, + }, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{EventId, RoomVersionId, UserId}; use serde::Deserialize; @@ -648,10 +650,12 @@ mod tests { use js_int::{int, uint}; use maplit::{hashmap, hashset}; use rand::seq::SliceRandom; - use ruma_common::MilliSecondsSinceUnixEpoch; - use ruma_events::{ - room::join_rules::{JoinRule, RoomJoinRulesEventContent}, - EventType, + use ruma_common::{ + events::{ + room::join_rules::{JoinRule, RoomJoinRulesEventContent}, + EventType, + }, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{EventId, RoomVersionId}; use serde_json::{json, value::to_raw_value as to_raw_json_value}; diff --git a/crates/ruma-state-res/src/state_event.rs b/crates/ruma-state-res/src/state_event.rs index a63db7f2..d9d009f4 100644 --- a/crates/ruma-state-res/src/state_event.rs +++ b/crates/ruma-state-res/src/state_event.rs @@ -5,8 +5,7 @@ use std::{ sync::Arc, }; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::EventType; +use ruma_common::{events::EventType, MilliSecondsSinceUnixEpoch}; use ruma_identifiers::{EventId, RoomId, UserId}; use serde_json::value::RawValue as RawJsonValue; diff --git a/crates/ruma-state-res/src/test_utils.rs b/crates/ruma-state-res/src/test_utils.rs index c3bf991d..316e5090 100644 --- a/crates/ruma-state-res/src/test_utils.rs +++ b/crates/ruma-state-res/src/test_utils.rs @@ -9,14 +9,16 @@ use std::{ }; use js_int::{int, uint}; -use ruma_common::MilliSecondsSinceUnixEpoch; -use ruma_events::{ - pdu::{EventHash, Pdu, RoomV3Pdu}, - room::{ - join_rules::{JoinRule, RoomJoinRulesEventContent}, - member::{MembershipState, RoomMemberEventContent}, +use ruma_common::{ + events::{ + pdu::{EventHash, Pdu, RoomV3Pdu}, + room::{ + join_rules::{JoinRule, RoomJoinRulesEventContent}, + member::{MembershipState, RoomMemberEventContent}, + }, + EventType, }, - EventType, + MilliSecondsSinceUnixEpoch, }; use ruma_identifiers::{event_id, room_id, user_id, EventId, RoomId, RoomVersionId, UserId}; use serde_json::{ @@ -543,7 +545,9 @@ pub fn INITIAL_EDGES() -> Vec> { } pub mod event { - use ruma_events::{exports::ruma_common::MilliSecondsSinceUnixEpoch, pdu::Pdu, EventType}; + use ruma_common::events::{ + exports::ruma_common::MilliSecondsSinceUnixEpoch, pdu::Pdu, EventType, + }; use ruma_identifiers::{EventId, RoomId, UserId}; use serde::{Deserialize, Serialize}; use serde_json::value::RawValue as RawJsonValue; diff --git a/crates/ruma/Cargo.toml b/crates/ruma/Cargo.toml index 13f3fa9e..5b22fafe 100644 --- a/crates/ruma/Cargo.toml +++ b/crates/ruma/Cargo.toml @@ -17,7 +17,7 @@ rustdoc-args = ["--cfg", "docsrs"] [features] api = ["ruma-common/api"] client = ["ruma-client"] -events = ["ruma-events"] +events = ["ruma-common/events"] signatures = ["ruma-signatures"] state-res = ["ruma-state-res"] @@ -56,7 +56,7 @@ push-gateway-api = ["push-gateway-api-c", "push-gateway-api-s"] # Convenience features either = ["ruma-identifiers/either"] rand = ["ruma-identifiers/rand"] -markdown = ["ruma-events/markdown"] +markdown = ["ruma-common/markdown"] # Everything except compat and unstable features full = [ @@ -83,7 +83,6 @@ full = [ # missing with this feature. compat = [ "ruma-common/compat", - "ruma-events/compat", "ruma-identifiers/compat", "ruma-client-api/compat", "ruma-signatures/compat", @@ -98,7 +97,6 @@ appservice-api-helper = ["ruma-appservice-api/helper"] # otherwise provides! unstable-exhaustive-types = [ "ruma-common/unstable-exhaustive-types", - "ruma-events/unstable-exhaustive-types", "ruma-appservice-api/unstable-exhaustive-types", "ruma-client-api/unstable-exhaustive-types", "ruma-federation-api/unstable-exhaustive-types", @@ -106,25 +104,21 @@ unstable-exhaustive-types = [ "ruma-push-gateway-api/unstable-exhaustive-types", "ruma-state-res/unstable-exhaustive-types" ] -unstable-pdu = ["ruma-events/unstable-pdu"] +unstable-pdu = ["ruma-common/unstable-pdu"] unstable-pre-spec = [ "ruma-common/unstable-pre-spec", - "ruma-events/unstable-pre-spec", "ruma-federation-api/unstable-pre-spec", ] -unstable-msc1767 = ["ruma-events/unstable-msc1767"] +unstable-msc1767 = ["ruma-common/unstable-msc1767"] unstable-msc2448 = [ "ruma-client-api/unstable-msc2448", - "ruma-events/unstable-msc2448", + "ruma-common/unstable-msc2448", "ruma-federation-api/unstable-msc2448" ] -unstable-msc2675 = ["ruma-events/unstable-msc2675"] -unstable-msc2676 = ["ruma-events/unstable-msc2676"] -unstable-msc2677 = [ - "ruma-common/unstable-msc2677", - "ruma-events/unstable-msc2677", -] -unstable-msc3551 = ["ruma-events/unstable-msc3551"] +unstable-msc2675 = ["ruma-common/unstable-msc2675"] +unstable-msc2676 = ["ruma-common/unstable-msc2676"] +unstable-msc2677 = ["ruma-common/unstable-msc2677"] +unstable-msc3551 = ["ruma-common/unstable-msc3551"] unstable-msc3618 = ["ruma-federation-api/unstable-msc3618"] # Private feature, only used in test / benchmarking code @@ -150,7 +144,6 @@ ruma-identifiers = { version = "0.22.0", path = "../ruma-identifiers", features ruma-serde = { version = "0.6.0", path = "../ruma-serde" } ruma-client = { version = "0.8.0", path = "../ruma-client", optional = true } -ruma-events = { version = "0.26.0", path = "../ruma-events", optional = true } ruma-signatures = { version = "0.10.0", path = "../ruma-signatures", optional = true } ruma-state-res = { version = "0.6.0", path = "../ruma-state-res", optional = true } diff --git a/crates/ruma/src/lib.rs b/crates/ruma/src/lib.rs index f26ecc77..8c838428 100644 --- a/crates/ruma/src/lib.rs +++ b/crates/ruma/src/lib.rs @@ -80,7 +80,7 @@ pub use ruma_serde as serde; pub use ruma_client as client; #[cfg(feature = "events")] #[doc(inline)] -pub use ruma_events as events; +pub use ruma_common::events; #[cfg(feature = "signatures")] #[doc(inline)] pub use ruma_signatures as signatures; diff --git a/xtask/src/ci.rs b/xtask/src/ci.rs index 860f576b..eee2ad68 100644 --- a/xtask/src/ci.rs +++ b/xtask/src/ci.rs @@ -73,7 +73,7 @@ impl CiTask { // 2. Run tests let workspace_res = cmd!("rustup run stable cargo test --features __ci").run(); let events_compat_res = - cmd!("rustup run stable cargo test -p ruma-events --features compat compat").run(); + cmd!("rustup run stable cargo test -p ruma-common --features events --features compat compat").run(); workspace_res.and(events_compat_res).map_err(Into::into) }