@camera.ui/browser 0.0.76 → 0.0.79
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.
- package/dist/bundle.js +1 -1
- package/dist/types/packages/client/browser/src/proxy/cameraDevice.d.ts +7 -5
- package/dist/types/packages/client/browser/src/socket.d.ts +6 -5
- package/dist/types/packages/client/browser/src/streaming/go2rts-session.d.ts +54 -0
- package/dist/types/packages/client/browser/src/types.d.ts +13 -7
- package/dist/types/packages/client/browser/src/utils.d.ts +12 -0
- package/dist/types/server/src/api/database/index.d.ts +1 -1
- package/dist/types/server/src/api/database/types.d.ts +11 -6
- package/dist/types/server/src/api/go2rtc/api/config.d.ts +3 -4
- package/dist/types/server/src/api/go2rtc/api/index.d.ts +1 -2
- package/dist/types/server/src/api/go2rtc/api/streams.d.ts +4 -5
- package/dist/types/server/src/api/index.d.ts +0 -1
- package/dist/types/server/src/api/schemas/cameras.schema.d.ts +180 -121
- package/dist/types/server/src/api/schemas/config.schema.d.ts +2 -2
- package/dist/types/server/src/api/schemas/go2rtc.schema.d.ts +18 -18
- package/dist/types/server/src/api/schemas/users.schema.d.ts +8 -8
- package/dist/types/server/src/api/services/plugins.service.d.ts +1 -0
- package/dist/types/server/src/api/types/index.d.ts +0 -2
- package/dist/types/server/src/api/utils/fetch.d.ts +2 -0
- package/dist/types/server/src/api/websocket/types.d.ts +1 -15
- package/dist/types/server/src/api.d.ts +1 -2
- package/dist/types/server/src/camera/controller.d.ts +8 -3
- package/dist/types/server/src/camera/device.d.ts +2 -3
- package/dist/types/server/src/camera/index.d.ts +20 -18
- package/dist/types/server/src/camera/polygon.d.ts +5 -2
- package/dist/types/server/src/camera/streaming/peer-connection.d.ts +1 -1
- package/dist/types/server/src/camera/types.d.ts +7 -6
- package/dist/types/server/src/camera/videoFrame.d.ts +10 -11
- package/dist/types/server/src/decoder/types.d.ts +31 -22
- package/dist/types/server/src/decoder/worker.d.ts +3 -3
- package/dist/types/server/src/nats/proxy/cameraDevice.d.ts +0 -2
- package/dist/types/server/src/nats/server.d.ts +10 -7
- package/dist/types/server/src/nats/types.d.ts +7 -8
- package/dist/types/server/src/nats/websocket.d.ts +8 -0
- package/dist/types/server/src/plugins/index.d.ts +1 -0
- package/dist/types/server/src/polyglot/node/plugins/api.d.ts +1 -2
- package/dist/types/server/src/polyglot/node/plugins/cameraStorage.d.ts +2 -2
- package/dist/types/server/src/polyglot/node/plugins/proxy/cameraDevice.d.ts +8 -9
- package/dist/types/server/src/polyglot/node/plugins/proxy/deviceManager.d.ts +3 -3
- package/dist/types/server/src/polyglot/node/plugins/proxy/pluginsManager.d.ts +3 -3
- package/dist/types/server/src/polyglot/node/plugins/proxy/systemManager.d.ts +3 -3
- package/dist/types/server/src/polyglot/node/plugins/schema.d.ts +8 -1
- package/dist/types/server/src/polyglot/node/plugins/storageController.d.ts +1 -1
- package/dist/types/server/src/services/config/constants.d.ts +0 -2
- package/dist/types/server/src/services/config/index.d.ts +1 -1
- package/dist/types/server/src/utils/packer.d.ts +2 -0
- package/dist/types/server/src/utils/pythonInstaller.d.ts +1 -1
- package/dist/types/server/src/utils/utils.d.ts +5 -0
- package/package.json +6 -8
- package/dist/types/packages/client/browser/src/streaming/peer-connection.d.ts +0 -24
- package/dist/types/packages/client/browser/src/streaming/streaming-session.d.ts +0 -25
- package/dist/types/packages/client/browser/src/streaming/webrtc-connection.d.ts +0 -26
- package/dist/types/server/src/api/utils/axios.d.ts +0 -2
- package/dist/types/server/src/api/websocket/nsp/streams.d.ts +0 -15
|
@@ -18,10 +18,10 @@ export declare const logSchema: zod.ZodObject<{
|
|
|
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
20
|
mp4: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
21
|
-
rtsp: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
22
21
|
webrtc: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
23
22
|
mjpeg: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
24
23
|
hls: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
24
|
+
rtsp: "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";
|
|
@@ -34,10 +34,10 @@ export declare const logSchema: zod.ZodObject<{
|
|
|
34
34
|
streams: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
35
35
|
}, {
|
|
36
36
|
mp4: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
37
|
-
rtsp: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
38
37
|
webrtc: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
39
38
|
mjpeg: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
40
39
|
hls: "error" | "info" | "debug" | "warn" | "trace" | "fatal";
|
|
40
|
+
rtsp: "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";
|
|
@@ -323,10 +323,10 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
|
|
|
323
323
|
webrtc: zod.ZodOptional<zod.ZodUnion<[zod.ZodLiteral<"info">, zod.ZodLiteral<"debug">, zod.ZodLiteral<"trace">, zod.ZodLiteral<"warn">, zod.ZodLiteral<"error">, zod.ZodLiteral<"fatal">]>>;
|
|
324
324
|
}, "strict", zod.ZodTypeAny, {
|
|
325
325
|
mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
326
|
-
rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
327
326
|
webrtc?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
328
327
|
mjpeg?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
329
328
|
hls?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
329
|
+
rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
330
330
|
level?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
331
331
|
format?: string | undefined;
|
|
332
332
|
api?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
@@ -339,10 +339,10 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
|
|
|
339
339
|
streams?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
340
340
|
}, {
|
|
341
341
|
mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
342
|
-
rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
343
342
|
webrtc?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
344
343
|
mjpeg?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
345
344
|
hls?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
345
|
+
rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
346
346
|
level?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
347
347
|
format?: string | undefined;
|
|
348
348
|
api?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
@@ -542,12 +542,6 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
|
|
|
542
542
|
command?: string | undefined;
|
|
543
543
|
}>>;
|
|
544
544
|
}, "strict", zod.ZodTypeAny, {
|
|
545
|
-
rtsp: {
|
|
546
|
-
password: string;
|
|
547
|
-
listen: string;
|
|
548
|
-
username: string;
|
|
549
|
-
default_query: string;
|
|
550
|
-
};
|
|
551
545
|
webrtc: {
|
|
552
546
|
listen: string;
|
|
553
547
|
candidates: string[];
|
|
@@ -564,6 +558,12 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
|
|
|
564
558
|
udp_ports: string[];
|
|
565
559
|
} | undefined;
|
|
566
560
|
};
|
|
561
|
+
rtsp: {
|
|
562
|
+
password: string;
|
|
563
|
+
listen: string;
|
|
564
|
+
username: string;
|
|
565
|
+
default_query: string;
|
|
566
|
+
};
|
|
567
567
|
api: {
|
|
568
568
|
password: string;
|
|
569
569
|
listen: string;
|
|
@@ -583,10 +583,10 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
|
|
|
583
583
|
};
|
|
584
584
|
log: {
|
|
585
585
|
mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
586
|
-
rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
587
586
|
webrtc?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
588
587
|
mjpeg?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
589
588
|
hls?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
589
|
+
rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
590
590
|
level?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
591
591
|
format?: string | undefined;
|
|
592
592
|
api?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
@@ -621,12 +621,6 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
|
|
|
621
621
|
} | undefined;
|
|
622
622
|
streams?: Record<string, string | string[] | null> | undefined;
|
|
623
623
|
}, {
|
|
624
|
-
rtsp?: {
|
|
625
|
-
password?: string | undefined;
|
|
626
|
-
listen?: string | undefined;
|
|
627
|
-
username?: string | undefined;
|
|
628
|
-
default_query?: string | undefined;
|
|
629
|
-
} | undefined;
|
|
630
624
|
webrtc?: {
|
|
631
625
|
ice_servers: {
|
|
632
626
|
urls?: string[] | undefined;
|
|
@@ -643,6 +637,12 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
|
|
|
643
637
|
udp_ports?: string[] | undefined;
|
|
644
638
|
} | undefined;
|
|
645
639
|
} | undefined;
|
|
640
|
+
rtsp?: {
|
|
641
|
+
password?: string | undefined;
|
|
642
|
+
listen?: string | undefined;
|
|
643
|
+
username?: string | undefined;
|
|
644
|
+
default_query?: string | undefined;
|
|
645
|
+
} | undefined;
|
|
646
646
|
api?: {
|
|
647
647
|
password?: string | undefined;
|
|
648
648
|
listen?: string | undefined;
|
|
@@ -681,10 +681,10 @@ export declare const patchGo2RtcSchema: zod.ZodObject<{
|
|
|
681
681
|
}) | undefined;
|
|
682
682
|
log?: {
|
|
683
683
|
mp4?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
684
|
-
rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
685
684
|
webrtc?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
686
685
|
mjpeg?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
687
686
|
hls?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
687
|
+
rtsp?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
688
688
|
level?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
689
689
|
format?: string | undefined;
|
|
690
690
|
api?: "error" | "info" | "debug" | "warn" | "trace" | "fatal" | undefined;
|
|
@@ -259,7 +259,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
|
|
|
259
259
|
};
|
|
260
260
|
username: string;
|
|
261
261
|
passwordConfirm: string;
|
|
262
|
-
role: "
|
|
262
|
+
role: "admin" | "user";
|
|
263
263
|
sessionTimer: number;
|
|
264
264
|
rememberMe: boolean;
|
|
265
265
|
oneLogin: boolean;
|
|
@@ -268,7 +268,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
|
|
|
268
268
|
password: string;
|
|
269
269
|
username: string;
|
|
270
270
|
passwordConfirm: string;
|
|
271
|
-
role: "
|
|
271
|
+
role: "admin" | "user";
|
|
272
272
|
_id?: string | undefined;
|
|
273
273
|
preferences?: {
|
|
274
274
|
camview: {
|
|
@@ -303,7 +303,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
|
|
|
303
303
|
};
|
|
304
304
|
username: string;
|
|
305
305
|
passwordConfirm: string;
|
|
306
|
-
role: "
|
|
306
|
+
role: "admin" | "user";
|
|
307
307
|
sessionTimer: number;
|
|
308
308
|
rememberMe: boolean;
|
|
309
309
|
oneLogin: boolean;
|
|
@@ -312,7 +312,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
|
|
|
312
312
|
password: string;
|
|
313
313
|
username: string;
|
|
314
314
|
passwordConfirm: string;
|
|
315
|
-
role: "
|
|
315
|
+
role: "admin" | "user";
|
|
316
316
|
_id?: string | undefined;
|
|
317
317
|
preferences?: {
|
|
318
318
|
camview: {
|
|
@@ -441,7 +441,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
|
|
|
441
441
|
} | undefined;
|
|
442
442
|
upload?: MultipartFile | File | undefined;
|
|
443
443
|
passwordConfirm?: string | undefined;
|
|
444
|
-
role?: "
|
|
444
|
+
role?: "admin" | "user" | undefined;
|
|
445
445
|
sessionTimer?: number | undefined;
|
|
446
446
|
rememberMe?: boolean | undefined;
|
|
447
447
|
oneLogin?: boolean | undefined;
|
|
@@ -462,7 +462,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
|
|
|
462
462
|
} | undefined;
|
|
463
463
|
upload?: MultipartFile | File | undefined;
|
|
464
464
|
passwordConfirm?: string | undefined;
|
|
465
|
-
role?: "
|
|
465
|
+
role?: "admin" | "user" | undefined;
|
|
466
466
|
sessionTimer?: number | undefined;
|
|
467
467
|
rememberMe?: boolean | undefined;
|
|
468
468
|
oneLogin?: boolean | undefined;
|
|
@@ -483,7 +483,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
|
|
|
483
483
|
} | undefined;
|
|
484
484
|
upload?: MultipartFile | File | undefined;
|
|
485
485
|
passwordConfirm?: string | undefined;
|
|
486
|
-
role?: "
|
|
486
|
+
role?: "admin" | "user" | undefined;
|
|
487
487
|
sessionTimer?: number | undefined;
|
|
488
488
|
rememberMe?: boolean | undefined;
|
|
489
489
|
oneLogin?: boolean | undefined;
|
|
@@ -504,7 +504,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
|
|
|
504
504
|
} | undefined;
|
|
505
505
|
upload?: MultipartFile | File | undefined;
|
|
506
506
|
passwordConfirm?: string | undefined;
|
|
507
|
-
role?: "
|
|
507
|
+
role?: "admin" | "user" | undefined;
|
|
508
508
|
sessionTimer?: number | undefined;
|
|
509
509
|
rememberMe?: boolean | undefined;
|
|
510
510
|
oneLogin?: boolean | undefined;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import type { Readable } from 'node:stream';
|
|
4
2
|
import type { CameraExtension, PLUGIN_STATUS, PluginContract, PluginRootSchema } from '../../plugins/types.js';
|
|
5
3
|
import type { LoggingLevel } from '../../services/config/types.js';
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { Namespace } from 'socket.io';
|
|
2
|
-
import type { WebSocket } from 'ws';
|
|
3
2
|
import type { PLUGIN_STATUS } from '../../plugins/types.js';
|
|
4
|
-
|
|
5
|
-
export type SocketNsp = '/camera.ui' | '/metrics' | '/logs' | '/status' | '/notifications' | '/streams' | '/plugins' | '/proxy' | '/frame' | '/frameWorker';
|
|
3
|
+
export type SocketNsp = '/camera.ui' | '/metrics' | '/logs' | '/status' | '/notifications' | '/plugins' | '/proxy' | '/frame' | '/frameWorker';
|
|
6
4
|
export interface SocketNspMap {
|
|
7
5
|
nsp: Namespace;
|
|
8
6
|
[key: string]: any;
|
|
@@ -86,15 +84,3 @@ export interface PluginRuntime {
|
|
|
86
84
|
name: string;
|
|
87
85
|
status: PLUGIN_STATUS;
|
|
88
86
|
}
|
|
89
|
-
export interface StreamPayload {
|
|
90
|
-
type: Exclude<VideoStreamingMode, 'webrtc' | 'webrtc/tcp'> | 'webrtc/offer' | 'webrtc/candidate';
|
|
91
|
-
value: string;
|
|
92
|
-
}
|
|
93
|
-
export interface Go2RtcWs {
|
|
94
|
-
id: string;
|
|
95
|
-
ws?: WebSocket;
|
|
96
|
-
connect: () => void;
|
|
97
|
-
reconnect: () => void;
|
|
98
|
-
close: (destroy?: boolean) => void;
|
|
99
|
-
send: (data: StreamPayload) => void;
|
|
100
|
-
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import 'reflect-metadata';
|
|
3
2
|
import { EventEmitter } from 'node:events';
|
|
4
3
|
import { CameraController } from './camera/controller.js';
|
|
@@ -37,7 +36,7 @@ export declare class CameraUiAPI extends EventEmitter {
|
|
|
37
36
|
controller: CameraController;
|
|
38
37
|
worker: FrameWorker;
|
|
39
38
|
}[];
|
|
40
|
-
updateCamera(camera: Camera
|
|
39
|
+
updateCamera(camera: Camera): void;
|
|
41
40
|
removeCamera(camera: Camera, extensions: CameraExtensions): Promise<void>;
|
|
42
41
|
selectCamera(pluginId: string, camera: Camera, extension: CameraExtension): void;
|
|
43
42
|
deselectCamera(pluginId: string, camera: Camera, extension: CameraExtension): void;
|
|
@@ -3,13 +3,16 @@ import type { Camera } from '../api/database/types.js';
|
|
|
3
3
|
import type { MotionFrame, VideoFrame } from '../decoder/types.js';
|
|
4
4
|
import type { ProxyServer } from '../nats/index.js';
|
|
5
5
|
import type { IceServer } from '../services/config/types.js';
|
|
6
|
-
import type { BaseLogger, CameraSource } from './types.js';
|
|
6
|
+
import type { BaseLogger, CameraSource, SetValues } from './types.js';
|
|
7
7
|
export declare class CameraController extends CameraDevice {
|
|
8
8
|
private proxy;
|
|
9
9
|
private motionTimeout?;
|
|
10
|
+
private objectTimeout?;
|
|
11
|
+
private objectTimeoutDuration;
|
|
10
12
|
private doorbellTimeout?;
|
|
11
13
|
private doorbellTimeoutDuration;
|
|
12
14
|
private prebufferStateSubscriptions;
|
|
15
|
+
get camera(): Camera;
|
|
13
16
|
get sources(): CameraSource[];
|
|
14
17
|
constructor(camera: Camera, logger: BaseLogger, proxy: ProxyServer);
|
|
15
18
|
connect(): Promise<void>;
|
|
@@ -20,14 +23,16 @@ export declare class CameraController extends CameraDevice {
|
|
|
20
23
|
getPrebufferedFrames(): AsyncIterableIterator<VideoFrame>;
|
|
21
24
|
getFfmpegPath(): Promise<string>;
|
|
22
25
|
getIceServers(): Promise<IceServer[]>;
|
|
26
|
+
updateState<T extends keyof SetValues>(stateName: T, eventData: SetValues[T]): Promise<void>;
|
|
23
27
|
updateCamera(updatedCamera: Camera): void;
|
|
24
28
|
cleanup(): void;
|
|
25
29
|
private subscribeToCameraState;
|
|
26
30
|
private subscribeToCameraSourcesState;
|
|
27
|
-
private subscribeToMotionState;
|
|
28
|
-
private subscribeToDoorbellState;
|
|
29
31
|
private subscribeToCameraChanges;
|
|
30
32
|
private subscribeToStateChanges;
|
|
33
|
+
private subscribeToMotionState;
|
|
34
|
+
private subscribeToObjectState;
|
|
35
|
+
private subscribeToDoorbellState;
|
|
31
36
|
private triggerProxyEvent;
|
|
32
37
|
private isCameraEvent;
|
|
33
38
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Observable } from 'rxjs';
|
|
2
1
|
import { BehaviorSubject } from 'rxjs';
|
|
3
2
|
import { BaseCameraDevice } from './index.js';
|
|
4
3
|
import { StreamingSession } from './streaming/streaming-session.js';
|
|
4
|
+
import type { Observable } from 'rxjs';
|
|
5
5
|
import type { MotionFrame, VideoFrame } from '../decoder/types.js';
|
|
6
6
|
import type { StreamingConnectionOptions } from './streaming/peer-connection.js';
|
|
7
7
|
import type { CameraDelegate, CameraPrebufferDelegate, FfmpegOptions, FrameState } from './types.js';
|
|
@@ -14,9 +14,8 @@ export declare abstract class CameraDevice extends BaseCameraDevice {
|
|
|
14
14
|
set delegate(delegate: CameraDelegate);
|
|
15
15
|
get prebufferDelegate(): CameraPrebufferDelegate | undefined;
|
|
16
16
|
set prebufferDelegate(delegate: CameraPrebufferDelegate);
|
|
17
|
-
abstract getFrames(): AsyncIterableIterator<VideoFrame>;
|
|
17
|
+
abstract getFrames(prebufferDuration?: number): AsyncIterableIterator<VideoFrame>;
|
|
18
18
|
abstract getMotionFrames(): AsyncIterableIterator<MotionFrame>;
|
|
19
|
-
abstract getPrebufferedFrames(): AsyncIterableIterator<VideoFrame>;
|
|
20
19
|
abstract getFfmpegPath(): Promise<string>;
|
|
21
20
|
snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
|
|
22
21
|
createSession(sourceName: string, options?: StreamingConnectionOptions): Promise<StreamingSession>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import { LRUCache } from 'lru-cache';
|
|
3
2
|
import { BehaviorSubject } from 'rxjs';
|
|
4
3
|
import type { Observable, Subscription } from 'rxjs';
|
|
5
|
-
import type { Camera, CameraActivitySettings,
|
|
4
|
+
import type { Camera, CameraActivitySettings, CameraFrameWorkerSettings, CameraInformation, CameraType } from '../api/database/types.js';
|
|
5
|
+
import type { VideoFrame } from '../decoder/types.js';
|
|
6
6
|
import type { IceServer } from '../services/config/types.js';
|
|
7
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';
|
|
8
8
|
declare class Subscribed {
|
|
@@ -59,6 +59,7 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
59
59
|
get hasIntercom(): boolean;
|
|
60
60
|
get activityZones(): DetectionZone[];
|
|
61
61
|
get activitySettings(): CameraActivitySettings;
|
|
62
|
+
get frameWorkerSettings(): CameraFrameWorkerSettings;
|
|
62
63
|
get sources(): CameraSource[];
|
|
63
64
|
get streamSource(): CameraSource;
|
|
64
65
|
get snapshotSource(): CameraSource;
|
|
@@ -72,19 +73,20 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
72
73
|
abstract getIceServers(): Promise<IceServer[]>;
|
|
73
74
|
protected abstract cleanup(): void;
|
|
74
75
|
getValue<T extends keyof StateValues>(stateName: T): StateValues[T];
|
|
75
|
-
updateState(stateName: 'light', eventData: LightSetEvent): Promise<void>;
|
|
76
|
-
updateState(stateName: 'motion', eventData: MotionSetEvent, frame?:
|
|
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
|
|
76
|
+
abstract updateState(stateName: 'light', eventData: LightSetEvent): Promise<void>;
|
|
77
|
+
abstract updateState(stateName: 'motion', eventData: MotionSetEvent, frame?: VideoFrame): Promise<void>;
|
|
78
|
+
abstract updateState(stateName: 'audio', eventData: AudioSetEvent): Promise<void>;
|
|
79
|
+
abstract updateState(stateName: 'object', eventData: ObjectSetEvent): Promise<void>;
|
|
80
|
+
abstract updateState(stateName: 'doorbell', eventData: DoorbellSetEvent): Promise<void>;
|
|
81
|
+
abstract updateState(stateName: 'siren', eventData: SirenSetEvent): Promise<void>;
|
|
82
|
+
abstract updateState(stateName: 'battery', eventData: BatterySetEvent): Promise<void>;
|
|
83
|
+
protected updateStateInternal<T extends keyof SetValues>(stateName: T, eventData: SetValues[T], skipCheck?: boolean): void;
|
|
83
84
|
onStateChange<T extends keyof StateValues>(stateName: T): Observable<{
|
|
84
85
|
newState: StateValues[T];
|
|
85
86
|
oldState: StateValues[T];
|
|
86
87
|
}>;
|
|
87
|
-
onPropertyChange<T extends keyof
|
|
88
|
+
onPropertyChange<T extends keyof Camera>(property: T | T[]): Observable<{
|
|
89
|
+
property: T;
|
|
88
90
|
oldData: Camera[T];
|
|
89
91
|
newData: Camera[T];
|
|
90
92
|
}>;
|
|
@@ -93,13 +95,13 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
93
95
|
changed: boolean;
|
|
94
96
|
event: StateValues[T];
|
|
95
97
|
};
|
|
96
|
-
protected getAudioState(event: AudioSetEvent): AudioState;
|
|
97
|
-
protected getMotionState(event: MotionSetEvent): MotionState;
|
|
98
|
-
protected getObjectState(event: ObjectSetEvent): ObjectState;
|
|
99
|
-
protected getDoorbellState(event: DoorbellSetEvent): DoorbellState;
|
|
100
|
-
protected getLightState(event: LightSetEvent
|
|
101
|
-
protected getSirenState(event: SirenSetEvent): SirenState;
|
|
102
|
-
protected getBatteryState(event: BatterySetEvent): BatteryState;
|
|
98
|
+
protected getAudioState(event: AudioSetEvent, ignoreLastEvet?: boolean): AudioState;
|
|
99
|
+
protected getMotionState(event: MotionSetEvent, ignoreLastEvet?: boolean): MotionState;
|
|
100
|
+
protected getObjectState(event: ObjectSetEvent, ignoreLastEvet?: boolean): ObjectState;
|
|
101
|
+
protected getDoorbellState(event: DoorbellSetEvent, ignoreLastEvet?: boolean): DoorbellState;
|
|
102
|
+
protected getLightState(event: LightSetEvent, ignoreLastEvet?: boolean): LightState;
|
|
103
|
+
protected getSirenState(event: SirenSetEvent, ignoreLastEvet?: boolean): SirenState;
|
|
104
|
+
protected getBatteryState(event: BatterySetEvent, ignoreLastEvet?: boolean): BatteryState;
|
|
103
105
|
protected updateCamera(updatedCamera: Camera): void;
|
|
104
106
|
protected updatePrebuffer(sourceId: string, container: Container, state: PrebufferState): Promise<void>;
|
|
105
107
|
protected updateCameraSourcesState(): void;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import type { CameraActivitySettings } from '../api/database/types.js';
|
|
1
2
|
import type { Detection, DetectionZone } from './types.js';
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const convertZonePointsToPixels: (zone: DetectionZone, detection: Detection) => DetectionZone;
|
|
4
|
+
export declare const convertBoundingBoxToPixels: (detection: Detection) => Detection;
|
|
5
|
+
export declare const areObjectDetectionsValid: (detections: Detection[], zones: DetectionZone[], activitySettings: CameraActivitySettings) => Detection[];
|
|
6
|
+
export declare const areMotionDetectionsValid: (detections: Detection[], zones: DetectionZone[], activitySettings: CameraActivitySettings) => Detection[];
|
|
@@ -27,7 +27,7 @@ export declare class WeriftPeerConnection extends Subscribed implements BasicPee
|
|
|
27
27
|
onVideoRtp: Subject<RtpPacket>;
|
|
28
28
|
onVideoRtcp: Subject<RtcpPacket>;
|
|
29
29
|
onIceCandidate: Subject<RTCIceCandidate>;
|
|
30
|
-
onConnectionState: ReplaySubject<"
|
|
30
|
+
onConnectionState: ReplaySubject<"closed" | "failed" | "disconnected" | "new" | "connecting" | "connected">;
|
|
31
31
|
returnAudioTrack: MediaStreamTrack;
|
|
32
32
|
private onRequestKeyFrame;
|
|
33
33
|
private cameraDevice;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import type { Observable } from 'rxjs';
|
|
3
2
|
import type { CameraInformation, CameraInput, CameraInputSettings, Point, ZoneFilter, ZoneType } from '../api/database/types.js';
|
|
3
|
+
import type { FrameData, FrameMetadata } from '../decoder/types.js';
|
|
4
4
|
export interface BaseLogger {
|
|
5
5
|
log: (...args: any[]) => void;
|
|
6
6
|
error: (...args: any[]) => void;
|
|
@@ -101,7 +101,7 @@ export type CameraConfig = (BaseCameraConfig & {
|
|
|
101
101
|
});
|
|
102
102
|
export interface Detection {
|
|
103
103
|
id?: string;
|
|
104
|
-
label:
|
|
104
|
+
label: ObjectClass;
|
|
105
105
|
confidence: number;
|
|
106
106
|
boundingBox: [number, number, number, number];
|
|
107
107
|
inputWidth: number;
|
|
@@ -114,12 +114,12 @@ export interface DetectionZone {
|
|
|
114
114
|
points: Point[];
|
|
115
115
|
type: ZoneType;
|
|
116
116
|
filter: ZoneFilter;
|
|
117
|
-
classes:
|
|
117
|
+
classes: ObjectClass[];
|
|
118
118
|
isPrivacyMask: boolean;
|
|
119
119
|
}
|
|
120
|
-
export type
|
|
120
|
+
export type ObjectClass = 'person' | 'bicycle' | 'car' | 'motorcycle' | 'airplane' | 'bus' | 'train' | 'truck' | 'boat' | 'traffic light' | 'fire hydrant' | 'stop sign' | 'parking meter' | 'bench' | 'bird' | 'cat' | 'dog' | 'horse' | 'sheep' | 'cow' | 'elephant' | 'bear' | 'zebra' | 'giraffe' | 'backpack' | 'umbrella' | 'handbag' | 'tie' | 'suitcase' | 'frisbee' | 'skis' | 'snowboard' | 'sports ball' | 'kite' | 'baseball bat' | 'baseball glove' | 'skateboard' | 'surfboard' | 'tennis racket' | 'bottle' | 'wine glass' | 'cup' | 'fork' | 'knife' | 'spoon' | 'bowl' | 'banana' | 'apple' | 'sandwich' | 'orange' | 'broccoli' | 'carrot' | 'hot dog' | 'pizza' | 'donut' | 'cake' | 'chair' | 'couch' | 'potted plant' | 'bed' | 'dining table' | 'toilet' | 'tv' | 'laptop' | 'mouse' | 'remote' | 'keyboard' | 'cell phone' | 'microwave' | 'oven' | 'toaster' | 'sink' | 'refrigerator' | 'book' | 'clock' | 'vase' | 'scissors' | 'teddy bear' | 'hair drier' | 'toothbrush' | 'motion';
|
|
121
121
|
export interface BaseState<T extends LightState | AudioState | MotionState | ObjectState | SirenState | BatteryState | DoorbellState> {
|
|
122
|
-
timestamp:
|
|
122
|
+
timestamp: number;
|
|
123
123
|
lastEvent?: Omit<T, 'lastEvent'>;
|
|
124
124
|
}
|
|
125
125
|
export interface MotionSetEvent {
|
|
@@ -156,7 +156,8 @@ export type SirenState = BaseState<SirenState> & SirenSetEvent;
|
|
|
156
156
|
export type ObjectState = BaseState<ObjectState> & ObjectSetEvent;
|
|
157
157
|
export type BatteryState = BaseState<BatteryState> & BatterySetEvent;
|
|
158
158
|
export interface FrameState extends MotionState {
|
|
159
|
-
|
|
159
|
+
frameData: FrameData;
|
|
160
|
+
metadata: FrameMetadata;
|
|
160
161
|
}
|
|
161
162
|
export type States = LightState | MotionState | AudioState | ObjectState | DoorbellState | SirenState | BatteryState;
|
|
162
163
|
export type Sets = LightSetEvent | MotionSetEvent | AudioSetEvent | ObjectSetEvent | DoorbellSetEvent | SirenSetEvent | BatterySetEvent;
|
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import type { NatsConnection } from 'nats';
|
|
3
|
-
import type { FrameBuffer, FrameImage, FrameMetadata, ImageOptions, MotionFrame as MotionFrameMethods, VideoFrame as VideoFrameMethods } from '../decoder/types.js';
|
|
2
|
+
import type { DecoderFormat, FrameBuffer, FrameData, FrameImage, FrameMetadata, ImageOptions, MotionFrame as MotionFrameMethods, VideoFrame as VideoFrameMethods } from '../decoder/types.js';
|
|
4
3
|
import type { MotionState } from './types.js';
|
|
5
4
|
export declare class VideoFrame implements VideoFrameMethods {
|
|
6
|
-
readonly
|
|
5
|
+
readonly frameData: FrameData;
|
|
6
|
+
readonly metadata: FrameMetadata;
|
|
7
7
|
private frameGeneratorSubject;
|
|
8
8
|
private publisher;
|
|
9
|
-
private
|
|
10
|
-
get metadata(): FrameMetadata;
|
|
9
|
+
private prebufferDuration;
|
|
11
10
|
get inputWidth(): number;
|
|
12
11
|
get inputHeight(): number;
|
|
13
|
-
get inputFormat():
|
|
14
|
-
constructor(cameraId: string, publisher: NatsConnection,
|
|
12
|
+
get inputFormat(): DecoderFormat;
|
|
13
|
+
constructor(cameraId: string, publisher: NatsConnection, frameData: FrameData, metadata: FrameMetadata, prebufferDuration: number);
|
|
15
14
|
toBuffer(options?: ImageOptions): Promise<FrameBuffer>;
|
|
16
15
|
toImage(options?: ImageOptions): Promise<FrameImage>;
|
|
17
|
-
save(path: string, options?: ImageOptions
|
|
16
|
+
save(path: string, options?: ImageOptions): Promise<void>;
|
|
18
17
|
private send;
|
|
19
|
-
private getImageInformation;
|
|
20
18
|
private validateOptions;
|
|
19
|
+
private getImageInformation;
|
|
21
20
|
}
|
|
22
21
|
export declare class MotionFrame extends VideoFrame implements MotionFrameMethods {
|
|
23
|
-
motion: MotionState;
|
|
24
|
-
constructor(cameraId: string, publisher: NatsConnection,
|
|
22
|
+
readonly motion: MotionState;
|
|
23
|
+
constructor(cameraId: string, publisher: NatsConnection, frameData: FrameData, motionState: MotionState, metadata: FrameMetadata);
|
|
25
24
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import type { ChildProcess } from 'node:child_process';
|
|
4
2
|
import type { Sharp } from 'sharp';
|
|
5
3
|
import type { MotionState } from '../camera/types.js';
|
|
4
|
+
export type DecoderFormat = 'yuv' | 'rgb';
|
|
6
5
|
export interface FrameMetadata {
|
|
7
|
-
format:
|
|
6
|
+
format: DecoderFormat;
|
|
8
7
|
frameSize: number;
|
|
9
8
|
width: number;
|
|
10
9
|
origWidth: number;
|
|
@@ -22,24 +21,29 @@ export interface ImageResize {
|
|
|
22
21
|
height?: number;
|
|
23
22
|
}
|
|
24
23
|
export interface ImageFormat {
|
|
25
|
-
to:
|
|
24
|
+
to: ImageOutputFormat;
|
|
26
25
|
}
|
|
26
|
+
export type ImageInputFormat = 'yuv' | 'rgb' | 'rgba' | 'gray';
|
|
27
|
+
export type ImageOutputFormat = 'rgb' | 'rgba' | 'gray';
|
|
27
28
|
export interface ImageOptions {
|
|
28
29
|
format?: ImageFormat;
|
|
29
30
|
crop?: ImageCrop;
|
|
30
31
|
resize?: ImageResize;
|
|
31
32
|
}
|
|
32
33
|
export interface ProcessImageRequest {
|
|
34
|
+
frameData: FrameData;
|
|
35
|
+
metadata: FrameMetadata;
|
|
33
36
|
options: ImageOptions;
|
|
34
|
-
|
|
37
|
+
prebufferDuration: number;
|
|
35
38
|
}
|
|
36
39
|
export interface ImageInformation {
|
|
37
40
|
width: number;
|
|
38
41
|
height: number;
|
|
39
|
-
channels:
|
|
42
|
+
channels: 1 | 3 | 4;
|
|
43
|
+
format: ImageInputFormat;
|
|
40
44
|
}
|
|
41
45
|
export interface FrameBuffer {
|
|
42
|
-
image:
|
|
46
|
+
image: Uint8Array;
|
|
43
47
|
info: ImageInformation;
|
|
44
48
|
}
|
|
45
49
|
export interface FrameImage {
|
|
@@ -47,11 +51,11 @@ export interface FrameImage {
|
|
|
47
51
|
info: ImageInformation;
|
|
48
52
|
}
|
|
49
53
|
export interface VideoFrame {
|
|
50
|
-
readonly
|
|
51
|
-
metadata: FrameMetadata;
|
|
52
|
-
inputWidth: number;
|
|
53
|
-
inputHeight: number;
|
|
54
|
-
inputFormat:
|
|
54
|
+
readonly frameData: FrameData;
|
|
55
|
+
readonly metadata: FrameMetadata;
|
|
56
|
+
readonly inputWidth: number;
|
|
57
|
+
readonly inputHeight: number;
|
|
58
|
+
readonly inputFormat: DecoderFormat;
|
|
55
59
|
toBuffer: (options?: ImageOptions) => Promise<FrameBuffer>;
|
|
56
60
|
toImage: (options?: ImageOptions) => Promise<FrameImage>;
|
|
57
61
|
save: (path: string, options?: ImageOptions) => Promise<void>;
|
|
@@ -75,10 +79,11 @@ export interface BaseFrameWorkerConfig {
|
|
|
75
79
|
user: string;
|
|
76
80
|
pass: string;
|
|
77
81
|
};
|
|
78
|
-
|
|
79
|
-
|
|
82
|
+
proxyEndpoints: string[];
|
|
83
|
+
fps: number;
|
|
84
|
+
resolution: number;
|
|
80
85
|
}
|
|
81
|
-
export type WorkerMessage = 'started' | 'getFFmpegArgs' | 'updateClient' | 'removeClient'
|
|
86
|
+
export type WorkerMessage = 'started' | 'getFFmpegArgs' | 'updateClient' | 'removeClient';
|
|
82
87
|
export type MainMessage = 'setCameraName' | 'recoverClients';
|
|
83
88
|
export interface MainToWorkerMessage {
|
|
84
89
|
message: MainMessage;
|
|
@@ -94,14 +99,15 @@ export interface WorkerToMainMessage {
|
|
|
94
99
|
export interface MainToWorkerResponse {
|
|
95
100
|
response?: Record<string, any>;
|
|
96
101
|
}
|
|
102
|
+
export type SignalingMessageType = 'connect' | 'disconnect' | 'metadata';
|
|
97
103
|
export interface SignalingRequest {
|
|
98
|
-
type:
|
|
99
|
-
requestId: string;
|
|
100
|
-
cameraId: string;
|
|
104
|
+
type: SignalingMessageType;
|
|
101
105
|
pluginId: string;
|
|
106
|
+
cameraId: string;
|
|
107
|
+
requestId: string;
|
|
102
108
|
}
|
|
103
109
|
export interface SignalingResponse {
|
|
104
|
-
type:
|
|
110
|
+
type: SignalingMessageType;
|
|
105
111
|
requestId: string;
|
|
106
112
|
metadata?: FrameMetadata;
|
|
107
113
|
}
|
|
@@ -130,11 +136,14 @@ export interface FrameWorkerClient {
|
|
|
130
136
|
pluginId: string;
|
|
131
137
|
requestIds: string[];
|
|
132
138
|
}
|
|
133
|
-
export interface RecoveredClient {
|
|
134
|
-
pluginId: string;
|
|
135
|
-
requestIds: string[];
|
|
139
|
+
export interface RecoveredClient extends FrameWorkerClient {
|
|
136
140
|
}
|
|
137
141
|
export interface PrebufferContainer {
|
|
142
|
+
frameId: string;
|
|
138
143
|
time: number;
|
|
139
144
|
frame: Buffer;
|
|
140
145
|
}
|
|
146
|
+
export interface FrameData {
|
|
147
|
+
frameId: string;
|
|
148
|
+
timestamp: number;
|
|
149
|
+
}
|
|
@@ -13,18 +13,18 @@ export declare class FrameWorker extends Subscribed {
|
|
|
13
13
|
private logger;
|
|
14
14
|
private configService;
|
|
15
15
|
private socketService;
|
|
16
|
-
private
|
|
16
|
+
private cameraDevice;
|
|
17
17
|
private frameWorker?;
|
|
18
18
|
private initialized;
|
|
19
19
|
private stopped;
|
|
20
20
|
private restarting;
|
|
21
21
|
private auth;
|
|
22
|
-
private
|
|
22
|
+
private proxyEndpoints;
|
|
23
23
|
private ffmpegArgs;
|
|
24
24
|
private py;
|
|
25
25
|
private _status;
|
|
26
26
|
get status(): PLUGIN_STATUS;
|
|
27
|
-
constructor(
|
|
27
|
+
constructor(cameraDevice: CameraController, proxyEndpoints: string[], auth: {
|
|
28
28
|
user: string;
|
|
29
29
|
pass: string;
|
|
30
30
|
});
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import type { Camera } from '../../api/database/types.js';
|
|
3
2
|
import type { CameraDelegate, CameraPrebufferDelegate, Container, FfmpegOptions, PrebufferState, SetValues, StateValues, StreamInfo } from '../../camera/types.js';
|
|
4
3
|
import type { IceServer } from '../../services/config/types.js';
|
|
@@ -9,7 +8,6 @@ export declare class CameraDeviceProxy implements CameraDeviceProxyMethods {
|
|
|
9
8
|
private configService;
|
|
10
9
|
private camerasService;
|
|
11
10
|
private pluginsService;
|
|
12
|
-
private socketService;
|
|
13
11
|
private messageQueue;
|
|
14
12
|
constructor(messageQueue: MessageQueue);
|
|
15
13
|
connect(data: {
|