From 31331f3165fd8eba44ca2d7e7873e4083c6adac1 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Thu, 24 Aug 2023 14:40:23 +0200 Subject: [PATCH] Bring back ruma-events MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Kévin Commaille --- Cargo.toml | 1 + crates/ruma-appservice-api/Cargo.toml | 3 +- .../src/event/push_events.rs | 9 +- crates/ruma-client-api/CHANGELOG.md | 2 +- crates/ruma-client-api/Cargo.toml | 3 +- .../src/config/get_global_account_data.rs | 4 +- .../src/config/get_room_account_data.rs | 2 +- .../src/config/set_global_account_data.rs | 7 +- .../src/config/set_room_account_data.rs | 6 +- .../src/context/get_context.rs | 2 +- .../src/dehydrated_device/get_events.rs | 2 +- .../src/membership/get_member_events.rs | 2 +- .../src/message/get_message_events.rs | 2 +- .../src/message/send_message_event.rs | 2 +- .../src/push/get_notifications.rs | 2 +- .../src/receipt/create_receipt.rs | 2 +- .../src/relations/get_relating_events.rs | 2 +- .../get_relating_events_with_rel_type.rs | 2 +- ...ing_events_with_rel_type_and_event_type.rs | 2 +- .../ruma-client-api/src/room/create_room.rs | 14 +-- .../src/room/get_room_event.rs | 2 +- .../src/search/search_events.rs | 2 +- crates/ruma-client-api/src/space.rs | 5 +- .../src/state/get_state_events.rs | 2 +- .../src/state/get_state_events_for_key.rs | 2 +- .../src/state/send_state_event.rs | 4 +- .../src/sync/sync_events/v3.rs | 10 +- .../src/sync/sync_events/v4.rs | 10 +- crates/ruma-client-api/src/tag/create_tag.rs | 2 +- crates/ruma-client-api/src/tag/get_tags.rs | 8 +- .../src/threads/get_threads.rs | 2 +- .../src/to_device/send_event_to_device.rs | 2 +- crates/ruma-common/CHANGELOG.md | 3 + crates/ruma-common/Cargo.toml | 35 +----- crates/ruma-common/src/canonical_json.rs | 57 ++-------- crates/ruma-common/src/lib.rs | 2 - crates/ruma-common/src/power_levels.rs | 4 +- crates/ruma-common/src/space.rs | 11 +- .../ruma-common/tests/api/ruma_api_macros.rs | 9 +- .../tests/api/ui/api-sanity-check.rs | 8 +- .../ruma-common/tests/events/event_content.rs | 11 -- .../events/ui/08-enum-invalid-path.stderr | 5 - crates/ruma-common/tests/tests.rs | 1 - crates/ruma-events/Cargo.toml | 81 ++++++++++++++ crates/ruma-events/README.md | 8 ++ .../benches/event_deserialize.rs | 10 +- .../src/events => ruma-events/src}/_custom.rs | 2 +- .../src/events => ruma-events/src}/audio.rs | 4 +- .../src}/audio/amplitude_serde.rs | 0 .../src/events => ruma-events/src}/call.rs | 0 .../events => ruma-events/src}/call/answer.rs | 2 +- .../src}/call/candidates.rs | 3 +- .../events => ruma-events/src}/call/hangup.rs | 3 +- .../events => ruma-events/src}/call/invite.rs | 2 +- .../src}/call/negotiate.rs | 2 +- .../events => ruma-events/src}/call/reject.rs | 3 +- .../src}/call/select_answer.rs | 3 +- .../src/events => ruma-events/src}/content.rs | 12 ++- .../src/events => ruma-events/src}/direct.rs | 15 ++- .../src/doc/rich_reply.md | 2 +- crates/ruma-events/src/doc/string_enum.md | 5 + .../src/events => ruma-events/src}/dummy.rs | 0 .../src/events => ruma-events/src}/emote.rs | 4 +- .../events => ruma-events/src}/encrypted.rs | 0 .../src/events => ruma-events/src}/enums.rs | 8 +- .../src/events => ruma-events/src}/file.rs | 6 +- .../src}/forwarded_room_key.rs | 3 +- .../events => ruma-events/src}/fully_read.rs | 3 +- .../src}/identity_server.rs | 0 .../src}/ignored_user_list.rs | 6 +- .../src/events => ruma-events/src}/image.rs | 8 +- .../src/events => ruma-events/src}/key.rs | 0 .../src}/key/verification.rs | 4 +- .../src}/key/verification/accept.rs | 10 +- .../src}/key/verification/cancel.rs | 3 +- .../src}/key/verification/done.rs | 6 +- .../src}/key/verification/key.rs | 3 +- .../src}/key/verification/mac.rs | 3 +- .../src}/key/verification/ready.rs | 9 +- .../src}/key/verification/request.rs | 2 +- .../src}/key/verification/start.rs | 10 +- .../src/events => ruma-events/src}/kinds.rs | 10 +- .../src/events.rs => ruma-events/src/lib.rs} | 42 ++++++-- .../events => ruma-events/src}/location.rs | 8 +- .../src}/location/zoomlevel_serde.rs | 0 .../src/events => ruma-events/src}/message.rs | 4 +- .../src}/message/historical_serde.rs | 4 +- .../src/events => ruma-events/src}/pdu.rs | 8 +- .../src/events => ruma-events/src}/policy.rs | 0 .../events => ruma-events/src}/policy/rule.rs | 3 +- .../src}/policy/rule/room.rs | 8 +- .../src}/policy/rule/server.rs | 2 +- .../src}/policy/rule/user.rs | 2 +- .../src/events => ruma-events/src}/poll.rs | 2 +- .../events => ruma-events/src}/poll/end.rs | 8 +- .../src}/poll/response.rs | 5 +- .../events => ruma-events/src}/poll/start.rs | 15 ++- .../src}/poll/start/poll_answers_serde.rs | 0 .../src}/poll/unstable_end.rs | 3 +- .../src}/poll/unstable_response.rs | 3 +- .../src}/poll/unstable_start.rs | 6 +- .../unstable_poll_answers_serde.rs | 2 +- .../unstable_poll_kind_serde.rs | 2 +- .../events => ruma-events/src}/presence.rs | 6 +- .../events => ruma-events/src}/push_rules.rs | 3 +- .../events => ruma-events/src}/reaction.rs | 3 +- .../src/events => ruma-events/src}/receipt.rs | 12 +-- .../src}/receipt/receipt_thread_serde.rs | 2 +- .../events => ruma-events/src}/relation.rs | 9 +- .../src}/relation/rel_serde.rs | 2 +- .../src/events => ruma-events/src}/room.rs | 7 +- .../src}/room/aliases.rs | 6 +- .../events => ruma-events/src}/room/avatar.rs | 3 +- .../src}/room/canonical_alias.rs | 8 +- .../events => ruma-events/src}/room/create.rs | 13 +-- .../src}/room/encrypted.rs | 13 +-- .../src}/room/encrypted/relation_serde.rs | 8 +- .../src}/room/encryption.rs | 2 +- .../src}/room/guest_access.rs | 3 +- .../src}/room/history_visibility.rs | 3 +- .../src}/room/join_rules.rs | 5 +- .../events => ruma-events/src}/room/member.rs | 26 ++--- .../src}/room/member/change.rs | 3 +- .../src}/room/message.rs | 12 +-- .../src}/room/message/audio.rs | 8 +- .../src}/room/message/content_serde.rs | 13 ++- .../src}/room/message/emote.rs | 0 .../src}/room/message/file.rs | 8 +- .../src}/room/message/image.rs | 6 +- .../room/message/key_verification_request.rs | 3 +- .../src}/room/message/location.rs | 13 ++- .../src}/room/message/notice.rs | 0 .../src}/room/message/relation_serde.rs | 5 +- .../src}/room/message/reply.rs | 7 +- .../src}/room/message/sanitize.rs | 0 .../src}/room/message/server_notice.rs | 3 +- .../src}/room/message/text.rs | 0 .../src}/room/message/video.rs | 10 +- .../events => ruma-events/src}/room/name.rs | 7 +- .../src}/room/pinned_events.rs | 13 +-- .../src}/room/power_levels.rs | 62 +++++------ .../src}/room/redaction.rs | 24 +++-- .../src}/room/redaction/event_serde.rs | 8 +- .../src}/room/server_acl.rs | 11 +- .../src}/room/third_party_invite.rs | 3 +- .../src}/room/thumbnail_source_serde.rs | 9 +- .../src}/room/tombstone.rs | 8 +- .../events => ruma-events/src}/room/topic.rs | 2 +- .../events => ruma-events/src}/room_key.rs | 6 +- .../src}/room_key_request.rs | 8 +- .../src/events => ruma-events/src}/secret.rs | 0 .../src}/secret/request.rs | 3 +- .../events => ruma-events/src}/secret/send.rs | 3 +- .../src}/secret_storage.rs | 0 .../src}/secret_storage/default_key.rs | 3 +- .../src}/secret_storage/key.rs | 10 +- .../src}/secret_storage/secret.rs | 5 +- .../src/events => ruma-events/src}/space.rs | 0 .../events => ruma-events/src}/space/child.rs | 5 +- .../src}/space/parent.rs | 5 +- .../events => ruma-events/src}/state_key.rs | 6 +- .../src/events => ruma-events/src}/sticker.rs | 3 +- .../src/events => ruma-events/src}/tag.rs | 7 +- .../src/events => ruma-events/src}/typing.rs | 3 +- .../events => ruma-events/src}/unsigned.rs | 6 +- .../src/events => ruma-events/src}/video.rs | 6 +- .../src/events => ruma-events/src}/voice.rs | 4 +- .../events => ruma-events/tests/it}/audio.rs | 20 ++-- .../events => ruma-events/tests/it}/call.rs | 30 +++--- .../tests/it}/encrypted.rs | 16 ++- .../events => ruma-events/tests/it}/enums.rs | 27 +++-- .../tests/it}/ephemeral_event.rs | 13 +-- .../events => ruma-events/tests/it}/event.rs | 6 +- crates/ruma-events/tests/it/event_content.rs | 11 ++ .../tests/it}/event_enums.rs | 13 +-- .../events => ruma-events/tests/it}/file.rs | 14 +-- .../events => ruma-events/tests/it}/image.rs | 22 ++-- .../tests/it}/initial_state.rs | 2 +- .../tests/it}/location.rs | 21 ++-- .../mod.rs => ruma-events/tests/it/main.rs} | 2 - .../tests/it}/message.rs | 18 ++-- .../events => ruma-events/tests/it}/pdu.rs | 13 ++- .../events => ruma-events/tests/it}/poll.rs | 44 ++++---- .../tests/it}/redacted.rs | 22 ++-- .../tests/it}/redaction.rs | 12 +-- .../tests/it}/relations.rs | 10 +- .../tests/it}/room_message.rs | 39 ++++--- .../tests/it}/state_event.rs | 12 +-- .../tests/it}/sticker.rs | 14 +-- .../tests/it}/stripped.rs | 10 +- .../tests/it}/to_device.rs | 5 +- .../tests/it}/ui/01-content-sanity-check.rs | 0 .../tests/it}/ui/02-no-event-type.rs | 0 .../tests/it}/ui/02-no-event-type.stderr | 0 .../tests/it}/ui/03-invalid-event-type.rs | 0 .../tests/it}/ui/03-invalid-event-type.stderr | 6 +- .../tests/it}/ui/04-event-sanity-check.rs | 6 +- .../tests/it}/ui/05-named-fields.rs | 2 +- .../tests/it}/ui/05-named-fields.stderr | 2 +- .../tests/it}/ui/06-no-content-field.rs | 2 +- .../tests/it}/ui/06-no-content-field.stderr | 2 +- .../tests/it}/ui/07-enum-sanity-check.rs | 11 +- .../tests/it}/ui/08-enum-invalid-path.rs | 3 +- .../tests/it/ui/08-enum-invalid-path.stderr | 5 + .../tests/it}/ui/09-enum-invalid-kind.rs | 0 .../tests/it}/ui/09-enum-invalid-kind.stderr | 2 +- .../tests/it}/ui/10-content-wildcard.rs | 2 +- ...1-content-without-relation-sanity-check.rs | 0 .../tests/it}/ui/12-no-relates_to.rs | 0 .../tests/it}/ui/12-no-relates_to.stderr | 2 +- .../it}/ui/13-private-event-content-type.rs | 0 .../events => ruma-events/tests/it}/video.rs | 18 ++-- .../events => ruma-events/tests/it}/voice.rs | 20 ++-- .../tests/it}/without_relation.rs | 10 +- crates/ruma-federation-api/Cargo.toml | 3 +- .../src/knock/send_knock.rs | 2 +- .../src/membership/create_invite/v1.rs | 2 +- .../src/membership/create_invite/v2.rs | 2 +- .../src/membership/create_leave_event/v1.rs | 2 +- crates/ruma-federation-api/src/space.rs | 5 +- .../src/thirdparty/exchange_invite.rs | 2 +- .../src/transactions/edu.rs | 5 +- crates/ruma-macros/src/events/event.rs | 20 ++-- .../ruma-macros/src/events/event_content.rs | 68 ++++++------ crates/ruma-macros/src/events/event_enum.rs | 100 ++++++++++-------- crates/ruma-macros/src/events/event_type.rs | 18 ++-- crates/ruma-macros/src/lib.rs | 8 +- crates/ruma-macros/src/util.rs | 18 ++++ crates/ruma-push-gateway-api/Cargo.toml | 3 +- .../src/send_event_notification.rs | 7 +- crates/ruma-state-res/Cargo.toml | 5 +- .../ruma-state-res/benches/state_res_bench.rs | 22 ++-- crates/ruma-state-res/src/event_auth.rs | 21 ++-- crates/ruma-state-res/src/lib.rs | 20 ++-- crates/ruma-state-res/src/power_levels.rs | 2 +- crates/ruma-state-res/src/state_event.rs | 3 +- crates/ruma-state-res/src/test_utils.rs | 25 ++--- crates/ruma/Cargo.toml | 46 ++++---- crates/ruma/src/lib.rs | 2 +- 239 files changed, 1009 insertions(+), 996 deletions(-) delete mode 100644 crates/ruma-common/tests/events/event_content.rs delete mode 100644 crates/ruma-common/tests/events/ui/08-enum-invalid-path.stderr create mode 100644 crates/ruma-events/Cargo.toml create mode 100644 crates/ruma-events/README.md rename crates/{ruma-common => ruma-events}/benches/event_deserialize.rs (93%) rename crates/{ruma-common/src/events => ruma-events/src}/_custom.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/audio.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/audio/amplitude_serde.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/call.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/call/answer.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/call/candidates.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/call/hangup.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/call/invite.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/call/negotiate.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/call/reject.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/call/select_answer.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/content.rs (92%) rename crates/{ruma-common/src/events => ruma-events/src}/direct.rs (85%) rename crates/{ruma-common => ruma-events}/src/doc/rich_reply.md (90%) create mode 100644 crates/ruma-events/src/doc/string_enum.md rename crates/{ruma-common/src/events => ruma-events/src}/dummy.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/emote.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/encrypted.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/enums.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/file.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/forwarded_room_key.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/fully_read.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/identity_server.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/ignored_user_list.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/image.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/key.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/key/verification.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/key/verification/accept.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/key/verification/cancel.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/key/verification/done.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/key/verification/key.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/key/verification/mac.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/key/verification/ready.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/key/verification/request.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/key/verification/start.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/kinds.rs (99%) rename crates/{ruma-common/src/events.rs => ruma-events/src/lib.rs} (88%) rename crates/{ruma-common/src/events => ruma-events/src}/location.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/location/zoomlevel_serde.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/message.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/message/historical_serde.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/pdu.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/policy.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/policy/rule.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/policy/rule/room.rs (93%) rename crates/{ruma-common/src/events => ruma-events/src}/policy/rule/server.rs (94%) rename crates/{ruma-common/src/events => ruma-events/src}/policy/rule/user.rs (93%) rename crates/{ruma-common/src/events => ruma-events/src}/poll.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/poll/end.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/poll/response.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/poll/start.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/poll/start/poll_answers_serde.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/poll/unstable_end.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/poll/unstable_response.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/poll/unstable_start.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/poll/unstable_start/unstable_poll_answers_serde.rs (90%) rename crates/{ruma-common/src/events => ruma-events/src}/poll/unstable_start/unstable_poll_kind_serde.rs (94%) rename crates/{ruma-common/src/events => ruma-events/src}/presence.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/push_rules.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/reaction.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/receipt.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/receipt/receipt_thread_serde.rs (87%) rename crates/{ruma-common/src/events => ruma-events/src}/relation.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/relation/rel_serde.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/room.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/room/aliases.rs (94%) rename crates/{ruma-common/src/events => ruma-events/src}/room/avatar.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/room/canonical_alias.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/room/create.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/room/encrypted.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/room/encrypted/relation_serde.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/room/encryption.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/room/guest_access.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/room/history_visibility.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/room/join_rules.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/room/member.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/room/member/change.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/audio.rs (94%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/content_serde.rs (94%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/emote.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/file.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/image.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/key_verification_request.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/location.rs (93%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/notice.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/relation_serde.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/reply.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/sanitize.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/server_notice.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/text.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/room/message/video.rs (94%) rename crates/{ruma-common/src/events => ruma-events/src}/room/name.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/room/pinned_events.rs (82%) rename crates/{ruma-common/src/events => ruma-events/src}/room/power_levels.rs (89%) rename crates/{ruma-common/src/events => ruma-events/src}/room/redaction.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/room/redaction/event_serde.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/room/server_acl.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/room/third_party_invite.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/room/thumbnail_source_serde.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/room/tombstone.rs (93%) rename crates/{ruma-common/src/events => ruma-events/src}/room/topic.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/room_key.rs (93%) rename crates/{ruma-common/src/events => ruma-events/src}/room_key_request.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/secret.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/secret/request.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/secret/send.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/secret_storage.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/secret_storage/default_key.rs (92%) rename crates/{ruma-common/src/events => ruma-events/src}/secret_storage/key.rs (97%) rename crates/{ruma-common/src/events => ruma-events/src}/secret_storage/secret.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/space.rs (100%) rename crates/{ruma-common/src/events => ruma-events/src}/space/child.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/space/parent.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/state_key.rs (85%) rename crates/{ruma-common/src/events => ruma-events/src}/sticker.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/tag.rs (98%) rename crates/{ruma-common/src/events => ruma-events/src}/typing.rs (96%) rename crates/{ruma-common/src/events => ruma-events/src}/unsigned.rs (99%) rename crates/{ruma-common/src/events => ruma-events/src}/video.rs (95%) rename crates/{ruma-common/src/events => ruma-events/src}/voice.rs (95%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/audio.rs (96%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/call.rs (96%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/encrypted.rs (98%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/enums.rs (91%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ephemeral_event.rs (91%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/event.rs (53%) create mode 100644 crates/ruma-events/tests/it/event_content.rs rename crates/{ruma-common/tests/events => ruma-events/tests/it}/event_enums.rs (80%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/file.rs (96%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/image.rs (96%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/initial_state.rs (88%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/location.rs (94%) rename crates/{ruma-common/tests/events/mod.rs => ruma-events/tests/it/main.rs} (92%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/message.rs (97%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/pdu.rs (97%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/poll.rs (97%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/redacted.rs (92%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/redaction.rs (91%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/relations.rs (97%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/room_message.rs (96%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/state_event.rs (95%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/sticker.rs (94%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/stripped.rs (94%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/to_device.rs (82%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/01-content-sanity-check.rs (100%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/02-no-event-type.rs (100%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/02-no-event-type.stderr (100%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/03-invalid-event-type.rs (100%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/03-invalid-event-type.stderr (84%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/04-event-sanity-check.rs (74%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/05-named-fields.rs (76%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/05-named-fields.stderr (78%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/06-no-content-field.rs (79%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/06-no-content-field.stderr (83%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/07-enum-sanity-check.rs (80%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/08-enum-invalid-path.rs (72%) create mode 100644 crates/ruma-events/tests/it/ui/08-enum-invalid-path.stderr rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/09-enum-invalid-kind.rs (100%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/09-enum-invalid-kind.stderr (77%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/10-content-wildcard.rs (90%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/11-content-without-relation-sanity-check.rs (100%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/12-no-relates_to.rs (100%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/12-no-relates_to.stderr (88%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/ui/13-private-event-content-type.rs (100%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/video.rs (96%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/voice.rs (90%) rename crates/{ruma-common/tests/events => ruma-events/tests/it}/without_relation.rs (90%) diff --git a/Cargo.toml b/Cargo.toml index 4ca18bba..b76baedf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ ruma-appservice-api = { version = "0.8.1", path = "crates/ruma-appservice-api" } ruma-common = { version = "0.11.3", path = "crates/ruma-common" } ruma-client = { version = "0.11.0", path = "crates/ruma-client" } ruma-client-api = { version = "0.16.2", path = "crates/ruma-client-api" } +ruma-events = { version = "0.26.0", path = "crates/ruma-events" } ruma-federation-api = { version = "0.7.1", path = "crates/ruma-federation-api" } ruma-html = { version = "0.1.0", path = "crates/ruma-html" } ruma-identifiers-validation = { version = "0.9.1", path = "crates/ruma-identifiers-validation" } diff --git a/crates/ruma-appservice-api/Cargo.toml b/crates/ruma-appservice-api/Cargo.toml index 1252bf55..5623ed69 100644 --- a/crates/ruma-appservice-api/Cargo.toml +++ b/crates/ruma-appservice-api/Cargo.toml @@ -24,7 +24,8 @@ unstable-msc3202 = [] [dependencies] js_int = { workspace = true, features = ["serde"] } -ruma-common = { workspace = true, features = ["api", "events"] } +ruma-common = { workspace = true, features = ["api"] } +ruma-events = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } diff --git a/crates/ruma-appservice-api/src/event/push_events.rs b/crates/ruma-appservice-api/src/event/push_events.rs index ec09aaf8..ff331d59 100644 --- a/crates/ruma-appservice-api/src/event/push_events.rs +++ b/crates/ruma-appservice-api/src/event/push_events.rs @@ -17,24 +17,23 @@ pub mod v1 { #[cfg(any(feature = "unstable-msc2409", feature = "unstable-msc3202"))] use js_int::UInt; - #[cfg(feature = "unstable-msc2409")] - use ruma_common::events::AnyToDeviceEvent; #[cfg(any(feature = "unstable-msc2409", feature = "unstable-msc3202"))] use ruma_common::OwnedUserId; use ruma_common::{ api::{request, response, Metadata}, - events::AnyTimelineEvent, metadata, serde::Raw, OwnedTransactionId, }; #[cfg(feature = "unstable-msc2409")] use ruma_common::{ - events::receipt::Receipt, presence::PresenceState, serde::from_raw_json_value, - OwnedEventId, OwnedRoomId, + presence::PresenceState, serde::from_raw_json_value, OwnedEventId, OwnedRoomId, }; #[cfg(feature = "unstable-msc3202")] use ruma_common::{DeviceKeyAlgorithm, OwnedDeviceId}; + use ruma_events::AnyTimelineEvent; + #[cfg(feature = "unstable-msc2409")] + use ruma_events::{receipt::Receipt, AnyToDeviceEvent}; #[cfg(feature = "unstable-msc2409")] use serde::Deserializer; #[cfg(any(feature = "unstable-msc2409", feature = "unstable-msc3202"))] diff --git a/crates/ruma-client-api/CHANGELOG.md b/crates/ruma-client-api/CHANGELOG.md index 309ef712..faf0b8f4 100644 --- a/crates/ruma-client-api/CHANGELOG.md +++ b/crates/ruma-client-api/CHANGELOG.md @@ -102,7 +102,7 @@ Improvements: * Add `ErrorKind::{UnableToAuthorizeJoin, UnableToGrantJoin}` encountered for restricted rooms * Add support for timestamp massaging (MSC3316) * Add support for querying relating events (MSC2675) -* Move `filter::RelationType` to `ruma_common::events::relations` +* Move `filter::RelationType` to `ruma_events::relations` * Add unstable support for discovering an OpenID Connect server (MSC2965) * Add `SpaceRoomJoinRule::KnockRestricted` (MSC3787) * Add unstable support for private read receipts (MSC2285) diff --git a/crates/ruma-client-api/Cargo.toml b/crates/ruma-client-api/Cargo.toml index 0033ccd5..aafa391b 100644 --- a/crates/ruma-client-api/Cargo.toml +++ b/crates/ruma-client-api/Cargo.toml @@ -54,7 +54,8 @@ http = { workspace = true } js_int = { workspace = true, features = ["serde"] } js_option = "0.1.1" maplit = { workspace = true } -ruma-common = { workspace = true, features = ["api", "events"] } +ruma-common = { workspace = true, features = ["api"] } +ruma-events = { workspace = true } serde = { workspace = true } serde_html_form = { workspace = true } serde_json = { workspace = true } 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 ae4ece05..17c1ea0e 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 @@ -9,11 +9,11 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::{AnyGlobalAccountDataEventContent, GlobalAccountDataEventType}, metadata, serde::Raw, OwnedUserId, }; + use ruma_events::{AnyGlobalAccountDataEventContent, GlobalAccountDataEventType}; const METADATA: Metadata = metadata! { method: GET, @@ -47,7 +47,7 @@ pub mod v3 { /// types with a variable suffix (like [`SecretStorageKeyEventContent`]) to /// deserialize it. /// - /// [`SecretStorageKeyEventContent`]: ruma_common::events::secret_storage::key::SecretStorageKeyEventContent + /// [`SecretStorageKeyEventContent`]: ruma_events::secret_storage::key::SecretStorageKeyEventContent #[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 d9cd6570..cabc75bb 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 @@ -9,11 +9,11 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::{AnyRoomAccountDataEventContent, RoomAccountDataEventType}, metadata, serde::Raw, OwnedRoomId, OwnedUserId, }; + use ruma_events::{AnyRoomAccountDataEventContent, RoomAccountDataEventType}; const METADATA: Metadata = metadata! { method: GET, 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 7f1fe2e5..1084123c 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 @@ -9,14 +9,13 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::{ - AnyGlobalAccountDataEventContent, GlobalAccountDataEventContent, - GlobalAccountDataEventType, - }, metadata, serde::Raw, OwnedUserId, }; + use ruma_events::{ + AnyGlobalAccountDataEventContent, GlobalAccountDataEventContent, GlobalAccountDataEventType, + }; use serde_json::value::to_raw_value as to_raw_json_value; const METADATA: Metadata = metadata! { 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 8bcca6f5..76de0830 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 @@ -9,13 +9,13 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::{ - AnyRoomAccountDataEventContent, RoomAccountDataEventContent, RoomAccountDataEventType, - }, metadata, serde::Raw, OwnedRoomId, OwnedUserId, }; + use ruma_events::{ + AnyRoomAccountDataEventContent, RoomAccountDataEventContent, RoomAccountDataEventType, + }; use serde_json::value::to_raw_value as to_raw_json_value; const METADATA: Metadata = metadata! { diff --git a/crates/ruma-client-api/src/context/get_context.rs b/crates/ruma-client-api/src/context/get_context.rs index 9fd0a16f..c309fb4b 100644 --- a/crates/ruma-client-api/src/context/get_context.rs +++ b/crates/ruma-client-api/src/context/get_context.rs @@ -10,11 +10,11 @@ pub mod v3 { use js_int::{uint, UInt}; use ruma_common::{ api::{request, response, Metadata}, - events::{AnyStateEvent, AnyTimelineEvent}, metadata, serde::Raw, OwnedEventId, OwnedRoomId, }; + use ruma_events::{AnyStateEvent, AnyTimelineEvent}; use crate::filter::RoomEventFilter; diff --git a/crates/ruma-client-api/src/dehydrated_device/get_events.rs b/crates/ruma-client-api/src/dehydrated_device/get_events.rs index e342ab2a..cc71610e 100644 --- a/crates/ruma-client-api/src/dehydrated_device/get_events.rs +++ b/crates/ruma-client-api/src/dehydrated_device/get_events.rs @@ -9,11 +9,11 @@ pub mod unstable { use ruma_common::{ api::{request, response, Metadata}, - events::AnyToDeviceEvent, metadata, serde::Raw, OwnedDeviceId, }; + use ruma_events::AnyToDeviceEvent; const METADATA: Metadata = metadata! { method: POST, 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 6200cef7..9f4f5978 100644 --- a/crates/ruma-client-api/src/membership/get_member_events.rs +++ b/crates/ruma-client-api/src/membership/get_member_events.rs @@ -9,11 +9,11 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::room::member::RoomMemberEvent, metadata, serde::{Raw, StringEnum}, OwnedRoomId, }; + use ruma_events::room::member::RoomMemberEvent; use crate::PrivOwnedStr; 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 36d3887d..7b42c6ea 100644 --- a/crates/ruma-client-api/src/message/get_message_events.rs +++ b/crates/ruma-client-api/src/message/get_message_events.rs @@ -10,11 +10,11 @@ pub mod v3 { use js_int::{uint, UInt}; use ruma_common::{ api::{request, response, Direction, Metadata}, - events::{AnyStateEvent, AnyTimelineEvent}, metadata, serde::Raw, OwnedRoomId, }; + use ruma_events::{AnyStateEvent, AnyTimelineEvent}; use crate::filter::RoomEventFilter; 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 1cd4bf5e..10e4300a 100644 --- a/crates/ruma-client-api/src/message/send_message_event.rs +++ b/crates/ruma-client-api/src/message/send_message_event.rs @@ -9,11 +9,11 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::{AnyMessageLikeEventContent, MessageLikeEventContent, MessageLikeEventType}, metadata, serde::Raw, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedTransactionId, }; + use ruma_events::{AnyMessageLikeEventContent, MessageLikeEventContent, MessageLikeEventType}; use serde_json::value::to_raw_value as to_raw_json_value; const METADATA: Metadata = metadata! { diff --git a/crates/ruma-client-api/src/push/get_notifications.rs b/crates/ruma-client-api/src/push/get_notifications.rs index 2e498d75..a3d35593 100644 --- a/crates/ruma-client-api/src/push/get_notifications.rs +++ b/crates/ruma-client-api/src/push/get_notifications.rs @@ -10,12 +10,12 @@ pub mod v3 { use js_int::UInt; use ruma_common::{ api::{request, response, Metadata}, - events::AnySyncTimelineEvent, metadata, push::Action, serde::Raw, MilliSecondsSinceUnixEpoch, OwnedRoomId, }; + use ruma_events::AnySyncTimelineEvent; use serde::{Deserialize, Serialize}; const METADATA: Metadata = metadata! { diff --git a/crates/ruma-client-api/src/receipt/create_receipt.rs b/crates/ruma-client-api/src/receipt/create_receipt.rs index 850527ce..4c76f7e8 100644 --- a/crates/ruma-client-api/src/receipt/create_receipt.rs +++ b/crates/ruma-client-api/src/receipt/create_receipt.rs @@ -9,11 +9,11 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::receipt::ReceiptThread, metadata, serde::{OrdAsRefStr, PartialEqAsRefStr, PartialOrdAsRefStr, StringEnum}, OwnedEventId, OwnedRoomId, }; + use ruma_events::receipt::ReceiptThread; use crate::PrivOwnedStr; diff --git a/crates/ruma-client-api/src/relations/get_relating_events.rs b/crates/ruma-client-api/src/relations/get_relating_events.rs index e578b549..5983c492 100644 --- a/crates/ruma-client-api/src/relations/get_relating_events.rs +++ b/crates/ruma-client-api/src/relations/get_relating_events.rs @@ -10,11 +10,11 @@ pub mod v1 { use js_int::UInt; use ruma_common::{ api::{request, response, Direction, Metadata}, - events::AnyMessageLikeEvent, metadata, serde::Raw, OwnedEventId, OwnedRoomId, }; + use ruma_events::AnyMessageLikeEvent; const METADATA: Metadata = metadata! { method: GET, diff --git a/crates/ruma-client-api/src/relations/get_relating_events_with_rel_type.rs b/crates/ruma-client-api/src/relations/get_relating_events_with_rel_type.rs index 4a1e4351..4bc05585 100644 --- a/crates/ruma-client-api/src/relations/get_relating_events_with_rel_type.rs +++ b/crates/ruma-client-api/src/relations/get_relating_events_with_rel_type.rs @@ -11,11 +11,11 @@ pub mod v1 { use js_int::UInt; use ruma_common::{ api::{request, response, Metadata}, - events::{relation::RelationType, AnyMessageLikeEvent}, metadata, serde::Raw, OwnedEventId, OwnedRoomId, }; + use ruma_events::{relation::RelationType, AnyMessageLikeEvent}; const METADATA: Metadata = metadata! { method: GET, diff --git a/crates/ruma-client-api/src/relations/get_relating_events_with_rel_type_and_event_type.rs b/crates/ruma-client-api/src/relations/get_relating_events_with_rel_type_and_event_type.rs index 9aefc3a9..682b6488 100644 --- a/crates/ruma-client-api/src/relations/get_relating_events_with_rel_type_and_event_type.rs +++ b/crates/ruma-client-api/src/relations/get_relating_events_with_rel_type_and_event_type.rs @@ -11,11 +11,11 @@ pub mod v1 { use js_int::UInt; use ruma_common::{ api::{request, response, Metadata}, - events::{relation::RelationType, AnyMessageLikeEvent, TimelineEventType}, metadata, serde::Raw, OwnedEventId, OwnedRoomId, }; + use ruma_events::{relation::RelationType, AnyMessageLikeEvent, TimelineEventType}; const METADATA: Metadata = metadata! { method: GET, diff --git a/crates/ruma-client-api/src/room/create_room.rs b/crates/ruma-client-api/src/room/create_room.rs index 4816a067..d4b2b57f 100644 --- a/crates/ruma-client-api/src/room/create_room.rs +++ b/crates/ruma-client-api/src/room/create_room.rs @@ -10,18 +10,18 @@ pub mod v3 { use assign::assign; use ruma_common::{ api::{request, response, Metadata}, - events::{ - room::{ - create::{PreviousRoom, RoomCreateEventContent}, - power_levels::RoomPowerLevelsEventContent, - }, - AnyInitialStateEvent, - }, metadata, room::RoomType, serde::{Raw, StringEnum}, OwnedRoomId, OwnedUserId, RoomVersionId, }; + use ruma_events::{ + room::{ + create::{PreviousRoom, RoomCreateEventContent}, + power_levels::RoomPowerLevelsEventContent, + }, + AnyInitialStateEvent, + }; use serde::{Deserialize, Serialize}; use crate::{membership::Invite3pid, room::Visibility, PrivOwnedStr}; 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 4aba97a8..1db49274 100644 --- a/crates/ruma-client-api/src/room/get_room_event.rs +++ b/crates/ruma-client-api/src/room/get_room_event.rs @@ -9,11 +9,11 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::AnyTimelineEvent, metadata, serde::Raw, OwnedEventId, OwnedRoomId, }; + use ruma_events::AnyTimelineEvent; const METADATA: Metadata = metadata! { method: GET, diff --git a/crates/ruma-client-api/src/search/search_events.rs b/crates/ruma-client-api/src/search/search_events.rs index 3a209ff1..9c4505c5 100644 --- a/crates/ruma-client-api/src/search/search_events.rs +++ b/crates/ruma-client-api/src/search/search_events.rs @@ -12,11 +12,11 @@ pub mod v3 { use js_int::{uint, UInt}; use ruma_common::{ api::{request, response, Metadata}, - events::{AnyStateEvent, AnyTimelineEvent}, metadata, serde::{Raw, StringEnum}, OwnedEventId, OwnedMxcUri, OwnedRoomId, OwnedUserId, }; + use ruma_events::{AnyStateEvent, AnyTimelineEvent}; use serde::{Deserialize, Serialize}; use crate::{filter::RoomEventFilter, PrivOwnedStr}; diff --git a/crates/ruma-client-api/src/space.rs b/crates/ruma-client-api/src/space.rs index c1b52acf..42ffa05f 100644 --- a/crates/ruma-client-api/src/space.rs +++ b/crates/ruma-client-api/src/space.rs @@ -6,9 +6,10 @@ use js_int::UInt; use ruma_common::{ - events::space::child::HierarchySpaceChildEvent, room::RoomType, serde::Raw, - space::SpaceRoomJoinRule, OwnedMxcUri, OwnedRoomAliasId, OwnedRoomId, + room::RoomType, serde::Raw, space::SpaceRoomJoinRule, OwnedMxcUri, OwnedRoomAliasId, + OwnedRoomId, }; +use ruma_events::space::child::HierarchySpaceChildEvent; use serde::{Deserialize, Serialize}; pub mod get_hierarchy; 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 b3505dbb..23ec14db 100644 --- a/crates/ruma-client-api/src/state/get_state_events.rs +++ b/crates/ruma-client-api/src/state/get_state_events.rs @@ -9,11 +9,11 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::AnyStateEvent, metadata, serde::Raw, OwnedRoomId, }; + use ruma_events::AnyStateEvent; const METADATA: Metadata = metadata! { method: GET, 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 41a615cb..4ff9480d 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 @@ -9,11 +9,11 @@ pub mod v3 { use ruma_common::{ api::{response, Metadata}, - events::{AnyStateEventContent, StateEventType}, metadata, serde::Raw, OwnedRoomId, }; + use ruma_events::{AnyStateEventContent, StateEventType}; const METADATA: Metadata = metadata! { method: GET, 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 0644f5f9..3ba81933 100644 --- a/crates/ruma-client-api/src/state/send_state_event.rs +++ b/crates/ruma-client-api/src/state/send_state_event.rs @@ -11,11 +11,11 @@ pub mod v3 { use ruma_common::{ api::{response, Metadata}, - events::{AnyStateEventContent, StateEventContent, StateEventType}, metadata, serde::Raw, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, }; + use ruma_events::{AnyStateEventContent, StateEventContent, StateEventType}; use serde_json::value::to_raw_value as to_raw_json_value; const METADATA: Metadata = metadata! { @@ -209,9 +209,9 @@ pub mod v3 { fn serialize() { use ruma_common::{ api::{MatrixVersion, OutgoingRequest as _, SendAccessToken}, - events::{room::name::RoomNameEventContent, EmptyStateKey}, owned_room_id, }; + use ruma_events::{room::name::RoomNameEventContent, EmptyStateKey}; // This used to panic in make_endpoint_url because of a mismatch in the path parameter count let req = Request::new( diff --git a/crates/ruma-client-api/src/sync/sync_events/v3.rs b/crates/ruma-client-api/src/sync/sync_events/v3.rs index 1b71eea9..f94db6c7 100644 --- a/crates/ruma-client-api/src/sync/sync_events/v3.rs +++ b/crates/ruma-client-api/src/sync/sync_events/v3.rs @@ -7,16 +7,16 @@ use std::{collections::BTreeMap, time::Duration}; use js_int::UInt; use ruma_common::{ api::{request, response, Metadata}, - events::{ - presence::PresenceEvent, AnyGlobalAccountDataEvent, AnyRoomAccountDataEvent, - AnyStrippedStateEvent, AnySyncEphemeralRoomEvent, AnySyncStateEvent, AnySyncTimelineEvent, - AnyToDeviceEvent, - }, metadata, presence::PresenceState, serde::Raw, DeviceKeyAlgorithm, OwnedEventId, OwnedRoomId, }; +use ruma_events::{ + presence::PresenceEvent, AnyGlobalAccountDataEvent, AnyRoomAccountDataEvent, + AnyStrippedStateEvent, AnySyncEphemeralRoomEvent, AnySyncStateEvent, AnySyncTimelineEvent, + AnyToDeviceEvent, +}; use serde::{Deserialize, Serialize}; use super::{DeviceLists, UnreadNotificationsCount}; diff --git a/crates/ruma-client-api/src/sync/sync_events/v4.rs b/crates/ruma-client-api/src/sync/sync_events/v4.rs index 5182956d..438947e2 100644 --- a/crates/ruma-client-api/src/sync/sync_events/v4.rs +++ b/crates/ruma-client-api/src/sync/sync_events/v4.rs @@ -9,15 +9,15 @@ use std::{collections::BTreeMap, time::Duration}; use js_int::UInt; use ruma_common::{ api::{request, response, Metadata}, - events::{ - receipt::SyncReceiptEvent, typing::SyncTypingEvent, AnyGlobalAccountDataEvent, - AnyRoomAccountDataEvent, AnyStrippedStateEvent, AnySyncStateEvent, AnySyncTimelineEvent, - AnyToDeviceEvent, StateEventType, TimelineEventType, - }, metadata, serde::{duration::opt_ms, Raw}, DeviceKeyAlgorithm, MilliSecondsSinceUnixEpoch, OwnedMxcUri, OwnedRoomId, }; +use ruma_events::{ + receipt::SyncReceiptEvent, typing::SyncTypingEvent, AnyGlobalAccountDataEvent, + AnyRoomAccountDataEvent, AnyStrippedStateEvent, AnySyncStateEvent, AnySyncTimelineEvent, + AnyToDeviceEvent, StateEventType, TimelineEventType, +}; use serde::{Deserialize, Serialize}; use super::{DeviceLists, UnreadNotificationsCount}; diff --git a/crates/ruma-client-api/src/tag/create_tag.rs b/crates/ruma-client-api/src/tag/create_tag.rs index 6815e828..781e7f57 100644 --- a/crates/ruma-client-api/src/tag/create_tag.rs +++ b/crates/ruma-client-api/src/tag/create_tag.rs @@ -9,9 +9,9 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::tag::TagInfo, metadata, OwnedRoomId, OwnedUserId, }; + use ruma_events::tag::TagInfo; const METADATA: Metadata = metadata! { method: PUT, diff --git a/crates/ruma-client-api/src/tag/get_tags.rs b/crates/ruma-client-api/src/tag/get_tags.rs index 181f0c02..29b06d37 100644 --- a/crates/ruma-client-api/src/tag/get_tags.rs +++ b/crates/ruma-client-api/src/tag/get_tags.rs @@ -9,9 +9,9 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::tag::Tags, metadata, OwnedRoomId, OwnedUserId, }; + use ruma_events::tag::Tags; const METADATA: Metadata = metadata! { method: GET, @@ -59,10 +59,8 @@ pub mod v3 { #[cfg(all(test, feature = "server"))] mod server_tests { use assign::assign; - use ruma_common::{ - api::OutgoingResponse, - events::tag::{TagInfo, Tags}, - }; + use ruma_common::api::OutgoingResponse; + use ruma_events::tag::{TagInfo, Tags}; use serde_json::json; use super::Response; diff --git a/crates/ruma-client-api/src/threads/get_threads.rs b/crates/ruma-client-api/src/threads/get_threads.rs index af811f65..a64c2d2e 100644 --- a/crates/ruma-client-api/src/threads/get_threads.rs +++ b/crates/ruma-client-api/src/threads/get_threads.rs @@ -10,11 +10,11 @@ pub mod v1 { use js_int::UInt; use ruma_common::{ api::{request, response, Metadata}, - events::AnyTimelineEvent, metadata, serde::{Raw, StringEnum}, OwnedRoomId, }; + use ruma_events::AnyTimelineEvent; use crate::PrivOwnedStr; 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 6c57d372..5cca0a58 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 @@ -11,12 +11,12 @@ pub mod v3 { use ruma_common::{ api::{request, response, Metadata}, - events::{AnyToDeviceEventContent, ToDeviceEventType}, metadata, serde::Raw, to_device::DeviceIdOrAllDevices, OwnedTransactionId, OwnedUserId, }; + use ruma_events::{AnyToDeviceEventContent, ToDeviceEventType}; const METADATA: Metadata = metadata! { method: PUT, diff --git a/crates/ruma-common/CHANGELOG.md b/crates/ruma-common/CHANGELOG.md index e5a31abe..291c316e 100644 --- a/crates/ruma-common/CHANGELOG.md +++ b/crates/ruma-common/CHANGELOG.md @@ -43,6 +43,9 @@ Breaking changes: - In Markdown, soft line breaks are transformed into hard line breaks when compiled into HTML. - Move the HTML functions in `events::room::message::sanitize` to the ruma-html crate - The `unstable-sanitize` cargo feature was renamed to `html` +- Removed the `events` module, it is once again its own crate (`ruma-events`) +- Removed `From` and `TryFrom` implementations for `RedactedBecause` in favor of named constructors + (`from_json` and `from_raw_event`) Improvements: diff --git a/crates/ruma-common/Cargo.toml b/crates/ruma-common/Cargo.toml index 55443a98..09d5f0c0 100644 --- a/crates/ruma-common/Cargo.toml +++ b/crates/ruma-common/Cargo.toml @@ -23,31 +23,13 @@ server = [] api = ["dep:http", "dep:konst"] canonical-json = [] -events = [] -html = ["dep:ruma-html"] js = ["dep:js-sys", "getrandom?/js", "uuid?/js"] -markdown = ["pulldown-cmark"] rand = ["dep:rand", "dep:uuid"] unstable-exhaustive-types = [] -unstable-msc1767 = [] -unstable-msc2448 = [] -unstable-msc2747 = [] unstable-msc2870 = [] -unstable-msc3245 = ["unstable-msc3246"] -unstable-msc3246 = ["unstable-msc3927"] -unstable-msc3381 = ["unstable-msc1767"] -unstable-msc3488 = ["unstable-msc1767"] -unstable-msc3551 = ["unstable-msc3956"] -unstable-msc3552 = ["unstable-msc3551"] -unstable-msc3553 = ["unstable-msc3552"] -unstable-msc3554 = ["unstable-msc1767"] -unstable-msc3927 = ["unstable-msc3551"] +unstable-msc3381 = [] unstable-msc3931 = [] unstable-msc3932 = ["unstable-msc3931"] -unstable-msc3954 = ["unstable-msc1767"] -unstable-msc3955 = ["unstable-msc1767"] -unstable-msc3956 = ["unstable-msc1767"] -unstable-pdu = [] unstable-unspecified = [] # Don't validate the version part in `KeyId`. @@ -69,9 +51,6 @@ compat-null = [] # mandatory. Deserialization will yield a default value like an empty string. compat-optional = [] -# Allow TagInfo to contain a stringified floating-point value for the `order` field. -compat-tag-info = [] - [dependencies] base64 = { workspace = true } bytes = "1.0.1" @@ -80,13 +59,10 @@ getrandom = { version = "0.2.6", optional = true } http = { workspace = true, optional = true } indexmap = { version = "2.0.0", features = ["serde"] } js_int = { workspace = true, features = ["serde"] } -js_option = "0.1.0" konst = { version = "0.3.5", default-features = false, features = ["cmp", "iter", "parsing"], optional = true } percent-encoding = "2.1.0" -pulldown-cmark = { version = "0.9.1", default-features = false, optional = true } rand = { version = "0.8.3", optional = true } regex = { version = "1.5.6", default-features = false, features = ["std", "perf"] } -ruma-html = { workspace = true, optional = true } ruma-identifiers-validation = { workspace = true } ruma-macros = { workspace = true } serde = { workspace = true } @@ -98,20 +74,11 @@ url = "2.2.2" uuid = { version = "1.0.0", optional = true, features = ["v4"] } wildmatch = "2.0.0" -# dev-dependencies can't be optional, so this is a regular dependency -criterion = { workspace = true, optional = true } - [target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies] js-sys = { version = "0.3", optional = true } [dev-dependencies] assert_matches2 = { workspace = true } assign = { workspace = true } -http = { workspace = true } maplit = { workspace = true } trybuild = "1.0.71" - -[[bench]] -name = "event_deserialize" -harness = false -required-features = ["criterion", "events"] diff --git a/crates/ruma-common/src/canonical_json.rs b/crates/ruma-common/src/canonical_json.rs index dda0b134..40e81dfa 100644 --- a/crates/ruma-common/src/canonical_json.rs +++ b/crates/ruma-common/src/canonical_json.rs @@ -8,15 +8,7 @@ use serde_json::Value as JsonValue; mod value; pub use self::value::{CanonicalJsonObject, CanonicalJsonValue}; -use crate::RoomVersionId; -#[cfg(feature = "events")] -use crate::{ - events::room::redaction::{ - OriginalRoomRedactionEvent, OriginalSyncRoomRedactionEvent, RoomRedactionEvent, - SyncRoomRedactionEvent, - }, - serde::Raw, -}; +use crate::{serde::Raw, RoomVersionId}; /// The set of possible errors when serializing to canonical JSON. #[cfg(feature = "canonical-json")] @@ -124,52 +116,25 @@ pub fn to_canonical_value( } /// The value to put in `unsigned.redacted_because`. -/// -/// See `From` implementations for ways to create an instance of this type. #[derive(Clone, Debug)] pub struct RedactedBecause(CanonicalJsonObject); -impl From for RedactedBecause { - fn from(obj: CanonicalJsonObject) -> Self { +impl RedactedBecause { + /// Create a `RedactedBecause` from an arbitrary JSON object. + pub fn from_json(obj: CanonicalJsonObject) -> Self { Self(obj) } -} -#[cfg(feature = "events")] -impl TryFrom<&Raw> for RedactedBecause { - type Error = serde_json::Error; - - fn try_from(value: &Raw) -> Result { - value.deserialize_as().map(Self) + /// Create a `RedactedBecause` from a redaction event. + /// + /// Fails if the raw event is not valid canonical JSON. + pub fn from_raw_event(ev: &Raw) -> serde_json::Result { + ev.deserialize_as().map(Self) } } -#[cfg(feature = "events")] -impl TryFrom<&Raw> for RedactedBecause { - type Error = serde_json::Error; - - fn try_from(value: &Raw) -> Result { - value.deserialize_as().map(Self) - } -} - -#[cfg(feature = "events")] -impl TryFrom<&Raw> for RedactedBecause { - type Error = serde_json::Error; - - fn try_from(value: &Raw) -> Result { - value.deserialize_as().map(Self) - } -} - -#[cfg(feature = "events")] -impl TryFrom<&Raw> for RedactedBecause { - type Error = serde_json::Error; - - fn try_from(value: &Raw) -> Result { - value.deserialize_as().map(Self) - } -} +/// Marker trait for redaction events. +pub trait RedactionEvent {} /// Redacts an event using the rules specified in the Matrix client-server specification. /// diff --git a/crates/ruma-common/src/lib.rs b/crates/ruma-common/src/lib.rs index 2250e8cd..7198397d 100644 --- a/crates/ruma-common/src/lib.rs +++ b/crates/ruma-common/src/lib.rs @@ -24,8 +24,6 @@ pub mod authentication; pub mod canonical_json; pub mod directory; pub mod encryption; -#[cfg(feature = "events")] -pub mod events; mod identifiers; mod percent_encode; pub mod power_levels; diff --git a/crates/ruma-common/src/power_levels.rs b/crates/ruma-common/src/power_levels.rs index 608f77c3..dc030b63 100644 --- a/crates/ruma-common/src/power_levels.rs +++ b/crates/ruma-common/src/power_levels.rs @@ -31,8 +31,8 @@ impl NotificationPowerLevels { } } - #[cfg(feature = "events")] - pub(crate) fn is_default(&self) -> bool { + /// Whether all fields have their default values. + pub fn is_default(&self) -> bool { self.room == default_power_level() } } diff --git a/crates/ruma-common/src/space.rs b/crates/ruma-common/src/space.rs index bf417b22..d9d5919b 100644 --- a/crates/ruma-common/src/space.rs +++ b/crates/ruma-common/src/space.rs @@ -8,9 +8,9 @@ use crate::PrivOwnedStr; /// The rule used for users wishing to join a room. /// -/// In contrast to the regular [`JoinRule`](crate::events::room::join_rules::JoinRule), this -/// enum does not hold the conditions for joining restricted rooms. Instead, the server is assumed -/// to only return rooms the user is allowed to join in a space hierarchy listing response. +/// In contrast to the regular `JoinRule` in `ruma_events`, this enum does not hold the conditions +/// for joining restricted rooms. Instead, the server is assumed to only return rooms the user is +/// allowed to join in a space hierarchy listing response. #[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))] #[derive(Clone, Default, PartialEq, Eq, StringEnum)] #[ruma_enum(rename_all = "snake_case")] @@ -29,15 +29,14 @@ pub enum SpaceRoomJoinRule { Private, /// Users can join the room if they are invited, or if they meet any of the conditions - /// described in a set of [`AllowRule`](crate::events::room::join_rules::AllowRule)s. + /// described in a set of allow rules. /// /// These rules are not made available as part of a space hierarchy listing response and can /// only be seen by users inside the room. Restricted, /// Users can join the room if they are invited, or if they meet any of the conditions - /// described in a set of [`AllowRule`](crate::events::room::join_rules::AllowRule)s, or - /// they can request an invite to the room. + /// described in a set of allow rules, or they can request an invite to the room. KnockRestricted, /// Anyone can join the room without any prior action. diff --git a/crates/ruma-common/tests/api/ruma_api_macros.rs b/crates/ruma-common/tests/api/ruma_api_macros.rs index 09d6d2c9..b0545f52 100644 --- a/crates/ruma-common/tests/api/ruma_api_macros.rs +++ b/crates/ruma-common/tests/api/ruma_api_macros.rs @@ -1,11 +1,9 @@ #![allow(clippy::exhaustive_structs)] -#[cfg(feature = "events")] pub mod some_endpoint { use http::header::CONTENT_TYPE; use ruma_common::{ api::{request, response, Metadata}, - events::{tag::TagEvent, AnyTimelineEvent}, metadata, serde::Raw, OwnedUserId, @@ -55,11 +53,14 @@ pub mod some_endpoint { pub optional_flag: Option, // Use `Raw` instead of the actual event to allow additional fields to be sent... - pub event: Raw, + pub event: Raw, // ... and to allow unknown events when the endpoint deals with event collections. - pub list_of_events: Vec>, + pub list_of_events: Vec>, } + + // Dummy type to avoid circular dev-dependency that rust-analyzer doesn't like + pub struct Event {} } pub mod newtype_body_endpoint { diff --git a/crates/ruma-common/tests/api/ui/api-sanity-check.rs b/crates/ruma-common/tests/api/ui/api-sanity-check.rs index be661df7..9e82205a 100644 --- a/crates/ruma-common/tests/api/ui/api-sanity-check.rs +++ b/crates/ruma-common/tests/api/ui/api-sanity-check.rs @@ -1,7 +1,6 @@ use http::header::CONTENT_TYPE; use ruma_common::{ api::{request, response, Metadata}, - events::{tag::TagEvent, AnyTimelineEvent}, metadata, serde::Raw, }; @@ -54,12 +53,15 @@ pub struct Response { pub optional_flag: Option, // Use `Raw` instead of the actual event to allow additional fields to be sent... - pub event: Raw, + pub event: Raw, // ... and to allow unknown events when the endpoint deals with event collections. - pub list_of_events: Vec>, + pub list_of_events: Vec>, } +// Dummy type to avoid circular dev-dependency that rust-analyzer doesn't like +pub struct Event {} + fn main() { use ruma_common::api::MatrixVersion; diff --git a/crates/ruma-common/tests/events/event_content.rs b/crates/ruma-common/tests/events/event_content.rs deleted file mode 100644 index d0257993..00000000 --- a/crates/ruma-common/tests/events/event_content.rs +++ /dev/null @@ -1,11 +0,0 @@ -#[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"); - t.pass("tests/events/ui/10-content-wildcard.rs"); - t.pass("tests/events/ui/11-content-without-relation-sanity-check.rs"); - t.compile_fail("tests/events/ui/12-no-relates_to.rs"); - t.pass("tests/events/ui/13-private-event-content-type.rs"); -} diff --git a/crates/ruma-common/tests/events/ui/08-enum-invalid-path.stderr b/crates/ruma-common/tests/events/ui/08-enum-invalid-path.stderr deleted file mode 100644 index bc28b542..00000000 --- a/crates/ruma-common/tests/events/ui/08-enum-invalid-path.stderr +++ /dev/null @@ -1,5 +0,0 @@ -error[E0433]: failed to resolve: could not find `not` in `events` - --> tests/events/ui/08-enum-invalid-path.rs:6:35 - | -6 | "m.not.a.path" => events::not::a::path, - | ^^^ could not find `not` in `events` diff --git a/crates/ruma-common/tests/tests.rs b/crates/ruma-common/tests/tests.rs index cdb5e49a..7b69e3c9 100644 --- a/crates/ruma-common/tests/tests.rs +++ b/crates/ruma-common/tests/tests.rs @@ -1,4 +1,3 @@ mod api; -mod events; mod identifiers; mod serde; diff --git a/crates/ruma-events/Cargo.toml b/crates/ruma-events/Cargo.toml new file mode 100644 index 00000000..74bbfe3b --- /dev/null +++ b/crates/ruma-events/Cargo.toml @@ -0,0 +1,81 @@ +[package] +name = "ruma-events" +version = "0.26.0" +description = "Serializable types for the events in the Matrix specification." +homepage = "https://www.ruma.io/" +keywords = ["matrix", "chat", "messaging", "ruma"] +license = "MIT" +readme = "README.md" +repository = "https://github.com/ruma/ruma" +edition = "2021" +rust-version = { workspace = true } + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[features] +canonical-json = ["ruma-common/canonical-json"] +html = ["dep:ruma-html"] +markdown = ["pulldown-cmark"] +unstable-exhaustive-types = [] +unstable-msc1767 = [] +unstable-msc2448 = [] +unstable-msc2747 = [] +unstable-msc3245 = ["unstable-msc3246"] +unstable-msc3246 = ["unstable-msc3927"] +unstable-msc3381 = ["unstable-msc1767"] +unstable-msc3488 = ["unstable-msc1767"] +unstable-msc3551 = ["unstable-msc3956"] +unstable-msc3552 = ["unstable-msc3551"] +unstable-msc3553 = ["unstable-msc3552"] +unstable-msc3554 = ["unstable-msc1767"] +unstable-msc3927 = ["unstable-msc3551"] +unstable-msc3954 = ["unstable-msc1767"] +unstable-msc3955 = ["unstable-msc1767"] +unstable-msc3956 = ["unstable-msc1767"] +unstable-pdu = [] + +# Allow some mandatory fields to be missing, defaulting them to an empty string +# in deserialization. +compat-empty-string-null = [] + +# Allow certain fields to be absent even though the spec marks them as +# mandatory. Deserialization will yield a default value like an empty string. +compat-optional = [] + +# Allow TagInfo to contain a stringified floating-point value for the `order` field. +compat-tag-info = [] + +[dependencies] +indexmap = { version = "2.0.0", features = ["serde"] } +js_int = { workspace = true, features = ["serde"] } +js_option = "0.1.0" +percent-encoding = "2.1.0" +pulldown-cmark = { version = "0.9.1", default-features = false, optional = true } +regex = { version = "1.5.6", default-features = false, features = ["std", "perf"] } +ruma-common = { workspace = true } +ruma-html = { workspace = true, optional = true } +ruma-identifiers-validation = { workspace = true } +ruma-macros = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true, features = ["raw_value"] } +thiserror = { workspace = true } +tracing = { workspace = true, features = ["attributes"] } +url = "2.2.2" +wildmatch = "2.0.0" + +# dev-dependencies can't be optional, so this is a regular dependency +criterion = { workspace = true, optional = true } + +[dev-dependencies] +assert_matches2 = { workspace = true } +assign = { workspace = true } +http = { workspace = true } +maplit = { workspace = true } +trybuild = "1.0.71" + +[[bench]] +name = "event_deserialize" +harness = false +required-features = ["criterion"] diff --git a/crates/ruma-events/README.md b/crates/ruma-events/README.md new file mode 100644 index 00000000..2d50831d --- /dev/null +++ b/crates/ruma-events/README.md @@ -0,0 +1,8 @@ +# 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) + +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-common/benches/event_deserialize.rs b/crates/ruma-events/benches/event_deserialize.rs similarity index 93% rename from crates/ruma-common/benches/event_deserialize.rs rename to crates/ruma-events/benches/event_deserialize.rs index 7ca779df..7c7a5215 100644 --- a/crates/ruma-common/benches/event_deserialize.rs +++ b/crates/ruma-events/benches/event_deserialize.rs @@ -7,12 +7,10 @@ #![allow(unused_imports, dead_code)] use criterion::{criterion_group, criterion_main, Criterion}; -use ruma_common::{ - events::{ - room::power_levels::RoomPowerLevelsEventContent, AnyStateEvent, AnyTimelineEvent, - OriginalStateEvent, - }, - serde::Raw, +use ruma_common::serde::Raw; +use ruma_events::{ + room::power_levels::RoomPowerLevelsEventContent, AnyStateEvent, AnyTimelineEvent, + OriginalStateEvent, }; use serde_json::json; diff --git a/crates/ruma-common/src/events/_custom.rs b/crates/ruma-events/src/_custom.rs similarity index 99% rename from crates/ruma-common/src/events/_custom.rs rename to crates/ruma-events/src/_custom.rs index c4d34671..7175e564 100644 --- a/crates/ruma-common/src/events/_custom.rs +++ b/crates/ruma-events/src/_custom.rs @@ -1,3 +1,4 @@ +use ruma_common::RoomVersionId; use serde::Serialize; use serde_json::value::RawValue as RawJsonValue; @@ -9,7 +10,6 @@ use super::{ RoomAccountDataEventType, StateEventContent, StateEventType, StaticStateEventContent, ToDeviceEventContent, ToDeviceEventType, }; -use crate::RoomVersionId; macro_rules! custom_event_content { ($i:ident, $evt:ident) => { diff --git a/crates/ruma-common/src/events/audio.rs b/crates/ruma-events/src/audio.rs similarity index 96% rename from crates/ruma-common/src/events/audio.rs rename to crates/ruma-events/src/audio.rs index a815956c..c4ca4aa0 100644 --- a/crates/ruma-common/src/events/audio.rs +++ b/crates/ruma-events/src/audio.rs @@ -48,7 +48,7 @@ pub struct AudioEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, @@ -57,7 +57,7 @@ pub struct AudioEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, } diff --git a/crates/ruma-common/src/events/audio/amplitude_serde.rs b/crates/ruma-events/src/audio/amplitude_serde.rs similarity index 100% rename from crates/ruma-common/src/events/audio/amplitude_serde.rs rename to crates/ruma-events/src/audio/amplitude_serde.rs diff --git a/crates/ruma-common/src/events/call.rs b/crates/ruma-events/src/call.rs similarity index 100% rename from crates/ruma-common/src/events/call.rs rename to crates/ruma-events/src/call.rs diff --git a/crates/ruma-common/src/events/call/answer.rs b/crates/ruma-events/src/call/answer.rs similarity index 98% rename from crates/ruma-common/src/events/call/answer.rs rename to crates/ruma-events/src/call/answer.rs index 6c95f0dc..7cc84c59 100644 --- a/crates/ruma-common/src/events/call/answer.rs +++ b/crates/ruma-events/src/call/answer.rs @@ -2,13 +2,13 @@ //! //! [`m.call.answer`]: https://spec.matrix.org/latest/client-server-api/#mcallanswer +use ruma_common::{OwnedVoipId, VoipVersionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; #[cfg(feature = "unstable-msc2747")] use super::CallCapabilities; use super::SessionDescription; -use crate::{OwnedVoipId, VoipVersionId}; /// The content of an `m.call.answer` event. /// diff --git a/crates/ruma-common/src/events/call/candidates.rs b/crates/ruma-events/src/call/candidates.rs similarity index 98% rename from crates/ruma-common/src/events/call/candidates.rs rename to crates/ruma-events/src/call/candidates.rs index 7709ea7b..667bb66b 100644 --- a/crates/ruma-common/src/events/call/candidates.rs +++ b/crates/ruma-events/src/call/candidates.rs @@ -3,11 +3,10 @@ //! [`m.call.candidates`]: https://spec.matrix.org/latest/client-server-api/#mcallcandidates use js_int::UInt; +use ruma_common::{OwnedVoipId, VoipVersionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{OwnedVoipId, VoipVersionId}; - /// The content of an `m.call.candidates` event. /// /// This event is sent by callers after sending an invite and by the callee after answering. Its diff --git a/crates/ruma-common/src/events/call/hangup.rs b/crates/ruma-events/src/call/hangup.rs similarity index 97% rename from crates/ruma-common/src/events/call/hangup.rs rename to crates/ruma-events/src/call/hangup.rs index ee58acd7..2d469e1d 100644 --- a/crates/ruma-common/src/events/call/hangup.rs +++ b/crates/ruma-events/src/call/hangup.rs @@ -2,10 +2,11 @@ //! //! [`m.call.hangup`]: https://spec.matrix.org/latest/client-server-api/#mcallhangup +use ruma_common::{serde::StringEnum, OwnedVoipId, VoipVersionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{serde::StringEnum, OwnedVoipId, PrivOwnedStr, VoipVersionId}; +use crate::PrivOwnedStr; /// The content of an `m.call.hangup` event. /// diff --git a/crates/ruma-common/src/events/call/invite.rs b/crates/ruma-events/src/call/invite.rs similarity index 98% rename from crates/ruma-common/src/events/call/invite.rs rename to crates/ruma-events/src/call/invite.rs index 7f92aeb4..70e60bd4 100644 --- a/crates/ruma-common/src/events/call/invite.rs +++ b/crates/ruma-events/src/call/invite.rs @@ -3,13 +3,13 @@ //! [`m.call.invite`]: https://spec.matrix.org/latest/client-server-api/#mcallinvite use js_int::UInt; +use ruma_common::{OwnedUserId, OwnedVoipId, VoipVersionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; #[cfg(feature = "unstable-msc2747")] use super::CallCapabilities; use super::SessionDescription; -use crate::{OwnedUserId, OwnedVoipId, VoipVersionId}; /// The content of an `m.call.invite` event. /// diff --git a/crates/ruma-common/src/events/call/negotiate.rs b/crates/ruma-events/src/call/negotiate.rs similarity index 97% rename from crates/ruma-common/src/events/call/negotiate.rs rename to crates/ruma-events/src/call/negotiate.rs index b1f5b0d3..5a6f57dd 100644 --- a/crates/ruma-common/src/events/call/negotiate.rs +++ b/crates/ruma-events/src/call/negotiate.rs @@ -3,11 +3,11 @@ //! [`m.call.negotiate`]: https://spec.matrix.org/latest/client-server-api/#mcallnegotiate use js_int::UInt; +use ruma_common::{OwnedVoipId, VoipVersionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::SessionDescription; -use crate::{OwnedVoipId, VoipVersionId}; /// **Added in VoIP version 1.** The content of an `m.call.negotiate` event. /// diff --git a/crates/ruma-common/src/events/call/reject.rs b/crates/ruma-events/src/call/reject.rs similarity index 96% rename from crates/ruma-common/src/events/call/reject.rs rename to crates/ruma-events/src/call/reject.rs index a465842c..efdbee14 100644 --- a/crates/ruma-common/src/events/call/reject.rs +++ b/crates/ruma-events/src/call/reject.rs @@ -2,11 +2,10 @@ //! //! [`m.call.reject`]: https://spec.matrix.org/latest/client-server-api/#mcallreject +use ruma_common::{OwnedVoipId, VoipVersionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{OwnedVoipId, VoipVersionId}; - /// **Added in VoIP version 1.** The content of an `m.call.reject` event. /// /// Starting from VoIP version 1, this event is sent by the callee to reject an invite. diff --git a/crates/ruma-common/src/events/call/select_answer.rs b/crates/ruma-events/src/call/select_answer.rs similarity index 97% rename from crates/ruma-common/src/events/call/select_answer.rs rename to crates/ruma-events/src/call/select_answer.rs index db91fb18..bd38c21e 100644 --- a/crates/ruma-common/src/events/call/select_answer.rs +++ b/crates/ruma-events/src/call/select_answer.rs @@ -2,11 +2,10 @@ //! //! [`m.call.select_answer`]: https://spec.matrix.org/latest/client-server-api/#mcallselect_answer +use ruma_common::{OwnedVoipId, VoipVersionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{OwnedVoipId, VoipVersionId}; - /// **Added in VoIP version 1.** The content of an `m.call.select_answer` event. /// /// This event is sent by the caller when it has chosen an answer. diff --git a/crates/ruma-common/src/events/content.rs b/crates/ruma-events/src/content.rs similarity index 92% rename from crates/ruma-common/src/events/content.rs rename to crates/ruma-events/src/content.rs index 5ad97c5d..58ff1ef1 100644 --- a/crates/ruma-common/src/events/content.rs +++ b/crates/ruma-events/src/content.rs @@ -1,5 +1,6 @@ use std::fmt; +use ruma_common::serde::{CanBeEmpty, Raw}; use serde::{de::DeserializeOwned, Serialize}; use serde_json::{from_str as from_json_str, value::RawValue as RawJsonValue}; @@ -7,7 +8,6 @@ use super::{ EphemeralRoomEventType, GlobalAccountDataEventType, MessageLikeEventType, RoomAccountDataEventType, StateEventType, ToDeviceEventType, }; -use crate::serde::{CanBeEmpty, Raw}; /// The base trait that all event content types implement. /// @@ -22,13 +22,17 @@ pub trait EventContent: Sized + Serialize { fn event_type(&self) -> Self::EventType; } -impl Raw +pub trait RawExt { + /// Try to deserialize the JSON as an event's content with the given event type. + fn deserialize_with_type(&self, event_type: T::EventType) -> serde_json::Result; +} + +impl RawExt for Raw where T: EventContentFromType, T::EventType: fmt::Display, { - /// Try to deserialize the JSON as an event's content with the given event type. - pub fn deserialize_with_type(&self, event_type: T::EventType) -> serde_json::Result { + fn deserialize_with_type(&self, event_type: T::EventType) -> serde_json::Result { T::from_parts(&event_type.to_string(), self.json()) } } diff --git a/crates/ruma-common/src/events/direct.rs b/crates/ruma-events/src/direct.rs similarity index 85% rename from crates/ruma-common/src/events/direct.rs rename to crates/ruma-events/src/direct.rs index e924bf83..e8d7d2c6 100644 --- a/crates/ruma-common/src/events/direct.rs +++ b/crates/ruma-events/src/direct.rs @@ -7,11 +7,10 @@ use std::{ ops::{Deref, DerefMut}, }; +use ruma_common::{OwnedRoomId, OwnedUserId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{OwnedRoomId, OwnedUserId}; - /// The content of an `m.direct` event. /// /// A mapping of `UserId`s to a list of `RoomId`s which are considered *direct* for that particular @@ -59,18 +58,18 @@ impl FromIterator<(OwnedUserId, Vec)> for DirectEventContent { mod tests { use std::collections::BTreeMap; + use ruma_common::{owned_room_id, owned_user_id}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{DirectEvent, DirectEventContent}; - use crate::{room_id, user_id}; #[test] fn serialization() { let mut content = DirectEventContent(BTreeMap::new()); - let alice = user_id!("@alice:ruma.io"); - let rooms = vec![room_id!("!1:ruma.io").to_owned()]; + let alice = owned_user_id!("@alice:ruma.io"); + let rooms = vec![owned_room_id!("!1:ruma.io")]; - content.insert(alice.to_owned(), rooms.clone()); + content.insert(alice.clone(), rooms.clone()); let json_data = json!({ alice: rooms, @@ -81,8 +80,8 @@ mod tests { #[test] fn deserialization() { - let alice = user_id!("@alice:ruma.io").to_owned(); - let rooms = vec![room_id!("!1:ruma.io").to_owned(), room_id!("!2:ruma.io").to_owned()]; + let alice = owned_user_id!("@alice:ruma.io"); + let rooms = vec![owned_room_id!("!1:ruma.io"), owned_room_id!("!2:ruma.io")]; let json_data = json!({ "content": { diff --git a/crates/ruma-common/src/doc/rich_reply.md b/crates/ruma-events/src/doc/rich_reply.md similarity index 90% rename from crates/ruma-common/src/doc/rich_reply.md rename to crates/ruma-events/src/doc/rich_reply.md index f0bec908..350b9442 100644 --- a/crates/ruma-common/src/doc/rich_reply.md +++ b/crates/ruma-events/src/doc/rich_reply.md @@ -2,7 +2,7 @@ This function requires an [`OriginalRoomMessageEvent`] since it creates a permalink to the previous message, for which the room ID is required. If you want to reply to an [`OriginalSyncRoomMessageEvent`], you have to convert it first by calling -[`.into_full_event()`][crate::events::OriginalSyncMessageLikeEvent::into_full_event]. +[`.into_full_event()`][crate::OriginalSyncMessageLikeEvent::into_full_event]. If the message was edited, the previous message should be the original message that was edited, with the content of its replacement, to allow the fallback to be accurate at the time it is added. diff --git a/crates/ruma-events/src/doc/string_enum.md b/crates/ruma-events/src/doc/string_enum.md new file mode 100644 index 00000000..ba69fb5f --- /dev/null +++ b/crates/ruma-events/src/doc/string_enum.md @@ -0,0 +1,5 @@ + +This type can hold an arbitrary string. To build this with a custom value, convert it from a +string with `::from()` / `.into()`. To check for values that are not available as a +documented variant here, use its string representation, obtained through +[`.as_str()`](Self::as_str()). diff --git a/crates/ruma-common/src/events/dummy.rs b/crates/ruma-events/src/dummy.rs similarity index 100% rename from crates/ruma-common/src/events/dummy.rs rename to crates/ruma-events/src/dummy.rs diff --git a/crates/ruma-common/src/events/emote.rs b/crates/ruma-events/src/emote.rs similarity index 95% rename from crates/ruma-common/src/events/emote.rs rename to crates/ruma-events/src/emote.rs index 74fc65da..0355bb4b 100644 --- a/crates/ruma-common/src/events/emote.rs +++ b/crates/ruma-events/src/emote.rs @@ -29,7 +29,7 @@ pub struct EmoteEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, @@ -38,7 +38,7 @@ pub struct EmoteEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, } diff --git a/crates/ruma-common/src/events/encrypted.rs b/crates/ruma-events/src/encrypted.rs similarity index 100% rename from crates/ruma-common/src/events/encrypted.rs rename to crates/ruma-events/src/encrypted.rs diff --git a/crates/ruma-common/src/events/enums.rs b/crates/ruma-events/src/enums.rs similarity index 99% rename from crates/ruma-common/src/events/enums.rs rename to crates/ruma-events/src/enums.rs index 12eab3d5..083bd9fa 100644 --- a/crates/ruma-common/src/events/enums.rs +++ b/crates/ruma-events/src/enums.rs @@ -1,12 +1,12 @@ +use ruma_common::{ + serde::from_raw_json_value, EventId, MilliSecondsSinceUnixEpoch, OwnedRoomId, RoomId, + TransactionId, UserId, +}; use ruma_macros::{event_enum, EventEnumFromEvent}; use serde::{de, Deserialize}; use serde_json::value::RawValue as RawJsonValue; use super::room::encrypted; -use crate::{ - serde::from_raw_json_value, EventId, MilliSecondsSinceUnixEpoch, OwnedRoomId, RoomId, - TransactionId, UserId, -}; event_enum! { /// Any global account data event. diff --git a/crates/ruma-common/src/events/file.rs b/crates/ruma-events/src/file.rs similarity index 97% rename from crates/ruma-common/src/events/file.rs rename to crates/ruma-events/src/file.rs index f7a30aa7..e97461f3 100644 --- a/crates/ruma-common/src/events/file.rs +++ b/crates/ruma-events/src/file.rs @@ -5,6 +5,7 @@ use std::collections::BTreeMap; use js_int::UInt; +use ruma_common::{serde::Base64, OwnedMxcUri}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; @@ -12,7 +13,6 @@ use super::{ message::TextContentBlock, room::{message::Relation, EncryptedFile, JsonWebKey}, }; -use crate::{serde::Base64, OwnedMxcUri}; /// The payload for an extensible file message. /// @@ -41,7 +41,7 @@ pub struct FileEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, @@ -50,7 +50,7 @@ pub struct FileEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, } diff --git a/crates/ruma-common/src/events/forwarded_room_key.rs b/crates/ruma-events/src/forwarded_room_key.rs similarity index 98% rename from crates/ruma-common/src/events/forwarded_room_key.rs rename to crates/ruma-events/src/forwarded_room_key.rs index a06068bf..bb66200d 100644 --- a/crates/ruma-common/src/events/forwarded_room_key.rs +++ b/crates/ruma-events/src/forwarded_room_key.rs @@ -2,11 +2,10 @@ //! //! [`m.forwarded_room_key`]: https://spec.matrix.org/latest/client-server-api/#mforwarded_room_key +use ruma_common::{EventEncryptionAlgorithm, OwnedRoomId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{EventEncryptionAlgorithm, OwnedRoomId}; - /// The content of an `m.forwarded_room_key` event. /// /// To create an instance of this type, first create a `ToDeviceForwardedRoomKeyEventContentInit` diff --git a/crates/ruma-common/src/events/fully_read.rs b/crates/ruma-events/src/fully_read.rs similarity index 96% rename from crates/ruma-common/src/events/fully_read.rs rename to crates/ruma-events/src/fully_read.rs index 463a3f6a..d48ab10b 100644 --- a/crates/ruma-common/src/events/fully_read.rs +++ b/crates/ruma-events/src/fully_read.rs @@ -2,11 +2,10 @@ //! //! [`m.fully_read`]: https://spec.matrix.org/latest/client-server-api/#mfully_read +use ruma_common::OwnedEventId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::OwnedEventId; - /// The content of an `m.fully_read` event. /// /// The current location of the user's read marker in a room. diff --git a/crates/ruma-common/src/events/identity_server.rs b/crates/ruma-events/src/identity_server.rs similarity index 100% rename from crates/ruma-common/src/events/identity_server.rs rename to crates/ruma-events/src/identity_server.rs diff --git a/crates/ruma-common/src/events/ignored_user_list.rs b/crates/ruma-events/src/ignored_user_list.rs similarity index 95% rename from crates/ruma-common/src/events/ignored_user_list.rs rename to crates/ruma-events/src/ignored_user_list.rs index 39b88e3a..30b3818a 100644 --- a/crates/ruma-common/src/events/ignored_user_list.rs +++ b/crates/ruma-events/src/ignored_user_list.rs @@ -4,11 +4,10 @@ use std::collections::BTreeMap; +use ruma_common::OwnedUserId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::OwnedUserId; - /// The content of an `m.ignored_user_list` event. /// /// A list of users to ignore. @@ -52,10 +51,11 @@ impl IgnoredUser { #[cfg(test)] mod tests { use assert_matches2::assert_matches; + use ruma_common::{owned_user_id, user_id}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::IgnoredUserListEventContent; - use crate::{events::AnyGlobalAccountDataEvent, owned_user_id, user_id}; + use crate::AnyGlobalAccountDataEvent; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/image.rs b/crates/ruma-events/src/image.rs similarity index 97% rename from crates/ruma-common/src/events/image.rs rename to crates/ruma-events/src/image.rs index 68881a69..97138ba2 100644 --- a/crates/ruma-common/src/events/image.rs +++ b/crates/ruma-events/src/image.rs @@ -5,6 +5,7 @@ use std::ops::Deref; use js_int::UInt; +use ruma_common::OwnedMxcUri; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; @@ -13,7 +14,6 @@ use super::{ message::TextContentBlock, room::message::Relation, }; -use crate::OwnedMxcUri; /// The payload for an extensible image message. /// @@ -62,7 +62,7 @@ pub struct ImageEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, @@ -71,7 +71,7 @@ pub struct ImageEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, } @@ -124,7 +124,7 @@ pub struct ImageDetailsContentBlock { #[serde( rename = "org.matrix.msc1767.sticker", default, - skip_serializing_if = "crate::serde::is_default" + skip_serializing_if = "ruma_common::serde::is_default" )] pub sticker: bool, } diff --git a/crates/ruma-common/src/events/key.rs b/crates/ruma-events/src/key.rs similarity index 100% rename from crates/ruma-common/src/events/key.rs rename to crates/ruma-events/src/key.rs diff --git a/crates/ruma-common/src/events/key/verification.rs b/crates/ruma-events/src/key/verification.rs similarity index 98% rename from crates/ruma-common/src/events/key/verification.rs rename to crates/ruma-events/src/key/verification.rs index 5905a74d..4a0b2bba 100644 --- a/crates/ruma-common/src/events/key/verification.rs +++ b/crates/ruma-events/src/key/verification.rs @@ -9,7 +9,9 @@ use std::time::Duration; -use crate::{serde::StringEnum, PrivOwnedStr}; +use ruma_common::serde::StringEnum; + +use crate::PrivOwnedStr; pub mod accept; pub mod cancel; diff --git a/crates/ruma-common/src/events/key/verification/accept.rs b/crates/ruma-events/src/key/verification/accept.rs similarity index 98% rename from crates/ruma-common/src/events/key/verification/accept.rs rename to crates/ruma-events/src/key/verification/accept.rs index 358b677f..3b1f6407 100644 --- a/crates/ruma-common/src/events/key/verification/accept.rs +++ b/crates/ruma-events/src/key/verification/accept.rs @@ -4,6 +4,7 @@ use std::collections::BTreeMap; +use ruma_common::{serde::Base64, OwnedTransactionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use serde_json::Value as JsonValue; @@ -11,7 +12,7 @@ use serde_json::Value as JsonValue; use super::{ HashAlgorithm, KeyAgreementProtocol, MessageAuthenticationCode, ShortAuthenticationString, }; -use crate::{events::relation::Reference, serde::Base64, OwnedTransactionId}; +use crate::relation::Reference; /// The content of a to-device `m.key.verification.accept` event. /// @@ -164,6 +165,7 @@ mod tests { use std::collections::BTreeMap; use assert_matches2::assert_matches; + use ruma_common::{event_id, serde::Base64}; use serde_json::{ from_value as from_json_value, json, to_value as to_json_value, Value as JsonValue, }; @@ -173,11 +175,7 @@ mod tests { MessageAuthenticationCode, SasV1Content, ShortAuthenticationString, ToDeviceKeyVerificationAcceptEventContent, _CustomContent, }; - use crate::{ - event_id, - events::{relation::Reference, ToDeviceEvent}, - serde::Base64, - }; + use crate::{relation::Reference, ToDeviceEvent}; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/key/verification/cancel.rs b/crates/ruma-events/src/key/verification/cancel.rs similarity index 98% rename from crates/ruma-common/src/events/key/verification/cancel.rs rename to crates/ruma-events/src/key/verification/cancel.rs index 9d68d805..eb3e5350 100644 --- a/crates/ruma-common/src/events/key/verification/cancel.rs +++ b/crates/ruma-events/src/key/verification/cancel.rs @@ -2,10 +2,11 @@ //! //! [`m.key.verification.cancel`]: https://spec.matrix.org/latest/client-server-api/#mkeyverificationcancel +use ruma_common::{serde::StringEnum, OwnedTransactionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::relation::Reference, serde::StringEnum, OwnedTransactionId, PrivOwnedStr}; +use crate::{relation::Reference, PrivOwnedStr}; /// The content of a to-device `m.key.verification.cancel` event. /// diff --git a/crates/ruma-common/src/events/key/verification/done.rs b/crates/ruma-events/src/key/verification/done.rs similarity index 95% rename from crates/ruma-common/src/events/key/verification/done.rs rename to crates/ruma-events/src/key/verification/done.rs index 5ff6e400..0415eda0 100644 --- a/crates/ruma-common/src/events/key/verification/done.rs +++ b/crates/ruma-events/src/key/verification/done.rs @@ -2,10 +2,11 @@ //! //! [`m.key.verification.done`]: https://spec.matrix.org/latest/client-server-api/#mkeyverificationdone +use ruma_common::OwnedTransactionId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::relation::Reference, OwnedTransactionId}; +use crate::relation::Reference; /// The content of a to-device `m.m.key.verification.done` event. /// @@ -48,10 +49,11 @@ impl KeyVerificationDoneEventContent { #[cfg(test)] mod tests { + use ruma_common::owned_event_id; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::KeyVerificationDoneEventContent; - use crate::{events::relation::Reference, owned_event_id}; + use crate::relation::Reference; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/key/verification/key.rs b/crates/ruma-events/src/key/verification/key.rs similarity index 95% rename from crates/ruma-common/src/events/key/verification/key.rs rename to crates/ruma-events/src/key/verification/key.rs index abb9666f..ab000453 100644 --- a/crates/ruma-common/src/events/key/verification/key.rs +++ b/crates/ruma-events/src/key/verification/key.rs @@ -2,10 +2,11 @@ //! //! [`m.key.verification.key`]: https://spec.matrix.org/latest/client-server-api/#mkeyverificationkey +use ruma_common::{serde::Base64, OwnedTransactionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::relation::Reference, serde::Base64, OwnedTransactionId}; +use crate::relation::Reference; /// The content of a to-device `m.key.verification.key` event. /// diff --git a/crates/ruma-common/src/events/key/verification/mac.rs b/crates/ruma-events/src/key/verification/mac.rs similarity index 96% rename from crates/ruma-common/src/events/key/verification/mac.rs rename to crates/ruma-events/src/key/verification/mac.rs index 994dcb60..310d363b 100644 --- a/crates/ruma-common/src/events/key/verification/mac.rs +++ b/crates/ruma-events/src/key/verification/mac.rs @@ -4,10 +4,11 @@ use std::collections::BTreeMap; +use ruma_common::{serde::Base64, OwnedTransactionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::relation::Reference, serde::Base64, OwnedTransactionId}; +use crate::relation::Reference; /// The content of a to-device `m.key.verification.` event. /// diff --git a/crates/ruma-common/src/events/key/verification/ready.rs b/crates/ruma-events/src/key/verification/ready.rs similarity index 95% rename from crates/ruma-common/src/events/key/verification/ready.rs rename to crates/ruma-events/src/key/verification/ready.rs index a948805d..e13926d5 100644 --- a/crates/ruma-common/src/events/key/verification/ready.rs +++ b/crates/ruma-events/src/key/verification/ready.rs @@ -2,11 +2,12 @@ //! //! [`m.key.verification.ready`]: https://spec.matrix.org/latest/client-server-api/#mkeyverificationready +use ruma_common::{OwnedDeviceId, OwnedTransactionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::VerificationMethod; -use crate::{events::relation::Reference, OwnedDeviceId, OwnedTransactionId}; +use crate::relation::Reference; /// The content of a to-device `m.m.key.verification.ready` event. /// @@ -74,13 +75,11 @@ impl KeyVerificationReadyEventContent { #[cfg(test)] mod tests { + use ruma_common::{owned_event_id, OwnedDeviceId}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{KeyVerificationReadyEventContent, ToDeviceKeyVerificationReadyEventContent}; - use crate::{ - events::{key::verification::VerificationMethod, relation::Reference}, - owned_event_id, OwnedDeviceId, - }; + use crate::{key::verification::VerificationMethod, relation::Reference}; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/key/verification/request.rs b/crates/ruma-events/src/key/verification/request.rs similarity index 95% rename from crates/ruma-common/src/events/key/verification/request.rs rename to crates/ruma-events/src/key/verification/request.rs index 5b9a4be1..ef8e69fe 100644 --- a/crates/ruma-common/src/events/key/verification/request.rs +++ b/crates/ruma-events/src/key/verification/request.rs @@ -2,11 +2,11 @@ //! //! [`m.key.verification.request`]: https://spec.matrix.org/latest/client-server-api/#mkeyverificationrequest +use ruma_common::{MilliSecondsSinceUnixEpoch, OwnedDeviceId, OwnedTransactionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::VerificationMethod; -use crate::{MilliSecondsSinceUnixEpoch, OwnedDeviceId, OwnedTransactionId}; /// The content of an `m.key.verification.request` event. #[derive(Clone, Debug, Deserialize, Serialize, EventContent)] diff --git a/crates/ruma-common/src/events/key/verification/start.rs b/crates/ruma-events/src/key/verification/start.rs similarity index 98% rename from crates/ruma-common/src/events/key/verification/start.rs rename to crates/ruma-events/src/key/verification/start.rs index b5c63900..daf856fe 100644 --- a/crates/ruma-common/src/events/key/verification/start.rs +++ b/crates/ruma-events/src/key/verification/start.rs @@ -4,6 +4,7 @@ use std::{collections::BTreeMap, fmt}; +use ruma_common::{serde::Base64, OwnedDeviceId, OwnedTransactionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use serde_json::Value as JsonValue; @@ -11,7 +12,7 @@ use serde_json::Value as JsonValue; use super::{ HashAlgorithm, KeyAgreementProtocol, MessageAuthenticationCode, ShortAuthenticationString, }; -use crate::{events::relation::Reference, serde::Base64, OwnedDeviceId, OwnedTransactionId}; +use crate::relation::Reference; /// The content of a to-device `m.key.verification.start` event. /// @@ -209,6 +210,7 @@ mod tests { use std::collections::BTreeMap; use assert_matches2::assert_matches; + use ruma_common::{event_id, serde::Base64}; use serde_json::{ from_value as from_json_value, json, to_value as to_json_value, Value as JsonValue, }; @@ -219,11 +221,7 @@ mod tests { ShortAuthenticationString, StartMethod, ToDeviceKeyVerificationStartEventContent, _CustomContent, }; - use crate::{ - event_id, - events::{relation::Reference, ToDeviceEvent}, - serde::Base64, - }; + use crate::{relation::Reference, ToDeviceEvent}; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/kinds.rs b/crates/ruma-events/src/kinds.rs similarity index 99% rename from crates/ruma-common/src/events/kinds.rs rename to crates/ruma-events/src/kinds.rs index 1f7d9f50..dcff3a0a 100644 --- a/crates/ruma-common/src/events/kinds.rs +++ b/crates/ruma-events/src/kinds.rs @@ -1,5 +1,10 @@ #![allow(clippy::exhaustive_structs)] +use ruma_common::{ + serde::{from_raw_json_value, Raw}, + EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedUserId, RoomId, + RoomVersionId, UserId, +}; use ruma_macros::Event; use serde::{ser::SerializeStruct, Deserialize, Deserializer, Serialize}; use serde_json::value::RawValue as RawJsonValue; @@ -12,11 +17,6 @@ use super::{ RedactionDeHelper, RoomAccountDataEventContent, StateEventType, StaticStateEventContent, ToDeviceEventContent, }; -use crate::{ - serde::{from_raw_json_value, Raw}, - EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedUserId, RoomId, - RoomVersionId, UserId, -}; /// A global account data event. #[derive(Clone, Debug, Event)] diff --git a/crates/ruma-common/src/events.rs b/crates/ruma-events/src/lib.rs similarity index 88% rename from crates/ruma-common/src/events.rs rename to crates/ruma-events/src/lib.rs index ff805e0b..c920b56d 100644 --- a/crates/ruma-common/src/events.rs +++ b/crates/ruma-events/src/lib.rs @@ -24,7 +24,7 @@ //! specifies the state event's `type` and its `kind`. //! //! ```rust -//! use ruma_common::events::macros::EventContent; +//! use ruma_events::macros::EventContent; //! use serde::{Deserialize, Serialize}; //! //! #[derive(Clone, Debug, Deserialize, Serialize, EventContent)] @@ -41,10 +41,8 @@ //! [`OriginalSyncMessageLikeEvent`] struct but any [`OriginalMessageLikeEvent`] struct would work. //! //! ```rust -//! use ruma_common::{ -//! events::{macros::EventContent, OriginalSyncMessageLikeEvent}, -//! OwnedEventId, -//! }; +//! use ruma_common::OwnedEventId; +//! use ruma_events::{macros::EventContent, OriginalSyncMessageLikeEvent}; //! use serde::{Deserialize, Serialize}; //! //! #[derive(Clone, Debug, Deserialize, Serialize)] @@ -102,12 +100,11 @@ //! )); //! ``` -use std::collections::BTreeSet; +use std::{collections::BTreeSet, fmt}; +use ruma_common::{EventEncryptionAlgorithm, OwnedUserId, RoomVersionId}; use serde::{de::IgnoredAny, Deserialize, Serialize, Serializer}; -use crate::{EventEncryptionAlgorithm, OwnedUserId, RoomVersionId}; - // Needs to be public for trybuild tests #[doc(hidden)] pub mod _custom; @@ -117,6 +114,20 @@ mod kinds; mod state_key; mod unsigned; +// So event macros work inside this crate. +extern crate self as ruma_events; + +/// Re-exports used by macro-generated code. +/// +/// It is not considered part of this module's public API. +#[doc(hidden)] +pub mod exports { + pub use ruma_common; + pub use ruma_macros; + pub use serde; + pub use serde_json; +} + /// Re-export of all the derives needed to create your own event types. pub mod macros { pub use ruma_macros::{Event, EventContent}; @@ -240,7 +251,7 @@ pub struct Mentions { /// Whether the whole room is mentioned. /// /// Defaults to `false`. - #[serde(default, skip_serializing_if = "crate::serde::is_default")] + #[serde(default, skip_serializing_if = "ruma_common::serde::is_default")] pub room: bool, } @@ -260,3 +271,16 @@ impl Mentions { Self { room: true, ..Default::default() } } } + +// 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) + } +} diff --git a/crates/ruma-common/src/events/location.rs b/crates/ruma-events/src/location.rs similarity index 96% rename from crates/ruma-common/src/events/location.rs rename to crates/ruma-events/src/location.rs index 146c27f4..57d91b6b 100644 --- a/crates/ruma-common/src/events/location.rs +++ b/crates/ruma-events/src/location.rs @@ -8,8 +8,10 @@ use serde::{Deserialize, Serialize}; mod zoomlevel_serde; +use ruma_common::MilliSecondsSinceUnixEpoch; + use super::{message::TextContentBlock, room::message::Relation}; -use crate::{MilliSecondsSinceUnixEpoch, PrivOwnedStr}; +use crate::PrivOwnedStr; /// The payload for an extensible location message. /// @@ -42,7 +44,7 @@ pub struct LocationEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, @@ -51,7 +53,7 @@ pub struct LocationEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, } diff --git a/crates/ruma-common/src/events/location/zoomlevel_serde.rs b/crates/ruma-events/src/location/zoomlevel_serde.rs similarity index 100% rename from crates/ruma-common/src/events/location/zoomlevel_serde.rs rename to crates/ruma-events/src/location/zoomlevel_serde.rs diff --git a/crates/ruma-common/src/events/message.rs b/crates/ruma-events/src/message.rs similarity index 98% rename from crates/ruma-common/src/events/message.rs rename to crates/ruma-events/src/message.rs index df468971..de697515 100644 --- a/crates/ruma-common/src/events/message.rs +++ b/crates/ruma-events/src/message.rs @@ -110,7 +110,7 @@ pub struct MessageEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, @@ -119,7 +119,7 @@ pub struct MessageEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, } diff --git a/crates/ruma-common/src/events/message/historical_serde.rs b/crates/ruma-events/src/message/historical_serde.rs similarity index 95% rename from crates/ruma-common/src/events/message/historical_serde.rs rename to crates/ruma-events/src/message/historical_serde.rs index 66c1d666..f5812c84 100644 --- a/crates/ruma-common/src/events/message/historical_serde.rs +++ b/crates/ruma-events/src/message/historical_serde.rs @@ -10,7 +10,7 @@ use super::{TextContentBlock, TextRepresentation}; #[derive(Clone, Default, Serialize, Deserialize)] #[serde(try_from = "MessageContentBlockSerDeHelper")] #[serde(into = "MessageContentBlockSerDeHelper")] -pub(in crate::events) struct MessageContentBlock(Vec); +pub(crate) struct MessageContentBlock(Vec); impl From for TextContentBlock { fn from(value: MessageContentBlock) -> Self { @@ -25,7 +25,7 @@ impl From for MessageContentBlock { } #[derive(Default, Serialize, Deserialize)] -pub(in crate::events) struct MessageContentBlockSerDeHelper { +pub(crate) struct MessageContentBlockSerDeHelper { /// Plain text short form. #[serde(rename = "org.matrix.msc1767.text", skip_serializing_if = "Option::is_none")] text: Option, diff --git a/crates/ruma-common/src/events/pdu.rs b/crates/ruma-events/src/pdu.rs similarity index 99% rename from crates/ruma-common/src/events/pdu.rs rename to crates/ruma-events/src/pdu.rs index 1ea1b1bd..25b382dc 100644 --- a/crates/ruma-common/src/events/pdu.rs +++ b/crates/ruma-events/src/pdu.rs @@ -8,6 +8,10 @@ use std::collections::BTreeMap; use js_int::UInt; +use ruma_common::{ + MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedServerName, + OwnedServerSigningKeyId, OwnedUserId, +}; use serde::{ de::{Error as _, IgnoredAny}, Deserialize, Deserializer, Serialize, @@ -15,10 +19,6 @@ use serde::{ use serde_json::{from_str as from_json_str, value::RawValue as RawJsonValue}; use super::TimelineEventType; -use crate::{ - MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedServerName, - OwnedServerSigningKeyId, OwnedUserId, -}; /// Enum for PDU schemas #[derive(Clone, Debug, Serialize)] diff --git a/crates/ruma-common/src/events/policy.rs b/crates/ruma-events/src/policy.rs similarity index 100% rename from crates/ruma-common/src/events/policy.rs rename to crates/ruma-events/src/policy.rs diff --git a/crates/ruma-common/src/events/policy/rule.rs b/crates/ruma-events/src/policy/rule.rs similarity index 97% rename from crates/ruma-common/src/events/policy/rule.rs rename to crates/ruma-events/src/policy/rule.rs index c3eb9a76..6445cc69 100644 --- a/crates/ruma-common/src/events/policy/rule.rs +++ b/crates/ruma-events/src/policy/rule.rs @@ -1,8 +1,9 @@ //! Modules and types for events in the `m.policy.rule` namespace. +use ruma_common::serde::StringEnum; use serde::{Deserialize, Serialize}; -use crate::{serde::StringEnum, PrivOwnedStr}; +use crate::PrivOwnedStr; pub mod room; pub mod server; diff --git a/crates/ruma-common/src/events/policy/rule/room.rs b/crates/ruma-events/src/policy/rule/room.rs similarity index 93% rename from crates/ruma-common/src/events/policy/rule/room.rs rename to crates/ruma-events/src/policy/rule/room.rs index 7b243a7c..e781ad88 100644 --- a/crates/ruma-common/src/events/policy/rule/room.rs +++ b/crates/ruma-events/src/policy/rule/room.rs @@ -6,7 +6,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::{PolicyRuleEventContent, PossiblyRedactedPolicyRuleEventContent}; -use crate::events::{EventContent, PossiblyRedactedStateEventContent, StateEventType}; +use crate::{EventContent, PossiblyRedactedStateEventContent, StateEventType}; /// The content of an `m.policy.rule.room` event. /// @@ -37,13 +37,11 @@ impl PossiblyRedactedStateEventContent for PossiblyRedactedPolicyRuleRoomEventCo #[cfg(test)] mod tests { + use ruma_common::serde::Raw; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{OriginalPolicyRuleRoomEvent, PolicyRuleRoomEventContent}; - use crate::{ - events::policy::rule::{PolicyRuleEventContent, Recommendation}, - serde::Raw, - }; + use crate::policy::rule::{PolicyRuleEventContent, Recommendation}; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/policy/rule/server.rs b/crates/ruma-events/src/policy/rule/server.rs similarity index 94% rename from crates/ruma-common/src/events/policy/rule/server.rs rename to crates/ruma-events/src/policy/rule/server.rs index 40e7abae..77cc6f2a 100644 --- a/crates/ruma-common/src/events/policy/rule/server.rs +++ b/crates/ruma-events/src/policy/rule/server.rs @@ -6,7 +6,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::{PolicyRuleEventContent, PossiblyRedactedPolicyRuleEventContent}; -use crate::events::{EventContent, PossiblyRedactedStateEventContent, StateEventType}; +use crate::{EventContent, PossiblyRedactedStateEventContent, StateEventType}; /// The content of an `m.policy.rule.server` event. /// diff --git a/crates/ruma-common/src/events/policy/rule/user.rs b/crates/ruma-events/src/policy/rule/user.rs similarity index 93% rename from crates/ruma-common/src/events/policy/rule/user.rs rename to crates/ruma-events/src/policy/rule/user.rs index bf16ec07..7dd4c637 100644 --- a/crates/ruma-common/src/events/policy/rule/user.rs +++ b/crates/ruma-events/src/policy/rule/user.rs @@ -6,7 +6,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::{PolicyRuleEventContent, PossiblyRedactedPolicyRuleEventContent}; -use crate::events::{EventContent, PossiblyRedactedStateEventContent, StateEventType}; +use crate::{EventContent, PossiblyRedactedStateEventContent, StateEventType}; /// The content of an `m.policy.rule.user` event. /// diff --git a/crates/ruma-common/src/events/poll.rs b/crates/ruma-events/src/poll.rs similarity index 99% rename from crates/ruma-common/src/events/poll.rs rename to crates/ruma-events/src/poll.rs index 5d5407e8..8974001d 100644 --- a/crates/ruma-common/src/events/poll.rs +++ b/crates/ruma-events/src/poll.rs @@ -11,9 +11,9 @@ use std::{ use indexmap::IndexMap; use js_int::{uint, UInt}; +use ruma_common::{MilliSecondsSinceUnixEpoch, UserId}; use self::{start::PollContentBlock, unstable_start::UnstablePollStartContentBlock}; -use crate::{MilliSecondsSinceUnixEpoch, UserId}; pub mod end; pub mod response; diff --git a/crates/ruma-common/src/events/poll/end.rs b/crates/ruma-events/src/poll/end.rs similarity index 96% rename from crates/ruma-common/src/events/poll/end.rs rename to crates/ruma-events/src/poll/end.rs index 4465d2ed..a5d04301 100644 --- a/crates/ruma-common/src/events/poll/end.rs +++ b/crates/ruma-events/src/poll/end.rs @@ -6,13 +6,11 @@ use std::{ }; use js_int::UInt; +use ruma_common::OwnedEventId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{ - events::{message::TextContentBlock, relation::Reference}, - OwnedEventId, -}; +use crate::{message::TextContentBlock, relation::Reference}; /// The payload for a poll end event. /// @@ -43,7 +41,7 @@ pub struct PollEndEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, diff --git a/crates/ruma-common/src/events/poll/response.rs b/crates/ruma-events/src/poll/response.rs similarity index 96% rename from crates/ruma-common/src/events/poll/response.rs rename to crates/ruma-events/src/poll/response.rs index 4204cf9c..9e135be7 100644 --- a/crates/ruma-common/src/events/poll/response.rs +++ b/crates/ruma-events/src/poll/response.rs @@ -2,11 +2,12 @@ use std::{ops::Deref, vec}; +use ruma_common::OwnedEventId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::{start::PollContentBlock, validate_selections, PollResponseData}; -use crate::{events::relation::Reference, OwnedEventId}; +use crate::relation::Reference; /// The payload for a poll response event. /// @@ -29,7 +30,7 @@ pub struct PollResponseEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, diff --git a/crates/ruma-common/src/events/poll/start.rs b/crates/ruma-events/src/poll/start.rs similarity index 95% rename from crates/ruma-common/src/events/poll/start.rs rename to crates/ruma-events/src/poll/start.rs index 450edde5..112b9eb6 100644 --- a/crates/ruma-common/src/events/poll/start.rs +++ b/crates/ruma-events/src/poll/start.rs @@ -3,9 +3,12 @@ use std::ops::Deref; use js_int::{uint, UInt}; +use ruma_common::{serde::StringEnum, MilliSecondsSinceUnixEpoch}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; +use crate::PrivOwnedStr; + mod poll_answers_serde; use poll_answers_serde::PollAnswersDeHelper; @@ -15,11 +18,7 @@ use super::{ end::{PollEndEventContent, PollResultsContentBlock}, generate_poll_end_fallback_text, PollResponseData, }; -use crate::{ - events::{message::TextContentBlock, room::message::Relation}, - serde::StringEnum, - MilliSecondsSinceUnixEpoch, PrivOwnedStr, -}; +use crate::{message::TextContentBlock, room::message::Relation}; /// The payload for a poll start event. /// @@ -46,7 +45,7 @@ pub struct PollStartEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, @@ -54,7 +53,7 @@ pub struct PollStartEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, @@ -133,7 +132,7 @@ pub struct PollContentBlock { pub question: PollQuestion, /// The kind of the poll. - #[serde(default, skip_serializing_if = "crate::serde::is_default")] + #[serde(default, skip_serializing_if = "ruma_common::serde::is_default")] pub kind: PollKind, /// The maximum number of responses a user is able to select. diff --git a/crates/ruma-common/src/events/poll/start/poll_answers_serde.rs b/crates/ruma-events/src/poll/start/poll_answers_serde.rs similarity index 100% rename from crates/ruma-common/src/events/poll/start/poll_answers_serde.rs rename to crates/ruma-events/src/poll/start/poll_answers_serde.rs diff --git a/crates/ruma-common/src/events/poll/unstable_end.rs b/crates/ruma-events/src/poll/unstable_end.rs similarity index 97% rename from crates/ruma-common/src/events/poll/unstable_end.rs rename to crates/ruma-events/src/poll/unstable_end.rs index b83e6b49..86bdf85a 100644 --- a/crates/ruma-common/src/events/poll/unstable_end.rs +++ b/crates/ruma-events/src/poll/unstable_end.rs @@ -1,9 +1,10 @@ //! Types for the `org.matrix.msc3381.poll.end` event, the unstable version of `m.poll.end`. +use ruma_common::OwnedEventId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::relation::Reference, OwnedEventId}; +use crate::relation::Reference; /// The payload for an unstable poll end event. /// diff --git a/crates/ruma-common/src/events/poll/unstable_response.rs b/crates/ruma-events/src/poll/unstable_response.rs similarity index 98% rename from crates/ruma-common/src/events/poll/unstable_response.rs rename to crates/ruma-events/src/poll/unstable_response.rs index e8ac5eaf..bf256be9 100644 --- a/crates/ruma-common/src/events/poll/unstable_response.rs +++ b/crates/ruma-events/src/poll/unstable_response.rs @@ -1,11 +1,12 @@ //! Types for the `org.matrix.msc3381.poll.response` event, the unstable version of //! `m.poll.response`. +use ruma_common::OwnedEventId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::{unstable_start::UnstablePollStartContentBlock, validate_selections, PollResponseData}; -use crate::{events::relation::Reference, OwnedEventId}; +use crate::relation::Reference; /// The payload for an unstable poll response event. /// diff --git a/crates/ruma-common/src/events/poll/unstable_start.rs b/crates/ruma-events/src/poll/unstable_start.rs similarity index 97% rename from crates/ruma-common/src/events/poll/unstable_start.rs rename to crates/ruma-events/src/poll/unstable_start.rs index f48ebf7f..80febfbe 100644 --- a/crates/ruma-common/src/events/poll/unstable_start.rs +++ b/crates/ruma-events/src/poll/unstable_start.rs @@ -9,6 +9,8 @@ use serde::{Deserialize, Serialize}; mod unstable_poll_answers_serde; mod unstable_poll_kind_serde; +use ruma_common::MilliSecondsSinceUnixEpoch; + use self::unstable_poll_answers_serde::UnstablePollAnswersDeHelper; use super::{ compile_unstable_poll_results, generate_poll_end_fallback_text, @@ -16,7 +18,7 @@ use super::{ unstable_end::UnstablePollEndEventContent, PollResponseData, }; -use crate::{events::room::message::Relation, MilliSecondsSinceUnixEpoch}; +use crate::room::message::Relation; /// The payload for an unstable poll start event. /// @@ -44,7 +46,7 @@ pub struct UnstablePollStartEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, } diff --git a/crates/ruma-common/src/events/poll/unstable_start/unstable_poll_answers_serde.rs b/crates/ruma-events/src/poll/unstable_start/unstable_poll_answers_serde.rs similarity index 90% rename from crates/ruma-common/src/events/poll/unstable_start/unstable_poll_answers_serde.rs rename to crates/ruma-events/src/poll/unstable_start/unstable_poll_answers_serde.rs index 654b330c..01ad1ab6 100644 --- a/crates/ruma-common/src/events/poll/unstable_start/unstable_poll_answers_serde.rs +++ b/crates/ruma-events/src/poll/unstable_start/unstable_poll_answers_serde.rs @@ -3,7 +3,7 @@ use serde::Deserialize; use super::{UnstablePollAnswer, UnstablePollAnswers}; -use crate::events::poll::start::{PollAnswers, PollAnswersError}; +use crate::poll::start::{PollAnswers, PollAnswersError}; #[derive(Debug, Default, Deserialize)] pub(crate) struct UnstablePollAnswersDeHelper(Vec); diff --git a/crates/ruma-common/src/events/poll/unstable_start/unstable_poll_kind_serde.rs b/crates/ruma-events/src/poll/unstable_start/unstable_poll_kind_serde.rs similarity index 94% rename from crates/ruma-common/src/events/poll/unstable_start/unstable_poll_kind_serde.rs rename to crates/ruma-events/src/poll/unstable_start/unstable_poll_kind_serde.rs index 57cfc3eb..de0e53d6 100644 --- a/crates/ruma-common/src/events/poll/unstable_start/unstable_poll_kind_serde.rs +++ b/crates/ruma-events/src/poll/unstable_start/unstable_poll_kind_serde.rs @@ -4,7 +4,7 @@ use std::borrow::Cow; use serde::{Deserialize, Deserializer, Serialize, Serializer}; -use crate::{events::poll::start::PollKind, PrivOwnedStr}; +use crate::{poll::start::PollKind, PrivOwnedStr}; /// Serializes a PollKind using the unstable prefixes. pub(super) fn serialize(kind: &PollKind, serializer: S) -> Result diff --git a/crates/ruma-common/src/events/presence.rs b/crates/ruma-events/src/presence.rs similarity index 96% rename from crates/ruma-common/src/events/presence.rs rename to crates/ruma-events/src/presence.rs index 702bc0bf..ee8b1b3f 100644 --- a/crates/ruma-common/src/events/presence.rs +++ b/crates/ruma-events/src/presence.rs @@ -3,11 +3,11 @@ //! The only content valid for this event is `PresenceEventContent`. use js_int::UInt; +use ruma_common::{presence::PresenceState, OwnedMxcUri, OwnedUserId}; use ruma_macros::{Event, EventContent}; use serde::{ser::SerializeStruct, Deserialize, Serialize}; use super::EventContent; -use crate::{presence::PresenceState, OwnedMxcUri, OwnedUserId}; /// Presence event. #[derive(Clone, Debug, Event)] @@ -47,7 +47,7 @@ pub struct PresenceEventContent { #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( feature = "compat-empty-string-null", - serde(default, deserialize_with = "crate::serde::empty_string_as_none") + serde(default, deserialize_with = "ruma_common::serde::empty_string_as_none") )] pub avatar_url: Option, @@ -88,10 +88,10 @@ impl PresenceEventContent { #[cfg(test)] mod tests { use js_int::uint; + use ruma_common::{mxc_uri, presence::PresenceState}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{PresenceEvent, PresenceEventContent}; - use crate::{mxc_uri, presence::PresenceState}; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/push_rules.rs b/crates/ruma-events/src/push_rules.rs similarity index 99% rename from crates/ruma-common/src/events/push_rules.rs rename to crates/ruma-events/src/push_rules.rs index 96a3c80a..2d96c18d 100644 --- a/crates/ruma-common/src/events/push_rules.rs +++ b/crates/ruma-events/src/push_rules.rs @@ -2,11 +2,10 @@ //! //! [`m.push_rules`]: https://spec.matrix.org/latest/client-server-api/#mpush_rules +use ruma_common::push::Ruleset; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::push::Ruleset; - /// The content of an `m.push_rules` event. /// /// Describes all push rules for a user. diff --git a/crates/ruma-common/src/events/reaction.rs b/crates/ruma-events/src/reaction.rs similarity index 96% rename from crates/ruma-common/src/events/reaction.rs rename to crates/ruma-events/src/reaction.rs index 224a8918..ffffdb1d 100644 --- a/crates/ruma-common/src/events/reaction.rs +++ b/crates/ruma-events/src/reaction.rs @@ -37,10 +37,11 @@ impl From for ReactionEventContent { #[cfg(test)] mod tests { use assert_matches2::assert_matches; + use ruma_common::owned_event_id; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::ReactionEventContent; - use crate::{events::relation::Annotation, owned_event_id}; + use crate::relation::Annotation; #[test] fn deserialize() { diff --git a/crates/ruma-common/src/events/receipt.rs b/crates/ruma-events/src/receipt.rs similarity index 98% rename from crates/ruma-common/src/events/receipt.rs rename to crates/ruma-events/src/receipt.rs index e97a130d..424c89c0 100644 --- a/crates/ruma-common/src/events/receipt.rs +++ b/crates/ruma-events/src/receipt.rs @@ -9,13 +9,13 @@ use std::{ ops::{Deref, DerefMut}, }; +use ruma_common::{ + EventId, IdParseError, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedUserId, UserId, +}; use ruma_macros::{EventContent, OrdAsRefStr, PartialEqAsRefStr, PartialOrdAsRefStr, StringEnum}; use serde::{Deserialize, Serialize}; -use crate::{ - EventId, IdParseError, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedUserId, PrivOwnedStr, - UserId, -}; +use crate::PrivOwnedStr; /// The content of an `m.receipt` event. /// @@ -127,7 +127,7 @@ pub struct Receipt { pub ts: Option, /// The thread this receipt applies to. - #[serde(rename = "thread_id", default, skip_serializing_if = "crate::serde::is_default")] + #[serde(rename = "thread_id", default, skip_serializing_if = "ruma_common::serde::is_default")] pub thread: ReceiptThread, } @@ -212,10 +212,10 @@ where #[cfg(test)] mod tests { use assert_matches2::assert_matches; + use ruma_common::{owned_event_id, MilliSecondsSinceUnixEpoch}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{Receipt, ReceiptThread}; - use crate::{owned_event_id, MilliSecondsSinceUnixEpoch}; #[test] fn serialize_receipt() { diff --git a/crates/ruma-common/src/events/receipt/receipt_thread_serde.rs b/crates/ruma-events/src/receipt/receipt_thread_serde.rs similarity index 87% rename from crates/ruma-common/src/events/receipt/receipt_thread_serde.rs rename to crates/ruma-events/src/receipt/receipt_thread_serde.rs index cc5f93dc..0479470e 100644 --- a/crates/ruma-common/src/events/receipt/receipt_thread_serde.rs +++ b/crates/ruma-events/src/receipt/receipt_thread_serde.rs @@ -16,7 +16,7 @@ impl<'de> Deserialize<'de> for ReceiptThread { where D: Deserializer<'de>, { - let s = crate::serde::deserialize_cow_str(deserializer)?; + let s = ruma_common::serde::deserialize_cow_str(deserializer)?; Self::try_from(Some(s)).map_err(serde::de::Error::custom) } } diff --git a/crates/ruma-common/src/events/relation.rs b/crates/ruma-events/src/relation.rs similarity index 99% rename from crates/ruma-common/src/events/relation.rs rename to crates/ruma-events/src/relation.rs index 1a52fbbe..d2cb2054 100644 --- a/crates/ruma-common/src/events/relation.rs +++ b/crates/ruma-events/src/relation.rs @@ -5,13 +5,14 @@ use std::fmt::Debug; use js_int::UInt; +use ruma_common::{ + serde::{JsonObject, Raw, StringEnum}, + OwnedEventId, +}; use serde::{Deserialize, Serialize}; use super::AnyMessageLikeEvent; -use crate::{ - serde::{JsonObject, Raw, StringEnum}, - OwnedEventId, PrivOwnedStr, -}; +use crate::PrivOwnedStr; mod rel_serde; diff --git a/crates/ruma-common/src/events/relation/rel_serde.rs b/crates/ruma-events/src/relation/rel_serde.rs similarity index 97% rename from crates/ruma-common/src/events/relation/rel_serde.rs rename to crates/ruma-events/src/relation/rel_serde.rs index 34460c70..9ac9e477 100644 --- a/crates/ruma-common/src/events/relation/rel_serde.rs +++ b/crates/ruma-events/src/relation/rel_serde.rs @@ -1,7 +1,7 @@ +use ruma_common::serde::Raw; use serde::{de::DeserializeOwned, Deserialize, Deserializer}; use super::{BundledMessageLikeRelations, BundledThread, ReferenceChunk}; -use crate::serde::Raw; #[derive(Deserialize)] struct BundledMessageLikeRelationsJsonRepr { diff --git a/crates/ruma-common/src/events/room.rs b/crates/ruma-events/src/room.rs similarity index 99% rename from crates/ruma-common/src/events/room.rs rename to crates/ruma-events/src/room.rs index 54abd5c5..1017b801 100644 --- a/crates/ruma-common/src/events/room.rs +++ b/crates/ruma-events/src/room.rs @@ -5,12 +5,11 @@ use std::collections::BTreeMap; use js_int::UInt; -use serde::{de, Deserialize, Serialize}; - -use crate::{ +use ruma_common::{ serde::{base64::UrlSafe, Base64}, OwnedMxcUri, }; +use serde::{de, Deserialize, Serialize}; pub mod aliases; pub mod avatar; @@ -279,11 +278,11 @@ mod tests { use std::collections::BTreeMap; use assert_matches2::assert_matches; + use ruma_common::{mxc_uri, serde::Base64}; use serde::Deserialize; use serde_json::{from_value as from_json_value, json}; use super::{EncryptedFile, JsonWebKey, MediaSource}; - use crate::{mxc_uri, serde::Base64}; #[derive(Deserialize)] struct MsgWithAttachment { diff --git a/crates/ruma-common/src/events/room/aliases.rs b/crates/ruma-events/src/room/aliases.rs similarity index 94% rename from crates/ruma-common/src/events/room/aliases.rs rename to crates/ruma-events/src/room/aliases.rs index 9a91f464..90849d39 100644 --- a/crates/ruma-common/src/events/room/aliases.rs +++ b/crates/ruma-events/src/room/aliases.rs @@ -1,12 +1,10 @@ //! Types for the `m.room.aliases` event. +use ruma_common::{OwnedRoomAliasId, OwnedServerName, RoomVersionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{ - events::{EventContent, RedactContent, RedactedStateEventContent, StateEventType}, - OwnedRoomAliasId, OwnedServerName, RoomVersionId, -}; +use crate::{EventContent, RedactContent, RedactedStateEventContent, StateEventType}; /// The content of an `m.room.aliases` event. /// diff --git a/crates/ruma-common/src/events/room/avatar.rs b/crates/ruma-events/src/room/avatar.rs similarity index 97% rename from crates/ruma-common/src/events/room/avatar.rs rename to crates/ruma-events/src/room/avatar.rs index 914aa434..79982f12 100644 --- a/crates/ruma-common/src/events/room/avatar.rs +++ b/crates/ruma-events/src/room/avatar.rs @@ -3,11 +3,12 @@ //! [`m.room.avatar`]: https://spec.matrix.org/latest/client-server-api/#mroomavatar use js_int::UInt; +use ruma_common::OwnedMxcUri; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::ThumbnailInfo; -use crate::{events::EmptyStateKey, OwnedMxcUri}; +use crate::EmptyStateKey; /// The content of an `m.room.avatar` event. /// diff --git a/crates/ruma-common/src/events/room/canonical_alias.rs b/crates/ruma-events/src/room/canonical_alias.rs similarity index 95% rename from crates/ruma-common/src/events/room/canonical_alias.rs rename to crates/ruma-events/src/room/canonical_alias.rs index 8d479ae7..15ed2b79 100644 --- a/crates/ruma-common/src/events/room/canonical_alias.rs +++ b/crates/ruma-events/src/room/canonical_alias.rs @@ -2,10 +2,11 @@ //! //! [`m.room.canonical_alias`]: https://spec.matrix.org/latest/client-server-api/#mroomcanonical_alias +use ruma_common::OwnedRoomAliasId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::EmptyStateKey, OwnedRoomAliasId}; +use crate::EmptyStateKey; /// The content of an `m.room.canonical_alias` event. /// @@ -20,7 +21,7 @@ pub struct RoomCanonicalAliasEventContent { /// with no canonical alias. #[serde( default, - deserialize_with = "crate::serde::empty_string_as_none", + deserialize_with = "ruma_common::serde::empty_string_as_none", skip_serializing_if = "Option::is_none" )] pub alias: Option, @@ -39,10 +40,11 @@ impl RoomCanonicalAliasEventContent { #[cfg(test)] mod tests { + use ruma_common::owned_room_alias_id; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::RoomCanonicalAliasEventContent; - use crate::{events::OriginalStateEvent, owned_room_alias_id}; + use crate::OriginalStateEvent; #[test] fn serialization_with_optional_fields_as_none() { diff --git a/crates/ruma-common/src/events/room/create.rs b/crates/ruma-events/src/room/create.rs similarity index 95% rename from crates/ruma-common/src/events/room/create.rs rename to crates/ruma-events/src/room/create.rs index 086210a4..62a4f84f 100644 --- a/crates/ruma-common/src/events/room/create.rs +++ b/crates/ruma-events/src/room/create.rs @@ -2,14 +2,11 @@ //! //! [`m.room.create`]: https://spec.matrix.org/latest/client-server-api/#mroomcreate +use ruma_common::{room::RoomType, OwnedEventId, OwnedRoomId, OwnedUserId, RoomVersionId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{ - events::{EmptyStateKey, RedactContent, RedactedStateEventContent}, - room::RoomType, - OwnedEventId, OwnedRoomId, OwnedUserId, RoomVersionId, -}; +use crate::{EmptyStateKey, RedactContent, RedactedStateEventContent}; /// The content of an `m.room.create` event. /// @@ -33,8 +30,8 @@ pub struct RoomCreateEventContent { /// Whether or not this room's data should be transferred to other homeservers. #[serde( rename = "m.federate", - default = "crate::serde::default_true", - skip_serializing_if = "crate::serde::is_true" + default = "ruma_common::serde::default_true", + skip_serializing_if = "ruma_common::serde::is_true" )] pub federate: bool, @@ -150,10 +147,10 @@ impl RedactedStateEventContent for RedactedRoomCreateEventContent { #[cfg(test)] mod tests { use assert_matches2::assert_matches; + use ruma_common::{owned_user_id, RoomVersionId}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{RoomCreateEventContent, RoomType}; - use crate::{owned_user_id, RoomVersionId}; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/room/encrypted.rs b/crates/ruma-events/src/room/encrypted.rs similarity index 97% rename from crates/ruma-common/src/events/room/encrypted.rs rename to crates/ruma-events/src/room/encrypted.rs index 38e68929..8942f1fc 100644 --- a/crates/ruma-common/src/events/room/encrypted.rs +++ b/crates/ruma-events/src/room/encrypted.rs @@ -5,15 +5,12 @@ use std::{borrow::Cow, collections::BTreeMap}; use js_int::UInt; +use ruma_common::{serde::JsonObject, EventId, OwnedDeviceId, OwnedEventId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use super::message; -use crate::{ - events::relation::{Annotation, CustomRelation, InReplyTo, Reference, RelationType, Thread}, - serde::JsonObject, - EventId, OwnedDeviceId, OwnedEventId, -}; +use crate::relation::{Annotation, CustomRelation, InReplyTo, Reference, RelationType, Thread}; mod relation_serde; @@ -176,8 +173,8 @@ impl From> for Relation { /// The event this relation belongs to [replaces another event]. /// -/// In contrast to [`relation::Replacement`](crate::events::relation::Replacement), this struct -/// doesn't store the new content, since that is part of the encrypted content of an +/// In contrast to [`relation::Replacement`](crate::relation::Replacement), this +/// struct doesn't store the new content, since that is part of the encrypted content of an /// `m.room.encrypted` events. /// /// [replaces another event]: https://spec.matrix.org/latest/client-server-api/#event-replacements @@ -289,13 +286,13 @@ impl From for MegolmV1AesSha2Content { mod tests { use assert_matches2::assert_matches; use js_int::uint; + use ruma_common::{owned_event_id, serde::Raw}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{ EncryptedEventScheme, InReplyTo, MegolmV1AesSha2ContentInit, Relation, RoomEncryptedEventContent, }; - use crate::{owned_event_id, serde::Raw}; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/room/encrypted/relation_serde.rs b/crates/ruma-events/src/room/encrypted/relation_serde.rs similarity index 99% rename from crates/ruma-common/src/events/room/encrypted/relation_serde.rs rename to crates/ruma-events/src/room/encrypted/relation_serde.rs index dd00792d..51bdf954 100644 --- a/crates/ruma-common/src/events/room/encrypted/relation_serde.rs +++ b/crates/ruma-events/src/room/encrypted/relation_serde.rs @@ -1,11 +1,11 @@ +use ruma_common::{ + serde::{from_raw_json_value, JsonObject}, + OwnedEventId, +}; use serde::{de, ser::SerializeStruct, Deserialize, Deserializer, Serialize}; use serde_json::{value::RawValue as RawJsonValue, Value as JsonValue}; use super::{InReplyTo, Relation, Thread}; -use crate::{ - serde::{from_raw_json_value, JsonObject}, - OwnedEventId, -}; impl<'de> Deserialize<'de> for Relation { fn deserialize(deserializer: D) -> Result diff --git a/crates/ruma-common/src/events/room/encryption.rs b/crates/ruma-events/src/room/encryption.rs similarity index 97% rename from crates/ruma-common/src/events/room/encryption.rs rename to crates/ruma-events/src/room/encryption.rs index 2566c9fb..9386a877 100644 --- a/crates/ruma-common/src/events/room/encryption.rs +++ b/crates/ruma-events/src/room/encryption.rs @@ -6,7 +6,7 @@ use js_int::{uint, UInt}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::events::{EmptyStateKey, EventEncryptionAlgorithm}; +use crate::{EmptyStateKey, EventEncryptionAlgorithm}; /// The content of an `m.room.encryption` event. /// diff --git a/crates/ruma-common/src/events/room/guest_access.rs b/crates/ruma-events/src/room/guest_access.rs similarity index 96% rename from crates/ruma-common/src/events/room/guest_access.rs rename to crates/ruma-events/src/room/guest_access.rs index 690272ad..43f29a46 100644 --- a/crates/ruma-common/src/events/room/guest_access.rs +++ b/crates/ruma-events/src/room/guest_access.rs @@ -2,10 +2,11 @@ //! //! [`m.room.guest_access`]: https://spec.matrix.org/latest/client-server-api/#mroomguest_access +use ruma_common::serde::StringEnum; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::EmptyStateKey, serde::StringEnum, PrivOwnedStr}; +use crate::{EmptyStateKey, PrivOwnedStr}; /// The content of an `m.room.guest_access` event. /// diff --git a/crates/ruma-common/src/events/room/history_visibility.rs b/crates/ruma-events/src/room/history_visibility.rs similarity index 97% rename from crates/ruma-common/src/events/room/history_visibility.rs rename to crates/ruma-events/src/room/history_visibility.rs index 04bec6aa..5f741764 100644 --- a/crates/ruma-common/src/events/room/history_visibility.rs +++ b/crates/ruma-events/src/room/history_visibility.rs @@ -2,10 +2,11 @@ //! //! [`m.room.history_visibility`]: https://spec.matrix.org/latest/client-server-api/#mroomhistory_visibility +use ruma_common::serde::StringEnum; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::EmptyStateKey, serde::StringEnum, PrivOwnedStr}; +use crate::{EmptyStateKey, PrivOwnedStr}; /// The content of an `m.room.history_visibility` event. /// diff --git a/crates/ruma-common/src/events/room/join_rules.rs b/crates/ruma-events/src/room/join_rules.rs similarity index 98% rename from crates/ruma-common/src/events/room/join_rules.rs rename to crates/ruma-events/src/room/join_rules.rs index 36414dc7..1ce3c04e 100644 --- a/crates/ruma-common/src/events/room/join_rules.rs +++ b/crates/ruma-events/src/room/join_rules.rs @@ -4,6 +4,7 @@ use std::{borrow::Cow, collections::BTreeMap}; +use ruma_common::{serde::from_raw_json_value, OwnedRoomId}; use ruma_macros::EventContent; use serde::{ de::{Deserializer, Error}, @@ -11,7 +12,7 @@ use serde::{ }; use serde_json::{value::RawValue as RawJsonValue, Value as JsonValue}; -use crate::{events::EmptyStateKey, serde::from_raw_json_value, OwnedRoomId, PrivOwnedStr}; +use crate::{EmptyStateKey, PrivOwnedStr}; /// The content of an `m.room.join_rules` event. /// @@ -246,9 +247,9 @@ impl<'de> Deserialize<'de> for AllowRule { #[cfg(test)] mod tests { use assert_matches2::assert_matches; + use ruma_common::owned_room_id; use super::{AllowRule, JoinRule, OriginalSyncRoomJoinRulesEvent, RoomJoinRulesEventContent}; - use crate::owned_room_id; #[test] fn deserialize() { diff --git a/crates/ruma-common/src/events/room/member.rs b/crates/ruma-events/src/room/member.rs similarity index 98% rename from crates/ruma-common/src/events/room/member.rs rename to crates/ruma-events/src/room/member.rs index 8b64ec47..4f34e631 100644 --- a/crates/ruma-common/src/events/room/member.rs +++ b/crates/ruma-events/src/room/member.rs @@ -5,18 +5,17 @@ use std::collections::BTreeMap; use js_int::Int; +use ruma_common::{ + serde::{CanBeEmpty, Raw, StringEnum}, + OwnedMxcUri, OwnedServerName, OwnedServerSigningKeyId, OwnedTransactionId, OwnedUserId, + RoomVersionId, UserId, +}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use crate::{ - events::{ - AnyStrippedStateEvent, BundledStateRelations, EventContent, - PossiblyRedactedStateEventContent, RedactContent, RedactedStateEventContent, - StateEventType, - }, - serde::{CanBeEmpty, Raw, StringEnum}, - OwnedMxcUri, OwnedServerName, OwnedServerSigningKeyId, OwnedTransactionId, OwnedUserId, - PrivOwnedStr, RoomVersionId, UserId, + AnyStrippedStateEvent, BundledStateRelations, EventContent, PossiblyRedactedStateEventContent, + PrivOwnedStr, RedactContent, RedactedStateEventContent, StateEventType, }; mod change; @@ -62,7 +61,7 @@ pub struct RoomMemberEventContent { #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( feature = "compat-empty-string-null", - serde(default, deserialize_with = "crate::serde::empty_string_as_none") + serde(default, deserialize_with = "ruma_common::serde::empty_string_as_none") )] pub avatar_url: Option, @@ -581,13 +580,14 @@ mod tests { use assert_matches2::assert_matches; use js_int::uint; use maplit::btreemap; + use ruma_common::{ + mxc_uri, owned_server_signing_key_id, serde::CanBeEmpty, server_name, user_id, + MilliSecondsSinceUnixEpoch, + }; use serde_json::{from_value as from_json_value, json}; use super::{MembershipState, RoomMemberEventContent}; - use crate::{ - events::OriginalStateEvent, mxc_uri, owned_server_signing_key_id, serde::CanBeEmpty, - server_name, user_id, MilliSecondsSinceUnixEpoch, - }; + use crate::OriginalStateEvent; #[test] fn serde_with_no_prev_content() { diff --git a/crates/ruma-common/src/events/room/member/change.rs b/crates/ruma-events/src/room/member/change.rs similarity index 99% rename from crates/ruma-common/src/events/room/member/change.rs rename to crates/ruma-events/src/room/member/change.rs index f5ed182b..83522ac1 100644 --- a/crates/ruma-common/src/events/room/member/change.rs +++ b/crates/ruma-events/src/room/member/change.rs @@ -1,5 +1,6 @@ +use ruma_common::{MxcUri, UserId}; + use super::MembershipState; -use crate::{MxcUri, UserId}; /// The details of a member event required to calculate a [`MembershipChange`]. #[derive(Clone, Debug)] diff --git a/crates/ruma-common/src/events/room/message.rs b/crates/ruma-events/src/room/message.rs similarity index 99% rename from crates/ruma-common/src/events/room/message.rs rename to crates/ruma-events/src/room/message.rs index 0378c8f6..14eef5b7 100644 --- a/crates/ruma-common/src/events/room/message.rs +++ b/crates/ruma-events/src/room/message.rs @@ -4,6 +4,10 @@ use std::borrow::Cow; +use ruma_common::{ + serde::{JsonObject, StringEnum}, + EventId, +}; #[cfg(feature = "html")] use ruma_html::{sanitize_html, HtmlSanitizerMode, RemoveReplyFallback}; use ruma_macros::EventContent; @@ -11,12 +15,8 @@ use serde::{de::DeserializeOwned, Deserialize, Serialize}; use serde_json::Value as JsonValue; use crate::{ - events::{ - relation::{CustomRelation, InReplyTo, RelationType, Replacement, Thread}, - Mentions, - }, - serde::{JsonObject, StringEnum}, - EventId, PrivOwnedStr, + relation::{CustomRelation, InReplyTo, RelationType, Replacement, Thread}, + Mentions, PrivOwnedStr, }; mod audio; diff --git a/crates/ruma-common/src/events/room/message/audio.rs b/crates/ruma-events/src/room/message/audio.rs similarity index 94% rename from crates/ruma-common/src/events/room/message/audio.rs rename to crates/ruma-events/src/room/message/audio.rs index e0f307fc..452bd330 100644 --- a/crates/ruma-common/src/events/room/message/audio.rs +++ b/crates/ruma-events/src/room/message/audio.rs @@ -1,12 +1,10 @@ use std::time::Duration; use js_int::UInt; +use ruma_common::OwnedMxcUri; use serde::{Deserialize, Serialize}; -use crate::{ - events::room::{EncryptedFile, MediaSource}, - OwnedMxcUri, -}; +use crate::room::{EncryptedFile, MediaSource}; /// The payload for an audio message. #[derive(Clone, Debug, Deserialize, Serialize)] @@ -58,7 +56,7 @@ impl AudioMessageEventContent { pub struct AudioInfo { /// The duration of the audio in milliseconds. #[serde( - with = "crate::serde::duration::opt_ms", + with = "ruma_common::serde::duration::opt_ms", default, skip_serializing_if = "Option::is_none" )] diff --git a/crates/ruma-common/src/events/room/message/content_serde.rs b/crates/ruma-events/src/room/message/content_serde.rs similarity index 94% rename from crates/ruma-common/src/events/room/message/content_serde.rs rename to crates/ruma-events/src/room/message/content_serde.rs index 9ce2585f..cd762fbd 100644 --- a/crates/ruma-common/src/events/room/message/content_serde.rs +++ b/crates/ruma-events/src/room/message/content_serde.rs @@ -1,5 +1,6 @@ //! `Deserialize` implementation for RoomMessageEventContent and MessageType. +use ruma_common::serde::from_raw_json_value; use serde::{de, Deserialize}; use serde_json::value::RawValue as RawJsonValue; @@ -7,7 +8,7 @@ use super::{ relation_serde::deserialize_relation, MessageType, RoomMessageEventContent, RoomMessageEventContentWithoutRelation, }; -use crate::{events::Mentions, serde::from_raw_json_value}; +use crate::Mentions; impl<'de> Deserialize<'de> for RoomMessageEventContent { fn deserialize(deserializer: D) -> Result @@ -78,15 +79,13 @@ impl<'de> Deserialize<'de> for MessageType { #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/112615 #[cfg(feature = "unstable-msc3488")] pub(in super::super) mod msc3488 { + use ruma_common::MilliSecondsSinceUnixEpoch; use serde::{Deserialize, Serialize}; use crate::{ - events::{ - location::{AssetContent, LocationContent}, - message::historical_serde::MessageContentBlock, - room::message::{LocationInfo, LocationMessageEventContent}, - }, - MilliSecondsSinceUnixEpoch, + location::{AssetContent, LocationContent}, + message::historical_serde::MessageContentBlock, + room::message::{LocationInfo, LocationMessageEventContent}, }; /// Deserialize helper type for `LocationMessageEventContent` with unstable fields from msc3488. diff --git a/crates/ruma-common/src/events/room/message/emote.rs b/crates/ruma-events/src/room/message/emote.rs similarity index 100% rename from crates/ruma-common/src/events/room/message/emote.rs rename to crates/ruma-events/src/room/message/emote.rs diff --git a/crates/ruma-common/src/events/room/message/file.rs b/crates/ruma-events/src/room/message/file.rs similarity index 95% rename from crates/ruma-common/src/events/room/message/file.rs rename to crates/ruma-events/src/room/message/file.rs index 49c5bc88..e3d18cc4 100644 --- a/crates/ruma-common/src/events/room/message/file.rs +++ b/crates/ruma-events/src/room/message/file.rs @@ -1,10 +1,8 @@ use js_int::UInt; +use ruma_common::OwnedMxcUri; use serde::{Deserialize, Serialize}; -use crate::{ - events::room::{EncryptedFile, MediaSource, ThumbnailInfo}, - OwnedMxcUri, -}; +use crate::room::{EncryptedFile, MediaSource, ThumbnailInfo}; /// The payload for a file message. #[derive(Clone, Debug, Deserialize, Serialize)] @@ -84,7 +82,7 @@ pub struct FileInfo { /// The source of the thumbnail of the file. #[serde( flatten, - with = "crate::events::room::thumbnail_source_serde", + with = "crate::room::thumbnail_source_serde", skip_serializing_if = "Option::is_none" )] pub thumbnail_source: Option, diff --git a/crates/ruma-common/src/events/room/message/image.rs b/crates/ruma-events/src/room/message/image.rs similarity index 95% rename from crates/ruma-common/src/events/room/message/image.rs rename to crates/ruma-events/src/room/message/image.rs index cbf7548a..8ffff508 100644 --- a/crates/ruma-common/src/events/room/message/image.rs +++ b/crates/ruma-events/src/room/message/image.rs @@ -1,9 +1,7 @@ +use ruma_common::OwnedMxcUri; use serde::{Deserialize, Serialize}; -use crate::{ - events::room::{EncryptedFile, ImageInfo, MediaSource}, - OwnedMxcUri, -}; +use crate::room::{EncryptedFile, ImageInfo, MediaSource}; /// The payload for an image message. #[derive(Clone, Debug, Deserialize, Serialize)] diff --git a/crates/ruma-common/src/events/room/message/key_verification_request.rs b/crates/ruma-events/src/room/message/key_verification_request.rs similarity index 95% rename from crates/ruma-common/src/events/room/message/key_verification_request.rs rename to crates/ruma-events/src/room/message/key_verification_request.rs index ebdabd74..0e32e3f8 100644 --- a/crates/ruma-common/src/events/room/message/key_verification_request.rs +++ b/crates/ruma-events/src/room/message/key_verification_request.rs @@ -1,7 +1,8 @@ +use ruma_common::{OwnedDeviceId, OwnedUserId}; use serde::{Deserialize, Serialize}; use super::FormattedBody; -use crate::{events::key::verification::VerificationMethod, OwnedDeviceId, OwnedUserId}; +use crate::key::verification::VerificationMethod; /// The payload for a key verification request message. #[derive(Clone, Debug, Deserialize, Serialize)] diff --git a/crates/ruma-common/src/events/room/message/location.rs b/crates/ruma-events/src/room/message/location.rs similarity index 93% rename from crates/ruma-common/src/events/room/message/location.rs rename to crates/ruma-events/src/room/message/location.rs index 769ae077..ef9f656f 100644 --- a/crates/ruma-common/src/events/room/message/location.rs +++ b/crates/ruma-events/src/room/message/location.rs @@ -1,13 +1,12 @@ +#[cfg(feature = "unstable-msc3488")] +use ruma_common::MilliSecondsSinceUnixEpoch; use serde::{Deserialize, Serialize}; -use crate::events::room::{MediaSource, ThumbnailInfo}; +use crate::room::{MediaSource, ThumbnailInfo}; #[cfg(feature = "unstable-msc3488")] use crate::{ - events::{ - location::{AssetContent, AssetType, LocationContent}, - message::{TextContentBlock, TextRepresentation}, - }, - MilliSecondsSinceUnixEpoch, + location::{AssetContent, AssetType, LocationContent}, + message::{TextContentBlock, TextRepresentation}, }; /// The payload for a location message. @@ -120,7 +119,7 @@ pub struct LocationInfo { /// The source of a thumbnail of the location. #[serde( flatten, - with = "crate::events::room::thumbnail_source_serde", + with = "crate::room::thumbnail_source_serde", skip_serializing_if = "Option::is_none" )] pub thumbnail_source: Option, diff --git a/crates/ruma-common/src/events/room/message/notice.rs b/crates/ruma-events/src/room/message/notice.rs similarity index 100% rename from crates/ruma-common/src/events/room/message/notice.rs rename to crates/ruma-events/src/room/message/notice.rs diff --git a/crates/ruma-common/src/events/room/message/relation_serde.rs b/crates/ruma-events/src/room/message/relation_serde.rs similarity index 97% rename from crates/ruma-common/src/events/room/message/relation_serde.rs rename to crates/ruma-events/src/room/message/relation_serde.rs index fac3c4d7..1805f202 100644 --- a/crates/ruma-common/src/events/room/message/relation_serde.rs +++ b/crates/ruma-events/src/room/message/relation_serde.rs @@ -1,15 +1,16 @@ +use ruma_common::{serde::JsonObject, OwnedEventId}; use serde::{de, Deserialize, Deserializer, Serialize}; use serde_json::Value as JsonValue; use super::{InReplyTo, Relation, Replacement, Thread}; -use crate::{events::relation::CustomRelation, serde::JsonObject, OwnedEventId}; +use crate::relation::CustomRelation; /// Deserialize an event's `relates_to` field. /// /// Use it like this: /// ``` /// # use serde::{Deserialize, Serialize}; -/// use ruma_common::events::room::message::{deserialize_relation, MessageType, Relation}; +/// use ruma_events::room::message::{deserialize_relation, MessageType, Relation}; /// /// #[derive(Deserialize, Serialize)] /// struct MyEventContent { diff --git a/crates/ruma-common/src/events/room/message/reply.rs b/crates/ruma-events/src/room/message/reply.rs similarity index 97% rename from crates/ruma-common/src/events/room/message/reply.rs rename to crates/ruma-events/src/room/message/reply.rs index 5af53af4..fafeb7a3 100644 --- a/crates/ruma-common/src/events/room/message/reply.rs +++ b/crates/ruma-events/src/room/message/reply.rs @@ -125,11 +125,10 @@ pub(crate) fn plain_and_formatted_reply_body( #[cfg(test)] mod tests { + use ruma_common::{owned_event_id, owned_room_id, owned_user_id, MilliSecondsSinceUnixEpoch}; + use super::OriginalRoomMessageEvent; - use crate::{ - events::{room::message::RoomMessageEventContent, MessageLikeUnsigned}, - owned_event_id, owned_room_id, owned_user_id, MilliSecondsSinceUnixEpoch, - }; + use crate::{room::message::RoomMessageEventContent, MessageLikeUnsigned}; #[test] fn fallback_multiline() { diff --git a/crates/ruma-common/src/events/room/message/sanitize.rs b/crates/ruma-events/src/room/message/sanitize.rs similarity index 100% rename from crates/ruma-common/src/events/room/message/sanitize.rs rename to crates/ruma-events/src/room/message/sanitize.rs diff --git a/crates/ruma-common/src/events/room/message/server_notice.rs b/crates/ruma-events/src/room/message/server_notice.rs similarity index 97% rename from crates/ruma-common/src/events/room/message/server_notice.rs rename to crates/ruma-events/src/room/message/server_notice.rs index 3bd1e7bb..33af12c6 100644 --- a/crates/ruma-common/src/events/room/message/server_notice.rs +++ b/crates/ruma-events/src/room/message/server_notice.rs @@ -1,6 +1,7 @@ +use ruma_common::serde::StringEnum; use serde::{Deserialize, Serialize}; -use crate::{serde::StringEnum, PrivOwnedStr}; +use crate::PrivOwnedStr; /// The payload for a server notice message. #[derive(Clone, Debug, Deserialize, Serialize)] diff --git a/crates/ruma-common/src/events/room/message/text.rs b/crates/ruma-events/src/room/message/text.rs similarity index 100% rename from crates/ruma-common/src/events/room/message/text.rs rename to crates/ruma-events/src/room/message/text.rs diff --git a/crates/ruma-common/src/events/room/message/video.rs b/crates/ruma-events/src/room/message/video.rs similarity index 94% rename from crates/ruma-common/src/events/room/message/video.rs rename to crates/ruma-events/src/room/message/video.rs index c530de3e..28ba338e 100644 --- a/crates/ruma-common/src/events/room/message/video.rs +++ b/crates/ruma-events/src/room/message/video.rs @@ -1,12 +1,10 @@ use std::time::Duration; use js_int::UInt; +use ruma_common::OwnedMxcUri; use serde::{Deserialize, Serialize}; -use crate::{ - events::room::{EncryptedFile, MediaSource, ThumbnailInfo}, - OwnedMxcUri, -}; +use crate::room::{EncryptedFile, MediaSource, ThumbnailInfo}; /// The payload for a video message. #[derive(Clone, Debug, Deserialize, Serialize)] @@ -59,7 +57,7 @@ impl VideoMessageEventContent { pub struct VideoInfo { /// The duration of the video in milliseconds. #[serde( - with = "crate::serde::duration::opt_ms", + with = "ruma_common::serde::duration::opt_ms", default, skip_serializing_if = "Option::is_none" )] @@ -88,7 +86,7 @@ pub struct VideoInfo { /// The source of the thumbnail of the video clip. #[serde( flatten, - with = "crate::events::room::thumbnail_source_serde", + with = "crate::room::thumbnail_source_serde", skip_serializing_if = "Option::is_none" )] pub thumbnail_source: Option, diff --git a/crates/ruma-common/src/events/room/name.rs b/crates/ruma-events/src/room/name.rs similarity index 96% rename from crates/ruma-common/src/events/room/name.rs rename to crates/ruma-events/src/room/name.rs index a7a5bb44..1059b1c6 100644 --- a/crates/ruma-common/src/events/room/name.rs +++ b/crates/ruma-events/src/room/name.rs @@ -5,7 +5,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::events::EmptyStateKey; +use crate::EmptyStateKey; /// The content of an `m.room.name` event. /// @@ -15,7 +15,7 @@ use crate::events::EmptyStateKey; #[ruma_event(type = "m.room.name", kind = State, state_key_type = EmptyStateKey)] pub struct RoomNameEventContent { /// The name of the room. - #[serde(default, deserialize_with = "crate::serde::empty_string_as_none")] + #[serde(default, deserialize_with = "ruma_common::serde::empty_string_as_none")] pub name: Option, } @@ -30,10 +30,11 @@ impl RoomNameEventContent { #[cfg(test)] mod tests { use assert_matches2::assert_matches; + use ruma_common::serde::Raw; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::RoomNameEventContent; - use crate::{events::OriginalStateEvent, serde::Raw}; + use crate::OriginalStateEvent; #[test] fn serialization_with_optional_fields_as_none() { diff --git a/crates/ruma-common/src/events/room/pinned_events.rs b/crates/ruma-events/src/room/pinned_events.rs similarity index 82% rename from crates/ruma-common/src/events/room/pinned_events.rs rename to crates/ruma-events/src/room/pinned_events.rs index a47ff646..0709e899 100644 --- a/crates/ruma-common/src/events/room/pinned_events.rs +++ b/crates/ruma-events/src/room/pinned_events.rs @@ -2,10 +2,11 @@ //! //! [`m.room.pinned_events`]: https://spec.matrix.org/latest/client-server-api/#mroompinned_events +use ruma_common::OwnedEventId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::EmptyStateKey, OwnedEventId}; +use crate::EmptyStateKey; /// The content of an `m.room.pinned_events` event. /// @@ -25,19 +26,19 @@ impl RoomPinnedEventsEventContent { } } -#[cfg(all(test, feature = "rand"))] +#[cfg(test)] mod tests { + use ruma_common::owned_event_id; + use super::RoomPinnedEventsEventContent; - use crate::{server_name, EventId}; #[test] fn serialization_deserialization() { let mut content: RoomPinnedEventsEventContent = RoomPinnedEventsEventContent { pinned: Vec::new() }; - let server_name = server_name!("example.com"); - content.pinned.push(EventId::new(server_name)); - content.pinned.push(EventId::new(server_name)); + content.pinned.push(owned_event_id!("$a:example.com")); + content.pinned.push(owned_event_id!("$b:example.com")); let serialized = serde_json::to_string(&content).unwrap(); let parsed_content: RoomPinnedEventsEventContent = diff --git a/crates/ruma-common/src/events/room/power_levels.rs b/crates/ruma-events/src/room/power_levels.rs similarity index 89% rename from crates/ruma-common/src/events/room/power_levels.rs rename to crates/ruma-events/src/room/power_levels.rs index f3aeedb8..98b741db 100644 --- a/crates/ruma-common/src/events/room/power_levels.rs +++ b/crates/ruma-events/src/room/power_levels.rs @@ -5,16 +5,16 @@ use std::{cmp::max, collections::BTreeMap}; use js_int::{int, Int}; +use ruma_common::{ + power_levels::{default_power_level, NotificationPowerLevels}, + OwnedUserId, RoomVersionId, UserId, +}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use crate::{ - events::{ - EmptyStateKey, EventContent, MessageLikeEventType, RedactContent, - RedactedStateEventContent, StateEventType, StaticEventContent, TimelineEventType, - }, - power_levels::{default_power_level, NotificationPowerLevels}, - OwnedUserId, RoomVersionId, UserId, + EmptyStateKey, EventContent, MessageLikeEventType, RedactContent, RedactedStateEventContent, + StateEventType, StaticEventContent, TimelineEventType, }; /// The content of an `m.room.power_levels` event. @@ -28,7 +28,7 @@ pub struct RoomPowerLevelsEventContent { #[serde( default = "default_power_level", skip_serializing_if = "is_default_power_level", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub ban: Int, @@ -38,23 +38,23 @@ pub struct RoomPowerLevelsEventContent { #[serde( default, skip_serializing_if = "BTreeMap::is_empty", - deserialize_with = "crate::serde::btreemap_deserialize_v1_powerlevel_values" + deserialize_with = "ruma_common::serde::btreemap_deserialize_v1_powerlevel_values" )] pub events: BTreeMap, /// The default level required to send message events. #[serde( default, - skip_serializing_if = "crate::serde::is_default", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + skip_serializing_if = "ruma_common::serde::is_default", + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub events_default: Int, /// The level required to invite a user. #[serde( default, - skip_serializing_if = "crate::serde::is_default", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + skip_serializing_if = "ruma_common::serde::is_default", + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub invite: Int, @@ -62,7 +62,7 @@ pub struct RoomPowerLevelsEventContent { #[serde( default = "default_power_level", skip_serializing_if = "is_default_power_level", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub kick: Int, @@ -70,7 +70,7 @@ pub struct RoomPowerLevelsEventContent { #[serde( default = "default_power_level", skip_serializing_if = "is_default_power_level", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub redact: Int, @@ -78,7 +78,7 @@ pub struct RoomPowerLevelsEventContent { #[serde( default = "default_power_level", skip_serializing_if = "is_default_power_level", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub state_default: Int, @@ -88,15 +88,15 @@ pub struct RoomPowerLevelsEventContent { #[serde( default, skip_serializing_if = "BTreeMap::is_empty", - deserialize_with = "crate::serde::btreemap_deserialize_v1_powerlevel_values" + deserialize_with = "ruma_common::serde::btreemap_deserialize_v1_powerlevel_values" )] pub users: BTreeMap, /// The default power level for every user in the room. #[serde( default, - skip_serializing_if = "crate::serde::is_default", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + skip_serializing_if = "ruma_common::serde::is_default", + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub users_default: Int, @@ -219,7 +219,7 @@ pub struct RedactedRoomPowerLevelsEventContent { #[serde( default = "default_power_level", skip_serializing_if = "is_default_power_level", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub ban: Int, @@ -229,15 +229,15 @@ pub struct RedactedRoomPowerLevelsEventContent { #[serde( default, skip_serializing_if = "BTreeMap::is_empty", - deserialize_with = "crate::serde::btreemap_deserialize_v1_powerlevel_values" + deserialize_with = "ruma_common::serde::btreemap_deserialize_v1_powerlevel_values" )] pub events: BTreeMap, /// The default level required to send message events. #[serde( default, - skip_serializing_if = "crate::serde::is_default", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + skip_serializing_if = "ruma_common::serde::is_default", + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub events_default: Int, @@ -247,8 +247,8 @@ pub struct RedactedRoomPowerLevelsEventContent { /// preserved. #[serde( default, - skip_serializing_if = "crate::serde::is_default", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + skip_serializing_if = "ruma_common::serde::is_default", + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub invite: Int, @@ -256,7 +256,7 @@ pub struct RedactedRoomPowerLevelsEventContent { #[serde( default = "default_power_level", skip_serializing_if = "is_default_power_level", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub kick: Int, @@ -264,7 +264,7 @@ pub struct RedactedRoomPowerLevelsEventContent { #[serde( default = "default_power_level", skip_serializing_if = "is_default_power_level", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub redact: Int, @@ -272,7 +272,7 @@ pub struct RedactedRoomPowerLevelsEventContent { #[serde( default = "default_power_level", skip_serializing_if = "is_default_power_level", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub state_default: Int, @@ -282,15 +282,15 @@ pub struct RedactedRoomPowerLevelsEventContent { #[serde( default, skip_serializing_if = "BTreeMap::is_empty", - deserialize_with = "crate::serde::btreemap_deserialize_v1_powerlevel_values" + deserialize_with = "ruma_common::serde::btreemap_deserialize_v1_powerlevel_values" )] pub users: BTreeMap, /// The default power level for every user in the room. #[serde( default, - skip_serializing_if = "crate::serde::is_default", - deserialize_with = "crate::serde::deserialize_v1_powerlevel" + skip_serializing_if = "ruma_common::serde::is_default", + deserialize_with = "ruma_common::serde::deserialize_v1_powerlevel" )] pub users_default: Int, } @@ -541,10 +541,10 @@ mod tests { use assign::assign; use js_int::int; use maplit::btreemap; + use ruma_common::user_id; use serde_json::{json, to_value as to_json_value}; use super::{default_power_level, NotificationPowerLevels, RoomPowerLevelsEventContent}; - use crate::user_id; #[test] fn serialization_with_optional_fields_as_none() { diff --git a/crates/ruma-common/src/events/room/redaction.rs b/crates/ruma-events/src/room/redaction.rs similarity index 95% rename from crates/ruma-common/src/events/room/redaction.rs rename to crates/ruma-events/src/room/redaction.rs index 6d6d335b..189b4a91 100644 --- a/crates/ruma-common/src/events/room/redaction.rs +++ b/crates/ruma-events/src/room/redaction.rs @@ -3,18 +3,19 @@ //! [`m.room.redaction`]: https://spec.matrix.org/latest/client-server-api/#mroomredaction use js_int::Int; +#[cfg(feature = "canonical-json")] +use ruma_common::canonical_json::RedactionEvent; +use ruma_common::{ + serde::CanBeEmpty, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, + OwnedTransactionId, OwnedUserId, RoomId, RoomVersionId, UserId, +}; use ruma_macros::{Event, EventContent}; use serde::{Deserialize, Serialize}; use tracing::error; use crate::{ - events::{ - BundledMessageLikeRelations, EventContent, MessageLikeEventType, RedactContent, - RedactedMessageLikeEventContent, RedactedUnsigned, StaticEventContent, - }, - serde::CanBeEmpty, - EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedTransactionId, - OwnedUserId, RoomId, RoomVersionId, UserId, + BundledMessageLikeRelations, EventContent, MessageLikeEventType, RedactContent, + RedactedMessageLikeEventContent, RedactedUnsigned, StaticEventContent, }; mod event_serde; @@ -423,6 +424,15 @@ impl OriginalSyncRoomRedactionEvent { } } +#[cfg(feature = "canonical-json")] +impl RedactionEvent for OriginalRoomRedactionEvent {} +#[cfg(feature = "canonical-json")] +impl RedactionEvent for OriginalSyncRoomRedactionEvent {} +#[cfg(feature = "canonical-json")] +impl RedactionEvent for RoomRedactionEvent {} +#[cfg(feature = "canonical-json")] +impl RedactionEvent for SyncRoomRedactionEvent {} + /// Extra information about a redaction that is not incorporated into the event's hash. #[derive(Clone, Debug, Deserialize)] #[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] diff --git a/crates/ruma-common/src/events/room/redaction/event_serde.rs b/crates/ruma-events/src/room/redaction/event_serde.rs similarity index 95% rename from crates/ruma-common/src/events/room/redaction/event_serde.rs rename to crates/ruma-events/src/room/redaction/event_serde.rs index 045882f0..ec93c5b5 100644 --- a/crates/ruma-common/src/events/room/redaction/event_serde.rs +++ b/crates/ruma-events/src/room/redaction/event_serde.rs @@ -1,3 +1,6 @@ +use ruma_common::{ + serde::from_raw_json_value, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedUserId, +}; use serde::{de, Deserialize, Deserializer}; use serde_json::value::RawValue as RawJsonValue; @@ -5,10 +8,7 @@ use super::{ OriginalRoomRedactionEvent, OriginalSyncRoomRedactionEvent, RoomRedactionEvent, RoomRedactionEventContent, RoomRedactionUnsigned, SyncRoomRedactionEvent, }; -use crate::{ - events::RedactionDeHelper, serde::from_raw_json_value, MilliSecondsSinceUnixEpoch, - OwnedEventId, OwnedRoomId, OwnedUserId, -}; +use crate::RedactionDeHelper; impl<'de> Deserialize<'de> for RoomRedactionEvent { fn deserialize(deserializer: D) -> Result diff --git a/crates/ruma-common/src/events/room/server_acl.rs b/crates/ruma-events/src/room/server_acl.rs similarity index 95% rename from crates/ruma-common/src/events/room/server_acl.rs rename to crates/ruma-events/src/room/server_acl.rs index 5e8f2f38..c5650cba 100644 --- a/crates/ruma-common/src/events/room/server_acl.rs +++ b/crates/ruma-events/src/room/server_acl.rs @@ -2,11 +2,12 @@ //! //! [`m.room.server_acl`]: https://spec.matrix.org/latest/client-server-api/#mroomserver_acl +use ruma_common::ServerName; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use wildmatch::WildMatch; -use crate::{events::EmptyStateKey, ServerName}; +use crate::EmptyStateKey; /// The content of an `m.room.server_acl` event. /// @@ -20,7 +21,10 @@ pub struct RoomServerAclEventContent { /// This is strongly recommended to be set to false as servers running with IP literal names /// are strongly discouraged in order to require legitimate homeservers to be backed by a /// valid registered domain name. - #[serde(default = "crate::serde::default_true", skip_serializing_if = "crate::serde::is_true")] + #[serde( + default = "ruma_common::serde::default_true", + skip_serializing_if = "ruma_common::serde::is_true" + )] pub allow_ip_literals: bool, /// The server names to allow in the room, excluding any port information. @@ -64,10 +68,11 @@ impl RoomServerAclEventContent { #[cfg(test)] mod tests { + use ruma_common::server_name; use serde_json::{from_value as from_json_value, json}; use super::RoomServerAclEventContent; - use crate::{events::OriginalStateEvent, server_name}; + use crate::OriginalStateEvent; #[test] fn default_values() { diff --git a/crates/ruma-common/src/events/room/third_party_invite.rs b/crates/ruma-events/src/room/third_party_invite.rs similarity index 99% rename from crates/ruma-common/src/events/room/third_party_invite.rs rename to crates/ruma-events/src/room/third_party_invite.rs index 4f355af6..3d2e7ad2 100644 --- a/crates/ruma-common/src/events/room/third_party_invite.rs +++ b/crates/ruma-events/src/room/third_party_invite.rs @@ -2,11 +2,10 @@ //! //! [`m.room.third_party_invite`]: https://spec.matrix.org/latest/client-server-api/#mroomthird_party_invite +use ruma_common::serde::Base64; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::serde::Base64; - /// The content of an `m.room.third_party_invite` event. /// /// An invitation to a room issued to a third party identifier, rather than a matrix user ID. diff --git a/crates/ruma-common/src/events/room/thumbnail_source_serde.rs b/crates/ruma-events/src/room/thumbnail_source_serde.rs similarity index 97% rename from crates/ruma-common/src/events/room/thumbnail_source_serde.rs rename to crates/ruma-events/src/room/thumbnail_source_serde.rs index 65423b3e..16c7ae68 100644 --- a/crates/ruma-common/src/events/room/thumbnail_source_serde.rs +++ b/crates/ruma-events/src/room/thumbnail_source_serde.rs @@ -1,12 +1,12 @@ //! De-/serialization functions for `Option` objects representing a thumbnail source. +use ruma_common::OwnedMxcUri; use serde::{ ser::{SerializeStruct, Serializer}, Deserialize, Deserializer, }; use super::{EncryptedFile, MediaSource}; -use crate::OwnedMxcUri; /// Serializes a MediaSource to a thumbnail source. pub(crate) fn serialize(source: &Option, serializer: S) -> Result @@ -51,14 +51,11 @@ where #[cfg(test)] mod tests { use assert_matches2::assert_matches; + use ruma_common::{mxc_uri, serde::Base64}; use serde::{Deserialize, Serialize}; use serde_json::json; - use crate::{ - events::room::{EncryptedFileInit, JsonWebKeyInit, MediaSource}, - mxc_uri, - serde::Base64, - }; + use crate::room::{EncryptedFileInit, JsonWebKeyInit, MediaSource}; #[derive(Clone, Debug, Deserialize, Serialize)] struct ThumbnailSourceTest { diff --git a/crates/ruma-common/src/events/room/tombstone.rs b/crates/ruma-events/src/room/tombstone.rs similarity index 93% rename from crates/ruma-common/src/events/room/tombstone.rs rename to crates/ruma-events/src/room/tombstone.rs index af4fa844..2eed21f4 100644 --- a/crates/ruma-common/src/events/room/tombstone.rs +++ b/crates/ruma-events/src/room/tombstone.rs @@ -2,15 +2,13 @@ //! //! [`m.room.tombstone`]: https://spec.matrix.org/latest/client-server-api/#mroomtombstone +use ruma_common::OwnedRoomId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; use crate::{ - events::{ - EmptyStateKey, EventContent, PossiblyRedactedStateEventContent, StateEventType, - StaticEventContent, - }, - OwnedRoomId, + EmptyStateKey, EventContent, PossiblyRedactedStateEventContent, StateEventType, + StaticEventContent, }; /// The content of an `m.room.tombstone` event. diff --git a/crates/ruma-common/src/events/room/topic.rs b/crates/ruma-events/src/room/topic.rs similarity index 95% rename from crates/ruma-common/src/events/room/topic.rs rename to crates/ruma-events/src/room/topic.rs index 09d70af5..faaa36df 100644 --- a/crates/ruma-common/src/events/room/topic.rs +++ b/crates/ruma-events/src/room/topic.rs @@ -5,7 +5,7 @@ use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::events::EmptyStateKey; +use crate::EmptyStateKey; /// The content of an `m.room.topic` event. /// diff --git a/crates/ruma-common/src/events/room_key.rs b/crates/ruma-events/src/room_key.rs similarity index 93% rename from crates/ruma-common/src/events/room_key.rs rename to crates/ruma-events/src/room_key.rs index c6b4cb5d..c9f2446c 100644 --- a/crates/ruma-common/src/events/room_key.rs +++ b/crates/ruma-events/src/room_key.rs @@ -2,11 +2,10 @@ //! //! [`m.room_key`]: https://spec.matrix.org/latest/client-server-api/#mroom_key +use ruma_common::{EventEncryptionAlgorithm, OwnedRoomId}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{EventEncryptionAlgorithm, OwnedRoomId}; - /// The content of an `m.room_key` event. /// /// Typically encrypted as an `m.room.encrypted` event, then sent as a to-device event. @@ -44,10 +43,11 @@ impl ToDeviceRoomKeyEventContent { #[cfg(test)] mod tests { + use ruma_common::owned_room_id; use serde_json::{json, to_value as to_json_value}; use super::ToDeviceRoomKeyEventContent; - use crate::{owned_room_id, EventEncryptionAlgorithm}; + use crate::EventEncryptionAlgorithm; #[test] fn serialization() { diff --git a/crates/ruma-common/src/events/room_key_request.rs b/crates/ruma-events/src/room_key_request.rs similarity index 98% rename from crates/ruma-common/src/events/room_key_request.rs rename to crates/ruma-events/src/room_key_request.rs index bc9922df..6b9af191 100644 --- a/crates/ruma-common/src/events/room_key_request.rs +++ b/crates/ruma-events/src/room_key_request.rs @@ -2,13 +2,13 @@ //! //! [`m.room_key_request`]: https://spec.matrix.org/latest/client-server-api/#mroom_key_request +use ruma_common::{ + serde::StringEnum, EventEncryptionAlgorithm, OwnedDeviceId, OwnedRoomId, OwnedTransactionId, +}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{ - serde::StringEnum, EventEncryptionAlgorithm, OwnedDeviceId, OwnedRoomId, OwnedTransactionId, - PrivOwnedStr, -}; +use crate::PrivOwnedStr; /// The content of an `m.room_key_request` event. #[derive(Clone, Debug, Deserialize, Serialize, EventContent)] diff --git a/crates/ruma-common/src/events/secret.rs b/crates/ruma-events/src/secret.rs similarity index 100% rename from crates/ruma-common/src/events/secret.rs rename to crates/ruma-events/src/secret.rs diff --git a/crates/ruma-common/src/events/secret/request.rs b/crates/ruma-events/src/secret/request.rs similarity index 98% rename from crates/ruma-common/src/events/secret/request.rs rename to crates/ruma-events/src/secret/request.rs index 40a17086..08944bbe 100644 --- a/crates/ruma-common/src/events/secret/request.rs +++ b/crates/ruma-events/src/secret/request.rs @@ -2,10 +2,11 @@ //! //! [`m.secret.request`]: https://spec.matrix.org/latest/client-server-api/#msecretrequest +use ruma_common::{serde::StringEnum, OwnedDeviceId, OwnedTransactionId}; use ruma_macros::EventContent; use serde::{ser::SerializeStruct, Deserialize, Serialize}; -use crate::{serde::StringEnum, OwnedDeviceId, OwnedTransactionId, PrivOwnedStr}; +use crate::PrivOwnedStr; /// The content of an `m.secret.request` event. /// diff --git a/crates/ruma-common/src/events/secret/send.rs b/crates/ruma-events/src/secret/send.rs similarity index 97% rename from crates/ruma-common/src/events/secret/send.rs rename to crates/ruma-events/src/secret/send.rs index d2efde74..1536d443 100644 --- a/crates/ruma-common/src/events/secret/send.rs +++ b/crates/ruma-events/src/secret/send.rs @@ -4,11 +4,10 @@ use std::fmt; +use ruma_common::OwnedTransactionId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::OwnedTransactionId; - /// The content of an `m.secret.send` event. /// /// An event sent by a client to share a secret with another device, in response to an diff --git a/crates/ruma-common/src/events/secret_storage.rs b/crates/ruma-events/src/secret_storage.rs similarity index 100% rename from crates/ruma-common/src/events/secret_storage.rs rename to crates/ruma-events/src/secret_storage.rs diff --git a/crates/ruma-common/src/events/secret_storage/default_key.rs b/crates/ruma-events/src/secret_storage/default_key.rs similarity index 92% rename from crates/ruma-common/src/events/secret_storage/default_key.rs rename to crates/ruma-events/src/secret_storage/default_key.rs index b5a20ab3..d9096514 100644 --- a/crates/ruma-common/src/events/secret_storage/default_key.rs +++ b/crates/ruma-events/src/secret_storage/default_key.rs @@ -2,9 +2,10 @@ //! //! [`m.secret_storage.default_key`]: https://spec.matrix.org/latest/client-server-api/#key-storage -use ruma_common::events::macros::EventContent; use serde::{Deserialize, Serialize}; +use crate::macros::EventContent; + /// The payload for `DefaultKeyEvent`. #[derive(Clone, Debug, Deserialize, Serialize, EventContent)] #[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] diff --git a/crates/ruma-common/src/events/secret_storage/key.rs b/crates/ruma-events/src/secret_storage/key.rs similarity index 97% rename from crates/ruma-common/src/events/secret_storage/key.rs rename to crates/ruma-events/src/secret_storage/key.rs index ed62892b..92efb76e 100644 --- a/crates/ruma-common/src/events/secret_storage/key.rs +++ b/crates/ruma-events/src/secret_storage/key.rs @@ -3,9 +3,10 @@ //! [`m.secret_storage.key.*`]: https://spec.matrix.org/latest/client-server-api/#key-storage use js_int::{uint, UInt}; +use ruma_common::{serde::Base64, KeyDerivationAlgorithm}; use serde::{Deserialize, Serialize}; -use crate::{events::macros::EventContent, identifiers::KeyDerivationAlgorithm, serde::Base64}; +use crate::macros::EventContent; /// A passphrase from which a key is to be derived. #[derive(Clone, Debug, Deserialize, Serialize)] @@ -98,17 +99,14 @@ pub enum SecretEncryptionAlgorithm { mod tests { use assert_matches2::assert_matches; use js_int::uint; + use ruma_common::{serde::Base64, KeyDerivationAlgorithm}; use serde_json::{ from_value as from_json_value, json, to_value as to_json_value, value::to_raw_value as to_raw_json_value, }; use super::{PassPhrase, SecretEncryptionAlgorithm, SecretStorageKeyEventContent}; - use crate::{ - events::{EventContentFromType, GlobalAccountDataEvent}, - serde::Base64, - KeyDerivationAlgorithm, - }; + use crate::{EventContentFromType, GlobalAccountDataEvent}; #[test] fn test_key_description_serialization() { diff --git a/crates/ruma-common/src/events/secret_storage/secret.rs b/crates/ruma-events/src/secret_storage/secret.rs similarity index 98% rename from crates/ruma-common/src/events/secret_storage/secret.rs rename to crates/ruma-events/src/secret_storage/secret.rs index af7fb406..ec56bdac 100644 --- a/crates/ruma-common/src/events/secret_storage/secret.rs +++ b/crates/ruma-events/src/secret_storage/secret.rs @@ -2,10 +2,9 @@ use std::collections::BTreeMap; +use ruma_common::serde::Base64; use serde::{Deserialize, Serialize}; -use crate::serde::Base64; - /// A secret and its encrypted contents. #[derive(Clone, Debug, Serialize, Deserialize)] #[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] @@ -46,10 +45,10 @@ mod tests { use std::collections::BTreeMap; use assert_matches2::assert_matches; + use ruma_common::serde::Base64; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{SecretEncryptedData, SecretEventContent}; - use crate::serde::Base64; #[test] fn test_secret_serialization() { diff --git a/crates/ruma-common/src/events/space.rs b/crates/ruma-events/src/space.rs similarity index 100% rename from crates/ruma-common/src/events/space.rs rename to crates/ruma-events/src/space.rs diff --git a/crates/ruma-common/src/events/space/child.rs b/crates/ruma-events/src/space/child.rs similarity index 96% rename from crates/ruma-common/src/events/space/child.rs rename to crates/ruma-events/src/space/child.rs index ff3800ac..878fe2bb 100644 --- a/crates/ruma-common/src/events/space/child.rs +++ b/crates/ruma-events/src/space/child.rs @@ -2,11 +2,10 @@ //! //! [`m.space.child`]: https://spec.matrix.org/latest/client-server-api/#mspacechild +use ruma_common::{MilliSecondsSinceUnixEpoch, OwnedRoomId, OwnedServerName, OwnedUserId}; use ruma_macros::{Event, EventContent}; use serde::{Deserialize, Serialize}; -use crate::{MilliSecondsSinceUnixEpoch, OwnedRoomId, OwnedServerName, OwnedUserId}; - /// The content of an `m.space.child` event. /// /// The admins of a space can advertise rooms and subspaces for their space by setting @@ -72,10 +71,10 @@ pub struct HierarchySpaceChildEvent { #[cfg(test)] mod tests { use js_int::uint; + use ruma_common::{server_name, MilliSecondsSinceUnixEpoch}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use super::{HierarchySpaceChildEvent, SpaceChildEventContent}; - use crate::{server_name, MilliSecondsSinceUnixEpoch}; #[test] fn space_child_serialization() { diff --git a/crates/ruma-common/src/events/space/parent.rs b/crates/ruma-events/src/space/parent.rs similarity index 96% rename from crates/ruma-common/src/events/space/parent.rs rename to crates/ruma-events/src/space/parent.rs index 01eff0b7..af040f30 100644 --- a/crates/ruma-common/src/events/space/parent.rs +++ b/crates/ruma-events/src/space/parent.rs @@ -2,11 +2,10 @@ //! //! [`m.space.parent`]: https://spec.matrix.org/latest/client-server-api/#mspaceparent +use ruma_common::{OwnedRoomId, OwnedServerName}; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{OwnedRoomId, OwnedServerName}; - /// The content of an `m.space.parent` event. /// /// Rooms can claim parents via the `m.space.parent` state event. @@ -42,10 +41,10 @@ impl SpaceParentEventContent { #[cfg(test)] mod tests { + use ruma_common::server_name; use serde_json::{json, to_value as to_json_value}; use super::SpaceParentEventContent; - use crate::server_name; #[test] fn space_parent_serialization() { diff --git a/crates/ruma-common/src/events/state_key.rs b/crates/ruma-events/src/state_key.rs similarity index 85% rename from crates/ruma-common/src/events/state_key.rs rename to crates/ruma-events/src/state_key.rs index 64b90f18..8f7046f6 100644 --- a/crates/ruma-common/src/events/state_key.rs +++ b/crates/ruma-events/src/state_key.rs @@ -1,5 +1,7 @@ use serde::{ - de::{self, Deserialize, Deserializer, Unexpected}, + de::{ + Deserialize, Deserializer, Unexpected, {self}, + }, Serialize, Serializer, }; @@ -19,7 +21,7 @@ impl<'de> Deserialize<'de> for EmptyStateKey { where D: Deserializer<'de>, { - let s = crate::serde::deserialize_cow_str(deserializer)?; + let s = ruma_common::serde::deserialize_cow_str(deserializer)?; if s.is_empty() { Ok(EmptyStateKey) } else { diff --git a/crates/ruma-common/src/events/sticker.rs b/crates/ruma-events/src/sticker.rs similarity index 95% rename from crates/ruma-common/src/events/sticker.rs rename to crates/ruma-events/src/sticker.rs index ab5c2e5f..ed3484eb 100644 --- a/crates/ruma-common/src/events/sticker.rs +++ b/crates/ruma-events/src/sticker.rs @@ -2,10 +2,11 @@ //! //! [`m.sticker`]: https://spec.matrix.org/latest/client-server-api/#msticker +use ruma_common::OwnedMxcUri; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::{events::room::ImageInfo, OwnedMxcUri}; +use crate::room::ImageInfo; /// The content of an `m.sticker` event. /// diff --git a/crates/ruma-common/src/events/tag.rs b/crates/ruma-events/src/tag.rs similarity index 98% rename from crates/ruma-common/src/events/tag.rs rename to crates/ruma-events/src/tag.rs index 921abe38..e8811e5e 100644 --- a/crates/ruma-common/src/events/tag.rs +++ b/crates/ruma-events/src/tag.rs @@ -4,12 +4,13 @@ use std::{collections::BTreeMap, error::Error, fmt, str::FromStr}; +#[cfg(feature = "compat-tag-info")] +use ruma_common::serde::deserialize_as_optional_f64_or_string; +use ruma_common::serde::deserialize_cow_str; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -#[cfg(feature = "compat-tag-info")] -use crate::serde::deserialize_as_optional_f64_or_string; -use crate::{serde::deserialize_cow_str, PrivOwnedStr}; +use crate::PrivOwnedStr; /// Map of tag names to tag info. pub type Tags = BTreeMap; diff --git a/crates/ruma-common/src/events/typing.rs b/crates/ruma-events/src/typing.rs similarity index 96% rename from crates/ruma-common/src/events/typing.rs rename to crates/ruma-events/src/typing.rs index 10cfc8d6..8f034af2 100644 --- a/crates/ruma-common/src/events/typing.rs +++ b/crates/ruma-events/src/typing.rs @@ -2,11 +2,10 @@ //! //! [`m.typing`]: https://spec.matrix.org/latest/client-server-api/#mtyping +use ruma_common::OwnedUserId; use ruma_macros::EventContent; use serde::{Deserialize, Serialize}; -use crate::OwnedUserId; - /// The content of an `m.typing` event. /// /// Informs the client who is currently typing in a given room. diff --git a/crates/ruma-common/src/events/unsigned.rs b/crates/ruma-events/src/unsigned.rs similarity index 99% rename from crates/ruma-common/src/events/unsigned.rs rename to crates/ruma-events/src/unsigned.rs index d221d2fb..ddb19481 100644 --- a/crates/ruma-common/src/events/unsigned.rs +++ b/crates/ruma-events/src/unsigned.rs @@ -1,4 +1,7 @@ use js_int::Int; +use ruma_common::{ + serde::CanBeEmpty, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedTransactionId, OwnedUserId, +}; use serde::{de::DeserializeOwned, Deserialize}; use super::{ @@ -6,9 +9,6 @@ use super::{ room::redaction::RoomRedactionEventContent, MessageLikeEventContent, OriginalSyncMessageLikeEvent, PossiblyRedactedStateEventContent, }; -use crate::{ - serde::CanBeEmpty, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedTransactionId, OwnedUserId, -}; /// Extra information about a message event that is not incorporated into the event's hash. #[derive(Clone, Debug, Deserialize)] diff --git a/crates/ruma-common/src/events/video.rs b/crates/ruma-events/src/video.rs similarity index 95% rename from crates/ruma-common/src/events/video.rs rename to crates/ruma-events/src/video.rs index e0282e8e..756e5fb5 100644 --- a/crates/ruma-common/src/events/video.rs +++ b/crates/ruma-events/src/video.rs @@ -56,7 +56,7 @@ pub struct VideoEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, @@ -65,7 +65,7 @@ pub struct VideoEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, } @@ -113,7 +113,7 @@ pub struct VideoDetailsContentBlock { /// The duration of the video in seconds. #[serde( - with = "crate::serde::duration::opt_secs", + with = "ruma_common::serde::duration::opt_secs", default, skip_serializing_if = "Option::is_none" )] diff --git a/crates/ruma-common/src/events/voice.rs b/crates/ruma-events/src/voice.rs similarity index 95% rename from crates/ruma-common/src/events/voice.rs rename to crates/ruma-events/src/voice.rs index 7fa9b1e1..d27ec02f 100644 --- a/crates/ruma-common/src/events/voice.rs +++ b/crates/ruma-events/src/voice.rs @@ -39,7 +39,7 @@ pub struct VoiceEventContent { #[cfg(feature = "unstable-msc3955")] #[serde( default, - skip_serializing_if = "crate::serde::is_default", + skip_serializing_if = "ruma_common::serde::is_default", rename = "org.matrix.msc1767.automated" )] pub automated: bool, @@ -48,7 +48,7 @@ pub struct VoiceEventContent { #[serde( flatten, skip_serializing_if = "Option::is_none", - deserialize_with = "crate::events::room::message::relation_serde::deserialize_relation" + deserialize_with = "crate::room::message::relation_serde::deserialize_relation" )] pub relates_to: Option>, } diff --git a/crates/ruma-common/tests/events/audio.rs b/crates/ruma-events/tests/it/audio.rs similarity index 96% rename from crates/ruma-common/tests/events/audio.rs rename to crates/ruma-events/tests/it/audio.rs index bedabdce..1c5b1872 100644 --- a/crates/ruma-common/tests/events/audio.rs +++ b/crates/ruma-events/tests/it/audio.rs @@ -4,21 +4,21 @@ use std::time::Duration; use assert_matches2::assert_matches; use js_int::uint; -#[cfg(feature = "unstable-msc3246")] -use ruma_common::events::audio::Amplitude; use ruma_common::{ - events::{ - audio::{AudioDetailsContentBlock, AudioEventContent}, - file::{EncryptedContentInit, FileContentBlock}, - message::TextContentBlock, - relation::InReplyTo, - room::{message::Relation, JsonWebKeyInit}, - AnyMessageLikeEvent, MessageLikeEvent, - }, mxc_uri, owned_event_id, serde::{Base64, CanBeEmpty}, MilliSecondsSinceUnixEpoch, }; +#[cfg(feature = "unstable-msc3246")] +use ruma_events::audio::Amplitude; +use ruma_events::{ + audio::{AudioDetailsContentBlock, AudioEventContent}, + file::{EncryptedContentInit, FileContentBlock}, + message::TextContentBlock, + relation::InReplyTo, + room::{message::Relation, JsonWebKeyInit}, + AnyMessageLikeEvent, MessageLikeEvent, +}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; #[cfg(feature = "unstable-msc3246")] diff --git a/crates/ruma-common/tests/events/call.rs b/crates/ruma-events/tests/it/call.rs similarity index 96% rename from crates/ruma-common/tests/events/call.rs rename to crates/ruma-events/tests/it/call.rs index c1195182..af9aae40 100644 --- a/crates/ruma-common/tests/events/call.rs +++ b/crates/ruma-events/tests/it/call.rs @@ -2,25 +2,21 @@ use assert_matches2::assert_matches; #[cfg(feature = "unstable-msc2747")] use assign::assign; use js_int::uint; +use ruma_common::{room_id, serde::CanBeEmpty, MilliSecondsSinceUnixEpoch, VoipVersionId}; #[cfg(feature = "unstable-msc2747")] -use ruma_common::events::call::CallCapabilities; -use ruma_common::{ - events::{ - call::{ - answer::CallAnswerEventContent, - candidates::{CallCandidatesEventContent, Candidate}, - hangup::{CallHangupEventContent, Reason}, - invite::CallInviteEventContent, - negotiate::CallNegotiateEventContent, - reject::CallRejectEventContent, - select_answer::CallSelectAnswerEventContent, - SessionDescription, - }, - AnyMessageLikeEvent, AnySyncMessageLikeEvent, MessageLikeEvent, +use ruma_events::call::CallCapabilities; +use ruma_events::{ + call::{ + answer::CallAnswerEventContent, + candidates::{CallCandidatesEventContent, Candidate}, + hangup::{CallHangupEventContent, Reason}, + invite::CallInviteEventContent, + negotiate::CallNegotiateEventContent, + reject::CallRejectEventContent, + select_answer::CallSelectAnswerEventContent, + SessionDescription, }, - room_id, - serde::CanBeEmpty, - MilliSecondsSinceUnixEpoch, VoipVersionId, + AnyMessageLikeEvent, AnySyncMessageLikeEvent, MessageLikeEvent, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/encrypted.rs b/crates/ruma-events/tests/it/encrypted.rs similarity index 98% rename from crates/ruma-common/tests/events/encrypted.rs rename to crates/ruma-events/tests/it/encrypted.rs index 42285898..a3c6b618 100644 --- a/crates/ruma-common/tests/events/encrypted.rs +++ b/crates/ruma-events/tests/it/encrypted.rs @@ -1,13 +1,11 @@ use assert_matches2::assert_matches; -use ruma_common::{ - events::{ - relation::{CustomRelation, InReplyTo, Reference, Thread}, - room::encrypted::{ - EncryptedEventScheme, MegolmV1AesSha2ContentInit, Relation, Replacement, - RoomEncryptedEventContent, - }, +use ruma_common::{owned_device_id, owned_event_id}; +use ruma_events::{ + relation::{CustomRelation, InReplyTo, Reference, Thread}, + room::encrypted::{ + EncryptedEventScheme, MegolmV1AesSha2ContentInit, Relation, Replacement, + RoomEncryptedEventContent, }, - owned_device_id, owned_event_id, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; @@ -358,7 +356,7 @@ fn content_thread_deserialization() { #[test] fn content_annotation_serialization() { - use ruma_common::events::relation::Annotation; + use ruma_events::relation::Annotation; let content = RoomEncryptedEventContent::new( encrypted_scheme(), diff --git a/crates/ruma-common/tests/events/enums.rs b/crates/ruma-events/tests/it/enums.rs similarity index 91% rename from crates/ruma-common/tests/events/enums.rs rename to crates/ruma-events/tests/it/enums.rs index 29b24b2c..56ef2e92 100644 --- a/crates/ruma-common/tests/events/enums.rs +++ b/crates/ruma-events/tests/it/enums.rs @@ -1,21 +1,18 @@ use assert_matches2::assert_matches; use js_int::int; -use ruma_common::{ - events::{ - room::{ - aliases::RoomAliasesEventContent, - message::{MessageType, RoomMessageEventContent}, - power_levels::RoomPowerLevelsEventContent, - }, - AnyEphemeralRoomEvent, AnyMessageLikeEvent, AnyStateEvent, AnySyncMessageLikeEvent, - AnySyncStateEvent, AnySyncTimelineEvent, AnyTimelineEvent, EphemeralRoomEventType, - GlobalAccountDataEventType, MessageLikeEvent, MessageLikeEventType, - OriginalMessageLikeEvent, OriginalStateEvent, OriginalSyncMessageLikeEvent, - OriginalSyncStateEvent, RoomAccountDataEventType, StateEvent, StateEventType, - SyncMessageLikeEvent, SyncStateEvent, ToDeviceEventType, +use ruma_common::{room_alias_id, serde::test::serde_json_eq}; +use ruma_events::{ + room::{ + aliases::RoomAliasesEventContent, + message::{MessageType, RoomMessageEventContent}, + power_levels::RoomPowerLevelsEventContent, }, - room_alias_id, - serde::test::serde_json_eq, + AnyEphemeralRoomEvent, AnyMessageLikeEvent, AnyStateEvent, AnySyncMessageLikeEvent, + AnySyncStateEvent, AnySyncTimelineEvent, AnyTimelineEvent, EphemeralRoomEventType, + GlobalAccountDataEventType, MessageLikeEvent, MessageLikeEventType, OriginalMessageLikeEvent, + OriginalStateEvent, OriginalSyncMessageLikeEvent, OriginalSyncStateEvent, + RoomAccountDataEventType, StateEvent, StateEventType, SyncMessageLikeEvent, SyncStateEvent, + ToDeviceEventType, }; use serde_json::{from_value as from_json_value, json, Value as JsonValue}; diff --git a/crates/ruma-common/tests/events/ephemeral_event.rs b/crates/ruma-events/tests/it/ephemeral_event.rs similarity index 91% rename from crates/ruma-common/tests/events/ephemeral_event.rs rename to crates/ruma-events/tests/it/ephemeral_event.rs index 5cfaee52..db867d00 100644 --- a/crates/ruma-common/tests/events/ephemeral_event.rs +++ b/crates/ruma-events/tests/it/ephemeral_event.rs @@ -1,14 +1,11 @@ use assert_matches2::assert_matches; use js_int::uint; use maplit::btreemap; -use ruma_common::{ - event_id, - events::{ - receipt::{Receipt, ReceiptEventContent, ReceiptType}, - typing::TypingEventContent, - AnyEphemeralRoomEvent, - }, - owned_event_id, owned_user_id, user_id, MilliSecondsSinceUnixEpoch, +use ruma_common::{event_id, owned_event_id, owned_user_id, user_id, MilliSecondsSinceUnixEpoch}; +use ruma_events::{ + receipt::{Receipt, ReceiptEventContent, ReceiptType}, + typing::TypingEventContent, + AnyEphemeralRoomEvent, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/event.rs b/crates/ruma-events/tests/it/event.rs similarity index 53% rename from crates/ruma-common/tests/events/event.rs rename to crates/ruma-events/tests/it/event.rs index d417dfa3..26d4e08e 100644 --- a/crates/ruma-common/tests/events/event.rs +++ b/crates/ruma-events/tests/it/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/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"); + t.pass("tests/it/ui/04-event-sanity-check.rs"); + t.compile_fail("tests/it/ui/05-named-fields.rs"); + t.compile_fail("tests/it/ui/06-no-content-field.rs"); } diff --git a/crates/ruma-events/tests/it/event_content.rs b/crates/ruma-events/tests/it/event_content.rs new file mode 100644 index 00000000..85a79e70 --- /dev/null +++ b/crates/ruma-events/tests/it/event_content.rs @@ -0,0 +1,11 @@ +#[test] +fn ui() { + let t = trybuild::TestCases::new(); + t.pass("tests/it/ui/01-content-sanity-check.rs"); + t.compile_fail("tests/it/ui/02-no-event-type.rs"); + t.compile_fail("tests/it/ui/03-invalid-event-type.rs"); + t.pass("tests/it/ui/10-content-wildcard.rs"); + t.pass("tests/it/ui/11-content-without-relation-sanity-check.rs"); + t.compile_fail("tests/it/ui/12-no-relates_to.rs"); + t.pass("tests/it/ui/13-private-event-content-type.rs"); +} diff --git a/crates/ruma-common/tests/events/event_enums.rs b/crates/ruma-events/tests/it/event_enums.rs similarity index 80% rename from crates/ruma-common/tests/events/event_enums.rs rename to crates/ruma-events/tests/it/event_enums.rs index 493e4500..897ebbe5 100644 --- a/crates/ruma-common/tests/events/event_enums.rs +++ b/crates/ruma-events/tests/it/event_enums.rs @@ -1,18 +1,15 @@ use assert_matches2::assert_matches; use js_int::uint; -use ruma_common::{ - events::{AnyMessageLikeEvent, MessageLikeEvent}, - serde::CanBeEmpty, - MilliSecondsSinceUnixEpoch, VoipVersionId, -}; +use ruma_common::{serde::CanBeEmpty, MilliSecondsSinceUnixEpoch, VoipVersionId}; +use ruma_events::{AnyMessageLikeEvent, MessageLikeEvent}; use serde_json::{from_value as from_json_value, json}; #[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"); - t.compile_fail("tests/events/ui/09-enum-invalid-kind.rs"); + t.pass("tests/it/ui/07-enum-sanity-check.rs"); + t.compile_fail("tests/it/ui/08-enum-invalid-path.rs"); + t.compile_fail("tests/it/ui/09-enum-invalid-kind.rs"); } #[test] diff --git a/crates/ruma-common/tests/events/file.rs b/crates/ruma-events/tests/it/file.rs similarity index 96% rename from crates/ruma-common/tests/events/file.rs rename to crates/ruma-events/tests/it/file.rs index 667016be..6208b957 100644 --- a/crates/ruma-common/tests/events/file.rs +++ b/crates/ruma-events/tests/it/file.rs @@ -3,17 +3,17 @@ use assert_matches2::assert_matches; use js_int::uint; use ruma_common::{ - events::{ - file::{EncryptedContentInit, FileEventContent}, - message::TextContentBlock, - relation::InReplyTo, - room::{message::Relation, JsonWebKeyInit}, - AnyMessageLikeEvent, MessageLikeEvent, - }, mxc_uri, owned_event_id, serde::{Base64, CanBeEmpty}, MilliSecondsSinceUnixEpoch, }; +use ruma_events::{ + file::{EncryptedContentInit, FileEventContent}, + message::TextContentBlock, + relation::InReplyTo, + room::{message::Relation, JsonWebKeyInit}, + AnyMessageLikeEvent, MessageLikeEvent, +}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; #[test] diff --git a/crates/ruma-common/tests/events/image.rs b/crates/ruma-events/tests/it/image.rs similarity index 96% rename from crates/ruma-common/tests/events/image.rs rename to crates/ruma-events/tests/it/image.rs index 71ba5b1a..c5bf4d58 100644 --- a/crates/ruma-common/tests/events/image.rs +++ b/crates/ruma-events/tests/it/image.rs @@ -3,21 +3,21 @@ use assert_matches2::assert_matches; use js_int::uint; use ruma_common::{ - events::{ - file::{CaptionContentBlock, EncryptedContentInit, FileContentBlock}, - image::{ - ImageDetailsContentBlock, ImageEventContent, Thumbnail, ThumbnailFileContentBlock, - ThumbnailImageDetailsContentBlock, - }, - message::TextContentBlock, - relation::InReplyTo, - room::{message::Relation, JsonWebKeyInit}, - AnyMessageLikeEvent, MessageLikeEvent, - }, mxc_uri, owned_event_id, serde::{Base64, CanBeEmpty}, MilliSecondsSinceUnixEpoch, }; +use ruma_events::{ + file::{CaptionContentBlock, EncryptedContentInit, FileContentBlock}, + image::{ + ImageDetailsContentBlock, ImageEventContent, Thumbnail, ThumbnailFileContentBlock, + ThumbnailImageDetailsContentBlock, + }, + message::TextContentBlock, + relation::InReplyTo, + room::{message::Relation, JsonWebKeyInit}, + AnyMessageLikeEvent, MessageLikeEvent, +}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; #[test] diff --git a/crates/ruma-common/tests/events/initial_state.rs b/crates/ruma-events/tests/it/initial_state.rs similarity index 88% rename from crates/ruma-common/tests/events/initial_state.rs rename to crates/ruma-events/tests/it/initial_state.rs index e09d4b37..28b30f62 100644 --- a/crates/ruma-common/tests/events/initial_state.rs +++ b/crates/ruma-events/tests/it/initial_state.rs @@ -1,5 +1,5 @@ use assert_matches2::assert_matches; -use ruma_common::events::AnyInitialStateEvent; +use ruma_events::AnyInitialStateEvent; use serde_json::json; #[test] diff --git a/crates/ruma-common/tests/events/location.rs b/crates/ruma-events/tests/it/location.rs similarity index 94% rename from crates/ruma-common/tests/events/location.rs rename to crates/ruma-events/tests/it/location.rs index 805cf251..2cb9b11e 100644 --- a/crates/ruma-common/tests/events/location.rs +++ b/crates/ruma-events/tests/it/location.rs @@ -4,19 +4,14 @@ use assert_matches2::assert_matches; use assign::assign; use js_int::uint; use ruma_common::{ - event_id, - events::{ - location::{AssetType, LocationContent, LocationEventContent, ZoomLevel, ZoomLevelError}, - message::TextContentBlock, - relation::InReplyTo, - room::message::{ - LocationMessageEventContent, MessageType, Relation, RoomMessageEventContent, - }, - AnyMessageLikeEvent, MessageLikeEvent, - }, - owned_event_id, room_id, - serde::CanBeEmpty, - user_id, MilliSecondsSinceUnixEpoch, + event_id, owned_event_id, room_id, serde::CanBeEmpty, user_id, MilliSecondsSinceUnixEpoch, +}; +use ruma_events::{ + location::{AssetType, LocationContent, LocationEventContent, ZoomLevel, ZoomLevelError}, + message::TextContentBlock, + relation::InReplyTo, + room::message::{LocationMessageEventContent, MessageType, Relation, RoomMessageEventContent}, + AnyMessageLikeEvent, MessageLikeEvent, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/mod.rs b/crates/ruma-events/tests/it/main.rs similarity index 92% rename from crates/ruma-common/tests/events/mod.rs rename to crates/ruma-events/tests/it/main.rs index fd2880f1..13263a0a 100644 --- a/crates/ruma-common/tests/events/mod.rs +++ b/crates/ruma-events/tests/it/main.rs @@ -1,5 +1,3 @@ -#![cfg(feature = "events")] - mod audio; mod call; mod encrypted; diff --git a/crates/ruma-common/tests/events/message.rs b/crates/ruma-events/tests/it/message.rs similarity index 97% rename from crates/ruma-common/tests/events/message.rs rename to crates/ruma-events/tests/it/message.rs index 623ee33f..c6161ad2 100644 --- a/crates/ruma-common/tests/events/message.rs +++ b/crates/ruma-events/tests/it/message.rs @@ -3,18 +3,14 @@ use assert_matches2::assert_matches; use assign::assign; use js_int::uint; +use ruma_common::{owned_event_id, serde::CanBeEmpty, MilliSecondsSinceUnixEpoch}; #[cfg(feature = "unstable-msc3954")] -use ruma_common::events::emote::EmoteEventContent; -use ruma_common::{ - events::{ - message::{MessageEventContent, TextContentBlock, TextRepresentation}, - relation::InReplyTo, - room::message::Relation, - AnyMessageLikeEvent, MessageLikeEvent, - }, - owned_event_id, - serde::CanBeEmpty, - MilliSecondsSinceUnixEpoch, +use ruma_events::emote::EmoteEventContent; +use ruma_events::{ + message::{MessageEventContent, TextContentBlock, TextRepresentation}, + relation::InReplyTo, + room::message::Relation, + AnyMessageLikeEvent, MessageLikeEvent, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/pdu.rs b/crates/ruma-events/tests/it/pdu.rs similarity index 97% rename from crates/ruma-common/tests/events/pdu.rs rename to crates/ruma-events/tests/it/pdu.rs index df1ba438..9c078045 100644 --- a/crates/ruma-common/tests/events/pdu.rs +++ b/crates/ruma-events/tests/it/pdu.rs @@ -4,13 +4,12 @@ use std::collections::BTreeMap; use js_int::uint; use ruma_common::{ - event_id, - events::{ - pdu::{EventHash, Pdu, RoomV1Pdu, RoomV3Pdu}, - TimelineEventType, - }, - owned_event_id, owned_room_id, owned_server_signing_key_id, owned_user_id, server_name, - MilliSecondsSinceUnixEpoch, + event_id, owned_event_id, owned_room_id, owned_server_signing_key_id, owned_user_id, + server_name, MilliSecondsSinceUnixEpoch, +}; +use ruma_events::{ + pdu::{EventHash, Pdu, RoomV1Pdu, RoomV3Pdu}, + TimelineEventType, }; use serde_json::{ from_value as from_json_value, json, to_value as to_json_value, diff --git a/crates/ruma-common/tests/events/poll.rs b/crates/ruma-events/tests/it/poll.rs similarity index 97% rename from crates/ruma-common/tests/events/poll.rs rename to crates/ruma-events/tests/it/poll.rs index 92eb3161..4f298c76 100644 --- a/crates/ruma-common/tests/events/poll.rs +++ b/crates/ruma-events/tests/it/poll.rs @@ -4,31 +4,29 @@ use std::{collections::BTreeMap, ops::Range}; use assert_matches2::assert_matches; use js_int::{uint, UInt}; -use ruma_common::{ - events::{ - message::TextContentBlock, - poll::{ - compile_poll_results, compile_unstable_poll_results, - end::PollEndEventContent, - response::{OriginalSyncPollResponseEvent, PollResponseEventContent}, - start::{ - OriginalSyncPollStartEvent, PollAnswer, PollAnswers, PollAnswersError, - PollContentBlock, PollKind, PollStartEventContent, - }, - unstable_end::UnstablePollEndEventContent, - unstable_response::{ - OriginalSyncUnstablePollResponseEvent, UnstablePollResponseEventContent, - }, - unstable_start::{ - OriginalSyncUnstablePollStartEvent, UnstablePollAnswer, - UnstablePollStartContentBlock, UnstablePollStartEventContent, - }, +use ruma_common::{owned_event_id, MilliSecondsSinceUnixEpoch}; +use ruma_events::{ + message::TextContentBlock, + poll::{ + compile_poll_results, compile_unstable_poll_results, + end::PollEndEventContent, + response::{OriginalSyncPollResponseEvent, PollResponseEventContent}, + start::{ + OriginalSyncPollStartEvent, PollAnswer, PollAnswers, PollAnswersError, + PollContentBlock, PollKind, PollStartEventContent, + }, + unstable_end::UnstablePollEndEventContent, + unstable_response::{ + OriginalSyncUnstablePollResponseEvent, UnstablePollResponseEventContent, + }, + unstable_start::{ + OriginalSyncUnstablePollStartEvent, UnstablePollAnswer, UnstablePollStartContentBlock, + UnstablePollStartEventContent, }, - relation::Reference, - room::message::Relation, - AnyMessageLikeEvent, MessageLikeEvent, }, - owned_event_id, MilliSecondsSinceUnixEpoch, + relation::Reference, + room::message::Relation, + AnyMessageLikeEvent, MessageLikeEvent, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/redacted.rs b/crates/ruma-events/tests/it/redacted.rs similarity index 92% rename from crates/ruma-common/tests/events/redacted.rs rename to crates/ruma-events/tests/it/redacted.rs index 92e76fb0..57c4baa9 100644 --- a/crates/ruma-common/tests/events/redacted.rs +++ b/crates/ruma-events/tests/it/redacted.rs @@ -1,17 +1,15 @@ use assert_matches2::assert_matches; -use ruma_common::{ - events::{ - room::{ - aliases::RedactedRoomAliasesEventContent, - create::{RedactedRoomCreateEventContent, RoomCreateEventContent}, - message::{RedactedRoomMessageEventContent, RoomMessageEventContent}, - redaction::RoomRedactionEventContent, - }, - AnyMessageLikeEvent, AnySyncMessageLikeEvent, AnySyncStateEvent, AnySyncTimelineEvent, - AnyTimelineEvent, EventContentFromType, MessageLikeEvent, RedactContent, - SyncMessageLikeEvent, SyncStateEvent, +use ruma_common::RoomVersionId; +use ruma_events::{ + room::{ + aliases::RedactedRoomAliasesEventContent, + create::{RedactedRoomCreateEventContent, RoomCreateEventContent}, + message::{RedactedRoomMessageEventContent, RoomMessageEventContent}, + redaction::RoomRedactionEventContent, }, - RoomVersionId, + AnyMessageLikeEvent, AnySyncMessageLikeEvent, AnySyncStateEvent, AnySyncTimelineEvent, + AnyTimelineEvent, EventContentFromType, MessageLikeEvent, RedactContent, SyncMessageLikeEvent, + SyncStateEvent, }; use serde_json::{ from_value as from_json_value, json, to_value as to_json_value, diff --git a/crates/ruma-common/tests/events/redaction.rs b/crates/ruma-events/tests/it/redaction.rs similarity index 91% rename from crates/ruma-common/tests/events/redaction.rs rename to crates/ruma-events/tests/it/redaction.rs index eae16e6e..4fc21581 100644 --- a/crates/ruma-common/tests/events/redaction.rs +++ b/crates/ruma-events/tests/it/redaction.rs @@ -1,13 +1,9 @@ use assert_matches2::assert_matches; use js_int::uint; -use ruma_common::{ - events::{ - room::redaction::{RoomRedactionEvent, RoomRedactionEventContent}, - AnyMessageLikeEvent, - }, - owned_event_id, - serde::CanBeEmpty, - MilliSecondsSinceUnixEpoch, RoomVersionId, +use ruma_common::{owned_event_id, serde::CanBeEmpty, MilliSecondsSinceUnixEpoch, RoomVersionId}; +use ruma_events::{ + room::redaction::{RoomRedactionEvent, RoomRedactionEventContent}, + AnyMessageLikeEvent, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/relations.rs b/crates/ruma-events/tests/it/relations.rs similarity index 97% rename from crates/ruma-common/tests/events/relations.rs rename to crates/ruma-events/tests/it/relations.rs index d13a98a5..ab2c25a9 100644 --- a/crates/ruma-common/tests/events/relations.rs +++ b/crates/ruma-events/tests/it/relations.rs @@ -1,11 +1,9 @@ use assert_matches2::assert_matches; use assign::assign; -use ruma_common::{ - events::{ - relation::{CustomRelation, InReplyTo, Replacement, Thread}, - room::message::{MessageType, Relation, RoomMessageEventContent}, - }, - owned_event_id, +use ruma_common::owned_event_id; +use ruma_events::{ + relation::{CustomRelation, InReplyTo, Replacement, Thread}, + room::message::{MessageType, Relation, RoomMessageEventContent}, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/room_message.rs b/crates/ruma-events/tests/it/room_message.rs similarity index 96% rename from crates/ruma-common/tests/events/room_message.rs rename to crates/ruma-events/tests/it/room_message.rs index c062ea62..eda6b6bc 100644 --- a/crates/ruma-common/tests/events/room_message.rs +++ b/crates/ruma-events/tests/it/room_message.rs @@ -3,23 +3,22 @@ use std::borrow::Cow; use assert_matches2::assert_matches; use js_int::uint; use ruma_common::{ - events::{ - key::verification::VerificationMethod, - room::{ - message::{ - AddMentions, AudioMessageEventContent, EmoteMessageEventContent, - FileMessageEventContent, ForwardThread, ImageMessageEventContent, - KeyVerificationRequestEventContent, MessageType, OriginalRoomMessageEvent, - OriginalSyncRoomMessageEvent, Relation, RoomMessageEventContent, - TextMessageEventContent, VideoMessageEventContent, - }, - EncryptedFileInit, JsonWebKeyInit, MediaSource, + mxc_uri, owned_event_id, owned_room_id, owned_user_id, serde::Base64, user_id, + MilliSecondsSinceUnixEpoch, OwnedDeviceId, +}; +use ruma_events::{ + key::verification::VerificationMethod, + room::{ + message::{ + AddMentions, AudioMessageEventContent, EmoteMessageEventContent, + FileMessageEventContent, ForwardThread, ImageMessageEventContent, + KeyVerificationRequestEventContent, MessageType, OriginalRoomMessageEvent, + OriginalSyncRoomMessageEvent, Relation, RoomMessageEventContent, + TextMessageEventContent, VideoMessageEventContent, }, - Mentions, MessageLikeUnsigned, + EncryptedFileInit, JsonWebKeyInit, MediaSource, }, - mxc_uri, owned_event_id, owned_room_id, owned_user_id, - serde::Base64, - user_id, MilliSecondsSinceUnixEpoch, OwnedDeviceId, + Mentions, MessageLikeUnsigned, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; @@ -106,7 +105,7 @@ fn text_msgtype_plain_text_serialization() { #[test] #[cfg(feature = "markdown")] fn text_msgtype_markdown_serialization() { - use ruma_common::events::room::message::TextMessageEventContent; + use ruma_events::room::message::TextMessageEventContent; let text = "Testing **bold** and _italic_!"; let formatted_message = @@ -189,7 +188,7 @@ line 2 #[test] #[cfg(feature = "markdown")] fn markdown_detection() { - use ruma_common::events::room::message::FormattedBody; + use ruma_events::room::message::FormattedBody; // No markdown let formatted_body = FormattedBody::markdown("A simple message."); @@ -211,7 +210,7 @@ fn markdown_detection() { #[test] #[cfg(feature = "markdown")] fn markdown_options() { - use ruma_common::events::room::message::FormattedBody; + use ruma_events::room::message::FormattedBody; // Tables let formatted_body = FormattedBody::markdown( @@ -351,7 +350,7 @@ fn escape_tags_in_plain_reply_body() { #[test] #[cfg(feature = "html")] fn reply_sanitize() { - use ruma_common::events::room::message::ForwardThread; + use ruma_events::room::message::ForwardThread; let first_message = OriginalRoomMessageEvent { content: RoomMessageEventContent::text_html( @@ -763,7 +762,7 @@ fn image_msgtype_deserialization() { #[cfg(not(feature = "unstable-msc3488"))] #[test] fn location_msgtype_serialization() { - use ruma_common::events::room::message::LocationMessageEventContent; + use ruma_events::room::message::LocationMessageEventContent; let message_event_content = RoomMessageEventContent::new(MessageType::Location(LocationMessageEventContent::new( diff --git a/crates/ruma-common/tests/events/state_event.rs b/crates/ruma-events/tests/it/state_event.rs similarity index 95% rename from crates/ruma-common/tests/events/state_event.rs rename to crates/ruma-events/tests/it/state_event.rs index df8e249d..92d79e5c 100644 --- a/crates/ruma-common/tests/events/state_event.rs +++ b/crates/ruma-events/tests/it/state_event.rs @@ -1,13 +1,9 @@ use assert_matches2::assert_matches; use js_int::uint; -use ruma_common::{ - events::{ - room::aliases::RoomAliasesEventContent, AnyStateEvent, AnySyncStateEvent, AnyTimelineEvent, - StateEvent, SyncStateEvent, - }, - mxc_uri, room_alias_id, - serde::CanBeEmpty, - MilliSecondsSinceUnixEpoch, +use ruma_common::{mxc_uri, room_alias_id, serde::CanBeEmpty, MilliSecondsSinceUnixEpoch}; +use ruma_events::{ + room::aliases::RoomAliasesEventContent, AnyStateEvent, AnySyncStateEvent, AnyTimelineEvent, + StateEvent, SyncStateEvent, }; use serde_json::{from_value as from_json_value, json, Value as JsonValue}; diff --git a/crates/ruma-common/tests/events/sticker.rs b/crates/ruma-events/tests/it/sticker.rs similarity index 94% rename from crates/ruma-common/tests/events/sticker.rs rename to crates/ruma-events/tests/it/sticker.rs index cfd245cd..b38836a2 100644 --- a/crates/ruma-common/tests/events/sticker.rs +++ b/crates/ruma-events/tests/it/sticker.rs @@ -1,15 +1,11 @@ use assert_matches2::assert_matches; use assign::assign; use js_int::{uint, UInt}; -use ruma_common::{ - events::{ - room::{ImageInfo, MediaSource, ThumbnailInfo}, - sticker::StickerEventContent, - AnyMessageLikeEvent, MessageLikeEvent, - }, - mxc_uri, - serde::CanBeEmpty, - MilliSecondsSinceUnixEpoch, +use ruma_common::{mxc_uri, serde::CanBeEmpty, MilliSecondsSinceUnixEpoch}; +use ruma_events::{ + room::{ImageInfo, MediaSource, ThumbnailInfo}, + sticker::StickerEventContent, + AnyMessageLikeEvent, MessageLikeEvent, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/stripped.rs b/crates/ruma-events/tests/it/stripped.rs similarity index 94% rename from crates/ruma-common/tests/events/stripped.rs rename to crates/ruma-events/tests/it/stripped.rs index 5d752f28..3c1178a1 100644 --- a/crates/ruma-common/tests/events/stripped.rs +++ b/crates/ruma-events/tests/it/stripped.rs @@ -1,11 +1,9 @@ use assert_matches2::assert_matches; use js_int::uint; -use ruma_common::{ - events::{ - room::{join_rules::JoinRule, topic::RoomTopicEventContent}, - AnyStrippedStateEvent, - }, - mxc_uri, +use ruma_common::mxc_uri; +use ruma_events::{ + room::{join_rules::JoinRule, topic::RoomTopicEventContent}, + AnyStrippedStateEvent, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/to_device.rs b/crates/ruma-events/tests/it/to_device.rs similarity index 82% rename from crates/ruma-common/tests/events/to_device.rs rename to crates/ruma-events/tests/it/to_device.rs index 852f23cb..4c224f95 100644 --- a/crates/ruma-common/tests/events/to_device.rs +++ b/crates/ruma-events/tests/it/to_device.rs @@ -1,6 +1,5 @@ -use ruma_common::{ - events::room_key::ToDeviceRoomKeyEventContent, owned_room_id, EventEncryptionAlgorithm, -}; +use ruma_common::{owned_room_id, EventEncryptionAlgorithm}; +use ruma_events::room_key::ToDeviceRoomKeyEventContent; use serde_json::{json, to_value as to_json_value}; #[test] diff --git a/crates/ruma-common/tests/events/ui/01-content-sanity-check.rs b/crates/ruma-events/tests/it/ui/01-content-sanity-check.rs similarity index 100% rename from crates/ruma-common/tests/events/ui/01-content-sanity-check.rs rename to crates/ruma-events/tests/it/ui/01-content-sanity-check.rs diff --git a/crates/ruma-common/tests/events/ui/02-no-event-type.rs b/crates/ruma-events/tests/it/ui/02-no-event-type.rs similarity index 100% rename from crates/ruma-common/tests/events/ui/02-no-event-type.rs rename to crates/ruma-events/tests/it/ui/02-no-event-type.rs diff --git a/crates/ruma-common/tests/events/ui/02-no-event-type.stderr b/crates/ruma-events/tests/it/ui/02-no-event-type.stderr similarity index 100% rename from crates/ruma-common/tests/events/ui/02-no-event-type.stderr rename to crates/ruma-events/tests/it/ui/02-no-event-type.stderr diff --git a/crates/ruma-common/tests/events/ui/03-invalid-event-type.rs b/crates/ruma-events/tests/it/ui/03-invalid-event-type.rs similarity index 100% rename from crates/ruma-common/tests/events/ui/03-invalid-event-type.rs rename to crates/ruma-events/tests/it/ui/03-invalid-event-type.rs diff --git a/crates/ruma-common/tests/events/ui/03-invalid-event-type.stderr b/crates/ruma-events/tests/it/ui/03-invalid-event-type.stderr similarity index 84% rename from crates/ruma-common/tests/events/ui/03-invalid-event-type.stderr rename to crates/ruma-events/tests/it/ui/03-invalid-event-type.stderr index 18fac49b..b601a2c8 100644 --- a/crates/ruma-common/tests/events/ui/03-invalid-event-type.stderr +++ b/crates/ruma-events/tests/it/ui/03-invalid-event-type.stderr @@ -1,5 +1,5 @@ error: no event type attribute found, add `#[ruma_event(type = "any.room.event", kind = Kind)]` below the event content derive - --> tests/events/ui/03-invalid-event-type.rs:4:48 + --> tests/it/ui/03-invalid-event-type.rs:4:48 | 4 | #[derive(Clone, Debug, Deserialize, Serialize, EventContent)] | ^^^^^^^^^^^^ @@ -7,13 +7,13 @@ error: no event type attribute found, add `#[ruma_event(type = "any.room.event", = note: this error originates in the derive macro `EventContent` (in Nightly builds, run with -Z macro-backtrace for more info) error: expected one of: `type`, `kind`, `custom_redacted`, `custom_possibly_redacted`, `state_key_type`, `unsigned_type`, `alias`, `without_relation` - --> tests/events/ui/03-invalid-event-type.rs:11:14 + --> tests/it/ui/03-invalid-event-type.rs:11:14 | 11 | #[ruma_event(event = "m.macro.test", kind = State)] | ^^^^^ error: cannot find attribute `not_ruma_event` in this scope - --> tests/events/ui/03-invalid-event-type.rs:5:3 + --> tests/it/ui/03-invalid-event-type.rs:5:3 | 5 | #[not_ruma_event(type = "m.macro.test", kind = State)] | ^^^^^^^^^^^^^^ help: a derive helper attribute with a similar name exists: `ruma_event` diff --git a/crates/ruma-common/tests/events/ui/04-event-sanity-check.rs b/crates/ruma-events/tests/it/ui/04-event-sanity-check.rs similarity index 74% rename from crates/ruma-common/tests/events/ui/04-event-sanity-check.rs rename to crates/ruma-events/tests/it/ui/04-event-sanity-check.rs index 193e53e0..8bc0e6a7 100644 --- a/crates/ruma-common/tests/events/ui/04-event-sanity-check.rs +++ b/crates/ruma-events/tests/it/ui/04-event-sanity-check.rs @@ -1,7 +1,5 @@ -use ruma_common::{ - events::StaticStateEventContent, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, - OwnedUserId, -}; +use ruma_common::{MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedUserId}; +use ruma_events::StaticStateEventContent; use ruma_macros::Event; /// State event. diff --git a/crates/ruma-common/tests/events/ui/05-named-fields.rs b/crates/ruma-events/tests/it/ui/05-named-fields.rs similarity index 76% rename from crates/ruma-common/tests/events/ui/05-named-fields.rs rename to crates/ruma-events/tests/it/ui/05-named-fields.rs index 6227e906..96769fe0 100644 --- a/crates/ruma-common/tests/events/ui/05-named-fields.rs +++ b/crates/ruma-events/tests/it/ui/05-named-fields.rs @@ -1,4 +1,4 @@ -use ruma_common::events::StateEventContent; +use ruma_events::StateEventContent; use ruma_macros::Event; /// State event. diff --git a/crates/ruma-common/tests/events/ui/05-named-fields.stderr b/crates/ruma-events/tests/it/ui/05-named-fields.stderr similarity index 78% rename from crates/ruma-common/tests/events/ui/05-named-fields.stderr rename to crates/ruma-events/tests/it/ui/05-named-fields.stderr index 158d10e3..838fedcb 100644 --- a/crates/ruma-common/tests/events/ui/05-named-fields.stderr +++ b/crates/ruma-events/tests/it/ui/05-named-fields.stderr @@ -1,5 +1,5 @@ error: the `Event` derive only supports structs with named fields - --> tests/events/ui/05-named-fields.rs:6:12 + --> tests/it/ui/05-named-fields.rs:6:12 | 6 | pub struct OriginalStateEvent(C); | ^^^^^^^^^^^^^^^^^^ diff --git a/crates/ruma-common/tests/events/ui/06-no-content-field.rs b/crates/ruma-events/tests/it/ui/06-no-content-field.rs similarity index 79% rename from crates/ruma-common/tests/events/ui/06-no-content-field.rs rename to crates/ruma-events/tests/it/ui/06-no-content-field.rs index 622e2667..aa8e4834 100644 --- a/crates/ruma-common/tests/events/ui/06-no-content-field.rs +++ b/crates/ruma-events/tests/it/ui/06-no-content-field.rs @@ -1,4 +1,4 @@ -use ruma_common::events::StateEventContent; +use ruma_events::StateEventContent; use ruma_macros::Event; /// State event. diff --git a/crates/ruma-common/tests/events/ui/06-no-content-field.stderr b/crates/ruma-events/tests/it/ui/06-no-content-field.stderr similarity index 83% rename from crates/ruma-common/tests/events/ui/06-no-content-field.stderr rename to crates/ruma-events/tests/it/ui/06-no-content-field.stderr index fd067d02..8c3a2d79 100644 --- a/crates/ruma-common/tests/events/ui/06-no-content-field.stderr +++ b/crates/ruma-events/tests/it/ui/06-no-content-field.stderr @@ -1,5 +1,5 @@ error: struct must contain a `content` field - --> tests/events/ui/06-no-content-field.rs:5:24 + --> tests/it/ui/06-no-content-field.rs:5:24 | 5 | #[derive(Clone, Debug, Event)] | ^^^^^ diff --git a/crates/ruma-common/tests/events/ui/07-enum-sanity-check.rs b/crates/ruma-events/tests/it/ui/07-enum-sanity-check.rs similarity index 80% rename from crates/ruma-common/tests/events/ui/07-enum-sanity-check.rs rename to crates/ruma-events/tests/it/ui/07-enum-sanity-check.rs index 31e63c9a..c38b309f 100644 --- a/crates/ruma-common/tests/events/ui/07-enum-sanity-check.rs +++ b/crates/ruma-events/tests/it/ui/07-enum-sanity-check.rs @@ -1,19 +1,18 @@ -use ruma_common::events; use ruma_macros::event_enum; event_enum! { /// Any global account data event. enum GlobalAccountData { #[ruma_enum(alias = "io.ruma.direct")] - "m.direct" => events::direct, + "m.direct" => ruma_events::direct, #[ruma_enum(alias = "m.identity_server")] - "io.ruma.identity_server" => events::identity_server, + "io.ruma.identity_server" => ruma_events::identity_server, #[cfg(test)] - "m.ignored_user_list" => events::ignored_user_list, + "m.ignored_user_list" => ruma_events::ignored_user_list, // Doesn't actually have a wildcard, but this should work as a wildcard test - "m.push_rules.*" => events::push_rules, + "m.push_rules.*" => ruma_events::push_rules, #[cfg(any())] - "m.ruma_test" => events::ruma_test, + "m.ruma_test" => ruma_events::ruma_test, } } diff --git a/crates/ruma-common/tests/events/ui/08-enum-invalid-path.rs b/crates/ruma-events/tests/it/ui/08-enum-invalid-path.rs similarity index 72% rename from crates/ruma-common/tests/events/ui/08-enum-invalid-path.rs rename to crates/ruma-events/tests/it/ui/08-enum-invalid-path.rs index 209cbcc1..51e7cc33 100644 --- a/crates/ruma-common/tests/events/ui/08-enum-invalid-path.rs +++ b/crates/ruma-events/tests/it/ui/08-enum-invalid-path.rs @@ -1,9 +1,8 @@ -use ruma_common::events; use ruma_macros::event_enum; event_enum! { enum State { - "m.not.a.path" => events::not::a::path, + "m.not.a.path" => ruma_events::not::a::path, } } diff --git a/crates/ruma-events/tests/it/ui/08-enum-invalid-path.stderr b/crates/ruma-events/tests/it/ui/08-enum-invalid-path.stderr new file mode 100644 index 00000000..2c243cdb --- /dev/null +++ b/crates/ruma-events/tests/it/ui/08-enum-invalid-path.stderr @@ -0,0 +1,5 @@ +error[E0433]: failed to resolve: could not find `not` in `ruma_events` + --> tests/it/ui/08-enum-invalid-path.rs:5:40 + | +5 | "m.not.a.path" => ruma_events::not::a::path, + | ^^^ could not find `not` in `ruma_events` diff --git a/crates/ruma-common/tests/events/ui/09-enum-invalid-kind.rs b/crates/ruma-events/tests/it/ui/09-enum-invalid-kind.rs similarity index 100% rename from crates/ruma-common/tests/events/ui/09-enum-invalid-kind.rs rename to crates/ruma-events/tests/it/ui/09-enum-invalid-kind.rs diff --git a/crates/ruma-common/tests/events/ui/09-enum-invalid-kind.stderr b/crates/ruma-events/tests/it/ui/09-enum-invalid-kind.stderr similarity index 77% rename from crates/ruma-common/tests/events/ui/09-enum-invalid-kind.stderr rename to crates/ruma-events/tests/it/ui/09-enum-invalid-kind.stderr index ab5bb24d..1e425530 100644 --- a/crates/ruma-common/tests/events/ui/09-enum-invalid-kind.stderr +++ b/crates/ruma-events/tests/it/ui/09-enum-invalid-kind.stderr @@ -1,5 +1,5 @@ error: valid event kinds are GlobalAccountData, RoomAccountData, EphemeralRoom, MessageLike, State, ToDevice; found `NotReal` - --> tests/events/ui/09-enum-invalid-kind.rs:4:10 + --> tests/it/ui/09-enum-invalid-kind.rs:4:10 | 4 | enum NotReal { | ^^^^^^^ diff --git a/crates/ruma-common/tests/events/ui/10-content-wildcard.rs b/crates/ruma-events/tests/it/ui/10-content-wildcard.rs similarity index 90% rename from crates/ruma-common/tests/events/ui/10-content-wildcard.rs rename to crates/ruma-events/tests/it/ui/10-content-wildcard.rs index c8d9e108..dfe01b79 100644 --- a/crates/ruma-common/tests/events/ui/10-content-wildcard.rs +++ b/crates/ruma-events/tests/it/ui/10-content-wildcard.rs @@ -9,7 +9,7 @@ pub struct MacroTestContent { } fn main() { - use ruma_common::events::EventContent; + use ruma_events::EventContent; assert_eq!( MacroTestContent { frag: "foo".to_owned() }.event_type().to_string(), diff --git a/crates/ruma-common/tests/events/ui/11-content-without-relation-sanity-check.rs b/crates/ruma-events/tests/it/ui/11-content-without-relation-sanity-check.rs similarity index 100% rename from crates/ruma-common/tests/events/ui/11-content-without-relation-sanity-check.rs rename to crates/ruma-events/tests/it/ui/11-content-without-relation-sanity-check.rs diff --git a/crates/ruma-common/tests/events/ui/12-no-relates_to.rs b/crates/ruma-events/tests/it/ui/12-no-relates_to.rs similarity index 100% rename from crates/ruma-common/tests/events/ui/12-no-relates_to.rs rename to crates/ruma-events/tests/it/ui/12-no-relates_to.rs diff --git a/crates/ruma-common/tests/events/ui/12-no-relates_to.stderr b/crates/ruma-events/tests/it/ui/12-no-relates_to.stderr similarity index 88% rename from crates/ruma-common/tests/events/ui/12-no-relates_to.stderr rename to crates/ruma-events/tests/it/ui/12-no-relates_to.stderr index baeeac6c..f6be01a8 100644 --- a/crates/ruma-common/tests/events/ui/12-no-relates_to.stderr +++ b/crates/ruma-events/tests/it/ui/12-no-relates_to.stderr @@ -1,5 +1,5 @@ error: `without_relation` can only be used on events with a `relates_to` field - --> tests/events/ui/12-no-relates_to.rs:4:48 + --> tests/it/ui/12-no-relates_to.rs:4:48 | 4 | #[derive(Clone, Debug, Deserialize, Serialize, EventContent)] | ^^^^^^^^^^^^ diff --git a/crates/ruma-common/tests/events/ui/13-private-event-content-type.rs b/crates/ruma-events/tests/it/ui/13-private-event-content-type.rs similarity index 100% rename from crates/ruma-common/tests/events/ui/13-private-event-content-type.rs rename to crates/ruma-events/tests/it/ui/13-private-event-content-type.rs diff --git a/crates/ruma-common/tests/events/video.rs b/crates/ruma-events/tests/it/video.rs similarity index 96% rename from crates/ruma-common/tests/events/video.rs rename to crates/ruma-events/tests/it/video.rs index 8f56618e..5fb85733 100644 --- a/crates/ruma-common/tests/events/video.rs +++ b/crates/ruma-events/tests/it/video.rs @@ -5,19 +5,19 @@ use std::time::Duration; use assert_matches2::assert_matches; use js_int::uint; use ruma_common::{ - events::{ - file::{CaptionContentBlock, EncryptedContentInit, FileContentBlock}, - image::{Thumbnail, ThumbnailFileContentBlock, ThumbnailImageDetailsContentBlock}, - message::TextContentBlock, - relation::InReplyTo, - room::{message::Relation, JsonWebKeyInit}, - video::{VideoDetailsContentBlock, VideoEventContent}, - AnyMessageLikeEvent, MessageLikeEvent, - }, mxc_uri, owned_event_id, serde::{Base64, CanBeEmpty}, MilliSecondsSinceUnixEpoch, }; +use ruma_events::{ + file::{CaptionContentBlock, EncryptedContentInit, FileContentBlock}, + image::{Thumbnail, ThumbnailFileContentBlock, ThumbnailImageDetailsContentBlock}, + message::TextContentBlock, + relation::InReplyTo, + room::{message::Relation, JsonWebKeyInit}, + video::{VideoDetailsContentBlock, VideoEventContent}, + AnyMessageLikeEvent, MessageLikeEvent, +}; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; #[test] diff --git a/crates/ruma-common/tests/events/voice.rs b/crates/ruma-events/tests/it/voice.rs similarity index 90% rename from crates/ruma-common/tests/events/voice.rs rename to crates/ruma-events/tests/it/voice.rs index d1673be0..136ee811 100644 --- a/crates/ruma-common/tests/events/voice.rs +++ b/crates/ruma-events/tests/it/voice.rs @@ -4,18 +4,14 @@ use std::time::Duration; use assert_matches2::assert_matches; use js_int::uint; -use ruma_common::{ - events::{ - audio::Amplitude, - file::FileContentBlock, - relation::InReplyTo, - room::message::Relation, - voice::{VoiceAudioDetailsContentBlock, VoiceEventContent}, - AnyMessageLikeEvent, MessageLikeEvent, - }, - mxc_uri, owned_event_id, - serde::CanBeEmpty, - MilliSecondsSinceUnixEpoch, +use ruma_common::{mxc_uri, owned_event_id, serde::CanBeEmpty, MilliSecondsSinceUnixEpoch}; +use ruma_events::{ + audio::Amplitude, + file::FileContentBlock, + relation::InReplyTo, + room::message::Relation, + voice::{VoiceAudioDetailsContentBlock, VoiceEventContent}, + AnyMessageLikeEvent, MessageLikeEvent, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-common/tests/events/without_relation.rs b/crates/ruma-events/tests/it/without_relation.rs similarity index 90% rename from crates/ruma-common/tests/events/without_relation.rs rename to crates/ruma-events/tests/it/without_relation.rs index 92dc8b62..ddba246b 100644 --- a/crates/ruma-common/tests/events/without_relation.rs +++ b/crates/ruma-events/tests/it/without_relation.rs @@ -1,10 +1,8 @@ use assert_matches2::assert_matches; -use ruma_common::{ - events::{ - relation::InReplyTo, - room::message::{MessageType, Relation, RoomMessageEventContent}, - }, - owned_event_id, +use ruma_common::owned_event_id; +use ruma_events::{ + relation::InReplyTo, + room::message::{MessageType, Relation, RoomMessageEventContent}, }; use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; diff --git a/crates/ruma-federation-api/Cargo.toml b/crates/ruma-federation-api/Cargo.toml index 71c22ba4..cccb19aa 100644 --- a/crates/ruma-federation-api/Cargo.toml +++ b/crates/ruma-federation-api/Cargo.toml @@ -30,7 +30,8 @@ unstable-unspecified = [] [dependencies] js_int = { workspace = true, features = ["serde"] } -ruma-common = { workspace = true, features = ["api", "events"] } +ruma-common = { workspace = true, features = ["api"] } +ruma-events = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } diff --git a/crates/ruma-federation-api/src/knock/send_knock.rs b/crates/ruma-federation-api/src/knock/send_knock.rs index 9e6c22ba..0620aceb 100644 --- a/crates/ruma-federation-api/src/knock/send_knock.rs +++ b/crates/ruma-federation-api/src/knock/send_knock.rs @@ -9,11 +9,11 @@ pub mod v1 { use ruma_common::{ api::{request, response, Metadata}, - events::AnyStrippedStateEvent, metadata, serde::Raw, OwnedEventId, OwnedRoomId, }; + use ruma_events::AnyStrippedStateEvent; use serde_json::value::RawValue as RawJsonValue; const METADATA: Metadata = metadata! { 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 341a5ec6..f90bce34 100644 --- a/crates/ruma-federation-api/src/membership/create_invite/v1.rs +++ b/crates/ruma-federation-api/src/membership/create_invite/v1.rs @@ -4,11 +4,11 @@ use ruma_common::{ api::{request, response, Metadata}, - events::{room::member::RoomMemberEventContent, AnyStrippedStateEvent, StateEventType}, metadata, serde::Raw, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedServerName, OwnedUserId, }; +use ruma_events::{room::member::RoomMemberEventContent, AnyStrippedStateEvent, StateEventType}; use serde::{Deserialize, Serialize}; use serde_json::value::RawValue as RawJsonValue; 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 47c899a3..60796ea5 100644 --- a/crates/ruma-federation-api/src/membership/create_invite/v2.rs +++ b/crates/ruma-federation-api/src/membership/create_invite/v2.rs @@ -4,11 +4,11 @@ use ruma_common::{ api::{request, response, Metadata}, - events::AnyStrippedStateEvent, metadata, serde::Raw, OwnedEventId, OwnedRoomId, RoomVersionId, }; +use ruma_events::AnyStrippedStateEvent; use serde_json::value::RawValue as RawJsonValue; const METADATA: Metadata = metadata! { 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 c4ec1a69..cdf8fb9d 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 @@ -5,11 +5,11 @@ use js_int::UInt; use ruma_common::{ api::{request, response, Metadata}, - events::{room::member::RoomMemberEventContent, StateEventType}, metadata, serde::Raw, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedServerName, OwnedUserId, }; +use ruma_events::{room::member::RoomMemberEventContent, StateEventType}; use serde::{Deserialize, Serialize}; const METADATA: Metadata = metadata! { diff --git a/crates/ruma-federation-api/src/space.rs b/crates/ruma-federation-api/src/space.rs index 19dc174a..4e65953d 100644 --- a/crates/ruma-federation-api/src/space.rs +++ b/crates/ruma-federation-api/src/space.rs @@ -2,9 +2,10 @@ use js_int::UInt; use ruma_common::{ - events::space::child::HierarchySpaceChildEvent, room::RoomType, serde::Raw, - space::SpaceRoomJoinRule, OwnedMxcUri, OwnedRoomAliasId, OwnedRoomId, + room::RoomType, serde::Raw, space::SpaceRoomJoinRule, OwnedMxcUri, OwnedRoomAliasId, + OwnedRoomId, }; +use ruma_events::space::child::HierarchySpaceChildEvent; use serde::{Deserialize, Serialize}; pub mod get_hierarchy; diff --git a/crates/ruma-federation-api/src/thirdparty/exchange_invite.rs b/crates/ruma-federation-api/src/thirdparty/exchange_invite.rs index bd6274b6..950ae05d 100644 --- a/crates/ruma-federation-api/src/thirdparty/exchange_invite.rs +++ b/crates/ruma-federation-api/src/thirdparty/exchange_invite.rs @@ -13,9 +13,9 @@ pub mod v1 { use ruma_common::{ api::{request, response, Metadata}, - events::{room::member::ThirdPartyInvite, StateEventType}, metadata, OwnedRoomId, OwnedUserId, }; + use ruma_events::{room::member::ThirdPartyInvite, StateEventType}; const METADATA: Metadata = metadata! { method: PUT, diff --git a/crates/ruma-federation-api/src/transactions/edu.rs b/crates/ruma-federation-api/src/transactions/edu.rs index 7aa89e13..1d829c83 100644 --- a/crates/ruma-federation-api/src/transactions/edu.rs +++ b/crates/ruma-federation-api/src/transactions/edu.rs @@ -5,12 +5,12 @@ use std::collections::BTreeMap; use js_int::UInt; use ruma_common::{ encryption::{CrossSigningKey, DeviceKeys}, - events::{receipt::Receipt, AnyToDeviceEventContent, ToDeviceEventType}, presence::PresenceState, serde::{from_raw_json_value, Raw}, to_device::DeviceIdOrAllDevices, OwnedDeviceId, OwnedEventId, OwnedRoomId, OwnedTransactionId, OwnedUserId, }; +use ruma_events::{receipt::Receipt, AnyToDeviceEventContent, ToDeviceEventType}; use serde::{de, Deserialize, Serialize}; use serde_json::{value::RawValue as RawJsonValue, Value as JsonValue}; @@ -316,7 +316,8 @@ impl SigningKeyUpdateContent { mod tests { use assert_matches2::assert_matches; use js_int::uint; - use ruma_common::{events::ToDeviceEventType, room_id, user_id}; + use ruma_common::{room_id, user_id}; + use ruma_events::ToDeviceEventType; use serde_json::json; use super::{DeviceListUpdateContent, Edu, ReceiptContent}; diff --git a/crates/ruma-macros/src/events/event.rs b/crates/ruma-macros/src/events/event.rs index d999ebc1..dae39e52 100644 --- a/crates/ruma-macros/src/events/event.rs +++ b/crates/ruma-macros/src/events/event.rs @@ -8,11 +8,11 @@ use super::{ event_parse::{to_kind_variation, EventKind, EventKindVariation}, util::is_non_stripped_room_event, }; -use crate::{import_ruma_common, util::to_camel_case}; +use crate::{import_ruma_events, util::to_camel_case}; /// Derive `Event` macro code generation. pub fn expand_event(input: DeriveInput) -> syn::Result { - let ruma_common = import_ruma_common(); + let ruma_events = import_ruma_events(); let ident = &input.ident; let (kind, var) = to_kind_variation(ident).ok_or_else(|| { @@ -42,12 +42,12 @@ pub fn expand_event(input: DeriveInput) -> syn::Result { let mut res = TokenStream::new(); res.extend( - expand_deserialize_event(&input, var, &fields, &ruma_common) + expand_deserialize_event(&input, var, &fields, &ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); if var.is_sync() { - res.extend(expand_sync_from_into_full(&input, kind, var, &fields, &ruma_common)); + res.extend(expand_sync_from_into_full(&input, kind, var, &fields, &ruma_events)); } if is_non_stripped_room_event(kind, var) { @@ -61,10 +61,10 @@ fn expand_deserialize_event( input: &DeriveInput, var: EventKindVariation, fields: &[Field], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { - let serde = quote! { #ruma_common::exports::serde }; - let serde_json = quote! { #ruma_common::exports::serde_json }; + let serde = quote! { #ruma_events::exports::serde }; + let serde_json = quote! { #ruma_events::exports::serde_json }; let ident = &input.ident; // we know there is a content field already @@ -153,7 +153,7 @@ fn expand_deserialize_event( quote! {} }; let where_clause = if is_generic { - let predicate = parse_quote! { C: #ruma_common::events::EventContentFromType }; + let predicate = parse_quote! { C: #ruma_events::EventContentFromType }; if let Some(mut where_clause) = where_clause.cloned() { where_clause.predicates.push(predicate); Some(where_clause) @@ -251,7 +251,7 @@ fn expand_sync_from_into_full( kind: EventKind, var: EventKindVariation, fields: &[Field], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { let ident = &input.ident; let full_struct = kind.to_event_ident(var.to_full())?; @@ -274,7 +274,7 @@ fn expand_sync_from_into_full( /// Convert this sync event into a full event, one with a room_id field. pub fn into_full_event( self, - room_id: #ruma_common::OwnedRoomId, + room_id: #ruma_events::exports::ruma_common::OwnedRoomId, ) -> #full_struct #ty_gen { let Self { #( #fields, )* } = self; #full_struct { diff --git a/crates/ruma-macros/src/events/event_content.rs b/crates/ruma-macros/src/events/event_content.rs index b50ddb29..11146773 100644 --- a/crates/ruma-macros/src/events/event_content.rs +++ b/crates/ruma-macros/src/events/event_content.rs @@ -271,7 +271,7 @@ impl TryFrom for ContentAttrs { /// Create an `EventContent` implementation for a struct. pub fn expand_event_content( input: &DeriveInput, - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { let content_meta = input .attrs @@ -318,7 +318,7 @@ pub fn expand_event_content( state_key_type.as_ref(), unsigned_type.clone(), &aliases, - ruma_common, + ruma_events, ) .unwrap_or_else(syn::Error::into_compile_error) }); @@ -335,13 +335,13 @@ pub fn expand_event_content( state_key_type.as_ref(), unsigned_type.clone(), &aliases, - ruma_common, + ruma_events, ) .unwrap_or_else(syn::Error::into_compile_error) }); let event_content_without_relation = has_without_relation.then(|| { - generate_event_content_without_relation(ident, &input.vis, fields.clone(), ruma_common) + generate_event_content_without_relation(ident, &input.vis, fields.clone(), ruma_events) .unwrap_or_else(syn::Error::into_compile_error) }); @@ -355,13 +355,13 @@ pub fn expand_event_content( state_key_type.as_ref(), unsigned_type, &aliases, - ruma_common, + ruma_events, ) .unwrap_or_else(syn::Error::into_compile_error); let static_event_content_impl = - generate_static_event_content_impl(ident, &event_type, ruma_common); + generate_static_event_content_impl(ident, &event_type, ruma_events); let type_aliases = event_kind.map(|k| { - generate_event_type_aliases(k, ident, &input.vis, &event_type.value(), ruma_common) + generate_event_type_aliases(k, ident, &input.vis, &event_type.value(), ruma_events) .unwrap_or_else(syn::Error::into_compile_error) }); @@ -384,14 +384,15 @@ fn generate_redacted_event_content<'a>( state_key_type: Option<&TokenStream>, unsigned_type: Option, aliases: &[LitStr], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { assert!( !event_type.value().contains('*'), "Event type shouldn't contain a `*`, this should have been checked previously" ); - let serde = quote! { #ruma_common::exports::serde }; + let ruma_common = quote! { #ruma_events::exports::ruma_common }; + let serde = quote! { #ruma_events::exports::serde }; let doc = format!("Redacted form of [`{ident}`]"); let redacted_ident = format_ident!("Redacted{ident}"); @@ -450,17 +451,17 @@ fn generate_redacted_event_content<'a>( state_key_type, unsigned_type, aliases, - ruma_common, + ruma_events, ) .unwrap_or_else(syn::Error::into_compile_error); let static_event_content_impl = - generate_static_event_content_impl(&redacted_ident, event_type, ruma_common); + generate_static_event_content_impl(&redacted_ident, event_type, ruma_events); Ok(quote! { // this is the non redacted event content's impl #[automatically_derived] - impl #ruma_common::events::RedactContent for #ident { + impl #ruma_events::RedactContent for #ident { type Redacted = #redacted_ident; fn redact(self, version: &#ruma_common::RoomVersionId) -> #redacted_ident { @@ -493,14 +494,14 @@ fn generate_possibly_redacted_event_content<'a>( state_key_type: Option<&TokenStream>, unsigned_type: Option, aliases: &[LitStr], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { assert!( !event_type.value().contains('*'), "Event type shouldn't contain a `*`, this should have been checked previously" ); - let serde = quote! { #ruma_common::exports::serde }; + let serde = quote! { #ruma_events::exports::serde }; let doc = format!( "The possibly redacted form of [`{ident}`].\n\n\ @@ -605,12 +606,12 @@ fn generate_possibly_redacted_event_content<'a>( state_key_type, unsigned_type, aliases, - ruma_common, + ruma_events, ) .unwrap_or_else(syn::Error::into_compile_error); let static_event_content_impl = - generate_static_event_content_impl(&possibly_redacted_ident, event_type, ruma_common); + generate_static_event_content_impl(&possibly_redacted_ident, event_type, ruma_events); Ok(quote! { #[doc = #doc] @@ -630,7 +631,7 @@ fn generate_possibly_redacted_event_content<'a>( #vis type #possibly_redacted_ident = #ident; #[automatically_derived] - impl #ruma_common::events::PossiblyRedactedStateEventContent for #ident { + impl #ruma_events::PossiblyRedactedStateEventContent for #ident { type StateKey = #state_key_type; } }) @@ -641,9 +642,9 @@ fn generate_event_content_without_relation<'a>( ident: &Ident, vis: &syn::Visibility, fields: impl Iterator, - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { - let serde = quote! { #ruma_common::exports::serde }; + let serde = quote! { #ruma_events::exports::serde }; let type_doc = format!( "Form of [`{ident}`] without relation.\n\n\ @@ -707,7 +708,7 @@ fn generate_event_type_aliases( ident: &Ident, vis: &syn::Visibility, event_type: &str, - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { // The redaction module has its own event types. if ident == "RoomRedactionEventContent" { @@ -758,7 +759,7 @@ fn generate_event_type_aliases( quote! { #[doc = #ev_type_doc] - #vis type #ev_type = #ruma_common::events::#ev_struct<#content_struct>; + #vis type #ev_type = #ruma_events::#ev_struct<#content_struct>; } }) .collect(); @@ -793,10 +794,10 @@ fn generate_event_content_impl<'a>( state_key_type: Option<&TokenStream>, unsigned_type: Option, aliases: &[LitStr], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { - let serde = quote! { #ruma_common::exports::serde }; - let serde_json = quote! { #ruma_common::exports::serde_json }; + let serde = quote! { #ruma_events::exports::serde }; + let serde_json = quote! { #ruma_events::exports::serde_json }; let (event_type_ty_decl, event_type_ty, event_type_fn_impl); @@ -834,7 +835,7 @@ fn generate_event_content_impl<'a>( Some(kind) => { let i = kind.to_event_type_enum(); event_type_ty_decl = None; - event_type_ty = quote! { #ruma_common::events::#i }; + event_type_ty = quote! { #ruma_events::#i }; event_type_fn_impl = match &type_suffix_data { Some((type_prefix, type_fragment_field)) => { let format = type_prefix.to_owned() + "{}"; @@ -885,7 +886,7 @@ fn generate_event_content_impl<'a>( quote! { #[automatically_derived] - impl #ruma_common::events::#trait_name for #ident { + impl #ruma_events::#trait_name for #ident { #state_key } } @@ -896,13 +897,12 @@ fn generate_event_content_impl<'a>( .then(|| { let possibly_redacted_ident = format_ident!("PossiblyRedacted{ident}"); - let unsigned_type = unsigned_type.unwrap_or_else( - || quote! { #ruma_common::events::StateUnsigned }, - ); + let unsigned_type = unsigned_type + .unwrap_or_else(|| quote! { #ruma_events::StateUnsigned }); quote! { #[automatically_derived] - impl #ruma_common::events::StaticStateEventContent for #ident { + impl #ruma_events::StaticStateEventContent for #ident { type PossiblyRedacted = #possibly_redacted_ident; type Unsigned = #unsigned_type; } @@ -935,7 +935,7 @@ fn generate_event_content_impl<'a>( fields_without_type_fragment.iter().filter_map(|f| f.0.ident.as_ref()); quote! { - impl #ruma_common::events::EventContentFromType for #ident { + impl #ruma_events::EventContentFromType for #ident { fn from_parts( ev_type: &::std::primitive::str, content: &#serde_json::value::RawValue, @@ -974,7 +974,7 @@ fn generate_event_content_impl<'a>( #event_type_ty_decl #[automatically_derived] - impl #ruma_common::events::EventContent for #ident { + impl #ruma_events::EventContent for #ident { type EventType = #event_type_ty; fn event_type(&self) -> Self::EventType { @@ -991,10 +991,10 @@ fn generate_event_content_impl<'a>( fn generate_static_event_content_impl( ident: &Ident, event_type: &LitStr, - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> TokenStream { quote! { - impl #ruma_common::events::StaticEventContent for #ident { + impl #ruma_events::StaticEventContent for #ident { const TYPE: &'static ::std::primitive::str = #event_type; } } diff --git a/crates/ruma-macros/src/events/event_enum.rs b/crates/ruma-macros/src/events/event_enum.rs index 24780281..1cf0c3c1 100644 --- a/crates/ruma-macros/src/events/event_enum.rs +++ b/crates/ruma-macros/src/events/event_enum.rs @@ -24,7 +24,7 @@ type EventKindFn = fn(EventKind, EventEnumVariation) -> 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_common::events::event_kinds` have +/// DO NOT alter the field names unless the structs in `ruma_events::event_kinds` have /// changed. const EVENT_FIELDS: &[(&str, EventKindFn)] = &[ ("origin_server_ts", is_non_stripped_room_event), @@ -43,7 +43,7 @@ const EVENT_FIELDS: &[(&str, EventKindFn)] = &[ pub fn expand_event_enums(input: &EventEnumDecl) -> syn::Result { use EventEnumVariation as V; - let ruma_common = crate::import_ruma_common(); + let ruma_events = crate::import_ruma_events(); let mut res = TokenStream::new(); @@ -56,17 +56,17 @@ pub fn expand_event_enums(input: &EventEnumDecl) -> syn::Result { let events = &input.events; let docs = &docs; let variants = &variants; - let ruma_common = &ruma_common; + let ruma_events = &ruma_events; - res.extend(expand_content_enum(kind, events, docs, attrs, variants, ruma_common)); + res.extend(expand_content_enum(kind, events, docs, attrs, variants, ruma_events)); res.extend( - expand_event_enum(kind, V::None, events, docs, attrs, variants, ruma_common) + expand_event_enum(kind, V::None, events, docs, attrs, variants, ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); if matches!(kind, EventKind::MessageLike | EventKind::State) { res.extend( - expand_event_enum(kind, V::Sync, events, docs, attrs, variants, ruma_common) + expand_event_enum(kind, V::Sync, events, docs, attrs, variants, ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); res.extend( @@ -74,26 +74,26 @@ pub fn expand_event_enums(input: &EventEnumDecl) -> syn::Result { .unwrap_or_else(syn::Error::into_compile_error), ); res.extend( - expand_into_full_event(kind, V::Sync, variants, ruma_common) + expand_into_full_event(kind, V::Sync, variants, ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); } if matches!(kind, EventKind::Ephemeral) { res.extend( - expand_event_enum(kind, V::Sync, events, docs, attrs, variants, ruma_common) + expand_event_enum(kind, V::Sync, events, docs, attrs, variants, ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); } if matches!(kind, EventKind::State) { - res.extend(expand_full_content_enum(kind, events, docs, attrs, variants, ruma_common)); + res.extend(expand_full_content_enum(kind, events, docs, attrs, variants, ruma_events)); res.extend( - expand_event_enum(kind, V::Stripped, events, docs, attrs, variants, ruma_common) + expand_event_enum(kind, V::Stripped, events, docs, attrs, variants, ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); res.extend( - expand_event_enum(kind, V::Initial, events, docs, attrs, variants, ruma_common) + expand_event_enum(kind, V::Initial, events, docs, attrs, variants, ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); } @@ -108,7 +108,7 @@ fn expand_event_enum( docs: &[TokenStream], attrs: &[Attribute], variants: &[EventEnumVariant], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { let event_struct = kind.to_event_ident(var.into())?; let ident = kind.to_event_enum_ident(var.into())?; @@ -118,9 +118,9 @@ fn expand_event_enum( let custom_content_ty = format_ident!("Custom{}Content", kind); - let deserialize_impl = expand_deserialize_impl(kind, var, events, ruma_common)?; + let deserialize_impl = expand_deserialize_impl(kind, var, events, ruma_events)?; let field_accessor_impl = - expand_accessor_methods(kind, var, variants, &event_struct, ruma_common)?; + expand_accessor_methods(kind, var, variants, &event_struct, ruma_events)?; let from_impl = expand_from_impl(&ident, &event_ty, variants); Ok(quote! { @@ -136,8 +136,8 @@ fn expand_event_enum( /// An event not defined by the Matrix specification #[doc(hidden)] _Custom( - #ruma_common::events::#event_struct< - #ruma_common::events::_custom::#custom_content_ty + #ruma_events::#event_struct< + #ruma_events::_custom::#custom_content_ty >, ), } @@ -152,10 +152,11 @@ fn expand_deserialize_impl( kind: EventKind, var: EventEnumVariation, events: &[EventEnumEntry], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { - let serde = quote! { #ruma_common::exports::serde }; - let serde_json = quote! { #ruma_common::exports::serde_json }; + let ruma_common = quote! { #ruma_events::exports::ruma_common }; + let serde = quote! { #ruma_events::exports::serde }; + let serde_json = quote! { #ruma_events::exports::serde_json }; let ident = kind.to_event_enum_ident(var.into())?; @@ -191,7 +192,7 @@ fn expand_deserialize_impl( use #serde::de::Error as _; let json = Box::<#serde_json::value::RawValue>::deserialize(deserializer)?; - let #ruma_common::events::EventTypeDeHelper { ev_type, .. } = + let #ruma_events::EventTypeDeHelper { ev_type, .. } = #ruma_common::serde::from_raw_json_value(&json)?; match &*ev_type { @@ -264,8 +265,10 @@ fn expand_into_full_event( kind: EventKind, var: EventEnumVariation, variants: &[EventEnumVariant], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { + let ruma_common = quote! { #ruma_events::exports::ruma_common }; + let ident = kind.to_event_enum_ident(var.into())?; let full = kind.to_event_enum_ident(var.to_full().into())?; @@ -299,9 +302,9 @@ fn expand_content_enum( docs: &[TokenStream], attrs: &[Attribute], variants: &[EventEnumVariant], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { - let serde = quote! { #ruma_common::exports::serde }; + let serde = quote! { #ruma_events::exports::serde }; let ident = kind.to_content_enum(); @@ -323,7 +326,7 @@ fn expand_content_enum( let from_impl = expand_from_impl(&ident, &content, variants); let serialize_custom_event_error_path = - quote! { #ruma_common::events::serialize_custom_event_error }.to_string(); + quote! { #ruma_events::serialize_custom_event_error }.to_string(); Ok(quote! { #( #attrs )* @@ -344,8 +347,8 @@ fn expand_content_enum( } #[automatically_derived] - impl #ruma_common::events::EventContent for #ident { - type EventType = #ruma_common::events::#event_type_enum; + impl #ruma_events::EventContent for #ident { + type EventType = #ruma_events::#event_type_enum; fn event_type(&self) -> Self::EventType { match self { @@ -356,7 +359,7 @@ fn expand_content_enum( } #[automatically_derived] - impl #ruma_common::events::#sub_trait_name for #ident { + impl #ruma_events::#sub_trait_name for #ident { #state_event_content_impl } @@ -371,7 +374,7 @@ fn expand_full_content_enum( docs: &[TokenStream], attrs: &[Attribute], variants: &[EventEnumVariant], - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { let ident = kind.to_full_content_enum(); @@ -391,7 +394,7 @@ fn expand_full_content_enum( pub enum #ident { #( #docs - #variant_decls(#ruma_common::events::FullStateEventContent<#content>), + #variant_decls(#ruma_events::FullStateEventContent<#content>), )* #[doc(hidden)] _Custom { @@ -402,7 +405,7 @@ fn expand_full_content_enum( impl #ident { /// Get the event’s type, like `m.room.create`. - pub fn event_type(&self) -> #ruma_common::events::#event_type_enum { + pub fn event_type(&self) -> #ruma_events::#event_type_enum { match self { #( #variant_arms(content) => content.event_type(), )* Self::_Custom { event_type, .. } => ::std::convert::From::from(&event_type.0[..]), @@ -417,8 +420,10 @@ fn expand_accessor_methods( var: EventEnumVariation, variants: &[EventEnumVariant], event_struct: &Ident, - ruma_common: &TokenStream, + ruma_events: &TokenStream, ) -> syn::Result { + let ruma_common = quote! { #ruma_events::exports::ruma_common }; + let ident = kind.to_event_enum_ident(var.into())?; let event_type_enum = format_ident!("{}Type", kind); let self_variants: Vec<_> = variants.iter().map(|v| v.match_arm(quote! { Self })).collect(); @@ -434,9 +439,9 @@ fn expand_accessor_methods( } else { quote! { #( #self_variants(event) => - #ruma_common::events::EventContent::event_type(&event.content), )* + #ruma_events::EventContent::event_type(&event.content), )* Self::_Custom(event) => ::std::convert::From::from( - #ruma_common::events::EventContent::event_type(&event.content), + #ruma_events::EventContent::event_type(&event.content), ), } }; @@ -458,7 +463,7 @@ fn expand_accessor_methods( event_type: crate::PrivOwnedStr( ::std::convert::From::from( ::std::string::ToString::to_string( - &#ruma_common::events::EventContent::event_type( + &#ruma_events::EventContent::event_type( &ev.content, ), ), @@ -483,25 +488,25 @@ fn expand_accessor_methods( match self { #( #self_variants(event) => match event { - #ruma_common::events::#event_struct::Original(ev) => #full_content_variants( - #ruma_common::events::FullStateEventContent::Original { + #ruma_events::#event_struct::Original(ev) => #full_content_variants( + #ruma_events::FullStateEventContent::Original { content: ev.content.clone(), prev_content: ev.unsigned.prev_content.clone() } ), - #ruma_common::events::#event_struct::Redacted(ev) => #full_content_variants( - #ruma_common::events::FullStateEventContent::Redacted( + #ruma_events::#event_struct::Redacted(ev) => #full_content_variants( + #ruma_events::FullStateEventContent::Redacted( ev.content.clone() ) ), } )* Self::_Custom(event) => match event { - #ruma_common::events::#event_struct::Original(ev) => { + #ruma_events::#event_struct::Original(ev) => { #full_content_enum::_Custom { event_type: crate::PrivOwnedStr( ::std::string::ToString::to_string( - &#ruma_common::events::EventContent::event_type( + &#ruma_events::EventContent::event_type( &ev.content, ), ).into_boxed_str(), @@ -509,11 +514,11 @@ fn expand_accessor_methods( redacted: false, } } - #ruma_common::events::#event_struct::Redacted(ev) => { + #ruma_events::#event_struct::Redacted(ev) => { #full_content_enum::_Custom { event_type: crate::PrivOwnedStr( ::std::string::ToString::to_string( - &#ruma_common::events::EventContent::event_type( + &#ruma_events::EventContent::event_type( &ev.content, ), ).into_boxed_str(), @@ -541,7 +546,7 @@ fn expand_accessor_methods( event_type: crate::PrivOwnedStr( ::std::convert::From::from( ::std::string::ToString::to_string( - &#ruma_common::events::EventContent::event_type(&event.content) + &#ruma_events::EventContent::event_type(&event.content) ) ), ), @@ -555,7 +560,7 @@ fn expand_accessor_methods( has_field(kind, var).then(|| { let docs = format!("Returns this event's `{name}` field."); let ident = Ident::new(name, Span::call_site()); - let field_type = field_return_type(name, ruma_common); + let field_type = field_return_type(name, ruma_events); let variants = variants.iter().map(|v| v.match_arm(quote! { Self })); let call_parens = maybe_redacted.then(|| quote! { () }); let ampersand = (*name != "origin_server_ts").then(|| quote! { & }); @@ -594,7 +599,7 @@ fn expand_accessor_methods( /// Returns this event's `relations` from inside `unsigned`. pub fn relations( &self, - ) -> #ruma_common::events::BundledMessageLikeRelations { + ) -> #ruma_events::BundledMessageLikeRelations { match self { #( #variants(event) => event.as_original().map_or_else( @@ -639,7 +644,7 @@ fn expand_accessor_methods( #[automatically_derived] impl #ident { /// Returns the `type` of this event. - pub fn event_type(&self) -> #ruma_common::events::#event_type_enum { + pub fn event_type(&self) -> #ruma_events::#event_type_enum { match self { #event_type_match_arms } } @@ -652,7 +657,8 @@ fn expand_accessor_methods( }) } -fn field_return_type(name: &str, ruma_common: &TokenStream) -> TokenStream { +fn field_return_type(name: &str, ruma_events: &TokenStream) -> TokenStream { + let ruma_common = quote! { #ruma_events::exports::ruma_common }; match name { "origin_server_ts" => quote! { #ruma_common::MilliSecondsSinceUnixEpoch }, "room_id" => quote! { &#ruma_common::RoomId }, diff --git a/crates/ruma-macros/src/events/event_type.rs b/crates/ruma-macros/src/events/event_type.rs index 3de8cbdf..b18ac0dd 100644 --- a/crates/ruma-macros/src/events/event_type.rs +++ b/crates/ruma-macros/src/events/event_type.rs @@ -6,7 +6,7 @@ use super::event_parse::{EventEnumEntry, EventEnumInput, EventKind}; pub fn expand_event_type_enum( input: EventEnumInput, - ruma_common: TokenStream, + ruma_events: TokenStream, ) -> syn::Result { let mut timeline: Vec<&Vec> = vec![]; let mut state: Vec<&Vec> = vec![]; @@ -39,7 +39,7 @@ pub fn expand_event_type_enum( attrs: vec![], aliases: vec![], ev_type: LitStr::new("m.presence", Span::call_site()), - ev_path: parse_quote! { #ruma_common::events::presence }, + ev_path: parse_quote! { #ruma_events::presence }, ident: None, }]; let mut all = input.enums.iter().map(|e| &e.events).collect::>(); @@ -48,31 +48,31 @@ pub fn expand_event_type_enum( let mut res = TokenStream::new(); res.extend( - generate_enum("TimelineEventType", &timeline, &ruma_common) + generate_enum("TimelineEventType", &timeline, &ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); res.extend( - generate_enum("StateEventType", &state, &ruma_common) + generate_enum("StateEventType", &state, &ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); res.extend( - generate_enum("MessageLikeEventType", &message, &ruma_common) + generate_enum("MessageLikeEventType", &message, &ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); res.extend( - generate_enum("EphemeralRoomEventType", &ephemeral, &ruma_common) + generate_enum("EphemeralRoomEventType", &ephemeral, &ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); res.extend( - generate_enum("RoomAccountDataEventType", &room_account, &ruma_common) + generate_enum("RoomAccountDataEventType", &room_account, &ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); res.extend( - generate_enum("GlobalAccountDataEventType", &global_account, &ruma_common) + generate_enum("GlobalAccountDataEventType", &global_account, &ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); res.extend( - generate_enum("ToDeviceEventType", &to_device, &ruma_common) + generate_enum("ToDeviceEventType", &to_device, &ruma_events) .unwrap_or_else(syn::Error::into_compile_error), ); diff --git a/crates/ruma-macros/src/lib.rs b/crates/ruma-macros/src/lib.rs index dbbe5b40..f3ffdfb6 100644 --- a/crates/ruma-macros/src/lib.rs +++ b/crates/ruma-macros/src/lib.rs @@ -49,7 +49,7 @@ use self::{ ord_as_ref_str::{expand_ord_as_ref_str, expand_partial_ord_as_ref_str}, serialize_as_ref_str::expand_serialize_as_ref_str, }, - util::import_ruma_common, + util::{import_ruma_common, import_ruma_events}, }; /// Generates an enum to represent the various Matrix event types. @@ -101,7 +101,7 @@ pub fn event_enum(input: TokenStream) -> TokenStream { tokens.into() } -/// Generates an implementation of `ruma_common::events::EventContent`. +/// Generates an implementation of `ruma_events::EventContent`. /// /// Also generates type aliases depending on the kind of event, with the final `Content` of the type /// name removed and prefixed added. For instance, a message-like event content type @@ -118,10 +118,10 @@ pub fn event_enum(input: TokenStream) -> TokenStream { /// you generate documentation for binaries or private parts of a library. #[proc_macro_derive(EventContent, attributes(ruma_event))] pub fn derive_event_content(input: TokenStream) -> TokenStream { - let ruma_common = import_ruma_common(); + let ruma_events = import_ruma_events(); let input = parse_macro_input!(input as DeriveInput); - expand_event_content(&input, &ruma_common).unwrap_or_else(syn::Error::into_compile_error).into() + expand_event_content(&input, &ruma_events).unwrap_or_else(syn::Error::into_compile_error).into() } /// Generates implementations needed to serialize and deserialize Matrix events. diff --git a/crates/ruma-macros/src/util.rs b/crates/ruma-macros/src/util.rs index 50ebed5d..8c3af72a 100644 --- a/crates/ruma-macros/src/util.rs +++ b/crates/ruma-macros/src/util.rs @@ -21,6 +21,24 @@ pub(crate) fn import_ruma_common() -> TokenStream { } } +pub(crate) fn import_ruma_events() -> TokenStream { + if let Ok(FoundCrate::Name(name)) = crate_name("ruma-events") { + let import = format_ident!("{name}"); + quote! { ::#import } + } else if let Ok(FoundCrate::Name(name)) = crate_name("ruma") { + let import = format_ident!("{name}"); + quote! { ::#import::events } + } else if let Ok(FoundCrate::Name(name)) = crate_name("matrix-sdk") { + let import = format_ident!("{name}"); + quote! { ::#import::ruma::events } + } else if let Ok(FoundCrate::Name(name)) = crate_name("matrix-sdk-appservice") { + let import = format_ident!("{name}"); + quote! { ::#import::ruma::events } + } else { + quote! { ::ruma_events } + } +} + /// CamelCase's a field ident like "foo_bar" to "FooBar". pub(crate) fn to_camel_case(name: &Ident) -> Ident { let span = name.span(); diff --git a/crates/ruma-push-gateway-api/Cargo.toml b/crates/ruma-push-gateway-api/Cargo.toml index 5978d780..76495f9f 100644 --- a/crates/ruma-push-gateway-api/Cargo.toml +++ b/crates/ruma-push-gateway-api/Cargo.toml @@ -21,6 +21,7 @@ server = [] [dependencies] js_int = { workspace = true, features = ["serde"] } -ruma-common = { workspace = true, features = ["api", "events"] } +ruma-common = { workspace = true, features = ["api"] } +ruma-events = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } 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 57b36afc..3d800a68 100644 --- a/crates/ruma-push-gateway-api/src/send_event_notification.rs +++ b/crates/ruma-push-gateway-api/src/send_event_notification.rs @@ -10,12 +10,12 @@ pub mod v1 { use js_int::{uint, UInt}; use ruma_common::{ api::{request, response, Metadata}, - events::TimelineEventType, metadata, push::{PushFormat, Tweak}, serde::StringEnum, OwnedEventId, OwnedRoomAliasId, OwnedRoomId, OwnedUserId, SecondsSinceUnixEpoch, }; + use ruma_events::TimelineEventType; use serde::{Deserialize, Serialize}; use serde_json::value::RawValue as RawJsonValue; #[cfg(feature = "unstable-unspecified")] @@ -376,9 +376,10 @@ pub mod v1 { mod tests { use js_int::uint; use ruma_common::{ - events::TimelineEventType, owned_event_id, owned_room_alias_id, owned_room_id, - owned_user_id, SecondsSinceUnixEpoch, + owned_event_id, owned_room_alias_id, owned_room_id, owned_user_id, + SecondsSinceUnixEpoch, }; + use ruma_events::TimelineEventType; use serde_json::{ from_value as from_json_value, json, to_value as to_json_value, Value as JsonValue, }; diff --git a/crates/ruma-state-res/Cargo.toml b/crates/ruma-state-res/Cargo.toml index 144bd4dd..f0158098 100644 --- a/crates/ruma-state-res/Cargo.toml +++ b/crates/ruma-state-res/Cargo.toml @@ -20,7 +20,8 @@ unstable-exhaustive-types = [] [dependencies] itertools = "0.11.0" js_int = { workspace = true } -ruma-common = { workspace = true, features = ["events"] } +ruma-common = { workspace = true } +ruma-events = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } thiserror = { workspace = true } @@ -32,7 +33,7 @@ criterion = { workspace = true, optional = true } [dev-dependencies] maplit = { workspace = true } rand = "0.8.3" -ruma-common = { workspace = true, features = ["unstable-pdu"] } +ruma-events = { workspace = true, features = ["unstable-pdu"] } tracing-subscriber = "0.3.16" [[bench]] diff --git a/crates/ruma-state-res/benches/state_res_bench.rs b/crates/ruma-state-res/benches/state_res_bench.rs index 6a47d2d7..d335383e 100644 --- a/crates/ruma-state-res/benches/state_res_bench.rs +++ b/crates/ruma-state-res/benches/state_res_bench.rs @@ -21,17 +21,17 @@ use event::PduEvent; use js_int::{int, uint}; use maplit::{btreemap, hashmap, hashset}; use ruma_common::{ - events::{ - pdu::{EventHash, Pdu, RoomV3Pdu}, - room::{ - join_rules::{JoinRule, RoomJoinRulesEventContent}, - member::{MembershipState, RoomMemberEventContent}, - }, - StateEventType, TimelineEventType, - }, room_id, user_id, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, RoomVersionId, UserId, }; +use ruma_events::{ + pdu::{EventHash, Pdu, RoomV3Pdu}, + room::{ + join_rules::{JoinRule, RoomJoinRulesEventContent}, + member::{MembershipState, RoomMemberEventContent}, + }, + StateEventType, TimelineEventType, +}; use ruma_state_res::{self as state_res, Error, Event, Result, StateMap}; use serde_json::{ json, @@ -529,10 +529,8 @@ impl EventTypeExt for &TimelineEventType { } mod event { - use ruma_common::{ - events::{pdu::Pdu, TimelineEventType}, - MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, UserId, - }; + use ruma_common::{MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, UserId}; + use ruma_events::{pdu::Pdu, TimelineEventType}; use ruma_state_res::Event; use serde::{Deserialize, Serialize}; use serde_json::value::RawValue as RawJsonValue; diff --git a/crates/ruma-state-res/src/event_auth.rs b/crates/ruma-state-res/src/event_auth.rs index d18323e8..feb8cf15 100644 --- a/crates/ruma-state-res/src/event_auth.rs +++ b/crates/ruma-state-res/src/event_auth.rs @@ -2,19 +2,16 @@ use std::{borrow::Borrow, collections::BTreeSet}; use js_int::{int, Int}; use ruma_common::{ - events::{ - room::{ - create::RoomCreateEventContent, - join_rules::{JoinRule, RoomJoinRulesEventContent}, - member::{MembershipState, ThirdPartyInvite}, - power_levels::RoomPowerLevelsEventContent, - third_party_invite::RoomThirdPartyInviteEventContent, - }, - StateEventType, TimelineEventType, - }, serde::{Base64, Raw}, OwnedUserId, RoomVersionId, UserId, }; +use ruma_events::room::{ + create::RoomCreateEventContent, + join_rules::{JoinRule, RoomJoinRulesEventContent}, + member::{MembershipState, ThirdPartyInvite}, + power_levels::RoomPowerLevelsEventContent, + third_party_invite::RoomThirdPartyInviteEventContent, +}; use serde::{ de::{Error as _, IgnoredAny}, Deserialize, @@ -28,7 +25,7 @@ use crate::{ deserialize_power_levels_content_invite, deserialize_power_levels_content_redact, }, room_version::RoomVersion, - Error, Event, Result, + Error, Event, Result, StateEventType, TimelineEventType, }; // FIXME: field extracting could be bundled for `content` @@ -1009,7 +1006,7 @@ fn verify_third_party_invite( mod tests { use std::sync::Arc; - use ruma_common::events::{ + use ruma_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 3270a66e..963095da 100644 --- a/crates/ruma-state-res/src/lib.rs +++ b/crates/ruma-state-res/src/lib.rs @@ -7,12 +7,10 @@ use std::{ use itertools::Itertools; use js_int::{int, Int}; -use ruma_common::{ - events::{ - room::member::{MembershipState, RoomMemberEventContent}, - StateEventType, TimelineEventType, - }, - EventId, MilliSecondsSinceUnixEpoch, RoomVersionId, +use ruma_common::{EventId, MilliSecondsSinceUnixEpoch, RoomVersionId}; +use ruma_events::{ + room::member::{MembershipState, RoomMemberEventContent}, + StateEventType, TimelineEventType, }; use serde_json::from_str as from_json_str; use tracing::{debug, info, trace, warn}; @@ -646,12 +644,10 @@ mod tests { use js_int::{int, uint}; use maplit::{hashmap, hashset}; use rand::seq::SliceRandom; - use ruma_common::{ - events::{ - room::join_rules::{JoinRule, RoomJoinRulesEventContent}, - StateEventType, TimelineEventType, - }, - MilliSecondsSinceUnixEpoch, OwnedEventId, RoomVersionId, + use ruma_common::{MilliSecondsSinceUnixEpoch, OwnedEventId, RoomVersionId}; + use ruma_events::{ + room::join_rules::{JoinRule, RoomJoinRulesEventContent}, + StateEventType, TimelineEventType, }; use serde_json::{json, value::to_raw_value as to_raw_json_value}; use tracing::debug; diff --git a/crates/ruma-state-res/src/power_levels.rs b/crates/ruma-state-res/src/power_levels.rs index 00506c02..ad7a8f17 100644 --- a/crates/ruma-state-res/src/power_levels.rs +++ b/crates/ruma-state-res/src/power_levels.rs @@ -2,11 +2,11 @@ use std::collections::BTreeMap; use js_int::Int; use ruma_common::{ - events::{room::power_levels::RoomPowerLevelsEventContent, TimelineEventType}, power_levels::{default_power_level, NotificationPowerLevels}, serde::{btreemap_deserialize_v1_powerlevel_values, deserialize_v1_powerlevel}, OwnedUserId, }; +use ruma_events::{room::power_levels::RoomPowerLevelsEventContent, TimelineEventType}; use serde::Deserialize; use serde_json::{from_str as from_json_str, Error}; use tracing::error; diff --git a/crates/ruma-state-res/src/state_event.rs b/crates/ruma-state-res/src/state_event.rs index 00e94a29..93489d28 100644 --- a/crates/ruma-state-res/src/state_event.rs +++ b/crates/ruma-state-res/src/state_event.rs @@ -5,7 +5,8 @@ use std::{ sync::Arc, }; -use ruma_common::{events::TimelineEventType, EventId, MilliSecondsSinceUnixEpoch, RoomId, UserId}; +use ruma_common::{EventId, MilliSecondsSinceUnixEpoch, RoomId, UserId}; +use ruma_events::TimelineEventType; use serde_json::value::RawValue as RawJsonValue; /// Abstraction of a PDU so users can have their own PDU types. diff --git a/crates/ruma-state-res/src/test_utils.rs b/crates/ruma-state-res/src/test_utils.rs index a8861321..edd8f868 100644 --- a/crates/ruma-state-res/src/test_utils.rs +++ b/crates/ruma-state-res/src/test_utils.rs @@ -9,17 +9,16 @@ use std::{ use js_int::{int, uint}; use ruma_common::{ - event_id, - events::{ - pdu::{EventHash, Pdu, RoomV3Pdu}, - room::{ - join_rules::{JoinRule, RoomJoinRulesEventContent}, - member::{MembershipState, RoomMemberEventContent}, - }, - TimelineEventType, + event_id, room_id, user_id, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, + RoomVersionId, UserId, +}; +use ruma_events::{ + pdu::{EventHash, Pdu, RoomV3Pdu}, + room::{ + join_rules::{JoinRule, RoomJoinRulesEventContent}, + member::{MembershipState, RoomMemberEventContent}, }, - room_id, user_id, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, RoomVersionId, - UserId, + TimelineEventType, }; use serde_json::{ json, @@ -547,10 +546,8 @@ pub(crate) fn INITIAL_EDGES() -> Vec { } pub(crate) mod event { - use ruma_common::{ - events::{pdu::Pdu, TimelineEventType}, - MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, UserId, - }; + use ruma_common::{MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, UserId}; + use ruma_events::{pdu::Pdu, TimelineEventType}; use serde::{Deserialize, Serialize}; use serde_json::value::RawValue as RawJsonValue; diff --git a/crates/ruma/Cargo.toml b/crates/ruma/Cargo.toml index 8c5b81db..743dd672 100644 --- a/crates/ruma/Cargo.toml +++ b/crates/ruma/Cargo.toml @@ -17,9 +17,9 @@ rustdoc-args = ["--cfg", "docsrs"] [features] api = ["ruma-common/api"] -canonical-json = ["ruma-common/canonical-json"] +canonical-json = ["ruma-common/canonical-json", "ruma-events?/canonical-json"] client = ["dep:ruma-client"] -events = ["ruma-common/events"] +events = ["dep:ruma-events"] server-util = ["dep:ruma-server-util"] signatures = ["dep:ruma-signatures", "canonical-json"] state-res = ["dep:ruma-state-res"] @@ -69,8 +69,8 @@ js = ["ruma-common/js"] # Convenience features rand = ["ruma-common/rand"] -markdown = ["ruma-common/markdown"] -html = ["dep:ruma-html", "ruma-common/html"] +markdown = ["ruma-events?/markdown"] +html = ["dep:ruma-html", "ruma-events?/html"] # Everything except compat, js and unstable features full = [ @@ -132,7 +132,7 @@ compat-upload-signatures = ["ruma-client-api?/compat-upload-signatures"] # Allow extra characters in signature IDs not allowed in the specification. compat-signature-id = ["ruma-signatures?/compat-signature-id"] # Allow TagInfo to contain a stringified floating-point value for the `order` field. -compat-tag-info = ["ruma-common/compat-tag-info"] +compat-tag-info = ["ruma-events?/compat-tag-info"] # Specific compatibility for past ring public/private key documents. ring-compat = ["dep:ruma-signatures", "ruma-signatures?/ring-compat"] @@ -155,42 +155,39 @@ unstable-extensible-events = [ "unstable-msc3954", "unstable-msc3955", ] -unstable-msc1767 = ["ruma-common/unstable-msc1767"] +unstable-msc1767 = ["ruma-events?/unstable-msc1767"] unstable-msc2409 = ["ruma-appservice-api?/unstable-msc2409"] unstable-msc2448 = [ "ruma-client-api?/unstable-msc2448", - "ruma-common/unstable-msc2448", + "ruma-events?/unstable-msc2448", "ruma-federation-api?/unstable-msc2448" ] unstable-msc2654 = ["ruma-client-api?/unstable-msc2654"] unstable-msc2666 = ["ruma-client-api?/unstable-msc2666"] -unstable-msc2747 = ["ruma-common/unstable-msc2747"] +unstable-msc2747 = ["ruma-events?/unstable-msc2747"] unstable-msc2870 = ["ruma-common/unstable-msc2870"] unstable-msc2965 = ["ruma-client-api?/unstable-msc2965"] unstable-msc2967 = ["ruma-client-api?/unstable-msc2967"] unstable-msc3202 = ["ruma-appservice-api?/unstable-msc3202"] -unstable-msc3245 = ["ruma-common/unstable-msc3245"] -unstable-msc3246 = ["ruma-common/unstable-msc3246"] -unstable-msc3381 = ["ruma-common/unstable-msc3381"] -unstable-msc3488 = [ - "ruma-client-api?/unstable-msc3488", - "ruma-common/unstable-msc3488", -] -unstable-msc3551 = ["ruma-common/unstable-msc3551"] -unstable-msc3552 = ["ruma-common/unstable-msc3552"] -unstable-msc3553 = ["ruma-common/unstable-msc3553"] -unstable-msc3554 = ["ruma-common/unstable-msc3554"] +unstable-msc3245 = ["ruma-events?/unstable-msc3245"] +unstable-msc3246 = ["ruma-events?/unstable-msc3246"] +unstable-msc3381 = ["ruma-common/unstable-msc3381", "ruma-events?/unstable-msc3381"] +unstable-msc3488 = ["ruma-client-api?/unstable-msc3488", "ruma-events?/unstable-msc3488"] +unstable-msc3551 = ["ruma-events?/unstable-msc3551"] +unstable-msc3552 = ["ruma-events?/unstable-msc3552"] +unstable-msc3553 = ["ruma-events?/unstable-msc3553"] +unstable-msc3554 = ["ruma-events?/unstable-msc3554"] unstable-msc3575 = ["ruma-client-api?/unstable-msc3575"] unstable-msc3618 = ["ruma-federation-api?/unstable-msc3618"] unstable-msc3723 = ["ruma-federation-api?/unstable-msc3723"] unstable-msc3814 = ["ruma-client-api?/unstable-msc3814"] -unstable-msc3927 = ["ruma-common/unstable-msc3927"] +unstable-msc3927 = ["ruma-events?/unstable-msc3927"] unstable-msc3931 = ["ruma-common/unstable-msc3931"] unstable-msc3932 = ["ruma-common/unstable-msc3932"] -unstable-msc3954 = ["ruma-common/unstable-msc3954"] -unstable-msc3955 = ["ruma-common/unstable-msc3955"] -unstable-msc3956 = ["ruma-common/unstable-msc3956"] -unstable-pdu = ["ruma-common/unstable-pdu"] +unstable-msc3954 = ["ruma-events?/unstable-msc3954"] +unstable-msc3955 = ["ruma-events?/unstable-msc3955"] +unstable-msc3956 = ["ruma-events?/unstable-msc3956"] +unstable-pdu = ["ruma-events?/unstable-pdu"] unstable-unspecified = [ "ruma-common/unstable-unspecified", "ruma-federation-api?/unstable-unspecified", @@ -239,6 +236,7 @@ js_option = "0.1.1" ruma-common = { workspace = true } ruma-client = { workspace = true, optional = true } +ruma-events = { workspace = true, optional = true } ruma-html = { workspace = true, optional = true } ruma-server-util = { workspace = true, optional = true } ruma-signatures = { workspace = true, optional = true } diff --git a/crates/ruma/src/lib.rs b/crates/ruma/src/lib.rs index 9190cbbc..3b4c262c 100644 --- a/crates/ruma/src/lib.rs +++ b/crates/ruma/src/lib.rs @@ -80,7 +80,7 @@ pub use ruma_client as client; #[cfg(feature = "events")] #[doc(inline)] -pub use ruma_common::events; +pub use ruma_events as events; #[cfg(feature = "html")] #[doc(inline)] pub use ruma_html as html;