UNPKG

camstreamerlib

Version:

Helper library for CamStreamer ACAP applications.

334 lines (333 loc) 11.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.zonesSchema = exports.mapInfoSchema = exports.mapTypeSchema = exports.blackListSchema = exports.whiteListSchema = exports.priorityListSchema = exports.typePriorityListSchema = exports.flightInfoSchema = exports.trackingModeSchema = exports.getIcaoSchema = exports.serverSettingsSchema = exports.cameraSettingsSchema = exports.widgetSchema = exports.connectionSchema = exports.wsAliasResponseSchema = void 0; const zod_1 = require("zod"); exports.wsAliasResponseSchema = zod_1.z.object({ alias: zod_1.z.string(), ws: zod_1.z.string(), ws_initial_message: zod_1.z.string(), }); exports.connectionSchema = zod_1.z.object({ protocol: zod_1.z.union([zod_1.z.literal('http'), zod_1.z.literal('https'), zod_1.z.literal('https_insecure')]), ip: zod_1.z.union([zod_1.z.string().ip(), zod_1.z.literal('')]), port: zod_1.z.number().positive().lt(65535), user: zod_1.z.string(), pass: zod_1.z.string(), }); exports.widgetSchema = zod_1.z.object({ enabled: zod_1.z.boolean().default(true), coord: zod_1.z.union([ zod_1.z.literal('top_left'), zod_1.z.literal('top_right'), zod_1.z.literal('bottom_left'), zod_1.z.literal('bottom_right'), ]), posX: zod_1.z.number().nonnegative(), posY: zod_1.z.number().nonnegative(), scale: zod_1.z.number().positive(), }); const labelOptionsSchema = zod_1.z.union([ zod_1.z.literal('blank'), zod_1.z.literal('registration'), zod_1.z.literal('call_sign'), zod_1.z.literal('flight_number'), zod_1.z.literal('icao'), ]); const identificationLabelSchema = zod_1.z.object({ firstRow: labelOptionsSchema, secondRow: labelOptionsSchema, thirdRow: labelOptionsSchema, fourthRow: labelOptionsSchema, opacity: zod_1.z.number().positive(), }); exports.cameraSettingsSchema = zod_1.z.object({ units: zod_1.z.union([zod_1.z.literal('metric'), zod_1.z.literal('imperial')]).default('imperial'), adsbSource: zod_1.z .object({ ip: zod_1.z.union([zod_1.z.string().ip(), zod_1.z.literal('')]), port: zod_1.z.number().positive().lt(65535), }) .default({ ip: '', port: 30334 }), camera: exports.connectionSchema.default({ protocol: 'http', ip: '127.0.0.1', port: 80, user: 'root', pass: '', }), cameraCalibrationProcessConfig: zod_1.z .object({ nightSkyCalibrationEnabled: zod_1.z.boolean(), scheduleNightSkyCalibrationTimestamp: zod_1.z.number(), focusCalibrationPoints: zod_1.z.string().default(''), }) .default({ nightSkyCalibrationEnabled: false, scheduleNightSkyCalibrationTimestamp: 0, focusCalibrationPoints: '', }), cameraConfig: zod_1.z .object({ maxZoomLevel: zod_1.z.number().optional(), defaultCaptureSizeMeters: zod_1.z.number().positive().default(120), captureSizeExtensionMeters: zod_1.z.number().positive().default(80), }) .default({ maxZoomLevel: 30, defaultCaptureSizeMeters: 120, captureSizeExtensionMeters: 80, }), stream: zod_1.z .object({ width: zod_1.z.number().positive(), height: zod_1.z.number().positive(), }) .default({ width: 1920, height: 1080 }), imageConfig: zod_1.z .object({ dayAperture: zod_1.z.number().nonnegative().min(0).max(100), nightAperture: zod_1.z.number().nonnegative().min(0).max(100), maxGain: zod_1.z.number().nonnegative().min(0).max(100).default(100), }) .default({ dayAperture: 50, nightAperture: 0, maxGain: 100 }), airportConfig: zod_1.z .object({ icao: zod_1.z.string().default(''), centerLat: zod_1.z.number(), centerLon: zod_1.z.number(), radius: zod_1.z.number().nonnegative().default(10000), }) .default({ icao: '', centerLat: 0, centerLon: 0, radius: 10000, }), trackingConfig: zod_1.z .object({ prioritizeEmergency: zod_1.z.boolean(), trackingZoneWeightIncrease: zod_1.z.number().int().nonnegative().default(0), guardTourEnabled: zod_1.z.boolean().default(false), guardTourId: zod_1.z.number().int().nonnegative().default(0), }) .default({ prioritizeEmergency: true, guardTourEnabled: false, guardTourId: 0 }), overlayText: zod_1.z .object({ displayIcao: zod_1.z.boolean().optional(), displayRegistration: zod_1.z.boolean().optional(), displayFlightNumber: zod_1.z.boolean().optional(), displayAltitude: zod_1.z.boolean().optional(), displayVelocity: zod_1.z.boolean().optional(), displayDistance: zod_1.z.boolean().optional(), displayFOV: zod_1.z.boolean().optional(), displayPTError: zod_1.z.boolean().optional(), displayPTZSpeed: zod_1.z.boolean().optional(), displayVelocityData: zod_1.z.boolean().optional(), displaySignalQuality: zod_1.z.boolean().optional(), displayAutoTrackingInfo: zod_1.z.boolean().optional(), displayGPSCoords: zod_1.z.boolean().optional(), displayVapixQuery: zod_1.z.boolean().optional(), displayFocus: zod_1.z.boolean().optional(), displayAperture: zod_1.z.boolean().optional(), displaySunDistance: zod_1.z.boolean().optional(), displayTickTime: zod_1.z.boolean().optional(), displayAircraftInfo: zod_1.z.boolean().optional(), }) .optional(), widget: exports.widgetSchema.default({ enabled: true, coord: 'top_right', posX: 10, posY: 10, scale: 100, }), airportWidget: exports.widgetSchema.default({ enabled: true, coord: 'top_left', posX: 10, posY: 10, scale: 100, }), fr24FlightInfoSource: zod_1.z .object({ enabled: zod_1.z.boolean().default(false), priority: zod_1.z.number().int().positive().default(1), apiToken: zod_1.z.string().default(''), validateFlights: zod_1.z.boolean().default(true), }) .default({ enabled: false, priority: 1, apiToken: '', validateFlights: true, }), radarcapeFlightInfoSource: zod_1.z .object({ enabled: zod_1.z.boolean().default(false), priority: zod_1.z.number().int().positive().default(2), ip: zod_1.z.union([zod_1.z.string().ip(), zod_1.z.literal('')]).default(''), port: zod_1.z.number().positive().lt(65535).default(80), }) .default({ enabled: false, priority: 2, ip: '', port: 80, }), identificationLabel: identificationLabelSchema.default({ firstRow: 'registration', secondRow: 'blank', thirdRow: 'blank', fourthRow: 'blank', opacity: 30, }), acs: exports.connectionSchema .extend({ enabled: zod_1.z.boolean(), sourceKey: zod_1.z.string(), }) .default({ enabled: false, protocol: 'https_insecure', ip: '', port: 29204, user: '', pass: '', sourceKey: '', }), genetec: exports.connectionSchema .extend({ enabled: zod_1.z.boolean(), baseUri: zod_1.z.string().default(''), appId: zod_1.z.string().default(''), cameraList: zod_1.z.string().array().default([]), }) .default({ enabled: false, protocol: 'http', ip: '', port: 4590, user: '', pass: '', baseUri: 'WebSdk', appId: '', cameraList: [], }), camstreamerIntegration: zod_1.z .object({ adPlacementEnabled: zod_1.z.boolean(), adMinIntervalSec: zod_1.z.number().int().nonnegative(), adShortDurationSec: zod_1.z.number().int().nonnegative(), adLongDurationSec: zod_1.z.number().int().nonnegative(), }) .default({ adPlacementEnabled: false, adMinIntervalSec: 1800, adShortDurationSec: 10, adLongDurationSec: 30, }), }); exports.serverSettingsSchema = zod_1.z.object({ cameraCalibration: zod_1.z .object({ posLat: zod_1.z.number(), posLon: zod_1.z.number(), geoidHN: zod_1.z.number(), altitudeAmsl: zod_1.z.number(), rotationEast: zod_1.z.number(), rotationNorth: zod_1.z.number(), rotationUp: zod_1.z.number(), tiltTransformationCoefA: zod_1.z.number(), tiltCameraKnownPoint: zod_1.z.number(), tiltRealKnownPoint: zod_1.z.number(), panErrorCorrection: zod_1.z .array(zod_1.z.object({ cameraPan: zod_1.z.number(), realPan: zod_1.z.number(), })) .default([]), }) .default({ posLat: 50, posLon: 14, geoidHN: 45, altitudeAmsl: 372, rotationEast: 0, rotationNorth: 0, rotationUp: 0, tiltTransformationCoefA: 1.0, tiltCameraKnownPoint: 90, tiltRealKnownPoint: 90, panErrorCorrection: [], }), }); exports.getIcaoSchema = zod_1.z.object({ icao: zod_1.z.string(), }); exports.trackingModeSchema = zod_1.z.object({ mode: zod_1.z.union([zod_1.z.literal('MANUAL'), zod_1.z.literal('AUTOMATIC')]), }); exports.flightInfoSchema = zod_1.z.object({ callsign: zod_1.z.string().optional(), flightNumber: zod_1.z.string().optional(), registration: zod_1.z.string().optional(), aircraftType: zod_1.z.string().optional(), airlines: zod_1.z.string().optional(), originAirport: zod_1.z .object({ icao: zod_1.z.string().optional(), iata: zod_1.z.string().optional(), city: zod_1.z.string().optional(), }) .optional(), destinationAirport: zod_1.z.object({ icao: zod_1.z.string().optional(), iata: zod_1.z.string().optional(), city: zod_1.z.string().optional(), }), flightImages: zod_1.z .array(zod_1.z.object({ src: zod_1.z.string().optional(), photographer: zod_1.z.string().optional(), })) .optional(), }); exports.typePriorityListSchema = zod_1.z.object({ typePriorityList: zod_1.z.array(zod_1.z.string()).default([]), }); exports.priorityListSchema = zod_1.z.object({ priorityList: zod_1.z.array(zod_1.z.string()).default([]), }); exports.whiteListSchema = zod_1.z.object({ whiteList: zod_1.z.array(zod_1.z.string()).default([]), }); exports.blackListSchema = zod_1.z.object({ blackList: zod_1.z.array(zod_1.z.string()).default([]), }); exports.mapTypeSchema = zod_1.z.enum(['roadmap', 'satellite']); exports.mapInfoSchema = zod_1.z.object({ minZoom: zod_1.z.number().nonnegative(), maxZoom: zod_1.z.number().nonnegative(), mapTypes: zod_1.z.array(exports.mapTypeSchema), tileSize: zod_1.z.number().nonnegative(), }); exports.zonesSchema = zod_1.z.object({ zones: zod_1.z .array(zod_1.z.object({ enabled: zod_1.z.boolean().default(true), name: zod_1.z.string().optional(), area: zod_1.z .array(zod_1.z.object({ lat: zod_1.z.number(), lon: zod_1.z.number(), })) .nonempty(), minAltitudeAmsl: zod_1.z.number().optional(), maxAltitudeAmsl: zod_1.z.number().optional(), minSpeedKmph: zod_1.z.number().optional(), maxSpeedKmph: zod_1.z.number().optional(), flightDirection: zod_1.z.enum(['all', 'arrival', 'departure']).default('all'), weight: zod_1.z.number(), })) .default([]), });