UNPKG

@4players/odin-common

Version:

A collection of commonly used type definitions and utility functions across ODIN web projects

94 lines (93 loc) 2.49 kB
import { z } from 'zod'; import { ByteArraySchema } from '../schema/serialization'; import { RoomV1 } from '../schema/room'; import { PeerIdSchema, PeerPositionSchema } from '../schema/peer'; import { MediaIdSchema, MediaPropertiesSchema } from '../schema/media'; import { WebRtcUpdateSchema } from '../schema/webrtc'; export const MainCommandsRpc = { Hello: { request: z.object({ stream: z.literal('main'), }), response: z.null(), }, JoinRoom: { request: z.object({ token: z.string(), room_id: RoomV1.RoomIdSchema, user_data: ByteArraySchema, position: PeerPositionSchema, }), response: z.object({ peer_id: PeerIdSchema, stream_id: z.optional(z.number()), token: z.optional(z.string()), }), }, WebRtcUpdate: { request: WebRtcUpdateSchema, response: z.null(), }, RequestReconnectToken: { request: z.object({ peer_id: z.optional(PeerIdSchema) }), response: z.string(), }, Ping: { request: z.object({}), response: z.null(), }, }; export const RoomCommandsRpc = { Hello: { request: z.object({ stream: z.literal('room'), token: z.string(), room_id: z.string(), user_data: ByteArraySchema, position: PeerPositionSchema, }), response: z.null(), }, UpdatePeer: { request: z.object({ user_data: ByteArraySchema }), response: z.null(), }, StartMedia: { request: z.object({ media_id: MediaIdSchema, properties: MediaPropertiesSchema, }), response: z.null(), }, StopMedia: { request: z.object({ media_id: MediaIdSchema, }), response: z.null(), }, PauseMedia: { request: z.object({ media_id: MediaIdSchema, }), response: z.null(), }, ResumeMedia: { request: z.object({ media_id: MediaIdSchema, }), response: z.null(), }, SetPeerPosition: { request: z.object({ position: PeerPositionSchema, }), response: z.null(), }, SendMessage: { request: z.object({ target_peer_ids: z.optional(z.array(PeerIdSchema)), message: ByteArraySchema, }), response: z.null(), }, };