UNPKG

camstreamerlib

Version:

Helper library for CamStreamer ACAP applications.

123 lines (122 loc) 3.73 kB
import { z } from 'zod'; import { toCamelCaseDeep } from '../internal/transformers'; export const applicationSchema = z.object({ Name: z.string(), NiceName: z.string(), Vendor: z.string(), Version: z.string(), ApplicationID: z.string().optional(), License: z.string(), Status: z.string(), ConfigurationPage: z.string().optional(), VendorHomePage: z.string().optional(), LicenseName: z.string().optional(), }); export const APP_IDS = [ 'CamStreamer', 'CamSwitcher', 'CamOverlay', 'CamScripter', 'PlaneTracker', 'Ndihxplugin', 'SportTracker', ]; export const guardTourSchema = z.object({ id: z.string(), camNbr: z.unknown(), name: z.string(), randomEnabled: z.unknown(), running: z.string(), timeBetweenSequences: z.unknown(), tour: z.array(z.object({ moveSpeed: z.unknown(), position: z.unknown(), presetNbr: z.unknown(), waitTime: z.unknown(), waitTimeViewType: z.unknown(), })), }); const audioSampleRatesSchema = z.object({ sample_rate: z.number(), bit_rates: z.array(z.number()), }); const audioSampleRatesOutSchema = audioSampleRatesSchema.transform(toCamelCaseDeep); export const sdCardWatchedStatuses = ['OK', 'connected', 'disconnected']; export const PtzOverviewSchema = z.record(z.number(), z.array(z.object({ id: z.number(), name: z.string() }))); export const cameraPTZItemDataSchema = z.object({ pan: z.number().optional(), tilt: z.number().optional(), zoom: z.number().optional(), }); export const cameraPTZItemSchema = z.object({ name: z.string(), id: z.number(), data: cameraPTZItemDataSchema, }); export const audioDeviceSignalingChannelTypeSchema = z.object({ id: z.string(), gain: z.number(), mute: z.boolean(), }); export const audioDeviceSignalingTypeSchema = z.object({ id: z.string(), powerType: z.string().optional(), channels: z.array(audioDeviceSignalingChannelTypeSchema), }); export const audioDeviceConnectionTypeSchema = z.object({ id: z.string(), signalingTypeSelected: z.string(), signalingTypes: z.array(audioDeviceSignalingTypeSchema), }); export const audioDeviceInputOutputSchema = z.object({ id: z.string(), name: z.string(), enabled: z.boolean(), connectionTypes: z.array(audioDeviceConnectionTypeSchema), connectionTypeSelected: z.string(), }); export const audioDeviceSchema = z.object({ id: z.string(), name: z.string(), inputs: z.array(audioDeviceInputOutputSchema), outputs: z.array(audioDeviceInputOutputSchema), }); const audioDeviceFromRequestSchema = z.object({ id: z.string(), name: z.string(), inputs: z.array(audioDeviceInputOutputSchema).optional(), outputs: z.array(audioDeviceInputOutputSchema).optional(), }); export const audioDeviceRequestSchema = z.object({ data: z.object({ devices: z.array(audioDeviceFromRequestSchema) }), }); export const maxFpsResponseSchema = z.object({ data: z .array(z.object({ channel: z.number(), captureMode: z.array(z.object({ enabled: z.boolean(), maxFPS: z.number().optional(), })), })) .optional(), }); export const dateTimeinfoSchema = z.object({ data: z.object({ dateTime: z.string(), dstEnabled: z.boolean(), localDateTime: z.string(), posixTimeZone: z.string(), timeZone: z.string(), }), }); export const audioSampleRatesResponseSchema = z.object({ data: z.object({ encoders: z .object({ aac: z.array(audioSampleRatesSchema), AAC: z.array(audioSampleRatesSchema), }) .partial(), }), });