@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
JavaScript
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(),
},
};