camstreamerlib 4.0.16 → 4.0.17-979db019

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.
@@ -7,6 +7,9 @@ declare const wsApiFlightDataSchema: z.ZodObject<{
7
7
  groupId: z.ZodOptional<z.ZodString>;
8
8
  lat: z.ZodNumber;
9
9
  lon: z.ZodNumber;
10
+ observedLat: z.ZodNumber;
11
+ observedLon: z.ZodNumber;
12
+ positionTimestamp: z.ZodNumber;
10
13
  heading: z.ZodNumber;
11
14
  groundSpeed: z.ZodNumber;
12
15
  altitudeAMSL: z.ZodNumber;
@@ -28,6 +31,9 @@ declare const wsApiFlightDataSchema: z.ZodObject<{
28
31
  lat: number;
29
32
  lon: number;
30
33
  categoryId: string;
34
+ observedLat: number;
35
+ observedLon: number;
36
+ positionTimestamp: number;
31
37
  heading: number;
32
38
  groundSpeed: number;
33
39
  altitudeAMSL: number;
@@ -50,6 +56,9 @@ declare const wsApiFlightDataSchema: z.ZodObject<{
50
56
  lat: number;
51
57
  lon: number;
52
58
  categoryId: string;
59
+ observedLat: number;
60
+ observedLon: number;
61
+ positionTimestamp: number;
53
62
  heading: number;
54
63
  groundSpeed: number;
55
64
  altitudeAMSL: number;
@@ -72,18 +81,21 @@ declare const wsCameraPositionDataSchema: z.ZodObject<{
72
81
  azimuth: z.ZodNumber;
73
82
  elevation: z.ZodNumber;
74
83
  fov: z.ZodNumber;
84
+ sampledAt: z.ZodNumber;
75
85
  }, "strip", z.ZodTypeAny, {
76
86
  lat: number;
77
87
  lon: number;
78
88
  azimuth: number;
79
89
  elevation: number;
80
90
  fov: number;
91
+ sampledAt: number;
81
92
  }, {
82
93
  lat: number;
83
94
  lon: number;
84
95
  azimuth: number;
85
96
  elevation: number;
86
97
  fov: number;
98
+ sampledAt: number;
87
99
  }>;
88
100
  declare const apiUserSchema: z.ZodObject<{
89
101
  userId: z.ZodString;
@@ -126,6 +138,7 @@ declare const eventsDataSchema: z.ZodUnion<readonly [z.ZodObject<{
126
138
  azimuth: z.ZodNumber;
127
139
  elevation: z.ZodNumber;
128
140
  fov: z.ZodNumber;
141
+ sampledAt: z.ZodNumber;
129
142
  }, "strip", z.ZodTypeAny, {
130
143
  type: "CAMERA_POSITION";
131
144
  lat: number;
@@ -133,6 +146,7 @@ declare const eventsDataSchema: z.ZodUnion<readonly [z.ZodObject<{
133
146
  azimuth: number;
134
147
  elevation: number;
135
148
  fov: number;
149
+ sampledAt: number;
136
150
  }, {
137
151
  type: "CAMERA_POSITION";
138
152
  lat: number;
@@ -140,6 +154,7 @@ declare const eventsDataSchema: z.ZodUnion<readonly [z.ZodObject<{
140
154
  azimuth: number;
141
155
  elevation: number;
142
156
  fov: number;
157
+ sampledAt: number;
143
158
  }>, z.ZodObject<{
144
159
  type: z.ZodLiteral<"TRACKING_START">;
145
160
  icao: z.ZodString;
@@ -174,6 +189,9 @@ declare const eventsDataSchema: z.ZodUnion<readonly [z.ZodObject<{
174
189
  groupId: z.ZodOptional<z.ZodString>;
175
190
  lat: z.ZodNumber;
176
191
  lon: z.ZodNumber;
192
+ observedLat: z.ZodNumber;
193
+ observedLon: z.ZodNumber;
194
+ positionTimestamp: z.ZodNumber;
177
195
  heading: z.ZodNumber;
178
196
  groundSpeed: z.ZodNumber;
179
197
  altitudeAMSL: z.ZodNumber;
@@ -195,6 +213,9 @@ declare const eventsDataSchema: z.ZodUnion<readonly [z.ZodObject<{
195
213
  lat: number;
196
214
  lon: number;
197
215
  categoryId: string;
216
+ observedLat: number;
217
+ observedLon: number;
218
+ positionTimestamp: number;
198
219
  heading: number;
199
220
  groundSpeed: number;
200
221
  altitudeAMSL: number;
@@ -217,6 +238,9 @@ declare const eventsDataSchema: z.ZodUnion<readonly [z.ZodObject<{
217
238
  lat: number;
218
239
  lon: number;
219
240
  categoryId: string;
241
+ observedLat: number;
242
+ observedLon: number;
243
+ positionTimestamp: number;
220
244
  heading: number;
221
245
  groundSpeed: number;
222
246
  altitudeAMSL: number;
@@ -242,6 +266,9 @@ declare const eventsDataSchema: z.ZodUnion<readonly [z.ZodObject<{
242
266
  lat: number;
243
267
  lon: number;
244
268
  categoryId: string;
269
+ observedLat: number;
270
+ observedLon: number;
271
+ positionTimestamp: number;
245
272
  heading: number;
246
273
  groundSpeed: number;
247
274
  altitudeAMSL: number;
@@ -267,6 +294,9 @@ declare const eventsDataSchema: z.ZodUnion<readonly [z.ZodObject<{
267
294
  lat: number;
268
295
  lon: number;
269
296
  categoryId: string;
297
+ observedLat: number;
298
+ observedLon: number;
299
+ positionTimestamp: number;
270
300
  heading: number;
271
301
  groundSpeed: number;
272
302
  altitudeAMSL: number;
@@ -1162,6 +1192,7 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
1162
1192
  azimuth: z.ZodNumber;
1163
1193
  elevation: z.ZodNumber;
1164
1194
  fov: z.ZodNumber;
1195
+ sampledAt: z.ZodNumber;
1165
1196
  }, "strip", z.ZodTypeAny, {
1166
1197
  type: "CAMERA_POSITION";
1167
1198
  lat: number;
@@ -1169,6 +1200,7 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
1169
1200
  azimuth: number;
1170
1201
  elevation: number;
1171
1202
  fov: number;
1203
+ sampledAt: number;
1172
1204
  }, {
1173
1205
  type: "CAMERA_POSITION";
1174
1206
  lat: number;
@@ -1176,6 +1208,7 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
1176
1208
  azimuth: number;
1177
1209
  elevation: number;
1178
1210
  fov: number;
1211
+ sampledAt: number;
1179
1212
  }>, z.ZodObject<{
1180
1213
  type: z.ZodLiteral<"TRACKING_START">;
1181
1214
  icao: z.ZodString;
@@ -1210,6 +1243,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
1210
1243
  groupId: z.ZodOptional<z.ZodString>;
1211
1244
  lat: z.ZodNumber;
1212
1245
  lon: z.ZodNumber;
1246
+ observedLat: z.ZodNumber;
1247
+ observedLon: z.ZodNumber;
1248
+ positionTimestamp: z.ZodNumber;
1213
1249
  heading: z.ZodNumber;
1214
1250
  groundSpeed: z.ZodNumber;
1215
1251
  altitudeAMSL: z.ZodNumber;
@@ -1231,6 +1267,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
1231
1267
  lat: number;
1232
1268
  lon: number;
1233
1269
  categoryId: string;
1270
+ observedLat: number;
1271
+ observedLon: number;
1272
+ positionTimestamp: number;
1234
1273
  heading: number;
1235
1274
  groundSpeed: number;
1236
1275
  altitudeAMSL: number;
@@ -1253,6 +1292,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
1253
1292
  lat: number;
1254
1293
  lon: number;
1255
1294
  categoryId: string;
1295
+ observedLat: number;
1296
+ observedLon: number;
1297
+ positionTimestamp: number;
1256
1298
  heading: number;
1257
1299
  groundSpeed: number;
1258
1300
  altitudeAMSL: number;
@@ -1278,6 +1320,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
1278
1320
  lat: number;
1279
1321
  lon: number;
1280
1322
  categoryId: string;
1323
+ observedLat: number;
1324
+ observedLon: number;
1325
+ positionTimestamp: number;
1281
1326
  heading: number;
1282
1327
  groundSpeed: number;
1283
1328
  altitudeAMSL: number;
@@ -1303,6 +1348,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
1303
1348
  lat: number;
1304
1349
  lon: number;
1305
1350
  categoryId: string;
1351
+ observedLat: number;
1352
+ observedLon: number;
1353
+ positionTimestamp: number;
1306
1354
  heading: number;
1307
1355
  groundSpeed: number;
1308
1356
  altitudeAMSL: number;
@@ -2197,6 +2245,7 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2197
2245
  azimuth: number;
2198
2246
  elevation: number;
2199
2247
  fov: number;
2248
+ sampledAt: number;
2200
2249
  } | {
2201
2250
  type: "TRACKING_START";
2202
2251
  icao: string;
@@ -2214,6 +2263,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2214
2263
  lat: number;
2215
2264
  lon: number;
2216
2265
  categoryId: string;
2266
+ observedLat: number;
2267
+ observedLon: number;
2268
+ positionTimestamp: number;
2217
2269
  heading: number;
2218
2270
  groundSpeed: number;
2219
2271
  altitudeAMSL: number;
@@ -2436,6 +2488,7 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2436
2488
  azimuth: number;
2437
2489
  elevation: number;
2438
2490
  fov: number;
2491
+ sampledAt: number;
2439
2492
  } | {
2440
2493
  type: "TRACKING_START";
2441
2494
  icao: string;
@@ -2453,6 +2506,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2453
2506
  lat: number;
2454
2507
  lon: number;
2455
2508
  categoryId: string;
2509
+ observedLat: number;
2510
+ observedLon: number;
2511
+ positionTimestamp: number;
2456
2512
  heading: number;
2457
2513
  groundSpeed: number;
2458
2514
  altitudeAMSL: number;
@@ -2674,6 +2730,7 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2674
2730
  azimuth: z.ZodNumber;
2675
2731
  elevation: z.ZodNumber;
2676
2732
  fov: z.ZodNumber;
2733
+ sampledAt: z.ZodNumber;
2677
2734
  }, "strip", z.ZodTypeAny, {
2678
2735
  type: "CAMERA_POSITION";
2679
2736
  lat: number;
@@ -2681,6 +2738,7 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2681
2738
  azimuth: number;
2682
2739
  elevation: number;
2683
2740
  fov: number;
2741
+ sampledAt: number;
2684
2742
  }, {
2685
2743
  type: "CAMERA_POSITION";
2686
2744
  lat: number;
@@ -2688,6 +2746,7 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2688
2746
  azimuth: number;
2689
2747
  elevation: number;
2690
2748
  fov: number;
2749
+ sampledAt: number;
2691
2750
  }>, z.ZodObject<{
2692
2751
  type: z.ZodLiteral<"TRACKING_START">;
2693
2752
  icao: z.ZodString;
@@ -2722,6 +2781,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2722
2781
  groupId: z.ZodOptional<z.ZodString>;
2723
2782
  lat: z.ZodNumber;
2724
2783
  lon: z.ZodNumber;
2784
+ observedLat: z.ZodNumber;
2785
+ observedLon: z.ZodNumber;
2786
+ positionTimestamp: z.ZodNumber;
2725
2787
  heading: z.ZodNumber;
2726
2788
  groundSpeed: z.ZodNumber;
2727
2789
  altitudeAMSL: z.ZodNumber;
@@ -2743,6 +2805,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2743
2805
  lat: number;
2744
2806
  lon: number;
2745
2807
  categoryId: string;
2808
+ observedLat: number;
2809
+ observedLon: number;
2810
+ positionTimestamp: number;
2746
2811
  heading: number;
2747
2812
  groundSpeed: number;
2748
2813
  altitudeAMSL: number;
@@ -2765,6 +2830,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2765
2830
  lat: number;
2766
2831
  lon: number;
2767
2832
  categoryId: string;
2833
+ observedLat: number;
2834
+ observedLon: number;
2835
+ positionTimestamp: number;
2768
2836
  heading: number;
2769
2837
  groundSpeed: number;
2770
2838
  altitudeAMSL: number;
@@ -2790,6 +2858,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2790
2858
  lat: number;
2791
2859
  lon: number;
2792
2860
  categoryId: string;
2861
+ observedLat: number;
2862
+ observedLon: number;
2863
+ positionTimestamp: number;
2793
2864
  heading: number;
2794
2865
  groundSpeed: number;
2795
2866
  altitudeAMSL: number;
@@ -2815,6 +2886,9 @@ export declare const ptrEventsSchema: z.ZodUnion<readonly [z.ZodObject<{
2815
2886
  lat: number;
2816
2887
  lon: number;
2817
2888
  categoryId: string;
2889
+ observedLat: number;
2890
+ observedLon: number;
2891
+ positionTimestamp: number;
2818
2892
  heading: number;
2819
2893
  groundSpeed: number;
2820
2894
  altitudeAMSL: number;
@@ -11,6 +11,9 @@ const wsApiFlightDataSchema = zod_1.z.object({
11
11
  groupId: zod_1.z.string().optional(),
12
12
  lat: zod_1.z.number(),
13
13
  lon: zod_1.z.number(),
14
+ observedLat: zod_1.z.number(),
15
+ observedLon: zod_1.z.number(),
16
+ positionTimestamp: zod_1.z.number(),
14
17
  heading: zod_1.z.number(),
15
18
  groundSpeed: zod_1.z.number(),
16
19
  altitudeAMSL: zod_1.z.number(),
@@ -32,6 +35,7 @@ const wsCameraPositionDataSchema = zod_1.z.object({
32
35
  azimuth: zod_1.z.number().min(0).max(360),
33
36
  elevation: zod_1.z.number().min(-90).max(90),
34
37
  fov: zod_1.z.number(),
38
+ sampledAt: zod_1.z.number(),
35
39
  });
36
40
  const userSchema = zod_1.z.object({
37
41
  userId: zod_1.z.string(),
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { blackListSchema, cameraSettingsSchema, domainListSchema, flightInfoSchema, getIcaoSchema, mapInfoSchema, priorityListSchema, serverSettingsSchema, trackingModeSchema, whiteListSchema, wsAliasResponseSchema, zonesSchema, } from './types/PlaneTrackerAPI';
2
+ import { blackListSchema, cameraSettingsSchema, domainListSchema, flightInfoSchema, getIcaoSchema, mapInfoSchema, milestoneCameraListSchema, priorityListSchema, serverSettingsSchema, trackingModeSchema, whiteListSchema, wsAliasResponseSchema, zonesSchema, } from './types/PlaneTrackerAPI';
3
3
  import { CannotSetCoordsInAutoModeError, ImportSettingsError, InvalidAltitudeError, InvalidLatLngError, ResetCalibrationError, ServerError, BadRequestError, } from './errors/errors';
4
4
  import { BasicAPI } from './internal/BasicAPI';
5
5
  const BASE_PATH = '/local/planetracker';
@@ -193,6 +193,19 @@ export class PlaneTrackerAPI extends BasicAPI {
193
193
  }
194
194
  }
195
195
  }
196
+ async checkMilestoneConnection(params, options) {
197
+ try {
198
+ await this._postUrlEncoded(`${BASE_PATH}/package/checkMilestoneConnection.cgi`, { ...params }, options);
199
+ return true;
200
+ }
201
+ catch {
202
+ return false;
203
+ }
204
+ }
205
+ async getMilestoneCameraList(params, options) {
206
+ const res = await this._postUrlEncoded(`${BASE_PATH}/package/getMilestoneCameraList.cgi`, { ...params }, options);
207
+ return milestoneCameraListSchema.parse(await res.json());
208
+ }
196
209
  downloadReport(options) {
197
210
  return this._getText(`${BASE_PATH}/report.cgi`, undefined, options);
198
211
  }
@@ -0,0 +1,120 @@
1
+ import { ErrorWithResponse } from '../../errors/errors';
2
+ import { HttpRequestSender } from '../HttpRequestSender';
3
+ import { camerasResponseSchema, tokenResponseSchema, } from '../../types/MilestoneAgent';
4
+ const CLIENT_ID = 'GrantValidatorClient';
5
+ const PAGE_SIZE = 100;
6
+ const TOKEN_EXPIRY_MARGIN_SEC = 60;
7
+ export class MilestoneAgent {
8
+ settings;
9
+ protocol;
10
+ sender;
11
+ token;
12
+ constructor(options = {}) {
13
+ this.settings = {
14
+ protocol: options.protocol ?? 'https_insecure',
15
+ ip: options.ip ?? '127.0.0.1',
16
+ port: options.port ?? 443,
17
+ user: options.user ?? '',
18
+ pass: options.pass ?? '',
19
+ timeout: options.timeout ?? 10000,
20
+ };
21
+ this.protocol = this.settings.protocol === 'http' ? 'http:' : 'https:';
22
+ const tlsInsecure = this.settings.protocol === 'https_insecure';
23
+ this.sender = new HttpRequestSender({ rejectUnaurhorized: !tlsInsecure });
24
+ }
25
+ async checkConnection() {
26
+ await this.getToken(true);
27
+ await this.getCamerasPage(0, 1);
28
+ }
29
+ async getAllCameras() {
30
+ const cameras = [];
31
+ let page = 0;
32
+ for (;;) {
33
+ const pageCameras = await this.getCamerasPage(page, PAGE_SIZE);
34
+ cameras.push(...pageCameras);
35
+ if (pageCameras.length < PAGE_SIZE) {
36
+ break;
37
+ }
38
+ page += 1;
39
+ }
40
+ return cameras;
41
+ }
42
+ async sendBookmark(cameraId, bookmark) {
43
+ const token = await this.getToken();
44
+ const body = JSON.stringify({
45
+ ...bookmark,
46
+ devicePath: { type: 'cameras', id: cameraId },
47
+ });
48
+ const res = await this.sender.sendRequest(this.getRequestOptions('POST', '/api/rest/v1/bookmarks', token, {
49
+ 'Content-Type': 'application/json',
50
+ }), body);
51
+ if (!res.ok) {
52
+ throw new ErrorWithResponse(res);
53
+ }
54
+ }
55
+ async getCamerasPage(page, size) {
56
+ const token = await this.getToken();
57
+ const res = await this.sender.sendRequest(this.getRequestOptions('GET', `/api/rest/v1/cameras?page=${page}&size=${size}`, token));
58
+ if (!res.ok) {
59
+ throw new ErrorWithResponse(res);
60
+ }
61
+ const responseBody = await res.text();
62
+ const result = await camerasResponseSchema.safeParseAsync(JSON.parse(responseBody));
63
+ if (!result.success) {
64
+ throw new Error('Milestone get cameras failed: ' + JSON.stringify(result.error.issues) + '\n' + responseBody);
65
+ }
66
+ return result.data.array;
67
+ }
68
+ async getToken(forceRefresh = false) {
69
+ const nowSec = Date.now() / 1000;
70
+ if (!forceRefresh && this.token !== undefined && this.token.expiresAt > nowSec) {
71
+ return this.token.value;
72
+ }
73
+ const body = new URLSearchParams({
74
+ grant_type: 'password',
75
+ username: this.settings.user,
76
+ password: this.settings.pass,
77
+ client_id: CLIENT_ID,
78
+ }).toString();
79
+ const res = await this.sender.sendRequest({
80
+ method: 'POST',
81
+ protocol: this.protocol,
82
+ host: this.settings.ip,
83
+ port: this.settings.port,
84
+ path: '/idp/connect/token',
85
+ timeout: this.settings.timeout,
86
+ headers: {
87
+ 'Content-Type': 'application/x-www-form-urlencoded',
88
+ 'Accept': 'application/json',
89
+ },
90
+ }, body);
91
+ if (!res.ok) {
92
+ throw new ErrorWithResponse(res);
93
+ }
94
+ const responseBody = await res.text();
95
+ const result = await tokenResponseSchema.safeParseAsync(JSON.parse(responseBody));
96
+ if (!result.success) {
97
+ throw new Error('Milestone authorization failed: ' + JSON.stringify(result.error.issues) + '\n' + responseBody);
98
+ }
99
+ this.token = {
100
+ value: result.data.access_token,
101
+ expiresAt: nowSec + result.data.expires_in - TOKEN_EXPIRY_MARGIN_SEC,
102
+ };
103
+ return this.token.value;
104
+ }
105
+ getRequestOptions(method, path, token, extraHeaders) {
106
+ return {
107
+ method,
108
+ protocol: this.protocol,
109
+ host: this.settings.ip,
110
+ port: this.settings.port,
111
+ path,
112
+ timeout: this.settings.timeout,
113
+ headers: {
114
+ Authorization: `Bearer ${token}`,
115
+ Accept: 'application/json',
116
+ ...extraHeaders,
117
+ },
118
+ };
119
+ }
120
+ }
package/esm/node/index.js CHANGED
@@ -6,6 +6,8 @@ export * from './events/AxisCameraStationEvents';
6
6
  export * from './TimeZoneDaemon';
7
7
  export * from './events/GenetecAgent';
8
8
  export * from '../types/GenetecAgent';
9
+ export * from './events/MilestoneAgent';
10
+ export * from '../types/MilestoneAgent';
9
11
  export { ResourceManager } from './CamOverlayPainter/ResourceManager';
10
12
  export { Painter } from './CamOverlayPainter/Painter';
11
13
  export { Frame } from './CamOverlayPainter/Frame';
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export const tokenResponseSchema = z.object({
3
+ access_token: z.string(),
4
+ expires_in: z.number(),
5
+ token_type: z.string(),
6
+ });
7
+ export const milestoneCameraSchema = z.object({
8
+ id: z.string(),
9
+ name: z.string().optional(),
10
+ displayName: z.string().optional(),
11
+ enabled: z.boolean().optional(),
12
+ });
13
+ export const camerasResponseSchema = z.object({
14
+ array: z.array(milestoneCameraSchema),
15
+ });
@@ -11,6 +11,13 @@ export const connectionSchema = z.object({
11
11
  user: z.string(),
12
12
  pass: z.string(),
13
13
  });
14
+ export const milestoneCameraListSchema = z
15
+ .object({
16
+ index: z.number(),
17
+ value: z.string(),
18
+ label: z.string(),
19
+ })
20
+ .array();
14
21
  export const widgetSchema = z.object({
15
22
  enabled: z.boolean().default(true),
16
23
  coord: z.union([
@@ -199,6 +206,20 @@ export const cameraSettingsSchema = z.object({
199
206
  pass: '',
200
207
  sourceKey: '',
201
208
  }),
209
+ milestone: connectionSchema
210
+ .extend({
211
+ enabled: z.boolean(),
212
+ cameraList: z.string().array().default([]),
213
+ })
214
+ .default({
215
+ enabled: false,
216
+ protocol: 'https_insecure',
217
+ ip: '',
218
+ port: 443,
219
+ user: '',
220
+ pass: '',
221
+ cameraList: [],
222
+ }),
202
223
  camstreamerIntegration: z
203
224
  .object({
204
225
  adPlacementEnabled: z.boolean(),
@@ -8,6 +8,9 @@ const wsApiFlightDataSchema = z.object({
8
8
  groupId: z.string().optional(),
9
9
  lat: z.number(),
10
10
  lon: z.number(),
11
+ observedLat: z.number(),
12
+ observedLon: z.number(),
13
+ positionTimestamp: z.number(),
11
14
  heading: z.number(),
12
15
  groundSpeed: z.number(),
13
16
  altitudeAMSL: z.number(),
@@ -29,6 +32,7 @@ const wsCameraPositionDataSchema = z.object({
29
32
  azimuth: z.number().min(0).max(360),
30
33
  elevation: z.number().min(-90).max(90),
31
34
  fov: z.number(),
35
+ sampledAt: z.number(),
32
36
  });
33
37
  const userSchema = z.object({
34
38
  userId: z.string(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstreamerlib",
3
- "version": "4.0.16",
3
+ "version": "4.0.17-979db019",
4
4
  "description": "Helper library for CamStreamer ACAP applications.",
5
5
  "prettier": "@camstreamer/prettier-config",
6
6
  "engine": {
@@ -1,5 +1,5 @@
1
1
  import { IClient, TResponse } from './internal/types';
2
- import { ICAO, TBlackList, TCameraSettings, TExportDataType, TGetIcaoByOption, TImportDataType, TPriorityList, TTrackingMode, TWhiteList, TZones } from './types/PlaneTrackerAPI';
2
+ import { ICAO, TBlackList, TCameraSettings, TConnection, TExportDataType, TGetIcaoByOption, TImportDataType, TMilestoneCameraOption, TPriorityList, TTrackingMode, TWhiteList, TZones } from './types/PlaneTrackerAPI';
3
3
  import { THttpRequestOptions } from './types/common';
4
4
  import { BasicAPI } from './internal/BasicAPI';
5
5
  import { TApiUser } from './types/ws/PlaneTrackerEvents';
@@ -107,6 +107,15 @@ export declare class PlaneTrackerAPI<Client extends IClient<TResponse, any>> ext
107
107
  protocol: "https" | "http" | "https_insecure";
108
108
  sourceKey: string;
109
109
  };
110
+ milestone: {
111
+ ip: string;
112
+ enabled: boolean;
113
+ port: number;
114
+ cameraList: string[];
115
+ pass: string;
116
+ user: string;
117
+ protocol: "https" | "http" | "https_insecure";
118
+ };
110
119
  camstreamerIntegration: {
111
120
  adPlacementEnabled: boolean;
112
121
  adMinIntervalSec: number;
@@ -250,5 +259,7 @@ export declare class PlaneTrackerAPI<Client extends IClient<TResponse, any>> ext
250
259
  }>;
251
260
  setZones(zones: TZones, options?: THttpRequestOptions): Promise<void>;
252
261
  goToCoordinates(lat: number, lon: number, alt?: number, options?: THttpRequestOptions): Promise<void>;
262
+ checkMilestoneConnection(params: TConnection, options?: THttpRequestOptions): Promise<boolean>;
263
+ getMilestoneCameraList(params: TConnection, options?: THttpRequestOptions): Promise<TMilestoneCameraOption[]>;
253
264
  downloadReport(options?: THttpRequestOptions): Promise<string>;
254
265
  }
@@ -0,0 +1,14 @@
1
+ import { MilestoneAgentOptions, TBookmark, TMilestoneCamera } from '../../types/MilestoneAgent';
2
+ export declare class MilestoneAgent {
3
+ private settings;
4
+ private protocol;
5
+ private sender;
6
+ private token?;
7
+ constructor(options?: MilestoneAgentOptions);
8
+ checkConnection(): Promise<void>;
9
+ getAllCameras(): Promise<TMilestoneCamera[]>;
10
+ sendBookmark(cameraId: string, bookmark: TBookmark): Promise<void>;
11
+ private getCamerasPage;
12
+ private getToken;
13
+ private getRequestOptions;
14
+ }
@@ -6,6 +6,8 @@ export * from './events/AxisCameraStationEvents';
6
6
  export * from './TimeZoneDaemon';
7
7
  export * from './events/GenetecAgent';
8
8
  export * from '../types/GenetecAgent';
9
+ export * from './events/MilestoneAgent';
10
+ export * from '../types/MilestoneAgent';
9
11
  export { ResourceManager } from './CamOverlayPainter/ResourceManager';
10
12
  export { Painter } from './CamOverlayPainter/Painter';
11
13
  export { Frame } from './CamOverlayPainter/Frame';
@@ -0,0 +1,81 @@
1
+ import { z } from 'zod';
2
+ export type MilestoneAgentOptions = {
3
+ protocol?: 'http' | 'https' | 'https_insecure';
4
+ ip?: string;
5
+ port?: number;
6
+ user?: string;
7
+ pass?: string;
8
+ timeout?: number;
9
+ };
10
+ export declare const tokenResponseSchema: z.ZodObject<{
11
+ access_token: z.ZodString;
12
+ expires_in: z.ZodNumber;
13
+ token_type: z.ZodString;
14
+ }, "strip", z.ZodTypeAny, {
15
+ access_token: string;
16
+ expires_in: number;
17
+ token_type: string;
18
+ }, {
19
+ access_token: string;
20
+ expires_in: number;
21
+ token_type: string;
22
+ }>;
23
+ export type TTokenResponse = z.infer<typeof tokenResponseSchema>;
24
+ export declare const milestoneCameraSchema: z.ZodObject<{
25
+ id: z.ZodString;
26
+ name: z.ZodOptional<z.ZodString>;
27
+ displayName: z.ZodOptional<z.ZodString>;
28
+ enabled: z.ZodOptional<z.ZodBoolean>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ id: string;
31
+ name?: string | undefined;
32
+ enabled?: boolean | undefined;
33
+ displayName?: string | undefined;
34
+ }, {
35
+ id: string;
36
+ name?: string | undefined;
37
+ enabled?: boolean | undefined;
38
+ displayName?: string | undefined;
39
+ }>;
40
+ export type TMilestoneCamera = z.infer<typeof milestoneCameraSchema>;
41
+ export declare const camerasResponseSchema: z.ZodObject<{
42
+ array: z.ZodArray<z.ZodObject<{
43
+ id: z.ZodString;
44
+ name: z.ZodOptional<z.ZodString>;
45
+ displayName: z.ZodOptional<z.ZodString>;
46
+ enabled: z.ZodOptional<z.ZodBoolean>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ id: string;
49
+ name?: string | undefined;
50
+ enabled?: boolean | undefined;
51
+ displayName?: string | undefined;
52
+ }, {
53
+ id: string;
54
+ name?: string | undefined;
55
+ enabled?: boolean | undefined;
56
+ displayName?: string | undefined;
57
+ }>, "many">;
58
+ }, "strip", z.ZodTypeAny, {
59
+ array: {
60
+ id: string;
61
+ name?: string | undefined;
62
+ enabled?: boolean | undefined;
63
+ displayName?: string | undefined;
64
+ }[];
65
+ }, {
66
+ array: {
67
+ id: string;
68
+ name?: string | undefined;
69
+ enabled?: boolean | undefined;
70
+ displayName?: string | undefined;
71
+ }[];
72
+ }>;
73
+ export type TCamerasResponse = z.infer<typeof camerasResponseSchema>;
74
+ export type TBookmark = {
75
+ header: string;
76
+ description: string;
77
+ timeBegin: string;
78
+ timeEnd: string;
79
+ timeTriggered: string;
80
+ reference: string;
81
+ };