UNPKG

@4players/odin-common

Version:

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

32 lines (31 loc) 915 B
import * as z from 'zod'; import { MediaIdSchema, MediaSchema } from './media'; import { ByteArraySchema } from './serialization'; export const PeerIdSchema = z.number(); export const PeerPositionSchema = z.union([ z.tuple([z.number(), z.number(), z.number()]), z.tuple([z.number(), z.number()]), ]); export const PeerSchema = z.object({ id: PeerIdSchema, user_id: z.string(), user_data: ByteArraySchema, medias: z.array(MediaSchema), }); export const PeerUpdateSchema = z.discriminatedUnion('kind', [ z.object({ kind: z.literal('UserDataChanged'), peer_id: PeerIdSchema, user_data: ByteArraySchema, }), z.object({ kind: z.literal('MediaStarted'), peer_id: PeerIdSchema, media: MediaSchema, }), z.object({ kind: z.literal('MediaStopped'), peer_id: PeerIdSchema, media_id: MediaIdSchema, }), ]);