@camera.ui/browser 0.0.74 → 0.0.76

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.
Files changed (49) hide show
  1. package/dist/bundle.js +1 -1
  2. package/dist/types/packages/client/browser/src/types.d.ts +1 -1
  3. package/dist/types/server/src/api/controllers/cameras.controller.d.ts +5 -5
  4. package/dist/types/server/src/api/controllers/frameWorkers.controller.d.ts +16 -0
  5. package/dist/types/server/src/api/database/types.d.ts +23 -5
  6. package/dist/types/server/src/api/routes/frameWorkers.routes.d.ts +2 -0
  7. package/dist/types/server/src/api/schemas/cameras.schema.d.ts +231 -158
  8. package/dist/types/server/src/api/schemas/go2rtc.schema.d.ts +105 -6
  9. package/dist/types/server/src/api/schemas/users.schema.d.ts +2 -2
  10. package/dist/types/server/src/api/services/auth.service.d.ts +0 -1
  11. package/dist/types/server/src/api/services/cameras.service.d.ts +4 -3
  12. package/dist/types/server/src/api/services/plugins.service.d.ts +0 -1
  13. package/dist/types/server/src/api/services/users.service.d.ts +0 -1
  14. package/dist/types/server/src/api/types/index.d.ts +14 -6
  15. package/dist/types/server/src/api/websocket/nsp/frameWorker.d.ts +13 -0
  16. package/dist/types/server/src/api/websocket/nsp/metrics.d.ts +6 -1
  17. package/dist/types/server/src/api/websocket/nsp/status.d.ts +6 -0
  18. package/dist/types/server/src/api/websocket/types.d.ts +6 -2
  19. package/dist/types/server/src/api.d.ts +1 -1
  20. package/dist/types/server/src/camera/{controller/index.d.ts → controller.d.ts} +10 -7
  21. package/dist/types/server/src/camera/{cameraDevice.d.ts → device.d.ts} +11 -3
  22. package/dist/types/server/src/camera/index.d.ts +21 -15
  23. package/dist/types/server/src/camera/polygon.d.ts +3 -0
  24. package/dist/types/server/src/camera/streaming/peer-connection.d.ts +2 -2
  25. package/dist/types/server/src/camera/streaming/streaming-session.d.ts +2 -2
  26. package/dist/types/server/src/camera/streaming/webrtc-connection.d.ts +2 -2
  27. package/dist/types/server/src/camera/{controller/types.d.ts → types.d.ts} +22 -13
  28. package/dist/types/server/src/camera/videoFrame.d.ts +25 -0
  29. package/dist/types/server/src/decoder/index.d.ts +1 -12
  30. package/dist/types/server/src/decoder/types.d.ts +40 -11
  31. package/dist/types/server/src/decoder/worker.d.ts +16 -16
  32. package/dist/types/server/src/nats/constants.d.ts +0 -1
  33. package/dist/types/server/src/nats/index.d.ts +2 -2
  34. package/dist/types/server/src/nats/proxy/cameraDevice.d.ts +2 -7
  35. package/dist/types/server/src/nats/proxy/deviceManager.d.ts +1 -1
  36. package/dist/types/server/src/nats/server.d.ts +4 -2
  37. package/dist/types/server/src/nats/types.d.ts +6 -10
  38. package/dist/types/server/src/nats/websocket.d.ts +1 -1
  39. package/dist/types/server/src/plugins/base.d.ts +1 -1
  40. package/dist/types/server/src/plugins/types.d.ts +2 -0
  41. package/dist/types/server/src/polyglot/node/plugins/api.d.ts +1 -1
  42. package/dist/types/server/src/polyglot/node/plugins/proxy/cameraDevice.d.ts +34 -19
  43. package/dist/types/server/src/polyglot/node/plugins/proxy/deviceManager.d.ts +11 -9
  44. package/dist/types/server/src/polyglot/node/plugins/proxy/pluginsManager.d.ts +8 -7
  45. package/dist/types/server/src/polyglot/node/plugins/proxy/queue.d.ts +3 -1
  46. package/dist/types/server/src/polyglot/node/plugins/proxy/systemManager.d.ts +8 -7
  47. package/dist/types/server/src/services/config/types.d.ts +8 -0
  48. package/dist/types/shared/types/index.d.ts +3 -1
  49. package/package.json +5 -5
