@camera.ui/browser 0.0.71 → 0.0.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/bundle.js +1 -1
  2. package/dist/types/packages/client/browser/src/proxy/cameraDevice.d.ts +10 -2
  3. package/dist/types/packages/client/browser/src/proxy/deviceManager.d.ts +9 -6
  4. package/dist/types/packages/client/browser/src/proxy/pluginsManager.d.ts +4 -1
  5. package/dist/types/packages/client/browser/src/proxy/systemManager.d.ts +4 -1
  6. package/dist/types/packages/client/browser/src/socket.d.ts +6 -1
  7. package/dist/types/{server/src/camera/streaming/browser/browser-peer-connection.d.ts → packages/client/browser/src/streaming/peer-connection.d.ts} +4 -5
  8. package/dist/types/{server/src/camera/streaming/browser/browser-streaming-session.d.ts → packages/client/browser/src/streaming/streaming-session.d.ts} +6 -6
  9. package/dist/types/{server/src/camera/streaming/browser/webrtc-browser-connection.d.ts → packages/client/browser/src/streaming/webrtc-connection.d.ts} +6 -7
  10. package/dist/types/packages/client/browser/src/types.d.ts +26 -2
  11. package/dist/types/server/src/api.d.ts +5 -5
  12. package/dist/types/server/src/decoder/index.d.ts +4 -5
  13. package/dist/types/server/src/decoder/types.d.ts +39 -0
  14. package/dist/types/server/src/decoder/worker/index.d.ts +27 -3
  15. package/dist/types/server/src/{camera/base → devices/camera}/cameraDevice.d.ts +5 -5
  16. package/dist/types/server/src/{camera/controller.d.ts → devices/camera/controller/index.d.ts} +6 -6
  17. package/dist/types/server/src/{camera → devices/camera/controller}/types.d.ts +11 -20
  18. package/dist/types/server/src/{camera/base → devices/camera}/index.d.ts +16 -15
  19. package/dist/types/server/src/{camera → devices/camera}/streaming/peer-connection.d.ts +5 -5
  20. package/dist/types/server/src/{camera → devices/camera}/streaming/streaming-session.d.ts +3 -3
  21. package/dist/types/server/src/{camera → devices/camera}/streaming/webrtc-connection.d.ts +4 -4
  22. package/dist/types/server/src/nats/index.d.ts +1 -1
  23. package/dist/types/server/src/nats/proxy/cameraDevice.d.ts +1 -1
  24. package/dist/types/server/src/nats/proxy/deviceManager.d.ts +1 -1
  25. package/dist/types/server/src/nats/types.d.ts +12 -22
  26. package/dist/types/server/src/nats/websocket.d.ts +3 -2
  27. package/dist/types/server/src/plugins/base.d.ts +2 -2
  28. package/dist/types/server/src/plugins/node/proxy/cameraDevice.d.ts +4 -4
  29. package/dist/types/server/src/plugins/node/proxy/deviceManager.d.ts +2 -2
  30. package/dist/types/server/src/plugins/node/proxy/queue.d.ts +1 -1
  31. package/dist/types/shared/types/index.d.ts +2 -4
  32. package/package.json +1 -1
  33. package/dist/types/server/src/camera/base/cameraDeviceBrowser.d.ts +0 -6
  34. package/dist/types/server/src/decoder/worker/runtime/base/index.d.ts +0 -36
  35. package/dist/types/server/src/decoder/worker/runtime/child-process/index.d.ts +0 -17
  36. package/dist/types/server/src/decoder/worker/runtime/worker-thread/index.d.ts +0 -22
  37. /package/dist/types/server/src/{camera/utils → utils}/subscribed.d.ts +0 -0
@@ -1,14 +1,22 @@
1
- import { BrowserCameraDevice } from '../../../../../server/src/camera/base/cameraDeviceBrowser.js';
1
+ import { BaseCameraDevice } from '../../../../../server/src/devices/camera/index.js';
2
+ import { StreamingSession } from '../streaming/streaming-session.js';
2
3
  import type { BaseLogger, Camera, CameraSource, IceServer, SetValues } from '../../../../../shared/types/index.js';
3
4
  import type { SocketService } from '../socket.js';
