@camera.ui/browser 0.0.47 → 0.0.49
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/{packages/client/node → types/packages/client/browser}/src/client.d.ts +6 -1
- package/dist/types/packages/client/browser/src/index.d.ts +2 -0
- package/dist/types/packages/client/browser/src/proxy/cameraDevice.d.ts +21 -0
- package/dist/{packages/client/node → types/packages/client/browser}/src/proxy/deviceManager.d.ts +3 -2
- package/dist/types/packages/client/browser/src/proxy/index.d.ts +4 -0
- package/dist/{packages → types/packages}/client/node/src/types.d.ts +1 -10
- package/dist/{server → types/server}/src/api/database/types.d.ts +1 -0
- package/dist/{server → types/server}/src/api/schemas/backup.schema.d.ts +52 -52
- package/dist/{server → types/server}/src/api/schemas/cameras.schema.d.ts +70 -64
- package/dist/{server → types/server}/src/api/types/index.d.ts +0 -1
- package/dist/{server/src/camera/index.d.ts → types/server/src/camera/base.d.ts} +37 -36
- package/dist/{server → types/server}/src/camera/streaming/browser/browser-peer-connection.d.ts +2 -1
- package/dist/{server → types/server}/src/camera/streaming/browser/browser-streaming-session.d.ts +2 -1
- package/dist/{server → types/server}/src/camera/streaming/browser/webrtc-browser-connection.d.ts +2 -1
- package/dist/{server → types/server}/src/camera/streaming/peer-connection.d.ts +3 -2
- package/dist/{server → types/server}/src/camera/streaming/streaming-session.d.ts +2 -1
- package/dist/{server → types/server}/src/camera/streaming/webrtc-connection.d.ts +2 -1
- package/dist/{server → types/server}/src/camera/types.d.ts +8 -63
- package/dist/types/server/src/camera/utils/subscribed.d.ts +9 -0
- package/dist/types/server/src/detector/types.d.ts +48 -0
- package/dist/{server → types/server}/src/plugins/types.d.ts +2 -8
- package/dist/{server → types/server}/src/proxy/types.d.ts +12 -13
- package/dist/{server → types/server}/src/services/config/types.d.ts +1 -1
- package/dist/{shared → types/shared}/types/index.d.ts +2 -0
- package/package.json +24 -14
- package/dist/packages/client/node/src/index.d.ts +0 -2
- package/dist/packages/client/node/src/proxy/cameraDevice/cameraDevice.browser.d.ts +0 -83
- package/dist/packages/client/node/src/proxy/cameraDevice/cameraDevice.mock.d.ts +0 -1
- package/dist/packages/client/node/src/proxy/cameraDevice/cameraDevice.node.d.ts +0 -19
- package/dist/packages/client/node/src/proxy/cameraDevice/index.d.ts +0 -2
- package/dist/packages/client/node/src/proxy/index.d.ts +0 -4
- package/dist/server/bin/python.d.ts +0 -26
- package/dist/server/src/api/database/index.d.ts +0 -25
- package/dist/server/src/api/go2rtc/api/application.d.ts +0 -9
- package/dist/server/src/api/go2rtc/api/config.d.ts +0 -9
- package/dist/server/src/api/go2rtc/api/index.d.ts +0 -3
- package/dist/server/src/api/go2rtc/api/snapshot.d.ts +0 -8
- package/dist/server/src/api/go2rtc/api/streams.d.ts +0 -11
- package/dist/server/src/api/go2rtc/index.d.ts +0 -13
- package/dist/server/src/api/go2rtc/queue.d.ts +0 -10
- package/dist/server/src/api/middlewares/socketAuth.middleware.d.ts +0 -41
- package/dist/server/src/api/services/auth.service.d.ts +0 -20
- package/dist/server/src/api/services/cameras.service.d.ts +0 -55
- package/dist/server/src/api/services/plugins.service.d.ts +0 -25
- package/dist/server/src/api/services/users.service.d.ts +0 -13
- package/dist/server/src/api/utils/constants.d.ts +0 -15
- package/dist/server/src/api/ws/index.d.ts +0 -15
- package/dist/server/src/api/ws/nsp/logs.d.ts +0 -11
- package/dist/server/src/api/ws/nsp/main.d.ts +0 -9
- package/dist/server/src/api/ws/nsp/metrics.d.ts +0 -33
- package/dist/server/src/api/ws/nsp/notifications.d.ts +0 -11
- package/dist/server/src/api/ws/nsp/plugins.d.ts +0 -13
- package/dist/server/src/api/ws/nsp/status.d.ts +0 -20
- package/dist/server/src/api/ws/nsp/streams.d.ts +0 -15
- package/dist/server/src/api.d.ts +0 -31
- package/dist/server/src/camera/utils/subscribed.d.ts +0 -6
- package/dist/server/src/go2rtc/index.d.ts +0 -26
- package/dist/server/src/plugins/index.d.ts +0 -29
- package/dist/server/src/plugins/node/api.d.ts +0 -37
- package/dist/server/src/plugins/node/cameraStorage.d.ts +0 -107
- package/dist/server/src/plugins/node/config.d.ts +0 -104
- package/dist/server/src/plugins/node/logger.d.ts +0 -11
- package/dist/server/src/plugins/node/proxy/cameraDevice.d.ts +0 -33
- package/dist/server/src/plugins/node/proxy/deviceManager.d.ts +0 -45
- package/dist/server/src/plugins/node/proxy/index.d.ts +0 -4
- package/dist/server/src/plugins/node/proxy/pluginsManager.d.ts +0 -36
- package/dist/server/src/plugins/node/proxy/queue.d.ts +0 -17
- package/dist/server/src/plugins/node/proxy/systemManager.d.ts +0 -34
- package/dist/server/src/plugins/node/schema.d.ts +0 -268
- package/dist/server/src/plugins/node/storageController.d.ts +0 -28
- package/dist/server/src/plugins/plugin.d.ts +0 -51
- package/dist/server/src/plugins/worker-ipc.d.ts +0 -16
- package/dist/server/src/plugins/worker.d.ts +0 -30
- package/dist/server/src/proxy/api.d.ts +0 -29
- package/dist/server/src/proxy/camera.d.ts +0 -98
- package/dist/server/src/proxy/constants.d.ts +0 -7
- package/dist/server/src/proxy/index.d.ts +0 -29
- package/dist/server/src/proxy/plugin.d.ts +0 -12
- package/dist/server/src/proxy/queue.d.ts +0 -16
- package/dist/server/src/proxy/utils/generateKeys.d.ts +0 -5
- package/dist/server/src/proxy/ws.d.ts +0 -12
- package/dist/server/src/services/config/constants.d.ts +0 -6
- package/dist/server/src/services/config/index.d.ts +0 -58
- package/dist/server/src/services/logger/index.d.ts +0 -28
- package/dist/shared/common/utils.d.ts +0 -6
- package/dist/{packages → types/packages}/client/node/src/api.d.ts +0 -0
- package/dist/{packages → types/packages}/client/node/src/proxy/pluginsManager.d.ts +0 -0
- package/dist/{packages → types/packages}/client/node/src/proxy/systemManager.d.ts +0 -0
- package/dist/{packages → types/packages}/client/node/src/socket.d.ts +0 -0
- package/dist/{server → types/server}/src/api/go2rtc/types.d.ts +0 -0
- package/dist/{server → types/server}/src/api/schemas/config.schema.d.ts +5 -5
- package/dist/{server → types/server}/src/api/schemas/go2rtc.schema.d.ts +79 -79
- package/dist/{server → types/server}/src/api/schemas/users.schema.d.ts +84 -84
- /package/dist/{server → types/server}/src/api/ws/types.d.ts +0 -0
- /package/dist/{server → types/server}/src/go2rtc/types.d.ts +0 -0
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
1
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
2
2
|
import { BrowserStreamingSession } from './streaming/browser/browser-streaming-session';
|
|
3
3
|
import { StreamingSession } from './streaming/streaming-session';
|
|
4
|
+
import { Subscribed } from './utils/subscribed';
|
|
4
5
|
import type { Camera, CameraInformation, CameraPublicProperties, CameraType, CameraZone } from '../api/database/types';
|
|
5
|
-
import type {
|
|
6
|
+
import type { Frame } from '../detector/types';
|
|
6
7
|
import type { IceServer } from '../services/config/types';
|
|
7
|
-
import type { AudioState, BaseLogger, BatteryState, CameraDelegate,
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
onStarted: Observable<boolean>;
|
|
8
|
+
import type { AudioState, BaseLogger, BatteryState, CameraDelegate, CameraPrebufferDelegate, CameraSource, DoorbellState, FfmpegOptions, LightState, MotionState, ObjectState, OnSetEvent, SirenState, StateValues, StreamingConnectionOptions } from './types';
|
|
9
|
+
export type CameraDevice = ServerCameraDeviceBase | BrowserCameraDeviceBase;
|
|
10
|
+
export declare abstract class CameraDeviceBase extends Subscribed {
|
|
11
|
+
protected logger: BaseLogger;
|
|
12
|
+
protected cameraSubject: BehaviorSubject<Camera>;
|
|
13
|
+
protected cameraState: BehaviorSubject<boolean>;
|
|
14
|
+
protected lightState: BehaviorSubject<LightState>;
|
|
15
|
+
protected motionState: BehaviorSubject<MotionState>;
|
|
16
|
+
protected audioState: BehaviorSubject<AudioState>;
|
|
17
|
+
protected objectState: BehaviorSubject<ObjectState>;
|
|
18
|
+
protected doorbellState: BehaviorSubject<DoorbellState>;
|
|
19
|
+
protected sirenState: BehaviorSubject<SirenState>;
|
|
20
|
+
protected batteryState: BehaviorSubject<BatteryState>;
|
|
21
|
+
onConnected: Observable<boolean>;
|
|
22
22
|
onLightSwitched: Observable<LightState>;
|
|
23
23
|
onMotionDetected: Observable<MotionState>;
|
|
24
24
|
onAudioDetected: Observable<AudioState>;
|
|
@@ -56,17 +56,15 @@ export declare class CameraController implements CameraDevice {
|
|
|
56
56
|
set delegate(delegate: CameraDelegate);
|
|
57
57
|
get prebufferDelegate(): CameraPrebufferDelegate | undefined;
|
|
58
58
|
set prebufferDelegate(delegate: CameraPrebufferDelegate);
|
|
59
|
-
constructor(camera: Camera, logger: BaseLogger
|
|
60
|
-
connect(): Promise<void>;
|
|
61
|
-
disconnect(): Promise<void>;
|
|
62
|
-
reboot(): Promise<void>;
|
|
63
|
-
snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
streamVideo(sourceName: string, options: FfmpegOptions): Promise<StreamingSession>;
|
|
69
|
-
recordToFile(sourceName: string, outputPath: string, duration?: number): Promise<void>;
|
|
59
|
+
constructor(camera: Camera, logger: BaseLogger);
|
|
60
|
+
abstract connect(): Promise<void>;
|
|
61
|
+
abstract disconnect(): Promise<void>;
|
|
62
|
+
abstract reboot(): Promise<void>;
|
|
63
|
+
abstract snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
|
|
64
|
+
abstract generateFrames(): AsyncIterableIterator<Frame>;
|
|
65
|
+
abstract getFfmpegPath(): Promise<string>;
|
|
66
|
+
abstract getIceServers(): Promise<IceServer[]>;
|
|
67
|
+
abstract recordToFile(sourceName: string, outputPath: string, duration?: number): Promise<void>;
|
|
70
68
|
getValue<T extends keyof StateValues>(stateName: T): StateValues[T];
|
|
71
69
|
updateState<T extends keyof StateValues>(stateName: T, eventData: OnSetEvent<T>): Promise<void>;
|
|
72
70
|
onStateChange<T extends keyof StateValues>(stateName: T): Observable<{
|
|
@@ -77,13 +75,16 @@ export declare class CameraController implements CameraDevice {
|
|
|
77
75
|
oldData: Camera[T];
|
|
78
76
|
newData: Camera[T];
|
|
79
77
|
}>;
|
|
80
|
-
updateCamera(updatedCamera: Camera): void;
|
|
81
|
-
updateCameraState(state: boolean): void;
|
|
82
|
-
removeCamera(): void;
|
|
83
|
-
removeAllListeners(): void;
|
|
84
78
|
private createStateObservable;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
79
|
+
protected updateCamera(updatedCamera: Camera): void;
|
|
80
|
+
protected updateCameraState(state: boolean): void;
|
|
81
|
+
protected removeAllListeners(): void;
|
|
82
|
+
}
|
|
83
|
+
export declare abstract class ServerCameraDeviceBase extends CameraDeviceBase {
|
|
84
|
+
createSession(sourceName: string, options?: StreamingConnectionOptions): Promise<StreamingSession>;
|
|
85
|
+
streamVideo(sourceName: string, options: FfmpegOptions): Promise<StreamingSession>;
|
|
86
|
+
recordToFile(sourceName: string, outputPath: string, duration?: number): Promise<void>;
|
|
87
|
+
}
|
|
88
|
+
export declare abstract class BrowserCameraDeviceBase extends CameraDeviceBase {
|
|
89
|
+
createBrowserSession(sourceName: string, videoElement: HTMLVideoElement): Promise<BrowserStreamingSession>;
|
|
89
90
|
}
|
package/dist/{server → types/server}/src/camera/streaming/browser/browser-peer-connection.d.ts
RENAMED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ReplaySubject, Subject } from 'rxjs';
|
|
2
2
|
import { Subscribed } from '../../utils/subscribed';
|
|
3
3
|
import type { IceServer } from '../../../services/config/types';
|
|
4
|
-
import type {
|
|
4
|
+
import type { BrowserCameraDeviceBase as CameraDevice } from '../../base';
|
|
5
|
+
import type { BaseLogger, BasicBrowserPeerConnection } from '../../types';
|
|
5
6
|
export declare class BrowserPeerConnection extends Subscribed implements BasicBrowserPeerConnection {
|
|
6
7
|
onIceCandidate: Subject<RTCIceCandidate>;
|
|
7
8
|
onConnectionState: ReplaySubject<RTCPeerConnectionState>;
|
package/dist/{server → types/server}/src/camera/streaming/browser/browser-streaming-session.d.ts
RENAMED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Observable, ReplaySubject } from 'rxjs';
|
|
2
2
|
import { Subscribed } from '../../utils/subscribed';
|
|
3
|
-
import type {
|
|
3
|
+
import type { BrowserCameraDeviceBase as CameraDevice } from '../../base';
|
|
4
|
+
import type { BaseLogger } from '../../types';
|
|
4
5
|
import type { WebrtcBrowserConnection } from './webrtc-browser-connection';
|
|
5
6
|
export declare class BrowserStreamingSession extends Subscribed {
|
|
6
7
|
readonly onCallAnswered: ReplaySubject<void>;
|
package/dist/{server → types/server}/src/camera/streaming/browser/webrtc-browser-connection.d.ts
RENAMED
|
@@ -2,7 +2,8 @@ import { ReplaySubject, type Observable } from 'rxjs';
|
|
|
2
2
|
import { Subscribed } from '../../utils/subscribed';
|
|
3
3
|
import { BrowserPeerConnection } from './browser-peer-connection';
|
|
4
4
|
import type { IceServer } from '../../../services/config/types';
|
|
5
|
-
import type {
|
|
5
|
+
import type { BrowserCameraDeviceBase as CameraDevice } from '../../base';
|
|
6
|
+
import type { BaseLogger } from '../../types';
|
|
6
7
|
export declare class WebrtcBrowserConnection extends Subscribed {
|
|
7
8
|
readonly onCallAnswered: ReplaySubject<string>;
|
|
8
9
|
readonly onCallEnded: ReplaySubject<void>;
|
|
@@ -3,14 +3,15 @@ import { MediaStreamTrack, RTCSessionDescription } from 'werift';
|
|
|
3
3
|
import { Subscribed } from '../utils/subscribed';
|
|
4
4
|
import type { RTCIceCandidate, RtcpPacket, RtpPacket } from 'werift';
|
|
5
5
|
import type { IceServer } from '../../services/config/types';
|
|
6
|
-
import type {
|
|
6
|
+
import type { ServerCameraDeviceBase as CameraDevice } from '../base';
|
|
7
|
+
import type { BaseLogger, BasicPeerConnection } from '../types';
|
|
7
8
|
export declare class WeriftPeerConnection extends Subscribed implements BasicPeerConnection {
|
|
8
9
|
onAudioRtp: Subject<RtpPacket>;
|
|
9
10
|
onAudioRtcp: Subject<RtcpPacket>;
|
|
10
11
|
onVideoRtp: Subject<RtpPacket>;
|
|
11
12
|
onVideoRtcp: Subject<RtcpPacket>;
|
|
12
13
|
onIceCandidate: Subject<RTCIceCandidate>;
|
|
13
|
-
onConnectionState: ReplaySubject<"closed" | "
|
|
14
|
+
onConnectionState: ReplaySubject<"closed" | "failed" | "disconnected" | "new" | "connecting" | "connected">;
|
|
14
15
|
returnAudioTrack: MediaStreamTrack;
|
|
15
16
|
private onRequestKeyFrame;
|
|
16
17
|
private cameraDevice;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ReplaySubject, Subject } from 'rxjs';
|
|
2
2
|
import { RtpPacket } from 'werift';
|
|
3
3
|
import { Subscribed } from '../utils/subscribed';
|
|
4
|
-
import type {
|
|
4
|
+
import type { ServerCameraDeviceBase as CameraDevice } from '../base';
|
|
5
|
+
import type { BaseLogger, FfmpegOptions, SpawnInput } from '../types';
|
|
5
6
|
import type { WebrtcConnection } from './webrtc-connection';
|
|
6
7
|
export declare class StreamingSession extends Subscribed {
|
|
7
8
|
readonly onCallEnded: ReplaySubject<void>;
|
|
@@ -2,7 +2,8 @@ import { ReplaySubject, Subject, type Observable } from 'rxjs';
|
|
|
2
2
|
import { Subscribed } from '../utils/subscribed';
|
|
3
3
|
import type { RtpPacket } from 'werift';
|
|
4
4
|
import type { IceServer } from '../../services/config/types';
|
|
5
|
-
import type {
|
|
5
|
+
import type { ServerCameraDeviceBase as CameraDevice } from '../base';
|
|
6
|
+
import type { BaseLogger, StreamingConnectionOptions } from '../types';
|
|
6
7
|
export declare class WebrtcConnection extends Subscribed {
|
|
7
8
|
readonly onCameraConnected: ReplaySubject<void>;
|
|
8
9
|
readonly onCallAnswered: ReplaySubject<string>;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
/// <reference types="pouchdb-core" />
|
|
2
1
|
/// <reference types="node" />
|
|
3
2
|
import type { Observable, Subject } from 'rxjs';
|
|
4
3
|
import type { ConnectionState, RTCSessionDescription, RTCIceCandidate as WeriftRTCICECandidate } from 'werift';
|
|
5
|
-
import type {
|
|
6
|
-
import type { IceServer } from '../services/config/types';
|
|
7
|
-
import type { BrowserStreamingSession } from './streaming/browser/browser-streaming-session';
|
|
8
|
-
import type { StreamingSession } from './streaming/streaming-session';
|
|
4
|
+
import type { CameraInformation, CameraInput, CameraInputSettings } from '../api/database/types';
|
|
9
5
|
export type SpawnInput = string | number;
|
|
10
6
|
export type PrebufferType = 'recording' | 'stream';
|
|
11
7
|
export interface CameraSource extends CameraInput {
|
|
@@ -54,63 +50,6 @@ export interface BasicBrowserPeerConnection {
|
|
|
54
50
|
onConnectionState: Observable<RTCPeerConnectionState>;
|
|
55
51
|
close(): void;
|
|
56
52
|
}
|
|
57
|
-
export interface CameraDevice {
|
|
58
|
-
id: string;
|
|
59
|
-
pluginId: string;
|
|
60
|
-
nativeId?: string;
|
|
61
|
-
state: boolean;
|
|
62
|
-
disabled: boolean;
|
|
63
|
-
name: string;
|
|
64
|
-
type: CameraType;
|
|
65
|
-
info: CameraInformation;
|
|
66
|
-
sources: CameraSource[];
|
|
67
|
-
motionZones: CameraZone[];
|
|
68
|
-
objectZones: CameraZone[];
|
|
69
|
-
isCloud: boolean;
|
|
70
|
-
hasLight: boolean;
|
|
71
|
-
hasSiren: boolean;
|
|
72
|
-
hasBinarySensor: boolean;
|
|
73
|
-
hasBattery: boolean;
|
|
74
|
-
hasMotionDetector: boolean;
|
|
75
|
-
hasAudioDetector: boolean;
|
|
76
|
-
hasObjectDetector: boolean;
|
|
77
|
-
hasPtz: boolean;
|
|
78
|
-
onStarted: Observable<boolean>;
|
|
79
|
-
onLightSwitched: Observable<LightState>;
|
|
80
|
-
onMotionDetected: Observable<MotionState>;
|
|
81
|
-
onAudioDetected: Observable<AudioState>;
|
|
82
|
-
onObjectDetected: Observable<ObjectState>;
|
|
83
|
-
onDoorbellPressed: Observable<DoorbellState>;
|
|
84
|
-
onSirenDetected: Observable<SirenState>;
|
|
85
|
-
onBatteryChanged: Observable<BatteryState>;
|
|
86
|
-
streamSource: CameraSource;
|
|
87
|
-
snapshotSource: CameraSource;
|
|
88
|
-
recordingSource: CameraSource;
|
|
89
|
-
detectionSource: CameraSource;
|
|
90
|
-
delegate?: CameraDelegate;
|
|
91
|
-
prebufferDelegate?: CameraPrebufferDelegate;
|
|
92
|
-
connect(): Promise<void>;
|
|
93
|
-
disconnect(): Promise<void>;
|
|
94
|
-
reboot(): Promise<void>;
|
|
95
|
-
getFfmpegPath(): Promise<string>;
|
|
96
|
-
getIceServers(): Promise<IceServer[]>;
|
|
97
|
-
snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
|
|
98
|
-
createSession(sourceName: string, options?: StreamingConnectionOptions): Promise<StreamingSession>;
|
|
99
|
-
createBrowserSession(sourceName: string, videoElement: HTMLVideoElement): Promise<BrowserStreamingSession>;
|
|
100
|
-
streamVideo(sourceName: string, options: FfmpegOptions): Promise<StreamingSession>;
|
|
101
|
-
recordToFile(sourceName: string, outputPath: string, duration?: number): Promise<void>;
|
|
102
|
-
getValue<T extends keyof StateValues>(stateName: T): StateValue<T>;
|
|
103
|
-
updateState<T extends keyof StateValues>(stateName: T, eventData: OnSetEvent<T>): Promise<void>;
|
|
104
|
-
onStateChange<T extends keyof StateValues>(stateName: T): Observable<{
|
|
105
|
-
newState: StateValues[T];
|
|
106
|
-
oldState: StateValues[T];
|
|
107
|
-
}>;
|
|
108
|
-
onPropertyChange<T extends keyof CameraPublicProperties>(property: T): Observable<{
|
|
109
|
-
oldData: Camera[T];
|
|
110
|
-
newData: Camera[T];
|
|
111
|
-
}>;
|
|
112
|
-
removeAllListeners(): void;
|
|
113
|
-
}
|
|
114
53
|
export interface CameraDelegate {
|
|
115
54
|
snapshotRequest(requestId: string): Promise<Buffer>;
|
|
116
55
|
prepareStream(requestId: string): Promise<void>;
|
|
@@ -181,15 +120,21 @@ export interface BaseState {
|
|
|
181
120
|
timestamp: number;
|
|
182
121
|
lastTriggered: number;
|
|
183
122
|
}
|
|
123
|
+
export interface Detections {
|
|
124
|
+
id?: string;
|
|
125
|
+
label?: string;
|
|
126
|
+
boundingBox: [number, number, number, number];
|
|
127
|
+
}
|
|
184
128
|
export interface MotionSetEvent {
|
|
185
129
|
state: boolean;
|
|
130
|
+
detections: Detections[];
|
|
186
131
|
}
|
|
187
132
|
export interface AudioSetEvent {
|
|
188
133
|
state: boolean;
|
|
189
134
|
}
|
|
190
135
|
export interface ObjectSetEvent {
|
|
191
136
|
state: boolean;
|
|
192
|
-
detections:
|
|
137
|
+
detections: Detections[];
|
|
193
138
|
}
|
|
194
139
|
export interface LightSetEvent {
|
|
195
140
|
state: boolean;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Subscription } from 'rxjs';
|
|
2
|
+
export declare class Subscribed {
|
|
3
|
+
private readonly subscriptions;
|
|
4
|
+
private readonly additionalSubscriptions;
|
|
5
|
+
protected addSubscriptions(...subscriptions: Subscription[]): void;
|
|
6
|
+
protected addAdditionalSubscriptions(...subscriptions: Subscription[]): void;
|
|
7
|
+
protected unsubscribe(): void;
|
|
8
|
+
protected unsubscribeAdditional(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
/// <reference types="node" />
|
|
4
|
+
import type { ChildProcess } from 'child_process';
|
|
5
|
+
import type { Server } from 'net';
|
|
6
|
+
export interface FrameMetadata {
|
|
7
|
+
format: string;
|
|
8
|
+
frameSize: number;
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
}
|
|
12
|
+
export interface Frame {
|
|
13
|
+
metadata: FrameMetadata;
|
|
14
|
+
data: Buffer;
|
|
15
|
+
}
|
|
16
|
+
export interface VideoSession {
|
|
17
|
+
isActive(): boolean;
|
|
18
|
+
kill: (reason?: string) => void;
|
|
19
|
+
server: Server;
|
|
20
|
+
cp: ChildProcess;
|
|
21
|
+
}
|
|
22
|
+
export interface BaseFrameWorkerConfig {
|
|
23
|
+
cameraId: string;
|
|
24
|
+
cameraName: string;
|
|
25
|
+
ffmpegPath: string;
|
|
26
|
+
logLevel?: string;
|
|
27
|
+
disableTimestamps?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export type WorkerMessage = 'ready' | 'getCameraSource';
|
|
30
|
+
export type MainMessage = 'getMetadata' | 'startWorker' | 'stopWorker' | 'startVideoSession' | 'stopVideoSession' | 'setCameraName';
|
|
31
|
+
export interface MainToWorkerMessage {
|
|
32
|
+
id: string;
|
|
33
|
+
message: MainMessage;
|
|
34
|
+
data: Record<string, any>;
|
|
35
|
+
}
|
|
36
|
+
export interface WorkerToMainResponse {
|
|
37
|
+
id: string;
|
|
38
|
+
response: any;
|
|
39
|
+
}
|
|
40
|
+
export interface WorkerToMainMessage {
|
|
41
|
+
id: string;
|
|
42
|
+
message: WorkerMessage;
|
|
43
|
+
data: Record<string, any>;
|
|
44
|
+
}
|
|
45
|
+
export interface MainToWorkerResponse {
|
|
46
|
+
id: string;
|
|
47
|
+
response: any;
|
|
48
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Camera } from '../api/database/types';
|
|
2
|
-
import type { CameraDevice } from '../camera/
|
|
2
|
+
import type { CameraDevice } from '../camera/base';
|
|
3
3
|
export interface SchemaConfig {
|
|
4
4
|
rootSchema: PluginRootSchema;
|
|
5
5
|
config: Record<string, any>;
|
|
@@ -21,7 +21,6 @@ type ExtensionOrSupport = {
|
|
|
21
21
|
supportAdditionalCameras?: boolean;
|
|
22
22
|
};
|
|
23
23
|
export interface PluginContractBase {
|
|
24
|
-
pluginName: string;
|
|
25
24
|
builtIns?: Exclude<CameraExtension, 'hub'>[];
|
|
26
25
|
dependencies?: string[];
|
|
27
26
|
pythonVersion?: string;
|
|
@@ -46,13 +45,8 @@ export interface PluginStorage {
|
|
|
46
45
|
storagePath: string;
|
|
47
46
|
configFile: string;
|
|
48
47
|
}
|
|
49
|
-
export interface ProxyInfo {
|
|
50
|
-
routerAddress: string;
|
|
51
|
-
pubAddress: string;
|
|
52
|
-
publicKey: string;
|
|
53
|
-
}
|
|
54
48
|
export interface ProcessLoadMessage {
|
|
55
|
-
|
|
49
|
+
publicKey: string;
|
|
56
50
|
cameras: Camera[];
|
|
57
51
|
pluginId: string;
|
|
58
52
|
storage: PluginStorage;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Camera } from '../api/database/types';
|
|
2
|
-
import type {
|
|
2
|
+
import type { BrowserCameraDeviceBase, CameraDevice, ServerCameraDeviceBase } from '../camera/base';
|
|
3
|
+
import type { CameraConfig, FfmpegOptions, OnSetEvent, PrebufferType, StateValues, StreamInfo } from '../camera/types';
|
|
4
|
+
import type { FrameMetadata } from '../detector/types';
|
|
3
5
|
import type { CameraExtension } from '../plugins/types';
|
|
4
6
|
import type { IceServer } from '../services/config/types';
|
|
5
7
|
export type MethodKeys<T> = {
|
|
@@ -74,23 +76,15 @@ export interface DeviceManagerProxyEvents {
|
|
|
74
76
|
camera: Camera;
|
|
75
77
|
extension: CameraExtension;
|
|
76
78
|
};
|
|
77
|
-
cameraAdded: {
|
|
78
|
-
camera: Camera;
|
|
79
|
-
};
|
|
80
|
-
cameraRemoved: {
|
|
81
|
-
camera: Camera;
|
|
82
|
-
};
|
|
83
79
|
cameraUpdated: {
|
|
84
80
|
camera: Camera;
|
|
85
81
|
};
|
|
86
82
|
}
|
|
87
|
-
export
|
|
88
|
-
cameraSelected: (camera:
|
|
83
|
+
export interface DeviceManagerProxyEventCallbacks {
|
|
84
|
+
cameraSelected: ((camera: ServerCameraDeviceBase, extension: CameraExtension) => void) | ((camera: BrowserCameraDeviceBase, extension: CameraExtension) => void);
|
|
89
85
|
cameraDeselected: (cameraId: string, extension: CameraExtension) => void;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
cameraUpdated: (cameraId: string, camera: CameraDevice) => void;
|
|
93
|
-
};
|
|
86
|
+
cameraUpdated: ((cameraId: string, camera: ServerCameraDeviceBase) => void) | ((cameraId: string, camera: BrowserCameraDeviceBase) => void);
|
|
87
|
+
}
|
|
94
88
|
export interface DeviceManagerProxyGenericEvent<K extends keyof DeviceManagerProxyEvents> {
|
|
95
89
|
type: K;
|
|
96
90
|
data: DeviceManagerProxyEvents[K];
|
|
@@ -181,6 +175,11 @@ export interface CameraDeviceProxyMethods {
|
|
|
181
175
|
pluginId?: string;
|
|
182
176
|
ws?: boolean;
|
|
183
177
|
}): Promise<StreamInfo | undefined>;
|
|
178
|
+
getFrameMetadata(data: {
|
|
179
|
+
cameraId: string;
|
|
180
|
+
pluginId?: string;
|
|
181
|
+
ws?: boolean;
|
|
182
|
+
}): Promise<FrameMetadata | undefined>;
|
|
184
183
|
getFffmpegPath(data: {
|
|
185
184
|
cameraId: string;
|
|
186
185
|
pluginId?: string;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export * from '../../server/src/api/database/types';
|
|
2
2
|
export * from '../../server/src/api/types';
|
|
3
3
|
export * from '../../server/src/api/ws/types';
|
|
4
|
+
export * from '../../server/src/camera/base';
|
|
4
5
|
export * from '../../server/src/camera/streaming/browser/browser-streaming-session';
|
|
5
6
|
export * from '../../server/src/camera/streaming/browser/webrtc-browser-connection';
|
|
6
7
|
export * from '../../server/src/camera/types';
|
|
8
|
+
export * from '../../server/src/detector/types';
|
|
7
9
|
export * from '../../server/src/go2rtc/types';
|
|
8
10
|
export * from '../../server/src/plugins/types';
|
|
9
11
|
export * from '../../server/src/proxy/types';
|
package/package.json
CHANGED
|
@@ -1,47 +1,57 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camera.ui/browser",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.49",
|
|
4
4
|
"description": "camera.ui browser client",
|
|
5
5
|
"author": "seydx (https://github.com/seydx/camera.ui)",
|
|
6
|
-
"main": "./dist/bundle.js",
|
|
7
6
|
"module": "./dist/bundle.js",
|
|
8
|
-
"types": "./dist/packages/client/
|
|
7
|
+
"types": "./dist/types/packages/client/browser/src/index.d.ts",
|
|
9
8
|
"type": "commonjs",
|
|
10
9
|
"exports": {
|
|
11
10
|
".": {
|
|
12
|
-
"default": "./dist/bundle.js",
|
|
13
11
|
"import": "./dist/bundle.js",
|
|
14
|
-
"types": "./dist/packages/client/
|
|
12
|
+
"types": "./dist/types/packages/client/browser/src/index.d.ts"
|
|
15
13
|
}
|
|
16
14
|
},
|
|
17
15
|
"scripts": {
|
|
18
|
-
"build": "
|
|
16
|
+
"build:js": "webpack --mode production",
|
|
17
|
+
"build:types": "tsc --project tsconfig.json",
|
|
18
|
+
"build": "rimraf dist && npm run build:js && npm run build:types",
|
|
19
|
+
"format": "prettier --write 'src/' --ignore-unknown --no-error-on-unmatched-pattern",
|
|
20
|
+
"lint": "eslint --fix --ext .js,.ts .",
|
|
19
21
|
"update": "updates --update ./",
|
|
20
22
|
"install-updates": "npm i --save",
|
|
21
|
-
"prepublishOnly": "npm run build"
|
|
23
|
+
"prepublishOnly": "npm i --package-lock-only && npm run lint && npm run format && npm run build"
|
|
22
24
|
},
|
|
23
25
|
"dependencies": {
|
|
26
|
+
"axios": "^1.6.8",
|
|
27
|
+
"lodash.clonedeep": "^4.5.0",
|
|
28
|
+
"lodash.isequal": "^4.5.0",
|
|
24
29
|
"rxjs": "^7.8.1",
|
|
25
30
|
"socket.io-client": "^4.7.5"
|
|
26
31
|
},
|
|
27
32
|
"devDependencies": {
|
|
33
|
+
"@rushstack/eslint-patch": "^1.10.2",
|
|
28
34
|
"@swc/register": "^0.1.10",
|
|
35
|
+
"@types/webrtc": "^0.0.43",
|
|
36
|
+
"@typescript-eslint/eslint-plugin": "^7.8.0",
|
|
37
|
+
"@typescript-eslint/parser": "^7.8.0",
|
|
29
38
|
"bufferutil": "^4.0.8",
|
|
39
|
+
"eslint": "^8.57.0",
|
|
40
|
+
"eslint-config-prettier": "^9.1.0",
|
|
41
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
42
|
+
"null-loader": "^4.0.1",
|
|
43
|
+
"prettier": "^3.2.5",
|
|
30
44
|
"rimraf": "^5.0.5",
|
|
31
45
|
"ts-loader": "^9.5.1",
|
|
32
|
-
"typescript": "^5.4.
|
|
33
|
-
"updates": "^16.0.
|
|
46
|
+
"typescript": "^5.4.5",
|
|
47
|
+
"updates": "^16.0.1",
|
|
34
48
|
"utf-8-validate": "^6.0.3",
|
|
35
|
-
"webpack": "^5.
|
|
49
|
+
"webpack": "^5.91.0",
|
|
36
50
|
"webpack-cli": "^5.1.4"
|
|
37
51
|
},
|
|
38
52
|
"bugs": {
|
|
39
53
|
"url": "https://github.com/seydx/camera.ui/issues"
|
|
40
54
|
},
|
|
41
|
-
"engines": {
|
|
42
|
-
"camera.ui": ">=3.0.0-alpha.0",
|
|
43
|
-
"node": ">=18.12.0"
|
|
44
|
-
},
|
|
45
55
|
"homepage": "https://github.com/seydx/camera.ui#readme",
|
|
46
56
|
"keywords": [
|
|
47
57
|
"camera.ui",
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { BrowserStreamingSession } from '../../../../../../shared/types';
|
|
3
|
-
import type { AudioState, BaseLogger, BatteryState, Camera, CameraDelegate, CameraDevice, CameraInformation, CameraPrebufferDelegate, CameraPublicProperties, CameraSource, CameraType, CameraZone, DoorbellState, FfmpegOptions, IceServer, LightState, MotionState, ObjectState, OnSetEvent, SirenState, StateValue, StateValues } from '../../../../../../shared/types';
|
|
4
|
-
import type { SocketService } from '../../socket';
|
|
5
|
-
export declare class CameraDeviceClient implements CameraDevice {
|
|
6
|
-
private log;
|
|
7
|
-
private socketService;
|
|
8
|
-
private cameraSubject;
|
|
9
|
-
private cameraState;
|
|
10
|
-
private lightState;
|
|
11
|
-
private motionState;
|
|
12
|
-
private audioState;
|
|
13
|
-
private objectState;
|
|
14
|
-
private doorbellState;
|
|
15
|
-
private sirenState;
|
|
16
|
-
private batteryState;
|
|
17
|
-
onStarted: Observable<boolean>;
|
|
18
|
-
onLightSwitched: Observable<LightState>;
|
|
19
|
-
onMotionDetected: Observable<MotionState>;
|
|
20
|
-
onAudioDetected: Observable<AudioState>;
|
|
21
|
-
onObjectDetected: Observable<ObjectState>;
|
|
22
|
-
onDoorbellPressed: Observable<DoorbellState>;
|
|
23
|
-
onSirenDetected: Observable<SirenState>;
|
|
24
|
-
onBatteryChanged: Observable<BatteryState>;
|
|
25
|
-
private _delegate?;
|
|
26
|
-
private _prebufferDelegate?;
|
|
27
|
-
get id(): string;
|
|
28
|
-
get nativeId(): string | undefined;
|
|
29
|
-
get pluginId(): string;
|
|
30
|
-
get state(): boolean;
|
|
31
|
-
get disabled(): boolean;
|
|
32
|
-
get name(): string;
|
|
33
|
-
get type(): CameraType;
|
|
34
|
-
get info(): CameraInformation;
|
|
35
|
-
get isCloud(): boolean;
|
|
36
|
-
get hasLight(): boolean;
|
|
37
|
-
get hasSiren(): boolean;
|
|
38
|
-
get hasBinarySensor(): boolean;
|
|
39
|
-
get hasBattery(): boolean;
|
|
40
|
-
get hasMotionDetector(): boolean;
|
|
41
|
-
get hasAudioDetector(): boolean;
|
|
42
|
-
get hasObjectDetector(): boolean;
|
|
43
|
-
get hasPtz(): boolean;
|
|
44
|
-
get motionZones(): CameraZone[];
|
|
45
|
-
get objectZones(): CameraZone[];
|
|
46
|
-
get sources(): CameraSource[];
|
|
47
|
-
get streamSource(): CameraSource;
|
|
48
|
-
get snapshotSource(): CameraSource;
|
|
49
|
-
get recordingSource(): CameraSource;
|
|
50
|
-
get detectionSource(): CameraSource;
|
|
51
|
-
get delegate(): CameraDelegate | undefined;
|
|
52
|
-
set delegate(delegate: CameraDelegate);
|
|
53
|
-
get prebufferDelegate(): CameraPrebufferDelegate | undefined;
|
|
54
|
-
set prebufferDelegate(delegate: CameraPrebufferDelegate);
|
|
55
|
-
constructor(camera: Camera, socketService: SocketService, logger: BaseLogger);
|
|
56
|
-
connect(): Promise<void>;
|
|
57
|
-
disconnect(): Promise<void>;
|
|
58
|
-
reboot(): Promise<void>;
|
|
59
|
-
snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
|
|
60
|
-
getFfmpegPath(): Promise<string>;
|
|
61
|
-
getIceServers(): Promise<IceServer[]>;
|
|
62
|
-
createSession(): Promise<any>;
|
|
63
|
-
createBrowserSession(sourceName: string, videoElement: HTMLVideoElement): Promise<BrowserStreamingSession>;
|
|
64
|
-
streamVideo(sourceName: string, options: FfmpegOptions): Promise<any>;
|
|
65
|
-
recordToFile(sourceName: string, outputPath: string, duration?: number): Promise<void>;
|
|
66
|
-
getValue<T extends keyof StateValues>(stateName: T): StateValue<T>;
|
|
67
|
-
updateState<T extends keyof StateValues>(stateName: T, eventData: OnSetEvent<T>, isRemote?: boolean): Promise<void>;
|
|
68
|
-
onStateChange<T extends keyof StateValues>(stateName: T): Observable<{
|
|
69
|
-
newState: StateValues[T];
|
|
70
|
-
oldState: StateValues[T];
|
|
71
|
-
}>;
|
|
72
|
-
onPropertyChange<T extends keyof CameraPublicProperties>(property: T): Observable<{
|
|
73
|
-
oldData: Camera[T];
|
|
74
|
-
newData: Camera[T];
|
|
75
|
-
}>;
|
|
76
|
-
removeAllListeners(): void;
|
|
77
|
-
refreshStates(): Promise<void>;
|
|
78
|
-
private updateCamera;
|
|
79
|
-
updateCameraState(state: boolean): void;
|
|
80
|
-
private unsubscribe;
|
|
81
|
-
private createStateObservable;
|
|
82
|
-
private listenToChanges;
|
|
83
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { CameraController } from '../../../../../../server/src/camera';
|
|
2
|
-
import type { BaseLogger, Camera, CameraSource, IceServer, OnSetEvent, StateValues } from '../../../../../../shared/types';
|
|
3
|
-
import type { SocketService } from '../../socket';
|
|
4
|
-
export declare class CameraDeviceClient extends CameraController {
|
|
5
|
-
private socketService;
|
|
6
|
-
private logger;
|
|
7
|
-
get sources(): CameraSource[];
|
|
8
|
-
constructor(camera: Camera, socketService: SocketService, logger: BaseLogger);
|
|
9
|
-
connect(): Promise<void>;
|
|
10
|
-
disconnect(): Promise<void>;
|
|
11
|
-
reboot(): Promise<void>;
|
|
12
|
-
getFfmpegPath(): Promise<string>;
|
|
13
|
-
getIceServers(): Promise<IceServer[]>;
|
|
14
|
-
snapshot(forceNew?: boolean | undefined): Promise<ArrayBuffer>;
|
|
15
|
-
updateState<T extends keyof StateValues>(stateName: T, eventData: OnSetEvent<T>): Promise<void>;
|
|
16
|
-
refreshStates(): Promise<void>;
|
|
17
|
-
private close;
|
|
18
|
-
private listenToChanges;
|
|
19
|
-
}
|