@camera.ui/browser 0.0.81 → 0.0.83
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/client.d.ts +1 -7
- package/dist/types/packages/client/browser/src/proxy/cameraDevice.d.ts +4 -14
- package/dist/types/packages/client/browser/src/proxy/index.d.ts +0 -2
- package/dist/types/packages/client/browser/src/streaming/go2rts-session.d.ts +2 -0
- package/dist/types/server/src/api/database/index.d.ts +11 -8
- package/dist/types/server/src/api/database/migration.d.ts +12 -0
- package/dist/types/server/src/api/database/types.d.ts +22 -2
- package/dist/types/server/src/api/go2rtc/api/streams.d.ts +4 -4
- package/dist/types/server/src/api/go2rtc/types.d.ts +6 -2
- package/dist/types/server/src/api/schemas/backup.schema.d.ts +18 -18
- package/dist/types/server/src/api/schemas/cameras.schema.d.ts +116 -96
- package/dist/types/server/src/api/schemas/config.schema.d.ts +11 -11
- package/dist/types/server/src/api/schemas/go2rtc.schema.d.ts +60 -60
- package/dist/types/server/src/api/schemas/plugins.schema.d.ts +47 -0
- package/dist/types/server/src/api/schemas/users.schema.d.ts +499 -112
- package/dist/types/server/src/api/services/cameras.service.d.ts +1 -1
- package/dist/types/server/src/api/services/users.service.d.ts +12 -3
- package/dist/types/server/src/api/types/index.d.ts +41 -30
- package/dist/types/server/src/api.d.ts +3 -3
- package/dist/types/server/src/camera/controller.d.ts +11 -11
- package/dist/types/server/src/camera/device.d.ts +15 -3
- package/dist/types/server/src/camera/index.d.ts +23 -46
- package/dist/types/server/src/camera/interfaces/camera.d.ts +1 -1
- package/dist/types/server/src/camera/types.d.ts +2 -21
- package/dist/types/server/src/camera/videoFrame.d.ts +3 -3
- package/dist/types/server/src/decoder/types.d.ts +12 -10
- package/dist/types/server/src/decoder/worker.d.ts +3 -5
- package/dist/types/server/src/nats/connection.d.ts +17 -0
- package/dist/types/server/src/nats/error.d.ts +9 -0
- package/dist/types/server/src/nats/index.d.ts +12 -9
- package/dist/types/server/src/nats/messageQueue.d.ts +20 -0
- package/dist/types/server/src/nats/proxy/cameraDevice.d.ts +8 -19
- package/dist/types/server/src/nats/proxy/deviceManager.d.ts +6 -21
- package/dist/types/server/src/nats/server.d.ts +0 -1
- package/dist/types/server/src/nats/subscription.d.ts +12 -0
- package/dist/types/server/src/nats/types.d.ts +44 -102
- package/dist/types/server/src/nats/utils.d.ts +2 -4
- package/dist/types/server/src/plugins/index.d.ts +3 -5
- package/dist/types/server/src/plugins/interfaces/audioDetection.d.ts +7 -0
- package/dist/types/server/src/plugins/{base.d.ts → interfaces/base.d.ts} +2 -2
- package/dist/types/server/src/plugins/interfaces/motionDetection.d.ts +6 -0
- package/dist/types/server/src/plugins/interfaces/objectDetection.d.ts +7 -0
- package/dist/types/server/src/plugins/plugin.d.ts +4 -13
- package/dist/types/server/src/plugins/types.d.ts +16 -5
- package/dist/types/server/src/plugins/worker.d.ts +1 -1
- package/dist/types/server/src/polyglot/node/plugins/cameraStorage.d.ts +2 -2
- package/dist/types/server/src/polyglot/node/plugins/{api.d.ts → pluginApi.d.ts} +10 -17
- package/dist/types/server/src/polyglot/node/plugins/{logger.d.ts → pluginLogger.d.ts} +2 -0
- package/dist/types/server/src/polyglot/node/plugins/proxy/cameraDevice.d.ts +12 -26
- package/dist/types/server/src/polyglot/node/plugins/proxy/deviceManager.d.ts +6 -8
- package/dist/types/server/src/polyglot/node/plugins/schema.d.ts +14 -10
- package/dist/types/server/src/polyglot/node/plugins/storageController.d.ts +2 -2
- package/dist/types/server/src/services/config/index.d.ts +3 -2
- package/dist/types/server/src/services/config/types.d.ts +4 -4
- package/dist/types/server/src/services/logger/index.d.ts +2 -0
- package/dist/types/server/src/utils/ffmpeg.d.ts +2 -0
- package/dist/types/server/src/utils/pythonInstaller.d.ts +1 -1
- package/dist/types/server/src/utils/subscribed.d.ts +4 -4
- package/dist/types/server/src/utils/utils.d.ts +1 -2
- package/package.json +6 -6
- package/dist/types/packages/client/browser/src/proxy/pluginsManager.d.ts +0 -10
- package/dist/types/packages/client/browser/src/proxy/systemManager.d.ts +0 -10
- package/dist/types/server/src/api/controllers/api.controller.d.ts +0 -6
- package/dist/types/server/src/api/controllers/auth.controller.d.ts +0 -20
- 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 -33
- 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 -16
- package/dist/types/server/src/api/controllers/plugins.controller.d.ts +0 -54
- package/dist/types/server/src/api/controllers/system.controller.d.ts +0 -14
- package/dist/types/server/src/api/controllers/users.controller.d.ts +0 -21
- package/dist/types/server/src/api/index.d.ts +0 -21
- 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/plugins/cameraui.plugin.d.ts +0 -11
- package/dist/types/server/src/api/plugins/database.plugin.d.ts +0 -11
- package/dist/types/server/src/api/plugins/go2rtc.plugin.d.ts +0 -11
- package/dist/types/server/src/api/plugins/logger.plugin.d.ts +0 -7
- 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 -21
- 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/services/backup.service.d.ts +0 -10
- package/dist/types/server/src/api/utils/cert.d.ts +0 -11
- package/dist/types/server/src/api/utils/fetch.d.ts +0 -2
- package/dist/types/server/src/api/utils/moveFiles.d.ts +0 -1
- package/dist/types/server/src/camera/interfaces/audioDetection.d.ts +0 -10
- package/dist/types/server/src/camera/interfaces/motionDetection.d.ts +0 -10
- package/dist/types/server/src/camera/interfaces/objectDetection.d.ts +0 -10
- package/dist/types/server/src/decoder/ffmpeg.d.ts +0 -2
- package/dist/types/server/src/main.d.ts +0 -21
- package/dist/types/server/src/nats/proxy/index.d.ts +0 -4
- package/dist/types/server/src/nats/proxy/pluginsManager.d.ts +0 -12
- package/dist/types/server/src/nats/proxy/systemManager.d.ts +0 -8
- package/dist/types/server/src/nats/queue.d.ts +0 -17
- package/dist/types/server/src/polyglot/node/plugins/proxy/index.d.ts +0 -4
- package/dist/types/server/src/polyglot/node/plugins/proxy/pluginsManager.d.ts +0 -39
- package/dist/types/server/src/polyglot/node/plugins/proxy/queue.d.ts +0 -20
- package/dist/types/server/src/polyglot/node/plugins/proxy/systemManager.d.ts +0 -37
- /package/dist/types/server/src/polyglot/node/plugins/{config.d.ts → configService.d.ts} +0 -0
|
@@ -16,7 +16,6 @@ export declare class CamerasService {
|
|
|
16
16
|
patchZoneByName(cameraname: string, zonename: string, zoneData: CameraZone): Promise<DBCamera | undefined>;
|
|
17
17
|
removeZoneByName(cameraname: string, zonename: string): Promise<void>;
|
|
18
18
|
createCameraSource(cameraname: string, sourceName: string, source: string): Promise<void>;
|
|
19
|
-
resetCameraSource(cameraname: string, sourceName: string): Promise<void>;
|
|
20
19
|
list(): DBCamera[];
|
|
21
20
|
listTransformed(): Camera[];
|
|
22
21
|
listByPluginId(pluginId: string): DBCamera[];
|
|
@@ -50,6 +49,7 @@ export declare class CamerasService {
|
|
|
50
49
|
private generateFFmpegUrls;
|
|
51
50
|
private generateWWWUrls;
|
|
52
51
|
private extensionIsEnabled;
|
|
52
|
+
private defaultZone;
|
|
53
53
|
private convertToDetectionZones;
|
|
54
54
|
}
|
|
55
55
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DBCamviewLayout, DBUser } from '../database/types.js';
|
|
1
|
+
import type { DBCameraShortcut, DBCamviewLayout, DBUser } from '../database/types.js';
|
|
2
2
|
export declare class UsersService {
|
|
3
3
|
private dbs;
|
|
4
4
|
constructor();
|
|
@@ -9,8 +9,17 @@ export declare class UsersService {
|
|
|
9
9
|
patchUser(username: string, userData?: Partial<DBUser>): Promise<DBUser | undefined>;
|
|
10
10
|
removeByName(username: string): Promise<void>;
|
|
11
11
|
removeAll(): Promise<void>;
|
|
12
|
+
createShortcut(username: string, cameraId: string, shortcutData: DBCameraShortcut): Promise<DBCameraShortcut[] | undefined>;
|
|
13
|
+
patchShortcutById(username: string, cameraId: string, shortcutId: string, shortcutData?: Partial<DBCameraShortcut>): Promise<DBCameraShortcut[] | undefined>;
|
|
14
|
+
removeShortcutById(username: string, cameraId: string, shortcutId: string): Promise<DBCameraShortcut[] | undefined>;
|
|
15
|
+
removeAllShortcuts(username: string, cameraId: string): Promise<DBCameraShortcut[] | undefined>;
|
|
12
16
|
createView(username: string, viewData: DBCamviewLayout): Promise<DBCamviewLayout>;
|
|
13
|
-
patchViewById(username: string,
|
|
14
|
-
removeViewById(username: string,
|
|
17
|
+
patchViewById(username: string, viewid: string, viewData?: Partial<DBCamviewLayout>): Promise<DBCamviewLayout | undefined>;
|
|
18
|
+
removeViewById(username: string, viewid: string): Promise<DBCamviewLayout[] | undefined>;
|
|
15
19
|
removeAllViews(username: string): Promise<DBCamviewLayout[] | undefined>;
|
|
20
|
+
resetPreferences(username: string): Promise<void>;
|
|
21
|
+
resetAllPreferences(): Promise<void>;
|
|
22
|
+
removeCameraFromPreferences(cameraId: string): Promise<void>;
|
|
23
|
+
removeCameraFromAllShortcuts(cameraId: string): Promise<void>;
|
|
24
|
+
removeCameraFromAllViews(cameraId: string): Promise<void>;
|
|
16
25
|
}
|
|
@@ -7,7 +7,8 @@ import type { RestoreBackupInput } from '../schemas/backup.schema.js';
|
|
|
7
7
|
import type { CreateCameraInput, PatchCameraInput, PreviewCameraInput } from '../schemas/cameras.schema.js';
|
|
8
8
|
import type { PatchConfigInput } from '../schemas/config.schema.js';
|
|
9
9
|
import type { PatchGo2RtcConfigInput } from '../schemas/go2rtc.schema.js';
|
|
10
|
-
import type {
|
|
10
|
+
import type { DetectAudioInput, DetectMotionInput, DetectObjectInput } from '../schemas/plugins.schema.js';
|
|
11
|
+
import type { CreateShortcutInput, CreateUserInput, CreateViewInput, LoginUserInput, PatchShortcutInput, PatchUserInput, PatchViewInput } from '../schemas/users.schema.js';
|
|
11
12
|
export interface BusboyFileStream extends Readable {
|
|
12
13
|
truncated: boolean;
|
|
13
14
|
bytesRead: number;
|
|
@@ -162,7 +163,7 @@ export interface Go2RtcInfo {
|
|
|
162
163
|
wsURL: string;
|
|
163
164
|
port: number;
|
|
164
165
|
info: ApplicationResponse;
|
|
165
|
-
auth: Go2RtcInfoAuth
|
|
166
|
+
auth: Partial<Go2RtcInfoAuth>;
|
|
166
167
|
}
|
|
167
168
|
export interface TokenClientDataResponse {
|
|
168
169
|
pagination: Pagination;
|
|
@@ -173,32 +174,6 @@ export interface PaginationQuery {
|
|
|
173
174
|
page?: number;
|
|
174
175
|
pageSize?: number;
|
|
175
176
|
}
|
|
176
|
-
export type Multipart = MultipartFile | MultipartValue;
|
|
177
|
-
export interface MultipartFile {
|
|
178
|
-
type: 'file';
|
|
179
|
-
toBuffer: () => Promise<Buffer>;
|
|
180
|
-
file: BusboyFileStream;
|
|
181
|
-
fieldname: string;
|
|
182
|
-
filename: string;
|
|
183
|
-
encoding: string;
|
|
184
|
-
mimetype: string;
|
|
185
|
-
fields: MultipartFields;
|
|
186
|
-
_buf?: Buffer;
|
|
187
|
-
value: Buffer;
|
|
188
|
-
}
|
|
189
|
-
export interface MultipartValue<T = unknown> {
|
|
190
|
-
type: 'field';
|
|
191
|
-
value: T;
|
|
192
|
-
fieldname: string;
|
|
193
|
-
mimetype: string;
|
|
194
|
-
encoding: string;
|
|
195
|
-
fieldnameTruncated: boolean;
|
|
196
|
-
valueTruncated: boolean;
|
|
197
|
-
fields: MultipartFields;
|
|
198
|
-
}
|
|
199
|
-
export interface MultipartFields {
|
|
200
|
-
[fieldname: string]: Multipart | Multipart[] | undefined;
|
|
201
|
-
}
|
|
202
177
|
export type PaginationRequest = {
|
|
203
178
|
Querystring: PaginationQuery;
|
|
204
179
|
};
|
|
@@ -238,6 +213,11 @@ export type CamerasParamsRequest = {
|
|
|
238
213
|
cameraname: string;
|
|
239
214
|
};
|
|
240
215
|
};
|
|
216
|
+
export type CamerasParamsIdRequest = {
|
|
217
|
+
Params: {
|
|
218
|
+
cameraid: string;
|
|
219
|
+
};
|
|
220
|
+
};
|
|
241
221
|
export type CameraZonesParamsRequest = {
|
|
242
222
|
Params: {
|
|
243
223
|
zonename: string;
|
|
@@ -329,6 +309,23 @@ export type PluginsActionRequest = {
|
|
|
329
309
|
payload: any;
|
|
330
310
|
};
|
|
331
311
|
};
|
|
312
|
+
export type PluginsDetectMotionRequest = {
|
|
313
|
+
Body: DetectMotionInput;
|
|
314
|
+
};
|
|
315
|
+
export type PluginsDetectObjectRequest = {
|
|
316
|
+
Body: DetectObjectInput;
|
|
317
|
+
};
|
|
318
|
+
export type PluginsDetectAudioRequest = {
|
|
319
|
+
Body: DetectAudioInput;
|
|
320
|
+
};
|
|
321
|
+
export interface PluginsInterfaceQueryType {
|
|
322
|
+
type: 'objectDetection' | 'motionDetection' | 'audioDetection';
|
|
323
|
+
}
|
|
324
|
+
export type PluginsInterfaceQuery = {
|
|
325
|
+
Querystring: {
|
|
326
|
+
type: PluginsInterfaceQueryType;
|
|
327
|
+
};
|
|
328
|
+
};
|
|
332
329
|
export type UsersParamsRequest = {
|
|
333
330
|
Params: {
|
|
334
331
|
username: string;
|
|
@@ -346,7 +343,7 @@ export type UsersPatchRequest = {
|
|
|
346
343
|
};
|
|
347
344
|
export type ViewsParamsRequest = {
|
|
348
345
|
Params: {
|
|
349
|
-
|
|
346
|
+
viewid: string;
|
|
350
347
|
};
|
|
351
348
|
};
|
|
352
349
|
export type ViewsInsertRequest = {
|
|
@@ -355,6 +352,17 @@ export type ViewsInsertRequest = {
|
|
|
355
352
|
export type ViewsPatchRequest = {
|
|
356
353
|
Body: PatchViewInput;
|
|
357
354
|
};
|
|
355
|
+
export type ShortcutParamsRequest = {
|
|
356
|
+
Params: {
|
|
357
|
+
shortcutid: string;
|
|
358
|
+
};
|
|
359
|
+
};
|
|
360
|
+
export type ShortcutInsertRequest = {
|
|
361
|
+
Body: CreateShortcutInput;
|
|
362
|
+
};
|
|
363
|
+
export type ShortcutPatchRequest = {
|
|
364
|
+
Body: PatchShortcutInput;
|
|
365
|
+
};
|
|
358
366
|
export type BackupCreateRequest = {
|
|
359
367
|
Body: {
|
|
360
368
|
localStorage: Partial<UiLocalStorage>;
|
|
@@ -376,7 +384,7 @@ export interface ConsoleSettings {
|
|
|
376
384
|
export type CamviewSettingsLayoutMode = 'dnd' | 'view';
|
|
377
385
|
export interface CamviewSettings {
|
|
378
386
|
dragDisabled?: boolean;
|
|
379
|
-
|
|
387
|
+
viewid?: string;
|
|
380
388
|
}
|
|
381
389
|
export interface UiSettingsLocalStorage {
|
|
382
390
|
config: ConfigSettings;
|
|
@@ -562,6 +570,9 @@ export interface CameraUiPlugin {
|
|
|
562
570
|
'camera.ui'?: string;
|
|
563
571
|
node?: string;
|
|
564
572
|
};
|
|
573
|
+
'camera.ui'?: PluginContract;
|
|
574
|
+
isPython: boolean;
|
|
575
|
+
isNode: boolean;
|
|
565
576
|
}
|
|
566
577
|
export interface FrameWorker {
|
|
567
578
|
name: string;
|
|
@@ -3,10 +3,10 @@ import { EventEmitter } from 'node:events';
|
|
|
3
3
|
import { CameraController } from './camera/controller.js';
|
|
4
4
|
import type { Camera, CameraExtensions } from './api/database/types.js';
|
|
5
5
|
import type { FrameWorker } from './decoder/worker.js';
|
|
6
|
-
import type { BasePlugin } from './plugins/base.js';
|
|
6
|
+
import type { BasePlugin } from './plugins/interfaces/base.js';
|
|
7
7
|
import type { CameraExtension } from './plugins/types.js';
|
|
8
|
-
import type { API } from './polyglot/node/plugins/
|
|
9
|
-
import type { PluginLogger } from './polyglot/node/plugins/
|
|
8
|
+
import type { API } from './polyglot/node/plugins/pluginApi.js';
|
|
9
|
+
import type { PluginLogger } from './polyglot/node/plugins/pluginLogger.js';
|
|
10
10
|
export interface PluginConstructor {
|
|
11
11
|
new (logger: PluginLogger, api: API): BasePlugin;
|
|
12
12
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CameraAudioDetectionInterface } from './interfaces/audioDetection.js';
|
|
3
|
-
import { CameraMotionDetectionInterface } from './interfaces/motionDetection.js';
|
|
4
|
-
import { CameraObjectDetectionInterface } from './interfaces/objectDetection.js';
|
|
1
|
+
import { CameraDevice } from './device.js';
|
|
5
2
|
import { CameraPrebufferInterface } from './interfaces/prebuffer.js';
|
|
6
3
|
import { CameraPTZInterface } from './interfaces/ptz.js';
|
|
7
4
|
import type { Camera } from '../api/database/types.js';
|
|
5
|
+
import type { MotionFrame, VideoFrame } from '../decoder/types.js';
|
|
8
6
|
import type { ProxyServer } from '../nats/index.js';
|
|
9
7
|
import type { IceServer } from '../services/config/types.js';
|
|
10
8
|
import type { BaseLogger, CameraConfigInputSettings, CameraDelegate, CameraSource, SetValues } from './types.js';
|
|
11
|
-
export declare class CameraController extends
|
|
9
|
+
export declare class CameraController extends CameraDevice {
|
|
12
10
|
proxy: ProxyServer;
|
|
13
11
|
private motionTimeout?;
|
|
14
12
|
private objectTimeout?;
|
|
@@ -16,15 +14,16 @@ export declare class CameraController extends BaseCameraDevice {
|
|
|
16
14
|
private doorbellTimeout?;
|
|
17
15
|
private doorbellTimeoutDuration;
|
|
18
16
|
private prebufferStateSubscriptions;
|
|
19
|
-
cameraDelegate: CameraDelegate;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
audioDetectorDelegate: CameraAudioDetectionInterface;
|
|
23
|
-
motionDetectorDelegate: CameraMotionDetectionInterface;
|
|
24
|
-
objectDetectorDelegate: CameraObjectDetectionInterface;
|
|
17
|
+
protected cameraDelegate: CameraDelegate;
|
|
18
|
+
protected ptzDelegate: CameraPTZInterface;
|
|
19
|
+
protected prebufferDelegate: CameraPrebufferInterface;
|
|
25
20
|
get camera(): Camera;
|
|
26
21
|
get sources(): CameraSource[];
|
|
27
22
|
constructor(camera: Camera, logger: BaseLogger, proxy: ProxyServer);
|
|
23
|
+
setDelegate(): void;
|
|
24
|
+
getFfmpegPath(): Promise<string>;
|
|
25
|
+
getFrames(): AsyncIterableIterator<VideoFrame>;
|
|
26
|
+
getMotionFrames(): AsyncIterableIterator<MotionFrame>;
|
|
28
27
|
connect(): Promise<void>;
|
|
29
28
|
disconnect(): Promise<void>;
|
|
30
29
|
getIceServers(): Promise<IceServer[]>;
|
|
@@ -42,5 +41,6 @@ export declare class CameraController extends BaseCameraDevice {
|
|
|
42
41
|
private subscribeToObjectState;
|
|
43
42
|
private subscribeToDoorbellState;
|
|
44
43
|
private triggerProxyEvent;
|
|
44
|
+
private proxyRequest;
|
|
45
45
|
private isCameraEvent;
|
|
46
46
|
}
|
|
@@ -4,15 +4,27 @@ import { WeriftSession } from './streaming/werift-session.js';
|
|
|
4
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
|
-
import type { CameraDelegates, FrameState } from './types.js';
|
|
7
|
+
import type { AudioSetEvent, BatterySetEvent, CameraConfigInputSettings, CameraDelegates, DoorbellSetEvent, FrameState, LightSetEvent, MotionSetEvent, ObjectSetEvent, SirenSetEvent } from './types.js';
|
|
8
8
|
export declare abstract class CameraDevice extends BaseCameraDevice {
|
|
9
9
|
protected readonly frameState: BehaviorSubject<FrameState>;
|
|
10
10
|
protected readonly onFrame: Observable<FrameState>;
|
|
11
11
|
abstract setDelegate<T extends keyof CameraDelegates>(name: T, delegate: CameraDelegates[T]): void;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
abstract connect(): Promise<void>;
|
|
13
|
+
abstract disconnect(): Promise<void>;
|
|
14
14
|
abstract getFrames(prebufferDuration?: number): AsyncIterableIterator<VideoFrame>;
|
|
15
15
|
abstract getMotionFrames(): AsyncIterableIterator<MotionFrame>;
|
|
16
16
|
abstract getFfmpegPath(): Promise<string>;
|
|
17
|
+
abstract updateState(stateName: 'light', eventData: LightSetEvent): Promise<void>;
|
|
18
|
+
abstract updateState(stateName: 'motion', eventData: MotionSetEvent, frame?: VideoFrame): Promise<void>;
|
|
19
|
+
abstract updateState(stateName: 'audio', eventData: AudioSetEvent): Promise<void>;
|
|
20
|
+
abstract updateState(stateName: 'object', eventData: ObjectSetEvent): Promise<void>;
|
|
21
|
+
abstract updateState(stateName: 'doorbell', eventData: DoorbellSetEvent): Promise<void>;
|
|
22
|
+
abstract updateState(stateName: 'siren', eventData: SirenSetEvent): Promise<void>;
|
|
23
|
+
abstract updateState(stateName: 'battery', eventData: BatterySetEvent): Promise<void>;
|
|
24
|
+
abstract addCameraSource(source: CameraConfigInputSettings): Promise<void>;
|
|
25
|
+
abstract updateCameraSource(sourceId: string, source: Partial<CameraConfigInputSettings>): Promise<void>;
|
|
26
|
+
abstract removeCameraSource(sourceId: string): Promise<void>;
|
|
27
|
+
createSession(sourceName: string, options?: StreamingConnectionOptions): Promise<WeriftSession>;
|
|
28
|
+
protected removeAllListeners(): void;
|
|
17
29
|
private createMotionFrameObservable;
|
|
18
30
|
}
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { LRUCache } from 'lru-cache';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import
|
|
3
|
+
import { Subscribed } from '../utils/subscribed.js';
|
|
4
|
+
import type { Observable } from 'rxjs';
|
|
4
5
|
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
|
-
import type { AudioSetEvent, AudioState, BaseLogger, BatterySetEvent, BatteryState,
|
|
8
|
-
declare class Subscribed {
|
|
9
|
-
private readonly subscriptions;
|
|
10
|
-
private readonly additionalSubscriptions;
|
|
11
|
-
protected addSubscriptions(...subscriptions: Subscription[]): void;
|
|
12
|
-
protected addAdditionalSubscriptions(...subscriptions: Subscription[]): void;
|
|
13
|
-
protected unsubscribe(): void;
|
|
14
|
-
protected unsubscribeAdditional(): void;
|
|
15
|
-
}
|
|
7
|
+
import type { AudioSetEvent, AudioState, BaseLogger, BatterySetEvent, BatteryState, CameraDelegate, CameraPTZDelegate, CameraPrebufferDelegate, CameraSource, Container, DetectionZone, DoorbellSetEvent, DoorbellState, LightSetEvent, LightState, MotionSetEvent, MotionState, ObjectSetEvent, ObjectState, PrebufferState, SetValues, SirenSetEvent, SirenState, StateValues } from './types.js';
|
|
16
8
|
export declare abstract class BaseCameraDevice extends Subscribed {
|
|
17
9
|
protected logger: BaseLogger;
|
|
18
10
|
protected snapshotCache: LRUCache<string, ArrayBuffer, unknown>;
|
|
@@ -38,12 +30,9 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
38
30
|
readonly onDoorbellPressed: Observable<DoorbellState>;
|
|
39
31
|
readonly onSirenDetected: Observable<SirenState>;
|
|
40
32
|
readonly onBatteryChanged: Observable<BatteryState>;
|
|
41
|
-
abstract cameraDelegate: CameraDelegate;
|
|
42
|
-
abstract
|
|
43
|
-
abstract
|
|
44
|
-
abstract motionDetectorDelegate: CameraMotionDetectionDelegate;
|
|
45
|
-
abstract audioDetectorDelegate: CameraAudioDetectionDelegate;
|
|
46
|
-
abstract objectDetectorDelegate: CameraObjectDetectionDelegate;
|
|
33
|
+
protected abstract cameraDelegate: CameraDelegate;
|
|
34
|
+
protected abstract ptzDelegate: CameraPTZDelegate;
|
|
35
|
+
protected abstract prebufferDelegate: CameraPrebufferDelegate;
|
|
47
36
|
protected get cameraObject(): Camera;
|
|
48
37
|
get id(): string;
|
|
49
38
|
get nativeId(): string | undefined;
|
|
@@ -66,43 +55,39 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
66
55
|
get activityZones(): DetectionZone[];
|
|
67
56
|
get activitySettings(): CameraActivitySettings;
|
|
68
57
|
get frameWorkerSettings(): CameraFrameWorkerSettings;
|
|
69
|
-
get sources(): CameraSource[];
|
|
70
58
|
get streamSource(): CameraSource;
|
|
71
|
-
get snapshotSource(): CameraSource;
|
|
72
|
-
get
|
|
73
|
-
get
|
|
59
|
+
get snapshotSource(): CameraSource | undefined;
|
|
60
|
+
get highResolutionSource(): CameraSource | undefined;
|
|
61
|
+
get midResolutionSource(): CameraSource | undefined;
|
|
62
|
+
get lowResolutionSource(): CameraSource | undefined;
|
|
63
|
+
get ptz(): CameraPTZDelegate;
|
|
64
|
+
abstract get sources(): CameraSource[];
|
|
74
65
|
constructor(camera: Camera, logger: BaseLogger);
|
|
66
|
+
abstract getIceServers(): Promise<IceServer[]>;
|
|
67
|
+
protected abstract cleanup(): void;
|
|
75
68
|
getValue<T extends keyof StateValues>(stateName: T): StateValues[T];
|
|
76
69
|
snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
|
|
77
70
|
onStateChange<T extends keyof StateValues>(stateName: T): Observable<{
|
|
78
71
|
newState: StateValues[T];
|
|
79
72
|
oldState: StateValues[T];
|
|
80
73
|
}>;
|
|
81
|
-
abstract connect(): Promise<void>;
|
|
82
|
-
abstract disconnect(): Promise<void>;
|
|
83
|
-
abstract getIceServers(): Promise<IceServer[]>;
|
|
84
|
-
abstract updateState(stateName: 'light', eventData: LightSetEvent): Promise<void>;
|
|
85
|
-
abstract updateState(stateName: 'motion', eventData: MotionSetEvent, frame?: VideoFrame): Promise<void>;
|
|
86
|
-
abstract updateState(stateName: 'audio', eventData: AudioSetEvent): Promise<void>;
|
|
87
|
-
abstract updateState(stateName: 'object', eventData: ObjectSetEvent): Promise<void>;
|
|
88
|
-
abstract updateState(stateName: 'doorbell', eventData: DoorbellSetEvent): Promise<void>;
|
|
89
|
-
abstract updateState(stateName: 'siren', eventData: SirenSetEvent): Promise<void>;
|
|
90
|
-
abstract updateState(stateName: 'battery', eventData: BatterySetEvent): Promise<void>;
|
|
91
|
-
abstract addCameraSource(source: CameraConfigInputSettings): Promise<void>;
|
|
92
|
-
abstract updateCameraSource(sourceId: string, source: Partial<CameraConfigInputSettings>): Promise<void>;
|
|
93
|
-
abstract removeCameraSource(sourceId: string): Promise<void>;
|
|
94
|
-
protected abstract cleanup(): void;
|
|
95
|
-
protected updateStateInternal<T extends keyof SetValues>(stateName: T, eventData: SetValues[T], skipCheck?: boolean): void;
|
|
96
74
|
onPropertyChange<T extends keyof Camera>(property: T | T[]): Observable<{
|
|
97
75
|
property: T;
|
|
98
76
|
oldData: Camera[T];
|
|
99
77
|
newData: Camera[T];
|
|
100
78
|
}>;
|
|
101
|
-
removeAllListeners(): void;
|
|
79
|
+
protected removeAllListeners(): void;
|
|
80
|
+
protected updateCamera(updatedCamera: Camera): void;
|
|
81
|
+
protected updateCameraState(state: boolean): void;
|
|
82
|
+
protected updatePrebuffer(sourceId: string, container: Container, state: PrebufferState): void;
|
|
83
|
+
protected updateStateInternal<T extends keyof SetValues>(stateName: T, eventData: SetValues[T], skipCheck?: boolean): void;
|
|
102
84
|
protected checkStateInternal<T extends keyof SetValues>(stateName: T, event: SetValues[T]): {
|
|
103
85
|
changed: boolean;
|
|
104
86
|
event: StateValues[T];
|
|
105
87
|
};
|
|
88
|
+
protected cameraSourcePrebufferState(sourceId: string, container: Container): PrebufferState;
|
|
89
|
+
protected createPrebufferStateObservable(sourceId: string, container: Container): Observable<PrebufferState>;
|
|
90
|
+
protected stateChanged<T extends keyof SetValues>(oldState?: SetValues[T], newState?: SetValues[T], type?: keyof StateValues): boolean;
|
|
106
91
|
protected getAudioState(event: AudioSetEvent, ignoreLastEvet?: boolean): AudioState;
|
|
107
92
|
protected getMotionState(event: MotionSetEvent, ignoreLastEvet?: boolean): MotionState;
|
|
108
93
|
protected getObjectState(event: ObjectSetEvent, ignoreLastEvet?: boolean): ObjectState;
|
|
@@ -110,14 +95,6 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
110
95
|
protected getLightState(event: LightSetEvent, ignoreLastEvet?: boolean): LightState;
|
|
111
96
|
protected getSirenState(event: SirenSetEvent, ignoreLastEvet?: boolean): SirenState;
|
|
112
97
|
protected getBatteryState(event: BatterySetEvent, ignoreLastEvet?: boolean): BatteryState;
|
|
113
|
-
|
|
114
|
-
protected updatePrebuffer(sourceId: string, container: Container, state: PrebufferState): Promise<void>;
|
|
115
|
-
protected updateCameraSourcesState(): void;
|
|
116
|
-
protected updateCameraState(state: boolean): void;
|
|
117
|
-
protected cameraSourcePrebufferState(sourceId: string, container: Container): PrebufferState;
|
|
98
|
+
private isStateEvent;
|
|
118
99
|
private createStateObservable;
|
|
119
|
-
protected createPrebufferStateObservable(sourceId: string, container: Container): Observable<PrebufferState>;
|
|
120
|
-
protected stateChanged<T extends keyof SetValues>(oldState?: SetValues[T], newState?: SetValues[T], type?: keyof StateValues): boolean;
|
|
121
|
-
protected isStateEvent(state: States | Sets): state is States;
|
|
122
100
|
}
|
|
123
|
-
export {};
|
|
@@ -5,6 +5,6 @@ export declare class CameraInterface extends CameraDelegate {
|
|
|
5
5
|
private onRequest;
|
|
6
6
|
private logger;
|
|
7
7
|
constructor(onRequest: (client: any, fn: string, args?: any[], timeout?: number) => Promise<any>, logger: BaseLogger);
|
|
8
|
-
|
|
8
|
+
snapshot(): Promise<ArrayBuffer>;
|
|
9
9
|
private _onRequest;
|
|
10
10
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import type { Observable } from 'rxjs';
|
|
2
2
|
import type { CameraInformation, CameraInput, CameraInputSettings, Point, ZoneFilter, ZoneType } from '../api/database/types.js';
|
|
3
3
|
import type { FrameData, FrameMetadata } from '../decoder/types.js';
|
|
4
|
-
import type { CameraAudioDetectionInterface } from './interfaces/audioDetection.js';
|
|
5
4
|
import type { CameraInterface } from './interfaces/camera.js';
|
|
6
|
-
import type { CameraMotionDetectionInterface } from './interfaces/motionDetection.js';
|
|
7
|
-
import type { CameraObjectDetectionInterface } from './interfaces/objectDetection.js';
|
|
8
5
|
import type { CameraPrebufferInterface } from './interfaces/prebuffer.js';
|
|
9
6
|
import type { CameraPTZInterface } from './interfaces/ptz.js';
|
|
10
7
|
export interface BaseLogger {
|
|
@@ -24,8 +21,7 @@ export interface FfmpegOptions {
|
|
|
24
21
|
}
|
|
25
22
|
export type Container = 'mp4' | 'mpegts';
|
|
26
23
|
export interface BasePrebufferState {
|
|
27
|
-
|
|
28
|
-
availableDuration: number;
|
|
24
|
+
duration: number;
|
|
29
25
|
}
|
|
30
26
|
export interface PrebufferStateTrue extends BasePrebufferState {
|
|
31
27
|
state: true;
|
|
@@ -182,7 +178,7 @@ export type StateValue<T extends keyof StateValues> = StateValues[T];
|
|
|
182
178
|
export type SetValue<T extends keyof SetValues> = SetValues[T];
|
|
183
179
|
export type OnChangeCallback<T extends keyof StateValues> = (newEvent: StateValues[T], oldEvent: StateValues[T]) => void;
|
|
184
180
|
export declare abstract class CameraDelegate {
|
|
185
|
-
abstract
|
|
181
|
+
abstract snapshot(): Promise<ArrayBuffer>;
|
|
186
182
|
}
|
|
187
183
|
export declare abstract class CameraPrebufferDelegate {
|
|
188
184
|
abstract getStreamInfo(sourceName: string): Promise<StreamInfo | undefined>;
|
|
@@ -193,28 +189,13 @@ export declare abstract class CameraPTZDelegate {
|
|
|
193
189
|
abstract moveContinuous(pan: number, tilt: number, zoom: number): Promise<void>;
|
|
194
190
|
abstract stop(): Promise<void>;
|
|
195
191
|
}
|
|
196
|
-
export declare abstract class CameraMotionDetectionDelegate {
|
|
197
|
-
abstract detectImage(image: Buffer): Promise<Detection[]>;
|
|
198
|
-
}
|
|
199
|
-
export declare abstract class CameraObjectDetectionDelegate {
|
|
200
|
-
abstract detectImage(image: Buffer): Promise<Detection[]>;
|
|
201
|
-
}
|
|
202
|
-
export declare abstract class CameraAudioDetectionDelegate {
|
|
203
|
-
abstract detectAudio(audio: Buffer): Promise<boolean>;
|
|
204
|
-
}
|
|
205
192
|
export interface CameraInterfaces {
|
|
206
193
|
readonly cameraDelegate: CameraInterface;
|
|
207
194
|
readonly prebufferDelegate: CameraPrebufferInterface;
|
|
208
195
|
readonly ptzDelegate: CameraPTZInterface;
|
|
209
|
-
readonly motionDetectorDelegate: CameraMotionDetectionInterface;
|
|
210
|
-
readonly objectDetectorDelegate: CameraObjectDetectionInterface;
|
|
211
|
-
readonly audioDetectorDelegate: CameraAudioDetectionInterface;
|
|
212
196
|
}
|
|
213
197
|
export interface CameraDelegates {
|
|
214
198
|
readonly cameraDelegate: CameraDelegate;
|
|
215
199
|
readonly prebufferDelegate: CameraPrebufferDelegate;
|
|
216
200
|
readonly ptzDelegate: CameraPTZDelegate;
|
|
217
|
-
readonly motionDetectorDelegate: CameraMotionDetectionDelegate;
|
|
218
|
-
readonly objectDetectorDelegate: CameraObjectDetectionDelegate;
|
|
219
|
-
readonly audioDetectorDelegate: CameraAudioDetectionDelegate;
|
|
220
201
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { NatsConnection } from 'nats';
|
|
2
1
|
import type { DecoderFormat, FrameBuffer, FrameData, FrameImage, FrameMetadata, ImageOptions, MotionFrame as MotionFrameMethods, VideoFrame as VideoFrameMethods } from '../decoder/types.js';
|
|
2
|
+
import type { ProxyConnection } from '../nats/connection.js';
|
|
3
3
|
import type { MotionState } from './types.js';
|
|
4
4
|
export declare class VideoFrame implements VideoFrameMethods {
|
|
5
5
|
readonly frameData: FrameData;
|
|
@@ -10,7 +10,7 @@ export declare class VideoFrame implements VideoFrameMethods {
|
|
|
10
10
|
get inputWidth(): number;
|
|
11
11
|
get inputHeight(): number;
|
|
12
12
|
get inputFormat(): DecoderFormat;
|
|
13
|
-
constructor(cameraId: string, publisher:
|
|
13
|
+
constructor(cameraId: string, publisher: ProxyConnection, frameData: FrameData, metadata: FrameMetadata, prebufferDuration: number);
|
|
14
14
|
toBuffer(options?: ImageOptions): Promise<FrameBuffer>;
|
|
15
15
|
toImage(options?: ImageOptions): Promise<FrameImage>;
|
|
16
16
|
save(path: string, options?: ImageOptions): Promise<void>;
|
|
@@ -20,5 +20,5 @@ export declare class VideoFrame implements VideoFrameMethods {
|
|
|
20
20
|
}
|
|
21
21
|
export declare class MotionFrame extends VideoFrame implements MotionFrameMethods {
|
|
22
22
|
readonly motion: MotionState;
|
|
23
|
-
constructor(cameraId: string, publisher:
|
|
23
|
+
constructor(cameraId: string, publisher: ProxyConnection, frameData: FrameData, motionState: MotionState, metadata: FrameMetadata);
|
|
24
24
|
}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import type { ChildProcess } from 'node:child_process';
|
|
2
1
|
import type { Sharp } from 'sharp';
|
|
3
2
|
import type { MotionState } from '../camera/types.js';
|
|
4
3
|
export type DecoderFormat = 'yuv' | 'rgb';
|
|
4
|
+
export interface ImageMetadata {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
export interface AudioMetadata {
|
|
9
|
+
mimeType: 'audio/mpeg' | 'audio/wav' | 'audio/ogg';
|
|
10
|
+
}
|
|
5
11
|
export interface FrameMetadata {
|
|
6
12
|
format: DecoderFormat;
|
|
7
13
|
frameSize: number;
|
|
@@ -30,7 +36,7 @@ export interface ImageOptions {
|
|
|
30
36
|
crop?: ImageCrop;
|
|
31
37
|
resize?: ImageResize;
|
|
32
38
|
}
|
|
33
|
-
export interface
|
|
39
|
+
export interface ProcessPrebufferedImageRequest {
|
|
34
40
|
frameData: FrameData;
|
|
35
41
|
metadata: FrameMetadata;
|
|
36
42
|
options: ImageOptions;
|
|
@@ -63,10 +69,9 @@ export interface VideoFrame {
|
|
|
63
69
|
export interface MotionFrame extends VideoFrame {
|
|
64
70
|
motion: MotionState;
|
|
65
71
|
}
|
|
66
|
-
export interface
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
cp: ChildProcess;
|
|
72
|
+
export interface AuthConfig {
|
|
73
|
+
user: string;
|
|
74
|
+
password: string;
|
|
70
75
|
}
|
|
71
76
|
export interface BaseFrameWorkerConfig {
|
|
72
77
|
frameWorkerId: string;
|
|
@@ -75,10 +80,7 @@ export interface BaseFrameWorkerConfig {
|
|
|
75
80
|
ffmpegPath: string;
|
|
76
81
|
logLevel: string;
|
|
77
82
|
disableTimestamps: boolean;
|
|
78
|
-
auth:
|
|
79
|
-
user: string;
|
|
80
|
-
pass: string;
|
|
81
|
-
};
|
|
83
|
+
auth: AuthConfig;
|
|
82
84
|
proxyEndpoints: string[];
|
|
83
85
|
fps: number;
|
|
84
86
|
resolution: number;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PLUGIN_STATUS } from '../plugins/types.js';
|
|
2
2
|
import { Subscribed } from '../utils/subscribed.js';
|
|
3
3
|
import type { CameraController } from '../camera/controller.js';
|
|
4
|
+
import type { AuthConfig } from './types.js';
|
|
4
5
|
export declare class FrameWorker extends Subscribed {
|
|
5
6
|
token: string;
|
|
6
7
|
name: string;
|
|
@@ -24,10 +25,7 @@ export declare class FrameWorker extends Subscribed {
|
|
|
24
25
|
private py;
|
|
25
26
|
private _status;
|
|
26
27
|
get status(): PLUGIN_STATUS;
|
|
27
|
-
constructor(cameraDevice: CameraController, proxyEndpoints: string[], auth:
|
|
28
|
-
user: string;
|
|
29
|
-
pass: string;
|
|
30
|
-
});
|
|
28
|
+
constructor(cameraDevice: CameraController, proxyEndpoints: string[], auth: AuthConfig);
|
|
31
29
|
start(): Promise<void>;
|
|
32
30
|
close(): Promise<void>;
|
|
33
31
|
restart(): Promise<void>;
|
|
@@ -36,7 +34,7 @@ export declare class FrameWorker extends Subscribed {
|
|
|
36
34
|
private restartWorker;
|
|
37
35
|
private killWorker;
|
|
38
36
|
private sendMessage;
|
|
39
|
-
private
|
|
37
|
+
private onChildMessage;
|
|
40
38
|
private setStatus;
|
|
41
39
|
private getLogPrefix;
|
|
42
40
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ProxySubscription } from './subscription.js';
|
|
2
|
+
import type { NatsConnection, RequestOptions } from 'nats';
|
|
3
|
+
import type { AuthConfig } from '../decoder/types.js';
|
|
4
|
+
export declare class ProxyConnection {
|
|
5
|
+
private name;
|
|
6
|
+
private servers;
|
|
7
|
+
private auth;
|
|
8
|
+
private publisher?;
|
|
9
|
+
private subscribers;
|
|
10
|
+
private closed;
|
|
11
|
+
constructor(name: string, servers: string[], auth: AuthConfig);
|
|
12
|
+
connect(): Promise<NatsConnection>;
|
|
13
|
+
subscribe(subject: string, skipListening?: boolean): ProxySubscription;
|
|
14
|
+
publish(subject: string, message: any): void;
|
|
15
|
+
request(subject: string, message: any, opts?: RequestOptions): Promise<any>;
|
|
16
|
+
close(): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ProxyMessageStructure } from './types.js';
|
|
2
|
+
export interface DeserializedError {
|
|
3
|
+
name: string;
|
|
4
|
+
message: string;
|
|
5
|
+
stack: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class RemoteError extends Error {
|
|
8
|
+
constructor(error: DeserializedError, cause: Omit<ProxyMessageStructure, 'error'>);
|
|
9
|
+
}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import { CameraDeviceProxy } from './proxy/cameraDevice.js';
|
|
2
|
-
import { DeviceManagerProxy
|
|
2
|
+
import { DeviceManagerProxy } from './proxy/deviceManager.js';
|
|
3
3
|
import { NatsServer } from './server.js';
|
|
4
|
-
import type { NatsConnection, Subscription } from 'nats';
|
|
5
4
|
import type { StateValues } from '../camera/types.js';
|
|
6
|
-
import type {
|
|
5
|
+
import type { CameraStorage } from '../polyglot/node/plugins/cameraStorage.js';
|
|
6
|
+
import type { MethodKeys, MethodType } from '../types.js';
|
|
7
|
+
import { ProxyConnection } from './connection.js';
|
|
8
|
+
import type { ProxySubscription } from './subscription.js';
|
|
9
|
+
import type { CameraDeviceListenerMessagePayload, DeviceManagerProxyEvents, PluginMap, ProxyAuth } from './types.js';
|
|
7
10
|
import type { WebsocketProxy } from './websocket.js';
|
|
8
11
|
export declare class ProxyServer {
|
|
9
12
|
private api;
|
|
10
13
|
private logger;
|
|
11
14
|
deviceManagerProxy?: DeviceManagerProxy;
|
|
12
|
-
pluginsManagerProxy?: PluginsManagerProxy;
|
|
13
|
-
systemManagerProxy?: SystemManagerProxy;
|
|
14
15
|
cameraDeviceProxy?: CameraDeviceProxy;
|
|
15
16
|
websocketProxy?: WebsocketProxy;
|
|
16
17
|
server: NatsServer;
|
|
17
|
-
publisher?:
|
|
18
|
-
subscriber?:
|
|
18
|
+
publisher?: ProxyConnection;
|
|
19
|
+
subscriber?: ProxySubscription;
|
|
20
|
+
private pluginsService?;
|
|
19
21
|
private messageQueue?;
|
|
20
22
|
private initialized;
|
|
21
23
|
auth: ProxyAuth;
|
|
@@ -23,12 +25,13 @@ export declare class ProxyServer {
|
|
|
23
25
|
initialize(): Promise<void>;
|
|
24
26
|
close(): Promise<void>;
|
|
25
27
|
publishDeviceManagerEvent<K extends keyof DeviceManagerProxyEvents>(targetId: string, type: K, data: DeviceManagerProxyEvents[K]): void;
|
|
26
|
-
publishSystemManagerEvent<K extends keyof SystemManagerProxyEvents>(targetId: string, type: K, data: SystemManagerProxyEvents[K]): void;
|
|
27
|
-
publishPluginsManagerEvent<K extends keyof PluginsManagerProxyEvents>(targetId: string, type: K, data: PluginsManagerProxyEvents[K]): void;
|
|
28
28
|
publishCameraEvent<K extends keyof StateValues>(cameraId: string, stateName: K, data: {
|
|
29
29
|
newEvent: StateValues[K];
|
|
30
30
|
oldEvent: StateValues[K];
|
|
31
31
|
}, targetId?: string): void;
|
|
32
32
|
publishCameraEvent(cameraId: string, type: CameraDeviceListenerMessagePayload['type'], data?: any, targetId?: string): void;
|
|
33
|
+
requestPluginFn<T extends keyof PluginMap, K extends MethodKeys<PluginMap[T]>>(pluginType: T, pluginId: string, fn: K, args: Parameters<MethodType<PluginMap[T], K>>, timeout?: number): Promise<Awaited<ReturnType<MethodType<PluginMap[T], K>>>>;
|
|
34
|
+
requestStorageFn<T extends MethodKeys<CameraStorage>>(pluginId: string, cameraId: string, fn: T, args: Parameters<MethodType<CameraStorage, T>>, timeout?: number): Promise<Awaited<ReturnType<MethodType<CameraStorage, T>>>>;
|
|
35
|
+
private requestHandler;
|
|
33
36
|
private isCameraState;
|
|
34
37
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { BaseLogger } from '../camera/types.js';
|
|
2
|
+
import type { ProxyConnection } from './connection.js';
|
|
3
|
+
import type { ProxySubscription } from './subscription.js';
|
|
4
|
+
import type { ProxyMessageStructure } from './types.js';
|
|
5
|
+
export declare class MessageQueue {
|
|
6
|
+
private logger;
|
|
7
|
+
private type;
|
|
8
|
+
private publisher;
|
|
9
|
+
private subscriber;
|
|
10
|
+
private requestHandler;
|
|
11
|
+
private aborted;
|
|
12
|
+
private isProcessing;
|
|
13
|
+
private queue;
|
|
14
|
+
private pendingResponses;
|
|
15
|
+
constructor(type: 'server' | 'client', publisher: ProxyConnection, subscriber: ProxySubscription, logger: BaseLogger, requestHandler: (message: ProxyMessageStructure) => void);
|
|
16
|
+
abortQueue(): void;
|
|
17
|
+
enqueue(message: ProxyMessageStructure): Promise<any>;
|
|
18
|
+
private processQueue;
|
|
19
|
+
private onMessage;
|
|
20
|
+
}
|