camstreamerlib
Version:
Helper library for CamStreamer ACAP applications.
68 lines (67 loc) • 2.06 kB
JavaScript
import { z } from 'zod';
const cswEventsDataSchema = z.discriminatedUnion('type', [
z.object({ type: z.literal('authorization'), state: z.string() }),
z.object({
type: z.literal('PlaylistSwitch'),
playlist_name: z.string(),
}),
z.object({
type: z.literal('StreamAvailable'),
stream_name: z.string(),
state: z.boolean(),
}),
z.object({
type: z.literal('StreamSwitchAudio'),
stream_name: z.string().optional(),
clip_name: z.string().optional(),
master_audio: z.boolean(),
}),
z.object({
type: z.literal('StreamSwitchVideoError'),
playlist_name: z.string(),
playlist_active_stream: z.number(),
stream_name: z.string().optional(),
clip_name: z.string().optional(),
info: z.string(),
}),
z.object({
type: z.literal('StreamSwitchAudioError'),
stream_name: z.string().optional(),
clip_name: z.string().optional(),
master_audio: z.boolean(),
}),
z.object({
type: z.literal('StreamSwitchVideo'),
playlist_active_stream: z.number(),
stream_name: z.string().optional(),
playlist_name: z.string().optional(),
clip_name: z.string().optional(),
}),
z.object({
type: z.literal('PlaylistQueueChange'),
queue: z.array(z.string()),
}),
z.object({
type: z.literal('ClipUpload'),
clip_name: z.string().optional(),
}),
z.object({
type: z.literal('SwitcherStop'),
default_playlist_id: z.string().optional(),
}),
z.object({
type: z.literal('SwitcherStart'),
default_playlist_id: z.string().optional(),
}),
z.object({
type: z.literal('MediaServerStarted'),
}),
z.object({
type: z.literal('ClipRemove'),
clip_name: z.string(),
}),
]);
export const cswEventsSchema = z.discriminatedUnion('type', [
z.object({ type: z.literal('init'), data: cswEventsDataSchema }),
...cswEventsDataSchema.options,
]);