4
- export declare class CameraDeviceProxy extends BrowserCameraDevice {
5
+ import type { CameraDevice } from '../types.js';
6
+ export declare class CameraDeviceProxy extends BaseCameraDevice implements CameraDevice {
5
7
  private socketService;
8
+ private socket;
9
+ private started;
6
10
  get sources(): CameraSource[];
7
11
  constructor(camera: Camera, socketService: SocketService, logger: BaseLogger);
12
+ start(): void;
13
+ stop(): void;
8
14
  connect(): Promise<void>;
9
15
  disconnect(): Promise<void>;
10
16
  reboot(): Promise<void>;
11
17
  getIceServers(): Promise<IceServer[]>;
18
+ snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
19
+ createSession(sourceName: string, videoElement: HTMLVideoElement): Promise<StreamingSession>;
12
20
  updateState<T extends keyof SetValues>(stateName: T, eventData: SetValues[T]): Promise<void>;
13
21
  refreshStates(): Promise<void>;
14
22
  cleanup(): Promise<void>;
@@ -1,12 +1,15 @@
1
- import { BrowserCameraDevice } from '../../../../../server/src/camera/base/cameraDeviceBrowser.js';
2
- import type { BaseLogger, DeviceManagerBrowserProxyMethods } from '../../../../../shared/types/index.js';
1
+ import type { BaseLogger } from '../../../../../shared/types/index.js';
3
2
  import type { SocketService } from '../socket.js';
3
+ import type { CameraDevice } from '../types.js';
4
+ interface DeviceManagerBrowserProxyMethods {
5
+ getCameraByName(name: string): Promise<CameraDevice | undefined>;
6
+ getCameraById(id: string): Promise<CameraDevice | undefined>;
7
+ }
4
8
  export declare class DeviceManager implements DeviceManagerBrowserProxyMethods {
5
9
  private socketService;
6
- private devices;
7
10
  private logger;
8
11
  constructor(socketService: SocketService, logger: BaseLogger);
9
- getCameraById(id: string): Promise<BrowserCameraDevice | undefined>;
10
- getCameraByName(name: string): Promise<BrowserCameraDevice | undefined>;
11
- private addOrGetCamera;
12
+ getCameraById(id: string): Promise<CameraDevice | undefined>;
13
+ getCameraByName(name: string): Promise<CameraDevice | undefined>;
12
14
  }
15
+ export {};
@@ -1,7 +1,10 @@
1
- import type { BaseLogger, PluginsManagerBrowserProxyMethods } from '../../../../../shared/types/index.js';
1
+ import type { BaseLogger } from '../../../../../shared/types/index.js';
2
2
  import type { SocketService } from '../socket.js';
3
+ interface PluginsManagerBrowserProxyMethods {
4
+ }
3
5
  export declare class PluginsManager implements PluginsManagerBrowserProxyMethods {
4
6
  private socketService;
5
7
  private logger;
6
8
  constructor(socketService: SocketService, logger: BaseLogger);
7
9
  }
10
+ export {};
@@ -1,7 +1,10 @@
1
- import type { BaseLogger, SystemManagerBrowserProxyMethods } from '../../../../../shared/types/index.js';
1
+ import type { BaseLogger } from '../../../../../shared/types/index.js';
2
2
  import type { SocketService } from '../socket.js';
3
+ interface SystemManagerBrowserProxyMethods {
4
+ }
3
5
  export declare class SystemManager implements SystemManagerBrowserProxyMethods {
4
6
  private socketService;
5
7
  private logger;
6
8
  constructor(socketService: SocketService, logger: BaseLogger);
7
9
  }
10
+ export {};
@@ -3,8 +3,13 @@ import type { ManagerNames, WebsocketClientRequest } from '../../../../shared/ty
3
3
  export declare class SocketService {
4
4
  manager: Manager;
5
5
  private token;
6
+ private endpoint;
6
7
  get socket(): Socket;
7
8
  constructor(endpoint: string, token: string);
8
- sendRequest<T extends ManagerNames>(data: WebsocketClientRequest<T>): Promise<any>;
9
+ createManager(): {
10
+ manager: Manager;
11
+ socket: Socket;
12
+ };
13
+ sendRequest<T extends ManagerNames>(data: WebsocketClientRequest<T>, socket?: Socket): Promise<any>;
9
14
  close(): void;
10
15
  }
@@ -1,9 +1,8 @@
1
1
  import { ReplaySubject, Subject } from 'rxjs';
2
- import { Subscribed } from '../../utils/subscribed.js';
3
- import type { IceServer } from '../../../services/config/types.js';
4
- import type { BrowserCameraDevice as CameraDevice } from '../../base/cameraDeviceBrowser.js';
5
- import type { BaseLogger, BasicBrowserPeerConnection } from '../../types.js';
6
- export declare class BrowserPeerConnection extends Subscribed implements BasicBrowserPeerConnection {
2
+ import { Subscribed } from '../../../../../shared/types/index.js';
3
+ import type { BaseLogger, IceServer } from '../../../../../shared/types/index.js';
4
+ import type { BasicBrowserPeerConnection, CameraDevice } from '../types.js';
5
+ export declare class BasicPeerConnection extends Subscribed implements BasicBrowserPeerConnection {
7
6
  onIceCandidate: Subject<RTCIceCandidate>;
8
7
  onConnectionState: ReplaySubject<RTCPeerConnectionState>;
9
8
  videoTransceiver: RTCRtpTransceiver;
@@ -1,9 +1,9 @@
1
1
  import { Observable, ReplaySubject } from 'rxjs';
2
- import { Subscribed } from '../../utils/subscribed.js';
3
- import type { BrowserCameraDevice as CameraDevice } from '../../base/cameraDeviceBrowser.js';
4
- import type { BaseLogger } from '../../types.js';
5
- import type { WebrtcBrowserConnection } from './webrtc-browser-connection.js';
6
- export declare class BrowserStreamingSession extends Subscribed {
2
+ import { Subscribed } from '../../../../../shared/types/index.js';
3
+ import type { BaseLogger } from '../../../../../shared/types/index.js';
4
+ import type { CameraDevice } from '../types.js';
5
+ import type { WebrtcConnection } from './webrtc-connection.js';
6
+ export declare class StreamingSession extends Subscribed {
7
7
  readonly onCallAnswered: ReplaySubject<void>;
8
8
  readonly onCallEnded: ReplaySubject<void>;
9
9
  private onUsingOpus;
@@ -14,7 +14,7 @@ export declare class BrowserStreamingSession extends Subscribed {
14
14
  private logger;
15
15
  onMicrophoneEnabled: Observable<boolean>;
16
16
  get isUsingOpus(): Promise<boolean>;
17
- constructor(cameraDevice: CameraDevice, logger: BaseLogger, connection: WebrtcBrowserConnection);
17
+ constructor(cameraDevice: CameraDevice, logger: BaseLogger, connection: WebrtcConnection);
18
18
  enableMicrophone(track: MediaStreamTrack): void;
19
19
  disableMicrophone(): void;
20
20
  stop(): void;
@@ -1,10 +1,9 @@
1
1
  import { ReplaySubject, type Observable } from 'rxjs';
2
- import { Subscribed } from '../../utils/subscribed.js';
3
- import { BrowserPeerConnection } from './browser-peer-connection.js';
4
- import type { IceServer } from '../../../services/config/types.js';
5
- import type { BrowserCameraDevice as CameraDevice } from '../../base/cameraDeviceBrowser.js';
6
- import type { BaseLogger } from '../../types.js';
7
- export declare class WebrtcBrowserConnection extends Subscribed {
2
+ import { Subscribed } from '../../../../../shared/types/index.js';
3
+ import { BasicPeerConnection } from './peer-connection.js';
4
+ import type { BaseLogger, IceServer } from '../../../../../shared/types/index.js';
5
+ import type { CameraDevice } from '../types.js';
6
+ export declare class WebrtcConnection extends Subscribed {
8
7
  readonly onCallAnswered: ReplaySubject<string>;
9
8
  readonly onCallEnded: ReplaySubject<void>;
10
9
  readonly onError: ReplaySubject<void>;
@@ -12,7 +11,7 @@ export declare class WebrtcBrowserConnection extends Subscribed {
12
11
  method: string;
13
12
  }>;
14
13
  readonly onWsOpen: Observable<unknown>;
15
- readonly pc: BrowserPeerConnection;
14
+ readonly pc: BasicPeerConnection;
16
15
  private readonly ws;
17
16
  private readonly onOfferSent;
18
17
  private hasEnded;
@@ -1,7 +1,31 @@
1
+ import type { Observable, Subject } from 'rxjs';
2
+ import type { BaseCameraDevice } from '../../../../server/src/devices/camera/index.js';
1
3
  import type { BaseLogger } from '../../../../shared/types/index.js';
2
- export type { AudioState, BaseLogger, BasicBrowserPeerConnection, BrowserCameraDevice, Camera, CameraConfig, CameraInput, DoorbellState, FfmpegOptions, Go2RtcAnswerMessage, Go2RtcIceCandidateMessage, Go2RtcIncomingMessage, Go2RtcOfferMessage, Go2RtcOutgoingMessage, LightState, MotionState, ObjectState, SirenState, } from '../../../../shared/types/index.js';
3
- export { BrowserStreamingSession } from '../../../../shared/types/index.js';
4
+ import type { StreamingSession } from './streaming/streaming-session.js';
5
+ export type { BasicPeerConnection } from './streaming/peer-connection.js';
6
+ export type { StreamingSession } from './streaming/streaming-session.js';
7
+ export type { WebrtcConnection } from './streaming/webrtc-connection.js';
8
+ export type { AudioState, BaseDetection, BaseLogger, Camera, CameraConfig, CameraInput, DoorbellState, FfmpegOptions, Go2RtcAnswerMessage, Go2RtcIceCandidateMessage, Go2RtcIncomingMessage, Go2RtcOfferMessage, Go2RtcOutgoingMessage, LightState, MotionDetection, MotionState, ObjectDetection, ObjectState, SirenState, } from '../../../../shared/types/index.js';
4
9
  export type CameraUiClientConfig = WithCredentials | WithToken;
10
+ export interface BasicBrowserPeerConnection {
11
+ enableMicrophone(track: MediaStreamTrack): void;
12
+ disableMicrophone(): void;
13
+ createOffer(): Promise<RTCSessionDescriptionInit>;
14
+ acceptAnswer(answer: {
15
+ type: 'answer';
16
+ sdp: string;
17
+ }): Promise<void>;
18
+ addIceCandidate(candidate: Partial<RTCIceCandidate>): Promise<void>;
19
+ onIceCandidate: Subject<RTCIceCandidate>;
20
+ onConnectionState: Observable<RTCPeerConnectionState>;
21
+ close(): void;
22
+ }
23
+ export interface CameraDevice extends BaseCameraDevice {
24
+ start(): void;
25
+ stop(): void;
26
+ snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
27
+ createSession(sourceName: string, videoElement: HTMLVideoElement): Promise<StreamingSession>;
28
+ }
5
29
  interface BaseConfig {
6
30
  endpoint: string;
7
31
  skipCheck?: boolean;
@@ -1,9 +1,9 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import 'reflect-metadata';
3
3
  import { EventEmitter } from 'node:events';
4
- import { CameraController } from './camera/controller.js';
4
+ import { CameraController } from './devices/camera/controller/index.js';
5
5
  import type { Camera, CameraExtensions } from './api/database/types.js';
6
- import type { StreamManager } from './decoder/worker/index.js';
6
+ import type { FrameWorker } from './decoder/worker/index.js';
7
7
  import type { BasePlugin } from './plugins/base.js';
8
8
  import type { API } from './plugins/node/api.js';
9
9
  import type { PluginLogger } from './plugins/node/logger.js';
@@ -27,15 +27,15 @@ export declare class CameraUiAPI extends EventEmitter {
27
27
  configureCameras(): Promise<void>;
28
28
  addCamera(camera: Camera): Promise<{
29
29
  controller: CameraController;
30
- manager: StreamManager;
30
+ worker: FrameWorker;
31
31
  }>;
32
32
  getCamera(cameraId: string): {
33
33
  controller: CameraController;
34
- manager: StreamManager;
34
+ worker: FrameWorker;
35
35
  } | undefined;
36
36
  getCameras(pluginId?: string): {
37
37
  controller: CameraController;
38
- manager: StreamManager;
38
+ worker: FrameWorker;
39
39
  }[];
40
40
  updateCamera(camera: Camera, extensions: CameraExtensions): void;
41
41
  removeCamera(camera: Camera, extensions: CameraExtensions): Promise<void>;
@@ -1,11 +1,10 @@
1
- import type { CameraController } from '../camera/controller.js';
2
- import type { StreamManager } from './worker/index.js';
1
+ import { FrameWorker } from './worker/index.js';
2
+ import type { CameraController } from '../devices/camera/controller/index.js';
3
3
  export declare class Decoder {
4
- streamManagers: Map<string, StreamManager<any>>;
4
+ frameWorkers: Map<string, FrameWorker>;
5
5
  private api;
6
6
  private proxyServer;
7
- private startAsWorker;
8
7
  constructor();
9
- addCamera(camera: CameraController): Promise<StreamManager>;
8
+ addCamera(camera: CameraController): Promise<FrameWorker>;
10
9
  removeCamera(camera: CameraController): Promise<void>;
11
10
  }
@@ -1,11 +1,14 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
3
  import type { ChildProcess } from 'node:child_process';
4
+ import type { ResizeOptions, RotateOptions, Sharp } from 'sharp';
4
5
  export interface FrameMetadata {
5
6
  format: string;
6
7
  frameSize: number;
7
8
  width: number;
9
+ origWidth: number;
8
10
  height: number;
11
+ origHeight: number;
9
12
  }
10
13
  export interface FrameSession {
11
14
  token: string;
@@ -15,6 +18,42 @@ export interface Frame {
15
18
  metadata: FrameMetadata;
16
19
  data: Buffer;
17
20
  }
21
+ export interface ImageCrop {
22
+ top: number;
23
+ left: number;
24
+ bottom: number;
25
+ right: number;
26
+ }
27
+ export interface ImageResize {
28
+ width?: number;
29
+ height?: number;
30
+ options?: ResizeOptions;
31
+ }
32
+ export interface ImageRotate {
33
+ angle: number;
34
+ options?: RotateOptions;
35
+ }
36
+ export interface ImageFormat {
37
+ format: 'rgba' | 'gray' | 'bgr';
38
+ }
39
+ export interface ImageOptions {
40
+ format?: ImageFormat;
41
+ crop?: ImageCrop;
42
+ resize?: ImageResize;
43
+ rotate?: ImageRotate;
44
+ }
45
+ export interface ProcessImageRequest {
46
+ options: ImageOptions;
47
+ data: Buffer;
48
+ }
49
+ export interface VideoFrame {
50
+ metadata: FrameMetadata;
51
+ inputWidth: number;
52
+ inputHeight: number;
53
+ inputFormat: string;
54
+ toBuffer: (options?: ImageOptions) => Promise<Buffer>;
55
+ toImage: (options?: ImageOptions) => Promise<Sharp>;
56
+ }
18
57
  export interface VideoSession {
19
58
  isActive(): boolean;
20
59
  kill: (reason?: string) => void;
@@ -1,3 +1,27 @@
1
- export { StreamManager } from './runtime/base/index.js';
2
- export { StreamProcess } from './runtime/child-process/index.js';
3
- export { StreamWorker } from './runtime/worker-thread/index.js';
1
+ import { Subscribed } from '../../utils/subscribed.js';
2
+ import type { CameraController } from '../../devices/camera/controller/index.js';
3
+ import type { FrameMetadata } from '../types.js';
4
+ export declare class FrameWorker extends Subscribed {
5
+ token: string;
6
+ private readonly logger;
7
+ private readonly configService;
8
+ private readonly camera;
9
+ private frameWorker?;
10
+ private stopped;
11
+ private auth;
12
+ constructor(camera: CameraController, auth: {
13
+ user: string;
14
+ pass: string;
15
+ });
16
+ listen(): Promise<void>;
17
+ close(): Promise<void>;
18
+ workerPID(): number;
19
+ getMetadata(): Promise<FrameMetadata>;
20
+ startVideoSession(): Promise<void>;
21
+ stopVideoSession(): Promise<void>;
22
+ private onMessage;
23
+ private sendMessage;
24
+ private sendReponse;
25
+ private send;
26
+ private getLogPrefix;
27
+ }
@@ -1,8 +1,8 @@
1
- import { StreamingSession } from '../streaming/streaming-session.js';
2
1
  import { BaseCameraDevice } from './index.js';
3
- import type { Frame } from '../../decoder/types.js';
4
- import type { StreamingConnectionOptions } from '../streaming/peer-connection.js';
5
- import type { CameraDelegate, CameraPrebufferDelegate, FfmpegOptions } from '../types.js';
2
+ import { StreamingSession } from './streaming/streaming-session.js';
3
+ import type { VideoFrame } from '../../decoder/types.js';
4
+ import type { CameraDelegate, CameraPrebufferDelegate, FfmpegOptions } from './controller/types.js';
5
+ import type { StreamingConnectionOptions } from './streaming/peer-connection.js';
6
6
  export declare abstract class CameraDevice extends BaseCameraDevice {
7
7
  private _delegate?;
8
8
  private _prebufferDelegate?;
@@ -10,7 +10,7 @@ export declare abstract class CameraDevice extends BaseCameraDevice {
10
10
  set delegate(delegate: CameraDelegate);
11
11
  get prebufferDelegate(): CameraPrebufferDelegate | undefined;
12
12
  set prebufferDelegate(delegate: CameraPrebufferDelegate);
13
- abstract generateFrames(): AsyncIterableIterator<Frame>;
13
+ abstract generateFrames(): AsyncIterableIterator<VideoFrame>;
14
14
  abstract getFfmpegPath(): Promise<string>;
15
15
  snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
16
16
  createSession(sourceName: string, options?: StreamingConnectionOptions): Promise<StreamingSession>;
@@ -1,8 +1,8 @@
1
- import { CameraDevice } from './base/cameraDevice.js';
2
- import type { Camera } from '../api/database/types.js';
3
- import type { Frame } from '../decoder/types.js';
4
- import type { ProxyServer } from '../nats/index.js';
5
- import type { IceServer } from '../services/config/types.js';
1
+ import { CameraDevice } from '../cameraDevice.js';
2
+ import type { Camera } from '../../../api/database/types.js';
3
+ import type { VideoFrame } from '../../../decoder/types.js';
4
+ import type { ProxyServer } from '../../../nats/index.js';
5
+ import type { IceServer } from '../../../services/config/types.js';
6
6
  import type { BaseLogger } from './types.js';
7
7
  export declare class CameraController extends CameraDevice {
8
8
  private proxy;
@@ -13,7 +13,7 @@ export declare class CameraController extends CameraDevice {
13
13
  connect(): Promise<void>;
14
14
  disconnect(): Promise<void>;
15
15
  reboot(): Promise<void>;
16
- generateFrames(): AsyncIterableIterator<Frame>;
16
+ generateFrames(): AsyncIterableIterator<VideoFrame>;
17
17
  getFfmpegPath(): Promise<string>;
18
18
  getIceServers(): Promise<IceServer[]>;
19
19
  updateCamera(updatedCamera: Camera): void;
@@ -1,6 +1,5 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import type { Observable, Subject } from 'rxjs';
3
- import type { CameraInformation, CameraInput, CameraInputSettings } from '../api/database/types.js';
2
+ import type { CameraInformation, CameraInput, CameraInputSettings } from '../../../api/database/types.js';
4
3
  export type SpawnInput = string | number;
5
4
  export type PrebufferType = 'recording' | 'stream';
6
5
  export interface CameraSource extends CameraInput {
@@ -21,19 +20,6 @@ export interface FfmpegOptions {
21
20
  audio?: SpawnInput[];
22
21
  output: SpawnInput[];
23
22
  }
24
- export interface BasicBrowserPeerConnection {
25
- enableMicrophone(track: MediaStreamTrack): void;
26
- disableMicrophone(): void;
27
- createOffer(): Promise<RTCSessionDescriptionInit>;
28
- acceptAnswer(answer: {
29
- type: 'answer';
30
- sdp: string;
31
- }): Promise<void>;
32
- addIceCandidate(candidate: Partial<RTCIceCandidate>): Promise<void>;
33
- onIceCandidate: Subject<RTCIceCandidate>;
34
- onConnectionState: Observable<RTCPeerConnectionState>;
35
- close(): void;
36
- }
37
23
  export interface CameraDelegate {
38
24
  snapshotRequest(requestId: string): Promise<Buffer>;
39
25
  prepareStream(requestId: string): Promise<void>;
@@ -102,14 +88,18 @@ export type CameraConfig = (BaseCameraConfig & {
102
88
  });
103
89
  export interface BaseDetection {
104
90
  id?: string;
105
- }
106
- export interface MotionDetection extends BaseDetection {
107
91
  label: string;
92
+ timestamp: number;
93
+ confidence: number;
108
94
  boundingBox: [number, number, number, number];
95
+ inputWidth: number;
96
+ inputHeight: number;
97
+ origWidth: number;
98
+ origHeight: number;
99
+ }
100
+ export interface MotionDetection extends BaseDetection {
109
101
  }
110
102
  export interface ObjectDetection extends BaseDetection {
111
- lebel: string;
112
- boundingBox: [number, number, number, number];
113
103
  }
114
104
  export interface BaseState<T extends LightState | AudioState | MotionState | ObjectState | SirenState | BatteryState | DoorbellState> {
115
105
  timestamp: number;
@@ -148,7 +138,8 @@ export type DoorbellState = BaseState<DoorbellState> & DoorbellSetEvent;
148
138
  export type SirenState = BaseState<SirenState> & SirenSetEvent;
149
139
  export type ObjectState = BaseState<ObjectState> & ObjectSetEvent;
150
140
  export type BatteryState = BaseState<BatteryState> & BatterySetEvent;
151
- export type State = LightState | MotionState | AudioState | ObjectState | DoorbellState | SirenState | BatteryState;
141
+ export type States = LightState | MotionState | AudioState | ObjectState | DoorbellState | SirenState | BatteryState;
142
+ export type Sets = LightSetEvent | MotionSetEvent | AudioSetEvent | ObjectSetEvent | DoorbellSetEvent | SirenSetEvent | BatterySetEvent;
152
143
  export interface StateValues {
153
144
  light: LightState;
154
145
  motion: MotionState;
@@ -2,7 +2,7 @@ import { LRUCache } from 'lru-cache';
2
2
  import { BehaviorSubject, Observable, Subscription } from 'rxjs';
3
3
  import type { Camera, CameraInformation, CameraPublicProperties, CameraType, CameraZone } from '../../api/database/types.js';
4
4
  import type { IceServer } from '../../services/config/types.js';
5
- import type { AudioSetEvent, AudioState, BaseLogger, BatterySetEvent, BatteryState, CameraSource, DoorbellSetEvent, DoorbellState, LightSetEvent, LightState, MotionSetEvent, MotionState, ObjectSetEvent, ObjectState, SetValues, SirenSetEvent, SirenState, State, StateValues } from '../types.js';
5
+ import type { AudioSetEvent, AudioState, BaseLogger, BatterySetEvent, BatteryState, CameraSource, DoorbellSetEvent, DoorbellState, LightSetEvent, LightState, MotionSetEvent, MotionState, ObjectSetEvent, ObjectState, SetValues, Sets, SirenSetEvent, SirenState, StateValues, States } from './controller/types.js';
6
6
  declare class Subscribed {
7
7
  private readonly subscriptions;
8
8
  private readonly additionalSubscriptions;
@@ -75,22 +75,23 @@ export declare abstract class BaseCameraDevice extends Subscribed {
75
75
  newData: Camera[T];
76
76
  }>;
77
77
  removeAllListeners(): void;
78
- protected getAudioState(event: AudioSetEvent): AudioState | undefined;
79
- protected getMotionState(event: MotionSetEvent): MotionState | undefined;
80
- protected getObjectState(event: ObjectSetEvent): ObjectState | undefined;
81
- protected getDoorbellState(event: DoorbellSetEvent): DoorbellState | undefined;
82
- protected getLightState(event: LightSetEvent): LightState | undefined;
83
- protected getSirenState(event: SirenSetEvent): SirenState | undefined;
84
- protected getBatteryState(event: BatterySetEvent): BatteryState | undefined;
78
+ protected getAudioState(event: AudioSetEvent): AudioState;
79
+ protected getMotionState(event: MotionSetEvent): MotionState;
80
+ protected getObjectState(event: ObjectSetEvent): ObjectState;
81
+ protected getDoorbellState(event: DoorbellSetEvent): DoorbellState;
82
+ protected getLightState(event: LightSetEvent | LightState): LightState;
83
+ protected getSirenState(event: SirenSetEvent): SirenState;
84
+ protected getBatteryState(event: BatterySetEvent): BatteryState;
85
85
  private createStateObservable;
86
86
  protected updateCamera(updatedCamera: Camera): void;
87
87
  protected updateCameraState(state: boolean): void;
88
- protected stateChanged<T extends keyof StateValues>(oldState?: StateValues[T], newState?: StateValues[T]): boolean;
89
- protected isAudioState(state: State): state is AudioState;
90
- protected isMotionState(state: State): state is MotionState;
91
- protected isObjectState(state: State): state is ObjectState;
92
- protected isSirenState(state: State): state is SirenState;
93
- protected isBatteryState(state: State): state is BatteryState;
94
- protected isGenericState(state: State): state is DoorbellState;
88
+ protected stateChanged<T extends keyof SetValues>(oldState?: SetValues[T], newState?: SetValues[T]): boolean;
89
+ protected isAudioState(state: Sets): state is AudioSetEvent;
90
+ protected isMotionState(state: Sets): state is MotionSetEvent;
91
+ protected isObjectState(state: Sets): state is ObjectSetEvent;
92
+ protected isSirenState(state: Sets): state is SirenSetEvent;
93
+ protected isBatteryState(state: Sets): state is BatterySetEvent;
94
+ protected isGenericState(state: Sets): state is DoorbellSetEvent;
95
+ protected isStateEvent(state: States | Sets): state is States;
95
96
  }
96
97
  export {};
@@ -1,10 +1,10 @@
1
1
  import { Observable, ReplaySubject, Subject } from 'rxjs';
2
2
  import { MediaStreamTrack, RTCSessionDescription, RTCIceCandidate as WeriftRTCICECandidate } from 'werift';
3
- import { Subscribed } from '../utils/subscribed.js';
3
+ import { Subscribed } from '../../../utils/subscribed.js';
4
4
  import type { ConnectionState, RTCIceCandidate, RtcpPacket, RtpPacket } from 'werift';
5
- import type { IceServer } from '../../services/config/types.js';
6
- import type { CameraDevice } from '../base/cameraDevice.js';
7
- import type { BaseLogger } from '../types.js';
5
+ import type { IceServer } from '../../../services/config/types.js';
6
+ import type { CameraDevice } from '../cameraDevice.js';
7
+ import type { BaseLogger } from '../controller/types.js';
8
8
  export interface BasicPeerConnection {
9
9
  createOffer(): Promise<RTCSessionDescription>;
10
10
  acceptAnswer(answer: {
@@ -26,7 +26,7 @@ export declare class WeriftPeerConnection extends Subscribed implements BasicPee
26
26
  onVideoRtp: Subject<RtpPacket>;
27
27
  onVideoRtcp: Subject<RtcpPacket>;
28
28
  onIceCandidate: Subject<WeriftRTCICECandidate>;
29
- onConnectionState: ReplaySubject<"closed" | "connected" | "connecting" | "disconnected" | "failed" | "new">;
29
+ onConnectionState: ReplaySubject<"closed" | "failed" | "disconnected" | "new" | "connecting" | "connected">;
30
30
  returnAudioTrack: MediaStreamTrack;
31
31
  private onRequestKeyFrame;
32
32
  private cameraDevice;
@@ -1,8 +1,8 @@
1
1
  import { ReplaySubject, Subject } from 'rxjs';
2
2
  import { RtpPacket } from 'werift';
3
- import { Subscribed } from '../utils/subscribed.js';
4
- import type { CameraDevice } from '../base/cameraDevice.js';
5
- import type { BaseLogger, FfmpegOptions, SpawnInput } from '../types.js';
3
+ import { Subscribed } from '../../../utils/subscribed.js';
4
+ import type { CameraDevice } from '../cameraDevice.js';
5
+ import type { BaseLogger, FfmpegOptions, SpawnInput } from '../controller/types.js';
6
6
  import type { WebrtcConnection } from './webrtc-connection.js';
7
7
  export declare class StreamingSession extends Subscribed {
8
8
  readonly onCallEnded: ReplaySubject<void>;
@@ -1,9 +1,9 @@
1
1
  import { ReplaySubject, Subject, type Observable } from 'rxjs';
2
- import { Subscribed } from '../utils/subscribed.js';
2
+ import { Subscribed } from '../../../utils/subscribed.js';
3
3
  import type { RtpPacket } from 'werift';
4
- import type { IceServer } from '../../services/config/types.js';
5
- import type { CameraDevice } from '../base/cameraDevice.js';
6
- import type { BaseLogger } from '../types.js';
4
+ import type { IceServer } from '../../../services/config/types.js';
5
+ import type { CameraDevice } from '../cameraDevice.js';
6
+ import type { BaseLogger } from '../controller/types.js';
7
7
  import type { StreamingConnectionOptions } from './peer-connection.js';
8
8
  export declare class WebrtcConnection extends Subscribed {
9
9
  readonly onCameraConnected: ReplaySubject<void>;
@@ -2,7 +2,7 @@ import { type NatsConnection, type Subscription } from 'nats';
2
2
  import { CameraDeviceProxy } from './proxy/cameraDevice.js';
3
3
  import { DeviceManagerProxy, PluginsManagerProxy, SystemManagerProxy } from './proxy/index.js';
4
4
  import { NatsServer } from './server.js';
5
- import type { StateValues } from '../camera/types.js';
5
+ import type { StateValues } from '../devices/camera/controller/types.js';
6
6
  import type { CameraDeviceListenerMessagePayload, DeviceManagerProxyEvents, PluginsManagerProxyEvents, ProxyAuth, SystemManagerProxyEvents } from './types.js';
7
7
  import type { WebsocketProxy } from './websocket.js';
8
8
  export declare class ProxyServer {
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import type { Camera } from '../../api/database/types.js';
3
- import type { CameraDelegate, CameraPrebufferDelegate, FfmpegOptions, PrebufferType, SetValues, StateValues, StreamInfo } from '../../camera/types.js';
4
3
  import type { FrameMetadata, FrameSession } from '../../decoder/types.js';
4
+ import type { CameraDelegate, CameraPrebufferDelegate, FfmpegOptions, PrebufferType, SetValues, StateValues, StreamInfo } from '../../devices/camera/controller/types.js';
5
5
  import type { IceServer } from '../../services/config/types.js';
6
6
  import type { MessageQueue } from '../queue.js';
7
7
  import type { CameraDeviceProxyMethods, ProxyMessageStructure } from '../types.js';
@@ -1,5 +1,5 @@
1
1
  import type { Camera } from '../../api/database/types.js';
2
- import type { CameraConfig } from '../../camera/types.js';
2
+ import type { CameraConfig } from '../../devices/camera/controller/types.js';
3
3
  import type { MessageQueue } from '../queue.js';
4
4
  import type { DeviceManagerServerProxyMethods, ProxyMessageStructure } from '../types.js';
5
5
  export declare class DeviceManagerProxy implements DeviceManagerServerProxyMethods {