@4players/odin-common
Version:
A collection of commonly used type definitions and utility functions across ODIN web projects
32 lines (31 loc) • 915 B
JavaScript
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,
}),
]);