Files
recflare/packages/domain/src/enums.ts
T
2026-07-28 17:22:15 -04:00

93 lines
2.9 KiB
TypeScript

/**
* Domain enums — the numeric codes the Rec Room client encodes into the room /
* room-instance JSON we store in D1. Single source of truth so workers reference
* a name instead of re-hardcoding the integer. Regular (not `const`) enums, since
* the tsconfig sets `isolatedModules` (which disallows `const enum` across files).
*/
/** The kind of a room instance (live session), matching the client's `RoomInstanceType`. */
export enum RoomInstanceType {
Public = 0,
Private = 1,
Dormroom = 2,
Event = 3,
Meetup = 4,
Clubhouse = 5,
}
/**
* The `Type` byte on a messaging `Message` — how the client dispatches a message it
* receives (a game invite renders the join prompt, a text message the chat bubble, …).
* Distinct from the notify hub's {@link NotificationType}: a message is delivered *as*
* a `MessageReceived` (NotificationType 2) notification whose payload is a `Message`,
* and this enum is that inner `Message.Type`. Mirrors the reference's `MessageType`.
*/
export enum MessageType {
GameInvite = 0,
GameInviteDeclined = 1,
GameJoinFailed = 2,
PartyActivitySwitch = 3,
FriendInvite = 4,
VoteToKick = 5,
GameInviteV2 = 6,
PartyActivitySwitchV2 = 7,
RequestGameInvite = 10,
RequestGameInviteDeclined = 11,
FriendStatusOnline = 20,
TextMessage = 30,
FriendRequestAccepted = 40,
PlayerCheer = 50,
PlayerCheerAnonymous = 51,
RoomCoOwnerAdded = 60,
RoomCoOwnerRemoved = 61,
RoomCoOwnerInvited = 62,
CreatorPublishedNewRoom = 70,
PlayerAttendingEvent = 80,
PlayerEventInvitation = 81,
DeprecatedGroupInvitation = 90,
DeprecatedPlayerJoinedGroup = 91,
CoachMessage = 100,
NewRoomComments = 110,
PartyUpRequest = 120,
FriendIntroduction = 130,
ClubMemberInvited = 200,
ClubModeratorInvited = 201,
ClubCoownerInvited = 202,
VirtualClubAnnouncementRoomPublished = 100000,
VirtualClubAnnouncementInventionPublished = 100001,
VirtualClubAnnouncementGeneric = 100002,
VirtualClubAnnouncementPlayerEventPublished = 100003,
VirtualClubAnnouncementClub = 100004,
VirtualClubAnnouncementPlayer = 100005,
VirtualClubAnnouncementCode = 100006,
VirtualClubAnnouncementPhoto = 100007,
VirtualRoomNotification = 100008,
}
/**
* A room's (or image's) visibility, matching the client's `RoomAccessibility`. The
* client declares the enum without explicit values, so these are its ordinals — and
* it sends the NAME, not the number, on the subroom accessibility route.
*/
export enum Accessibility {
Private = 0,
Public = 1,
Unlisted = 2,
Dev_only = 3,
Dev_Unlisted = 4,
}
/**
* A room-role tier (the `Role` byte on a room's `Roles` entries), matching the
* client's values. Host and Moderator are limited-permission helper tiers; CoOwner
* and Creator are the owner-level tiers that may manage the room (see
* {@link canManageRoom}). Creator is the room's owner (its `CreatorAccountId`) —
* the max byte.
*/
export enum Role {
Host = 10,
Moderator = 20,
CoOwner = 30,
Creator = 255,
}