@camera.ui/browser 0.0.56 → 0.0.58

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,13 +1,12 @@
1
- import { DeviceManagerClient, PluginsManagerClient, SystemManagerClient } from './proxy';
1
+ import { DeviceManager, PluginsManager, SystemManager } from './proxy';
2
2
  import type { CameraUiClientConfig } from './types';
3
3
  export interface API {
4
- deviceManager: DeviceManagerClient;
5
- pluginsManager: PluginsManagerClient;
6
- systemManager: SystemManagerClient;
4
+ deviceManager: DeviceManager;
5
+ pluginsManager: PluginsManager;
6
+ systemManager: SystemManager;
7
7
  }
8
8
  export declare class CameraUiClient {
9
9
  private api;
10
- private socketService?;
11
10
  private config;
12
11
  private logger;
13
12
  private token?;
@@ -18,9 +17,10 @@ export declare class CameraUiClient {
18
17
  connect(): Promise<API>;
19
18
  disconnect(): Promise<void>;
20
19
  updateCredentials(newConfig: CameraUiClientConfig): Promise<void>;
21
- getDeviceManager(): DeviceManagerClient | undefined;
22
- getPluginsManager(): PluginsManagerClient | undefined;
23
- getSystemManager(): SystemManagerClient | undefined;
24
- private checkSession;
20
+ getDeviceManager(): DeviceManager | undefined;
21
+ getPluginsManager(): PluginsManager | undefined;
22
+ getSystemManager(): SystemManager | undefined;
23
+ private login;
24
+ private proxyCredentials;
25
25
  private cleanUpClient;
26
26
  }
@@ -1,21 +1,37 @@
1
- import { BrowserCameraDeviceBase, BrowserStreamingSession } from '../../../../../shared/types';
1
+ import { BrowserCameraDeviceBase } from '../../../../../shared/types';
2
2
  import type { BaseLogger, Camera, CameraSource, Frame, IceServer, OnSetEvent, StateValues } from '../../../../../shared/types';
3
- import type { SocketService } from '../../../node/src/socket';
4
3
  export declare class CameraDeviceClient extends BrowserCameraDeviceBase {
5
- private socketService;
4
+ private initialized;
5
+ private publisher;
6
+ private client;
7
+ private cameraSubscriber;
8
+ private cameraPluginSubscriber;
9
+ private frameSubscriber;
10
+ private messageQueue;
11
+ private auth;
12
+ private pluginID;
13
+ private pluginName;
14
+ private clientSubject;
15
+ private cameraSubscriberSubject;
16
+ private cameraPluginSubscriberSubject;
17
+ private frameSubject;
6
18
  get sources(): CameraSource[];
7
- constructor(camera: Camera, logger: BaseLogger, socketService: SocketService);
19
+ constructor(camera: Camera, logger: BaseLogger, auth: {
20
+ user: string;
21
+ password: string;
22
+ });
23
+ init(): Promise<void>;
8
24
  connect(): Promise<void>;
9
25
  disconnect(): Promise<void>;
10
26
  reboot(): Promise<void>;
11
- snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
12
27
  generateFrames(): AsyncIterableIterator<Frame>;
13
28
  getFfmpegPath(): Promise<string>;
14
29
  getIceServers(): Promise<IceServer[]>;
15
- createBrowserSession(sourceName: string, videoElement: HTMLVideoElement): Promise<BrowserStreamingSession>;
16
- recordToFile(sourceName: string, outputPath: string, duration?: number): Promise<void>;
30
+ snapshot(forceNew?: boolean): Promise<ArrayBuffer>;
17
31
  updateState<T extends keyof StateValues>(stateName: T, eventData: OnSetEvent<T>): Promise<void>;
18
- cleanup(): void;
19
32
  refreshStates(): Promise<void>;
20
- private listenToChanges;
33
+ cleanup(): Promise<void>;
34
+ private handleRouterRequest;
35
+ private listenToMessages;
36
+ private onRequest;
21
37
  }
@@ -1,18 +1,41 @@
1
- import { BrowserCameraDeviceBase as CameraDevice } from '../../../../../shared/types';
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import { BrowserCameraDeviceBase as CameraDevice } from '../../../../../server/src/camera/base/base.browser';
2
4
  import type { BaseLogger, CameraConfig, DeviceManagerProxyEventCallbacks, DeviceManagerProxyMethods } from '../../../../../shared/types';
3
- import type { SocketService } from '../../../node/src/socket';
4
- export declare class DeviceManagerClient implements DeviceManagerProxyMethods {
5
- private socketService;
6
- private devices;
5
+ export declare interface DeviceManager extends DeviceManagerProxyMethods {
6
+ on<E extends keyof DeviceManagerProxyEventCallbacks>(event: E, listener: DeviceManagerProxyEventCallbacks[E]): this;
7
+ once<E extends keyof DeviceManagerProxyEventCallbacks>(event: E, listener: DeviceManagerProxyEventCallbacks[E]): this;
8
+ off<E extends keyof DeviceManagerProxyEventCallbacks>(event: E, listener: DeviceManagerProxyEventCallbacks[E]): this;
9
+ removeListener<E extends keyof DeviceManagerProxyEventCallbacks>(event: E, listener: DeviceManagerProxyEventCallbacks[E]): this;
10
+ removeAllListeners<E extends keyof DeviceManagerProxyEventCallbacks>(event?: E): this;
11
+ }
12
+ export declare class DeviceManager extends EventEmitter implements DeviceManagerProxyMethods {
7
13
  private logger;
8
- constructor(socketService: SocketService, logger: BaseLogger);
9
- getCameraByName(name: string): Promise<CameraDevice | undefined>;
14
+ private initialized;
15
+ private publisher;
16
+ private client;
17
+ private subscriber;
18
+ private messageQueue;
19
+ private auth;
20
+ private pluginId;
21
+ private pluginName;
22
+ private clientSubject;
23
+ private subscriberSubject;
24
+ private devices;
25
+ constructor(logger: BaseLogger, auth: {
26
+ user: string;
27
+ password: string;
28
+ });
29
+ init(): Promise<void>;
10
30
  getCameraById(id: string): Promise<CameraDevice | undefined>;
11
- createCamera(camera: CameraConfig): Promise<CameraDevice>;
31
+ getCameraByName(name: string): Promise<CameraDevice | undefined>;
32
+ createCamera(cameraConfig: CameraConfig): Promise<CameraDevice>;
12
33
  removeCameraByName(name: string): Promise<void>;
13
34
  removeCameraById(id: string): Promise<void>;
14
- on<E extends keyof DeviceManagerProxyEventCallbacks>(eventType: E, callback: DeviceManagerProxyEventCallbacks[E]): void;
15
- once<E extends keyof DeviceManagerProxyEventCallbacks>(eventType: E, callback: DeviceManagerProxyEventCallbacks[E]): void;
16
- removeListener<E extends keyof DeviceManagerProxyEventCallbacks>(eventType: E, callback: DeviceManagerProxyEventCallbacks[E]): void;
17
- removeAllListeners<E extends keyof DeviceManagerProxyEventCallbacks>(eventType?: E): void;
35
+ emit(): boolean;
36
+ close(): Promise<void>;
37
+ private requestHandler;
38
+ private listenToMessages;
39
+ private onRequest;
40
+ private addOrGetCamera;
18
41
  }
@@ -1,4 +1,4 @@
1
- export * from '../../../node/src/proxy//pluginsManager';
2
- export * from '../../../node/src/proxy/systemManager';
3
1
  export * from './cameraDevice';
4
2
  export * from './deviceManager';
3
+ export * from './pluginsManager';
4
+ export * from './systemManager';
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import type { BaseLogger, PluginsManagerProxyEventCallbacks, PluginsManagerProxyMethods } from '../../../../../shared/types';
4
+ export declare interface PluginsManager extends PluginsManagerProxyMethods {
5
+ on<E extends keyof PluginsManagerProxyEventCallbacks>(event: E, listener: PluginsManagerProxyEventCallbacks[E]): this;
6
+ once<E extends keyof PluginsManagerProxyEventCallbacks>(event: E, listener: PluginsManagerProxyEventCallbacks[E]): this;
7
+ off<E extends keyof PluginsManagerProxyEventCallbacks>(event: E, listener: PluginsManagerProxyEventCallbacks[E]): this;
8
+ removeListener<E extends keyof PluginsManagerProxyEventCallbacks>(event: E, listener: PluginsManagerProxyEventCallbacks[E]): this;
9
+ removeAllListeners<E extends keyof PluginsManagerProxyEventCallbacks>(event?: E): this;
10
+ }
11
+ export declare class PluginsManager extends EventEmitter implements PluginsManagerProxyMethods {
12
+ private logger;
13
+ private initialized;
14
+ private publisher;
15
+ private client;
16
+ private subscriber;
17
+ private messageQueue;
18
+ private auth;
19
+ private pluginId;
20
+ private pluginName;
21
+ private clientSubject;
22
+ private subscriberSubject;
23
+ constructor(logger: BaseLogger, auth: {
24
+ user: string;
25
+ password: string;
26
+ });
27
+ init(): Promise<void>;
28
+ emit(): boolean;
29
+ close(): Promise<void>;
30
+ private requestHandler;
31
+ private listenToMessages;
32
+ private onRequest;
33
+ }
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import type { BaseLogger, SystemManagerProxyEventCallbacks, SystemManagerProxyMethods } from '../../../../../shared/types';
4
+ export declare interface SystemManager extends SystemManagerProxyMethods {
5
+ on<E extends keyof SystemManagerProxyEventCallbacks>(event: E, listener: SystemManagerProxyEventCallbacks[E]): this;
6
+ once<E extends keyof SystemManagerProxyEventCallbacks>(event: E, listener: SystemManagerProxyEventCallbacks[E]): this;
7
+ off<E extends keyof SystemManagerProxyEventCallbacks>(event: E, listener: SystemManagerProxyEventCallbacks[E]): this;
8
+ removeListener<E extends keyof SystemManagerProxyEventCallbacks>(event: E, listener: SystemManagerProxyEventCallbacks[E]): this;
9
+ removeAllListeners<E extends keyof SystemManagerProxyEventCallbacks>(event?: E): this;
10
+ }
11
+ export declare class SystemManager extends EventEmitter implements SystemManagerProxyMethods {
12
+ private logger;
13
+ private initialized;
14
+ private publisher;
15
+ private client;
16
+ private subscriber;
17
+ private messageQueue;
18
+ private auth;
19
+ private pluginId;
20
+ private pluginName;
21
+ private clientSubject;
22
+ private subscriberSubject;
23
+ constructor(logger: BaseLogger, auth: {
24
+ user: string;
25
+ password: string;
26
+ });
27
+ init(): Promise<void>;
28
+ emit(): boolean;
29
+ close(): Promise<void>;
30
+ private requestHandler;
31
+ private listenToMessages;
32
+ private onRequest;
33
+ }
@@ -1,5 +1,5 @@
1
1
  import { BrowserStreamingSession } from '../streaming/browser/browser-streaming-session';
2
2
  import { CameraDeviceBase } from './base';
3
3
  export declare abstract class BrowserCameraDeviceBase extends CameraDeviceBase {
4
- createBrowserSession(sourceName: string, videoElement: HTMLVideoElement): Promise<BrowserStreamingSession>;
4
+ createSession(sourceName: string, videoElement: HTMLVideoElement): Promise<BrowserStreamingSession>;
5
5
  }
@@ -61,7 +61,6 @@ export declare abstract class CameraDeviceBase extends Subscribed {
61
61
  abstract generateFrames(): AsyncIterableIterator<Frame>;
62
62
  abstract getFfmpegPath(): Promise<string>;
63
63
  abstract getIceServers(): Promise<IceServer[]>;
64
- abstract recordToFile(sourceName: string, outputPath: string, duration?: number): Promise<void>;
65
64
  protected abstract cleanup(): void;
66
65
  getValue<T extends keyof StateValues>(stateName: T): StateValues[T];
67
66
  updateState<T extends keyof StateValues>(stateName: T, eventData: OnSetEvent<T>): Promise<void>;
@@ -25,6 +25,10 @@ export interface BaseFrameWorkerConfig {
25
25
  ffmpegPath: string;
26
26
  logLevel?: string;
27
27
  disableTimestamps?: boolean;
28
+ auth: {
29
+ user: string;
30
+ password: string;
31
+ };
28
32
  }
29
33
  export type WorkerMessage = 'ready' | 'getCameraSource';
30
34
  export type MainMessage = 'getMetadata' | 'startWorker' | 'stopWorker' | 'startVideoSession' | 'stopVideoSession' | 'setCameraName';
@@ -0,0 +1,28 @@
1
+ import type { BaseLogger } from '../../../camera/types';
2
+ import type { ProxyMessageStructure } from '../../../proxy/types';
3
+ interface NatsConnection {
4
+ publish(subject: string, data: Uint8Array): void;
5
+ }
6
+ interface Subscription extends AsyncIterable<any> {
7
+ }
8
+ interface JSONCodec<T> {
9
+ encode(d: T): Uint8Array;
10
+ decode(a: Uint8Array): T;
11
+ }
12
+ export declare class ClientMessageQueue {
13
+ private logger;
14
+ private publisher;
15
+ private subscriber;
16
+ private requestHandler;
17
+ private jc;
18
+ private aborted;
19
+ private isProcessing;
20
+ private queue;
21
+ private pendingResponses;
22
+ constructor(logger: BaseLogger, publisher: NatsConnection, subscriber: Subscription, codec: JSONCodec<any>, requestHandler: (message: ProxyMessageStructure) => void);
23
+ abortQueue(): void;
24
+ enqueue(message: ProxyMessageStructure): Promise<any>;
25
+ private processQueue;
26
+ private listenToMessages;
27
+ }
28
+ export {};
@@ -0,0 +1 @@
1
+ export declare const NATS_SERVER_SUBJECT = "camera.ui-server";
@@ -55,6 +55,16 @@ export interface ApiProxyMethods {
55
55
  pluginId: string;
56
56
  }): Promise<void>;
57
57
  }
58
+ export interface ProxyAuth {
59
+ cluster: {
60
+ user: string;
61
+ password: string;
62
+ };
63
+ server: {
64
+ user: string;
65
+ password: string;
66
+ };
67
+ }
58
68
  export interface DeviceManagerListenerMessagePayload {
59
69
  type: keyof DeviceManagerProxyEventCallbacks;
60
70
  data: any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camera.ui/browser",
3
- "version": "0.0.56",
3
+ "version": "0.0.58",
4
4
  "description": "camera.ui browser client",
5
5
  "author": "seydx (https://github.com/seydx/camera.ui)",
6
6
  "module": "./dist/bundle.js",
@@ -26,8 +26,9 @@
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
30
  "rxjs": "^7.8.1",
30
- "socket.io-client": "^4.7.5"
31
+ "util": "^0.12.5"
31
32
  },
32
33
  "devDependencies": {
33
34
  "@rushstack/eslint-patch": "^1.10.2",
@@ -1,10 +0,0 @@
1
- import type { PluginsManagerProxyEventCallbacks, PluginsManagerProxyMethods } from '../../../../../shared/types';
2
- import type { SocketService } from '../socket';
3
- export declare class PluginsManagerClient implements PluginsManagerProxyMethods {
4
- private socketService;
5
- constructor(socketService: SocketService);
6
- on<E extends keyof PluginsManagerProxyEventCallbacks>(eventType: E, callback: PluginsManagerProxyEventCallbacks[E]): void;
7
- once<E extends keyof PluginsManagerProxyEventCallbacks>(eventType: E, callback: PluginsManagerProxyEventCallbacks[E]): void;
8
- removeListener<E extends keyof PluginsManagerProxyEventCallbacks>(eventType: E, callback: PluginsManagerProxyEventCallbacks[E]): void;
9
- removeAllListeners<E extends keyof PluginsManagerProxyEventCallbacks>(eventType?: E): void;
10
- }
@@ -1,10 +0,0 @@
1
- import type { SystemManagerProxyEventCallbacks, SystemManagerProxyMethods } from '../../../../../shared/types';
2
- import type { SocketService } from '../socket';
3
- export declare class SystemManagerClient implements SystemManagerProxyMethods {
4
- private socketService;
5
- constructor(socketService: SocketService);
6
- on<E extends keyof SystemManagerProxyEventCallbacks>(eventType: E, callback: SystemManagerProxyEventCallbacks[E]): void;
7
- once<E extends keyof SystemManagerProxyEventCallbacks>(eventType: E, callback: SystemManagerProxyEventCallbacks[E]): void;
8
- removeListener<E extends keyof SystemManagerProxyEventCallbacks>(eventType: E, callback: SystemManagerProxyEventCallbacks[E]): void;
9
- removeAllListeners<E extends keyof SystemManagerProxyEventCallbacks>(eventType?: E): void;
10
- }
@@ -1,13 +0,0 @@
1
- import { Manager, type Socket } from 'socket.io-client';
2
- import type { CameraDeviceProxyMethodNames, DeviceManagerProxyMethodNames, PluginsManagerProxyMethodNames, SystemManagerProxyMethodNames } from '../../../../shared/types';
3
- type ManagerMethodNames = DeviceManagerProxyMethodNames | SystemManagerProxyMethodNames | PluginsManagerProxyMethodNames;
4
- type MethodNames<T> = T extends 'manager' ? ManagerMethodNames : T extends 'cameraDevice' ? CameraDeviceProxyMethodNames : never;
5
- export declare class SocketService {
6
- manager: Manager;
7
- private token;
8
- constructor(endpoint: string, token: string);
9
- sendRequest<T extends 'manager' | 'cameraDevice'>(managerType: T, methodName: MethodNames<T>, args: any[]): Promise<any>;
10
- getSocket(): Socket;
11
- close(): void;
12
- }
13
- export {};