@@ -17,11 +17,11 @@ export declare const logSchema: zod.ZodObject<{
17
17
  streams: zod.ZodUnion<[zod.ZodLiteral<"info">, zod.ZodLiteral<"debug">, zod.ZodLiteral<"trace">, zod.ZodLiteral<"warn">, zod.ZodLiteral<"error">, zod.ZodLiteral<"fatal">]>;
18
18
  webrtc: zod.ZodUnion<[zod.ZodLiteral<"info">, zod.ZodLiteral<"debug">, zod.ZodLiteral<"trace">, zod.ZodLiteral<"warn">, zod.ZodLiteral<"error">, zod.ZodLiteral<"fatal">]>;
19
19
  }, "strict", zod.ZodTypeAny, {
20
+ mp4: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
20
21
  rtsp: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
21
22
  webrtc: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
22
23
  mjpeg: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
23
24
  hls: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
24
- mp4: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
25
25
  level: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
26
26
  format: string;
27
27
  api: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
@@ -33,11 +33,11 @@ export declare const logSchema: zod.ZodObject<{
33
33
  hass: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
34
34
  streams: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
35
35
  }, {
36
+ mp4: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
36
37
  rtsp: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
37
38
  webrtc: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
38
39
  mjpeg: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
39
40
  hls: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
40
- mp4: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
41
41
  api: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
42
42
  exec: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
43
43
  ngrok: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
@@ -132,6 +132,25 @@ export declare const ngrokSchema: zod.ZodObject<{
132
132
  }, {
133
133
  command: string;
134
134
  }>;
135
+ export declare const filterSchema: zod.ZodObject<{
136
+ candidates: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
137
+ networks: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
138
+ interfaces: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
139
+ ips: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
140
+ udp_ports: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
141
+ }, "strict", zod.ZodTypeAny, {
142
+ candidates: string[];
143
+ networks: string[];
144
+ interfaces: string[];
145
+ ips: string[];
146
+ udp_ports: string[];
147
+ }, {
148
+ candidates?: string[] | undefined;
149
+ networks?: string[] | undefined;
150
+ interfaces?: string[] | undefined;
151
+ ips?: string[] | undefined;
152
+ udp_ports?: string[] | undefined;
153
+ }>;
135
154
  export declare const iceServerSchema: zod.ZodObject<{
136
155
  urls: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
137
156
  username: zod.ZodOptional<zod.ZodString>;
@@ -161,6 +180,25 @@ export declare const webrtcSchema: zod.ZodObject<{
161
180
  username?: string | undefined;
162
181
  credential?: string | undefined;
163
182
  }>, "many">;
183
+ filters: zod.ZodOptional<zod.ZodObject<{
184
+ candidates: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
185
+ networks: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
186
+ interfaces: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
187
+ ips: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
188
+ udp_ports: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
189
+ }, "strict", zod.ZodTypeAny, {
190
+ candidates: string[];
191
+ networks: string[];
192
+ interfaces: string[];
193
+ ips: string[];
194
+ udp_ports: string[];
195
+ }, {
196
+ candidates?: string[] | undefined;
197
+ networks?: string[] | undefined;
198
+ interfaces?: string[] | undefined;
199
+ ips?: string[] | undefined;
200
+ udp_ports?: string[] | undefined;
201
+ }>>;
164
202
  }, "strict", zod.ZodTypeAny, {
165
203
  listen: string;
166
204
  candidates: string[];
@@ -169,6 +207,13 @@ export declare const webrtcSchema: zod.ZodObject<{
169
207
  username?: string | undefined;
170
208
  credential?: string | undefined;
171
209
  }[];
210
+ filters?: {
211
+ candidates: string[];
212
+ networks: string[];
213
+ interfaces: string[];
214
+ ips: string[];
215
+ udp_ports: string[];
216
+ } | undefined;
172
217
  }, {
173
218
  ice_servers: {
174
219
  urls?: string[] | undefined;
@@ -177,6 +222,13 @@ export declare const webrtcSchema: zod.ZodObject<{
177
222
  }[];
178
223
  listen?: string | undefined;
179
224
  candidates?: string[] | undefined;
225
+ filters?: {
226
+ candidates?: string[] | undefined;
227
+ networks?: string[] | undefined;
228
+ interfaces?: string[] | undefined;
229
+ ips?: string[] | undefined;
230
+ udp_ports?: string[] | undefined;
231
+ } | undefined;
180
232
  }>;
181
233
  export declare const homeKitSettingsSchema: zod.ZodObject<{
182
234
  pin: zod.ZodNumber;
@@ -270,11 +322,11 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
270
322
  streams: zod.ZodOptional<zod.ZodUnion<[zod.ZodLiteral<"info">, zod.ZodLiteral<"debug">, zod.ZodLiteral<"trace">, zod.ZodLiteral<"warn">, zod.ZodLiteral<"error">, zod.ZodLiteral<"fatal">]>>;
271
323
  webrtc: zod.ZodOptional<zod.ZodUnion<[zod.ZodLiteral<"info">, zod.ZodLiteral<"debug">, zod.ZodLiteral<"trace">, zod.ZodLiteral<"warn">, zod.ZodLiteral<"error">, zod.ZodLiteral<"fatal">]>>;
272
324
  }, "strict", zod.ZodTypeAny, {
325
+ mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
273
326
  rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
274
327
  webrtc?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
275
328
  mjpeg?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
276
329
  hls?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
277
- mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
278
330
  level?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
279
331
  format?: string | undefined;
280
332
  api?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
@@ -286,11 +338,11 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
286
338
  hass?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
287
339
  streams?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
288
340
  }, {
341
+ mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
289
342
  rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
290
343
  webrtc?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
291
344
  mjpeg?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
292
345
  hls?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
293
- mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
294
346
  level?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
295
347
  format?: string | undefined;
296
348
  api?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
@@ -364,6 +416,25 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
364
416
  username?: string | undefined;
365
417
  credential?: string | undefined;
366
418
  }>, "many">;
419
+ filters: zod.ZodOptional<zod.ZodObject<{
420
+ candidates: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
421
+ networks: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
422
+ interfaces: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
423
+ ips: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
424
+ udp_ports: zod.ZodDefault<zod.ZodArray<zod.ZodString, "many">>;
425
+ }, "strict", zod.ZodTypeAny, {
426
+ candidates: string[];
427
+ networks: string[];
428
+ interfaces: string[];
429
+ ips: string[];
430
+ udp_ports: string[];
431
+ }, {
432
+ candidates?: string[] | undefined;
433
+ networks?: string[] | undefined;
434
+ interfaces?: string[] | undefined;
435
+ ips?: string[] | undefined;
436
+ udp_ports?: string[] | undefined;
437
+ }>>;
367
438
  }, "strict", zod.ZodTypeAny, {
368
439
  listen: string;
369
440
  candidates: string[];
@@ -372,6 +443,13 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
372
443
  username?: string | undefined;
373
444
  credential?: string | undefined;
374
445
  }[];
446
+ filters?: {
447
+ candidates: string[];
448
+ networks: string[];
449
+ interfaces: string[];
450
+ ips: string[];
451
+ udp_ports: string[];
452
+ } | undefined;
375
453
  }, {
376
454
  ice_servers: {
377
455
  urls?: string[] | undefined;
@@ -380,6 +458,13 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
380
458
  }[];
381
459
  listen?: string | undefined;
382
460
  candidates?: string[] | undefined;
461
+ filters?: {
462
+ candidates?: string[] | undefined;
463
+ networks?: string[] | undefined;
464
+ interfaces?: string[] | undefined;
465
+ ips?: string[] | undefined;
466
+ udp_ports?: string[] | undefined;
467
+ } | undefined;
383
468
  }>>;
384
469
  ffmpeg: zod.ZodDefault<zod.ZodIntersection<zod.ZodRecord<zod.ZodString, zod.ZodString>, zod.ZodObject<{
385
470
  bin: zod.ZodDefault<zod.ZodString>;
@@ -471,6 +556,13 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
471
556
  username?: string | undefined;
472
557
  credential?: string | undefined;
473
558
  }[];
559
+ filters?: {
560
+ candidates: string[];
561
+ networks: string[];
562
+ interfaces: string[];
563
+ ips: string[];
564
+ udp_ports: string[];
565
+ } | undefined;
474
566
  };
