camstreamerlib 4.0.36 → 4.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -87,6 +87,7 @@ export declare class PlaneTrackerAPI<Client extends IClient<TResponse, any>> ext
87
87
  widget: {
88
88
  enabled: boolean;
89
89
  scale: number;
90
+ units: "rotate" | "metric" | "imperial";
90
91
  coord: "top_left" | "top_right" | "bottom_left" | "bottom_right";
91
92
  posX: number;
92
93
  posY: number;
@@ -100,6 +101,8 @@ export declare class PlaneTrackerAPI<Client extends IClient<TResponse, any>> ext
100
101
  posY: number;
101
102
  showWeather: boolean;
102
103
  weatherLocationKey: string;
104
+ windSpeedUnits: "rotate" | "metric" | "imperial";
105
+ temperatureUnits: "rotate" | "metric" | "imperial";
103
106
  };
104
107
  fr24FlightInfoSource: {
105
108
  enabled: boolean;
@@ -3,7 +3,7 @@ import { TStream } from '../types/CamStreamerAPI';
3
3
  import { TOldStream } from '../types/CamStreamerAPI/oldStreamSchema';
4
4
  export declare class ErrorWithResponse<T extends TResponse> extends Error {
5
5
  res: T;
6
- constructor(res: T);
6
+ constructor(res: T, message?: string);
7
7
  }
8
8
  export declare class ServiceUnavailableError extends Error {
9
9
  constructor();
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MigrationError = exports.BadRequestError = exports.ServerError = exports.InvalidAltitudeError = exports.InvalidLatLngError = exports.CannotSetCoordsInAutoModeError = exports.ImportSettingsError = exports.ResetCalibrationError = exports.TimezoneFetchError = exports.TimezoneNotSetupError = exports.UtcTimeFetchError = exports.WsAuthorizationError = exports.StorageDataFetchError = exports.PtzNotSupportedError = exports.GenerateSilenceError = exports.AddNewClipError = exports.FetchDeviceInfoError = exports.NoDeviceInfoError = exports.MaxFPSError = exports.SDCardJobError = exports.SDCardActionError = exports.ApplicationAPIError = exports.SettingParameterError = exports.ParameterNotFoundError = exports.JsonParseError = exports.ParsingBlobError = exports.ServiceNotFoundError = exports.ServiceUnavailableError = exports.ErrorWithResponse = void 0;
4
4
  class ErrorWithResponse extends Error {
5
5
  res;
6
- constructor(res) {
7
- super(res.statusText);
6
+ constructor(res, message) {
7
+ super(message ?? res.statusText);
8
8
  this.res = res;
9
9
  this.name = 'ErrorWithResponse';
10
10
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AxisCameraStationEvents = void 0;
4
+ const errors_1 = require("../../errors/errors");
4
5
  const utils_1 = require("../../internal/utils");
5
6
  const ProxyClient_1 = require("../../internal/ProxyClient");
6
7
  const DefaultClient_1 = require("../DefaultClient");
@@ -36,7 +37,7 @@ class AxisCameraStationEvents {
36
37
  timeout: options?.timeout,
37
38
  });
38
39
  if (!res.ok) {
39
- throw new Error(`ACS status code: ${res.status}`);
40
+ throw new errors_1.ErrorWithResponse(res, `ACS status code: ${res.status}`);
40
41
  }
41
42
  }
42
43
  getDate() {
@@ -54,6 +54,8 @@ export declare const widgetSchema: z.ZodObject<{
54
54
  posY: number;
55
55
  enabled?: boolean | undefined;
56
56
  }>;
57
+ declare const widgetUnitsSchema: z.ZodUnion<[z.ZodLiteral<"metric">, z.ZodLiteral<"imperial">, z.ZodLiteral<"rotate">]>;
58
+ export type TWidgetUnits = z.infer<typeof widgetUnitsSchema>;
57
59
  declare const labelOptionsSchema: z.ZodUnion<[z.ZodLiteral<"blank">, z.ZodLiteral<"registration">, z.ZodLiteral<"call_sign">, z.ZodLiteral<"flight_number">, z.ZodLiteral<"icao">]>;
58
60
  export type TLabelOption = z.infer<typeof labelOptionsSchema>;
59
61
  declare const droneLabelOptionsSchema: z.ZodUnion<[z.ZodLiteral<"blank">, z.ZodLiteral<"remote_id">]>;
@@ -313,9 +315,12 @@ export declare const cameraSettingsSchema: z.ZodObject<{
313
315
  posX: z.ZodNumber;
314
316
  posY: z.ZodNumber;
315
317
  scale: z.ZodNumber;
318
+ } & {
319
+ units: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"metric">, z.ZodLiteral<"imperial">, z.ZodLiteral<"rotate">]>>;
316
320
  }, "strip", z.ZodTypeAny, {
317
321
  enabled: boolean;
318
322
  scale: number;
323
+ units: "rotate" | "metric" | "imperial";
319
324
  coord: "top_left" | "top_right" | "bottom_left" | "bottom_right";
320
325
  posX: number;
321
326
  posY: number;
@@ -325,6 +330,7 @@ export declare const cameraSettingsSchema: z.ZodObject<{
325
330
  posX: number;
326
331
  posY: number;
327
332
  enabled?: boolean | undefined;
333
+ units?: "rotate" | "metric" | "imperial" | undefined;
328
334
  }>>;
329
335
  airportWidget: z.ZodDefault<z.ZodObject<{
330
336
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -336,6 +342,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
336
342
  showWeather: z.ZodDefault<z.ZodBoolean>;
337
343
  weatherLocationKey: z.ZodDefault<z.ZodString>;
338
344
  weatherLocationName: z.ZodDefault<z.ZodString>;
345
+ windSpeedUnits: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"metric">, z.ZodLiteral<"imperial">, z.ZodLiteral<"rotate">]>>;
346
+ temperatureUnits: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"metric">, z.ZodLiteral<"imperial">, z.ZodLiteral<"rotate">]>>;
339
347
  }, "strip", z.ZodTypeAny, {
340
348
  enabled: boolean;
341
349
  scale: number;
@@ -345,6 +353,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
345
353
  posY: number;
346
354
  showWeather: boolean;
347
355
  weatherLocationKey: string;
356
+ windSpeedUnits: "rotate" | "metric" | "imperial";
357
+ temperatureUnits: "rotate" | "metric" | "imperial";
348
358
  }, {
349
359
  scale: number;
350
360
  coord: "top_left" | "top_right" | "bottom_left" | "bottom_right";
@@ -354,6 +364,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
354
364
  weatherLocationName?: string | undefined;
355
365
  showWeather?: boolean | undefined;
356
366
  weatherLocationKey?: string | undefined;
367
+ windSpeedUnits?: "rotate" | "metric" | "imperial" | undefined;
368
+ temperatureUnits?: "rotate" | "metric" | "imperial" | undefined;
357
369
  }>>;
358
370
  fr24FlightInfoSource: z.ZodDefault<z.ZodObject<{
359
371
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -614,6 +626,7 @@ export declare const cameraSettingsSchema: z.ZodObject<{
614
626
  widget: {
615
627
  enabled: boolean;
616
628
  scale: number;
629
+ units: "rotate" | "metric" | "imperial";
617
630
  coord: "top_left" | "top_right" | "bottom_left" | "bottom_right";
618
631
  posX: number;
619
632
  posY: number;
@@ -627,6 +640,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
627
640
  posY: number;
628
641
  showWeather: boolean;
629
642
  weatherLocationKey: string;
643
+ windSpeedUnits: "rotate" | "metric" | "imperial";
644
+ temperatureUnits: "rotate" | "metric" | "imperial";
630
645
  };
631
646
  fr24FlightInfoSource: {
632
647
  enabled: boolean;
@@ -802,6 +817,7 @@ export declare const cameraSettingsSchema: z.ZodObject<{
802
817
  posX: number;
803
818
  posY: number;
804
819
  enabled?: boolean | undefined;
820
+ units?: "rotate" | "metric" | "imperial" | undefined;
805
821
  } | undefined;
806
822
  airportWidget?: {
807
823
  scale: number;
@@ -812,6 +828,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
812
828
  weatherLocationName?: string | undefined;
813
829
  showWeather?: boolean | undefined;
814
830
  weatherLocationKey?: string | undefined;
831
+ windSpeedUnits?: "rotate" | "metric" | "imperial" | undefined;
832
+ temperatureUnits?: "rotate" | "metric" | "imperial" | undefined;
815
833
  } | undefined;
816
834
  fr24FlightInfoSource?: {
817
835
  enabled?: boolean | undefined;
@@ -28,6 +28,7 @@ exports.widgetSchema = zod_1.z.object({
28
28
  posY: zod_1.z.number().nonnegative(),
29
29
  scale: zod_1.z.number().positive(),
30
30
  });
31
+ const widgetUnitsSchema = zod_1.z.union([zod_1.z.literal('metric'), zod_1.z.literal('imperial'), zod_1.z.literal('rotate')]);
31
32
  const labelOptionsSchema = zod_1.z.union([
32
33
  zod_1.z.literal('blank'),
33
34
  zod_1.z.literal('registration'),
@@ -189,18 +190,25 @@ exports.cameraSettingsSchema = zod_1.z.object({
189
190
  displaySystemInfo: zod_1.z.boolean().optional(),
190
191
  })
191
192
  .optional(),
192
- widget: exports.widgetSchema.default({
193
+ widget: exports.widgetSchema
194
+ .extend({
195
+ units: widgetUnitsSchema.default('rotate'),
196
+ })
197
+ .default({
193
198
  enabled: true,
194
199
  coord: 'top_right',
195
200
  posX: 10,
196
201
  posY: 10,
197
202
  scale: 100,
203
+ units: 'rotate',
198
204
  }),
199
205
  airportWidget: exports.widgetSchema
200
206
  .extend({
201
207
  showWeather: zod_1.z.boolean().default(false),
202
208
  weatherLocationKey: zod_1.z.string().default(''),
203
209
  weatherLocationName: zod_1.z.string().default(''),
210
+ windSpeedUnits: widgetUnitsSchema.default('rotate'),
211
+ temperatureUnits: widgetUnitsSchema.default('rotate'),
204
212
  })
205
213
  .default({
206
214
  enabled: true,
@@ -211,6 +219,8 @@ exports.cameraSettingsSchema = zod_1.z.object({
211
219
  showWeather: false,
212
220
  weatherLocationKey: '',
213
221
  weatherLocationName: '',
222
+ windSpeedUnits: 'rotate',
223
+ temperatureUnits: 'rotate',
214
224
  }),
215
225
  fr24FlightInfoSource: zod_1.z
216
226
  .object({
@@ -88,3 +88,30 @@ const DEFAULT_CAPTURE_CONFIG = { defaultCaptureSizeMeters: 120, captureSizeExten
88
88
  (0, globals_1.expect)(PlaneTrackerAPI_1.cameraSettingsSchema.safeParse({ cameraConfig }).success).toBe(false);
89
89
  });
90
90
  });
91
+ (0, globals_1.describe)('cameraSettingsSchema widget units', () => {
92
+ const WIDGET = { coord: 'top_left', posX: 10, posY: 10, scale: 100 };
93
+ (0, globals_1.test)('defaults all widget units to rotate', () => {
94
+ const settings = PlaneTrackerAPI_1.cameraSettingsSchema.parse({});
95
+ (0, globals_1.expect)(settings.widget.units).toBe('rotate');
96
+ (0, globals_1.expect)(settings.airportWidget.windSpeedUnits).toBe('rotate');
97
+ (0, globals_1.expect)(settings.airportWidget.temperatureUnits).toBe('rotate');
98
+ });
99
+ (0, globals_1.test)('defaults missing units of saved widgets to rotate', () => {
100
+ const settings = PlaneTrackerAPI_1.cameraSettingsSchema.parse({ widget: WIDGET, airportWidget: WIDGET });
101
+ (0, globals_1.expect)(settings.widget.units).toBe('rotate');
102
+ (0, globals_1.expect)(settings.airportWidget.windSpeedUnits).toBe('rotate');
103
+ (0, globals_1.expect)(settings.airportWidget.temperatureUnits).toBe('rotate');
104
+ });
105
+ (0, globals_1.test)('parses independent widget units', () => {
106
+ const settings = PlaneTrackerAPI_1.cameraSettingsSchema.parse({
107
+ widget: { ...WIDGET, units: 'imperial' },
108
+ airportWidget: { ...WIDGET, windSpeedUnits: 'rotate', temperatureUnits: 'metric' },
109
+ });
110
+ (0, globals_1.expect)(settings.widget.units).toBe('imperial');
111
+ (0, globals_1.expect)(settings.airportWidget.windSpeedUnits).toBe('rotate');
112
+ (0, globals_1.expect)(settings.airportWidget.temperatureUnits).toBe('metric');
113
+ });
114
+ (0, globals_1.test)('rejects an unknown widget unit', () => {
115
+ (0, globals_1.expect)(PlaneTrackerAPI_1.cameraSettingsSchema.safeParse({ widget: { ...WIDGET, units: 'kelvin' } }).success).toBe(false);
116
+ });
117
+ });
@@ -1,7 +1,7 @@
1
1
  export class ErrorWithResponse extends Error {
2
2
  res;
3
- constructor(res) {
4
- super(res.statusText);
3
+ constructor(res, message) {
4
+ super(message ?? res.statusText);
5
5
  this.res = res;
6
6
  this.name = 'ErrorWithResponse';
7
7
  }
@@ -1,3 +1,4 @@
1
+ import { ErrorWithResponse } from '../../errors/errors';
1
2
  import { pad } from '../../internal/utils';
2
3
  import { ProxyClient } from '../../internal/ProxyClient';
3
4
  import { DefaultClient } from '../DefaultClient';
@@ -33,7 +34,7 @@ export class AxisCameraStationEvents {
33
34
  timeout: options?.timeout,
34
35
  });
35
36
  if (!res.ok) {
36
- throw new Error(`ACS status code: ${res.status}`);
37
+ throw new ErrorWithResponse(res, `ACS status code: ${res.status}`);
37
38
  }
38
39
  }
39
40
  getDate() {
@@ -25,6 +25,7 @@ export const widgetSchema = z.object({
25
25
  posY: z.number().nonnegative(),
26
26
  scale: z.number().positive(),
27
27
  });
28
+ const widgetUnitsSchema = z.union([z.literal('metric'), z.literal('imperial'), z.literal('rotate')]);
28
29
  const labelOptionsSchema = z.union([
29
30
  z.literal('blank'),
30
31
  z.literal('registration'),
@@ -186,18 +187,25 @@ export const cameraSettingsSchema = z.object({
186
187
  displaySystemInfo: z.boolean().optional(),
187
188
  })
188
189
  .optional(),
189
- widget: widgetSchema.default({
190
+ widget: widgetSchema
191
+ .extend({
192
+ units: widgetUnitsSchema.default('rotate'),
193
+ })
194
+ .default({
190
195
  enabled: true,
191
196
  coord: 'top_right',
192
197
  posX: 10,
193
198
  posY: 10,
194
199
  scale: 100,
200
+ units: 'rotate',
195
201
  }),
196
202
  airportWidget: widgetSchema
197
203
  .extend({
198
204
  showWeather: z.boolean().default(false),
199
205
  weatherLocationKey: z.string().default(''),
200
206
  weatherLocationName: z.string().default(''),
207
+ windSpeedUnits: widgetUnitsSchema.default('rotate'),
208
+ temperatureUnits: widgetUnitsSchema.default('rotate'),
201
209
  })
202
210
  .default({
203
211
  enabled: true,
@@ -208,6 +216,8 @@ export const cameraSettingsSchema = z.object({
208
216
  showWeather: false,
209
217
  weatherLocationKey: '',
210
218
  weatherLocationName: '',
219
+ windSpeedUnits: 'rotate',
220
+ temperatureUnits: 'rotate',
211
221
  }),
212
222
  fr24FlightInfoSource: z
213
223
  .object({
@@ -86,3 +86,30 @@ describe('cameraSettingsSchema cameraConfig', () => {
86
86
  expect(cameraSettingsSchema.safeParse({ cameraConfig }).success).toBe(false);
87
87
  });
88
88
  });
89
+ describe('cameraSettingsSchema widget units', () => {
90
+ const WIDGET = { coord: 'top_left', posX: 10, posY: 10, scale: 100 };
91
+ test('defaults all widget units to rotate', () => {
92
+ const settings = cameraSettingsSchema.parse({});
93
+ expect(settings.widget.units).toBe('rotate');
94
+ expect(settings.airportWidget.windSpeedUnits).toBe('rotate');
95
+ expect(settings.airportWidget.temperatureUnits).toBe('rotate');
96
+ });
97
+ test('defaults missing units of saved widgets to rotate', () => {
98
+ const settings = cameraSettingsSchema.parse({ widget: WIDGET, airportWidget: WIDGET });
99
+ expect(settings.widget.units).toBe('rotate');
100
+ expect(settings.airportWidget.windSpeedUnits).toBe('rotate');
101
+ expect(settings.airportWidget.temperatureUnits).toBe('rotate');
102
+ });
103
+ test('parses independent widget units', () => {
104
+ const settings = cameraSettingsSchema.parse({
105
+ widget: { ...WIDGET, units: 'imperial' },
106
+ airportWidget: { ...WIDGET, windSpeedUnits: 'rotate', temperatureUnits: 'metric' },
107
+ });
108
+ expect(settings.widget.units).toBe('imperial');
109
+ expect(settings.airportWidget.windSpeedUnits).toBe('rotate');
110
+ expect(settings.airportWidget.temperatureUnits).toBe('metric');
111
+ });
112
+ test('rejects an unknown widget unit', () => {
113
+ expect(cameraSettingsSchema.safeParse({ widget: { ...WIDGET, units: 'kelvin' } }).success).toBe(false);
114
+ });
115
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstreamerlib",
3
- "version": "4.0.36",
3
+ "version": "4.0.37",
4
4
  "description": "Helper library for CamStreamer ACAP applications.",
5
5
  "prettier": "@camstreamer/prettier-config",
6
6
  "engine": {
@@ -87,6 +87,7 @@ export declare class PlaneTrackerAPI<Client extends IClient<TResponse, any>> ext
87
87
  widget: {
88
88
  enabled: boolean;
89
89
  scale: number;
90
+ units: "rotate" | "metric" | "imperial";
90
91
  coord: "top_left" | "top_right" | "bottom_left" | "bottom_right";
91
92
  posX: number;
92
93
  posY: number;
@@ -100,6 +101,8 @@ export declare class PlaneTrackerAPI<Client extends IClient<TResponse, any>> ext
100
101
  posY: number;
101
102
  showWeather: boolean;
102
103
  weatherLocationKey: string;
104
+ windSpeedUnits: "rotate" | "metric" | "imperial";
105
+ temperatureUnits: "rotate" | "metric" | "imperial";
103
106
  };
104
107
  fr24FlightInfoSource: {
105
108
  enabled: boolean;
@@ -3,7 +3,7 @@ import { TStream } from '../types/CamStreamerAPI';
3
3
  import { TOldStream } from '../types/CamStreamerAPI/oldStreamSchema';
4
4
  export declare class ErrorWithResponse<T extends TResponse> extends Error {
5
5
  res: T;
6
- constructor(res: T);
6
+ constructor(res: T, message?: string);
7
7
  }
8
8
  export declare class ServiceUnavailableError extends Error {
9
9
  constructor();
@@ -54,6 +54,8 @@ export declare const widgetSchema: z.ZodObject<{
54
54
  posY: number;
55
55
  enabled?: boolean | undefined;
56
56
  }>;
57
+ declare const widgetUnitsSchema: z.ZodUnion<[z.ZodLiteral<"metric">, z.ZodLiteral<"imperial">, z.ZodLiteral<"rotate">]>;
58
+ export type TWidgetUnits = z.infer<typeof widgetUnitsSchema>;
57
59
  declare const labelOptionsSchema: z.ZodUnion<[z.ZodLiteral<"blank">, z.ZodLiteral<"registration">, z.ZodLiteral<"call_sign">, z.ZodLiteral<"flight_number">, z.ZodLiteral<"icao">]>;
58
60
  export type TLabelOption = z.infer<typeof labelOptionsSchema>;
59
61
  declare const droneLabelOptionsSchema: z.ZodUnion<[z.ZodLiteral<"blank">, z.ZodLiteral<"remote_id">]>;
@@ -313,9 +315,12 @@ export declare const cameraSettingsSchema: z.ZodObject<{
313
315
  posX: z.ZodNumber;
314
316
  posY: z.ZodNumber;
315
317
  scale: z.ZodNumber;
318
+ } & {
319
+ units: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"metric">, z.ZodLiteral<"imperial">, z.ZodLiteral<"rotate">]>>;
316
320
  }, "strip", z.ZodTypeAny, {
317
321
  enabled: boolean;
318
322
  scale: number;
323
+ units: "rotate" | "metric" | "imperial";
319
324
  coord: "top_left" | "top_right" | "bottom_left" | "bottom_right";
320
325
  posX: number;
321
326
  posY: number;
@@ -325,6 +330,7 @@ export declare const cameraSettingsSchema: z.ZodObject<{
325
330
  posX: number;
326
331
  posY: number;
327
332
  enabled?: boolean | undefined;
333
+ units?: "rotate" | "metric" | "imperial" | undefined;
328
334
  }>>;
329
335
  airportWidget: z.ZodDefault<z.ZodObject<{
330
336
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -336,6 +342,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
336
342
  showWeather: z.ZodDefault<z.ZodBoolean>;
337
343
  weatherLocationKey: z.ZodDefault<z.ZodString>;
338
344
  weatherLocationName: z.ZodDefault<z.ZodString>;
345
+ windSpeedUnits: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"metric">, z.ZodLiteral<"imperial">, z.ZodLiteral<"rotate">]>>;
346
+ temperatureUnits: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"metric">, z.ZodLiteral<"imperial">, z.ZodLiteral<"rotate">]>>;
339
347
  }, "strip", z.ZodTypeAny, {
340
348
  enabled: boolean;
341
349
  scale: number;
@@ -345,6 +353,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
345
353
  posY: number;
346
354
  showWeather: boolean;
347
355
  weatherLocationKey: string;
356
+ windSpeedUnits: "rotate" | "metric" | "imperial";
357
+ temperatureUnits: "rotate" | "metric" | "imperial";
348
358
  }, {
349
359
  scale: number;
350
360
  coord: "top_left" | "top_right" | "bottom_left" | "bottom_right";
@@ -354,6 +364,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
354
364
  weatherLocationName?: string | undefined;
355
365
  showWeather?: boolean | undefined;
356
366
  weatherLocationKey?: string | undefined;
367
+ windSpeedUnits?: "rotate" | "metric" | "imperial" | undefined;
368
+ temperatureUnits?: "rotate" | "metric" | "imperial" | undefined;
357
369
  }>>;
358
370
  fr24FlightInfoSource: z.ZodDefault<z.ZodObject<{
359
371
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -614,6 +626,7 @@ export declare const cameraSettingsSchema: z.ZodObject<{
614
626
  widget: {
615
627
  enabled: boolean;
616
628
  scale: number;
629
+ units: "rotate" | "metric" | "imperial";
617
630
  coord: "top_left" | "top_right" | "bottom_left" | "bottom_right";
618
631
  posX: number;
619
632
  posY: number;
@@ -627,6 +640,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
627
640
  posY: number;
628
641
  showWeather: boolean;
629
642
  weatherLocationKey: string;
643
+ windSpeedUnits: "rotate" | "metric" | "imperial";
644
+ temperatureUnits: "rotate" | "metric" | "imperial";
630
645
  };
631
646
  fr24FlightInfoSource: {
632
647
  enabled: boolean;
@@ -802,6 +817,7 @@ export declare const cameraSettingsSchema: z.ZodObject<{
802
817
  posX: number;
803
818
  posY: number;
804
819
  enabled?: boolean | undefined;
820
+ units?: "rotate" | "metric" | "imperial" | undefined;
805
821
  } | undefined;
806
822
  airportWidget?: {
807
823
  scale: number;
@@ -812,6 +828,8 @@ export declare const cameraSettingsSchema: z.ZodObject<{
812
828
  weatherLocationName?: string | undefined;
813
829
  showWeather?: boolean | undefined;
814
830
  weatherLocationKey?: string | undefined;
831
+ windSpeedUnits?: "rotate" | "metric" | "imperial" | undefined;
832
+ temperatureUnits?: "rotate" | "metric" | "imperial" | undefined;
815
833
  } | undefined;
816
834
  fr24FlightInfoSource?: {
817
835
  enabled?: boolean | undefined;