@camera.ui/browser 0.0.64 → 0.0.65

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.
@@ -1,12 +1,11 @@
1
1
  import { BrowserCameraDeviceBase } from '../../../../../shared/types';
2
- import type { BaseLogger, Camera, CameraSource, Frame, IceServer, OnSetEvent, StateValues } from '../../../../../shared/types';
2
+ import type { BaseLogger, Camera, CameraSource, IceServer, OnSetEvent, StateValues } from '../../../../../shared/types';
3
3
  export declare class CameraDeviceClient extends BrowserCameraDeviceBase {
4
4
  private initialized;
5
5
  private publisher;
6
6
  private client;
7
7
  private cameraSubscriber;
8
8
  private cameraPluginSubscriber;
9
- private frameSubscriber;
10
9
  private messageQueue;
11
10
  private options;
12
11
  private pluginID;
@@ -14,7 +13,6 @@ export declare class CameraDeviceClient extends BrowserCameraDeviceBase {
14
13
  private clientSubject;
15
14
  private cameraSubscriberSubject;
16
15
  private cameraPluginSubscriberSubject;
17
- private frameSubject;
18
16
  get sources(): CameraSource[];
19
17
  constructor(camera: Camera, logger: BaseLogger, options: {
20
18
  servers: string;
@@ -25,14 +23,12 @@ export declare class CameraDeviceClient extends BrowserCameraDeviceBase {
25
23
  connect(): Promise<void>;
26
24
  disconnect(): Promise<void>;
27
25
  reboot(): Promise<void>;
28
- generateFrames(): AsyncIterableIterator<Frame>;
29
- getFfmpegPath(): Promise<string>;
30
26
  getIceServers(): Promise<IceServer[]>;
31
27
  snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
32
28
  updateState<T extends keyof StateValues>(stateName: T, eventData: OnSetEvent<T>): Promise<void>;
33
29
  refreshStates(): Promise<void>;
34
30
  cleanup(): Promise<void>;
35
- private handleRouterRequest;
31
+ private requestHandler;
36
32
  private listenToMessages;
37
33
  private onRequest;
38
34
  }
@@ -1,15 +1,15 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
3
  import { BrowserCameraDeviceBase as CameraDevice } from '../../../../../server/src/camera/base/base.browser';
4
- import type { BaseLogger, CameraConfig, DeviceManagerProxyEventCallbacks, DeviceManagerProxyMethods } from '../../../../../shared/types';
5
- export declare interface DeviceManager extends DeviceManagerProxyMethods {
4
+ import type { BaseLogger, DeviceManagerBrowserProxyMethods, DeviceManagerProxyEventCallbacks } from '../../../../../shared/types';
5
+ export declare interface DeviceManager extends DeviceManagerBrowserProxyMethods {
6
6
  on<E extends keyof DeviceManagerProxyEventCallbacks>(event: E, listener: DeviceManagerProxyEventCallbacks[E]): this;
7
7
  once<E extends keyof DeviceManagerProxyEventCallbacks>(event: E, listener: DeviceManagerProxyEventCallbacks[E]): this;
8
8
  off<E extends keyof DeviceManagerProxyEventCallbacks>(event: E, listener: DeviceManagerProxyEventCallbacks[E]): this;
9
9
  removeListener<E extends keyof DeviceManagerProxyEventCallbacks>(event: E, listener: DeviceManagerProxyEventCallbacks[E]): this;
10
10
  removeAllListeners<E extends keyof DeviceManagerProxyEventCallbacks>(event?: E): this;
11
11
  }
12
- export declare class DeviceManager extends EventEmitter implements DeviceManagerProxyMethods {
12
+ export declare class DeviceManager extends EventEmitter implements DeviceManagerBrowserProxyMethods {
13
13
  private logger;
14
14
  private initialized;
15
15
  private publisher;
@@ -30,7 +30,6 @@ export declare class DeviceManager extends EventEmitter implements DeviceManager
30
30
  init(): Promise<void>;
31
31
  getCameraById(id: string): Promise<CameraDevice | undefined>;
32
32
  getCameraByName(name: string): Promise<CameraDevice | undefined>;
33
- createCamera(cameraConfig: CameraConfig): Promise<CameraDevice>;
34
33
  removeCameraByName(name: string): Promise<void>;
35
34
  removeCameraById(id: string): Promise<void>;
36
35
  emit(): boolean;
@@ -1,14 +1,14 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
- import type { BaseLogger, PluginsManagerProxyEventCallbacks, PluginsManagerProxyMethods } from '../../../../../shared/types';
4
- export declare interface PluginsManager extends PluginsManagerProxyMethods {
3
+ import type { BaseLogger, PluginsManagerBrowserProxyMethods, PluginsManagerProxyEventCallbacks } from '../../../../../shared/types';
4
+ export declare interface PluginsManager extends PluginsManagerBrowserProxyMethods {
5
5
  on<E extends keyof PluginsManagerProxyEventCallbacks>(event: E, listener: PluginsManagerProxyEventCallbacks[E]): this;
6
6
  once<E extends keyof PluginsManagerProxyEventCallbacks>(event: E, listener: PluginsManagerProxyEventCallbacks[E]): this;
7
7
  off<E extends keyof PluginsManagerProxyEventCallbacks>(event: E, listener: PluginsManagerProxyEventCallbacks[E]): this;
8
8
  removeListener<E extends keyof PluginsManagerProxyEventCallbacks>(event: E, listener: PluginsManagerProxyEventCallbacks[E]): this;
9
9
  removeAllListeners<E extends keyof PluginsManagerProxyEventCallbacks>(event?: E): this;
10
10
  }
11
- export declare class PluginsManager extends EventEmitter implements PluginsManagerProxyMethods {
11
+ export declare class PluginsManager extends EventEmitter implements PluginsManagerBrowserProxyMethods {
12
12
  private logger;
13
13
  private initialized;
14
14
  private publisher;
@@ -1,14 +1,14 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
- import type { BaseLogger, SystemManagerProxyEventCallbacks, SystemManagerProxyMethods } from '../../../../../shared/types';
4
- export declare interface SystemManager extends SystemManagerProxyMethods {
3
+ import type { BaseLogger, SystemManagerBrowserProxyMethods, SystemManagerProxyEventCallbacks } from '../../../../../shared/types';
4
+ export declare interface SystemManager extends SystemManagerBrowserProxyMethods {
5
5
  on<E extends keyof SystemManagerProxyEventCallbacks>(event: E, listener: SystemManagerProxyEventCallbacks[E]): this;
6
6
  once<E extends keyof SystemManagerProxyEventCallbacks>(event: E, listener: SystemManagerProxyEventCallbacks[E]): this;
7
7
  off<E extends keyof SystemManagerProxyEventCallbacks>(event: E, listener: SystemManagerProxyEventCallbacks[E]): this;
8
8
  removeListener<E extends keyof SystemManagerProxyEventCallbacks>(event: E, listener: SystemManagerProxyEventCallbacks[E]): this;
9
9
  removeAllListeners<E extends keyof SystemManagerProxyEventCallbacks>(event?: E): this;
10
10
  }
11
- export declare class SystemManager extends EventEmitter implements SystemManagerProxyMethods {
11
+ export declare class SystemManager extends EventEmitter implements SystemManagerBrowserProxyMethods {
12
12
  private logger;
13
13
  private initialized;
14
14
  private publisher;
@@ -95,6 +95,8 @@ export interface Camera extends BaseCamera {
95
95
  hasMotionDetector: boolean;
96
96
  hasObjectDetector: boolean;
97
97
  hasPtz: boolean;
98
+ hasPrebuffer: boolean;
99
+ hasIntercom: boolean;
98
100
  sources: CameraInput[];
99
101
  }
100
102
  export interface CameraZone {
@@ -2,7 +2,7 @@ import { PLUGIN_STATUS } from '../../plugins/types';
2
2
  import type { Namespace } from 'socket.io';
3
3
  import type { WebSocket } from 'ws';
4
4
  import type { VideoStreamingMode } from '../database/types';
5
- export type SocketNsp = '/camera.ui' | '/metrics' | '/logs' | '/status' | '/notifications' | '/streams' | '/plugins' | '/proxy';
5
+ export type SocketNsp = '/camera.ui' | '/metrics' | '/logs' | '/status' | '/notifications' | '/streams' | '/plugins';
6
6
  export interface SocketNspMap {
7
7
  nsp: Namespace;
8
8
  [key: string]: any;
@@ -1,9 +1,8 @@
1
1
  import { BehaviorSubject, Observable } from 'rxjs';
2
2
  import { Subscribed } from '../utils/subscribed';
3
3
  import type { Camera, CameraInformation, CameraPublicProperties, CameraType, CameraZone } from '../../api/database/types';
4
- import type { Frame } from '../../detector/types';
5
4
  import type { IceServer } from '../../services/config/types';
6
- import type { AudioState, BaseLogger, BatteryState, CameraDelegate, CameraPrebufferDelegate, CameraSource, DoorbellState, LightState, MotionState, ObjectState, OnSetEvent, SirenState, StateValues } from '../types';
5
+ import type { AudioState, BaseLogger, BatteryState, CameraSource, DoorbellState, LightState, MotionState, ObjectState, OnSetEvent, SirenState, StateValues } from '../types';
7
6
  export declare abstract class CameraDeviceBase extends Subscribed {
8
7
  protected logger: BaseLogger;
9
8
  protected cameraSubject: BehaviorSubject<Camera>;
@@ -23,8 +22,6 @@ export declare abstract class CameraDeviceBase extends Subscribed {
23
22
  onDoorbellPressed: Observable<DoorbellState>;
24
23
  onSirenDetected: Observable<SirenState>;
25
24
  onBatteryChanged: Observable<BatteryState>;
26
- private _delegate?;
27
- private _prebufferDelegate?;
28
25
  get id(): string;
29
26
  get nativeId(): string | undefined;
30
27
  get pluginId(): string;
@@ -42,6 +39,8 @@ export declare abstract class CameraDeviceBase extends Subscribed {
42
39
  get hasAudioDetector(): boolean;
43
40
  get hasObjectDetector(): boolean;
44
41
  get hasPtz(): boolean;
42
+ get hasPrebuffer(): boolean;
43
+ get hasIntercom(): boolean;
45
44
  get motionZones(): CameraZone[];
46
45
  get objectZones(): CameraZone[];
47
46
  get sources(): CameraSource[];
@@ -49,17 +48,11 @@ export declare abstract class CameraDeviceBase extends Subscribed {
49
48
  get snapshotSource(): CameraSource;
50
49
  get recordingSource(): CameraSource;
51
50
  get detectionSource(): CameraSource;
52
- get delegate(): CameraDelegate | undefined;
53
- set delegate(delegate: CameraDelegate);
54
- get prebufferDelegate(): CameraPrebufferDelegate | undefined;
55
- set prebufferDelegate(delegate: CameraPrebufferDelegate);
56
51
  constructor(camera: Camera, logger: BaseLogger);
57
52
  abstract connect(): Promise<void>;
58
53
  abstract disconnect(): Promise<void>;
59
54
  abstract reboot(): Promise<void>;
60
55
  abstract snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
61
- abstract generateFrames(): AsyncIterableIterator<Frame>;
62
- abstract getFfmpegPath(): Promise<string>;
63
56
  abstract getIceServers(): Promise<IceServer[]>;
64
57
  protected abstract cleanup(): void;
65
58
  getValue<T extends keyof StateValues>(stateName: T): StateValues[T];
@@ -1,8 +1,17 @@
1
1
  import { StreamingConnectionOptions } from '../streaming/peer-connection';
2
2
  import { StreamingSession } from '../streaming/streaming-session';
3
3
  import { CameraDeviceBase } from './base';
4
- import type { FfmpegOptions } from '../types';
4
+ import type { Frame } from '../../decoder/types';
5
+ import type { CameraDelegate, CameraPrebufferDelegate, FfmpegOptions } from '../types';
5
6
  export declare abstract class ServerCameraDeviceBase extends CameraDeviceBase {
7
+ private _delegate?;
8
+ private _prebufferDelegate?;
9
+ get delegate(): CameraDelegate | undefined;
10
+ set delegate(delegate: CameraDelegate);
11
+ get prebufferDelegate(): CameraPrebufferDelegate | undefined;
12
+ set prebufferDelegate(delegate: CameraPrebufferDelegate);
13
+ abstract generateFrames(): AsyncIterableIterator<Frame>;
14
+ abstract getFfmpegPath(): Promise<string>;
6
15
  createSession(sourceName: string, options?: StreamingConnectionOptions): Promise<StreamingSession>;
7
16
  streamVideo(sourceName: string, options: FfmpegOptions): Promise<StreamingSession>;
8
17
  recordToFile(sourceName: string, outputPath: string, duration?: number): Promise<void>;
@@ -1,8 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- /// <reference types="node" />
4
3
  import type { ChildProcess } from 'child_process';
5
- import type { Server } from 'net';
6
4
  export interface FrameMetadata {
7
5
  format: string;
8
6
  frameSize: number;
@@ -16,7 +14,6 @@ export interface Frame {
16
14
  export interface VideoSession {
17
15
  isActive(): boolean;
18
16
  kill: (reason?: string) => void;
19
- server: Server;
20
17
  cp: ChildProcess;
21
18
  }
22
19
  export interface BaseFrameWorkerConfig {
@@ -27,7 +24,7 @@ export interface BaseFrameWorkerConfig {
27
24
  disableTimestamps?: boolean;
28
25
  auth: {
29
26
  user: string;
30
- password: string;
27
+ pass: string;
31
28
  };
32
29
  }
33
30
  export type WorkerMessage = 'ready' | 'getCameraSource';
@@ -1,9 +1,10 @@
1
+ import type { Msg } from 'nats';
1
2
  import type { BaseLogger } from '../../../camera/types';
2
3
  import type { ProxyMessageStructure } from '../../../proxy/types';
3
4
  interface NatsConnection {
4
5
  publish(subject: string, data: Uint8Array): void;
5
6
  }
6
- interface Subscription extends AsyncIterable<any> {
7
+ interface Subscription extends AsyncIterable<Msg> {
7
8
  }
8
9
  interface JSONCodec<T> {
9
10
  encode(d: T): Uint8Array;
@@ -1,7 +1,7 @@
1
1
  import type { Camera } from '../api/database/types';
2
2
  import type { BrowserCameraDeviceBase, CameraDevice, ServerCameraDeviceBase } from '../camera/base';
3
3
  import type { CameraConfig, FfmpegOptions, OnSetEvent, PrebufferType, StateValues, StreamInfo } from '../camera/types';
4
- import type { FrameMetadata } from '../detector/types';
4
+ import type { FrameMetadata } from '../decoder/types';
5
5
  import type { CameraExtension } from '../plugins/types';
6
6
  import type { IceServer } from '../services/config/types';
7
7
  export type MethodKeys<T> = {
@@ -73,13 +73,15 @@ export interface DeviceManagerListenerMessagePayload {
73
73
  type: keyof DeviceManagerProxyEventCallbacks;
74
74
  data: any;
75
75
  }
76
- export interface DeviceManagerProxyMethods {
77
- createCamera(camera: CameraConfig): Promise<CameraDevice>;
76
+ export interface DeviceManagerBrowserProxyMethods {
78
77
  getCameraByName(name: string): Promise<CameraDevice | undefined>;
79
78
  getCameraById(id: string): Promise<CameraDevice | undefined>;
80
79
  removeCameraByName(name: string): Promise<void>;
81
80
  removeCameraById(id: string): Promise<void>;
82
81
  }
82
+ export interface DeviceManagerProxyMethods extends DeviceManagerBrowserProxyMethods {
83
+ createCamera(camera: CameraConfig): Promise<CameraDevice>;
84
+ }
83
85
  export type DeviceManagerProxyMethodNames = MethodKeys<DeviceManagerProxyMethods>;
84
86
  export interface DeviceManagerProxyEvents {
85
87
  cameraSelected: {
@@ -107,7 +109,9 @@ export interface SystemManagerListenerMessagePayload {
107
109
  type: keyof SystemManagerProxyEventCallbacks;
108
110
  data: any;
109
111
  }
110
- export interface SystemManagerProxyMethods {
112
+ export interface SystemManagerBrowserProxyMethods {
113
+ }
114
+ export interface SystemManagerProxyMethods extends SystemManagerBrowserProxyMethods {
111
115
  }
112
116
  export interface SystemManagerProxyMethodsListener {
113
117
  listen<E extends keyof SystemManagerProxyEventCallbacks>(eventType: E, callback: SystemManagerProxyEventCallbacks[E]): void;
@@ -126,7 +130,9 @@ export interface PluginsManagerListenerMessagePayload {
126
130
  type: keyof PluginsManagerProxyEventCallbacks;
127
131
  data: any;
128
132
  }
129
- export interface PluginsManagerProxyMethods {
133
+ export interface PluginsManagerBrowserProxyMethods {
134
+ }
135
+ export interface PluginsManagerProxyMethods extends PluginsManagerBrowserProxyMethods {
130
136
  }
131
137
  export interface PluginsManagerProxyMethodsListener {
132
138
  listen<E extends keyof PluginsManagerProxyEventCallbacks>(eventType: E, callback: PluginsManagerProxyEventCallbacks[E]): void;
@@ -141,7 +147,6 @@ export interface PluginsManagerProxyGenericEvent<K extends keyof PluginsManagerP
141
147
  type: K;
142
148
  data: PluginsManagerProxyEvents[K];
143
149
  }
144
- export type CameraDeviceListenerSocketEventType = 'updateDevice' | 'updateState';
145
150
  export interface CameraDeviceListenerStatePayload<K extends keyof StateValues> {
146
151
  stateName: K;
147
152
  data: {
@@ -156,86 +161,72 @@ export interface CameraDeviceListenerMessagePayload {
156
161
  export interface CameraDeviceProxyMethods {
157
162
  connect(data: {
158
163
  cameraId: string;
159
- pluginId?: string;
160
- ws?: boolean;
164
+ pluginId: string;
161
165
  }): Promise<void>;
162
166
  disconnect(data: {
163
167
  cameraId: string;
164
- pluginId?: string;
165
- ws?: boolean;
168
+ pluginId: string;
166
169
  }): Promise<void>;
167
170
  reboot(data: {
168
171
  cameraId: string;
169
- pluginId?: string;
170
- ws?: boolean;
172
+ pluginId: string;
171
173
  }): Promise<void>;
172
174
  isPrebuffering(data: {
173
175
  sourceName: string;
174
176
  type: PrebufferType;
175
177
  cameraId: string;
176
- pluginId?: string;
177
- ws?: boolean;
178
+ pluginId: string;
178
179
  }): Promise<boolean>;
179
180
  getPrebufferRawUrl(data: {
180
181
  sourceName: string;
181
182
  type: PrebufferType;
182
183
  cameraId: string;
183
- pluginId?: string;
184
- ws?: boolean;
184
+ pluginId: string;
185
185
  }): Promise<string | undefined>;
186
186
  getStreamInfo(data: {
187
187
  sourceName: string;
188
188
  cameraId: string;
189
- pluginId?: string;
190
- ws?: boolean;
189
+ pluginId: string;
191
190
  }): Promise<StreamInfo | undefined>;
192
191
  getFrameMetadata(data: {
193
192
  cameraId: string;
194
- pluginId?: string;
195
- ws?: boolean;
196
- }): Promise<FrameMetadata | undefined>;
193
+ pluginId: string;
194
+ }): Promise<FrameMetadata>;
197
195
  getFffmpegPath(data: {
198
196
  cameraId: string;
199
- pluginId?: string;
200
- ws?: boolean;
197
+ pluginId: string;
201
198
  }): string;
202
199
  getIceServers(data: {
203
200
  cameraId: string;
204
- pluginId?: string;
205
- ws?: boolean;
201
+ pluginId: string;
206
202
  }): IceServer[];
207
203
  snapshot(data: {
208
204
  forceNew?: boolean;
209
205
  cameraId: string;
210
- pluginId?: string;
211
- ws?: boolean;
206
+ pluginId: string;
212
207
  }): Promise<ArrayBuffer>;
213
208
  streamVideo(data: {
214
209
  sourceName: string;
215
210
  options: FfmpegOptions;
216
211
  cameraId: string;
217
- pluginId?: string;
218
- ws?: boolean;
212
+ pluginId: string;
219
213
  }): Promise<void>;
220
214
  recordToFile(data: {
221
215
  sourceName: string;
222
216
  outputPath: string;
223
217
  duration?: number;
224
218
  cameraId: string;
225
- pluginId?: string;
226
- ws?: boolean;
219
+ pluginId: string;
227
220
  }): Promise<void>;
228
221
  updateState<T extends keyof StateValues>(data: {
229
222
  stateName: T;
230
223
  eventData: OnSetEvent<T>;
231
224
  cameraId: string;
232
- pluginId?: string;
233
- ws?: boolean;
225
+ pluginId: string;
234
226
  }): void;
235
227
  refreshStates(data: {
236
228
  cameraId: string;
237
- pluginId?: string;
238
- ws?: boolean;
229
+ pluginId: string;
239
230
  }): Promise<{
240
231
  camera: Camera;
241
232
  states: StateValues;
@@ -5,7 +5,7 @@ export * from '../../server/src/camera/base/base.browser';
5
5
  export * from '../../server/src/camera/streaming/browser/browser-streaming-session';
6
6
  export * from '../../server/src/camera/streaming/browser/webrtc-browser-connection';
7
7
  export type * from '../../server/src/camera/types';
8
- export type * from '../../server/src/detector/types';
8
+ export type * from '../../server/src/decoder/types';
9
9
  export * from '../../server/src/go2rtc/types';
10
10
  export * from '../../server/src/plugins/types';
11
11
  export type * from '../../server/src/proxy/types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camera.ui/browser",
3
- "version": "0.0.64",
3
+ "version": "0.0.65",
4
4
  "description": "camera.ui browser client",
5
5
  "author": "seydx (https://github.com/seydx/camera.ui)",
6
6
  "module": "./dist/bundle.js",
@@ -26,7 +26,7 @@
26
26
  "axios": "^1.6.8",
27
27
  "lodash.clonedeep": "^4.5.0",
28
28
  "lodash.isequal": "^4.5.0",
29
- "nats.ws": "^1.25.0",
29
+ "nats.ws": "^1.26.0",
30
30
  "rxjs": "^7.8.1",
31
31
  "util": "^0.12.5"
32
32
  },
@@ -41,11 +41,11 @@
41
41
  "eslint-config-prettier": "^9.1.0",
42
42
  "eslint-plugin-prettier": "^5.1.3",
43
43
  "prettier": "^3.2.5",
44
- "rimraf": "^5.0.5",
44
+ "rimraf": "^5.0.6",
45
45
  "ts-loader": "^9.5.1",
46
46
  "typescript": "^5.4.5",
47
47
  "updates": "^16.0.1",
48
- "utf-8-validate": "^6.0.3",
48
+ "utf-8-validate": "^6.0.4",
49
49
  "webpack": "^5.91.0",
50
50
  "webpack-cli": "^5.1.4"
51
51
  },