475
567
  api: {
476
568
  password: string;
@@ -490,11 +582,11 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
490
582
  output: string;
491
583
  };
492
584
  log: {
585
+ mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
493
586
  rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
494
587
  webrtc?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
495
588
  mjpeg?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
496
589
  hls?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
497
- mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
498
590
  level?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
499
591
  format?: string | undefined;
500
592
  api?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
@@ -543,6 +635,13 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
543
635
  }[];
544
636
  listen?: string | undefined;
545
637
  candidates?: string[] | undefined;
638
+ filters?: {
639
+ candidates?: string[] | undefined;
640
+ networks?: string[] | undefined;
641
+ interfaces?: string[] | undefined;
642
+ ips?: string[] | undefined;
643
+ udp_ports?: string[] | undefined;
644
+ } | undefined;
546
645
  } | undefined;
547
646
  api?: {
548
647
  password?: string | undefined;
@@ -581,11 +680,11 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
581
680
  output?: string | undefined;
582
681
  }) | undefined;
583
682
  log?: {
683
+ mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
584
684
  rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
585
685
  webrtc?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
586
686
  mjpeg?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
587
687
  hls?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
588
- mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
589
688
  level?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
590
689
  format?: string | undefined;
591
690
  api?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
@@ -243,8 +243,8 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
243
243
  };
244
244
  }>>;
