camstreamerlib
Version:
Helper library for CamStreamer ACAP applications.
334 lines (333 loc) • 11.8 kB
JavaScript
"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([]),
});