@4players/odin-common
Version:
A collection of commonly used type definitions and utility functions across ODIN web projects
37 lines (36 loc) • 1.15 kB
JavaScript
import * as z from 'zod';
import { RoomV1 } from '../schema/room';
import { PeerUpdateSchema } from '../schema/peer';
import { MessageReceivedSchema } from '../schema/message';
import { WebRtcUpdateSchema } from '../schema/webrtc';
export const MainNotificationSchema = z.object({
name: z.literal('WebRtcUpdate'),
properties: WebRtcUpdateSchema,
});
export const MainNotificationsRpc = {
WebRtcUpdate: WebRtcUpdateSchema,
};
export const RoomNotificationSchema = z.union([
z.object({
name: z.literal('RoomStatusChanged'),
properties: RoomV1.RoomStatusChangedSchema,
}),
z.object({
name: z.literal('RoomUpdated'),
properties: RoomV1.RoomUpdatesSchema,
}),
z.object({
name: z.literal('PeerUpdated'),
properties: PeerUpdateSchema,
}),
z.object({
name: z.literal('MessageReceived'),
properties: MessageReceivedSchema,
}),
]);
export const RoomNotificationsRpc = {
RoomStatusChanged: RoomV1.RoomStatusChangedSchema,
RoomUpdated: RoomV1.RoomUpdatesSchema,
PeerUpdated: PeerUpdateSchema,
MessageReceived: MessageReceivedSchema,
};