@camera.ui/browser 0.0.110 → 0.0.112
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/LICENSE.md +1 -1
- package/README.md +10 -1
- package/dist/index.d.ts +1269 -0
- package/dist/index.js +4179 -0
- package/package.json +55 -36
- package/CHANGELOG.md +0 -8
- package/dist/bundle.js +0 -2
- package/dist/bundle.js.LICENSE.txt +0 -23
- package/dist/types/packages/client/browser/src/api.d.ts +0 -8
- package/dist/types/packages/client/browser/src/client.d.ts +0 -23
- package/dist/types/packages/client/browser/src/index.d.ts +0 -2
- package/dist/types/packages/client/browser/src/proxy/cameraDevice.d.ts +0 -30
- package/dist/types/packages/client/browser/src/proxy/coreManager.d.ts +0 -16
- package/dist/types/packages/client/browser/src/proxy/deviceManager.d.ts +0 -18
- package/dist/types/packages/client/browser/src/proxy/index.d.ts +0 -3
- package/dist/types/packages/client/browser/src/socket.d.ts +0 -15
- package/dist/types/packages/client/browser/src/streaming/go2rts-session.d.ts +0 -71
- package/dist/types/packages/client/browser/src/types.d.ts +0 -58
- package/dist/types/packages/client/browser/src/utils.d.ts +0 -12
- package/dist/types/packages/common/src/nats/messageQueue.d.ts +0 -48
- package/dist/types/packages/common/src/nats/nats.d.ts +0 -30
- package/dist/types/packages/common/src/nats/packer.d.ts +0 -2
- package/dist/types/packages/common/src/utils/subscribed.d.ts +0 -18
- package/dist/types/packages/plugineer/src/polyglot/node/camera/index.d.ts +0 -91
- package/dist/types/packages/plugineer/src/polyglot/node/camera/interfaces/camera.d.ts +0 -8
- package/dist/types/packages/plugineer/src/polyglot/node/camera/interfaces/ptz.d.ts +0 -11
- package/dist/types/packages/plugineer/src/polyglot/node/camera/iou.d.ts +0 -2
- package/dist/types/packages/plugineer/src/polyglot/node/camera/polygon.d.ts +0 -4
- package/dist/types/packages/plugineer/src/polyglot/node/camera/types.d.ts +0 -18
- package/dist/types/packages/plugineer/src/polyglot/node/plugins/schema.d.ts +0 -62
- package/dist/types/packages/plugineer/src/polyglot/node/plugins/types.d.ts +0 -135
- package/dist/types/packages/plugineer/src/types.d.ts +0 -4
- package/dist/types/packages/types/src/index.d.ts +0 -730
- package/dist/types/server/src/api/controllers/api.controller.d.ts +0 -7
- package/dist/types/server/src/api/controllers/auth.controller.d.ts +0 -16
- package/dist/types/server/src/api/controllers/backup.controller.d.ts +0 -10
- package/dist/types/server/src/api/controllers/cameras.controller.d.ts +0 -38
- package/dist/types/server/src/api/controllers/config.controller.d.ts +0 -14
- package/dist/types/server/src/api/controllers/files.controller.d.ts +0 -8
- package/dist/types/server/src/api/controllers/frameWorkers.controller.d.ts +0 -11
- package/dist/types/server/src/api/controllers/plugins.controller.d.ts +0 -48
- package/dist/types/server/src/api/controllers/system.controller.d.ts +0 -23
- package/dist/types/server/src/api/controllers/users.controller.d.ts +0 -28
- package/dist/types/server/src/api/database/checks.d.ts +0 -55
- package/dist/types/server/src/api/database/constants.d.ts +0 -8
- package/dist/types/server/src/api/database/index.d.ts +0 -30
- package/dist/types/server/src/api/database/migration.d.ts +0 -15
- package/dist/types/server/src/api/database/selfcheck.d.ts +0 -48
- package/dist/types/server/src/api/database/types.d.ts +0 -88
- package/dist/types/server/src/api/go2rtc/api/application.d.ts +0 -9
- package/dist/types/server/src/api/go2rtc/api/config.d.ts +0 -8
- package/dist/types/server/src/api/go2rtc/api/index.d.ts +0 -1
- package/dist/types/server/src/api/go2rtc/api/snapshot.d.ts +0 -8
- package/dist/types/server/src/api/go2rtc/api/streams.d.ts +0 -12
- package/dist/types/server/src/api/go2rtc/index.d.ts +0 -14
- package/dist/types/server/src/api/go2rtc/queue.d.ts +0 -10
- package/dist/types/server/src/api/go2rtc/types.d.ts +0 -92
- package/dist/types/server/src/api/index.d.ts +0 -22
- package/dist/types/server/src/api/middlewares/authPermission.middleware.d.ts +0 -5
- package/dist/types/server/src/api/middlewares/authValidation.middleware.d.ts +0 -4
- package/dist/types/server/src/api/middlewares/pagination.middleware.d.ts +0 -3
- package/dist/types/server/src/api/middlewares/socketAuth.middleware.d.ts +0 -41
- package/dist/types/server/src/api/plugins/header.plugin.d.ts +0 -2
- package/dist/types/server/src/api/plugins/socket.plugin.d.ts +0 -11
- package/dist/types/server/src/api/plugins/system.plugin.d.ts +0 -20
- package/dist/types/server/src/api/plugins/useragent.plugin.d.ts +0 -8
- package/dist/types/server/src/api/routes/api.routes.d.ts +0 -2
- package/dist/types/server/src/api/routes/auth.routes.d.ts +0 -2
- package/dist/types/server/src/api/routes/backup.routes.d.ts +0 -2
- package/dist/types/server/src/api/routes/cameras.routes.d.ts +0 -2
- package/dist/types/server/src/api/routes/config.routes.d.ts +0 -2
- package/dist/types/server/src/api/routes/files.routes.d.ts +0 -2
- package/dist/types/server/src/api/routes/frameWorkers.routes.d.ts +0 -2
- package/dist/types/server/src/api/routes/index.d.ts +0 -6
- package/dist/types/server/src/api/routes/plugins.routes.d.ts +0 -2
- package/dist/types/server/src/api/routes/system.routes.d.ts +0 -2
- package/dist/types/server/src/api/routes/users.routes.d.ts +0 -2
- package/dist/types/server/src/api/schemas/backup.schema.d.ts +0 -211
- package/dist/types/server/src/api/schemas/cameras.schema.d.ts +0 -980
- package/dist/types/server/src/api/schemas/config.schema.d.ts +0 -114
- package/dist/types/server/src/api/schemas/go2rtc.schema.d.ts +0 -703
- package/dist/types/server/src/api/schemas/plugins.schema.d.ts +0 -72
- package/dist/types/server/src/api/schemas/system.schema.d.ts +0 -17
- package/dist/types/server/src/api/schemas/users.schema.d.ts +0 -1013
- package/dist/types/server/src/api/services/auth.service.d.ts +0 -24
- package/dist/types/server/src/api/services/backup.service.d.ts +0 -11
- package/dist/types/server/src/api/services/cameras.service.d.ts +0 -54
- package/dist/types/server/src/api/services/plugins.service.d.ts +0 -38
- package/dist/types/server/src/api/services/system.service.d.ts +0 -13
- package/dist/types/server/src/api/services/users.service.d.ts +0 -25
- package/dist/types/server/src/api/types/index.d.ts +0 -610
- package/dist/types/server/src/api/utils/cameraSource.d.ts +0 -6
- package/dist/types/server/src/api/utils/cert.d.ts +0 -11
- package/dist/types/server/src/api/utils/constants.d.ts +0 -13
- package/dist/types/server/src/api/utils/fetch.d.ts +0 -1
- package/dist/types/server/src/api/utils/moveFiles.d.ts +0 -4
- package/dist/types/server/src/api/utils/parse.d.ts +0 -2
- package/dist/types/server/src/api/websocket/go2rtc.d.ts +0 -21
- package/dist/types/server/src/api/websocket/index.d.ts +0 -16
- package/dist/types/server/src/api/websocket/nsp/logs.d.ts +0 -19
- package/dist/types/server/src/api/websocket/nsp/main.d.ts +0 -9
- package/dist/types/server/src/api/websocket/nsp/metrics.d.ts +0 -24
- package/dist/types/server/src/api/websocket/nsp/notifications.d.ts +0 -12
- package/dist/types/server/src/api/websocket/nsp/plugins.d.ts +0 -13
- package/dist/types/server/src/api/websocket/nsp/proxy.d.ts +0 -27
- package/dist/types/server/src/api/websocket/nsp/server.d.ts +0 -26
- package/dist/types/server/src/api/websocket/nsp/status.d.ts +0 -15
- package/dist/types/server/src/api/websocket/types.d.ts +0 -41
- package/dist/types/server/src/api.d.ts +0 -29
- package/dist/types/server/src/camera/controller.d.ts +0 -61
- package/dist/types/server/src/camera/frameWorker.d.ts +0 -45
- package/dist/types/server/src/camera/types.d.ts +0 -11
- package/dist/types/server/src/go2rtc/index.d.ts +0 -25
- package/dist/types/server/src/go2rtc/types.d.ts +0 -14
- package/dist/types/server/src/main.d.ts +0 -25
- package/dist/types/server/src/nats/index.d.ts +0 -40
- package/dist/types/server/src/nats/proxy/cameraDevice.d.ts +0 -22
- package/dist/types/server/src/nats/proxy/coreManager.d.ts +0 -14
- package/dist/types/server/src/nats/proxy/deviceManager.d.ts +0 -14
- package/dist/types/server/src/nats/server.d.ts +0 -38
- package/dist/types/server/src/nats/types.d.ts +0 -18
- package/dist/types/server/src/nats/utils.d.ts +0 -2
- package/dist/types/server/src/plugins/index.d.ts +0 -33
- package/dist/types/server/src/plugins/plugin.d.ts +0 -35
- package/dist/types/server/src/plugins/schema.d.ts +0 -34
- package/dist/types/server/src/plugins/types.d.ts +0 -7
- package/dist/types/server/src/plugins/worker.d.ts +0 -55
- package/dist/types/server/src/services/config/constants.d.ts +0 -6
- package/dist/types/server/src/services/config/index.d.ts +0 -67
- package/dist/types/server/src/services/config/types.d.ts +0 -156
- package/dist/types/server/src/services/logger/index.d.ts +0 -16
- package/dist/types/server/src/types.d.ts +0 -31
- package/dist/types/shared/types/index.d.ts +0 -21
|
@@ -1,730 +0,0 @@
|
|
|
1
|
-
import type { Observable, ReplaySubject, Subject, Subscription } from 'rxjs';
|
|
2
|
-
import type sharp from 'sharp';
|
|
3
|
-
import type { ConnectionState, RTCIceCandidate, RTCSessionDescription, RtpPacket } from 'werift';
|
|
4
|
-
export type { ConnectionState, RTCIceCandidate, RTCSessionDescription, RtpPacket, sharp };
|
|
5
|
-
export type JSONObject = Record<string, JSONValue>;
|
|
6
|
-
export interface JSONValue {
|
|
7
|
-
[key: string]: string | number | boolean | JSONValue | JSONValue[];
|
|
8
|
-
}
|
|
9
|
-
export type JSONArray = JSONValue[];
|
|
10
|
-
export type Path = (number | string)[] | number | string;
|
|
11
|
-
export type CameraType = 'camera' | 'doorbell';
|
|
12
|
-
export type ZoneType = 'intersect' | 'contain';
|
|
13
|
-
export type ZoneFilter = 'include' | 'exclude';
|
|
14
|
-
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';
|
|
15
|
-
export type CameraRoles = 'high-resolution' | 'mid-resolution' | 'low-resolution' | 'snapshot';
|
|
16
|
-
export type DecoderFormat = 'yuv' | 'rgb';
|
|
17
|
-
export type ImageInputFormat = 'yuv' | 'rgb' | 'rgba' | 'gray';
|
|
18
|
-
export type ImageOutputFormat = 'rgb' | 'rgba' | 'gray';
|
|
19
|
-
export type CameraExtension = 'cameraController' | 'hub' | 'motionDetection' | 'objectDetection' | 'audioDetection' | 'ptz';
|
|
20
|
-
export type CameraFrameWorkerDecoder = 'pillow' | 'wasm' | 'rust';
|
|
21
|
-
export type CameraFrameWorkerResolution = '3840x2160' | '3072x1728' | '2560x1440' | '1920x1080' | '1440x1080' | '1280x720' | '960x540' | '640x480' | '640x360' | '320x240' | '320x180';
|
|
22
|
-
export type AudioCodec = 'PCMU' | 'PCMA' | 'MPEG4-GENERIC' | 'opus' | 'G722' | 'MPA' | 'PCM' | 'FLAC';
|
|
23
|
-
export type AudioFFmpegCodec = 'pcm_mulaw' | 'pcm_alaw' | 'aac' | 'libopus' | 'g722' | 'mp3' | 'pcm_s16be' | 'pcm_s16le' | 'flac';
|
|
24
|
-
export type VideoCodec = 'H264' | 'H265' | 'VP8' | 'VP9' | 'AV1' | 'JPEG' | 'RAW';
|
|
25
|
-
export type VideoFFmpegCodec = 'h264' | 'hevc' | 'vp8' | 'vp9' | 'av1' | 'mjpeg' | 'rawvideo';
|
|
26
|
-
export type PythonVersion = '3.9' | '3.10' | '3.11' | '3.12';
|
|
27
|
-
export interface CameraInformation {
|
|
28
|
-
model?: string;
|
|
29
|
-
manufacturer?: string;
|
|
30
|
-
hardware?: string;
|
|
31
|
-
serialNumber?: string;
|
|
32
|
-
firmwareVersion?: string;
|
|
33
|
-
supportUrl?: string;
|
|
34
|
-
}
|
|
35
|
-
export type Point = [number, number];
|
|
36
|
-
export type BoundingBox = [number, number, number, number];
|
|
37
|
-
export interface Detection {
|
|
38
|
-
id?: string;
|
|
39
|
-
label: ObjectClass;
|
|
40
|
-
confidence: number;
|
|
41
|
-
boundingBox: BoundingBox;
|
|
42
|
-
inputWidth: number;
|
|
43
|
-
inputHeight: number;
|
|
44
|
-
origWidth: number;
|
|
45
|
-
origHeight: number;
|
|
46
|
-
}
|
|
47
|
-
export interface ZoneCoord {
|
|
48
|
-
_id: string;
|
|
49
|
-
points: Point;
|
|
50
|
-
}
|
|
51
|
-
export interface ZoneRegion {
|
|
52
|
-
_id: string;
|
|
53
|
-
coords: ZoneCoord[];
|
|
54
|
-
type: ZoneType;
|
|
55
|
-
filter: ZoneFilter;
|
|
56
|
-
classes: ObjectClass[];
|
|
57
|
-
isPrivacyMask: boolean;
|
|
58
|
-
}
|
|
59
|
-
export interface CameraZone {
|
|
60
|
-
name: string;
|
|
61
|
-
regions: ZoneRegion[];
|
|
62
|
-
}
|
|
63
|
-
export interface DetectionZone {
|
|
64
|
-
name: string;
|
|
65
|
-
points: Point[];
|
|
66
|
-
type: ZoneType;
|
|
67
|
-
filter: ZoneFilter;
|
|
68
|
-
classes: ObjectClass[];
|
|
69
|
-
isPrivacyMask: boolean;
|
|
70
|
-
}
|
|
71
|
-
export interface MotionDetectionSettings {
|
|
72
|
-
timeout: number;
|
|
73
|
-
}
|
|
74
|
-
export interface ObjectDetectionSettings {
|
|
75
|
-
confidence: number;
|
|
76
|
-
}
|
|
77
|
-
export interface CameraDetectionSettings {
|
|
78
|
-
motion: MotionDetectionSettings;
|
|
79
|
-
object: ObjectDetectionSettings;
|
|
80
|
-
}
|
|
81
|
-
export interface CameraFrameWorkerSettings {
|
|
82
|
-
decoder: CameraFrameWorkerDecoder;
|
|
83
|
-
fps: number;
|
|
84
|
-
resolution: CameraFrameWorkerResolution;
|
|
85
|
-
}
|
|
86
|
-
export interface CameraInput {
|
|
87
|
-
readonly _id: string;
|
|
88
|
-
name: string;
|
|
89
|
-
roles: CameraRoles[];
|
|
90
|
-
urls: StreamUrls;
|
|
91
|
-
internal: boolean;
|
|
92
|
-
}
|
|
93
|
-
export interface RTPInfo {
|
|
94
|
-
payload?: number;
|
|
95
|
-
codec: string;
|
|
96
|
-
rate?: number | undefined;
|
|
97
|
-
encoding?: number | undefined;
|
|
98
|
-
}
|
|
99
|
-
export interface FMTPInfo {
|
|
100
|
-
payload: number;
|
|
101
|
-
config: string;
|
|
102
|
-
}
|
|
103
|
-
export interface AudioCodecProperties {
|
|
104
|
-
sampleRate: number;
|
|
105
|
-
channels: number;
|
|
106
|
-
payloadType: number;
|
|
107
|
-
fmtpInfo?: FMTPInfo;
|
|
108
|
-
}
|
|
109
|
-
export interface VideoCodecProperties {
|
|
110
|
-
clockRate: number;
|
|
111
|
-
payloadType: number;
|
|
112
|
-
fmtpInfo?: FMTPInfo;
|
|
113
|
-
}
|
|
114
|
-
export interface AudioStreamInfo {
|
|
115
|
-
codec: AudioCodec;
|
|
116
|
-
ffmpegCodec: AudioFFmpegCodec;
|
|
117
|
-
properties: AudioCodecProperties;
|
|
118
|
-
direction: 'sendonly' | 'recvonly' | 'sendrecv' | 'inactive';
|
|
119
|
-
}
|
|
120
|
-
export interface VideoStreamInfo {
|
|
121
|
-
codec: VideoCodec;
|
|
122
|
-
ffmpegCodec: VideoFFmpegCodec;
|
|
123
|
-
properties: VideoCodecProperties;
|
|
124
|
-
direction: 'sendonly' | 'recvonly' | 'sendrecv' | 'inactive';
|
|
125
|
-
}
|
|
126
|
-
export interface ProbeConfig {
|
|
127
|
-
video?: VideoCodec;
|
|
128
|
-
audio?: AudioCodec;
|
|
129
|
-
microphone?: AudioCodec;
|
|
130
|
-
}
|
|
131
|
-
export interface ProbeStream {
|
|
132
|
-
sdp: string;
|
|
133
|
-
audio: AudioStreamInfo[];
|
|
134
|
-
video: VideoStreamInfo[];
|
|
135
|
-
}
|
|
136
|
-
export interface StreamUrls {
|
|
137
|
-
ws: Go2RtcWSSource;
|
|
138
|
-
rtsp: Go2RtcRTSPSource;
|
|
139
|
-
www: Go2RtcEndpoint;
|
|
140
|
-
}
|
|
141
|
-
export interface Go2RtcRTSPSource {
|
|
142
|
-
default: string;
|
|
143
|
-
defaultMicrophone: string;
|
|
144
|
-
h264: string;
|
|
145
|
-
h265: string;
|
|
146
|
-
aac: string;
|
|
147
|
-
opus: string;
|
|
148
|
-
pcma: string;
|
|
149
|
-
mp4: string;
|
|
150
|
-
}
|
|
151
|
-
export interface Go2RtcEndpoint {
|
|
152
|
-
webrtc: string;
|
|
153
|
-
mse: string;
|
|
154
|
-
lmp4: string;
|
|
155
|
-
mmp4: string;
|
|
156
|
-
mp4: string;
|
|
157
|
-
mp4Snapshot: string;
|
|
158
|
-
jpegSnapshot: string;
|
|
159
|
-
lHlsTs: string;
|
|
160
|
-
lHlsFmp4: string;
|
|
161
|
-
mHlsFmp4: string;
|
|
162
|
-
mjpeg: string;
|
|
163
|
-
mjpegHtml: string;
|
|
164
|
-
}
|
|
165
|
-
export interface Go2RtcSource {
|
|
166
|
-
name: string;
|
|
167
|
-
src: string;
|
|
168
|
-
ws: string;
|
|
169
|
-
}
|
|
170
|
-
export interface Go2RtcWSSource {
|
|
171
|
-
webrtc: string;
|
|
172
|
-
mse: string;
|
|
173
|
-
}
|
|
174
|
-
export interface BaseState<T extends LightState | AudioState | MotionState | ObjectState | SirenState | BatteryState | DoorbellState> {
|
|
175
|
-
timestamp: number;
|
|
176
|
-
lastEvent?: Omit<T, 'lastEvent'>;
|
|
177
|
-
}
|
|
178
|
-
export interface MotionSetEvent {
|
|
179
|
-
state: boolean;
|
|
180
|
-
detections?: Detection[];
|
|
181
|
-
}
|
|
182
|
-
export interface AudioSetEvent {
|
|
183
|
-
state: boolean;
|
|
184
|
-
db?: number;
|
|
185
|
-
}
|
|
186
|
-
export interface ObjectSetEvent {
|
|
187
|
-
detections: Detection[];
|
|
188
|
-
}
|
|
189
|
-
export interface LightSetEvent {
|
|
190
|
-
state: boolean;
|
|
191
|
-
}
|
|
192
|
-
export interface DoorbellSetEvent {
|
|
193
|
-
state: boolean;
|
|
194
|
-
}
|
|
195
|
-
export interface SirenSetEvent {
|
|
196
|
-
state: boolean;
|
|
197
|
-
level?: number;
|
|
198
|
-
}
|
|
199
|
-
export interface BatterySetEvent {
|
|
200
|
-
level: number;
|
|
201
|
-
lowBattery?: boolean;
|
|
202
|
-
charging?: boolean;
|
|
203
|
-
}
|
|
204
|
-
export type LightState = BaseState<LightState> & LightSetEvent;
|
|
205
|
-
export type MotionState = BaseState<MotionState> & MotionSetEvent;
|
|
206
|
-
export type AudioState = BaseState<AudioState> & AudioSetEvent;
|
|
207
|
-
export type DoorbellState = BaseState<DoorbellState> & DoorbellSetEvent;
|
|
208
|
-
export type SirenState = BaseState<SirenState> & SirenSetEvent;
|
|
209
|
-
export type ObjectState = BaseState<ObjectState> & ObjectSetEvent;
|
|
210
|
-
export type BatteryState = BaseState<BatteryState> & BatterySetEvent;
|
|
211
|
-
export interface StateValues {
|
|
212
|
-
light: LightState;
|
|
213
|
-
motion: MotionState;
|
|
214
|
-
audio: AudioState;
|
|
215
|
-
object: ObjectState;
|
|
216
|
-
doorbell: DoorbellState;
|
|
217
|
-
siren: SirenState;
|
|
218
|
-
battery: BatteryState;
|
|
219
|
-
}
|
|
220
|
-
export interface SetValues {
|
|
221
|
-
light: LightSetEvent;
|
|
222
|
-
motion: MotionSetEvent;
|
|
223
|
-
audio: AudioSetEvent;
|
|
224
|
-
object: ObjectSetEvent;
|
|
225
|
-
doorbell: DoorbellSetEvent;
|
|
226
|
-
siren: SirenSetEvent;
|
|
227
|
-
battery: BatterySetEvent;
|
|
228
|
-
}
|
|
229
|
-
export interface FrameData {
|
|
230
|
-
frameId: string;
|
|
231
|
-
timestamp: number;
|
|
232
|
-
}
|
|
233
|
-
export interface FrameMetadata {
|
|
234
|
-
format: DecoderFormat;
|
|
235
|
-
frameSize: number;
|
|
236
|
-
width: number;
|
|
237
|
-
origWidth: number;
|
|
238
|
-
height: number;
|
|
239
|
-
origHeight: number;
|
|
240
|
-
}
|
|
241
|
-
export interface ImageInformation {
|
|
242
|
-
width: number;
|
|
243
|
-
height: number;
|
|
244
|
-
channels: 1 | 3 | 4;
|
|
245
|
-
format: ImageInputFormat;
|
|
246
|
-
}
|
|
247
|
-
export interface ImageCrop {
|
|
248
|
-
top: number;
|
|
249
|
-
left: number;
|
|
250
|
-
width: number;
|
|
251
|
-
height: number;
|
|
252
|
-
}
|
|
253
|
-
export interface ImageResize {
|
|
254
|
-
width: number;
|
|
255
|
-
height: number;
|
|
256
|
-
}
|
|
257
|
-
export interface ImageFormat {
|
|
258
|
-
to: ImageOutputFormat;
|
|
259
|
-
}
|
|
260
|
-
export interface ImageOptions {
|
|
261
|
-
format?: ImageFormat;
|
|
262
|
-
crop?: ImageCrop;
|
|
263
|
-
resize?: ImageResize;
|
|
264
|
-
}
|
|
265
|
-
export interface FrameImage {
|
|
266
|
-
image: sharp.Sharp;
|
|
267
|
-
info: ImageInformation;
|
|
268
|
-
}
|
|
269
|
-
export interface FrameBuffer {
|
|
270
|
-
image: Uint8Array;
|
|
271
|
-
info: ImageInformation;
|
|
272
|
-
}
|
|
273
|
-
export interface VideoFrame {
|
|
274
|
-
readonly frameData: FrameData;
|
|
275
|
-
readonly metadata: FrameMetadata;
|
|
276
|
-
readonly inputWidth: number;
|
|
277
|
-
readonly inputHeight: number;
|
|
278
|
-
readonly inputFormat: DecoderFormat;
|
|
279
|
-
toBuffer(options?: ImageOptions): Promise<FrameBuffer>;
|
|
280
|
-
toImage(options?: ImageOptions): Promise<FrameImage>;
|
|
281
|
-
save(path: string, options?: ImageOptions): Promise<void>;
|
|
282
|
-
}
|
|
283
|
-
export interface MotionFrame extends VideoFrame {
|
|
284
|
-
readonly motion: MotionState;
|
|
285
|
-
}
|
|
286
|
-
export interface CameraInputSettings {
|
|
287
|
-
readonly _id: string;
|
|
288
|
-
name: string;
|
|
289
|
-
roles: CameraRoles[];
|
|
290
|
-
urls: string[];
|
|
291
|
-
internal: boolean;
|
|
292
|
-
}
|
|
293
|
-
export interface CameraConfigInputSettings extends Omit<CameraInputSettings, '_id' | 'internal'> {
|
|
294
|
-
}
|
|
295
|
-
export interface BaseCameraConfig {
|
|
296
|
-
name: string;
|
|
297
|
-
nativeId?: string;
|
|
298
|
-
isCloud?: boolean;
|
|
299
|
-
hasLight?: boolean;
|
|
300
|
-
hasSiren?: boolean;
|
|
301
|
-
hasBinarySensor?: boolean;
|
|
302
|
-
hasBattery?: boolean;
|
|
303
|
-
disabled?: boolean;
|
|
304
|
-
info?: Partial<CameraInformation>;
|
|
305
|
-
}
|
|
306
|
-
export type CameraConfig = BaseCameraConfig & {
|
|
307
|
-
sources: CameraConfigInputSettings[];
|
|
308
|
-
};
|
|
309
|
-
export interface CameraDelegate {
|
|
310
|
-
snapshot(): Promise<ArrayBuffer | undefined>;
|
|
311
|
-
}
|
|
312
|
-
export interface CameraPTZDelegate {
|
|
313
|
-
moveAbsolute(pan: number, tilt: number, zoom: number): Promise<void>;
|
|
314
|
-
moveRelative(pan: number, tilt: number, zoom: number): Promise<void>;
|
|
315
|
-
moveContinuous(pan: number, tilt: number, zoom: number): Promise<void>;
|
|
316
|
-
stop(): Promise<void>;
|
|
317
|
-
}
|
|
318
|
-
export interface CameraDelegates {
|
|
319
|
-
cameraDelegate: CameraDelegate;
|
|
320
|
-
ptzDelegate: CameraPTZDelegate;
|
|
321
|
-
}
|
|
322
|
-
export type InternalSourceType = 'aac' | 'opus' | 'pcma';
|
|
323
|
-
export interface CameraBaseSource extends CameraInput {
|
|
324
|
-
probeStream(probeConfig?: ProbeConfig, refresh?: boolean): Promise<ProbeStream | undefined>;
|
|
325
|
-
}
|
|
326
|
-
export interface CameraSource extends CameraBaseSource {
|
|
327
|
-
getInternalSource(type: InternalSourceType): CameraInternalSource;
|
|
328
|
-
}
|
|
329
|
-
export interface CameraInternalSource extends CameraBaseSource {
|
|
330
|
-
type: InternalSourceType;
|
|
331
|
-
}
|
|
332
|
-
export interface CameraDeviceSource extends CameraSource {
|
|
333
|
-
getInternalSource(type: InternalSourceType): CameraDeviceInternalSource;
|
|
334
|
-
createWebRTCSession(options?: WebRTCConnectionOptions): WeriftSession;
|
|
335
|
-
createRTSPSession(options?: RTSPConnectionOptions): RTSPSession;
|
|
336
|
-
createFMP4Session(): FMP4Session;
|
|
337
|
-
}
|
|
338
|
-
export interface CameraDeviceInternalSource extends CameraBaseSource {
|
|
339
|
-
createWebRTCSession(options?: WebRTCConnectionOptions): WeriftSession;
|
|
340
|
-
createRTSPSession(options?: RTSPConnectionOptions): RTSPSession;
|
|
341
|
-
createFMP4Session(): FMP4Session;
|
|
342
|
-
type: InternalSourceType;
|
|
343
|
-
}
|
|
344
|
-
export interface WebRTCConnectionOptions {
|
|
345
|
-
createPeerConnection?: () => BasicPeerConnection;
|
|
346
|
-
iceServers?: IceServer[];
|
|
347
|
-
}
|
|
348
|
-
export interface RTSPConnectionOptions {
|
|
349
|
-
target?: keyof Go2RtcRTSPSource;
|
|
350
|
-
}
|
|
351
|
-
export interface Subscribed {
|
|
352
|
-
addSubscriptions(...subscriptions: Subscription[]): void;
|
|
353
|
-
addAdditionalSubscriptions(...subscriptions: Subscription[]): void;
|
|
354
|
-
unsubscribe(): void;
|
|
355
|
-
unsubscribeAdditional(): void;
|
|
356
|
-
}
|
|
357
|
-
export interface WeriftSession extends Subscribed {
|
|
358
|
-
readonly onStarted: ReplaySubject<void>;
|
|
359
|
-
readonly onError: ReplaySubject<Error>;
|
|
360
|
-
readonly onCallEnded: ReplaySubject<void>;
|
|
361
|
-
readonly onVideoRtp: Subject<RtpPacket>;
|
|
362
|
-
readonly onAudioRtp: Subject<RtpPacket>;
|
|
363
|
-
startTranscoding(ffmpegOptions: FfmpegOptions, streamProbe?: ProbeStream): Promise<void>;
|
|
364
|
-
transcodeReturnAudio(ffmpegOptions: ReturnAudioFFmpegOptions, streamProbe?: ProbeStream): Promise<void>;
|
|
365
|
-
stop(): void;
|
|
366
|
-
sendAudioPacket(rtp: RtpPacket | Buffer): void;
|
|
367
|
-
requestKeyFrame(): void;
|
|
368
|
-
}
|
|
369
|
-
export interface RTSPSession extends Subscribed {
|
|
370
|
-
readonly onStarted: ReplaySubject<void>;
|
|
371
|
-
readonly onError: ReplaySubject<Error>;
|
|
372
|
-
readonly onCallEnded: ReplaySubject<void>;
|
|
373
|
-
readonly onVideoRtp: Subject<RtpPacket>;
|
|
374
|
-
readonly onAudioRtp: Subject<RtpPacket>;
|
|
375
|
-
startStream(): Promise<void>;
|
|
376
|
-
startTranscoding(ffmpegOptions: FfmpegOptions): Promise<void>;
|
|
377
|
-
transcodeReturnAudio(ffmpegOptions: ReturnAudioFFmpegOptions): Promise<void>;
|
|
378
|
-
stop(): void;
|
|
379
|
-
sendAudioPacket(rtp: RtpPacket): void;
|
|
380
|
-
}
|
|
381
|
-
export interface FMP4Session extends Subscribed {
|
|
382
|
-
readonly onStarted: ReplaySubject<void>;
|
|
383
|
-
readonly onError: ReplaySubject<Error>;
|
|
384
|
-
readonly onCallEnded: ReplaySubject<void>;
|
|
385
|
-
readonly onFragment: Subject<Fragment>;
|
|
386
|
-
readonly initSegment: Promise<Buffer>;
|
|
387
|
-
startStream(): void;
|
|
388
|
-
startTranscoding(ffmpegOptions: FragmentedFfmpegOptions): Promise<void>;
|
|
389
|
-
stop(): void;
|
|
390
|
-
fragments(abortSignal?: AbortSignal): AsyncGenerator<Fragment>;
|
|
391
|
-
}
|
|
392
|
-
export interface Fragment {
|
|
393
|
-
data: Buffer;
|
|
394
|
-
info: FragmentInfo;
|
|
395
|
-
}
|
|
396
|
-
export interface FragmentInfo {
|
|
397
|
-
isFtyp: boolean;
|
|
398
|
-
isMoov: boolean;
|
|
399
|
-
isKeyframe: boolean;
|
|
400
|
-
}
|
|
401
|
-
export type SpawnInput = string | number;
|
|
402
|
-
export interface FfmpegOptions {
|
|
403
|
-
ffmpegPath: string;
|
|
404
|
-
input?: SpawnInput[];
|
|
405
|
-
video?: SpawnInput[];
|
|
406
|
-
audio?: SpawnInput[];
|
|
407
|
-
output: SpawnInput[];
|
|
408
|
-
logPrefix?: string;
|
|
409
|
-
}
|
|
410
|
-
export interface ReturnAudioFFmpegOptions {
|
|
411
|
-
ffmpegPath: string;
|
|
412
|
-
input: SpawnInput[];
|
|
413
|
-
logPrefix?: string;
|
|
414
|
-
}
|
|
415
|
-
export interface FragmentedFfmpegOptions {
|
|
416
|
-
ffmpegPath: string;
|
|
417
|
-
input?: SpawnInput[];
|
|
418
|
-
video?: SpawnInput[];
|
|
419
|
-
audio?: SpawnInput[];
|
|
420
|
-
logPrefix?: string;
|
|
421
|
-
}
|
|
422
|
-
export interface BasicPeerConnection {
|
|
423
|
-
createOffer(): Promise<RTCSessionDescription>;
|
|
424
|
-
acceptAnswer(answer: {
|
|
425
|
-
type: 'answer';
|
|
426
|
-
sdp: string;
|
|
427
|
-
}): Promise<void>;
|
|
428
|
-
addIceCandidate(candidate: Partial<RTCIceCandidate>): Promise<void>;
|
|
429
|
-
onIceCandidate: Subject<RTCIceCandidate>;
|
|
430
|
-
onConnectionState: Observable<ConnectionState>;
|
|
431
|
-
close(): void;
|
|
432
|
-
requestKeyFrame?: () => void;
|
|
433
|
-
}
|
|
434
|
-
export interface BaseCamera {
|
|
435
|
-
readonly _id: string;
|
|
436
|
-
nativeId?: string;
|
|
437
|
-
pluginId: string;
|
|
438
|
-
name: string;
|
|
439
|
-
disabled: boolean;
|
|
440
|
-
isCloud: boolean;
|
|
441
|
-
hasLight: boolean;
|
|
442
|
-
hasSiren: boolean;
|
|
443
|
-
hasBinarySensor: boolean;
|
|
444
|
-
hasBattery: boolean;
|
|
445
|
-
info: CameraInformation;
|
|
446
|
-
type: CameraType;
|
|
447
|
-
snapshotTTL: number;
|
|
448
|
-
detectionZone: CameraZone[];
|
|
449
|
-
detectionSettings: CameraDetectionSettings;
|
|
450
|
-
frameWorkerSettings: CameraFrameWorkerSettings;
|
|
451
|
-
}
|
|
452
|
-
export interface Camera extends Omit<BaseCamera, 'detectionZone'> {
|
|
453
|
-
hasAudioDetector: boolean;
|
|
454
|
-
hasMotionDetector: boolean;
|
|
455
|
-
hasObjectDetector: boolean;
|
|
456
|
-
extendedMotionDetector: boolean;
|
|
457
|
-
hasPtz: boolean;
|
|
458
|
-
sources: CameraInput[];
|
|
459
|
-
detectionZones: DetectionZone[];
|
|
460
|
-
}
|
|
461
|
-
export interface CameraDevice {
|
|
462
|
-
readonly id: string;
|
|
463
|
-
readonly nativeId: string | undefined;
|
|
464
|
-
readonly pluginId: string;
|
|
465
|
-
readonly connected: boolean;
|
|
466
|
-
readonly disabled: boolean;
|
|
467
|
-
readonly name: string;
|
|
468
|
-
readonly type: CameraType;
|
|
469
|
-
readonly snapshotTTL: number;
|
|
470
|
-
readonly info: CameraInformation;
|
|
471
|
-
readonly isCloud: boolean;
|
|
472
|
-
readonly hasLight: boolean;
|
|
473
|
-
readonly hasSiren: boolean;
|
|
474
|
-
readonly hasBinarySensor: boolean;
|
|
475
|
-
readonly hasBattery: boolean;
|
|
476
|
-
readonly hasMotionDetector: boolean;
|
|
477
|
-
readonly extendedMotionDetector: boolean;
|
|
478
|
-
readonly hasAudioDetector: boolean;
|
|
479
|
-
readonly hasObjectDetector: boolean;
|
|
480
|
-
readonly hasPtz: boolean;
|
|
481
|
-
readonly detectionZones: DetectionZone[];
|
|
482
|
-
readonly detectionSettings: CameraDetectionSettings;
|
|
483
|
-
readonly frameWorkerSettings: CameraFrameWorkerSettings;
|
|
484
|
-
readonly ptz: CameraPTZDelegate;
|
|
485
|
-
readonly streamSource: CameraDeviceSource;
|
|
486
|
-
readonly highResolutionSource: CameraDeviceSource | undefined;
|
|
487
|
-
readonly midResolutionSource: CameraDeviceSource | undefined;
|
|
488
|
-
readonly lowResolutionSource: CameraDeviceSource | undefined;
|
|
489
|
-
readonly snapshotSource: CameraInput | undefined;
|
|
490
|
-
readonly sources: CameraDeviceSource[];
|
|
491
|
-
readonly internalSources: CameraDeviceInternalSource[];
|
|
492
|
-
readonly onConnected: Observable<boolean>;
|
|
493
|
-
readonly onLightSwitched: Observable<LightState>;
|
|
494
|
-
readonly onMotionDetected: Observable<MotionState>;
|
|
495
|
-
readonly onAudioDetected: Observable<AudioState>;
|
|
496
|
-
readonly onObjectDetected: Observable<ObjectState>;
|
|
497
|
-
readonly onDoorbellPressed: Observable<DoorbellState>;
|
|
498
|
-
readonly onSirenDetected: Observable<SirenState>;
|
|
499
|
-
readonly onBatteryChanged: Observable<BatteryState>;
|
|
500
|
-
readonly logger: LoggerService;
|
|
501
|
-
snapshot(forceNew?: boolean): Promise<ArrayBuffer | undefined>;
|
|
502
|
-
onStateChange<T extends keyof StateValues>(stateName: T): Observable<{
|
|
503
|
-
newState: StateValues[T];
|
|
504
|
-
oldState: StateValues[T];
|
|
505
|
-
}>;
|
|
506
|
-
onPropertyChange<T extends keyof Camera>(property: T | T[]): Observable<{
|
|
507
|
-
property: T;
|
|
508
|
-
oldData: Camera[T];
|
|
509
|
-
newData: Camera[T];
|
|
510
|
-
}>;
|
|
511
|
-
getValue<T extends keyof StateValues>(stateName: T): StateValues[T];
|
|
512
|
-
setDelegate<T extends keyof CameraDelegates>(delegateName: T, delegate: CameraDelegates[T]): void;
|
|
513
|
-
connect(): Promise<void>;
|
|
514
|
-
disconnect(): Promise<void>;
|
|
515
|
-
getFrames(prebufferDuration?: number): AsyncIterableIterator<VideoFrame>;
|
|
516
|
-
getMotionFrames(): AsyncIterableIterator<MotionFrame>;
|
|
517
|
-
updateState<T extends keyof Omit<SetValues, 'motion'>>(stateName: T, eventData: SetValues[T]): Promise<void>;
|
|
518
|
-
updateState(stateName: 'motion', eventData: MotionSetEvent, frame?: VideoFrame): Promise<void>;
|
|
519
|
-
addCameraSource(source: CameraConfigInputSettings): Promise<void>;
|
|
520
|
-
updateCameraSource(sourceId: string, source: Partial<CameraConfigInputSettings>): Promise<void>;
|
|
521
|
-
removeCameraSource(sourceId: string): Promise<void>;
|
|
522
|
-
}
|
|
523
|
-
export interface DeviceManager {
|
|
524
|
-
createCamera(cameraConfig: CameraConfig): Promise<CameraDevice>;
|
|
525
|
-
getCameraByName(cameraName: string): Promise<CameraDevice | undefined>;
|
|
526
|
-
getCameraById(cameraId: string): Promise<CameraDevice | undefined>;
|
|
527
|
-
removeCameraByName(cameraName: string): Promise<void>;
|
|
528
|
-
removeCameraById(cameraId: string): Promise<void>;
|
|
529
|
-
on(event: 'cameraSelected', listener: (camera: CameraDevice, extension: CameraExtension) => void): this;
|
|
530
|
-
on(event: 'cameraDeselected', listener: (cameraId: string, extension: CameraExtension) => void): this;
|
|
531
|
-
once(event: 'cameraSelected', listener: (camera: CameraDevice, extension: CameraExtension) => void): this;
|
|
532
|
-
once(event: 'cameraDeselected', listener: (cameraId: string, extension: CameraExtension) => void): this;
|
|
533
|
-
off(event: 'cameraSelected', listener: (camera: CameraDevice, extension: CameraExtension) => void): this;
|
|
534
|
-
off(event: 'cameraDeselected', listener: (cameraId: string, extension: CameraExtension) => void): this;
|
|
535
|
-
removeListener(event: 'cameraSelected', listener: (camera: CameraDevice, extension: CameraExtension) => void): this;
|
|
536
|
-
removeListener(event: 'cameraDeselected', listener: (cameraId: string, extension: CameraExtension) => void): this;
|
|
537
|
-
removeAllListeners(event?: 'cameraSelected' | 'cameraDeselected'): this;
|
|
538
|
-
}
|
|
539
|
-
export interface CoreManager {
|
|
540
|
-
getFFmpegPath(): Promise<string>;
|
|
541
|
-
getHwaccelInfo(targetCodec: 'h264' | 'h265'): Promise<FfmpegArgs>;
|
|
542
|
-
getServerAddresses(): Promise<string[]>;
|
|
543
|
-
getIceServers(): Promise<IceServer[]>;
|
|
544
|
-
}
|
|
545
|
-
export interface FfmpegArgs {
|
|
546
|
-
codec: string;
|
|
547
|
-
hwaccel: string;
|
|
548
|
-
hwaccelArgs: string[];
|
|
549
|
-
hwaccelFilters: string[];
|
|
550
|
-
hwDeviceArgs: string[];
|
|
551
|
-
threads: string;
|
|
552
|
-
}
|
|
553
|
-
export interface IceServer {
|
|
554
|
-
urls: string[];
|
|
555
|
-
username?: string;
|
|
556
|
-
credential?: string;
|
|
557
|
-
}
|
|
558
|
-
export type PluginConfig<T = Record<string, any>> = T;
|
|
559
|
-
export type JsonSchemaType = 'string' | 'number' | 'boolean' | 'object' | 'array' | 'button';
|
|
560
|
-
export interface JsonBaseSchema<T = any> {
|
|
561
|
-
type: JsonSchemaType;
|
|
562
|
-
key?: string;
|
|
563
|
-
title?: string;
|
|
564
|
-
description?: string;
|
|
565
|
-
required?: boolean;
|
|
566
|
-
readonly?: boolean;
|
|
567
|
-
placeholder?: string;
|
|
568
|
-
hidden?: boolean;
|
|
569
|
-
group?: string;
|
|
570
|
-
defaultValue?: T;
|
|
571
|
-
store?: boolean;
|
|
572
|
-
onSet?: (newValue: any, oldValue: any) => Promise<void>;
|
|
573
|
-
onGet?: () => Promise<any>;
|
|
574
|
-
}
|
|
575
|
-
export interface JsonSchemaString extends JsonBaseSchema<string> {
|
|
576
|
-
type: 'string';
|
|
577
|
-
format?: 'date-time' | 'date' | 'time' | 'email' | 'uuid' | 'ipv4' | 'ipv6' | 'password' | 'qrCode' | 'image';
|
|
578
|
-
minLength?: number;
|
|
579
|
-
maxLength?: number;
|
|
580
|
-
}
|
|
581
|
-
export interface JsonSchemaNumber extends JsonBaseSchema<number> {
|
|
582
|
-
type: 'number';
|
|
583
|
-
minimum?: number;
|
|
584
|
-
maximum?: number;
|
|
585
|
-
step?: number;
|
|
586
|
-
}
|
|
587
|
-
export interface JsonSchemaBoolean extends JsonBaseSchema<boolean> {
|
|
588
|
-
type: 'boolean';
|
|
589
|
-
}
|
|
590
|
-
export interface JsonSchemaEnum extends JsonBaseSchema<string> {
|
|
591
|
-
type: 'string';
|
|
592
|
-
enum: string[];
|
|
593
|
-
multiple?: boolean;
|
|
594
|
-
}
|
|
595
|
-
export interface JsonSchemaObject extends JsonBaseSchema {
|
|
596
|
-
type: 'object';
|
|
597
|
-
opened?: boolean;
|
|
598
|
-
properties?: JsonSchemaForm;
|
|
599
|
-
}
|
|
600
|
-
export interface JsonSchemaArray extends JsonBaseSchema {
|
|
601
|
-
type: 'array';
|
|
602
|
-
opened?: boolean;
|
|
603
|
-
items?: JsonSchema;
|
|
604
|
-
}
|
|
605
|
-
export interface JsonSchemaButton extends JsonBaseSchema {
|
|
606
|
-
type: 'button';
|
|
607
|
-
color?: string;
|
|
608
|
-
}
|
|
609
|
-
export interface JsonSchemaObjectButton {
|
|
610
|
-
label: string;
|
|
611
|
-
onSubmit: string;
|
|
612
|
-
color?: string;
|
|
613
|
-
}
|
|
614
|
-
export interface JsonSchemaObjectWithButtons extends JsonSchemaObject {
|
|
615
|
-
buttons: JsonSchemaObjectButton[];
|
|
616
|
-
}
|
|
617
|
-
export type JsonSchema = JsonSchemaString | JsonSchemaNumber | JsonSchemaBoolean | JsonSchemaEnum | JsonSchemaObject | JsonSchemaObjectWithButtons | JsonSchemaArray | JsonSchemaButton;
|
|
618
|
-
export type JsonSchemaForm = Record<string, JsonSchema>;
|
|
619
|
-
export interface RootSchema {
|
|
620
|
-
schema: JsonSchemaForm;
|
|
621
|
-
}
|
|
622
|
-
export interface ToastMessage {
|
|
623
|
-
type: 'info' | 'success' | 'warning' | 'error';
|
|
624
|
-
message: string;
|
|
625
|
-
}
|
|
626
|
-
export interface FormSubmitSchema {
|
|
627
|
-
config: JsonSchemaObjectWithButtons;
|
|
628
|
-
}
|
|
629
|
-
export interface FormSubmitResponse {
|
|
630
|
-
toast?: ToastMessage;
|
|
631
|
-
schema?: FormSubmitSchema;
|
|
632
|
-
}
|
|
633
|
-
export interface SchemaConfig {
|
|
634
|
-
rootSchema: RootSchema;
|
|
635
|
-
config: Record<string, any>;
|
|
636
|
-
}
|
|
637
|
-
export interface ImageMetadata {
|
|
638
|
-
width: number;
|
|
639
|
-
height: number;
|
|
640
|
-
}
|
|
641
|
-
export interface AudioMetadata {
|
|
642
|
-
mimeType: 'audio/mpeg' | 'audio/wav' | 'audio/ogg';
|
|
643
|
-
}
|
|
644
|
-
export interface MotionDetectionPluginResponse {
|
|
645
|
-
filePath: string;
|
|
646
|
-
}
|
|
647
|
-
export interface ObjectDetectionPluginResponse {
|
|
648
|
-
detections: Detection[];
|
|
649
|
-
}
|
|
650
|
-
export interface AudioDetectionPluginResponse {
|
|
651
|
-
detected: boolean;
|
|
652
|
-
}
|
|
653
|
-
export interface BasePlugin {
|
|
654
|
-
onFormSubmit(actionId: string, payload: any): Promise<FormSubmitResponse | void>;
|
|
655
|
-
configureCameras(cameras: CameraDevice[]): void;
|
|
656
|
-
}
|
|
657
|
-
export interface AudioDetectionPlugin extends BasePlugin {
|
|
658
|
-
interfaceSchema(): RootSchema | void;
|
|
659
|
-
detectAudio(audioPath: string, metadata: AudioMetadata, config: Record<string, any>): Promise<AudioDetectionPluginResponse>;
|
|
660
|
-
}
|
|
661
|
-
export interface MotionDetectionPlugin extends BasePlugin {
|
|
662
|
-
interfaceSchema(): RootSchema | void;
|
|
663
|
-
detectMotion(videoPath: string, config: Record<string, any>): Promise<MotionDetectionPluginResponse>;
|
|
664
|
-
}
|
|
665
|
-
export interface ObjectDetectionPlugin extends BasePlugin {
|
|
666
|
-
interfaceSchema(): RootSchema | void;
|
|
667
|
-
detectObjects(imagePath: string, metadata: ImageMetadata, config: Record<string, any>): Promise<ObjectDetectionPluginResponse>;
|
|
668
|
-
}
|
|
669
|
-
export interface LoggerService {
|
|
670
|
-
log: (...args: any[]) => void;
|
|
671
|
-
error: (...args: any[]) => void;
|
|
672
|
-
warn: (...args: any[]) => void;
|
|
673
|
-
success: (...args: any[]) => void;
|
|
674
|
-
debug: (...args: any[]) => void;
|
|
675
|
-
trace: (...args: any[]) => void;
|
|
676
|
-
attention: (...args: any[]) => void;
|
|
677
|
-
}
|
|
678
|
-
export interface PluginAPI {
|
|
679
|
-
readonly coreManager: CoreManager;
|
|
680
|
-
readonly deviceManager: DeviceManager;
|
|
681
|
-
readonly storageController: StorageController;
|
|
682
|
-
readonly configService: ConfigService;
|
|
683
|
-
readonly storagePath: string;
|
|
684
|
-
readonly configFile: string;
|
|
685
|
-
on(event: 'finishLaunching', listener: () => void): this;
|
|
686
|
-
on(event: 'shutdown', listener: () => void): this;
|
|
687
|
-
once(event: 'finishLaunching', listener: () => void): this;
|
|
688
|
-
once(event: 'shutdown', listener: () => void): this;
|
|
689
|
-
off(event: 'finishLaunching', listener: () => void): this;
|
|
690
|
-
off(event: 'shutdown', listener: () => void): this;
|
|
691
|
-
removeListener(event: 'finishLaunching', listener: () => void): this;
|
|
692
|
-
removeListener(event: 'shutdown', listener: () => void): this;
|
|
693
|
-
removeAllListeners(event?: 'shutdown' | 'finishLaunching'): this;
|
|
694
|
-
}
|
|
695
|
-
export interface ConfigService {
|
|
696
|
-
get(key: Path, defaultValue: JSONValue, validate: Function, refresh?: boolean, writeIfNotValid?: boolean): any;
|
|
697
|
-
get(key: Path, defaultValue?: unknown, validate?: Function, refresh?: boolean, writeIfNotValid?: boolean): any;
|
|
698
|
-
has(key: Path, refresh?: boolean): boolean;
|
|
699
|
-
ensureExists(key: Path, defaultValue: JSONValue, write?: boolean): void;
|
|
700
|
-
set(key: Path, value: any, write?: boolean): void;
|
|
701
|
-
insert(key: Path, value: any, at?: number, write?: boolean): void;
|
|
702
|
-
push(key: Path, write?: boolean, ...items: any[]): void;
|
|
703
|
-
delete(key: Path, write?: boolean): void;
|
|
704
|
-
all(refresh?: boolean): PluginConfig;
|
|
705
|
-
replace(config: PluginConfig, write?: boolean): void;
|
|
706
|
-
updateValue(path: string, searchKey: string, searchValue: any, targetKey: string, newValue: any, write?: boolean): void;
|
|
707
|
-
replaceOrAddItem(path: string, searchKey: string, searchValue: any, newItem: any, write?: boolean): void;
|
|
708
|
-
}
|
|
709
|
-
export interface CameraStorage<T extends Record<string, any> = Record<string, any>> {
|
|
710
|
-
schema: JsonSchemaForm;
|
|
711
|
-
values: T;
|
|
712
|
-
initializeStorage(): void;
|
|
713
|
-
getValue<U = string>(path: string): Promise<U> | undefined;
|
|
714
|
-
getValue<U = string>(path: string, defaultValue: U): Promise<U>;
|
|
715
|
-
setValue<U = string>(path: string, newValue: U): Promise<void>;
|
|
716
|
-
hasValue(path: string): boolean;
|
|
717
|
-
getConfig(): Promise<SchemaConfig>;
|
|
718
|
-
setConfig(newConfig: T): Promise<void>;
|
|
719
|
-
addSchema(schema: JsonSchemaForm): Promise<void>;
|
|
720
|
-
addSchema(path: string, schema: JsonSchema): Promise<void>;
|
|
721
|
-
removeSchema(path: string): void;
|
|
722
|
-
changeSchema(path: string, newSchema: Partial<JsonSchema>): Promise<void>;
|
|
723
|
-
getSchema<U>(path: string): U | undefined;
|
|
724
|
-
hasSchema(path: string): boolean;
|
|
725
|
-
}
|
|
726
|
-
export interface StorageController {
|
|
727
|
-
createCameraStorage<T extends Record<string, any> = Record<string, any>>(instance: any, cameraId: string, schema?: JsonSchemaForm): CameraStorage<T>;
|
|
728
|
-
getCameraStorage<T extends Record<string, any> = Record<string, any>>(cameraId: string): CameraStorage<T> | undefined;
|
|
729
|
-
removeCameraStorage(cameraId: string): void;
|
|
730
|
-
}
|