// Message type constants export const TypeAuthenticate = 'authenticate'; export const TypeCreateSession = 'create_session'; export const TypeJoinSession = 'join_session'; export const TypeOffer = 'offer'; export const TypeAnswer = 'answer'; export const TypeICECandidate = 'ice_candidate'; export const TypeHeartbeat = 'heartbeat'; export const TypeEndCall = 'end_call'; export const TypeAuthenticated = 'authenticated'; export const TypeSessionCreated = 'session_created'; export const TypeSessionJoined = 'session_joined'; export const TypeParticipantJoined = 'participant_joined'; export const TypeParticipantLeft = 'participant_left'; export const TypeCallTimeout = 'call_timeout'; export const TypeCallEnded = 'call_ended'; export const TypePong = 'pong'; export const TypeUnauthorized = 'unauthorized'; export const TypeError = 'error'; // Error codes export const ErrRideNotActive = 'ride_not_active'; export const ErrRideAlreadyStarted = 'ride_already_started'; export const ErrRideCancelled = 'ride_cancelled'; export const ErrSessionExists = 'session_exists'; export const ErrSessionNotFound = 'session_not_found'; export const ErrSessionFull = 'session_full'; export const ErrUnauthorizedUser = 'unauthorized_user'; export const ErrTokenExpired = 'token_expired'; export const ErrTokenInvalid = 'token_invalid'; export const ErrPayloadTooLarge = 'payload_too_large'; export const ErrRateLimited = 'rate_limited'; // Helper constructors for encoding server messages export const newAuthenticated = (userID, iceServers) => JSON.stringify({ type: TypeAuthenticated, user_id: userID, ice_servers: iceServers }); export const newSessionCreated = (sessionID, rideID, expiresIn) => JSON.stringify({ type: TypeSessionCreated, session_id: sessionID, ride_id: rideID, expires_in: expiresIn }); export const newSessionJoined = (sessionID, rideID) => JSON.stringify({ type: TypeSessionJoined, session_id: sessionID, ride_id: rideID }); export const newParticipantJoined = (role) => JSON.stringify({ type: TypeParticipantJoined, role }); export const newRelayOffer = (sdp) => JSON.stringify({ type: TypeOffer, sdp }); export const newRelayAnswer = (sdp) => JSON.stringify({ type: TypeAnswer, sdp }); export const newRelayICE = (candidate) => JSON.stringify({ type: TypeICECandidate, candidate }); export const newParticipantLeft = (role) => JSON.stringify({ type: TypeParticipantLeft, role }); export const newCallTimeout = (reason) => JSON.stringify({ type: TypeCallTimeout, reason }); export const newCallEnded = (reason) => JSON.stringify({ type: TypeCallEnded, reason }); export const newPong = () => JSON.stringify({ type: TypePong }); export const newUnauthorized = (reason) => JSON.stringify({ type: TypeUnauthorized, reason }); export const newError = (code, message) => JSON.stringify({ type: TypeError, code, message });