245
245
  }, "strict", zod.ZodTypeAny, {
246
- password: string;
247
246
  _id: string;
247
+ password: string;
248
248
  preferences: {
249
249
  camview: {
250
250
  grids: {
@@ -287,8 +287,8 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
287
287
  oneLogin?: boolean | undefined;
288
288
  firstLogin?: boolean | undefined;
289
289
  }>, {
290
- password: string;
291
290
  _id: string;
291
+ password: string;
292
292
  preferences: {
293
293
  camview: {
294
294
  grids: {
@@ -1,6 +1,5 @@
1
1
  import type { ClientData, JwtTokenClientData, JwtTokenEncoded } from '../types/index.js';
2
2
  export declare class AuthService {
3
- private configService;
4
3
  private dbs;
5
4
  constructor();
6
5
  findById(id: string): JwtTokenEncoded | undefined;
@@ -13,9 +13,9 @@ export declare class CamerasService {
13
13
  constructor();
14
14
  createCamera(cameraData: DBCamera): Promise<DBCamera>;
15
15
  createTransformedCamera(cameraData: DBCamera): Promise<Camera>;
16
- createZone(cameraname: string, zoneData: CameraZone, zoneType: 'motion' | 'object'): Promise<DBCamera | undefined>;
17
- patchZoneByName(cameraname: string, zonename: string, zoneData: CameraZone, zoneType: 'motion' | 'object'): Promise<DBCamera | undefined>;
18
- removeZoneByName(cameraname: string, zonename: string, zoneType: 'motion' | 'object'): Promise<void>;
16
+ createZone(cameraname: string, zoneData: CameraZone): Promise<DBCamera | undefined>;
17
+ patchZoneByName(cameraname: string, zonename: string, zoneData: CameraZone): Promise<DBCamera | undefined>;
18
+ removeZoneByName(cameraname: string, zonename: string): Promise<void>;
19
19
  createCameraSource(cameraname: string, sourceName: string, address: string): Promise<void>;
20
20
  resetCameraSource(cameraname: string, sourceName: string): Promise<void>;
21
21
  list(): DBCamera[];
@@ -50,5 +50,6 @@ export declare class CamerasService {
50
50
  private generateFFmpegUrls;
51
51
  private generateWWWUrls;
52
52
  private extensionIsEnabled;
53
+ private convertToDetectionZones;
53
54
  }
54
55
  export {};
@@ -2,7 +2,6 @@ import type { Plugin } from '../../plugins/plugin.js';
2
2
  import type { PluginWorker } from '../../plugins/worker.js';
3
3
  import type { DBPlugin } from '../database/types.js';
4
4
  export declare class PluginsService {
5
- private configService;
6
5
  private dbs;
7
6
  private pluginManager;
8
7
  constructor();
@@ -1,6 +1,5 @@
1
1
  import type { DBUser } from '../database/types.js';
2
2
  export declare class UsersService {
3
- private configService;
4
3
  private dbs;
5
4
  constructor();
6
5
  createUser(userData: DBUser): Promise<DBUser>;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
3
  import type { Readable } from 'node:stream';
4
- import type { CameraExtension, PluginContract, PluginRootSchema } from '../../plugins/types.js';
4
+ import type { CameraExtension, PLUGIN_STATUS, PluginContract, PluginRootSchema } from '../../plugins/types.js';
5
5
  import type { LoggingLevel } from '../../services/config/types.js';
6
6
  import type { CameraExtensions, CameraZone, DBCamera, DBCamviewLayout, DBRoles, DBUser } from '../database/types.js';
7
7
  import type { ApplicationResponse } from '../go2rtc/types.js';
@@ -139,6 +139,10 @@ export interface PluginsResponse {
139
139
  pagination: Pagination;
140
140
  result: CameraUiPlugin[];
141
141
  }
142
+ export interface FrameWorkerResponse {
143
+ pagination: Pagination;
144
+ result: FrameWorker[];
145
+ }
142
146
  export interface PluginContractCamera {
143
147
  name: string;
144
148
  extensions: CameraExtensions;
@@ -249,11 +253,6 @@ export type CamerasExtensionsRequest = {
249
253
  type: CameraExtension;
250
254
  };
251
255
  };
252
- export type CameraZonesTypeRequest = {
253
- Querystring: {
254
- type: 'motion' | 'object';
255
- };
256
- };
257
256
  export type CameraZoneInsertPatchRequest = {
258
257
  Body: CameraZone;
259
258
  };
@@ -296,6 +295,11 @@ export type PluginsParamsNameRequest = {
296
295
  pluginname: string;
297
296
  };
298
297
  };
298
+ export type FrameWorkerParamsNameRequest = {
299
+ Params: {
300
+ frameworkername: string;
301
+ };
302
+ };
299
303
  export type PluginsParamsRemoveRequest = {
300
304
  Querystring: {
301
305
  removeStorage?: boolean;
@@ -539,3 +543,7 @@ export interface CameraUiPlugin {
539
543
  node?: string;
540
544
  };
541
545
  }
546
+ export interface FrameWorker {
547
+ name: string;
548
+ status: PLUGIN_STATUS;
549
+ }
@@ -0,0 +1,13 @@
1
+ import type { Namespace, Server } from 'socket.io';
2
+ import type { PLUGIN_STATUS } from '../../../plugins/types.js';
3
+ import type { SocketNsp } from '../types.js';
4
+ export declare class FrameWorkerNamespace {
5
+ nsp: Namespace;
6
+ nspName: SocketNsp;
7
+ private frameManager;
8
+ constructor(io: Server);
9
+ frameWorkerStatus(frameWorkerName: string, callback?: Function): Promise<void | {
10
+ frameWorkerName: string;
11
+ status: PLUGIN_STATUS;
12
+ }>;
13
+ }
@@ -1,23 +1,28 @@
1
1
  import type { Namespace, Server } from 'socket.io';
2
- import type { CpuInfo, CpuTempInfo, MemoryInfo, NetworkInfo, PluginProcessesInfo, ProcessesInfo, SocketNsp } from '../types.js';
2
+ import type { CpuInfo, CpuTempInfo, FrameWorkerProcessesInfo, MemoryInfo, NetworkInfo, PluginProcessesInfo, ProcessesInfo, SocketNsp } from '../types.js';
3
3
  export declare class MetricsNamespace {
4
4
  nsp: Namespace;
5
5
  nspName: SocketNsp;
6
6
  private logger;
7
7
  private configService;
8
8
  private pluginManager;
9
+ private frameManager;
9
10
  private go2rtc;
11
+ private natsServer;
10
12
  private cpuHistory;
11
13
  private cpuTempHistory;
12
14
  private memHistory;
13
15
  private networkHistory;
14
16
  private processServerHistory;
15
17
  private processGo2RtcHistory;
18
+ private processNatHistory;
16
19
  private processPluginsHistory;
20
+ private processFrameWorkerHistory;
17
21
  private memoryInfo?;
18
22
  constructor(io: Server);
19
23
  getProcessesInfo(payload: any, callback?: Function): Promise<ProcessesInfo>;
20
24
  getPluginsProcessesInfo(payload: any, callback?: Function): Promise<PluginProcessesInfo>;
25
+ getFrameWorkerProcessesInfo(payload: any, callback?: Function): Promise<FrameWorkerProcessesInfo>;
21
26
  getServerCpuInfo(payload?: any, callback?: Function): Promise<CpuInfo>;
22
27
  getServerMemoryInfo(payload?: any, callback?: Function): Promise<MemoryInfo>;
23
28
  getCpuTempInfo(payload?: any, callback?: Function): Promise<CpuTempInfo>;
@@ -7,7 +7,9 @@ export declare class StatusNamespace {
7
7
  nspName: SocketNsp;
8
8
  private configService;
9
9
  private pluginManager;
10
+ private frameManager;
10
11
  private go2rtc;
12
+ private natsServer;
11
13
  constructor(io: Server);
12
14
  watchStats(socket: Socket, payload: any, callback?: Function): {
13
15
  name: string;
@@ -17,4 +19,8 @@ export declare class StatusNamespace {
17
19
  name: string;
18
20
  status: PLUGIN_STATUS;
19
21
  }[];
22
+ watchFrameWorkerStats(socket: Socket, payload: any, callback?: Function): {
23
+ name: string;
24
+ status: PLUGIN_STATUS;
25
+ }[];
20
26
  }
@@ -2,7 +2,7 @@ import type { Namespace } from 'socket.io';
2
2
  import type { WebSocket } from 'ws';
3
3
  import type { PLUGIN_STATUS } from '../../plugins/types.js';
4
4
  import type { VideoStreamingMode } from '../database/types.js';
5
- export type SocketNsp = '/camera.ui' | '/metrics' | '/logs' | '/status' | '/notifications' | '/streams' | '/plugins' | '/proxy' | '/frame';
5
+ export type SocketNsp = '/camera.ui' | '/metrics' | '/logs' | '/status' | '/notifications' | '/streams' | '/plugins' | '/proxy' | '/frame' | '/frameWorker';
6
6
  export interface SocketNspMap {
7
7
  nsp: Namespace;
8
8
  [key: string]: any;
@@ -52,11 +52,15 @@ export interface ProcessInfo {
52
52
  export interface ProcessesInfo {
53
53
  server: ProcessInfo;
54
54
  go2rtc: ProcessInfo;
55
+ nats: ProcessInfo;
55
56
  }
56
57
  export interface PluginProcessesInfo {
57
58
  plugins: ProcessInfo[];
58
59
  }
59
- export interface AllProcessesInfo extends ProcessesInfo, PluginProcessesInfo {
60
+ export interface FrameWorkerProcessesInfo {
61
+ worker: ProcessInfo[];
62
+ }
63
+ export interface AllProcessesInfo extends ProcessesInfo, PluginProcessesInfo, FrameWorkerProcessesInfo {
60
64
  }
61
65
  export interface CpuInfo {
62
66
  currentLoad: number;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import 'reflect-metadata';
3
3
  import { EventEmitter } from 'node:events';
4
- import { CameraController } from './camera/controller/index.js';
4
+ import { CameraController } from './camera/controller.js';
5
5
  import type { Camera, CameraExtensions } from './api/database/types.js';
6
6
  import type { FrameWorker } from './decoder/worker.js';
7
7
  import type { BasePlugin } from './plugins/base.js';
@@ -1,20 +1,23 @@
1
- import { CameraDevice } from '../cameraDevice.js';
2
- import type { Camera } from '../../api/database/types.js';
3
- import type { VideoFrame } from '../../decoder/types.js';
4
- import type { ProxyServer } from '../../nats/index.js';
5
- import type { IceServer } from '../../services/config/types.js';
6
- import type { BaseLogger } from './types.js';
1
+ import { CameraDevice } from './device.js';
2
+ import type { Camera } from '../api/database/types.js';
3
+ import type { MotionFrame, VideoFrame } from '../decoder/types.js';
4
+ import type { ProxyServer } from '../nats/index.js';
5
+ import type { IceServer } from '../services/config/types.js';
6
+ import type { BaseLogger, CameraSource } from './types.js';
7
7
  export declare class CameraController extends CameraDevice {
8
8
  private proxy;
9
9
  private motionTimeout?;
10
10
  private doorbellTimeout?;
11
11
  private doorbellTimeoutDuration;
12
12
  private prebufferStateSubscriptions;
13
+ get sources(): CameraSource[];
13
14
  constructor(camera: Camera, logger: BaseLogger, proxy: ProxyServer);
14
15
  connect(): Promise<void>;
15
16
  disconnect(): Promise<void>;
16
17
  reboot(): Promise<void>;
17
- generateFrames(): AsyncIterableIterator<VideoFrame>;
18
+ getFrames(): AsyncIterableIterator<VideoFrame>;
19
+ getMotionFrames(): AsyncIterableIterator<MotionFrame>;
20
+ getPrebufferedFrames(): AsyncIterableIterator<VideoFrame>;
18
21
  getFfmpegPath(): Promise<string>;
19
22
  getIceServers(): Promise<IceServer[]>;
20
23
  updateCamera(updatedCamera: Camera): void;
@@ -1,19 +1,27 @@
1
+ import type { Observable } from 'rxjs';
2
+ import { BehaviorSubject } from 'rxjs';
1
3
  import { BaseCameraDevice } from './index.js';
2
4
  import { StreamingSession } from './streaming/streaming-session.js';
3
- import type { VideoFrame } from '../decoder/types.js';
4
- import type { CameraDelegate, CameraPrebufferDelegate, FfmpegOptions } from './controller/types.js';
5
+ import type { MotionFrame, VideoFrame } from '../decoder/types.js';
5
6
  import type { StreamingConnectionOptions } from './streaming/peer-connection.js';
7
+ import type { CameraDelegate, CameraPrebufferDelegate, FfmpegOptions, FrameState } from './types.js';
6
8
  export declare abstract class CameraDevice extends BaseCameraDevice {
9
+ protected readonly frameState: BehaviorSubject<FrameState>;
10
+ protected readonly onFrame: Observable<FrameState>;
7
11
  private _delegate?;
8
12
  private _prebufferDelegate?;
9
13
  get delegate(): CameraDelegate | undefined;
10
14
  set delegate(delegate: CameraDelegate);
11
15
  get prebufferDelegate(): CameraPrebufferDelegate | undefined;
12
16
  set prebufferDelegate(delegate: CameraPrebufferDelegate);
13
- abstract generateFrames(): AsyncIterableIterator<VideoFrame>;
17
+ abstract getFrames(): AsyncIterableIterator<VideoFrame>;
18
+ abstract getMotionFrames(): AsyncIterableIterator<MotionFrame>;
19
+ abstract getPrebufferedFrames(): AsyncIterableIterator<VideoFrame>;
14
20
  abstract getFfmpegPath(): Promise<string>;
15
21
  snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
16
22
  createSession(sourceName: string, options?: StreamingConnectionOptions): Promise<StreamingSession>;
17
23
  streamVideo(sourceName: string, options: FfmpegOptions): Promise<StreamingSession>;
18
24
  recordToFile(sourceName: string, outputPath: string, duration?: number): Promise<void>;
25
+ removeAllListeners(): void;
26
+ private createMotionFrameObservable;
19
27
  }
@@ -1,9 +1,10 @@
1
+ /// <reference types="node" resolution-mode="require"/>
1
2
  import { LRUCache } from 'lru-cache';
2
3
  import { BehaviorSubject } from 'rxjs';
3
4
  import type { Observable, Subscription } from 'rxjs';
4
- import type { Camera, CameraInformation, CameraPublicProperties, CameraType, CameraZone } from '../api/database/types.js';
5
+ import type { Camera, CameraActivitySettings, CameraInformation, CameraPublicProperties, CameraType } from '../api/database/types.js';
5
6
  import type { IceServer } from '../services/config/types.js';
6
- import type { AudioSetEvent, AudioState, BaseLogger, BatterySetEvent, BatteryState, CameraSource, DoorbellSetEvent, DoorbellState, LightSetEvent, LightState, MotionSetEvent, MotionState, ObjectSetEvent, ObjectState, PrebufferContainer, PrebufferState, SetValues, Sets, SirenSetEvent, SirenState, StateValues, States } from './controller/types.js';
7
+ import type { AudioSetEvent, AudioState, BaseLogger, BatterySetEvent, BatteryState, CameraSource, Container, DetectionZone, DoorbellSetEvent, DoorbellState, LightSetEvent, LightState, MotionSetEvent, MotionState, ObjectSetEvent, ObjectState, PrebufferState, SetValues, Sets, SirenSetEvent, SirenState, StateValues, States } from './types.js';
7
8
  declare class Subscribed {
8
9
  private readonly subscriptions;
9
10
  private readonly additionalSubscriptions;
@@ -56,8 +57,8 @@ export declare abstract class BaseCameraDevice extends Subscribed {
56
57
  get hasPtz(): boolean;
57
58
  get hasPrebuffer(): boolean;
58
59
  get hasIntercom(): boolean;
59
- get motionZones(): CameraZone[];
60
- get objectZones(): CameraZone[];
60
+ get activityZones(): DetectionZone[];
61
+ get activitySettings(): CameraActivitySettings;
61
62
  get sources(): CameraSource[];
62
63
  get streamSource(): CameraSource;
63
64
  get snapshotSource(): CameraSource;
@@ -71,7 +72,14 @@ export declare abstract class BaseCameraDevice extends Subscribed {
71
72
  abstract getIceServers(): Promise<IceServer[]>;
72
73
  protected abstract cleanup(): void;
73
74
  getValue<T extends keyof StateValues>(stateName: T): StateValues[T];
74
- updateState<T extends keyof SetValues>(stateName: T, eventData: SetValues[T]): Promise<void>;
75
+ updateState(stateName: 'light', eventData: LightSetEvent): Promise<void>;
76
+ updateState(stateName: 'motion', eventData: MotionSetEvent, frame?: Buffer): Promise<void>;
77
+ updateState(stateName: 'audio', eventData: AudioSetEvent): Promise<void>;
78
+ updateState(stateName: 'object', eventData: ObjectSetEvent): Promise<void>;
79
+ updateState(stateName: 'doorbell', eventData: DoorbellSetEvent): Promise<void>;
80
+ updateState(stateName: 'siren', eventData: SirenSetEvent): Promise<void>;
81
+ updateState(stateName: 'battery', eventData: BatterySetEvent): Promise<void>;
82
+ protected updateStateInternal<T extends keyof SetValues>(stateName: T, eventData: SetValues[T], skipCheck?: boolean, frame?: Buffer): Promise<void>;
75
83
  onStateChange<T extends keyof StateValues>(stateName: T): Observable<{
76
84
  newState: StateValues[T];
77
85
  oldState: StateValues[T];
@@ -81,6 +89,10 @@ export declare abstract class BaseCameraDevice extends Subscribed {
81
89
  newData: Camera[T];
82
90
  }>;
83
91
  removeAllListeners(): void;
92
+ protected checkStateInternal<T extends keyof SetValues>(stateName: T, event: SetValues[T]): {
93
+ changed: boolean;
94
+ event: StateValues[T];
95
+ };
84
96
  protected getAudioState(event: AudioSetEvent): AudioState;
85
97
  protected getMotionState(event: MotionSetEvent): MotionState;
86
98
  protected getObjectState(event: ObjectSetEvent): ObjectState;
@@ -89,19 +101,13 @@ export declare abstract class BaseCameraDevice extends Subscribed {
89
101
  protected getSirenState(event: SirenSetEvent): SirenState;
90
102
  protected getBatteryState(event: BatterySetEvent): BatteryState;
91
103
  protected updateCamera(updatedCamera: Camera): void;
92
- protected updatePrebuffer(sourceId: string, container: PrebufferContainer, state: PrebufferState): Promise<void>;
104
+ protected updatePrebuffer(sourceId: string, container: Container, state: PrebufferState): Promise<void>;
93
105
  protected updateCameraSourcesState(): void;
94
106
  protected updateCameraState(state: boolean): void;
95
- protected cameraSourcePrebufferState(sourceId: string, container: PrebufferContainer): PrebufferState;
107
+ protected cameraSourcePrebufferState(sourceId: string, container: Container): PrebufferState;
96
108
  private createStateObservable;
97
- protected createPrebufferStateObservable(sourceId: string, container: PrebufferContainer): Observable<PrebufferState>;
98
- protected stateChanged<T extends keyof SetValues>(oldState?: SetValues[T], newState?: SetValues[T]): boolean;
99
- protected isAudioState(state: Sets): state is AudioSetEvent;
100
- protected isMotionState(state: Sets): state is MotionSetEvent;
101
- protected isObjectState(state: Sets): state is ObjectSetEvent;
102
- protected isSirenState(state: Sets): state is SirenSetEvent;
103
- protected isBatteryState(state: Sets): state is BatterySetEvent;
104
- protected isGenericState(state: Sets): state is DoorbellSetEvent;
109
+ protected createPrebufferStateObservable(sourceId: string, container: Container): Observable<PrebufferState>;
110
+ protected stateChanged<T extends keyof SetValues>(oldState?: SetValues[T], newState?: SetValues[T], type?: keyof StateValues): boolean;
105
111
  protected isStateEvent(state: States | Sets): state is States;
106
112
  }
107
113
  export {};
@@ -0,0 +1,3 @@
1
+ import type { Detection, DetectionZone } from './types.js';
2
+ export declare const areObjectDetectionsValid: (detections: Detection[], zones: DetectionZone[]) => Detection[];
3
+ export declare const areMotionDetectionsValid: (detections: Detection[], zones: DetectionZone[]) => Detection[];
@@ -4,8 +4,8 @@ import { Subscribed } from '../../utils/subscribed.js';
4
4
  import type { Observable } from 'rxjs';
5
5
  import type { ConnectionState, RTCIceCandidate, RTCSessionDescription, RtcpPacket, RtpPacket, RTCIceCandidate as WeriftRTCICECandidate } from 'werift';
6
6
  import type { IceServer } from '../../services/config/types.js';
7
- import type { CameraDevice } from '../cameraDevice.js';
8
- import type { BaseLogger } from '../controller/types.js';
7
+ import type { CameraDevice } from '../device.js';
8
+ import type { BaseLogger } from '../types.js';
9
9
  export interface BasicPeerConnection {
10
10
  createOffer(): Promise<RTCSessionDescription>;
11
11
  acceptAnswer(answer: {
@@ -1,8 +1,8 @@
1
1
  import { ReplaySubject, Subject } from 'rxjs';
2
2
  import { RtpPacket } from 'werift';
3
3
  import { Subscribed } from '../../utils/subscribed.js';
4
- import type { CameraDevice } from '../cameraDevice.js';
5
- import type { BaseLogger, FfmpegOptions, SpawnInput } from '../controller/types.js';
4
+ import type { CameraDevice } from '../device.js';
5
+ import type { BaseLogger, FfmpegOptions, SpawnInput } from '../types.js';
6
6
  import type { WebrtcConnection } from './webrtc-connection.js';
7
7
  export declare class StreamingSession extends Subscribed {
8
8
  readonly onCallEnded: ReplaySubject<void>;
@@ -2,8 +2,8 @@ import { ReplaySubject, Subject, type Observable } from 'rxjs';
2
2
  import { Subscribed } from '../../utils/subscribed.js';
3
3
  import type { RtpPacket } from 'werift';
4
4
  import type { IceServer } from '../../services/config/types.js';
5
- import type { CameraDevice } from '../cameraDevice.js';
6
- import type { BaseLogger } from '../controller/types.js';
5
+ import type { CameraDevice } from '../device.js';
6
+ import type { BaseLogger } from '../types.js';
7
7
  import type { StreamingConnectionOptions } from './peer-connection.js';
8
8
  export declare class WebrtcConnection extends Subscribed {
9
9
  readonly onCameraConnected: ReplaySubject<void>;